打印
[MM32硬件]

MM32的三种低功耗模式

[复制链接]
953|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
MM32L0产品支持三种低功耗模式:睡眠模式、停止模式和待机模式,可以在要求低功耗、短启动时间和多种唤醒事件之间达到最佳的平衡,可以满足用户对低功耗的要求。
l 睡眠模式
   
在睡眠模式,只有 CPU 停止,所有外设处于工作状态并可在发生中断/事件时唤醒 CPU
   有两种方式进入睡眠模式,它的进入方式决定了从睡眠唤醒的方式,分别是 WFI(wait for interrupt) WFE(wait forevent),即等待中断唤醒和事件唤醒。
进入睡眠模式例:
  __WFE();//等待事件,等待事件是一个暂停执行指令暂停至任意事件产生后被唤醒。
  __WFI();//等待中断,等待中断是一个暂停执行指令暂停至任意中断产生后被唤醒。

配置外部事件唤醒函数例:

voidGPIO_Configuration(void)
{
       GPIO_InitTypeDef GPIO_InitStruct;
       EXTI_InitTypeDef EXTI_InitStruct;
       RCC_AHBPeriphclockCmd(RCC_AHBPeriph_GPIOA,ENABLE);  
       RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);
       GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
       GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
       GPIO_InitStruct.GPIO_Mode =GPIO_Mode_IPD;
       GPIO_Init( GPIOA, &GPIO_InitStruct);
       SYSCFG_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);
       EXTI_InitStruct.EXTI_Line = EXTI_Line0;
       EXTI_InitStruct.EXTI_trigger =EXTI_Trigger_Rising;
       EXTI_InitStruct.EXTI_Mode =EXTI_Mode_Event;
       EXTI_InitStruct.EXTI_LineCmd = ENABLE;
       EXTI_Init(&EXTI_InitStruct);
}

使用特权

评论回复
沙发
我喜欢打游戏|  楼主 | 2022-2-28 12:33 | 只看该作者
停止模式
   
在保持 SRAM 和寄存器内容不丢失的情况下,停机模式可以达到最低的电能消耗。在停机模式下,停止所有内部 1.8V 部分的供电, PLL HSI 振荡器 HSE 晶体振荡器被关闭,调压器可以被置于普通模式或低功耗模式。
有两种方式进入停止模式,可以通过设置独立的控制位,选择以下待机模式的功能:

  独立看门狗(IWDG):可通过写入看门狗的键寄存器或硬件选择来启动 IWDG。一旦启动了独立看门狗,除了系统复位,它不能再被停止。

  内部振荡器(LSI 振荡器):通过控制/状态寄存器 (RCC_CSR)的 LSION 位来设置。在停止模式下,如果在进入该模式前 ADC 和 DAC 没有被关闭,那么这些外设仍然消耗电流。

进入停止模式例:
void Sys_Stop(void)
{
       PWR_EnterSTOPMode(0,PWR_STOPEntry_WFI);
}
注:MM32L0xx在进入停止模式前,需将系统时钟切换到HSI
关于退出停止模式:
  当一个中断或唤醒事件使MCU退出停止模式时, HSI 振荡器被选为系统时钟。当电压调节器处于低功耗模式下,当系统从停止模式退出时,将会有一段额外的启动延时。
配置中断唤醒函数例:
voidWKUP_Init(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;                 
        NVIC_InitTypeDefNVIC_InitStructure;
        EXTI_InitTypeDef EXTI_InitStructure;
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);
         RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
         GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0;
         GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IPD;
         GPIO_Init(GPIOA,&GPIO_InitStructure);
         SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource0);
         EXTI_InitStructure.EXTI_Line =EXTI_Line0;
         EXTI_InitStructure.EXTI_Mode =EXTI_Mode_Interrupt;
         EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;
         EXTI_InitStructure.EXTI_LineCmd =ENABLE;
         EXTI_Init(&EXTI_InitStructure);
         NVIC_InitStructure.NVIC_IRQChannel=EXTI0_1_IRQn;
         NVIC_InitStructure.NVIC_IRQChannelPriority= 2;
         NVIC_InitStructure.NVIC_IRQChannelCmd= ENABLE;
         NVIC_Init(&NVIC_InitStructure);
         PWR_WakeUpPinCmd(ENABLE);
}


使用特权

评论回复
板凳
asmine| | 2022-3-1 15:06 | 只看该作者
一般都有吧

使用特权

评论回复
地板
tpgf| | 2022-3-8 11:19 | 只看该作者
一共是三种低功耗模式是吗

使用特权

评论回复
5
kxsi| | 2022-3-8 11:52 | 只看该作者
各个模式对应的哪个时钟是开启的呢

使用特权

评论回复
6
zljiu| | 2022-3-8 11:59 | 只看该作者
还算是比较到位

使用特权

评论回复
7
nawu| | 2022-3-8 12:11 | 只看该作者
可以满足不同应用哈

使用特权

评论回复
8
wiba| | 2022-3-8 12:28 | 只看该作者
哪种模式功耗最低啊

使用特权

评论回复
9
aoyi| | 2022-3-8 12:37 | 只看该作者
相应外设如何处理呢

使用特权

评论回复
10
两只袜子| | 2022-3-10 11:10 | 只看该作者
三种低功耗模式选择性越来越多了

使用特权

评论回复
11
cyclefly| | 2022-4-15 17:49 | 只看该作者
应用区别在哪

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

75

主题

615

帖子

0

粉丝