我正在一个没有操作系统的 ARM 微控制器上开发一个小型嵌入式系统。它有几种不同类型的中断发生(按钮按下、A 到 D 转换、定时器等)并且只有一个线程在运行。
我想要一个 FIFO 事件队列来处理,其中每个中断服务例程将其事件添加到队列中,并且主(也是唯一的)线程从队列中删除要处理的事件。显然在中断服务例程中访问队列数据结构是危险的,但是自旋锁会导致死锁,因为如果主线程有锁并且发生中断,ISR 将永远等待锁。
当然,我已经知道我可以在主线程处理队列时禁用中断,但这并不理想。
在这里进行的最佳方式是什么?
谢谢