最近要用到低功耗功能,看了下手册,把学习过程记录下,其中也有一些不明白的地方期望和大家进行交流。

首先来看看低功耗模式有哪些:

再看看怎么进入低功耗:

在这里我选择了STOP0模式:

在这里,我有一点疑惑就是进入STOP0之前,手册说不能有事件或者中断位产生,否则就不能进入低功耗模式

而是继续运行。这里怎么避免产生事件或者中断位?

上代码:

1、使能PWR时钟

    /*##-1- Enables the PWR Clock and Enables access to the backup domain #######*//* To change the source clock of the RTC feature (LSE, LSI), you have to:- Enable the power clock- Enable write access to configure the RTC clock source (to be done once after reset).- Reset the Back up Domain- Configure the needed RTC clock source */LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_PWR);LL_PWR_EnableBkUpAccess();

2、配置RTC

static void rtc_init(void)
{if(!LL_RCC_LSI_IsReady()){LL_RCC_LSI_Enable();NOP();NOP();NOP();NOP();while(!LL_RCC_LSI_IsReady());//Èý¸öLSIÖÜÆÚÖ®ºó²Å¸üÐÂ}LL_RCC_ForceBackupDomainReset();LL_RCC_ReleaseBackupDomainReset();LL_RCC_SetRTCClockSource(LL_RCC_RTC_CLKSOURCE_LSI);/* USER CODE BEGIN RTC_Init 0 *//* USER CODE END RTC_Init 0 */LL_RTC_InitTypeDef RTC_InitStruct = {0};LL_RTC_TimeTypeDef RTC_TimeStruct = {0};LL_RTC_DateTypeDef RTC_DateStruct = {0};LL_RTC_AlarmTypeDef RTC_AlarmStruct = {0};/* Peripheral clock enable */LL_RCC_EnableRTC();/* USER CODE BEGIN RTC_Init 1 *//* Enable RTC APB clock  */LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_RTC);/* USER CODE END RTC_Init 1 */RTC_InitStruct.HourFormat = LL_RTC_HOURFORMAT_24HOUR;RTC_InitStruct.AsynchPrescaler = RTC_ASYNCH_PREDIV;RTC_InitStruct.SynchPrescaler = RTC_SYNCH_PREDIV;LL_RTC_Init(RTC, &RTC_InitStruct);RTC_TimeStruct.Hours = 0x12;RTC_TimeStruct.Minutes = 0x00;RTC_TimeStruct.Seconds = 0x00;LL_RTC_TIME_Init(RTC, LL_RTC_FORMAT_BCD, &RTC_TimeStruct);RTC_DateStruct.WeekDay = LL_RTC_WEEKDAY_FRIDAY;RTC_DateStruct.Month = LL_RTC_MONTH_DECEMBER;RTC_DateStruct.Day = 0x29;RTC_DateStruct.Year = 0x16;LL_RTC_DATE_Init(RTC, LL_RTC_FORMAT_BCD, &RTC_DateStruct);/** Enable the Alarm A */RTC_AlarmStruct.AlarmTime.Hours = 0x12;RTC_AlarmStruct.AlarmTime.Minutes = 0x00;RTC_AlarmStruct.AlarmTime.Seconds = 0x05;RTC_AlarmStruct.AlarmMask = LL_RTC_ALMA_MASK_DATEWEEKDAY;RTC_AlarmStruct.AlarmDateWeekDaySel = LL_RTC_ALMA_DATEWEEKDAYSEL_DATE;RTC_AlarmStruct.AlarmDateWeekDay = 0x1;LL_RTC_ALMA_Init(RTC, LL_RTC_FORMAT_BCD, &RTC_AlarmStruct);/* USER CODE BEGIN RTC_Init 2 *//* Disable the write protection for RTC registers */LL_RTC_DisableWriteProtection(RTC);/* Enable Alarm*/LL_RTC_ALMA_Enable(RTC);/* Clear the Alarm interrupt pending bit */LL_RTC_ClearFlag_ALRA(RTC);/* Enable IT Alarm */LL_RTC_EnableIT_ALRA(RTC);/* Enable the write protection for RTC registers */LL_RTC_EnableWriteProtection(RTC);/* RTC Alarm Interrupt Configuration: EXTI configuration */LL_EXTI_ClearRisingFlag_0_31 (LL_EXTI_LINE_19);LL_EXTI_EnableIT_0_31(LL_EXTI_LINE_19);LL_EXTI_EnableRisingTrig_0_31(LL_EXTI_LINE_19);/*## Configure the NVIC for RTC Alarm ##################################*/NVIC_SetPriority(RTC_TAMP_IRQn, 0x0F);NVIC_EnableIRQ(RTC_TAMP_IRQn);/* USER CODE END RTC_Init 2 */
}

3、中断配置

void RTC_TAMP_IRQHandler(void)
{/* Get the Alarm interrupt source enable status */static uint8_t i=1;if (LL_RTC_IsEnabledIT_ALRA(RTC) != 0){/* Get the pending status of the Alarm Interrupt */if (LL_RTC_IsActiveFlag_ALRA(RTC) != 0){/* Alarm callback *///Alarm_Callback();SystemClock_Config();TRACE_INFO("RTC=%d\r\n",i);i++;/* Clear the Alarm interrupt pending bit */LL_RTC_ClearFlag_ALRA(RTC);}}/* Clear the EXTI's Flag for RTC Alarm */LL_EXTI_ClearFallingFlag_0_31(LL_EXTI_LINE_19);
}

4、进入STOP0模式

    LL_RTC_ClearFlag_ALRA(RTC);LL_EXTI_ClearRisingFlag_0_31 (LL_EXTI_LINE_19);LL_PWR_SetPowerMode(LL_PWR_MODE_STOP0);//LL_PWR_SetPowerMode(LL_PWR_MODE_STANDBY);LL_LPM_EnableDeepSleep();//LL_PWR_SetPowerMode(LL_PWR_MODE_STOP0);
#if defined ( __CC_ARM)__force_stores();
#endif//__WFE();__WFI();

这里有一点问题,就是WIE不起作用,目前没有想明白。

如果是进入STANDBY模式,仅仅把LL_PWR_SetPowerMode(LL_PWR_MODE_STOP0);

修改为LL_PWR_SetPowerMode(LL_PWR_MODE_STANDBY);即可

经过试验,得出如下结论:

1、STANDBY被RTC唤醒,则会复位;

2、STOP0被RTC唤醒,则会继续运行,但是时钟需要重新配置下。

目前能够休眠和唤醒了,哎,我也该睡觉了,困,剩下的问题以后找到答案再贴上来。。。。。。。

STM32GX低功耗学习笔记一相关推荐

  1. STM32CubeMX学习笔记(15)——电源管理(PWR)低功耗睡眠模式

    一.低功耗模式简介 系统提供了多个低功耗模式,可在 CPU 不需要运行时(例如等待外部事件时)节省功耗.由用户根据应用选择具体的低功耗模式,以在低功耗.短启动时间和可用唤醒源之间寻求最佳平衡. 睡眠模 ...

  2. STM32CubeMX学习笔记(16)——电源管理(PWR)低功耗停止模式

    一.低功耗模式简介 系统提供了多个低功耗模式,可在 CPU 不需要运行时(例如等待外部事件时)节省功耗.由用户根据应用选择具体的低功耗模式,以在低功耗.短启动时间和可用唤醒源之间寻求最佳平衡. 睡眠模 ...

  3. STM32CubeMX学习笔记(17)——电源管理(PWR)低功耗待机模式

    一.低功耗模式简介 系统提供了多个低功耗模式,可在 CPU 不需要运行时(例如等待外部事件时)节省功耗.由用户根据应用选择具体的低功耗模式,以在低功耗.短启动时间和可用唤醒源之间寻求最佳平衡. 睡眠模 ...

  4. STM32F103CUBE学习笔记 一 环境安装

    STM32F103CUBE学习笔记一 stm32cubemx安装 jre安装 stm32cubemx安装 stm32cubemx创建工程 准备工作 配置时钟 KEIL PACK安装 keil安装 st ...

  5. [学习笔记]stm32

    文章目录 一些问题 学习笔记 stm32F1 stm32F4 简介 Cortex内核 Cortex-M4内核 库开发与寄存器开发的关系 STM32 固件库与 CMSIS 标准 内部结构 最小系统 小马 ...

  6. 【STM32】学习笔记RTC日历基础应用问题分析

    ▲ 点击上方 关注STM32 RTC,Real_Time Clock,即实时时钟,在许多电子系统中都能看到实时时钟的存在. 今天是第6篇分享,<STM32学习笔记>之RTC日历基础应用问题 ...

  7. FreeRTOS学习笔记——互斥型信号量

    来自:http://blog.csdn.net/xukai871105/article/details/43456985 0.前言 在嵌入式操作系统中互斥型信号量是任务间资源保护的重要手段.下面结合一 ...

  8. stm32读操作失败_STM32学习笔记—通信容易出错的情况

    I²C:全称为Inter-Integrated Circuit(内部集成电路),是一种串行通讯总线,常用于嵌入式电子产品中. 这是第4篇分享,<STM32学习笔记>之I2C通信容易出错的情 ...

  9. 嵌入式知识-ARM裸机-学习笔记(2):利用GPIO来控制LED(附mkv210_image.c文件解析)

    嵌入式知识-ARM裸机-学习笔记(2):利用GPIO来控制LED(附mkv210_image.c文件解析) 首先声明该博客是针对朱有鹏老师的嵌入式课程进行笔记的总结. 一.通过GPIO控制点亮LED( ...

最新文章

  1. ASP.NET MVC – 视图简介
  2. 在当前进程下取得当前登陆用户
  3. 2021-04-17 深入理解SLAM技术 【3】 数学基础概述
  4. spark启动的worker节点是localhost_Spark大数据在线培训:Spark运行原理解析
  5. 【面试感悟】一名3年工作经验的程序员应该具备的技能
  6. linux计划任务没有运行,linux下定时任务不能执行
  7. HDU 4289 Control (最大流最小割)
  8. 如何批量重命名,文件批量重命名方法介绍
  9. 掩码位数原理、掩码位数计算方法、VLSM详解(IP地址划分方法)、CIDR详解
  10. win7安装硬盘后无法启动计算机,win7系统安装固态硬盘开启AHCi后开不了机的图文教程...
  11. java跑酷游戏_HTML5游戏实战(1):50行代码实现正面跑酷游戏
  12. Semi-prime H-numbers(POJ 3292)
  13. QC DCP PD SCP FCP等充电协议
  14. 电力能耗监测在山东青岛机场的应用
  15. poj 1129 Channel Allocation——四色定理
  16. 下载后端传来的excel文件
  17. MacBook pro新手教程
  18. android更新软件,Android软件的自动更新
  19. 计算机一级wpsoffice知识点,计算机一级考试WPSOffice考试大纲
  20. 今天,我看到了中国电影的未来

热门文章

  1. Box-Muller 变换
  2. 带你轻松把握实行DB2的饬令
  3. Uncaught Error: USERKEY_PLAT_NOMATCH 的原因和解决办法
  4. RSS阅读——在繁杂的社会接受纯粹的信息 RSS介绍与RSS订阅源分享
  5. 公共钥匙盒(100分)
  6. [.NET/C#]快速采集全国城市商圈数据
  7. ON1 Photo RAW 2021 15.0.0.9735 快速的 RAW 照片编辑器
  8. 浅谈《Sky 光·遇》中的渲染技术
  9. Chrome 浏览器倍速播放视频
  10. 寒假作业1:打印沙漏