现象:主控板接收血氧数据然后转发上位机老是出现固定漏帧,经分析,我认为可能是因为我用中断进行发送,然而中断就存在优先级,所有串口优先级都一致,那血氧串口的接收中断和发送上位机的串口中断就存在了矛盾,,大家都是最高优先级
分析:假如向量表中接收在前,那么接收的数据来的快,会导致发送中断还未执行,就已经被新的接收中断函数中发送中断更新了,发送新的数据,结果会导致少发送数据
假如向量表中接收在后,先执行当前发送中断,再执行接收中断,如果接收数据来的快,还未执行完当前接收中断,新的接收中断已经覆盖好几个了,会漏掉数据,结果会导致少接收数据
结论:中断嵌套的前提是数据来的比较慢。
解决办法:中断回调函数中不要嵌套中断用于转发,而是直接用非中断方式,即阻塞transmit的方式
注:以上均来自个人实践经验!