[应用相关] STM32标准库USART串口通信

[复制链接]
2341|36
jimmhu 发表于 2025-10-14 13:55 | 显示全部楼层
提高接收中断优先级,减少处理延迟
saservice 发表于 2025-10-14 14:59 | 显示全部楼层
在中断服务函数中处理接收到的数据,清除中断标志位。
wwppd 发表于 2025-10-14 18:54 | 显示全部楼层
如果使用中断方式接收数据,必须正确处理中断标志位。
louliana 发表于 2025-10-14 19:19 | 显示全部楼层
重定向 printf 到串口可以极大地方便调试。
dspmana 发表于 2025-10-16 21:26 | 显示全部楼层
标准库通过 stm32f10x_usart.h和 stm32f10x_usart.c提供驱动,封装了寄存器操作
earlmax 发表于 2025-10-17 10:33 | 显示全部楼层
建议增加 TVS 二极管抑制浪涌。
51xlf 发表于 2025-10-17 12:35 | 显示全部楼层
发送方与接收方的波特率必须完全一致,否则会导致数据接收错误。
lzmm 发表于 2025-10-18 10:51 | 显示全部楼层
// 发送单个字符
void usart_send_char(USART_TypeDef* USARTx, char ch) {
    USART_SendData(USARTx, (uint8_t)ch);  // 写入数据寄存器
    while (USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET); // 等待发送完成
}

// 发送字符串
void usart_send_string(USART_TypeDef* USARTx, char *str) {
    while (*str) {
        usart_send_char(USARTx, *str++);
    }
}

// 接收单个字符(阻塞)
char usart_receive_char(USART_TypeDef* USARTx) {
    while (USART_GetFlagStatus(USARTx, USART_FLAG_RXNE) == RESET); // 等待接收完成
    return (char)USART_ReceiveData(USARTx);  // 读取数据寄存器
}
minzisc 发表于 2025-10-18 11:14 | 显示全部楼层
使用RS-485等抗干扰能力更强的通信方式。
ingramward 发表于 2025-10-18 11:56 | 显示全部楼层
USART 和 GPIO 都挂在不同的总线上,必须先使能它们的时钟。
1988020566 发表于 2025-10-18 13:39 | 显示全部楼层
接收数据建议用中断或DMA,避免查询方式导致数据丢失
jonas222 发表于 2025-10-18 14:42 | 显示全部楼层
支持DMA传输,适用于大数据量              
updownq 发表于 2025-10-18 16:39 | 显示全部楼层
将 TX 引脚配置为复用推挽输出,RX 引脚配置为浮空输入或上拉输入。
linfelix 发表于 2025-10-18 18:36 | 显示全部楼层
添加校验和超时重传机制应对丢包              
uptown 发表于 2025-10-18 20:16 | 显示全部楼层
长距离通信未使用屏蔽线,或波特率过高,会导致数据错乱。
幸福小强 发表于 2025-11-2 12:27 | 显示全部楼层
使用标准库配置 USART 的核心流程清晰
物联万物互联 发表于 2025-11-2 22:16 | 显示全部楼层
串口通信就像两个朋友一个字一个字地聊天,一个设备说一个字,另一个设备听一个字,直到说完所有的话。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
0