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

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

[复制链接]
STMCU小助手 发布时间:2021-12-8 22:00
有人想使用STM32G474芯片做Half模式的PWM输出,发现有点问题,明明配置了定时器A的两路输出, 结果总是只有1路输出。这里简单演示下实现过程。【顺便提醒下,并非STM32G4全系列都内置高精度定时器】8 a# X& k5 z* E8 L
, n* }, u* Q0 b1 `
所谓Half模式就是指硬件基于给定的计数周期值自动输出占空比为50%的方波,用户无须对比较寄存器的值再进行设置,这里硬件默认使用比较寄存器1【cmp1】,硬件自动将用户设置的PERIOD值的一半赋给CMP1寄存器。换言之,用户此时无法对CMP1寄存器进行赋值。
' y; Y" `, g' f; n" c# r- A0 Q3 r2 D5 f+ q, F" G6 `& q/ C
另外,对于输出配置必须使用CMP1比较事件和定时器的Period周期事件。
2 e3 y6 O! l% M: G, e  W5 X+ D. E
; T4 m8 ~. f& b/ Z+ }3 r
808614ccc90f45f5bb8833c0c4d5ded7.png

3 K* X( E! q& m0 i; Y( D6 m
2 S2 C: J- S0 ?3 a  s关于HALF模式的原理就介绍到这里,下面就使用STM32G474RE的Nucleo开发板演示下实现过程,主要是软件配置,硬件没啥要处理的,有块开发板就行。
. ^3 `3 j2 s* T! [" T% q6 q9 X7 M( w8 X& x  m9 U: `+ Z% q+ a5 s
9fb0e153afce61810bb409f94a4994e0.png

4 ^8 ]* E+ ]9 R, v1 ?$ }
: e& h6 S0 I; Z+ m先使用STM32CubeMx进行配置【其它RCC等的配置此处就不说了】。
2 @8 z5 m) ^# T" s3 g
6 W' u7 r+ V9 u4 i9 m# r
4460249ac1fc05a1777bd130ef283448.png

+ E2 B' l% E2 j( ?) Q9 O& w) l3 [: V1 N4 u, f' B; ?/ `
下面截图橙色框中的配置是必须的,有关定时器的时间参数我随便配置的,毕竟这里只是演示一下功能。
* M" f$ R. t9 |5 d+ q6 d
) d3 \  x+ u6 R4 ~
0710b542946312b5ce1c483be1ad5e3d.png

) y# U" i! k8 [' ^# B
! U1 q  O1 l7 a& ^9 N5 h这里的比较单元1必须使能,使能即可,无须参数配置。. o; }2 E* I8 Z: U* H/ Q) G8 o

& T4 x% z% D% R0 {: c' ^6 G; m
456cf41ee55b528de4505cc838f4aff0.png

& }/ K& W& p" g3 u5 `- w' b1 k# `, I# a$ y& W% k
下面关于TA1/TA2输出的配置,也是必须的关键配置。) E: ?% }* Q: v- R

- l$ Y0 Z% |) v1 c1 h  V  H6 e
3771ff10d27e6e8491f23a004e708233.png
* E  L' a/ z! N( X

; r( z" @5 _1 v3 j至于定时器的其它配置,保持默认即可。配置完成后,生成初始化代码,然后加入合适的用户代码。0 c- @2 q0 U) ^  c2 {9 p) S
0 M  [' h/ X3 e2 h
HAL_HRTIM_WaveformCountStart(&hhrtim1, HRTIM_TIMERID_TIMER_A);) R- A' Q7 i; e( b/ X
- Y: @- }; t. Z3 g# z% ~+ y) q
7 a2 z, Z- x/ o# l1 K

3 ~+ c) p1 E0 V. f6 A  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA1);; s: J. q8 v/ i

2 N! q2 I7 \5 o. }  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA2);& N  s" n+ d  Z0 Q- P: L, g

0 [- j# n3 A* B( y+ W+ d; m
+ U8 h) N8 k/ X; Q. Q编译运行看结果:
  a0 y( p" M; C* ~+ N' c2 F% l# z2 w7 \1 n, O
647065895cf34eb2b894b34b9b135da9.png

6 h" k8 H% ]* Y* A* w$ P4 V
& g7 F* `6 o3 }/ j! [1 E/ A3 l. b因为我把TA1/TA2极性选择是相反的,所有此时输出的是两路互补波形,如果二者极性选择一致,输出的就是两路占空比为50%的相同波形。+ ]3 n$ b/ J# K
$ \! U* ^3 R! t5 a

$ |" H9 {. U: x
* @; H! z' ~3 R+ `1 N
收藏 评论0 发布时间:2021-12-8 22:00

举报

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