OpenEdv-开源电子网

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

求各位帮我解答一下定时器中断的问题

[复制链接]

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-1-6
在线时间
33 小时
发表于 2019-6-6 08:56:54 | 显示全部楼层 |阅读模式
5金钱
程序只开了一个定时器中断,5ms触发一次,但是中断服务函数处理的事情有点多,5ms处理不完,从现象上来看,中断服务程序后面的完全就没有执行到。我想请问一下,如果5ms时间没有执行完,但是下一次定时的中断又来了,这个该怎么去解释呢

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

143

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2019-5-30
在线时间
4 小时
发表于 2019-6-6 13:12:27 | 显示全部楼层
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-6-6 13:21:27 | 显示全部楼层
设计就不合理,应该避免这种设计
回复

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-1-6
在线时间
33 小时
 楼主| 发表于 2019-6-6 14:01:15 | 显示全部楼层
nashui_sx 发表于 2019-6-6 13:21
设计就不合理,应该避免这种设计

我知道这样不合理  后面就改了  现在回想一下想要去了解一下这个  是中断自己打断了自己吗  
回复

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-1-6
在线时间
33 小时
 楼主| 发表于 2019-6-6 14:01:51 | 显示全部楼层

多谢大兄弟帮顶
回复

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-1-6
在线时间
33 小时
 楼主| 发表于 2019-6-6 14:03:26 | 显示全部楼层
nashui_sx 发表于 2019-6-6 13:21
设计就不合理,应该避免这种设计

我觉得应该是中断还没执行完 下一次中断就来了 完全没有去执行主程序的内容  但是现在不好去验证了
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-6-6 14:48:00 | 显示全部楼层
我是非常的好奇, 有什么任务需要做5ms ?
回复

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-1-6
在线时间
33 小时
 楼主| 发表于 2019-6-6 14:50:59 | 显示全部楼层
edmund1234 发表于 2019-6-6 14:48
我是非常的好奇, 有什么任务需要做5ms ?

很多东西 包括大量的计算和判断
回复

使用道具 举报

1

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2019-4-24
在线时间
46 小时
发表于 2019-6-6 15:00:38 | 显示全部楼层
我试了一下,如果时间到了它并没有中断“自己”,而是继续执行,我就开了一个定时器

定时500ms,中断函数里有个10s延时,led放在中断函数里交替闪烁。
回复

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-1-6
在线时间
33 小时
 楼主| 发表于 2019-6-6 15:03:56 | 显示全部楼层
iam铭哥 发表于 2019-6-6 15:00
我试了一下,如果时间到了它并没有中断“自己”,而是继续执行,我就开了一个定时器

定时500ms,中断函数里 ...

中断程序能执行完吗  
回复

使用道具 举报

1

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2019-4-24
在线时间
46 小时
发表于 2019-6-6 15:07:04 | 显示全部楼层

能,我刚刚试的,你硬件仿真一下就行了
回复

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-1-6
在线时间
33 小时
 楼主| 发表于 2019-6-6 15:31:00 | 显示全部楼层
iam铭哥 发表于 2019-6-6 15:07
能,我刚刚试的,你硬件仿真一下就行了

这种情况主函数里面的内容会执行到吗
回复

使用道具 举报

1

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2019-4-24
在线时间
46 小时
发表于 2019-6-6 16:25:06 | 显示全部楼层
夕阳下的天启 发表于 2019-6-6 15:31
这种情况主函数里面的内容会执行到吗

我试了,不会进入主函数,因为你先清除了标志位,你清除完之后它就会开始计数了,当中断函数运行完由于(中断函数时间太长了)计数位早都达中断时刻,所以一出中断就又进中断了。
回复

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-1-6
在线时间
33 小时
 楼主| 发表于 2019-6-6 16:49:03 | 显示全部楼层
iam铭哥 发表于 2019-6-6 16:25
我试了,不会进入主函数,因为你先清除了标志位,你清除完之后它就会开始计数了,当中断函数运行完由于(中断 ...

那如果是这样  是不是可以这样理解  中断函数实际运行的时间实际是大于500ms的嘛
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2019-4-25
在线时间
9 小时
发表于 2019-6-6 16:53:54 | 显示全部楼层
假设为另一个中断,问题是不是等同于 相同优先级的中断同时进入的问题,还是这种假设是错的
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-6-6 17:17:00 | 显示全部楼层
夕阳下的天启 发表于 2019-6-6 14:01
我知道这样不合理  后面就改了  现在回想一下想要去了解一下这个  是中断自己打断了自己吗

中断不能打断自己的
回复

使用道具 举报

1

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2019-4-24
在线时间
46 小时
发表于 2019-6-6 17:23:46 来自手机 | 显示全部楼层
夕阳下的天启 发表于 2019-6-6 16:49
那如果是这样  是不是可以这样理解  中断函数实际运行的时间实际是大于500ms的嘛

是的呢
回复

使用道具 举报

1

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2019-4-24
在线时间
46 小时
发表于 2019-6-6 17:26:56 来自手机 | 显示全部楼层
SADEM 发表于 2019-6-6 16:53
假设为另一个中断,问题是不是等同于 相同优先级的中断同时进入的问题,还是这种假设是错的

我觉得可以这么理解,相同抢占和响应的前提下互相不能打断
回复

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-1-6
在线时间
33 小时
 楼主| 发表于 2019-6-6 19:15:36 | 显示全部楼层
nashui_sx 发表于 2019-6-6 17:17
中断不能打断自己的

身边没有板子不好去验证
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4524
金钱
4524
注册时间
2018-5-11
在线时间
947 小时
发表于 2019-6-7 17:44:04 | 显示全部楼层
中断不能打断自己,
但会排队等待,
中断返回后马上就再次进入,
主程序得不到执行。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-6-7 21:10:24 | 显示全部楼层
当你说在中断里要执行2.5ms的任务, 这本身就已经是个bug
回复

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-1-6
在线时间
33 小时
 楼主| 发表于 2019-6-8 16:03:02 | 显示全部楼层
warship 发表于 2019-6-7 17:44
中断不能打断自己,
但会排队等待,
中断返回后马上就再次进入,

明白了
回复

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-1-6
在线时间
33 小时
 楼主| 发表于 2019-6-8 16:03:34 | 显示全部楼层
edmund1234 发表于 2019-6-7 21:10
当你说在中断里要执行2.5ms的任务, 这本身就已经是个bug

还好吧  算不上bug  只是设计不太合理
回复

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-1-6
在线时间
33 小时
 楼主| 发表于 2019-6-8 16:05:37 | 显示全部楼层
SADEM 发表于 2019-6-6 16:53
假设为另一个中断,问题是不是等同于 相同优先级的中断同时进入的问题,还是这种假设是错的

昨天翻了课本 51单片机 同级别的中断时无去打断同级别的中断的  32的话  不清楚
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-26 12:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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