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

第五章:STM32CubeMx 计数器基本使用方法

[复制链接]
STMCU小助手 发布时间:2021-1-13 15:26
第五章:STM32CubeMx计数器基本使用方法

+ l! p0 o( S3 l( Q5 _2 Z
第一步:
具体配置如下图:
3.3.jpg
7 f9 W1 a+ d: M9 e6 ~3 u; L, M
第二步:
可以根据自身需要在NVIC 中断控制器中配置中断响应优先级。这里的配置方法可以参考前面几章!
第三步:
代码分析:
  1. static void MX_TIM2_Init(void)
    3 L" O( F$ y1 @9 E9 @
  2. {* D; M; r; j' ^; L
  3. 9 v* s5 C. x8 o1 E
  4.   /* USER CODE BEGIN TIM2_Init 0 */5 x4 x8 Z2 h3 n$ J( [
  5. % \% ^1 Z' \/ M* ~* A2 Q* t$ z! i+ Q
  6.   /* USER CODE END TIM2_Init 0 */6 [+ I; c% B& G' a) N" \' d' b

  7. 4 p9 t$ O- J# o1 V7 `) W1 G
  8.   TIM_ClockConfigTypeDef sClockSourceConfig = {0};
    : r! r4 s5 T2 L. V7 m
  9.   TIM_MasterConfigTypeDef sMasterConfig = {0};
    . W% P- p: b) W4 k2 E9 v4 ~
  10. 0 B8 x' @/ B$ x4 y) g8 D- }/ R
  11.   /* USER CODE BEGIN TIM2_Init 1 */& Q: P4 ]6 U9 j$ ?# v7 J  G! g: I% M

  12. 5 o, [5 R' \/ |$ d
  13.   /* USER CODE END TIM2_Init 1 */9 A) V! }7 T* E& `7 X' C
  14.   htim2.Instance = TIM2;
    $ L5 O! ]% B: D8 y) \+ V) ~
  15.   htim2.Init.Prescaler = 0;
      {& b3 A9 E! W" A6 f+ u, L, W
  16.   htim2.Init.CounterMode = TIM_COUNTERMODE_UP;0 S2 F/ q( Z$ m' Q5 J* R, l9 i6 `& D
  17.   htim2.Init.Period = 1000;
    6 a* d1 ^4 |; e- }) |. c
  18.   htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;/ |) v4 M4 W6 t' ?5 |+ _
  19.   htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
    + x( G( s. O( q0 B* n/ E8 M
  20.   if (HAL_TIM_Base_Init(&htim2) != HAL_OK)' l4 P6 |3 M. K2 V
  21.   {
    ( A. L% U# Q2 j1 `: E8 L( f
  22.     Error_Handler();
    6 I7 m1 b3 {7 [
  23.   }
    % Z) w% x) o" x
  24.   sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_ETRMODE2;+ A9 Q, B  \- M$ @% A4 k/ L3 B. I
  25.   sClockSourceConfig.ClockPolarity = TIM_CLOCKPOLARITY_NONINVERTED;
    . S3 j& S2 w" Q& I2 @4 J) }
  26.   sClockSourceConfig.ClockPrescaler = TIM_CLOCKPRESCALER_DIV1;
    " `& y  Z9 d5 M! U* l2 q! F
  27.   sClockSourceConfig.ClockFilter = 0;
    3 q! i- Y# F: j) N+ M& N9 U- ^
  28.   if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
    . v* ^! P8 R6 H0 X* T6 x& I
  29.   {
    . W- z3 s9 V" R0 V/ h; c9 N
  30.     Error_Handler();! D6 ~  N3 s) g4 k
  31.   }
    ; F/ v3 b5 e5 H% Z! p
  32.   sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
    1 ^7 X) U" c! r# q+ Q, q* S9 C8 N6 ]6 |
  33.   sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
    ) D( J  M# }& h5 k
  34.   if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
    ' u9 `/ A9 [. [) Y
  35.   {$ b% \* q) c- y9 J" P8 N
  36.     Error_Handler();( X$ Q* d$ V* m+ ~) R5 R
  37.   }. ]% {, P% j9 ?8 c# e8 b/ L* W
  38.   /* USER CODE BEGIN TIM2_Init 2 */5 }4 A+ L* h. C
  39.   //在这这里添加这行代码,意思是初始化完成便开启计数器
    & n; _7 W. e/ A, N
  40.   HAL_TIM_Base_Start(&htim2);
    1 w2 _; C: ]9 @  \1 A3 g) t
  41.   /* USER CODE END TIM2_Init 2 */
    ) f; S- ~# w4 Y3 N  \
  42. ( f9 h2 R" h- \/ I7 c
  43. }
复制代码
  1. //主函数里面调用计数值
    , C5 m4 @1 b1 L* H
  2. while (1)
    0 ^! h' X1 I& E$ H( @
  3.   {9 v( w+ Q8 E  Z& B% e4 ~) m6 N% S
  4.     % p3 G/ r" E" W% S
  5.     ETR_Count = __HAL_TIM_GET_COUNTER(&htim2);
    : k0 Z8 w# W' Q5 O% P$ g- S' \9 ~2 v
  6.    
    0 U$ W# w. w# c/ Y3 @
  7.     /* USER CODE END WHILE */. a6 f( N3 i$ O1 p$ R. |
  8. 6 @+ x1 g8 v+ G% Y' P9 T
  9.     /* USER CODE BEGIN 3 */# B1 ?( {# ?+ x
  10.    
    0 U2 v: _" J2 Z
  11.   }
复制代码

4 n! X# H2 Q4 `
3.1.png

' d: b7 E/ H, B% M; y( ]3 A3 S
3.2.png
文章出处: 电子爱好者

# D! }+ Z. y5 j) ?
赞 收藏 评论0 发布时间:2021-1-13 15:26

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版