[嵌入式]回调函数在嵌入式中的作用
回调函数Callback Function是一个被作为参数传递给另一个函数并在特定时机被自动调用的函数。简单理解你告诉系统 “当 XX 事件发生时帮我执行这个函数”这个函数就是回调函数。核心作用嵌入式重点解耦驱动层 / 硬件层 不用关心上层业务逻辑上层只需要注册函数即可事件驱动中断、按键、定时器、串口接收等异步事件触发时自动执行代码复用一套驱动代码可以适配不同的业务逻辑灵活配置不用修改底层驱动只修改回调函数就能实现不同功能例程带参数的回调串口接收嵌入式中带参数回调更常用比如串口收到数据后把数据传给上层。这时当我们需要在中断服务函数中实现逻辑功能时只需注册所需要的回调函数即可而无需修改中断服务函数。#include stdio.h // 带参数的回调类型 typedef void (*UartRxCallback_t)(uint8_t data); static UartRxCallback_t s_uart_callback NULL; // 注册回调 void UART_RegisterCallback(UartRxCallback_t cb) { s_uart_callback cb; } // 模拟串口接收中断 void UART_IRQHandler(void) { uint8_t rx_data 0x55; // 收到的数据 printf(【底层】串口收到数据0x%X\n, rx_data); if(s_uart_callback ! NULL) { s_uart_callback(rx_data); // 把数据传给上层 } } // 上层回调处理收到的数据 void MyUart_Handler(uint8_t data) { printf(【上层】处理数据0x%X → 存储、解析、响应\n, data); } int main(void) { UART_RegisterCallback(MyUart_Handler); UART_IRQHandler(); // 模拟触发 return 0; }运行结果【底层】串口收到数据0x55 【上层】处理数据0x55 → 存储、解析、响应五、嵌入式使用回调的 4 条规则必须用 typedef 定义函数指针类型规范、易读调用前必须判断非空if(callback ! NULL)中断里的回调要短小精悍不能阻塞、不能打印过多回调函数是上层实现底层只负责调用
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2449323.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!