初始化定时器时一定要使能定时器,特别是单脉冲模式,否则产生问题很难被发现。

2019-07-20 05:37发布

本帖最后由 lichome 于 2017-4-20 12:44 编辑

初始化定时器时一定要使能定时器,特别是单脉冲模式,不能到使用的时候才第一次使能。
这种错误是隐性的,包括在运行时很难发现。
这一点在STM32说明书中好像没有提到,或许是我粗心没有看到。

我在使用定时器单脉冲模式时,最初想法是,先配置定时器,但是不打开使能定时器,等我需要使用时在打开使能,否则定时器立马回运行,其他模块还没初始化,也就无法检测到第一个定时器周期。
然而这种想法是错误的,错误的!!
程序在运行时根本发现不到,但是能感觉到数据有错误,经过3天摸索,前后断断续续也有好几个星期吧,才发现第一个数据没有被处理,
也就是说,第一次使能定时器直接产生溢出中断,根本不进行捕获比较,只有第二次打开定时器使能后,定时器才真正进入工作状态,进行捕获比较。

事实上,初始化配置定时器一定要使能,只有将定时器打开后,配置才真正生效。
希望这些对使用定时器的新手们有点帮助,避免走我的弯路。

如果以上描述有错误,希望老司机给以指正,一来避免误导其他人,二来对我也有帮助,本人表示感谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
jinggx
1楼-- · 2019-07-20 09:44
这个问题是有点恶心,之前也被坑过!
陆风32
2楼-- · 2019-07-20 15:01
可以的,这就是经验啊
济颠进京
3楼-- · 2019-07-20 18:11
 精彩回答 2  元偷偷看……
xiatianyun
4楼-- · 2019-07-20 21:41
 精彩回答 2  元偷偷看……
edmund1234
5楼-- · 2019-07-20 22:32
我的做方是计时器初始时就打开, 只是中断不使能, 用的时候才使能中断就不会错了

一周热门 更多>