STM32CubeMX系列|待机唤醒

待机唤醒

1. 低功耗模式简介

系统或电源复位后,微处理器处于运行状态,运行状态下HCLK为CPU提供时钟,内核执行程序代码。当CPU不需继续运行时(例如等待某个外部事件),可以利用多个低功耗模式来节省功耗。用户需要根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。STM32提供了3种低功耗模式,以达到不同层次的降低功耗的目的:

  • 睡眠模式(CM3内核停止工作,外设仍在运行)(功耗最高)
  • 停止模式(所有时钟都停止)(典型电流消耗20uA左右)
  • 待机模式(1.8V内核电源关闭)(最低电流消耗2uA左右)

在运行模式下,也可以通过如下方式降低功耗:

  • 降低系统时钟
  • 关闭APB和AHB总线上未被使用的外设的时钟

在这里插入图片描述

本实验仅对STM32的最低功耗模式(即待机模式)来做介绍。待机模式可实现STM32的最低功耗,该模式实在CM3深睡眠模式时关闭电压调节器,整个1.8V供电区域被断电,PLL/HSI/HSE振荡器也被断电,SRAM和寄存器内容丢失,仅备份的寄存器和待机电路维持供电
下图为STM32进入及退出待机模式的条件:

在这里插入图片描述

2. 硬件设计

本实验用D1指示灯提示系统正常运行,指示灯熄灭表示进入待机模式,K_UP按键用来唤醒待机模式,并使用串口1打印相关调试信息

  • D1指示灯
  • K_UP按键
  • USART1串口
3. 软件设计
3.1 STM32CubeMX设置
  • RCC设置外接HSE,时钟设置为72M
  • PC0设置为GPIO推挽输出模式、上拉、高速、默认输出电平为高电平
  • PA0设置为GPIO下拉输入模式
  • USART1选择为异步通讯方式,波特率设置为115200Bits/s,传输数据长度为8Bit,无奇偶校验,1位停止位

在这里插入图片描述

  • 输入工程名,选择工程路径(不要有中文),选择MDK-ARM V5;勾选Generated periphera initialization as a pair of ‘.c/.h’ files per IP ;点击GENERATE CODE,生成工程代码
3.2 MDK-ARM编程
  • 在main.c文件中添加进入待机模式函数
/* USER CODE BEGIN 4 */
void Sys_Enter_Standby(void){
	__HAL_RCC_PWR_CLK_ENABLE();		//使能PWR时钟
	__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);		//清除Wake_UP标志
	HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);	//设置WAKEUP用于唤醒
	HAL_PWR_EnterSTANDBYMode();		//进入待机模式
}
/* USER CODE END 4 */
  • 在主函数while循环中添加如下测试程序
while (1){
	printf("Time: 5\r\n");
	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_RESET);		
	HAL_Delay(1000);
		
	printf("Time: 4\r\n");
	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_SET);		
	HAL_Delay(1000);

	printf("Time: 3\r\n");
	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_RESET);		
	HAL_Delay(1000);

	printf("Time: 2\r\n");
	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_SET);		
	HAL_Delay(1000);

	printf("Time: 1\r\n");
	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_RESET);		
	HAL_Delay(1000);

	printf("Entered Standby Mode...Please press KEY_UP to wakeup system!\r\n");
	Sys_Enter_Standby();
}
4. 下载验证

编译无误后下载到开发板,可以看到系统运行时D1指示灯不断闪烁,5秒钟后进入待机模式,此时D1指示灯熄灭。当按下KEY_UP按键或复位按键时,待机模式被唤醒,系统重新运行,同时串口打印提示信息
在这里插入图片描述

关注我的公众号,在公众号里发如下消息,即可获取相应的工程源代码:

玩转STM32CubeMX | 待机唤醒

在这里插入图片描述

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安迪西嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值