STM32F103低功耗实验

本文深入探讨STM32微控制器的低功耗控制,包括睡眠模式、停止模式和待机模式的工作原理及唤醒条件。通过实例代码,演示如何在STM32上实现这些模式,特别适用于电池供电的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验目的

本章学习STM32的低功耗控制,掌握如何进入低功耗状态以及如何从此状态唤醒,数据手册请参看第四章电源控制PWR中的内容

实验简介

现在很多MCU都有低功耗控制,当需要系统省电时,就需要进入适当的低功耗模式来降低系统的功耗,尤其当MCU用在电池供电的设备上时,低功耗尤为重要,下面我们介绍STM32的3种低功耗以及唤醒条件。

睡眠模式:进入睡眠模式时,内核时钟停止,从睡眠模式中恢复不需要任何特殊的序列,但要重新使能ARM内核的时钟。在睡眠模式下,指令的执行被中止直至复位或中断出现。外设在CPU内核处于睡眠模式期间继续运行,并可产生中断使处理器恢复执行指令。睡眠模式下,处理器内核自身,存储器系统,有关控制器及内部总线停止工作,因此这些器件的动态功耗会降低,只要出现任何使能的中断,CPU内核就会从睡眠模式中唤醒。
在这里插入图片描述
停止模式:在停止模式下电压调节器可运行在正常或低功耗模式。此时在1.8V供电区域的所有时钟都被停止,PLL,HSI,和 HSE RC振荡器的功能被禁止,SRAM和寄存器内容被保留下来。在停止模式下,所有I/O引脚都保持他们在运行模式时的状态。
停止模式进入和退出
在这里插入图片描述
待机模式:待机模式可实现系统的最低功耗。该模式是在Cortex-M3深睡眠模式时关闭电压调节器。整个1.8V供电区域被断开。PLL ,HSI 和 HSE 振荡器也被断电。SRAM和寄存器内容丢失。只有备份的寄存器和待机电路维持供电。

待机模式的进入和退出
在这里插入图片描述
这三种模式最低功耗的是待机模式,其只需要2uA左右的电流,停机模式是次低功耗的,其典型的电流消耗在20uA左右。最后就是睡眠模式了。在这里插入图片描述

代码

待机模式
main.c

#include "MyIncludes.h"

u16 sys_cnt = 0;
void systick_isr(void)
{
   
   if(sys_cnt <100)
   sys_cnt++;
   else
   {
   
     sys_cnt = 0;
     HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_4|GPIO_PIN_5);
   }
}

void Key_Init(void)
{
   
  GPIO_InitTypeDef GPIO_InitStruct;
 
  __GPIOC_CLK_ENABLE();
  //使能c时钟
 
 GPIO_InitStruct.Pin = GPIO_PIN_1 | GPIO_PIN_3 ;
 GPIO_InitStruct.Mode = GPIO_MODE_INPUT;//输入
 GPIO_In
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值