zoukankan      html  css  js  c++  java
  • 第22章 RTX 低功耗之停机模式

    以下内容转载自安富莱电子: http://forum.armfly.com/forum.php

    STM32F103 停机模式介绍
    本章节我们主要讲解停机模式,停机模式是在 Cortex™-M3 的深睡眠模式基础上结合了外设的时钟
    控制机制,在停止模式下电压调节器可运行在正常或低功耗模式。此时在 1.8V 供电区域的的所有时钟都
    被停止, PLL、 HSI 和 HSE RC 振荡器的功能被禁止, SRAM 和寄存器内容被保留下来。在停止模式下,
    所有的 I/O 引脚都保持它们在运行模式时的状态。
    STM32F103 如何进入停机模式
    在 RTX 系统中,让 STM32 进入停机模式比较容易,调用固件库函数 PWR_EnterSTOPMode 即可 。

    不过要注意:为了进入停机模式,所有的外部中断的请求位(挂起寄存器(EXTI_PR))和 RTC 的闹钟标志都必须被清除,否则停止模式的进入流程将会被跳过,程序继续运行。
    STM32F103 如何退出停机模式
    由于我们是采用指令 WFI 指令进入停机模式,那么设置任一外部中断线 EXTI 为中断模式并且在 NVIC
    中必须使能相应的外部中断向量,就可以使用此中断唤醒停机模式。
    在开发板上面是将实体按键 K2 对应的引脚设置为中断方式触发。按下此按键会将系统从停机模式唤醒。 
    STM32F103 使用停机模式注意事项
    使用停机模式注意以下两个问题:
    进入停机模式前,一定要关闭滴答定时器,实际测试发现滴答定时器中断也能唤醒停机模式。
    当一个中断或唤醒事件导致退出停机模式时,HSI RC 振荡器被选为系统时钟。这个时候用户要根据
    需要重新配置时钟,如果使用的 HSE 时钟,那么要重新配置并使能 HSE 和 PLL。
    STM32F407 停机模式介绍
    本章节我们主要讲解停机模式,停机模式基于 Cortex™-M4F 深度睡眠模式与外设时钟门控。调压器
    既可以配置为正常模式,也可以配置为低功耗模式。在停止模式下,1.2 V 域中的所有时钟都会停止,PLL、
    HSI 和 HSE RC 振荡器也被禁止。内部 SRAM 和寄存器内容将保留。在停止模式下,所有的 I/O 引脚都保
    持它们在运行模式时的状态。
    STM32F407 如何进入停机模式
    在 RTX 系统中,让 STM32 进入停机模式比较容易,调用固件库函数 PWR_EnterSTOPMode 即可,
    不过要注意:为了进入停止模式,所有 EXTI 线挂起位(在挂起寄存器 (EXTI_PR)中)、 RTC 闹钟(闹钟 A
    和闹钟 B)、 RTC 唤醒、 RTC 入侵和 RTC 时间戳标志必须复位,否则停止模式的进入流程将会被跳过,程
    序继续运行。
    STM32F407 如何退出停机模式
    由于我们是采用指令 WFI 指令进入停机模式,那么设置任一外部中断线 EXTI 为中断模式并且在 NVIC
    中必须使能相应的外部中断向量,就可以使用此中断唤醒停机模式。
    在开发板上面是将实体按键 K2 对应的引脚设置为中断方式触发。按下此按键会将系统从停机模式唤
    醒。
    STM32F407 使用停机模式注意事项
    使用停机模式注意以下两个问题:
    进入停机模式前,一定要关闭滴答定时器,实际测试发现滴答定时器中断也能唤醒停机模式。
    当一个中断或唤醒事件导致退出停机模式时,HSI RC 振荡器被选为系统时钟。这个时候用户要根据
    需要重新配置时钟,如果使用的 HSE 时钟,那么要重新配置并使能 HSE 和 PLL。
    如何有效降低停机模式下的功耗
    设计低功耗主要从以下几方面着手:
    注意 I/O 的状态。因为在停机状态下,所有的 I/O 引脚都保持它们在运行模式时的状态。
    如果此 I/O 口带上拉,请设置为高电平输出或者高阻态输入。
    如果此 I/O 口带下拉,请设置为低电平输出或者高阻态输入。
    注意 I/O 和外设 IC 的连接。
    测试低功耗的时候,一定不要连接调试器,更不能边调试边测电流。

     

    PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);进入低功耗模式会一直等待中断来唤醒。

    K2按键只做唤醒功能:

     单片机测试功耗,一般采取测试电流的方式,也是使用电流来衡量的,在VCC 3.3v处串联一个10-20欧的精密电阻,就可以测出电阻的电压,除以电阻求得电流。P=UI。

  • 相关阅读:
    今天我给你们推荐一本书《Linux就该这么学》!!!
    《Linux就该这么学》第十九天课程
    《Linux就该这么学》第十八天课程
    《Linux就该这么学》第十七天课程
    《Linux就该这么学》第十六天课程
    《Linux就该这么学》第十五天课程
    《Linux就该这么学》第十四天课程
    《Linux就该这么学》第十三天课程
    《Linux就该这么学》第十二天课程
    《Linux就该这么学》第十一天课程
  • 原文地址:https://www.cnblogs.com/yangguang-it/p/7351818.html
Copyright © 2011-2022 走看看