SNTP协议
简单网络时钟协议
SNTP接口说明
void sntp_setserver(unsigned char idx, ip_addr_t addr)
void sntp_setservername(unsigned char idx, char *server)
void sntp_int(void)
void sntp_stop(void)
uint32 sntp_get_current_timestamp()
char* sntp_get_real_time(long t)
SNTP功能实现
#include "esp_common.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "lwip/sockets.h"
#include "lwip/dns.h"
#include "lwip/netdb.h"
#include "lwip/apps/sntp.h"
#include "espressif/espconn.h"
#include "espressif/airkiss.h"
#include "user_sntp.h"
char* SntpServerNames[3] =
{
"ntp1.aliyun.com",
"ntp2.aliyun.com",
"ntp3.aliyun.com"
};
void ATaskSntp(void *pvParameters)
{
int iVariableExample = 0;
STATION_STATUS StaStatus;
uint32 time;
do
{
StaStatus = wifi_station_get_connect_status();
vTaskDelay(100);
}
while (StaStatus != STATION_GOT_IP);
printf("task is SNTP\n");
printf("STATION_GOT_IP!\n");
sntp_setservername(0, SntpServerNames[0]);
sntp_setservername(1, SntpServerNames[1]);
sntp_setservername(2, SntpServerNames[2]);
sntp_init();
for (;;)
{
time = sntp_get_current_timestamp();
if(time)
{
printf("current data:%s\n", sntp_get_real_time(time));
}
vTaskDelay(500);
}
vTaskDelete(NULL);
}
void Sntp_int(void)
{
xTaskCreate(ATaskSntp, "Sntp", 256, NULL, 4, NULL);
}
串口打印