资源简介
使用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 led 时钟
- STM32 2.4G通信例程
- 直流无刷电机方波驱动 stm32 例程代码
- STM32中文资料
- STM32蓝牙和串口程序
- STM32f103超声波模块例程
- stm32f103c8t6 4 oled.rar
- stm32f030 IAP Demo(原创)
- STM32基于rt_thread操作系统的SDHC卡文件
- NRF24L01实现51与STM32双向通讯
- STM32F103 串口程序(完整版)
- stm32 ds18b20 温度传感器 测试通过
- stm32官方例程
- STM32F103定时器中断程序
- [免费]基于stm32f103ze 的OLED驱动代码
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- STM32定时器使用入门。看了这个程序会
- SIM908 SDIO FSMC STM32 FIFO
- STM32F103 CC2500完整驱动(模拟SPI)
- AD7606采集程序
- stm32 用SPI 方式读写 SDHC
- stm32通过DMA方式采集ADC数据
- 意法半导体STM全系列微控制器STM32ST
- 基于STM32芯片的SX1278 驱动 LORA.rar
- STM32的PCB封装库,以及原理图库,48
- SX1280.rar
- STM32 DS3231驱动.zip
- STM32F103C8T6+NRF24l01无线通信
- 21天学会嵌入式开发STM32.zip
评论
共有 条评论