请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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
。
。
。