问答

汇集网友智慧,解决技术难题

21ic问答首页 - 关于中断的问题,Disable中再Enable中断无法正常运行

GPIO IO gp pi AB BLE

关于中断的问题,Disable中再Enable中断无法正常运行

czyh19892023-02-22
Disable中断之后再Enable无法正常运行,这是中断函数:
void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)
{ if(GPIO_Pin==GPIO_PIN_3) { HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
HAL_NVIC_DisableIRQ(EXTI2_3_IRQn); EXIT_Sign=1; }
}
这是while循环
while (1) { / USER CODE END WHILE / if(EXIT_Sign==1) { HAL_Delay(2000); MX_GPIO_Init();
HAL_NVIC_EnableIRQ(EXTI2_3_IRQn);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET); EXIT_Sign=0; }
/ USER CODE BEGIN 3 / }
这样是可以实现功能的,但是只要注释掉if里面的
MX_GPIO_Init();
或者
HAL_NVIC_EnableIRQ(EXTI2_3_IRQn);
这两个注释掉一个就无法实现功能。我的问题是:MX_GPIO_Init();函数里面有使能中断语句了HAL_NVIC_EnableIRQ(EXTI2_3_IRQn);
为啥在if里面还得再重复一遍这个使能函数呢。不知道我有没有说明白,请各位大佬们帮忙解答一下。
回答 +关注 18
3860人浏览 34人回答问题 分享 举报
34 个回答

您需要登录后才可以回复 登录 | 注册