STM32L051实现RTC低功耗唤醒

目录

一、简单介绍

二、cubmx配置

三、实验代码

四、效果展示


一、简单介绍

主要涉及是的RTC的自动唤醒单元

使用1Hz的内部时钟时,最长可以36小时唤醒,方法是增加一个bit,这样原本16位的RTC唤醒寄存器从最大65565s变成65535*2s,约等于36小时

RTC唤醒后需要软件清除WUTF

二、cubmx配置

使能调试口,用于烧录

开启RTC,勾选内部唤醒,设置唤醒时钟频率为1Hz,唤醒计数值5,即每隔5s自动RTC唤醒

笔者选用PB6引脚监控芯片运行状态,配置成推挽输出

使用内部的HSI时钟

三、实验代码

cpp 复制代码
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_RTC_Init();
  /* USER CODE BEGIN 2 */
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
  for (int i = 0; i < 1000; i++)
  {
      HAL_GPIO_TogglePin(TEST_GPIO_Port, TEST_Pin);
      HAL_Delay(2);
  }
  
HAL_PWR_EnterSTANDBYMode();
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

四、效果展示

单片机唤醒后持续翻转TEST引脚电平,持续3s后进入休眠,等待2s,RTC的5s唤醒时间到,芯片被唤醒,重新运行。

相关推荐
cardinal_5083 小时前
STM32MP157F-DK2开发板构建交叉编译链
stm32·单片机·嵌入式硬件
小羊先生car3 小时前
F429-HAL-RS485(回环/双机实验)(2026/8/16)
c语言·单片机·嵌入式硬件·软件构建
木白CPP3 小时前
Linux 驱动UART子系统源码分析
linux·运维·服务器·驱动开发·嵌入式硬件·开源软件
zlinear数据采集卡5 小时前
数据采集卡从入门到精通(10):采样率与分辨率的核心关系——反比律、架构分布与过采样
arm开发·嵌入式硬件·算法·fpga开发·架构·开源
水果里面有苹果7 小时前
33-TPS62130RGTR-3A降压器
嵌入式硬件
振南的单片机世界8 小时前
推挽vs开漏:一个“强拉硬灌”,一个“只拉不管”
arm开发·stm32·单片机·嵌入式硬件
小心亦新8 小时前
STM32学习23--I2C-1
stm32·嵌入式硬件·学习
小羊先生car8 小时前
F429-HAL-Can总线(回环及双机实验)(2026/8/15)
c语言·单片机·嵌入式硬件·软件构建
嵌入式阿蔡9 小时前
STM32时钟树详解:配错一个全乱套
c语言·stm32·单片机·嵌入式硬件
zlinear数据采集卡10 小时前
数据采集卡从入门到精通(7):流水线型ADC——级级接力,高速与高精的平衡术
开发语言·arm开发·嵌入式硬件·fpga开发·c#