你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

FREERTOS移植笔记 精华  

[复制链接]
netlhx 发布时间:2015-7-2 21:37
本帖最后由 netlhx 于 2015-7-3 07:37 编辑

FREERTOS很不错,短小精悍。

移植之前,先来扯下蛋:STM32CUBEMX不是已经支持直接使用FREERTOS了么,随便圈圈叉叉几下,就能使用,为何还要探讨移植问题呢?

这里有几个原因:

首先,自己移植一遍会对FREERTOS原理理解更深刻; 其次呢,如果碰到其它的MCU呢,没有了STM32CUBEMX的支持,怎么办?还得自己移植!再者,STM自己移植的FREERTOS,还是个阉货,并不完整,很多特性不支持; 还有……

基于上述原因,还是有必要研究一下移植问题的。

要移植,首先得从网上下载源码,地址在这里:http://www.freertos.org/a00104.html?1
最新版的是V8.2.1,下载后解压,得到如下目录结构

QQ截图20150702215155.png

其中DEMO是一些演示程序,对常见的MCU都有支持,你也可以把它们看作是模板,在此基础上对自己的MCU做移植。

SOURCE文件夹就是FREERTOS的核心代码了。

下面一张图显示了要移植的相关文件

QQ截图20150702215509.png

未完待续……

本文只介绍移植方法,并不打算详细挖掘FREERTOS原理,所以上面的这些文件,你暂时只要知道一点:它们的位置,免得需要去找其中一个文件的时候,却发现不知道文件在哪里!

源代码下载下来了,目录结构也粗粗看了一遍,现在让我们来建立一个新的工程,然后将FREERTOS添加到已有的工程,成为工程的一部分。创建工程的步骤就不赘述了。

本次试验使用的是硬件是F4 DISC,建立新工程文件是使用STM32CUBEMX来完成,下面给出两个图,可以看下大概配置,因为后面的移植需要使用到其中的一些参数。编译环境用的是MDK,如果是IAR的话会有所不同。新建的工程文件名为rtosdemo。

QQ截图20150703062946.png

QQ截图20150703063008.png

注意SYSCLK的频率配置为168MHZ,后面会用到,至于其中的4个GPIO口则用来点亮板上的4个LED。

下面正式开始移植。

在刚刚新建立的工程文件下面建立一个新的目录FreeRTOS,将下载下来的FREERTOS源代码目录下的SOURCE文件夹里的所有内容统统复制到该目录下,如图

QQ截图20150703064230.png

下面将需要的文件添加到工程之中,见下图

QQ截图20150703064555.png

如果有疑问,请参考上面移植相关文件那张图片。

在这里再啰嗦一句,不同的MCU,配置不尽相同,FREERTOS被设计为通用的RTOS,所以我们必须在硬件层做适当的适配,以适应不同的MCU。

下面在下载的源文件目录下找到这个文件,将这个文件复制到工程的Inc目录下。

QQ截图20150703065130.png

QQ截图20150703065521.png

注意选对路径,这是专门为STM32及MDK配置的RTOS配置文件,这个文件里面包含硬件相关的配置信息,如SYSCLK的配置等,因为FREERTOS需要使用到SYSTICK来作为心跳时钟。

下面打开这个文件来看看

QQ截图20150703065855.png

注意168000000处,这里就是前面配置好的硬件SYSCLK,如果这个参数不对,会导致混乱!

好了,现在可以编译一下,看一下,有错误?肯定,你还没有添加FREERTOS相关的包含路径配置,所以趁现在赶紧修改一下

如果没有错误,接下来可以添加两个任务试一试了,添加的任务如下:

QQ截图20150703071928.png

QQ截图20150703071950.png

QQ截图20150703072019.png


再编译,排除错误后,下载到开发板,期待LED开始闪烁吧!

不过让人郁闷的是,灯并不会闪,还有个小问题要解决。

打开启动配置文件startup_stm32f407xx.s,按下面的修改

QQ截图20150703072416.png


为什么要这样修改?因为FREERTOS接管了SYSTICK及SVC等操作,所以不修改FREERTOS就不会工作。

再下载到开发板,红灯以1S的频率闪烁,蓝灯以4S的频率闪烁!

呼呼,大功告成!

完整的工程文件: rtosdemo.zip (5.94 MB, 下载次数: 178)
收藏 19 评论46 发布时间:2015-7-2 21:37

举报

46个回答
netlhx 回答时间:2015-7-2 21:37:54
一楼是自己的
netlhx 回答时间:2015-7-2 21:38:02
二楼是自己的
netlhx 回答时间:2015-7-2 21:38:11
三楼还是自己的
风子 回答时间:2015-7-2 23:23:17
坐等楼主更新
moyanming2013 回答时间:2015-7-3 00:02:58
等更新看看
党国特派员 回答时间:2015-7-3 08:01:15
支持一下。 null.png null1.png null2.png null3.png null4.png null5.png null6.png null7.png null8.png null9.png
戏如人生 回答时间:2015-7-3 08:15:20
写的不错,CUBE是个很好的工具
沐紫 回答时间:2015-7-3 08:42:40
好贴,
759611 回答时间:2015-7-3 08:53:47
好贴,不过这freertos还要重新学习库函数么?创建任务貌似还比较复杂呀
12345下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版