|
第五章:STM32CubeMx计数器基本使用方法
+ l! p0 o( S3 l( Q5 _2 Z第一步: 具体配置如下图: 7 f9 W1 a+ d: M9 e6 ~3 u; L, M
第二步: 可以根据自身需要在NVIC 中断控制器中配置中断响应优先级。这里的配置方法可以参考前面几章! 第三步: 代码分析: - static void MX_TIM2_Init(void)
3 L" O( F$ y1 @9 E9 @ - {* D; M; r; j' ^; L
- 9 v* s5 C. x8 o1 E
- /* USER CODE BEGIN TIM2_Init 0 */5 x4 x8 Z2 h3 n$ J( [
- % \% ^1 Z' \/ M* ~* A2 Q* t$ z! i+ Q
- /* USER CODE END TIM2_Init 0 */6 [+ I; c% B& G' a) N" \' d' b
4 p9 t$ O- J# o1 V7 `) W1 G- TIM_ClockConfigTypeDef sClockSourceConfig = {0};
: r! r4 s5 T2 L. V7 m - TIM_MasterConfigTypeDef sMasterConfig = {0};
. W% P- p: b) W4 k2 E9 v4 ~ - 0 B8 x' @/ B$ x4 y) g8 D- }/ R
- /* USER CODE BEGIN TIM2_Init 1 */& Q: P4 ]6 U9 j$ ?# v7 J G! g: I% M
5 o, [5 R' \/ |$ d- /* USER CODE END TIM2_Init 1 */9 A) V! }7 T* E& `7 X' C
- htim2.Instance = TIM2;
$ L5 O! ]% B: D8 y) \+ V) ~ - htim2.Init.Prescaler = 0;
{& b3 A9 E! W" A6 f+ u, L, W - htim2.Init.CounterMode = TIM_COUNTERMODE_UP;0 S2 F/ q( Z$ m' Q5 J* R, l9 i6 `& D
- htim2.Init.Period = 1000;
6 a* d1 ^4 |; e- }) |. c - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;/ |) v4 M4 W6 t' ?5 |+ _
- htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
+ x( G( s. O( q0 B* n/ E8 M - if (HAL_TIM_Base_Init(&htim2) != HAL_OK)' l4 P6 |3 M. K2 V
- {
( A. L% U# Q2 j1 `: E8 L( f - Error_Handler();
6 I7 m1 b3 {7 [ - }
% Z) w% x) o" x - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_ETRMODE2;+ A9 Q, B \- M$ @% A4 k/ L3 B. I
- sClockSourceConfig.ClockPolarity = TIM_CLOCKPOLARITY_NONINVERTED;
. S3 j& S2 w" Q& I2 @4 J) } - sClockSourceConfig.ClockPrescaler = TIM_CLOCKPRESCALER_DIV1;
" `& y Z9 d5 M! U* l2 q! F - sClockSourceConfig.ClockFilter = 0;
3 q! i- Y# F: j) N+ M& N9 U- ^ - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
. v* ^! P8 R6 H0 X* T6 x& I - {
. W- z3 s9 V" R0 V/ h; c9 N - Error_Handler();! D6 ~ N3 s) g4 k
- }
; F/ v3 b5 e5 H% Z! p - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
1 ^7 X) U" c! r# q+ Q, q* S9 C8 N6 ]6 | - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
) D( J M# }& h5 k - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
' u9 `/ A9 [. [) Y - {$ b% \* q) c- y9 J" P8 N
- Error_Handler();( X$ Q* d$ V* m+ ~) R5 R
- }. ]% {, P% j9 ?8 c# e8 b/ L* W
- /* USER CODE BEGIN TIM2_Init 2 */5 }4 A+ L* h. C
- //在这这里添加这行代码,意思是初始化完成便开启计数器
& n; _7 W. e/ A, N - HAL_TIM_Base_Start(&htim2);
1 w2 _; C: ]9 @ \1 A3 g) t - /* USER CODE END TIM2_Init 2 */
) f; S- ~# w4 Y3 N \ - ( f9 h2 R" h- \/ I7 c
- }
复制代码- //主函数里面调用计数值
, C5 m4 @1 b1 L* H - while (1)
0 ^! h' X1 I& E$ H( @ - {9 v( w+ Q8 E Z& B% e4 ~) m6 N% S
- % p3 G/ r" E" W% S
- ETR_Count = __HAL_TIM_GET_COUNTER(&htim2);
: k0 Z8 w# W' Q5 O% P$ g- S' \9 ~2 v -
0 U$ W# w. w# c/ Y3 @ - /* USER CODE END WHILE */. a6 f( N3 i$ O1 p$ R. |
- 6 @+ x1 g8 v+ G% Y' P9 T
- /* USER CODE BEGIN 3 */# B1 ?( {# ?+ x
-
0 U2 v: _" J2 Z - }
复制代码
4 n! X# H2 Q4 `
' d: b7 E/ H, B% M; y( ]3 A3 S
文章出处: 电子爱好者
# D! }+ Z. y5 j) ? |