STM32编码器中断与编码器读数不一致

最近在调试STM32F413的正交编码器,编码器计数没问题,但用编码器中断获取计数时不对;主函数与回掉函数如下:调试发现同一时刻count2与count1不相等,不知道怎么回事。

int main(void)
{
  HAL_Init();

  SystemClock_Config();

  MX_GPIO_Init();
  MX_TIM2_Init();

  /* USER CODE BEGIN 2 */

  HAL_TIM_Encoder_Start(&htim2,TIM_CHANNEL_ALL);
  HAL_TIM_Encoder_Start_IT(&htim2,TIM_CHANNEL_ALL);

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {

     count1 = __HAL_TIM_GET_COUNTER(&htim2);


  }
  /* USER CODE END 3 */

}

void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{    
  count2++;
  if(count2>999)
  {
  count2=0;
  }
}


已邀请:

一粒尘a_a

赞同来自:

1、正交编码器模式也是分几种的,有单AB脉冲记一个数的,也有单AB脉冲记4个数的。具体你看编程手册及你的程序配置。

2、正交编码器是有正反向的,即你正反摆动旋转的话,它的计数值也是增大和减小交替的。而你的回调函数是只加计数。


希望能帮到你,也愿你多看官方手册

要回复问题请先登录注册