学习ESP8266④基于STM32的开发实例

ESP8266基于STM32的开发实质上就是AT开发,这里以ESP8266连接路由器为例,为了证明是否连接上了,这里我是开手机热点来验证的。当然,你也可以ESP8266作为AP热点,这样可能现象更明显,只要配置成功了,打开手机WiFi,就会出现ESP8266的AP。由于开始就是以连接路由为例写的程序,所以这里就用这个例子讲解。
首先,需要知道AT指令如何配置入网,代码如下

AT+CWMODE=3
AT+RET
AT+CWJAP="这里填WiFi名字","这里填密码"

STM32和WIFI之间的通信原理实质上就是通过串口通讯,单片机通过串口发送AT指令给ESP8266,从而实现通讯。
我这里用的是正点原子的探索者,串口用的是串口三(PB10,PB11),直接在实验四串口实验上进行写程序,程序会以网盘形式放在最后
这里,我将上面三条指令进行HEX显示(又叫十六进制显示),从而得到如下代码

u8 at_cwmode[] = {0x00,0x41,0x54,0x2B,0x43,0x57,0x4D,0x4F,0x44,0x45,0x3D, 
                  0x33,0X0D,0x0A};  
u8 at_rst[] = {0x41, 0x54, 0x2B, 0x52, 0x53, 0x54, 0x0D, 0x0A};
u8 at_cwjap[]={0x41,0x54,0x2B,0x43,0x57,0x4A,0x41,0x50,0x3D,0x22,0x68,0x6F,0x6E,0x6F,0x72,0x39,
               0x22,0x2C,0x22,0x6D,0x6C,0x64,0x31,0x32,0x33,0x34,0x35,0x36,0x22,0x0D,0x0A};

之后直接进入主函数,就是通过串口发送这三条指令

int main(void)
{ 
	u8 t=0;
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
	delay_init(168);		//延时初始化 
	uart_init(115200);	//串口初始化波特率为115200
	usart3_init(115200);
	LED_Init();		  		//初始化与LED连接的硬件接口 
	delay_ms(1000);
	for(t=0;t<14;t++)
	{
		USART_SendData(USART3, at_cwmode[t]);         //向串口3发送数据
		while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!=SET);//等待发送结束
	}
	delay_ms(1000);

	for(t=0;t<8;t++)
	{
		USART_SendData(USART3, at_rst[t]);         //向串口3发送数据
		while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!=SET);//等待发送结束
	}
	delay_ms(1000);
	
	for(t=0;t<31;t++)
	{
		USART_SendData(USART3, at_cwjap[t]);         //向串口3发送数据
		while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!=SET);//等待发送结束
	}
	delay_ms(1000);
	while(1)
	{
		
	}
}

程序:链接:https://pan.baidu.com/s/1uKPKYFmz9Ccve46MBTUfwQ 提取码:ht1w
说说开发的时候遇到的问题
1.起初我没有加AT+RST重启,因为我在操作AT指令的时候不加该步也能配网成功,然而在STM32开发时,发现并不行。
2.我是自己写了个串口三,并没有用串口一,在照串口一移植之后,本以为不需要串口中断,然后就发现只能发,不能收,然后看了下串口中断的函数,发现这是为了验证数据是否发送完全,如果没有的话,程序就会一直卡着不走。
3.起初串口打印信息看看发的AT指令完不完整的时候,发现永远打印不出开头第一个A,后面的几句都正常,所以我在最前面加了个0x00把长度增加一个得以解决。

  • 15
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ma lidong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值