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唤醒时间到,芯片被唤醒,重新运行。

相关推荐
清月电子10 小时前
杰理AC109N系列AC1082 AC1074 AC1090 芯片停产替代及资料说明
人工智能·单片机·嵌入式硬件·物联网
智嵌电子11 小时前
【笔记篇】【硬件基础篇】模拟电子技术基础 (童诗白) 第10章 模拟电子电路读图
笔记·单片机·嵌入式硬件
一颗青果12 小时前
51单片机 计算指令
单片机·嵌入式硬件·51单片机
一路往蓝-Anbo12 小时前
【第20期】延时的艺术:HAL_Delay vs vTaskDelay
c语言·数据结构·stm32·单片机·嵌入式硬件
Aaron158812 小时前
AD9084和Versal RF系列具体应用案例对比分析
嵌入式硬件·算法·fpga开发·硬件架构·硬件工程·信号处理·基带工程
LCG米14 小时前
低功耗设计艺术:基于STM32U3系列MCU实现人类存在检测(仅6%占空比)
stm32·单片机·嵌入式硬件
电子工程师-C5115 小时前
基于51单片机的智能调温淋浴器
单片机·嵌入式硬件·51单片机
国科安芯18 小时前
RISC-V 异常中断机制全解析
运维·单片机·嵌入式硬件·安全·risc-v·安全性测试