汇集网友智慧,解决技术难题
赞0
评论
2025-05-06
xiaoqilo 发表于 2025-4-26 20:24 解决了,库函数有问题: void USART_TxData(USART_T* usart, uint16_t data) {
2025-04-29
2025-04-26
Gfan 发表于 2025-4-24 18:00 这部分代码看不出问题噢,需要更多的代码内容才能分析 建议先排查两个方面:
2025-04-25
2025-04-24
点击图片添加到编辑器内容中
点击文件名将附件添加到文章中
提交
tyw
319个答案
天意无罪
287个答案
xch
239个答案
jjjyufan
209个答案
coody
203个答案
LcwSwust
172个答案
chunyang
135个答案
地瓜patch
128个答案
赞0
评论
2025-05-06
赞0
评论
2025-05-06
赞0
你好呀,我们尝试复现问题,但使用我们的SDK,并未出现丢包情况,是否方便提供更多信息,以便定位问题呢?
评论
2025-04-29
赞0
void USART_TxData(USART_T* usart, uint16_t data)
{
usart->DATA_B.DATA = data;
}
这个DATA_B.DATA只使用了DATA寄存器的9位没使用保留的部分,换为以下方式就没问题
void USART_TxData(USART_T* usart, uint16_t data)
{
usart->DATA = data;
}
猜测,DATA寄存器会有两个,一个是TX的一个是RX的,但为了兼容性在逻辑地址上是一个,当执行写寄存器操作时会映射到TX的DATA寄存器,执行读操作时映射到RX的DATA寄存器,而官方库这种只操作DATA寄存器一部分bit的写法可能会导致逻辑地址与物理地址的映射错乱,也就造成了只有在发送时才会导致接收丢包这种现象,这只是我的猜测,还得官方解释一下。
不过,这么容易复现的严重问题竟然在官方库出现了,确实不应该啊,而且竟然用ST的库没问题,难道用这个片子的都在用ST的库?
评论
2025-04-26
赞0
评论
2025-04-26
赞0
这个真心没有遇到过。不过丢包影响很大么。大数据量丢一两个也是很正常啊,或者你开开奇偶校验事实。
评论
2025-04-26
赞0
1、没有,后面我代码修改了,没发现过载
2、波特率是一致的,而且只发送或者只接受都不会有问题
另外我用STM32F107的例程代码就没问题,APM的例程和STM的例程都已经删除的只剩串口部分了,没有其他代码,HCLK、PCLK时钟也检查了完全一致,串口寄存器值也完全一致。
评论
2025-04-26
赞0
评论
2025-04-26
赞0
我们使用的是应答方式来通讯。直接全双工的方式,还真没有实践过
评论
2025-04-25
赞0
建议先排查两个方面:
评论
2025-04-24
您需要登录后才可以回复 登录 | 注册