现象:F149带显示一块板,反复上下电,有上电不执行程序(凑巧出现 1-2次,表现是白屏无显示),如果1-2次不执行程序的过程中,马上上电,还是不执行,要过个几分钟,相当于电放光了,才可以执行程序。白屏,说明还没有执行到LCD初始化(程序还没到全屏显示),去测试了一下晶振,没起振,无波形。
然后监测VDD电压3.3V 及复位信号,当VDD电压低于0. 2V 时 在 0. 15-0. 17V之间 马上上电, 就会出现白屏无法启动这种情况(21 ic的一个问题给了莫大帮助)!用示波器看复位波形很不正常,问题得以重现。
//============================================================================================= // 函 数 名: InitBCM() - 时钟初始化 // 功 能: 确定晶体,采用背频方式,频率为460.8kHz,并外供。 // 调用函数: / // 入口参数: / // 出口参数: / // 全局变量: / // 备 注: / //============================================================================================= void InitBCM() { //"目前MCU板上是3.6864MHZ WDTCTL=WDTPW+WDTHOLD; //"Stop WDT BCSCTL1&=~(XTS+XT2OFF); //"ACLK不分频=XT2,XT2选选择高频晶体 do { uchar i; IFG1&=~OFIFG; //"Clear OSCFault flag for(i=0xFF;i>0;i--); //" Time for flag to set } while((IFG1&OFIFG)!= 0); //"OSCFault flag still set? BCSCTL2|=SELM1+SELS; //"MCLK = LFXT1 (safe) BCSCTL2|=(DIVM1+DIVM0+DIVS1+DIVS0); //"MCLK4分频 P5SEL|=BIT5; }