当前位置:首页 > 单片机 > 单片机
[导读]GPIO使用LPC2478的GPIO是不能断开时钟的,上电就连接.处理GPIO主要就下面几步1.设置为普通IO模式2.设置输入输出方向3.设置值以下寄存器用于选择管脚是基本输入输出还是复用功能设置管脚是否具有上拉电阻其中,LPC的管脚

GPIO使用

LPC2478的GPIO是不能断开时钟的,上电就连接.处理GPIO主要就下面几步

1.设置为普通IO模式

2.设置输入输出方向

3.设置值

以下寄存器



用于选择管脚是基本输入输出还是复用功能



设置管脚是否具有上拉电阻


其中,LPC的管脚分为两种,一种是传统GPIO还有一种是高速GPIO,其实严格来说,所有的管脚都是高速管脚,但是为了兼容之前的软件和程序,可以使用之前的访问模式访问GPIO,说明如下



设置管脚方向



这个寄存器只能写1有效,写1将对应管脚高电平,写0不会将对应管脚低电平



需要将对应管脚低电平靠这个寄存器,但是这个寄存器不能控制管脚高电平



通过该寄存器获取相应端口的输入



这个寄存器的意思是说:将指定位的数据屏蔽,也就是说在这个寄存器中写入1的那一位,我们无法通过写入寄存器的方式控制他的电平也不能读取到他的当前有效电平,也就是说,那个管脚被锁住了

以下是使用代码,全部使用FIO高速管脚模式驱动

#ifndef__GPIO_H_

#define__GPIO_H_

#include"lpc24xx.h"

#include"common.h"

//p15输出P210输入

voidGPIOInit(void);

voidGPIOSet(u8value);

u8GPIOGet(void);

#endif


#include"gpio.h"

//p15输出P210输入

voidGPIOInit(void)

{

SCS|=(1<<0);//设置高速寄存器组方式访问端口

PINSEL2&=~(3<<10);//选择p15p210为GPIO管脚

PINSEL4&=~(3<<20);

PINMODE2&=~(3<<10);//全部使能上拉电阻

PINMODE4&=~(3<<20);

FIO1DIR|=1<<5;//P15输出

FIO2DIR&=~(1<<10);//P210输入

FIO1MASK=0x00;

FIO2MASK=0x00;//将1和2的数据掩码全部清除

}

voidGPIOSet(u8value)

{

if(value)FIO1SET|=(1<<5);

elseFIO1CLR|=(1<<5);

}

//p210按下高电平平时低电平

u8GPIOGet(void)

{

if((FIO2PIN&(1<<10))==0)

{

return1;

}

else

{

return0;

}

}



需要注意的是,对于P0和P1当使用FIO驱动的时候需要修改SCS修改系统控制寄存器,如下



否则就算是写入了FIO寄存器也不会体现在实际管脚上


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭