在上一讲
奔腾的心:FreeRTOS 从入门到精通1 --实时操作系统的前世今生zhuanlan.zhihu.com我介绍了下实时操作系统的一些概念和在嵌入式系统中引入实时系统的必要性。这一讲我将介绍下在STM32芯片下进行软件的开发和移植FreeRTOS的一些设置事项。
认识STM32CubeIDE
俗话说得好,工欲善其事,必先利其器。STM32CubeIDE是ST公司最新推出的一款免费的开发软件,基于GCC + Eclipse,并整合了STM32CubeMX(一个通过配置就能生成STM32代码的程序)。STM32CubeIDE的下载地址在下面,需要登记下自己的姓名和邮箱地址,你的邮箱便会收到程序的下载链接。
STM32CubeIDE - STMicroelectronicswww.st.com程序界面如上图所示,用过eclipse的童鞋们是不是有种似曾相识的感觉?
一分钟移植FreeRTOS
STM32CubeIDE已经把FreeRTOS深度整合到了自家的系统中去了,所以移植FreeRTOS变得非常方便。在上图中的项目文件里有个templete.ioc文件,ioc文件是配置stm32参数的文件,FreeRTOS的设置就在那个文件里。如果你是新建项目的话,程序首先会自动跳到配置stm32芯片的画面中去并把最后的结果保存成ioc文件。双击templete.ioc文件便会弹出如下的画面
在上图所示界面中可以对芯片进行配置。在这里我用的开发板是stm32f4-discovery,芯片型号是stm32f429zitx。其中有个Middleware(中间件)选项卡,点击这个选项卡会得到如下的画面
在interface中选择CMSIS_V1后便移植好了。你此时可以看到FreeRTOS前面有个绿色的勾,这个代表FreeRTOS已经设置好了。当设置好一切后点击保存系统便会自动生成代码。STM32CubeIDE真的帮助开发者节省了很多时间,移植从此就成了点个鼠标的事。
FreeRTOS的架构
如上图所示,在项目的结构中,Middleware(中间件)包含有FreeRTOS文件夹,里面便包含有FreeRTOS的所有源代码。其中重要的几个文件如下:
- tasks.c: 任务相关的代码
- list.c: 一个双向链表的代码
- queue.c: 队列用于任务间通讯的代码
- croutine.c: 多任务调度的代码
- event_groups.c:事件标志组的代码
- time.c : 内部实现的一个软件定时器的代码
通常来说,在一个FreeRTOS的项目中,tasks.c和list.c与queue.c是必须要的,其它的文件是可选的。在下一篇文章我将写一个HelloWorld程序。
奔腾的心:FreeRTOS 从入门到精通3--第一个HelloWorld程序zhuanlan.zhihu.com