FreeRTOS学习记录(2)——静态创建

本文详细描述了在C8T6平台上移植和配置FreeRTOS,包括打开宏定义、编写接口函数vApplicationGetIdleTaskMemory和vApplicationGetTimerTaskMemory,以及定义和创建任务的过程,解决了一个因为堆栈内存设置不足导致的任务不显示的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

动态创建比较简单,可以参考我上一篇的历程。在freertos_demo.c文件里

移植C8T6

提示:以下是本篇文章正文内容,下面案例可供参考

一、前期准备

1.打开宏定义

configSUPPORT_STATIC_ALLOCATION 这个宏定义默认关闭,现在打开置为1
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
现在进行编译会发现有两个报错
双击vTaskStartScheduler
在这里插入图片描述
右键追踪过去,这个函数FreRTOS已经定义过了,只需要我们写一个就行
在这里插入图片描述
重新双击vTaskStartScheduler右键追踪,向下滑动
在这里插入图片描述
可以看见这个函数。这是说明创建任务后默认会使用定时器
而回到FreeRTOSConfig.h文件,查找软件定时器
我们可以看见软件定时器这里是1,所以我们需要写一个软件定时器函数
在这里插入图片描述
右键xTimerCreateTimerTask追踪,这就是我们需要重新写的函数

在这里插入图片描述

2.写两个接口函数

vApplicationGetIdleTaskMemory
获得空闲任务堆栈和地址
vApplicationGetTimerTaskMemory
获得定时器堆栈和地址

//空闲任务堆栈数组
static StackType_t Idle_Task_Stack[configMINIMAL_STACK_SIZE];
//定时器堆栈数组
static StackType_t Timer_Task_Stack[configTIMER_TASK_STACK_DEPTH];

//空闲任务控制块
static StaticTask_t Idle_Task_TCB;	
//定时器任务控制块
static StaticTask_t Timer_Task_TCB;
void vApplicationGetIdleTaskMemory(StaticTask_t **ppxIdleTaskTCBBuffer, 
								   StackType_t **ppxIdleTaskStackBuffer, 
								   uint32_t *pulIdleTaskStackSize)
{
   
	*ppxIdleTaskTCBBuffer=&Idle_Task_TCB;//控制块内存
	*ppxIdleTaskStackBuffer=Idle_Task_Stack;//堆栈数组
	*pulIdleTaskStackSize=configMINIMAL_STACK_SIZE;//堆栈内存
}
void vApplicationGetTimerTaskMemory(StaticTask_t **ppxTimerTaskTCBBuffer, 
									StackType_t 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值