Skip to content

Latest commit

 

History

History
135 lines (86 loc) · 4.9 KB

STM32学习笔记(2)标准库工程结构.md

File metadata and controls

135 lines (86 loc) · 4.9 KB
title math date categories tags
STM32学习笔记(2)标准库工程结构
true
2023-08-29 10:47:17 -0700
硬件修炼手册
STM32
STM32

STM32F1 系列标准库压缩包文件:STM32F10x_StdPeriph_Lib_V3.5.0

新建工程步骤总结

  • 建立工程文件夹,Keil 中新建工程,选择型号
  • 工程文件夹里建立 Start、Library、User 等文件夹,复制固件库里面的文件到工程文件夹
  • 工程里对应建立 Start、Library、User 等同名称的分组,然后将文件夹内的文件添加到工程分组里
  • 工程选项,C/C++,Include Paths 内声明所有包含头文件的文件夹
  • 工程选项,C/C++,Define 内定义 USE_STDPERIPH_DRIVER
  • 工程选项,Debug,下拉列表选择对应调试器,Settings,Flash Download里勾选Reset and Run

启动文件

位置:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm

将 8 个启动文件全部放到自己工程的 Start 文件夹下(新建)

image

外设描述文件和时钟配置文件

位置:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x

image

同样也是将这三个文件复制到自己工程的 Start 文件夹下

内核寄存器描述文件

位置:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport

image

同样也是将这两个文件复制到自己工程的 Start 文件夹下

配置 Keil

添加 Start

修改组名,将特定启动文件、外设描述文件和时钟配置文件、内核寄存器描述文件添加进组里

image

图标上带有小钥匙表明是个只读文件

配置头文件路径

image

配置编码格式

image

自动代码补全

image

配置标准库

位置:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src

image共 23 个文件,其中 misc.c 是内核的库函数,其他的就是内核外的外设库函数

将全部文件复制到自己工程的 Library 文件夹下(新建)

同理,将 STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc​ 位置下的头文件也复制到自己工程的 Library 文件夹下

同理,将 Library 文件夹下加进来的 46 个文件添加到 Keil 工程新建 Library 组里

除此之外,还需要将 STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template​ 位置下的 stm32f10x_conf.h​、stm32f10x_it.c​、stm32f10x_it.h​ 三个文件复制到自己工程的 User 文件夹下(新建)

同理,将自己工程的 User 文件夹添加到 Keil 工程新建 User 组里

设置宏编译

在 User 组下创建 main.c 文件,第一行添加 #include "stm32f10x.h"​,然后编译,编译后就可以跳转到 stm32f10x.h​ 文件里了,在文件的底部可以看到宏判断

image

所以需要在工程配置里添加这个宏,下面的 User ​和 Library ​目录也不要忘记添加到 Include Paths​,即可完成使用标准库的配置

image

image

测试代码

#include "stm32f10x.h"                  // Device header

int main(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOC, &GPIO_InitStructure);
	GPIO_SetBits(GPIOC, GPIO_Pin_13);
	//GPIO_ResetBits(GPIOC, GPIO_Pin_13);
	while (1)
	{

	}
}

启动文件选择讲解

从表中可以看出我们的 STM32F103C8T6 因为是 64 的 Flash,所以选择 MD 的启动文件

缩写 释义 Flash 容量 型号
LD_VL 小容量产品超值系列 16~32K STM32F100
MD_VL 中容量产品超值系列 64~128K STM32F100
HD_VL 大容量产品超值系列 256~512K STM32F100
LD 小容量产品 16~32K STM32F101/102/103
MD 中容量产品 64~128K STM32F101/102/103
HD 大容量产品 256~512K STM32F101/102/103
XL 加大容量产品 大于 512K STM32F101/102/103
CL 互联型产品 - STM32F105/107

工程架构讲解

image