0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详解stm32定时器的编码器模式

CHANBAEK 来源:电子爱好者 作者:LinuxARM 2023-01-19 09:14 次阅读

前言:

增量式编码器在实际应用中还是很常见。stm32定时器带的也有编码器模式。所用的编码器是有ABZ三相,其中ab相是用来计数,z相输出零点信号。AB相根据旋转的方向不同,输出的波形如下图所示:

Dingtalk_20221206154648.jpg

第一步:具体配置如下图:

Dingtalk_20221206154648.jpg

重点说明:

一、如果编码模式设置为 Encoder Mode TI1 and TI2 则会默认检测AB相的上升沿与下降沿;

每一个上升沿和下降沿都触发计数,所以每转一格计数器就会+4;那么上图计数周期设置为400;也就是编码器转100格,计数器就会置零,重新开始计数!

二、关于Polarity参数:这个参数的意思是在检测到上升沿的时候就触发encoder捕获AB相的值,而并不是这里设置的是上升沿就只检测AB相的上升沿,下降沿还是同样会计数的。

第二步:

可以根据自身需要在NVIC 中断控制器中配置中断响应优先级。这里的配置方法可以参考前面几章!

第三步:代码分析:

static void MX_TIM4_Init(void)
{


  /* USER CODE BEGIN TIM4_Init 0 */


  /* USER CODE END TIM4_Init 0 */


  TIM_Encoder_InitTypeDef sConfig = {0};
  TIM_MasterConfigTypeDef sMasterConfig = {0};


  /* USER CODE BEGIN TIM4_Init 1 */


  /* USER CODE END TIM4_Init 1 */
  htim4.Instance = TIM4;
  htim4.Init.Prescaler = 0;
  htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim4.Init.Period = 400;
  htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
  sConfig.EncoderMode = TIM_ENCODERMODE_TI12;
  sConfig.IC1Polarity = TIM_ICPOLARITY_FALLING;
  sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI;
  sConfig.IC1Prescaler = TIM_ICPSC_DIV1;
  sConfig.IC1Filter = 15;
  sConfig.IC2Polarity = TIM_ICPOLARITY_FALLING;
  sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI;
  sConfig.IC2Prescaler = TIM_ICPSC_DIV1;
  sConfig.IC2Filter = 15;
  if (HAL_TIM_Encoder_Init(&htim4, &sConfig) != HAL_OK)
  {
    Error_Handler();
  }
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN TIM4_Init 2 */
  HAL_TIM_Encoder_Start(&htim4, TIM_CHANNEL_ALL); //启动编码器接口
  /* USER CODE END TIM4_Init 2 */
}
//主函数里面调用计数值
 while (1)
  {
    // Enc_Count:获取计数个数
    Enc_Count =  __HAL_TIM_GET_COUNTER(&htim4);
    
    //若需要检测编码器转了多少格,记得要/4,因为转一格是+4;
    //Enc_Count =  __HAL_TIM_GET_COUNTER(&htim4)/4;
     
    

    /* USER CODE END WHILE */


    /* USER CODE BEGIN 3 */

  }
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    15223

    浏览量

    171189
  • 编码器
    +关注

    关注

    41

    文章

    3360

    浏览量

    131537
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348744
  • 定时器
    +关注

    关注

    23

    文章

    3147

    浏览量

    112037
收藏 人收藏

    评论

    相关推荐

    stm32定时器编码器模式

    0、编码器模式stm32定时器带的也有编码器模式。所用的
    发表于 08-09 06:55

    关于定时器编码器的应用

    实验目的:刚开始接触关机电机检测领域,准备探索关于定时器编码器的应用,用来检测脉冲数,从而进行转速的检测。使用芯片:STM32F407使用平台:STM32Cube IDE1、使用
    发表于 08-19 07:32

    STM32利用定时器编码器模式处理带编码器直流电机

    STM32 Cubemax(五) —— STM32利用定时器编码器模式处理带编码器直流电机文章目
    发表于 09-03 07:38

    stm32 定时器编码器模式有哪几种呢

    stm32 定时器编码器模式有哪几种呢?STM32固件库中编码器接口的配置函数是怎样的?
    发表于 11-15 06:11

    请问怎么实现STM32f103定时器配置为编码器模式使用?

    请问怎么实现STM32f103定时器配置为编码器模式使用?
    发表于 11-18 07:30

    STM32单片机定时器1设置成为AB项编码器模式的方法

    STM32单片机定时器1设置成为AB项编码器模式大家好·,我是DXZ,这篇博客是使用STM32单片机定时
    发表于 11-26 08:09

    STM32编码器模式定时器初始化A,B相输入捕获

    STM32编码器模式定时器初始化A,B相输入捕获/* TIM5 configuration for Ecoder gather*/RCC_APB1PeriphClockCmd
    发表于 01-12 08:06

    STM32F407定时器编码器接口模式的相关资料推荐

    STM32F407定时器编码器接口模式16位定时器扩展32位
    发表于 01-12 06:17

    怎样去使用STM32定时器编码器模式

    STM32F103-定时器编码器模式和高级定时器输出互补的PWM信号刚使用STM32时使用输入捕
    发表于 01-14 08:02

    为什么STM32单片机的定时器PWM输入捕获模式无法读取编码器

    为什么STM32单片机的定时器PWM输入捕获模式无法读取编码器呢?怎样去解决STM32单片机的定时器
    发表于 01-21 06:30

    电机控制知识——定时器编码器模式的使用

    ,计数向上计数,反转时,通道A的信号滞后,向下计数。设置信号的极性反相,可以使向下计数代表电机正转。 2 定时器编码器模式配置以STM32
    发表于 03-05 07:00

    STM32单片机定时器1设置成为AB项编码器模式

    STM32单片机定时器1设置成为AB项编码器模式大家好·,我是DXZ,这篇博客是使用STM32单片机定时
    发表于 11-18 15:21 21次下载
    <b class='flag-5'>STM32</b>单片机<b class='flag-5'>定时器</b>1设置成为AB项<b class='flag-5'>编码器</b><b class='flag-5'>模式</b>

    STM32F103-定时器编码器模式和高级定时器输出互补的PWM信号

    STM32F103-定时器编码器模式和高级定时器输出互补的PWM信号刚使用STM32时使用输入捕
    发表于 01-14 12:53 11次下载
    <b class='flag-5'>STM32</b>F103-<b class='flag-5'>定时器</b><b class='flag-5'>编码器</b><b class='flag-5'>模式</b>和高级<b class='flag-5'>定时器</b>输出互补的PWM信号

    STM32F407定时器编码器模式简介

    STM32F407定时器编码器模式
    发表于 03-31 17:14 7834次阅读
    <b class='flag-5'>STM32</b>F407<b class='flag-5'>定时器</b><b class='flag-5'>编码器</b><b class='flag-5'>模式</b>简介

    STM32CubeMx定时器编码器模式基本使用方法

    增量式编码器在实际应用中还是很常见。stm32定时器带的也有编码器模式。所用的编码器是有ABZ
    发表于 06-01 14:36 3873次阅读
    <b class='flag-5'>STM32</b>CubeMx<b class='flag-5'>定时器</b><b class='flag-5'>编码器</b><b class='flag-5'>模式</b>基本使用方法