首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

NucleoF429工程建立与FreeRTOS移植-1

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官网:
可自行下载。

第一步:建立工程模板
具体的建立过程和文件夹结构如下:
  • 新建文件夹NucleoF429_FreeRTOS
  • NucleoF429_FreeRTOS 下新建三个文件夹ProjectSysLibUser
  • SysLib新建四个文件夹:StartupCMSISincsrc
接下来在各文件中添加对应的文件
  • Startup:复制startup_stm32f429_439xx.s文件到Startup中,该文件位于...\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm中。
  • CMSIS:复制stm32f4xx.hsystem_stm32f4xx.hsystem_stm32f4xx.cCMSIS中。上述文件位于...\Libraries\CMSIS\Device\ST\STM32F4xx\Include
...\Project\STM32F4xx_StdPeriph_Templates中。

  • Inc: 复制...\Libraries\STM32F4xx_StdPeriph_Driver\inc中的.h文件到Inc文件夹中,也可以按实际需要的外设选择相应的文件。
  • Src:复制...\Libraries\STM32F4xx_StdPeriph_Driver\src中的.c文件到src文件夹中,与inc文件对应,按需选择。
  • User:复制stm32f4xx_conf.hstm32f4xx_it.cstm32f4xx_it.h三个文件到User中,该文件位于...\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工程模板。
返回列表