当前位置:首页 > 技术 > 正文内容

STM32MP157 M4内核通过MQTT连接阿里云的ESP8266引脚设置

访客 技术 2026年7月4日 2

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协议栈的数据交互功能。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。