【FreeRTOS(一)】任务创建、删除、延时

本文介绍了FreeRTOS操作系统中的任务管理,包括如何使用xTaskCreate创建任务,通过vTaskDelete删除任务,以及利用vTaskDelay实现任务延时。示例代码展示了创建一个打印“Hello World!”后自我删除的任务过程。
摘要由CSDN通过智能技术生成

一. 任务创建 xTaskCreate

创建新的任务并添加到任务队列中

BASE_TYPE xTaskCreate( 
                        pdTASK_CODE pvTaskCode, 

                        const portCHAR * const pcName, 

                        unsigned portSHORT usStackDepth, 

                        void *pvParameters, 

                        unsigned portBASE_TYPE uxPriority, 

                        xTaskHandle *pvCreatedTask 

                        );
parameterdescription
pvTaskCode指向任务的入口函数. 任务必须执行并且永不返回 (即:无限循环).
pcName描述任务的名字。主要便于调试。最大长度由configMAX_TASK_NAME_LEN.定义
usStackDepth指定任务堆栈的大小 ,堆栈能保护变量的数目- 不是字节数. 例如,如果堆栈为16位宽度,usStackDepth定义为 100, 200 字节,这些将分配给堆栈。堆栈嵌套深度(堆栈宽度)不能超多最大值——包含了size_t类型的变量
pvParameters指针用于作为一个参数传向创建的任务
uxPriority任务运行时的优先级
pvCreatedTask用于传递一个处理——引用创建的任务
returnpdPASS 是如果任务成功创建并且添加到就绪列中,另外错误代码在projdefs. H文件定义

二. 任务删除 vTaskDelete

从RTOS实时内核管理中移除任务。要删除的任务将从就绪,封锁,挂起,事件列表中移除。

void vTaskDelete( xTaskHandle pxTask );
parameterdescription
pxTask处理要删除的任务。传递NULL将引起调用任务删除

三. 任务延时 vTaskDelay

使用此函数对任务延时,执行延时函数就会进行任务切换,并且此任务进入阻塞态,直到延时完成,任务重新进入就绪态

void vTaskDelay( portTickType xTicksToDelay );
parameterdescription
xTicksToDelay时间数量,调用任务应该锁住的时间片周期

四. 代码示例

创建一个任务打印 “Hello world!” 后删除任务本身

#include <stdio.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"

void myTask(void *pvParam)
{
    printf("Hello world!\n");

    vTaskDelay(1000);

    vTaskDelete(NULL);
}



void app_main(void)
{
    xTaskCreate(myTask,"myTask1",1024,NULL,1,NULL);

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eiker_3169

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值