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

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

[复制链接]
STMCU小助手 发布时间:2021-12-8 22:00
有人想使用STM32G474芯片做Half模式的PWM输出,发现有点问题,明明配置了定时器A的两路输出, 结果总是只有1路输出。这里简单演示下实现过程。【顺便提醒下,并非STM32G4全系列都内置高精度定时器】$ r/ g6 a' H$ z
- S1 m( N# _# p0 L9 p' v; `6 W
所谓Half模式就是指硬件基于给定的计数周期值自动输出占空比为50%的方波,用户无须对比较寄存器的值再进行设置,这里硬件默认使用比较寄存器1【cmp1】,硬件自动将用户设置的PERIOD值的一半赋给CMP1寄存器。换言之,用户此时无法对CMP1寄存器进行赋值。$ U. K/ r" m3 Y6 p
- B$ j1 D( ~7 G% j3 ]& l+ h: ?
另外,对于输出配置必须使用CMP1比较事件和定时器的Period周期事件。
' |- y; a5 s8 |9 d+ ^. R7 K( N9 L! j: d0 Y1 F! X# D
808614ccc90f45f5bb8833c0c4d5ded7.png

" Z5 R" r" N7 |( K: ]
/ b! L' O8 I5 q$ v7 q9 ~# F: q  `关于HALF模式的原理就介绍到这里,下面就使用STM32G474RE的Nucleo开发板演示下实现过程,主要是软件配置,硬件没啥要处理的,有块开发板就行。
; ^  ~1 }/ _7 ]) ?: g& R- Y% g( _7 E; f! {% B% @& B
9fb0e153afce61810bb409f94a4994e0.png
* q& c3 F: \8 |  Z1 M9 v

7 i% H9 ~9 x7 X; K先使用STM32CubeMx进行配置【其它RCC等的配置此处就不说了】。) s0 J( s# S4 a/ o& x$ S$ V
1 v. q) ~% [) f$ `$ f( c
4460249ac1fc05a1777bd130ef283448.png

8 r  ^" L+ k: u9 W- ^$ }! t. i: `  @9 s
下面截图橙色框中的配置是必须的,有关定时器的时间参数我随便配置的,毕竟这里只是演示一下功能。
3 Z) l9 B$ p! N* Z) f  A/ p: v, x" _
0710b542946312b5ce1c483be1ad5e3d.png

' K( V2 O5 }' C) m# Q' i  e7 {( n9 }; S# C3 X$ ?
这里的比较单元1必须使能,使能即可,无须参数配置。/ L/ I. M' y0 O

5 h9 X. t, ?; L! F6 g% a4 T' l
456cf41ee55b528de4505cc838f4aff0.png
* V0 {; ]2 V* J; y) G1 p
. J( i; U$ i  z
下面关于TA1/TA2输出的配置,也是必须的关键配置。, c* r4 f6 d. P0 Z, K. x$ U: G: V0 h
% K2 N% t% ?3 X3 |
3771ff10d27e6e8491f23a004e708233.png
5 W0 a; h8 D7 F% _2 W
7 e" N) t0 e( J7 U2 G# }) s
至于定时器的其它配置,保持默认即可。配置完成后,生成初始化代码,然后加入合适的用户代码。+ Q" L% m! R7 x% R; _
- T! Q- Q) P% Z9 W* I
HAL_HRTIM_WaveformCountStart(&hhrtim1, HRTIM_TIMERID_TIMER_A);
. u6 |: Y* J5 j$ m$ b' f0 X
" U( {- r- q1 N+ J  @( w
- x' `' s9 v  z5 D! d: g- y
- r6 a+ @) x& q* T  K/ w" j  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA1);
) [! S9 v' w2 P- r, f7 e# O
7 N" d; D7 T$ w" F1 M4 v" o5 T  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA2);
6 r% C! n7 [6 S, d- G2 ~1 U3 F! W$ W! V, g- q/ @+ n$ ?' Y
  x! g" Q  c4 U- K2 ^! x  w
编译运行看结果:
/ D. G1 s. G# R, h0 f; G& x+ d; s4 l* V4 A$ c8 C
647065895cf34eb2b894b34b9b135da9.png
  p2 R! X, h* @, L' @7 H

! N2 y0 `: L5 t( N( V4 E因为我把TA1/TA2极性选择是相反的,所有此时输出的是两路互补波形,如果二者极性选择一致,输出的就是两路占空比为50%的相同波形。
% F+ Z- W& N7 [: T% m2 R# Z& g: C8 m

1 X' c0 B& {0 w5 ]" A$ v( m" ]" M) a( }& a* \# u
收藏 评论0 发布时间:2021-12-8 22:00

举报

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