当前位置:首页 > 技术学院 > 技术前线
[导读]默认情况下,系统复位后,控制器运行在RUN模式,在RUN模式下,CPU的时钟是由HCLK提供,如果CPU不需要一直保持运行 状态,是可以设置控制器为其他几种低功耗模式,比如,当控制器需要等待一个 外部中断事件时。这取决于用户选择合适的工作模式。

该芯片具有5中低功耗模式:

① 低功耗运行模式:低功耗运行模式:适配器处于低电压模式,时钟频率限制在低频,部分外围的使用也受限。

② 睡眠模式:Cortex-M3内核停止,外围器件保持运行状态,比如RTC一直运行。

③ 低功耗睡眠模式:Cortex-M3内核停止,时钟频率受限(降频),部分外围运行,电源适配器处于低功耗模式,RAM断电,Flash停止。

④ 停止模式:所有的时钟停止,电源低功耗运行。

⑤ 待机模式:内核断电。

另外:在正常运行模式下,功耗也可以通过下面的方式降低:

降低时钟频率。

外围不使用的时候,APBx和AHBx外围的时钟降低。

其实这个貌似用途反而不大,可以考虑不降频,缩短整个程序运行时间,然后快速进入低功耗模式。

低功耗模式下的时钟特征

APB外设和DMA时钟是可以通过软件关闭的。

一、睡眠和低功耗睡眠模式下的时钟表现

睡眠和低功耗睡眠模式下,CPU内核时钟停止。 睡眠模式下,内存接口时钟和其他所有外围的时钟可以通过软件设定停止。低功耗 睡眠模式下,内存接口时钟停止,而且RAM处于掉电模式,AHB-APB总线时钟被 硬件停止(前提是连接的外围器件也停止)

二、停止和待机模式下的时钟特点

系统时钟和所有的告诉时钟停止:

PLL停止。

HIS时钟源停止。

HSE时钟源停止。

MSI时钟源也停止。

当stop模式被中断打断跳出时,或者待机模式被reset打断跳出时,MSI时钟会被自动选择作为系统时钟。当设备从stop模式跳出后,之前的MSI配置信息保持,当设备从待机模式跳出时,定时值会被复位为默认的2MHz。

三、外围时钟选通。

在RUN模式下,HCLK和PCLKx对应的独立外围设备和内存设备可以在任何时间设定停止,以便降低 功耗。

在sleep模式下,通过执行WFI或者WFE指令设定外围时钟停止,可以进一步降低功耗。

外围时钟的选通控制是通过AHB时钟使能寄存器(RCC_AHBENR)、APB2时钟使能 寄存器(RCC_APB2ENR)、APB1时钟使能寄存器(RCC_APB1ENR)

睡眠模式下,通过reset寄存器RCC_AHBLPENR和RCC_APBxLPENR的同步位,实现自动关闭外围时钟的功能。

四、睡眠模式

(1) 如何进入睡眠模式

进入睡眠模式,需要执行WFI(wait for interrupt)或WFE(wait for event)指令。这两种指令都是对SLEEPONEXIT位进行配置实现的。

sleep- now:一旦执行了WFI或WFE,(立刻睡眠)如果SLEEPONEXIT位被清除,MCU进入sleep模式。

sleep-on-exit:如果SLEEPONEXIT位置1,如果退出ISR,MCU进入sleep模式。

在睡眠模式下,所有的I/O口,都保持与RUN模式相同的状态。

(2)如何退出睡眠模式

如果通过WFI指令进入睡眠 模式,任何的外围设备的中断都能实现唤醒设备。

如果通过WFE执行进入睡眠模式,MCU通过“事件”出现唤醒,这个唤醒的时间包括:

① 使能一个外围控制中断,但是不在NVIC中, 使能SEVONPEND位,外围中断挂起位 和 外围NVIC IRQ通道挂起位清除。

② 配置一个外部或者内部的EXTI Line作为事件模式,当CPU从WFE唤醒,不必要清除外围中断位,或者NVIC IRQ通道挂起位。

睡眠模式进入/退出总结:

五、低功耗睡眠模式

(1)如何进入 低功耗睡眠模式

进入低功耗睡眠模式,需要配置电压适配器到低功耗模式,同时配合执行WFI或WFE指令。在这种模式下,Flash存储无效,但是RAM存储 有效。

在这种模式下,系统频率不能超过 f_MSI range1,

低功耗睡眠模式只有在Vcore是在电压范围2(range2 = 1.5V)才能进入。

注意:如果APB1时钟频率小于 7倍RTC时钟频率(7*RTCLCK = 7*32.768k = 229376),那么读RTC日历寄存器就需要读2次,如果第2次读取的RTC_TR数值与第一次相同,才能确定读取数据正确, 否则就再读一次。

有两种方式可以进入低功耗睡眠模式:

① 立刻睡眠:如果SLEEPONEXIT位清0,一旦执行WFI或WFE执行,MCU立刻进入低功耗睡眠模式。

② 通过事件睡眠:如果SLEEPONEXIT位置1,只有事件的优先级最低,MCU才进入低功耗模式。

进入 低功耗睡眠模式下的过程如下:

① 通过FLASH_ACR寄存器的SLEEP_PD位,关闭Flash,这可以降低功耗,不过也会增加唤醒时间。

② IP Clock必须通过RCC_APBxENR和RCC_AHBENR寄存器使能或禁止。

③ 系统时钟频率必须降低。

④ 通过软件(LPSDSR bit位设定)强制电压适配器处于低功耗模式。

⑤ 执行WFI/WFE执行,进入睡眠模式。

退出低功耗睡眠模式:与 睡眠模式类似。

六、停止模式

停止模式是一种深度睡眠模式,配合外围时钟选通。电压适配器可以配置为正常或低功耗模式。

停止模式下,Vcore时钟是停止的,PLL、MSI、HSI、HSE RC是停止的(RTC的时钟没有停止),,内部的SRAM和寄存器目录是保持的。

为了在Stop模式下得到最低的功耗,内部Flash也要进入低功耗模式,当Flash在power down模式,当从stop模式下唤醒后,会有启动延时。

为了实现功耗最小化,进入stop模式前,Vrefint、BOR、PVD、温度传感器可以关闭,这些外围也是可以再打开的,当从stop模式退出后,通过PWR_CR寄存器中ULP bit位。

进入STOP模式:

STOP模式下,下面的外围是可以独立编程的:

IWDG、RTC、LSI RC振荡器、外部32.768k振荡器。

STOP 模式退出:

从stop模式下退出可以通过中断或者wakeup事件,退出后,MSI RC振荡器会被选做系统时钟。

欲知详情,请下载word文档 下载文档
换一批
延伸阅读
周鸿祎评互联网大佬编程能力:我可以排前三!

今天是10月24日,也是“程序员节”,在互联网程序圈出身的大佬们,谁的编程能力最高?对此,360创始人周鸿祎给出了自己的看法。周鸿祎表示:自己认识的程序员中,雷军、求伯君是非常出色的;马化腾、丁磊自己也写程序,但他们是更...

关键字: 互联网 编程
硅谷Altos Labs的新冒险:通过细胞重编程让人类寿命延长50年

在PaloAlto的洛斯阿多斯山(LosAltosHills)有一幢大楼,它属于大富豪尤里·米尔纳(YuriMilner)。去年10月,一群科学家来到大楼。干什么呢?这群科学家参加为期2天的会议,还有许多人通过视频方式参...

关键字: os Lab 编程
深入理解嵌入式中重要的编程模型

大家好,我是ZhengN。今天我们看一看业界一些著名的编程模型。背景模型是对事物共性的抽象,编程模型就是对编程的共性的抽象。什么是编程的共性呢?最重要的共性就是:程序设计时,代码的抽象方式、组织方式或复用方式。编程模型主...

关键字: 模型 编程
C   编程习惯与编程要点

以良好的方式编写Cclass假设现在我们要实现一个复数类complex,在类的实现过程中探索良好的编程习惯。①Header(头文件)中的防卫式声明complex.h:#ifndef__COMPLEX__#define__...

关键字: 编程

51单片机是对目前所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之...

关键字: Atmel Intel 51单片机 编程

问:人工智能(AI)的分支有什么?答:这里有一个列表,但肯定缺少某些分支,因为目前没有人能确定。其中一些可能会被视为概念或主题,而不是完整的分支。逻辑AI 一个程序对于它必须起作用的具体情况事实世界的大体了

关键字: 人工智能 AI BSP 编程

21ic讯 Portland Group®宣布一项产品开发计划:将其具有OpenACC功能的PGI Accelerator™编译器技术延伸至基于英特尔集成众核(MIC)架构的Inte...

关键字: 英特尔 协处理器 OPENACC 编程

据《每日电讯报》近日报道,英国73岁的比尔·布罗德自两年前中风不能说话,现在得益于谢菲尔德大学研制的“会说话”手套的帮助,可以将其手势解释成文字,与外界进行简单有效的沟通。据...

关键字: 电脑 计算机 RDQUO 编程
影像测量仪使用中需要注意哪些事项?

影像测量仪属于高精度测量仪器,因此要想获得精确的测量结果,就要避免测量过程中的差错。正确使用影像测量仪才能保证数据的精确。影像测量仪使用中需要注意哪些事项?1、需要选择适当的工件固定方法和适当的工件方向

关键字: 照明 测量仪 影像 编程

PGI将OpenACC技术扩展至英特尔Xeon Phi协处理器

关键字: 英特尔 协处理器 OPENACC 编程

编辑精选

技术子站

##########
<basefont id='Muth'><person></person></basefont><del id='PA'><cite></cite></del>
<option id='APlx'><sub></sub></option>
    <caption id='YMAjism'><u></u></caption>
      <nobr id='NeKensal'><base></base></nobr><option id='gXQGfZVS'><caption></caption></option><comment id='ZWyO'><basefont></basefont></comment><legend id='RmZcSm'><marquee></marquee></legend>
          <cite id='AdLLaJM'><strike></strike></cite><strike id='fnKgagx'><blink></blink></strike>
          <bgsound id='TqW'><ol></ol></bgsound><em id='Gab'><kbd></kbd></em>
          <dfn id='pqadc'><xmp></xmp></dfn>
          <kbd></kbd>