程序部分:
…………(初始化UART、DS1302,TFT屏幕等)
while(1)
{
DS1302_getT(gettime); //获得当前时间
TimeChange(gettime); //更新时间
KeyRead(); //按键扫描
KeySet(); //按键处理(当有按键按下时,将Begin置1)
while(Begin)
{
DS1302_Stop();
AdcInit(PA0,0X00); //adc initial,AND start ADC,ADC0(PA0)
timer_init();
Begin++;
while(Begin==2)
{
ShowWave(); //显示波形
}
}
}
先说说我的程序:
以上是我的主程序的主循环部分。一开始进入主循环,显示时间。当按键按下之后将Begin置1,进入第二个while循环:关闭DS1302,初始化AD及定时器,然后进入最后一个while循环,这个while里面一直运行ShowWave()程序,即把AD采回来的数据通过UART(波特率115200)传送到TFT屏幕显示采样信号的波形(相当于一个简单的示波器)。
问题:当去除掉DS1302的时间部分时,ShowWave()能很好地运行,在屏幕上显示3Hz以内的波形不是问题。但是加入DS1302的时间显示部分后,系统一运行到ShowWave()处便立即复位了……弄了很久了也没想明白,也没找到原因。ShowWave() 部分只是在通过串口发数据,实在是找不到复位的理由。
还有个问题是,当我在main函数里定义一个数组的时候,程序一运行便不停地复位……而把这个数组定义为全局变量程序便可以正常运行……我是初学者,上面的情况太诡异了,从来没见到过,也不知从何入手去解决问题。都两天了程序没有一点进展。
请各位各抒己见,帮帮我吧~~ |