我无法启动 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");
}