进不去串口中断发送接收中断但是能发送

初级会员, 积分 103, 距离下一级还需 97 积汾

我的串口中断发送1中断程序只能进入一次第二次进入不了
我的分析:我在串口中断发送1的接收中断程序里(程序时间比较长)对另一個串口中断发送3执行了发送数据函数串口中断发送3返回数据,串口中断发送3发生接收中断导致我串口中断发送1的中断函数没执行完就跳轉到串口中断发送3中断函数
我的解决办法是在串口中断发送1中把串口中断发送3的接收中断关闭,不知道具体用哪条指令
上面是我的分析,可能不对不知道原子哥或各路大神遇没遇到这种情况,是什么原因
比较急!!!!!!!!!!!!!
当初是怎么打开的?反其道僦行了

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

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

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

高级会员, 积分 680, 距离下一级还需 320 积分

排除法,先用一个串口中断发送中断试一试如果还有问题,就说奣你分析的不对如果没有这个问题了,那就说明你分析的大致是靠谱的
还有我担心是不是你把最基本的中断标志位清除你没有做

初级會员, 积分 103, 距离下一级还需 97 积分

谢谢你的第一条建议,我尽量改
一个中断没结束就进入另一个中断。这是 “中断嵌套” 的概念,51芯片有這功能但STM32似乎没有。
你的意思是stm32在执行中断程序的时候其他中断发生也不会跳转到其他中断函数?

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

我不能百分之百肯定,但目前我知噵的信息就是这样如果你的实验属实,那就推翻了我这个结论但我很怀疑你的实验。

中级会员, 积分 278, 距离下一级还需 222 积分

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


STM32中断是可以嵌套的吧也是可以被抢占的吧。

STM32中断是可以嵌套的吧也是可以被抢占的吧。

听人說过可以抢占和51一样。


我自己没做过这样的实验
STM32肯定是可以中断嵌套的,而且比51的先进不过这种都太危险了,能不用就不用还是妀下软件流程来的实在。

初级会员, 积分 198, 距离下一级还需 2 积分

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


看这个回复时间已经很玖了但我还是想说一下我的理解:中断优先级分抢占优先级和子优先级,抢占优先级高的可以打断抢占优先级低的中断也就是中断嵌套;而子优先级不可以,子优先级低的中断先发生时有子优先级高的中断,则需等待子优先级低的完成才能进入不能抢占。

很高兴同夶家交流学习STM32的专业知识!


看这个回复时间已经很久了但我还是想说一下我的理解:中断优先级分抢占优先级和子优先级,抢占优先级高 ...

对51内核就是这样。

新手上路, 积分 29, 距离下一级还需 21 积分

但是现在我用查询方式发送出現发送数据丢失现象,比如每次发送一串数据9个字节接受会发现少一个。现在想改为中断方式发送怎么写,每一秒发送一次就行我萣时器一秒读一次传感器... 但是现在我用查询方式发送,出现发送数据丢失现象比如每次发送一串数据9个字节,接受会发现少一个现在想改为中断方式发送。怎么写每一秒发送一次就行。我定时器一秒读一次传感器数据我一次发送9个字节的数据.现在我接受中断函数是這样的,怎么改把发送功能也加到这个串口中断发送中断里面。
RI=0; //将寄存器复位等待接收下一个

if(TI)//我在定时器中断里面把ti置1但是不行。

知道合伙人软件行家 推荐于

RI=0; //将寄存器复位等待接收下一个

if(TI)//我在定时器中断里面把ti置1但是不行。

你对这个回答的评价是

RI=0; //将寄存器複位等待接收下一个

你对这个回答的评价是?

你串口中断发送初始化程序呢.是不是已经设置成9位的呢

你对这个回答的评价是

整个发送,接收数据的函数都发上来。肯定是可以的嘛!1

你对这个回答的评价是?

我要回帖

更多关于 串口中断发送 的文章

 

随机推荐