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当前的电平状态
相关文章推荐
- Android webview 显示. net:ERR_CACHE_MISS
- JavaScript计算器
- jsp笔记
- viewHolder,setTag,getTag,setId,getId的使用
- openGL图片占用内存计算
- 【HDOJ 4764】 Stone (博弈)
- 邻居好说话—冒泡排序
- Algorithm --> 棋盘中求出A到B的最小步数
- bootstrap 轮播总结
- JVM原理讲解和调优
- JVM原理讲解和调优
- Hibernate – One-to-Many example (XML Mapping)
- 马哥linux+python——2015年9月1日课程作业
- zabbix安装------安装php
- 使用Cocos2d-x 3.2和Cocos Studio做屏幕适配方案总结
- UICollectionView基础
- j2ee笔记
- java异常处理机制finally中的return返回
- java注释量统计代码实现
- SpringMVC整合Mybatis做的一个简单的查询功能