4、部分程序 /* 调用库函数的头文件 */ #include "hw_memmap.h" #include "hw_ints.h" #include "hw_nvic.h" #include "hw_types.h" #include "interrupt.h" #include "sysctl.h" #include "gpio.h" #define LED GPIO_PIN_0 /* 定义LED的引脚PF0 */ #define KEY GPIO_PIN_2 /* 定义KEY的引脚PE2 */ /********************************************************************************************************* ** Function name: main ** ** Descriptions: 中断初始化 ** ** input parameters: NONE ** output parameters: NONE ** ** Returned value: NONE ** ** Created by: ** Created Date: **-------------------------------------------------------------------------------------------------------- ** Modified by: ** Modified date: **-------------------------------------------------------------------------------------------------------- *********************************************************************************************************/ int main (void) { SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); /* 使能GPIOF模块 */ /* 设置PF0为2MA,推挽输出 */ GPIOPadConfigSet(GPIO_PORTF_BASE, LED, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD); GPIODirModeSet(GPIO_PORTF_BASE, LED, GPIO_DIR_MODE_OUT); /* 配置LED为输出 */ /* 设置PE2为2MA,上拉输入 */ SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE); GPIOPadConfigSet(GPIO_PORTE_BASE, KEY, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU); GPIODirModeSet(GPIO_PORTE_BASE, KEY, GPIO_DIR_MODE_IN); /* 配置KEY为输入 */ IntMasterEnable(); /* 使能总中断 */ IntEnable(INT_GPIOE); /* 使用GPIOE中断 */ GPIOIntTypeSet(GPIO_PORTE_BASE,KEY,GPIO_FALLING_EDGE); /* 下降沿触发中断 */ GPIOPinIntEnable(GPIO_PORTE_BASE, KEY); /* 使能KEY3中断 */ while (1) { ; /* 等待中断 */ } } /********************************************************************************************************* ** Function name: GPIO_Port_E_ISR ** ** Descriptions: 中断服务程序 ** ** input parameters: NONE ** output parameters: NONE ** ** Returned value: NONE ** ** Created by: ** Created Date: **-------------------------------------------------------------------------------------------------------- ** Modified by: ** Modified date: **-------------------------------------------------------------------------------------------------------- *********************************************************************************************************/ void GPIO_Port_E_ISR (void) { long IntStatus; IntStatus = GPIOPinIntStatus(GPIO_PORTE_BASE, true); /* 获取中断状态 */ GPIOPinIntClear(GPIO_PORTE_BASE, IntStatus); /* 清GPIO中断 */ if ( IntStatus & KEY ) { /* 判断按键是否按下 */ /* 使LED状态改变 */ GPIOPinWrite(GPIO_PORTF_BASE, LED, LED^GPIOPinRead(GPIO_PORTF_BASE,LED)); } } /********************************************************************************************************* END FILE
InterruptDome.rar
(66.6 KB, 下载次数: 55)
[ 本帖最后由 sdjntl 于 2010-12-20 13:29 编辑 ] |