mFrame
載入中...
搜尋中...
無符合項目
hal::counter::PulseWidth::Channel 結構 參考文件abstract

PWM通道介面 更多...

#include <PulseWidth.h>

類別hal::counter::PulseWidth::Channel的繼承圖:
mcxa153::core::CorePulseWidthChannel

公開方法(Public Methods)

virtual bool setPercent (float percent) override
 設定此通道的PWM脈寬佔空比
 
virtual bool getPercent (float &resultPercent) override
 讀取此通道的PWM脈寬佔空比
 
virtual bool getPeriod (float &resultHz) override
 讀取此通道對應的PWM週期時間
 

詳細描述

PWM通道介面

定義單一PWM通道的操作介面,提供獨立的脈寬控制功能

參閱
PulseWidth::Channel

函式成員說明文件

◆ getPercent()

virtual bool hal::counter::PulseWidth::Channel::getPercent ( float & resultPercent)
pure virtual

讀取此通道的PWM脈寬佔空比

取得當前通道設定的脈寬百分比。此方法專門針對單一通道操作, 無需指定通道編號,可用於驗證設定值或進行狀態監控。

參數
[out]resultPercent傳出參數,儲存讀取到的脈寬佔空比百分比
  • 範圍:0.0 ~ 1.0
  • 0.0 = 完全低電平(關閉狀態)
  • 0.5 = 50佔空比
  • 1.0 = 完全高電平(最大功率)
  • 僅在返回true時數值有效
  • 返回false時內容未定義
傳回值
true讀取成功,resultPercent包含有效的脈寬百分比
false讀取失敗,可能原因:
  • 硬體不支援脈寬回讀功能
  • 父計數器尚未初始化
  • 該通道尚未設定過脈寬
  • 通道硬體故障或連接異常
  • 父計數器處於無效狀態
部分硬體實作可能不支援脈寬回讀功能
建議在setPercent()之後呼叫以驗證設定結果
此方法僅讀取當前通道的設定,不影響其他通道
參閱
setPercent(), getPeriod(), PulseWidth::getPercent()

使用範例:

// 假設channel是某個PWM通道的參考
float currentPercent;
if (channel.getPercent(currentPercent)) {
printf("Channel duty cycle: %.1f%%\n", currentPercent * 100);
// 根據讀取值進行邏輯判斷
if (currentPercent > 0.8f) {
printf("High power mode\n");
} else if (currentPercent < 0.1f) {
printf("Low power mode\n");
}
} else {
printf("Cannot read channel duty cycle\n");
}

◆ getPeriod()

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

讀取此通道對應的PWM週期時間

取得當前通道所屬PWM計數器的週期時間。由於所有通道共享相同 的計數器週期,此方法實際上返回的是父計數器的週期設定。

參數
[out]resultHz傳出參數,儲存讀取到的週期時間
  • 單位:秒(s),浮點數格式
  • 週期 = 1 / 頻率
  • 僅在返回true時數值有效
  • 返回false時內容未定義
傳回值
true讀取成功,result包含有效的週期時間
false讀取失敗,可能原因:
  • 父計數器尚未設定頻率
  • 硬體不支援週期回讀功能
  • 父計數器未初始化
  • 通道與父計數器連接異常
所有通道的getPeriod()應該返回相同數值(共享計數器)
週期 = 1 / 頻率,例如1kHz對應0.001秒週期
部分硬體實作可能不支援週期回讀功能
參閱
setPercent(), PulseWidth::setPeriod(), PulseWidth::getPeriod()

使用範例:

float period;
if (channel.getPeriod(period)) {
printf("PWM period: %.6f seconds\n", period);
printf("PWM frequency: %.2f Hz\n", 1.0f / period);
} else {
printf("Cannot read PWM period\n");
}

實作於 mcxa153::core::CorePulseWidthChannel.

◆ setPercent()

virtual bool hal::counter::PulseWidth::Channel::setPercent ( float percent)
pure virtual

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

調整當前通道的脈寬百分比。此方法專門針對單一通道操作, 無需指定通道編號,簡化了程式設計並避免通道混淆。

參數
percent脈寬佔空比百分比
  • 有效範圍:0.0 ~ 1.0
  • 0.0 = 完全低電平(關閉)
  • 0.5 = 50佔空比(中等功率)
  • 1.0 = 完全高電平(最大功率)
  • 超出範圍可能被截斷或返回錯誤
傳回值
true設定成功,通道脈寬已更新
false設定失敗,可能原因:
  • 百分比數值超出有效範圍
  • 父計數器尚未初始化
  • 通道硬體故障
  • 父計數器處於無效狀態
設定會立即生效(如果父計數器已啟動)
此設定獨立於其他通道,不會影響其他通道的脈寬
建議配合父計數器的start()方法使用
參閱
getPeriod(), PulseWidth::start()

使用範例:

// 假設channel是某個PWM通道的參考
channel.setPercent(0.75f); // 設定為75%佔空比
channel.setPercent(0.0f); // 完全關閉
channel.setPercent(1.0f); // 完全開啟

實作於 mcxa153::core::CorePulseWidthChannel.


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