如何解决STM32串口的第一个字符是乱码

今天在写STM32的printf时,发现打印的第一个字符总是 '?' 

一、我的代码(第二张图片特重要)

  a. 打印代码

b. 串口驱动程序

                记住第一张图片的函数名称及内容,下面会用到                

之所以列上面这些图片,是为了引出不可思议的解决方法,如下:

把初始化顺序颠倒一下,如下图

解决了

 您看懂了吗?

声明:这是我遇到的问题,以及想到的解决方法。如果我的方法不能奏效,请及时试试其他网站的,例如改小波特率,或者改FLAG_TXE为FLAG_TC。

赠送---还有一个经常遇到的:printf不打印

标注:我解决的是不打印。不是打印的都是乱码,打印乱码容易解决:波特率不一样或者你的串口工具坏了

问题排查步骤:

1. 使用库函数打印一个字符,如果不能打印,原因可能有3个:

        a. 驱动没写对,可以下载一份正确的,或者排查现用代码

        b. 没共地

        c. 硬件线路不通

                简单方法,用万用表量是否断路;

                复杂方法,用串口工具或示波器从源头到终端慢慢找原因

如果能打印了,看第2项

2. 如果第1项成立,则排查自己的fputc是否编写正确,可参考图示,如果还没问题,看第3项

 3. 根据图中的数字标识,顺序操作后,重新编译,下载。

 如果还找不到原因,出去抽根烟或者烫个头,回来就好了(●'◡'●)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值