目录
1、固件库下载
1、stm32F407的固件库可以到官网去下载,st.com/content/st_com/en.html,点击Tools & software
2、选择Embedded software,然后下滑找到箭头所指的方框,点进去
3、选择STM32 Standard Peripheral Libararies
4、然后点击图中的F4,要找其他型号自行点击
5、下滑到底部就可以看到固件库了,点击Get latest,旁边可以选择以前的版本,按照自己的需求来
6、然后它会让你选择一个身份登录,选择游客登陆就行
7、然后需要我们填写一些信息,要确保邮箱正确(它会发一个链接过来,让你确认),然后点击Get link to download,点击后会等一会,出现发送邮件成功的提示,点击ok即可
8、然后在当前浏览器打开官方发来的邮件,点击download now,跳转到那个网页等待一会它就会自行下载我们需要的固件库了。
9、解压出来的固件库包目录如下:
2、在keil中新建工程
1、首先创建一个用来存放工程的文件夹,我建在桌面上的(方便找),文件名为工程模板,然后在建的文件夹里创建几个子文件夹,这几个文件夹的用途后续会做出解释
2、打开keil软件,点击project新建工程
3、然后找到刚才我们新建的文件夹,再点击进去Project子文件夹,再给工程取个名字,点击保存
4、保存过后会弹出一个界面,让我们选择芯片的型号,如图所示点下去,我用的开发板是Stm32f407zgt6,所以我选择stm32f407zgtx,然后点击ok
5、然后会跳出来一个界面,点击cancel关闭即可
6、现在我们开始向工程文件夹移植固件库的依赖文件,首先移植工程里User文件夹里的内容,打开我们下载好的固件库,找到这个路径STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include
再把里面的两个文件都复制到User文件夹里
然后再去这个路径STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Project\STM32F4xx_StdPeriph_Templates
将红框中的文件复制到User文件夹下
复制完成后User文件夹的内容如图所示,总共8个,图标可能会和大家的不一致,因为我没有用编辑器打开过.c文件和.h文件,不过问题不大
7、然后向Core文件夹移植固件库文件,找到固件库的对应路径
STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm
复制红框中的文件到Core文件夹下
找到对应文件路径
STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Include
将红框中的文件复制到Core文件中,不过图中的core_cmSimd.h文件在一些低版本的固件库文件中被命名为core_cm4_simd.h,大家注意区分
移植后Core文件夹应该有以下文件
8、移植Library文件夹里的文件,找到固件库的对应路径
STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\STM32F4xx_StdPeriph_Driver
把图中的inc和src文件夹直接复制到Library文件夹中
复制后的Library文件夹长这样
9、对于剩下的文件夹,不需要移植文件了,他们主要用来存放我们写的文件和系统输出的文件,
例如,System文件夹可以用来存放一些我们写的延时函数和串口程序,主要用来存放使用率比较高的程序,如果没有就空着吧;project文件夹是存放我们建立的工程的一些信息文件,系统自动生成的,可以点击文件中.uvprojx结尾的文件打开我们创建的工程;Object主要用来存放系统输出的.hex文件,后续会讲到;Hardware文件是用来存放我们自己写的文件,具体添加流程后续会讲到。
10、现在我们开始向keil软件里添加文件,右击Target1,然后点击Manage Project Items...
11、出现如下界面
然后点击红框中的按钮添加Group,添加了三个group,都是我们需要的
然后选择Core,点击Add Files添加文件,找到我们工程文件里的Core文件夹,显示的文件类型默认是.c,刚出来是没有任何文件的,因为它只显示.c文件,我们手动更改为All Files,然后选中全部文件,点击Add添加文件,添加成功后就会显示到对应界面,添加完成后点close或叉掉都可以
选择Library,跟刚才一样的操作,找到Library文件下的src文件夹,将全部文件添加进去,添加完成后点击close或者叉掉
注意,我们需要把Library里面的stm32f4xx_fmc.c文件删掉,点击那个红叉就可以删除,因为我们的stm32f407zgt6是没有FMC这个外设的,不删掉会报错。
选择user,操作同上,找到工程文件夹里的user文件夹,选择三个.c文件进行添加,其他文件就不添加了(加了不好看,实在想加也可以),后续会设置它们的寻找路径,添加完成后点击close或叉掉
全部加完就是这个样子,文件夹的顺序可能不一样,不过问题不大,这个是可以更改的,自己摸索吧
12、现在我们要设置头文件路径和添加全局宏定义标识
一路点过去
然后点击这个框框,添加我们的头文件路径,点击框框后会出现可编辑的一行,我们不需要自己写,最右边有三个小点,点击他就会打开文件目录,我们就找到对应目录添加就行,添加完成点击ok
然后就是添加全局宏定义标识符,依旧是这个界面,在红框中添加STM32F40_41xxx,USE_STDPERIPH_DRIVER
注意别添加错了,直接复制粘贴即可,手敲容易出错
13、然后就是更改.hex的存放路径,选择Output,注意勾选Create HEX File,然后点击Select Folder for Objects...,选择我们创建工程时创建的Object文件夹;当然,不更改HEX文件的输出路径也可以,并不影响什么,只是更改后更容易找到这个文件,以后要用的时候方便找,但是勾选Create HEX File选项是必须的。
14、然后就是更改main.c的内容,main.c文件在User下,直接将原来的内容全部删掉,我们自己写一个简单的模板,在文本编辑框中右击选择插入头文件
然后添加函数体就行,我们的单片机程序就运行在while循环中
现在如果直接编译的话会出错,因为我们把main.c中的内容全部删除了,但是有个文件调用了main.c原有的东西,它找不到就报错了,在stm32f4xx_it.c文件中,我们注释掉它调用的函数
现在点击左上角进行编译,就会发现编译通过了,如果有警告,就在最后一行加一个空行
如果编译出来还是有很多地方报错,可以尝试更改编译器版本
15、现在来说一说怎么添加自己要写的文件,先右键点击Tartget1,再点红框框中的东西
点击红框中的东西新增组,命名为Hardware,点击ok
然后右键点击Hardware,再点击红框中的东西
新建头文件
然后给头文件添加内容,这个判断和定义的宏用来确保头文件只被引用一次,里面就可以添加函数的声明了,其他文件要引用本文件的函数直接include即可
再添加.c文件,.c文件的文件名要和头文件一致
在c文件中插入头文件(c文件自己的头文件不需要自己添加,系统默认),然后就可以开始实现函数了
如果有不清楚的地方,欢迎留下评论探讨