STM32+ESP8266-简易WiFi时钟

根据前面4篇文章,可以做出一个简易的时钟了;

这是一个简单的例子,通过按键控制ESP8266连接WiFi的方式,通过GET响应会包含时间信息的服务器来获取时间,显示在屏幕上;

以下是主函数:

#include "esp8266.h"
#include "lcd.h"
#include "key.h"
#include "string.h"

int main()
{	
	char *http = "GET\n";
	char *ipd = NULL;
	uint8_t key = 0;
	
	SysTick_Init(168);
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);  //中断优先级分组
	USART1_Init(115200);							 //串口1初始化 调试
	Usart3_Config(115200);							 //串口3初始化 连接esp8266
	TFTLCD_Init();									 //LCD初始化
	KEY_Init();										 //按键初始化
	FRONT_COLOR = Turquoise;						 //字体颜色
	BACK_COLOR = BLACK;								 //背景颜色
	
	while(1)//按键扫描循环
	{
		key = KEY_Scan(0);/* 按键扫描,单次按下 */
		if(key == KEY_UP)/* 开启SmartConfig配网 */
		{
			ESP8266_Init_SmartConfig();
			while(1)
			{
				if(strstr((char *)esp8266_buf, "smartconfig connected wifi"))
				{
					ESP8266_Init_after_SmartConfig();
					break;
				}
				delay_ms(500);
			}
			break;/* 跳出按键循环扫描 */
		}
		else if(key == KEY_DOWN)/* 直连预设配置 */
		{
			ESP8266_Init_Fixed_WiFi();
			break;
		}
		else if(key == KEY_LEFT)/* 直连上次SmartConfig配置的路由 */
		{
			ESP8266_Init_Disconnected();
			break;
		}
	}
	
	while(1)//主循环
	{
		/* 发送GET请求 */
		ESP8266_SendData(http,4);
		/* 获取服务器返回的信息 */
		ipd = ESP8266_GetIPD(100);
		//printf("\r\n%s\r\n",ipd);
		if(*(ipd+601) != '>')
		{
			LCD_ShowFont(0,10,ipd+601,19);
		}
		else
		{
			LCD_ShowFont(0,10,ipd+602,19);
		}
		delay_ms(100);
		ESP8266_TCP();//再次连接服务器
	}
}

 

主循环最后要再次连接服务器,因为GET一次后会断开连接;

void ESP8266_TCP(void)
{
	/* 建立TCP连接 */
//	printf("CIPSTART\r\n");
	while(ESP8266_SendCmd(ESP8266_TCP_INFO, "CONNECT"))
		delay_ms(500);
}

 

ipd偏移601就是时间字段的首地址,但偶尔这里会变成  '>'  这个字符,因此要加入判断;

使用  LCD_ShowFont()    固定显示数据的长度就可以只显示时间信息;

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值