|
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計數器
|
|
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通道當前設定的脈寬百分比。此功能可用於驗證設定 或在系統狀態監控時讀取當前配置。
- 參數
-
| channel | PWM通道編號
- 有效範圍: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 {
printf("Frequency readback not supported\n");
}
◆ setPercent()
virtual bool hal::counter::PulseWidth::setPercent |
( |
int | channel, |
|
|
float | percent ) |
|
pure virtual |
設定指定通道的PWM脈寬佔空比
調整指定PWM通道的脈寬百分比,控制輸出波形的高電平時間比例。 佔空比直接影響PWM的平均電壓輸出和功率傳遞。
- 參數
-
channel | PWM通道編號
- 有效範圍:0 ~ (最大通道數-1)
- 通道編號從0開始計算
- 超出範圍將返回false
|
percent | 脈寬佔空比百分比
- 有效範圍:0.0 ~ 1.0
- 0.0 = 完全低電平(0佔空比)
- 0.5 = 50佔空比(方波)
- 1.0 = 完全高電平(100佔空比)
- 超出範圍可能被截斷或返回錯誤
|
- 傳回值
-
true | 設定成功,脈寬已更新 |
false | 設定失敗,可能原因:
- 通道編號無效
- 百分比數值超出範圍
- 硬體尚未初始化
- 計數器未啟動或故障
|
- 註
- 設定會立即生效,無需重新啟動計數器
-
不同通道可以有不同的脈寬設定
-
建議在start()啟動計數器後設定脈寬
- 參閱
- getPercent(), start(), setPeriod()
使用範例:
if (pwm.setPercent(0, 0.5f)) {
printf("Channel 0 set to 50%% duty cycle\n");
}
pwm.setPercent(1, 0.25f);
實作於 mcxa153::core::CorePulseWidth.
◆ setPeriod()
virtual int hal::counter::PulseWidth::setPeriod |
( |
float | hz | ) |
|
|
pure virtual |
設定PWM計數器的輸出頻率
配置PWM計數器的基礎頻率,此頻率將影響所有通道的週期時間。 頻率設定會影響PWM解析度,一般而言頻率越高解析度越低。
- 參數
-
hz | PWM輸出頻率,單位為赫茲(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波形,停止後所有通道輸出將停止(通常為低電平)。
- 參數
-
enable | PWM計數器控制
- true: 啟動PWM計數器,開始波形輸出
- false: 停止PWM計數器,停止波形輸出
|
- 傳回值
-
true | 操作成功,計數器狀態已變更 |
false | 操作失敗,可能原因:
- 硬體尚未正確初始化
- 頻率或通道尚未設定
- 硬體資源衝突
- 電源管理限制
|
- 註
- 建議的操作順序:setPeriod() → setPercent() → start(true)
-
停止計數器不會清除已設定的頻率和脈寬配置
-
重新啟動時會使用之前的配置繼續運行
-
某些硬體在停止時會將輸出拉至特定電平(通常為低電平)
- 參閱
- setPeriod(), setPercent()
使用範例:
pwm.setPeriod(1000.0f);
pwm.setPercent(0, 0.5f);
if (pwm.start(true)) {
printf("PWM started successfully\n");
}
pwm.start(false);
printf("PWM stopped\n");
實作於 mcxa153::core::CorePulseWidth.
此結構(structure) 文件是由下列檔案中產生: