FreeRTOS之动态方法任务创建和删除实验

本文详细介绍了使用RTOS进行任务管理与调度的过程,包括任务的创建、优先级设置、堆栈分配及任务间的相互操作。通过具体实例展示了如何利用RTOS特性实现高效的任务管理和资源分配。

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

一、实验设计
start_task:用来创建其他两个任务。
task1_task:当此任务运行5次就调用vTaskDelete()删除任务task2_task。
task2_task:此任务为普通的应用任务。

一、宏定义
//任务优先级
#define START_TASK_PRIO 1
//任务堆栈大小
#define START_STK_SIZE 128
//任务堆栈
StackType_t StartTaskStack[START_STK_SIZE];
//任务控制块
StaticTask_t StartTaskTCB;
//任务句柄
TaskHandle_t StartTask_Handler;
//任务函数
void start_task(void *pvParameters);

//任务优先级
#define TASK1_TASK_PRIO 2
//任务堆栈大小
#define TASK1_STK_SIZE 128
//任务堆栈
StackType_t Task1TaskStack[TASK1_STK_SIZE];
//任务控制块
StaticTask_t Task1TaskTCB;
//任务句柄
TaskHandle_t Task1Task_Handler;
//任务函数
void task1_task(void *pvParameters);

//任务优先级
#define TASK2_TASK_PRIO 3
//任务堆栈大小
#define TASK2_STK_SIZE 128
//任务堆栈
StackType_t Task2TaskStack[TASK2_STK_SIZE];
//任务控制块
StaticTask_t Task2TaskTCB;
//任务句柄
TaskHandle_t Task2Task_Handler;
//任务函数
void task2_task(void *pvParameters);

StartTask_Handler=xTaskCreateStatic((TaskFunction_t	)start_task,		//任务函数
						(const char* 	)"start_task",		//任务名称
						(uint32_t 		)START_STK_SIZE,	//任务堆栈大小
						(void* 		  	)NULL,				//传递给任务函数的参数
						(UBaseType_t 	)START_TASK_PRIO, 	//任务优先级
						(StackType_t*   )StartTaskStack,	//任务堆栈
						(StaticTask_t*  )&StartTaskTCB);	//任务控制块              
vTaskStartScheduler();          //开启任务调度
}
//开始任务任务函数
void start_task(void *pvParamet
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值