WCH沁恒单片机
直播中

发烧友推温针

9年用户 821经验值
擅长:光电显示
私信 关注
[问答]

CH579M调用LowPower_Sleep无法进入休眠怎么解决?

调用LowPower_Sleep(RB_PWR_RAM2K | RB_PWR_RAM14K)无法进入休眠

先说要SEP ,不可利用的结局若何进入!

应用场景:

使用RT-Thread 4.0.3 RTOS,已调用

PWR_PeriphWakeUpCfg(启用,RB_SLP_RTC_WAKE | RB_SLP_GPIO_WAKE);
开启 RTC 与 GPIO(之前只需要请求 RTC 唤醒,但之前可以正常休眠),GPIO 也可以唤醒,无法响应和 IO 唤醒,不满足



表现:在RTC中断、GPIO中断和Low_Sleep()均能断点运行,然后,能Power_Sleep()函数正常断点处,按单步运行跳到下一行(直接应该是SWD直接调试Power) ),并且会重复调用LowPowerSleep()中断,继续该中断点全速运行,不进入休眠,也不会RTC中断与GPIO中断



案例 PM_SLEEP_MODE_DEEP:
/* 进入 STOP 2 模式 */
LowPower_Sleep(RB_PWR_RAM2K | RB_PWR_RAM14K);

/* 重新配置系统时钟 */
// 延迟时间 (2);
//
// if(!(R8_HFCK_PWR_CTRL&RB_CLK_XT32M_PON)) { // 是否HSE上电
// PWR_UnitModCfg(ENABLE, UNIT_SYS_HSE); // HSE上电
// 延迟我们((1200)/5);
// }
// else if(!(R16_CLK_SYS_CF&RB_CLK_OSC32M_XT)){ // 是否选择 HSI/5 做时钟源
// 延迟我们((1200-330)/5);
// }
// HSECFG_Current(HSE_RCur_100); // 降速为电流(低可用函数中提升了 HSE 电流电流)
// 延迟我们(5/5);//等待稳定1-5us
SetSysClock(CLK_SOURCE_HSI_32MHz);
休息;

回帖(1)

王丽娟

2022-8-23 10:07:39
进一步研发问题:若要进入LEEP模式,不可开发出使用卫星的最终边界!!!



调试方法如下:

直接在外部配置节点和组织实施,RTC配置系统后部署了5个区域,PB8、PB9、PB115三个外部区域(PB8、PB9、10M)上悬空拉第10行和第12行断点观察两个外部间隔,只要有空拉点放一个,在PB11的第一个断点执行配置,则直接在第一个GPIO_IT模式下执行。第二个断点,早晚5秒到达SW后成功通知(板子有现象)

GPIOB_ModeCfg(GPIO_Pin_15,GPIO_ModeIN_PU);
GPIOB_ModeCfg(GPIO_Pin_8 | GPIO_Pin_9, GPIO_ModeIN_Floating);
GPIOB_ITModeCfg(GPIO_Pin_15, GPIO_ITMode_RiseEdge/*GPIO_ITMode_RiseEdge*/);
GPIOB_ITModeCfg(GPIO_Pin_8, GPIO_ITMode_FallEdge/*GPIO_ITMode_RiseEdge*/);
GPIOB_ITModeCfg(GPIO_Pin_9, GPIO_ITMode_FallEdge/*GPIO_ITMode_FallEdge*/);
NVIC_EnableIRQ(GPIO_IRQn);

PWR_PeriphWakeUpCfg(启用,RB_SLP_RTC_WAKE | RB_SLP_GPIO_WAKE);

rtc_timer_start(32768 * 5);
LowPower_Sleep(RB_PWR_RAM14K|RB_PWR_RAM2K);
SetSysClock(CLK_SOURCE_HSI_32MHz);
举报

更多回帖

发帖
×
20
完善资料,
赚取积分