STM32单片机 day01
0. 大纲
- MCU基础+ARM体系结构
- STM32-GPIO编程
- STM32-通信(UART、IIC、SPI)
- STM32-中断系统
- STM32-时钟系统
- STM32-定时器+ADC
- STM32-DMA+屏幕使用
1. 计算机基础
1.1. 计算机组成
输入设备,输出设备,存储器,运算器,控制器
- 输入设备:将其他物理量转化为计算机可识别的电信号
- 输出设备:将电信号转化为人或者其他设备能理解的信号
- 运算器:CPU对信息处理和运算的部件,常进行算术运算和逻辑运算,其核心是算术逻辑单元ALU,CPU中用各种各样的数字电路搭配成各种各样的运算电路,如:加、减法等。
- 控制器:计算机的指挥中心
- 存储器:存放程序和数据,计算机实现存储程序控制的基础,RAM(内存),ROM(磁盘)
1.2. 三级存储
名称 | cache | 内存(主存) | 硬盘(辅存) |
---|---|---|---|
运行速度 | 速度快 | 速度中 | 速度最慢 |
价格 | 贵 | 中 | 低 |
容量 | 小(10MB) | 中(16GB) | 大(1TB) |
断电 | 断电丢失 | 断电丢失 | 断电不丢失 |
CPU访问 | CPU可以直接访问 | CPU可以直接访问 | CPU不能直接访问 |
存储 | 执行程序中活跃的部分 | 存储当前正在执行的程序和数据 | 存储暂时不运行的程序和数据,需要时再传送到主存 |
举例 | 比如游戏的方向技能等 | 游戏程序的依赖 | 游戏的程序本体 |
Cache 对程序员来说一般会有透明性,也就是程序员其实看不到 Cache 的,因此不能对它进行操作
1.3. IO逻辑
计算机系统中的高低电平逻辑1,0,数据在计算机中的存储、传输、运算都是以二进制形式进行的。
1.4. 总线
计算机各部件之间传输信息的公共通信干线。由导线组成的传输线束。 每条传输线一次传1位二进制数。
分类 | 数据总线 | 地址总线 | 控制总线 |
---|---|---|---|
CPU操作 | 传输数据 | 访问存储地址 | 对外部设备进行控制 |
宽度 | 决定CPU与外界的数据传输速度最大数据传输量 | CPU能访问到的最大内存地址寻址能力 | 决定CPU对外部器件的控制能力 |
DMA总线
直接存储器访问,作用是不通过CPU直接在存储器和外部设备之间进行数据传输
2. 单片机
2.1. 单片机简介
- 单片微型计算机(SCM),微控制单元(MCU)(1990年以后)
- 组成:CPU,随机存储器 RAM,只读存储器ROM,定时器/计时器,多种I/O口,中断系统
- 小而完善的微型计算机系统
SoC: 片上系统
- 产品
有专用目标的集成电路 - 技术
确定功能——》软/硬件划分——》完成设计 - SoC就是定制功能的MCU
2.2. 单片机型号
- 51单片机
1. STC89C51——宏晶科技 STC
2. AT89C51——ATMEL - 32单片机
1. STM32——意法半导体ST
2. GD32——兆易创新GD
2.3. 开发板/最小系统板
开发板: 开发板通常是学习用途,研发、研究、学习
最小系统板: 最小系统板是个核心板,常用于做项目,也可以作为模块在产品里在直接用。
3. STM32
3.1. 简介
STM32是意法半导体公司生产一款32位的微控制器。
3.2. STM32 的优势
- 产品型号丰富,可选择性强;
- 运算速度快,功耗低;
- 处理器外设接口丰富;
- 库函数开发体系学习资料多,应用广泛。
3.3. 命令规范
ST——意法半导体
M——微控制器
32——32位处理器
U——超低功耗
575——型号
R——64引脚
I——存储:2MB
T——TQFP封装
6—— -40 ~ 85
4. ARM(CPU)体系结构
4.1. 认识ARM
- ARM是一家公司,不制造芯片且不向终端用户出售芯片,只转让设计方案
- ARM可以表示一些处理器的统称
Cortex-X系列
超高性能,为AI赋能,为人工智能运行提供效能
Cortex-A系列
针对开放式操作系统的高性能处理器
应用于智能手机、数字电视、智能平板等高端运用
Cortex-R系列
提供非常高的性能和吞吐量,同时保持精准的时序属性和可预测的中断延时,通常用于时序关键的应用中,针对实时系统、满足实时性的控制需求
应于汽车制动系统、动力系统等
Cortex-M系列
为单片机驱动的系统提供了低成本优化方案
应用于传统的微控制器市场、智能传感器、汽车周边、物联网设备等 - ARM表示一种指令集
ARM指令集:所有指令(机器码),专用32bit存储空间,代码灵活,指令简洁,执行ARM指令PC每次自加4 - ARM的命名有指令集架构、 处理器架构、 处理器型号三类命名规则
架构,架构指支持的汇编指令集
问:目前主流处理器架构?
ARM架构、Intel X86/X64架构、MIPS架构、RISC-V(开源)
4.2. 指令集(RISC和CISC)
- 精简指令集(RISC):微处理器
只保留常用的的简单指令,硬件结构简单,复杂操作一般通过简单指令的组合实现,一般指令长度固定,且多为单周期指令。RISC处理器在功耗、体积、价格等方面有很大优势,所以在嵌入式移动终端领域应用极为广泛
举例:如有加法运算器 ,没有乘法运算器 - 复杂指令集(CISC);电脑CPU
不仅包含了常用指令,还包含了很多不常用的特殊指令,硬件结构复杂,指令条数较多,一般指令长度和周期都不固定
CISC处理器在性能上有很大优势,多用于PC及服务器等领域
4.3. Cortex-M33的寄存器
通用寄存器
R0-R12:13个通用寄存器。其中 R0-R7为低端寄存器,可作为16位或32 位指令操作数,R8-R12为高端寄存器,只能用作32位操作数
R13:栈指针寄存器 SP(the stark pointer),它用于访问堆栈内存(例如,堆栈PUSH或POP操作)。
R14:链接寄存器LR(the link register),用于存储子程序或者函数调用的返回地址
R15:程序计数器PC(the program counter register)存储下一条将要执行的指令的地址。
特殊寄存器
xPSR:组合程序状态寄存器,该寄存器由三个程序状态寄存器组成
- 应用程序状态寄存器 (APSR):保存程序计算结果的状态标志 N负数标志 Z零标志 C进位借位标志 V溢出标志
- 中断程序状态寄存器 (IPSR):包含当前ISR(中断服务程序)的异常编号
- 执行程序状态寄存器 (EPSR):包含Thumb状态位
CONTROL:控制寄存器
控制处理器处于线程模式时,使用哪个堆栈
=0,使用MSP 处理器模式时,固定使用MSP
=1,使用PSP
4.4. CPU运行原理
- 取指:控制器将PC寄存器中的值发送给内存,内存将对应地址中的指令传送回CPU的指令寄存器IR中
- 译码:指令译码器对IR中的指令进行识别,将指令解析成具体的运算操作
- 执行:控制器控制运算器中对应的运算单元进行运算,运算结果写入寄存器
4.5. 指令流水线
4.5. ARM的数据类型
- char(字节):8位
- halfword(半字):16位
- word(全字):32位
4.6. 字节序
ARM一般使用的是小端对齐,低地址存到低地址,高地址存放到高地址
4.7. ARMv8-M的指令集
ARM
- ARM指令集 32位精简指令集;
- 指令长度固定;降低编码数量产生的耗费,减轻解码和流水线的负担;
Thumb
- Thumb指令集指令宽度16位;
- Thumb指令集是ARM指令集的一个子集;
- 与32位指令集相比,大大节省了系统的存储空间;(密度高)
- Thumb指令集不完整,所以必须配合ARM指令集一同使用。
问:Thumb指令集和ARM指令集的区别?
STM32G0
系统主要由以下几个模块组成 :
● 二个主模块 :
– Cortex-M0+ 内核及先进高性能总线 (AHB bus)
– 通用 DMA (通用的直接存储器存取)
● 三个从模块 :
– 内部 FLASH
– 内部SRAM
– AHB和AHB到APB的连接桥,所有的外设都挂在APB总线上
问:flash和SRAM的区别?
Flash存储器是一种非易失性存储器,可以在掉电之后保存数据,通常用于存储程序代码。Flash存储器的可写入次数有限,且需要执行擦除操作才能写入新的数据,因此,在使用过程中需要注意擦写周期和数据备份问题。
SRAM存储器则是一种易失性存储器,具有相对较快的读写速度和无限的读写次数,但掉电时将会丢失所有内容。SRAM存储器主要用于暂存数据和临时变量,读写操作由CPU直接完成,访问速度较快。
单片机的Flash存储器和SRAM存储器通常都嵌入在单片机芯片内部,能够方便地实现对程序和数据的读写操作。通常,编译器会将程序代码烧录到Flash存储器中,并使用SRAM存储器来存储变量、函数堆栈和其他临时数据。
问:什么是外设?如何理解片上外设?
与传统的外设不同,片上外设通常具有以下优点:
- 高效性:片上外设能够与主处理器实现高速的数据传输,响应时间短,执行效率高。
- 集成度高:片上外设多个模块都嵌入到处理器芯片内部,极大地降低了PCB面积和电路复杂度。
- 低功耗:处理器和片上外设采用相同的工艺,能够满足高密度和低功耗的需求。
- 可靠性高:提高了整体系统的可靠性和稳定性,也降低了电磁干扰的可能。
问:AHB和APB的区别?
AHB(高级高性能总线)是高速总线,是一种系统总线,它主要负责连接处理器、DMA等一些内部接口。AHB系统由主模块、从模块和基础结构3部分组成,整个AHB总线上的传输都由主模块发出,由从模块负责回应。
APB(高级外设总线)是低速总线,它主要负责连接外围设备,它又分为APB1和APB2,它的总线架构不像 AHB支持多个主模块,在APB里面唯一的主模块就是APB桥。