stm32 RTC唤醒定时器中断LL

问题描述

使用核板g070,我正在尝试使用RTC的唤醒计时器每秒钟设置一次中断。但是,我没有在CubeMX生成的头文件(stm32g0xx.h)中找到相应的中断。我想仅使用LL,因为我想了解如何使用较低级别的中断。 我将RTC设置如下:

  LL_RTC_InitTypeDef RTC_InitStruct = {0};

  /* Peripheral clock enable */
  LL_RCC_EnableRTC();
  LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_RTC);

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

  // Auto-wakeup interrupt configuration
  LL_RTC_disableWriteProtection(RTC);
  LL_RTC_WAKEUP_disable(RTC);
  while (LL_RTC_IsActiveFlag_WUTW(RTC) != 1);
  // Configure second wakeup timer
  LL_RTC_WAKEUP_SetAutoReload(RTC,0x8000);
  LL_RTC_WAKEUP_SetClock(RTC,LL_RTC_WAKEUPCLOCK_CKSPRE);
  LL_RTC_EnableIT_WUT(RTC);
  LL_RTC_WAKEUP_Enable(RTC);
  LL_RTC_SetAlarmOutEvent(RTC,LL_RTC_ALARMOUT_WAKEUP);
  LL_RTC_EnableWriteProtection(RTC);

然后我尝试设置NVIC,但是在IRQn_Type枚举中找不到对应的IRQ。

NVIC_SetPriority(?,1);
NVIC_EnableIRQ(?);

更新

似乎RTC_TAMP_IRQHandler会随着唤醒中断(??)加倍。将唤醒时钟设置为LL_RTC_WAKEUPCLOCK_CKSPRE(或LL_RTC_WAKEUPCLOCK_CKSPRE_WUT)似乎不起作用,但是如果我使用LL_RTC_WAKEUPCLOCK_DIV_16,则会发生中断。要重置中断,我只需要清除唤醒中断标志(??)

void RTC_TAMP_IRQHandler(void)
{
  LL_RTC_ClearFlag_WUT(RTC);
  LL_GPIO_TogglePin(LED_GREEN_GPIO_Port,LED_GREEN_Pin);
}

任何人都可以解释为什么会这样吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...