📄 pinsel.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 + -