其他分享
首页 > 其他分享> > stm8l051 学习笔记1——外部中断

stm8l051 学习笔记1——外部中断

作者:互联网

stm8l051 学习笔记1——外部中断

描述:配置PB2为外部中断,中断函数中LED翻转。
1:myexti.c

GPIO_Init(GPIOB,GPIO_Pin_2,GPIO_Mode_In_FL_IT);
EXTI_SetPinSensitivity(EXTI_Pin_2, EXTI_Trigger_Rising);
EXTI_ClearITPendingBit(EXTI_IT_Pin2);

2:stm8l15x_it.c

INTERRUPT_HANDLER(EXTI2_IRQHandler,10)
{
    /* In order to detect unexpected events during development,
       it is recommended to set a breakpoint on the following instruction.
    */
    if(EXTI_GetITStatus(EXTI_IT_Pin2) != RESET)
    {
      EXTI_ClearITPendingBit(EXTI_IT_Pin2);//清标志

      /*自定义函数*///↓

      LED_CTRL_TIG();    
   
      /*自定义函数*///↑   
    }  
}

问题:在外部中断初始化后,直接触发中断,然后一直卡在中断函数中。要么是中断标志没清除,要么就是反复触发中断。

解决:第一点,在配置外部中断之前要关闭总中断,即在main函数开始时加disableInterrupts();,初始化完成之后再开启中断。 第二点,初始化外部中断时,引脚为GPIO_Mode_In_FL_IT 浮空输入中断,改为GPIO_Mode_In_PU_IT 上拉输入中断。

标签:中断,笔记,外部,Mode,Pin2,stm8l051,GPIO,EXTI
来源: https://blog.csdn.net/smell_/article/details/118304129