|
μC/OS-III中定时器到期后会调用一个回调函数,其定义类型类型如下
typedef void (*OS_TMR_CALLBACK_PTR)(void *p_tmr, void *p_arg);
执行的流程:
1.首先定义变量函数指针变量 OS_TMR_CALLBACK_PTR p_fnct;
2.获取回调函数并执行。有两个参数,一个是我们回调函数的参数,一个是定时器的p_tmr。(*p_fnct)((void *)p_tmr,p_tmr->CallbackPtrArg);
一般我们都会定义回调函数如下:
void MyCallBackFnct(void *p_arg)
那么执行的时候为什么可以传入两个参数,传入两个参数,而我们定义回调函数的时候只有一个是不是前一个被舍弃掉了?这些又是什么方面的C语言知识?
- p_fnct = p_tmr->CallbackPtr; /* Execute callback function if available */
- if (p_fnct != (OS_TMR_CALLBACK_PTR)0)
- {
- (*p_fnct)((void *)p_tmr,//传递了两个参数,执行回调函数
- p_tmr->CallbackPtrArg);
- }
复制代码
|
|