你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32 rtc问题(转)

[复制链接]
stm-362021 提问时间:2012-7-2 16:08 /
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,"
收藏 评论2 发布时间:2012-7-2 16:08

举报

2个回答
zykzyk-93033 回答时间:2012-7-2 21:08:10

RE: stm32 rtc问题(转)

宝贵的经验啊!支持
蓝调街口-366393 回答时间:2012-7-3 13:50:46

RE: stm32 rtc问题(转)

要得学习一下宝贵经验啊

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版