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

第六章:STM32CubeMx 定时器编码器模式基本使用方法

[复制链接]
STMCU小助手 发布时间:2021-1-12 15:10
第六章:STM32CubeMx定时器编码器模式基本使用方法
前言:
增量式编码器在实际应用中还是很常见。stm32的定时器带的也有编码器模式。所用的编码器是有ABZ三相,其中ab相是用来计数,z相输出零点信号。AB相根据旋转的方向不同,输出的波形如下图所示:
5.1.png
增量式编码器在实际应用中还是很常见。stm32的定时器带的也有编码器模式。所用的编码器是有ABZ三相,其中ab相是用来计数,z相输出零点信号。AB相根据旋转的方向不同,输出的波形如下图所示:
第一步:具体配置如下图:
5.2.jpg
  重点说明:
一、如果编码模式设置为 Encoder Mode TI1 and TI2 则会默认检测AB相的上升沿与下降沿;
每一个上升沿和下降沿都触发计数,所以每转一格计数器就会+4;那么上图计数周期设置为400;也就是编码器转100格,计数器就会置零,重新开始计数!
二、关于Polarity参数:这个参数的意思是在检测到上升沿的时候就触发encoder捕获AB相的值,而并不是这里设置的是上升沿就只检测AB相的上升沿,下降沿还是同样会计数的。
第二步:
可以根据自身需要在NVIC 中断控制器中配置中断响应优先级。这里的配置方法可以参考前面几章!
第三步:代码分析:
  1. static void MX_TIM4_Init(void)
    0 m' h! A: s3 Z/ u/ h2 n- w
  2. {! ~2 C+ c; X' O- I, I& P& @

  3. 2 y. b  c5 U4 }! y% Q
  4.   /* USER CODE BEGIN TIM4_Init 0 */" a4 v" ]  }9 V* p' U, _

  5. 7 ^9 j) p7 Z) P$ F* j8 L: a2 w; b' y
  6.   /* USER CODE END TIM4_Init 0 */% O" I6 n$ k) J4 g) r

  7. 3 \6 _3 B$ t% S  W+ a
  8.   TIM_Encoder_InitTypeDef sConfig = {0};6 |7 a9 c9 {3 \3 V
  9.   TIM_MasterConfigTypeDef sMasterConfig = {0};) G6 V  D; @0 w5 y4 }

  10. / F2 K7 G- s0 O, f! g7 U  @; J5 }
  11.   /* USER CODE BEGIN TIM4_Init 1 */
    . o1 s$ `3 f+ ^! G+ q% j
  12. + Y0 X# d( g! \; P
  13.   /* USER CODE END TIM4_Init 1 */
    4 ~- [; a9 A/ s3 P# Y9 ?
  14.   htim4.Instance = TIM4;% o1 w( i' K$ d1 h# m
  15.   htim4.Init.Prescaler = 0;
    . v: h: f1 n2 A
  16.   htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
    / [/ L3 ]+ Y8 J+ G; o
  17.   htim4.Init.Period = 400;9 e5 ?$ [+ O; l
  18.   htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;% R# t2 B7 r% H4 [7 i" J( Q) [% ]# L0 e) v
  19.   htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
    : l. u3 S- T, D- {4 q
  20.   sConfig.EncoderMode = TIM_ENCODERMODE_TI12;
    2 B* D; m" j" k4 t4 V( F9 r" H
  21.   sConfig.IC1Polarity = TIM_ICPOLARITY_FALLING;
    4 D2 f) T8 x" u0 l  k* _2 M9 E) n
  22.   sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI;# a$ |8 U* I9 p! W! ?! B
  23.   sConfig.IC1Prescaler = TIM_ICPSC_DIV1;* s, a% p! |8 O% {! Z$ S
  24.   sConfig.IC1Filter = 15;
    9 X5 u, [2 {' \' |  t/ x; v
  25.   sConfig.IC2Polarity = TIM_ICPOLARITY_FALLING;
    ; Q3 |# Y2 x% ~( ?5 z
  26.   sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI;
    : q4 M- ?7 C/ t& g
  27.   sConfig.IC2Prescaler = TIM_ICPSC_DIV1;- W9 _4 q3 S2 t% Y9 |
  28.   sConfig.IC2Filter = 15;& j* w* o* p) Z/ H( \8 s- e5 `; H
  29.   if (HAL_TIM_Encoder_Init(&htim4, &sConfig) != HAL_OK)4 E) V5 e: Q1 \1 s5 l) H- s: p
  30.   {. i& C2 W+ N7 b6 m
  31.     Error_Handler();
    % n7 N: Y4 {, T' u  q
  32.   }. y- t1 [" Y* _' d. W
  33.   sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;' U1 `) m- c9 l2 l
  34.   sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
    , y( q3 H: {" }
  35.   if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)- j7 M+ ?4 l0 r  K4 z. |. q! P
  36.   {6 b3 v& v+ @  k1 r  O& {4 J+ T
  37.     Error_Handler();
    ) |. D, f8 G" k4 a  v
  38.   }
    + G$ t- \  N4 A6 R
  39.   /* USER CODE BEGIN TIM4_Init 2 */4 I( l# w9 J$ @$ ?) S- V+ k0 d
  40.   HAL_TIM_Encoder_Start(&htim4, TIM_CHANNEL_ALL); //启动编码器接口
    9 l' S, x! f! {! S$ W0 Z4 y- t
  41.   /* USER CODE END TIM4_Init 2 */7 O4 M1 K3 D8 X: V' N7 }
  42. }
复制代码
  1. //主函数里面调用计数值
    " K6 c+ i8 U+ T8 S7 x$ {4 A( C
  2. while (1)
    3 ~& Y6 j, a+ V) o1 }: |$ V
  3.   {
    . @0 c* _' E6 b' r) L
  4.     // Enc_Count:获取计数个数
    ( M4 t$ Q: ^. c! _8 |
  5.     Enc_Count =  __HAL_TIM_GET_COUNTER(&htim4);& h1 o6 k( z& x& D( M! a
  6.    
      l$ E; m1 {, E
  7.     //若需要检测编码器转了多少格,记得要/4,因为转一格是+4;
    ( X& Q6 v+ T! G) `3 M8 c) [
  8.     //Enc_Count =  __HAL_TIM_GET_COUNTER(&htim4)/4;
    + ]- g1 M0 B; t1 L) f! o! m
  9.      0 e9 Z% b& z6 j. }+ @7 C
  10.    
    ( h: R3 F+ T2 q3 F0 T
  11.     + |; }, q& }0 q0 l+ A5 _
  12.     /* USER CODE END WHILE */$ R0 a: z: Z3 @% i/ E. ~9 Q+ z4 E5 V
  13.   X) Z! }# r3 g8 f9 ?9 I- S
  14.     /* USER CODE BEGIN 3 */9 N, o2 a( U; Z* ?
  15.    
    4 p) s- t2 O; Z& d- s) h) ?+ b
  16.   }
复制代码
文章出处: 电子爱好者
# \+ j3 i9 Z" [
收藏 评论0 发布时间:2021-1-12 15:10

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版