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寄存器也不会体现在实际管脚上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值