STM32之風扇模塊(開關控制+PWM調速)

目錄

一、系統概述

二、5V直流風扇模塊簡介

2.1? 基本概述

2.2? 關鍵特性

2.3? 接口定義

2.4? 典型驅動電路

2.4.1? 繼電器驅動方案(開關控制)

2.4.2? 三極管驅動方案(調速控制)

2.5? 常見問題解決

三、繼電器模塊控制風扇啟停?

3.1? 硬件準備

3.2? 硬件連接

3.3? 軟件實現

3.3.1? 初始化代碼

3.3.2? 風扇控制函數

3.3.3? 主程序

3.4? 常見問題解決

3.5? 系統特點

四、PWM控制風扇轉速

4.1? 硬件準備

4.2? 硬件連接

4.3? 軟件實現

4.3.1? PWM初始化

4.3.2? 調速控制函數

4.3.3? 主程序邏輯

4.4? 系統優化

4.4.1? 轉速顯示

4.2.2? 按鍵調速

4.5? 系統特點

五、總結


一、系統概述

????????本系統使用STM32F103C8T6單片機通過繼電器模塊控制小風扇的開啟和關閉,實現簡單的開關控制功能。同時使用STM32F103C8T6的PWM功能通過NPN三極管控制5直流風扇轉速,實現低成本的無級調速方案。系統包含PWM生成、轉速顯示和過流保護功能,適用于需要經濟型風扇調速的場合。

二、5V直流風扇模塊簡介

2.1? 基本概述

? ? ? ? 5V兩線直流風扇是最簡單的散熱風扇類型,僅包含電源正極(VCC)和地線(GND)兩根線,通過電壓調節實現調速。其核心部件是直流有刷電機或簡易無刷電機驅動電路,具有結構簡單、成本低廉的特點。

2.2? 關鍵特性

參數典型值/描述
工作電壓5V ±10% (4.5V-5.5V)
空載電流50-150mA(取決于尺寸)
負載電流100-300mA(堵轉時可能更高)
轉速范圍2000-5000 RPM(電壓線性調節)
噪音水平25-35 dB(全速時)
啟動電壓通常≥3V(部分型號需4V以上)
壽命10,000-20,000小時(有刷電機)

2.3? 接口定義

線色/引腳功能說明
紅色VCC (+5V)接5V電源正極
黑色GND接電源負極

2.4? 典型驅動電路

2.4.1? 繼電器驅動方案(開關控制)

原理圖設計:

電源部分:

????????圖中標有“+5V”的線路為整個電路提供5伏特的直流電源,這是電路工作的能量來源。

繼電器(U17):

  • 作用:繼電器是一種電控制器件,它可以用較小的電流去控制較大電流的通斷,在這里用于控制風扇電源的通斷。
  • 工作原理:繼電器內部包含一個線圈和一個開關。當線圈中有電流通過時,會產生磁場,吸引開關動作,從而接通或斷開外部電路。圖中繼電器的引腳1和2連接到控制信號和電源,引腳3和5是常閉和常開觸點,用于連接風扇電源。

晶體管(Q5):

  • 作用:晶體管在這里作為開關使用,用于控制繼電器線圈中的電流。
  • 工作原理:當晶體管的基極有足夠的電流輸入時,晶體管導通,允許電流從集電極流向發射極,進而使繼電器線圈中有電流通過。圖中基極通過電阻R12連接到“FAN”控制信號,當“FAN”信號為高電平時,晶體管導通。

二極管(D7):

  • 作用:二極管在這里起到續流保護的作用。
  • 工作原理:當晶體管突然關斷時,繼電器線圈中的電流會突然中斷,由于電感的特性,線圈會產生一個反向電動勢,這個反向電動勢可能會損壞晶體管。二極管D7為這個反向電動勢提供了一個泄放回路,保護晶體管不受損壞。

電阻(R12):

  • 作用:電阻R12用于限制流入晶體管基極的電流,防止因電流過大而損壞晶體管。它起到分壓和限流的作用,確保晶體管工作在安全的工作區域內。

控制信號(FAN):

????????“FAN”是外部控制信號輸入,當該信號為高電平時,晶體管導通,繼電器線圈得電,觸點閉合,風扇運轉;當“FAN”信號為低電平時,晶體管截止,繼電器線圈失電,觸點斷開,風扇停止。

2.4.2? 三極管驅動方案(調速控制)

原理圖設計:

電源部分:

????????圖中“+5V”表示該電路的電源輸入為5伏特直流電,為整個電路提供工作電壓,“GND”代表接地,是電路的參考零電位點。

控制信號輸入:

????????“PA11”是外部控制信號的輸入引腳。這個信號通常由單片機的某個引腳輸出,用來控制風扇或電機的啟動與停止。

電阻部分:

  • R24(10KΩ):這是一個上拉電阻。當PA11引腳沒有外部信號輸入時,上拉電阻將該引腳的電位拉高到+5V,確保晶體管Q10處于截止狀態,風扇或電機不工作。當PA11引腳接收到有效的控制信號時,會改變晶體管基極的電位。
  • R26(1KΩ):它是基極電阻,作用是限制流入晶體管Q10基極的電流,防止因電流過大而損壞晶體管。通過合理選擇R26的阻值,可以確保晶體管工作在合適的放大或開關狀態。

晶體管部分:

Q10(S8050)是一個NPN型晶體管,在這里作為開關使用。

  • 當PA11引腳輸入的信號使晶體管基極電壓達到一定閾值時,晶體管導通,電流可以從集電極流向發射極。
  • 當基極電壓低于閾值時,晶體管截止,集電極和發射極之間相當于斷開。

保護二極管部分:

????????D1是一個二極管,它與風扇或電機M2并聯,起到續流保護的作用。風扇或電機屬于感性負載,當晶體管突然截止時,感性負載中的電流不能突變,會產生一個反向電動勢。這個反向電動勢可能會損壞晶體管,而二極管D1為反向電動勢提供了一個泄放回路,保護晶體管不受損壞。

負載部分:

????????M2代表風扇或電機,是電路的負載。當晶體管Q10導通時,電流從+5V電源流出,經過風扇或電機M2、導通的晶體管Q10,最終流向GND,形成回路,風扇或電機開始運轉;當晶體管Q10截止時,回路斷開,風扇或電機停止運轉。

2.5? 常見問題解決

風扇不轉: ?
? ?- 檢查啟動電壓是否足夠 ?
? ?- 測量PWM信號是否到達驅動管 ?

異常噪音: ?
? ?- 嘗試調整PWM頻率(1kHz→25kHz測試) ?

電流過大: ?
? ?- 檢查是否堵轉 ?
? ?- 更換更大電流的驅動管 ?

????????通過合理選擇驅動方案和參數,5V兩線直流風扇可滿足大多數低成本的散熱需求,特別適合STM32等嵌入式系統的溫控應用。

三、繼電器模塊控制風扇啟停?

3.1? 硬件準備

- STM32F103C8T6最小系統板
- 5V繼電器模塊
- 5V直流風扇

5V繼電器模塊詳細介紹參考文章:STM32之繼電器模塊

3.2? 硬件連接

控制部分連接:

STM32引腳連接元件說明
PB9繼電器信號端控制繼電器線圈吸合
PC13LED指示燈風扇狀態指示
5V繼電器VCC模塊供電
GND繼電器GND共地

負載部分連接:
5V? ? ? ? ? ? ? ? ? ? ?→???????? 繼電器COM端
GND? ? ? ? ? ? ? ? ?→???????? 風扇地線(黑線)
繼電器NO端? ?? → ????????風扇電源線(紅線)

接線示意圖:

3.3? 軟件實現

3.3.1? 初始化代碼

#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"void GPIO_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;// 使能GPIO時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE);// 配置PB9為推挽輸出(繼電器控制)GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);// 配置PC13為推挽輸出(LED指示)GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;GPIO_Init(GPIOC, &GPIO_InitStructure);// 初始狀態關閉GPIO_ResetBits(GPIOB, GPIO_Pin_9);GPIO_ResetBits(GPIOC, GPIO_Pin_13);
}

GPIO配置 (GPIO_Init):

  • 推挽輸出確保20mA驅動能力(繼電器模塊需70-100mA,通過三極管放大)
  • 高速模式優化信號邊沿質量
  • 初始狀態置低,防止上電誤動作

3.3.2? 風扇控制函數

void Fan_On(void)
{GPIO_SetBits(GPIOB, GPIO_Pin_9); ?// 繼電器吸合GPIO_SetBits(GPIOC, GPIO_Pin_13); // LED亮
}void Fan_Off(void)
{GPIO_ResetBits(GPIOB, GPIO_Pin_9); ?// 繼電器斷開GPIO_ResetBits(GPIOC, GPIO_Pin_13); // LED滅
}

硬件響應過程(打開風扇):

  • PB9輸出3.3V高電平
  • 三極管飽和導通(Vce≈0.3V)
  • 繼電器線圈得電(4.7V=5V-0.3V)
  • 機械觸點吸合,風扇通電

3.3.3? 主程序

int main(void)
{// 硬件初始化SystemInit();GPIO_Init();while(1){// 開啟風扇5秒Fan_On();Delay_ms(5000);// 關閉風扇5秒Fan_Off();Delay_ms(5000);}
}
  • 開啟風扇5秒和關閉風扇5秒循環交替執行。

3.4? 常見問題解決

繼電器不動作:
? ?- 檢查三極管是否損壞
? ?- 測量線圈兩端電壓(應≈5V)
? ?- 測試GPIO輸出是否正常

風扇不轉:
? ?- 檢查5V電源
? ?- 測試繼電器觸點導通情況
? ?- 確認風扇本身正常

3.5? 系統特點

本系統實現了風扇的基本開關控制,具有以下特點:
1. 電路簡單可靠
2. 高低壓完全隔離
3. 狀態指示明確
4. 易于功能擴展

四、PWM控制風扇轉速

4.1? 硬件準備

- STM32F103C8T6最小系統板
- 5V直流風扇
- S8050 NPN三極管(可直接使用電機驅動模塊)

4.2? 硬件連接

STM32引腳連接元件說明
PA6三極管基極(PWM信號輸入端)TIM3_CH1 PWM輸出
PC13LED指示燈運行狀態指示
5V風扇正極電源輸入
GND公共地三極管發射極

4.3? 軟件實現

4.3.1? PWM初始化

void PWM_Init(void)
{GPIO_InitTypeDef GPIO_InitStruct;TIM_TimeBaseInitTypeDef TIM_BaseStruct;TIM_OCInitTypeDef TIM_OCStruct;// 使能時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);// 配置PA6為復用推挽輸出GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStruct);// 定時器基礎配置TIM_BaseStruct.TIM_Prescaler = 72-1; // 1MHz計數頻率TIM_BaseStruct.TIM_Period = 100-1; ? // 10kHz PWM頻率TIM_BaseStruct.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM3, &TIM_BaseStruct);// PWM通道配置TIM_OCStruct.TIM_OCMode = TIM_OCMode_PWM1;TIM_OCStruct.TIM_OutputState = TIM_OutputState_Enable;TIM_OCStruct.TIM_Pulse = 0; // 初始占空比0%TIM_OCStruct.TIM_OCPolarity = TIM_OCPolarity_High;TIM_OC1Init(TIM3, &TIM_OCStruct);// 使能預裝載TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);TIM_ARRPreloadConfig(TIM3, ENABLE);// 啟動定時器TIM_Cmd(TIM3, ENABLE);
}

定時器配置 (PWM_Init)頻率計算:

  • 系統時鐘72MHz經72分頻→1MHz時基
  • 每100個計數周期產生1個PWM周期 → 1MHz/100=10kHz

4.3.2? 調速控制函數

void Set_Fan_Speed(uint8_t percent) // percent: 0-100%
{// 限制最小啟動占空比(防止三極管未飽和)if(percent > 0 && percent < 20) percent = 20;?if(percent > 100) percent = 100;TIM3->CCR1 = percent; // 修改捕獲比較值GPIO_WriteBit(GPIOC, GPIO_Pin_13, (percent > 0) ? Bit_SET : Bit_RESET);
}

轉速設置函數 (Set_Fan_Speed):

  • 最小20%占空比確保三極管飽和導通
  • 直接寄存器操作提高響應速度
  • LED狀態同步指示

4.3.3? 主程序邏輯

int main(void)
{uint8_t speed;// 初始化SystemInit();PWM_Init();ADC1_Init();LED_Init();while(1){float temp = DS18B20_GetTemp();if(temp < 30.0) speed = 0;else if(temp < 50.0) speed = 20 + (temp-30)*4;else speed = 100;Set_Fan_Speed(speed);Delay_ms(50); // 控制周期50ms}
}

? ? ? ? 這里以溫度控制為例,實際速度根據自身系統需求修改speed變量即可。

????????通過溫度傳感器(DS18B20)讀取當前環境溫度,根據預設的溫度-轉速映射關系自動調節風扇轉速,實現溫度自適應的智能散熱控制。

調用DS18B20驅動函數獲取當前溫度值temp(單位:℃)。

(1)溫度低于30℃時關閉風扇(speed = 0)。

(2)溫度在30℃~50℃之間時根據溫度調速(spped =?20 + (temp-30)*4)。

  • 溫度30℃時:speed = 20 + 0 = 20%(最小啟動轉速)
  • 溫度40℃時:speed = 20 + 10*4 = 60%
  • 溫度50℃時:speed = 20 + 20*4 = 100%

(3)溫度≥50℃時風扇全速運行(speed = 100

4.4? 系統優化

4.4.1? 轉速顯示

void Show_Speed(uint8_t percent)
{char buf[16];sprintf(buf, "Speed:%3d%%", percent);LCD_DisplayString(0, 0, buf);
}

將speed傳入函數中,格式化數組后通過顯示屏顯示速度。

4.2.2? 按鍵調速

void Key_Control(void)
{if(KEY_Pressed()) {static uint8_t speed = 0;speed = (speed + 25) % 125; // 0%,25%,50%,75%,100%Set_Fan_Speed(speed);}
}

每次按下按鍵速度增加25%.?

4.5? 系統特點

本系統實現了經濟高效的PWM風扇調速,具有以下特點:
1. 硬件成本極低
2. 調速范圍寬(20%-100%)
3. 電路簡單可靠

實際應用時需根據風扇規格調整:
- 最小啟動占空比
- PWM頻率

五、總結

繼電器控制風扇優缺點:

優點缺點
控制高壓/大電流負載只能開關控制,無法調速
電氣隔離安全可靠機械觸點壽命有限(約10萬次)
電路簡單,成本低切換時有機械噪音

PWM控制風扇優缺點:

優點缺點
無級調速,控制精細僅適用于直流風扇
無機械損耗,壽命長需額外驅動電路(三極管等)
可結合溫度反饋實現閉環控制低速時可能停轉(需最小占空比)

方案決策指南:

控制需求推薦方案理由
簡單開關控制繼電器安全隔離高壓
直流風扇調速PWM精準控制轉速
低成本、無需調速繼電器+交流風扇電路簡單
靜音/節能需求PWM+直流風扇可動態降低轉速

????????通過合理選擇控制方式,可平衡成本、性能和安全需求。建議在原型階段測試實際負載特性,再確定最終方案。

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

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

相關文章

AGX Xavier 搭建360環視教程【二、環境配置】

AGX Xavier 場景下的 【OpenCV FFmpeg CUDA GStreamer】 重裝 & 編譯的2025年穩定方案? 1?? 先卸載老版本AGX 自帶很多預裝包&#xff0c;原則&#xff1a;卸載干凈&#xff0c;避免舊庫和新編譯沖突。&#x1f539; 卸載 OpenCVdpkg -l | grep opencv sudo apt-get …

Cesium實戰:交互式多邊形繪制與編輯功能完全指南(最終修復版)

&#x1f4cb; 文章目錄 引言功能概述環境準備核心實現步驟 地圖初始化多邊形繪制頂點編輯功能顏色與透明度自定義面積計算與顯示 常見問題解決方案 多邊形顏色顯示異常面積標簽不可見控制臺alpha類型錯誤地圖交互無法恢復 完整代碼總結與擴展 引言 Cesium作為一款強大的3D地…

SQL判斷先判斷條件1是否符合,條件1不符合再判斷條件2

偽代碼假設存在條件1和條件2SELECT * FROM table1 WHERE 條件1 AND 條件2方法1&#xff1a;先判斷條件1是否符合,條件1不符合再判斷條件2是否滿足&#xff1a;SELECT * FROM table1 WHERE (條件1) OR (NOT 條件1 AND 條件2);方法 2: 使用 IF 或數據庫特有函數&#xff08;…

游戲的程序員會不會偷偷改自己賬號的數據?

看到這個問題&#xff0c;我忍不住笑了。 作為一個在程序員這條路上摸爬滾打了快10年的老司機&#xff0c;雖然我主要專精嵌入式開發&#xff0c;但我也接觸過不少游戲開發的朋友&#xff0c;對游戲行業的內部運作有一定了解。這個問題可以說是每個游戲玩家都曾經想過的&#x…

uniapp小程序tabbar跳轉攔截與彈窗控制

一、第一步1、App.vue中定義globalData用于全局存儲狀態globalData:{needShowReleaseConfirm: false, // 標記是否需要顯示發布頁面確認彈窗allowReleaseJump: false ,// 標記是否允許跳轉到發布頁面},2、在App.vue中的onLaunch寫入監聽事件onLaunch: function() {// 添加switc…

華為網路設備學習-26(BGP協議 一)

一、AS&#xff08;自治系統&#xff09;AS&#xff08;自治系統&#xff09;的大小通常指其分配的唯一編號&#xff0c;范圍分為兩種&#xff1a;?2字節AS號?&#xff1a;取值范圍1至65535&#xff08;其中64512-65535為私有AS號&#xff09; ??4字節AS號?&#xff1a;取…

大模型開發框架LangChain之函數調用

1.前言 之前一直使用 dify開發 agent&#xff0c;雖然功能很全面、效果也穩定&#xff0c;但是也存在流程固化、不靈活&#xff0c;以及 dify本身太重&#xff08;內部包含10個容器&#xff09;等問題。 故最近研究了大名頂頂的 langchain&#xff0c;先從函數調用開始&#xf…

pycharm中自動補全方法返回變量

使用IDEA開發java中&#xff0c;可以使用altenter 快捷鍵快速補全方法放回的變量使用pycharm也想實現此效果&#xff0c;如下圖操作方法&#xff1a;pycharm中默認的補全方法返回變量的快捷鍵是&#xff1a;CtrlAltv 可以直接使用默認快捷鍵&#xff0c;也可以在settings->k…

Set 二分 -> 劍指算法競賽

C【STL】集合set 標準庫提供 set 關聯容器分為&#xff1a; 按關鍵字有序保存元素&#xff1a;set&#xff08;關鍵字即值&#xff0c;即只保存關鍵字的容器&#xff09;、multiset&#xff08;關鍵字可重復出現的 set&#xff09;&#xff1b; 無序集合&#xff1a;unordered…

php的原生類

前言&#xff1a;累麻了&#xff01; 反射類 反射類 ReflectionClass&#xff1a;ReflectionClass 類報告了一個類的有關信息。正如其名用于映射反射一個類的類&#xff01; new ReflectionClass(MyClass) 會創建一個 ReflectionClass 實例&#xff0c;代表 MyClass 這個類。 …

PC網站和uniapp安卓APP、H5接入支付寶支付

首先我們需要完成支付寶賬號注冊&#xff0c;支持的賬號類型&#xff1a;支付寶企業賬號、支付寶個人賬號、個體工商戶。 到支付寶商家平臺 產品中心開通APP支付、手機網站支付、電腦網站支付的產品權限。 一、電腦PC網站接入 電腦PC網站支付是指商戶在電腦網頁展示商品或服務&…

MCU芯片內部的ECC安全機制

MCU&#xff08;微控制器單元&#xff09;芯片內部的 ECC&#xff08;錯誤檢測與糾正&#xff09;安全機制 是一種至關重要的硬件級可靠性技術&#xff0c;主要用于保護關鍵存儲單元&#xff08;如 SRAM、Flash、Cache&#xff09;中的數據完整性&#xff0c;防止因外部干擾或硬…

【自動駕駛】經典LSS算法解析——深度估計

LSS-Lift.Splat,Shoot 論文題目&#xff1a;Lift, Splat, Shoot: Encoding Images From Arbitrary Camera Rigs by Implicitly Unprojecting to 3D 代碼&#xff1a;https://github.com/nv-tlabs/lift-splat-shoot 概括&#xff1a;先做深度估計和特征融合&#xff0c;然后投…

《【第八篇-圖片總結篇】Python圖片處理自動化:終極工廠!從裁剪壓縮到智能加水印,打造你的視覺內容生產流水線!》

在數字時代&#xff0c;圖片無處不在。然而&#xff0c;高質量的圖片背后&#xff0c;往往隱藏著繁瑣的后期處理&#xff1a;圖片文件太大導致加載慢&#xff1b;尺寸不符需要裁剪&#xff1b;版權保護要加水印&#xff1b; 為了兼容性還得批量轉換格式……這些重復、機械的工…

frame 與新窗口切換操作【selenium 】

&#x1f9ed; 一、切換到 iframe 內部進行操作在瀏覽器自動化測試中&#xff0c;iframe 是一個特別的存在。它相當于在當前頁面中嵌入了另一個獨立的 HTML 頁面。當我們試圖直接訪問 iframe 中的元素時&#xff0c;往往會發現定位不到&#xff0c;比如&#xff1a;elements w…

MYSQL C_API使用全解

文章目錄C_API&#xff08;簡單的&#xff09;安裝這個庫使用流程初始化連接mysql_init建立連接mysql_real_connect執行SQL語句mysql_query處理結果mysql_store_resultmsyql_use_resultmysql_num_rowsmsyql_free_resultmysql_num_fieldsmysql_fetch_row多線程安全關閉連接mysql…

閑庭信步使用圖像驗證平臺加速FPGA的開發:第二課——RGB轉YCbCr的FPGA硬件編程詳解

&#xff08;本系列只需要modelsim即可完成數字圖像的處理&#xff0c;每個工程都搭建了全自動化的仿真環境&#xff0c;只需要雙擊文件就可以完成整個的仿真&#xff0c;大大降低了初學者的門檻&#xff01;&#xff01;&#xff01;&#xff01;如需要該系列的工程文件請關注…

RK3566/RK3568 Android11 修改selinux模式

概述RK3566/RK3568 Android11 SDK默認的selinux是Enforcing模式(強制模式)。Enforcing&#xff1a;強制模式&#xff1a;SELinux在運行中&#xff0c;且已經開始限制domain/type之間的驗證關系 Permisssive&#xff1a;寬容模式&#xff1a;SELinux在運行中&#xff0c;如果驗證…

iOS Widget 開發-3:Widget 的種類與尺寸(主屏、鎖屏、靈動島)

iOS 支持多種類型的 Widget&#xff0c;分布在主屏幕、鎖屏、靈動島、待機模式、控制中心等多個系統位置。每種 Widget 都有各自的尺寸、交互能力與限制。 本篇將系統梳理 iOS 當前支持的 Widget 類型與尺寸規格。主屏 Widget&#xff08;Home Screen Widgets&#xff09; 主屏…

ffmpeg 中 write_option()函數詳細注釋

author: hjjdebug date: 2025年 07月 11日 星期五 10:51:23 CST descrip: ffmpeg 中 write_option()函數詳細注釋 文章目錄1. 函數原型1.1 參數說明1.2 SpecifierOpt 說明符選項結構2. write_option 代碼注釋2.1 誰調用了write_option 函數?3. 小結:write_option()不僅在ffmpe…