【FreeRTOS】第二课:创建第一个多任务系统

目录

一、前言

二、以创建动态任务为例

1.参数介绍

2.举例


一、前言

嵌入式领域有多种RTOS

例如FreeRTOS、RT-Thread等操作系统

两个操作系统任务创建函数如下

FreeRTOS:xTaskCreate()

RT-Thread:rt_thread_creat()

CMSIS_OS为此创建了统一的接口osThreadNew(),只要输入对应的函数变量便可以区分使用不同的操作系统

【FreeRTOS】第二课:创建第一个多任务系统_第1张图片

【FreeRTOS】第二课:创建第一个多任务系统_第2张图片

二、以创建动态任务为例

1.参数介绍

创建动态任务使用函数xTaskCreate(),函数参数如下

    BaseType_t xTaskCreate(    

                            TaskFunction_t pxTaskCode,
                            const char * const pcName,        
                            const configSTACK_DEPTH_TYPE usStackDepth,
                            void * const pvParameters,
                            UBaseType_t uxPriority,
                            TaskHandle_t * const pxCreatedTask )

pxTaskCode    :函数指针,指向需要执行的函数

pcName           :对此次创建的 xTaskCreate() 任务起一个任务名

usStackDepth  :估计的任务所需的栈空间

pvParameters  :任务函数需要执行的函数中的参数

uxPriority         :任务优先级

pxCreatedTask:用来保存任务创建函数输出结果的句柄,如果不想使用可以传入NULL

任务创建函数返回值:

成功:pdPASS

失败:errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY(失败原因只有内存不足)

2.举例

/*************************在以下沙箱段内编写需要执行的函数************************/
/* Private function prototypes -----------------------------------------------*/
/* USER CODE BEGIN FunctionPrototypes */
void MyTask(void *argument)
{
	while (1)
	{
		Led_Test();
	}
}
/* USER CODE END FunctionPrototypes */



/********************在以下沙箱段内创建任务函数,并传入相应的参数*******************/
/* USER CODE BEGIN RTOS_THREADS */
/* add threads, ... */
xTaskCreate(MyTask, "myfirsttask", 128, NULL, osPriorityNormal, NULL);
/* USER CODE END RTOS_THREADS */

你可能感兴趣的:(FreeRTOS,stm32)