天天看點

将NTP伺服器中擷取的網絡時間更新至RTC ---- STM32&&RT-thread

  • There are different ways to be brave.

    勇敢有不同種方式。

一、需求

在單片機上實作RTC的驅動,利用WIFI子產品擷取NTP伺服器中的網絡時間,并将其更新至RTC上。

二、實作

  • 1、使用STM32CubeMX配置好RTC的驅動。
    将NTP伺服器中擷取的網絡時間更新至RTC ---- STM32&&RT-thread
  • 2、通過WIFI子產品從NTP伺服器中擷取時間,使用了這篇文章《NTP協定代碼實作》的代碼實作了将擷取的網絡時間存入了單片機内部定義的結構體中。
  • 3、利用擷取的網絡時間對RTC的時間進行校正,然後1s一次列印到序列槽上。具體實作請看大神的這篇文章《RTC時間更新》,下面的代碼也是直接拿來就用了。
/* Get the RTC current Date */
  HAL_RTC_GetDate(&hrtc, &sdate_get, RTC_FORMAT_BIN);
  /* Get the RTC current Time */
  HAL_RTC_GetTime(&hrtc, &stime_get, RTC_FORMAT_BIN);

  printf("%d-%02d-%02d   %02d:%02d:%02d\n",2000 + sdate_get.Year, sdate_get.Month, sdate_get.Date,\
                                      stime_get.Hours,stime_get.Minutes,stime_get.Seconds);
           

三、實驗結果

1s輸出一次更新後的資料如下:

将NTP伺服器中擷取的網絡時間更新至RTC ---- STM32&&RT-thread

四、參考資料

  • STM32CubeMX系列教程13:實時時鐘(RTC)
  • 《NTP協定代碼實作》
  • 《RTC時間更新》
  • 《何志傑 – RT-thread入門課程》 – 15.RT-Thread Nano-NTP-擷取網絡時間

繼續閱讀