STM32F407工程模板


前言

根据官方给的固件库创建自己的工程模板,文中所使用的为STM32F407ZGT6核心板。以STM32F407为例创建标准函数库工程模板。


一、下载官方固件库文件

  1. 进入STM32标准外设软件库官网后,找到F4系列并点击。
    在这里插入图片描述
  2. 滑动到最下面,点击获取最新版本(Get latest)。然后在弹出的许可协议中点击接受。
    在这里插入图片描述
    在这里插入图片描述
  3. 然后他会让你创建或登录以此来下载,或者以访客身份下载,大家有兴趣可以创建一个账号,这样就可以直接在网页下载了。我这里演示访客下载,点击访客下载。
    在这里插入图片描述
    然后他会让你填写你的信息,姓名可以乱填,然后填写自己的邮箱。
    在这里插入图片描述
    然后过一会你的邮箱中就会有一封邮件,在邮箱中找到并点击下载链接,就可以下载了。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  4. 在文件中找到下载的压缩包并解压即可。后面我们的模板工程需要的文件在这里面可以找到。
    在这里插入图片描述

二、配置工程模板文件

工程文件树我将参照使用江协科技的工程文件树。

DebugConfig — 调试相关的文件夹
Libraries — 存放标准库函数
Listing — 存放编译的中间文件
Objects — 存放输出文件
Start — 存放启动文件
User — 存放用户编写文件
keilkill.bat — 删除编译产生的中间文件

1.新建工程
  1. 使用Keil,点击new uVision Project
    在这里插入图片描述
  2. 然后新建文件夹STM32F407Template,用来存放工程模板。新建工程名为Project,点击保存
    在这里插入图片描述
  3. 选择自己对应的开发板的器件包,因为我使用的核心板是STM32F407ZGT6,所以我在这应该选择STM32F407ZGTx,然后点击OK

在这里插入图片描述

  1. MDK会跳出Manage Run-Time Environment 的界面,这时MDK5新增的功能,在这个界面,我们可以添加自己需要的组件,从而方便构建开发环境。在这里我们直接点Cancel即可。
    在这里插入图片描述
  2. 创建新工程结束后,我们文件夹中的目录树如下,然后我们创建3个新的文件夹,User,Start,Libraries。
    在这里插入图片描述
    在这里插入图片描述
2.配置User文件夹
  1. User文件夹中需要存放下面这4个文件。
    在这里插入图片描述
  2. main.cstm323f4xx_conf.hstm32f4xx_it.cstm32f4xx_it.h文件在

STM32F4xx_DSP_StdPeriph_Lib_V1.9.0\Project\STM32F4xx_StdPeriph_Templates

在这里插入图片描述

3.配置Start文件夹
  1. Start文件夹下存放这些文件
    在这里插入图片描述
  2. core_cm4.hcore_cmFunc.hcore_cmInstr.hcore_cmSimd.h文件在

STM32F4xx_DSP_StdPeriph_Lib_V1.9.0\Libraries\CMSIS\Include

在这里插入图片描述
3.startup_stm32f40_41xxx.s文件在

STM32F4xx_DSP_StdPeriph_Lib_V1.9.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm

因为我所使用的核心板是stm32f407,所以我在这拷贝启动文件的时候选择的是startup_stm32f40_41xxx.s,拷贝的文件要与自己的开发板型号相对应,否则编译就会报错。

在这里插入图片描述
4. system_stm32f4xx.c文件在

STM32F4xx_DSP_StdPeriph_Lib_V1.9.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates
在这里插入图片描述

  1. stm32f4xx.hsystem_stm32f4xx.h文件在

STM32F4xx_DSP_StdPeriph_Lib_V1.9.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include
在这里插入图片描述

4.配置Libraries文件夹
  1. Libraries下存放这些文件
    在这里插入图片描述
  2. 从下面这两个文件夹中拷贝出来

STM32F4xx_DSP_StdPeriph_Lib_V1.9.0\Libraries\STM32F4xx_StdPeriph_Driver\inc
STM32F4xx_DSP_StdPeriph_Lib_V1.9.0\Libraries\STM32F4xx_StdPeriph_Driver\src

在这里插入图片描述
在这里插入图片描述

到这我们所需要的文件都拷贝完成了,下面我们要完成Keil的配置。


三、配置Keil

1.将工程与文件关联起来
  1. 打开工程,点击Manage Project Item(3个小箱子一样的按钮),然后选中Source Group1,点击删除
    在这里插入图片描述
  2. 点击新建3个组,与第二步新建的3个文件夹对应。
    在这里插入图片描述
  3. 选中User组,然后点击Add Files添加文件,将User文件下的文件都添加进来,然后点击Close关闭。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  4. Start组也进行相应的操作,在这里我只展示最终的结果。
    在这里插入图片描述

5.Libraries也类似。
在这里插入图片描述
最终左侧工程结构树如下
在这里插入图片描述

2.修改Keil配置
  1. 选择UTF8编码格式
    在这里插入图片描述
  2. 选择ARM编译器为version5。
    在这里插入图片描述
  3. 勾选生成hex文件
    在这里插入图片描述
  4. 自定义中间文件存放路径,我在这保持默认。
    在这里插入图片描述
  5. 将3个文件夹的文件路径包括进来
    在这里插入图片描述
  6. 选择ULINK2调试模式,并且设置为快捷下载。
    在这里插入图片描述
  7. 添加两个宏定义

STM32F40_41xxx,USE_STDPERIPH_DRIVER

在这里插入图片描述
这两个宏定义来源于

在这里插入图片描述

在这里插入图片描述
至此我们的keil配置已经完成,但是此时编译还是会报错,因为官方给我们的库函数文件存在一定的不适配,我们需要进一步进行调整。

3.修改引入的文件内容
  1. 首先将main.c文件修改成如下,方便寻找错误
#include "stm32f4xx.h"                  // Device header

int main(void)
{
	while(1)
	{
		
	}
}

在这里插入图片描述
此时我们点击编译,会出现大量的报错,我们可以根据报错来修改我们工程。

3.1修改报错

错误1:

Start\stm32f4xx.h(11581): warning: #47-D: incompatible redefinition of macro “DBGMCU_APB2_FZ_DBG_TIM1_STOP” (declared at line 11574)
#define DBGMCU_APB2_FZ_DBG_TIM1_STOP DBGMCU_APB1_FZ_DBG_TIM1_STOP
Start\stm32f4xx.h(11582): warning: #47-D: incompatible redefinition of macro “DBGMCU_APB2_FZ_DBG_TIM8_STOP” (declared at line 11575)
#define DBGMCU_APB2_FZ_DBG_TIM8_STOP DBGMCU_APB1_FZ_DBG_TIM8_STOP
Start\stm32f4xx.h(11583): warning: #47-D: incompatible redefinition of macro “DBGMCU_APB2_FZ_DBG_TIM9_STOP” (declared at line 11576)
#define DBGMCU_APB2_FZ_DBG_TIM9_STOP DBGMCU_APB1_FZ_DBG_TIM9_STOP
Start\stm32f4xx.h(11584): warning: #47-D: incompatible redefinition of macro “DBGMCU_APB2_FZ_DBG_TIM10_STOP” (declared at line 11577)
#define DBGMCU_APB2_FZ_DBG_TIM10_STOP DBGMCU_APB1_FZ_DBG_TIM10_STOP
Start\stm32f4xx.h(11585): warning: #47-D: incompatible redefinition of macro “DBGMCU_APB2_FZ_DBG_TIM11_STOP” (declared at line 11578)
#define DBGMCU_APB2_FZ_DBG_TIM11_STOP DBGMCU_APB1_FZ_DBG_TIM11_STOP

在这里插入图片描述
修改1:
在文件夹中找到stm32f4xx.h文件,右键属性,取消勾选只读。
在这里插入图片描述
然后再keil中,双击错误定位到stm32f4xx.h文件,注释掉报错的地方。
在这里插入图片描述
在这里插入图片描述

错误2:

User\stm32f4xx_it.c(25): error: #5: cannot open source input file “main.h”: No such file or directory

修改2:
在这里插入图片描述
在这里插入图片描述
错误3:

User\stm32f4xx_it.c(136): warning: #223-D: function “TimingDelay_Decrement” declared implicitly

修改3:
在这里插入图片描述
在这里插入图片描述
错误4:
由于我们在标准库函数Libraries中引入了不适配的函数库文件,所以会报错,我们可以查看stm32f4xx_conf.h文件可以筛选出我们所使用的开发板不适配的函数库。
在这里插入图片描述
在这里插入图片描述
根据查找,我需要移除

stm32f4xx_dma2d.c,stm32f4xx_dma2d.h
stm32f4xx_fmc.c,stm32f4xx_fmc.h
stm32f4xx_itdc.c,stm32f4xx_itdc.h

在这里插入图片描述
至此,所有错误排查完,点击编译,0error,0warning,那么我们的工程模板就新建完成了。


参考博客

参考博客:https://blog.youkuaiyun.com/qq_64931749/article/details/133439199

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值