S3C2410GPIO 控制实验

S3C2410 CPU 共有 117 个多功能复用输入输出口,分为 8 组端口:

 4 个 16 位的 I/O 端口 (PORT C、PORT D、PORT E、PORT G)

 2 个 11 位的 I/O 端口 (PORT B 和 PORT H)

1 个 8 位的 I/O 端口(PORT F)

1 个 23 位的 I/O 端口(PORT A)

这些通用的 GPI/O 接口,是可配置的, PORTA 除功能口外,它们仅用作输出使用,剩下的 PORTB、PORTC、PORTD、PORTE、PORTF、PORTG 均可作为输入输出口使用。配置这些端口,是通过一些寄存器来实现的,这些寄存器均有各自的地址,位长 32 位。往该地址中写入相应的数据,即可实现功能及数据配置。

 GPACON (0x56000000) //Port A control

 GPADAT (0x56000004) //Port A data 

GPBCON (0x56000010) //Port B control 

GPBDAT (0x56000014) //Port B data

GPBUP (0x56000018) //Pull-up control B 

GPCCON (0x56000020) //Port C control 

GPCDAT (0x56000024) //Port C data

GPCUP (0x56000028) //Pull-up control C

 GPDCON (0x56000030) //Port D control

GPDDAT (0x56000034) //Port D data

GPDUP (0x56000038) //Pull-up control D 

GPECON (0x56000040) //Port E control 

GPEDAT (0x56000044) //Port E data 

GPEUP (0x56000048) //Pull-up control E 

GPFCON (0x56000050) //Port F control 

GPFDAT (0x56000054) //Port F data

GPFUP (0x56000058) //Pull-up control F 

GPGCON (0x56000060) //Port G control 

GPGDAT (0x56000064) //Port G data

GPGUP (0x56000068) //Pull-up control G 

GPHCON (0x56000070) //Port H control 

GPHDAT (0x56000074) //Port H data

GPHUP (0x56000078) //Pull-up control H 现用 C 口举例说明。

S3C2410GPIO 控制实验_第1张图片

S3C2410GPIO 控制实验_第2张图片

  也就是说,在地址 0x56000020 中,给 32 位的每一位赋值,那么,在 CPU的管脚上就定义了管脚的功能值。当 C 口某管脚配置成输入端口,则在 GPCDAT对应的地址中的对应位上,得到 1,则该管脚的输入为高电平,得到 0,则该管脚的输入为低电平。当 C 口某管脚配置成输出端口,则在 GPGDAT 对应的地址中的对应位上,写入 1,则该管脚输出为高电平,写入 0,则该管脚输出为低电平。若配置为功能管脚,则该管脚变成具体的功能脚。本次实验可不设置 GPCUP 寄存器。

1.  实验平台中 LED 灯的硬件连接原理图如下:

S3C2410GPIO 控制实验_第3张图片

2.  对 LED 灯控制的汇编程序:

	AREA test, CODE, READONLY 
	CODE32 
	ENTRY 
GPC5CON EQU 0x56000020	  ;控制寄存器  EQU等值命令
GPC5DAT EQU 0x56000024	  ;数据寄存器
start
	LDR R0,=GPC5CON	;	 地址中的值写入r0
	LDR	R1,=0X55555555;  1010101010101010101010101010101 GPC5,6,7定义为输出管脚
	STR	R1,[R0]     ;   r1的值存到r0指向的地址
Loop	
	LDR R0,=GPC5DAT
	LDR	R1,=0Xffffff1f   ;11111111111111111111111100011111  GPC5,6,7低电平点亮
	STR	R1,[R0]

	LDR R2,=0Xffffff  ;延时
Loop1	
	SUB R2,R2,#1
    CMP R2,#0
	BNE Loop1;

	LDR	R1,=0Xffffffff   ;11111111111111111111111111111111  GPC5,6,7高电平熄灭
	STR	R1,[R0]
	
	LDR R2,=0Xffffff   ;延时
Loop2	
	SUB R2,R2,#1
    CMP R2,#0
	BNE Loop2;
	
	B Loop
	END



你可能感兴趣的:(ARM嵌入式)