这个函数的作用是获得空闲任务的堆栈以及任务控制块信息,传递给任务创建函数形参,从而FreeRTOS可以对空闲任务进行创建以及其他操作比如初始化,
那么为什么用户创建的任务时没有使用此函数,用户创建的任务完全无需使用此函数,创建任务时直接将任务的堆栈以及任务控制块带入形参即可 ,而空闲任务是由freeRTOS在启动调度器时由系统创建的,需要引用我们定义的这个函数,传入空闲任务的一些信息,类似回调函数。
/**
**********************************************************************
* @brief 获取空闲任务的任务堆栈和任务控制块内存
* ppxTimerTaskTCBBuffer : 任务控制块内存
* ppxTimerTaskStackBuffer : 任务堆栈内存
* pulTimerTaskStackSize : 任务堆栈大小
* @author fire
* @version V1.0
* @date -xx-xx
**********************************************************************
*/
void vApplicationGetIdleTaskMemory(
StaticTask_t **ppxIdleTaskTCBBuffer, /*形参为:指向 TCB_t类型指针的指针,也就是指针的地址*/
StackType_t **ppxIdleTaskStackBuffer, /*形参为:指向 StackType_t类型指针的指针,也就是指针的地址*/
uint32_t *pulIdleTaskStackSize /*形参为:指向 32位变量类型的指针*/
)
{
*ppxIdleTaskTCBBuffer=&Idle_Task_TCB;/* 任务控制块内存 *//*指针ppxIdleTaskTCBBuffer指向的地址里存放的是结构体IdleTaskTCB的地址,结构体名字必须加&代表地址*/
*ppxIdleTaskStackBuffer=Idle_Task_Stack;/* 任务堆栈内存 */ /*指针ppxIdleTaskStackBuffer指向的地址里存放的是数组IdleTaskStack的地址,数组名字直接可以代表地址*/
*pulIdleTaskStackSize=configMINIMAL_STACK_SIZE;/* 任务堆栈大小 */ /*指针pulIdleTaskStackSize指向的地址存放的是变量configMINIMAL_STACK_SIZE*/
}