OpenEdv-开源电子网

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

定时器自身能否中断自己???

[复制链接]

24

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2018-1-19
在线时间
50 小时
发表于 2018-5-7 17:35:06 | 显示全部楼层 |阅读模式
我一直是觉得定时器自身是不能中断自己的,但是有一些事让我很不理解。
1:TIMx_ARR是自动重装载寄存器,里面存放了自动重装载的值。TIMx_CNT是定时器计数值。我的理解是TIMx_CNT=TIMx_ARR时,就开始进入定时器中断,进入中断以后TIMx_CNT=0。在定时器中断测试中读取了TIMx_CNT值,发现其是明显变化的。
2:用定时器中断得到六轴软件拟合的数据,后来用lcd屏幕显示,如果定时器中断溢出时间短,lcd屏幕上就只能显示半截字符串,如果不能自身打断,不是应该慢慢的都把字符串显示出来嘛。
第三个问题比较私人,定时器中断时的TIMx_CNT的值是否不能人工清零,用了TIM_SetCounter()也不可以。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

206

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-4-6
在线时间
234 小时
发表于 2018-5-7 18:38:27 | 显示全部楼层
TIM图片20180507183154.png
闲来无事,翻了翻数据手册上确实是这样写的:TIMx_CNT = TIMx_ARR时,重新从0开始计数,并产生溢出事件。
如果你需要精确的定时,可以在进入中断是,失能定时器,退出时,在使能。
回复 支持 反对

使用道具 举报

24

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2018-1-19
在线时间
50 小时
 楼主| 发表于 2018-5-7 21:44:24 | 显示全部楼层
xiedonghui258 发表于 2018-5-7 18:38
闲来无事,翻了翻数据手册上确实是这样写的:TIMx_CNT = TIMx_ARR时,重新从0开始计数,并产生溢出事件。 ...

谢谢你的帮助
回复 支持 反对

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
发表于 2018-10-23 08:44:01 来自手机 | 显示全部楼层
自身的中断属于同一抢先优先级,正在执行服务程序会被同一抢先级的中断打断吗?这个还真不好说,还是做实验吧。
回复 支持 反对

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
发表于 2018-10-23 08:47:21 来自手机 | 显示全部楼层
清楚计数值是可以的
回复 支持 反对

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
发表于 2018-10-23 10:25:57 | 显示全部楼层
我刚才做了试验,自身无法中断自己,必须等中断完毕才能再次中断。读取的计数值不是0是因为中断服务执行时其实计数值仍然继续的缘故。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 10:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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