前言
MCU中断嵌套中断很容易引起问题,例如我们在MCU中引入串口shell,封装一些指令,如果这些指令中需要调用其他中断,例如I2C发送中断等,就很容易引起问题,这个时候我们就需要搞一个缓冲机制
思考
那么应该采用哪种缓冲机制呢?
- 消息队列:中断中的数据送入消息队列中,线程去轮询消息队列数据,对数据进行处理
- 缓冲区buff:中断往环形缓冲区扔数据,线程去轮询缓冲区数据,对数据进行处理
- 轮询中断标志位:这种方案,自己在使用过程中很容易丢数据,因为中断是很快的,在周期性很长的程序里,靠轮询中断标志位去读数据,很容易出现问题
总结
中间搞一层buff作为缓冲,在中断和业务层建立buff,有效解决中断嵌套的问题