STM32 RTC与RCC相关

RTC与RCC相关

1.1 RTC驱动程序

  1. RTC电路图
    在这里插入图片描述

  2. 实验目的:设置奇数秒点亮LED1,奇数分钟点亮LED2

  3. 初始化时钟,LED

  4. 初始化RTC

    1. 非初次启动(含判断调用初次启动)
      RTC_Config
      void RTC_Config(void){
              //实时时钟初始化
         //在BKP的后备寄存器1中,存了一个特殊字符0xA5A5
         //第一次上电或后备电源掉电后,该寄存器数据丢失,表明RTC数据丢失,需要重新配置
         if (BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5){
             //判断寄存数据是否丢失       
            RTC_First_Config();//重新配置RTC        
            BKP_WriteBackupRegister(BKP_DR1, 0xA5A5);//配置完成后,向后备寄存器中写特殊字符0xA5A5
         }else{
             
         //若后备寄存器没有掉电,则无需重新配置RTC
            //这里我们可以利用RCC_GetFlagStatus()函数查看本次复位类型
            if (RCC_GetFlagStatus(RCC_FLAG_PORRST) != RESET){
             
               //这是上电复位
            }
            else if (RCC_GetFlagStatus(RCC_FLAG_PINRST) != RESET){
             
               //这是外部RST管脚复位
            }       
            RCC_ClearFlag();//清除RCC中复位标志
      
            //虽然RTC模块不需要重新配置,且掉电后依靠后备电池依然运行
            //但是每次上电后,还是要使能RTCCLK
            RCC_RTCCLKCmd(ENABLE);//使能RTCCLK        
            RTC_WaitForSynchro();//等待RTC时钟与APB1时钟同步
      
            //当不使用RTC秒中断,可以屏蔽下面2条
         //        RTC_ITConfig(RTC_IT_SEC, ENABLE);//使能秒中断        
         //        RTC_WaitForLastTask();//等待操作完成
            }
            #ifdef RTCClockOutput_Enable   
               RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
               PWR_BackupAccessCmd(ENABLE);   
               BKP_TamperPinCmd(DISABLE);   
               BKP_RTCOutputConfig(BKP_RTCOutputSource_CalibClock);
            #endif
         }
      
    2. 初次启动
      RTC_First_Config
      void RTC_First_Config(void){
              //首次启用RTC的设置
         RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);//启用PWR和BKP的时钟(from APB1)
         PWR_BackupAccessCmd<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值