MSP430F149单片机有多个时钟源,上电后默认的系统主时钟是内部800KHz的DCO,如何切换为尾部晶体振荡器,需要注意的是如果切换不成功,便会使CPU失去时钟,那样会导致系统卡死,因此要不断查询,时钟失效的标志位,以下为IAR环境下程序:
#include<msp430x14x.h>
int main( void )
{
unsigned char i;
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
P5SEL |= BIT4; //设置P5.4为
P5DIR |= BIT4;
BCSCTL1 &= ~XT2OFF; //打开外部高频晶体振荡器
do{
IFG1 &= ~OFIFG; //先清零震荡失效标志位
for(i=0;i<255;i++);
}while((IFG1 & OFIFG)); //待延时之后再查询振荡失效标志位,如果没有失效则立刻跳出
BCSCTL2 |= SELM_2;//选择外部高频晶体振荡器
// BCSCTL1 |=
while(1);
return 0;
}
#include<msp430x14x.h>
int main( void )
{
unsigned char i;
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
P5SEL |= BIT4; //设置P5.4为
P5DIR |= BIT4;
BCSCTL1 &= ~XT2OFF; //打开外部高频晶体振荡器
do{
IFG1 &= ~OFIFG; //先清零震荡失效标志位
for(i=0;i<255;i++);
}while((IFG1 & OFIFG)); //待延时之后再查询振荡失效标志位,如果没有失效则立刻跳出
BCSCTL2 |= SELM_2;//选择外部高频晶体振荡器
// BCSCTL1 |=
while(1);
return 0;
}