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消耗400ua。
拜仁Dc、: 哈哈哈哈,我还在想怎么下面没有了,兄弟你这个评论给我看笑了
deca joinss: 你倒是换啊
StarLegends: 链接莫得了
Rjkkkkkk: 为什么我用不了这个呢,到底是哪里出现了问题 插入U盘没有反应呢