打印

请大家帮我看看这个诡异的程序~

[复制链接]
1487|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Metalor|  楼主 | 2010-8-22 13:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AD, While, TI, dc, ge
程序部分:

    …………(初始化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函数里定义一个数组的时候,程序一运行便不停地复位……而把这个数组定义为全局变量程序便可以正常运行……我是初学者,上面的情况太诡异了,从来没见到过,也不知从何入手去解决问题。都两天了程序没有一点进展。

请各位各抒己见,帮帮我吧~~

相关帖子

沙发
Metalor|  楼主 | 2010-8-22 14:01 | 只看该作者
补充:(上面说的有点复杂了,解决问题可能主要还是看以下的部分吧)
以下是DS1302的初始化部分:

DS1302_portinit();                        //初始化DS1302的三根数据线
DS1302_init();                        //启动振荡器,DS1302开始工作
DS1302_setT(settime);                //设置初始时间

去掉DS1302_setT(settime)这个函数之后,ShowWave() 也是可以正常运行的~~
以下是DS1302_setT(settime)的程序:


/*******************************************
函数名称: DS1302_setT
功    能: 设置DS1302的时间
参    数: ptTimeD--设置时间数组指针
返回值  : 无
*******************************************/
void DS1302_setT(uchar ptTimeD[])
{
    uchar i;
    uchar addr = 0x80;                                    //写入地址从秒寄存器开始
    DS1302_writeD(C_WP|WR,UPROTECT);              //控制命令,WP位为0,允许写操作
    delay_ms(6);
    for(i=0;i<7;i++)
    {
        DS1302_writeD(addr|WR,ptTimeD[i]);        // 秒 分 时 日 月 星期 年
        addr+=2;
        delay_ms(2);
    }
    DS1302_writeD(C_WP|WR,PROTECT);                  //控制命令,WP位为1,不允许写操作
}

使用特权

评论回复
板凳
Metalor|  楼主 | 2010-8-22 15:55 | 只看该作者
问题解决了~哈哈
都没人回我,心凉ing……

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

224

帖子

1

粉丝