当前位置:   article > 正文

【STM32】STM32F103ZET6 创建工程模版详解(固件库)_stm32f103zet6的固件库

stm32f103zet6的固件库

00. 目录

01. 固件库概述

ST(意法半导体)为了方便用户开发程序,提供了一套丰富的 STM32标准外设函数库库,简称固件库

固件库版本

STM32F10x_StdPeriph_Lib_V3.5.0

02. 创建工程步骤

2.1 在建立工程之前,我们在电脑的某个目录下面建立一个文件夹,名字为 00_Template。

笔者目录为E:\Program Data\Keil\00_Template

2.2 在上述00_Template目录下创建一下四个目录

在这里插入图片描述

CORE 用来存放核心文件和启动文件,OBJ 是用来存放编译过程文件以及hex 文件,STM32F10x_FWLib 文件夹顾名思义用来存放 ST 官方提供的库函数源码文件。

2.3 点击 MDK 的菜单:Project –>New Uvision Project ,

在这里插入图片描述

2.4 将目录定位到刚才建立的文件夹00_Template 之下,然后定位到 USER 目录下面,我们的工程文件就都保存到 USER 文件夹下面。工程命名为Template,点击保存。

在这里插入图片描述

2.5 选择 CPU 的界面,就是选择我们的芯片型号。

STMicroelectronics→STM32F1 Series→STM32F103→STM32F103ZET6(如果使用的是其他系列的芯片,选择相应的型号就可以了)

在这里插入图片描述

温馨提示

一定要安装对应的器件 pack 才会显示这些内容哦!

2.6 MDK 会弹出 Manage Run-Time Environment 对话框, 点击取消即可。

在这里插入图片描述

2.7 点击取消之后得到如下界面

在这里插入图片描述

2.8 将固件库目录下面的 src,inc 文件夹拷贝到我们刚才建立的 STM32F10x_FWLib 文件夹下面。

固件库目录:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver

目的目录:00_Template\STM32F10x_FWLib

在这里插入图片描述

2.9 将固件库包里面相关的启动文件复制到我们的工程目录 CORE 之下。

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport 下面,将文件 core_cm3.c和文 件core_cm3.h 复 制到CORE 目录里面。

2.10 将里面 startup_stm32f10x_hd.s 文件复制到 CORE 下面

定位到目录STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\a
rm 下面,将里面 startup_stm32f10x_hd.s 文件复制到 CORE 下面。

在这里插入图片描述

2.11 将三个文件 stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h,复制到我们的USER目录之下。

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 下面将里面的三个文件 stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h,复制到我们的 USER目录之下。

2.12 将4个文件main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h 复制到 USER 目录下面。

然后将STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 下面的 4 个文件main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h 复制到 USER 目录下面。

在这里插入图片描述

2.13 将上述文件添加到我们的工程中去。右键点击 Target1,选择 Manage Project Items。

在这里插入图片描述

2.14 Project Targets一栏,我们将Target名字修改为Template,然后在Groups一栏删掉一个SourceGroup1,建立三个 Groups:USER,CORE,FWLIB。然后点击 OK。

在这里插入图片描述

2.15 右键点击点击Tempate,选择选择 Manage Project Itmes,然后选择需要添加文件的 Group,添加对应的文件。

我们选择 FWLIB, 然 后 点 击 右 边 的 Add Files, 定 位 到 我 们 刚 才 建 立 的 目 录,STM32F10x_FWLib/src 下面,将里面所有的文件选中(Ctrl+A),然后点击 Add,然后 Close。

CORE 下面需要添加的文件为 core_cm3.c,startup_stm32f10x_hd.s ( 注意,默认添加的时候文件类型为.c, 也就是添加 startup_stm32f10x_hd.s 启动文件的时候,你需要选择文件类型为 All files 才能看得到这个文件),

USER 目录下面需要添加的文件为 main.c,stm32f10x_it.c,system_stm32f10x.c.这样我们需要添加的文件已经添加到我们的工程中了,最后点击 OK
在这里插入图片描述

2.16 选择编译中间文件编译后存放目录

在编译之前我们首先要选择编译中间文件编译后存放目录。方法是点击魔术棒,然后选择“Output”选项下面的“Select folder for objects…”,然后选择目录为我们上面新建的 OBJ 目录。这里大家注意,如果我们不设置 Output 路径,那么默认的编译中间文件存放目录就是 MDK 自动生成的 Objects 目录和 Listings 目录。

在这里插入图片描述

2.17 设置头文件目录

对于任何一个工程,我们都需要把工程中引用到的所有头文件的路径都包含到进来 。回到工程主菜单,点击魔术棒 ,出来一个菜单,然后点击 c/c++选项.然后点击Include Paths 右边的按钮。弹出一个添加 path 的对话框,然后我们将图上面的 3 个目录添加进去。记住,keil 只会在一级目录查找,所以如果你的目录下面还有子目录,记得 path一定要定位到最后一级子目录。然后点击 OK.

在这里插入图片描述

添加好目录之后的情形

在这里插入图片描述

2.18 添加宏定义

STM32F10X_HD,USE_STDPERIPH_DRIVER

在这里插入图片描述

2.19 将main.c复制改为以下代码

#include "stm32f10x.h"

//初始化PB5和PE5为输出口.并使能这两个口的时钟		    
//LED IO初始化
void LED_Init(void)
{
	GPIO_InitTypeDef  GPIO_InitStructure;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);	 //使能PB,PE端口时钟
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;				 //LED0-->PB.5 端口配置
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
	GPIO_Init(GPIOB, &GPIO_InitStructure);					 //根据设定参数初始化GPIOB.5
	GPIO_SetBits(GPIOB,GPIO_Pin_5);						 //PB.5 输出高

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;	    		 //LED1-->PE.5 端口配置, 推挽输出
	GPIO_Init(GPIOE, &GPIO_InitStructure);	  				 //推挽输出 ,IO口速度为50MHz
	GPIO_SetBits(GPIOE,GPIO_Pin_5); 						 //PE.5 输出高 
}
 
 void delay_ms(u32 count)
 {
	u32 i=0;
	for(;i<count * 10000;i++);
 }

 
int main(void)
{ 
	LED_Init();		        //初始化LED端口
	while(1)
	{
		GPIO_ResetBits(GPIOB,GPIO_Pin_5);  //LED0对应引脚GPIOB.5拉低,亮  等同LED0=0;
		GPIO_SetBits(GPIOE,GPIO_Pin_5);   //LED1对应引脚GPIOE.5拉高,灭 等同LED1=1;
		delay_ms(300);  		   //延时300ms
		
		GPIO_SetBits(GPIOB,GPIO_Pin_5);	   //LED0对应引脚GPIOB.5拉高,灭  等同LED0=1;
		GPIO_ResetBits(GPIOE,GPIO_Pin_5); //LED1对应引脚GPIOE.5拉低,亮 等同LED1=0;
		delay_ms(300);                     //延时300ms
	}
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

2.20 配置让编译之后能够生成 hex 文件。

同样点击魔术棒,进入配置菜单,选择 Output。然后勾上下三个选项。 其中 Create HEX file 是编译生成 hex 文件,Browser Information 是可以查看变量和函数定义。

在这里插入图片描述

2.21 编译整个工程,如果没有任何报错,则整个工程已经创建好了。

03. 讨论

参考: 【STM32】STM32F103C8T6 non-ASM statement in naked function is not supported错误

04. 附录

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/541960
推荐阅读
相关标签
  

闽ICP备14008679号