TIM_GetCapture2()与TIM_GetCounter()的区别在哪里?

2019-07-21 05:17发布



u16 TPAD_Get_Val(void)
{
TPAD_Reset();
while(TIM_GetFlagStatus(TIM5, TIM_IT_CC2) == RESET)
{
if(TIM_GetCounter(TIM5)>TPAD_ARR_MAX_VAL-500)return TIM_GetCounter(TIM5);
};
return TIM_GetCapture2(TIM5);
}
为什么把上面的程序改成下面的,程序就不能运行了
u16 TPAD_Get_Val(void)
{      
 TPAD_Reset();
 while(TIM_GetFlagStatus(TIM5, TIM_IT_CC2) == RESET)
 {
  if(TIM_GetCapture2(TIM5)>TPAD_ARR_MAX_VAL-500)
   return TIM_GetCapture2(TIM5);
 }; 
 return TIM_GetCapture2(TIM5);  
}  




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
Admin
1楼-- · 2019-07-21 07:37
 这是两个不同的概念哦


uint16_t TIM_GetCapture2(TIM_TypeDef* TIMx)
{
  /* Check the parameters */
  assert_param(IS_TIM_LIST6_PERIPH(TIMx));
  /* Get the Capture 2 Register value */
  return TIMx->CCR2;
}

uint16_t TIM_GetCounter(TIM_TypeDef* TIMx)
{
  /* Check the parameters */
  assert_param(IS_TIM_ALL_PERIPH(TIMx));
  /* Get the Counter Register value */
  return TIMx->CNT;
}





CNT是当前计数器值,,,CCR2是比较值。。

 
wP5555
2楼-- · 2019-07-21 08:24
 精彩回答 2  元偷偷看……
freddiemore
3楼-- · 2019-07-21 10:55
wP5555 发表于 2014-8-14 22:20
**** 作者被禁止或删除 内容自动屏蔽 ****

经验值
yayayue
4楼-- · 2019-07-21 16:25
TIM_GetCapture2()只有当触发比较或者捕获时才会有值,而TIM_GetCounter()是查看当前计数器或者说是定时器中的数值,无论是否触发了比较捕获,都会有值,在楼主的函数段中,while中的情况是没有触发捕获,因此要使用GetCounter

一周热门 更多>