标题:
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
的官网上下载,最新版地址:
还需要
FreeRTOS
的
Source Code
,我使用的版本是
FreeRTOSV8.2.3
,
FeeRTOS
官网:
可自行下载。
第一步:建立工程模板
具体的建立过程和文件夹结构如下:
新建文件夹
NucleoF429_FreeRTOS
。
在
NucleoF429_FreeRTOS
下新建三个文件夹
Project
和
SysLib
和
User
。
在
SysLib
新建四个文件夹:
Startup
、
CMSIS
、
inc
、
src
。
接下来在各文件中添加对应的文件
Startup:复制
startup_stm32f429_439xx.s
文件到
Startup
中,该文件位于
...\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm中。
CMSIS:复制
stm32f4xx.h
、
system_stm32f4xx.h
、
system_stm32f4xx.c
到
CMSIS
中。上述文件位于
...\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.h
、
stm32f4xx_it.c
、
stm32f4xx_it.h
三个文件到
User
中,该文件位于
...\Project\STM32F4xx_StdPeriph_Templates
在
User
中建立一个
main.c
文件,包含
stm32f4xx.h
即可。
工程需要的文件已添加完成,现在开始建立
Keil
工程,在建立
Keil
工程之前,先查看你的
Keil
是否有
STM32F429
所需要的库。如图:
如果没有
STM32F4
的库就需要添加,第一种方式是在这个
Pack Installer
中添加
第二种是到
Keil
官网先下载
F4
的
.Pack
文件,再用
Pack Installer
导入。第一种方式下载速度慢且不支持断点续传,往往下载到一半就提示下载失败,所以推荐第二种方式。
Keil
的
Pack
文件下载地址是:
http://www.keil.com/dd2/Pack
找到需要的文件下载后再用
Pack Installer
导入即可。
接下来建立工程:
Project-->New uVision Project 选中
NucleoF429_FreeRTOS
下的
Project
文件夹,工程命名为
NucleoF429_FreeRTOS
点击保存,在弹出的
Select Device
窗口选中
ST
的
STM32F429ZITx
型号后点击
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