回调函数的基本概念
回调函数的基本概念,这里不做详细的讲解。如果不懂的可以参考另一篇博文回调函数分析
回调函数的作用
讲回调函数之前,先了解函数调用的类型:
输出型
输出型函数就是调用用这个函数之后就能完成对应的功能需求。比如sizeof()获取数据字节大小,memcyp()是内存拷贝函数。
输出型函数占据做主导地位,知道什么时候该调用它。
输入型
输入型函数是把函数当作参数调用。而回调函数就是把函数当作参数来使用。根据回调函数的基本定义,回调函数的核心作用是:
- 把数据从一个源文件传递到另一个源文件,而不用全局变量共享数据。
- 回调函数的数据传递方式有利于代码的封装。
回调函数程序使用
在实际项目中使用回调函数有如下几个步骤:
- 自定义返回值、形参一致的函数指针类型;
typedef void (*pxfunc_callback)(void);
- 定义函数指针变量
pxfunc_callback puxhal_usart_rx_callback_func = NULL;
- 通过这个函数指针,指向应用层的函数地址(函数名)。
void vhal_app_task(puxhal_usart_rx_callback_func pcall_back)
{
puxhal_usart_rx_callback_func = pcall_back;
}
- 函数指针变量调用
// 函数层调用
puxhal_usart_rx_callback_func();
- 函数注册回调函数
// 回调函数
static void prvhal_callback_register(void)
{
}
// 注册回调函数
vhal_app_task(prvhal_callback_register);
回调函数的基本使用步骤。如果不起清楚建议多看几遍。