乐鑫技术交流
直播中

一刀两断

8年用户 1011经验值
私信 关注
[问答]

esp8266_rtos_sdk串口初始化异常是什么原因呢?

硬件环境:nodeMCU
我从github下载了最新的RTOS SDK,并且仅仅在初始化 user_init() 函数里添加了一个函数 uart_init_new() 然后编译。生成bin文件,下载进入nodemcu里面,芯片初始化打印信息可以正常显示,波特率是74880,说明晶振是26MHz,其他的用户打印数据输出全部乱码(任务信息和printf("SDK version:%sn", system_get_sdk_version()))。而把putty设置为48672波特率时正常打印出用户数据。是什么原因呢?

回帖(1)

刘超

2024-7-11 11:58:31
这个问题可能是由于串口初始化时波特率设置不正确导致的。在ESP8266 RTOS SDK中,uart_init_new() 函数用于初始化串口。如果波特率设置不正确,可能会导致输出数据乱码。

以下是一些建议来解决这个问题:

1. 检查uart_init_new()函数中的波特率设置。确保波特率设置为74880,与硬件环境一致。如果波特率设置不正确,将导致数据传输错误。

```c
uart_init_new(74880, BIT_RATE_74880);
```

2. 确保在user_init()函数中调用uart_init_new()函数。这将确保在程序启动时初始化串口。

```c
void user_init(void)
{
    // 其他初始化代码
    uart_init_new();
}
```

3. 检查printf函数的实现。确保printf函数正确地将数据发送到串口。如果printf函数实现有问题,可能会导致数据输出乱码。

4. 检查硬件连接。确保NodeMCU与计算机之间的串口连接正确,没有损坏或接触不良。

5. 如果问题仍然存在,尝试使用其他串口调试工具,如Minicom或CoolTerm,以排除串口工具问题。

6. 如果以上方法都无法解决问题,可以尝试在ESP8266 RTOS SDK中查找其他开发者遇到类似问题的解决方案,或者在相关社区和论坛寻求帮助。

总之,这个问题可能是由于波特率设置不正确或串口初始化问题导致的。请按照上述建议进行检查和调整,以解决乱码问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分