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使用详解的更多相关文章

  1. 很好的linux下GPIO驱动详解文章

    原文地址  http://blog.csdn.net/llxmedici/article/details/6282372 打算跟着友善之臂的<mini2440 linux移植开发指南>来做 ...

  2. 三星s3c24xx平台GPIO操作详解

    转:http://blog.chinaunix.net/uid-22030783-id-3391515.html 先介绍三星S3C24XX平台BSP中定义外设寄存器和GPIO的相关头文件 以linux ...

  3. [nRF51822] 5、 霸屏了——详解nRF51 SDK中的GPIOTE(从GPIO电平变化到产生中断事件的流程详解)

    :由于在大多数情况下GPIO的状态变化都会触发应用程序执行一些动作.为了方便nRF51官方把该流程封装成了GPIOTE,全称:The GPIO Tasks and Events (GPIOTE) . ...

  4. GPIO 配置之ODR, BSRR, BRR 详解

    STM32 GPIO 配置之ODR, BSRR, BRR 详解 用stm32 的配置GPIO 来控制LED 显示状态,可用ODR,BSRR,BRR 直接来控制引脚输出状态. ODR寄存器可读可写:既能 ...

  5. STM32 GPIO 配置之ODR, BSRR, BRR 详解

    STM32 GPIO 配置之ODR, BSRR, BRR 详解 用stm32 的配置GPIO 来控制LED 显示状态,可用ODR,BSRR,BRR 直接来控制引脚输出状态. ODR寄存器可读可写:既能 ...

  6. Linux的fasync驱动异步通知详解【转】

    本文转载自:http://blog.csdn.net/coding__madman/article/details/51851338 版权声明:本文为博主原创文章,未经博主允许不得转载. 工作项目用有 ...

  7. [SPI]SPI协议详解

    转自:https://my.oschina.net/freeblues/blog/67400 1.SPI协议简介 1.1.SPI协议概括 SPI,是英语Serial Peripheral interf ...

  8. 13.Linux键盘驱动 (详解)

    版权声明:本文为博主原创文章,未经博主允许不得转载. 在上一节分析输入子系统内的intput_handler软件处理部分后,接下来我们开始写input_dev驱动 本节目标: 实现键盘驱动,让开发板的 ...

  9. 14.LINUX-platform机制实现驱动层分离(详解)

    版权声明:本文为博主原创文章,未经博主允许不得转载. 本节目标:        学习platform机制,如何实现驱动层分离 1.先来看看我们之前分析输入子系统的分层概念,如下图所示: 如上图所示,分 ...

随机推荐

  1. keyboardWillChangeFrameNotification 引发的思考 是的 思考了很久终于出结果

    func keyboardWillChangeFrameNotification(note: NSNotification) { // TODO 添加键盘弹出的事件 let userinfo = no ...

  2. 【Qt开发】修改源码文件的编码格式的小技巧 .

    默认情况下,代码文件应该以utf-8的格式来存储的.而如果在代码文件的转移或者上传下载过程中,弄乱了文件的编码格式,一般会出现乱码的情况. 例如windows系统下,中文就很容易出现乱码,如下图,文件 ...

  3. linux常用命令 、查看日志、web排查

    linux常用命令 ps aux|grep xxx (比如 ps aux|grep tomcat ps aux|grep tomcat-portalvip ps aux|grep nginx 等) r ...

  4. PAT1003

    As an emergency rescue team leader of a city, you are given a special map of your country. 作为一个城市的紧急 ...

  5. JavaBean-- 设置和取得属性

    <jsp:setProperty>标签一共有4种使用方法: 自动匹配:<jsp:setProperty name="实例化对象的名称(id)" property= ...

  6. Bcdedit命令使用详解使用方法

    XP,WIN2003,VISTA,万indows,WIN2008多盘多系统多引导bcdedit的使用windows出了新系统vista,2008想赏赏鲜学习学习~~但又习惯于用旧的XP,2003,然而 ...

  7. java的property

    System.currentTimeMillis() 返回以毫秒为单位的当前时间.System.gc() 垃圾回收System.getProperties().返回当前的系统属性System.getP ...

  8. PAT (Advanced Level) 1067. Sort with Swap(0,*) (25)

    只对没有归位的数进行交换. 分两种情况: 如果0在最前面,那么随便拿一个没有归位的数和0交换位置. 如果0不在最前面,那么必然可以归位一个数字,将那个数字归位. 这样模拟一下即可. #include& ...

  9. 利用cookie实现“只弹出一次窗口”的JS代码

    弹出式窗口通常被用来做弹出广告(CPM),其实用弹出式窗口用来做消息通知也是最普遍而且是最有效的方法,但如果每次刷新页面特别是刷新首页都要弹出窗口的话,那绝对是让访问者厌烦的事情. 比如你将上面的脚本 ...

  10. dom元素循环绑定事件的技巧

    以前总觉得自己写的代码不太规范,尤其是写原生的时候.举个例子: 要为页面上所有".a"的元素绑定事件,当然了用jquery很方便:$('.a').bind("click& ...