STM32 工程配置流程

1.创建工程文件

        在我们创建工程时为了方便,需要提前配置好启动文件,以及工程的创建位置,这样做更有利于我们管理整个工程。

         首先我们创建一个文件夹,用来存放整个工程的所有文件

        在这个文件夹下,创建四个子文件夹,用来存放我们工程需要的启动文件、固件库以及我们自己在编写过程中创建的各种外设的驱动文件。

         四个文件的名称不是固定的,可以自定义文件名,但是在一般情况下都是采用这种命名方式,四个文件夹的说明如下表所示。

文件夹名称说明
CORE用来存放STM32的启动文件
FWLIB用来存放STM32的各种库函数文件
HARDWARE用来存放外设模块文件
USER用来存放工程文件

2.添加工程文件

        在我们创建好文件夹后,就可以开始往文件夹里面放东西了,首先是我们的启动文件

        1.CORE

        这个文件夹是用来存放STM32的内核启动文件的,其中需要包含以下几个文件:

文件名说明
core_cm4.h

内核功能的定义,比如NVIC相关寄存器的结构体和Systick配置;

core_cm4_simd.h

包含与编译器相关的处理

core_cmFunc.h

内核核心功能接口头文件

core_cmInstr.h

包含一些内核核心专用指令

startup_stm32f40_41xxx.s堆栈的初始化、中断向量表以及中断函数定义

        我们打开STM32的固件库文件并且打开以下路径:

STM32F4xx固件库\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm

         我这里采用的是STM32F407的固件库,所以在此文件路径下存在以下文件:

         我用红框框标出来的就是我需要的启动文件,各位可以根据自己的型号选择。

         除了启动文件,还需要添加几个与内核有关的头文件,分别是以下几个:core_cm4.h、core_cm4_simd.h、core_cmFunc.h、core_cmInstr.h。路径:

STM32F4xx固件库\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Include

 将这5个文件添加到CORE文件夹中后,工程的CORE文件就添加好了。

         2.FWLIB

        这个文件夹中包含了我们在工程中需要使用到的各种标准外设驱动函数文件。在固件库文件中其路径为:

STM32F4xx固件库\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\STM32F4xx_StdPeriph_Driver

        在这个路径下,有两个子文件,分别是inc和src,一个是库函数的头文件、一个是库函数的源文件。

         我们直接将这两个子文件夹拷贝到我们的FWLIB文件夹下,FWLIB文件夹就配置完成了。

        3.USER

        这个文件中保存的是我们的工程文件,之后我们在创建工程的时候,就是创建在此文件夹下。这个里面我们需要准备六个文件,分别是以下文件:

文件名说明
stm32f4xx.h 片上外设访问头文件,里面包含大量结构体和宏定义(寄存器定义声明及内存访问操作的封装)
system_stm32f4xx.cSTM32F4xx 系统时钟配置文件,关键函数SystemInit(),系统启动文件
stm32f4xx_conf.h 里面包含了我们需要使用的标准库,对于需要使用的库需要在其中加以说明
stm32f4xx_it.h中断服务函数头文件
stm32f4xx_it.c 编写中断服务函数,当然也可以将其编写在其他文件中比如各个硬件的驱动文件里面
main.c主函数文件,有用户自己创建在此文件夹下

首先是我们的stm32f4xx.h、system_stm32f4xx.c这两个文件,这两个文件的所在路径为:

STM32F4xx固件库\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include

 其次是stm32f4xx_conf.h、stm32f4xx_it.h、stm32f4xx_it.c文件,其在固件库中的路径是:

STM32F4xx固件库\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Project\STM32F4xx_StdPeriph_Templates

         main.c文件需要我们在建立工程时自己创建,创建到USER文件夹下即可。

        4.HRADWARE

        HRADWARE文件中存放的是外设模块文件,是我们在编写代码过程中使用到的各种模块的代码,这个文件在创建工程时不需要添加文件。

3.KEIL5对工程进行配置

        首先先创建一个工程,工程名可以自己选择,创建路径在USER目录下

 创建完成之后选择芯片

 选择好后,点击下方按钮

 添加工程配置资源文件。

         这里将我们刚开始准备好的4个文件夹都添加到工程中,添加好文件组后,我们添加文件,将所有的*.s *.c文件都添加到组中。

         添加完成之后大概就是这个样子的,因为FWLIB中文件太多,我就没有全部添加进去,这些文件添加好后,还需要添加这些文件所对应的头文件。

        点击下方按钮

 打开之后,添加头文件路径

 添加头文件成功之后,我们还需要添加两个宏定义标识符

USE_STDPERIPH_DRIVER,STM32F40_41xxx,

 这个步骤完成后,基本的配置过程就已经完成了。

4.编译测试

        在上述步骤都完成后,我们还差一个main.c文件就可以编译了,我们在USER目录下创建一个main文件。

 现在我们就可以编译测试了。

        一般情况下到这一步就可以编译通过了。

5.编译错误

        在一般情况下,到了上一步之后应该可以编译成功,但是有可能会出现以下错误,导致编译失败。

         出现这个问题的原因就是在STM32的固件库文件中,有官方提供的main.c文件,所以在stm32f4xx.h文件中也有对main.h文件的包含,但是我们使用的不是官方提供的main模板,所以这个包含也就不存在,我们可以双击错误,定位到#include "main.h"处,然后将这一行注释掉

 注释掉这个地方之后会报另一个错误。

 这个时候我们再双击这个警告,跳转到stm32f4xx_it.c

 将这里也注释掉,然后重新编译。

 不出意外的话,就编译成功了。

6.总结

        在STM32的学习中,配置一个工程虽然不难,但是过程比较麻烦,如果每创建一个工程都去重新配置一个工程文件,就会增加不必要的工作量,我们可以提前配置好一个工程文件,以后要使用的时候直接拷贝过去就可以了。

        仅供参考,不保证一定不会遗漏哪些问题,毕竟我也是小菜鸡,但是目前在我的学习阶段是没有什么太大的问题。

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值