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

STM32F103C8T6时钟RTC每次启动变慢1s

[复制链接]
yjq 提问时间:2015-9-20 09:52 /
本人使用STM32F103C8T6自身的RTC时钟制作了一个时钟定时器,运行正常,但是发现一个问题:每次上电启动10次,大约会变慢大约9~10s。我的程序模板使用STM32CubeMX自动生成,并使用了HAL库。RTC的初始化函数如下:
void MX_RTC_Init(void)
{
  hrtc.Instance = RTC;
  hrtc.Init.AsynchPrediv = RTC_AUTO_1_SECOND;
  hrtc.Init.OutPut = RTC_OUTPUTSOURCE_NONE;
  HAL_RTC_Init(&hrtc);
}

怀疑是HAL_RTC_Init(&hrtc)初始化的时候,重新设定RTC_PRL,暂停了时钟的counter计数?
于是我修改程序,在启动时检查BKP寄存器的数值,第一次启动运行HAL_RTC_Init(&hrtc),并标记BKP寄存器。第二次以后启动以后,运行
HAL_StatusTypeDef HAL_RTC_Init2(RTC_HandleTypeDef *hrtc)
{
  //uint32_t prescaler = 0;
  /* Check input parameters */
  if(hrtc == NULL)
  {
     return HAL_ERROR;
  }
  /* Check the parameters */
  assert_param(IS_RTC_ALL_INSTANCE(hrtc->Instance));
  assert_param(IS_RTC_CALIB_OUTPUT(hrtc->Init.OutPut));
  assert_param(IS_RTC_ASYNCH_PREDIV(hrtc->Init.AsynchPrediv));
  if(hrtc->State == HAL_RTC_STATE_RESET)
  {
    /* Allocate lock resource and initialize it */
    hrtc-> Lock = HAL_UNLOCKED;
    /* Initialize RTC MSP */
    HAL_RTC_MspInit(hrtc);
  }
    hrtc->State = HAL_RTC_STATE_READY;
    return HAL_OK;
}
HAL_RTC_Init2(&hrtc)是在原来HAL库里HAL_RTC_Init(&hrtc)的基础上,我自己修改创建的。其删除了设置RTC_PRL的内容。上电起动10次后,仍然变慢4~5s。
实在不知道还要如何改写,求助高手!


收藏 评论1 发布时间:2015-9-20 09:52

举报

1个回答
你好我好大家好! 回答时间:2015-9-20 12:55:55

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版