当前位置: 代码迷 >> 单片机 >> MSP 430的时钟初始化的有关问题,晶振不振
  详细解决方案

MSP 430的时钟初始化的有关问题,晶振不振

热度:79   发布时间:2016-04-28 16:03:12.0
MSP 430的时钟初始化的问题,晶振不振?
下面的程序是我的时钟初始化程序,但是有一个问题,那就是,每次系统运行,都会卡在while ()那里循环,不能向下继续执行,也就是说,检查晶振一直是异常的,但是我一点停止,然后点继续运行,它就可以运行下去了。也就是说,这时候时钟出错标志没有了。这个是为什么呢? 而且有时候用在别的主程序程序上又好像没有这个问题。

void Clock_Init(void)
{
//DIVA1,0=0:ACLK divider number=1
//XTS=0:LFXT1 low Freq. XT2OFF=0:XT2 Oscilator ON,XT5V=0: should always be reset
/*BCSCTL1 = DIVA_0 + RSEL2 + RSEL1 + RSEL0;//0Xx87;;
BCSCTL1 &=~ (XT2OFF + XTS + XT5V);
//SELM1,0=2:MCLK source select DCOCLK, DIVM1,0=0:MCLK divider number=1, 
//SELS=0: SMCLK resource select XT2CLK, DEIS1,0=0:SMCLK divider number=1
//DCOR=0: Internal resistor enable(DCO start)
BCSCTL2 = SELS + DIVS_0 + SELM_0 + DIVM_0;//0x08;
  */
  uint i;
  P11DIR = BIT2 + BIT1 + BIT0; // P11.2,1,0 to output direction
  P11SEL = BIT2 + BIT1 + BIT0; 
  P7SEL|=BIT0+BIT1;
  P5SEL |= BIT2 + BIT3; // 启动XT1 XT2
UCSCTL6&=~(XT1OFF+XT2OFF+XT2BYPASS);
UCSCTL6|=XT2DRIVE_3;
/*****************************************************************/
while (SFRIFG1 & OFIFG) // 等待时钟系统正常工作 

UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); //清各时钟出错标志位 
SFRIFG1 &= ~OFIFG; //清总时钟标志位 
//for(i = 0; i <100; i++); 
__delay_cycles(6000); 
}  
/*************************************************************/

UCSCTL4= SELM_5+ SELA_5 + SELS_5; // 设置时钟源  
UCSCTL0=0X0000;
UCSCTL1=0X0071;
UCSCTL2=0X0008;
UCSCTL3=0X0054;
//UCSCTL5|=DIVM__32;
}
 

------解决方案--------------------
好像我在用149的时候也有这个问题,后来不管它,只要正常运行的时候没有问题就不理了

  相关解决方案