stm32f103 timer interrupt
起因
在玩中断,timer溢出中断,每秒触发一次,将中断内容设置为修改小灯状态.但是发现小灯不闪烁.
经过
但是如果把清除中断的那句移到开头就会正常,用USART调试发现,每一次都会触发中断两次.并且其中一次检测到中断标志位为空.
结果
查到了: ARM: Cortex-M3/M4 Interrupts Happening Twice?
我自己猜测是这样的如果NVIC或者是其它的内核逻辑在检测到TIM6的中断请求时,如果发现没有pending或者active的中断处理程序,就会生成一个,此时由于写操作在供应商设计(画蛇添足)的系统级缓冲之中,TIM6没有接收到,于是内核处又生成中断,此时由于一些内存操作(context switch(?)),缓冲被清空,此时检测TIM6的标志位时会发现,标志位为空.