文章目录
一、USART概述
USART(Universal Synchronous/Asynchronous Receiver/Transmitter)是STM32中常用的串行通信接口,具有以下特点:
1.全双工异步通信
2.单线半双工通信
3.同步通信模式
4.支持LIN、IrDA、SmartCard等协议
5.多种波特率可调
二、USART与UART的区别
| 特性 | USART | UART |
|---|---|---|
| 通信模式 | 同步/异步 | 异步 |
| 时钟线 | 有(同步模式) | 无 |
| 复杂度 | 更高 | 简单 |
| 功能 | 更多 | 基本 |
STM32中的USART可以配置为UART模式使用。
三、USART主要特性
1.波特率发生器: 可编程波特率,最高可达芯片主频的1/16
2.数据帧格式:
- 起始位
- 7/8/9位数据
- 可选的奇偶校验位
- 1/2个停止位
3.硬件流控制: 支持RTS/CTS
4.多处理器通信: 地址识别功能
5.多种中断源: 发送完成、接收准备好、错误检测等
四、USART功能框图
五、STM32CubeMX串口配置
1.新建工程
1.双击打开桌面下载好的STM32CubeMX,点击File–>New Project,或直接点击ACCEE TO MCU SELECTOR

2.在左边搜索栏里输入使用的芯片型号,右边选中并开始创建

2.设置RCC时钟源
设置高/低速时钟源都由外部晶振产生。

3.设置串口参数
1.串口2参数设置

2.根据实际硬件电路修改GPIO口

3.使能串口2接收中断

4.时钟配置
1.时钟源设置
默认时钟源是由内部RC振荡器产生,可通过图中按钮进行修改,外部晶振数值取决于实际电路板上的晶振大小.

提示:
- 这里用到的芯片的最大时钟频率是100MHz,有的芯片最大只有72MHz,实际最大频率可通过查看芯片数据手册确定。
2.时钟频率设置

①PLLM—PLL输入时钟分频系数,根据自己需要的系统时钟频率来进行修改
②PLLN—主PLL倍频系数(自动计算)
③PLLP—主PLL分频系数(自动计算)
④SYSCLK—系统时钟
⑤HCLK—AHB总线时钟,由系统时钟SYSCLK 分频得到,一般不分频,等于系统时钟
⑥APB1/APB2 Prescaler—APB1/APB2总线的预分频系数,可根据需要修改
5.工程文件设置
1.工程设置
注:工程路径中不能有中文,否则会输出错误。
库文件要提前下载好,具体方法在 “【STM32CubeMX学习教程】——1.软件安装” 这一篇文章中有提到。

2.代码生成设置

3.点击右上角按钮生成代码,之后会出现下面的窗口,再点击打开工程即可在用keil查看工程代码。

6.编译成功,0错误0警告

六、HAL库中常用的USART相关代码
1.串口初始化函数
MX_USART2_UART_Init(void);
2.串口数据发送函数
HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout);
3.串口中断模式接收函数
HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
4.串口中断处理函数
HAL_UART_IRQHandler(UART_HandleTypeDef *huart);
5.串口接收中断回调函数
HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);
七、常见问题与调试技巧
1.无法通信
- 检查时钟使能
- 验证GPIO配置
- 确认波特率设置
- 检查硬件连接
2.数据错误
- 确保双方波特率一致
- 检查停止位、校验位设置
- 注意电平转换(如RS232需要电平转换芯片)
3.调试技巧
- 使用逻辑分析仪抓取波形
- 先测试发送功能,再测试接收
- 使用回环模式测试
以上就是本章的全部内容,如果对你有帮助,欢迎点赞支持,谢谢!
1万+

被折叠的 条评论
为什么被折叠?



