在调试程序的时候发现,在MCU没有睡眠时,如果开启GPIO中断,中断挂起标志位是会置1的,但是如果在MCU睡眠之后,通过配置的中断IO口来唤醒,发现中断标志位不会置1,但是此时还是可以唤醒的。因此如果是唤醒判断的话,需要额外的添加一个条件,才能清除的知道中断进去的原因是什么。
另外本程序因为LIN的引脚与另外一个唤醒引脚共用同个中断入口,因此后面不得将LIN总线的普通IO口唤醒更改了LIN的模块唤醒。其中LIN模块自带模块的唤醒状态机。在MCU没有睡眠时,唤醒LIN会让LIN模块的唤醒标志位置1,但是当MCU睡眠后,LIN总线的唤醒,能够让MCU唤醒但是不会置为LIN模块的唤醒标志的。
网上给的答案 |