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.先来看看我们之前分析输入子系统的分层概念,如下图所示: 如上图所示,分 ...
随机推荐
- 初识Selenium(二)
---------------------------------------------------------------------------------------------------- ...
- PullToRefreshGridView上拉加载、下拉刷新
eclipse中的项目: //注意:此刷新功能是使用的第三方的PullToRefreshScrollView,因此需要导入第三方library作为依赖 步骤:导入第三方library,依赖:点击你的应 ...
- 简单时钟——css3
这里我们使用css3的特性制作一个简易的时钟,代码如下: <!DOCTYPE html><html> <head> <meta charset="U ...
- java 数组流
Example10_10.java import java.io.*; public class Example10_10 { public static void main(String args[ ...
- java 创建一个File文件对象
Example10_1.java import java.io.*; public class Example10_1 { public static void main(String args[]) ...
- Linux学习 -- Shell编程 -- 正则表达式
正则表达式与通配符 正则 -- 匹配字符串 -- 包含匹配 grep.awk.sed等 通配符 -- 匹配文件名 -- 完全匹配 ls.find.cp等 基础正则表达式
- DevExpress.LookUpEdit控件实现自动搜索定位功能 兼使用方法(looUpEdit可编辑)
DevExpress.LookUpEdit 使用方法 设置可手动输入 this.LookUpEdit1.Properties.TextEditStyle = DevExpress.XtraEditor ...
- parseInt(),parseFloat(),parse()
1.parseInt() 该函数将变量转换为整型数.只有对字符串型的数据调用该函数才有意义,其他类型如果使用parseInt()函数,则会返回NaN. 2.parseFloat() 该函数和parse ...
- Segment,Path,Ring和Polyline对象
Segment几何对象 Segment对象是一个有起点和终点的“线“,也就是说Segement只有两个点,至于两点之间的线是直的,还是曲的,需要其余的参数定义.所以Segment是由起点,终点和参 ...
- Qt5:Qt程序不在任务拦显示图标
setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint); 回头再写