STM32Cube STM32L053配置RTC WAKEUP中断唤醒

芯片手册中提到的从停止模式唤醒说明

芯片手册中提到的从待机模式唤醒说明

配置

LL_RTC_InitTypeDef RTC_InitStruct = {0};

LL_RCC_EnableRTC();

NVIC_SetPriority(RTC_IRQn,0);
NVIC_EnableIRQ(RTC_IRQn);

RTC_InitStruct.HourFormat = LL_RTC_HOURFORMAT_24HOUR;
RTC_InitStruct.AsynchPrescaler = 127;
RTC_InitStruct.SynchPrescaler = 255;
LL_RTC_Init(RTC, &RTC_InitStruct);

LL_RTC_WAKEUP_SetClock(RTC, LL_RTC_WAKEUPCLOCK_CKSPRE);
LL_RTC_WAKEUP_SetAutoReload(RTC, 60);

中断唤醒清除中断

void RTC_IRQHandler(void)
{
  /* USER CODE BEGIN RTC_IRQn 0 */
	INTRTC = 1;
  while(LL_RTC_IsActiveFlag_WUT(RTC))
  {
    LL_RTC_ClearFlag_WUT(RTC);
    LL_RCC_MSI_Enable();
    LL_RCC_LSI_Enable();
  }
  LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_20);	
  /* USER CODE END RTC_IRQn 0 */

  /* USER CODE BEGIN RTC_IRQn 1 */

  /* USER CODE END RTC_IRQn 1 */
}

休眠函数

void stop(void)
{
    /* 开启PWR时钟 */
  LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_PWR);
  /* 设置中断线 */
	LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_20);
  LL_EXTI_EnableIT_0_31(LL_EXTI_LINE_20);
  LL_EXTI_EnableRisingTrig_0_31(LL_EXTI_LINE_20);
	
	/* 设置RTC唤醒时间 */
  LL_RTC_DisableWriteProtection(RTC);
  LL_RTC_WAKEUP_Disable(RTC);
  while(!LL_RTC_IsActiveFlag_WUTW(RTC));
  LL_RTC_WAKEUP_SetAutoReload(RTC, 20);
  LL_RTC_WAKEUP_SetClock(RTC, LL_RTC_WAKEUPCLOCK_CKSPRE);
  LL_RTC_EnableIT_WUT(RTC);
  LL_RTC_WAKEUP_Enable(RTC);
  LL_RTC_EnableWriteProtection(RTC);
//power_off();
	LL_PWR_EnableUltraLowPower();
  LL_PWR_SetRegulModeLP(LL_PWR_REGU_LPMODES_LOW_POWER);
	LL_PWR_SetPowerMode(LL_PWR_MODE_STOP);
  LL_LPM_EnableDeepSleep();
	__WFI();
//power_on();
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花开花落的个人博客

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值