STM32低功耗--停机模式
根据项目需要选择的是停机模式
进入停止模式之后,任何外部中断都可以唤醒低功耗,但是需要重新配置时钟,不然系统将以默认时钟(没有经过倍频)运行。
1.进入低功耗
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
PWR_EnterSTOPMode (PWR_Regulator_ON,PWR_STOPEntry_WFI);
2.降低低功耗,需要配置没有使用的GPIO,改变它的默认配置状态。演示状态是关闭所有IO外设,具体情况,可以自行配置
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC|RCC_AHB1Pe riph_GPIOD|RCC_AHB1Periph_GPIOH, ENABLE);//
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_Init(GPIOD, &GPIO_InitStructure);
3.检查有没有配置ADC等其他的外设,一定要关闭ADC等其他的外设时钟。
4.如何进行唤醒操作?
在中断处理函数中,进行下系统初始化就可以了。
SystemInit();
如果不进行系统初始化,则以默认时钟进行运行。
5.经过测试MCU消耗400ma。