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,指定好生成文件后生成在哪个文件,我们最开始也已经配置好了。

  • 因为由于编译生成的文件均为垃圾文件,所以我们可以将例程中删除该文件的脚本复制到我们的文件中去。

  •