找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5092|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STM32 RTC晶振使用小結(jié)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:75263 發(fā)表于 2015-6-9 02:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
STM32的RTC晶振,我百度全網(wǎng),總結(jié)如下軟件: 在以前很多的程序里 在rtc中斷里 都沒有 RTC_WaitForLastTask();這個語句。 加上即可
硬件: 常規(guī)配置 6p晶振加兩個10p電容 不要并聯(lián)電阻并聯(lián)了反而不起振
=======================================以下為另一個需要驗證的軟件解決方式
12.5p晶振啟動時間比6P的長可能才是主要的原因
我的板上32.768K晶振(12.5P)也老是出現(xiàn)上電起振難的問題.看到樓主講主換6P的,我找不到,后來想到也許是12.5P的晶振起動時所需時間要比6P的長,我對RTC的初始化作了一點(diǎn)改動...
這是KEIL RTC例程中的:


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

上上代碼中的"
  RCC_LSEConfig(RCC_LSE_ON);
  
  while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
  {
  }
"
改為:
  u32 delay;
  
  do
  {
      
      for(delay = 0;delay < 90000;delay++);
      
      RCC_LSEConfig(RCC_LSE_ON);
  }while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)

后測試1000次以上都沒有上電趕振難發(fā)現(xiàn).但改回原來又好易發(fā)生.
大家也可以試試此法是否對你有用.  


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表