资源简介
使用RTC唤醒低功耗三种模式,实测功耗为1UA左右,sleep模式下功耗为1MA左右。
代码片段和文件信息
/*
*********************************************************
** Filename: stop_mode.c
** Abstract: 使用STM32L151C8T6MCU,使用RTC唤醒STOP和STANDBY模式下的低功耗低功耗时长可以人为的进行设置
** 设置低功耗时长时请参考头文件中关于时长的宏定义
** 使用注意事项:使用CubeMX生成函数时,在main()函数后会自动生成SystemClock_Config()函数,此程序中调用了该函数。
** 如果该函数在其他文件中,请将该.h文件加入,以免发生错误;
** Date : 2018-01-04
** Author:王翔武
*********************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include “pwr_mode_rtc.h“
#include “main.h“
RTC_HandleTypeDef RTCHandle; //RTC结构体变量
//进入STOP模式低功耗,使用RTC功能唤醒,其中stoptime单位为S,如设置1,低功耗1秒后唤醒
void enter_stop_rtc(float stoptime)
{
uint32_t i; //局部变量,用于计算低功耗时长
system_power_config();
/* Disable Wakeup Counter */
HAL_RTCEx_DeactivateWakeUpTimer(&RTCHandle);
/*To configure the wake up timer to 4s the WakeUpCounter is set to 0x242B:
RTC_WAKEUPCLOCK_RTCCLK_DIV = RTCCLK_Div16 = 16
Wakeup Time base = 16 /(~37KHz) = ~0432 ms
Wakeup Time = ~5s = 0432ms * WakeUpCounter
==> WakeUpCounter = ~5s/0432ms = 11562 */
i = stoptime*2396;
HAL_RTCEx_SetWakeUpTimer_IT(&RTCHandle i RTC_WAKEUPCLOCK_RTCCLK_DIV16);
/* Enter Stop Mode */
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON PWR_STOPENTRY_WFI);
SystemClock_Config();
}
//进入STANDBY模式低功耗,使用RTC功能唤醒,其中standbytime单位为S,如设置1,低功耗1秒后唤醒
void enter_standby_rtc(float standbytime)
{
uint32_t i; //局部变量,用于计算低功耗时长
system_power_config();
if(__HAL_PWR_GET_FLAG(PWR_FLAG_SB) != RESET)
{
/* Clear Standby flag */
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB);
}
/* Disable Wakeup Counter */
HAL_RTCEx_DeactivateWakeUpTimer(&RTCHandle);
/*To configure the wake up timer to 4s the WakeUpCounter is set to 0x242B:
RTC_WAKEUPCLOCK_RTCCLK_DIV = RTCCLK_Div16 = 16
Wakeup Time base = 16 /(~37KHz) = ~0432 ms
Wakeup Time = ~5s = 0432ms * WakeUpCounter
==> WakeUpCounter = ~5s/0432ms = 11562 */
i = standbytime*2396;
HAL_RTCEx_SetWakeUpTimer_IT(&RTCHandle i RTC_WAKEUPCLOCK_RTCCLK_DIV16);
/* Clear all related wakeup flags */
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
/* Enter the Standby mode */
HAL_PWR_EnterSTANDBYMode();
}
//进入SLEEP模式低功耗,使用RTC功能唤醒,其中sleeptime单位为S,如设置1,低功耗1秒后唤醒
void enter_sleep_rtc(float sleeptime)
{
uint32_t i; //局部变量,用于计算低功耗时长
system_power_config();
/* Disable Wakeup Counter */
HAL_RTCEx_DeactivateWakeUpTimer(&RTCHandle);
/*To configure the wake up timer to 4s the WakeUpCounter is set to 0x242B:
RTC_WAKEUPCLOCK_RTCCLK_DIV = RTCCLK_Div16 = 16
Wakeup Time base = 16 /(~37KHz) = ~0432 ms
Wakeup Time = ~5s = 0432ms * WakeUpCounter
==> WakeUpCounter = ~5s/0432ms = 11562 */
i = sleeptime*2396;
HAL_RTCEx_SetWakeUpTimer_IT(&RTCHandle i RTC_WAKEUPCLOCK_RTCCLK_DIV16);
/*Suspend Tick increment to prevent wakeup by Systick interrupt.
Otherwise the Systick interrupt will wake up the device within 1ms (HAL time bas
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5920 2018-01-04 18:18 PWR_RTC低功耗模式代码\pwr_mode_rtc.c
文件 428 2018-01-04 18:14 PWR_RTC低功耗模式代码\pwr_mode_rtc.h
文件 337 2018-01-04 19:13 PWR_RTC低功耗模式代码\低功耗介绍.txt
目录 0 2018-01-04 18:22 PWR_RTC低功耗模式代码
----------- --------- ---------- ----- ----
6685 4
- 上一篇:网上招聘信息系统的详细分析与设计
- 下一篇:数据结构与算法分析城市数据库的实现
相关资源
- stm32的光敏电阻应用--楼道灯ADC转换
- STM32串口无法程序问题分析报告
- STM32的PWM程序,亲测可用
- STM32的ADC程序,亲测可用
- 基于STM32室内温度报警控制系统设计报
- 基于STM32的无线跌倒检测系统的设计与
- 基于stm32的波形发生器设计
- stm32开源飞控MPU6050
- STM32f103做HID时某些电脑枚举不成功,
- STM32的手写识别程序,亲测可用
- 低功耗分析工具手册
- 音频信号分析仪07电设国赛,STM32实现
- STM32官方USB例程JoyStick详解
- 拼音输入法STM32寄存器代码
- 基于STM32F103RCT6的无源蜂鸣器音乐播放
- 基于ADS1293的便携式低功耗心电信号采
- STM32F407按键和LCD多级菜单显示.zip
- stm32f103 LIN 从模式参考例程
- PCA9685 STM32驱动
- STM32控制SIM900A和继电器电路原理图
- STM32串口的LIN从模式完整代码
- 基于STM32F103RBT6 的CAN双机通讯成功案例
- 基于STM32 DSP库的电力谐波分析,根据
- 基于STM32F103RCT6的无源蜂鸣器音乐播放
- 基于STM32实现的温度控制系统TFTLCD 蜂
- stm32实现485通信
- STM32的音乐播放器程序,亲测可用
- 使用STM32F103控制无源蜂鸣器发声播放
- stm32 4x4简易密码锁
- WS2812 5050RGB灯 stm32f103控制
评论
共有 条评论