怎样用stm32cubemx,配置stm32f103c8t6通过esp—01用串口通信向手机发送数据
时间: 2023-05-28 20:03:34 浏览: 155
以下是配置步骤:
1. 打开 STM32CubeMX 软件,选择 STM32F103C8T6 微控制器。
2. 在 "Pinout" 标签页中,将 USART1 的 TX 引脚 (PA9) 和 RX 引脚 (PA10) 与 ESP-01 的 TX 和 RX 引脚相连。
3. 在 "Clock Configuration" 标签页中,将系统时钟 (SYSCLK) 配置为 72 MHz。
4. 在 "Configuration" 标签页中,找到 USART1 的配置选项,将波特率 (Baud Rate) 设置为 115200。
5. 在 "Project Manager" 标签页中,将 "Generate under" 选项设置为 "SW4STM32",然后点击 "Generate Code" 生成代码。
6. 打开生成的项目,在 main.c 文件中找到 MX_USART1_UART_Init 函数,修改其代码如下:
```c
/* USER CODE BEGIN USART1_Init 0 */
/* USER CODE END USART1_Init 0 */
/* USER CODE BEGIN USART1_Init 1 */
HAL_UART_Transmit(&huart1, "AT+RST\r\n", 8, 1000);
HAL_Delay(2000);
HAL_UART_Transmit(&huart1, "AT+CWMODE=2\r\n", 14, 1000);
HAL_Delay(1000);
HAL_UART_Transmit(&huart1, "AT+CIPMUX=1\r\n", 13, 1000);
HAL_Delay(1000);
HAL_UART_Transmit(&huart1, "AT+CIPSERVER=1,80\r\n", 19, 1000);
HAL_Delay(1000);
/* USER CODE END USART1_Init 1 */
```
这段代码会在初始化 USART1 之后,发送一些 AT 命令给 ESP-01,让它配置成 SoftAP 模式,并启动一个 TCP 服务器。
7. 在 main.c 文件中找到 MX_USART1_UART_Transmit 函数,修改其代码如下:
```c
/* USER CODE BEGIN USART1_MspInit 0 */
/* USER CODE END USART1_MspInit 0 */
/* USER CODE BEGIN USART1_MspInit 1 */
HAL_UART_Transmit(&huart1, (uint8_t *)pData, Size, 1000);
/* USER CODE END USART1_MspInit 1 */
```
这段代码会在发送数据时,直接调用 HAL_UART_Transmit 函数发送数据。
8. 在 main.c 文件中添加一个新函数,用于处理收到的数据。代码如下:
```c
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if (huart == &huart1)
{
if (strstr((char *)rx_buffer, "GET / ") != NULL)
{
char response[] = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE html><html><head><title>Welcome</title></head><body><h1>Hello from STM32!</h1></body></html>\r\n\r\n";
HAL_UART_Transmit(&huart1, (uint8_t *)response, sizeof(response), 1000);
}
else if (strstr((char *)rx_buffer, "POST / ") != NULL)
{
// Handle POST request...
}
HAL_UART_Receive_IT(&huart1, rx_buffer, sizeof(rx_buffer));
}
}
```
这段代码会在收到 USART1 数据时,判断收到的数据是 GET 请求还是 POST 请求,并发送相应的响应数据。
9. 在 main 函数中添加以下代码:
```c
HAL_UART_Receive_IT(&huart1, rx_buffer, sizeof(rx_buffer));
```
这段代码会启动 USART1 的中断接收模式,每次收到数据后都会调用 HAL_UART_RxCpltCallback 函数。
10. 将 STM32F103C8T6 连接到电脑,用 USB 转串口模块连接 ESP-01,打开串口调试助手,设置波特率为 115200,发送 GET 请求或 POST 请求即可收到相应的响应数据。
注意:ESP-01 要先通过 AT 命令配置成 SoftAP 模式,并启动一个 TCP 服务器。详细的 ESP-01 配置方法可以参考 ESP8266 AT 指令集文档。
阅读全文