[技术问答] 已搞定, 谢谢

[复制链接]
167|6
ipex 发表于 2026-2-16 13:28 | 显示全部楼层 |阅读模式
, , , , , 32
本帖最后由 ipex 于 2026-3-9 09:40 编辑

已搞定, 谢谢
cr315 发表于 2026-2-19 14:10 | 显示全部楼层
在LIN_SendHeader调用后立即执行UUART_Close,测试显示虽然关闭时TXEMPTY=0,但最终传输完成标志仍为True。这表明:硬件传输在关闭前已完成,UUART_Close可能不会中断正在进行的硬件传输,或传输完成速度超过关闭操作执行时间
classroom 发表于 2026-2-19 14:11 | 显示全部楼层
你提供的修改版代码将数据写入移至等待循环前,这会破坏原有的同步机制:
c
// 错误修改示例
uuart->TXDAT = pu8TxBuf[u32Count]; // 先写入
while(...); // 后等待 // 可能导致写入时FIFO未就绪,引发数据丢失
这种写法在高速传输或高负载场景下可能导致FIFO溢出,建议恢复原始同步逻辑。
duo点 发表于 2026-2-19 14:12 | 显示全部楼层
原始代码在常规场景下能保证数据完整发送,关闭操作不会导致数据丢失。若需绝对安全,建议添加传输完成等待逻辑。修改版代码存在同步风险,不建议采用。
 楼主| ipex 发表于 2026-2-22 10:18 | 显示全部楼层
本帖最后由 ipex 于 2026-2-22 10:19 编辑

//================
UUART_Close(UUART1);
//=============
void UUART_Close(UUART_T* uuart)
{
    uuart->CTL = 0;
}

官方代码怎么保证关闭串口,  数据发送完毕?   没做fifo tx EMPTY判断  就直接关闭了. 我感觉这个程序是有问题的.  
穷得掉渣大侠 发表于 2026-3-5 19:49 | 显示全部楼层
第二个程序中缺少了这个等待过程,可能会导致数据发送不完整。
 楼主| ipex 发表于 2026-3-6 10:22 | 显示全部楼层
穷得掉渣大侠 发表于 2026-3-5 19:49
第二个程序中缺少了这个等待过程,可能会导致数据发送不完整。

是的  我发现这个问题 关键是  官方提供的程序  竟然不测试就发布了,  几个版本都没更新,  可见......
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

56

帖子

0

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