本帖最后由 qinlu123 于 2017-12-18 17:20 编辑
STM8S的TIM1的前三个通道可以输出互补的PWM,在测试中发现了一个奇怪的问题。
当PWM频率设置的比较小时(1K或者2K,我就测了几个频率)互补输出正常。当我改变分频系数(TIM1_PSCRH和TIM1_PSCRL两个寄存器)或者修改ARR寄存器来提高到一定频率时(比如提高到4K),CHxN直接恒输出高,CHx输出占空比50%的PWM(即使CCRx/ARR*100%不等于50%)。
配置代码:
CLK_PCKENR1 |= 0x80;//开启定时器1外设时钟
TIM1_EGR |= 0x01; //重新初始化TIM1
TIM1_CR1 = 0x00; //B7(0)可以直接写入 B65(00)边缘对齐模式B4(0)向上计数B3(0)计数器不停止发生更新事件
TIM1_RCR = 0x00;
TIM1_PSCRH =0; //设定预分频为,16分频 1M
TIM1_PSCRL =0x0f; //PWM的时钟 影响周期
TIM1_CCER1 = 0x55; //PWM1/PWM1N互补输出,PWM2/PWM2N互补输出,高电平有效
TIM1_CCER2 = 0x11; //PWM3/PWM4输出,高电平有效
TIM1_CCMR1 = 0x60; //PWM模式1,CC1配置输出
TIM1_CCMR2 = 0x60; //PWM模式1,CC2配置输出
TIM1_CCMR3 = 0x60; //PWM模式1,CC3配置输出
TIM1_CCMR4 = 0x60; //PWM模式1,CC4配置输出
TIM1_ARRH = 1000/256;
TIM1_ARRL = 1000%256; //PWM的周期
TIM1_CCR1H = 800/256;
TIM1_CCR1L = 800%256; // 占空比值
TIM1_CCR2H = 800/256;
TIM1_CCR2L = 800%256; // 占空比值
TIM1_CCR3H = 800/256;
TIM1_CCR3L = 800%256; // 占空比值
TIM1_CCR4H = 800/256;
TIM1_CCR4L = 800%256; // 占空比值
TIM1_CR1 |= 0x01; //使能TIM1计数器
TIM1_BKR |= 0x80; //主输出使能
TIM1_DTR = 0xff; //插入死区
不知道大家有没有遇到过类似的问题。
|