STM32学习记录006——新建工程模板(基于固件库)

一、准备工作

1、V3.5固件库包

官方下载地址:https://www.stmcu.com.cn/Search/index?csrf_token=a74ea6e7846099efd495e31fd1b39a41&search_keywords=STSW-STM32054&type=design_resource&page=1
在这里插入图片描述
或者打开ST官网,搜索:STSW_STM32054
注释:其实看不到官方命名原则,在网上找了一个教程就看,还有有点看不懂,就直接搜索了,两个都下载下来了,内容一样,3.5版本的固件库!

2、MDK5开发环境

3、理解库函数版本和寄存器版本之间的关系
(1)固件库就是函数的集合,功能向上为用户提供接口(API)供用户开发,向下连接寄存器,完成对寄存器的操作。
(2)在学习51的时候我们是直接对寄存器进行操作的,但是32这样的板子,所拥有的寄存器有数百个,记忆起来非常麻烦,而且没有必要,所以官方就提供了固件库,大家需要实现什么功能就可以调用库函数完成。
(3)单单学会固件库的使用是不够的,固件库就像是window的图形化界面,虽然还没有图形化那么夸张,但是意思是差不多的,我们想要学习好STM32还是需要了解大概的寄存器控制的变化情况,到后期熟悉库函数的操作后单单看函数名字就可以知道相对于的功能了。
4、了解所以芯片公司的库函数都需要遵守的CMSIS标准
(1)什么是CMSIS标准
CMSIS 标准(Cortex Microcontroller Software Interface Standard),也就是“ARM Cortex™ 微控制器软件接口标准”,他是ARM公司为了让不同的芯片公司生产的Cortex-M3芯片都具有兼容性,和芯片生产厂商共同提出的一套标准。
在这里插入图片描述
如图所示是基于CMSIS应用程序基本架构,CMSIS分为三个基本功能:
a. 内核外设访问层:ARM公司提供,定义处理器内部寄存器地址以及功能函数
b. 中间件访问层:ARM公司提供,定义访问中间件的通用API
c. 外设访问层:定义硬件寄存器的地址以及外设的访问函数
兄弟看到这三个基本功能有什么想法吗?
疑惑:
1、感觉不知道这三个功能具体对应的是芯片的那些部分
2、有人会觉得我们看到这个,知道就还,但是所谓知道就只是我们看到过,实在是对不起我现在把他一个一个字打出来呀
3、我想知道这个地方对应的是芯片的那些部分,是因为这个CMSIS标准是各个芯片公司制定固件库的一个标准,在我们后期的学习和使用过程当中就是调用固件库,但是又不不去了解寄存器部分,所以更加深入的了解一下这个CMSIS标准的功能,是更加有助于我们了解固件库!
4、现在还没有答案,那可以先把基于固件库的过程新建出来,说不定会有答案。

注释:
内核外设访问层,是读写内核寄存器的一个api集合;
中间件访问层,是访问一些如封装的数学函数库,通用库的一个api集合;
外设访问层,是访问芯片外部如psram,外部flash这些api集合。

感谢大哥,帮助解答!!!!

二、新建STM32工程模板

1、新建工程的根目录

在这里插入图片描述

2、在根目录下新建子目录USER

在这里插入图片描述

3、打开MDK5,

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

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

4、复制固件库当中文件到我们自己新建的工程里面

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
到固件库目录下复制文件:
E:\STM32固\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport
在这里插入图片描述

在这里插入图片描述
到固件库目录下复制驱动文件:
E:\STM32固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm
在这里插入图片描述
注释:
在这里插入图片描述
在这里插入图片描述
到固件库目录:
E:\STM32固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x
在这里插入图片描述

在这里插入图片描述
到固件库目录:
E:\STM32固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template
在这里插入图片描述
在这里插入图片描述
到这个地方我们所需要的文件就复制过来了!!!
注意理解一下,现在这些文件仅仅实在工程目录下,不能用真正的被工程应用!

5、到MDK5里面加载文件

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

6、修改编译后的文件存放目录

点击魔术棒
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
报错可能原因
(1)工程里面引用的头文件根本不存在
(2)头文件路径没有包含工程里面

7、添加头文件路径

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

在这里插入图片描述

在这里插入图片描述
重新编译还是有报错
在这里插入图片描述

8、配置全局的宏定义变量

STM32F10X_HD,USE_STDPERIPH_DRIVER

点击魔法棒
在这里插入图片描述
在这里插入图片描述

9、替换main.c文件

在这里插入图片描述

#include "stm32f10x.h"
 void Delay(u32 count)
 {
  u32 i=0;
  for(;i<count;i++);

 }
 int main(void)
 {	
  GPIO_InitTypeDef  GPIO_InitStructure;
 	
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE);	 //ʹÄÜPA,PD¶Ë¿ÚʱÖÓ
	
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;				 //LED0-->PA.8 ¶Ë¿ÚÅäÖÃ
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //ÍÆÍìÊä³ö
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO¿ÚËÙ¶ÈΪ50MHz
  GPIO_Init(GPIOA, &GPIO_InitStructure);					 //¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOA.8
  GPIO_SetBits(GPIOA,GPIO_Pin_8);						 //PA.8 Êä³ö¸ß

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;	    		 //LED1-->PD.2 ¶Ë¿ÚÅäÖÃ, ÍÆÍìÊä³ö
  GPIO_Init(GPIOD, &GPIO_InitStructure);	  				 //ÍÆÍìÊä³ö £¬IO¿ÚËÙ¶ÈΪ50MHz
  GPIO_SetBits(GPIOD,GPIO_Pin_2); 						 //PD.2 Êä³ö¸ß 	  
  while(1)
	{
	    GPIO_ResetBits(GPIOA,GPIO_Pin_8);
	    GPIO_SetBits(GPIOD,GPIO_Pin_2);
		Delay(3000000);
		GPIO_SetBits(GPIOA,GPIO_Pin_8);
		GPIO_ResetBits(GPIOD,GPIO_Pin_2);
		Delay(3000000);
	}
 }


粘贴上面的代码到main.c
在这里插入图片描述

在这里插入图片描述
注释:如果从文本里面复制出来的注释部分是乱码
在这里插入图片描述
在这里插入图片描述

10、添加实用性非常强的文件夹

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

在这里插入图片描述
在这里插入图片描述
添加头文件
在这里插入图片描述
在这里插入图片描述
注释:
我们在项目里面没有看见头文件!!!
在这里插入图片描述
关闭工程,重新打开,就能看到
在这里插入图片描述

三、STM32固件库包简介

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在FWLIB目录下的.c和.h文件,其实可以我们主函数用到再添加,不去全部都添加进来!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

li星野

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值