最近在DIY一款支持mppt的太阳能充电器,其中使用到了STM32F030F4P6作为主控芯片。用来显示充电状态,电池电量,升压电路使能控制,输出使能控制,手机插入检测,台灯控制等等功能。但是在我DIY过程中电路工作一切正常,就是晚上待机功耗有点大,具体待机电流有多少,没有设备没有测量。就是一晚上下来单节电池电压会下降0点几伏。在通过分析后发现在没用进行太阳能充电时,单片机还在飞速运转中,必然会造成功耗的损失。所以这里就想着在空闲时间让单片机进入低功耗模式,减少待机功耗。


STM32F030休眠模式介绍

从芯片手册中可以找到以下一段文字:

大概的意思就是STM32F030F4P6支持3种低功耗模式,分别为Sleep mode(休眠模式),Stop mode(停止模式),Standby mode(待机模式)。从手册中可以看出停止模式支持任何一个外部中断将MCU从低功耗模式中唤醒,这个功能对我这个应用实在是太友好了,因为我能用来作为外部唤醒资源的只有一个按键,所以在此次DIY的过程中毫不犹豫就使用停止模式,节省来之不易的能量。

在进入停止耗模式之前需要根据应用情况将单片机内部相关外设时钟进行关闭。我这里用到了ADC,所以需要关闭ADC时钟,失能ADC。还有使用到两个定时器,所以需要失能定时器让所有定时器停止计数。还有就是记得将IO口做适当的处理,这个根据板子实际情况。具体怎样设置可以参考下面这个文章,写的不错。http://www.openedv.com/posts/list/18372.htm

然后调用两个函数便可以进入停止模式。(我用的HAL库,函数参数可通过查看函数说明)

__HAL_RCC_PWR_CLK_ENABLE();
    HAL_PWR_EnterSTOPMode();

void StopModeIn(void)
{uint32_t i=10000;/*关闭输出*/PowerSwitch(0);LedOffAll();/*失能定时器*/ConfigTimer();/*失能ADC*/ConfigAdc();/*设置所有IO口*/ConfigIo();/*开启外部中断,我这里使用到两个外部中断进行唤醒*/HAL_NVIC_EnableIRQ(EXTI0_1_IRQn);            //按键状态监测HAL_NVIC_EnableIRQ(EXTI4_15_IRQn);           //充电状态监测while(i--);                                  //延时一小会  /*进入STOP MODE*/__HAL_RCC_PWR_CLK_ENABLE();                                        //使能电源管理时钟HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI); //进入停止模式,可以被任何一个中断源唤醒
}

我专门写了一个函数用来进入停止模式,在进入之前调用相关函数对单片机进行配置,每个人需求都不同这里就不一一介绍了。经过一番配置后,就能进入低功耗模式了吧!!!!

我手边没有专用的仪器,只有一个30多元万用表,接上去后单片机不能正常工作。于是呼我采用了观察法,将我的板子接上电池,进入低功耗测量初始电压为3.79V,然后经过3天后电压依然为3.79V,并且可以正常唤醒,我的电池是一节2600mah的锂电池,在这期间肯定存在损耗,具体多少等到公司后在进行测量,总之能够满足我目前的需求。

进入停机模式前需要将一个引脚配置为输入中断,在中断函数中可以做一些相应的操作,对于我这个系统而言,不存在历史数据所以直接在中断服务函数中进行软件复位就可以了,这样就可以让所有使用到的外设重新初始化。

STM32F030F4P6低功耗模式相关推荐

  1. STM32低功耗模式下GPIO如何配置最节能?

    目录 1.将未使用的GPIO 配置为模拟输入模式 2.调节GPIO 速度 3.GPIO不使用时禁用寄存器时钟 4.避免悬空未使用的引脚 STM32低功耗模式下GPIO如何配置最节能,这里总结了一下四点 ...

  2. MSP430低功耗模式-while循环失效

    如下代码实现MSP430G2553单片机两个led交替闪烁 #include <msp430.h> /*** main.c*/ int main(void) {WDTCTL = WDTPW ...

  3. STM32开发 -- 低功耗模式详解(2)

    如需转载请注明出处:https://juyou.blog.csdn.net/article/details/98631012 上一篇文章 STM32开发 – 低功耗模式详解(1) 简单的总结了一下低功 ...

  4. STM32开发 -- 低功耗模式详解(1)

    如需转载请注明出处:https://juyou.blog.csdn.net/article/details/95364296 很多单片机都有低功耗模式,STM32 也不例外.当 CPU 不需继续运行时 ...

  5. MSP430F5529 DriverLib 库函数学习笔记(十三)认识低功耗模式

    目录 硬知识 低功耗模式 MSP430单片机各工作模式下的电流消耗 API 进入低功耗模式 退出低功耗模式 平台:Code Composer Studio 10.3.1 MSP430F5529 Lau ...

  6. 【STM32】【STM32CubeMX】STM32CubeMX的使用之八:低功耗模式及MCU唤醒

    文章目录 0.前言 1.低功耗模式简介 2.CubeMX设置 3.软件设计   下载工程文件:   https://gitee.com/Joseph_Cooper/stm32-cube-mx-stm3 ...

  7. STM32低功耗模式测试

    stm32单片机低功耗模式共有3种,下来对3种低功耗进行分析测试. 先看手册上相关低功耗资料介绍: 先来分析睡眠模式: 进入睡眠模式比较简单,只需一条指令即可.唤醒睡眠模式,我们使用串口中断来唤醒,通 ...

  8. 32怎么通过一个按键实现不同工作模式_stm32几种低功耗模式的实现和差别

    点击上方蓝字关注我哦- 01 前言 按功耗由高到低排列,STM32具有运行.睡眠.停止和待机四种工作模式.上电复位后 STM32 处于运行状态,当内核不需要继续运行,就可以选择进入后面的三种低功耗模式 ...

  9. arm低功耗模式种类

    ARM低功耗模式 arm低功耗模式: #睡眠模式:内核停止,但所有外设(包括NVIC中断控制器.系统定时器Systick等)仍在运行 #停机模式:所有时钟都已停止 #待机模式(1.8V电源关闭):可实 ...

最新文章

  1. WPF使用X:Static做多语言支持
  2. echarts中的世界地图
  3. 总结下载Spring Framework的jar包
  4. oracle清空无效数据,如何清除编译后留下的无效对象
  5. 资料员计算机知识大全,最新资料员专业基础知识
  6. 地磅称重软件源码_地磅称重软件需求梳理的重要性
  7. 管理感悟:可接受的不参加培训的理由
  8. 高等数学-【3.1-4】微分中值定理与导数的应用
  9. 中国历代各王朝鼎盛时期疆域
  10. Python pandas.pivot_table学习笔记1
  11. 过滤器Filter的介绍
  12. 精益管理学会|什么是ECRS改善方法?
  13. int型整数的最小值和最大值是多少(精确值)
  14. MyBatis实战【上】
  15. 枝枝叶梗高傲的顶着莲蓬像是
  16. 2021年平均工资公布 这些行业不如意
  17. Unexpected token u in JSON at position 0 控制台报错
  18. 曾經很愛很愛伱,洳紟莪巳經放棄,哆謝伱啲鈈珍惜讓莪學茴迉惢,深噯灬伱时﹎ o放ヅ棄 我﹖ヅo
  19. Python 实现子域名查询与爆破
  20. strcat字符串拼接函数

热门文章

  1. QCon上海2015盛大开幕
  2. 【SpringBoot】:springboot整合FTP文件上传与下载功能
  3. 鸿蒙二部曲之一,网文封神之作,“鸿蒙二部曲”和“斗罗四部曲”你选择站哪边?...
  4. 群签名和环签名的区别_环签名,聚合签名
  5. 计算机学院认知实习报告
  6. uniapp 多语言版本demo in18
  7. 20轮廓-hu不变矩的测试程序
  8. 磁盘存储链式的B树与B+树(上课笔记)
  9. “宁做创业狼,不做打工狗” 创业者与打工者的区别丨国仁网络资讯
  10. Windows Server 2008使用无线网卡上网