美文网首页
ESP32 SNTP

ESP32 SNTP

作者: 昨天剩下的一杯冷茶 | 来源:发表于2019-07-31 16:54 被阅读0次

    写一个简单的官方代码流程说明,如果您觉得写的好,友情帮我下载一下源代码。
    https://download.csdn.net/download/qq_31806069/11457795

    填入你的WIFI账号和密码
    /#define EXAMPLE_WIFI_SSID "caicai"
    /#define EXAMPLE_WIFI_PASS "1234567890"

    1、 //初始化WIFI

    initialise_wifi();
    

    2、 等待WIFI连接成功

        //等待WIFI连接上
        ESP_LOGI(TAG, " wait wifi connect");
        xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT,
                            false, true, portMAX_DELAY);
        ESP_LOGI(TAG, " wait wifi ok");
    

    3、 初始化SNTP

        ESP_LOGI(TAG, "Initializing SNTP");
        sntp_setoperatingmode(SNTP_OPMODE_POLL);
        //cn.pool.ntp.org
        //设置要连接的NTP服务器
        sntp_setservername(0, "pool.ntp.org");
        sntp_init();
    

    4、 等待获取时间 成功

        while(timeinfo.tm_year != (CURRENT_YEAR - 1900))
        {
            ESP_LOGI(TAG, "Waiting for system time to be set... (%d)", retry);
            retry++;
            vTaskDelay(2000 / portTICK_PERIOD_MS);
            time(&now);
            localtime_r(&now, &timeinfo);
        }
    

    5、 结束sntp的客户端和关闭WIFI

        sntp_stop();
        vTaskDelay(5000 / portTICK_PERIOD_MS);
    
        //关闭WIFI
        ESP_ERROR_CHECK( esp_wifi_stop() );
    

    6、 将时区设置为中国标准时间

        setenv("TZ", "CST-8", 1);
        tzset();
        localtime_r(&now, &timeinfo);
        strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo);
        ESP_LOGI(TAG, "The current date/time in Shanghai is: %s", strftime_buf);
    
    

    7、每秒打印一下时间

        while(1)
        {
            return_now = time(&now);
            localtime_r(&now, &timeinfo);
            strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo);
            ESP_LOGI(TAG, "The current date/time in Shanghai is: %s", strftime_buf);
            ESP_LOGI(TAG, "tick:%ld-%ld", now,return_now);
    
    
    
            ESP_LOGI(TAG, "y:%d,m:%d,d:%d %d:%d:%d",
                timeinfo.tm_year+1900,
                timeinfo.tm_mon, timeinfo.tm_mday,
                timeinfo.tm_hour, timeinfo.tm_min,
                timeinfo.tm_sec);
    
    
    
            vTaskDelay(2000 / portTICK_PERIOD_MS);
    
        }
    
    

    效果展示:


    image.png

    补充:
    对结构体的说明

    struct tm
    {
      int   tm_sec;    //秒钟
      int   tm_min;    //分钟
      int   tm_hour;    //小时
      int   tm_mday;    //日期:日,从1开始
      int   tm_mon;    //日期:月,从0开始
      int   tm_year;    //年,距离1900年的差值,默认是70
      int   tm_wday;    //星期,1对应星期一
      int   tm_yday;    //一年的过去的天数
      int   tm_isdst;    //是否为夏时制
    #ifdef __TM_GMTOFF
      long  __TM_GMTOFF;
    #endif
    #ifdef __TM_ZONE
      const char *__TM_ZONE;
    #endif
    };
    

    相关文章

      网友评论

          本文标题:ESP32 SNTP

          本文链接:https://www.haomeiwen.com/subject/ljetdctx.html