|
现在板子上只上了一个晶振,xt2接的是1.8432m的晶振。32k的没有接。下面是我的程序,不知道为什么,程序下载都没有问题,但是do while那个地方时而能过时而不能过,总的来说能过的机会要少一些。(dco状态是正常的)
大家帮忙分析下子?
#include <msp430x16x.h>
void main(void)
{
int i;
WDTCTL = WDTPW +WDTHOLD; // Stop Watchdog Timer
P5DIR |= 0x70; // P5.6,5,4 outputs
P5SEL |= 0x70; // P5.6,5,5 options,define as peripheral
DCOCTL = DCO0 + DCO1 + DCO2; // Max DCO=3.2M
//BCSCTL1=0x00;
/*BCSCTL1 = RSEL0 + RSEL1 + RSEL2; // XT2on, max RSEL
BCSCTL2 = SELS; // SMCLK = XT2,8M
do
{IFG1 &= ~OFIFG; //清OSCFault标志
for(i=0XFF;i>0;i--); //延时等待
}
while((IFG1 & OFIFG) != 0); //查OSCFault,为0时转换完成
*/
//时钟设置
BCSCTL1 &=~(XT2OFF+XTS); //启动XT2晶振,~XTS则ACLK采用低频时钟 32.768 kHz
BCSCTL2 |= SELM_2; //MCLK, XT2 8MHz
BCSCTL2 |= SELS; //SCLK, SELS XT2 8MHz
do //等待源转换完成
{
IFG1 &=~OFIFG;
for (i = 0xff; i > 0; i--) ;
}
while((IFG1 & OFIFG)!=0);
while(1)
{
}
}
谢过了,很是郁闷啊
|
|