2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > STM32:RTC闹钟唤醒

STM32:RTC闹钟唤醒

时间:2023-05-13 23:53:07

相关推荐

STM32:RTC闹钟唤醒

想使用闹钟唤醒功能使系统从待机下唤醒,遇到一个问题:使用闹钟唤醒就不能使用wakeup pin唤醒。二者只能取其一。

此问题解决,画了个板子wakeup pin 接下拉电阻解决。

写新代码时候遇到一个问题:设置闹钟中断开启之后不要关闭:PWR_BackupAccessCmd(DISABLE);

如果只有设置秒中断的话可以有这句比较安全,可是后面还要设置闹钟步长,千万不能有,不然会死掉,死掉。

1,首先屏蔽掉://PWR_WakeUpPinCmd(ENABLE); //使能唤醒管脚功能

我的程序在wakeup_config.c中实现. 屏蔽后wakeup pin无法使机器唤醒

2,使能RTC闹钟中断:/* Enable the RTC Alarm interrupt */

RTC_ITConfig(RTC_IT_ALR, ENABLE);

/* Wait until last write operation on RTC registers has finished */

RTC_WaitForLastTask();

这两句在RTC初始化时候加入即可。

3,设置闹钟时长并进入待机

RTC_ClearFlag(RTC_FLAG_SEC);

while(RTC_GetFlagStatus(RTC_FLAG_SEC) == RESET);

RTC_SetAlarm(RTC_GetCounter() + 15);

RTC_WaitForLastTask();

Sys_Enter_Standby();

4,中断服务函数:

1 static void RTC_NVIC_Config(void) 2 {3NVIC_InitTypeDef NVIC_InitStructure; 4 5NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn; //RTC全局中断 6NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占优先级1位,从优先级3位 7NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //先占优先级0位,从优先级4位 8NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能该通道中断 9NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器10 }

RTC_NVIC_Config

1 void RTC_IRQHandler(void) 2 { 3 //RTC时钟中断 4 //每秒触发一次 56 if (RTC_GetITStatus(RTC_IT_SEC) != RESET)//秒钟中断 7 { 8 RTC_Get();//更新时间 9 }10 if(RTC_GetITStatus(RTC_IT_ALR)!= RESET)//闹钟中断11 {12 RTC_ClearITPendingBit(RTC_IT_ALR); //清闹钟中断13 printf("\n\rRTC Alarm \n\r"); 14 printf("\n\r Now is %d年 %d月 %d日 %d点 %d分 %d秒 ,星期%d\n\r",calendar.w_year,calendar.w_month,calendar.w_date,calendar.hour,calendar.min,calendar.sec,calendar.week);15 RTC_SetAlarm(RTC_GetCounter() + 8);16 RTC_WaitForLastTask(); 17 }18 RTC_ClearITPendingBit(RTC_IT_SEC|RTC_IT_OW); //清闹钟中断19 RTC_WaitForLastTask(); 20 21 }

RTC_IRQHandler

其实中断服务函数完全可以没有,因为待机后直接就是相当于reset,中断服务函数在运行时间可以对闹钟做出响应。

5,STOP模式需要设置EXTI17,standby模式并不需要。这里void RTCAlarm_IRQHandler(void) 根本不用。

折腾了一天,一直没调通居然是因为wakeup pin与RTC alarm同时开启造成的。难道ST只允许一种方式唤醒??

根据网友答复,需要wakeup pin 接下拉电阻可以解决。还没有试验。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。