打印

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

[复制链接]
163|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一片混沌|  楼主 | 2018-7-12 07:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
初始化定时器时一定要使能定时器,特别是单脉冲模式,不能到使用的时候才第一次使能。
这种错误是隐性的,包括在运行时很难发现。
这一点在STM32说明书中好像没有提到,或许是我粗心没有看到。

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

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

如果以上描述有错误,希望老司机给以指正,一来避免误导其他人,二来对我也有帮助,本人表示感谢。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

391

主题

391

帖子

0

粉丝