zoukankan      html  css  js  c++  java
  • 关于STM32 RTC的使用

    直接上代码,很爽。

    1、RTC的首次初始化问题

    使能时钟:RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);

    void RTC_Configuration(void)
    {

      /* Allow access to BKP Domain */
      PWR_BackupAccessCmd(ENABLE);


      /* Enable LSE */
      RCC_LSEConfig(RCC_LSE_ON);
      /* Wait till LSE is ready */
      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();


      /* Wait until last write operation on RTC registers has finished */
      //RTC_WaitForLastTask();
      /* Enable the RTC Second */
      //RTC_ITConfig(RTC_IT_SEC, ENABLE);


      /* Wait until last write operation on RTC registers has finished */
     // RTC_WaitForLastTask();


      /* Set RTC prescaler: set RTC period to 1sec */
      RTC_SetPrescaler(32767); /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */


      /* Wait until last write operation on RTC registers has finished */
      RTC_WaitForLastTask();
    }

    2、设置时间

           PWR_BackupAccessCmd(ENABLE); //必须有该行,否则写不进去

    RTC_WaitForLastTask();
            RTC_SetCounter(1356998400);//2013年1月1号0时0分0秒  
            BKP_WriteBackupRegister(BKP_DR1, 0xA5A5);//时间更新标志,下次开机读取该值,如果已经设置,则不需要设置时间

    3、第二次开机RTC操作

        if (BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5){
            /* Backup data register value is not correct or not yet programmed (when
               the first time the program is executed) */
            /* RTC Configuration */
            RTC_Configuration();

    PWR_BackupAccessCmd(ENABLE); 
            RTC_WaitForLastTask(); 

     RTC_SetCounter(1356998400);//2013年1月1号0时0分0秒1356969600UL  

            BKP_WriteBackupRegister(BKP_DR1, 0xA5A5);//时间更新标志
        }

    4、读取时间

    UNIXTime=RTC_GetCounter();

  • 相关阅读:
    简单工厂笔记
    P3369 【模板】普通平衡树 Treap树堆学习笔记
    tp5阿里云短信验证码
    centos 安装php
    tp6.0.2开启多应用模式
    linux navicat最新版过期
    git commit之后 取消commit
    服务器重置之后ssh root@报错
    git pull push 每次都需要输入账号和密码
    跨域问题 php
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3228780.html
Copyright © 2011-2022 走看看