您的位置:首页 > 编程语言

(一)GPIO 编程实验 LED 流水灯控制

2015-12-30 14:12 459 查看
7个寄存器 是R1-R16.(当然,里面有很多是分几个模式的,所以总共有37个)
类似于单片机的R0-R7.

GPXCON,GPXDAT等等是另外的寄存器,应该叫,特殊功能寄存器,类似于单片机的P0,P1,TCON,等等。

GPXCON:是X管脚的控制寄存器,控制它们的模式,比如输出模式,输入模式……
GPXDAT:是X管脚的数据寄存器,存储它们的数据,


GPIO ,通用的输入输出,其引脚可供编程使用,对于简单的外部设备,比如控制一个LED 灯的亮灭,自然 只需要一位 信号就够了。

使用传统的 串行口和并行口 并不合适。 所以 S3C2440 芯片提供了 130个通用的 GPIO 口。

s3c2440 有 130个 功能可以选择的I/O端口,共9组: GPA,GPB,。。。。GPJ , 每组I/O 引脚数目不等。 GPB组共有11个I/O 端口,GPB0---GPB1——-----GPB10 ,GPC 有16个, GPC0--GPC15.

功能可以选择是指 可以通过设置控制寄存器来将 某个引脚作为 输入、输出或者 其他功能。

举例子:

开发板LED1 接在 GPB5 端口上,因此可以通过控制寄存器来将GPB5设为输出, 只有当GPB5 是低电平的时候LED1 才会亮, 这时候便用到 芯片内部对应的数据寄存器。 数据寄存器每一位控制一个I/O引脚。。

GPB5便由 数据寄存器的第5位控制,输入0 ,LED1点亮。

_____________________________________________________________________________________________________________________________________________

我们通过分析 GPB 来掌握 GPIO 口的 使用,举一反三!!!!!!!!!!!!!!!!!!!!!!!!!!

GPxCON:用于配置(configure),选择引脚的功能。
GPxDAT:用于读/写数据。
GPxUP:确定是否使用内部上拉电阻。(没有GPAUP寄存器。)

我们来讲解 GPBCON :



从图可以看出 B组 有 11个 GPIO 端口 。
GPXCON 中 每两位控制一根引脚。 00表示 输入,01 表示输出, 10 特殊功能 ,11 保留不用
这样理解吧,参考51单片机,51单片机 并行口 P0 P1 P2 P3 ,一个有 8位

GPxDAT 寄存器, 用于读写引脚, 设为输入时候, 读此寄存器可知 相应引脚电平状态高低,输出时候也一样。

GPXUP : 为 1 无上拉电阻, 0 有上拉电阻。



GPBCON: = 0x15400 GPB0

#define LEDS           (1<<5|1<<6|1<<7|1<<8)

GPBDAT=(GPBDAT&(~LEDS)) | (1<<6|1<<7|1<<8);  //  LED1 亮了,其余灭,分析简单

讨论:


GPBCON
GPB1021
20
GPB919
18
GPB817LED4
16
GPB715LED3
14
GPB613LED2
12
GPB511LED1
10
GBP49
8
GPB37
6
GPB25
4
GPB13
2
GPB01
0
15400
0
0
0
0
0(17:16) 01output
1
0(15:14) 01putput
1
0(13:12) 01output
1
0(11:10) 01output
1
0
0
0
0
0
0
0
0
0
0
GPBDAT~LEDS(GPBDAT&(~LEDS))
(1<<6|1<<7|1<<8)

GPB1010
GPB99
GPB88001
GPB77001
GPB66001
GPB55000 LED1亮
GPB44
GPB33
GPB22
GPB11
GPB00
(1<<5|1<<7|1<<8)

(1<<5|1<<6|1<<8)

(1<<5|1<<6|1<<7)

110 LED4亮
10 LED3 亮1
0 LED2亮11
111
这样一个 LED 流水灯 就形成了啊。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: