【STM32CubeMX学习教程】——3.USART串口


一、USART概述

USART(Universal Synchronous/Asynchronous Receiver/Transmitter)是STM32中常用的串行通信接口,具有以下特点:
1.全双工异步通信
2.单线半双工通信
3.同步通信模式
4.支持LIN、IrDA、SmartCard等协议
5.多种波特率可调

二、USART与UART的区别

特性USARTUART
通信模式同步/异步异步
时钟线有(同步模式)
复杂度更高简单
功能更多基本

STM32中的USART可以配置为UART模式使用。

三、USART主要特性

1.波特率发生器: 可编程波特率,最高可达芯片主频的1/16
2.数据帧格式:

  • 起始位
  • 7/8/9位数据
  • 可选的奇偶校验位
  • 1/2个停止位

3.硬件流控制: 支持RTS/CTS
4.多处理器通信: 地址识别功能
5.多种中断源: 发送完成、接收准备好、错误检测等

四、USART功能框图

控制中心
接收路径
发送路径
CPU
写入
读取
数据加载
波特率时钟控制
信号输入
完整帧接收
时钟信号
时钟信号
状态管理
中断控制
TXE/TC/RXNE等
控制命令
配置参数
波特率发生器
状态标志
控制逻辑
中断请求
接收移位寄存器
RX引脚
发送移位寄存器
逐位移出
TX引脚
USART_DR数据寄存器
CPU

五、STM32CubeMX串口配置

1.新建工程

1.双击打开桌面下载好的STM32CubeMX,点击File–>New Project,或直接点击ACCEE TO MCU SELECTOR

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

Alt

2.设置RCC时钟源

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

Alt

3.设置串口参数

1.串口2参数设置

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

Alt
3.使能串口2接收中断

Alt

4.时钟配置

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

Alt
提示:

  • 这里用到的芯片的最大时钟频率是100MHz,有的芯片最大只有72MHz,实际最大频率可通过查看芯片数据手册确定。

2.时钟频率设置

Alt
①PLLM—PLL输入时钟分频系数,根据自己需要的系统时钟频率来进行修改
②PLLN—主PLL倍频系数(自动计算)
③PLLP—主PLL分频系数(自动计算)
④SYSCLK—系统时钟
⑤HCLK—AHB总线时钟,由系统时钟SYSCLK 分频得到,一般不分频,等于系统时钟
⑥APB1/APB2 Prescaler—APB1/APB2总线的预分频系数,可根据需要修改

5.工程文件设置

1.工程设置
注:工程路径中不能有中文,否则会输出错误。
库文件要提前下载好,具体方法在 “【STM32CubeMX学习教程】——1.软件安装” 这一篇文章中有提到。

Alt
2.代码生成设置

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

Alt

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

Alt

六、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.调试技巧

  • 使用逻辑分析仪抓取波形
  • 先测试发送功能,再测试接收
  • 使用回环模式测试

以上就是本章的全部内容,如果对你有帮助,欢迎点赞支持,谢谢!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玥山山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值