串口1中断程序只能进入一次,第二次进入不了

2019-08-14 05:16发布

情况是这样的,
我的串口1中断程序只能进入一次,第二次进入不了
---------------------------------------------------------
我的分析:我在串口1的接收中断程序里(程序时间比较长)对另一个串口3执行了发送数据函数串口3返回数据,串口3发生接收中断,导致我串口1的中断函数没执行完就跳转到串口3中断函数
我的解决办法是在串口1中把串口3的接收中断关闭,不知道具体用哪条指令。
------------------------------------------------------------
上面是我的分析,可能不对,不知道原子哥或各路大神遇没遇到这种情况,是什么原因。
比较急!!!!!!!!!!!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
xuande
1楼-- · 2019-08-14 09:00
当初是怎么打开的?反其道就行了。

ps:

1、中断服务程序比较长,这是编程的大忌。一定要闪退!要把杂务放在主程序里处理,这不难做到,调整一下物理流程就可以。

单片机编程,安排物理流程、处理时序是编程的灵魂,比写代码更重要。

2、一个中断没结束就进入另一个中断。。。这是 “中断嵌套” 的概念,51芯片有这功能,但STM32似乎没有。

zhao305149619
2楼-- · 2019-08-14 09:34
 精彩回答 2  元偷偷看……
嗯啊
3楼-- · 2019-08-14 15:17
回复【2楼】xuande:
---------------------------------
谢谢你的第一条建议,我尽量改
--------------------------
一个中断没结束就进入另一个中断。。。这是 “中断嵌套” 的概念,51芯片有这功能,但STM32似乎没有。
你的意思是stm32在执行中断程序的时候,其他中断发生也不会跳转到其他中断函数?
xuande
4楼-- · 2019-08-14 18:32
回复【4楼】嗯啊:
---------------------------------

就是这个意思,即使第二个中断的优先级更高,也要等前一个中断完成、退出,才会被执行。优先级只有在“中断同时发生”时才有效。

我不能百分之百肯定,但目前我知道的信息就是这样。如果你的实验属实,那就推翻了我这个结论。但我很怀疑你的实验。
pthread
5楼-- · 2019-08-14 23:31
xuande 发表于 2015-4-12 21:57
回复【4楼】嗯啊:
---------------------------------

就是这个意思,即使第二个中断的优先级更高,也要等 ...

STM32中断是可以嵌套的吧,也是可以被抢占的吧。
xuande
6楼-- · 2019-08-15 00:42
pthread 发表于 2016-6-1 09:22
STM32中断是可以嵌套的吧,也是可以被抢占的吧。


听人说过可以抢占,和51一样。
我自己没做过这样的实验。


一周热门 更多>