GPIO(AHB总线)和GPIO(APB总线)之间的外部中断用法有何不同?

时间:2019-06-27 09:12:37

标签: c arm

我已将GPIO PR4配置为在上升沿用作外部中断触发器,但中断ISR没有触发。相同的代码在GPIO PC5上运行良好。我的平台是Cortex M3(TI F28M36x)。

GPIO PC5与PR4(不同的中断源)的使用效果相同。 我检查了PR4中的外部波形(高于3.0V的高电平)。 我发现PR4使用AHP总线,而PC5使用APB总线,我想知道这种差异会导致不同的结果吗? 我的配置代码如下:

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOR);
GPIOPinTypeGPIOInput(GPIO_PORTR_BASE, GPIO_PIN_4);
GPIOPinIntClear(GPIO_PORTR_BASE,GPIO_PIN_4);
GPIOIntTypeSet(GPIO_PORTR_BASE, GPIO_PIN_4, GPIO_BOTH_EDGES);   
IntRegister(INT_GPIOR, IntGPIORHandler);
IntEnable(INT_GPIOR);
GPIOPinIntEnable(GPIO_PORTR_BASE, GPIO_PIN_4);

在CCS工具中进行调试时,从未输入过ISR(IntGPIORHandler)。

1 个答案:

答案 0 :(得分:2)

我在TI社区找到了解决方案。它不会导致AHB问题,但driverlib太旧了。 https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/552983?tisearch=e2e-sitesearch&keymatch=GPIO%20port%20R%20interrupt

我使用这些代码代替“ IntRegister()和IntEnable()”。

IntRegister(148, IntGPIORHandler);
HWREG(0xE000E110) = 1 << (132 - 128);