?? mian.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 + -