esp8266wifi模块教程 gd32
时间: 2023-07-21 07:07:39 浏览: 320
ESP8266 WiFi 模块是一款非常流行的低成本 Wi-Fi 模块,它可以通过与微控制器(如 GD32)连接,实现互联网的连接和通信。下面是使用 GD32 微控制器与 ESP8266 WiFi 模块进行通信的教程。
## 材料清单
- GD32 微控制器
- ESP8266 WiFi 模块
- 杜邦线若干
## 接线
将 ESP8266 模块的 VCC 引脚接到 GD32 的 3.3V 电源引脚,将 GND 引脚接到 GD32 的 GND 引脚。然后将 ESP8266 的 TX 引脚连接到 GD32 的 RX 引脚,将 ESP8266 的 RX 引脚连接到 GD32 的 TX 引脚。根据需要,还可以将其他引脚连接到 GD32 上,例如复位引脚和 GPIO 引脚。
## 代码
在 GD32 微控制器上编写程序,以实现与 ESP8266 模块的通信。以下是一个简单的示例程序:
```c
#include <stdio.h>
#include "gd32f10x.h"
#define ESP8266_USART USART0
#define ESP8266_USART_CLK RCC_APB2PERIPH_USART0
#define ESP8266_USART_GPIO_CLK RCC_APB2PERIPH_GPIOA
#define ESP8266_USART_GPIO GPIOA
#define ESP8266_USART_TX_PIN GPIO_PIN_9
#define ESP8266_USART_RX_PIN GPIO_PIN_10
#define BUFFER_SIZE 256
void ESP8266_Init()
{
USART_DeInit(ESP8266_USART);
RCC_APB2PeriphClock_Enable(ESP8266_USART_CLK | ESP8266_USART_GPIO_CLK, ENABLE);
GPIO_InitPara GPIO_InitStructure;
USART_InitPara USART_InitStructure;
GPIO_InitStructure.GPIO_Pin = ESP8266_USART_TX_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
GPIO_InitStructure.GPIO_Mode = GPIO_MODE_AF_PP;
GPIO_Init(ESP8266_USART_GPIO, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = ESP8266_USART_RX_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_MODE_IN_FLOATING;
GPIO_Init(ESP8266_USART_GPIO, &GPIO_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_TX_RX;
USART_Init(ESP8266_USART, &USART_InitStructure);
USART_Cmd(ESP8266_USART, ENABLE);
}
void ESP8266_Send(const char *str)
{
while (*str) {
while (USART_GetBitState(ESP8266_USART, USART_FLAG_TBE) == RESET);
USART_SendData(ESP8266_USART, *str++);
}
}
void ESP8266_Receive(char *buffer)
{
int i = 0;
while (i < BUFFER_SIZE - 1) {
while (USART_GetBitState(ESP8266_USART, USART_FLAG_RXNE) == RESET);
char c = USART_ReceiveData(ESP8266_USART) & 0xff;
if (c == '\r' || c == '\n') {
if (i > 0)
break;
} else {
buffer[i++] = c;
}
}
buffer[i] = '\0';
}
int main(void)
{
ESP8266_Init();
char buffer[BUFFER_SIZE];
ESP8266_Send("AT\r\n");
ESP8266_Receive(buffer);
printf("AT response: %s\n", buffer);
ESP8266_Send("AT+GMR\r\n");
ESP8266_Receive(buffer);
printf("AT+GMR response: %s\n", buffer);
return 0;
}
```
在这个示例程序中,我们使用了 GD32 的 USART0 串口与 ESP8266 进行通信。我们首先调用 `ESP8266_Init()` 函数进行初始化,然后使用 `ESP8266_Send()` 函数发送 AT 指令到 ESP8266 模块上,并使用 `ESP8266_Receive()` 函数接收来自模块的响应。
## 总结
通过这个简单的教程,您可以使用 GD32 微控制器与 ESP8266 WiFi 模块进行通信。这只是一个简单的示例程序,您可以根据需要进行更复杂的操作,例如连接到无线网络或通过互联网发送数据。
阅读全文