学习STM32F407ZGT6开发板第一课:软件的安装和项目的创建
安装下载地址:https://www.keil.com/download/product/点击MDK-Arm后,可能出现官网让你填信息的页面,随便填写就行,如下图所示:1、点击Next。2、第一需要点击我同意,也就是I agree那一项,然后继续点击Next。3、路径也可以选择自己喜欢的路径,我不喜欢动,我就选择默认路径了,然后继续Next。4、第一个大框中信息都随意填的,影响不大,然后继续Nex
1、KEIL软件的安装
安装下载地址:https://www.keil.com/download/product/
第一步:点击打开安装下载地址,点击MDK-Arm进行下载。
点击MDK-Arm后,可能出现官网让你填信息的页面,随便填写就行,如下图所示:

填写完成之后点击Submit按键就OK了,后续在点击安装就能正常进行安装了,如下图所示:
第二步:下载完成后,直接双击安装。
1、点击Next。
2、第一需要点击我同意,也就是I agree那一项,然后继续点击Next。
3、路径也可以选择自己喜欢的路径,我不喜欢动,我就选择默认路径了,然后继续Next。
4、第一个大框中信息都随意填的,影响不大,然后继续Next。
5、开始安装了。
6、安装完成,点击Finish结束。
第三步:软件安装完成后,会出现一个 Pack installer 的界面,这个界面是我们在线安装芯片支持包的界面,由于国内的网速比较慢,不是很支持在线安装芯片支持包,所以我们采用离线安装芯片支持包的方法,所以,我们直接关闭这个在线安装芯片支持包的界面。
注意:软件破解本文档不操作,容易侵权
2、STM32F4的芯片支持包安装
安装地址:https://www.keil.arm.com/devices/
第一步:点击芯片支持包的安装地址,在搜索栏中搜索我们需要的芯片支持包,我目前学习的芯片是STM32F407ZGT6,见如下操作:
1、根据我们学习的芯片是STM32F407ZGT6,在搜索框中搜索STM32F407ZGT,直接就出来了。
2、点击STM32F4xx_DFP

3、然后点击下载就行,下载完成后双击安装就行,一直点Next就行。成功安装之后,在创建项目,我们就能找到我们的芯片了

第二步:我们安装了STM32F4的芯片支持包,接下来我们来验证一下我们是否正确安装了芯片支持包。
1、首先,我们在桌面上创建一个存放STM32工程的文件夹,取名STM32Project。
2、打开KEIL软件,点击最上方的项目栏Project,然后在点击Project项目栏下的New uVision Project进行项目创建
3、点击完成后,会跳出选择存放工程的页面,我们选择我们刚刚在桌面创建的STM32Project文件夹,我们把工程存放在这个文件夹下,取名project
4、创建项目完成后,会跳出选择芯片的页面,我们直接选择我们的芯片,然后点击OK。
接下来我们将创建我们的STM32程序模版,STM32程序需要启动文件,我们需要提前准备好。先去ST官网下载官方提供的外设标准库,里面有提供标准的启动文件,我们从里面copy一份出来。
3、STM32F4的标准外设库下载
标准外设库的下载地址:https://www.st.com.cn/zh/embedded-software/stsw-stm32065.html#get-software
1、打开标准外设库的下载地址,页面上显示的有获取最新版本,后面也可以选择别的版本
2、从官网下载外设库的时候我们需要注册账号,注册完账号后点击获取版本,就可以直接下载,当然不想注册账号的同学点击下方网盘直接获取,也可以直接从正点原子资料下载中心下载,都是可以的。
通过网盘分享的文件:【正点原子】探索者STM32F407开发板
链接: https://pan.baidu.com/s/1SAQT-ruuBw-JMMBWcovKkg?pwd=fd8i 提取码: fd8i
3、我们下载完标准外设库后,就需要把标准外设库里的一些文件转到我们工程当中去,要不然是无法编译的,接下来介绍一下标准外设库文件夹下的内容:外设库中包含_htmresc文件夹、Libraries文件夹、Project文件夹、Utilities文件夹以及一些文档介绍;

- _htmresc文件夹:里面主要是一些图片
- Libraries文件夹:里面有CMSIS文件夹和STM32F4xx_StdPeriph_Driver文件夹;CMSIS文件夹的作用主要是提供Cortex-M4内核与设备的标准接口,里面核心文件有设备全局的头文件和系统时钟初始化文件以及启动文件,不同编译器和型号需选择对应文件,如IAR/Keil等。STM32F4xx_StdPeriph_Driver文件夹主要是外设驱动库,提供GPIO、USART、SPI等外设的API。inc文件夹为外设驱动的头文件,src为外设驱动的源文件。
- Project文件夹:主要是项目模版和示例。
- Utilities文件夹:评估板(如STM32F4-Discovery)的扩展驱动和例程。
- 我们转到工程中的文件主要来自Libraries文件夹。
首先桌面上有我们之前创建的STM32Project文件夹,我们在里面在创建一个文件夹,取名为STM32工程模版,在STM32工程模版里面五个文件夹,名字分别是:app、driver、firmware、mdk和third_lib。
- app文件夹:里面主要是我们的主函数main.c
- driver文件夹:这个里面主要放我们外设驱动的一些文件
- firmware文件夹:这个文件夹主要就是SDK库里面的一些文件
- mdk文件夹:主要放KEIL工程文件
- third_lib文件夹:三方组件,裸机开发暂不用
我们把firmware文件夹的内容进行填充一下,在firmware文件夹下新建cmsis文件夹和driver文件夹,cmsis文件夹里面主要放arm公司提供的一些库文件,driver文件夹主要放外设驱动库。
第一步,首先我们把driver文件夹的内容解决掉,我们到我们下载好的标准外设库中,打开Libraries中的STM32F4xx_StdPeriph_Driver文件夹,将文件夹中的inc和src复制到firmware目录下的driver里面,这样driver里面的内容就填充好了。
第二步,在cmsis文件夹下创建core文件夹和device文件夹,core文件夹里面主要放内核文件和启动文件,device文件夹下主要放系统时钟初始化文件和设备全局的头文件。内核文件在:Libraries\CMSIS\Include下,将文件core_cm4.h、core_cm4_simd.h、core_cmFunc.h、core_cmInstr.h移动到core目录下;启动文件在:Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm目录下,将文件startup_stm32f40_41xxx.s移动到core目录下,到此core文件夹填充完毕。
第三步,填充device文件夹,进入到Libraries\CMSIS\Device\ST\STM32F4xx\Include将stm32f4xx.h、system_stm32f4xx.h文件移到device中,然后在到Project\STM32F4xx_StdPeriph_Templates中将system_stm32f4xx.c、stm32f4xx_conf.h、stm32f4xx_it.c、stm32f4xx_it.h移到device目录下,main.c文件放到app目录下。至此,device文件填充完成。
第四步,可以创建项目了。
4、项目的创建
打开keil软件,创建项目(这操作上面已经介绍了),只不过这次创建项目不是直接保存,而是要保存到我们刚开始创建的mdk目录下,操作如下:
保存后,页面上并没有我们目录上创建的文件夹目录,所以我们还要把相对于的目录加进来,点击如下图小框的按钮:
将Target_1改为你想要的名字,Groups改为我们创建目录的名字,对应如下:
然后在把每个目录下的头文件添加进来,点击Add Files进行添加:
app目录下main.c添加进来:
driver目录下暂时没有.c文件,firmware里面所有的.c和启动文件.s都要添加进来,
这里有个文件 stm32f4xx_fmc.c 比较特殊。这个文件是 STM32F42 和 STM32F43 系列才用到,所以我们这里要把它删掉(注意是 stm32f4xx_fmc.c 要删掉,不要删掉 stm32f4xx_fsmc.c)。
接下来我们要在 MDK 里面设置头文件存放路径。也就是告诉 MDK 到那些目录下面去寻找包含了的头文件。这一步骤非常重要。如果没有设置头文件路径,那么工程会出现报错头文件路径找不到。
添加头文件到路径里面去,也就是找到哪些文件里面有.h文件,将其添加到路径即可,app、driver我们以后肯定会放头文件的,firmware目录下的cmsis中两个文件都有.h,都添加进来,driver中,只有inc有.h,只添加inc即可。
接下来对于 STM32F40 系列的工程,还需要添加一个全局宏定义标识符。添加方法是点击魔术棒之后,进入 C/C++选项卡,然后在 Define 输入框连输入:STM32F40_41xxx,USE_STDPERIPH_DRIVER。
注意这里是两个标识符 STM32F40_41xxx和USE_STDPERIPH_DRIVER,他们之间是用逗号隔开的,请大家注意。
在进行如下操作:
Create HEX File 选项选上是要求编译之后生成 HEX 文件。Browse Information 选项选上是方便我们查看工程中的一些函数变量定义。
与此同时,我们要将 firmware 分组中stm32f4xx_it.c文件中,删掉其中的 32 行对main.h 头文件的引入以及 144 行 SysTick_Handler 函数内容。
这里还有个非常重要的关键点,就是系统时钟的配置,这里我们要修改 System_stm32f4xx.c 文件,把 PLL 第一级分频系数 M 修改为 8,
这样达到主时钟频率为 168MHz。
PLL_M 这里我们要修改为 8,这样我们的系统时钟就是 168MHz。同时,我们要在 stm32f4xx.h 里面修改外部时钟 HSE_VALUE 值为 8MHz,因为我们的外部高速时钟用的晶振为 8M,具体修改方法如下:
至此,我们的项目文件都已创建完成,目前最新的Keil ARM用的是 Compiler version 6,与前面的core_cm4.c不兼容,所以需要提前准备好Compiler version 5。
5、Compiler version 5安装
安装地址:https://developer.arm.com/downloads/view/ACOMP5
打开网址进行下载安装,解压之后,把解压的后文件夹放入到Keil MDK的安装目录下:



至此,Compiler version 5就已经到我们的keil里去了,然后选择Compiler version 5即可,选择步骤如下:
完结,到这里为止,我们正在的项目都已经创建完成了,顺便检验一下是否能编译完成,我们在main.c中输入下列代码:
#include "stm32f4xx.h"
int main(void)
{
}
然后进行编译:
编译没问题,0错误、0警告。
6、VS code 的安装与配置
6.1 VS code 的安装
安装地址:https://code.visualstudio.com/
打开地址,下载安装,一直下一步就行,没有什么需要注意的地方。
6.2 vs code 的配置
下载完成后,打开vs code:
第一步:安装C/C++扩展:
第二步:将我们创建好的工程模版在vs code里面打开,按Ctrl + Shift + P,输入Preferences: Open Settings (JSON),然后在settings.json中输入下面代码:
{
"files.associations": {
"*.h": "c"
},
"files.exclude": {
"**/.DS_Store": true,
"**/.git": true,
"**/.hg": true,
"**/.svn": true,
"**/CVS": true,
"**/Thumbs.db": true
}
}
第三步,在.vscode目录下创建c_cpp_properties.json文件,输入下面代码:
{
"configurations": [
{
"browse": {
"limitSymbolsToIncludedHeaders": true
},
"cStandard": "c99",
"name": "stm32f407",
"cppStandard": "c++11",
"includePath": [
"app",
"driver",
"firmware/cmsis/core",
"firmware/cmsis/device",
"firmware/driver/inc"
],
"defines": [
"STM32F40_41xxx",
"USE_STDPERIPH_DRIVER"
],
"compilerPath": "E:/gcc-arm-none-eabi-10.3-2021.10-win32/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-gcc",
"intelliSenseMode": "windows-gcc-arm"
}
],
"version": 4
}
其中,includePath下面的代码就是存放.h文件的路径:
defines下面的代码就是keill里额外定义的东西,具体叫啥我也不知道,看图:
然后就是compilerPath中的代码了,也就是编译器的路径,gcc编译器我放到网盘里了,自取,下载好编译器后,把编译器的路径放到compilerPath中就可以了。
通过网盘分享的文件:gcc
链接: https://pan.baidu.com/s/1WTTcz5oVrLSb6-_0yd-0ew?pwd=bjyr 提取码: bjyr
通过上述操作过后,我们的keil代码就可以在vs code里面编写了,但是只能编写代码,编译还是要回到keil里面编译。
更多推荐



所有评论(0)