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.

[参考译文] RTOS/MSP432P401R:Hwi 中断服务例程出现问题。 MSP432P401R TI RTOS 版本2.20。 e_alreadyDefined:Hwi 已定义:INTR# 45

Guru**** 2535880 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/604309/rtos-msp432p401r-issue-with-hwi-interrupt-service-routine-msp432p401r-ti-rtos-version-2-20-e_alreadydefined-hwi-already-defined-intr-45

器件型号:MSP432P401R
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

您好!

我将在特定时间段后从低功耗模式唤醒 RTC。 为了生成中断、我将使用硬件中断、如下所示、它正在从任务中调用。  

但问题是我使用的任何中断号、我不断收到错误:  

e_alreadyDefined:Hwi 已定义:INTR#...

 请告诉我、我做了什么错了。 我在论坛上搜索并尝试了不同的建议、但没有什么效果。 请帮助。   

(下面的代码)

void RTCFun (void)
{
while (1)
{
//Task_sleep (1000);
Hwi_handle myHwi;
Hwi_Params HwiParams;
Hwi_Params_init (hwiParams);
hwiParams.arg = 45;
/*设置 RTC */
//RTC_C_initCalendar (&myCalendarTime、RTC_C_format_binary);

/*设置 Hwi */


RTCFun_init();


RTC_C_setCalendarAlarm (2、16、3、20);//(分钟、小时、周中某天、月中某天)

//创建中断
MAP_RTC_C_enableInterrupt (RTC_C_CLOCK_ALARM_INTERRUPT);
MAP_Interrupt_enableInterrupt (INT_RTC_C);
MAP_Interrupt_enableMaster();
MAP_RTC_C_startClock();



myHwi = Hwi_create (INT_RTC_C、RTCIsrFun、&hwiParams、NULL);

//将器件发送到 LPM3.5
MAP_PCM_ShutdownDevice (PCM_LPM35_VCORE0);

system_printf ("返回活动模式\n"\n);
//SysMin 仅在您调用 flush 或 exit 时打印到控制台
system_flush();
}

}/*


RTC ISR */
void RTCIsrFun (uintptr_t arg)
{
RTC_C_clearInterruptFlag (RTC_C_getInterruptStatus ());

GPIO_WRITE (Board_LED1、Board_LED_ON);

}

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

    您使用的是哪个版本的 Launchpad (红色或黑色)?

    此致、

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

    它是红色的。

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

    尊敬的 David:

    我 在 SYSBIOS 中创建了一个新的 Hwi 中断>从.cfg 文件进行调度。 并在 这里定义了我的 ISR 函数和 RTC_c 中断号(45)。  Hwi 开始工作。

    下面是在 cfg 文件中添加的 Hwi 的工作代码。 但我没有得到、为什么我的应用文件中的上述动态 Hwi 不起作用、而静态和动态 Hwi 都调用相同的函数?

    /*仅在
    (!Program.build.target.$name.match (/IAR/)){时将 UARTMon 与 TI 和 GCC 工具链一起使用
    VAR UARTM= xdc.useModule('ti.tirtos.utils.UARTMon');
    UARTMN.STACKSIZE = 1024;
    }
    var halHwi0Params = new halHwi.Params ();
    halHwi0Params.instance.name ="halHwi0";
    halHwi0Params.maskSetting = XDC.module ("ti.sysbios.interfaces.IHwi").MaskingOption_SELF;
    Program.global.halHwi0 = halHwi.create (45、"&RTCIsrFun"、 halHwi0Params); 

    此致

    Suraj

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果你已经在.cfg 文件中创建了 Hwi。 您不能在运行时再次创建它。 您可以在 Tools->ROV->Hwi 中查看创建了哪些中断。

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

    我很高兴您能让它正常工作。 不确定动态 Hwi 创建为什么不适合您我检查了代码、这就是我使用新的 SimpleLink MSP432 SDK 执行该操作的方式。 也许它已经在.cfg 中创建、正如 Todd 提到的那样。

    总之、我建议您开始使用新的 SimpleLink MSP432 SDK www.ti.com/.../simplelink-msp432-sdk。

    此致、

    David