STM32外設AD/DA-基礎及CubeMX配置

STM32外設AD/DA-基礎及CubeMX配置

  • 一,什么是AD/DA
  • 二,基礎概念
    • 1,模擬 vs 數字
    • 2,AD轉換
        • 1,分辨率 (Resolution)
        • 2,參考電壓 (Reference Voltage, Vref)
        • 3,采樣率 (Sampling Rate)
    • 3,DA轉換
        • 1,分辨率 (Resolution)
        • 2,參考電壓 (Reference Voltage, Vref)
        • 3,轉換速率與建立時間 (Settling Time)
        • 4,輸出緩沖 (Output Buffer)
  • 三,硬件連接:捕捉模擬信號
    • 1,找到 ADC 輸入引腳:
    • 2,連接模擬信號源:
    • 3,連接地線 (GND):
    • 4,(可選)連接 Vref:
  • 四,CobeMX配置
    • 1,模式和分辨率相關
        • 1,分辨率 (Resolution)
        • 2,數據對齊 (Data Alignment)
        • 3,轉換模式 (Conversion Mode)
    • 2,時鐘配置相關
        • 1,時鐘來源與分頻 (Clock Source & Prescaler)
        • 2,ADCCLK 與轉換時間
    • 3,采樣時間 (Sampling Time)
    • 4,掃描模式相關
        • 1,掃描轉換模式 (Scan Conversion Mode)
        • 2,規則通道配置 (Regular Conversion Launch)
        • 3,掃描結束選擇 (End of Conversion Selection - EOC)
        • 4,不連續轉換模式 (Discontinuous Conversion Mode)
    • 5,外部觸發配置
        • 1,定時器觸發 (Timer Trigger):
        • 2,軟件觸發 (Software Trigger):
        • 3,外部引腳觸發 (EXTI line x event):
    • 6,DMA 配置
        • 1,添加 DMA 請求 (Add DMA Request)
        • 2,DMA 通道配置 (DMA Request Settings)

一,什么是AD/DA

我們已經掌握了如何讓單片機通過 UART 與外界"交流"。但是,現實世界充滿了連續變化的模擬信號,比如溫度、光線強度、聲音大小等等。單片機內部處理的是離散的數字信號,如何讓它們互相理解呢?
這時,ADC (Analog-to-Digital Converter, 模數轉換器) 和 DAC (Digital-to-Analog Converter, 數模轉換器) 就派上用場了!
ADC: 就像一位"翻譯官",把現實世界的模擬語言(連續變化的電壓)翻譯成單片機能懂的數字語言(離散的數值)。

現實世界的模擬信號比如溫度、光線強度、聲音大小,其實都可以轉化為連續的電壓信號

DAC: 則反過來,把單片機的數字指令翻譯成模擬世界的電壓信號,用來控制模擬器件(比如驅動揚聲器發出聲音、控制電機速度等)。

這里A代表模擬,D代表數字,怎么記憶?
記住模擬和A的筆畫相對數字和D多,就可以將二者關聯起來,再記住AD就是A到D,DA就是D到A就行了

二,基礎概念

1,模擬 vs 數字

想象一下調節收音機的音量旋鈕和按計算器的數字鍵:

模擬 (Analog): 像音量旋鈕,可以在一個范圍內連續變化,有無限多個可能的音量值。現實世界的物理量大多是模擬的。
數字 (Digital): 像計算器的按鍵,只有有限的、離散的狀態(0, 1, 2…)。計算機和單片機處理的是數字信號。
ADC 的任務就是把模擬信號"采樣"并"量化"成數字值。

2,AD轉換

1,分辨率 (Resolution)

分辨率決定了 ADC 能將模擬電壓"切"成多少份,也就是它能區分多么細微的電壓變化。通常用"位" (bits) 來表示。

例如,一個 12 位的 ADC,能表示 212=4096 個不同的數字級別。如果參考電壓是 3.3V,那么它能分辨的最小電壓變化大約是 3.3V/4096~~0.0008V或 0.8mV。

分辨率越高,測量越精確,但轉換速度可能越慢,成本也越高。

2,參考電壓 (Reference Voltage, Vref)

參考電壓是 ADC 進行測量的"標尺"。它定義了 ADC 能夠轉換的模擬電壓的最大值。輸入的模擬電壓不能超過參考電壓。

ADC 輸出的數字值通常與輸入電壓的關系是:
在這里插入圖片描述
在很多 STM32 單片機中,Vref 通常連接到 Vdda (模擬電源電壓),比如 3.3V。精確的 Vref 對于準確的 ADC 轉換至關重要。
在這里插入圖片描述
在這里插入圖片描述

3,采樣率 (Sampling Rate)

采樣率表示 ADC 每秒鐘進行多少次模數轉換。單位通常是 SPS (Samples Per Second) 或 Hz。

根據奈奎斯特采樣定理,采樣率必須至少是被測模擬信號最高頻率的兩倍,才能無失真地還原原始信號。采樣率越高,越能捕捉到快速變化的模擬信號。

3,DA轉換

1,分辨率 (Resolution)

與 ADC 類似,DAC 的分辨率也決定了其輸出精度的細膩程度,同樣用"位" (bits) 表示。

一個 12 位的 DAC,可以將輸入的數字值 (0 到
) 映射到輸出電壓范圍內的 4096 個不同的模擬電壓等級。分辨率越高,輸出的模擬信號越平滑,越接近理想的模擬波形。

2,參考電壓 (Reference Voltage, Vref)

DAC 的參考電壓定義了其輸出模擬電壓的最大值。輸出電壓通常與輸入的數字值成正比:

例如,對于 12 位 DAC,Vref = 3.3V:

輸入數字值為 0 時,輸出電壓 ≈ 0V。
輸入數字值為 4095 時,輸出電壓 ≈ 3.3V。
輸入數字值為 2048 時,輸出電壓 ≈ 3.3V * (2048 / 4096) = 1.65V。
同樣,穩定精確的 Vref 對 DAC 的輸出精度至關重要。

3,轉換速率與建立時間 (Settling Time)

DAC 將數字值轉換為模擬電壓需要一定的時間。建立時間是指從數字輸入改變到模擬輸出穩定在目標電壓的一小段誤差范圍內所需的時間。這限制了 DAC 能夠產生的模擬信號的最大頻率。

4,輸出緩沖 (Output Buffer)

許多 DAC 內部集成了一個輸出緩沖器(運算放大器)。啟用輸出緩沖可以:

提高驅動能力: 使 DAC 能夠驅動一定的負載(比如直接驅動小阻抗的負載或后續電路),而不會導致電壓下降。
降低輸出阻抗: 提供更穩定的輸出電壓。
在 CubeMX 中通常可以選擇是否啟用 DAC 通道的輸出緩沖。

三,硬件連接:捕捉模擬信號

將模擬信號連接到 ADC 非常簡單:

1,找到 ADC 輸入引腳:

在你的 STM32 開發板上,通常會有標明如 PA0, PC1 等,并且這些引腳在 CubeMX 中可以配置為 ADC 的輸入通道 (如 ADC1_IN0, ADC1_IN11)。查閱開發板原理圖或引腳定義是最好的方法。
在這里插入圖片描述

2,連接模擬信號源:

將你的模擬信號源(比如電位器、溫度傳感器、光敏電阻分壓電路的輸出端)連接到選定的 ADC 輸入引腳。
在這里插入圖片描述

3,連接地線 (GND):

確保模擬信號源的地線 (GND) 與 STM32 開發板的地線 (GND) 共地連接。這是保證測量準確的基礎。

4,(可選)連接 Vref:

確保 ADC 的參考電壓引腳 (Vref+ 或 Vdda) 連接到穩定、精確的參考電壓源(通常是開發板上的 3.3V)。

注意: 輸入到 ADC 引腳的電壓絕對不能超過其允許的最大范圍(通常是 0V 到 Vdda/Vref+)。GND 必須連接!

四,CobeMX配置

我的主控芯片ADC輸入引腳是PC0,所以CubeMX將PC0引腳配置為ADC-IN引腳
在這里插入圖片描述

1,模式和分辨率相關

1,分辨率 (Resolution)

決定 ADC 能分辨的最小電壓變化,通常以位 (bits) 表示。STM32 的 ADC 通常支持 12 位、10 位、8 位或 6 位分辨率。
12 bits (常用, 0-4095)
10 bits (0-1023)
8 bits (0-255)
6 bits (0-63)

說明: 分辨率越高,精度越高,但轉換時間可能越長。通常選擇 12 bits 以獲得最佳精度

2,數據對齊 (Data Alignment)

ADC 轉換結果是一個數字值(如 12 位),但它存儲在 16 位或 32 位的數據寄存器 (ADC_DR) 中。數據對齊方式決定了有效數據位在寄存器中的位置。
Right alignment (右對齊)
Left alignment (左對齊)
Right Alignment: 推薦 有效數據位位于寄存器的低位 (LSB)。例如,12 位結果存儲在 bit 11 到 bit 0。讀取值即為 0-4095。
Left Alignment: 有效數據位位于寄存器的高位 (MSB)。例如,12 位結果存儲在 bit 15 到 bit 4。這種方式在某些需要更高精度比例計算或與 8 位系統兼容時可能有用,但讀取后通常需要右移 4 位。

3,轉換模式 (Conversion Mode)

定義 ADC 如何進行轉換。
Single Conversion Mode (單次轉換): 輪詢/中斷基礎 每次觸發(軟件或硬件)只進行一次轉換,然后停止。需要再次觸發才能進行下一次轉換。常用于輪詢法或簡單的中斷法。
Continuous Conversion Mode (連續轉換): DMA常用 首次觸發后,ADC 會自動連續不斷地進行轉換,每次轉換完成后立即開始下一次轉換,直到手動停止。常用于配合 DMA 進行高速連續采樣。

注意: Scan Mode (掃描模式) 和 Discontinuous Mode (不連續模式) 的配置在 “掃描模式設置” 中詳述。

配置建議:
分辨率通常選 12 bits。
數據對齊選 Right alignment。
轉換模式根據應用選擇:需要單次讀取用 Single;需要連續采樣(尤其配合DMA)用 Continuous。

2,時鐘配置相關

1,時鐘來源與分頻 (Clock Source & Prescaler)

ADC 模塊通常有一個獨立的可配置時鐘源。這個時鐘源通常來自 APB2 總線時鐘 (PCLK2) 或其他專用時鐘 (如 HSI, PLL 輸出等),然后經過一個預分頻器 (Prescaler) 進一步分頻后,才作為 ADC 的工作時鐘 (ADCCLK)。

ADCCLK = ADC Clock Source / Prescaler

在 CubeMX 中,通常在 “Clock Configuration” 標簽頁可以查看和配置 ADC 的時鐘來源和頻率,而在 ADC 的 “Parameter Settings” 中選擇預分頻系數。
PCLK2 divided by 2
PCLK2 divided by 4
PCLK2 divided by 6
PCLK2 divided by 8
… (其他可能的時鐘源和分頻)

2,ADCCLK 與轉換時間

ADC 的總轉換時間由兩部分組成:采樣時間 (Sampling Time) 和 固定的轉換位數時間。

Total Conversion Time = Sampling Time + N * (1 / ADCCLK)

其中 N 是 ADC 的分辨率 (例如 12 位時 N=12.5 或類似值,具體查閱芯片手冊)。

因此,ADCCLK 頻率越高,總轉換時間越短,允許的最大采樣率越高。但是,ADCCLK 不能超過芯片手冊規定的最大值 (通常在幾十 MHz 范圍)。

重要限制: 必須確保配置后的 ADCCLK 頻率不超過芯片數據手冊 (Datasheet) 中規定的 ADC 最大工作頻率 (fADC_max)。例如,對于很多 F1 系列是 14MHz,F4 系列可能高達 36MHz。超過此限制可能導致轉換結果不準確或 ADC 工作異常。
配置建議: 在滿足最大頻率限制的前提下,選擇一個能提供所需采樣率的盡可能高的 ADCCLK 頻率。通常選擇中間的分頻值 (如 /4, /6) 是比較穩妥的選擇。

3,采樣時間 (Sampling Time)

在這里插入圖片描述

采樣時間 (Sampling Time) 指 ADC 在轉換前對輸入信號進行采樣保持的時間長度。這個時間需要足夠長,以確保 ADC 內部的采樣保持電容 (Csh) 完全充電到輸入引腳的電壓。

配置選項:
采樣時間以 ADCCLK 周期數表示。CubeMX 為每個 ADC 通道提供了多個可選的采樣時間值。
1.5 Cycles
7.5 Cycles
13.5 Cycles
28.5 Cycles
55.5 Cycles
71.5 Cycles
239.5 Cycles
… (其他可能值)

選擇依據:
選擇合適的采樣時間主要取決于模擬信號源的輸出阻抗 (Rsource) 和 ADC 輸入引腳的特性(內部采樣電容 Csh 和輸入電阻 RADC)。
為了讓采樣電容 Csh 充電到足夠接近輸入電壓(例如誤差小于 1/2 LSB),需要的充電時間 Tcharge 與 RC 時間常數有關。粗略地說:

Tcharge ≈ k * (Rsource + RADC) * Csh

其中 k 是一個系數(通常取 7 到 10 左右以達到足夠精度)。
我們選擇的采樣時間 (Sampling Time Cycles / ADCCLK) 必須大于 Tcharge。

簡化規則:
低阻抗信號源 (如運放輸出,< 1kΩ): 可以選擇較短的采樣時間 (如 1.5, 7.5, 13.5 Cycles)。
中阻抗信號源 (如電位器分壓,1kΩ ~ 50kΩ): 需要選擇中等的采樣時間 (如 28.5, 55.5 Cycles)。
高阻抗信號源 (> 50kΩ): 需要選擇較長的采樣時間 (如 71.5, 239.5 Cycles),或者在 ADC 輸入前添加一個電壓跟隨器(運放)來降低信號源阻抗。

配置建議:
對于不確定的信號源,或者為了保證兼容性,選擇一個稍長的采樣時間通常是安全的 (例如 28.5 Cycles 或 55.5 Cycles)。
選擇過短的采樣時間會導致轉換結果偏低或不準確。
選擇過長的采樣時間會增加總轉換時間,降低最大采樣率。
在多通道掃描模式下,可以為每個通道配置不同的采樣時間。

注意: 如果信號源阻抗非常高,即使選擇最長采樣時間也可能不夠。此時必須考慮使用外部緩沖電路。

4,掃描模式相關

當需要測量多個模擬輸入通道時,需要配置 ADC 的掃描模式。這些設置決定了 ADC 如何依次轉換多個通道。

1,掃描轉換模式 (Scan Conversion Mode)

在這里插入圖片描述

Disabled: 單通道 ADC 只轉換配置的第一個通道 (Rank 1)。
Enabled: 多通道 ADC 會按照配置的 Rank 順序,依次轉換多個通道。

2,規則通道配置 (Regular Conversion Launch)

在這里插入圖片描述

當 Scan Mode 啟用時,需要配置以下參數來定義轉換序列:

Number Of Conversion: 定義在一次掃描序列中要轉換的通道總數 (1 到 16 個)。
Rank 配置: 對于序列中的每一個 Rank (位置),需要指定:
Channel: 選擇要在此 Rank 轉換的 ADC 通道 (e.g., Channel 0, Channel 1, Temp Sensor, Vbat)。
Sampling Time: 為此通道設置采樣時間(可以每個通道不同)。
示例: 轉換 PA0 (Channel 0) 和 PA1 (Channel 1)

Number Of Conversion: 2
Rank 1: Channel 0, Sampling Time: 28.5 Cycles
Rank 2: Channel 1, Sampling Time: 55.5 Cycles

3,掃描結束選擇 (End of Conversion Selection - EOC)

在這里插入圖片描述

這個設置決定了何時產生 EOC (轉換結束) 標志或中斷。

End of single conversion (單個轉換結束)
End of sequence conversion (序列轉換結束)
End of single conversion: 每個通道轉換完成后都會產生 EOC 標志。
End of sequence conversion: DMA常用 只有當整個掃描序列中的所有通道都轉換完成后,才會產生 EOC 標志。這在使用 DMA 讀取整個序列結果時非常有用。

4,不連續轉換模式 (Discontinuous Conversion Mode)

在這里插入圖片描述

這是一個可選的高級模式,允許將掃描序列分成幾個小組進行轉換。每次外部觸發只會轉換一個小組。
如果啟用,需要設置 “Number Of Discontinuous Conversions” 來指定每個小組包含的通道數量。例如,掃描 6 個通道,分成 3 組,每次觸發轉換 2 個通道。

應用場景: 需要以較低頻率交錯采樣多組通道,或者在特定時間點集中采樣某幾個通道。

配置建議:
測量單通道:Scan Mode: Disabled。
測量多通道:Scan Mode: Enabled,并配置好 Number Of Conversion 和每個 Rank 的 Channel/Sampling Time。
配合 DMA 讀取整個序列:設置 EOC Selection: End of sequence conversion。
Discontinuous Mode 使用較少,僅在特定需求時啟用。

5,外部觸發配置

除了軟件啟動轉換 (調用 HAL_ADC_Start()),ADC 還可以配置為由外部事件觸發啟動,這對于精確控制采樣時刻至關重要,尤其是在配合 DMA 使用時。

選擇相應的外部觸發源 (External Trigger Conversion Source),可以啟動ADC轉換
常見的觸發源包括:

1,定時器觸發 (Timer Trigger):

最常用 可以選擇多個定時器 (TIM1, TIM2, TIM3, …) 的不同事件作為觸發源。常用的有:
Timer x Trigger Out event (TRGO): 定時器的主要觸發輸出信號,通常配置為由定時器的更新事件 (Update Event - UEV) 產生。這是實現固定頻率采樣的關鍵。
Timer x Capture Compare x event: 定時器的捕獲/比較匹配事件。

2,軟件觸發 (Software Trigger):

默認/手動 通過調用 HAL_ADC_Start() 等函數來手動啟動轉換。

3,外部引腳觸發 (EXTI line x event):

由外部 GPIO 引腳上的邊沿事件觸發。
這個邊沿事件什么呢
是觸發邊沿 (External Trigger Conversion Edge)
選擇觸發事件的有效邊沿。
Rising edge (上升沿)
Falling edge (下降沿)
Both edges (雙邊沿)
Disabled (如果選擇軟件觸發)

說明: 對于定時器觸發,通常選擇 Rising edge。具體選擇取決于觸發源信號的特性。

配置建議:
輪詢法/簡單中斷法: 通常使用 Software Trigger (保持默認設置)。
精確固定頻率采樣 (配合 DMA): 推薦 選擇一個定時器 (如 TIM3) 的 Trigger Out event 作為觸發源,并設置邊沿為 Rising edge。同時需要配置對應定時器的 TRGO 輸出 (詳見 “觸發定時器配置”)。
確保 ADC 的 Continuous Conversion Mode 設置為 Disabled,否則外部觸發可能只在第一次生效。

6,DMA 配置

使用 DMA (Direct Memory Access) 可以讓 ADC 轉換結果自動傳輸到內存,無需 CPU 干預,極大提高效率,是處理連續采樣或高速采樣的關鍵。

1,添加 DMA 請求 (Add DMA Request)

在這里插入圖片描述

在 CubeMX 的 ADC 配置頁面下找到 “DMA Settings” 標簽頁。點擊 “Add” 按鈕,選擇 ADC 對應的 DMA 請求 (例如 ADC1)。

2,DMA 通道配置 (DMA Request Settings)

為選定的 DMA 請求配置參數:
Stream/Channel: 選擇一個可用的 DMA 通道/流 (CubeMX 通常會自動分配)。
Direction: 方向。Peripheral To Memory (由 CubeMX 自動設置)。
Priority: DMA 通道優先級 (Low, Medium, High, Very High)。當多個 DMA 請求沖突時,高優先級優先。
Mode: DMA 傳輸模式。
Normal: 傳輸完指定長度的數據后停止。
Circular: 常用 傳輸到緩沖區末尾后自動回到緩沖區開頭繼續傳輸,形成環形緩沖區。這是 ADC 連續采樣配合 DMA 的核心配置。
Increment Address: 地址自增設置。
Peripheral: 不勾選 ADC 數據寄存器地址固定。
Memory: 勾選 內存緩沖區地址需要遞增。
Data Width: 數據寬度(外設 Peripheral / 內存 Memory)。

推薦配置:
Peripheral: Word, Memory: Word。
原因:
STM32 ADC 數據寄存器 (DR) 通常是 32 位的,即使有效數據只有 12 位或 16 位。
DMA 以 Word (32位) 傳輸可以最高效地匹配硬件,減少配置復雜度,并保證內存對齊。
雖然 ADC 結果是 16 位或 12 位,但將其存入 uint32_t 類型的緩沖區數組通常是最佳實踐(代碼中讀取時取低位即可)。
將 Memory Width 設為 Half Word (16位) 也可以工作(需配合 uint16_t 緩沖區),但 Word-Word 是更常見且通常推薦的配置。
可選配置:
Peripheral: Half Word, Memory: Half Word (需配合 uint16_t 緩沖區)。
不推薦配置: Byte 傳輸效率較低。
配置建議:
進行連續采樣(如定時器觸發)或高速采樣時,必須啟用 DMA。
Mode 設置為 Circular。
Increment Address 勾選 Memory,不勾選 Peripheral。
Data Width 推薦 Peripheral: Word, Memory: Word,并使用 uint32_t 類型的 DMA 緩沖區。
關聯:
DMA 的配置與 ADC 的觸發方式 (External Trigger)、連續轉換模式 (Continuous/Single) 以及中斷配置 (NVIC) 緊密相關,需要協同設置才能正確工作。

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

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

相關文章

【軟考 霍夫曼編碼的文檔壓縮比】

霍夫曼編碼的文檔壓縮比計算基于字符頻率的最優編碼分配&#xff0c;以下是詳細步驟及相關案例&#xff1a; 一、壓縮比計算公式 [ \text{壓縮比} \frac{\text{壓縮前總比特數}}{\text{壓縮后總比特數 編碼表存儲開銷}} ] 通常以 比率&#xff08;如 3:1&#xff09; 或 百分…

關閉VSCode 自動更新

參考&#xff1a;關閉VSCode 自動更新_vscode關閉自動更新-CSDN博客 vscode的設置 Update: Mode Update: Enable Windows Background Updates Extensions: Auto Check Updates Extensions: Auto Update

Flask框架搭建

1、安裝Flask 打開終端運行以下命令&#xff1a; pip install Flask 2、創建項目目錄 在Windows上&#xff1a; venv\Scripts\activate 執行 3、創建 app.py 文件 可以在windows終端上創建app.py文件 &#xff08;1&#xff09;終端中創建 使用echo命令 echo "fr…

5G-A和未來6G技術下的操作系統與移動設備變革:云端化與輕量化的發展趨勢

目錄 5G技術帶來的革命性變革 云端化操作系統的實現路徑 完全云端化模式 過渡性解決方案 未來操作系統的發展方向 功能架構演進 安全機制強化 移動設備的形態變革 終端設備輕量化 物聯網設備簡化 實施挑戰與應對策略 技術挑戰 商業模式創新 總結與展望 5G技術作為…

【漫話機器學習系列】261.工具變量(Instrumental Variables)

工具變量&#xff08;Instrumental Variables&#xff09;通俗圖解&#xff1a;破解內生性困境的利器 在數據建模與因果推斷過程中&#xff0c;我們經常遇到一個棘手問題&#xff1a;內生性&#xff08;Endogeneity&#xff09;。它會導致模型估計產生偏差&#xff0c;進而誤導…

CSS:顏色的三種表示方式

文章目錄 一、rgb和rgba方式二、HEX和HEXA方式&#xff08;推薦&#xff09;三、hsl和hsla方式四、顏色名方式 一、rgb和rgba方式 10進制表示方法 二、HEX和HEXA方式&#xff08;推薦&#xff09; 就是16進制表示法 三、hsl和hsla方式 語法&#xff1a;hsl(hue, satura…

支付寶授權登錄

支付寶授權登錄 一、場景 支付寶小程序登錄&#xff0c;獲取用戶userId 二、注冊支付寶開發者賬號 1、支付寶開放平臺 2、點擊右上角–控制臺&#xff0c;創建小程序 3、按照步驟完善信息&#xff0c;生成密鑰時會用到的工具 4、生成的密鑰&#xff0c;要保管好&#xff…

涂色不踩雷:如何優雅解決 LeetCode 柵欄涂色問題

文章目錄 摘要描述例子&#xff1a; 題解答案&#xff08;Swift&#xff09;題解代碼分析動態規劃核心思路初始條件 示例測試及結果示例 1&#xff1a;示例 2&#xff1a;示例 3&#xff1a; 時間復雜度空間復雜度總結實際場景聯系 摘要 在用戶體驗和界面設計中&#xff0c;顏…

GEE計算 RSEI(遙感生態指數)

&#x1f6f0;? 什么是 RSEI&#xff1f;為什么要用它評估生態環境&#xff1f; RSEI&#xff08;遙感生態指數&#xff0c;Remote Sensing Ecological Index&#xff09; 是一種通過遙感數據計算得到的、綜合反映區域生態環境質量的指標體系。 它的設計初衷是用最少的變量&…

圖像處理:預覽并繪制圖像細節

前言 因為最近在搞畢業論文的事情&#xff0c;要做出一下圖像細節對比圖&#xff0c;所以我這里寫了兩個腳本&#xff0c;一個用于框選并同時預覽圖像放大細節&#xff0c;可顯示并返回框選圖像的坐標&#xff0c;另外一個是輸入框選圖像的坐標并將放大的細節放置在圖像中&…

基于javaweb的SSM駕校管理系統設計與實現(源碼+文檔+部署講解)

技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論文…

限制 MySQL 服務只能被內網 `192.168.1.*` 網段的設備訪問

1. 修改 MySQL 配置文件 MySQL 默認監聽所有網絡接口(0.0.0.0),需要將其綁定到內網 IP 地址或限制訪問范圍。 (1)編輯 MySQL 配置文件 找到 MySQL 的主配置文件,通常是 /etc/my.cnf 或 /etc/mysql/my.cnf。使用文本編輯器打開: sudo vi /etc/my.cnf(2)設置 bind-a…

uniapp-商城-55-后臺 新增商品(分類、驗證和彈窗屬性)

1、概述 在前面 &#xff0c;我們將商品頁面的布局給完成了&#xff0c;這里來對表單的標簽輸入進行校驗&#xff0c;看看這里的校驗還是不是也需要兼容微信小程序&#xff0c;還有沒有前面遇到的自定義正則進行校驗的情況。 另外這里還需要完成商品屬性的添加&#xff0c;就是…

PyInstaller 打包后 Excel 轉 CSV 報錯解決方案:“excel file format cannot be determined“

一、問題背景 在使用 Python 開發 Excel 轉 CSV 工具時,直接運行腳本(python script.py)可以正常工作,但通過 PyInstaller 打包成可執行文件后,出現以下報錯: excel file format cannot be determined, you must specify an engine manually 該問題通常發生在使用pandas…

【HTML 全棧進階】從語義化到現代 Web 開發實戰

目錄 &#x1f31f; 前言&#x1f3d7;? 技術背景與價值&#x1fa79; 當前技術痛點&#x1f6e0;? 解決方案概述&#x1f465; 目標讀者說明 &#x1f9e0; 一、技術原理剖析&#x1f4ca; 核心概念圖解&#x1f4a1; 核心作用講解&#x1f527; 關鍵技術模塊說明?? 技術選…

小結:網頁性能優化

網頁性能優化是提升用戶體驗、減少加載時間和提高資源利用率的關鍵。以下是針對網頁生命周期和事件處理的性能優化技巧&#xff0c;結合代碼示例&#xff0c;重點覆蓋加載、渲染、事件處理和資源管理等方面。 1. 優化加載階段 減少關鍵資源請求&#xff1a; 合并CSS/JS文件&a…

【AI學習】AI大模型技術發展研究月報的生成提示詞

AI大模型技術發展研究月報生成提示詞 請輸出AI大模型技術發展研究月報&#xff0c;要求如下&#xff1a; —————————— 任務目標 在今天&#xff08;{{today}}&#xff09;往前連續 30 天內&#xff0c;檢索已正式公開發表的、與AI大模型&#xff08;參數量 ≥10B&am…

AI 實踐探索:輔助生成測試用例

背景 目前我們的測試用例主要依賴人工生成和維護&#xff0c;AI時代的來臨&#xff0c;我們也在思考“AI如何賦能業務”&#xff0c;提出了如下命題&#xff1a; “探索通過AI輔助生成測試用例&#xff0c;完成從需求到測試用例生成的穿刺”。 目標 找全測試路徑輔助生成測…

C#實現訪問遠程硬盤(附源碼)

在現實場景中&#xff0c;我們經常用到遠程桌面功能&#xff0c;而在某些場景下&#xff0c;我們需要使用類似的遠程硬盤功能&#xff0c;這樣能非常方便地操作對方電腦磁盤的目錄、以及傳送文件。那么&#xff0c;這樣的遠程硬盤功能要怎么實現了&#xff1f; 這次我們將給出…

02.Golang 切片(slice)源碼分析(一、定義與基礎操作實現)

Golang 切片&#xff08;slice&#xff09;源碼分析&#xff08;一、定義與基礎操作實現&#xff09; 注意當前go版本代碼為1.23 一、定義 slice 的底層數據是數組&#xff0c;slice 是對數組的封裝&#xff0c;它描述一個數組的片段。兩者都可以通過下標來訪問單個元素。 數…