STM32MP157 M4内核通过MQTT连接阿里云的ESP8266引脚设置
1 概述
基于freertos系统实现STM32MP157 M4核心驱动ESP8266模块,通过MQTT协议与阿里云物联网平台进行数据交互。该方案包含以下实施步骤: (1) STM32MP157硬件资源分析 (2) ESP8266通信引脚配置 (3) 通过sulin服务器验证时间同步功能 (4) 实现阿里云平台数据传输
硬件架构: (1) 边缘计算设备:正点原子STM32MP157开发板 (2) 开发环境:Windows 10/11系统配合虚拟机环境
前序章节已说明ESP8266的指令集规范及引脚选择方法,当前阶段重点完成PB5和PB6引脚的硬件配置,同时增加PB4作为复位控制引脚。
2 引脚配置
ESP8266通信需配置TXD/RXD两个基本引脚,为增强控制能力额外增加复位引脚。本方案选用PB4作为控制引脚,其功能需求为数字输出模式。
2.1 TXD/PB6与RXD/PB5配置
使用STM32CUBEIDE进行引脚分配:
2.1.1 项目创建
创建新工程后选择系统时钟配置: ![硬件配置图1] ![硬件配置图2]
完成初始化设置后进入引脚配置界面: ![引脚配置界面1] ![引脚配置界面2]
2.1.2 引脚参数设置
配置PB5/PB6为UART功能:
// UART5引脚配置
GPIO_InitStruct.Pin = GPIO_PIN_5 | GPIO_PIN_6;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Alternate = GPIO_AF12_UART5;
添加PB4复位控制引脚:
// 复位引脚配置
GPIO_InitStruct.Pin = GPIO_PIN_4;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
启用DMA传输模式:
// DMA配置
hdma_uart5_rx.Instance = DMA2_Stream0;
hdma_uart5_rx.Init.Channel = DMA_CHANNEL_4;
中断优先级配置:
// NVIC优先级分组
HAL_NVIC_SetPriority(UART5_IRQn, 6, 0);
时钟树设置:
// 系统时钟配置
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_UART35;
2.1.3 中断处理代码
实现空闲中断回调函数:
void UART5_IRQHandler(void)
{
HAL_UART_IRQHandler(&huart5);
if (__HAL_UART_GET_FLAG(&huart5, UART_FLAG_IDLE)) {
__HAL_UART_CLEAR_IDLEFLAG(&huart5);
HAL_UART_DMAStop(&huart5);
uint16_t remaining = __HAL_DMA_GET_COUNTER(&hdma_uart5_rx);
uint16_t received = UART5_RX_MAX_LENS - remaining;
HAL_UART_Transmit(&huart5, huart5_rx_buf, received, 0xFFFF);
HAL_UART_Receive_DMA(&huart5, huart5_rx_buf, UART5_RX_MAX_LENS);
}
}
3 总结
本节完成ESP8266模块的引脚初始化配置,下阶段将实现MQTT协议栈的数据交互功能。