OpenEdv-开源电子网

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

通用定时器实验

[复制链接]

42

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
448
金钱
448
注册时间
2016-3-8
在线时间
57 小时
发表于 2016-12-1 18:08:17 | 显示全部楼层 |阅读模式
3金钱
今天学习了通用定时器实验,产生很大困惑:       1,例程中定时器计数时间是500ms产生一次中断,我把中断事件的延时时间加长了改为3s,按照这样的理论,中断事件的执行时间大于计数器计数时间,这样中断还没有执行完又会产生中断,又要进入中断事件,这种情况下根本没有时间执行主函数后面的死循环,但是实验效果好像并不是这样的,中断事件依然是3s中执行一次,死循环里的LED0依然在执行,不是说在执行中断事件时,主程序不是被挂起了吗?

       2.例程中计数器计数500ms,采用自动重装,不知道自动重装开始于何时,是计数器计数完就产生中断,还是执行完中断事件后再重新装载。

主函数显示计数时间是500ms

主函数显示计数时间是500ms

中断函数事件我把时间延时加长为3s

中断函数事件我把时间延时加长为3s

最佳答案

查看完整内容[请看2#楼]

楼主说的现象我还没有测试,不过有个说法是有问题的: 1,例程中定时器计数时间是500ms产生一次中断,我把中断事件的延时时间加长了改为3s,按照这样的理论,中断事件的执行时间大于计数器计数时间,这样中断还没有执行完又会产生中断,又要进入中断事件, 就这里是不会的,同一个定时器,优先级一样,还在执行当前中断,下一次中断是不能打断本次中断的。 关于楼主说主函数的LED还会闪烁这个问题,应该是不会出现的,从中断函 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
383
金钱
383
注册时间
2015-4-15
在线时间
73 小时
发表于 2016-12-1 18:08:18 | 显示全部楼层
楼主说的现象我还没有测试,不过有个说法是有问题的:
1,例程中定时器计数时间是500ms产生一次中断,我把中断事件的延时时间加长了改为3s,按照这样的理论,中断事件的执行时间大于计数器计数时间,这样中断还没有执行完又会产生中断,又要进入中断事件,
就这里是不会的,同一个定时器,优先级一样,还在执行当前中断,下一次中断是不能打断本次中断的。

关于楼主说主函数的LED还会闪烁这个问题,应该是不会出现的,从中断函数里面出来的时候,会判断是否有事件发生,应该是没有机会执行主函数的,这个等回家,我也测试下看看。
回复

使用道具 举报

42

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
448
金钱
448
注册时间
2016-3-8
在线时间
57 小时
 楼主| 发表于 2016-12-2 17:32:53 | 显示全部楼层
为啥没有前辈回答我?
回复

使用道具 举报

0

主题

16

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
307
金钱
307
注册时间
2016-12-2
在线时间
67 小时
发表于 2016-12-2 18:15:02 | 显示全部楼层
我在电路板测试了一下。如果中断处理函数内延时1000或者1500ms时,主函数led0的亮灭会被屏蔽。。但是中断处理函数延时3000ms就如你所说的现象了。同新手,等大神解答
回复

使用道具 举报

3

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2016-11-13
在线时间
21 小时
发表于 2016-12-2 21:46:31 | 显示全部楼层
  mark
回复

使用道具 举报

42

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
448
金钱
448
注册时间
2016-3-8
在线时间
57 小时
 楼主| 发表于 2016-12-3 11:05:16 | 显示全部楼层
dengxingling8 发表于 2016-12-2 19:33
楼主说的现象我还没有测试,不过有个说法是有问题的:
1,例程中定时器计数时间是500ms产生一次中断,我把 ...

我的语言表达有问题,我的意思是对于同一个中断,当中断标志被置1时,程序会先去清除中断标志,然后去处理中断事件,但是中断事件执行时间有点长,比如加长延时。这样导致中断事件还没有执行完,定时器计数完毕又把中断标志位置1,又需要等待处理中断。同一个中断事件肯定不会打断自身的。
回复

使用道具 举报

42

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
448
金钱
448
注册时间
2016-3-8
在线时间
57 小时
 楼主| 发表于 2016-12-3 11:06:25 | 显示全部楼层
企鹅在挠痒 发表于 2016-12-2 18:15
我在电路板测试了一下。如果中断处理函数内延时1000或者1500ms时,主函数led0的亮灭会被屏蔽。。但是中断处 ...

期待这位同仁的结果
回复

使用道具 举报

2

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
383
金钱
383
注册时间
2015-4-15
在线时间
73 小时
发表于 2016-12-3 11:49:38 | 显示全部楼层
ouxili 发表于 2016-12-3 11:05
我的语言表达有问题,我的意思是对于同一个中断,当中断标志被置1时,程序会先去清除中断标志,然后去处 ...

你这个理解是对的啊,所以你的中断事件是3s执行一次啊,因为你延时了3s,退出当前中断的时候,检测标志,又进入中断,自然是3s执行一次了
回复

使用道具 举报

42

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
448
金钱
448
注册时间
2016-3-8
在线时间
57 小时
 楼主| 发表于 2016-12-3 16:13:51 | 显示全部楼层
dengxingling8 发表于 2016-12-3 11:49
你这个理解是对的啊,所以你的中断事件是3s执行一次啊,因为你延时了3s,退出当前中断的时候,检测标志, ...

我又实验了一次,这次的结果和我想的一样,只是在最开始死循环还是被执行了一次,我感觉能够执行一次死循环,是因为计数结束前,中断没有开始,然后主程序就执行了死循环,一但中断事件开始了,就回不去主程序了。
回复

使用道具 举报

2

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
383
金钱
383
注册时间
2015-4-15
在线时间
73 小时
发表于 2016-12-3 16:47:16 | 显示全部楼层
ouxili 发表于 2016-12-3 16:13
我又实验了一次,这次的结果和我想的一样,只是在最开始死循环还是被执行了一次,我感觉能够执行一次死循 ...

最开始肯定会执行的,500ms,完全足够主函数运行了
回复

使用道具 举报

42

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
448
金钱
448
注册时间
2016-3-8
在线时间
57 小时
 楼主| 发表于 2016-12-4 09:07:01 | 显示全部楼层
dengxingling8 发表于 2016-12-3 16:47
最开始肯定会执行的,500ms,完全足够主函数运行了

是这样的
回复

使用道具 举报

42

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
448
金钱
448
注册时间
2016-3-8
在线时间
57 小时
 楼主| 发表于 2016-12-4 09:08:58 | 显示全部楼层

请问怎么可以回复4个字的?
回复

使用道具 举报

18

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2016-11-4
在线时间
22 小时
发表于 2016-12-4 11:21:16 | 显示全部楼层
正学相关的知识,来看看
回复

使用道具 举报

42

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
448
金钱
448
注册时间
2016-3-8
在线时间
57 小时
 楼主| 发表于 2016-12-4 12:02:23 | 显示全部楼层
鑫鑫12 发表于 2016-12-4 11:21
正学相关的知识,来看看

爱学习的孩子是可爱的
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-11-27
在线时间
2 小时
发表于 2016-12-4 22:35:33 | 显示全部楼层
同是新手,学习一下
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-25 19:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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