RTOS系统3-任务管理

本文详细介绍了FreeRTOS的任务管理,包括任务函数创建、任务参数、优先级设置、任务状态(如阻塞、挂起、就绪)以及调度策略。重点讲解了xTaskCreate()函数、任务优先级的设置与切换、vTaskDelay()和vTaskDelayUntil()函数的使用,还提到了空闲任务钩子函数的配置和任务删除操作。内容深入浅出,适合FreeRTOS初学者参考。
摘要由CSDN通过智能技术生成

参考:FreeRTOS使用教程

关于打印调试信息:

修改FreeRTOSConfig.h中的

//调试信息打印
#define configUSE_TRACE_FACILITY	1   //默认值是0
#define configUSE_STATS_FORMATTING_FUNCTIONS 1  //增加这一行

并且配置print和usart,使usart能打印调试信息,:

static void vTaskLed1(void *pvParameters)
{
	uint8_t pcWriteBuffer[500];
	while(1)
	{
		LED1_ON;
		vTaskDelay(500);
		LED1_OFF;
		vTaskDelay(500);
		vTaskList((char *)&pcWriteBuffer);
		printf("tsak                state   priority   stacks   number\r\n");
                printf("%s\r\n", pcWriteBuffer);
	}
}

1、任务函数

  1. 任务函数必须返回void,且必须带有一个void指针参数:void *pvParameters
  2.     例如:void ATaskFunction(void *pvParameters);
  3. 任务都是自己职权范围内的一个小程序,其具有程序入口,通常会运行在一个死循环中,也不会退出
  4. 任务不允许任何形式的返回(绝对不能有return语句,也不能执行的函数末尾,当然也可以运行完任务显示的删除它vTaskDelete(NULL)
  5. 一个任务函数可以创建若干个任务,任务之间均独立执行

1.1、创建任务函数:xTaskCreate()

首先看一下该函数的定义:


pvTaskCode:创建的任务将要执行的函数名,该函数定义是包含一个void参数指针;

pcName:       具有描述性的任务名,仅仅用来腐竹调试,RTOS不会调用他

usStackDepth:告诉内核给该任务分配多大的栈空间,单位:字

                         例如,32位的机器,栈空间宽为32,若usStackDepth值为100,那么会分配3200位空间,                             即400字节。

pvParameters:任务函数接受一个指向void的指针(void*),pvParameters的值是传递到任务中的值

uxPriority:      指定任务的优先级,优先级的上限在初始化中就应该设置好

pvCreatedTask:pvCreatedTask用于传出任务的句柄。这个句柄将在 API 调用中对该创建出来的任务进行                              

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值