您的位置 首页 被动

STM32之RTC闹钟唤醒停机形式

费了九牛二虎之力,终于搞出来这个RTC闹钟唤醒停机模式了,发现有以下几点:1,停机模式下秒中断不能用;2,每次闹钟中断后,要重新赋值,

费了九牛二虎之力,总算搞出来这个RTC闹钟唤醒停机形式了,发现有以下几点:

1,停机形式下秒中止不能用;
2,每次闹钟中止后,要从头赋值,不然不会再进中止;
3,网上许多关于闹钟叫醒休眠形式的例程,后来发现,使能的都是秒中止,不是闹钟中止,底子不可;
4,发现闹钟中止使能后,假如使能了秒中止,则秒中止标志会置位:
void RTCAlarm_IRQHandler()//RTC_IRQHandler(void)
{
feed_dog();
if(RTC_GetITStatus(RTC_IT_SEC)!= RESET)
{
// g_bRTCAlarm = 1;
feed_dog();
RTC_ClearITPendingBit(RTC_IT_SEC);
RTC_WaitForLastTask();
}
if(RTC_GetITStatus(RTC_IT_ALR) != RESET)
{
g_bRTCAlarm = 1;
EXTI_ClearITPendingBit(EXTI_Line17);
if(PWR_GetFlagStatus(PWR_FLAG_WU) != RESET)
{
PWR_ClearFlag(PWR_FLAG_WU);
}
RTC_WaitForLastTask();
RTC_ClearITPendingBit(RTC_IT_ALR);
RTC_WaitForLastTask();
}
}
//void RTC_IRQHandler()//RTC_IRQHandler(void)
//{
// if(RTC_GetITStatus(RTC_IT_SEC) != RESET)
// {
//
//// g_bRTCAlarm = 1;
// feed_dog();
//
// RTC_ClearITPendingBit(RTC_IT_SEC);
//
// RTC_WaitForLastTask();
// }
//}
假如翻开下面函数:
// NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn;
// NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
// NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
// NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
// NVIC_Init(&NVIC_InitStructure);
则秒中止就会进来;
还有,经过上面这个NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn;我才刚知道到他便是传递中止向量地址的。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/beidong/255921.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部