2021/04/16


   一个项目需要用到STM8S103的PA2引脚的双边沿中断,按手册配置EXTI_CR1 |= 0x03。但实际中发现其不停进入中断,排查发现EXTI_CR1 的值竟然为0,也就是默认的低电平及下降沿中断,所以在外部信号为低电平时系统不停中断。排查程序,发现“EXTI_CR1 |= 0x03”这条语句放在了开中断语句 “asm("rim");”之后,试着将“EXTI_CR1 |= 0x03”放在开中断前,再次运行则正常,“EXTI_CR1 ” 寄存器已经被配置为0x03,项目工作正常。

结论:用外部中断时,CR的配置要在开中断前,否则会失败。具体原因尚需查找。