赞
踩
一、硬件及软件准备
STM32F103ZE开发板,eps8266, st-link驱动 ,串口连接助手,keil5
二、如何获取网络时间
在已经连接到电脑wifi后(在后文),就可以网络时间进行获取。
理解时间数据应该是从uart串口中获得的,
- void upload_data(void)
- {
- uint8_t *buf;
-
- /* 接收来自ATK-MW8266D UART的一帧数据 */
- buf = atk_mw8266d_uart_rx_get_frame();
- if (buf != NULL)
- {
- printf("%s", buf);
- strcpy(dataBuff,(const char*)buf);
- /* 重开开始接收来自ATK-MW8266D UART的数据 */
- atk_mw8266d_uart_rx_restart();
- }
-
- }
- /**
- * @brief 我的ATK-MW8266D发送AT指令
- * @param cmd : 待发送的AT指令
- * ack : 等待的响应
- * timeout: 等待超时时间
- * @retval ATK_MW8266D_EOK : 函数执行成功
- * ATK_MW8266D_ETIMEOUT: 等待期望应答超时,函数执行失败
- */
- void mycmd(char *cmd, char *ack, uint32_t timeout)
- {
- uint8_t *ret = NULL;
-
- atk_mw8266d_uart_rx_restart();
- atk_mw8266d_uart_printf("%s\r\n", cmd);
-
- if ((ack == NULL) || (timeout == 0))
- {
- //return ATK_MW8266D_EOK;
- }
- else
- {
- while (1)
- {
- ret = atk_mw8266d_uart_rx_get_frame();
- if (ret != NULL)
- {
- printf("%s",ret);
- if (strstr((const char *)ret, ack) != NULL)
- {
-
- //printf("%s",strstr((const char *)ret, ack));
- while(1){}
- //return ATK_MW8266D_EOK;
- }
- else
- {
- atk_mw8266d_uart_rx_restart();
- }
- }
- timeout--;
- delay_ms(1);
- }
-
- //return ATK_MW8266D_ETIMEOUT;
- }
- }
- /**
- * @brief 计算时间
- * @param 无
- * @retval 无
- */
- void computeTime(char* date)
- {
- int hour_offset=23;
- int min_offset=26;
- hour=(*(date+hour_offset)-'0')*10+(*(date+hour_offset+1)-'0');
- min=(*(date+min_offset)-'0')*10+(*(date+min_offset+1)-'0');
- hour+=8;
- if(hour>=24)
- {
- hour-=24;
- }
- }
- /**
- * @brief 时间字符串
- * @param 无
- * @retval 无
- */
- void Time(void)
- {
- time[0]=hour/10+'0';
- time[1]=hour%10+'0';
- time[3]=min/10+'0';
- time[4]=min%10+'0';
- }
- /**
- * @brief 刷新时间
- * @param 无
- * @retval 无
- */
- void showTime(void)
- {
- Time();
- lcd_show_string(100, 275, 220, 16, 16, time, BLUE);
- printf("time:%s",time);
- }
- /**
- * @brief 获取时间
- * @param 无
- * @retval 无
- */
- void getTime(void)
- {
- uint8_t *ret = NULL;
- char *strr=NULL;
- char cmd[]="1";
- char ack[]="Date";
- atk_mw8266d_uart_rx_restart();
- atk_mw8266d_uart_printf("%s\r\n", cmd);
- delay_ms(100);
- while (ret == NULL)
- {
- ret = atk_mw8266d_uart_rx_get_frame();
- if (ret != NULL)
- {
- //printf("%s",ret);
- strr=strstr((const char *)ret, ack) ;
- if (strr != NULL)
- {
- computeTime(strr);
- showTime();
- /*Time();
- lcd_show_string(100, 275, 220, 16, 16, time, BLUE);
- printf("time:%s",time); */
- //printf("%s",strstr((const char *)ret, ack));
- //while(1){}
- //return ATK_MW8266D_EOK;
- }
- else
- {
- atk_mw8266d_uart_rx_restart();
- }
- }
-
- delay_ms(1);
- }
- /*
- printf("%s",ret);
- if(ret!=NULL)
- {
- strr=strstr((const char *)ret, ack) ;
- if (strr != NULL)
- {
- computeTime(strr);
- lcd_show_string(10, 155, 220, 32, 32, time, RED);
- printf("time:%s",time);
- //printf("%s",strstr((const char *)ret, ack));
- //while(1){}
- //return ATK_MW8266D_EOK;
- }
- else
- {
- atk_mw8266d_uart_rx_restart();
- }
- }*/
- }
初始化内容
- #include "./BSP/ATK_MW8266D/atk_mw8266d.h"
- #include "./SYSTEM/delay/delay.h"
- #include <string.h>
- #include <stdio.h>
-
- /*8266初始化*/
- static void atk_mw8266d_hw_init(void)
- {
- GPIO_InitTypeDef gpio_init_struct;
-
- ATK_MW8266D_RST_GPIO_CLK_ENABLE();
-
- gpio_init_struct.Pin = ATK_MW8266D_RST_GPIO_PIN;
- gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP;
- gpio_init_struct.Pull = GPIO_NOPULL;
- gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH;
- HAL_GPIO_Init(ATK_MW8266D_RST_GPIO_PORT, &gpio_init_struct);
- }
-
- /**
- * @brief ATK-MW8266D复位
- * @param ÎÞ
- * @retval ÎÞ
- */
- void atk_mw8266d_hw_reset(void)
- {
- ATK_MW8266D_RST(0);
- delay_ms(100);
- ATK_MW8266D_RST(1);
- delay_ms(500);
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。