STM32学习笔记

7/29/2021 STM32单片机

初学STM32
相对于51单片机而言,STM32的学习会复杂许多,也比较难
但功能强大,能适应很多场景

# 前言

# STM32命名解释

# 产品系列

STM32 = 基于ARM的32位微控制器

# 产品类型

F = 通用类型

# 产品子系列

101 = 基本型
102 = USB型,USB2.0全速设备
103 = 增强型
105或107 = 互联型

# 引脚数目

T = 36脚
C = 48脚
R = 64脚
V = 100脚
Z = 144脚
B = 208脚
N = 216脚

# 闪存存储器容量(FLASH)

4 = 16K字节的闪存存储器
6 = 32K字节的闪存存储器
8 = 64K字节的闪存存储器
B = 128K字节的闪存存储器
C = 256K字节的闪存存储器
D = 384K字节的闪存存储器
E = 512K字节的闪存存储器
I = 2048K字节的闪存存储器

# 封装

H = BGA
T = LQFP
U = VFQFPN
Y = WLCSP64

# 温度范围

6 = 工业级温度范围, -40°C~85°C
7 = 工业级温度范围, -40°C~105°C

# 内部代码

A 或者空 (详见产品数据手册)

# 选项

xxx = 已编程的器件代号(3个数字)
TR = 卷带式包装

# 文件目录结构

基于固件库: (以“STM32F4xx标准例程”为准)

project(跟目录)
    |--CORE(核心与启动文件)
    .    |-core_cm4.h
    .    |-core_cm4_simd.h
    .    |-startup_stm32f40_41xxx.s
    |--FWLIB(官方库函数源码)
    .    |--inc
    .    .   |-misc.h
    .    .   |-stm32f4xx_adc.h
    .    .   |-....
    .    |--src
    .    .   |-misc.c
    .    .   |-stm32f4xx_adc.c
    .    .   |-....
    |--OBJ(编译文件以及hex文件)
    .    |-xxx.crf
    .    |-xxx.d
    .    |-xxx.o
    .    |-xxx.lst
    .    |-xxx.hex
    |--SYSTEM(通用文件)
    .    |--delay
    .    .   |-delay.c
    .    .   |-delay.h
    .    |--sys
    .    .   |-sys.c
    .    .   |-sys.h
    .    |--usart
    .    .   |-usart.c
    .    .   |-usart.h
    |--USER(工程代码)
    .    |-main.c
    .    |-xxx.uvproj
    .    |-....
    |-keilkill.bat
    |-readme.txt
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

启动文件需要区分大小
ld.s小容量(FLASH<=32K)
md.s中等容量(64K<=FLASH<=128K)
hd.s大容量(256K<=FLASH)

基于寄存器:
project
    |--CORE(核心文件)
    .   |-core_cmx.h
    .   |-core_cmx_simd.h
    .   |-startup_stm32fxxx_xxx.s
    |--FWLIB(启动文件)
    .   |--inc
    .   .   |-xxx.h
    .   .   |-....
    .   |--src
    .   .   |-xxx.c
    .   .   |-....
    |--(ProjectName)(工程文件)
    .   |--xxxx
    .   |--....
    |--OBJ(链接文件夹)
    .   |-xxx.o
    .   |-xxx.d
    .   |-xxx.crf
    .   |-....
    |--SYSTEM(通用文件夹)
    .   |--delay
    .   .   |-delay.c
    .   .   |-delay.h
    .   |--sys
    .   .   |-sys.c
    .   .   |-sys.h
    .   |--usart
    .   .   |-usart.c
    .   .   |-usart.h
    |--USER(用户自定义文件夹)
    .   |-xxx.uvproj
    .   |-main.c
    .   |-xxx.c
    .   |-xxx.h
    .   |-....
    |-keilkill.bat
    |-readme.txt
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

# STM32工作模式

# 输入模式

# 输入浮空

# 输入上拉

# 输入下拉

# 模拟输入

# 输出模式

# 开漏输出

# 开漏复用功能

# 推挽式输出

# 推挽式复用功能

# 3种最大翻转速度

  • 2MHz
  • 10MHz
  • 50MHz

# 库函数

# GPIO库函数介绍

GPIO-1
|--FWLIB文件夹下需要包含以下文件
....|-misc.c
....|-stm32fxxx_gpio.c
....|-stm32fxxx_rcc.c
....|-stm32fxxx_usart.c(可选)
....|-stm32fxxx_dbgmcu.c(可选)

# GPIO初始化函数

void GPIO_Init(GPIO_TypeDef*GPIOx, GPIO_InitTypeDef*GPIO_InitStruct);
1

作用: 初始化一个或多个IO口(同一组)的工作方式和速度。

GPOIx: GPIOA~GPIOG

typedef struct
{
    uint16_t GPIO_Pin;              //指定要初始化的IO口  
    GPIOSpeed_TypeDef GPIO_Speed;   //设置IO口输出速度  
    GPIOMode_TypeDef GPIO_Mode;     //设置工作模式:8种中的一个
}GPIO_InitTypeDef;
1
2
3
4
5
6

注意
外设(包括GPIO)在使用之前,几乎都要先使用对应的时钟。

最近更新: 11/24/2024, 10:03:25 AM