设置时钟出现死循环

[复制链接]
 楼主| lxj520wan 发表于 2009-4-28 11:49 | 显示全部楼层 |阅读模式
请高手帮忙,我在设置时间时用以下函数,可是调用RTC_SetCounter(seconds)后程序就死在RTC_WaitForLastTask()上了,不知道是为什么?请高手帮个忙?
void time_adjust(ULONG seconds)
{
  /* Wait until last write operation on RTC registers has finished */
  RTC_WaitForLastTask();
  /* Change the current time */
  RTC_SetCounter(seconds);
  /* Wait until last write operation on RTC registers has finished */
  RTC_WaitForLastTask();
}

void RTC_SetCounter(u32 CounterValue)

  RTC_EnterConfigMode();

  /* Set RTC COUNTER MSB word */
  RTC->CNTH = CounterValue >> 16;
  /* Set RTC COUNTER LSB word */
  RTC->CNTL = (CounterValue & RTC_LSB_Mask);

  RTC_ExitConfigMode();
}

void RTC_WaitForLastTask(void)
{
  /* Loop until RTOFF flag is set */
  while ((RTC->CRL & RTC_FLAG_RTOFF) == (u16)RESET)
  {
  }
}
zhujw2002 发表于 2009-4-28 13:41 | 显示全部楼层

设置RTC前需使能PWR BKP

// Check if the Power On Reset flag is set
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);

  /* Allow access to BKP Domain */
    PWR_BackupAccessCmd(ENABLE);
 楼主| lxj520wan 发表于 2009-4-29 08:36 | 显示全部楼层

问题已解决

谢谢高手,是这样的,问题已解决
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

4

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部