描述:
中断回调函数,当发生GPIO外部中断时会回调执行这个函数,需要在主程序文件中添加此函数。
示例:
根据使用的外设,关闭未使用外设的初始化
/* Initialize all configured peripherals */ MX_GPIO_Init(); //开启GPIO初始化函数 // MX_I2C1_Init(); // MX_USART1_UART_Init(); // MX_USART2_UART_Init(); // MX_USB_DEVICE_Init(); // MX_ADC_Init(); // MX_TIM2_Init(); // MX_SPI1_Init();
编辑主程序,LED每隔两秒变一次状态。
/* Infinite loop */ /* USER CODE BEGIN WHILE */ while(1) { HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); //翻转IO HAL_Delay(2000); //延时2秒 /* USER CODE END WHILE */ ? /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */
添加回调函数,当发生中断时,LED对应的IO翻转,主函数中即使未等到延时2秒LED也会变化,用的是PB5引脚的中断,cubeMX软件中配置为内部上拉下降沿中断,因此当PB5引脚连接到GND时会发生一次中断。
/* USER CODE BEGIN 4 */ //可以在主程序文件底部找到这个用户代码添加区间 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { ? if (GPIO_Pin == GPIO_PIN_5) //判断是否为5脚中断 ? { ? ? /* Toggle LED */ HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); //翻转IO ? } } /* USER CODE END 4 */
以上示例针对eefrog的STM32F042G模块,根据STM32cubeMX综合配置基础上设计,不保证在其它模块上有同样效果。