目录
一、简介
1.1、开发环境
STM32CubeIDE V1.9,FreeRTOS CMSIS_V1。
1.2、功能说明
创建事例任务,并进行挂起、恢复和删除操作。
二、动态创建任务
2.1、头文件声明内容
void Example_Task(); //任务函数
#define EXAMPLE_TASK_NAME "EXAMPLE" //任务名
#define EXAMPLE_TASK_STACK_SIZE 64 //任务堆栈
#define EXAMPLE_TASK_PARAMETER NULL //任务参数
#define EXAMPLE_TASK_PRIORITY 30 //任务优先级
extern TaskHandle_t EXAMPLE_TASK_HANDLE; //任务句柄
2.2、工程文件声明内容
TaskHandle_t EXAMPLE_TASK_HANDLE; //任务句柄
2.3、创建任务
xTaskCreate( //动态创建任务
(TaskFunction_t ) Example_Task, //任务函数
(char * ) EXAMPLE_TASK_NAME, //任务名
(uint16_t ) EXAMPLE_TASK_STACK_SIZE, //任务堆栈大小
(void * ) EXAMPLE_TASK_PARAMETER, //任务参数
(UBaseType_t ) EXAMPLE_TASK_PRIORITY, //任务优先级
(TaskHandle_t * ) &EXAMPLE_TASK_HANDLE ); //任务句柄
2.4、任务函数
void Example_Task() //任务函数
{
while(1)
{
//此次填写任务执行内容
}
}
三、静态创建任务
3.1、头文件声明内容
void Example_Task(); //任务函数
#define EXAMPLE_TASK_NAME "EXAMPLE" //任务名
#define EXAMPLE_TASK_STACK_SIZE 64 //任务堆栈大小
#define EXAMPLE_TASK_PARAMETER NULL //任务参数
#define EXAMPLE_TASK_PRIORITY 30 //任务优先级
extern StackType_t ExampleTaskStack[EXAMPLE_TASK_STACK_SIZE];//任务堆栈
extern StaticTask_t EXAMPEL_TASK_TCB; //任务控制块
extern TaskHandle_t EXAMPLE_TASK_HANDLE; //任务句柄
3.2、工程文件声明
StackType_t ExampleTaskStack[EXAMPLE_TASK_STACK_SIZE]; //任务堆栈
StaticTask_t EXAMPEL_TASK_TCB; //任务控制块
TaskHandle_t EXAMPLE_TASK_HANDLE; //任务句柄
3.3、创建任务
EXAMPLE_TASK_HANDLE = xTaskCreateStatic( //静态创建任务
(TaskFunction_t ) Example_Task, //任务函数
(char * ) EXAMPLE_TASK_NAME, //任务名
(uint16_t ) EXAMPLE_TASK_STACK_SIZE, //任务堆栈大小
(void * ) EXAMPLE_TASK_PARAMETER, //任务参数
(UBaseType_t ) EXAMPLE_TASK_PRIORITY, //任务优先级
(StackType_t * ) ExampleTaskStack, //任务堆栈
(StaticTask_t * ) &EXAMPEL_TASK_TCB ); //任务控制块
3.4、任务函数
void Example_Task() //任务函数
{
while(1)
{
//此次填写任务执行内容
}
}
四、任务挂起和恢复
4.1、任务挂起
vTaskSuspend(EXAMPLE_TASK_HANDLE); //挂起任务
4.2、任务恢复
在其他任务中恢复挂起任务:
vTaskResume(EXAMPLE_TASK_HANDLE); //恢复任务
在中断中恢复挂起任务:
xTaskResumeFromISR(EXAMPLE_TASK_HANDLE); //恢复任务
五、删除任务
vTaskDelete(EXAMPLE_TASK_HANDLE); //删除任务