描述:

中断回调函数,当发生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综合配置基础上设计,不保证在其它模块上有同样效果。