TX2440裸机程序之-LED

一、GPIO说明

         GPIO(General Purpose I/O ports)即通用输入/输出口。我们在实际应用中,不管是接LCD、接键盘,控制流水灯等等应用,都离不开对I/O的操作。可以说,GPIO的操作是所有硬件操作的基础。

          S3C2440共有130个I/0端口,共分九组,分别为:GPA、GPB、...、GPJ。我们可以通过寄存器来操作这些IO。S3C2440共有三种寄存器,分别为GPxCON、GPxDAT、GPxUP。GPxCON用于选择引脚功能;GPxDAT用于读/写引脚数据;GPxUp用于确定是否使用内部上拉电阻。需要注意的是,A组没有GPAUP寄存器,即A组I/O口无上拉电阻选择功能


   1、GPxCON
   A组I/O口的GPxCON比较特殊,GPACON中每位对应一根引脚(共23根)。当某位设置为0时,相应引脚为输出引脚。反之,为相应引脚为地址线或用于地址控制,此时GPADAT无用。
   B组~J组的I/O在寄存器操作方面完全相同。GPxCON中每两位控制一根引脚:00表示输入、01表示输出、10表示特殊功能、11保留不用。
   2、GPxDAT
   GPxDAT用于读/写引脚数据:当引脚设置为输出时,则写其寄存器相应位可令此引脚输出高电平或低电平;当此引脚设置为输入时,则读此寄存器相应位引脚的电平状态为高还是低。
   3、GPxUP
   GPxUP用来设置相应引脚是否使用上拉电阻。某位为0时则使用上拉电阻;某位为1时则使用上拉电阻。

 

二、开发环境

        IDE环境:ADS1.2

        开发板:TX2440

        硬件接线图:LED1---GPF0,共阳接法,若点亮LED,只需给相应为低电平。

                                LED2---GPF1

                                LED3---GPF2

                                LED4---GPF3

              

 

三、源码及分析

  

//======================================================================
//	工程名称:	LED.mcp
//	功能描述:	用GPIO控制四个LED
//  IDE环境:   ADS v1.2
//	组成文件:	main.c
//======================================================================
//====================================================
// 包含头文件区
//====================================================
#include "2440addr.h"
#include "2440lib.h"
#include "option.h"
#include "def.h"
#include "uart.h"


#define LED1ON    0xFE            //LED1点亮值为0xFE(低电平点亮)
#define LED2ON    (LED1ON<<1)     //LED2点亮值为LED1左移1位
#define LED3ON    (LED1ON<<2)     //LED3点亮值为LED2左移1位
#define LED4ON    (LED1ON<<3)     //LED4点亮值为LED3左移1位

extern unsigned int PCLK;

void usDelay(unsigned long time)
{
	U32 i,j;
	for (i = time; i > 0; i--)
		for (j = 50; j > 0; j--);
}

void Main(void)
{
   rGPFCON = (rGPFCON | 0xFFFF) & 0xFFFFFF55;  //GPF0--GPF3设置为output       
   rGPFUP  =  0xFFFF;
   rGPFDAT = 0x0F;						  	 //GPF低4位初始化为1
   while(1)
    {
          
    	rGPFDAT = LED1ON;                   //点亮LED1
        usDelay(10000);
       	
      
       	rGPFDAT = LED2ON;                   //点亮LED2
         usDelay(10000);
      
       	rGPFDAT = LED3ON;                   //点亮LED3
       	usDelay(10000);
       	      
         rGPFDAT = LED4ON;                   //点亮LED4   
         usDelay(10000);       
    }
}


 

    测试结果:依次点亮LED1--4 ,全部熄灭,在依次点亮。

 


 

 

        




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值