打印
[ZLG-ARM]

求助,函数调用的问题(easyarm2114遇到的问题)

[复制链接]
1279|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fengboy|  楼主 | 2007-4-20 19:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的是周立功公司的easyarm2114,ADS1.2,EasyJTAG.
参考板子的程序,我稍微改动拉一下,发现有个问题.这个问题我不知道是C语言规则的问题,还是其他问题,大伙看看.
我主程序实现的目的是当key1键按下是,led亮一下后熄灭.
我的程序如下: 
void Delay(uint8 x)
{ uint8 i;
  for(;x>0;x--)
  for(i=0;i<50000;i++);
}
void Waitkey(void)
{  uint32 i;  
   while(1)
     {  while((IO0PIN&key1)!=0);         //等待key1键按下,按下为低电平
       
            for(i=0;i<50000;i++);                    //延迟去抖
        if((IO0PIN&key1)==0) break;        //若按键有效,跳出while循环
     
     }
     while((IO0PIN&key1)==0);            //等待key1键松开
}
int main()
{     
   PINSEL0=0x00000000;
   PINSEL1=0x00000000;
   IO0SET=ledcon;
   IO0DIR=ledcon;
   
   
   InitUART0(115200);
   while(1)
   { 
     Waitkey();
     IO0CLR=ledcon;
  for(i=0;i<500000;i++);
    // Delay(10);
     IO0SET=ledcon;
   // Delay(10);
  for(i=0;i<500000;i++);
  
    }
return(0);
}
我在main()函数的while中用for(i=0;i<500000;i++);程序没问题,运行正常.
但如果我在while中调用Delay(10);实现延迟,程序运行是没有问题,但按下key1键后,led一直亮,不熄灭.我单步执行程序是执行到IO0CLR=ledcon;还是正常的,但接下拉就跳不出Delay(10).
是不是我调用函数有问题啊,我很是不明白.
希望大家给些建议

相关帖子

沙发
zlgARM| | 2007-4-20 20:34 | 只看该作者

fengboy

uint8 i
改称uint32 i试试。

使用特权

评论回复
板凳
fengboy|  楼主 | 2007-4-20 20:40 | 只看该作者

zlgARM

谢谢周工,
一语惊醒梦中人,自己还是不够仔细啊,呵呵

使用特权

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

本版积分规则

3

主题

7

帖子

1

粉丝