STM32F429入门(九):使用固件库新建工程
一、首先新建一个文件夹
二、新建文件夹:Project、Libraries、User、Doc,之后就打开keil 5,在project的目录里新建工程,之后在Libraries中添加固件库里的两个文件,分别是:

之后再删除我们不需要的文件:比如Release_Notes.html,还有CMSIS中除了Device和Include的:

在 \Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates中只保留如下选中,其余都删除:

在User文件夹我们需要以下文件,可以从固件库中复制过来\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Project\STM32F4xx_StdPeriph_Templates:

到现在为止,所有文件就大概配置好了,接下来到keil5中将这些文件导入:


嗯...然后开始编译:

出现这么多个错是因为我们的根目录的路径问题,所以我们要将包含根目录的文件的路径添加进去。

可是添加完路径后,也无法解决以上的问题,但是根目录这个时候已经都被包含进去了,然后我们打开main.c下包含的stm32f4xx.h文件,找到#if !defined (USE_STDPERIPH_DRIVER),单从字面意思理解就是“使用标准外设驱动”,在C/C++预定义中加入“USE_STDPERIPH_DRIVER”就是允许“使用标准外设驱动”了。

也就是说只有预先定义了USE_STDPERIPH_DRIVER后,才会包含stm32f4xx_conf.h头文件。在stm32f4xx_conf.h中,包含了各个驱动脚本的头文件,从而被main.c用到,这就解释了,为什么我们没有在“main.c”中包含"stm32f4xx_conf.h",而在编译之后却被包含进了"main.c"中。所以,我们需要定义这个USE_STDPERIPH_DRIVER;
之后,再定义一下我们使用此芯片的宏:

最后在魔术棒中:

但是到这一步只解决了一部分错误,还有几十个错,找到了原因是我们有个驱动外设位FMC,它包含了FSMC,407的芯片没有FMC,它称之为FSMC,这是驱动屏幕使用的,这两个文件产生了冲突,所以我们需要在驱动库中找出这两个文件,把它删掉,或者是在编译的时候选择不编译。

之后再全局编译,出现了这个错误:.\Objects\YH-429.axf: Error: L6218E: Undefined symbol TimingDelay_Decrement (referred from stm32f4xx_it.o).

在中断的文件中将所圈的函数删掉即可,我们不需要使用这个函数,到后面我们使用中断时才需要在这里配置我们想要的。
最后,终于搞定啦!

最后的最后,再总结一下吧:
-
先再本地新建一个文件夹用于存储固件库文件
-
在工程里面添加组,然后再里面添加文件
-
编译,会出现很多的错误,然后打开stm32f4xx.h
-
在工具链中的C/C++选项卡里面指定头文件的目录
-
在工具链中的C/C++选项卡里面添加两个宏:USE_STDPERIPH_DRIVER、STM32F429_439xx
-
把stm32f4xx_fsmc.c屏蔽掉,不编译
-
修改stm32f4xx_it.c文件,去掉#include ”main.h“以及在中断函数下面的一个子函数。
-
配置仿真器,而且这个配置不是一次配置成功之后就不会变,有时候会莫名其妙地改变。
-
配置好输出的文件,如Output、Listing,指定好生成文件后生成在哪个文件,我们最开始也已经配置好了。
-
因为由于编译生成的文件均为垃圾文件,所以我们可以将例程中删除该文件的脚本复制到我们的文件中去。
-
