天嵌 ARM开发社区

 找回密码
 注册
查看: 2879|回复: 2

tq2440,GPB8口的用途

[复制链接]
kifile 发表于 2012-9-1 10:10:33 | 显示全部楼层 |阅读模式
刚开始学习ARM,编了一个挺简单的键盘控制LED的程序,可是发现LED4无论按键与否。总是亮着,求高手指导,代码如下


  1. #define GPBCON      (*(volatile unsigned long *)0x56000010)
  2. #define GPBDAT      (*(volatile unsigned long *)0x56000014)

  3. #define GPFCON      (*(volatile unsigned long *)0x56000050)
  4. #define GPFDAT      (*(volatile unsigned long *)0x56000054)

  5. /*
  6. * LED
  7. */
  8. #define        GPB5_out        (1<<(5*2))
  9. #define        GPB6_out        (1<<(6*2))
  10. #define        GPB7_out        (1<<(7*2))
  11. #define        GPB8_out        (1<<(8*2))

  12. #define        GPB5_msk        (3<<(5*2))
  13. #define        GPB6_msk        (3<<(6*2))
  14. #define        GPB7_msk        (3<<(7*2))
  15. #define        GPB8_msk        (3<<(8*2))

  16. /*
  17. *Key
  18. */

  19. #define        GPF0_in        (0<<(0*2))
  20. #define        GPF1_in        (0<<(1*2))
  21. #define        GPF2_in        (0<<(2*2))
  22. #define        GPF4_in        (0<<(4*2))

  23. #define        GPF0_msk        (3<<(0*2))
  24. #define        GPF1_msk        (3<<(1*2))
  25. #define        GPF2_msk        (3<<(2*2))
  26. #define        GPF4_msk        (3<<(4*2))



  27. int main()
  28. {
  29.         unsigned long dwDat;
  30.         
  31.         GPBCON &= ~(GPB5_msk | GPB6_msk | GPB7_msk | GPB8_msk); //清零
  32.         GPBCON |= GPB5_out | GPB6_out | GPB7_out  | GPB8_out;//设置输出
  33.         
  34.         
  35.         GPFCON &= ~(GPF0_msk | GPF1_msk | GPF2_msk | GPF4_msk);
  36.         GPFCON |= GPF0_in | GPF1_in | GPF2_in | GPF4_in;


  37.         while(1){
  38.             
  39.             dwDat = GPFDAT;            
  40.         
  41.             if (dwDat & (1<<1))
  42.                 GPBDAT |= (1<<5);      
  43.             else   
  44.                 GPBDAT &= ~(1<<5);
  45.                
  46.             if (dwDat & (1<<4))
  47.                 GPBDAT |= (1<<6);
  48.             else   
  49.                 GPBDAT &= ~(1<<6);
  50.    
  51.             if (dwDat & (1<<2))
  52.                 GPBDAT |= (1<<7);
  53.             else   
  54.                 GPBDAT &= ~(1<<7);

  55.             if (dwDat & (1<<0))
  56.                 GPBDAT |= (1<<8);
  57.             else   
  58.                 GPBDAT &= ~(1<<8);
  59.        

  60.     }

  61.     return 0;
  62. }
复制代码


embedsky_lhh 发表于 2012-9-1 12:09:28 | 显示全部楼层
你把LED换个按键控制看是否正常,如果正常了,那就可能是那个键有问题,如果还是不正常那就灯有问题
 楼主| kifile 发表于 2012-9-1 15:43:48 | 显示全部楼层
应该是LED灯的问题吧,我把
  1.             if (dwDat & (1<<0))
  2.                 GPBDAT |= (1<<8);
  3.             else   
  4.                 GPBDAT &= ~(1<<8);
复制代码
去掉之后,LED灯还是亮着
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-15 11:47 , Processed in 1.109375 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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