xsemaphoretake返回_freeRTOS学习笔记

林大侠

2018.08.09

第一节 Task管理

(一)Task管理常用API

创建Task API

static BaseType_t xTaskCreate(TaskFunction_t pvTaskCode,

const char *constpcName,

const uint32_t usStackDepth,

void *constpvParameters,

UBaseType_t uxPriority,

TaskHandle_t *constpvCreatedTask)

功能

创建一个新任务,并将其添加到准备运行的任务列表中

参数描述

pvTaskCode: 指向任务实现函数的指针。

constpcName :任务名称,只是单纯的用于描述任务方便记忆,不会被freeRTOS使用。

usStackDepth:栈深度,这个值指定的是栈空间可以保存多少个字(word),而不是多少个字节(byte)。

比如说,如果是32位宽的栈 空间,传 入的usStackDepth值为100,则将会分配400 字节的栈空间(100 * 4bytes)。栈深度 乘以栈宽度的结果千万不能超过一个size_t 类型变量所能表达的最大值。

constpvParameters: 任务的传参。可以为NULL。

uxPriority: 任务优先级。最小优先级为0,最高优先级没有上限,但一般用户会自定义一个上线。

根据使用情况,数值尽量 设置小一点。

constpvCreatedTask:任务句柄。可以使用该句柄对任务进行引用,比如删除任务和改变任务优先级等。可以为NULL。

返回值

pdPASS : 任务创建成功。

其它值 :任务创建失败,可以根据返回的错误值在 projdefs.h文件中找到错误原因。

删除Task API

void vTaskDelete(TaskHandle_t xTaskToDelete)

功能

从RTOS实时内核管理中删除任务。删除的任务将从所有就绪、阻塞、暂停和事件列表中删除

参数描述

xTaskToDelete:创建任务时传出的句柄。如果传入参数为NULl,将会删除正在调用的任务。

返回值

NULL

开始调度Task API

void vTaskStartScheduler()

功能

开始执行任务调度

参数描述

NULL

返回值

NULL

Task延时阻塞API

void vTaskDelay(const TickType_t xTicksToDelay)

功能

从调用 vTaskDelay()开始阻塞任务,直到指定的滴答计数次数。

参数描述

xTicksToDelay:阻塞时间(ticks 时钟数)。一般使用参数 ms/ portTICK_RATE_MS来阻塞以毫秒为单位的时间。

ms为需要阻塞单位为毫秒的数值。

返回值

NULL

将Task阻塞到指定时间API

void vTaskDelayUntil(TickType_t *constpxPreviousWakeTime, const TickType_t xTimeIncrement)

功能

将任务阻塞到指定的时间。利用此API可以实现任务周期性调用。

参数描述

constpxPreviousWakeTime:指向一个变量的指针,该变量保存了任务最后一次解除阻塞的时间。

变量在首次使用之前必须用当前时间初始化。在此之后,变量将在vTaskDelayUntil中自动更新。

xTimeIncrement:周期时间。任务将在*pxPreviousWakeTime + xTimeIncrement时被解除阻塞。

使用相同的xTimeIncrement参数值调用vTaskDelayUntil将导致任务以固定的接口周期执行。

返回值

NULL

获取Task优先级API

UBaseType_t uxTaskPriorityGet(TaskHandle_t xTask)

功能

获取已经创建的任务的优先级

参数描述

xTask: 创建任务时传出的句柄。当传入参数为NULL,则返回当前运行任务的优先级。

返回值

需要获取任务的优先级。

设置Task优先级API

void vTaskPrioritySet(TaskHandle_t xTask, UBaseType_t uxNewPriority)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值