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

📄 pinsel.c

📁 Rabbit 32Bit RTOS源代码
💻 C
字号:
/*********************************************************************
*                   Copyright (c) 2011-2012,李士伟
*                     All rights reserved.
*文 件 名:pinsel.c
*描    述:引脚连接模块配置源文件
*当前版本:V1.00
*作    者:李士伟
*创建日期:2012.01.26
**********************************************************************/
#include <kernel\asm.h>
#include <drivers\lpc2103\pinsel.h>

/*
  pin配置登记锁
  32个引脚使用时对应的PINLock位标记为1,未使用标记为0
*/
INT32U PINLock;

/*********************************************************************
*函 数 名:PIN_Init
*描    述:初始化PIN管理,PINLock = 0 表示PIN所有的引脚没有被申请配置
*输入参数:无
*输出参数:无
*返 回 值:无
*注    意:
**********************************************************************/
void PIN_Init(void)
{
    OS_ENTER_CRITICAL();
    PINLock = 0x00000000;
    OS_EXIT_CRITICAL();
}

/*********************************************************************
*函 数 名:PIN_Configure
*描    述:配置PIN引脚功能,
*输入参数:pin_def: 引脚配置参数,请参考pinsel.h文件
*输出参数:无
*返 回 值:0,配置失败,有其它模块正在使用该引脚,1,配置成功
*注    意:
**********************************************************************/
INT32U PIN_Configure(INT32U pin_def)
{
    INT32U pin = 0;

    pin = (pin_def & 0xff); /* 提取引脚号 */

    OS_ENTER_CRITICAL();
    if (PINLock & (0x00000001 << pin))
    {
        OS_EXIT_CRITICAL();
        return 0;
    }
    else
    {
        PINLock |= (0x00000001 << pin);
        OS_EXIT_CRITICAL();
    }

    if (pin < 16)
    {
        pin = pin << 1;
        PINSEL0 &= ~((0x00000003) << pin);
        PINSEL0 |= (pin_def >> 8) << pin;
    }
    else
    {
        pin = (pin - 16) << 1;
        PINSEL1 &= ~((0x00000003) << pin);
        PINSEL1 |= (pin_def >> 8) << pin;
    }

    return 1;
}

/*********************************************************************
*函 数 名:PIN_Release
*描    述:释放引脚,供其它模块再次配置
*输入参数:pin_def:引脚参数
*输出参数:无
*返 回 值:无
*注    意:
**********************************************************************/
void PIN_Release(INT32U pin_def)
{
    INT32U pin = 0;

    pin = (pin_def & 0xff); /* 提取引脚号 */
    OS_ENTER_CRITICAL();
    PINLock &= ~((0x00000001)<<pin);
    OS_EXIT_CRITICAL();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -