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: About the interrupt problem

Part Number: MSPM0G1106

Tool/software:

Hello, I made the following software and settings, checked the hardware, but it is not working, can you help?

#include <GPIO_Func.h>
#include "ti_msp_dl_config.h"

#define DELAY (160000000)
int 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
Buzzer_ON;
val=1;
}

int main(void)
{
SYSCFG_DL_init();


//DL_GPIO_initDigitalInput(GPIO_A_SW1_PIN_7_PIN); // Port ve pin 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();

}
}

  • Hi,

    Please use GROUP1_IRQHandler instead of GPIOA_IRQHandler.

    Regards,

    Zoey

  • Thank you very much for your suggestion. I am adding the code sequence I used below, I hope it can be used and help.


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

    int main(void)
    {
    SYSCFG_DL_init();



    DL_TimerA_enableInterrupt; // Timer kesmesini etkinleştir
    DL_TimerA_startCounter(TIMER_0_INST); // Timer'ı başlat
    NVIC_EnableIRQ(GPIO_SWITCHES_GPIOA_INT_IRQN);
    NVIC_EnableIRQ(GPIO_SWITCHES_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)) {
    case GPIO_SWITCHES_GPIOA_INT_IIDX:
    if(DL_GPIO_readPins(GPIO_SWITCHES_SW1_PORT, GPIO_SWITCHES_SW1_PIN)){
    Buzzer_Toggle;
    }
    if(DL_GPIO_readPins(GPIO_SWITCHES_SW4_PORT, GPIO_SWITCHES_SW4_PIN)){
    Buzzer_Toggle;
    }

    break;
    case GPIO_SWITCHES_GPIOB_INT_IIDX:
    if(DL_GPIO_readPins(GPIO_SWITCHES_SW3_PORT, GPIO_SWITCHES_SW3_PIN)){
    Buzzer_Toggle;
    }
    if(DL_GPIO_readPins(GPIO_SWITCHES_SW2_PORT, GPIO_SWITCHES_SW2_PIN)){
    Buzzer_Toggle;
    }

    break;
    }
    }







    void TIMER_0_INST_IRQHandler(void)
    {
    val++;
    //Buzzer_Toggle;
    switch (DL_TimerA_getPendingInterrupt(TIMER_0_INST)) {
    case DL_TIMERA_IIDX_REPEAT_COUNT:
    //Buzzer_Toggle;
    break;
    default:
    break;
    }
    }

  • NVIC_EnableIRQ(GPIO_SWITCHES_GPIOA_INT_IRQN);
    NVIC_EnableIRQ(GPIO_SWITCHES_GPIOB_INT_IRQN);

    void GROUP1_IRQHandler(void)
    {
    switch (DL_Interrupt_getPendingGroup(DL_INTERRUPT_GROUP_1)) {
    case GPIO_SWITCHES_GPIOA_INT_IIDX:
    if(DL_GPIO_readPins(GPIO_SWITCHES_SW1_PORT, GPIO_SWITCHES_SW1_PIN)){
    Buzzer_Toggle;
    }
    if(DL_GPIO_readPins(GPIO_SWITCHES_SW4_PORT, GPIO_SWITCHES_SW4_PIN)){
    Buzzer_Toggle;
    }

    break;
    case GPIO_SWITCHES_GPIOB_INT_IIDX:
    if(DL_GPIO_readPins(GPIO_SWITCHES_SW3_PORT, GPIO_SWITCHES_SW3_PIN)){
    Buzzer_Toggle;
    }
    if(DL_GPIO_readPins(GPIO_SWITCHES_SW2_PORT, GPIO_SWITCHES_SW2_PIN)){
    Buzzer_Toggle;
    }

    break;
    }
    }