历史上的今天
今天是: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 ,全部熄灭,在依次点亮。
史海拾趣
|
我用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之间的对应关系。但是电路板重启后,这个合作关系不能用了,需要我重新建立一个合作关系 ...… 查看全部问答> |
|
各位,我自己做过一段时间的硬件,而且设计了几块电路板和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 ...… 查看全部问答> |
|
手册中之给出了完整的26根地址线的连接示意图,而LQFP100的地址线只引出了A23-A16,请问与外部SRAM如何连接?直接使用A16-A23连接SRAM的地址线?相邻两个16bitRAM空间地址间隔多少?… 查看全部问答> |




