大家好!我在调试F072 RTC自动唤醒程序时遇到唤醒后就自动复位,请坛友们帮忙看看是什么问题:代码如下 #include "include.h" /******************************************************************************* * 函数原型:void RTC_ALRIE(uint delay) * 函数介绍:RTC闹钟唤醒 * 输入参数:ushort ms 唤醒时间 * 输出参数:无 *******************************************************************************/ void RTC_Init(uint current_time) { RCC->CSR.RMVF = 1; RCC->APB1ENR.PWREN =1;//使能电源接口时钟 PWR->CR.DBP = 1;//充许访问允许写入RTC和后备寄存器 RCC->BDCR.BDRST = 1;//复位整个备份域 __NOP();__NOP(); RCC->BDCR.BDRST = 0;//复位整个备份域 RCC->BDCR.LSEDRV = 3;//LSE 振荡器驱动能力:中高驱动能力 RCC->BDCR.LSEON =1;//LSE 振荡器开启 while(!RCC->BDCR.LSERDY);//等待LSE 振荡器就绪 RCC->BDCR.RTCSEL = 1;//LSE 振荡器作为RTC 时钟 RCC->BDCR.RTCEN =1;//使能RTC时钟 //解除RTC写保护 RTC->WPR.KEY = 0xCA; __NOP();__NOP(); RTC->WPR.KEY = 0x53; RTC->ISR.INIT = 1; __NOP();__NOP(); while(!RTC->ISR.INITF);//确保已经正式进入初始化模式 RTC->CR.FMT = 0;//24小时 RTC->CR.BYPSHAD = 1; RTC->PRER.PREDIV_A = 127; RTC->PRER.PREDIV_S = 255;//同步分频 RTC->TR.PM = 0;//AM/24 小时制 RTC->TR.HT = 1; RTC->TR.HU = 3; RTC->TR.MNT = 0; RTC->TR.MNU = 7; RTC->TR.ST = 5; RTC->TR.SU = 0; RTC->DR.YT = 1; RTC->DR.YU = 4; RTC->DR.WDU = 5; RTC->DR.MT = 0; RTC->DR.MU =4; RTC->DR.DT = 2; RTC->DR.DU = 1; RTC->ISR.INIT = 0; __NOP();__NOP(); RTC->WPR.KEY = 0xFE; /* (6) */ RTC->WPR.KEY = 0x64; /* (6) */ } /******************************************************************************* * 函数原型:void RTC_ALRIE(uint delay) * 函数介绍:RTC闹钟唤醒 * 输入参数:ushort ms 唤醒时间 * 输出参数:无 *******************************************************************************/ void RTC_WUT_Init(uint time) { PWR->CR.DBP = 1;//充许访问允许写入RTC和后备寄存器 RTC->WPR.KEY = 0xCA; __NOP();__NOP(); RTC->WPR.KEY = 0x53; RTC->CR.WUTE = 0;//关闭WUTE计数 while (!RTC->ISR.WUTWF); RTC->CR.WUCKSEL = 0x00;//1/16 RTC->WUTR.WUT = time; RTC->CR.WUTE = 1; RTC->CR.WUTIE = 1; RTC->WPR.KEY = 0xFE; /* (6) */ RTC->WPR.KEY = 0x64; /* (6) */ EXTI->IMR.MR20 = 1;//开放来自线x 上的中断请求 EXTI->RTSR.TR20 = 1;//允许输入线上升沿触发 NVIC->ISER[0] |= 1<<2;//开启EXTI线0~1中断中断接收 } /******************************************************************************* * 函数原型:void RTC_ALRIE(uint delay) * 函数介绍:RTC闹钟唤醒 * 输入参数:ushort ms 唤醒时间 * 输出参数:无 *******************************************************************************/ void RTC_IRQHandler(void) { if(RTC->CR.WUTIE&&RTC->ISR.WUTF) { RTC->ISR.WUTF = 0; EXTI->PR.PR20 =1;//清除中断标识 PWR->CR.CWUF =1; RCC->APB2ENR.SYSCFG_COMPEN =1;//SCFG 时钟开启 } } |
【STM32F0开发日志/评测/笔记】+互补PWM波的产生
STM32F030 PB14和PB15无法输出PWM求助
【STM32F030探索套件】序列之五 外部中断
【STM32F0开发日志---二】+ucosii.2.92移植在STM32F030
上传个STM32F0+5110+内部温度传感器的菜鸟实例
【STM32F030探索套件使用问题】STM32F030 SPI方式驱动ST7565LCD失败
求一份STM32F051 I2C驱动LCD 12864的例程
STM32F0 M0 向结构体赋值进入HardFault异常
STM32F0 ADC-DMA方式采集2路数据时出现问题
STM32F030C8T6,TIM16定时慢很多问题?
评分
查看全部评分