FreeRTOS
FreeRTOS在嵌入式的开发中十分的重要,本人之前对于同一时间进行多种任务的做法普遍都是设置定时器中断程序。这样做或许能解决燃眉之急,但是在大型项目中便有一些捉襟见肘,尤其是使用这种方式对于MCU的任务调度十分的不明确,显得十分的乱。故对于FreeRTOS这种MCU操作系统的应用便显得尤为重要。 官方文档:https://freertos.org/zh-cn-cmn-s/Documentation/00-Overview
FreeRTOS核心机制
优先级调度
高优先级的准备就绪后,直接抢占CPU。
FCFS(先来先服务)
同优先级,按照准备就绪的先后顺序执行。
时间片轮询
有相同优先级的两个任务,其中一个一直没被抢占,则运行时间达到一个时间片则主动让出CPU。
ps:低优先级的任务对时间的控制较为不精确。高优先级的任务可以做到时间精确控制。
FreeRTOS延时函数
vTaskDelay(ms);
当前任务暂时暂停xx ms,程序进入阻塞态,其中暂时时间内可以执行其他任务。
HAL_Delay(ms);
CPU暂时挂起xx ms,啥也不执行。类似裸机运行时的delay。