主题中讨论的其他器件:CC3220SF
您好!
我需要对 CC3220中的休眠模式进行一些澄清。
我们可以使用多个 GPIO 从休眠模式唤醒 CC3220、还是只能配置其中一个可用的 GPIO 来唤醒 CC3220?
在2017 年12月7日下午7:48的以下主题中、Mark81注释 看起来他可以使用多个 GPIO 从休眠模式唤醒。
如果我们可以配置多个 GPIO、请建议如何配置。
谢谢、
Kishore。
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.
您好!
我需要对 CC3220中的休眠模式进行一些澄清。
我们可以使用多个 GPIO 从休眠模式唤醒 CC3220、还是只能配置其中一个可用的 GPIO 来唤醒 CC3220?
在2017 年12月7日下午7:48的以下主题中、Mark81注释 看起来他可以使用多个 GPIO 从休眠模式唤醒。
如果我们可以配置多个 GPIO、请建议如何配置。
谢谢、
Kishore。
您好 Kishore、
检查这是否起作用:
PRCMHibernateWakeupSourceEnable (PRCM_HIB_GPIOX | PRCM_HIB_GPIOY); PRCMHibernateEnter ();
这些函数直接来自 driverlib。 您可以在我们 TRM 的第15.3.10章中了解有关它们的更多信息。 确保您决定使用的 GPIO 未用于应用中的其他外设、并且可用作唤醒源-请在 LAUNCHXL.c 中进行验证 此外、请确保调用 Board_init_general、以初始化电源管理器。
最后包括以下头文件:
#include #include
如果这对您有用、请报告。
Jesu
您好、Jesu、
我尝试了上述方法、
在我的代码中、当我唤醒时、我将立即将 GPIO 变为高电平、并 通过将 GPIO11和 GPIO13配置为唤醒源来将 MCU 发送到休眠模式。
现在、我为两个引脚提供了中断、不知怎么说、GPIO13上的中断会将 CC3220SF 从休眠模式唤醒。
对于其他引脚(我的示例中的 PIN2 (GPIO11))、CC3220SF 不会 从休眠模式唤醒。
我尝试了引脚17 (GPIO24)来代替 PIN2 (GPIO11)、它 也不起作用。
我将代码片段和输出放在下面、请帮我解决这个问题。
在 main_tirtos.c 中
#include
#include
int main (空)
{
Board_initGeneral();
GPIO_init();
GPIO_WRITE (CC3220SF_LAUNCHXL_GPIO_14_SPI_CLK、Board_GPIO_HIGH);
PRCMHibernateWakeupSourceEnable (PRCM_HIB_GPIO13 | PRCM_HIB_GPIO11);
PRCMHibernateEnter();
CC3220SF_LAUNCHXL.c 中
GPIO_PinConfig gpioPinConfigs[]={
GPIOCC32XX_GPIO_13 | GPIO_CFG_INPUT| GPIO_CFG_IN_INT_INT_RISING、
GPIOCC32XX_GPIO_11 | GPIO_CFG_INPUT| GPIO_CFG_IN_INT_RISING、 //引脚2
CONST PowerCC32XX_ConfigV1 PowerCC32XX_CONFIG ={
.policyInitFxn =&PowerCC32XX_initPolicy、
policyFxn =&PowerCC32XX_sleepPolicy、
.enterLPDSHookFxn =空、
.resumeLPDSHookFxn =空、
.enablePolicy = false、
.enableGPIOWakeupLPDS = true、
.enableGPIOWakeupShutdown = true、
.enableNetworkWakeupLPDS = true、
.wakeupGPIOSourceLPDS = PRCM_LPD_GPIO13、
.wakeupGPIOTypeLPDS = PRCM_LPD_FALL_EDGE、
.wakeupGPIOFxnLPDS =空、
.wakeupGPIOFxnLPDSArg=0、
.wakeupGPIOSourceShutdown = PRCM_HIB_GPIO13、
.wakeupGPIOTypeShutdown = PRCM_HIB_RISE_EDGE、
.ramRetentionMaskLPDS = PRCM_SRAM_COL_1 | PRCM_SRAM_COL_2 |
PRCM_SRAM_COL_3 | PRCM_SRAM_COL_4、
keepDebugActiveDuringLPDS = false、
ioRetentionShutdown = PRCM_IO_RET_GRP_1、
.pinParkDefs = parkInfo、
.numPins = sizeof (parkInfo)/sizeof (PowerCC32XX_ParkInfo)
};
您好!
我刚刚使用 GPIO11和13作为唤醒源测试了该代码、它正常工作。 确保已组装 J24、以便 GPIO11具有下拉电阻。
/* 版权所有(c) 2016、德州仪器(TI)公司 *保留所有权利。 * * 只要 符合以下条件*、允许以源代码和二进制形式重新分发和使用: * *源代码的重新分发必须保留上述版权 声明*、此条件列表和以下免责声明。 * ***二进制形式的再发行必须在 *随发行提供的文档和/或其他材料中复制上述版权声明、本条件列表和以下免责声明。 * ***未经 事先书面许可、不得使用德州仪器公司的名称或*其贡献者的名称认可或推广从本软件衍生的产品*。 * *本软件由版权所有者和贡献者"按原样"提供 *、 不承担任何明示或暗示的保证、包括但不限于*适销性和特定用途适用性的暗示保证*。 在任何情况下、版权所有者或 *贡献者都不对任何直接、间接、偶然、特殊、 *模范、 或相应的损害(包括但不限于 *采购替代产品或服务;丧失使用、数据或利润; *或业务中断)、但出于任何责任理论 、*无论是在合同中、严格责任还是由于 使用本软件而以任何方式产生的侵权行为(包括疏忽或*其他) 、*即使已获悉可能会发生此类损坏。 // //*标准 include */ #include #include #include #include #include /* TI 驱动程序头文件*/ #include #include #include // PRCM API 填充 #include #include #include 静态 Display_Handle 显示; int32_t mainThread (void *arg) { GPIO_init(); /*打开主机显示屏以输出*/ Display = Display_open (Display_Type_UART、NULL); if (display =NULL){ while (1); } //禁用所有唤醒源 PRCMHibernateWakeupSourceDisable (0x007F0001); display_printf (display、0、0、"进入休眠状态\r\n"); display_printf (display、0、0、"wakeup causeGet:%d\r\n"、PRCMHibernateWakeupCauseGet ()); 睡眠(3); // GPIO02是 P57 // GPIO04是 P59 // GPIO11为 P02 // GPIO13是 P04 // GPIO17是 P08 // GPIO24是 P17 PRCMHibernateWakeUpGPIOSelect (PRCM_HIB_GPIO11 | PRCM_HIB_GPIO13、PRCM_HIB_RISE_EDGE); PRCMHibernateWakeupSourceEnable (PRCM_HIB_GPIO11 | PRCM_HIB_GPIO13); PRCMHibernateEnter(); 返回(0); }
Jesu