Board logo

标题: NucleoF429工程建立与FreeRTOS移植-1 [打印本页]

作者: look_w    时间: 2018-1-24 20:27     标题: NucleoF429工程建立与FreeRTOS移植-1

NucleoF429工程建立与移植FreeRTOS

这一个帖子只讲怎么把FreeRTOS移植到NucleoF429上并运行三个任务,至于FreeRTOS的相关知识,网上也有许多文章和书籍,这里就不讲了(实际原因是我对FreeRTOS也一知半解,希望能和诸位一起讨论学习^_^
  事实上STM32CubeMx的自带了FreeRTOS的模块,只要勾选后进行一些简单的配置,就可以生成可用的工程,所以这一个帖子除了“重新发明轮子”之外,有一点可取之处就是可以理清移植FreeRTOS需要做那些事,不使用STM32CubeMx时或者在其他MCU上移植FreeRTOS该怎么做。
移植分两步
  一、使用F4的固件库建立一个工程模板。  
  二、在新建的工程上移植FreeRTOS

在移植之前需要下载F4的固件库,我使用的固件库版本是:【STM32F4xx_DSP_StdPeriph_Lib_V1.7.1】。可以到ST的官网上下载,最新版地址:
还需要FreeRTOSSource Code,我使用的版本是FreeRTOSV8.2.3FeeRTOS官网:
可自行下载。

第一步:建立工程模板
具体的建立过程和文件夹结构如下:
接下来在各文件中添加对应的文件
...\Project\STM32F4xx_StdPeriph_Templates中。

User中建立一个main.c文件,包含stm32f4xx.h即可。
工程需要的文件已添加完成,现在开始建立Keil工程,在建立Keil工程之前,先查看你的Keil是否有STM32F429所需要的库。如图:

如果没有STM32F4的库就需要添加,第一种方式是在这个Pack Installer中添加


第二种是到Keil官网先下载F4 .Pack文件,再用Pack Installer导入。第一种方式下载速度慢且不支持断点续传,往往下载到一半就提示下载失败,所以推荐第二种方式。KeilPack文件下载地址是:http://www.keil.com/dd2/Pack 找到需要的文件下载后再用Pack Installer导入即可。
接下来建立工程:
Project-->New uVision Project 选中NucleoF429_FreeRTOS下的Project文件夹,工程命名为NucleoF429_FreeRTOS 点击保存,在弹出的Select Device窗口选中STSTM32F429ZITx型号后点击OK


这时会有另一个窗口弹出,不用理会直接OK即可。
按顺序编辑管理结构树:


四个文件中添加的文件为:
Startup:添加文件夹Startup中的.s文件,注意.s默认不会显示出来,在文件类型里选择.s格式
CMSIS:添加文件夹CMSIS中的.c文件。
SysLib:添加文件夹src中的.c文件。
User: 添加文件夹User中的.c文件。
完成后再进行头文件搜索路径设置

注意Define这一栏填写:【USE_STDPERIPH_DRIVER,STM32F429_439xx
之后再进行一些其他设置:
调试方式选择SWD模式。
到此,基本的设置和建立都已完成,可以进行编译。
但这时候会报 identifier "FSMC_Bank1" is undefined 等30个错误,这是由于STM32F4xx.h中没有定义FSMC_Bank1等,只有FMC_Bank1,不知道这是Bug还是我哪里设置不对,因为现在暂时不用FSMC,所以将stm32f4xx_fsmc.c排除,不进行编译。
具体操作为,在SysLib下找到stm32f4xx_fsmc.c,右键options for file 'stm32f4xx_fsmc.c'
去掉下图中的四个勾,再进行编译就没错了
到此为止,已经建立了一个空白的F429工程模板。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0