当前位置: 首页 > news >正文

STM32 高级 WIFi案例1:测试AT指令

需求描述

测试AT指令是否能够正常控制ESP32的wifi,比如重启、读取设备信息等。

思路:

stm32通过串口usart2向ESP32发布命令。ESP32通过串口1返回信息。

配置:

第一步:对ESP32芯片烧录可以读取stm32命令的固件(factory_MINI-1.bin)。

第二步:打开cubeMAX->配置usart1和usart2,在原理图中,STM32通过usart2和ESP32连接。

第三步:新建Interface文件-》新建esp.c和esp.h文件。

cubeMAX配置图:

keil配置:引入esp.c文件,path中添加.h路径

代码书写流程:

1》usart.h文件->引入#include<stdio.h>

2》usart.c文件:重写printf代码:

int fputc(int ch, FILE *file)
{HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 1000);return ch;
}

3》Interface文件下的esp32.h文件:

#ifndef __ESP32_H__
#define __ESP32_H__#include "usart.h"
#include "string.h"
void ESP32_Init(void);//发送命令
void ESP32_SendCmd(uint8_t * cmd,uint16_t cmdLen);//读取响应
void ESP32_ReadResp(uint8_t buff[],uint16_t *len);#endif /* __ESP32_H__ */

4》Interface文件下的esp32.c文件:

#include "esp32.h"//定义全局变量,接收响应缓冲区和长度
uint8_t respBuff[1024];
uint16_t resplen;void ESP32_Init(void)
{//1 初始化串口2MX_USART2_UART_Init();// 2 发送AT指令 复位ESP32uint8_t *cmd = "AT+RST=0\r\n";ESP32_SendCmd(cmd,strlen((char *)cmd));//3 引入延时,确保重启成功HAL_Delay(2000);
}//发送命令
void ESP32_SendCmd(uint8_t * cmd,uint16_t cmdLen)
{// 先清空memset(respBuff,0,1024);//直接通过串口2发送命令HAL_UART_Transmit(&huart2,cmd,cmdLen,1000);// 读取响应do{ESP32_ReadResp(respBuff,&resplen);}while(strstr((char *)respBuff,"OK") == NULL);//将响应打印输出printf("%.*s\n",resplen,respBuff);
}//读取响应
void ESP32_ReadResp(uint8_t buff[],uint16_t *len)
{//串口2 接收变长数据HAL_UARTEx_ReceiveToIdle(&huart2,buff,1024,len,1000);;
}

5》main.c文件:

添加

#include "esp32.h"

int main(void)大括号下添加

  printf("测试AT指令...\n");ESP32_Init();printf("esp32初始化完成\n");uint8_t *cmd = "AT\r\n";ESP32_SendCmd(cmd,strlen((char *)cmd));cmd = "AT+GMR\r\n";ESP32_SendCmd(cmd,strlen((char *)cmd));

效果图:

相关文章:

STM32 高级 WIFi案例1:测试AT指令

需求描述 测试AT指令是否能够正常控制ESP32的wifi&#xff0c;比如重启、读取设备信息等。 思路&#xff1a; stm32通过串口usart2向ESP32发布命令。ESP32通过串口1返回信息。 配置&#xff1a; 第一步&#xff1a;对ESP32芯片烧录可以读取stm32命令的固件&#xff08;fac…...

SpringCloud微服务架构

文章目录 认识微服务&#xff1a;SpringCloud 服务拆分及远程调用实现夸远程服务调用使用RestTemplateEureka注册中心 搭建EruekaServer注册服务服务发现 Ribbon负载均衡 修改负载均衡规则解饿加载 Nacos注册中心&#xff08;nacos一部分功能&#xff09; 服务注册到nacosnacos…...

WebSocket封装

提示:记录工作中遇到的需求及解决办法 文章目录 前言二、背景三、WebSocket3.1 什么是 WebSocket ?为什么使用他?四、封装 WebSocket4.1 Javascript 版本4.2 Typescript 版本4.3 如何使用?五、我的痛点如何处理前言 本文将介绍 WebSocket 的封装,比如:心跳机制,重连和一…...

基于Flask后端框架的均值填充

Flask可以在Jupyter上运行&#xff0c;首先需要安装这两个库&#xff1a; !pip install Flask-CORS !pip install Flask 引入依赖&#xff1a; from flask import Flask, request, jsonify, send_file import os import pandas as pd import io from flask import Flask fr…...

SQL-Server链接服务器访问Oracle数据

SQL Server 链接服务器访问 Oracle 离线安装 .NET Framework 3.5 方法一&#xff1a;使用 NetFx3.cab 文件 下载 NetFx3.cab 文件&#xff0c;并将其放置在 Windows 10 系统盘的 C:Windows 文件夹中。 以管理员身份运行命令提示符&#xff0c;输入以下命令并回车&#xff1a; …...

Python中continue语句的使用

1 问题 本文将对在循环中continue语句的用途和如何正确使用continue进行分析与总结。 2 方法 &#xff08;1&#xff09;定义&#xff1a; 在编程中&#xff0c;“continue”是一个关键字&#xff0c;用于循环结构中。它的作用是跳过当前循环的剩余部分&#xff0c;立即进入下一…...

JavaScript的diff库详解(示例:vue项目实现两段字符串比对标黄功能)

diff库介绍 diff 库是基于 Myers 差分算法 实现的 JavaScript 文本差异库。 Myers 差分算法 是由 Eugene Myers 在 1986 年发表的一篇经典算法论文 “An O(ND) Difference Algorithm and its Variations” 中描述的一种高效算法&#xff0c;用于计算两个序列&#xff08;通常是…...

自动驾驶3D目标检测综述(六)

停更了好久终于回来了&#xff08;其实是因为博主去备考期末了hh&#xff09; 这一篇接着&#xff08;五&#xff09;的第七章开始讲述第八章的内容。第八章主要介绍的是三维目标检测的高效标签。 目录 第八章 三维目标检测高效标签 一、域适应 &#xff08;一&#xff09;…...

the request was rejected because no multipart boundary was found

文章目录 1. 需求描述2. 报错信息3. 探索过程 1. 使用postman 排除后端错误2. 搜索网上的解决方法3. 解决方法 1. 需求描述 想要在前端上传一个PDF 发票&#xff0c;经过后端解析PDF之后&#xff0c;将想要的值自动回填到对应的输入框中 2. 报错信息 org.apache.tomcat.u…...

HarmonyOS-面试整理

目录 为什么选择HarmonyOS/ 优点/特点鸿蒙系统的权限有哪些说一说鸿蒙系统的安全机制说一说鸿蒙系统的微内核与安卓的内核区别鸿蒙操作系统的微内核架构有哪些优势分布式能力在鸿蒙系统中如何实现请解释一下鸿蒙系统中的分布式软总线技术如何在鸿蒙操作系统中进行多设备协同开发…...

[C#] 「Unity」「游戏开发」如何在Canvas下的Button控件下实例化Image元素

在开发过程中,经常需要在UI上动态添加元素。特别是在Unity中,Canvas控件通常用来作为UI元素的容器,而Button控件则常用于交互。而在某些情况下,我们可能需要在一个Button下实例化一个Image元素,并确保它的位置与Button的位置保持一致。然而,简单地使用Button的坐标值往往…...

Nginx1.20.2-Linux-安装

文章目录 1.下载压缩包1.官网下载2.找到1.20.23.百度网盘 2.Linux安装1.搭建gcc环境2.上传到 /usr/local/nginx1.20.23.解压1.解压到当前目录2.删除压缩包 4.配置Nginx的编译路径1.进入nginx-1.20.22.执行内部的脚本&#xff0c;指定编译路径为/usr/local/nginx 5.编译并安装6.…...

Elasticsearch名词解释

文章目录 1.什么是Elasticsearch?2.什么是elastic stack(ELK)?3.什么是Lucene?4.什么是文档(document)&#xff1f;5.什么是词条(term)&#xff1f;6.什么是正向索引&#xff1f;7.什么是倒排索引&#xff1f;8.ES中的索引(index)9.映射(Mapping)10.DSL11.elastcisearch与my…...

Node项目——从0开始构建且共享至Gitee

从0开始构建一个Node.js项目涉及多个步骤&#xff0c;包括设置开发环境、初始化项目、安装依赖、编写代码以及配置版本控制等。以下是一个详细的步骤指南&#xff1a; 1. 安装Node.js和npm 首先&#xff0c;确保你已经安装了Node.js和npm&#xff08;Node Package Manager&am…...

layui多图上传,tp8后端接收处理

环境&#xff1a;layui2.9.21\thinkphp8.1 前端代码&#xff1a; layui.use([upload, layer], function() {const upload layui.upload;const layer layui.layer;const $ layui.$;// 上传图片const uploadInstImage upload.render({elem: #uploadImage,url: /admin/demo/…...

QEMU网络配置简介

本文简单介绍下qemu虚拟机网络的几种配置方式。 通过QEMU的支持&#xff0c;常见的可以实现以下4种网络形式&#xff1a; 基于网桥&#xff08;bridge&#xff09;的虚拟网络。基于NAT&#xff08;Network Addresss Translation&#xff09;的虚拟网络。QEMU内置的用户模式网…...

28.Marshal.PtrToStringAnsi C#例子

//怎么说呢&#xff0c;这个代码Marshal的英文意思有将军&#xff0c;控制等等&#xff0c; //我的理解是类似于console控制台。 //然后后面这个Ansi是一种ASCII的扩展&#xff0c;还有其他编码方式可选 就是一个把后面的指针转化为字符串的一个代码 这是用法…...

基于feapder爬虫与flask前后端框架的天气数据可视化大屏

# 最近又到期末了&#xff0c;有需要的同学可以借鉴。 一、feapder爬虫 feapder是国产开发的新型爬虫框架&#xff0c;具有轻量且数据库操作方便、异常提醒等优秀特性。本次设计看来利用feapder进行爬虫操作&#xff0c;可以加快爬虫的速率&#xff0c;并且简化数据入库等操作…...

Linux隐藏登录和清除历史命令以及其他相关安全操作示例

隐藏登录 ssh -T rootxxx.xxx.xxx.xxx /bin/bash -i 命令拆解-T &#xff1a;告诉ssh客户端&#xff0c;不要分配一个TTY&#xff08;伪终端&#xff09;root &#xff1a;连接用户xxx.xxx.xxx.xxx &#xff1a;连接的服务器ip地址/bin/bash &#xff1a;在远程服务器上启动…...

从授权校验看SpringBoot自动装配

背景 最近需要实现一个对于系统的授权检测功能&#xff0c;即当SpringBoot应用被启动时&#xff0c;需要当前设备是否具有有效的的授权许可信息&#xff0c;若无则直接退出应用。具体的实现方案请继续看下文。 环境 Ruoyi-Vue SpringBoot3 RuoYi-Vue: &#x1f389; 基于Spr…...

如何在Inkscape中快速实现专业级光线追踪?终极免费光学设计指南

如何在Inkscape中快速实现专业级光线追踪&#xff1f;终极免费光学设计指南 【免费下载链接】inkscape-raytracing An extension for Inkscape that makes it easier to draw optical diagrams. 项目地址: https://gitcode.com/gh_mirrors/in/inkscape-raytracing Inks…...

别再手动改hosts了!用Docker Compose一键部署Authelia SSO,顺便搞定Traefik反向代理

一键部署Authelia SSO与Traefik反向代理的Docker Compose实战指南 在当今复杂的网络环境中&#xff0c;管理多个Web应用的认证流程往往成为开发者的痛点。手动配置hosts文件、逐个设置访问权限不仅耗时耗力&#xff0c;还容易出错。本文将介绍如何利用Docker Compose快速搭建Au…...

Claude Code用户如何通过Taotoken解决封号与Token不足的困扰

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Claude Code用户如何通过Taotoken解决封号与Token不足的困扰 1. 理解Claude Code的接入限制与Taotoken的解决方案 Claude Code作为…...

独立开发者如何借助Taotoken模型广场为应用选型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 独立开发者如何借助Taotoken模型广场为应用选型 对于独立开发者而言&#xff0c;启动一个新项目往往意味着在有限的预算和时间内做…...

Inter字体终极指南:为什么这款开源字体能重新定义数字界面设计

Inter字体终极指南&#xff1a;为什么这款开源字体能重新定义数字界面设计 【免费下载链接】inter The Inter font family 项目地址: https://gitcode.com/gh_mirrors/in/inter Inter字体是一款专为现代数字屏幕设计的开源无衬线字体&#xff0c;通过科学优化的字形设计…...

抖音去水印下载器终极指南:批量保存视频、音乐、图集和直播

抖音去水印下载器终极指南&#xff1a;批量保存视频、音乐、图集和直播 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback …...

垃圾分类助手APP - 安卓期末大作业

垃圾分类助手APP - 安卓期末大作业 【下载地址】垃圾分类助手APP-安卓期末大作业 本项目是一个基于Android Studio的安卓应用程序&#xff0c;专为满足垃圾分类指导需求设计。作为一款学习与实践相结合的期末大作业&#xff0c;它不仅集成了丰富的前端和后端功能&#xff0c;还…...

OFDM仿真(Matlab)项目推荐:深入理解与掌握正交频分复用技术

OFDM仿真(Matlab)项目推荐&#xff1a;深入理解与掌握正交频分复用技术 【下载地址】OFDM仿真matlab完整可运行 本资源提供了一个完整的OFDM&#xff08;正交频分复用&#xff09;仿真代码&#xff0c;基于Matlab平台开发。该仿真代码包含了OFDM系统中的多个关键模块&#xff0…...

别再死记硬背One-Hot了!用Python从零实现一个Word2Vec词嵌入模型(附完整代码)

从零构建Word2Vec&#xff1a;用Python实现词嵌入的实战指南 词嵌入技术早已成为自然语言处理的基石&#xff0c;但大多数教程要么停留在理论层面&#xff0c;要么直接调用现成的库函数。本文将带你用纯Python和NumPy从零实现一个Word2Vec模型&#xff0c;彻底掌握词向量生成的…...

别再被格式卡论文了!Paperxie 格式排版功能,一键搞定从本科到博士的规范难题

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPThttps://www.paperxie.cn/format/typesettinghttps://www.paperxie.cn/format/typesetting 论文季里&#xff0c;有多少人的崩溃&#xff0c;不是因为写不出内容&#xff0c;而是死在了格式上&#x…...