您好,
我已经使用外部晶振12MHz (XT2)配置了 MCLK、SMCLK 的8MHz 和我配置了 XT1 (32KHz、RTC 时钟),但它不工作,它也在时钟故障状态下失败。 由于此 RTC 也无法正常工作,所以我使用此时钟作为 RTC 的时钟。 请在下面检查时钟配置。
空设置时钟(空)
{
P7SEL |= BIT2 + BIT3;//XT2IN、XT2OUT
UCSCTL3 |= SELREF_5 | FLLREFDIV_4;//设置 DCO FLL 基准= XT2并除以4
UCSCTL4 |= SELA_0 | SELESS_DCOCLK | SELM_DCOCLK;//设置 ACLK = XT1
_bis_SR_register (SCG0);//禁用 FLL 控制循环
UCSCTL0 = 0x0000;//设置可能的最低 DCOx、MODx
UCSCTL1 = DCORSEL_5;//为 DCO 范围16MHz 运行选择5
UCSCTL2 = FLLD_1 + 7;//将 DCO 乘法器设置为8MHz
//(N + 1)* FLLRef = Fdco
//(7 + 1)* 1M = 8MHz
//设置 FLL Div = fDCOCLK/2
// UCSCTL5 |= DIVS_1;
_BIC_SR_register (SCG0);//启用 FLL 控制环路
UCSCTL6 &=~(XT2OFF |XT1OFF);
UCSCTL6 |= XT2DRIVE_2 | XCAP_3 | XT1DRIVE_3;
UCSCTL6 &=~(XTS);
//32 x 32 x 8 MHz/1MHz = 8192 = DCO 稳定的 MCLK 周期
_delay_cycles (8192);
//循环直到 XT1、XT2和 DCO 故障标志被清除
操作
{
UCSCTL7 &=~(XT2OFFG + XT1LFOFFG);
//清除 XT2、XT1、DCO 故障标志
SFRIFG1 &=~OFIFG;//清除故障标志
} while (UCSCTL7 & OFIFG);//测试振荡器故障标志
}
注意:故障标志不会被清除,因此它会进入循环内部。 尽快检查我