MC_CGM.AC3_SC.B.SELCTL = 0b1;
MC_CGM.AC4_SC.B.SELCTL = 0b01;
首先以上两条程序分别为pll0和PLL1分配时钟源(分为外部晶振和内部晶振16MHz)
PLLDIG.PLL0DV.B.RFDPHI1 = 8;
PLLDIG.PLL0DV.B.RFDPHI = 2;
PLLDIG.PLL0DV.B.PREDIV = 1;
PLLDIG.PLL0DV.B.MFD = 8;
fPLL0_PHI=fPLL0_refPLL0DV[MFD]/(PLL0DV[PREDIV]PLL0DV[RFDPHI])=40MHz8/(12)=160MHz
fPLL0_PHI1=fPLL0_refPLL0DV[MFD]/(PLL0DV[PREDIV]PLL0DV[RFDPHI1])=40MHz8/(18)=40MHz
分频求出PLL0_PHI和PLL0_PHI1的具体频率
PLLDIG.PLL1DV.B.RFDPHI = 2;
PLLDIG.PLL1DV.B.MFD = 16;
分频求出PLL1_PHI的频率
MC_ME.DRUN_MC.R = 0x001300F2; 进入模式并使能所有模块并且确定系统时钟【MVRON=1,FLAON=11,PLL1ON=1,PLL0ON=1,XOSCON=1,IRCON=1,SYSCLK=primary PLL(PLL0_PHI)】
MC_ME.MCTL.R = 0x30005AF0; // TARGET_MODE=DRUN,KEY=0x5AF0
MC_ME.MCTL.R = 0x3000A50F; // TARGET_MODE=DRUN,KEY=0xA50F
while(MC_ME.GS.B.S_MTRANS == 1); 等待模式转换完成
以下为配置外围时钟,时钟源是系统时钟
MC_CGM.SC_DC0.B.DIV = 3; // Freq = sysclk / (3+1) = 160MHz/4 = 40M

本文详细解析了嵌入式系统中PLL时钟源的配置过程,包括PLL0和PLL1的时钟源分配、频率计算及外围模块时钟的设置。通过具体的寄存器操作,展示了如何实现系统时钟的精确控制。
最低0.47元/天 解锁文章
5470

被折叠的 条评论
为什么被折叠?



