(1)FreeRTOS是我一天过完的,由此回忆并且记录一下。个人认为,如果只是入门,利用STM32CubeMX是一个非常好的选择。学习完本系列课程之后,再去学习网上的一些其他课程也许会简单很多。
(2)本系列课程是使用的keil软件仿真平台,所以对于没有开发板的同学也可也进行学习。
(3)叠甲,再次强调,本系列课程仅仅用于入门。学习完之后建议还要再去寻找其他课程加深理解。
(4)本系列博客对应代码仓库:
(5)此篇博客主要是讲述一些概念知识,无实际代码。
(1)对于单核处理器,其实并不能真正意义上执行多个任务。它本质上是对多个任务轮流执行。
(2)这部分内容,我感觉看代码来的更实在,用人类语言表达总感觉会有歧义。代码在嵌入式裸机设计思想——时间片轮裸机开发架构+状态机+定时器调度机制的时间片轮裸机开发架构部分。
(1)在实时操作系统(RTOS)中,任务调度的方式通常可以分为两种主要类型:抢占式(Preemptive)和协作式(Cooperative)。
抢占式调度(Preemptive Scheduling):
协作式调度(Cooperative Scheduling):
(2)大多数实时操作系统通常采用抢占式调度,因为它更适用于实时系统的要求,能够更灵活地响应紧急事件,同时提供更好的系统可靠性和稳定性。抢占式调度使得高优先级任务能够及时中断低优先级任务,确保系统能够满足实时性要求。而
FreeRTOS
就是抢占式调度。
(3)然而,协作式调度在一些资源受限的环境中可能更为简单和有效,因为它不需要硬件中断的支持,并且任务之间的协作更加直接。在一些特殊的嵌入式系统中,可能会选择协作式调度来简化实现和减小系统的开销。
(1)
FreeRTOS
作为抢占式RTOS
,优先级越高的任务会被抢占执行,那么我们就需要知道如何判断一个任务的优先级。
(2)FreeRTOS
是一款很奇葩的RTOS
,因为一般来说,数字越小任务优先级越大。而FreeRTOS
恰恰相反,它是数字越大,任务优先级越大。因此,这里各位一定一定要记清楚,否则后面学习其他RTOS的时候很容易搞混。
(3)在STM32CubeMX
中如下方法看最大任务优先级,我们分配任务的优先级的时候,不能够超出最大任务优先级。
(4)在
FreeRTOSConfig.h
文件中configMAX_PRIORITIES
宏可以看最大优先级。