OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4663|回复: 5

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

[复制链接]

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2017-2-8
在线时间
10 小时
发表于 2017-4-20 12:42:22 | 显示全部楼层 |阅读模式
本帖最后由 lichome 于 2017-4-20 12:44 编辑

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

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

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

如果以上描述有错误,希望老司机给以指正,一来避免误导其他人,二来对我也有帮助,本人表示感谢。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

43

主题

481

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1352
金钱
1352
注册时间
2014-12-24
在线时间
321 小时
发表于 2017-4-20 12:48:27 | 显示全部楼层
这个问题是有点恶心,之前也被坑过!
回复 支持 反对

使用道具 举报

6

主题

74

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
297
金钱
297
注册时间
2017-6-10
在线时间
39 小时
发表于 2017-10-18 16:44:53 | 显示全部楼层
可以的,这就是经验啊
回复 支持 反对

使用道具 举报

8

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2017-7-17
在线时间
22 小时
发表于 2018-9-28 10:55:34 | 显示全部楼层
楼主,我现在手头也在调试定时器单脉冲触发ADC转换,我的ADC是两路的,但是只有一路能采集电压,不知道是哪里的问题,能帮我看下吗?http://www.openedv.com/forum.php ... d=279732&extra=
PS:我试过你说的先使能定时器再配置,最后再使能,我的问题还是没解决,麻烦有空帮我看下,谢谢。
回复 支持 反对

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
发表于 2018-10-21 11:02:01 | 显示全部楼层
使用的时候再使能,这是可以的。
不过我现在有个问题搜索才看到这个帖子的,顺便提出来。
初始化定时器接着不使能,也就是TIM_Cmd(  ,Disable);到需要启动运行定时器时才使能,这是可以的。
我遇到的问题是,如果程序开始时初始化或不初始化,到需要运行定时器时才进行初始化并使能(可能两次初始化),我可以肯定定时器也是运行的,但达不到要求,或者说运行效果和开始初始化不使能到运行时才使能的运行效果不一样。
不知道是什么原因?
回复 支持 反对

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-10-21 11:44:34 | 显示全部楼层
我的做方是计时器初始时就打开, 只是中断不使能, 用的时候才使能中断就不会错了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 15:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表