本帖最后由 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, 下载次数: 3)
|