我需要在我的 stm32f103 板的 A1 端口上配置一个 exti 中断。我使用 stm32cubemx 创建了一个模板,但我正在尝试手动配置中断,因为它是我已经编写的代码的新功能。我正在阅读很多主题,但我没有找到任何解决方案。在这个项目中,我使用 HAL 库并按照以下步骤操作:
配置GPIO
GPIO_InitStruct.Pin = GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
启用 IRQ
HAL_NVIC_SetPriority(EXTI1_IRQn, 3, 0);
HAL_NVIC_EnableIRQ(EXTI1_IRQn);
自定义回调
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == STEP_PIN)
{
GlobalMotorData.step.longint++;
}
}
我在一个新的 .c 文件中编写了回调函数,并且我没有触及 stm32f1xx_hal_gpio.c 中的相同函数
我没有启用宏 HAL_EXTI_MODULE_ENABLED 因为项目找不到对应的 .h 头文件但没有宏,代码构建没有错误。
我忘记了什么?
谢谢你