STM32基础——创建库函数版工程

0、环境

 软件版本号:Keil5.26

硬件CPU型号:STM32F407ZGT6

1、在本机创建工程文件夹

       所有的文件可不可以放在同一个目录下?当然可以!但是为了分类更清晰,一般选择将不同功能的文件分别存放在不同目录下。这里,我们首先在本机上创建以下几个文件夹。

Doc 存放一些说明性的文档
Libraries 存放STM32固件库
Project 存放Keil5工程文件
User 存放自己编写的代码

2、拷贝库文件到工程文件夹下

1)拷贝固件库中Libraries目录下的内容到步骤一创建的Libraries目录下。

2)删除CMSIS目录中不需要的内容

      2.1)CMSIS目录下只保存:

           

      2.2)Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates目录下只保存:

      

3)拷贝固件库中:STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Project\STM32F4xx_StdPeriph_Templates目录中

main.c、stm32f4xx_it.c、stm32f4xx_it.h、stm32f4xx_conf.h到User文件夹下。

4)删除main.c文件的内容,写一个空的main函数,并死循环在main中。

3、Keil5中创建工程

      1)Project——>New uVersion Project...

     2)选择工程相关文件存放的路径,输入工程名称

   3)根据自己手中开发板选择处理器型号。如果你的Keil中此处没有看到处理器类型,那是没有安装STM32芯片包。需要手动安装。

4)我们的库文件会自己手动拷贝到第一步创建的文件夹下,所以此处在线添加库文件我们不需要,直接点右上角关闭。

4、添加文件到工程中

1)新建组

此处为了清晰,我们同样会在Keil中创建几个文件夹分别存放不同类型的文件。

新建组(文件夹)的方法:Target 1上面右键——>Add Group

新建组重命名的方法:选中相应的组(背景变蓝色),鼠标左键单击,即可修改名称。

建成组如下所示:

      

   2)添加文件到相应组中

   在组名称上鼠标双击,就会弹出选择框,然后按照下面步骤选择。

          (1)如果没有找到对应文件,请查看3、文件类型选择是否正确。

          (2)可以一次选中多个文件进行添加。

 

3)添加结果

  (1)  STARTUP组下添加的startup_stm32f40xx.s (根据CPU型号选择)文件位于:你的工程文件夹名\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm目录下。

   因为我的开发板的CPU型号是STM32F407ZGT6,所以我选择的启动文件是startup_stm32f40xx.s,你需要根据自己开发板上CPU的型号选择对应的启动文件。

  (2) CMSIS组下system_stm32f4xx.c文件位于 : 你的工程文件夹名\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates目录下。

   (3)STM32F4xx_StdPeriph_Driver组下存放着你的工程文件夹名\Libraries\STM32F4xx_StdPeriph_Driver\src目录下的所有 .c文件。

   (4)User组下main.c和stm32f4xx_it.c位于: 你的工程文件夹名\User目录下。

5、配置“魔法棒”(此处没有配置下载相关信息,请注意

1)target中选中:“Use MicroLib”。

2)配置C/C++(重点)

因为创建的是库函数模板, 所以需要在对处理器类型和库进行宏定义, 在
Define 这一栏中复制这两个宏: STM32F40_41xxx,USE_STDPERIPH_DRIVER
注意它们之间有一个英文符的逗号。 通过这两个宏就可以对 STM32F40_41xx
系列芯片进行库开发, 因为在库源码内支持很多 F4 系列芯片, 通过这个宏就可
以选择到底是用种芯片的库驱动。 同理 USE_STDPERIPH_DRIVER 这个宏也是类似
的原理。

(2)添加头文件路径,具体如下所示

6、编译

      等待编译完成,发现有很多错误。不要被吓到!,我们看看具体错误内容

      (1)双击错误行,Keil会跳转到错误信息处。没有找到main.h文件,那是因为我们没有写main.h,所以删除这行。

      (2)继续编译,发现依然有错误

出错原因:STM32F407 只有 FSMC 功能, 但是使用的固件库里面有 FMC 和 FSMC 的功能,所以我们选择把 FMC 在工程里面屏蔽掉,就不编译。同时, 固件库里面还有 DMA2D 和 LTDC 的库,但是 F407 都没有这两个功能,所以我们也选择把这两个文件从工程里面屏蔽掉。

(3)修改完,点击“Rebuild”,依旧出错,我们查看错误信息。删除这一行。

(4)修改完,点击“Rebuild”。这次可以看到没有错误信息,也没有警告信息。

7、后记

1)本文参考了火哥的视频和书(感谢火哥开源了视频和书籍)。虽然买的不是火哥的板子,但是毫不夸张的说,火哥的努力降低了STM32入门的门槛。

2)如果有问题,请前后再仔细检查一遍。请查看CPU型号选择与CPU相关文件是否对应。

3)如果还有问题,请bing。