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

MCXA153 周邊模組重設控制靜態工具類別 更多...

#include <Reset.h>

類別mcxa153::chip::reset::Reset的繼承圖:
ufm::lang::NonInstantiable ufm::lang::Object ufm::lang::Interface

靜態公開方法(Static Public Methods)

static void setPeripheralReset (Control peripheral)
 Assert reset to peripheral.
 
static void clearPeripheralReset (Control peripheral)
 Clear reset to peripheral.
 
static void peripheralReset (Control peripheral)
 Reset peripheral module.
 
static void releasePeripheralReset (Control peripheral)
 Release peripheral module.
 

保護方法(Protected Methods)

virtual ~Reset (void) override=default
 Destroy the object.
 
- 保護方法(Protected Methods) 繼承自 ufm::lang::NonInstantiable
 NonInstantiable (void)=delete
 禁止實例化 NonInstantiable 類別
 
 NonInstantiable (const NonInstantiable &)=delete
 禁止複製建構函式
 
virtual ~NonInstantiable (void) override=default
 Destroy the Non Instantiable object.
 
NonInstantiableoperator= (const NonInstantiable &)=delete
 
NonInstantiableoperator= (NonInstantiable &&)=delete
 

額外的繼承成員

- 公開方法(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
 虛擬析構函式
 

詳細描述

MCXA153 周邊模組重設控制靜態工具類別

Reset 類別提供 MCXA153 微控制器周邊模組重設控制的完整操作介面。 此類別設計為靜態工具類別,無法實例化,所有功能均透過靜態函數提供, 用於管理系統中各個周邊模組的重設狀態,包括重設斷言、重設釋放、 模組重設和重設狀態管理等核心系統初始化和錯誤恢復功能。

主要功能模組包括:

周邊模組重設管理:

  • 重設斷言 (setPeripheralReset):將指定周邊模組置於重設狀態
  • 重設釋放 (clearPeripheralReset/releasePeripheralReset):釋放重設信號,允許模組運行
  • 完整重設 (peripheralReset):執行完整的模組重設序列
  • **狀態控制**:精確控制各個周邊模組的重設狀態

重設控制機制:

  • **編碼化控制**:使用 Control 枚舉包含重設暫存器和位元位置資訊
  • **原子操作**:每個重set操作都是原子性的,確保系統穩定性
  • **精確定位**:通過編碼直接定位到特定的重設暫存器位元
  • **安全控制**:防止意外重設關鍵系統組件

支援的周邊模組類型:

通訊介面模組:

  • LPI2C0, LPI2C1, LPI2C2, LPI2C3 (低功耗 I2C 控制器)
  • LPSPI0, LPSPI1 (低功耗 SPI 控制器)
  • LPUART0, LPUART1, LPUART2, LPUART3, LPUART4 (低功耗 UART)
  • I3C0 (改進式串列通訊), USB0, FlexCAN0

計時器和 PWM 模組:

  • CTIMER0, CTIMER1, CTIMER2, CTIMER3, CTIMER4 (通用計時器)
  • OSTIMER0 (作業系統計時器), UTICK0 (微秒計時器)
  • FlexPWM0, FlexPWM1 (靈活脈寬調變控制器)
  • FREQME (頻率量測), WWDT0 (視窗看門狗)

類比和混合信號模組:

  • ADC0, ADC1 (類比數位轉換器)
  • DAC0 (數位類比轉換器)
  • CMP0, CMP1 (類比比較器)
  • OPAMP0 (可程式運算放大器)

數位 I/O 和控制模組:

  • GPIO0, GPIO1, GPIO2, GPIO3, GPIO4 (通用輸入輸出)
  • PORT0, PORT1, PORT2, PORT3, PORT4 (埠控制器)
  • FlexIO0 (可程式數位 I/O)
  • QDC0, QDC1 (正交解碼器)

系統和支援模組:

  • DMA (直接記憶體存取控制器)
  • CRC0 (循環冗餘檢查)
  • EIM0 (錯誤注入模組), ERM0 (錯誤報告模組)
  • AOI0, AOI1 (與或反邏輯閘)
  • INPUTMUX0 (輸入多工器)

重設操作類型:

重設斷言 (Assert Reset):

  • 將目標周邊模組強制進入重設狀態
  • 停止模組的所有操作和時鐘
  • 將模組暫存器重設為預設值
  • 適用於模組初始化前的準備

重設釋放 (Release Reset):

  • 釋放重設信號,允許模組開始運行
  • 恢復模組的正常操作能力
  • 必須在時鐘啟用後執行
  • 是模組初始化的關鍵步驟

完整重設 (Complete Reset):

  • 執行完整的重設序列(斷言→等待→釋放)
  • 確保模組完全重新初始化
  • 清除所有內部狀態和暫存資料
  • 適用於錯誤恢復和重新配置

系統初始化流程:

  1. **時鐘啟用**:在 MRCC 中啟用目標模組的時鐘
  2. **重設釋放**:使用本類別釋放模組重設
  3. **模組配置**:配置模組的具體工作參數
  4. **功能啟用**:啟動模組的具體功能

錯誤恢復流程:

  1. **停用功能**:停止模組的當前操作
  2. **執行重設**:使用 peripheralReset 完全重設模組
  3. **重新配置**:重新設定模組參數
  4. **恢復運行**:重新啟動模組功能

Control 枚舉編碼:

  • 包含重設暫存器的基址資訊
  • 包含目標位元在暫存器中的位置
  • 提供型別安全的模組識別方式
  • 簡化重設控制的程式設計介面

與 MRCC 的關係:

  • Reset 類別控制重設信號的斷言和釋放
  • MRCC 類別控制時鐘的啟用和停用
  • 正確的初始化順序:時鐘啟用 → 重設釋放 → 模組配置
  • 協調的關閉順序:功能停用 → 重設斷言 → 時鐘停用

程式設計模式:

  • **狀態管理**:明確控制模組的重設狀態轉換
  • **錯誤處理**:提供可靠的模組重設和恢復機制
  • **初始化模式**:標準化的系統模組初始化流程
  • **資源管理**:配合時鐘管理實現完整的資源控制

使用範例:

// 完整的模組初始化流程 (以 LPUART0 為例)
// 1. 啟用時鐘 (在 MRCC 中)
MRCC0.GLB_CC0_SET = MRCC::GLB_CC0_SET_DATA(MRCC::GLB_CC0_LPUART0(1));
// 2. 釋放重設
Reset::releasePeripheralReset(Control::kLPUART0);
// 3. 配置 LPUART0 參數 (波特率、格式等)
// ... LPUART 配置代碼 ...
// 錯誤恢復範例
if (uart_error_detected) {
// 完全重設模組
Reset::peripheralReset(Control::kLPUART0);
// 重新配置模組
// ... 重新配置代碼 ...
}
// 系統關閉時的清理
Reset::setPeripheralReset(Control::kLPUART0); // 重設斷言
// 然後在 MRCC 中停用時鐘
static void setPeripheralReset(Control peripheral)
Assert reset to peripheral.
static void releasePeripheralReset(Control peripheral)
Release peripheral module.
Definition Reset.h:263
static void peripheralReset(Control peripheral)
Reset peripheral module.
此類別繼承自 NonInstantiable,無法建立實例
重設操作必須與時鐘管理協調進行,錯誤的順序可能導致系統不穩定
某些關鍵系統模組的重設可能影響整個系統運行,需要謹慎操作
重設釋放後,模組暫存器將回復到硬體預設值,需要重新配置
在中斷服務程序中進行重設操作需要特別小心,避免影響系統穩定性
DMA 相關模組的重設可能影響正在進行的資料傳輸,需要適當的同步
作者
ZxyKira
日期
2020
版本
1.0
參閱
Control 周邊模組重設控制枚舉定義
MRCC 模組重設和時鐘控制器類別
各個周邊模組的具體控制類別

函式成員說明文件

◆ clearPeripheralReset()

static void mcxa153::chip::reset::Reset::clearPeripheralReset ( Control peripheral)
static

Clear reset to peripheral.

Clears reset signal to specified peripheral module, allows it to operate.

參數
peripheralClear reset to this peripheral. The enum argument contains encoding of reset register and reset bit position in the reset register.

◆ peripheralReset()

static void mcxa153::chip::reset::Reset::peripheralReset ( Control peripheral)
static

Reset peripheral module.

Reset peripheral module.

參數
peripheralPeripheral to reset. The enum argument contains encoding of reset register and reset bit position in the reset register.

◆ releasePeripheralReset()

static void mcxa153::chip::reset::Reset::releasePeripheralReset ( Control peripheral)
inlinestatic

Release peripheral module.

Release peripheral module.

參數
peripheralPeripheral to release. The enum argument contains encoding of reset register and reset bit position in the reset register.

◆ setPeripheralReset()

static void mcxa153::chip::reset::Reset::setPeripheralReset ( Control peripheral)
static

Assert reset to peripheral.

Asserts reset signal to specified peripheral module.

參數
peripheralAssert reset to this peripheral. The enum argument contains encoding of reset register and reset bit position in the reset register.

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