STM32F103三种低功耗模式的区别

STMF103的三种低功耗模式

睡眠模式(sleep_mode),停机机模式(stop_mode),待机模式(standby_mode)

在这里插入图片描述

唤醒之后代码运行流程

睡眠模式

睡眠模式唤醒之后,代码从睡眠模式进入的下一条语句执行。

停机模式

停机模式唤醒之后,代码从停机模式进入的下一条语句执行。

待机模式

待机模式唤醒后的代码执行等同于复位后的执行
进入Standby模式后,只能有Wake-up脚和RTC唤醒,特别是唤醒后,程序将从最开始运行,也就是相当于软件复位。

低功耗模式下GPIO的状态

睡眠模式

在睡眠模式下,所有的GPIO引脚都保持它们在运行模式时的状态。

停机模式

在停止模式下,所有的GPIO引脚都保持它们在运行模式时的状态。

待机模式

在待机模式下,静态SRAM和特殊功能寄存器的数据全部丢失,只保留备份寄存器和待机电流维持工作,所以所有的GPIO引脚处于高阻态,除了以下的引脚:
● 复位引脚(始终有效)
● 当被设置为防侵入或校准输出时的TAMPER引脚
● 被使能的唤醒引脚

低功耗设计思路

1.根据产品的实际需求和特点(最低电源消耗、最快速启动时间和可用的唤醒源),选择一个合适的低功耗模式
2、关闭不需要的外设时钟。
3、降低系统主频。
4、调整进行低功耗前GPIO的状态。(standby模式除外,standby模式下,所有的GPIO引脚处于高阻态)
a.GPIO口带上拉,请设置为高电平输出或者高阻态输入
b.GPIO口带下拉,请设置为低电平输出或者高阻态输入
5、注意GPIO和外设IC的链接。
6、测低功耗的时候,一定不要连接调试器。

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用STM32F103C8T6微控制器时,可以通过使用标准库函数来实现低功耗模式。以下是一个简单的示例代码,演示如何将STM32F103C8T6设置为低功耗模式: ```c #include "stm32f10x.h" void RCC_Configuration(void); void GPIO_Configuration(void); int main(void) { RCC_Configuration(); // 配置系统时钟 GPIO_Configuration(); // 配置GPIO引脚 // 进入低功耗模式 PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI); while (1) { // 在低功耗模式下执行的代码 } } void RCC_Configuration(void) { RCC_DeInit(); // 复位RCC寄存器 // 配置系统时钟为内部RC振荡器(HSI)的8倍频 RCC_HSEConfig(RCC_HSE_OFF); RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_4); RCC_PLLCmd(ENABLE); while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) ; RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); while (RCC_GetSYSCLKSource() != 0x08) ; // 配置外设时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); } void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; // 配置GPIO引脚为输出模式 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); } ``` 这段代码首先配置了系统时钟和GPIO引脚,然后通过调用`PWR_EnterSTOPMode`函数将STM32F103C8T6设置为低功耗模式。在低功耗模式下,可以执行一些必要的操作,然后进入一个无限循环,等待唤醒事件发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值