/******************************************************************/
void Init_Clk( void )
{
WDTCTL = WDTPW + WDTHOLD; // 关看门狗
BCSCTL3 |= XT2S_2; // XT2频率范围设置
BCSCTL1 &= ~XT2OFF; // 打开XT2振荡器
do
{
IFG1 &= ~OFIFG; // 清振荡器失效标志
BCSCTL3 &= ~XT2OF; // 清XT2失效标志
for( uint i = 0x47FF; i>0; i-- ); // 等待XT2频率稳定
}while (IFG1 & OFIFG); // 外部时钟源正常起动了吗?
BCSCTL2 |= SELM_2 + SELS ; // 设置MCLK、SMCLK为XT2
}
程序总死在for那里,外部晶振不需要接吧?求指导 我菜鸟哦
楼主你要确定是否接了外部晶振,如果起动内部8M的晶振的话。
试试这个程序怎么样。
void Init_Clk()
{
unsigned int i;
WDTCTL=WDTPW+WDTHOLD; //关闭看门狗;
BCSCTL1&=~XT2OFF; //打开XT2振荡器;
do
{
IFG1&=~OFIFG; // 清除振荡器失效标志;
for(i=0xff;i>0;i--); // 延时,等待XT2起振;
}
while ((IFG1&OFIFG)!=0); // 判断XT2是否起振;
BCSCTL2|=SELM_2+SELS; //选择MCLK、SMCLK为XT2;
}