STM32三种低功耗模式研究二

发布者:bullfish最新更新时间:2015-08-25 来源: eefocus关键字:STM32  低功耗模式 手机看文章 扫描二维码
随时随地手机看文章
停机模式:任一外部中断可以唤醒,系统保存代码运行状态,唤醒前后要分别进行电源管理配置和时钟配置。
                 如果不配置时钟,它是自动切换到内部时钟的;当然,如果系统重启或重新上电,则系统会从头开                      始,当然包括从头配置时钟。
示例:
停机模式进入之前:
       
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
printf(" 进入停止模式 ");
 
PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);
停机模式唤醒之后:
void SYSCLKConfig_STOP(void)
{
ErrorStatus HSEStartUpStatus;
 
  RCC_HSEConfig(RCC_HSE_ON);
 
 
  HSEStartUpStatus = RCC_WaitForHSEStartUp();
 
  if(HSEStartUpStatus == SUCCESS)
  {
 
     
    RCC_PLLCmd(ENABLE);
 
   
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
    {
    }
 
   
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
 
   
    while(RCC_GetSYSCLKSource() != 0x08)
    {
    }
  }
}
 
为了验证程序唤醒后是不是从进入停机模式那一条语句接着运行,我进行如下编程:
int main(void)
{
LED_GPIO_Config();
 
EXTI_Key_Config(); 
SysTick_Init();
 
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);//电源管理
 
while(1)                            
{
LED1( ON );
Delay_us(100000);     // 10000 * 10us = 100ms
LED1( OFF );   
 
// SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;
PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);
LED2( ON );  
Delay_us(100000);   // 10000 * 10us = 100ms
LED2( OFF );
LED3( ON );  
Delay_us(100000);     // 10000 * 10us = 100ms
LED3( OFF );  
}
}
发现根本不进入停机模式,文档上写着:为了进入停止模式,所有的外部中断的请求位(挂起寄存器(EXTI_PR))和RTC的闹钟标志都必须被清除,否则停止模式的进入流程将会被跳过,程序继续运行。我看看外部中断的标志也都请了啊,怎么回事?进一步研究发现,SysTick_Init()里面并没有打开systick,而是在Delay_us(100000)里面打开的,那么我在进入停机之前应该关掉,所以把上述程序中的SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk打开就好啦,嘎嘎!

关键字:STM32  低功耗模式 引用地址:STM32三种低功耗模式研究二

上一篇:stm32 设置systick中断抢先式优先级
下一篇:Stm32时钟分析

推荐阅读最新更新时间:2024-03-16 14:30

STM32 MDK 工程创建 图解步骤
好久没有使用MDK编写STM32的程序了,现在上手才发现自己都不太记得创建步骤了,于是再次翻阅书籍,一步一步记录一下-----参考了野火的例子! ---第一步---创建一个文件夹---在文件夹下建立如下文件夹--- ---1-1---其中CMSIS是用来存放库文件为我们自带的启动文件和一些CMSIS层文件。 ----1-1-1-----上面说的启动文件在startup文件夹中,其中包含了各种STM32芯片的启动文件,主要是按照flash大小来分的,后面工程设置再介绍。 ---1-2---其中FWlib是用来存放STM32库中inc与src两个文件夹---这两个文件夹不需要修改----inc中是所
[单片机]
<font color='red'>STM32</font> MDK 工程创建 图解步骤
调试STM32遇到Hardfault知识总结
在NVIC中有一个硬fault状态寄存器(HFSR),它指出产生硬fault的原因。如果不是由于取向量造成的,则硬fault服务例程必须检查其它的fault状态寄存器,以最终决定是谁上访的。 1、寄存器描述 首先查看硬故障寄存器,判别原因。 硬故障状态寄存器 硬fault状态寄存器(地址:0xE000_ED2C) 位段 名称 描述 31 DEBUGEVT 硬fault因调试事件而产生 30 FORCED 硬fault是总线fault,存储器管理fault或是用法fault上访的结果 29:2 1 VECTBL 硬fault是在取向时发生的 0 121页手册 各个fault
[单片机]
STM32的IO口如何配置
1.0 STM32的输入输出管脚有下面8种可能的配置:(4输入+2输出+2复用输出) 1)浮空输入_IN_FLOATING 2)带上拉输入_IPU 3)带下拉输入_IPD 4)模拟输入_AIN 5)开漏输出_OUT_OD 6)推挽输出_OUT_PP 7)复用功能的推挽输出_AF_PP 8)复用功能的开漏输出_AF_OD 1.1I/O口的输出模式下,有3种输出速度可选(2M,10M,50MHz),这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度。通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。 1.1.1对于串口,假如最大波特率只需115.2K,那么用2M的
[单片机]
STM32标准库改为HAL库的程序实现
标准库占绝大多数,自己买的板子跟的资料也一般是标准库,HAL库很少,不过要是使用STM32CubeMx配置,那么就是使用的HAL库了,而参考资料是标准库的,就没有办法用。 注意: 1. 标准库与HAL库不兼容,不要想着直接拿来用了,比如标准库使用#include stm32f10x.h ,HAL库使用#include stm32f1xx_hal.h 要让标准库程序使用HAL库时也可以正常运行得到想要的结果,有以下几种方法: 一、 将标准库程序中的每个函数内的代码修改为使用HAL库且同样效果的代码, 比如标准库中配置GPIO的代码直接就可以用STM32CubeMx配置为相同效果 二、根据标准库程序整个程序运行的原理使用HAL库
[单片机]
Keil实现对意法半导体STM32互联系列的支持
Keil公司宣布其产品Keil MDK-ARM(微控制器开发套件)及RL-ARM(实时库)实现了对意法半导体STM32互联系列的支持。Keil公司同时推出了新的MCBSTEM32C评估板和开发套件。 STM32 互联系列基于ARM® Cortex™-M3处理器,具有全速USB OTG、两个CAN2.0B接口、10/100以太网(含对IEEE1588精密时间协议 (PTP)的硬件支持)。该产品同STM32家族的其他产品采用同样的外设,因此能够轻松实现项目移植,并有高达256KB的闪存和64KB的SRAM。 MDK-ARM 最新版本的的MDK-ARM支持所有的STM32产品,它包括配置文件、设备专有视图以
[单片机]
Keil实现对意法半导体<font color='red'>STM32</font>互联系列的支持
STM32 Cubemax(六) —— STM32利用定时器编码器模式处理带编码器直流电机
前言 电赛延期了,趁有时间再写点东西吧. 编码器电机配置较为繁琐,本文较长,耐心看下去,一定有收获. 本文适合已经对编码器有所了解的同学观看,如果对编码器原理还不太理解,可以看看CSDN中别人讲编码器的,个人觉得已经讲的十分清楚了,这里主要讲解怎么使用Cubemax去使用编码器 一、硬件准备 本次实验使用的是带增量式AB相霍尔编码器的直流减速电机 简单介绍一下这款电机,减速比为1:30,即输出轴转一圈,电机内部实际转30圈,霍尔编码器为13位编码器,即电机每转,对于编码器有2的13次方的增量.(简单的说,上面那个霍尔编码器检测的圆盘,转一圈,检测13个脉冲) 2.电机所使用的电机驱动为应该大家都十分熟悉的L2
[单片机]
<font color='red'>STM32</font> Cubemax(六) —— <font color='red'>STM32</font>利用定时器编码器<font color='red'>模式</font>处理带编码器直流电机
STM32技术文档里面的I / O Level FT具体含义
five volt tolerant 意思的兼容5V信号电压。按照技术手册上讲的话 容忍最高电压是VDD+4.0 = 3.3+4.0=7.3V
[单片机]
<font color='red'>STM32</font>技术文档里面的I / O Level FT具体含义
STM32 Flash 均衡保存算法
在实际应用中,经常需要在程序运行过程中保存或读取一些数据,这些数据在工作中经常会变化,而且掉电后也不能丢失,所以需要及时地进行存储,存储这些数据常用的存储器是 EEPROM。 STM32 虽然本身不带 EEPROM,但是它支持自编程技术,可以利用内部 FLASH 来模拟 EEPROM,这样不仅简化了设计,而且降低了成本。 FLASH 的擦写次数是有限的,一般是 10W 次, FLASH 单个存储单元bit只能从1变为0,而不能从0变成1。 想要变成1,只能 page 擦除,这里的 page 表示一个擦除单位,擦除过程就是把 page 所有的位都写1,这种硬件特性决定需要一种比较高效的写 flash 算法。 总不能一
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved