码迷,mamicode.com
首页 > 其他好文 > 详细

FreeRTOS学习笔记5-静态方式创建任务函数

时间:2017-07-27 01:06:27      阅读:406      评论:0      收藏:0      [点我收藏+]

标签:函数参数   任务   学习   test   task   support   oca   timertask   idle   

配置完成后的进行任务创建,使用静态方式创建任务时需要使将宏 configSUPPORT_STATIC_ALLOCATION设置为 1,即使用静态内存。还需要将函数

vApplicationGetIdleTaskMemory()和 ApplicationGetTimerTaskMemory()进行实现。通过这两个函数来给空闲任务 和定时器服的任务堆 栈和任务控制块分配内存。在maiinc.c中进行定义。定义静态的任务堆栈和任务控制块内存,然后将这些内存传递给函数参数。最后创建空闲任务和定时器任务的API函数会调用这两个函数。

这两个函数我们在mainc.c中定义:

//空闲任务任务堆栈

static StackType_t IdleTaskStack[configMINIMAL_STACK_SIZE];

//空闲任务控制块 static StaticTask_t IdleTaskTCB; 

//定时器服务任务堆栈

static StackType_t TimerTaskStack[configTIMER_TASK_STACK_DEPTH];

//定时器服务任务控制块

static StaticTask_t TimerTaskTCB;

//获取空闲任务地堆栈和控制块内存,因为本例程使用的 

//静态内存,因此空闲任务的堆栈和控制块就应该 静态内存,因此空闲任务的堆栈和控制块就应该

//有用户来提供, 有用户来提供, FreeRTOS提供了接口函数 vApplicationGetIdleTaskMemory()

//实现此函数即可。 实现此函数即可。

//ppxIdleTaskTCBBuffer:任务控制块内存

//ppxIdleTaskStackBuffer:任务堆栈内存

//pulIdleTaskStackSize:任务堆栈大小

void vApplicationGetIdleTaskMemory(StaticTask_t **ppxIdleTaskTCBBuffer,

                  StackType_t **ppxIdleTaskStackBuffer,

                   uint32_t *pulIdleTaskStackSize)

{

*ppxIdleTaskTCBBuffer=&IdleTaskTCB;

*ppxIdleTaskStackBuffer=IdleTaskStack;

*pulIdleTaskStackSize=configMINIMAL_STACK_SIZE;

}

//获取定时器服务任的堆栈和控制块内存

//ppxTimerTaskTCBBuffer:任务控制块内存 //ppxTimerTaskStackBuffer:任务堆栈内存

//pulTimerTaskStackSize:任务堆栈大小 任务堆栈大小

void vApplicationGetTimerTaskMemory(StaticTask_t **ppxTimerTaskTCBBuffer,

                   StackType_t **ppxTimerTaskStackBuffer,

                    uint32_t *pulTimerTaskStackSize)

{

  *ppxTimerTaskTCBBuffer=&TimerTaskTCB;

  *ppxTimerTaskStackBuffer=TimerTaskStack;               

  *pulTimerTaskStackSize=configTIMER_TASK_STACK_DEPTH;

}

注:定义任务控制块时,类型要用StaticTask_t,而不是TCB_t或tskTCB

xTaskCreateStatic()和 xTaskCreate()没有太大的区别。大部分是相同的。创建任务的过程中。还是使用动态的方式更为简单。静态的方式了解一下即可。需要使用时再深入研究。

FreeRTOS学习笔记5-静态方式创建任务函数

标签:函数参数   任务   学习   test   task   support   oca   timertask   idle   

原文地址:http://www.cnblogs.com/daidong805/p/7242553.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!