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

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

[复制链接]
STMCU小助手 发布时间:2021-12-8 22:00
有人想使用STM32G474芯片做Half模式的PWM输出,发现有点问题,明明配置了定时器A的两路输出, 结果总是只有1路输出。这里简单演示下实现过程。【顺便提醒下,并非STM32G4全系列都内置高精度定时器】
- j  e0 i# M3 M, ?; H$ B- X  m% n( ^4 e
所谓Half模式就是指硬件基于给定的计数周期值自动输出占空比为50%的方波,用户无须对比较寄存器的值再进行设置,这里硬件默认使用比较寄存器1【cmp1】,硬件自动将用户设置的PERIOD值的一半赋给CMP1寄存器。换言之,用户此时无法对CMP1寄存器进行赋值。
6 o5 _/ ]7 Q, x) J1 T; \9 o
" m+ `4 |1 C) N& I. B/ y另外,对于输出配置必须使用CMP1比较事件和定时器的Period周期事件。
2 v( r) \% |! m
: O2 K& }5 J5 m5 @, x6 ?: t
808614ccc90f45f5bb8833c0c4d5ded7.png

5 N& x6 b; ]; P2 N$ U
2 {: K6 p9 o! P; c6 D- s' I5 _关于HALF模式的原理就介绍到这里,下面就使用STM32G474RE的Nucleo开发板演示下实现过程,主要是软件配置,硬件没啥要处理的,有块开发板就行。0 z- g' V8 r, q" U( O

, x0 b2 [& F: j1 f
9fb0e153afce61810bb409f94a4994e0.png
& A6 K6 r& V4 e/ n
9 U% ^% _* q8 X& Q# L/ }$ X
先使用STM32CubeMx进行配置【其它RCC等的配置此处就不说了】。) Q3 ~/ v1 N2 K. P! t2 \
# H* s1 |' v+ K8 u1 O/ A
4460249ac1fc05a1777bd130ef283448.png
6 j( H) B9 m% y& w
( c! r# _8 s+ k1 d3 b
下面截图橙色框中的配置是必须的,有关定时器的时间参数我随便配置的,毕竟这里只是演示一下功能。
* L# z5 J4 e' Z9 ^# w7 q0 W0 r$ S
" R5 ^5 h# ?( G/ s/ M3 r% L
0710b542946312b5ce1c483be1ad5e3d.png

1 G* n) i! Z! g: n0 b. y9 b
% {! R- f  J" }1 h这里的比较单元1必须使能,使能即可,无须参数配置。- A1 A9 C$ ]/ A" @1 Y9 J

* b6 v* P' M9 u3 @9 l5 x! u9 S
456cf41ee55b528de4505cc838f4aff0.png

8 o$ Z$ V. d% @6 s* _) L7 g( f; {% m* @% M  y) J, Q, S( p
下面关于TA1/TA2输出的配置,也是必须的关键配置。
+ t# {) z4 j3 P3 H) |0 C+ S! B/ p# m% _+ S4 E' c9 @
3771ff10d27e6e8491f23a004e708233.png
5 ?. u! B4 P- [" ]$ _' J) M6 o  @
% M$ I, R& f- W
至于定时器的其它配置,保持默认即可。配置完成后,生成初始化代码,然后加入合适的用户代码。, M: `* @" J8 e, s/ m2 ?

4 x" m) U* O& J HAL_HRTIM_WaveformCountStart(&hhrtim1, HRTIM_TIMERID_TIMER_A);
. l& \) j+ }% k0 H% }! ]6 |) ?2 s- [5 v8 ?# \& n

  b, O; z1 K9 H# j7 }
) q/ a7 b# f0 O9 q- v  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA1);9 D$ v, D0 F* Q$ t( C5 F4 [

# a2 P: P# \1 J# {/ ]/ X  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA2);  {8 M3 B, K# o# o

9 k& }% Y6 f5 w) T& {( \& h7 Y9 C8 `4 [# J  x2 P
编译运行看结果:
2 r! @) f4 z* \0 C" i9 K$ J6 |
$ {% x2 s( e& K9 h3 P
647065895cf34eb2b894b34b9b135da9.png

' u3 |/ C7 \: w2 ^5 B( {- x  H" H1 q4 `
因为我把TA1/TA2极性选择是相反的,所有此时输出的是两路互补波形,如果二者极性选择一致,输出的就是两路占空比为50%的相同波形。$ Z$ V1 k- R" R9 @

  l4 s: u$ d- Y2 o) d
. n) N0 e; H: x3 y8 A7 ]3 r4 M
$ V. u9 Q/ R0 X( A8 J/ R4 |
收藏 评论0 发布时间:2021-12-8 22:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版