Page 1 of 1

请问时间校准函数是哪个?我设备里面没有网络,无法NTP校时

Posted: Sat Mar 19, 2022 10:52 am
by so_zhou
请问时间校准函数是哪个?

我设备里面没有网络,无法通过NTP校时,只能通过蓝牙和串口将时间传输到ESP32。

没找到时间设置的相关函数。

谢谢

Re: 请问时间校准函数是哪个?我设备里面没有网络,无法NTP校时

Posted: Tue Mar 22, 2022 4:51 am
by DJZ1992
给你点参考,这是我写的通过us来设置时间,和获取us为单位的时间。

/*
* 手动设置SNTP时间
*/
void sntp_time_set_us(int64_t time_us)
{
struct timeval time= {0};
time.tv_sec = time_us / 1000000L; //取秒
time.tv_usec = time_us - time.tv_sec * 1000000L; //微秒
ESP_LOGI(TAG, "set sntp time us : %lld", time_us);
sntp_sync_time(&time);
}


/*
* 获取SNTP时间,秒
*/
int64_t sntp_time_get_us(void)
{
struct timeval tv_now;
gettimeofday(&tv_now, NULL);

int64_t sntp_time = (int64_t)tv_now.tv_sec * 1000000L + (int64_t)tv_now.tv_usec;
ESP_LOGI(TAG, "get sntp time us : %lld", sntp_time);
return sntp_time;
}