esp32-idf框架學習筆記/教程

esp32型號:

環境搭建

安裝:就按這個來,別的試了好多次都不行,這個一次成功!!!!

vscode下ESP32開發環境配置(100%成功)_嗶哩嗶哩_bilibili

esp芯片的兩種模式:

ESP32 固件燒錄教程_嗶哩嗶哩_bilibili

1.運行模式

2.下載模式

esp32s3程序下載

1.數據線插在TTL的那個口,下載過程中不用按什么按鍵

2.

3.點擊小火花一鍵編譯下載

ESP32的啟動流程

ESP32_freeRTOS教程三:系統啟動流程_嗶哩嗶哩_bilibili

注意:app_main()是在一個任務中被調用的,它是任務的一部分,與所以里面沒有死循環,在執行app_main()之前就開啟了任務調度器了

任務的創建與刪除

實驗現象:首先創建my_task任務,系統會輸出十次my_task1這個任務的最小剩余堆棧大小,之后調用vTaskDelete()刪除m_task1這個任務

#include <stdio.h>
#include <inttypes.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_chip_info.h"
#include "esp_flash.h"
#include "esp_system.h"
void my_task1(void *param)
{while (1){UBaseType_t stack_remain = uxTaskGetStackHighWaterMark(NULL);//顯示及最小棧大小printf("Stack remaining: %d\n", stack_remain);//fflush(stdout);  // 手動刷新緩沖區vTaskDelay(50);}
}
void app_main(void)
{TaskHandle_t my_task1_handle=NULL;xTaskCreate(my_task1, "my_task1", 3000, NULL, 3, &my_task1_handle);vTaskDelay(500);if(my_task1_handle!=NULL){vTaskDelete(my_task1_handle);}}

注意:gcc的printf默認需要換行符\n才會輸出,或者等緩沖區滿了才輸出,keil沒有這個問題

任務創建時的輸入參數

傳給任務的參數類型時void *類型,void *類型它可以接收任何類型,

傳遞整數型

#include <stdio.h>
#include <inttypes.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_chip_info.h"
#include "esp_flash.h"
#include "esp_system.h"int num=9;
void my_task1(void *param)
{int *tem=(int *)param;while (1){printf("get num: %d\n", *tem);vTaskDelay(100);}
}
void app_main(void)
{TaskHandle_t my_task1_handle=NULL;xTaskCreate(my_task1, "my_task1", 3000, (void *)&num, 3, &my_task1_handle);
}

傳遞數組:

傳遞結構體

傳遞字符串:?

vTaskList()的使用

static char pcWriteBuffer[512]={0};vTaskList(pcWriteBuffer);printf("%s",pcWriteBuffer);

輸出格式:

State表示:

?Stack表示:最小剩余的堆棧大小

#include <stdio.h>
#include <inttypes.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_chip_info.h"
#include "esp_flash.h"
#include "esp_system.h"void my_task1(void *param)
{while (1){UBaseType_t stack_remain = uxTaskGetStackHighWaterMark(NULL);//顯示及最小棧大小printf("my_task1 Stack: %d\n", stack_remain);//fflush(stdout);  // 手動刷新緩沖區vTaskDelay(500/portTICK_PERIOD_MS);}
}
void my_task2(void *param)
{while (1){UBaseType_t stack_remain = uxTaskGetStackHighWaterMark(NULL);//顯示及最小棧大小printf("my_task2 Stack: %d\n", stack_remain);//fflush(stdout);  // 手動刷新緩沖區vTaskDelay(500/portTICK_PERIOD_MS);}
}
void app_main(void)
{TaskHandle_t my_task1_handle=NULL;TaskHandle_t my_task2_handle=NULL;xTaskCreate(my_task1, "my_task1", 3000, NULL, 10, &my_task1_handle);xTaskCreate(my_task2, "my_task2", 3000, NULL, 10, &my_task2_handle);static char pcWriteBuffer[512]={0};vTaskList(pcWriteBuffer);printf("%s",pcWriteBuffer);vTaskDelay(2000/portTICK_PERIOD_MS);}

看門狗

中斷看門狗:

? ? ? ? 當中斷程序執行過長時間時可能會觸發中斷看門狗

任務看門狗:

? ? ? ? 任務看被狗是今天重點;

使用任務看門狗需要包含頭文件: #include "esp_task_wdt.h"

#include "esp_task_wdt.h"
void my_task1(void *param)
{//將任務添加到任務看門狗所監控的列表esp_task_wdt(NULL);while (1){//喂狗esp_task_wdt_reset();vTaskDelay(500 / portTICK_PERIOD_MS);}
}void app_main(void)
{TaskHandle_t my_task1_handle = NULL;xTaskCreate(my_task1, "my_task1", 3000, NULL, 1, &my_task1_handle);
}

點亮一顆LED?

led的引腳連接在了G19引腳?

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"#define LED_GPIO GPIO_NUM_19void task_led(void *param)
{int gpio_level = 0;while(1){gpio_level=gpio_level?0:1;gpio_set_level(GPIO_NUM_19,gpio_level);vTaskDelay(pdMS_TO_TICKS(500));}}
void app_main(void)
{gpio_config_t led_cfg;led_cfg.pin_bit_mask=(1<<GPIO_NUM_19);led_cfg.mode=GPIO_MODE_OUTPUT;led_cfg.intr_type=GPIO_INTR_DISABLE;led_cfg.pull_down_en=GPIO_PULLDOWN_DISABLE;led_cfg.pull_up_en=GPIO_PULLUP_DISABLE;gpio_config(&led_cfg);xTaskCreatePinnedToCore(task_led,"task_led",3000,NULL,2,NULL,1);}

LEDC-(PWM)?

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/event_groups.h"
#include "driver/gpio.h"
#include "driver/ledc.h"#define LED_GPIO GPIO_NUM_19#define FULL_EV_BIT BIT0        //
#define EMPTY_EV_BIT BIT1static EventGroupHandle_t ledc_event_handle; // 修正變量名bool IRAM_ATTR ledc_flish_cb(const ledc_cb_param_t *param, void *user_arg) {BaseType_t xHigherPriorityTaskWoken = pdFALSE;if (param->event == LEDC_FADE_END_EVT) {if (param->duty == 0) {xEventGroupSetBitsFromISR(ledc_event_handle, EMPTY_EV_BIT, &xHigherPriorityTaskWoken);} else {xEventGroupSetBitsFromISR(ledc_event_handle, FULL_EV_BIT, &xHigherPriorityTaskWoken);}}portYIELD_FROM_ISR(xHigherPriorityTaskWoken);return (xHigherPriorityTaskWoken == pdTRUE);
}void task_led(void *param) {EventBits_t ev;while (1) {ev = xEventGroupWaitBits(ledc_event_handle, FULL_EV_BIT | EMPTY_EV_BIT, pdTRUE, pdFALSE, pdMS_TO_TICKS(5000));if (ev & FULL_EV_BIT) {ledc_set_fade_with_time(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, 0, 2000);ledc_fade_start(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, LEDC_FADE_NO_WAIT);}if (ev & EMPTY_EV_BIT) {ledc_set_fade_with_time(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, 8191, 2000);ledc_fade_start(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, LEDC_FADE_NO_WAIT);}}
}void app_main(void) {// 1. 初始化事件組ledc_event_handle = xEventGroupCreate();// 2. 配置LEDC定時器和通道ledc_timer_config_t timer_cfg = {.speed_mode = LEDC_LOW_SPEED_MODE,.timer_num = LEDC_TIMER_0,.duty_resolution = LEDC_TIMER_13_BIT,.freq_hz = 5000,.clk_cfg = LEDC_AUTO_CLK};ESP_ERROR_CHECK(ledc_timer_config(&timer_cfg));ledc_channel_config_t channel_cfg = {.speed_mode = LEDC_LOW_SPEED_MODE,.channel = LEDC_CHANNEL_0,.timer_sel = LEDC_TIMER_0,.intr_type = LEDC_INTR_DISABLE,.gpio_num = LED_GPIO,.duty = 0,.hpoint = 0};ESP_ERROR_CHECK(ledc_channel_config(&channel_cfg));// 3. 安裝漸變功能并注冊回調ledc_fade_func_install(0);ledc_cbs_t cbs = { .fade_cb = ledc_flish_cb };ledc_cb_register(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, &cbs, NULL);// 4. 啟動初始漸變ledc_set_fade_with_time(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, 8191, 2000);ledc_fade_start(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, LEDC_FADE_NO_WAIT);// 5. 創建任務xTaskCreatePinnedToCore(task_led, "task_led", 3000, NULL, 2, NULL, 1);
}

WS2812?

單個WS2812?

ws2812的0碼和1碼都是由高低電平組成的????????

RES為復位電平:表示一幀數據傳輸結束

數據幀,RGB格式

?多個WS2812

通常情況下,電路中會有不止一個WS2812串聯起來,串聯方式如下

?

第一個燈的輸出連接到第二個燈的輸入引腳上,第二個燈的輸出連接到第三個燈的輸入引腳上,以此類推

那么任何才能控制每一個燈珠的顏色呢?

這就得益于ws2812的獨特控制方式:當我們發生一個24位數據幀后,第一個ws2812會記錄并且鎖存起來,當我們發生第二個24位數據幀時,第一個ws2812內部以及鎖存了數據,此時會將數據通過out引腳輸出給第二個ws2812燈,第二個ws2812燈會錄并且鎖存起來,當我們發生第三個24位數據幀時繼續向下遞交數據,直到我們發生了一個rest信號,本次傳輸才會結束,后續發送的數據又會從第一個ws2812開始記錄

WIFI?

WIFI模型:

AP:路由器,所有的設備和電腦通過ap熱點進行數據交換

WIFI熱點的啟動流程

? ? wifi driver被啟動之后, 會發送WIFI_EVENT_AP_START這個事件到event Task中,如果有處理這個事件的回調函數,就會再這個回調函數中進行處理;?如果有設備進行連接,就會發送WIFI_EVENT_AP_STACONNECTED這個事件到event Task,?之后再wifi_event_handler中進行處理(實例代碼中只是打印了相應的信息)如果有斷開連接的事件WIFI_EVENT_AP_STADISCONNECTED,也會發送到event Task,event Task調用wifi_event_handler進行處理

#include <string.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_mac.h"
#include "esp_wifi.h"
#include "esp_event.h"
#include "esp_log.h"
#include "nvs_flash.h"#include "lwip/err.h"
#include "lwip/sys.h"/* The examples use WiFi configuration that you can set via project configuration menu.If you'd rather not, just change the below entries to strings withthe config you want - ie #define EXAMPLE_WIFI_SSID "mywifissid"
*/
#define EXAMPLE_ESP_WIFI_SSID      CONFIG_ESP_WIFI_SSID
#define EXAMPLE_ESP_WIFI_PASS      CONFIG_ESP_WIFI_PASSWORD
#define EXAMPLE_ESP_WIFI_CHANNEL   CONFIG_ESP_WIFI_CHANNEL
#define EXAMPLE_MAX_STA_CONN       CONFIG_ESP_MAX_STA_CONNstatic const char *TAG = "wifi softAP";static void wifi_event_handler(void* arg, esp_event_base_t event_base,int32_t event_id, void* event_data)
{if (event_id == WIFI_EVENT_AP_STACONNECTED) {//有設備連接到我們的軟件熱點時會觸發這個事件  wifi_event_ap_staconnected_t* event = (wifi_event_ap_staconnected_t*) event_data;ESP_LOGI(TAG, "station "MACSTR" join, AID=%d",MAC2STR(event->mac), event->aid);} else if (event_id == WIFI_EVENT_AP_STADISCONNECTED) {//斷開連接時wifi_event_ap_stadisconnected_t* event = (wifi_event_ap_stadisconnected_t*) event_data;//打印斷開設備的信息,如ipESP_LOGI(TAG, "station "MACSTR" leave, AID=%d, reason=%d",MAC2STR(event->mac), event->aid, event->reason);}
}void wifi_init_softap(void)
{//通過調用esp_netif_init()來啟動LWIPtaskESP_ERROR_CHECK(esp_netif_init());//通過esp_event_loop_create_default()來啟動時間task--eventtask ESP_ERROR_CHECK(esp_event_loop_create_default());esp_netif_create_default_wifi_ap();wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();//esp_wifi_init() 初始化WIFI driverESP_ERROR_CHECK(esp_wifi_init(&cfg));//4.對我們所需處理的一些事件注冊了一個回調函數wifi_event_handlerESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT,ESP_EVENT_ANY_ID,&wifi_event_handler,NULL,NULL));//配置driverwifi_config_t wifi_config = {.ap = {.ssid = EXAMPLE_ESP_WIFI_SSID,//熱點的名字.ssid_len = strlen(EXAMPLE_ESP_WIFI_SSID),.channel = EXAMPLE_ESP_WIFI_CHANNEL,.password = EXAMPLE_ESP_WIFI_PASS,//熱點的密碼.max_connection = EXAMPLE_MAX_STA_CONN,//熱點的最大連接數目
#ifdef CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT.authmode = WIFI_AUTH_WPA3_PSK,//授權的模式,登錄的加密模式 .sae_pwe_h2e = WPA3_SAE_PWE_BOTH,
#else /* CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT */.authmode = WIFI_AUTH_WPA2_PSK,
#endif.pmf_cfg = {.required = true,},},};if (strlen(EXAMPLE_ESP_WIFI_PASS) == 0) {wifi_config.ap.authmode = WIFI_AUTH_OPEN;}//使用esp_wifi_set_mode()對driver進行配置ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP));ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_AP, &wifi_config));//啟動driverESP_ERROR_CHECK(esp_wifi_start());ESP_LOGI(TAG, "wifi_init_softap finished. SSID:%s password:%s channel:%d",EXAMPLE_ESP_WIFI_SSID, EXAMPLE_ESP_WIFI_PASS, EXAMPLE_ESP_WIFI_CHANNEL);
}
/*wifi driver被啟動之后, 會發送WIFI_EVENT_AP_START這個事件到event Task中,如果有處理這個事件的回調函數,就會再這個回調函數中進行處理;如果有設備進行連接,就會發送WIFI_EVENT_AP_STACONNECTED這個事件到event Task,之后再wifi_event_handler中進行處理(實例代碼中只是打印了相應的信息)如果有斷開連接的事件WIFI_EVENT_AP_STADISCONNECTED,也會發送到event Task,event Task調用wifi_event_handler進行處理
*/
void app_main(void)
{//初始化存儲空間esp_err_t ret = nvs_flash_init();if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {ESP_ERROR_CHECK(nvs_flash_erase());ret = nvs_flash_init();}ESP_ERROR_CHECK(ret);ESP_LOGI(TAG, "ESP_WIFI_MODE_AP");wifi_init_softap();
}

NVS分區:主要是保存一些配置參數,即使設備重啟之后,NVS中的數據仍然可以保存,比如說wifi的ssid和密碼?

socket編程流程?

TCP與UDP對比

TCP是基于連接的,是可靠的,但傳輸速度慢,UDP是不基于連接的,?不可靠,傳輸速度快

UDP可以進行廣播和組播

UDP沒有建立連接的過程,所有recvfrom()與sendto()這兩個函數在發生數據的時候會包含IP地址等信息,而TCP的recv()與send()不包含IP地址等信息?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/906681.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/906681.shtml
英文地址,請注明出處:http://en.pswp.cn/news/906681.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

VKontakte(VK)注冊教程

VKontakte&#xff08;簡稱VK&#xff09;是俄羅斯最大的社交網絡平臺&#xff0c;類似于Facebook&#xff0c;用戶可以通過它進行社交、分享圖片、視頻、音樂等內容&#xff0c;并參與各類社群討論&#xff0c;是與俄羅斯及其他東歐地區的朋友建立聯系的便捷平臺。對于做俄羅斯…

STM32+ESP8266+ONENET+微信小程序上傳數據下發指令避坑指南

之前只做過類似的但是以為這種爛大街的功能應該不難結果還是踩了不少坑&#xff0c;記錄幾個需要注意的點 首先貼一個非常有用的視頻&#xff0c;里面講的很詳細&#xff0c;給的資料也很全【【新版OneNet云平臺】STM32ESP8266上傳數據&#xff0c;簡單易上手&#xff01;】 h…

【知識點】關于vue3中markRow、shallowRef、shallowReactive的了解

首先我們先了解一下這三個函數的定義以及區別 markRow 定義&#xff1a; 一個用于標記對象為非響應式的工具函數 shallowRef 定義&#xff1a; 一個用于創建淺層響應式引用的函數&#xff0c;只對 .value 本身進行響應式處理&#xff0c;不會遞歸地將 .value 指向的對象或…

后端開發實習生-抖音生活服務

職位描述 ByteIntern&#xff1a;面向2026屆畢業生&#xff08;2025年9月-2026年8月期間畢業&#xff09;&#xff0c;為符合崗位要求的同學提供轉正機會。 團隊介紹&#xff1a;生活服務業務依托于抖音、抖音極速版等平臺&#xff0c;致力于促進用戶與本地服務的連接。過去一…

OceanBase 共享存儲:云原生數據庫的存儲

目錄 探會——第三屆 OceanBase 開發者大會 重磅發布&#xff1a;OceanBase 4.3 開發者生態全面升級 實戰演講&#xff1a;用戶案例與行業落地 OceanBase 共享存儲架構解析 什么是共享存儲架構&#xff1f; 云原生數據庫的架構 性能、彈性與多云的統一 為何OceanBase能…

C++ 結構體封裝模式與 Promise 鏈式調用:設計思想的異曲同工

C 結構體封裝模式與 Promise 鏈式調用&#xff1a;設計思想的異曲同工 在軟件開發中&#xff0c;我們常常追求代碼的可維護性、可擴展性和可讀性。不同的編程語言和場景下&#xff0c;雖然實現方式各異&#xff0c;但背后的設計思想往往存在著奇妙的相似性。本文將探討 C 中結…

【Go】1、Go語言基礎

前言 本系列文章參考自稀土掘金上的 【字節內部課】公開課&#xff0c;做自我學習總結整理。 Go語言的特點 Go語言由Google團隊設計&#xff0c;以簡潔、高效、并發友好為核心目標。 具有以下優點&#xff1a; 語法簡單、學習曲線平緩&#xff1a;語法關鍵字很少&#xff0c;且…

AI時代的新營銷范式:生成式引擎優化(GEO)的崛起——品牌如何被大模型收錄

在數字化浪潮席卷全球的今天&#xff0c;我們正站在一個前所未有的歷史拐點。如果說過去二十年&#xff0c;搜索引擎優化&#xff08;SEO&#xff09;重塑了企業與消費者的連接方式&#xff0c;那么未來二十年&#xff0c;生成式引擎優化&#xff08;GEO&#xff09;將徹底顛覆…

實用藍牙耳機哪款好?先做好使用場景分析!

市面上的藍牙耳機款式繁多&#xff0c;618到來之際&#xff0c;消費者如何選擇適合自己的藍牙耳機&#xff1f;實用藍牙耳機哪款好&#xff1f;關鍵在于做好使用場景分析&#xff01;今天&#xff0c;就帶大家結合不同的使用場景&#xff0c;分享三款倍思音頻的精品藍牙耳機。 …

PTA刷題筆記3(微難,有詳解)

7-15 計算圓周率 代碼如下&#xff1a; #include <stdio.h>int main() {double threshold;scanf("%lf", &threshold);double pi_over_2 1.0; // π/2的初始值&#xff08;第一項1&#xff09;double term 1.0; // 當前項的值int n 1; …

基于SpringBoot+Vue的社區醫院信息平臺設計與實現

項目背景與概述 隨著醫療健康信息化的發展&#xff0c;社區醫院的管理逐漸由傳統的手工模式轉向信息化管理。為了提高醫院的管理效率、減少人工操作、提升服務質量&#xff0c;開發一個高效且實用的社區醫院信息平臺顯得尤為重要。本系統基于Spring Boot框架與MySQL數據庫設計…

舊物回收小程序:讓閑置煥發光彩,為生活增添價值

你是否常常為家中堆積如山的閑置物品而煩惱&#xff1f;那些曾經心愛的物品&#xff0c;如今卻成了占據空間的“雞肋”&#xff0c;丟棄可惜&#xff0c;留著又無處安放。別擔心&#xff0c;一款舊物二手回收小程序將為你解決這一難題&#xff0c;讓閑置物品重新煥發光彩&#…

掩碼與網關是什么?

1. 子網掩碼&#xff08;Subnet Mask&#xff09; 作用&#xff1a;劃分“小區”范圍 想象你住在一個小區&#xff08;子網&#xff09;里&#xff1a; 小區門牌號 IP地址&#xff08;如 192.168.1.10&#xff09; 小區邊界 子網掩碼&#xff08;如 255.255.255.0&#xf…

【Bluedroid】藍牙HID Host disconnect流程源碼解析

本文基于 Android 藍牙 HID&#xff08;Human Interface Device&#xff09;Host 模塊的源碼&#xff0c;深入解析 HID 設備斷開連接的完整流程。重點覆蓋從應用層觸發斷開請求&#xff0c;到 BTIF 層&#xff08;接口適配層&#xff09;狀態校驗與異步傳遞、BTA 層&#xff08…

python定時刪除指定索引

腳本 import logging from datetime import datetime, timedelta from elasticsearch import Elasticsearch# 配置日志記錄 logging.basicConfig(filenamedelete_uat_indices.log,levellogging.INFO,format%(asctime)s - %(levelname)s - %(message)s )# Elasticsearch 集群的…

GESP編程等級認證C++三級7-字符、字符數組與字符串2

2.3 用字符串定義字符數組的好處 使用字符串定義字符數組需要額外考慮其末尾的“\0”&#xff0c;為什么還要使用這種看上去“麻煩”的方法呢&#xff1f;從圖5所示的代碼就能看出原因。 圖5 用字符串定義字符數組好處的代碼 從圖5中可以看出&#xff0c;a4是用字符串進行初始…

EasyRTC音視頻實時通話WebP2P技術賦能的全場景實時通信解決方案

一、技術背景 在數字化浪潮席卷全球的當下&#xff0c;實時通信技術憑借其即時性、高效性的優勢&#xff0c;已然成為推動各行業創新發展的核心動能。EasyRTC深度融合WebP2P技術&#xff0c;構建起去中心化的通信架構&#xff0c;實現了低延遲、高可靠的數據傳輸&#xff0c;為…

Claude MCP協議從入門到精通

目錄 一、什么是MCP協議? 二、Function Calling 和 MCP 協議的區別? 三、MCP相關網站 3.1 官方文檔 3.2 綜合型 MCP 資源聚合平臺 3.3 垂直領域 MCP Server 工具 3.4 開發者工具與社區 3.5 企業級服務與數據庫集成 3.6 新手友好型平臺 四、MCP 架構 4.1. MCP Hosts…

YOLOv11改進 | Conv/卷積篇 | 2024 ECCV最新大感受野的小波卷積WTConv助力YOLOv11有效漲點

YOLOv11改進 | Conv/卷積篇 | 2024 ECCV最新大感受野的小波卷積WTConv助力YOLOv11有效漲點 引言 在計算機視覺領域&#xff0c;卷積神經網絡&#xff08;CNN&#xff09;的核心操作——卷積運算正經歷著革命性的變革。2024年ECCV會議提出的**小波卷積&#xff08;WTConv, Wav…

英偉達CEO黃仁勛COMPUTEX 2025演講實錄:AI工廠時代已來,Blackwell架構全面投產

5月19日&#xff0c;英偉達創始人兼首席執行官黃仁勛在臺北國際電腦展&#xff08;COMPUTEX 2025&#xff09;發表主題演講&#xff0c;系統闡述了英偉達從芯片設計向AI基礎設施服務商的戰略轉型&#xff0c;并披露了包括Blackwell架構升級、新一代AI計算平臺及機器人技術在內的…