vscode的ws环境,esp32s3连接wifi

注意大小写,wsl(也就是linux环境)严格区分大小写。有帮助记得订阅专栏+点赞,当前不定期持续更新。

一、文件夹格式

oled1/                  # 项目根目录
├─ main/                # 主程序文件夹
│  ├─ main.c            # 主函数文件(包含 app_main)
│  └─ CMakeLists.txt    # main 组件的编译配置
├─ components/          # 自定义组件目录(与 main 同级)
│  └─ WIFI/             # WIFI 组件
│     ├─ WIFI.c         # WIFI 功能实现
│     ├─ WIFI.h         # WIFI 头文件(声明函数、宏等)
│     └─ CMakeLists.txt # WIFI 组件的编译配置
├─ CMakeLists.txt       # 项目根目录编译配置(指定项目名称、依赖等)
├─ sdkconfig            # ESP-IDF 配置文件(由 menuconfig 生成)
└─ partitions.csv       # 分区表配置文件(可选,默认使用 ESP-IDF 自带)

二、WIFI.c

#include "WIFI.h"void my_esp_event(void* event_handler_arg, esp_event_base_t event_base,int32_t event_id, void* event_data)
{if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) {esp_wifi_connect();  //连接WiFiprintf("WiFi连接断开,正在重新连接...\n");}else if(event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) {// WiFi station got IP addressprintf("获取IP地址成功!\n");ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data;         char ip_str[16];sprintf(ip_str, IPSTR, IP2STR(&event->ip_info.ip));     //获取ip地址printf("IP的地址是: %s\n", ip_str);}
}void init_Wifi()
{//一、初始化nvs_flash_init();esp_netif_init();       //初始化nvs和网络接口esp_event_loop_create_default();    //创建事件循环(接收wifi信号变化,获取ip啥的,都需要在事件循环里处理)esp_netif_create_default_wifi_sta();    //创建按wifi station(工作站)模式的网络接口printf("WIFI初始化结束!\n");//二、注册wifi和ip的事件回调//wifi事件回调esp_event_handler_instance_t wifi_event_handler;esp_event_handler_instance_register(WIFI_EVENT,             //wifi事件 ESP_EVENT_ANY_ID,       //任何wifi事件都触发下面的回调函数&my_esp_event,          //回调函数NULL,                   //用户数据&wifi_event_handler);   //事件回调句柄//ip事件回调esp_event_handler_instance_t ip_event_handler;esp_event_handler_instance_register(IP_EVENT,               //ip事件IP_EVENT_STA_GOT_IP,    //只关注获取ip的事件&my_esp_event,          //回调函数NULL,                   //数据&ip_event_handler);     //事件回调句柄printf("WIFI和IP事件注册回调完成!\n");//wifi配置与启动//配置wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); //默认配置 cfg-configurationesp_wifi_init(&cfg);esp_wifi_set_mode(WIFI_MODE_STA);wifi_interface_t interface = WIFI_IF_STA; //设置wifi接口为工作站模式wifi_config_t wifi_sta_config = {.sta = {.ssid = User_Wifi_SSID,          //替换为你的WiFi SSID.password = User_Wifi_PassWord,  //替换为你的WiFi密码.threshold.authmode = WIFI_AUTH_WPA2_PSK, //认证方式},};//wifi配置,wifi_sta_config是工作站模式的配置,sta_config是配置wifi账号、密码,和wifi的认证方式esp_wifi_set_config(interface, &wifi_sta_config);   esp_wifi_start();   //启动wifiprintf("WIFI启动完成!\n");
}

三、WIFI.h

#pragma once#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "esp_log.h"
#include "esp_wifi.h"
#include "esp_event.h"
#include "nvs_flash.h"
#include "esp_netif.h"    #include "OLED.h"#define User_Wifi_SSID      "QL.ql"       //你的wifi名字(建议英文),建议使用2.4G频段,不然可能连接不上
#define User_Wifi_PassWord  "Ql.qlGood"  //你的wifi密码void init_Wifi();

四、CMakeList.txt

# components/WIFI/CMakeLists.txt
idf_component_register(SRCS "WIFI.c"INCLUDE_DIRS "."REQUIRES esp_wifi esp_event esp_netifnvs_flashesp_systemOLED
)

五、说明

在 C/C++ 中
#pragma once 
和
#ifndef ... #define ... #endif
作用一样。后者兼容性高且通用,前者方便

②需要更改成自己wifi账号密码的去修改WIFI.h的宏定义,有备注

③WIFI用到的官方组件比较多,注意CMakeList.txt的组件依赖声明和WIFI.h的引用头文件。如果直接引用库但是没有包含依赖,会报错。

六、参考

esp32-s3 IDF 连接wifi_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/93355.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/93355.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试题:如何用Flink实时计算QPS

Flink 实时计算 QPS 面试题题目&#xff1a; 假设某互联网应用日活用户 100 万&#xff0c;每天产生 1 亿条数据&#xff08;日志/事件&#xff09;&#xff0c;要求使用 Apache Flink 实现实时计算系统的 QPS&#xff08;Queries Per Second&#xff09;&#xff0c;并考虑以下…

Pytest项目_day12(yield、fixture的优先顺序)

yield yield可以用作fixture的后置操作 yield的执行位置和scope的范围设置有关 当我们将scope设置为function时&#xff0c;yield就会在方法结束时执行yield后的代码yield还可以返回数据&#xff0c;类似于return&#xff0c;不过yield之后的代码会执行&#xff0c;而return不会…

面试实战 问题三十二 Java中创建对象的几种方式

Java中创建对象的几种方式 在Java中&#xff0c;创建对象是面向对象编程的核心操作。对象创建不仅涉及直接实例化&#xff0c;还包括通过设计模式、反射机制等间接方式来实现。以下我将逐步解释Java中常见的对象创建方式&#xff0c;每种方式都基于Java语言规范和相关设计原则。…

ToDesk云电脑 vs 顺网云 vs 海马云:谁才是5090显卡云电脑的真王者?

文章目录一、引言二、产品介绍三、硬件配置对比3.1 处理器3.2 显卡四、云电脑性能实测对比4.1 网络优化4.1.1 海马云4.1.2 ToDesk云电脑4.1.3 顺网云4.2 鲁大师硬件测评4.3 3DMark4.4 系统稳定性测试4.4.1 海马云4.4.2 顺网云4.4.3 ToDesk云电脑4.5 为什么这么看重平台优化&…

.NET 在鸿蒙系统(HarmonyOS Next)上的适配探索与实践

目录 1. 前言 2. 项目状态 3. 运行时环境选择 4. NativeAOT 适配原理 4.1 底层兼容性 4.2 技术实现方案 5. 已知问题及解决方案 5.1 syscall 限制&#xff08;已解决&#xff09; 5.2 mmap 申请虚拟内存过大&#xff08;已解决&#xff09; 5.3 第三方库缺失问题&…

图像处理--图像模板匹配NCC算法-->Fast NCC算法的解读

目录 前言 一、基础知识 二、NCC基本公式以及解决问题 1. NCC基本公式 2. 基本公式解读 三、简化分母 fuv 1. 要简化的分母 2. 积分图 3. 分母拆开化简 四、简化分子 1. 要简化的分子 2. 模板函数的近似 3. 基函数简单解释 五、Fast NCC归一化互相关值 1. 最终公…

短剧小程序系统开发:赋能创作者,推动短剧艺术创新发展

短剧作为一种新兴的艺术形式&#xff0c;具有独特的魅力和发展潜力。然而&#xff0c;在传统的发展模式下&#xff0c;短剧创作者面临着诸多限制和挑战。短剧小程序系统的开发&#xff0c;为创作者提供了强大的赋能&#xff0c;推动了短剧艺术的创新发展。创作工具丰富&#xf…

Redis知识点+项目+面试八股

基础篇&#xff1a;讲解Redis常用数据结构实战篇&#xff1a;黑马点评实战高级篇&#xff1a;Redis高级知识点原理篇&#xff1a;Redis原理面试篇&#xff1a;Redis八股⭕️第一章&#xff1a;基础篇⭕️1. Redis介绍Redis是一个key-value的数据库&#xff0c;key一般是String类…

WPS文字和Word文档如何选择多个不连续的行、段

要选择Word或WPS文字中不连续的多行、多段&#xff0c;使用鼠标加键盘即可快速搞定。Word和WPS文字中选择多行的操作一样&#xff0c;选择多段的方法略有不同。选中以后&#xff0c;可以对这些内容进行删除、复制、剪切、查找、替换、设置格式等操作。一、在Word和WPS文字中选择…

嵌入式C/C++面试大全

基础语法 1.在main执⾏之前和之后执⾏的代码可能是什么&#xff1f; main函数执⾏之前&#xff0c;主要就是初始化系统相关资源&#xff1a; 设置栈指针&#xff0c;其中栈存放的局部变量、函数参数、函数调用的返回地址初始化静态 static 变量和 global 全局变量&#xff0c;即…

Java应用架构实战指南:主流模式解析与Spring落地实践

在Java开发的世界里,选对应用架构不是纸上谈兵,而是项目成败的关键。 今天,我想和大家聊聊四种主流架构模式——分层、微服务、事件驱动和六边形架构。这些模式在实战中各有千秋,我会结合代码示例和架构图,带大家看清它们的内核。无论你是新手还是老手,这篇文章都能帮你…

重学JS-002 --- JavaScript算法与数据结构(二)JavaScript 基础知识

文章目录加入jsjs 的位置控制台变量关键字DOMbutton注释CSS转义函数参数对象属性属性访问数组Math加入js 首先创建一个 script 元素。 此元素用于将 JavaScript 加载到 HTML 文件中。 <script src"./script.js"></script>js 的位置 script 标签位于 HTML…

计算机视觉--opencv(代码详细教程)(二)

一、图片的边界填充在 OpenCV 中&#xff0c;cv2.copyMakeBorder()是用于给图像添加边框&#xff08;边缘&#xff09;的核心 API&#xff0c;其完整语法和参数说明如下&#xff1a;函数完整定义cv2.copyMakeBorder(src, top, bottom, left, right, borderType, valueNone)参数…

FPGA实现Aurora 64B66B视频点对点传输,基于GTX高速收发器,提供4套工程源码和技术支持

目录 1、前言Aurora 64B66B是啥&#xff1f;官方有Example&#xff0c;为何要用你这个&#xff1f;工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目我这里已有的 GT 高速接口解决方案本方案在Aurora 8B10B上的应用 3、工程详细设…

【软件安装|1】CentOS7最新可用国内 yum 镜像源配置和Linux版MySQL8.0安装及其相关知识

文章目录一.更换yum镜像源二.安装并配置MySQL8.0安装配置相关知识什么是yum&#xff1f;什么是镜像源&#xff1f;相关知识请看最后&#xff0c;首先来更换yum镜像源 更换前需要准备好VmwareWorkstation和Finalshell&#xff0c;开启虚拟机&#xff0c;切换到root用户 Vmware和…

【深度学习】深度学习的四个核心步骤:从房价预测看机器学习本质

文章目录基础概念与原理第一步&#xff1a;准备数据 - 构建学习的基础数据生成与特征工程&#xff08;选择对预测有用的特征&#xff09;数据集划分的重要性第二步&#xff1a;设计模型 - 建立数学表达线性回归模型的数学表达损失函数的设计哲学第三步&#xff1a;训练优化 - 自…

Java使用Apache POI读取Excel文件

一、下载jar包 Apache POI有提供下载地址&#xff1a;Apache Archive Distribution Directory&#xff0c;直接打开链接并选择所需的版本下载即可(双击last modified可按最新更新时间排序)&#xff0c;本文章以poi-bin-4.1.1-20191023.zip为例&#xff0c;进入官网下载链接后&…

VLMs开发——基于Qwen2.5-VL 实现视觉语言模型在目标检测中的层级结构与实现方法

概述 目标检测作为计算机视觉领域的核心任务&#xff0c;传统方法依赖于 YOLO 等视觉模型对预定义类别进行位置预测。然而&#xff0c;此类方法受限于预训练类别体系&#xff0c;难以实现灵活的视觉交互。视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;的…

Spring Boot + Redis + 布隆过滤器防止缓存穿透

✅ 项目概述 在高并发系统中&#xff0c;缓存穿透 是一个经典问题&#xff1a;当恶意请求或业务逻辑查询一个数据库中不存在的 Key&#xff0c;由于缓存中也没有&#xff0c;请求会直接打到数据库&#xff0c;导致数据库压力激增&#xff0c;甚至宕机。 本项目使用 Spring Bo…

电子电路学习日记

这里的 K 表示 千欧&#xff08;kilo-ohm&#xff09;&#xff0c;而 F 在很多国产 EDA 软件&#xff08;比如立创EDA、Altium 的一些中文封装库&#xff09;里用来标注精度&#xff08;公差&#xff09;&#xff0c; F 代表 1% 精度&#xff08;英文 Fine tolerance&#xff0…