总:STM32——学习总纲
参考资源:
【免费】芯片资料STM32F103ZET6(中文版)资源-CSDN下载
【免费】STM32F1系列参考手册-V10(中)_stm32寄存器映射资源-CSDN下载
一、数据通信的基础概念
1.1 串行/并行 通信
1.2 单工/半双工/全双工 通信
1.3 同步/异步 通信
有时钟就是同步通信。
1.4 波特率
码元:信号经过调制,并且进行了编码。
M 可以理解为,进制数,比如二进制码元,M就为2。
1.5 常见的串行通信接口
二、串口(RS-232)
2.1 串口简介
这里先学 RS-232 串口
RS-232接口 也就是DB9接口 | 数据 | 握手 | 地线 | 其他 |
![]() |
TXD(pin3):串口数据输出 | RTS(pin7):请求发送 | GND(pin5):信号地 | RI(pin9):振铃指示 |
![]() |
RXD(pin2):串口数据输入 | CTS(pin8):清除发送 | ||
DSR(pin6):数据发送就绪 | ||||
DCD(pin1):数据载波检测 | ||||
DTR(pin4):数据终端就绪 |
2.2 RS-232电平 与 CMOS/TTL 电平对比
所以 CMOS/TTL 不能与 RS-232 直接通信。
2.3 设备间的 RS-232 通信示意图
2.4 STM32 串口与电脑USB口通信示意图
2.5 RS-232 异步通信协议
三、STM32 的 USART
3.1 STM32 的 USART 简介
USART
UART
3.2 STM32 的 USART 主要特征
如何快速查看STM32某个外设的数量及其对应的引脚?
异步通信只用到 TXD&&RXD
【免费】芯片资料STM32F103ZET6(中文版)资源-CSDN下载
搜索
3.3 STM32 F1 的 USART 框图
【免费】STM32F1系列参考手册-V10(中)_stm32寄存器映射资源-CSDN下载
在此链接中文版STM32F1系列参考手册第25.3节中提到。
收发引脚是 PA9 PA10
3.4 STM32 H7、F4、F7 的 USART 图(上B站)
3.5 STM32 F1、F4、F7、H7的 USART 框图简化版
3.6 设置 USART 波特率(F1)(F4、F7、H7上B站)
3.6.1 公式介绍
波特率计算公式:
其中 是串口的时钟即图中
,如 USART1 的时钟是 PCLK2,其他串口都是PCLK1。
PCLK2时钟来自 APB2,最高稳定值是 72M。
PCLK1时钟来自APB1,最高稳定值是36M。
寄存器值计算公式:
DIV_Mantissa 是USARTDIV的整数部分,DIV_Fraction是USART的小数部分。
而 baud波特率由用户定义,通过波特率公式计算出 USARTDIV,再寄存器值计算公式得出整数部分DIV_Mantissa,进而可算出小数部分DIV_Fraction的值。
3.6.2 寄存器操作设置波特率演示
整型类型的特性(去整不进位),通过 +0.5 的操作实现四舍五入的效果。减小误差。
3.6.3 波特率设置寄存器操作通用公式推演(F1)
一步一步的计算寄存器存储的值来设置波特率还是繁琐。使用通用的公式会更简便。
二进制左移1位操作 等于 数值*2。那么DIV_Mantissa左移4位等于 数值*16。
USART_BRR = USARTDIV的整数部分<<4 + USART的小数部分 * 16 + 0.5
= USARTDIV的整数部分 * 16 + USART的小数部分 * 16 + 0.5
=(USARTDIV的整数部分 + USART的小数部分)* 16 +0.5
= USARTDIV * 16 + 0.5
HAL库操作会更简单,赋值baud给初始化成员即可,会自动设置波特率。
3.7 USART 寄存器介绍
【免费】STM32F1系列参考手册-V10(中)_stm32寄存器映射资源-CSDN下载