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割り込みフラグが設定されていますが、コールバック関数はトリガーされていません。
コードの間違いやエラーを指摘してください。

main関数の無限ループ内で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 件の賞賛