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

2019-07-20 05:37发布

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

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

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

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

如果以上描述有错误,希望老司机给以指正,一来避免误导其他人,二来对我也有帮助,本人表示感谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。