7#ifndef MCXA153_008A1453_A242_4775_9606_2ED0FF5092CA
8#define MCXA153_008A1453_A242_4775_9606_2ED0FF5092CA
16#include "./../Status.h"
17#include "./../clock/AttachID.h"
18#include "./../clock/Div.h"
19#include "./../clock/FircTrimConfig.h"
20#include "./../clock/GateName.h"
21#include "./../clock/MonitorMode.h"
22#include "./../clock/Name.h"
23#include "./../clock/SelectName.h"
24#include "./../clock/SircTrimConfig.h"
25#include "./../clock/SircTrimMode.h"
26#include "./../clock/SircTrimSource.h"
27#include "./../mrcc/MRCC.h"
28#include "./../syscon/SYSCON.h"
88 virtual ~Clock(
void)
override =
default;
133 return (+attachID >> 16U);
154 volatile uint32 *pClkCtrl =
reinterpret_cast<volatile uint32 *
>(
160 if (reg_offset == REG_PWM0SUBCTL)
161 return (mcxa153::chip::mrcc::MRCC0.mrcc_glb_cc0_set &
165 return (*pClkCtrl & (1UL << bit_shift));
185 volatile uint32 *pClkCtrl =
reinterpret_cast<volatile uint32 *
>(
192 mcxa153::chip::syscon::SYSCON0.
clkunlock &=
195 if (reg_offset == REG_PWM0SUBCTL) {
196 mcxa153::chip::syscon::SYSCON0.
pwm0subctl |= (1UL << bit_shift);
200 *pClkCtrl = (1UL << bit_shift);
204 mcxa153::chip::syscon::SYSCON0.
clkunlock |=
226 volatile uint32 *pClkCtrl =
reinterpret_cast<volatile uint32 *
>(
233 mcxa153::chip::syscon::SYSCON0.
clkunlock &=
236 if (reg_offset == REG_PWM0SUBCTL) {
237 mcxa153::chip::syscon::SYSCON0.
pwm0subctl &= ~(1UL << bit_shift);
239 if (0U == (mcxa153::chip::syscon::SYSCON0.pwm0subctl & 0xFU)) {
244 *pClkCtrl = (1UL << bit_shift);
248 mcxa153::chip::syscon::SYSCON0.
clkunlock |=
MCXA153 微控制器時鐘管理系統
Definition mcxa153/src/mcxa153/chip/clock/Clock.h:68
static void disableClock(GateName clk)
停用指定 IP 的時鐘
Definition mcxa153/src/mcxa153/chip/clock/Clock.h:223
static mcxa153::chip::Status frohfTrimConfig(FircTrimConfig config)
設定 FROHF 微調參數
static bool enableUsbfsClock(void)
啟用 USB 全速時鐘
static mcxa153::chip::Status setupExtClocking(uint32 iFreq)
初始化外部振盪器時鐘到指定頻率
static uint32 getTraceClkFreq(void)
Return Frequency of Trace Clock.
static uint32 getCmpRRClkFreq(uint32 id)
Return Frequency of CMP Round Robin Clock.
static uint32 getLptmrClkFreq(void)
Return Frequency of LPTMR functional Clock.
static void enableClock(GateName clk)
啟用指定 IP 的時鐘
Definition mcxa153/src/mcxa153/chip/clock/Clock.h:182
static uint32 getAdcClkFreq(void)
Return Frequency of Adc Clock.
static uint32 getLpi2cClkFreq(void)
Return Frequency of LPI2C0 functional Clock.
static mcxa153::chip::Status setupFRO16KClocking(uint8 clk_16k_enable_mask)
初始化 FRO16K 時鐘
static uint32 getOstimerClkFreq(void)
Return Frequency of OSTIMER.
virtual ~Clock(void) override=default
虛擬解構函式
static uint32 getCoreSysClkFreq(void)
取得核心系統時鐘頻率
static uint32 getClkoutClkFreq(void)
Return Frequency of CLKOUT Clock.
static mcxa153::chip::Status setupFROHFClocking(unsigned int iFreq)
初始化高速內部參考時鐘 (FROHF) 到指定頻率
static void setSysOscMonitorMode(MonitorMode mode)
設定系統振盪器監控模式
static AttachID getClockAttachId(AttachID connection)
取得實際時鐘連接 ID
static uint32 getWwdtClkFreq(void)
Return Frequency of Systick Clock.
static mcxa153::chip::Status setupExtRefClocking(uint32 iFreq)
初始化外部參考時鐘到指定頻率
static uint32 getLpspiClkFreq(uint32 id)
Return Frequency of LPSPI functional Clock.
static uint32 getCTimerClkFreq(uint32 id)
取得 CTimer 功能時鐘頻率
static mcxa153::chip::Status setupFRO12MClocking(void)
初始化 FRO12M 時鐘
static uint32 getSystickClkFreq(void)
Return Frequency of Systick Clock.
static void haltClockDiv(Div div_name)
停止時鐘分頻器
static constexpr uint32 ATTACH_REG_OFFSET(AttachID attachID)
計算時鐘附加暫存器偏移量
Definition mcxa153/src/mcxa153/chip/clock/Clock.h:132
static void setClockSelect(SelectName sel_name, uint32 value)
設定時鐘選擇器值
static uint32 getClockDiv(Div div_name)
取得時鐘分頻器值
static mcxa153::chip::Status fro12MTrimConfig(SircTrimConfig config)
設定 FRO 12M 微調參數
static void setClockDiv(Div div_name, uint32 value)
設定外設時鐘分頻器
static bool getClockStatus(GateName clk)
取得指定時鐘閘的狀態
Definition mcxa153/src/mcxa153/chip/clock/Clock.h:151
static void attachClock(AttachID connection)
配置時鐘選擇多工器
static uint32 getFreq(Name clockName)
取得指定時鐘的頻率
static uint32 getLpuartClkFreq(uint32 id)
Return Frequency of LPUART functional Clock.
static uint32 getClockSelect(SelectName sel_name)
取得時鐘選擇器值
static uint32 getCmpFClkFreq(uint32 id)
Return Frequency of CMP Function Clock.
static uint32 getI3CFClkFreq(void)
取得 I3C FCLK 頻率
Definition NonInstantiable.h:29
時鐘源附加識別碼枚舉
Definition AttachID.h:33
AttachID
Definition AttachID.h:81
uint32 getGateNameOffset(const GateName _this)
獲取閘門名稱的偏移量
Definition GateName.h:32
SelectName
MCXA153 晶片的時鐘選擇枚舉 此枚舉定義了所有可用於各個外設的時鐘選擇
Definition SelectName.h:46
Name
MCXA153晶片時鐘來源列舉
Definition Name.h:46
GateName
時鐘門控命名列舉
Definition GateName.h:58
MonitorMode
系統振盪器監視器模式設定
Definition MonitorMode.h:44
uint32 getGateNameShift(const GateName _this)
獲取閘門名稱的位移值
Definition GateName.h:41
Div
MCXA153 時鐘分頻器位址枚舉
Definition Div.h:58
@ GLB_CC0_FLEXPWM0
MRCC_GLB_CC0 - FLEXPWM0.
Clock
Frequency Measurement Reset Control.
@ CLKUNLOCK_UNLOCK
CLKUNLOCK - UNLOCK.
Status
Definition Status.h:221
Definition FircTrimConfig.h:41
Definition SircTrimConfig.h:39
__O uint32 mrcc_glb_cc0_set
AHB 時脈控制設定暫存器 0 (偏移: 0x44,唯寫)
Definition mrcc/Register.h:102
__O uint32 mrcc_glb_cc0_clr
AHB 時脈控制清除暫存器 0 (偏移: 0x48,唯寫)
Definition mrcc/Register.h:109
__IO uint32 pwm0subctl
PWM0 Submodule Control Register (PWM0子模組控制寄存器)
Definition syscon/Register.h:524
__IO uint32 clkunlock
CLKUNLOCK[0x3FC] <RW>
Definition syscon/Register.h:285