[开发工具] 通过串口接受字符在不同IDE中表现不同

[复制链接]
593|6
 楼主| 柴库柴库 发表于 2025-2-28 11:00 | 显示全部楼层 |阅读模式
用STM32CubeMX生成代码。用串口USART1->RDR通过下面的代码获取字符。
char ReceiveAByteUART1 = '\0';
printf("\fHardware: STM32L4 Discovery kit IoT node (B-L475E-IOT01A)r\n>");
fflush(stdout);
if(USART1->ISR & USART_ISR_RXNE) //Bit 5 RXNE: Read data register not empty
{
  ReceiveAByteUART1 = getchar();
  putchar(ReceiveAByteUART1); // Display a character.
  fflush(stdout);
}
在STM32CubeIDE中运行,不能正确获取字符。
但是在Keil uVision5中能够正常。


tpgf 发表于 2025-4-9 13:27 | 显示全部楼层
如果发送端和接收端的波特率不同,就会导致数据传输的错误或乱码
heimaojingzhang 发表于 2025-4-13 08:07 | 显示全部楼层
串口通信中数据的起始位和停止位的定义在不同的IDE中可能有所不同
keaibukelian 发表于 2025-4-13 10:43 | 显示全部楼层
数据位的长度和校验位的设置也会影响数据的接收。例如,一个IDE设置为8位数据位、无校验位,而另一个IDE设置为7位数据位、奇校验位,那么在传输过程中就可能出现数据错误
paotangsan 发表于 2025-4-13 13:29 | 显示全部楼层
不同的IDE可能使用不同的字符编码方式来处理串口接收到的数据。常见的字符编码有ASCII、UTF-8等。如果发送端和接收端使用的字符编码不一致,就会导致接收到的字符无法正确显示或出现乱码。
renzheshengui 发表于 2025-4-13 15:52 | 显示全部楼层
不同IDE中串口接收缓冲区的大小可能不同。如果发送的数据量较大,超过了接收缓冲区的大小,就会导致数据丢失或覆盖
wowu 发表于 2025-4-13 18:29 | 显示全部楼层
不同的计算机或开发板上使用的串口芯片可能不同,这些芯片的性能和兼容性也会影响串口接收的效果
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

80

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部