FreeRTOS入门概述

FreeRTOS介绍

特性

  • FreeRTOS 的内核支持抢占式、合作式和时间片调度
  • 由用户给每个任务分配一个任务优先级,任务调度器就可以根据此优先级来决定下一刻应该运行哪个任务
  • 提供了一个用于低功耗的 Tickless 模式
  • 系统的组件在创建时可以选择动态或静态的RAM,比如任务、消息队列、信号量、软件定时器等

任务状态

FreeRTOS 中的任务状态有:运行态、就绪态、阻塞态、挂起态。一个任务只能处于其中的一个状态

任务优先级

FreeRTOS 的优先级:0 ~ (configMAX_PRIORITIES-1)
configMAX_PRIORITIES 在文件 FreeRTOSConfig.h 中有定义。

FreeRTOS函数

内核控制函数

taskYIELD()任务切换
taskENTER_CRITICAL()             进入临界区,用于任务中
taskEXIT_CRITICAL()              退出临界区,用于任务中
taskENTER_CRITICAL_FROM_ISR()    进入临界区,用于中断服务函数
taskEXIT_CRITICAL_FROM_ISR()     退出临界区,用于中断服务函数
taskDISABLE_INTERRUPTS()         关闭中断
taskENABLE_INTERRUPTS()          打开中断
vTaskStartScheduler()            开启任务调度器
vTaskEndScheduler()              关闭任务调度器
vTaskSuspendAll()                挂起任务调度器
vTaskResumeAll()                 恢复任务调度器
vTaskStepTick()                  设置系统节拍数
uxTaskPriorityGet()             查询某任务的优先级
vTaskPrioritySet()              改变某个任务的优先级
uxTaskGetSystemState()          获取系统中某个任务的状态
vTaskGetInfo()                  获取某个任务信息
xTaskGetApplicationTaskTag()    获取某个任务的标签 (tag) 值
xTaskGetCurrentTaskHandle()     获取当前任务的句柄
xTaskIdeTaskHandle()            获取空闲任务的句柄
eTaskGetState()                 获取某个任务的状态,此状态是 eTaskState 型
pcTaskGetName()                 获取某个任务的任务名字
xTaskGetTickCount()             获取系统时间计数器值
xTaskGetTickCountFromISR()      获取中断服务函数获取系统时间计数值
xTaskGetSchedulerState()        获取任务调度器的状态,开启或未开启
uxTaskNumberOfTasks()           获取当前系统中存在的任务数量
vTaskList()                     以一种表格的形式输出当前系统中所有任务的详细信息
xTaskGetRenTimeStates()         获取每个任务的运行时间
xTaskSetApplicationTaskTag()    设置任务标签值(Tag)
SetThreadLocalStoragePointer()  设置线程本地存储指针
GetThreadLocalStoragePointer()  获取线程本地存储指针
posted @ 2022-08-09 18:33  伯宁君  阅读(747)  评论(0编辑  收藏  举报