mFrame
載入中...
搜尋中...
無符合項目
hal::counter::PulseWidth 結構 參考文件abstract
類別hal::counter::PulseWidth的繼承圖:
hal::Base mcxa153::core::CorePulseWidth

複合項目

struct  Channel
 PWM通道介面 更多...
 

公開方法(Public Methods)

virtual int setPeriod (float hz) override
 設定PWM計數器的輸出頻率
 
virtual bool getPeriod (float &resultHz) override
 讀取PWM計數器的當前輸出頻率
 
virtual bool setPercent (int channel, float percent) override
 設定指定通道的PWM脈寬佔空比
 
virtual bool getPercent (int channel, float &result) override
 讀取指定通道的PWM脈寬佔空比
 
virtual bool start (bool enable) override
 啟動或停止PWM計數器
 
- 公開方法(Public Methods) 繼承自 hal::Base
virtual bool deinit (void) override
 硬體去初始化
 
virtual bool init (void) override
 硬體初始化
 
virtual bool isInit (void) override
 檢查硬體初始化狀態
 

函式成員說明文件

◆ getPercent()

virtual bool hal::counter::PulseWidth::getPercent ( int channel,
float & result )
pure virtual

讀取指定通道的PWM脈寬佔空比

取得指定PWM通道當前設定的脈寬百分比。此功能可用於驗證設定 或在系統狀態監控時讀取當前配置。

參數
channelPWM通道編號
  • 有效範圍:0 ~ (最大通道數-1)
  • 通道編號從0開始計算
[out]result傳出參數,儲存讀取到的脈寬百分比
  • 範圍:0.0 ~ 1.0
  • 僅在返回true時數值有效
  • 返回false時內容未定義
傳回值
true讀取成功,result包含有效的脈寬百分比
false讀取失敗,可能原因:
  • 通道編號無效
  • 硬體不支援脈寬回讀
  • 計數器尚未初始化
  • 該通道尚未設定過脈寬
部分硬體可能不支援脈寬回讀功能
建議在setPercent()之後呼叫以驗證設定
參閱
setPercent(), getPeriod()

使用範例:

float currentPercent;
if (pwm.getPercent(0, currentPercent)) {
printf("Channel 0 duty cycle: %.1f%%\n", currentPercent * 100);
} else {
printf("Cannot read channel 0 duty cycle\n");
}

實作於 mcxa153::core::CorePulseWidth.

◆ getPeriod()

virtual bool hal::counter::PulseWidth::getPeriod ( float & resultHz)
pure virtual

讀取PWM計數器的當前輸出頻率

嘗試讀取當前設定的PWM頻率值。此功能為硬體相依的可選實作, 部分硬體可能不支援頻率回讀功能。

參數
[out]resultHz傳出參數,儲存讀取到的頻率值(Hz)
  • 僅在返回true時有效
  • 返回false時內容未定義
傳回值
true讀取成功,硬體支援頻率回讀功能,resultHz包含有效數值
false讀取失敗,可能原因:
  • 硬體不支援頻率回讀功能
  • 計數器尚未初始化
  • 硬體故障或暫時無法讀取
返回值主要表示硬體能力支援度,而非操作成功與否
即使返回false,PWM計數器依然可以正常運作
建議在setPeriod()之後呼叫以驗證設定結果
參閱
setPeriod()

使用範例:

float currentFreq;
if (pwm.getPeriod(currentFreq)) {
// 硬體支援頻率回讀
printf("Current PWM frequency: %.2f Hz\n", currentFreq);
} else {
// 硬體不支援頻率回讀,但PWM依然正常運作
printf("Frequency readback not supported\n");
}

◆ setPercent()

virtual bool hal::counter::PulseWidth::setPercent ( int channel,
float percent )
pure virtual

設定指定通道的PWM脈寬佔空比

調整指定PWM通道的脈寬百分比,控制輸出波形的高電平時間比例。 佔空比直接影響PWM的平均電壓輸出和功率傳遞。

參數
channelPWM通道編號
  • 有效範圍:0 ~ (最大通道數-1)
  • 通道編號從0開始計算
  • 超出範圍將返回false
percent脈寬佔空比百分比
  • 有效範圍:0.0 ~ 1.0
  • 0.0 = 完全低電平(0佔空比)
  • 0.5 = 50佔空比(方波)
  • 1.0 = 完全高電平(100佔空比)
  • 超出範圍可能被截斷或返回錯誤
傳回值
true設定成功,脈寬已更新
false設定失敗,可能原因:
  • 通道編號無效
  • 百分比數值超出範圍
  • 硬體尚未初始化
  • 計數器未啟動或故障
設定會立即生效,無需重新啟動計數器
不同通道可以有不同的脈寬設定
建議在start()啟動計數器後設定脈寬
參閱
getPercent(), start(), setPeriod()

使用範例:

// 設定通道0為50%佔空比
if (pwm.setPercent(0, 0.5f)) {
printf("Channel 0 set to 50%% duty cycle\n");
}
// 設定通道1為25%佔空比
pwm.setPercent(1, 0.25f);

實作於 mcxa153::core::CorePulseWidth.

◆ setPeriod()

virtual int hal::counter::PulseWidth::setPeriod ( float hz)
pure virtual

設定PWM計數器的輸出頻率

配置PWM計數器的基礎頻率,此頻率將影響所有通道的週期時間。 頻率設定會影響PWM解析度,一般而言頻率越高解析度越低。

參數
hzPWM輸出頻率,單位為赫茲(Hz)
  • 有效範圍依硬體實作而定
  • 一般範圍:1Hz ~ 1MHz
  • 建議範圍:100Hz ~ 100kHz(平衡解析度與性能)
傳回值
int 設定結果狀態碼
  • 具體數值定義依實作而定
  • 一般約定:0=成功,負值=錯誤碼,正值=警告碼
頻率變更會立即影響所有通道
某些硬體可能有頻率限制或離散頻率點
警告
過高頻率可能導致脈寬解析度不足
參閱
getPeriod(), start()

實作於 mcxa153::core::CorePulseWidth.

◆ start()

virtual bool hal::counter::PulseWidth::start ( bool enable)
pure virtual

啟動或停止PWM計數器

控制PWM計數器的運行狀態。啟動後所有已配置的通道將開始輸出 PWM波形,停止後所有通道輸出將停止(通常為低電平)。

參數
enablePWM計數器控制
  • true: 啟動PWM計數器,開始波形輸出
  • false: 停止PWM計數器,停止波形輸出
傳回值
true操作成功,計數器狀態已變更
false操作失敗,可能原因:
  • 硬體尚未正確初始化
  • 頻率或通道尚未設定
  • 硬體資源衝突
  • 電源管理限制
建議的操作順序:setPeriod() → setPercent() → start(true)
停止計數器不會清除已設定的頻率和脈寬配置
重新啟動時會使用之前的配置繼續運行
某些硬體在停止時會將輸出拉至特定電平(通常為低電平)
參閱
setPeriod(), setPercent()

使用範例:

// 配置並啟動PWM
pwm.setPeriod(1000.0f); // 設定1kHz
pwm.setPercent(0, 0.5f); // 通道0設為50%
if (pwm.start(true)) {
printf("PWM started successfully\n");
}
// 稍後停止PWM
pwm.start(false);
printf("PWM stopped\n");

實作於 mcxa153::core::CorePulseWidth.


此結構(structure) 文件是由下列檔案中產生: