STM32新建工程
1. 前言
浏览完stm32f4的手册,看过库函数的前几章后开始进入动手操作部分。本文主要介绍利用stm32的库函数新建工程,当然前提是已安装keil。
开发环境:keil uVision5
芯片:STM32F407ZGTx
准备工作:
下载芯片对应的标准外设库:(外设库的作用是相当于厂家把基本框架搭好了,用户根据自己的需要变更部分使用参数,而不用从头开始配置寄存器)
https://www.st.com/en/embedded-software/stm32-standard-peripheral-libraries.html#products
下载芯片对应的pack:(安装包的作用是在IDE下识别芯片)
https://www.keil.com/dd2/Pack/
我选择的是STM32F4的pack,下载完后,双击安装这个包。
在线更新pack的方式如下:更新列表,找到所需芯片,右侧栏下载pack。
2.新建工程步骤
2.1 新建文件夹
要想把刚采的萝卜装清楚,先得把篮子分类,如分成胡萝卜篮,白萝卜篮,红萝卜篮。
所以在新建工程之前先建立几个文件夹。
FWLIB:存放ST标准外设库文件
USER:放的是用户文件,包括工程文件,main函数,以及f4的系统级库文件。
CORE:存放启动文件和关于CM4内核的头文件。
OBJ:放编译后的目标文件
1)FWLIB将外设库的源文件(src)和头文件(inc)拷贝。
\stm32f4_dsp_stdperiph_lib\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\STM32F4xx_StdPeriph_Driver下的文件
2)USER文件拷贝
STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include 和\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Project\STM32F4xx_StdPeriph_Templates 的文件,template是新建工程名,后续会说到。
3)CORE文件拷贝
\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm 下的启动文件和\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Includ 的头文件
2.2 新建工程
1)新建工程
2)选择工程的保存路径(放在之前建立的user文件夹里)
3)选择芯片
4)生成基础工程
2.3 源文件关联工程
打开基础工程的文件夹,可以看到现在什么也没有,需要添加源文件,头文件,启动文件等。
1)首先修改工程目标名,将target改为template,然后就可以搬运文件了,将之前搬运的文件关联到你建立的工程下。
2)建立新group,原group删除,group名与之前建立的文件夹名相同。
3)在新建的group里导入文件。
FWLIB:将FWLIB的src文件全导入,当然也可以选择性导入所需要的外设。 stm32f4xx_fmc.c 这个文件是 STM32F42 和 STM32F43 系列才用到,所以删掉。
Core:添加startup_stm32f40_41xxx.s
USER:添加main.c, stm32f4xx_it.c,system_stm32f4xx.c
全部导入后显示如下所示:
2.4 头文件关联工程
选择建立的文件夹的头文件
添加全局宏定义标识符STM32F40_41xxx, USE_STDPERIPH_DRIVER
上面一步很重要,若不添加就会报下面的错误,就是头文件找不到芯片。
stm32f4xx.h(102): error: #35: #error directive: “Please select first the target STM32F4xx device used in your application (in stm32f4xx.h file)”
2.5 输出格式设置
输出目标文件夹选择OBJ,若要输出HEX文件,则注意勾选create hex file。
3.编译工程
新建工程后,再进行如下修改就可以编译无error了。
删掉main.h或者替换为stm32f4xx.h。stm32f4xx_it.c和main里都有main.h。
至此一个工程模板就生成了,下面就可以加入想要的工程实现想要的功能了。
参考文献
《STM32F4开发指南-库函数版本-V1.2》