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

请教独立看门狗定时器校准

[复制链接]
悠然 提问时间:2018-12-19 15:56 /
void TIM5_IRQHandler(void)
{
  if (TIM_GetITStatus(TIM5, TIM_IT_CC4) != RESET)
  {   
    if(CaptureNumber == 0)
    {
      /* Get the Input Capture value */
      IC1ReadValue1 = TIM_GetCapture4(TIM5);
    }
    else if(CaptureNumber == 1)
    {
      /* Get the Input Capture value */
      IC1ReadValue2 = TIM_GetCapture4(TIM5);
      
      /* Capture computation */
      if (IC1ReadValue2 > IC1ReadValue1)
      {
        Capture = (IC1ReadValue2 - IC1ReadValue1);
      }
      else
      {
        Capture = ((0xFFFF - IC1ReadValue1) + IC1ReadValue2);
      }
      /* Frequency computation */
      LsiFreq = (uint32_t) SystemCoreClock / Capture;
      LsiFreq *= 8;
    }
   
    CaptureNumber++;
   
    /* Clear TIM5 Capture compare interrupt pending bit */
    TIM_ClearITPendingBit(TIM5, TIM_IT_CC4);
  }
}
ST官方的例程,用于检测内部LSI时钟频率,为什么计算出来的频率要乘以8
LsiFreq *= 8;
收藏 评论6 发布时间:2018-12-19 15:56

举报

6个回答
七哥 回答时间:2018-12-19 16:39:21
本帖最后由 toofree 于 2018-12-19 17:49 编辑

请提完整工程,只凭你给出的信息,无法判断。

悠然 回答时间:2018-12-19 17:17:24
/* IWDG timeout equal to 250 ms (the timeout may varies due to LSI frequency
     dispersion) */
  /* Enable write access to IWDG_PR and IWDG_RLR registers */
  IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);

  /* IWDG counter clock: LSI/32 */
  IWDG_SetPrescaler(IWDG_Prescaler_32);

  /* Set counter reload value to obtain 250ms IWDG TimeOut.
     Counter Reload Value = 250ms/IWDG counter clock period
                          = 250ms / (LSI/32)
                          = 0.25s / (LsiFreq/32)
                          = LsiFreq/(32 * 4)
                          = LsiFreq/128
   */
  IWDG_SetReload(LsiFreq/128);

  /* Reload IWDG counter */
  IWDG_ReloadCounter();

  /* Enable IWDG (the LSI oscillator will be enabled by hardware) */
  IWDG_Enable();
悠然 回答时间:2018-12-19 17:18:08
本帖最后由 chwf491701687 于 2018-12-19 17:19 编辑

定时器5检测到的频率应该就是内部时钟频率,可是为什么算出来后,还需要乘以8
七哥 回答时间:2018-12-19 18:36:36
最后说一遍。
请提供完整工程,只凭你给出的信息,无法判断。
悠然 回答时间:2018-12-19 19:15:41
toofree 发表于 2018-12-19 18:36
最后说一遍。
请提供完整工程,只凭你给出的信息,无法判断。

这还不完整?库例程也就是这样的,直接就是3.5版的库的
七哥 回答时间:2018-12-19 23:58:28
本帖最后由 toofree 于 2018-12-20 00:20 编辑
chwf491701687 发表于 2018-12-19 19:15
这还不完整?库例程也就是这样的,直接就是3.5版的库的

当然不完整。
有工程吗?你说过是STM32F1的库吗?说过路径是“STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\IWDG”吗?

main.c中第200行的8分频,看到了吗?
20181219234633.jpg

SystemCoreClock为72M,TIM5也是72MHz。
20181219235503.jpg

STM32F10x_StdPeriph_Lib_V3.5.0_Test.rar (645.05 KB, 下载次数: 0)

所属标签

相似问题

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