在调用RTC模块的时候遇到一个奇怪现象。通过交互式命令行调用RTC模块的datetime方法时,总是能够返回正确的时间。代码如下,大家也可以自己试一试:
from machine import RTC
rtc = RTC()
rtc.datetime()
即使给PICO W断电,再上电时调用上面的代码返回的时间仍然是正确的。所以就特别好奇,这个正确的时间是从哪里来的,电路板上也没有电池,怎么保存并正确计时的呢?以为芯片有什么骚操作,还特意查了RP2040的数据手册,发现RTC也没什么特别的。
然后猜测是上电后会自动通过ntp服务得到的,但是在断网后得到的时间也是正确的。
后来我把电脑的时间改了,再调用上面的代码,发现返回的时间是修改后的电脑的时间。因此猜想,通过命令行调用上面代码时,PICO W会隐藏的获取电脑时间。进一步的,我把代码下载到板子上,不通过命令行调用,发现时间就回到初始时间了。
虽然命令行调用RTC时会自动校正时间,但是这隐藏操作也是够让人迷惑的了...