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.

[参考译文] MSPM0G1106:关于中断问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1401656/mspm0g1106-about-the-interrupt-problem

器件型号:MSPM0G1106

工具与软件:

你好,我做了以下软件和设置,检查硬件,但它不工作,你能帮助吗?

#include
#include "ti_msp_dl_config.h"

#define 延迟(160000000)
整型 val;

void GPIOA_IRQHandler (void){
// Kesme işleyici fonksiyonu: Kesme gerçekleştiğinde bu fonksiyon çağrılır .
DL_GPIO_clearInterruptStatus (GPIO_A_PORT、GPIO_A_SW1_PIN_7_PIN);// Kesme bayrağını temizle
DL_GPIO_setUpperPinsPolarity (GPIO_A_PORT、GPIO_A_SW1_PIN_7_PIN);
// DL_GPIO_setLowerPinsPolarity (GPIO_A_PORT、GPIO_A_SW1_PIN_7_PIN);// Yükselen kenar
蜂鸣器开启;
VAL=1;
}

int main (void)

SYSCFG_DL_init ();


// DL_GPIO_initDigitalInput (GPIO_A_SW1_PIN_7_PIN);//端口 ve 引脚 kombinasyonunu doğru yapılandırın
DL_GPIO_setInterrupt (GPIO_A_PORT、GPIO_A_SW1_PIN_7_PIN);
// DL_GPIO_setUpperPinsPolarity (GPIO_A_PORT、GPIO_A_SW1_PIN_7_PIN);// Yükselen kenar yapılandırması
DL_GPIO_enableInterrupt (GPIO_A_PORT、GPIO_A_SW1_PIN_7_PIN);// Kesmeyi etkinleştirin

// Kesme işleyicisini kaydet
NVIC_EnableIRQ (GPIOA_INT_IRQn);

VAL=0;

while (1){
// toggle_gpio_pin ();

}
}

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

    您好!

    请使用 GROUP1_IRQHandler 而不是 GPIOA_IRQHandler。

    此致、

    Zoey

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

    非常感谢您的建议。 我将在下面添加我使用的代码序列、希望它能够被使用并提供帮助。


    #include "GPIO_Func.h"
    #include "ti_msp_dl_config.h"
    int val=0;

    int main (void)

    SYSCFG_DL_init ();



    DL_TimerA_enableInterrupt;//计时器 kesmesini etkinleştir
    DL_TimerA_startCounter (TIMER_0_INST);// Timer'μ ı başlat
    NVIC_EnableIRQ (GPIO_SWITCHS_GPIOA_INT_IRQN);
    NVIC_EnableIRQ (GPIO_SWITCHS_GPIOB_INT_IRQN);
    NVIC_EnableIRQ (TIMER_0_INST_INT_IRQN);// Timer kesmesini NVIC üzerinde etkinleştir

    while (1){
    // toggle_gpio_pin ();
    }
    }

    void GROUP1_IRQHandler (void)

    switch (DL_Interrupt_getPendingGroup (DL_INTERRUPT_GROUP_1)){
    如何连接 GPIO_SWITCHS_GPIOA_INT_IIDX:
    if (DL_GPIO_readPins (GPIO_SWITCHS_SW1_PORT、GPIO_SWITCHS_SW1_PIN)){
    Buzzer_Toggle;
    }
    if (DL_GPIO_readPins (GPIO_SWITCHS_SW4_PORT、GPIO_SWITCHS_SW4_PIN)){
    Buzzer_Toggle;
    }

    休息;
    如何连接 GPIO_SWITCHS_GPIOB_INT_IIDX:
    if (DL_GPIO_readPins (GPIO_SWITCHS_SW3_PORT、GPIO_SWITCHS_SW3_PIN){
    Buzzer_Toggle;
    }
    if (DL_GPIO_readPins (GPIO_SWITCHS_SW2_PORT、GPIO_SWITCHS_SW2_PIN)){
    Buzzer_Toggle;
    }

    休息;
    }
    }







    void timer_0_INST_IRQHandler (void)

    VAL++;
    // Buzzer_Toggle;
    开关(DL_TimerA_getPendingInterrupt (TIMER_0_INST)){
    案例 DL_TIMERA_IIDX_REPEAT_COUNT:
    // Buzzer_Toggle;
    休息;
    默认值:
    休息;
    }
    }

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

    NVIC_EnableIRQ (GPIO_SWITCHS_GPIOA_INT_IRQN);
    NVIC_EnableIRQ (GPIO_SWITCHS_GPIOB_INT_IRQN);

    void GROUP1_IRQHandler (void)

    switch (DL_Interrupt_getPendingGroup (DL_INTERRUPT_GROUP_1)){
    如何连接 GPIO_SWITCHS_GPIOA_INT_IIDX:
    if (DL_GPIO_readPins (GPIO_SWITCHS_SW1_PORT、GPIO_SWITCHS_SW1_PIN)){
    Buzzer_Toggle;
    }
    if (DL_GPIO_readPins (GPIO_SWITCHS_SW4_PORT、GPIO_SWITCHS_SW4_PIN)){
    Buzzer_Toggle;
    }

    休息;
    如何连接 GPIO_SWITCHS_GPIOB_INT_IIDX:
    if (DL_GPIO_readPins (GPIO_SWITCHS_SW3_PORT、GPIO_SWITCHS_SW3_PIN){
    Buzzer_Toggle;
    }
    if (DL_GPIO_readPins (GPIO_SWITCHS_SW2_PORT、GPIO_SWITCHS_SW2_PIN)){
    Buzzer_Toggle;
    }

    休息;
    }
    }