mFrame
載入中...
搜尋中...
無符合項目
mcxa153::core::CoreGeneralPin 類別 參考文件

MCXA153 通用數位腳位控制器 更多...

#include <CoreGeneralPin.h>

類別mcxa153::core::CoreGeneralPin的繼承圖:
ufm::lang::Object hal::digital::GeneralPin ufm::lang::Interface hal::digital::GeneralOutput hal::digital::GeneralInput

公開方法(Public Methods)

 CoreGeneralPin (const CoreGeneralPort &port, unsigned int pin)
 建構通用數位腳位物件
 
virtual ~CoreGeneralPin (void) override
 解構通用數位腳位物件
 
virtual hal::digital::GeneralPin::Mode getPinMode (void) override
 取得腳位模式
 
virtual hal::digital::GeneralPin::Mode setPinMode (hal::digital::GeneralPin::Mode mode) override
 設定腳位模式
 
virtual bool getDir (void) override
 取得腳位方向
 
virtual void setDir (bool dir) override
 設定腳位方向
 
virtual void setInput (void) override
 設定腳位為輸入方向
 
virtual void setOutput (void) override
 設定腳位為輸出方向
 
virtual void setHigh (void) override
 設定腳位為高電平
 
virtual void setLow (void) override
 設定腳位為低電平
 
virtual void setToggle (void) override
 切換腳位電平狀態
 
virtual void setValue (bool level) override
 設定腳位邏輯值
 
virtual bool getValue (void) override
 讀取腳位邏輯值
 
- 公開方法(Public Methods) 繼承自 ufm::lang::Object
void * operator new (size_t n)
 使用運算子 new 分配記憶體
 
void * operator new (size_t n, void *p)
 在指定記憶體上調用運算子 new
 
virtual ufm::lang::ObjectgetObject (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::ThreadcurrentThread (void) const
 取得當前執行緒指標
 
virtual int hashcode (void) const
 返回對象的哈希碼值。支持這種方法是為了散列表,如HashMap提供的那樣。
 
- 公開方法(Public Methods) 繼承自 ufm::lang::Interface
virtual ~Interface (void)=default
 虛擬析構函式
 

公開屬性

void *const vBase
 GPIO模組基底暫存器位址
 
void *const vBasePort
 GPIO埠基底暫存器位址
 
const unsigned int vPin = 0
 腳位編號
 

額外的繼承成員

- 公開型態 繼承自 hal::digital::GeneralPin
enum struct  Mode : uint8 {
  NOT_SUPPORT , FLOAT , PUSH_PULL , PULL_UP ,
  PULL_DOWN , OPEN_DRAIN , OPEN_DRAIN_PULL_UP
}
 GPIO引腳電氣特性模式。 更多...
 

詳細描述

MCXA153 通用數位腳位控制器

CoreGeneralPin 提供單一GPIO腳位的完整硬體抽象層實作。 此類別封裝了GPIO腳位的所有基本操作,包括:

主要功能:

  • 輸入/輸出方向控制
  • 數位電平讀取與設定
  • 腳位模式配置(推輓、開漏等)
  • 高速位元操作

技術特色:

  • 直接暫存器操作,性能優異
  • 支援原子性位元操作
  • 與CoreGeneralPort緊密整合
  • 完整的HAL介面實作

適用場景:

  • LED控制
  • 按鍵輸入檢測
  • 通訊協定實作(I2C、SPI模擬)
  • 通用數位I/O控制

硬體特性:

  • 支援3.3V邏輯電平
  • 最大輸出電流依腳位規格而定
  • 內建上拉/下拉電阻選項
此類別需配合CoreGeneralPort使用,確保正確的硬體初始化
警告
直接操作硬體暫存器,使用時需注意執行緒安全
參閱
CoreGeneralPort, hal::digital::GeneralPin

建構子與解構子說明文件

◆ CoreGeneralPin()

mcxa153::core::CoreGeneralPin::CoreGeneralPin ( const CoreGeneralPort & port,
unsigned int pin )

建構通用數位腳位物件

初始化GPIO腳位控制器,綁定到指定埠的特定腳位。 建構時會:

  • 設定硬體暫存器基底位址
  • 記錄腳位編號
  • 準備硬體訪問介面
參數
port通用GPIO埠物件參考,提供埠層級控制功能
pin腳位編號,指定要控制的具體腳位(通常0-31)
建構後腳位處於未定義狀態,需設定方向和模式
警告
腳位編號必須在埠支援範圍內,否則會導致未定義行為
參閱
CoreGeneralPort, setPinMode(), setDir()

◆ ~CoreGeneralPin()

virtual mcxa153::core::CoreGeneralPin::~CoreGeneralPin ( void )
overridevirtual

解構通用數位腳位物件

釋放腳位控制器相關資源。 解構時不會改變腳位的硬體狀態, 以避免影響其他可能使用該腳位的程序。

解構不會重設腳位為預設狀態
警告
確保在解構前適當處理腳位狀態

函式成員說明文件

◆ getDir()

virtual bool mcxa153::core::CoreGeneralPin::getDir ( void )
overridevirtual

取得腳位方向

讀取腳位的輸入/輸出方向設定。

傳回值
bool 腳位方向狀態
  • true: 輸出方向,腳位用於驅動外部負載
  • false: 輸入方向,腳位用於讀取外部信號
方向設定影響腳位的功能行為
參閱
setDir(), setInput(), setOutput()

實作 hal::digital::GeneralPin.

◆ getPinMode()

virtual hal::digital::GeneralPin::Mode mcxa153::core::CoreGeneralPin::getPinMode ( void )
overridevirtual

取得腳位模式

讀取目前腳位的工作模式設定。

傳回值
hal::digital::GeneralPin::Mode 目前的腳位模式
  • PUSH_PULL: 推輓輸出模式,可輸出高/低電平
  • OPEN_DRAIN: 開漏輸出模式,需外部上拉電阻
  • INPUT: 輸入模式,用於讀取外部信號
  • 其他硬體支援的特殊模式
模式影響腳位的電氣特性和驅動能力
參閱
setPinMode()

實作 hal::digital::GeneralPin.

◆ getValue()

virtual bool mcxa153::core::CoreGeneralPin::getValue ( void )
overridevirtual

讀取腳位邏輯值

讀取腳位目前的邏輯電平狀態。 可用於輸入或輸出模式:

  • 輸入模式:讀取外部信號電平
  • 輸出模式:讀取實際輸出電平
傳回值
bool 腳位的邏輯狀態
  • true: 高電平(邏輯1)
  • false: 低電平(邏輯0)

電平判定標準:

  • 高電平:通常>0.7*VDD
  • 低電平:通常<0.3*VDD
  • 中間電平:結果未定義
輸入模式需考慮信號的驅動能力和雜訊免疫
警告
浮接輸入可能產生不穩定讀值
參閱
setValue(), setInput(), setOutput()

實作 hal::digital::GeneralInput.

◆ setDir()

virtual void mcxa153::core::CoreGeneralPin::setDir ( bool dir)
overridevirtual

設定腳位方向

配置腳位為輸入或輸出方向。 方向變更會即時生效。

參數
dir方向設定
  • true: 設定為輸出方向
  • false: 設定為輸入方向
警告
輸出方向時需注意驅動電流限制
建議使用setInput()或setOutput()方法,語意更清晰

實作 hal::digital::GeneralPin.

◆ setHigh()

virtual void mcxa153::core::CoreGeneralPin::setHigh ( void )
overridevirtual

設定腳位為高電平

將輸出腳位設定為邏輯高電平(通常為VDD電壓)。 此操作使用原子性位元設定,不影響其他腳位。

僅在輸出模式下有效,輸入模式時操作無效果
警告
確保腳位已設定為輸出方向,否則可能無效
參閱
setLow(), setValue(), setOutput()

實作 hal::digital::GeneralOutput.

◆ setInput()

virtual void mcxa153::core::CoreGeneralPin::setInput ( void )
overridevirtual

設定腳位為輸入方向

將腳位配置為輸入模式,用於讀取外部信號。 輸入模式下腳位呈現高阻抗狀態。

輸入模式可搭配內部上拉/下拉電阻使用
參閱
setOutput(), getDir(), getValue()

實作 hal::digital::GeneralPin.

◆ setLow()

virtual void mcxa153::core::CoreGeneralPin::setLow ( void )
overridevirtual

設定腳位為低電平

將輸出腳位設定為邏輯低電平(通常為0V/GND)。 此操作使用原子性位元清除,不影響其他腳位。

僅在輸出模式下有效,輸入模式時操作無效果
警告
確保腳位已設定為輸出方向,否則可能無效
參閱
setHigh(), setValue(), setOutput()

實作 hal::digital::GeneralOutput.

◆ setOutput()

virtual void mcxa153::core::CoreGeneralPin::setOutput ( void )
overridevirtual

設定腳位為輸出方向

將腳位配置為輸出模式,用於驅動外部負載。 輸出模式下可控制腳位的電平狀態。

警告
輸出模式需注意電流驅動能力限制
參閱
setInput(), getDir(), setValue()

實作 hal::digital::GeneralPin.

◆ setPinMode()

virtual hal::digital::GeneralPin::Mode mcxa153::core::CoreGeneralPin::setPinMode ( hal::digital::GeneralPin::Mode mode)
overridevirtual

設定腳位模式

配置腳位的工作模式,影響其電氣特性。 模式變更會即時生效,可能影響連接的外部電路。

參數
mode要設定的腳位模式
  • PUSH_PULL: 推輓模式,適合LED控制
  • OPEN_DRAIN: 開漏模式,適合I2C等協定
  • INPUT: 輸入模式,用於信號檢測
傳回值
hal::digital::GeneralPin::Mode 實際設定的模式 通常與輸入參數相同,除非硬體不支援
警告
模式變更可能導致輸出電平改變
參閱
getPinMode(), setDir()

實作 hal::digital::GeneralPin.

◆ setToggle()

virtual void mcxa153::core::CoreGeneralPin::setToggle ( void )
overridevirtual

切換腳位電平狀態

反轉腳位的目前輸出電平:

  • 高電平→低電平
  • 低電平→高電平

此操作使用原子性位元切換,適合頻繁的狀態變更。

僅在輸出模式下有效
警告
切換前確保了解目前電平狀態
參閱
setHigh(), setLow(), getValue()

實作 hal::digital::GeneralOutput.

◆ setValue()

virtual void mcxa153::core::CoreGeneralPin::setValue ( bool level)
overridevirtual

設定腳位邏輯值

根據布林值設定腳位的輸出電平。 提供程序化的電平控制方式。

參數
level要設定的邏輯值
  • true: 設定為高電平
  • false: 設定為低電平
等效於條件性調用setHigh()或setLow()
參閱
setHigh(), setLow(), getValue()

實作 hal::digital::GeneralOutput.

資料成員說明文件

◆ vBase

void* const mcxa153::core::CoreGeneralPin::vBase

GPIO模組基底暫存器位址

指向GPIO硬體模組基底暫存器的常數指標。 用於直接訪問GPIO硬體控制暫存器:

  • 方向控制暫存器(DIR)
  • 資料暫存器(DATA)
  • 輸出暫存器(OUT)
此指標在物件生命週期內不可變更
警告
直接暫存器操作需謹慎,避免影響其他腳位

◆ vBasePort

void* const mcxa153::core::CoreGeneralPin::vBasePort

GPIO埠基底暫存器位址

指向特定GPIO埠基底暫存器的常數指標。 提供埠層級的硬體控制功能:

  • 埠資料暫存器
  • 埠方向暫存器
  • 埠中斷控制暫存器
與vBase配合使用,提供完整的硬體訪問能力
參閱
vBase

◆ vPin

const unsigned int mcxa153::core::CoreGeneralPin::vPin = 0

腳位編號

在GPIO埠中的腳位編號,範圍通常為0-31。 此編號對應:

  • 暫存器位元位置
  • 物理腳位編號
  • 中斷向量索引

腳位編號用途:

  • 位元遮罩計算(1 << vPin)
  • 暫存器位元操作
  • 硬體功能映射
腳位編號在物件建構時確定,不可變更
警告
編號超出有效範圍會導致未定義行為

此類別(class) 文件是由下列檔案中產生: