完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
Hi, 大家好,
最近在用CC3200做项目,其中涉及到进入休眠,1、通过GPIO唤醒,2通过RTC唤醒(实现系统自复位功能) 进入休眠之前已经设置了唤醒源,例如GPIO唤醒 void EnterHIBernate() [ #define SLOW_CLK_FREQ (32*1024) // // Configure the HIB module RTC wake time // MAP_PRCMHibernateIntervalSet(5 * SLOW_CLK_FREQ); // // Enable the HIB RTC // MAP_PRCMHibernateWakeupSourceEnable(PRCM_HIB_LOW_LEVEL|PRCM_HIB_GPIO4|PRCM_HIB_GPIO13);//power key and charge key DBG_PRINT("HIB: Entering HIBernate...nr"); MAP_UtilsDelay(80000); // // powering down SPI Flash to save power // Utils_SpiFlashDeepPowerDown(); // // Enter HIBernate mode // MAP_PRCMHibernateEnter(); ] 通过RTC唤醒,以便实现系统复位功能 void RebootMCU(void) [ // // Configure hibernate RTC wakeup // PRCMHibernateWakeupSourceEnable(PRCM_HIB_SLOW_CLK_CTR); // // Delay loop // MAP_UtilsDelay(800000); // // Set wake up time // PRCMHibernateIntervalSet(330); Report("rn-------RebootMCU------rn"); // // Enter HIBernate mode // MAP_PRCMHibernateEnter(); ] 但当唤醒后调用MAP_PRCMHibernateWakeupCauseGet 获取唤醒源,该函数返回零,得不到正确的结果 正确的结果应该返回PRCM_HIB_WAKEUP_CAUSE_SLOW_CLOCK或PRCM_HIB_WAKEUP_CAUSE_GPIO why? what happened |
|
相关推荐
2 个讨论
|
|
一个黄人 发表于 2020-6-15 17:13 这个例程解决不了我上述的问题 程序里面当进行OTA升级时,进入休眠前需要设置成RTC唤醒,其目的是实现软复位的功能 其它情况下进入休眠前,需要设置为GPIO唤醒,目的是通过外部按键唤醒,进而运行程序 我需要通过PRCMHibernateWakeupCauseGet(); 获取到唤醒源;但获取到的结果为0 而不是期望的PRCM_HIB_WAKEUP_CAUSE_GPIO 或PRCM_HIB_WAKEUP_CAUSE_SLOW_CLOCK why? what happened? 下面是进入main的代码 void main() [ long lRetVal = -1; unsigned long rlt; // // Board Initialization // BoardInit(); // // configure the GPIO pins for LEDs,UART // PinMuxConfig(); GPIO_IF_NormalConfigure(); KeyInit(); // // Configure the UART // #ifndef NOTERM InitTerm(); #endif //NOTERM rlt = PRCMHibernateWakeupCauseGet(); DBG_PRINT("MAP_PRCMHibernateWakeupCauseGet = %dnr",rlt); if(MAP_PRCMSysResetCauseGet() == PRCM_HIB_EXIT)[ DBG_PRINT("wake up from Hibernatenr"); if(rlt == PRCM_HIB_WAKEUP_CAUSE_GPIO)[ DBG_PRINT("gpio wake up from Hibernatenr"); MAP_UtilsDelay((60*80*1000)); //60ms MAP_UtilsDelay((60*80*1000)); if(GPIO_IF_Get(DM_KEY_1,g_uiKey1Port,g_ucKey1Pin) == 1)[ EnterHIBernate();//1 second delay ] MAP_UtilsDelay((30*80*1000)); MAP_UtilsDelay((30*80*1000)); if(GPIO_IF_Get(DM_KEY_1,g_uiKey1Port,g_ucKey1Pin) == 1)[ EnterHIBernate(); ] MAP_UtilsDelay((30*80*1000)); MAP_UtilsDelay((30*80*1000)); if(GPIO_IF_Get(DM_KEY_1,g_uiKey1Port,g_ucKey1Pin) == 1)[ EnterHIBernate(); ] ]else if(rlt == PRCM_HIB_WAKEUP_CAUSE_SLOW_CLOCK)[ DBG_PRINT("rtc wake up from Hibernatenr"); ] 请大家协助解决 谢谢! |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
535 浏览 1 评论
390 浏览 1 评论
586 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
836 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
689 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
137浏览 29评论
735浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
294浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
250浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
100浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-12 14:34 , Processed in 1.100567 second(s), Total 49, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号