[ZLG-ARM] 求助,函数调用的问题(easyarm2114遇到的问题)

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

fengboy

uint8&nbsp;i<br />改称uint32&nbsp;i试试。
 楼主| fengboy 发表于 2007-4-20 20:40 | 显示全部楼层

zlgARM

谢谢周工,<br />一语惊醒梦中人,自己还是不够仔细啊,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

7

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

3

主题

7

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部