[ WiFi 智能家居项目 ] [ 11 ] SNTP 协议

介绍

网络时间协议 NTP(Network Time Protocol)是由 RFC1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行实践同步。NTP 采用 UDP 进行数据传输。

简单网络时间协议 SNTP(Simple Network Time Protocol)是一个简化了的 NTP 服务器和 NTP 客户端策略。通过 SNTP 功能可将系统的实时时钟 RTC 与网络时钟进行同步,确保系统时间一直保持较高的精度。

原理

image.png

主体软件可分为 3  个功能块进行实现:

  1. SNTP 获得网络时钟
  2. DS1302 时钟调整
  3. 通过 HTTP 以网页方式显示当前时钟

image.png

image.png

image.png


代码

/******************************************************************************
 * 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.