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

直接开始建
1.先给工程建一个文件夹,就取名叫Template(模板)吧,另外下面建立几个几个子文件夹(规范,不要乱建),子文件夹分别是CORE、FWLIB、OBJ、SYSTEM、USER。新建基于STM32F40x固件库的MDK5(keil5)工程模板_第1张图片
2.打开keil5,选择Project➡New μVision Project菜单项,将目录定位到刚才建立的文件夹Template的子文件USER中,我们将工程名也取名为Template,然后保存。
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第2张图片
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第3张图片
2.接下来回弹出一个选择芯片型号的界面,这里如图选择即可,我的芯片系列是STM32F407ZG(读者可以选择自己的芯片系列)
注意:一定要安装对应的期间pack才会显示出芯片选择
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第4张图片
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第5张图片
点击OK后会弹出如下窗口,在这个界面可以添加自己需要的组件,这里不做介绍,点击Cancel即可
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第6张图片
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第7张图片
3.检查是否建立正确,此时点开USER目录,应该包含两个文件夹和两个文件,如下图所示。
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第8张图片
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下
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第9张图片
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第10张图片
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目录下面。
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第11张图片
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第12张图片
然后定位到STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Include下,
将里面的头文件core_cm4.h和core_cm4_simd.h也复制到CORE目录下面
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第13张图片
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第14张图片

6.接下来复制工程模板需要的一些其他头文件和源文件到我们的工程,首先定位到目录
STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\SRM32F4xx\Include
将stm32f4xx.h和system_stmf4xx.h复制到USER下
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第15张图片
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第16张图片然后定位到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下
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第17张图片
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第18张图片
到此需要复制固件库文件就结束了

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

这里我们把一个名为stm32f4xx_fmc.c的文件删掉,我们32F40系列用不着,这是F42和F43用的,注意别删错了,有很多相似的
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第26张图片
10.单击USER,再单击Add Files定位到USER文件夹下,添加如下图所示三个文件进来
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第27张图片
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第28张图片
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第29张图片

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

新建基于STM32F40x固件库的MDK5(keil5)工程模板_第36张图片
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第37张图片
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第38张图片
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第39张图片
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第40张图片
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第41张图片
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第42张图片
注意:下面这一步请仔细看,非常容易惯性思维出错
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第43张图片
最后完成是下图这个样子的,然后点OK,在点OK即可
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第44张图片

13.不要着急,32单片机作为目前主流单片机功能强大,工程自然也稍显繁琐
接下来我们需要添加一个全局宏定义标识符,方法如下图
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第45张图片
然后跟着下面步骤在Define中输入(最好直接复制)
STM32F40_41xxx,USE_STDPERIPH_DRIVER

新建基于STM32F40x固件库的MDK5(keil5)工程模板_第46张图片
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第47张图片
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第48张图片
单击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);
	
	}
}

新建基于STM32F40x固件库的MDK5(keil5)工程模板_第49张图片
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第50张图片
15.点击编译,0错误0警告大功告成!
新建基于STM32F40x固件库的MDK5(keil5)工程模板_第51张图片

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

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

你可能感兴趣的:(STM32F4单片机)