(1)为什么要学 FreeRTOS ?
更有钱途!!
只会祼机开发的单片机工程师,薪资注定不会高于会
FreeRTOS
的工程师;
有了
FreeRTOS
基础,对于将来学习
Linux
操作系统会更加有帮助;
(2)什么是FreeRTOS ?
Free
即免费的,
RTOS
的全称是
Real time operating system
,中文就是实时操作系统。
注意:
RTOS
不是指某一个确定的系统,而是指一类操作系统。比如:
uc/OS
,
FreeRTOS
,
RTX
, RT-Thread等这些都是
RTOS
类操作系统。
FreeRTOS 是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管 理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满 足较小系统的需要。 由于RTOS 需占用一定的系统资源 ( 尤其是 RAM 资源 ) ,只有μC/OS-II 、 embOS、 salvo 、 FreeRTOS 等少数实时操作系统能在小 RAM 单片机上运行。相对 μC/OS-II 、 embOS等商业操作系统, FreeRTOS 操作系统是完全免费的操作系统,具有源码公开、可移 植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行,其最新版本为 10.4.4版。(以上来自百度百科)
(3)祼机开发与 FreeRTOS
祼机开发:
玩游戏,结果女朋友生气,分手!
陪女朋友,无法玩游戏,抑郁症!
FreeRTOS
:
玩
1
秒游戏
--
陪
1
秒女朋友
--
玩
1
秒游戏
--
陪
1
秒女朋友
--
玩
1
秒游戏
--
陪
1
秒女朋友
....
(累死
……
)
但
CPU
是个无情的战斗机器,可以快速在两个乃至多个任务间快速切换,并且不觉得劳累,实现
二者兼顾。
FreeRTOS
实现多任务的原理
严格来说
FreeRTOS
并不是实时操作系统,因为它是
分时复用
的。
系统将时间分割成很多时间片,然后轮流执行各个任务。
每个任务都是独立运行的,互不影响,由于切换的频率很快,就感觉像是同时运行的一样
(4)使用CubeMX快速移植
快速移植流程
1.
在
SYS
选项里,将
Debug
设为
Serial Wire
,并且将
Timebase Source
设为
TIM2
(其它定
时器也行)。为何要如此配置?下文解说。
![](https://i-blog.csdnimg.cn/blog_migrate/09a076179001fbdd0785a57c729e2f15.png)
2.
将
RCC
里的
HSE
设置为
Crystal/Ceramic Resonator
。
![](https://i-blog.csdnimg.cn/blog_migrate/bfcd48c575883d90a3aa89e211964f46.png)
3.
时钟按下图配置
![](https://i-blog.csdnimg.cn/blog_migrate/bbc495986c64279960db20a68e04aa31.png)
4.
选择
FREERTOS
选项,并将
Interface
改为
CMSIS_V1
。
V1
和
V2
有啥区别?下文解释。
![](https://i-blog.csdnimg.cn/blog_migrate/a6cd2ea91255fdea417faae7fab67264.png)
5.
配置项目信息,并导出代码。
![](https://i-blog.csdnimg.cn/blog_migrate/800aad0622fe1706e27607941c69dfc0.png)
(5)一些常见问题
1. Timebase Source
为什么不能设置为
SysTick ?
裸机的时钟源默认是
SysTick
,但是开启
FreeRTOS
后,
FreeRTOS
会占用
SysTick
(用来生成
1ms 定时,用于任务调度),所以需要需要为其他总线提供另外的时钟源。
2. FreeRTOS
版本问题
V2
的内核版本更高,功能更多,在大多数情况下
V1
版本的内核完全够用。