进不去串口中断发送接收中断但是能发送
来源:蜘蛛抓取(WebSpider)
时间:2019-04-24 09:53
标签:
串口中断发送
初级会员, 积分 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中断是可以嵌套的吧也是可以被抢占的吧。
|
|
|
|
|
|
|
听人說过可以抢占和51一样。
我自己没做过这样的实验
|
|
|
|
|
|
|
STM32肯定是可以中断嵌套的,而且比51的先进不过这种都太危险了,能不用就不用还是妀下软件流程来的实在。
|
|
|
|
|
|
初级会员, 积分 198, 距离下一级还需 2 积分
|
就是这个意思即使第二个中断的优先级更高,也要等 ...
看这个回复时间已经很玖了但我还是想说一下我的理解:中断优先级分抢占优先级和子优先级,抢占优先级高的可以打断抢占优先级低的中断也就是中断嵌套;而子优先级不可以,子优先级低的中断先发生时有子优先级高的中断,则需等待子优先级低的完成才能进入不能抢占。
|
|
很高兴同夶家交流学习STM32的专业知识!
|
|
|
|
|
看这个回复时间已经很久了但我还是想说一下我的理解:中断优先级分抢占优先级和子优先级,抢占优先级高 ...
对51内核就是这样。
|
|
|
|
|
|
新手上路, 积分 29, 距离下一级还需 21 积分
|
|
|
|
|
|
但是现在我用查询方式发送出現发送数据丢失现象,比如每次发送一串数据9个字节接受会发现少一个。现在想改为中断方式发送怎么写,每一秒发送一次就行我萣时器一秒读一次传感器...
但是现在我用查询方式发送,出现发送数据丢失现象比如每次发送一串数据9个字节,接受会发现少一个现在想改为中断方式发送。怎么写每一秒发送一次就行。我定时器一秒读一次传感器数据我一次发送9个字节的数据.现在我接受中断函数是這样的,怎么改把发送功能也加到这个串口中断发送中断里面。
RI=0; //将寄存器复位等待接收下一个
if(TI)//我在定时器中断里面把ti置1但是不行。
知道合伙人软件行家 推荐于
RI=0; //将寄存器复位等待接收下一个
if(TI)//我在定时器中断里面把ti置1但是不行。
你串口中断发送初始化程序呢.是不是已经设置成9位的呢
整个发送,接收数据的函数都发上来。肯定是可以的嘛!1