打印

如何解决STM32的RTC用20pF的32768晶振起振难(转)

[复制链接]
5036|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fuqing5542|  楼主 | 2012-7-12 10:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在网上看到说STM32的RTC用20pF的32768晶振会发生不起振的事,我这几天试了试第一次上电的时候的确会出现, 后来在晶振上并了只2.4M的电阻加大振荡电路的反馈,就很容易起振了!!
大家如果遇到不起振的话可以试一试,不知道管不管用。
如果行的通的话就不必非要用6pF负载电容的晶振了~~!!


有人已经声称解决了一个问题:
说32768的12p的启振时间长,他在配置RCC时加了延迟电路,我没有条件测试.
具体代码如下:
/*******************************************************************************
* Function Name  : RTC_Configuration
* Description    : Configures the RTC.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void RTC_Configuration(void)
{
  /* Enable PWR and BKP clocks */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
  
  /* Allow access to BKP Domain */
  PWR_BackupAccessCmd(ENABLE);
  /* Reset Backup Domain */
  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);
  /* 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();
}
上上代码中的" /* Enable LSE */
  RCC_LSEConfig(RCC_LSE_ON);
  /* Wait till LSE is ready */
  while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
  {
  }
"
改为:
  u32 delay;
  
  do
  {
       /* delay about 10ms */
      for(delay = 0;delay < 90000;delay++);
       /* Enable LSE */
      RCC_LSEConfig(RCC_LSE_ON);
  }while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET) /* Wait till LSE is ready */
专营STM8/32
QQ 940436962
http://y-ec.taobao.com/
沙发
jay100200| | 2013-3-20 22:37 | 只看该作者
…………

使用特权

评论回复
板凳
lirunze| | 2013-4-1 21:33 | 只看该作者
我试过了,好像不好用个的啊

使用特权

评论回复
地板
Lxiao| | 2013-6-17 17:46 | 只看该作者
STM32的RTC真TMD坑爹了!

使用特权

评论回复
5
hkcj| | 2013-6-17 20:32 | 只看该作者
感觉应该是起振电容没哟工作吧   个人的理解

使用特权

评论回复
6
ouxueguo| | 2014-3-6 21:56 | 只看该作者
mark

使用特权

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

本版积分规则

0

主题

362

帖子

1

粉丝