STM32 HAL 外部中断回调函数使用
时间: 2023-06-29 19:16:27 浏览: 519
在 STM32 HAL 中,外部中断的回调函数需要通过 HAL_GPIO_EXTI_Callback() 函数来实现。具体步骤如下:
1. 在 CubeMX 中配置外部中断,选择相应的 GPIO 引脚和触发方式。
2. 在 main() 函数中初始化 GPIO 和中断。
3. 在中断回调函数 HAL_GPIO_EXTI_Callback() 中编写相应的处理代码。
例如,如果我们想在外部中断触发时改变 LED 灯的状态,可以按照以下步骤操作:
1. 在 CubeMX 中配置外部中断,选择相应的 GPIO 引脚和触发方式。
2. 在 main() 函数中初始化 GPIO 和中断。例如,我们将 PA0 引脚配置为外部中断,连接到一个按键,同时将 PB0 引脚配置为输出,连接到一个 LED 灯。初始化代码如下:
```
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
/*Configure GPIO pin : PA0 */
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/*Configure GPIO pin : PB0 */
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* EXTI interrupt init*/
HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(EXTI0_IRQn);
```
3. 在中断回调函数 HAL_GPIO_EXTI_Callback() 中编写相应的处理代码。例如,我们在按键按下时改变 LED 灯的状态。代码如下:
```
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if (GPIO_Pin == GPIO_PIN_0)
{
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
}
}
```
这样,当按键按下时,会触发外部中断,进而调用 HAL_GPIO_EXTI_Callback() 函数,从而改变 LED 灯的状态。
阅读全文
相关推荐


















