您的位置:首页 > 其它

ARM7学习笔记——GPIO

2015-09-07 11:20 141 查看

概述

LPC2000系列ARM的GPIO具有如下特性:

可以独立控制每个GPIO口的方向(输入/输出模式)
可以独立设置每个GPIO的输出状态(高/低电平)
所有GPIO口在复位后默认为输入状态

引脚连接模块

LPC2000系列微控制器的引脚一般是多个功能复用,但是同一引脚在同一时刻只能使用其中一个功能,这可以通过设置PINSEL0寄存器来选择。



使用示例——将P0.8,P0.9设置为TxD1,RxD1

通过查阅PINSEL0寄存器设置表,得到P0.9和P0.8的控制位为PINSEL0[19:16],当该域设置为[0101](0x05)时选择RxD1和TxD1
PINSEL0 = 0x05<<16;
//为了不影响别的管脚连接设置,通常选择下面的设置方法
PINSEL0 = (PINSEL0 & 0xFFF0FFFF) | (0x05<<16);


GPIO相关寄存器描述



由上图可以发现每个作为GPIO功能的引脚受到4个寄存器控制,分别为控制方向的IOxDIR,控制输出电平状态的IOxSET和IOxCLR,反映引脚电平状态的IOxPIN。
通用名称

描述

访问类型

复位值

IOPIN

GPIO引脚值寄存器,不管方向模式如何,引脚的当前状态都可以从该寄存器中读出

只读

NA

IOSET

GPIO输出置位寄存器。该寄存器控制引脚输出高电平(写入0无效)

读/置位

0x0000 0000

IOCLR

GPIO输出置位寄存器。该寄存器控制引脚输出低电平(写入0无效)

只清零

0x0000 0000

IODIR

GPIO方向控制寄存器。该寄存器单独控制每个IO口的方向

读/写

0x0000 0000

GPIO应用示例

设置P0.0为输出模式
PINSEL0 &= 0xFFFFFFFC;   //第1步,设置引脚连接模块,将P0.0设置为GPIO功能
IO0DIR |= 0x00000001;    //第2步,将P0.0设置为输出   或 IO0DIR |= 1<<0
IO0SET = 0x00000001;     //第3步,设置P0.0输出高电平 或 IO0SET |= 1<<0

读取P0.0引脚的电平状态
unit32 PinStat;           //定义一个32位 局部变量用于存放I/O状态
PINSEL0 &= 0xFFFFFFFC;    //第1步,设置引脚连接模块,将P0.0设置为GPIO功能
IO0DIR &= 0xFFFFFFFE;     //第2步,把P0.0设置为输入状态
PinStat = IO0PIN&0x01;    //第3步,通过IO0PIN寄存器获取P0.0当前的电平状态


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: