• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32串口在首次发送字符的时候,首字符丢失解决办法

huihui163 2019-03-04 浏览量:1017
STM32串口在首次发送字符的时候,这个怎么解决啊
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  •  按照下面的流程,红色框起来的是关键语句。

    11.jpg

    • 发布于 2019-03-04
    • 举报
    • 评论 0
    • 4
    • 0

其他答案 数量:10
  • 把usart1->sr改成USART_GetFlagStatus(USART1 USART_FLAG_TC)就可以了
    • 发布于2019-03-04
    • 举报
    • 评论 0
    • 2
    • 0

  • 应该是你的数据发送完成判断出错了,改成这样试一试,我用的没啥问题。while((USART1->SR & 0x0080)!=0x0080);
    • 发布于2019-03-04
    • 举报
    • 评论 0
    • 1
    • 0

  • 你对比一下几个例程,找一下差异

    而且你就介绍一下问题,没有给代码也不好说啊。

    • 发布于2019-03-04
    • 举报
    • 评论 0
    • 1
    • 0

  • 实咋一看是说的通的,但是在仔细看手册的时候发现 TC 和 TXE 标志位在复位的时候被置1 ,这样第一次while循环就是没有用的。这样导致了首次第一个字符还没有被输出,就被后面的字符覆盖掉,造成实际看到的丢失现象。解决办法就很简单:在前面加上一句 USART1->SR;
    • 发布于2019-03-04
    • 举报
    • 评论 0
    • 1
    • 0

  • 一般的方式是USART_GetFlagStatus函数的的参数使用USART1 USART_FLAG_TC。
    但也要根据你的代码看看实际的情况,最好是发一下你的程序
    • 发布于2019-03-04
    • 举报
    • 评论 0
    • 1
    • 0

  • 这种应该是程序判断上有误,在调试模式下看看,串口发送的时候,第一个字节是否被正确写入寄存器
    • 发布于2019-03-04
    • 举报
    • 评论 0
    • 0
    • 0

  • 两种方式,一种是初始化后清除标志位,一种是先发送一个没用的数据,从第二次开始就正常了
    • 发布于2019-03-06
    • 举报
    • 评论 0
    • 0
    • 0

  • 在设置串口标志时使用USART1 USART_FLAG_TC进行配置
    • 发布于2019-03-06
    • 举报
    • 评论 0
    • 0
    • 0

  • 发之前清一下标志位或者就是初始化之后发个空字符。
    • 发布于2019-03-26
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32串口在首次发送字符的时候,首字符丢失解决办法