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

📄 mian.c

📁 LPC1114_例程和教程
💻 C
字号:
/****************************************************
*名  称:	GPIO测试文件							*
*功  能:   测试GPIO中断							*
*备  注:	2011.1.9								*
*贞明电子:http://shop58972409.taobao.com			*
*****************************************************/
/**************** 头文件调用&&宏定义 ****************/
#include "LPC11xx.h"
#include "GPIO.H"
/******************* 全局变量定义 *******************/

/********************** 函数声明 ********************/
__inline void delay_ms(uint32_t a);
/********************** 主函数 **********************/
int main(void)
{
 	SystemInit();	  			//系统初始化,包括使能时钟
	GPIOInit();					//GPIO初始化,使能GPIO模块时钟
	GPIOSetDir(PORT2,8,1);		//设置P2.8为输出,LED1
	GPIOSetDir(PORT2,9,1);		//设置P2.9为输出,LED2
	GPIOSetDir(PORT3,4,1);		//设置P3.4为输出,LED3
	LPC_IOCON->PIO2_11=0x00;	//设置P2.11为GPIO功能
	LPC_IOCON->PIO1_4=(1<<7);	//注意:当有AD功能的引脚作为输入时,需要配置为数字输入。
	LPC_IOCON->PIO2_11=0x00;	//设置P2.11为GPIO功能
	GPIOSetDir(PORT2,11,0);		//设置P2.11为输入 KEY1
	GPIOSetDir(PORT1,4,0);		//设置P1.4为输入  KEY2
	GPIOSetDir(PORT3,5,0);		//设置P3.5为输入  KEY3
	GPIOSetValue(PORT2,8,1);	//灭3个灯
	GPIOSetValue(PORT2,9,1);
	GPIOSetValue(PORT3,4,1);
	//GPIO中断的初始化
	GPIOSetInterrupt(PORT2,11,0,0,1);//端口号, 位地址, sense, single/doublee, 上升/下降沿
	GPIOSetInterrupt(PORT3,5,0,0,1);
	GPIOSetInterrupt(PORT1,4,0,0,1);
	GPIOIntEnable(PORT2,11);		 //使能该端口中断P2_11
	GPIOIntEnable(PORT3,5);			 //使能该端口中断P3_5 (LPC1343为P2_5)
	GPIOIntEnable(PORT1,4);			 //使能该端口中断P1_4
	delay_ms(1000);
	while(1)
	{
	}
}
/********************** 函数定义 ********************/
/****************************************************
*名  称:	延时函数    							*
*参  数:   延时时间								*
*备  注:	内联函数    							*
*****************************************************/
__inline void delay_ms(uint32_t a)    //1ms延时函数
{                           
uint32_t i;
while( --a != 0){
   for(i = 0; i<5500; i++);
}             
}

/****************************************************/
/******************** 中断服务函数 ******************/
/****************************************************
*名  称:	PIOINT1_IRQHandler    					*
*参  数:   无										*
*备  注:	使用GPIO一个管脚(端口1的管脚4)作为中断源*
*****************************************************/
void PIOINT1_IRQHandler(void)		//中断服务函数
{
  uint32_t regVal;
  regVal = GPIOIntStatus( PORT1, 4 ); //读取该IO组某位的中断状态
  if ( regVal )
  {
  	LPC_GPIO2->DATA^=(1<<9);	//P2_9闪动1次	   LED2	
	GPIOIntClear( PORT1, 4);		//清除中断标志
  }		
  return;
}
/*****************************************************
*名  称:	PIOINT2_IRQHandler    					 *
*参  数:   无										 *
*备  注:	使用GPIO一个管脚(端口2的管脚11)作为中断源*
******************************************************/
void PIOINT2_IRQHandler(void)
{
  uint32_t regVal;
  regVal= GPIOIntStatus( PORT2, 11);	
  if(regVal)
  {	
  	LPC_GPIO2->DATA^=(1<<8);	//P2_8闪动1次		LED1
	GPIOIntClear( PORT2, 11);
  }	
  return;
}
/*****************************************************
*名  称:	PIOINT2_IRQHandler    					 *
*参  数:   无										 *
*备  注:	使用GPIO一个管脚(端口3的管脚5)作为中断源 *
******************************************************/
void PIOINT3_IRQHandler(void)					 
{
  uint32_t regVal;
  regVal= GPIOIntStatus( PORT3, 5);	
  if(regVal)
  {	 	
	LPC_GPIO3->DATA^=(1<<4);		//P3_4闪动1次  LED3
	GPIOIntClear( PORT3, 5);
  }	
  return;
}

⌨️ 快捷键说明

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