使用CubeMX新建EXTI外部中断工程——使用回调函数
使用cubemx新建工程的具体操作步骤参考这个:STM32CubeMX学习笔记(3)——EXTI(外部中断)接口使用_cubemx exti-CSDN博客
1、使用回调函数与不使用回调函数的区别
不使用中断回调函数是直接在中断服务函数中放置中断处理函数
使用中断回调函数是在中断服务函数中调用了GPIO的外部中断处理函数 HAL_GPIO_EXTI_IRQHandler(),
其主要作用就是判断是几号线中断,清除中断标识位,然后调用中断回调函数 HAL_GPIO_EXTI_Callback()
。
2、HAL_GPIO_EXTI_Callback()
定义
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{switch (GPIO_Pin){case GPIO_PIN_0 :HAL_GPIO_TogglePin (GPIOB,GPIO_PIN_0);break;case GPIO_PIN_13 :HAL_GPIO_TogglePin (GPIOB,GPIO_PIN_1);break; }
}
3、使用中断回调函数的主要优点
- 提高代码的模块化和可读性;
- 增强代码的可复用性和灵活性;
- 简化ISR逻辑,提升系统性能;
- 支持动态绑定和事件驱动编程;
- 便于调试和测试。
这种设计模式特别适合复杂的嵌入式系统开发,尤其是在需要处理多个中断源或频繁更改中断逻辑的场景中。通过合理使用中断回调函数,可以使代码更加优雅、灵活和高效。
4、记录一下问题:
在设置按键2对应的引脚时点错了,应该是PC13,选成PC3了。其他没什么问题,和不使用回调函数差不多,多了在main.c文件中添加自己定义的回调函数。