RTC唤醒中断


如果你是由待机模式唤醒的话不会进入中断,他相当于复位直接由程序开始运行
你可以在正常运行模式下使能唤醒,就会进入中断。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32的RTC唤醒中断功能可以用来在低功耗模式下定时唤醒处理器,从而实现节能的目的。以下是使用RTC唤醒中断的步骤: 1. 初始化RTC模块,并设置RTC时钟源。可以使用外部低速晶振或者内部LSI/LSE时钟源。 2. 配置RTC唤醒时间和唤醒周期。唤醒时间即RTC计数器达到一定值时触发唤醒中断唤醒周期即RTC计数器重新从0开始计数的周期。可以通过设置RTC的预分频器和自动重装载寄存器来实现。 3. 使能RTC唤醒中断,并将处理器进入低功耗模式。在低功耗模式下,处理器将停止工作,直到RTC计数器达到唤醒时间。 4. 唤醒中断触发后,处理器会执行中断服务程序,并从低功耗模式恢复。在中断服务程序可以进行一些定时操作,比如更新LCD显示等。 5. 中断服务程序执行完毕后,处理器会回到正常运行模式。 以下是一个使用RTC唤醒中断的例子代码: ```c void RTC_Config(void) { /* Enable the PWR clock */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); /* Allow access to RTC */ PWR_BackupAccessCmd(ENABLE); /* Reset Backup Domain */ RCC_BackupResetCmd(ENABLE); RCC_BackupResetCmd(DISABLE); /* Enable LSE oscillator */ RCC_LSEConfig(RCC_LSE_ON); while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET); /* Select LSE as RTC clock source */ RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); /* Enable RTC clock */ RCC_RTCCLKCmd(ENABLE); /* Wait for RTC registers synchronization */ RTC_WaitForSynchro(); /* Configure RTC prescaler */ RTC_SetPrescaler(32767); /* RTC period = RTCCLK / (prescaler + 1) = 1s */ /* Configure RTC wakeup timer */ RTC_WakeUpClockConfig(RTC_WakeUpClock_RTCCLK_Div16); /* RTC wakeup timer clock = RTCCLK / 16 */ RTC_SetWakeUpCounter(10); /* Wakeup time = (RTC wakeup timer period) * (RTC wakeup counter + 1) = 11s */ /* Enable RTC wakeup interrupt */ RTC_ITConfig(RTC_IT_WUT, ENABLE); /* Enable the Wakeup Pin */ PWR_WakeUpPinCmd(ENABLE); /* Enter standby mode */ PWR_EnterSTANDBYMode(); } void RTC_WKUP_IRQHandler(void) { if(RTC_GetITStatus(RTC_IT_WUT) != RESET) { /* Clear the RTC wakeup interrupt */ RTC_ClearITPendingBit(RTC_IT_WUT); /* Do something here */ /* Exit standby mode */ NVIC_SystemReset(); } } ``` 在上面的例子,我们使用了LSE晶振作为RTC时钟源,RTC的预分频器设置为32767,使得RTC计数器每秒钟递增一次。唤醒时间设置为10,唤醒周期设置为11,即每11秒钟唤醒一次处理器。在RTC唤醒中断服务程序,我们可以执行一些定时操作,比如更新LCD显示等。最后,我们通过NVIC_SystemReset()函数退出低功耗模式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值