This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM2431:设置 GPIO 中断时出现问题

Guru**** 2303350 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1322919/am2431-trouble-setting-up-gpio-interrupt

器件型号:AM2431

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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想起来了,我需要调用 Board_gpioInit ();首先