[FreeRTOS] 创建动态和静态任务
2023-12-20 14:38:53
创建动态任务
由系统动态分配任务所需要的内存空间, 简单, 方便, 灵活, 节省空间.
缺点: 容易产生内存碎片.?
//动态任务1
TaskHandle_t Task1Handle;
void vTask1Function( void * param)
{
while(1)
{
printf("1");
//taskYIELD();
}
}
//参数: 任务函数, 任务名称, 堆栈大小, 任务参数, 任务优先级, 任务句柄
//返回值类型: BaseType_t
xTaskCreate(vTask1Function, "task1", 100, NULL, 1, &Task1Handle); //调用
创建静态任务
由程序员自己定义空间大小, 不易产生内存碎片.
缺点: 任务删除无法回收内存.
#define configSUPPORT_STATIC_ALLOCATION 1 //配置文件,开启静态分配
//静态任务2
StackType_t task2Stack[128];
StaticTask_t task2TCB;
void vStaticTask2Function( void * param)
{
while(1)
{
printf("2");
//taskYIELD();
}
}
//空闲任务需要重写
StaticTask_t IdleTaskTCB;
StackType_t IdleTaskStack[configMINIMAL_STACK_SIZE];
void vApplicationGetIdleTaskMemory( StaticTask_t ** ppxIdleTaskTCBBuffer,
StackType_t ** ppxIdleTaskStackBuffer,
uint32_t * pulIdleTaskStackSize )
{
*ppxIdleTaskTCBBuffer = &IdleTaskTCB;
*ppxIdleTaskStackBuffer = IdleTaskStack;
*pulIdleTaskStackSize = configMINIMAL_STACK_SIZE;
}
//参数1: 静态任务函数, 任务名, 任务堆栈大小, 任务参数, 任务优先级, 堆栈空间, TCB
//返回值: 任务句柄
xTaskCreateStatic(vStaticTask2Function, "task2", 128, NULL, 1, task2Stack, &task2TCB);
?
文章来源:https://blog.csdn.net/qq_46129738/article/details/135105005
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!