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:从 GPIO 唤醒不起作用

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/600591/rtos-msp432p401r-wakeup-from-gpio-is-not-working

器件型号:MSP432P401R
主题中讨论的其他器件:CC1310

工具/软件:TI-RTOS

您好!

我想在最低功耗状态(LPM4.5)下关断控制器。 因此、我将使用以下函数:

POWER_SHUTDOWN (PowerMSP432_SHUTDOWN_1、0); 

此功能似乎起作用。 但我无法使用 GPIO 中断唤醒控制器。 我已将四个按钮配置为中断输入:

GPIO_PinConfig gpioPinConfigs[]={
/*输入引脚*/
/*
*注意:为这些按钮指定下降沿触发以确保
*立即发出中断信号。 请参阅的说明
*为此、PowerMSP432驱动器的自动引脚锁定功能。
*

/*按钮*/
GPIOMSP432_P4_0 | GPIO_CFG_IN_pu | GPIO_CFG_IN_INT_FALLING、
GPIOMSP432_P4_2 | GPIO_CFG_IN_pu | GPIO_CFG_IN_INT_FALLING、
GPIOMSP432_P4_1 | GPIO_CFG_IN_pu | GPIO_CFG_IN_INT_FALLING、
GPIOMSP432_P4_5 | GPIO_CFG_IN_pu | GPIO_CFG_IN_INT_FALLING、
}

GPIO_setCallback (button_1、buttonCallback);
GPIO_setCallback (button_2、buttonCallback);
GPIO_setCallback (button_3、buttonCallback);
GPIO_setCallback (button_4、buttonCallback);

GPIO_enableInt (button_1);
GPIO_enableInt (button_2);
GPIO_enableInt (button_3);
GPIO_enableInt (button_4); 

我还在使用 CC1310控制器。 在这里、关断和唤醒使用以下代码:

PINCC26XX_setWakeup (SPI_CSn_WakeUpTable);

/*唤醒引脚表*/
PIN_Config SPI_CSn_WakeUpTable[]=
{
CC1310_LAUNCHXL_SPI0_CSn | PIN_INPUT_EN | PIN_PULLUP | PINCC26XX_WAKEUP_NEGEDGE、
PIN_TERMINATE /*终止列表*/
}; 

是否有适用于 MSP432的类似器件?

感谢您的帮助和努力

Kevin

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

    Kevin、

    我们可能需要在最后对此进行一点调查、然后再向您回复。 这里有一个简单的问题、您是否在应用中定义了此函数?

    /*注册以输入关断通知*/
    power_registerNotify (&N) notifyObj、PowerMSP432_entering_shutdown、(Power_NotifyFxn) notifyFxn、0); 

    您还可以尝试使用低级代码示例查看您的电路板是否可以通过按钮从 LPM4.5唤醒、以消除任何硬件。

    导航至 SimpleLink SDK 文件夹 \examples\nortos\MSP_EXP432P401R\registerLevel\msp432p401x_PCM_11


    还有个 msp432p401x_PCM_11.c 示例、通过从 GPIO 引脚唤醒进入 LPM4.5。

    William

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

    您好、William、

    感谢您的回答。
    我已经在我的应用程序中注册并定义了该函数。
    此外、我在关闭 uC 之前尝试清除中断标志、并在关断(清除和启用中断标志)之前直接检查寄存器。

    示例 PCM_lpm35_rtc_wake.c 不起作用。 在该分钟过去后、调用 ISR RTC_C_IRQHandler。 控制器在 PCM_ShutdownDevice (PCM_LPM35_VCORE0)之后继续执行复位、而不是复位;该功能离开主系统、因此会崩溃。

    感谢您提供有关 msp432p401x_PCM_11.c 示例的建议。 我刚刚测试了该示例、它工作正常。

    Kevin

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

    Kevin、

    我找到了 TI-RTOS LPM4.5 (电源关断)的以下示例代码。  请注意、该示例不用于从 GPIO 唤醒、因此必须对其进行一些修改才能使其正常工作。

    http://dev.ti.com/tirex/#/?link=Software%2FSimpleLink%20MSP432%20SDK%2FExamples%2FDevelopment%20Tools%2FMSP-EXP432P401R%20-%20Rev%202.x%20(Red)%2FTI%20Drivers%2Fpowershutdown%2FTI-RTOS%2FCCS%20Compiler%2Fpowershutdown

    我发现可以进行的修改如下:

    1.将 GPIO_wwrite()函数更改为 GPIO_toggle ()函数,以便您可以看到这是有效的。 (无法在 LPM4.5中使用调试器)
    2.更改通知功能,使 P1.1不设为 outputPin。  (我使用(PIN_ALL16 &(~GPIO_PIN1))作为端口 PA 线路的第94和100行的第二个参数。
    3.将此寄存器级别命令包含在 Board_initGeneral()之前的 main_tirtos.c 文件中。   PCM->CTL1 = PCM_CTL1_KEY_VAL;

    这对我来说很有用、以便每次按下 S1时 LED 都会切换;请告诉我它是否也适合您。

    编辑:

    仅供将来用户参考:

    注意:我今天又回来看了一下、发现我错过了正确解释这一点的步骤。  您还应将这些头文件添加到 maintirtos.c

    /* Driverlib 头文件*/

    #include

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

    您好、John、

    非常感谢您的帮助!

    它现在正在我的项目中工作! 在 Board_initGeneral()成为解决方案之前,寄存器级别命令 PCM->CTL1 = PCM_CTL1_KEY_VAL。

    我以前曾尝试过此寄存器命令,但我在 Board_initGeneral()之后添加了此命令。 遗憾的是、这仅适用于一次关断和唤醒。

    感谢您的快速支持和亲切问候

    Kevin