PWM通道介面
更多...
#include <PulseWidth.h>
|
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()
使用範例:
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.setPercent(0.75f);
channel.setPercent(0.0f);
channel.setPercent(1.0f);
實作於 mcxa153::core::CorePulseWidthChannel.
此結構(structure) 文件是由下列檔案中產生: