前言:之前无论是学习还是使用STM32,都是囫囵吞枣,浅尝辄止,大多数知识都是知其然不知其所以然的状态。因此,这段时间打算系统学一下STM32。相对来说,STM32知识还是很繁杂的,因此选择了提纲挈领的“洋桃”的课程(b站的STM32入门100步,相对原子野火更简短精要,但细节、全面性上肯定不如它们),先把整体知识脉络都过一遍,有一个框架性的把握,学完以后再找机会进一步加强夯实。
因此,文中的图片知识,大多数来自视频的截图(来自洋桃电子)。
欢迎大家批评指正!
文章目录
一、ARM内核框架
Cortex 系列
A系列——高性能用途,面向尖端的基于虚拟内存的操作系统和用户应用
R系列——实时系统
M系列——低功耗、嵌入式用途
ARM公司只生产架构,不做具体芯片
![](https://i-blog.csdnimg.cn/blog_migrate/b3c502d51bdbd40c76177f4b8e21c2fb.png)
二、STM32简介
1 主要ARM Cortex-M 处理器
Cortex-M0、M1 主要用于低功耗
Cortex-M3 中端
Cortex-M4 较高端
2 芯片厂商
ST 意法半导体比较常见,市场较广
STM32F0——ARM Cortex-M0
STM32F1——ARM Cortex-M3
STM32F4——ARM Cortex-M4
![](https://i-blog.csdnimg.cn/blog_migrate/2209c9f58ca4e379ee849ea4a28e1ef3.png)
ST官网可以查阅相关芯片参数信息
3 命名规范
![](https://i-blog.csdnimg.cn/blog_migrate/f31a16e00346982d4752eaaf1cb5ea3d.png)
三、内核与存储器
1 补充信息:数据手册的使用
- 数据手册的首页——基本功能、优势、相应型号
- 目录
- 详细介绍
- F1 - 72M主频
F4 - 108M主频
2 flash、sram
![](https://i-blog.csdnimg.cn/blog_migrate/2dfcd3057316f134245de9da1c5b4cae.png)
- SD、TF卡都是Flash结构
- STM32F1 有 : 64k或128k字节的flash ; 20k字节的SRAM
四、时钟、复位、电源管理
1 电源管理
基本供电: 2.0 - 3.6V 供电(3.3V)
一些IO:兼容 5V
2 时钟管理(时钟树)
![](https://i-blog.csdnimg.cn/blog_migrate/41fe24792336ba6f6542de6ee89dba8a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f722f6a4421e56233098630c1b3bfe6c.png)
五、低功耗和ADC
1 低功耗
睡眠、停机、待机模式
![](https://i-blog.csdnimg.cn/blog_migrate/d79f8803bc415ac8ec22f68f4c632690.png)
2 ADC
- 2个12位ADC ,每个ADC共用多达16个外部通道
- 可DMA
![](https://i-blog.csdnimg.cn/blog_migrate/3515ba69cf423f1a12b556cddff8c594.png)
六、DMA 和 IO
1 DMA
简言之,在不用CPU的情况下暂存数据
- 7通道DMA控制器
- 支持外设:定时器、ADC、SPI、IIC、USART
- 可以在 存储器到存储器、设备到存储器、存储器到设备 的 数据传输。
每个通道有硬件请求逻辑,因此DMA是硬件完成的,不必软件参与。 软件可以触发通道。
![](https://i-blog.csdnimg.cn/blog_migrate/fde8f303759c8e21271d3a90d5c36e21.png)
2 I/O
- 26/37/51/80 个 I/O (对应不同引脚数的芯片)
- 所有I/O都可以映射到16个外部中断
- 几乎所有端口都可以忍受5V信号
3 GPIO
通用输入输出接口 说法不同而已
3.1 模式配置
GPIO引脚可由软件配置模式:
- 输出:推挽 / 开漏
- 输入: 带或者不带 上拉或者下拉
- 复用的功能(复用的外设)
- 除模拟输入端口,所有GPIO引脚都有大电流通过能力
- I/O引脚的外设功能可锁定
- APB2上的I/O可达18MHz的翻转速度
![](https://i-blog.csdnimg.cn/blog_migrate/d48d5c752cf69459ea4d13804f188f87.png)
上拉/下拉——10k电阻
推挽——高强度,大电流输出
3.2 分组
GPIO 分组:PA0-15 、PB0-15 、PC0-15 、PD0-15 、PE0-15
![](https://i-blog.csdnimg.cn/blog_migrate/9f2b1a636d4c5fdaef6c33d000a8018a.png)
七、调试模式和定时器
1 调试模式
串行单线调试SWD(接线少,更常用) 和 JTAG接口
![](https://i-blog.csdnimg.cn/blog_migrate/0f86a62157d0705654ffc833f132dc70.png)
2 定时器
![](https://i-blog.csdnimg.cn/blog_migrate/7d0281e6f89a45dd1e7dc916df1046f9.png)
- 3个16位定时器(普通)——每个有 4个 输入捕获 / 输出比较 / PWM或脉冲计数 的通道
TIMx(2、3、4) 每个定时器都有独立的DMA请求机制 - 1个16位定时器(高级控制)—— 用于电机控制(带死区控制 紧急刹车 )
TIM1 - 2个看门狗定时器——独立的、窗口型的 ,正常工作会定时喂狗(清零),否则到点会复位单片机
独立:内部独立40khz RC 振荡器;
窗口:主时钟驱动 - 1个系统滴答定时器
专用于实时操作系统 24位递减
![](https://i-blog.csdnimg.cn/blog_migrate/58b23e6ce91e51c9fa547840927f0601.png)
八、IIC 和 USART
2个IIC、3个USART
1 IIC
多主模式或从模式,支持标准和快速模式
![](https://i-blog.csdnimg.cn/blog_migrate/3cbabc402be1247fa7fd94938236b219.png)
2 USART
USART :通用同步/异步收发器(带同步时钟线)
UART : 通用异步收发器(没有同步时钟线)
- 常用异步模式,两者区别不大
- 所有USART 支持DMA
- USART 只是一种协议 , 根据不同电平方式可分为RS232、RS485(两者都是一种串行通信模式的扩展接口)
![](https://i-blog.csdnimg.cn/blog_migrate/0016ebe8e2d32b79fd83d1fb2f88c577.png)
九、SPI 、CAN、USB接口
1 SPI
中文名:串行外设接口
- 有2个SPI
- 有主从两种模式
- 可全双工和半双工
- 最大通信速率 18M/S
- 3个预分频器,设置8种频率
- 主持 DMA
- SPI 用于板级设备间通信
- SPI特点:协议简单稳定,速度较快
- 片选 CS 口不并联,通信速度比IIC更快
![](https://i-blog.csdnimg.cn/blog_migrate/7f1ca7b4fb5dce700f7200904bb1cb3d.png)
2 CAN
中文名:控制器区域网络
- 有1个CAN总线
- 没有主从的硬性设置(每个设备平等)
- 最高 1M/S
- 收发 11位标识符的标准帧,以及 29位标识符的扩展帧
- 特点:协议较复杂,通信速度快、距离远,稳定。自动查错
- 常用于汽车、工业级的智能设备通信 (楼道的可视门铃,道路上的摄像头等)
![](https://i-blog.csdnimg.cn/blog_migrate/f8669f07ab894490b50de67bb42302af.png)
3 USB
中文名: 通用串行总线
- 一个USB接口,只可做设备控制器(只能作为类似键盘鼠标的外接设备)
- 2.0 全速 12M/s
- 待机、唤醒功能
- 由内部PLL倍频器提供时钟
![](https://i-blog.csdnimg.cn/blog_migrate/8b09fd989eb29fd0c7a4611027e5b60c.png)
十、CRC校验和芯片ID
1 CRC 计算单元
中文名 : 循环冗余校验码(Cyclic Redundancy Check)
- 用于数据传输正确性检错。
- 由一个32位的数据字产生
- 可应用在FLASH检测
- 可用于软件签名及对比
![](https://i-blog.csdnimg.cn/blog_migrate/994fee8d7242bbe80403420571d8517d.png)
2 芯片ID
- 96位编码
- 作用:产品序列号、密码、保护程序不可被复制
十一、前面内容总结回顾
1 模块划分
![](https://i-blog.csdnimg.cn/blog_migrate/877a75f67c1137bd94e03fd79fec54d9.png)
2 其他功能
2.1 NVIC
中文名:嵌套的向量式中断控制器
- F103 可以处理 43个可屏蔽中断通道和16个优先级
2.2 EXTI
中文名: 外部中断/时间控制器
- 含有19个边沿检测器,用于产生中断/时间请求
2.3 自举模式
启动时,在自举引脚可选择自举模式:
- 从程序闪存存储器自举
- 从系统存储器自举
- 从内部SRAM自举
2.4 时钟和启动
- AHB-高性能总线,用于CPU、DMA、DSP(数字信号处理)的通信
- APB-外围总线,用于内部其他功能的通信
- APB分为高速APB2和低速APB1
3 总体功能模块图
![](https://i-blog.csdnimg.cn/blog_migrate/f88b6258110d3fc242a8d331bbea73ef.png)