- //RTC配置
- void RTC_Config(void)
- {
- /* Enable PWR and BKP clocks */
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE); //使能PWR和BKP外设时钟
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP,ENABLE);
- /* Allow access to BKP Domain */
- PWR_BackupAccessCmd(ENABLE); //使能后备寄存器访问
- /* Reset Backup Domain */
- // 禁用入侵检测引脚
- BKP_TamperPinCmd(DISABLE);
- BKP_RTCOutputConfig(BKP_RTCOutputSource_Second); //使能入侵检测管脚输出RTC秒脉冲
-
- BKP_DeInit(); //复位备份区域
- //使用外部高速晶振 128分频
- //RCC_RTCCLKConfig(RCC_RTCCLKSource_HSE_Div128);
- //使用外部32768晶振
- RCC_LSEConfig(RCC_LSE_ON); //设置外部低速晶振(LSE),使用外设低速晶振
- while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET); //检查指定的RCC标志位设置与否,等待低速晶振就绪
- RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //设置RTC时钟(RTCCLK),选择LSE作为RTC时钟
- /* Enable RTC Clock */
- RCC_RTCCLKCmd(ENABLE); //使能RTC时钟
- /* Wait for RTC registers synchronization */
- RTC_WaitForSynchro(); //等待RTC寄存器同步
- /* Wait until last write operation on RTC registers has finished */
- RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成
- /* Enable the RTC Second */
- RTC_ITConfig(RTC_IT_SEC, ENABLE); //使能RTC秒中断
- /* Wait until last write operation on RTC registers has finished */
- RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成
- /* Set RTC prescaler: set RTC period to 1sec */
- /* RTC period = RTCCLK/RTC_PR = (8000000Hz)/128/(62499+1) */
- //RTC_SetPrescaler(62499);
- // RTC_EnterConfigMode();///允许配置
- RTC_SetPrescaler(32767); //设置RTC预分频的值
- /* Wait until last write operation on RTC registers has finished */
- RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成
- }
|