微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

stm32 RTC唤醒定时器中断LL

如何解决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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?