端口控制描述(详细见S3C2440的数据手册)
端口配置寄存器(GPACON至GPJCON)
端口数据寄存器(GPADAT至GPJDAT)
端口上拉寄存器(GPBUP至GPJUP)
杂项控制寄存器
外部中断控制寄存器
用一个实例(LED流水灯)来学习下输入/输出端口
(在TQ2440开发板中 是用GPB5~8控制LED1~4)
#include "2440addr.h"
#define LED1_ON (rGPBDAT &=~(1<<5))
#define LED1_OFF (rGPBDAT |=(1<<5) )
#define LED2_ON (rGPBDAT &=~(1<<6))
#define LED2_OFF (rGPBDAT |=(1<<6))
#define LED3_ON (rGPBDAT &=~(1<<7))
#define LED3_OFF (rGPBDAT |=(1<<7))
#define LED4_ON (rGPBDAT &=~(1<<8))
#define LED4_OFF (rGPBDAT |=(1<<8))
void Delay(void)
{
int i;
for(i=0;i<1000000;i++);
}
int Main()
{
rGPBCON &=~((3<<10)|(3<<12)|(3<<14)|(3<<16)); //对GPBCON[10:17]清零
rGPBCON |=((1<<10)|(1<<12)|(1<<14)|(1<<16)); //设置GPB5~8为输出
rGPBUP &=~((1<<5)|(1<<6)|(1<<7)|(1<<8)); //设置GPB5~8的上拉功能
rGPBDAT |=(1<<5)|(1<<6)|(1<<7)|(1<<8); //关闭LED
while(1)
{
LED1_ON;Delay();LED1_OFF;
LED2_ON;Delay();LED2_OFF;
LED3_ON;Delay();LED3_OFF;
LED4_ON;Delay();LED4_OFF;
}
}
其中启动代码那块你需要自己加上去,
说明下2440addr.h:定义2440寄存器的地址,包括存储器寄存器地址、中断向量地址、DMA地址、时钟电源管理寄
存器地址、LCD控制寄存器地址、Nand Flash地址、UART、PWM定时器、USB Device、WatchDog、IIC、IIS、I/O
端口、ADC、SPI、SD卡、ISR寄存器地址等。