RTC读取时间多么简单的问题?不就是HAL库“HAL_RTC_GetTime(&hrtc, &time, RTC_FORMAT_BCD);”一个函数吗?
即使寄存器操作,看看《参考手册》:
两行而已……
为什么程序无法获得变化的时间?
HAL_RTC_GetTime(&hrtc, &time, RTC_FORMAT_BCD);
displayDose(time.Seconds);
ST的MCU发展这么多年,手册是很完善的,一般不会去翻但是翻了必然有所收获:
上文关键一点是说一旦读取了RTC_TR或者RTC_SSR之后,影子寄存器的值就会锁定直到读取RTC_DR之后,就是说只读time不读日期,以后读n次,寄存器数值不会更新!
这就是上上图中"need to read date also"注释的原因!
最近总是遇到类似小问题,似乎运气不好?偏偏这个产品只需读时间?反过来,又是运气好,略浪费点时间,回过头读手册也算返璞归真了…………