打印
[STM32F0]

定时中断周期小于中断处理任务所消耗时间会怎样?

[复制链接]
2652|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nature023|  楼主 | 2015-5-18 21:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我有个程序,定时中断是每50us发生定时中断,由于中断处理函数中的内容比较多,估计所消耗的指令时长会超过
50us,这样一来进入中断内,任务还没完成,下一次定时又到了,单片机会怎么处理呢?是定时时间到,又从中断处理函数开始执行,还是先把上一个中断的任务做完了,再做下一次中断的?如果这样不是一直都只有时间做中断任务了么?请高手指点!
沙发
皈依| | 2015-5-18 21:59 | 只看该作者
不知道长时间这样运行堆栈会不会溢出啊。。。感觉有点危险的样子
中断优先级一致,先执行完一遍跳出中断再进入。。。就是不知道会不会执行主程序。
你在while(1) 中加个1ms延时,后面加个指令,打一个断点,看能不能跑到指令位置。

使用特权

评论回复
板凳
wx-share| | 2015-5-18 22:11 | 只看该作者
好的程序架构,应该是中断程序小于定时时间

使用特权

评论回复
地板
hjl2832| | 2015-5-19 09:55 | 只看该作者
中断中不应该有长时间执行的程序,最好的方法是在中断中设置状态标志,然后在主程序中根据状态标志执行相应的功能。

使用特权

评论回复
5
gx_huang| | 2015-5-19 10:08 | 只看该作者
这要你自己看看中断这个章节。
一般是当前中断退出后,起码执行一条主程序的指令,然后又进中断。
结果就是,主程序执行缓慢,像死机一样。
就好比PC死机了,只剩鼠标可以动。

使用特权

评论回复
6
JY-DX-JY| | 2015-5-19 10:28 | 只看该作者
你不能这么干。

使用特权

评论回复
7
airwill| | 2015-5-20 16:17 | 只看该作者
本帖最后由 airwill 于 2015-5-20 16:19 编辑

这样的问题很大.
单片机会怎么处理呢?定时时间到,中断挂起,等上一个中断的任务做完了,再做下一次中断.

如果这样, 不是一直都只有时间做中断任务了么?是的, 而且因为是咬尾中断, 主循环就彻底被屏蔽了!

使用特权

评论回复
8
尤彼卡| | 2015-5-20 20:22 | 只看该作者
这个问题在编程是要避免的

使用特权

评论回复
9
zhzzh18| | 2015-5-21 14:54 | 只看该作者
程序设计不合理,中断处理过长,就该把中断处理放到main中来

使用特权

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

本版积分规则

2

主题

2

帖子

0

粉丝