ESP8266基础应用之使用SNTP获取网络时间

文章目录


sntp:即简单网络时间协议(Simple Network Time Protocol)
操作步骤:

  1. 初始化
void ICACHE_FLASH_ATTR
user_init(void)
{
    os_printf("SDK version:%s\n", system_get_sdk_version());

    led_init();
	my_sntp_init();
    user_wifi_connect();

}
  1. SNTP初始化并设置软件定时器每隔1秒获取一次网络时间;
os_timer_t sntp_read_timer;

LOCAL void ICACHE_FLASH_ATTR
sntp_read_timer_cb(void *arg)
{
	uint32_t time = sntp_get_current_timestamp();
	os_printf("time:%d\r\n",time);
	os_printf("date:%s\r\n",sntp_get_real_time(time));
}

void ICACHE_FLASH_ATTR
my_sntp_init(void)
{
	sntp_setservername(0,"0.cn.pool.ntp.org");
	sntp_setservername(1,"1.cn.pool.ntp.org");
	sntp_setservername(2,"2.cn.pool.ntp.org");
	sntp_init();

	os_timer_disarm(&sntp_read_timer);
	os_timer_setfn(&sntp_read_timer, sntp_read_timer_cb , NULL);
	os_timer_arm(&sntp_read_timer,1000,1);
}
  1. wifi连接成功后,点亮LED灯;
os_timer_t checkTimer_wifistate;


LOCAL void ICACHE_FLASH_ATTR
check_wifi_connect_state(void)
{
	uint8 getState;
	getState = wifi_station_get_connect_status();
	//查询 ESP8266 WiFi station 接口连接 AP 的状态
	if (getState == STATION_GOT_IP)
	{
		LED_ON;
		os_printf("wifi connect ok \r\n");
		os_timer_disarm(&checkTimer_wifistate);
    }
	else
	{
		LED_OFF;
	}
}

void ICACHE_FLASH_ATTR
user_wifi_connect(void)  //在user_init函数中调用该函数
{

	wifi_set_opmode(STATION_MODE); //设置为STATION_MODE模式
	struct station_config stationConf;
	os_strcpy(stationConf.ssid, "canbo-418-2.4G");//改成你自己的   路由器的用户名
	os_strcpy(stationConf.password, "canbo418"); //改成你自己的   路由器的密码
	wifi_station_set_config(&stationConf); //设置WiFi station接口配置,并保存到 flash
	wifi_station_connect(); //连接路由器

	os_timer_disarm(&checkTimer_wifistate);	//取消定时器定时
	os_timer_setfn(&checkTimer_wifistate, (os_timer_func_t *) check_wifi_connect_state,	NULL);	//设置定时器回调函数
	os_timer_arm(&checkTimer_wifistate, 500, 1);	//启动定时器,单位:毫秒
}
  1. 观察串口打印数据
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值