stm8 16位单片机高级定时器TIM1的PWM改变频率时要注意的地方

2019-12-19 18:12发布

当你用stm8 TIM1输出PWM时,如果你要改变PWM的频率(周期),那么你当你从低频向高频转换时,你会发现PWM有一段时间不输出了,特别是分频较大时会认为没输出了,问题更难找。向我这个项目的例子:16MHZ时钟分频成4ms计数一次。有效电平占空比:TIM1_CCR1H = 0x00,TIM1_CCR1L = 0x7c,不变,当从TIM1_ARRH = 0x09,TIM1_ARRL = 0x3C,改变为 TIM1_ARRH= 0x00,TIM1_ARRL = 0xF9,时PWM输出完全停止。因为CNT计数器已经走过了小周期的溢出位置,需要重新计满65535再走到0x7C才可以有需出但是按我这个项目计数算要4多分钟才能重新输出。找了我半天的时间才找到问题。希望能对做同样功能时遇到同样问题没发现的朋友们有帮助。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
wuminglin1989
1楼-- · 2019-12-20 17:21
一心2013 发表于 2014-12-9 14:39
楼主有没有试过改频率时直接重置计数器的,

//*******重置 定时器 清除定时器 写入新的计数值*********** ...

我是先stop TIM1然后再清零,再设置周期,再重启定时器,因为你也不差在那两个时钟的时间嘛,要考虑程序的稳健性,直接清理论上是可以的。但是建议还是先停下来再设置会更好
millwood0
2楼-- · 2019-12-20 18:45
Use center-aligned pwm and you wouldn't have the problem.
wuminglin1989
3楼-- · 2019-12-20 23:01
millwood0 发表于 2014-12-13 18:48
Use center-aligned pwm and you wouldn't have the problem.

这跟用什么对齐方式没有关系,请仔细看我说的情况,
Eworm001
4楼-- · 2019-12-21 00:53
一心2013 发表于 2014-12-9 14:39
楼主有没有试过改频率时直接重置计数器的,

//*******重置 定时器 清除定时器 写入新的计数值*********** ...

先设置,再清零更好

lionsg
5楼-- · 2019-12-21 02:59
 精彩回答 2  元偷偷看……
hejie126
6楼-- · 2019-12-21 05:24
mark,变频时注意停止定时器和清零计数器

一周热门 更多>