1、前言
我学习FreeRTOS已经有一段时间了,学习周期也比较长,在这里讲一讲我的理解和学习方法。
环境配置
STM32CubeMX 5.6.0
Keil MDK 5.33
NUCLEO STM32F411RETx
2、FreeRTOS简介
在学习一个新东西前一定要把最基础的原理搞懂,然后在去学着如何取运用,所以首先让我们了解什么是FreeRTOS,以及FreeRTOS的框架和运用。
FreeRTOS是一种实时操作系统,实时就是展现了此系统处理具有及时性,这一点在学习FreeRTOS是也是展现的淋漓尽致,后面就会了解到,优先级就是为了及时执行一些操作而设定的。
那么实时操作系统到底长什么样呢?我们去其官网看看,入口:FreeRTOS官网。我们将FreeRTOS下载下来,如下图,点击Download FreeRTOS按钮
会跳转到下面的界面
继续点击Downlaod
便可下载最新版本的FreeRTOS了,我们点击Download后的页面可能加载不出来,不过下载可以正常进行,速度较慢,如下图所示
当我们下载好并解压之后,我们可以看到FreeRTOS文件的内部结构如图所示
其中我们最常用到的就是第一个文件夹,即FreeRTOS文件夹,其余两个文件夹具体什么作用就不多说了,可以自行找一些视频文章来看,打开第一个文件夹后可以看到下图中所示
打开Demo文件夹后可以看到FreeRTOS支持的平台和各种开发板类型,种类非常多,如下图
大家可以根据自己的情况来看是否可以使用FreeRTOS。
在FreeRTOS文件夹中的Source文件夹中有一个portable文件夹,这个文件夹中展示了可以使用那些IDE作为开发工具,种类非常之多,如下图
就拿我使用的Keil来说,在Keil文件夹中应当存在用于Keil的源文件,但是实际上这个文件夹中只有一个.txt文档,文档命名的意思为让我们看RVDS文件夹
打开RVDS文件夹之后发现有适用于各种型号的ARM芯片类型,文件夹中便是使用与Keil的头文件与源文件,如下图。
说了这些也都知识介绍了一点FreeRTOS表面的东西,而且如果是使用STM32CubeMX生成工程的话,这些知识作为了解即可,不必掌握或者深究。接下来将会讲述怎样学习HAL库中FreeRTOS的使用。
3、HAL库中使用FreeRTOS
3.1、学习FreeRTOS并原理
如何学习FreeRTOS呢,网络上又很多文章视频可以学习,不过用于HAL库学习的资料并不是很多,我讲讲我学习的心得。
首先官网是一个很好的学习网站,上面又很所关于FreeRTOS的学习资料,其中最重要的两个是《161204_Mastering_the_FreeRTOS_Real_Time_Kernel-A_Hands-On_Tutorial_Guide》和《FreeRTOS_Reference_Manual_V10.0.0》,这两个文档在官网上可以免费下载,如下图
在RESOURES的Books and Manual中可以找到,第一个文档介绍了FreeRTOS的原理,并且给出了一些简单的例程,可以供读者检验;第二个文档介绍了FreeRTOS中所有的API函数,从这个文档中你可以学习到关于FreeRTOS自己定义的一些函数该如何使用。不过这两个文档为全英文的,有一定的门槛。网上有一些中文翻译的文档,通俗易懂,不过不全面,而且文档年代较为久远,不过很具有学习价值。我个人建议英语不好的可以先通过中文文档学习,再有了对FreeRTOS有了一定的理解之后,再去阅读英文文档会有很大的帮助。中文文档包括以上两个官方文件我都打包好了,大家可以免费下载,链接为: 文档资料。
以上三个文档绝对可以使你理解并会使用FreeRTOS,而且这条学习路径我认为是非常高效的,《FreeRTOS_Reference_Manual_V10.0.0》文档介绍的是FreeRTOS的API函数,这个文档只有在你用到哪个函数的时候再去看,不需要通读,这样既记不住还浪费时间,另外两个文档建议大家通读。