MSP 430的时钟初始化的问题。

下面的程序是我的时钟初始化程序,但是有一个问题,那就是,每次系统运行,都会卡在while()那里循环,不能向下继续执行,也就是说,检查晶振一直是异常的,但是我一点停止,然... 下面的程序是我的时钟初始化程序,但是有一个问题,那就是,每次系统运行,都会卡在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;
}
展开
 我来答
nmaf698
2011-05-25 · TA获得超过658个赞
知道小有建树答主
回答量:880
采纳率:0%
帮助的人:468万
展开全部

dowhile 是检测OFIFG振荡器标志失效位是否存在
不为0既是1表示存在则继续do,一直的清除直到为0,
振荡器失效标志不存在。说明起震了。
不知道你是怎么运行的,我模拟了下没有问题
如果连上硬件一直在do while 里
你检查下起震了么?
意法半导体(中国)投资有限公司
2023-06-12 广告
STM32是一种由意法半导体(STMicroelectronics)公司设计和生产的单片机系列,广泛用于嵌入式系统、物联网(IoT)设备、汽车电子、工业自动化等领域。STM32具有以下优点:1. 低功耗:STM32单片机通常具有较低的功耗,... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
mc_wangbo
2011-05-25 · TA获得超过1368个赞
知道小有建树答主
回答量:825
采纳率:0%
帮助的人:256万
展开全部
硬件电路没错吗?问一下XT1、XT2接的多少M的晶振? 时钟初始化前面加上
UCSCTL3 |= SELREF_2; // FLLref = REFO
// Since LFXT1 is not used,
// sourcing FLL with LFXT1 can cause
// XT1OFFG flag to set
UCSCTL4 |= SELA_2; // ACLK=REFO,SMCLK=DCO,MCLK=DCO
试试
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式