Приложение LwIP SNTP работает, периодически считывая время с сервера и сохраняя его в системное время, указанное пользователем, в вашем случае RTC.
1. Для этого вам сначала нужно предоставить свою собственную функцию для приложения SNTP, чтобы установить время RTC, это можно сделать в sntp.c следующим образом:
.
.
#include "your_rtc_driver.h"
.
.
/* Provide your function declaration */
static void sntp_set_system_time_us(u32_t t, u32_t us);
.
.
/* This is the macro that will be used by the SNTP app to set the time every time it contacts the server */
#define SNTP_SET_SYSTEM_TIME_NTP(sec, us) sntp_set_system_time_us(sec, us)
.
.
/* Provide your function definition */
static void sntp_set_system_time_us(sec, us)
{
your_rtc_driver_set_time(sec, us);
}
2. Теперь, чтобы использовать SNTP в своем приложении, убедитесь, что в вашем файле lwipopts.h включены следующие определения SNTP, как показано ниже:
#define SNTP_SUPPORT 1
#define SNTP_SERVER_DNS 1
#define SNTP_UPDATE_DELAY 86400
3. Затем в вашем пользовательском коде:
#include "lwip/apps/sntp.h"
.
.
.
/* Configure and start the SNTP client */
sntp_setoperatingmode(SNTP_OPMODE_POLL);
sntp_setservername(0, "pool.ntp.org");
sntp_init();
.
.
.
/* Now if you read the RTC you'll find the date and time set by the SNTP client */
read_date_time_from_rtc();
Вот и все, теперь каждые SNTP_UPDATE_DELAY мс приложение SNTP будет считывать время с сервера и сохранять его в RTC, и все, что вам нужно сделать в вашем коде, - это запустить приложение SNTP и читать из RTC.
person
Bayrem Gharsellaoui
schedule
12.11.2020