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

【经验分享】STM32G4高精度定时器的HALF输出模式示例

[复制链接]
STMCU小助手 发布时间:2021-12-8 22:00
有人想使用STM32G474芯片做Half模式的PWM输出,发现有点问题,明明配置了定时器A的两路输出, 结果总是只有1路输出。这里简单演示下实现过程。【顺便提醒下,并非STM32G4全系列都内置高精度定时器】9 Q$ o2 V+ F9 ~- z- s) u

! D( N9 I9 `( w) S$ A所谓Half模式就是指硬件基于给定的计数周期值自动输出占空比为50%的方波,用户无须对比较寄存器的值再进行设置,这里硬件默认使用比较寄存器1【cmp1】,硬件自动将用户设置的PERIOD值的一半赋给CMP1寄存器。换言之,用户此时无法对CMP1寄存器进行赋值。
" X8 U$ `9 f) S. G0 n( @7 P5 E% `" g  |8 A( [$ }; B
另外,对于输出配置必须使用CMP1比较事件和定时器的Period周期事件。
5 P1 R6 N% d6 t3 z% a' ^5 |
8 R6 t- z, ^9 n4 `( ], u- A
808614ccc90f45f5bb8833c0c4d5ded7.png

1 s8 ~: m% g2 i6 {0 W$ Z; s# c2 i, ~% \* _  z* U2 [$ S5 k4 s
关于HALF模式的原理就介绍到这里,下面就使用STM32G474RE的Nucleo开发板演示下实现过程,主要是软件配置,硬件没啥要处理的,有块开发板就行。1 j5 C/ j; J8 W

1 ]0 h4 h$ F4 I  h
9fb0e153afce61810bb409f94a4994e0.png
  d+ [( F$ M, _8 k" W: \. O

& u) q- ^! C) B先使用STM32CubeMx进行配置【其它RCC等的配置此处就不说了】。/ V; Z- N% ~- W  w# t

$ h$ Q( c2 E+ v7 u6 L9 P
4460249ac1fc05a1777bd130ef283448.png

" m- B5 u1 g* L5 f. a) O- V5 U' d  v( _/ a/ L, a; G/ B0 G7 u
下面截图橙色框中的配置是必须的,有关定时器的时间参数我随便配置的,毕竟这里只是演示一下功能。
& G0 z3 l" A* s/ G6 x
# _/ R8 _: ?5 m7 c: E0 H! M, o
0710b542946312b5ce1c483be1ad5e3d.png

0 |8 @% [$ G0 _$ l5 G
' O9 G# [' F1 n! z7 D" q这里的比较单元1必须使能,使能即可,无须参数配置。
* J, l% S4 |' _# p. i4 m5 y' Y: ?' L% u; ^, O$ {3 S
456cf41ee55b528de4505cc838f4aff0.png
' e, f/ Y5 G: S+ c6 g

. W- j7 ^( z2 ^( z下面关于TA1/TA2输出的配置,也是必须的关键配置。
  u0 z+ h1 c( _
9 I+ G. d' o6 w1 B
3771ff10d27e6e8491f23a004e708233.png
) l5 t- s1 T! l9 C$ d. ]$ l" S

5 \, h3 N* M. R# _至于定时器的其它配置,保持默认即可。配置完成后,生成初始化代码,然后加入合适的用户代码。
1 ^% P; E6 g7 [* H: e# m% L6 y+ Z7 S$ E9 c
HAL_HRTIM_WaveformCountStart(&hhrtim1, HRTIM_TIMERID_TIMER_A);
! N3 W6 b, G$ e" d& A' E
: B% ~( F5 Q9 w! R, X5 I. j
6 X  P6 w7 Y/ ^1 }# z% H
% V5 A: {6 \4 x. B+ K. B  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA1);9 T! i7 y; ?- O" A  ]' V3 o0 U

8 w! x5 m; ~$ C! B, {" y4 O  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA2);) t! d' B8 i- I' F" C/ q. ~7 a
- y- ?" S5 `: R. i/ q: |& E3 _
8 D- ~, j  v; W9 Q, R  r
编译运行看结果:9 W9 R: h+ e  e& z. {( V( J6 ^. O
# L# U' A! J* S+ J9 b
647065895cf34eb2b894b34b9b135da9.png
* s3 g* q* E* m$ k6 l

/ C: Y, }& k, ~7 S因为我把TA1/TA2极性选择是相反的,所有此时输出的是两路互补波形,如果二者极性选择一致,输出的就是两路占空比为50%的相同波形。
$ ?- y  @9 K8 F, E8 A2 q6 S1 t/ w+ }% W# t4 x

/ p- ~& r1 Q7 o5 l5 \8 a4 G
+ M/ l% ?# V) @5 I% f( `$ N
收藏 评论0 发布时间:2021-12-8 22:00

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版