Tangwx

Tangwx

博客网站

02.新建STM32工程

2 新建 STM32 工程#

2 新建 STM32 工程#

2.1 STM32F10X 型号分类及缩写#

STM32F103C8T6C8T6的 flash 是 64K,所以我们选择 MD 的启动文件

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

2.2 新建工程步骤#

建立工程文件夹,Keil 中新建工程,选择型号

工程文件夹里建立 Start、Library、User 等文件夹,复制固件库里面的文件到工程文件夹

工程里对应建立 Start、Library、User 等同名称的分组,然后将文件夹内的文件添加到工程分组里

工程选项,C/C++,Include Paths 内声明所有包含头文件的文件夹

工程选项,C/C++,Define 内定义 USE_STDPERIPH_DRIVER,其他的工程在这里还声明了一个STM32F10x_MD的字符串,但Keil5在新建工程后自动帮我们声明好了这个,因此不用再重复声明

工程选项,Debug,下拉列表选择对应调试器,Settings,Flash Download 里勾选 Reset and Run

2.3 工程架构图#

image-20220809173713894

2.4 keil 5 新建工程结构图#

image-20220821155147410

Start文件夹:#

.s启动文件,在 Keil 软件里只能添加一个,本次我们选择startup_stm32f10x_md.s启动文件

stm32f10x.h的外设寄存器描述文件,作用与 51 单片机的REGX52.h一样,用来描述 STM32 有哪些寄存器和它对应的地址

system_stm32f10x.csystem_stm32f10x.h文件是用来配置时钟的,STM32主频72MHz就是 system 文件里的函数配置的

core_cm3.ccore_cm3.h文件是内核的寄存器描述,它还带了一些内核的配置函数,所以多了个.c文件,

然后在工程选项里添加上 Start 这个文件夹的头文件路径,不然软件找不到.h文件

Library文件夹:#

incsrc两个文件夹里面是 ST 公司封装好的.h.c库文件

System文件夹:#

System 文件夹内存放系统的资源,例如delay.c delay.h

User文件夹:#

main.c文件

stm32f10x_conf.h 文件是用来配置库函数头文件包含关系的,里面还有个用来参数检查的函数定义,这是所有库函数都需要的

stm32f10x_it.cstm32f10x_it.h 文件是用来存放 interrupt 中断函数的

2.5 使用STLink连接stm32单片机#

接线方式:

image

ST-LINK V2STM32
3.3V3V3
SWDIOSWIO
SWCLKSWCLK
GNDGND

main.c

#include "stm32f10x.h"                  // Device header

int main(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //打开C口时钟并使能
	//定义一个结构体
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //通用推挽输出
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; // 13号引脚
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MHz速度
	//配置端口模式
	GPIO_Init(GPIOC, &GPIO_InitStructure);
	//设置端口高低电平
	//GPIO_SetBits(GPIOC, GPIO_Pin_13);//高电平
	GPIO_ResetBits(GPIOC, GPIO_Pin_13);//低电平
	while(1)
	{
		
	}
}

#

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。