搜索
bottom↓
回复: 7

我已经配置好了寄存器可是不知道为什么还是保存不了时间值!请高手帮助

[复制链接]

出0入0汤圆

发表于 2008-8-12 17:26:04 | 显示全部楼层 |阅读模式
我设置如下:void RTC_Configuration(void)
{
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
  PWR_BackupAccessCmd(ENABLE);  
  BKP_DeInit();
  RCC_LSEConfig(RCC_LSE_ON);
  while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
  {}
  RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
  RCC_RTCCLKCmd(ENABLE);
  RTC_WaitForSynchro();
  RTC_WaitForLastTask();
  RTC_ITConfig(RTC_IT_SEC, ENABLE);
  RTC_WaitForLastTask();
  RTC_SetPrescaler(32767); /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */
  RTC_WaitForLastTask();
}
我判断:
if(BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5)
  {
   PutString1("RTC 不曾配置....");
    //RTC_Configuration();
    PutString1("RTC 开始配置....");  
    Time_Adjust( );
    BKP_WriteBackupRegister(BKP_DR1, 0xA5A5);
  }
  else
  {
   if(RCC_GetFlagStatus(RCC_FLAG_PORRST) != RESET)
    {
     PutString1("\r\n电源复位....");
    }
  else if(RCC_GetFlagStatus(RCC_FLAG_PINRST) != RESET)
    {
     PutString1("\r\n External Reset occurred....");
    }
可是重新上电还是不能保存时间不知道为什么请大家指点:

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2008-8-14 21:06:01 | 显示全部楼层
if(BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5)
{
}
else
{
是否允许访问BKP?
}

这是我的配置,没问题

  //判断是否RTC是第一次写入
   if(BKP_ReadBackupRegister(BKP_DR1)!=0x5120)
{
    //RTC 配置 包括BKP的配置
    RTC_Configuration();
    //写入固定值
    BKP_WriteBackupRegister(BKP_DR1, 0x5120);
    BKP_WriteBackupRegister(BKP_DR2,7);
    BKP_WriteBackupRegister(BKP_DR3,7);
    BKP_WriteBackupRegister(BKP_DR4,2008);
}
  //已经有时钟在运行
    else
  {
   // 开启 PWR 和 BKP 时钟
   RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
  
    //允许访问后备寄存器
    PWR_BackupAccessCmd(ENABLE);
   
    //同步RTC
    RTC_WaitForSynchro();
   
    /* Wait until last write operation on RTC registers has finished
    This function must be called before any write to RTC registers.*/
    RTC_WaitForLastTask();
   
    //开启RTC秒中断
    RTC_ITConfig(RTC_IT_SEC, ENABLE);
   
    /* Wait until last write operation on RTC registers has finished */
    RTC_WaitForLastTask();
   
   //读出最后一次关机时的日期
   Day=BKP_ReadBackupRegister(BKP_DR2);
   Month=BKP_ReadBackupRegister(BKP_DR3);
   Year=BKP_ReadBackupRegister(BKP_DR4);
  }

void RTC_Configuration(void)
{
  /* Enable PWR and BKP clocks */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
  
  /* 允许访问后备寄存器 */
  PWR_BackupAccessCmd(ENABLE);

  /* 重置后备寄存器 */
  BKP_DeInit();

  /* 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);

  /* 等待RTC同步 */
  RTC_WaitForSynchro();

  /* Wait until last write operation on RTC registers has finished
  This function must be called before any write to RTC registers.*/
  RTC_WaitForLastTask();
  
  /* 允许RTC秒中断 */
  RTC_ITConfig(RTC_IT_SEC, ENABLE);

  /* Wait until last write operation on RTC registers has finished
  This function must be called before any write to RTC registers.*/
  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();
}

出0入0汤圆

 楼主| 发表于 2008-8-15 13:26:16 | 显示全部楼层
你的在下一交上电后时间走了吗?
我的哪里一好请指教!谢谢了!

出0入0汤圆

发表于 2008-8-15 14:12:26 | 显示全部楼层
RTC当然走,BKP存储的日期也没问题,你把我的过去如果还不行看看是不是硬件问题

出0入0汤圆

 楼主| 发表于 2008-8-15 15:00:07 | 显示全部楼层
//读出最后一次关机时的日期
   Day=BKP_ReadBackupRegister(BKP_DR2);
   Month=BKP_ReadBackupRegister(BKP_DR3);
   Year=BKP_ReadBackupRegister(BKP_DR4);
是读上次关机后 的值吗?还是又开机的值!

RTC->CNTH中是否保存呢?
我是新手谢谢帮助!

     BKP_WriteBackupRegister(BKP_DR1, 0x5120);
    BKP_WriteBackupRegister(BKP_DR2,7);
    BKP_WriteBackupRegister(BKP_DR3,7);
    BKP_WriteBackupRegister(BKP_DR4,2008);
   是做什么 的?
我的哪里不好你就说啊

出0入0汤圆

发表于 2008-8-15 21:56:06 | 显示全部楼层
我怀疑是你硬件的问题,程序再我这里跑没问题,项目都快量产了

出0入0汤圆

 楼主| 发表于 2008-8-20 11:43:12 | 显示全部楼层
我用的是开发板啊!
电池也有电啊

出0入0汤圆

发表于 2010-5-19 09:23:04 | 显示全部楼层
LZ问题解决了吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 12:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表