当前位置:网站首页>stm32 RTC闹钟唤醒低功耗模式
stm32 RTC闹钟唤醒低功耗模式
2022-07-30 10:59:00 【嵌入式阿萌】
stm32 RTC闹钟唤醒 低功耗模式
rtc初始化
void MX_RTC_Init(void)
{
RTC_TimeTypeDef sTime = {0};
RTC_DateTypeDef DateToUpdate = {0};
hrtc.Instance = RTC;
hrtc.Init.AsynchPrediv = RTC_AUTO_1_SECOND;
hrtc.Init.OutPut = RTC_OUTPUTSOURCE_ALARM;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN Check_RTC_BKUP */
RTC_SET_Alarm(&sTime );
if(HAL_RTCEx_BKUPRead(&hrtc,RTC_BKP_DR1)!=0X1234)
{
HAL_RTCEx_BKUPWrite(&hrtc,RTC_BKP_DR1,0X1234);
}else return;
/* USER CODE END Check_RTC_BKUP */
/** Initialize RTC and set the Time and Date
*/
sTime.Hours = 0x0;
sTime.Minutes = 0x0;
sTime.Seconds = 0x0;
if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK)
{
Error_Handler();
}
DateToUpdate.WeekDay = RTC_WEEKDAY_MONDAY;
DateToUpdate.Month = RTC_MONTH_JANUARY;
DateToUpdate.Date = 0x1;
DateToUpdate.Year = 0x0;
if (HAL_RTC_SetDate(&hrtc, &DateToUpdate, RTC_FORMAT_BCD) != HAL_OK)
{
Error_Handler();
}
}
void RTC_SET_Alarm(RTC_TimeTypeDef * sTime )
{
RTC_AlarmTypeDef alarm;
HAL_RTC_GetTime(&hrtc, sTime, RTC_FORMAT_BIN);
sTime->Seconds += ALARM_INTERVAL;
if(sTime->Seconds >=60)
{
sTime->Minutes += 1;
sTime->Seconds = sTime->Seconds-60;
if(sTime->Minutes >=60)
{
sTime->Hours += 1;
sTime->Minutes = 0;
if(sTime->Hours >=24)
sTime->Hours = 0;
}
}else ;
alarm.AlarmTime.Hours = sTime->Hours;
alarm.AlarmTime.Minutes = sTime->Minutes ;
alarm.AlarmTime.Seconds = sTime->Seconds ;
alarm.Alarm = RTC_ALARM_A;
if(HAL_RTC_SetAlarm_IT(&hrtc, &alarm, RTC_FORMAT_BIN)!= HAL_OK)
{
Error_Handler();
}
}
主函数
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_RTC_Init();
MX_USART1_UART_Init();
while (1)
{
/* USER CODE BEGIN 3 */
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, GPIO_PIN_RESET);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, GPIO_PIN_SET);
HAL_RTC_GetTime(&hrtc, &GetTime, RTC_FORMAT_BIN);
/* Get the RTC current Date */
HAL_RTC_GetDate(&hrtc, &GetData, RTC_FORMAT_BIN);
/* Display date Format : yy/mm/dd */
printf("%02d/%02d/%02d\r\n",2000 + GetData.Year, GetData.Month, GetData.Date);
/* Display time Format : hh:mm:ss */
printf("%02d:%02d:%02d\r\n",GetTime.Hours, GetTime.Minutes, GetTime.Seconds);
printf("\r\n");
HAL_SuspendTick();
HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON,PWR_SLEEPENTRY_WFI;
SystemClock_Config();
MX_RTC_Init();
}
/* USER CODE END 3 */
}

5秒唤醒一次还是挺准的
边栏推荐
- Meikle Studio-Look at Hongmeng Device Development Practical Notes 7-Network Application Development
- 360 released a future-oriented EDR to protect the security of government and enterprise user terminals in an all-round way
- idea的package没有空心
- 张量篇-初步
- 湖仓一体电商项目(一):项目背景和架构介绍
- 京东校招笔试题+知识点总结
- Adaptive Control - Simulation Experiment 1 Designing Adaptive Laws Using Lyapunov's Stability Theory
- decodeURIComponent()、eval()、encodeURIComponent()
- 真正懂经营管理的CIO具备哪些特质
- NLP领域的最新研究进展
猜你喜欢

Linux内核设计与实现(十)| 页高速缓存和页回写

log4js入门

【HMS core】【FAQ】HMS Toolkit Typical Questions Collection 1

优酷VIP会员周卡只需7.5元,看《沉香如屑》用优酷视频

Still using Swagger?I recommend this interface management artifact with zero code intrusion

async.js入门

鸿湖万联扬帆富设备开发板正式合入OpenHarmony主干

PL5920 SOT-23-6 21V、2A、600KHz同步降压DC/DC转换器

AB测试 总结归纳

STM32F1读取MLX90632非接触式红外温度传感器
随机推荐
第1章 Kali与靶机系统
decodeURIComponent()、eval()、encodeURIComponent()
Basemap和Seaborn
Log4j有哪几种日志级别呢?
美团内推+校招笔试题+知识点总结
《跟唐老师学习云网络》 - 问题定位 - 主机通但容器不通
零代码开发入门:快速上手DIY函数公式的5个步骤
我又造了个轮子:GrpcGateway
系统设计精选 | 基于FPGA的CAN总线控制器的设计(附代码)
第2章 常用安全工具
Transfer Learning技术研修
易基因:人类tRNA基因位点表现出与衰老相关的DNA高甲基化|研究文章
360闷声干大事获赞无数,数字安全如何保障?还得看企业安全云
电压跟随器不要随便加
idea的package没有空心
单片机开发之静态LED显示
干货|语义网、Web3.0、Web3、元宇宙这些概念还傻傻分不清楚?(中)
神经网络学习笔记4——自动编码器(含稀疏,堆叠)(更新中)
[ASP.NET Core] Dependency Injection for Option Classes
High energy output!Tencent's internal MyCat middleware manual, both theoretical and practical