嵌入式回调函数

看了一些文章,一些书,大概明白了回调是怎么回事,以下想法可能随着知识丰富慢慢变化。

表面上看来,回调函数只是一个普通的调用,似乎其和一般的函数传参调用也无差异。但是,

函数的调用形式一般是

变量名 = 函数名(实参列表)

而回调函数一般是在结构体中,通过一个SetCallBack() 对结构体成员进行设置,然后在逻辑上调用结构体时,可以调用他的回调函数。

这样的好处就是分层,使得驱动层和应用层不用直接关联,增加了代码的兼容性,移植性等。

两个例子以供理解:

  • 在Free RTOS中软件定时器的回调函数:

//Defines the prototype to which timer callback functions must conform
typedef void (* TimerCallbackFunction_t)( TimerHandle_t xTimer ); //设置回调形式
pxNewTimer->pxCallbackFunction = pxCallbackFunction;    //设置调用的地方
  • 设置网卡数据的处理回调函数:

typedef void (*NetInputProcessCallback)(char c);//设置回调的形式

static NetInputProcessCallback g_fNetInputProcessCallback;

void SetNetInputProcessCallback(NetInputProcessCallback func)  //一般在,状态机,初始化等请换下进行设置
{
    g_fNetInputProcessCallback = func;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值