用STM8S外部中断的时候发现中断被自己打断了如何破

2019-07-19 21:23发布

用的是PORTB外部中断,按键进入,但是中断程序还在执行的时候再按键也会进中断,这种怎么破?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
keyer
1楼-- · 2019-07-19 22:59
 精彩回答 2  元偷偷看……
onebank
2楼-- · 2019-07-20 04:38
keyer 发表于 2016-1-16 11:37
进中断可以吧中断关掉中断程序执行完后再开中断啊

但是另外还有一个优先级更高的中断会触发,如果把总中断关了的话另一个中断不是触发不了了
onebank
3楼-- · 2019-07-20 07:31
通过实验得出点结论,跟大家分享下。
STM8S外部中断只能通过一个总中断开关控制,即__disable_interrupt()和 __enable_interrupt()函数。在一个外部中断服务程序(假设为中断A服务程序)运行的时候,若是没有对总中断进行使能,则同软件优先级的中断不能打断该运行中的A中断,则需要等中断A服务程序运行完成才能再一次进入该中断;若是在运行过程中使能了中断,则该运行的中断服务程序可以被同软件优先级的中断(假设为B)打断(包括其自身),且当中断B执行完之后,会继续返回中断A服务程序接着运行。
onebank
4楼-- · 2019-07-20 09:59
 精彩回答 2  元偷偷看……
加速度
5楼-- · 2019-07-20 12:24
onebank 发表于 2016-1-18 08:59
但是另外还有一个优先级更高的中断会触发,如果把总中断关了的话另一个中断不是触发不了了

关闭总中断后,如果这时有新的中断到来,不会产生中断,但会挂起中断标志。等你再次开启总中断后,还是会响应的。另外的,不要在中断中处理太多,建议抛个事件到main中处理即可。尽量避免嵌套中断!

一周热门 更多>