STM32
直播中

姜薇

7年用户 193经验值
私信 关注
[问答]

STM32外部中断只能触发一次是为什么?

昨天写的一个外部中断的程序,其中用到两个外部中断,每个中断只能触发一次,主函数运行正常,但是如果第一个中断触发完就不能再继续触发,只能触发第二个中断去。每个中断均只能触发一次。一下是中断的服务函数和初始化函数:
void EXti15_10_IRQHandler(void){delay_ms(10);    //消抖 if(KEY0==0)      //按键0{GPIOB->CRH&=0XFF0FFFFF; GPIOB->CRH|=0X00300000;        GPIOB->ODR|=0<<13;      delay_ms(1000);GPIOB->ODR|=1<<13;}else if(KEY1==0)//按键1{ GPIOB->CRH&=0XFFF0FFFF; GPIOB->CRH|=0X00030000;     GPIOB->ODR|=0<<12;      delay_ms(1000);GPIOB->ODR|=1<<12;}KEY0==1;KEY1==1;EXTI->R=1<<13;     //清除LINE13上的中断标志位  EXTI->R=1<<15;     //清除LINE15上的中断标志位}//外部中断初始化程序//初始化PA0,PA13,PA15为中断输入.void EXTIX_Init(void){//RCC->APB2ENR|=1<<2;     //使能PORTA时钟//JTAG_Set(JTAG_SWD_DISABLE);//关闭JTAG和SWD   
GPIOC->CRL&=0XFFFFFFF0;//PA0设置成输入  GPIOC->CRL|=0X00000008;   GPIOC->CRH&=0X0F0FFFFF;//PA13,15设置成输入  GPIOC->CRH|=0X80800000;    GPIOC->ODR|=1<<13;   //PA13上拉,PA0默认下拉GPIOC->ODR|=1<<15;   //PA15上拉
//Ex_NVIC_Config(GPIO_C,0,RTIR); //上升沿触发Ex_NVIC_Config(GPIO_C,13,FTIR);//下降沿触发Ex_NVIC_Config(GPIO_C,15,FTIR);//下降沿触发
//MY_NVIC_Init(2,2,EXTI0_IRQChannel,2);    //抢占2,子优先级2,组2MY_NVIC_Init(2,1,EXTI15_10_IRQChannel,2);//抢占2,子优先级1,组2   }

回帖(3)

解丽娟

2020-4-26 13:41:51
延时去掉了,但是还是那样
举报

于惠

2020-4-26 13:48:28
觉得可以触发.只是现象看不到而已,把置零改成这样GIPOB->ODR&=~(1<<13)试试,因为下面置1了,第二次触发也是1,这样就没实验效果了
举报

黄鹏

2020-4-26 14:12:05
不知道楼主要实现什么效果…初步估计。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分