STM32电源管理
(1)3时钟模式
①睡眠模式②停止模式③待机模式
1.睡眠模式:Cortex-M3内核(理解为CPU)停止工作,CPU供电1.8V有着,周边任何执行。执行
2.停机模式:全部时钟都停止,CPU电源1.8V没断。唤醒后从原来位置运行
3.待机模式:时钟全断,CPU电源1.8V也断,唤醒后程序又一次运行
可形象參考:
CPU:皇上
CPU电源1.8V:皇后
外设:将军
那么:
1.睡眠模式:仅仅有皇上睡觉
2.停机模式:皇上,将军睡觉
3.待机模式:皇上,皇后。将军全睡觉了
(原则:皇后不睡觉,程序可被保留,唤醒后从原来位置运行)

(二)程序简单介绍(库函数)
1.睡眠模式
while(1)
{
/* wait interrupt */
LED1( ON );
Delay(0xFFFFF);
LED1( OFF ); LED2( ON );
Delay(0xFFFFF);
LED2( OFF ); LED3( ON );
Delay(0xFFFFF);
LED3( OFF ); __WFI();
}
__WFI(); 进入睡眠模式,随意中断唤醒。唤醒后不用再配置时钟
2.停止模式
①/*由于要使用其外设时钟等。故需用到pwr*/
#include "stm32f10x_pwr.h"
②/*使能电源管理单元的时钟*/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
③进入停止模式
PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);
④唤醒:外部中断
由于将军睡了,(及外设时钟关了,因此须要又一次配置)唤醒后须要又一次启动HSE
SYSCLKConfig_STOP();
void SYSCLKConfig_STOP(void)
{
ErrorStatus HSEStartUpStatus;
/* 使能 HSE */
RCC_HSEConfig(RCC_HSE_ON); /* 等待HSE准备就绪*/
HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus == SUCCESS)
{ /* 使能 PLL */
RCC_PLLCmd(ENABLE); /* 等待 PLL 准备就绪 */
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
{
} /* 选择PLL作为系统时钟源*/
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /*等待PLL被选择为系统时钟源 */
while(RCC_GetSYSCLKSource() != 0x08)
{
}
}
}
3.待机模式
①/*由于要使用其外设时钟等,故需用到pwr*/
#include "stm32f10x_pwr.h"
②/*使能电源管理单元的时钟*/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
③进入待机模式
/*使能WKUP引脚的唤醒功能,WKUP是第二功能。不用配置它的输出模式(不是太懂)*/
PWR_WakeUpPinCmd (ENABLE);
/*进入待机模式*/
PWR_EnterSTANDBYMode();
④唤醒,复位唤醒。PA0上升沿唤醒
⑤检測是复位唤醒还是PA0上升沿唤醒
if(PWR_GetFlagStatus(PWR_FLAG_WU) == SET)
{
printf("\r\n PA0上升沿唤醒\r\n"); }
else
printf("\r\n 其它\r\n");
由于待机唤醒程序从头运行,故不用多加配置时钟的函数了
狂人用脑子
版权声明:本文博主原创文章。博客,未经同意不得转载。
STM32电源管理的更多相关文章
- linux驱动编写(电源管理驱动)
对于嵌入式设备来说,合适的电源管理,不仅可以延长电池的寿命,而且可以省电,延长设备运行时间,在提高用户体验方面有很大的好处.所以,各个soc厂家在这方面花了很多的功夫.下面,我们可以看看linux是如 ...
- 第42章 电源管理—实现低功耗—零死角玩转STM32-F429系列
第42章 电源管理—实现低功耗 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...
- [专业名词·硬件] 2、DC\DC、LDO电源稳压基本常识(包含基本原理、高效率模块设计、常见问题、基于nRF51822电源管理模块分析等)·长文
综述先看这里 第一节的1.1简单介绍了DC/DC是什么: 第二节是关于DC/DC的常见的疑问答疑,非常实用: 第三节是针对nRF51822这款芯片电源管理部分的DC/DC.LDO.1.8的详细分析,对 ...
- Linux电源管理(11)_Runtime PM之功能描述
转自:http://www.wowotech.net/pm_subsystem/rpm_overview.html 1. 前言 终于可以写Runtime PM(后面简称RPM)了,说实话,蜗蜗有点小激 ...
- USB电源管理
在USB总线接口协议中,由于涉及电源供电,因此协议中规定了完整的电源管理方案.通过USB电源管理可以实现USB设备的激活.挂起.空闲和睡眠等,从而降低无效的功率消耗,实现系统电源的有效使用和合理分配. ...
- Android电源管理-休眠简要分析
一.开篇 1.Linux 描述的电源状态 - On(on) S0 - Working - Standb ...
- exynos 4412 电源管理芯片PMIC 的配置及使用方法
/** ****************************************************************************** * @author Maox ...
- linux电源管理系列(一)
本系列将逐步介绍linux电源管理相关的知识,涉及到常见电源管理机制.linux电源管理机制.linux驱动中有关电源管理的相关接口.内核文档中关于Linux电源管理架构文档的分析.以下将以此来介绍相 ...
- linux驱动程序之电源管理之Run-time PM 详解(4)
Run-time PM. 每个device或者bus都会向run-time PM core注册3个callback struct dev_pm_ops { ... int (*runtime_su ...
随机推荐
- 找出二叉树中和为n的路径
题目描述: 输入一个整数和一棵二元树.从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径.打印出和 与输入整数相等的所有路径. 二叉树中的路径 从二叉树的根节点出发,至二叉树的叶子节点的 ...
- C++习题 对象转换
[Submit][Status][Web Board] Description 定义一个Teacher(教师)类(教师号,姓名,性别,薪金)和一个Student(学生)类(学号,姓名,性别,成绩),二 ...
- Python使用subprocess的Popen要调用系统命令
当我们须要调用系统的命令的时候,最先考虑的os模块.用os.system()和os.popen()来进行操作.可是这两个命令过于简单.不能完毕一些复杂的操作,如给执行的命令提供输入或者读取命令的输出, ...
- MVC与三层架构
我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真相. 首先,它俩根本不是一个概念. 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目. ...
- 【翻译自mos文章】回收 asm磁盘空间的方法
回收 asm磁盘空间的方法 參考原文: How To Reclaim Asm Disk Space? (Doc ID 351866.1) 适用于: Oracle Database - Enterpri ...
- UVA - 12130 Summits
Description Problem G - Summits Time limit: 8 seconds You recently started working for the largest m ...
- 《SAS编程和数据挖掘商业案例》学习笔记# 19
继续<SAS编程与数据挖掘商业案例>学习笔记,本文側重数据处理实践.包含:HASH对象.自己定义format.以及功能强大的正則表達式 一:HASH对象 Hash对象又称散列表,是依据关键 ...
- PHPthinking官方论坛
PHPthinking官方论坛正式上线一个月!眼下.我们已经有数百个固定用户的.论坛发展迅速,所有份额一些技术贴,我们希望,其他许多用户增加来,创建学习.交流更方便.丰富的内容PHP座谈会! PHPt ...
- poj 2408 Anagram Groups(hash)
id=2408" target="_blank" style="">题目链接:poj 2408 Anagram Groups 题目大意:给定若干 ...
- 用bat 删除当前文件夹下的某类文件
@echo on for /r %%f in (*.pdb,*.xml) do del %%f 保存为bat文件执行!