初始化定时器时一定要使能定时器,特别是单脉冲模式,不能到使用的时候才第一次使能。
这种错误是隐性的,包括在运行时很难发现。
这一点在STM32说明书中好像没有提到,或许是我粗心没有看到。
我在使用定时器单脉冲模式时,最初想法是,先配置定时器,但是不打开使能定时器,等我需要使用时在打开使能,否则定时器立马回运行,其他模块还没初始化,也就无法检测到第一个定时器周期。
然而这种想法是错误的,错误的!!
程序在运行时根本发现不到,但是能感觉到数据有错误,经过3天摸索,前后断断续续也有好几个星期吧,才发现第一个数据没有被处理,
也就是说,第一次使能定时器直接产生溢出中断,根本不进行捕获比较,只有第二次打开定时器使能后,定时器才真正进入工作状态,进行捕获比较。
事实上,初始化配置定时器一定要使能,只有将定时器打开后,配置才真正生效。
希望这些对使用定时器的新手们有点帮助,避免走我的弯路。
如果以上描述有错误,希望老司机给以指正,一来避免误导其他人,二来对我也有帮助,本人表示感谢。 |