串口发送字符串以\n结尾无法收到数据

基于一段痛苦的调试经历浅做个记录

串口助手测试stm32无法接收到数据


cubeide代码

今天想用串口和printf观察数据,就用cubeide配置了一个基础串口通信程序。
主要代码就下面两行:

uint8_t TxBuffer[] = "Hello";
HAL_UART_Transmit(&huart6, TxBuffer, sizeof(TxBuffer), 100);

一、具体bug

当发送数组末尾加上\n后(TxBuffer[] = “Hello”),串口调试助手就无法接收到单片机发送的数据,且将其改回去后仍然有一段时间接收不到数据。遇到一个很神奇的现象。

二、分析原因

1.硬件

检测tx和rx线序,发现没有问题。猜测是由于面包板接触不良导致的。

2024/4/14补充:
串口通信时断开电脑充电器,防止电脑充电使得usb口信号不稳定。
外接typec给单片机核心板供电,只用下载器可能功率不够导致串口信号不稳定。
os:串口通信稳定性确实有些差,怪不得后续发展了RS232等通信协议…

2.软件

为了寻找问题所在,我对函数进行调试。
单步执行HAL_UART_Transmit(&huart6, TxBuffer, sizeof(TxBuffer), 100)函数内的代码,但程序表面看起来一切正常(也可能是博主学艺不精见识过少,要是有大佬知道原因还请留言)
事情愈发吊诡起来…

在几次尝试后,我猜测是因为TxBuffer内加的\n出现错误,导致stm32串口被卡死无法发送数据,且该现象无法通过下载新的程序解决,只能等待一会儿后将单片机和ch340模块直接接线才能重新接收到数据。

总结

基于今天折磨了我六个小时+的串口调试经历浅做个记录,如果有遇到相同问题的uu或者知道原因的大神,欢迎留言讨论。
笔者能力有限,哪里讲的不对还请大家批评指正。

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值