请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C123GH6PM 工具/软件:Code Composer Studio
你(们)好
我将使用2个开关(PF0和 PF4)作为 GPIO 中断。 按下 SW1时、打开红色;按下 SW2时、打开蓝色。
以下是我的代码:
#include #include #include "inc/hw_memmap.h" #include "inc/hw_types.h" #include "driverlib/sysctl.h" #include "driverlib/gpio.h" #include "inc/hw_ints.h" #include "unlock_pf_pf0/unlock_sbsbsb.h"( sbvoid -/sw2)-/sw2、sbid-/-/uid-/uid-/-/-void_sw2、sbid-/-/-/uid-/-/-void -/-/-id_sw-/-/-/-/uid_sw-/-/uid-/-/-/-/-/-void -/-/-/-/-/-/-/-/-/-/-/-void /-/ void SW1_ISR (void) { GPIOIntClear (GPIO_PORTF_BASE、GPIO_INT_PIN_4);//清除 PF4上的标志中断 SW1_Flag=1;//设置标志以指示 SW1已按下 } void SW2_ISR (void) { GPIOIntClear (GPIO_PORTF_BASE、GPIO_INT_PIN_0);//清除 PF0上的标志中断 SW2_Flag=1;//设置标志以指示 SW2已按下 } //-------------------------------------- int main (void) { SysCtlClockSet (SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHz|SYSCTL_OSC_MAIN); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF); GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_1_GPIO_PIN_2|GPIO_PIN_3); GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_1| GPIO_PIN_2| GPIO_PIN_3、0); UnlockPF0 (GPIO_PORTF_BASE、GPIO_PIN_0); GPIOPinTypeGPIOInput (GPIO_PORTF_BASE、GPIO_PIN_0|GPIO_PIN_4); GPIOPadConfigSet (GPIO_PORTF_BASE、GPIO_PIN_0|GPIO_PIN_4、GPIO_Strength _8mA、GPIO_PIN_TYPE_STD_WPU); GPIOIntTypeSet (GPIO_PORTF_BASE、GPIO_PIN_0|GPIO_PIN_4、GPIO_FALLING_EDGE); GPIOIntRegister (GPIO_PORTF_BASE、&SW2_ISR);//针对 PF0上的中断进行寄存器 GPIOIntEnable (GPIO_PORTF_BASE、GPIO_INT_PIN_0); GPIOIntRegister (GPIO_PORTF_BASE、SW1_ISR); GPIOIntEnable (GPIO_PORTF_BASE、GPIO_INT_PIN_4);//针对 PF4的中断寄存器 IntEnable (INT_GPIOF); IntMasterEnable(); while (1) { GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_1_GPIO_PIN_2、0); if (SW1_Flag)//如果按下 SW1、清除 Flag、将 LED 变为红色。 { SW1_Flag=0; GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_1、0x02); SysCtlDelay (4000000); } if (SW2_Flag)//如果按下 SW2、清除 Flag、打开 LED 蓝色。 { SW2_Flag=0; GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、0x04); SysCtlDelay (4000000); } }
它不起作用、但当我注释掉 GPIOIntRegister 两行(GPIO_PORTF_BASE、SW1_ISR)中的一行时、它起作用。
请帮帮我。