我无法启动 GPIO ISR。
我将遵循 GPIO_INPUT_INTERRUPT_am243x 示例代码、但我要使用引脚 GPIO0_76
我没有配置某些内容吗? 我是否具有正确的 intNum?
这是我的代码看起来的样子
void callback(void *args);
void gpio_hal_configure_interrupt(void) { int32_t retVal; uint32_t gGpioBaseAddr = (uint32_t) AddrTranslateP_getLocalAddr(CSL_GPIO0_BASE) uint32_t pinNum = 76; HwiP_Params hwiPrms; static HwiP_Object gGpioHwiObject; GPIO_setDirMode(gGpioBaseAddr, pinNum, GPIO_DIRECTION_INPUT); GPIO_setTrigType(gGpioBaseAddr, pinNum, GPIO_TRIG_TYPE_FALL_EDGE); GPIO_bankIntrEnable(gGpioBaseAddr, GPIO_GET_BANK_INDEX(pinNum)); /* Register pin interrupt */ HwiP_Params_init(&hwiPrms); hwiPrms.intNum = CSLR_R5FSS0_CORE0_INTR_MAIN_GPIOMUX_INTROUTER0_OUTP_8; hwiPrms.callback = &callback; hwiPrms.args = (void *) pinNum; retVal = HwiP_construct(&gGpioHwiObject, &hwiPrms); assert(retVal == SystemP_SUCCESS);}
void callback(void *args){ uint32_t pinNum = (uint32_t)args; uint32_t intrStatus, pinMask; pinMask = GPIO_GET_BANK_BIT_MASK(pinNum); uint32_t gGpioBaseAddr = (uint32_t) AddrTranslateP_getLocalAddr(CSL_GPIO0_BASE) /* Get and clear bank interrupt status */ intrStatus = GPIO_getBankIntrStatus(gGpioBaseAddr, GPIO_GET_BANK_INDEX(pinNum)); GPIO_clearBankIntrStatus(gGpioBaseAddr, GPIO_GET_BANK_INDEX(pinNum), intrStatus); printf("Interrupt"); }