如题,我运行下面的程序,一直在循环里面,出不来,而且XT2OF置位,存在失效条件,我该怎么设置啊
BCSCTL1 &= ~XT2OFF; //打开XT2
BCSCTL3 |= XT2S_3;
do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag 清楚振荡器失效标志位
for(i=1200;i>0;i–); // Time for flag to set 稳定时间
}while((IFG1 & OFIFG) == OFIFG);
BCSCTL2 |= SELM_2 + SELS; //选择时钟源为XT2CLK,并作为MCLK的时钟源
HG:
你试一下下面的例子
BCSCTL1 &= ~XT2OFF; // Activate XT2 high freq xtal BCSCTL3 |= XT2S_2; // 3 -16MHz crystal or resonator
do { IFG1 &= ~OFIFG; // Clear OSCFault flag for (i = 0xFF; i > 0; i–); // Time for flag to set } while (IFG1 & OFIFG); // OSCFault flag still set?
BCSCTL2 |= SELM_2; // MCLK = XT2 HF XTAL (safe)
你用过的是8M的晶振,BCSCTL3 |= XT2S_2而不是BCSCTL3 |= XT2S_3;
#define XT2S_0 (0x00) /* Mode 0 for XT2 : 0.4 – 1 MHz */#define XT2S_1 (0x40) /* Mode 1 for XT2 : 1 – 4 MHz */#define XT2S_2 (0x80) /* Mode 2 for XT2 : 2 – 16 MHz */#define XT2S_3 (0xC0) /* Mode 3 for XT2 : Digital input signal */
灰小子:
回复 HG:
楼上正解,很给力
外方爱:
回复 HG:
我试过,好像不行啊,我后面加了一个点灯,可是灯不亮啊,还是在循环里
灰小子:
回复 外方爱:
用示波器测量一下,是不是真的没起振?
外方爱:
回复 灰小子:
起振了,但IFG清除不了
外方爱:
回复 HG:
我知道什么原因了,是有的地方的电阻没有焊接好,我全部又点了一次,就好了