![]() |
mFrame
|
GPIO 按鈕控制類別 更多...
#include <GpioButton.h>
複合項目 | |
struct | Event |
按鈕事件處理介面 更多... | |
公開方法(Public Methods) | |
GpioButton (hal::digital::GeneralInput &pin, uint32 debounceMillicroseconds=5000, bool inverted=false) | |
建構 GPIO 按鈕物件 | |
virtual | ~GpioButton (void) override |
解構 GPIO 按鈕物件 | |
virtual void | update (void) override |
更新按鈕狀態 | |
GpioButton & | setEvent (Event *event) |
設定事件處理器 | |
GpioButton & | setInverted (bool inverted) |
設定按鈕邏輯反相 | |
![]() | |
void * | operator new (size_t n) |
使用運算子 new 分配記憶體 | |
void * | operator new (size_t n, void *p) |
在指定記憶體上調用運算子 new | |
virtual ufm::lang::Object & | getObject (void) override |
取得對應的 Object 物件 | |
void | delay (int milliseconds) const |
延遲指定的毫秒數進行執行緒等待 | |
bool | equals (Object *object) const |
判斷與另一物件是否為相同參照(指標型態比較) | |
bool | equals (Object &object) const |
判斷與另一物件是否為相同參照(參照型態比較) | |
void | wait (void) const |
使當前線程等待直到被通知 | |
bool | wait (int timeout) const |
等待通知或超時 | |
bool | yield (void) const |
讓執行緒讓渡控制權給同優先權的下一個執行緒 | |
int | lock (void) const |
核心鎖定,鎖定期間禁止線程切換 | |
int | unlock (void) const |
核心解鎖 | |
ufm::sys::Thread * | currentThread (void) const |
取得當前執行緒指標 | |
virtual int | hashcode (void) const |
返回對象的哈希碼值。支持這種方法是為了散列表,如HashMap提供的那樣。 | |
![]() | |
virtual | ~Interface (void)=default |
虛擬析構函式 | |
GPIO 按鈕控制類別
此類別用於管理 GPIO 按鈕的狀態檢測,提供防彈跳功能以及按鈕按下/釋放事件處理。 支援正常邏輯(高電平為按下)和反相邏輯(低電平為按下)兩種模式。
ufm::hw::GpioButton::GpioButton | ( | hal::digital::GeneralInput & | pin, |
uint32 | debounceMillicroseconds = 5000, | ||
bool | inverted = false ) |
建構 GPIO 按鈕物件
建立一個新的 GPIO 按鈕控制物件,並初始化相關參數。 建構時會讀取按鈕的初始狀態並啟動防彈跳計時器。
pin | GPIO 輸入腳位的參考,必須是有效的 GeneralInput 物件 |
debounceMillicroseconds | 防彈跳時間,單位為微秒,預設值為 5000 微秒(5 毫秒) |
inverted | 按鈕邏輯是否反相,預設值為 false(正常邏輯)
|
|
overridevirtual |
解構 GPIO 按鈕物件
清理物件資源,確保物件安全銷毀。 解構時不會觸發任何事件,也不會改變 GPIO 腳位的狀態。
GpioButton & ufm::hw::GpioButton::setEvent | ( | Event * | event | ) |
設定事件處理器
設定或變更按鈕狀態變化時的事件處理器。當按鈕狀態發生轉換時, 會呼叫事件處理器的對應方法。
event | 事件處理器指標,必須繼承自 Event 結構體
|
GpioButton & ufm::hw::GpioButton::setInverted | ( | bool | inverted | ) |
設定按鈕邏輯反相
設定按鈕的邏輯極性,以適應不同的硬體設計需求。 這個設定會影響 GPIO 電平狀態到邏輯狀態的對應關係。
inverted | 邏輯反相旗標
|
|
overridevirtual |
更新按鈕狀態
定期檢查按鈕狀態變化並處理防彈跳邏輯。此方法實現了完整的按鈕狀態管理流程: