新建基于STM32F40x固件库的MDK5(keil5)工程模板

直接开始建
1.先给工程建一个文件夹,就取名叫Template(模板)吧,另外下面建立几个几个子文件夹(规范,不要乱建),子文件夹分别是CORE、FWLIB、OBJ、SYSTEM、USER。在这里插入图片描述
2.打开keil5,选择Project➡New μVision Project菜单项,将目录定位到刚才建立的文件夹Template的子文件USER中,我们将工程名也取名为Template,然后保存。
在这里插入图片描述
在这里插入图片描述
2.接下来回弹出一个选择芯片型号的界面,这里如图选择即可,我的芯片系列是STM32F407ZG(读者可以选择自己的芯片系列)
注意:一定要安装对应的期间pack才会显示出芯片选择
在这里插入图片描述
在这里插入图片描述
点击OK后会弹出如下窗口,在这个界面可以添加自己需要的组件,这里不做介绍,点击Cancel即可
在这里插入图片描述
在这里插入图片描述
3.检查是否建立正确,此时点开USER目录,应该包含两个文件夹和两个文件,如下图所示。
在这里插入图片描述
4.现在我们要将官方固件库包里的源码文件复制到我们的工程目录文件夹下。博主使用的固件库版本是STM32F4xx_DSP_StdPeriph_Lib_V1.4.0,下载链接如下https://download.csdn.net/download/OXOXOX6/12191624

打开固件库,定位到这个目录下
STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\STM32F4xx_StdPeriph_Driver,将目录下的src和inc文件夹复制到我们刚才建立的Template的子文件夹FWLib下
在这里插入图片描述
在这里插入图片描述
src下存放的是固件库.c文件,inc存放的是对应的.h文件,每个外设对应一个.c和.h头文件

5.将固件库包里面的启动文件复制到我们Template的子文件CORE下,
打开固件库定位到
STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm下,将文件startup_stm32f40_41xxx.s复制到CORE目录下面。
在这里插入图片描述
在这里插入图片描述
然后定位到STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Include下,
将里面的头文件core_cm4.h和core_cm4_simd.h也复制到CORE目录下面
在这里插入图片描述
在这里插入图片描述

6.接下来复制工程模板需要的一些其他头文件和源文件到我们的工程,首先定位到目录
STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\SRM32F4xx\Include
将stm32f4xx.h和system_stmf4xx.h复制到USER下
在这里插入图片描述
在这里插入图片描述然后定位到STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Project\STM32F4xx_StdPeriph_Templates下
复制main.c、stm32f4xx_conf.h、stm32f4xx_it.c、stm32f4xx_it.h、system_stm32f4xx.c五个文件到USER下
在这里插入图片描述
在这里插入图片描述
到此需要复制固件库文件就结束了

8.接下来就是将复制过来的文件加入到我们的工程中。打开keil5如下图所示,右键单击 Target1 ,在弹出的菜单中选择Manage Pro-ject Items
在这里插入图片描述
如下图所示将Target1名字修改为Template,然后再Groups栏删掉Source Group1,新建3个分别是USER、CORE和FWLIB,然后点击OK窗口会自动关闭
在这里插入图片描述
在这里插入图片描述
9.再次右键单击 Target1 ,在弹出的菜单中选择Manage Pro-ject Items
在这里插入图片描述
打开后单击FWLIB,然后单击右边的Add Files
在这里插入图片描述
然后定位到我们自建的子文件FWLIB\src下,将src下所有文件选中(Ctrl+A)再单击Add,然后单击close,就可以再Files列表下看到已经有了我们添加的文件在这里插入图片描述
在这里插入图片描述
可以看到,添加进来的有adc.c结尾的文件,对应的就是模数转换外设,这里所有的文件都对应一个外设,如果你用不到的可以不添加,新手全部一起添加,以后学会了在慢慢删除多余文件

这里我们把一个名为stm32f4xx_fmc.c的文件删掉,我们32F40系列用不着,这是F42和F43用的,注意别删错了,有很多相似的
在这里插入图片描述
10.单击USER,再单击Add Files定位到USER文件夹下,添加如下图所示三个文件进来
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

11.添加启动文件(此处务必跟着图做,不然容易抓狂)
在这里插入图片描述
单击CORE,再单击Add Files,定位到CORE,会发现是空的
在这里插入图片描述
其实并不是这里是空的,而是文件类型需要更换,看下图
在这里插入图片描述
在更换文件类型为Ail files后我们就会愉快的发现,有文件了
在这里插入图片描述
这里我们再次全选,单击Add,然后单击Close,就可以看到已经添加成功!
在这里插入图片描述
然后我们单击OK,这一步就完成了,此时我们点开工程就可以看到里面已经有文件了,如下图左边
在这里插入图片描述
12.接下来我们要告诉MDK应该到哪个目录下去找这些添加了的头文件
这一步是很重要的,没有设置头文件路径那么工程会报错头文件路径找不到
步骤如图,USER、CORE、FWLIB三个都需要添加

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:下面这一步请仔细看,非常容易惯性思维出错
在这里插入图片描述
最后完成是下图这个样子的,然后点OK,在点OK即可
在这里插入图片描述

13.不要着急,32单片机作为目前主流单片机功能强大,工程自然也稍显繁琐
接下来我们需要添加一个全局宏定义标识符,方法如下图
在这里插入图片描述
然后跟着下面步骤在Define中输入(最好直接复制)
STM32F40_41xxx,USE_STDPERIPH_DRIVER

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
单击OK
14.更改main.c文件为最后检验工程做准备,我们打开main.c文件,并将下面这段代码复制到当中

#include "stm32f4xx.h"
void Delay(__IO uint32_t nCount);
void Delay(__IO uint32_t nCount)
{
  while(nCount--){}
}

int main(void)
{
  GPIO_InitTypeDef  GPIO_InitStructure;
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_Init(GPIOF, &GPIO_InitStructure);

  while(1){
		GPIO_SetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);
		Delay(0x7FFFFF);
		GPIO_ResetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);
		Delay(0x7FFFFF);
	
	}
}

在这里插入图片描述
在这里插入图片描述
15.点击编译,0错误0警告大功告成!
在这里插入图片描述

结语:很多时候新手建立会出现各种各样的错误,下面提供正点原子标准工程模板下载的链接(不需要积分)
链接:https://pan.baidu.com/s/1zxtFE27oTy9rhWgmkuo28w
提取码:rd8j

如有错误,欢迎指正。
本文末尾提供的资源仅供学习使用。

发布了8 篇原创文章 · 获赞 4 · 访问量 300

猜你喜欢

转载自blog.csdn.net/OXOXOX6/article/details/104517478