请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C123GH6PGE 工具/软件:TI C/C++编译器
你好。
中断 ISR 跳转有两种不同的状态。
Case1 (无跳转)、 CASE2 (跳转正常), 为什么它不同?
在两种情况下,这是否都相同?
有什么区别?
谢谢。
[案例1]
void
PM0IntHandler (void)
{
ROM_IntMasterDisable ();
GPIOIntClear (GPIO_PORTM_BASE、GPIO_PIN_0);
UARTprintf ("GPIOM 下降沿中断\n");
ROM_IntMasterEnable ();
}
int
main (void)
{
//为板载 LED 启用 GPIOG。
//为板载向上按钮启用 GPIOM。
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOG);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIO2
);// GPIOG 端口 PIN2,输出组 GPIOPinTypeGPIOOutput (GPIO_PORTG_base、GPIO_PIN_2);
// UART Func Call
Config2,GPIO_PIN_PIN_0|GPIO_PIN_GPIO_SET_GPIO_PIN_GPIO_PIN_PIN_PIN_0|GPIO0|GPIO_PIN_PIN_PIN_PIN_GPIO_SET_GPIO_PIN_PIN_PIN_PIN_PIN_PIN_PIN_PIN_0|GPIO_PIN_PIN_PIN_PIN_PIN_PIN_PIN_PIN_0|GPIO_SET_PIN_PIN_PIN_PIN_PIN_PIN_PIN_PIN_PIN_PIN_PIN_PIN_PIN_GPIO_0_PIN_PIN_PIN_PIN_PIN_PIN_PIN_PIN_PIN_PIN_PIN_PIN_PIN_PIN_PIN_PIN_PIN_PIN_PIN_PIN_PIN_
// GPIOIOM 中断类型设置(GPIO_LOW_LEVEL 或 GPIO_FALLING_EDGE)
GPIOIntTypeSet (GPIO_PORTM_BASE、GPIO_PIN_0、GPIO_FALLING_EDGE);
// GPIOPin0、中断处理程序重定向
器// GPIOIntRegister (GPIO_PORTM_BASE、PM0IntHandler);
// GPIO_Interrupt
(GPIO_ENABLE_INT_ENINT
);// GPIOInt_GPIO_ENAB_INT_ENABLEINT (GPIO_ENABLE_INT_ININT)
while (1)
{
//打开 LED。
GPIOPinWrite (GPIO_PORTG_base、GPIO_PIN_2、0x04);
UARTprintf ("LED on \n");
SysCtlDelay ((SysCtlClockGet ()/3)*0.1); //100ms 延迟、(高电平)
//关闭 LED。
GPIOPinWrite (GPIO_PORTG_base、GPIO_PIN_2、~(0x04));
UARTprintf ("LED off\n");
SysCtlDelay ((SysCtlClockGet ()/3)*0.05); //50ms 延迟、(低)
UARTprintf ("\n");
}
}
Keil 的 startup_rvmdk.S
外部 PM0IntHandler
;矢量表
DCD PM0IntHandler ;GPIO 端口 M
。
。
。
[案例2]
// GPIOM Pin0,中断处理程序寄存器
GPIOIntRegister (GPIO_PORTM_BASE、PM0IntHandler);
Keil 的 startup_rvmdk.S
; 外部 PM0IntHandler
;矢量表
DCD IntDefaultHandler ;GPIO 端口 M
。
。
。