CYT4BF gpio 中断不起作用。

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

我目前正在使用 ModustoolBox 为 CYT4BF 创建一个项目。
我正在开发一个程序,该程序在按下按钮时利用 GPIO 中断来切换 LED。
尽管设置了 GPIO 中断标志,但回调函数并未被触发。
请指出代码中的任何错误或错误。

在主函数的无限循环中调用 ButtonInthandler 函数时,它可以正常工作。 但是,当尝试启用 NVIC 并在检测到中断时调用 ButtonInthandler 函数时,该函数可能无法按预期调用。

这是源代码:

const cy_stc_sysint_t intrCfg =
{
    .intrsrc=ioss_interrupts_gpio_16_IRQn, /* Interrupt source is GPIO port 16 interrupt */
    .intrPriority = GPIO_INTERRUPT_PRIORITY                            /* Interrupt priority is 7 */
};

int main(void)
{
    cy_rslt_t result;

    /* Initialize the device and board peripherals */
    result = cybsp_init();

    /* Board initialize failed. Stop program execution */
    if (result != CY_RSLT_SUCCESS)
    {
        CY_ASSERT(0);
    }

    __enable_irq(); /* Enable global interrupts. */
    init_cycfg_pins();
    Cy_GPIO_ClearInterrupt(USER_SW_PORT, USER_SW_PIN);
    Cy_SysInt_Init(&intrCfg, ButtonIntHandler);
    NVIC_EnableIRQ(intrCfg.intrSrc);
    for(;;);
}

void ButtonIntHandler(void)
{
    uint32_t intStatus;

    /* If falling edge detected */
    intStatus = Cy_GPIO_GetInterruptStatusMasked(USER_SW_PORT, USER_SW_PIN);
    if (intStatus != 0ul)
    {
        Cy_GPIO_ClearInterrupt(USER_SW_PORT, USER_SW_PIN);

        /* Toggle LED */
        Cy_GPIO_Inv(USER_LED_PORT, USER_LED_PIN);
    }
}

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/TRAVEO-T2G/CYT4BF-gpio-interrupt-is-not-working/td-p/649266

0 点赞
1 回复
Translation_Bot
Community Manager
Community Manager
Community Manager

@NEM

请问你能仔细检查一下你的中断结构配置吗?
看来中断源应该是.intrsrc 而不是 .intrsrc。

我希望这会有所帮助。 谢谢。

问候,
Mashur_

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/TRAVEO-T2G/CYT4BF-gpio-interrupt-is-not-working/m-p/650054

0 点赞