进入待机模式主要程序如下:
void Sys_Standby(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //使能 PWR 外设时钟
PWR_WakeUpPinCmd(ENABLE); //使能唤醒管脚功能
PWR_EnterSTANDBYMode(); //进入待命(STANDBY)模式
}
void Sys_Enter_Standby(void)
{
Befor_goto_Standby();
RCC_APB2PeriphResetCmd(0X01FC,DISABLE); //复位所有 IO 口
Sys_Standby();
}
void Befor_goto_Standby(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_Init(GPIOC, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_USART1|
RCC_APB2Periph_SPI1|RCC_APB2Periph_ADC1|RCC_APB2Periph_ADC2,
DISABLE);
RCC_APB1PeriphClockCmd( RCC_APB1Periph_SPI2|RCC_APB1Periph_TIM2|RCC_APB1Periph_USART3,
DISABLE);
}
主函数中我已经将MCU未使用的管脚设置为模拟输入(或者浮空)
未关闭A口,由于我使用wakeup上升沿唤醒MCU。
MCU进入待机模式工作电流为10ma,我还需要关闭什么东西吗?各位大侠请指教 |