四十二,esp8266代码讲解

本文详细介绍了如何通过ESP8266利用WiFi控制LED灯和蜂鸣器,包括配置Cube环境、初始化硬件、设置串口通信、接收和发送数据的代码实现,以及使用HAL库进行串口操作的技巧。
摘要由CSDN通过智能技术生成

四十二,esp8266代码讲解

ESP8266与单片机通讯其实就是串口,只是很具有代表性,单独详细的说明一下,这样就算时间长了自己忘记了,看看笔记还能回想起来.

1,目标:通过WiFi控制LED和蜂鸣器.

2,实现

2.1配置cube内容

初始化串口,LED,蜂鸣器,按键

2.2 新建工程

然后一顿复制粘贴,注意配置的时候串口3要把中断打开,不然调了两小时都是只能发送不能接收………………555

3,代码

分为3大块

主函数,串口发送,串口接收

3.1串口接收

.h

.c

注释,

UART_HandleTypeDef huart3;CUBE直接生成在main里的,打开几个串口就生成几个这种函数,用于配置串口,但是在别的文件里调用需要加extern—–extern UART_HandleTypeDef huart3;//声明USART3HAL库结构体,extern定义的变量其他文件可以使用

先判断中断源

然后判断接收数据

1,使用HAL直接的接收函数,接收一个字节的串口3的数据赋值给当前接收数据的变量USART3_NewData

2,相当于先判断一个接收协议的首字节(0X0A)需要先对应的上.esp8266发送的数据自动会在头添加一个回车,所以把这个回车当起始位就行.

如果收到回车(0X0A)且接收标志最高位不等于1[(0x800->1000 0000), !(非零)=0, !(零)=1], 这样只有USART3_RX_STA0的时候才满足条件.

进入if后把标志位USART3_RX_STA设置为0x400(100 0000 0000),然后把接收缓存清0.

3,2步把标志位把标志位设置为0X400,这样就满足条件进入了第3步且这个接收条件一直保持满足,可以一直接收.23同级别不是嵌套.

先把当前接收的一个字节保存到接收缓存数组里,然后数组的元素加1继续保存,与上3fff(11 1111 1111 1111)限制接收内容保存在bit13~0.后两位其他作用bit15:接收完成标志,bit14:接收到0x0d.

判断接收的数组里前6位是+IPD,1:,7位等于0,说明没有接收到7位数据.然后不等于0的时候为真,说明接收到就数据,并把第7位的最高位置1,然后把缓存第7位赋值给标志位

0X8000是把接收标志的最高位置1, 如果主函数检测到标志的最高位置1,就进行判断,当条件满足会执行相应的功能,执行完毕会把标志位清0,准备下次接收

注意:USART3_RX_STA = USART3_RX_BUF[7]+0x8000这样就不能满足USART3_RX_STA&0x4000,把第7次接收的数据加0X8000赋值给USART3_RX_STA会造成这个接收标志的第14位不再是0x4000,就不能满足继续数组保存数据的条件了.这样局可以等待下一次标记了.

3.2串口发送

.h

.c

WiFi发送命令的函数就是常用的串口发送的printf函数,但是 串口号不同,需要修改为串口3.

HAL_UART_Transmit(&huart3,(uint8_t *)buff,i,0xffff);其余都一样.

Tcp函数就是在wifi命令的基础上加上一个 计算数据长度的函数,然后固定发送数据的命令AT+CIPSEND=加上长度.

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值