#include
#include"XT2.h"
#define uint unsigned int
#define uchar unsigned char
void initsys()//XT2时钟初始化
{
uchar k;
P5SEL |= BIT2+BIT3; // P5.2和P5.3是 XT2 脚,24MHz晶振
UCSCTL6 &= ~(XT2OFF);//开启XT2晶振
UCSCTL3 |= SELREF_2; // FLLref = REFO
UCSCTL4 |= SELA_2; // ACLK=REFO,SMCLK=DCO,MCLK=DCO
do
{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);//清除TX1,XT2和DCO振荡标志
SFRIFG1&=~OFIFG;//清除振荡器失效标志,清除中断标志
for(k=0xff;k>0;k--)//延时
{;}
}
while((SFRIFG1&OFIFG)!=0);//判断XT2是否起振,等待时钟系统正常工作
UCSCTL6 = XT2DRIVE1 + XT2DRIVE0; //驱动晶振的能力是24M到32M
UCSCTL4 |= SELS_5 + SELM_5+SELA_0; //SELA=XT1(32768Hz), SMCLK=MCLK=XT2(24MHz),CPU时钟(MCLK)为24MHz
UCSCTL5 |= DIVS__4+DIVM__8+DIVA__1; //f(SMCLK)/4,24MHz 4分频为6MHz==高速外围时钟(SMCLK)
}//初始化 //f(MCLK)/8,24MHz 8分频为3MHz==CPU时钟(MCLK)
//f(ACLK)/1,32768Hz 1分频为32768Hz==低速外设(ACLK)