STM32L431RC Standby模式+RTC定时周期中断唤醒 (代码讲解)

低功耗系列

一、Standby模式是什么?

Standby模式是指进入待机模式,系统的功耗比立即睡眠模式会达到一个新低的情况。(由于我的是开发板实测电流会降很多,但是还是在mA以上)

二、代码使用步骤

1.使用STM32CUBEMX创建工程

挑选MCU:

在这里插入图片描述

配置时钟:

在这里插入图片描述

使能并配置RTC时钟:

在这里插入图片描述
在这里插入图片描述

使能并配置RTC时钟:
在这里插入图片描述

在这里插入图片描述
这里是5s唤醒一次

在这里插入图片描述
使能中断

配置显示串口:

在这里插入图片描述
配置串口无中断
在这里插入图片描述

配置下载口:

在这里插入图片描述
在这里插入图片描述
配置下载引脚,具体你要选那个视情况而定

配置工程编译环境:

在这里插入图片描述

2.代码分析

主函数代码如下:

int main(void)
{
  /* 方便观察的两行log */
  uint8_t temp[30]="***Enter STANDBY Mode***\r\n";
  uint8_t rtc_temp[40]="******RTC SET OK******\r\n";
  
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  
  /* RTC的初始化 后面说 */
  MX_RTC_Init();
  MX_USART1_UART_Init();
  printf("----STM32L431RCT6 STANDBY TEST----\r\n");
  RTC_TimeShow();

  while (1)
  {			
	HAL_Delay(500);
	/* 判断按键是否按下,按下后发送两条log,设置唤醒时间 
    * 进入STANDBYMode
    */
	if(HAL_GPIO_ReadPin(KEY1_GPIO_Port,GPIO_PIN_2) == RESET)
	{
          HAL_UART_Transmit(&huart1,rtc_temp,sizeof(rtc_temp),2);
          HAL_UART_Transmit(&huart1,temp,sizeof(temp),2);
          /* 这句话尤为重要,因为你创建工程的时候这句话系统不会写出来,自己要写*/
          HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 5, RTC_WAKEUPCLOCK_CK_SPRE_16BITS);
          HAL_PWR_EnterSTANDBYMode(); 	
			
	}	  
  }
}
void RTC_TimeShow(void)
{
	RTC_DateTypeDef getSdate;
	RTC_TimeTypeDef getTime;
    /*日历显示时间用的,没有仔细研究*/
	/* Get the RTC current Date */
	HAL_RTC_GetDate(&hrtc, &getSdate, RTC_FORMAT_BIN);
	/* Get the RTC current Time */
	HAL_RTC_GetTime(&hrtc, &getTime, RTC_FORMAT_BIN);
	
	
	/* Display time Format : Year:Month:Date:WeekDay */
 	printf("%02d-%02d-%02d ",getSdate.Year, getSdate.Month, getSdate.Date);
//	printf("\t\t");	
	/* Display time Format : hh:mm:ss */
	printf("%02d:%02d:%02d",getTime.Hours, getTime.Minutes, getTime.Seconds);	
	printf("\r\n");	
}

3.演示结果

上电正常现象
在这里插入图片描述
按下进入待机按键,5s出来
在这里插入图片描述
5s后CPU唤醒,程序重新执行
在这里插入图片描述

总结

本文简单的写了关于待机模式的代码,这是HAL库的版本。标准库版本可以网上搜索。文章并没有详述待机模式的理论还得读者自己查找文献研究。有错误可以留言指出。

  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值