×
单片机 > 单片机程序设计 > 详情

STM32 HAL库学习系列第5篇 定时器TIM---编码器接口模式配置

发布时间:2020-06-03 发布时间:
|

cube基本配置,外设开启编码器,串口2


--------------------------------------------------------------------------------------------------------------------------


错误:error:  #20: identifier "TIM_ICPOLARITY_BOTHEDGE" is undefined


意思是,高级、通用定时器不能用BothEdge,只有基本定时器才能用BothEdge


F4系列


  /* 编码器初始化及使能编码器模式 */

  ENCODER_TIMx_Init();

  HAL_TIM_Encoder_Start(&htimx_Encoder, TIM_CHANNEL_ALL);

/* 获取捕获值并计算转速 */


      CaptureNumber = ( int16_t )__HAL_TIM_GET_COUNTER(&htimx_Encoder)+OverflowCount*65535;

      printf("输入捕获值:%d n",CaptureNumber);

      // 4 : 使用定时器编码器接口捕获AB相的上升沿和下降沿,一个脉冲*4.

      // 11:编码器线数(转速一圈输出脉冲数)

      // 34:电机减数比,内部电机转动圈数与电机输出轴转动圈数比,即减速齿轮比

      printf("电机实际转动速度:%0.2f(圈/s)n",(float)CaptureNumber/4/11/34);

      __HAL_TIM_SET_COUNTER(&htimx_Encoder,0);

 


F1系列  输出方向与速度


/**

  * 函数功能: 系统滴答定时器中断回调函数

  * 输入参数: 无

  * 返 回 值: 无

  * 说    明: 每发生一次滴答定时器中断进入该回调函数一次

  */

void HAL_SYSTICK_Callback(void)

{

  static uint32_t count=0;

  if(start_flag) // 等待脉冲输出后才开始计时

  {

    time_count++;         // 每1ms自动增一

    if(time_count==1000)  // 1s

    {

      /* Get the current direction */

      uwDirection = __HAL_TIM_IS_TIM_COUNTING_DOWN(&htimx_Encoder);     

      CaptureNumber=__HAL_TIM_GET_COUNTER(&htimx_Encoder);

     

      printf("当前编码器定时器计数方向:%dn",uwDirection);

      printf("输入捕获值:%dn",CaptureNumber);

      printf("1s内编码器计数值:%dn",CaptureNumber>=count?CaptureNumber-count:CaptureNumber+65535-count);

     

      // 11:编码器线数(转速一圈输出脉冲数)

      // 34:电机减数比,内部电机转动圈数与电机输出轴转动圈数比,即减速齿轮比

      printf("电机实际转动速度:%0.2f(圈/s)n",(float)(CaptureNumber>=count?CaptureNumber-count:CaptureNumber+65535-count)/11/34/2);

      count=CaptureNumber;

      time_count=0;

    }

  }

}

 


函数应用:


__HAL_TIM_SET_COUNTER()    可以设置计数初值为需要的值,默认是0


 

增量式编码器四倍频:


确定编码器是多少线的,假设定时器分频为0;  则定时器计数为390*4 = 1560 


中断配置:编码器模式是可以不需要中断的,主要是定时器1和8的配置


注意:


编码器是否是OC(集电极开路)门,接了上拉没有,没有需要接上啦,如果不使用Z信号,需要把外部中断清零的那部分代码去掉



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C51 特殊功能寄存器SFR的名称和地址