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

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

[复制链接]
STMCU小助手 发布时间:2021-12-8 22:00
有人想使用STM32G474芯片做Half模式的PWM输出,发现有点问题,明明配置了定时器A的两路输出, 结果总是只有1路输出。这里简单演示下实现过程。【顺便提醒下,并非STM32G4全系列都内置高精度定时器】
4 d( ^1 i6 f  ]( r" v* s( @2 o$ f  p3 d; `0 ?2 g. ~0 l
所谓Half模式就是指硬件基于给定的计数周期值自动输出占空比为50%的方波,用户无须对比较寄存器的值再进行设置,这里硬件默认使用比较寄存器1【cmp1】,硬件自动将用户设置的PERIOD值的一半赋给CMP1寄存器。换言之,用户此时无法对CMP1寄存器进行赋值。1 K) q& y4 c5 B9 }7 r! t2 Y. J

. D1 V; y  ?6 U7 ~另外,对于输出配置必须使用CMP1比较事件和定时器的Period周期事件。% E4 m) O* w  w' j
0 ]6 j. D3 ~. w$ K6 W$ e
808614ccc90f45f5bb8833c0c4d5ded7.png

) ~+ p! L+ m- U0 Q5 Z3 |
: q6 f: m* o5 b* o0 d$ ~" J9 L# t关于HALF模式的原理就介绍到这里,下面就使用STM32G474RE的Nucleo开发板演示下实现过程,主要是软件配置,硬件没啥要处理的,有块开发板就行。
* J; E+ s7 L3 ]) {  f/ n% |  t! G5 Z- e6 q  E
9fb0e153afce61810bb409f94a4994e0.png
# o( `( u% Y6 `+ R
: o3 q# b& e, [+ G- r
先使用STM32CubeMx进行配置【其它RCC等的配置此处就不说了】。
+ ?% b# Z4 z) ^9 p
9 u* R' j2 ^; G. ]  {
4460249ac1fc05a1777bd130ef283448.png
3 P. G2 ^3 p% j$ Y( A9 z( \7 ~
+ h( s, T" g8 X) X4 f" I
下面截图橙色框中的配置是必须的,有关定时器的时间参数我随便配置的,毕竟这里只是演示一下功能。+ W' I7 Y, n& _8 x
& i2 O" @+ o: r. P) i( a
0710b542946312b5ce1c483be1ad5e3d.png

+ q! o8 I" B% G# k9 R% t2 O; e+ _. w" l. `4 l
这里的比较单元1必须使能,使能即可,无须参数配置。
, s2 g8 i. C. O) V
# o. }0 J' F6 L+ F
456cf41ee55b528de4505cc838f4aff0.png
8 N  t+ h% d, `8 t  T

/ [( U$ X- ^5 Z$ h& D. r2 D- c下面关于TA1/TA2输出的配置,也是必须的关键配置。$ _7 @7 \$ J% Q1 A8 s
; b+ U; o8 b. d- Z( _
3771ff10d27e6e8491f23a004e708233.png
5 g& X+ g" G7 D" I( M" d5 j7 |
9 w8 P( K# b# f9 Z4 R( t
至于定时器的其它配置,保持默认即可。配置完成后,生成初始化代码,然后加入合适的用户代码。, ^$ e4 {* ]( A) ~8 O

/ `6 ?' o3 R. f) v/ _/ P# c HAL_HRTIM_WaveformCountStart(&hhrtim1, HRTIM_TIMERID_TIMER_A);$ Y3 ^( i! ^# [; a  L7 y* M  i( L
. |" h- J0 U/ `7 B/ i3 M
8 V& I/ `9 O/ O( ]
* r' a7 G2 \% C# W
  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA1);/ T, l. l4 E/ @% j" F% |4 c
! L) D* U/ ?+ F9 D$ m+ M5 I: ^
  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA2);
- W; z# T, }% e& j: E" e* Q4 a' O* H; x$ U7 Y3 O& ?/ a

$ u6 b( ^" C$ b( F编译运行看结果:  L, ~9 f- K$ d7 J/ G
2 [, ?' x  p2 d
647065895cf34eb2b894b34b9b135da9.png

9 L& l6 ?5 \. c) t. _& P& @- p4 ^, U7 c
因为我把TA1/TA2极性选择是相反的,所有此时输出的是两路互补波形,如果二者极性选择一致,输出的就是两路占空比为50%的相同波形。
7 s  C" M6 a( m' m
5 p( b0 `5 m  E: S4 o6 N7 m& n3 P* o+ _
* h8 y( x- A# _5 M  d
  @5 o2 T1 J8 c1 n7 c+ Q( V
收藏 评论0 发布时间:2021-12-8 22:00

举报

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