野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 23691|回复: 1

用HAL库发送串口数据,为什么总是会有数据丢失或者乱码?

[复制链接]
发表于 2021-7-30 00:25:53 | 显示全部楼层 |阅读模式
我先用Cube生成驱动好的代码,然后再添加了下面三部分。想得到的效果是:在串口助手上发送任意长度的数据,再用串口助手显示出来。

但是发现在串口助手上发送比较长的数据后,会出现数据丢失或者乱码。

看了很多资料,思考了3天也没有一个答案,请大神帮忙答疑啊~!

char buff[10]={0};//定义一个存放USART接收数据的buff
......
int main()
{
......
HAL_UART_Receive_DMA(&huart1,(uint8_t *)buff,1); //在main函数中打开DMA串口传输,每接收1个数据就会调用串口接收中断的回调函数
......
}

......


void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)  //在串口接收中断回调函数中发送接收到的数据
{
回复

使用道具 举报

发表于 2021-8-5 17:32:34 | 显示全部楼层
最好在接收中断把数据存到缓冲区,然后再在主函数中查询发送,推荐用环形缓冲区(https://blog.csdn.net/maowentao0416/article/details/81984269)来做。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 14:42 , Processed in 0.027022 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表