柴库柴库 发表于 2025-4-13 10:00

STM32G0 HAL EXTI 回调函数是否存在错误

STM32G0 HAL EXTI 回调实现是错误的。根据 UM2319 rev 1 第 3.11.2 节,它说:​用户必须从 stm32g0xx_it.c 调用 HAL_GPIO_EXTI_IRQHandler() 并实现 HAL_GPIO_EXTI_Callback()​STM32G0 HAL 不遵循此流程,而所有其他 HAL 系列(例如:F0、F4、F7、G4、L1)HAL 都遵循此流程。​在实际代码中,STM32G0 HAL 驱动程序在 stm32g0xx_hal_gpio.c 中实现 EXTI 中断处理程序,如下所示:
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin){/* EXTI line interrupt detected */if (__HAL_GPIO_EXTI_GET_RISING_IT(GPIO_Pin) != 0x00u){    __HAL_GPIO_EXTI_CLEAR_RISING_IT(GPIO_Pin);    HAL_GPIO_EXTI_Rising_Callback(GPIO_Pin);}   if (__HAL_GPIO_EXTI_GET_FALLING_IT(GPIO_Pin) != 0x00u){    __HAL_GPIO_EXTI_CLEAR_FALLING_IT(GPIO_Pin);    HAL_GPIO_EXTI_Falling_Callback(GPIO_Pin);}}
页: [1]
查看完整版本: STM32G0 HAL EXTI 回调函数是否存在错误