近期为了省成本,公司决定将MCU由STM32更换为GD32,测试过程中,发现如下问题
1:测试休眠功耗的时候,发现待机电流过高,达到15mA;对比STM32,待机状态下,功耗只有1mA;
2:使用J-link擦除GD32程序,上电之后,功耗有20mA; 对比STM32,擦除芯片程序之后,上电功耗只有5mA;
待机程序应该没问题,对比了STM32和其它网友分享的案例,没发现什么问题
/**************系统进入待机模式**********/
void Sys_Enter_Standby(void)
{
RCC_APB2PeriphResetCmd(0X01FC,DISABLE); //复位所有IO口
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //使能PWR外设时钟
PWR_ClearFlag(PWR_FLAG_WU); //清除唤醒标志 20180523
PWR_WakeUpPinCmd(ENABLE); //使能唤醒管脚功能
PWR_EnterSTANDBYMode(); //进入待机(STANDBY)模式
}
void PWR_EnterSTANDBYMode(void)
{
/* Set SLEEPDEEP bit of Cortex System Control Register */
SCB->SCR |= SCB_SCR_SLEEPDEEP;
/* Select STANDBY mode */
PWR->CR |= PWR_CR_PDDS;
/* Clear Wake-up flag */
PWR->CR |= PWR_CR_CWUF;
/* This option is used to ensure that store operations are completed */
#if defined ( __CC_ARM )
__force_stores();
#endif
/* Request Wait For Interrupt */
__WFI();
}
|