(一)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 | ||
GPB10 | 21 | |
20 | ||
GPB9 | 19 | |
18 | ||
GPB8 | 17 | LED4 |
16 | ||
GPB7 | 15 | LED3 |
14 | ||
GPB6 | 13 | LED2 |
12 | ||
GPB5 | 11 | LED1 |
10 | ||
GBP4 | 9 | |
8 | ||
GPB3 | 7 | |
6 | ||
GPB2 | 5 | |
4 | ||
GPB1 | 3 | |
2 | ||
GPB0 | 1 | |
0 |
15400 | ||
0 | ||
0 | ||
0 | ||
0 | ||
0 | (17:16) 01 | output |
1 | ||
0 | (15:14) 01 | putput |
1 | ||
0 | (13:12) 01 | output |
1 | ||
0 | (11:10) 01 | output |
1 | ||
0 | ||
0 | ||
0 | ||
0 | ||
0 | ||
0 | ||
0 | ||
0 | ||
0 | ||
0 |
GPBDAT | ~LEDS | (GPBDAT&(~LEDS)) | (1<<6|1<<7|1<<8) | ||
GPB10 | 10 | ||||
GPB9 | 9 | ||||
GPB8 | 8 | 0 | 0 | 1 | |
GPB7 | 7 | 0 | 0 | 1 | |
GPB6 | 6 | 0 | 0 | 1 | |
GPB5 | 5 | 0 | 0 | 0 LED1亮 | |
GPB4 | 4 | ||||
GPB3 | 3 | ||||
GPB2 | 2 | ||||
GPB1 | 1 | ||||
GPB0 | 0 | ||||
(1<<5|1<<7|1<<8) | (1<<5|1<<6|1<<8) | (1<<5|1<<6|1<<7) |
1 | 1 | 0 LED4亮 |
1 | 0 LED3 亮 | 1 |
0 LED2亮 | 1 | 1 |
1 | 1 | 1 |
相关文章推荐
- python--文件处理范例
- [LeetCode]题解(python):088-Merge Sorted Array
- Java和js时间格式化
- Java JDK源码
- Python标准库10 多进程初步 (multiprocessing包)
- Spring使用xml配置bean,主要是constructor-arg
- 时间戳转换为时间格式
- 笨方法学Python(11-15)
- Spring文件上传配置
- Java常用工具类总结(二)
- php分页类学习
- IComparable与IComparer
- day03-----------java 语言基础(基础语法)(传智视频)
- Use Visual studio 2010 build Python2.7.10
- C语言中的字符和字符串
- spring与timer的定时任务详解
- [Java开发之路](8)输入流和输出流
- java线程的全面讲解
- java3----java环境---jdk,jre(3)-----jdk和jre的理解3
- Java笔记12:Java对象排序