本帖最后由 Alden 于 2025-5-13 18:09 编辑
#技术资源# #申请原创#
上一篇帖子测试了APM32F402系列进入stop模式的流程和功耗。APM32F402进入stop休眠与按键唤醒功耗测试 - 极海MCU官方技术支持论坛:https://bbs.21ic.com/icview-3448560-1-1.html
接下来测试下APM32F402进入standby模式WKUP引脚唤醒和功耗情况。
Standby模式下MCU的功耗最低,参考APM32F402的数据手册,standby功耗也就是待机功耗在3uA左右,可以极大的延长设备的待机的时间。
进standby模式的方式和唤醒方式在用户手册中都有说明。
接下来就尝试下进入standby模式测试功耗和WKUP引脚唤醒。
进standby的函数在SDK中已经有封装好,直接调用就可以。
void PMU_EnterSTANDBYMode(void)
{
/* Clear Wake-up flag */
PMU->CTRL_B.WU**CLR = BIT_SET;
/* Select STANDBY mode */
PMU->CTRL_B.PDDSCFG = BIT_SET;
/* Set Cortex System Control Register */
SCB->SCR |= (uint32_t )0x04;
#if defined ( __CC_ARM )
__force_stores();
#endif
/* Request Wait For Interrupt */
__WFI();
}
WKUP引脚唤醒需要开PMU时钟和使能WKUP唤醒引脚.
RCM_EnableAPB1PeriphClock((RCM_APB1_PERIPH_T)(RCM_APB1_PERIPH_PMU | RCM_APB1_PERIPH_BAKR));
MU_EnableWakeUpPin();
standby唤醒芯片会复位从头开始运行代码,如果需要区分是上电启动还是从standby唤醒,可以通过唤醒标志位来判断。
if(PMU_ReadStatusFlag(PMU_FLAG_SB)==BIT_SET)
{
printf("standby WKUP\r\n");
PMU_ClearStatusFlag(PMU_FLAG_SB);
}
代码流程可以参考附件。
下面就是进入standby模式的功耗。
实测是2.8uA,说明极海手册的还是比较真实的。
APM32F402_403_SDK_standby_key.zip
(4.51 MB)
|