📄 gpio.c
字号:
/****************************************Copyright (c)**************************************************
** 广州周立功单片机发展有限公司
** 研 究 所
** 产品一部
**
** http://www.zlgmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名:
**创 建 人: GPIO.c
**最后修改日期:
**描 述: LPC213x系列GPIO操作软件包
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人:
** 版 本:
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
** 修改人:
** 版 本:
** 日 期:
** 描 述:
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人:
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include "config.h"
/*********************************************************************************************************
** 函数名称:P0_GPIOInit()
** 功能描述:将P0口中,num为1的位初始化为GPIO
** 输 入: num 需要初始化的管脚
** 输 出: 无
** 全局变量:
** 调用模块: P0_GPIOInit((1<<4)|(1<<16)); //将P0.4和P0.16初始化为GPIO
**
** 作 者:
** 日 期:
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void P0_GPIOInit(uint32 num)
{
uint8 i;
if((num&0xffff)!=0) //初始化引脚P0.0~P0.15
for(i=0;i<16;i++)
if((num&(1<<i))!=0)
PINSEL0 = PINSEL0 & (~(0x03<<(2*i)));
if(num>0xffff) //初始化引脚P0.16~P0.31
for(i=16;i<32;i++)
if((num&(1<<i))!=0)
PINSEL1 = PINSEL1 & (~(0x03<<(2*(i-16))));
}
/*********************************************************************************************************
** 函数名称:P1_GPIOInit()
** 功能描述:将P1口中,num为1的位初始化为GPIO
** 输 入: num 需要初始化的管脚
** 输 出: 无
** 全局变量:
** 调用模块:
**
** 作 者:
** 日 期:
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void P1_GPIOInit(uint32 num)
{
if((num&(0x3ff<<16))!=0) //P1.16~P1.25
PINSEL2 = PINSEL2 & (~(1<<3));
if(num>(0x3ff<<16)) //P1.26~P1.31
PINSEL2 = PINSEL2 & (~(1<<2));
}
/*********************************************************************************************************
** 函数名称:P0_GPIODir()
** 功能描述:在P0口中,设置num为1的位输入,输出方式
** 输 入: num 需要初始化的管脚
** dir :管脚的输入输出方向,1--输出,0--输入
** 输 出: 1--操作成功,0--操作失败
** 全局变量:
** 调用模块:
**
** 作 者:
** 日 期:
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 P0_GPIODir(uint32 num,uint8 dir)
{
if((dir!=0)&&(dir!=1)) return(0);
if(dir==1) IO0DIR = (IO0DIR&(~num))|num;
else IO0DIR = (IO0DIR&(~num));
return(1);
}
/*********************************************************************************************************
** 函数名称:P1_GPIODir()
** 功能描述:在P1口中,设置num为1的位输入,输出方式
** 输 入: num 需要初始化的管脚
** dir :管脚的输入输出方向,1--输出,0--输入
** 输 出: 1--操作成功,0--操作失败
** 全局变量:
** 调用模块:
**
** 作 者:
** 日 期:
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 P1_GPIODir(uint32 num,uint8 dir)
{
if((dir!=0)&&(dir!=1)) return(0);
if(dir==1) IO1DIR = (IO1DIR&(~num))|num;
else IO1DIR = (IO1DIR&(~num));
return(1);
}
/*********************************************************************************************************
** 函数名称:P0_GPIOSet()
** 功能描述:在P0口中,置位num为1的位所对应的管脚
** 输 入: num 需要设置的管脚
** 输 出: 无
** 全局变量:
** 调用模块:
**
** 作 者:
** 日 期:
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void P0_GPIOSet(uint32 num)
{
IO0SET = (IO0SET&(~num))|num;
}
/*********************************************************************************************************
** 函数名称:P0_GPIOClr()
** 功能描述:在P0口中,清零num为1的位所对应的管脚
** 输 入: num 需要设置的管脚
** 输 出: 无
** 全局变量:
** 调用模块:
**
** 作 者:
** 日 期:
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void P0_GPIOClr(uint32 num)
{
IO0CLR = (IO0CLR&(~num))|num;
}
/*********************************************************************************************************
** 函数名称:P1_GPIOSet()
** 功能描述:在P1口中,置位num为1的位所对应的管脚
** 输 入: num 需要设置的管脚
** 输 出: 无
** 全局变量:
** 调用模块:
**
** 作 者:
** 日 期:
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void P1_GPIOSet(uint32 num)
{
IO1SET = (IO1SET&(~num))|num;
}
/*********************************************************************************************************
** 函数名称:P1_GPIOClr()
** 功能描述:在P1口中,清零num为1的位所对应的管脚
** 输 入: num 需要设置的管脚
** 输 出: 无
** 全局变量:
** 调用模块:
**
** 作 者:
** 日 期:
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void P1_GPIOClr(uint32 num)
{
IO1CLR = (IO1CLR&(~num))|num;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -