![fa5f855073edb9aff3bccd7f427962b4.gif](https://i-blog.csdnimg.cn/blog_migrate/dca8df4d61e0e87765a67ed984c58d5f.gif)
摘要:很多单片机都有低功耗模式,STM32也不例外。在系统或电源复位以后,微控制器处于运行状态。运行状态下的HCLK为CPU提供时钟,内核执行程序代码。当CPU不需继续运行时,可以利用多个低功耗模式来节省功耗,例如等待某个外部事件时。用户需要根据最低电源消耗,最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。
单片机内部功率是各功能部分功率的总和,低功耗模式是通过关掉部分内部功能达到省电。STM32F103单片机共有3种低功耗模式,不同模式会对系统正常工作有一定影响,需要按实际情况选择,低功耗模式只针对单片机内部功能,外接电路产生的功耗不在其内。
一、单片机功耗简介
![50dd105b5ee83fac35c88a6e5e4c8829.png](https://i-blog.csdnimg.cn/blog_migrate/fe5f1bc50c4c3ae80ff2d6184ee4dd53.png)
其中,时钟源产生的时钟需要供给SRAM、ARM内核以及内部功能来使用。而我们的用户程序在上电之后,需要从FLASH当中调入到SRAM当中来运行,所以SRAM起到了程序运行的载体。然后程序再来控制ARM内核进行运算和处理,最终控制内部功能,包括IO端口、ADC、 IIC、SPI总线之类,最终达到我们需要的控制效果。只有这四个部分全部工作、通力配合,才能让单片机在正常模式下顺畅工作。
如果我们需要进入低功耗模式,那么就需要在这四个部分当中关闭一些功能。那么哪个部分的功能可以独立关闭?哪个部分的功能需要配合关闭呢?
首先看时钟源。时钟源是为其他三个部分提供时钟信号的。如果时钟源独立关闭,那么其他三个部分也将停止工作。所以时钟源是不能独立关闭的。
再看SRAM内存,SRAM内存是用来存储用户程序的,程序需要在SRAM当中运行。如果独立关掉SRAM,程序将不能执行。就无法控制内核进行计算,更不能控制内部功能来达到我们的应用效果,一旦程序停止,整个系统将不能工作。所以SRAM也不能独立关闭。
再看内部功能,内部功能所面对的是直接输出应用,包括IO端口ADC、IIC、SPI,这些功能都是直接通过引脚输出到外部电路的。如果内部功能独立关闭,那么就等于切断了外部的所有联系,即使时钟源正常工作、程序正常运行、ARM内核正常计算,但是这些所有的工作都不能通过内部功能来向外输出,那么整个单片机也起不到任何作用,所以内部功能也不能单独关闭。
最后是ARM内核,如果时钟源保持工作ÿ