STM32-待机唤醒实验

STM32低功耗模式:

  1. 睡眠模式:CM3内核停止工作;外设运行
  2. 停机模式:时钟都停止
  3. 待机模式:1.8v内核电源关闭;功耗最低

(配置了RTC时钟不是以下步骤看数据手册)

代码流程:

  • 使能电源时钟
  • 设置WK_UP脚为唤醒源
  • 进入待机模式

代码如下

cs 复制代码
#include "wkup.h"

/*******************************************************************************
* 函 数 名         : Enter_Standby_Mode
* 函数功能		   : 进入待机模式
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void Enter_Standby_Mode(void)
{
		
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//使能PWR外设时钟
	
	PWR_ClearFlag(PWR_FLAG_WU);//清除Wake-up 标志
	
	PWR_WakeUpPinCmd(ENABLE);//使能唤醒管脚	使能或者失能唤醒管脚功能
	
	
	PWR_EnterSTANDBYMode();//进入待机模式
}

主函数代码(一定要在初始前增加延时只有在延时期间才能烧录代码)

cs 复制代码
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "usart.h"
#include "wkup.h"


/*******************************************************************************
* 函 数 名         : main
* 函数功能		   : 主函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
int main()
{
	SysTick_Init(72);
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中断优先级分组 分2组
	LED_Init();
	USART1_Init(115200);
	
	while(1)
	{
		printf("time: 5\r\n");
		LED1=0;
		delay_ms(1000);	//隔1秒显示计数
		
		printf("time: 4\r\n");
		LED1=1;
		delay_ms(1000);
		
		printf("time: 3\r\n");
		LED1=0;
		delay_ms(1000);
		
		printf("time: 2\r\n");
		LED1=1;
		delay_ms(1000);
		
		printf("time: 1\r\n");
		LED1=0;
		delay_ms(1000);
		
		printf("进入系统待机模式\r\n");
		Enter_Standby_Mode();	
	}
}
相关推荐
hateregiste3 小时前
国产数据库FlashDB移植到国产MCU GD32F103RC上的几点经验总结
单片机·嵌入式硬件
QQ5286211245 小时前
STM32F2/F4系列单片机解密和芯片应用介绍
stm32·单片机·嵌入式硬件·程序·pcb抄板
2006yu6 小时前
从零开始学习单片机17
单片机·嵌入式硬件·学习
智能物联实验室7 小时前
如何解决网关断网后时间不再统计的问题?无RTC子设备如何打通主网关的时间同步功能?
嵌入式硬件·网关·实时音视频·智能硬件
kaikaile19959 小时前
GY-BMP280压强传感器完整工程stm32控制
stm32·单片机·嵌入式硬件
智能物联实验室9 小时前
屏随人动+视觉魔方+多样主题+智能留言,涂鸦Wukong AI 2.0助力打造爆款带屏云台相机
图像处理·人工智能·嵌入式硬件·数码相机·智能硬件
GodKK老神灭10 小时前
STM32 定时器(互补输出+刹车)
stm32·单片机·嵌入式硬件
lingzhilab14 小时前
零知开源——基于STM32F407VET6实现ULN2003AN驱动28BYJ-48步进电机控制系统
stm32·单片机·嵌入式硬件
JasmineX-115 小时前
直流电机驱动与TB6612
c语言·stm32·单片机·嵌入式硬件
hahaha60161 天前
模拟电路中什么时候适合使用电流传递信号,什么时候合适使用电压传递信号
stm32·单片机·嵌入式硬件