目录
FreeRTOS移植到STM32F103步骤与注意事项
(转自:https://blog.csdn.net/zhangmh2011/article/details/72801238 作者:zhang_m_h2008)
原文地址:http://www.openedv.com/thread-77593-1-1.html
前言:
由于之前听过太多人抱怨移植FreeRTOS到STM32有各种各样的问题,小灯经过一年多对FreeRTOS的研究并在公司产品中应用,多少有些心得,接下来就由小灯以最新版的FreeRTOS为例一步一步移植到STM32F103上,并提醒大家某些需要注意的事项。本文档为非正式技术文档,故排版会有些凌乱,希望大家能提供宝贵意见以供小灯参考改进。
下面先以IAR移植为例,说明移植过程中的诸多注意事项,最后再以MDK移植时不再重复说明,所以还是建议大家先花些时间看IAR的移植过程,哪怕你不使用IAR,最好也注意下那一大堆注意事项!
一、从官网下载最新版的FreeRTOS源码
下面的网址是官方最新源码的下载地址:
https://sourceforge.net/projects/freertos/files/latest/download?source=files
目前官方提供的最新版本是v9.0.0, FreeRTOS源码在解压目录下的路径为
FreeRTOS_V9.0.0rc2\FreeRTOS\Source
FreeRTOS组织为了抢用户也是拼了命的,不信你打开Demo文件夹看看,里面提供了FreeRTOS在各种单片机上已经移植好的工程,如果建工程时遇到什么问题,可以参考下这些Demo。
不过小灯现在着重于自己动手移植FreeRTOS,考虑到原子哥@正点原子的用户比较多,绝大多数习惯了使用MDK来开发STM32,因此小灯分别以IAR和MDK两种使用比较广泛的开发环境来移植FreeRTOS。说到IAR和MDK,不得不提的是小灯自从用了IAR之后就果断放弃了MDK,相信很多人有这个经历,哈哈!
在开始移植FreeRTOS之前,先介绍下FreeRTOS的源码:
FreeRTOS的源码比较少,源文件也远没有UCOS多,不过麻雀虽小五脏俱全,FreeRTOS的短小精悍也是最令小灯着迷的,虽然缺少了很多组成部分,例如GUI、网络协议栈、文件系统等,不过这些统统都不是问题,因为完全可以移植第三方的组件!
一不小心牛逼又吹大了,哈哈!回归正题,FreeRTOS的源码核心部分是tasks.c和list.c,其余的几个文件功能都是可选的,例如软件定时器、队列、协程等等,小灯就不介绍了,有兴趣的话可以到官网上看介绍。include文件夹里面的文件是操作系统相关的头文件,而portable这个文件夹有些奇葩,先看看里面有啥:
这里的文件几乎都是与平台相关的,如果你要删掉这里的文件时就必须小心了,因为不是所有文件都能删除的。
注意文件夹MemMang,里面存放的是FreeRTOS自带的内存管理方案的源文件:
关于内存管理方案的选择,小灯以后再跟大家讨论,现在只需要知道这些文件不能删就好。
接下来看看IAR文件夹的内容,里面都是跟单片机底层相关的,由于我们以STM32F103为例,因此只需要保留ARM_CM3文件夹即可,其余可选择性删除。ARM_CM3文件夹里只有几个文件,这几个文件是操作系统最最底层的部分:
接下来再看看Keil文件夹的内容,里面只有一个文件,文件提示See-also-the-RVDS-directory,意思是让我们参照RVDS目录下的文件。其实我们以MDK建工程时,就是拿RVDS目录下的文件来替代的,因此我们应该把RVDS目录下的文件拷贝到Keil目录下,跟上面IAR文件夹一样我们只拷贝ARM_CM3文件夹即可:
到这里我们可以把其他无用的文件统统删掉了,portable目录下只保留下面几个文件夹的文件即可:
现在已经把源码整理好了,接下来就开始移植工作吧!
二、IAR下移植FreeRTOS
事先说明下,小灯使用的IAR版本是
关于IAR下如何创建STM32基础工程,小灯就偷下懒不介绍了,这入门级的知识还是交给卖开发板的人来传播吧,小灯就以自己平常用的简单工程为例:
工程当中只有一个LED.c是小灯额外添加的,小灯一直停留在跑灯的水平,习惯用LED来观察现象,希望各位大神莫怪。工程源码结构如下:
其中FreeRTOS文件夹下就是FreeRTOS的源码:
本文详细介绍了如何将FreeRTOS操作系统移植到STM32F103,包括从官网下载源码、在IAR和MDK环境下进行移植的步骤,以及移植过程中的注意事项。通过实例展示了配置FreeRTOSConfig.h文件、添加头文件路径、修改中断服务函数等关键步骤,并提供了软件版本和参考资料。
最低0.47元/天 解锁文章
1770

被折叠的 条评论
为什么被折叠?



