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() 获取线程本地存储指针