LPC2478的GPIO使用详解
GPIO使用
LPC2478的GPIO是不能断开时钟的,上电就连接.处理GPIO主要就下面几步
1. 设置为普通IO模式
2. 设置输入输出方向
3. 设置值
以下寄存器
用于选择管脚是基本输入输出还是复用功能
设置管脚是否具有上拉电阻
其中,LPC的管脚分为两种,一种是传统GPIO还有一种是高速GPIO,其实严格来说,所有的管脚都是高速管脚,但是为了兼容之前的软件和程序,可以使用之前的访问模式访问GPIO,说明如下
设置管脚方向
这个寄存器只能写1有效,写1将对应管脚高电平,写0不会将对应管脚低电平
需要将对应管脚低电平靠这个寄存器,但是这个寄存器不能控制管脚高电平
通过该寄存器获取相应端口的输入
这个寄存器的意思是说:将指定位的数据屏蔽,也就是说在这个寄存器中写入1的那一位,我们无法通过写入寄存器的方式控制他的电平也不能读取到他的当前有效电平,也就是说,那个管脚被锁住了
以下是使用代码,全部使用FIO高速管脚模式驱动
</pre><pre name="code" class="cpp">#ifndef __GPIO_H_
#define __GPIO_H_
#include "lpc24xx.h"
#include "common.h" //p1 5输出 P2 10输入
void GPIOInit(void); void GPIOSet(u8 value); u8 GPIOGet(void); #endif
#include "gpio.h" //p1 5输出 P2 10输入
void GPIOInit(void)
{
SCS |= (1<<0);//设置高速寄存器组方式访问端口
PINSEL2 &= ~(3<<10);//选择 p1 5 p2 10 为GPIO管脚
PINSEL4 &= ~(3<<20); PINMODE2 &= ~(3<<10);//全部使能上拉电阻
PINMODE4 &= ~(3<<20); FIO1DIR |= 1<<5; //P1 5输出
FIO2DIR &= ~(1<<10);//P2 10输入 FIO1MASK = 0x00;
FIO2MASK = 0x00;//将1和2的数据掩码全部清除 } void GPIOSet(u8 value)
{
if(value)FIO1SET |= (1<<5);
else FIO1CLR |= (1<<5);
} //p2 10 按下高电平 平时低电平
u8 GPIOGet(void)
{
if((FIO2PIN&(1<<10)) == 0)
{
return 1;
}
else
{
return 0;
}
}
需要注意的是,对于P0和P1当使用FIO驱动的时候需要修改SCS修改系统控制寄存器,如下
否则就算是写入了FIO寄存器也不会体现在实际管脚上
LPC2478的GPIO使用详解的更多相关文章
- 很好的linux下GPIO驱动详解文章
原文地址 http://blog.csdn.net/llxmedici/article/details/6282372 打算跟着友善之臂的<mini2440 linux移植开发指南>来做 ...
- 三星s3c24xx平台GPIO操作详解
转:http://blog.chinaunix.net/uid-22030783-id-3391515.html 先介绍三星S3C24XX平台BSP中定义外设寄存器和GPIO的相关头文件 以linux ...
- [nRF51822] 5、 霸屏了——详解nRF51 SDK中的GPIOTE(从GPIO电平变化到产生中断事件的流程详解)
:由于在大多数情况下GPIO的状态变化都会触发应用程序执行一些动作.为了方便nRF51官方把该流程封装成了GPIOTE,全称:The GPIO Tasks and Events (GPIOTE) . ...
- GPIO 配置之ODR, BSRR, BRR 详解
STM32 GPIO 配置之ODR, BSRR, BRR 详解 用stm32 的配置GPIO 来控制LED 显示状态,可用ODR,BSRR,BRR 直接来控制引脚输出状态. ODR寄存器可读可写:既能 ...
- STM32 GPIO 配置之ODR, BSRR, BRR 详解
STM32 GPIO 配置之ODR, BSRR, BRR 详解 用stm32 的配置GPIO 来控制LED 显示状态,可用ODR,BSRR,BRR 直接来控制引脚输出状态. ODR寄存器可读可写:既能 ...
- Linux的fasync驱动异步通知详解【转】
本文转载自:http://blog.csdn.net/coding__madman/article/details/51851338 版权声明:本文为博主原创文章,未经博主允许不得转载. 工作项目用有 ...
- [SPI]SPI协议详解
转自:https://my.oschina.net/freeblues/blog/67400 1.SPI协议简介 1.1.SPI协议概括 SPI,是英语Serial Peripheral interf ...
- 13.Linux键盘驱动 (详解)
版权声明:本文为博主原创文章,未经博主允许不得转载. 在上一节分析输入子系统内的intput_handler软件处理部分后,接下来我们开始写input_dev驱动 本节目标: 实现键盘驱动,让开发板的 ...
- 14.LINUX-platform机制实现驱动层分离(详解)
版权声明:本文为博主原创文章,未经博主允许不得转载. 本节目标: 学习platform机制,如何实现驱动层分离 1.先来看看我们之前分析输入子系统的分层概念,如下图所示: 如上图所示,分 ...
随机推荐
- 线程带参数的Udp接收
//work wk = new work(ReadUdpDate); ParameterizedThreadStart parmThre = new ParameterizedThreadStart( ...
- acm课程练习2--1002
题目描述 Now, here is a fuction: F(x) = 6 * x^7+8x^6+7x^3+5x^2-yx (0 <= x <=100)Can you find the ...
- cocos2d-js 帧序列动画
1.resource.js var res = { playerWalk_plist:"res/playerWalk.plist", playerWalk_png:"re ...
- Spring的事务传播机制
1.事务传播类型 新建事务 required required_new - 挂起当前 非事务方式运行 supports not_supported - 挂起当前 never ...
- meta 常用标签总结
声明:并非原创 meta元素工有3个可选属性(http-equiv.name.scheme)和一个必选属性(content),content定义与http-equiv或name属性相关的元信息 可选属 ...
- Mysql笔记5之查询
1查询所有的列 select *from student 2查询指定列 select name,age from student 3查询时候使用别名 select name as 别名,age as ...
- zencart 新页面调用好功能代码集:
其实很多就是看变量,就可以直接调用,而变量的定义地方很多,比如language 1. includes\languages\语言.php 2. 写个文件,放进includes\extra_confi ...
- 链表基础 HDU1267
基础的链表,模拟一下就好了...就签个到
- Android Audio Focus的应用(requestAudioFocus)
网址:http://blog.csdn.net/dadoneo/article/details/8252933 FROM: http://www.linuxidc.com/Linux/2012-04/ ...
- C++读取excel特定行列中的数据
可以通过COM API调用才是正解,不过需要编写COM接口类,Excel对象库的接口太多了……不过可以用工具自动生成. 我最近也在用VC操作Excel,在VC中可以这样做,在任何一个cpp文件中加入下 ...