#include "MSP430F5438A.h"
void init_clock(void);
void init_uart3(void);
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
init_clock();
init_uart3();
__bis_SR_register(LPM0_bits + GIE); //enter LPM0,interrupt enabled
__no_operation();
}
void init_clock(void)
{
unsigned int i;
WDTCTL = WDTPW + WDTHOLD;
P11DIR = BIT0 + BIT2 + BIT4;
P11SEL |=BIT0 + BIT2 + BIT4;
P5SEL |=0x0C;//director:选择外部时钟(port select XT2)
UCSCTL6 &=~ XT2OFF; //director:enable XT2 if not used
UCSCTL3 |= SELREF_2; //director:FLLref = REFO
UCSCTL4 |= SELA__XT2CLK;//director:ACLK from XT2 4M
UCSCTL4 |= SELS_5 + SELM_5;//director:SMCLK=MCLK=XT2=4M
_NOP();
UCSCTL5 = DIVM_2 + DIVS_4 + DIVA_4;//director:XT2-4M,SMCLK-1M,ACLK-1M;
do
{
UCSCTL7 &=~ (XT2OFFG + XT1LFOFFG + DCOFFG);//clear XT2,XT1,DCO fault flags
SFRIFG1 &=~ OFIFG;//director:Clear fault flags
for(i=0;i<0xFFFF;i++);//director:wait for Osc to stabilize
}while(SFRIFG1&OFIFG);//director:test Osc fault flag
}