⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gpio.c

📁 Rabbit 32Bit RTOS源代码
💻 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 + -