最近在测试DCO频率时 对于设置有一些疑问,请各位大神帮忙解释一下
我外部晶振XT2是8M的, 在测试产生 4M 8M 16M 32M MCLK时 发现产生8M的不正确,请问该如何配置呢?
UCSCTL1 和 UCSCTL0 关系不是很清楚啊
以下是代码
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
P7SEL |= BIT7;
P7DIR |= BIT7;//测量MCLK用
P5SEL |= BIT2+BIT3;
UCSCTL6 &= ~XT2OFF; //打开XT2
/*********************寄存器配置部分********************8M晶振**********/
/*16.47
__bis_SR_register(SCG0);
UCSCTL0 = 0x0000;
UCSCTL1 = DCORSEL_4; //DCO频率范围在28.2MHZ以下
UCSCTL2 = FLLD_0 + 1; //D=1,N=1
UCSCTL3 = SELREF_5 + FLLREFDIV_0; //n=1,FLLREFCLK时钟源为XT2CLK 8M;DCOCLK=D*(N+1)*(FLLREFCLK/n);
UCSCTL4 = SELM__DCOCLK; //MCLK的时钟源为DCOCLK
__bic_SR_register(SCG0); //Enable the FLL control loop
*/
__bis_SR_register(SCG0);
UCSCTL0 = 0x0000;
UCSCTL1 = DCORSEL_4; //DCO频率范围在28.2MHZ以下
UCSCTL2 = FLLD_0 + 1; //D=1,N=1
UCSCTL3 = SELREF_5 + FLLREFDIV_1; //n=2,FLLREFCLK时钟源为XT2CLK;DCOCLK=D*(N+1)*(FLLREFCLK/n);
UCSCTL4 = SELM__DCOCLK; //MCLK的时钟源为DCOCLK
__bic_SR_register(SCG0); //Enable the FLL control loop
while(1);
}