你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

NUCLEO-C071RB评测7_UART不定长数据收发的再测试

[复制链接]
老牛洋车 发布时间:2025-5-26 10:12

在本月初的测试中已经对串口不定长数据的收发进行过测试,接收是通过自定义函数实现的,发送则是通过重定向完成的,测试的结果是串口助手中收到返回的数据不完整。当时并没有对这个问题进行深究,而是准备在驱动了TFT显示屏之后,可以在屏幕上显示接收到的数据,这样就容易判断出问题所在。在原定的测试任务全部完成后,这两天又再次来进行串口不定长数据的收发测试。

本次测试是通TFT显示屏来显示接收到的数据,通过重定向和自定义发送函数分别来返回接收到的数据,这样就容易判断出是那个环节的问题。下面是自定义的串口不定长数据接收和发送函数代码:

/*************************************************************
*                   串口接收不定长数据
*************************************************************/
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  HAL_UART_Receive_IT(&huart2,&RxByte,1);    //开启下次接收
  RxBuff[RxLen++] = RxByte;                  //将接收到的数据存入缓存区中
}

/*************************************************************
*                    串口发送不定长数据
*************************************************************/
void UART_Tx(uint8_t *TxBuff)
{
  while(*TxBuff){
    HAL_UART_Transmit(&huart2, TxBuff, 1, 0xffff);
    TxBuff++;
  }
}

通过串口助手发送不定长的数据,然后观察重定向函数和自定义函数返回的数据并进行对比,可以看到问题是出在重定向函数中,也就是说自定义函数返回的数据是完整的,只是重定向函数返回的数据有时会出现截尾的现象:

UART_6.png

上张截图重定向函数返回的数据是完整的,但在下张截图中看到的数据是被截尾的:

UART_7.png

下面这张截图则更直观:

UART_8.png

这是测试过程的照片:

IMG_20250526_092654.jpg

通过本次测试,用自定义函数来发送缓存区的数据,结果的正常。而用重定向函数来发送缓存区的数据则有时会被截尾,数据不完整,原因仍未知。

收藏 评论0 发布时间:2025-5-26 10:12

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版