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
英文地址,請注明出處:http://en.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…