FreeRTOS API-从官网整理

1.任务创建


1.1.xTaskCreate


BaseType_t xTaskCreate( TaskFunction_t pvTaskCode,

const char * const pcName,

configSTACK_DEPTH_TYPE usStackDepth,

void *pvParameters,

UBaseType_t uxPriority,

TaskHandle_t *pxCreatedTask );

configSUPPORT_DYNAMIC_ALLOCATION 被设置为 1

参数和返回值:

参数

说明

pxTaskCode

指向任务入口函数的指针(即 实现任务的函数名称,请参阅如下示例)。任务通常 以 无限循环的形式实现;实现任务的函数决不能试图返回 或退出。 但是,任务可以 自我删除。

pcName

任务的描述性名称。主要是为了方便 调试,但也可用于 获取任务句柄。任务名称的最大长度由 中的 FreeRTOSConfig.h的configMAX_TASK_NAME_LEN 定义。

usStackDepth

要分配用于 任务堆栈的 字数(不是字节)。例如,如果堆栈的宽度为 16 位,usStackDepth 为 100,则将分配 200 字节用作该任务的堆栈。 再举一例,如果堆栈的宽度为 32 位,usStackDepth 为 400,则将分配 1600 字节用作该任务的堆栈。堆栈深度与堆栈宽度的乘积不得超过 size_t 类型变量所能包含的最大值。

pvParameters

作为参数传递给创建的任务的一个值。如果 pvParameters 设置为变量的地址, 则在执行创建的任务时该变量必须仍然存在——因此 传递堆栈变量的地址是无效的

uxPriority

创建任务执行的优先级 。包含 MPU 支持的系统可在特权(系统)模式下选择性地创建任务, 方法是在 uxPriority 中设置 portPRIVILEGE_BIT 位。 例如,要创建一个优先级为 2 的特权任务,可将 uxPriority 设置为 ( 2 portPRIVILEGE_BIT)。断言优先级低于 configMAX_priority。 如果未定义 configASSERT,则优先级会被静默限制为 ( configMAX_priority - 1)。

pxCreatedTask

用于将句柄传递至由 xTaskCreate() 函数创建的任务 。 pxCreatedTask 是可选的,可设置为 NULL。

返回值

pdPASS

成功

errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY

失败

1.2.xTaskCreateStatic


TaskHandle_t xTaskCreateStatic( TaskFunction_t pxTaskCode,

const char * const pcName,

const uint32_t ulStackDepth,

void * const pvParameters,

UBaseType_t uxPriority,

StackType_t * const puxStackBuffer,

StaticTask_t * const pxTaskBuffer );

configSUPPORT_STATIC_ALLOCATION 设置为 1

参数和返回值:

参数

说明

pxTaskCode

指向任务入口函数的指针(即实现任务的函数名称,请参阅如下示例)。任务通常以无限循环的形式实现;实现任务的函数决不能尝试返回或退出。但是,任务可以自行删除。

pcName

任务的描述性名称。此参数主要用于方便调试,但也可用于获取任务句柄。任务名称的最大长度由 FreeRTOSConfig.h 中的 configMAX_TASK_NAME_LEN 定义

ulStackDepth

puxStackBuffer 参数用于将 StackType_t 变量数组传递给 xTaskCreateStatic()。必须将 ulStackDepth 设置为数组中的索引数。

pvParameters

传递给已创建任务的参数值。如果将 pvParameters 设置为变量的地址,则在创建的任务执行时变量必须仍然存在,因此传递堆栈变量的地址无效。

uxPriority

所创建任务执行的优先级。包含 MPU支持的系统可选择通过在 uxPriority 中设置位 portPRIVILEGE_BIT,以特权(系统)模式创建任务。例如,要创建优先级为 2 的特权任务,请将 uxPriority 设置为 (2 |portPRIVILEGE_BIT)。断言优先级低于 configMAX_priority。如果未定义 configASSERT,则优先级会被静默限制为 (configMAX_PRIORITIES - 1)。

puxStackBuffer

必须指向至少具有 ulStackDepth 索引的 StackType_t 数组(请参阅上面的 ulStackDepth 参数),该数组用作任务的堆栈,因此必须是永久性的(而不是在函数的堆栈上声明)。

pxTaskBuffer

必须指向 StaticTask_t 类型的变量。该变量用于保存新任务的数据结构体 (TCB) ,因此必须是持久的(而不是在函数的堆栈中声明)。

返回值

任务句柄

成功

NULL

失败

1.3.xTaskCreateRestrictedStatic


BaseType_t xTaskCreateRestrictedStatic( TaskParameters_t *pxTaskDefinition,

TaskHandle_t *pxCreatedTask );

configSUPPORT_STATIC_ALLOCATION 必须 在 FreeRTOSConfig.h 中设置为 1

参数返回值:

参数

返回值

pxTaskDefinition

pxCreatedTask

用于传回可以引用所创建任务的句柄。

返回值

pdPASS

成功

其他

失败

1.4.vTaskDelete


void vTaskDelete( TaskHandle_t xTask );

参数和返回值:

参数

说明

xTask

待删除的任务的句柄。传递 NULL 将导致调用任务被删除。

2.任务控制


2.1.vTaskDelay


void vTaskDelay( const TickType_t xTicksToDelay );

参数和返回值:

参数

说明

xTicksToDelay

调用任务应阻塞的 tick 周期数。

2.2.vTaskDelayUntil


void vTaskDelayUntil( TickType_t *pxPreviousWakeTime,

const TickType_t xTimeIncrement );

参数和返回值:

参数

说明

pxPreviousWakeTime

指向一个变量的指针,该变量 任务上次被取消阻止。 该变量在第一次使用前 必须用当前时间进行初始化(见下方示例)。 在这之后,该变量 会在 vTaskDelayUntil() 中自动更新。

xTimeIncrement

周期时间段。 该任务将在 (*pxPreviousWakeTime + xTimeIncrement)时间解除阻塞。 配合相同的 xTimeIncrement 参数值 调用 vTaskDelayUntil 将导致任务 以固定的间隔期执行。

2.3.xTaskDelayUntil


BaseType_t xTaskDelayUntil( TickType_t *pxPreviousWakeTime,

const TickType_t xTimeIncrement );

参数和返回值:

参数

说明

pxPreviousWakeTime

指向一个变量的指针,该变量 用于保存任务最后一次解除阻塞的时间。 该变量在第一次使用前 必须用当前时间进行初始化(见下方示例)。 在这之后,该变量 会在 xTaskDelayUntil() 中自动更新。

xTimeIncrement

周期时间段。 该任务将在 (*pxPreviousWakeTime + xTimeIncrement)时间解除阻塞。 以相同的 xTimeIncrement 参数值调用 xTaskDelayUntil 将导致任务以固定的间隔期执行。

返回值

一个可用于检查任务是否实际延迟的值

pdTRUE

任务延迟

pdFALSE

如果下一个预计唤醒时间已过,则任务将不会延迟。

2.4.uxTaskPriorityGet


UBaseType_t uxTaskPriorityGet( TaskHandle_t xTask );

参数和返回值:

参数

说明

xTask

待查询的任务句柄。传递 NULL 句柄会导致返回调用任务的优先级。

返回值

XTask 的优先级

2.5.vTaskPrioritySet


void vTaskPrioritySet( TaskHandle_t xTask,

UBaseType_t uxNewPriority );

参数和返回值:

参数

说明

xTask

正在设置优先级的任务的句柄。空句柄会设置调用任务的优先级。

uxNewPriority

将要设置任务的优先级。断言优先级低于 configMAX_priority。如果未定义 configASSERT,则优先级会被静默限制为 (configMAX_PRIORITIES - 1)。

2.6.vTaskSuspend


void vTaskSuspend( TaskHandle_t xTaskToSuspend );

参数和返回值:

参数

说明

xTaskToSuspend

被挂起的任务句柄。传递空句柄将导致调用任务被暂停。

2.7.vTaskResume


void vTaskResume( TaskHandle_t xTaskToResume );

参数和返回值:

参数

说明

xTaskToResume

要恢复的任务句柄。

2.8.xTaskResumeFromISR


BaseType_t xTaskResumeFromISR( TaskHandle_t xTaskToResume );

参数和返回值:

参数

说明

xTaskToResume

要恢复的任务句柄。

返回值

ISR 使用此信息来确定 ISR 之后是否需要上下文切换。

pdTRUE

恢复任务导致上下文切换

pdFALSE

不切换任务

2.9.xTaskAbortDelay


BaseType_t xTaskAbortDelay( TaskHandle_t xTask );

参数和返回值:

参数

说明

xTask

将被强制退出阻塞状态的任务的句柄 。要获得任务句柄,请使用 xTaskCreate() 创建任务并使用 pxCreatedTask 参数,或使用返回值创建任务 xTaskCreateStatic() 并存储该值,或在 xTaskGetHandle() 时使用任务的名字。

返回值

pdFAIL

xTask 引用的任务不在“阻塞”状态

pdPASS

xTask 引用的任务在“阻塞”状态

3.任务使用程序


3.1.


参数和返回值:

参数

说明

3.2.


参数和返回值:

参数

说明

3.3.


参数和返回值:

参数

说明

3.4.


参数和返回值:

参数

说明

3.5.


参数和返回值:

参数

说明

3.6.


参数和返回值:

参数

说明

3.7.


参数和返回值:

参数

说明

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值