我是在做一个温湿度传感器数据上报到阿里云平台的时候发现这个问题的,esp8266接线没有问题,代码就只是简单的串口接收和发送,几个printf而已,但就是这么简单的代码也没实现,在排除完硬件连线和代码的问题之后就拿起串口助手调试,果然就发现了问题
串口助手波特率校验位的没问题,也全是乱码。于是就开始想波特率是不是不合理,改成其他的9600,76800(在这一步是无头苍蝇,因为搞不懂波特率的设置规则就随便试验)但发现依旧是乱码,问题也没得到解决忽然想起来之前看到过波特率和系统时钟有点关系,于是果断屏蔽掉main中的systemInit,再看串口助手果然从乱码变成了AT指令,本来以为到这一步万事大吉了

结果串口助手又开始精准报错DHT11 ERROR,温湿度传感器是需要精确的时钟,我把他注释掉,系统时钟可能使用了默认的内部低速时钟(HSI),频率相对较低。这样又不行了。
然后又开始冥思苦想,灵机一动改变了一下代码顺序,把时钟初始化函数放到串口函数之前,再次编译下载发现:成了!!!
串口助手出现了AT指令,DHT11也正常运行
这次是真的成功了,其实昨天这段代码连接阿里云是没有问题的,但是自己没有记录的好习惯,修改代码也没有好习惯,导致四处碰壁

1万+

被折叠的 条评论
为什么被折叠?



