//======================== MCU时钟初始化 ==========================
//ACLK = LFXT1 = 32kHz, SMCLK = HF or default DCO, MCLK = HF or default DCO
void MCU_init()
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
// Enable XT1
P5SEL |= BIT4+BIT5; // Port select XT1
UCSCTL6 &= ~(XT1OFF); // XT1 On
UCSCTL6 |= XCAP_3; // Internal load cap 12pF,参考F5xx用户手册Page91 & Page108
// Enable XT2,需要外部负载电容
P5SEL |= BIT2+BIT3; // Port select XT2
UCSCTL6 &= ~XT2OFF; // Set XT2 On
// Loop until XT1、XT2 & DCO stabilizes
do
{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
// Clear XT2,XT1,DCO fault flags
SFRIFG1 &= ~OFIFG; // Clear fault flags
}while (SFRIFG1&OFIFG); // Test oscillator fault flag
UCSCTL6 &= ~(XT1DRIVE_3); // Xtal is now stable, reduce drive strength
UCSCTL6 &= ~XT2DRIVE0; // Decrease XT2 Drive according to expected frequency
// 参考F5xx用户手册Page108,目前设置为24~32MHz
UCSCTL4 |= SELA_0 + SELS_5 + SELM_5; // Select ACLK=XT1,SMCLK=XT2 or DCO,MCLK for XT2 or DCO
}