📄 gpio.c
字号:
/*********************************************************************
* Copyright (c) 2011-2012,李士伟
* All rights reserved.
*文 件 名:gpio.c
*描 述:通用IO端口驱动源文件
*当前版本:V1.00
*作 者:李士伟
*创建日期:2012.01.26
**********************************************************************/
#include <drivers\lpc2103\gpio.h>
#include <drivers\lpc2103\lpc2103.h>
#include <drivers\lpc2103\pinsel.h>
#include <kernel\asm.h>
/*********************************************************************
*函 数 名:GPIO_Init
*描 述:配置GPIO引脚
*输入参数:gpio_pin: 32个位对应GPIO的32个引脚,
* 置位相应位表示选择该引脚为GPIO端口
*输出参数:无
*返 回 值:0,配置失败,1,配置成功
*注 意:
**********************************************************************/
INT32U GPIO_Init(INT32U gpio_pin)
{
INT8U i = 0;
SCS &= 0xfe; /*通过APB地址访问GPIO端口(低速GPIO模式)*/
for (i=0; i<32; i++)
{
if (gpio_pin & (0x00000001 << i))
{
if (PIN_Configure(i) == 0)
{
/* 配置失败,释放已配置的PIN */
if (i == 0 )
{
return 0;
}
do
{
if (gpio_pin & (0x00000001 << i))
{
PIN_Release(i-1);
}
}
while (i--);
return 0;
}
}
}
return 1;
}
/*********************************************************************
*函 数 名:GPIO_Dir
*描 述:配置GPIO端口的输入输出方向
*输入参数:gpio_pin: 32个位对应GPIO的32个引脚置位相应位表示选择该引脚
* in_out为1表示输出,为0表示输入
*输出参数:无
*返 回 值:无
*注 意:
**********************************************************************/
void GPIO_Dir(INT32U gpio_pin, INT32U in_out)
{
if (in_out)
{
IODIR |= gpio_pin; /*output*/
}
else
{
IODIR &= ~gpio_pin; /*input*/
}
}
/*********************************************************************
*函 数 名:GPIO_Read
*描 述:读GPIO端口IOPIN寄存器值
*输入参数:无
*输出参数:无
*返 回 值:IOPIN寄存的值
*注 意:
**********************************************************************/
INT32U GPIO_Read(void)
{
return IOPIN;
}
/*********************************************************************
*函 数 名:GPIO_ReadPin
*描 述:读GPIO端口一个引脚的值
*输入参数:gpio_pin:32个位只能置位一个位(引脚),否则返回值不确定
*输出参数:
*返 回 值:返回1表示该引脚为高电平,0表示低电平
*注 意:
**********************************************************************/
INT32U GPIO_ReadPin(INT32U gpio_pin)
{
if (IOPIN & gpio_pin)
{
return 1;
}
else
{
return 0;
}
}
/*********************************************************************
*函 数 名:
*描 述:写一个字到GPIO端口32个引脚
*输入参数:a: INT32U 数值
*输出参数:无
*返 回 值:无
*注 意:
**********************************************************************/
void GPIO_Write(INT32U a)
{
IOPIN = a;
}
/*********************************************************************
*函 数 名:GPIO_Set
*描 述:GPIO端口引脚脚输出高电平
*输入参数:gpio_pin: 32个位只能置位一个位(引脚)
*输出参数:
*返 回 值:
*注 意:
**********************************************************************/
void GPIO_Set(INT32U gpio_pin)
{
IOSET |= gpio_pin;
}
/*********************************************************************
*函 数 名:GPIO_Clr
*描 述:GPIO端口引脚输出低电平
*输入参数:gpio_pin 32个位只能置位一个位(引脚)
*输出参数:
*返 回 值:
*注 意:
**********************************************************************/
void GPIO_Clr(INT32U gpio_pin)
{
IOCLR |= gpio_pin;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -