裸机:不带操作系统,一个任务结束在执行下一个
RTOS:实时操作系统
- 任务切换执行,实时性
- 延时函数,任务调度
- 抢占式,高优先级抢占低优先级任务
- 任务堆栈:每个任务都有自己的栈空间
- 中断可以打断任意任务
以上实现均是软件层的实现,中断是内核层
FreeRTOS是一种免费的嵌入式实时操作系统
学习资料:官网https://www.freertos.org/
一 任务调度器
任务调度器:使用相关任务调度算法调度当前需要执行的任务
调度方式有三种:
- 抢占式调度:优先级不同的任务,优先级高的任务可以抢占优先级低的任务。(数值越大,优先级越高)
- 时间片调度:优先级相同的任务,在每个时间节拍切换任务。轮流使用相同CPU时间(时间片),一个时间片 = SysTick中断周期
- 协程式调度:官方不再更新。
二 任务状态
总共4种状态
- 运行态:正在运行的任务,在STM32中,同一时间仅有一个任务处于运行态
- 就绪态:即将执行的任务
- 阻塞态:任务延时或者等待外部时间发生
- 挂起态:暂停,调用相关函数,vTaskSuspend():挂起,vTaskResume():解挂
除了运行态,其他三种都有任务状态列表,类似链表
- 就序列表
- 阻塞列表
- 挂起列表