我正在开发一个基于STM32L4的裸机项目,我从现有的代码库开始。
中断服务程序(ISR)的实现方式如下:
- 在外设中读取中断状态,以了解是什么事件引起了中断
- 进行一些操作
- 清除一开始读取的标志位。
这是清除标志位的正确方式吗?标志位不应该在ISR的最开始被清除吗?我的理解是,如果同一个外设事件在第2步期间再次发生,则不会触发第二个IRQ,因此它将丢失。另一方面,如果尽快清除标志位,这个第二个事件将脉冲中断,其在CPU中的状态将变为“挂起和活动”:第二个IRQ将发生。
PS:从STM32处理器编程手册中我读到:“STM32中断既是电平敏感的,也是脉冲敏感的”。