百问网Linux技术区嵌入式Linux应用开发完全手册之深化扩展及答疑 书中讲解用开关控制LED的实验,哪位做出来了,帮忙看看?

1  /  1  页   1 跳转 查看:385

书中讲解用开关控制LED的实验,哪位做出来了,帮忙看看?

书中讲解用开关控制LED的实验,哪位做出来了,帮忙看看?

大家好:
      我用的是TQ2440板子,LED1~4对应GPB5~8,K1~K4对应GPF1,GPF4,GPF2,GPF0.

我比着书上那个思路做了个简化的:四个开关都可以控制LED1的亮灭。
程序如下:
#define GPBCON  (*(volatile unsigned long *)0x56000010)
#define GPBDAT  (*(volatile unsigned long *)0x56000014)
#define GPFCON  (*(volatile unsigned long *)0x56000050)
#define GPFDAT  (*(volatile unsigned long *)0x56000054)

#define GPB5_out (1<<(5*2))
#define GPB6_out (1<<(6*2))
#define GPB7_out (1<<(7*2))
#define GPB8_out  (1<<(8*2))

#define GPF1_in  ~(3<<(1*2))
#define GPF4_in  ~(3<<(4*2))
#define GPF2_in  ~(3<<(2*2))
#define GPF0_in  ~(3<<(0*2))

int main(void)
{
unsigned long data;
GPBCON = GPB5_out | GPB6_out | GPB7_out | GPB8_out;
GPFCON = GPF1_in & GPF4_in & GPF2_in & GPF0_in;
GPBDAT = 15<<5;(我的板子一上电,四个灯全亮,先把他灭了)

while(1)
{
  data = GPFDAT;

  if(data & (1<<1))          //K1
  {
  GPBDAT = 0x00000020;
  }
  else
  {
  GPBDAT = 0x00000000;
  }

  if(data & (1<<4))        //K2
  {
  GPBDAT = 0x00000020;
  }
  else
  {
  GPBDAT = 0x00000000;
  }

  if(data &(1<<2))          //K3
  {
  GPBDAT = 0x00000020;
  }
  else
  {
  GPBDAT = 0x00000000;
  }

  if(data & (1<<0))        //K4
  {
  GPBDAT = 0x00000020;
  }
  else
  {
  GPBDAT = 0x00000000;
  }
}
return(0);
}

这样,应该是上电之后,灯全灭,不管按下哪个开关,LED1都应该亮才对。
但是实际是:不管按下哪个开关,灯都不亮。


请前辈讲解下。谢谢!
 

回复:书中讲解用开关控制LED的实验,哪位做出来了,帮忙看看?

我和你用的板子一样,LED1~4对应GPB5~8,但K1~K4对应的寄存器和这本书上的不一样,你可以参考下买板子带的光盘里那个ADS试验目录下SRC目录中的keyscan.c

4 个用户按键
四个输入引脚:
                EINT0 -----( GPF0  )----INPUT---K4
                EINT2 -----( GPF2  )----INPUT---K3
                EINT4 -----( GPF4  )----INPUT---K2
                EINT1 -----( GPF1  )----INPUT---K1
 

回复:书中讲解用开关控制LED的实验,哪位做出来了,帮忙看看?

dwDat=GPGDAT不能得到实验结果要直接if(GPGDAT&(1<<11)).。。。。。。。。。
试试看,我的成功了
 
1  /  1  页   1 跳转

地址:广东省深圳市南山区南山大道3003号久商大厦C-1406;邮编:518052;电话:0755-86200561

粤ICP备09041549号, 版权所有 百问网   Sitemap

Powered by Discuz!NT 2.0.1214    Copyright © 2001-2010 Comsenz Inc.
Processed in 0.03125 second(s) , 3 queries.
返顶部