打印

stm32 rtc(转)

[复制链接]
4009|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fuqing5542|  楼主 | 2012-6-29 10:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1:32768HZ晶体,选一般6pF--12.5pF的都可以(本身品质有问题例外),并非传说中的猛兽
2(重要):在STM32的VBAT脚与GND必须接至少一个陶瓷电容(100nF X7R介质材料)退藕,线要短/粗
3:32768HZ晶体的负载电容焊盘与晶体焊盘之间线要短/粗,实际安装的电容须为NPO介质材料
4:STM32 RTC起振到稳定需要时间(1--3秒,和温度有关)建议写代码先开启STM32 RTC,然后去初始化其他外设,最后来判断RTC状态 分2个函数 代码如下:
================================================================================================================================
u8 Cheak_RTC_MY(void)
{
   if(BKP_ReadBackupRegister(BKP_DR1)!=0xA5A5)
    {
              // u32 delay;
          //启用PWR和BKP的时钟(from APB1)
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
        //后备域解锁
        PWR_BackupAccessCmd(ENABLE);
        //备份寄存器模块复位
        BKP_DeInit();
        //外部32.768K
        RCC_LSEConfig(RCC_LSE_ON);
        
        return 1;
    }
   else
   {
                  //清除RCC中复位标志
        RCC_ClearFlag();
        
        //虽然RTC模块不需要重新配置,且掉电后依靠后备电池依然运行
        RCC_RTCCLKCmd(ENABLE);
        //等待RTC时钟与APB1时钟同步
        RTC_WaitForSynchro();
        
        //使能秒中断
        RTC_ITConfig(RTC_IT_SEC,ENABLE);
        //等待操作完成
        RTC_WaitForLastTask();
        
        RCC_ClearFlag();
   
    /* Enable PWR and BKP clocks */
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|RCC_APB1Periph_BKP,ENABLE);
   
    /* Allow access to BKP Domain */
        PWR_BackupAccessCmd(ENABLE);
        
        return 0;  //RTC OK
     
   }
}

void Setup_RTC(void)
{      
        struct tm time_now;
       //等待稳定
        while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET);
        //RTC时钟源配置成LSE(外部32.768K)
        RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
        //RTC开启
        RCC_RTCCLKCmd(ENABLE);
        //开启后需要等待APB1时钟与RTC时钟同步,才能读写寄存器
        RTC_WaitForSynchro();
        //读写寄存器前,要确定上一个操作已经结束
        RTC_WaitForLastTask();
        //设置RTC分频器,使RTC时钟为1Hz
        //RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1)
        RTC_SetPrescaler(32767);

        //等待寄存器写入完成
        RTC_WaitForLastTask();
        //使能秒中断
        RTC_ITConfig(RTC_IT_SEC, ENABLE);   
        //等待写入完成
        RTC_WaitForLastTask();
        
        
        time_now.tm_year = 2010;
        time_now.tm_mon = 6;
        time_now.tm_mday = 30;
        time_now.tm_hour = 12;
        time_now.tm_min = 00;
        time_now.tm_sec = 00;
        time_now.tm_isdst=0;//刚加的
        Time_SetCalendarTime(time_now);
        BKP_WriteBackupRegister(BKP_DR1,0xA5A5);//配置完成后,向后备寄存器中写特殊字符0xA5A5
        
        RCC_ClearFlag();
   
        // Enable PWR and BKP clocks
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|RCC_APB1Periph_BKP,ENABLE);
   
        // Allow access to BKP Domain
        PWR_BackupAccessCmd(ENABLE);
}
//-------------------------------------------------------------------------------

u8 RTC_FG=0;

  /* Initialize the Demo */
  System_Init();
  RTC_FG=Cheak_RTC_MY();
  LCD_Init();
  //GPIOB->BSRR =GPIO_Pin_11;
  Key_GPIO_Init();
  
  
  LCD_write_english_string(5,66,"guanfu_wang@126.com",0X001F,0X0000);
// LCD_write_english_string(5,66+16,"RTC Init......",0Xf800,0X0000);
  if( RTC_FG==1)
  {
    Setup_RTC();
    LCD_write_english_string(5,66+16,"RTC Init....OK",0Xf800,0X0000);
  }
  else
  {
     LCD_write_english_string(5,66+16,"RTC ........OK",0Xf800,0X0000);
  }
ST官方授权代理,专营STM8/32
QQ 940436962
http://y-ec.taobao.com/
评分
参与人数 1威望 +1 收起 理由
danniefeng + 1
沙发
捡漏王子| | 2012-6-29 11:31 | 只看该作者
收到,学习了

使用特权

评论回复
板凳
fuqing5542|  楼主 | 2012-9-28 16:00 | 只看该作者
好冷清额额额额

使用特权

评论回复
地板
bingye1086| | 2012-9-29 09:25 | 只看该作者
顶起,我的RTC一天能慢好几秒

使用特权

评论回复
5
tianli1980| | 2012-9-29 11:01 | 只看该作者
STM32内部RTC功能非常实用,正好需要的资料。顶起

使用特权

评论回复
6
fuqing5542|  楼主 | 2012-10-11 11:46 | 只看该作者
RTC好多的问题啊

使用特权

评论回复
7
sflower| | 2012-10-11 15:08 | 只看该作者
我也担心,我用的也是RTC

使用特权

评论回复
8
huzhulong| | 2012-10-11 15:51 | 只看该作者
我来看看,不知道怎么样

使用特权

评论回复
9
jxmzzr| | 2012-10-11 16:03 | 只看该作者
STM32内部RTC的供电和时钟是独立于内核的,可以说是STM32内部独立的外设模块。受用了

使用特权

评论回复
10
fuqing5542|  楼主 | 2012-10-15 09:32 | 只看该作者
没什么啦

使用特权

评论回复
11
yan2626156| | 2013-12-24 15:36 | 只看该作者
MARK

使用特权

评论回复
12
hugo0chen| | 2014-2-18 17:47 | 只看该作者
楼主大人辛苦了··

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

362

帖子

1

粉丝