STM8S003外部中断线使用方法及注意事项

初始化

EXTI_DeInit();
GPIO_Init(PORT, (GPIO_Pin_TypeDef)PINS, GPIO_MODE_IN_FL_IT); 
EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC , EXTI_SENSITIVITY_FALL_ONLY); //下降沿中断

中断线

INTERRUPT_HANDLER(EXTI_PORTC_IRQHandler, 5)
{
  //disableInterrupts();
  //if((GPIOC->IDR & 0x10) == 0){
    ev01s_sta.rev_int_flag = 1;
  //}
  //enableInterrupts();
}

之前尝试在中断中判断引脚进入中断后的状态,用于区分同一端口下,是哪个脚引发的中断,经测试后发现

if((GPIOC->IDR & 0x10) == 0

该引脚状态读取需要较长时间,项目使用的模块最长只能触发一段0.5ms的低电平时间,经测试,能够成功通过判断语句的概率只有20%,将以上判断语句取消后可以解决,好在我的项目该端口上只有这一个中断线,所以这个问题没有太大的影响

下降沿事件

你可能感兴趣的:(STM8S003外部中断线使用方法及注意事项)