打印
[STM32F1]

STM32串口输出乱码

[复制链接]
1406|43
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tifmill|  楼主 | 2024-5-30 08:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原因一:

初始化串口的波特率与串口调试助手不一致。



原因二:

晶震不一致。

串口输出始终乱码,外部时钟频率配置错误导致的,库使用默认8MHz晶震,可以通过宏使用25MHz晶震。具体定义在 stm32f10x.h 文件中

开发板晶震使用的12MHz晶震,定义一个宏修改成12000000,编译,烧写。



#if !defined  HSE_VALUE
#ifdef STM32F10X_CL   
  #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
#else
  #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
#endif /* STM32F10X_CL */
#endif /* HSE_VALUE */
1.
2.
3.
4.
5.
6.
7.


修改为:



#define HSE_VALUE    ((uint32_t)12000000) /*!< Value of the External oscillator in Hz */
#if !defined  HSE_VALUE
#ifdef STM32F10X_CL   
  #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
#else
  #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
#endif /* STM32F10X_CL */
#endif /* HSE_VALUE */
1.
2.
3.
4.
5.
6.
7.
8.



使用特权

评论回复
沙发
abotomson| | 2024-6-4 10:25 | 只看该作者
如果发送端和接收端的波特率设置不一致,就会导致传输数据时出现乱码。

使用特权

评论回复
板凳
i1mcu| | 2024-6-4 13:08 | 只看该作者
如果发送缓冲区满了,新的数据可能无法及时发送出去,导致乱码。确保发送缓冲区的大小足够大,或者在数据发送之前等待缓冲区空闲。

使用特权

评论回复
地板
biechedan| | 2024-6-5 13:39 | 只看该作者
如果发送的数据量超过了串口的缓冲区大小,可能会导致数据丢失或乱码。

使用特权

评论回复
5
macpherson| | 2024-6-7 13:01 | 只看该作者
如果使用中断或DMA来处理串口数据,确保相关的配置是正确的。解决方法是检查并修复中断和DMA的配置问题。

使用特权

评论回复
6
tabmone| | 2024-6-8 10:20 | 只看该作者
检查代码中可能的逻辑错误。              

使用特权

评论回复
7
maudlu| | 2024-6-8 15:17 | 只看该作者
使用的串口输出函数正确实现,并且与串口配置相匹配。

使用特权

评论回复
8
pixhw| | 2024-6-8 19:37 | 只看该作者
发送端和接收端的波特率设置不一致会导致数据传输错误,进而产生乱码。确保两端波特率相同。

使用特权

评论回复
9
burgessmaggie| | 2024-6-9 12:31 | 只看该作者
配置与STM32上的串口配置相匹配。例如,波特率、数据位、停止位、奇偶校验等参数应该相同。

使用特权

评论回复
10
loutin| | 2024-6-10 16:53 | 只看该作者
波特率决定了串口数据传输的速度,如果两端设置不匹配,接收端就无法正确解析数据。

使用特权

评论回复
11
backlugin| | 2024-6-10 21:14 | 只看该作者
在STM32中,可以通过设置USART的波特率寄存器来配置波特率。

使用特权

评论回复
12
gouguoccc| | 2024-6-10 22:27 | 只看该作者
波特率不一致或配置错误,

使用特权

评论回复
13
zerorobert| | 2024-6-11 17:16 | 只看该作者
发送端和接收端的波特率设置不一致是最常见的原因。

使用特权

评论回复
14
iyoum| | 2024-6-11 20:24 | 只看该作者
串口的配置正确,包括波特率、数据位、停止位、奇偶校验等参数。在STM32上,可以使用HAL库或者标准的CMSIS库来配置串口。

使用特权

评论回复
15
plsbackup| | 2024-6-12 20:51 | 只看该作者
如果STM32的外部时钟晶振频率与代码中设置的频率不一致,也会导致串口输出乱码。需要检查开发板上的晶振规格,并与代码中的设置进行核对调整

使用特权

评论回复
16
laocuo1142| | 2024-6-13 14:36 | 只看该作者
比特率(波特率)设置错误

使用特权

评论回复
17
flycamelaaa| | 2024-6-13 16:00 | 只看该作者
串口配置参数不匹配

使用特权

评论回复
18
stormwind123| | 2024-6-13 19:00 | 只看该作者
中断处理程序错误

使用特权

评论回复
19
probedog| | 2024-6-13 20:00 | 只看该作者
STM32等微控制器的供电波动也可能导致串口通信错误。

使用特权

评论回复
20
classroom| | 2024-6-13 21:23 | 只看该作者
如果开发板的晶振频率和标准库默认频率不一致,也可能导致串口通信错误。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

1201

帖子

0

粉丝