有关按键控制蜂鸣器实验的问题
板子附带光盘中的<按键控制蜂鸣器实验>的代码没有进行任何修改,下载到MyApp分区运行,按下按键却没有任何反应,希望斑竹和大侠们帮忙找找原因.板子是OK2440-III,编译选项分别为 -entry 0x32000000 -ro-base 0x32000000;
//init.s文件如下:
AREA |DATA|,CODE,READONLY
ENTRY
ldr r13, =0x1000
IMPORT keyMain
b keyMain
END
//main.c文件如下:
/*********************按键实验*********************************/
// 公司名称 :保定飞凌嵌入式技术有限公司
// 描 述 :按键控制蜂鸣器
#define GPFCON (*(volatile unsigned *)0x56000050)
#define GPFDAT (*(volatile unsigned *)0x56000054)
#define GPFUP (*(volatile unsigned *)0x56000058)
#define GPBCON (*(volatile unsigned *)0x56000010)
#define GPBDAT (*(volatile unsigned *)0x56000014)
#define GPBUP (*(volatile unsigned *)0x56000018)
void Delay(int count)
{
unsigned int i;
while(--count != 0)
{
for(i = 0; i < 0xfff; i++); // ";" 表示空语句,CPU空转。
} // i 从0加到125,在12M晶体下CPU大概耗时1毫秒
}
void BEEP_ON()
{
GPBDAT|=0x01;
}
void BEEP_OFF()
{
GPBDAT&=0xfffe;
}
void BeepCount(unsigned char count)
{
unsigned int time;
time=count*120;
if(time!=0)
{
BEEP_ON(); Delay(time);
BEEP_OFF();Delay(time);
}
}
unsigned charKeyNum(void)
{
unsigned char KeyTemp;
KeyTemp=0;
if ((GPFDAT&0x01)==0) KeyTemp=1;
if ((GPFDAT&0x04)==0) KeyTemp=2;
if ((GPBDAT&0x20)==0) KeyTemp=16;
if ((GPBDAT&0x40)==0) KeyTemp=8;
//if ((GPBDAT&0x80)==0) KeyTemp=4;
return KeyTemp;
}
int keyMain()
{
GPBCON&=0x3f03fc; //GPB5 GPB6GPB7 GPB0清零
GPBCON|=0x01; // GPB0 输出有效
GPFCON&=0x0ffcc; // GPF0GPF2清零
BEEP_OFF(); // 蜂鸣器不蜂鸣
while(1) // 死循环
{
BeepCount(KeyNum());
}
}
初步怀疑是GPFUP和GPBUP没有初始化的问题,但进行了各种初始化尝试之后还是没有结果;(私下觉得实验代码是随板子配送的,飞凌应该进行验证了,应该没有问题的,再说论坛中大家也没有反应该问题).
本人现在还不明白IO口在哪种情况下要进行上拉使能,什么情况下禁止上拉使能,希望斑竹和大侠们指点一下.谢谢! http://bbs.witech.com.cn/thread-960-1-1.html
在ads下一般输出的时候使能了上拉
你可以再论坛上搜一下有相关上拉的文章 回复 2# 飞凌-seventeen
你给的连接是教如何下载程序到板子上的,这个我是会的,我成功下载好几个程序到板子上,都可以运行;按键控制蜂鸣器实验没有正确结果应该和这无关;
按你的说法IO口作为输出上拉是和ADS编译器有关系? 回复 4# catch
请问你刚开始无法运行的原因?后来采取什么措施就可以了?有什么地方需要注意的嘛?你的代码和我上面贴出的差别大吗?谢谢,我卡在这里都半个月了,一直没有进展。
页:
[1]