[ARM9、LPC] 程序烧进去后,led灯不亮?

[复制链接]
1598|1
 楼主| zfyfll 发表于 2013-10-18 19:12 | 显示全部楼层 |阅读模式
  1. ***************************************************
  2.      按键点亮LED
  3. //***************************************************
  4. //功能:流水灯,蜂鸣器的响停
  5. //接口:GPF4 -> LED1    GPF0 -> KEY1
  6. //            GPF5 -> LED2    GPF1 -> KEY2
  7. //            GPF6 -> LED3    GPF2 -> KEY3  
  8. //            GPF7 -> LED4    GPF3 -> KEY4
  9. #include "def.h"                    //所要包含的头文件
  10. #include "option.h"
  11. #include "2440addr.h"     
  12. #include "2440lib.h"
  13. #include "2440slib.h"      
  14. //**************************************************
  15. void dely(U32 tt)                //延时子函数
  16. {
  17.    U32 i;
  18.    for(;tt>0;tt--)
  19.    {
  20.      for(i=0;i<10000;i++){}
  21.    }
  22. }
  23.    

  24. int Main(int argc, char **argv)       //主函数
  25. {
  26.                   //这里只讨论按键与IO口的使用,其余的做成子函数,直接调用,可暂时不深究。
  27.         U8 key;
  28.         U32 mpll_val=0;
  29.   
  30.         mpll_val = (92<<12)|(1<<4)|(1);
  31.        
  32.         ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);   //设置主时钟频率405MHZ
  33.         ChangeClockDivider(key, 12);      //设置时钟驱动频率的函数   
  34.    
  35.     MMU_DisableICache();    //对内存管理单元MMU的设置
  36.     MMU_DisableDCache();
  37.                                                 
  38.     rGPBCON &=~12;    //设置为输出
  39.     rGPBCON |=8;
  40.    
  41.     while(1)     
  42.            {   
  43.                unsigned long dqdat;   
  44.                    dqdat=rGPFDAT;   //读取GPGDAT管脚电平状态。
  45.                   
  46.                       //采取位判断,判断是0还是1.
  47.                    if(dqdat & (1<<0))   //判断按键1是否按下
  48.                      rGPFDAT = (0x0f<<4);    //灯全灭
  49.                    else   
  50.                      rGPFDAT = (0x0e<<4);    //00001110左移5位,LED1亮
  51.                      
  52.                    if(dqdat & (1<<1))   //判断按键2是否按下
  53.                      rGPFDAT = (0x0f<<4);     //灯全灭
  54.                    else
  55.                      rGPFDAT = (0x0d<<4);    //00001101左移5位,LED2亮
  56.   
  57.                   
  58.                    if(dqdat & (1<<2))   //判断按键3是否按下
  59.                      rGPFDAT = (0x0f<<4);    //灯全灭
  60.                    else
  61.           rGPFDAT = (0x0b<<4);    //00001011左移5位,LED3亮
  62.                      
  63.                    if(dqdat & (1<<3))   //判断按键4是否按下
  64.                      rGPFDAT = (0x0f<<4);    //灯全灭
  65.                    else  
  66.                  rGPFDAT = (0x07<<4);    //00000111左移5位,LED4亮       
  67.                      
  68.         }       
  69. }
阿南 发表于 2013-10-18 23:04 | 显示全部楼层
在线调试能亮否?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

19

帖子

0

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