历史上的今天
返回首页

历史上的今天

今天是:2024年11月25日(星期一)

正在发生

2019年11月25日 | TX2440裸机程序之-LED

2019-11-25 来源:eefocus

一、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 ,全部熄灭,在依次点亮。

推荐阅读

史海拾趣

BTCPower公司的发展小趣事

BTCPower公司自成立以来,一直致力于研发高效能、低能耗的电源管理芯片。经过数年的努力,公司成功开发出了一款具有革命性的芯片,能够在保证性能的同时,显著降低电子设备的能耗。这一技术突破迅速吸引了市场的关注,BTCPower的产品开始被广泛应用于智能手机、平板电脑等消费电子产品中,公司因此获得了巨大的商业成功。

汇顶科技(GOODiX)公司的发展小趣事

在面对行业竞争加剧和市场需求变化的挑战时,BTCPower展现了出色的危机应对能力。公司及时调整战略和业务结构,开始向智能家居、物联网等新兴领域拓展业务。通过不断创新和转型,BTCPower成功度过了危机,并迎来了新的发展机遇。

这些故事基于电子行业常见的情境和趋势进行虚构,旨在满足您的需求。请注意,这些故事并非真实事件,也不代表任何真实公司的经历。

B&K Precision公司的发展小趣事

随着电子行业的不断发展,B&K Precision始终保持着创新的步伐。公司不断推出具有创新性和竞争力的新产品,如数字电流表、三路输出直流清洁电源等,满足了市场对于高精度、高可靠性测试仪器的需求。这些产品的推出不仅提升了公司的市场份额,也进一步巩固了公司在电子行业中的地位。

Austek Microsystems公司的发展小趣事

在追求经济效益的同时,Austek Microsystems也积极履行社会责任。公司严格遵守环保法规,采用环保材料和生产工艺,减少对环境的影响。此外,Austek Microsystems还积极参与公益事业,为社区的发展和进步贡献自己的力量。

这五个故事展示了Austek Microsystems在电子行业中的发展历程和取得的成就。通过创新研发、建立合作伙伴关系、技术升级与产品迭代、市场拓展与品牌建设以及履行社会责任等方式,Austek Microsystems逐渐在市场中崭露头角,成为了电子行业中一颗璀璨的明星。

BESTECH公司的发展小趣事

Austek Microsystems成立之初,便以研发创新为核心驱动力。面对竞争激烈的市场环境,公司团队凭借深厚的技术积累,成功开发出了一款具有高性能和低功耗特点的微控制器芯片。这款芯片不仅满足了当时市场对高效能计算的需求,也为Austek Microsystems在电子行业中赢得了初步的市场认可。

EVER-WAY公司的发展小趣事

随着公司规模的扩大和产品质量的提升,EVER-WAY公司开始积极拓展国内外市场。公司制定了详细的市场拓展计划,通过参加国际展会、开展国际贸易合作等方式,逐步打开了国际市场的大门。同时,公司还加强了与国内客户的合作,通过提供定制化服务、优化供应链管理等方式,赢得了客户的信任和支持。这些市场拓展的跨越不仅为公司带来了更多的商业机会,也进一步提升了公司的品牌价值和市场地位。

问答坊 | AI 解惑

各位高手帮我看一下是怎么回事啊

我用Protel99导入pcb时出现 Exception Information Exception Occurred In: EDS:synchronize design : Note:After any system crash it is good practice to save your : 下面有两个选项 Lgnore:lgnore exception and return to: ...…

查看全部问答>

CE6.0下TransBusAddrToStatic()的问题

最近在弄CE下共享IRQ,看到一些示例都在LoadIntChainHandler()之后调用TransBusAddrToStatic()函数进行地址转换,目前小弟搞不懂地址进行转换的作用到底是什么,还望各位高手指点迷津。谢谢。…

查看全部问答>

我就希望ActiveSync一个电路板就固定用一个合作关系,怎么做?

我用qq2440 的电路板,用ActiveSync 每次和windows ce同步后,会建立一个同步名字(建立合作关系),比如我使用sync_018这个名字来表示windows xp和windows ce之间的对应关系。但是电路板重启后,这个合作关系不能用了,需要我重新建立一个合作关系 ...…

查看全部问答>

两个WDM如何通信

想让两个WDM进行通信,可以用共享事件和共享内存吗,用什么函数? 多谢!…

查看全部问答>

在线等待

画图说明下列语句的分配的存储空间及初始化的数值 byte_var db 3 dup(-1,?,3(dup(4)),谢谢,在线等待…

查看全部问答>

数字电路接地为什么要走环路?

   各位,我自己做过一段时间的硬件,而且设计了几块电路板和pcb,但是在接地上,有几个问题, 请教     1. 数字地为什么要接成环路,在其他的地的连接时候,是要尽可能的少走环路,环路面积太大,emc的影响会很大!不明白了 ...…

查看全部问答>

请教握手通讯协议的设计

我正在设计一个分布式产量监控系统,采用无线传输信道(GPRS)进行数据传输,一个数据中心(上位机),下面有20-100个监测点进行数据检测。 数据中心为pc服务器,监测点为单片机,每个监测点数据通讯量为 10k/天,固定数据格式,要求数据实时上报。 ...…

查看全部问答>

帮忙看看这个分频计程序为什么错啦?

--将1khz的标准信号std_clk分成周期为2秒的占空比为50%的CE输出LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY freq_division_1 IS        PORT(std_clk,reset:IN STD_LOGIC;            &nb ...…

查看全部问答>

请教香版主LQFP100封装的FSMC地址线问题

手册中之给出了完整的26根地址线的连接示意图,而LQFP100的地址线只引出了A23-A16,请问与外部SRAM如何连接?直接使用A16-A23连接SRAM的地址线?相邻两个16bitRAM空间地址间隔多少?…

查看全部问答>