將NTP服務器中獲取的網絡時間更新至RTC ---- STM32&&RT-thread

  • There are different ways to be brave.
    勇敢有不同種方式。

一、需求

在單片機上實現RTC的驅動,利用WIFI模塊獲取NTP服務器中的網絡時間,並將其更新至RTC上。

二、實現

  • 1、使用STM32CubeMX配置好RTC的驅動。
    在這裏插入圖片描述
  • 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輸出一次更新後的數據如下:
在這裏插入圖片描述

四、參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章