TI中文支持网
TI专业的中文技术问题搜集分享网站

请教一个关于msp430f149自动停止的问题。

我用的是模拟I2C连接msp430f149和ADS1115,然后采集电压显示在12864上,但是我这里出现一个奇怪的现象,就是程序再运行一段时间之后,单片机会自动停止,12864上面显示的电压值不再变化了,然后需要人工复位或者重新上电才能恢复运行。我开始怀疑是程序的问题,调试了好半天。然后我自己试着写了一个闪烁灯在while里面作为mcu运行的标志,发现LED会卡住,所以判断是单片机停止了,不知道该怎么解决,下面贴出主函数,希望能得到高人指点。

#include  <msp430x14x.h>

 #include "ADS1115.h"

#include "HB12864.h"

#include <stdio.h>

 #define uchar unsigned char

#define uint  unsigned int

void Delays(void);

void PutString(uchar *ptr);

uchar dianya[7];

 /********************主函数**********************/

 void main(void)

{      

 uchar i;    

float temp;    

int num;    

WDTCTL = WDTPW + WDTHOLD;                 // 关狗    

BCSCTL1 &= ~XT2OFF;                 //打开XT2高频晶体振荡器    

do    

{      

IFG1 &= ~OFIFG;                 //清除晶振失败标志      

for (i = 0xFF; i > 0; i–);     //等待8MHz晶体起振    

}    

 while ((IFG1 & OFIFG));             //晶振失效标志仍然存在?    

BCSCTL2 |= SELM_2 + SELS;           //MCLK和SMCLK选择高频晶振*/    

P2DIR=BIT2+BIT3;    

 P2OUT|=BIT2|BIT3;      

Pin_Init();   //LCD引脚初始化 

Lighton();    //打开LCD背光灯

clearscreen();     //LCD清屏

while(1)    

{            

 temp=ADS1115();   //取得1115采样值     

sprintf(dianya,"%g",temp);        

display(dianya,1,0);    //显示    

 Delays();Delays();        

 P2OUT^=(BIT2+BIT3);    

 }

 }

 /******************************************* 函数名称:Delays 功    能:延时一会 参    数:无 返回值  :无 ********************************************/

 void Delays(void)

 {    

 uchar i=20;    

uint j;    

while(i–)    

 {            

 j=2000;            

 while(j–);    

}

}

Triton Zhang:

如果这个问题出现频率很高,再现这个问题,不要忙着复位或断电, 用示波器的管脚点下接晶体的那两个管脚,测试下是否晶体有停振。

有时候只要示波器的管脚一碰晶体的管脚就能恢复,那多半是晶体的负载电容不对造成的。

bo zhou1:

回复 Triton Zhang:

发现一个奇怪的现象,在程序正常运行的时间里,如果用示波器去触碰一下晶体引脚会导致单片机马上停止,难道单片机本身不会自动恢复运行么?以前用51单片机的时候,触碰晶体虽然也会导致运行不正常,但是当拿开之后,单片机又会恢复正常运行状态。

而且按照你的方法,我在它停止的时候用示波器打了一下晶体的频率,发现它根本没起振,当然拿开之后也不能使它恢复振荡。更让我捉摸不透的还是,当我用内部DCO振荡器也会出现一样的情况,也就是程序运行一会儿单片机卡死。

使用内部振荡器也会出现这样的问题。

我整个人都快崩溃了。。。。

bo zhou1:

回复 Hardy Hu:

我换用了内部DCO,问题还是存在。难道真的是程序问题,但是不应该啊,一个液晶12864显示和1115采集才占用多大点ram啊。。。

bo zhou1:

回复 Hardy Hu:

问题已经解决,确实是堆栈溢出的问题,非常感谢。

赞(0)
未经允许不得转载:TI中文支持网 » 请教一个关于msp430f149自动停止的问题。
分享到: 更多 (0)