目录
5、下拉选择需要下载的版本,我这边选择的是最新的1.9.0的版本,在弹出的许可协议中选择接受
1、新建一个文件夹命名Template,在Template文件夹下新建User、Doc、Project三个文件夹
2、将标准库中的Libraries文件夹复制到Template文件夹里
3、删除..\Template\Libraries\CMSIS文件夹下多余的内容,只留下Device、Include
6、在Doc文件夹下新建ReadMe.txt文件,用于记录代码更改记录
2、在弹出的对话框中选择..\Desktop\Template\Project文件夹,并取一个文件名Template,点击保存
3、在弹出的对话框中选择芯片型号,我的开发板的芯片型号是STM32F407ZGT6,我选STM32F407ZGTx
c、删除新建工程时默认的文件夹Source Group1,新建4个新的文件夹User、Doc、CMSIS、STM32F4xx_StdPeriph_Driver
f、继续向CMSIS中添加文件,这个需要添加两个文件,且不再一个目录下,需要分开添加
g、继续向STM32F4xx_StdPeriph_Driver中添加文件
h、全部添加完成之后点击ok,即可以在我们的工程中看到导入的文件
3、填写全局宏定义,STM32F40_41xxx,USE_STDPERIPH_DRIVER
4、系统时钟配置,这一块很重要,不然整个系统的时钟都是错误的;
a、更改之前,我们需要将..\Template下的Libraries文件夹的属性进行更改,去掉只读属性,包括其下面的子文件夹和文件
b、更改system_stm32f4xx.c中的PLL_M的值
3、stm32f4xx_fmc.c和stm32f4xx_fsmc.c这两个文件,这两个文件暂时不需要
一、前言&硬件平台
大家好,今天给大家分享一下使用STM32标准库创建STM32F407基础工程的流程,我自己在学习32单片机的时候甚至在后面的工作的时候,都是不熟悉如何新建32的新工程的,在学习的时候使用老师的模板,后面工作的时候更是直接使用别的项目的模板,时间长了发现之前的模板的库函数已经很旧了,当更换更新的型号的32芯片时,旧的标准库不适用的时候,往往要浪费大量时间去找问题。下面将创建过程做一个记录分享给大家。我使用的硬件平台是正点原子老师的探索者开发板,这块开发板使用的是STM32F407ZGT6,芯片的主时钟是8MHz。(具体的资料请自行前往正点原子老师的平台获取)下面是原理图资源的截图:
二、标准库获取
介绍下获取32标准库的流程,需要登录网址:STM32微控制器软件 - 意法半导体STMicroelectronics 这个网站下载资料需要提前注册,网站的验证码需要很久才能收到,一般是24小时,所以注册时收不到验证码,只需要等待即可,不需要一直发送。
1、打开网址,网站显示如下,点击选择标准外设软件库。
2、点击产品选择器
3、我们使用的是F4芯片,选择F4的标准库,按顺序依次点击
4、点击获取软件
5、下拉选择需要下载的版本,我这边选择的是最新的1.9.0的版本,在弹出的许可协议中选择接受
6、在弹出的对话框选择登陆(需要提前注册)。
7、在登陆框中填写用户名和密码,登陆即可自动下载
8、等待浏览器响应及下载完成
9、下载完成,解压缩即可获取标准库文件及各种官方例程
三、文件夹创建及文件导入
1、新建一个文件夹命名Template,在Template文件夹下新建User、Doc、Project三个文件夹
2、将标准库中的Libraries文件夹复制到Template文件夹里
3、删除..\Template\Libraries\CMSIS文件夹下多余的内容,只留下Device、Include
4、继续删除..\Template\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates文件夹下多余的内容,只留下arm、system_stm32f4xx.c
5、将..\en.stsw-stm32065_v1-9-0\STM32F4xx_DSP_StdPeriph_Lib_V1.9.0\Project\STM32F4xx_StdPeriph_Templates中的main.c、stm32f4xx_conf.h、stm32f4xx_it.c、stm32f4xx_it.h共4个文件复制到..\Desktop\Template\User中
6、在Doc文件夹下新建ReadMe.txt文件,用于记录代码更改记录
四、工程创建及工程文件导入
经过以上步骤,我们新建工程所需要的文件全部已经准备好了,下面开始创建工程,并将一系列的文件导入到工程中
1、打开keil,选择新建工程
2、在弹出的对话框中选择..\Desktop\Template\Project文件夹,并取一个文件名Template,点击保存
3、在弹出的对话框中选择芯片型号,我的开发板的芯片型号是STM32F407ZGT6,我选STM32F407ZGTx
4、选择完成后弹出的对话框直接点击关闭
5、点击取消之后,我们会看到一个空白的工程
之后我们可以在..\Desktop\Template\Project目录下看到工程文件,之后工程关闭的时候,我们可以通过双击Template.uvprojx来打开我们的工程
6、下面将我们在步骤三中准备的文件导入到工程中
a、点击如下图的图标,进入工程文档管理
b、工程文件管理窗口如下:截图中部分功能
c、删除新建工程时默认的文件夹Source Group1,新建4个新的文件夹User、Doc、CMSIS、STM32F4xx_StdPeriph_Driver
d、向User文件中添加文件
e、继续向Doc文件夹中添加ReadMe.txt文件
f、继续向CMSIS中添加文件,这个需要添加两个文件,且不再一个目录下,需要分开添加
一个是..\Template\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates目录下的system_stm32f4xx.c;另一个是..\Template\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm目录下的startup_stm32f40_41xxx.s(因为我们用的是STM32F407芯片,所以选择这个文件,其他芯片需要根据型号选择,如STM32F429需要选startup_stm32f429_439xx.s)
g、继续向STM32F4xx_StdPeriph_Driver中添加文件
这个添加的是全部的底层驱动文件,..\Template\Libraries\STM32F4xx_StdPeriph_Driver\src中的所有.c文件
h、全部添加完成之后点击ok,即可以在我们的工程中看到导入的文件
五、环境配置
经过上面的步骤,我们已经将工程所需要的文件都导入到了工程中,接下来还需要引入头文件路径,填写全局宏定义。
1、打开工程配置对话框
2、添加头文件路径
添加如下路径
..\Template\User
..\Template\Libraries\STM32F4xx_StdPeriph_Driver\inc
..\Template\Libraries\CMSIS\Include
..\Template\Libraries\CMSIS\Device\ST\STM32F4xx\Include
3、填写全局宏定义,STM32F40_41xxx,USE_STDPERIPH_DRIVER
4、系统时钟配置,这一块很重要,不然整个系统的时钟都是错误的;
在上面介绍硬件平台的时候,我们知道系统的外部主时钟是8MHz,所以我们要对系统时钟进行配置,我们这里把系统时钟配置成168MHz。配置时钟需要更改两个地方,一个是system_stm32f4xx.c中的PLL_M的值,要改成8;另一个是stm32f4xx.h中的HSE_VALUE的值,要改成8000000(8MHz)。
a、更改之前,我们需要将..\Template下的Libraries文件夹的属性进行更改,去掉只读属性,包括其下面的子文件夹和文件
可以看到之前工程左侧文件上的小锁不见了,表示更改成功
b、更改system_stm32f4xx.c中的PLL_M的值
c、更改stm32f4xx.h中的HSE_VALUE的值
在工程中打开main.c文件,在其中输入#include "stm32f4xx.h",右击打开stm32f4xx.h文件
六、编译改错
经过上面的步骤,环境也已经配置完成,下面就可以编译了,但是在编译之前我们先更改明显的错误。
1、更改main.c文件中的错误
直接删除多余的内容,更改后的main.c文件如下截图(其中注释的内容也可以根据自己的喜好进行删除)
2、更改stm32f4xx_it.c文件中的错误
双击打开stm32f4xx_it.c,删除#include "main.h"这一句
删除 TimingDelay_Decrement(); 这一行代码
3、stm32f4xx_fmc.c和stm32f4xx_fsmc.c这两个文件,这两个文件暂时不需要
可以选择直接移除,也可以更改编译属性让其不编译
更改编译属性,选择不编译
4、点击编译,查看报错信息,更改标准库文件的错误
七、下载验证
工程创建完成之后,我们就可以编写业务代码进行验证了,这里我就不再进行验证了,有两点需要注意:
1、要验证浮点数运算功能是否正常;
2、要验证时钟是否准确;
3、标准库中的文件都是只读文件,要想更改里面的内容,需要去掉文件的只读属性;
后续我会再和大家分享其他的关于STM32的知识,我会结合我工作中的经验,将32的各个外设基于项目实战和大家分享,不讲原理,而是讲一些外设在实际项目中的实际使用。
八、资源下载地址
教程PDF+基础工程+最新标准库:(2条消息) STM32F407RGT6基础工程创建教程+基础工程+最新标准库资源-CSDN文库