四十一,esp8266与单片机通讯

四十一,esp8266与单片机通讯

WiFi对单片机来说,其实就是串口通讯

1,CUBE配置,当前esp8266使用串口3

2,移植驱动,查看程序

usart3发送数据

WiFi向电脑发送数据 ,过程是

1先发送AT指令设备号和字符数量,

2,然后返回”>”符号,

3,发送数据

4,返回OK

接收程序

在所有接收都在usart程序里

接收处理程序

WiFi模块发送的数据有固定的格式比如发A,接收到的是+PPD,1:A

处理程序可以把OXOA当起始码

控制程序

3,服务端

 

注意:这一小节是后续学习的基础,也是物联网常用的基础知识,需要仔细了解代码,这里需要理解每一行代码,给每一行都添加注释,不然一会忘记了,在公司我最讨厌两种人,一种是不写注释的,一种是非让我写注释的.下一节专门详解这次的代码.

 

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是一个简单的使用STM32单片机ESP8266通讯的示例程序: ```c #include "stm32f10x.h" //包含STM32F10x系列芯片头文件 #include <stdio.h> //包含标准输入输出库 #define USART1_DR_Base 0x40013804 //USART1数据寄存器地址 void USART1_Init(void) //USART1初始化函数 { //使能USART1、GPIOA时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE); //配置USART1的Tx引脚为复用推挽输出 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); //配置USART1的Rx引脚为浮空输入 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); //配置USART1 USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate = 115200; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); //使能USART1 USART_Cmd(USART1, ENABLE); } void ESP8266_SendCommand(char *command) //ESP8266发送AT指令函数 { char receive_buffer[256]; //接收缓冲区 int i = 0; //清空接收缓冲区 for(i = 0; i < 256; i++) { receive_buffer[i] = 0; } //发送AT指令 for(i = 0; command[i] != '\0'; i++) { USART_SendData(USART1, (uint16_t)command[i]); while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); } //等待接收数据 i = 0; while(1) { if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == SET) { receive_buffer[i] = USART_ReceiveData(USART1); i++; } else if(i > 0) { break; } } //输出接收到的数据 printf("%s\n", receive_buffer); } int main(void) { USART1_Init(); //初始化USART1 char *command = "AT\r\n"; //AT指令 ESP8266_SendCommand(command); //发送AT指令 while(1) { } } ``` 该程序通过USART1与ESP8266进行通讯,发送AT指令并接收ESP8266的返回结果,然后在串口终端上输出接收到的数据。在实际应用中,可以根据需要修改程序中的指令和数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值