1.什么是空闲任务:空闲任务是freertos自动创建的一个系统任务,它始终处于最低优先级,当系统没有其他用户任务需要运行时,空闲任务就会自动执行
2.什么是上下文切换:上下文切换是freertos保存当前任务运行状态,并恢复另一个任务运行状态的过程,本质上是cpu寄存器的保存和恢复
3.什么是任务调度:任务调度是freertos内核决定在任意时刻应该运行哪个就绪任务的决策过程,主要基于优先级调度算法
4.什么是rtos滴答时钟:rtos滴答时钟是freertos的时间基准,就像一个系统的心跳,通过定期的硬件定时器中断来驱动整个操作系统的运行和任务调度
5.什么是tcb控制块:tcb是freertos中用于描述和管理任务所有信息的结构体,可以理解为每个任务的“身份证”,包含了任务的完整状态信息

API函数

描述

xTaskCreate()

动态方式创建任务

xTaskCreateStatic()

静态方式创建任务

vTaskDelete()

删除任务

函数

描述

uxTaskPriorityGet()

获取任务优先级

vTaskPrioritySet()

设置任务优先级

uxTaskGetNumberOfTasks()

获取系统中任务的数量

uxTaskGetSystemState()

获取所有任务状态信息

vTaskGetInfo()

获取指定单个的任务信息

xTaskGetCurrentTaskHandle()

获取当前任务的任务句柄

xTaskGetHandle()

根据任务名获取该任务的任务句柄

uxTaskGetStackHighWaterMark()

获取任务的任务栈历史剩余最小值

eTaskGetState()

获取任务状态

vTaskList()

以“表格”形式获取所有任务的信息

vTaskGetRunTimeStats()

获取任务的运行时间

函数

描述

xQueueCreate()

动态方式创建队列

xQueueCreateStatic()

静态方式创建队列

函数

描述

xQueueSend()

往队列的尾部写入消息

xQueueSendToBack()

xQueueSend()

xQueueSendToFront()

往队列的头部写入消息

xQueueOverwrite()

覆写队列消息(只用于队列长度为 1 的情况)

xQueueSendFromISR()

在中断中往队列的尾部写入消息

xQueueSendToBackFromISR()

xQueueSendFromISR()

xQueueSendToFrontFromISR()

在中断中往队列的头部写入消息

xQueueOverwriteFromISR()

在中断中覆写队列消息(只用于队列长度为 1 的情况)

函数

描述

xQueueReceive()

从队列头部读取消息,并删除消息

xQueuePeek()

从队列头部读取消息

xQueueReceiveFromISR()

在中断中从队列头部读取消息,并删除消息

xQueuePeekFromISR()

在中断中从队列头部读取消息

函数

描述

xSemaphoreCreateBinary()

使用动态方式创建二值信号量

xSemaphoreCreateBinaryStatic()

使用静态方式创建二值信号量

xSemaphoreGive()

释放信号量

xSemaphoreGiveFromISR()

在中断中释放信号量

xSemaphoreTake()

获取信号量

xSemaphoreTakeFromISR()

在中断中获取信号量

函数

描述

xSemaphoreCreateCounting()

使用动态方法创建计数型信号量。

xSemaphoreCreateCountingStatic()

使用静态方法创建计数型信号量

uxSemaphoreGetCount()

获取信号量的计数值

函数

描述

xSemaphoreCreateMutex()

使用动态方法创建互斥信号量。

xSemaphoreCreateMutexStatic()

使用静态方法创建互斥信号量。

函数

描述

xQueueCreateSet()

创建队列集

xQueueAddToSet()

队列添加到队列集中

xQueueRemoveFromSet()

从队列集中移除队列

xQueueSelectFromSet()

获取队列集中有有效消息的队列

xQueueSelectFromSetFromISR()

在中断中获取队列集中有有效消息的队列

函数

描述

xEventGroupCreate()

使用动态方式创建事件标志组

xEventGroupCreateStatic()

使用静态方式创建事件标志组

xEventGroupClearBits()

清零事件标志位

xEventGroupClearBitsFromISR()

在中断中清零事件标志位

xEventGroupSetBits()

设置事件标志位

xEventGroupSetBitsFromISR()

在中断中设置事件标志位

xEventGroupWaitBits()

等待事件标志位

xEventGroupSync()

设置事件标志位,并等待事件标志位

函数

描述

xTaskNotify()

发送通知,带有通知值

xTaskNotifyAndQuery()

发送通知,带有通知值并且保留接收任务的原通知值

xTaskNotifyGive()

发送通知,不带通知值

xTaskNotifyFromISR()

在中断中发送任务通知

xTaskNotifyAndQueryFromISR()

vTaskNotifyGiveFromISR()

ulTaskNotifyTake()

获取任务通知,可选退出函数时对通知值清零或减1

xTaskNotifyWait()

获取任务通知,可获取通知值和清除通知值的指定位

函数

描述

xTimerCreate()

动态方式创建软件定时器

xTimerCreateStatic()

静态方式创建软件定时器

xTimerStart()

开启软件定时器定时

xTimerStartFromISR()

在中断中开启软件定时器定时

xTimerStop()

停止软件定时器定时

xTimerStopFromISR()

在中断中停止软件定时器定时

xTimerReset()

复位软件定时器定时

xTimerResetFromISR()

在中断中复位软件定时器定时

xTimerChangePeriod()

更改软件定时器的定时超时时间

xTimerChangePeriodFromISR()

在中断中更改定时超时时间

Tickless模式相关配置项(掌握)

配置项

说明

configUSE_TICKLESS_IDLE

使能低功耗 Tickless 模式,默认0

configEXPECTED_IDLE_TIME_BEFORE_SLEEP

系统进入相应低功耗模式的最短时长,默认2

configPRE_SLEEP_PROCESSING(x)

在系统进入低功耗模式前执行的事务,比如关闭外设时钟

configPOST_SLEEP_PROCESSING(x)

系统退出低功耗模式后执行的事务,比如开启之前关闭的外设时钟

函数

描述

void * pvPortMalloc( size_t  xWantedSize );

申请内存

void  vPortFree( void * pv );

释放内存

size_t  xPortGetFreeHeapSize( void );

获取当前空闲内存的大小

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐