网络时间协议 NTP(Network Time Protocol)是由 RFC1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行实践同步。NTP 采用 UDP 进行数据传输。
简单网络时间协议 SNTP(Simple Network Time Protocol)是一个简化了的 NTP 服务器和 NTP 客户端策略。通过 SNTP 功能可将系统的实时时钟 RTC 与网络时钟进行同步,确保系统时间一直保持较高的精度。
主体软件可分为 3 个功能块进行实现:
/******************************************************************************
* FunctionName : ATaskSntp
* Description : ATaskSntp 任务
* Parameters : none
* Returns : none
*******************************************************************************/
void ATaskSntp( void *pvParameters )
{
STATION_STATUS Status;
uint32 time;
do{
Status = wifi_station_get_connect_status();
vTaskDelay(100);
}while(Status != 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 date:%s\n",sntp_get_real_time(time));
}
vTaskDelay(500);
}
vTaskDelete(NULL);
}
[1]李少杰,马晓辉.基于FreeRTOS和LwIP的SNTP设计[J].单片机与嵌入式系统应用,2013,13(10):29-31.