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();

  • 相关阅读:
    Python操作MySQL之SQLAlchemy
    mysql 中的视图详解。
    mysql终端下进行数据库备份与备份导入。
    python函数的特性。再后面再讲函数装饰器。
    序列解包(for x,y in zip(keys, values):)详解。
    jinja2.exceptions.TemplateAssertionError: no filter named 'zip'(这一类的问题的解决办法)
    flask
    网络基础知识
    测试用例设计要注意的问题
    使用tailf命令查看日志
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3228780.html
Copyright © 2011-2022 走看看