如何解决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 举报,一经查实,本站将立刻删除。