写一个简单的官方代码流程说明,如果您觉得写的好,友情帮我下载一下源代码。
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
};
网友评论