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

2019-08-14 05:16发布

情况是这样的,
我的串口1中断程序只能进入一次,第二次进入不了
---------------------------------------------------------
我的分析:我在串口1的接收中断程序里(程序时间比较长)对另一个串口3执行了发送数据函数串口3返回数据,串口3发生接收中断,导致我串口1的中断函数没执行完就跳转到串口3中断函数
我的解决办法是在串口1中把串口3的接收中断关闭,不知道具体用哪条指令。
------------------------------------------------------------
上面是我的分析,可能不对,不知道原子哥或各路大神遇没遇到这种情况,是什么原因。
比较急!!!!!!!!!!!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
kingnike
1楼-- · 2019-08-15 06:12
 精彩回答 2  元偷偷看……
可靠的蓄势
2楼-- · 2019-08-15 07:27
xuande 发表于 2015-4-12 21:57
回复【4楼】嗯啊:
---------------------------------

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

看这个回复时间已经很久了,但我还是想说一下我的理解:中断优先级分抢占优先级和子优先级,抢占优先级高的可以打断抢占优先级低的中断,也就是中断嵌套;而子优先级不可以,子优先级低的中断先发生时,有子优先级高的中断,则需等待子优先级低的完成才能进入,不能抢占。
xuande
3楼-- · 2019-08-15 08:44
可靠的蓄势 发表于 2017-1-3 11:56
看这个回复时间已经很久了,但我还是想说一下我的理解:中断优先级分抢占优先级和子优先级,抢占优先级高 ...


对,51内核就是这样。

itisliuyang
4楼-- · 2019-08-15 14:15
用hal库的串口例程改的程序,运行了一段时间(大概一小时)进入了(HAL_UART_GetState(&UART1_Handler) != HAL_UART_STATE_READY)//等待就绪 超时处理后,一直无法再进入中断,请问如何处理

一周热门 更多>