嵌入式爱好者

查看: 9408|回复: 6

有关按键控制蜂鸣器实验的问题

[复制链接]

1

主题

3

帖子

2

积分

扫一扫,手机访问本帖
发表于 2010-5-25 00:31:57 | 显示全部楼层 |阅读模式
板子附带光盘中的<按键控制蜂鸣器实验>的代码没有进行任何修改,下载到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 char  KeyNum(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 GPB6  GPB7 GPB0清零
        GPBCON|=0x01;   // GPB0 输出有效
        GPFCON&=0x0ffcc;    // GPF0  GPF2清零
        BEEP_OFF();               // 蜂鸣器不蜂鸣
        while(1)                                                  // 死循环
        {
                BeepCount(KeyNum());
        }  
}

初步怀疑是GPFUP和GPBUP没有初始化的问题,但进行了各种初始化尝试之后还是没有结果;(私下觉得实验代码是随板子配送的,飞凌应该进行验证了,应该没有问题的,再说论坛中大家也没有反应该问题).
本人现在还不明白IO口在哪种情况下要进行上拉使能,什么情况下禁止上拉使能,希望斑竹和大侠们指点一下.谢谢!
回复

使用道具 举报

0

主题

905

帖子

743

积分

i.MX6Q通行证i.MX6UL通行证TCU通行证AM335x通行证

发表于 2010-5-25 09:22:19 | 显示全部楼层
http://bbs.witech.com.cn/thread-960-1-1.html
在ads下一般输出的时候使能了上拉
你可以再论坛上搜一下有相关上拉的文章

1

主题

3

帖子

2

积分

 楼主| 发表于 2010-5-25 11:49:09 | 显示全部楼层
回复 2# 飞凌-seventeen


    你给的连接是教如何下载程序到板子上的,这个我是会的,我成功下载好几个程序到板子上,都可以运行;按键控制蜂鸣器实验没有正确结果应该和这无关;
按你的说法IO口作为输出上拉是和ADS编译器有关系?
catch 该用户已被删除
发表于 2010-5-26 21:12:53 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

1

主题

3

帖子

2

积分

 楼主| 发表于 2010-5-26 23:04:11 | 显示全部楼层
回复 4# catch


    请问你刚开始无法运行的原因?后来采取什么措施就可以了?有什么地方需要注意的嘛?你的代码和我上面贴出的差别大吗?谢谢,我卡在这里都半个月了,一直没有进展。
liulutong 该用户已被删除
发表于 2010-6-1 10:12:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
liulutong 该用户已被删除
发表于 2010-6-1 10:13:23 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2025-1-10 00:50

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表