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里面还得再重复一遍这个使能函数呢。不知道我有没有说明白,请各位大佬们帮忙解答一下。 |