简单的程序:功能是配置DCO频率,在用定时中断,在中断中反转P1.6口,让LED闪烁,依此大概判断DCO是否成功配置
WDTCTL = WDTPW + WDTHOLD;
char i;
if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)
{
while(1);// 挂起
}
BCSCTL1 = CALBC1_1MHZ;
DCOCTL = CALDCO_1MHZ;// 设置DCO模式
BCSCTL3 |= LFXT1S_2+XT2S_1;
while(IFG1 & OFIFG)
{
IFG1 &= ~OFIFG; //清除OSCFault 标志
for(i= 0xff; i>0; i--); //延时,待稳定.
}
//__bis_SR_register(SCG1 + SCG0); 关闭DCO
BCSCTL2 |= SELM_0 + DIVM_0+SELS+DIVS_0;
P1DIR=0x41;
P1OUT=0x41;
TACCTL0=CCIE;
TAR=0;
TACCR0=1000;
TACTL=TASSEL_2+ID_0+MC_1;
_EINT();
之后修改程序中的时钟频率配置:
if (CALBC1_12MHZ ==0xFF || CALDCO_12MHZ == 0xFF)
{
while(1);// 挂起
}
BCSCTL1 = CALBC1_12MHZ;
DCOCTL = CALDCO_12MHZ;// 设置DCO模式
但是发现闪烁频率没变化 |