这是一条长期更新的博客
NodeMCU学习中摸索的一些tips
磕磕绊绊的学了几天时间这款单片机,半陌生的lua语言(好歹看过一些python,还是让我亲切了一些),全陌生的编译软件(ESPlorer),让我一度脑壳很疼。不过总算是有了一些收获。在这里给大家分享一下,让后来者可以轻松一些。
tips1: dofile函数
学过单片机的应该都知道,一般不把所有的函数、代码都放在同一个文件中,这会增加查错以及编程的困难度。lua程序也是如此,一个功能放在一个lua文件中比较好,当单片机需要执行某一功能时,仅需调用对应的lua文件即可。如下
dofile("xxx(文件名).lua")
特别注明:当你还在调试程序的时候,千万不能把dofile放入某个lua文件中。
当你在使用NodeMCU的WIFI模块时,连接程序会一直占用你的uart口,导致你无法再下载更新后的或者全新的lua文件,也无法使用ESPlorer右下角的串口输入命令。
这时候你能做的只有——完全擦除flash。
tips2:flash的完全擦除
flash的擦除方法
这位老哥讲的办法真好用!强推!碰到什么妖魔鬼怪搞不定的,擦了重下固件,重新来过!
tips3:remove函数
当你的串口输入命令行可以使用时,这是个很好的删除单片机内程序办法。
remove("xxx(文件名).lua")
tips4:查看NodeMCU信息以及单片机内文件信息及内存的方法
获取单片机信息
majorVer, minorVer, devVer, chipid, flashid,
flashsize, flashmode, flashspeed = node.info();
print("NodeMCU "..majorVer.."."..minorVer.."."..devVer)
查看文件信息
l = file.list();
for k,v in pairs(l) do
print("name:"..k..", size:"..v)
end
后来发现还有更好用的。。。。
点击上图按钮可反馈得下图信息↓
tips5: 关于固件烧录
NodeMCU里有一个SPIFFS文件系统(SPI Flash Filing System)镜像工具。
当你第一次烧录固件:
flash中不存在文件系统,固件中自带的SPIFFS的镜像工具会在flash中新建一个文件系统,其起始地址=固件结束地址+64K~128K。
若非第一次烧录固件:
1.新固件大小 < 原固件大小 + 64k ,则原有系统保留;
2.新固件大小 > 原固件大小 + 64k ,则新建一个SPIFFS文件系统覆盖原有系统。
tips6:关于程序下载
NodeMCU与51单片机不同,每次下载程序进去不会替换原有程序。下载程序后会将程序放置在文件系统中的对应地址之中。
而下一次下载程序:
1.若程序名称与文件系统中已经存在的某个程序名称相同,则会替换该程序;
2.若名称不同,则在文件系统的其他地方,将程序放置在某个地址中。
这里做一个粗浅的比喻?
如果把flash看作一个贼简易的Windows系统,那么烧录的固件相当于在c盘,而SPIFFS文件系统就相当于其他盘,用于储存程序。
如果重新烧录固件,lua程序并不会丢失,就像如果重装电脑c盘,其他盘中的文件也不会丢失一样。