STM32 CUbeIDE 低功耗模式 ——待机模式 RTC /WakeUp 唤醒

  达到的效果,使用RTC定时中断唤醒待机,设置定时15S,设备上电开始工作(LED灯开始亮,串口发送RTC时间),工作结束进入待机模式,RTC定时时间到,唤醒设备,或者在设备进入待机模式下使用WakeUp按键唤醒。

1、低功耗模式

  在系统或电源复位以后,微控制器处于运行状态。当CPU不需继续运行时,可以利用多种低功耗模式来节省功耗,例如等待某个外部事件时。用户需要根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。

STM32F10xxx有三种低功耗模式:

● 睡眠模式(Cortex™-M3内核停止,所有外设包括Cortex-M3核心的外设,如NVIC、系统时钟(SysTick)等仍在运行) 
● 停止模式(所有的时钟都已停止) 
● 待机模式(1.8V电源关闭) 
此外,在运行模式下,可以通过以下方式中的一种降低功耗: 
● 降低系统时钟 
● 关闭APB和AHB总线上未被使用的外设时钟。

低功耗模式:
在这里插入图片描述
进入待机模式:
可以通过设置独立的控制位,选择以下待机模式的功能:
● 独立看门狗(IWDG):可通过写入看门狗的键寄存器或硬件选择来启动IWDG。一旦启动了独立看门狗,除了系统复位,它不能再被停止。
● 实时时钟(RTC):通过备用区域控制寄存器(RCC_BDCR)的RTCEN位来设置。
● 内部RC振荡器(LSI RC):通过控制/状态寄存器(RCC_CSR)的LSION位来设置。
● 外部32.768kHz振荡器(LSE):通过备用区域控制寄存器(RCC_BDCR)的LSEON位设置。
退出待机模式:
当一个外部复位(NRST引脚)、IWDG复位、WKUP引脚上的上升沿或RTC闹钟事件的上升沿发生时,微控制器从待机模式退出。
在这里插入图片描述
待机模式下的输入/输出端口状态:
在待机模式下,所有的I/O引脚处于高阻态,除了以下的引脚:
● 复位引脚(始终有效)
● 当被设置为防侵入或校准输出时的TAMPER引脚
● 被使能的唤醒引脚

2、代码编写

2.1、创建工程

需要开启的外设 USART1 、RTC 以及RTC中断和LED(PA8)。

开启调试:
在这里插入图片描述
开启时钟,包括RTC时钟:
在这里插入图片描述
在这里插入图片描述

开启RTC和中断:
在这里插入图片描述
开启USART1 串口发送信息:
在这里插入图片描述

2.2、代码

定义变量和printf重定向:
在这里插入图片描述

/* USER CODE BEGIN Includes */
RTC_DateTypeDef yTime ;//年份
RTC_TimeTypeDef nTime; //时 分 秒    时间
RTC_AlarmTypeDef aTime; //闹钟定时
#include <string.h>
#include <stdio.h>
#define printf(...)  HAL_UART_Transmit((UART_HandleTypeDef *)&huart1, (uint8_t *)u_buf,\
		                                sprintf((char*)u_buf,__VA_ARGS__), 0xFFFF);
uint8_t u_buf[256];
/* USER CODE END Includes */

在这里插入图片描述

nTime.Hours = 0;
  nTime.Minutes = 0;
  nTime.Seconds = 0;
  HAL_RTC_SetTime(&
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值