2 新建 STM32 工程#
2 新建 STM32 工程#
2.1 STM32F10X 型号分类及缩写#
STM32F103C8T6
: C8T6
的 flash 是 64K,所以我们选择 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 |
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 工程架构图#
2.4 keil 5 新建工程结构图#
Start
文件夹:#
.s
启动文件,在 Keil 软件里只能添加一个,本次我们选择startup_stm32f10x_md.s
启动文件
stm32f10x.h
的外设寄存器描述文件,作用与 51 单片机的REGX52.h
一样,用来描述 STM32 有哪些寄存器和它对应的地址
system_stm32f10x.c
和system_stm32f10x.h
文件是用来配置时钟的,STM32
主频72MHz
就是 system 文件里的函数配置的
core_cm3.c
和core_cm3.h
文件是内核的寄存器描述,它还带了一些内核的配置函数,所以多了个.c
文件,
然后在工程选项里添加上 Start 这个文件夹的头文件路径,不然软件找不到.h
文件
Library
文件夹:#
inc
和src
两个文件夹里面是 ST 公司封装好的.h
和.c
库文件
System
文件夹:#
System 文件夹内存放系统的资源,例如delay.c
delay.h
User
文件夹:#
main.c
文件
stm32f10x_conf.h
文件是用来配置库函数头文件包含关系的,里面还有个用来参数检查的函数定义,这是所有库函数都需要的
stm32f10x_it.c
和stm32f10x_it.h
文件是用来存放 interrupt 中断函数的
2.5 使用STLink
连接stm32
单片机#
接线方式:
ST-LINK V2 | STM32 |
---|---|
3.3V | 3V3 |
SWDIO | SWIO |
SWCLK | SWCLK |
GND | GND |
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)
{
}
}