STM32的RTC闹钟唤醒待机模式

通过RTC闹钟不能唤醒待机模式下的STM32,但是当注释掉下面这一句程序的时候,就能通过RTC闹钟唤醒。

PWR_WakeUpPinCmd(ENABLE);//使能唤醒管脚功能

这就给我们一种错误的判断:WKUP外部唤醒和RTC闹钟唤醒,只能二选其一,不能同时存在。

解决这一问题的方法是:在WKUP管脚,外接下拉电阻。

另外,当使用RTC闹钟唤醒的时候,通过RTC全局中断就可以实现,并没有必要开通RTC_Alarm中断,也就是EXTI_Line17中断;
​​

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据提供的引用内容,STM32F103C8T6可以通过设置PDDS位来使CPU进入待机模式,并且可以通过CWUF位清除之前的唤醒位。RTC外设是一个掉电后仍然运行的定时器,它具有掉电还继续运行的特性。RTC模块可以提供时钟日历的功能,并且可以通过修改计数器的值来重新设置系统的时间和日期。在设置时间之前,需要取消备份区(BKP)的写保护。 下面是一个STM32F103C8T6待机模式RTC唤醒的示例代码[^1][^2]: ```c #include "stm32f10x.h" void RTC_Configuration(void) { RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); PWR_BackupAccessCmd(ENABLE); BKP_DeInit(); RCC_LSEConfig(RCC_LSE_ON); while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET) {} RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); RCC_RTCCLKCmd(ENABLE); RTC_WaitForSynchro(); RTC_WaitForLastTask(); RTC_ITConfig(RTC_IT_ALR, ENABLE); RTC_WaitForLastTask(); RTC_SetPrescaler(32767); RTC_WaitForLastTask(); RTC_SetAlarm(RTC_GetCounter() + 10); RTC_WaitForLastTask(); EXTI_ClearITPendingBit(EXTI_Line17); EXTI_InitTypeDef EXTI_InitStructure; EXTI_InitStructure.EXTI_Line = EXTI_Line17; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } void RTC_IRQHandler(void) { if (RTC_GetITStatus(RTC_IT_ALR) != RESET) { RTC_ClearITPendingBit(RTC_IT_ALR); // 处理RTC闹钟中断 } } int main(void) { RTC_Configuration(); while (1) { PWR_EnterSTANDBYMode(); } } ``` 这个示例代码中,首先进行了RTC的配置,包括使能PWR和BKP外设时钟,取消备份区写保护,配置LSE时钟源,使能RTC时钟,等待RTC同步,使能RTC闹钟中断,设置RTC预分频器和闹钟时间等。然后,初始化外部中断线和中断向量表,并在主循环中进入待机模式
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值