在单片机应用中,回调函数是一种 “间接调用函数” 的编程思想,而函数指针结构体是对回调函数的 “存储、组织和封装方式”—— 两者并非对立关系,而是 **“设计思想” 与 “实现载体”的关系。函数指针结构体解决了单一回调函数在单片机中多实例管理、状态与回调分离、模块化复用 ** 的痛点,是单片机中实现灵活回调机制的核心手段。
下面先厘清概念,再结合单片机的实际应用场景举例说明。
一、核心概念:先分清「回调函数」和「函数指针结构体」
1. 回调函数(Callback Function):一种编程思想
回调函数的本质是:将函数的地址作为参数传递(或保存),在特定事件触发时(如硬件中断、定时超时、按键按下)间接调用该函数。
- 对单片机而言,回调函数是处理异步事件的常用手段(比如中断触发后调用回调、按键按下后执行回调)。
- 单一的回调函数通常通过全局函数指针实现,但在多外设、多实例场景下会暴露明显缺陷。
2. 函数指针结构体:回调函数的组织与封装载体
函数指针结构体是将多个函数指针(对应不同的回调函数)和外设的状态数据(如电机的运行状态、按键的按下状态、串口的接收长度)封装在一个结构体中,形成一个 **“功能对象”**。
- 对单片机而言,它是模块化管理多实例