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

📄 pinset.c

📁 LPC2103的绝大部分驱动
💻 C
字号:
#include "config.h"

/********************************************************************************************************
*
* 函数名称:PinFuncSelct()
*
* 功能描述:引脚功能选择
*
* 入口参数:PinNo--引脚号,以0起始;Function--欲选择的功能
* 出口参数:无
*
********************************************************************************************************/

void PinFuncSelct(unit8 PinNo, unit32 Function)
{
	unit32 Mask;
	
	if(PinNo < 16)		
	 /*
	 决定功能的寄存器有两个,PINSEL0和PINSEL1,各决定前16个引脚和后16个引脚,是32位的寄存器,每两位对应一个具体的引脚,在设置一个引脚对应的功能时,肯定是先将
	 对应的功能位(有两位)清零,&(~Mask)就起这个作用,再与要设置的值相或,|Function就是这个作用,所以Mask在对应的两个位上必须全是1,其他位上必须全是0
	 */                   
	{
		Mask = 0x00000003 << (PinNo*2);        //Mask在要设置的两个对应位上置1
		Function <<= (PinNo*2);					//假设引脚号是2,则它在PINSEL0的对应位就是2*2,2*2+1,即4,5位,把要设置的值搬移到这个位上来
		
    	PINSEL0 = (PINSEL0&(~Mask))|Function;//在要设置的位上先清零(与就是起清零的作用),再或,完成设置
	}
	else
	{
		Mask = 0x00000003 << ((PinNo-16)*2);
		Function <<= ((PinNo-16)*2);
		
    	PINSEL1 = (PINSEL1&(~Mask))|Function;
	}
}

/********************************************************************************************************
*
* 函数名称:GPIODirSet()
*
* 功能描述:引脚GPIO功能输入输出方向选择
*
* 入口参数:PinNo--引脚号,以0起始;bDirIn--欲选择方向,TRUE为输出,FALSE输入
* 出口参数:无
*
********************************************************************************************************/

void GPIODirSet(unit8 PinNo, unit8 bDirOut)
{
	unit32 IO_Dir;
	unit32 Mask = (0x00000001 << PinNo);
	
	if(bDirOut == TRUE) 
		IO_Dir = (0X00000001 << PinNo);
	else
		IO_Dir = 0X00000000;
	
	IODIR = (IODIR&(~Mask))|IO_Dir;//IODIR&(~Mask)这句话的作用是在不改变其他引脚的状态下(Mask的取反已经使其他位都为1),然后使要改变的位先清零,然后或的作用就是决定要改改变的位的状态
}

⌨️ 快捷键说明

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