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

[复制链接]
3156|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 | 显示全部楼层
中断中不应该有长时间执行的程序,最好的方法是在中断中设置状态标志,然后在主程序中根据状态标志执行相应的功能。
gx_huang 发表于 2015-5-19 10:08 | 显示全部楼层
这要你自己看看中断这个章节。
一般是当前中断退出后,起码执行一条主程序的指令,然后又进中断。
结果就是,主程序执行缓慢,像死机一样。
就好比PC死机了,只剩鼠标可以动。
JY-DX-JY 发表于 2015-5-19 10:28 | 显示全部楼层
你不能这么干。
airwill 发表于 2015-5-20 16:17 | 显示全部楼层
本帖最后由 airwill 于 2015-5-20 16:19 编辑

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

如果这样, 不是一直都只有时间做中断任务了么?是的, 而且因为是咬尾中断, 主循环就彻底被屏蔽了!
尤彼卡 发表于 2015-5-20 20:22 | 显示全部楼层
这个问题在编程是要避免的
zhzzh18 发表于 2015-5-21 14:54 | 显示全部楼层
程序设计不合理,中断处理过长,就该把中断处理放到main中来
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部