Thread 中讨论的其他器件:EK-TM4C123GXL、
我正在编写一个简单的代码、其工作方式如下:
按 SW1
当 SW1被释放时、一个下降沿被检测到并且与引脚 PF4相对应的 ISR 被执行并且一个 LED 被打开。
类似地、它在按下 SW2时发生。
我无法正确配置中断。
在用户指南中、有针对外设特定中断和 NVIC 中断的 API、如何知道要使用哪一个?
请就这一问题向我提供指导。
我正在发布我的代码以供参考。
#include
#include
#include
#include
#include
#include
#define GPIOCR (*(unsigned long *) 0x40025524)
#define GPIOLOCK (*(unsigned long *) 0x40025520)
void GPIO_Interrupt_Init (void);
void SW1isr (void);
void SW2isr (void);
int main (空)
{
GPIO_Interrupt_Init();
返回0;
}
void GPIO_Interrupt_Init()
{
void (* SW1_int)(void);
void (* SW2_int)(void);
SW1_int =&SW1isr;
SW2_int =&SW2isr;
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
GPIOLOCK = 0x4C4F434B;
GPIOCR =0xFF;
GPIOIntRegisterPin (GPIO_PORTF_BASE、GPIO_PIN_4、SW1_INT);
GPIOIntRegisterPin (GPIO_PORTF_BASE、GPIO_PIN_0、SW2_INT);
GPIOPinTypeGPIOInput (GPIO_PORTF_BASE、(GPIO_PIN_0 | GPIO_PIN_4));
GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、(GPIO_PIN_2 | GPIO_PIN_3));
GPIOIntTypeSet (GPIO_PORTF_BASE、(GPIO_PIN_0 | GPIO_PIN_4)、GPIO_FALLING_EDGE);
GPIOIntEnable (GPIO_PORTF_BASE、GPIO_PIN_0|GPIO_PIN_4);
}
void SW1isr()
{
GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、~(uint8_t) GPIOPinRead (GPIO_PORTF_BASE、GPIO_PIN_2));
GPIOIntClear (GPIO_PORTF_BASE、GPIO_INT_PIN_4);
}
void SW2isr()
{
GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_3、~(uint8_t) GPIOPinRead (GPIO_PORTF_BASE、GPIO_PIN_3));
GPIOIntClear (GPIO_PORTF_BASE、GPIO_INT_PIN_0);
}