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

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

[复制链接]
STMCU小助手 发布时间:2021-12-8 22:00
有人想使用STM32G474芯片做Half模式的PWM输出,发现有点问题,明明配置了定时器A的两路输出, 结果总是只有1路输出。这里简单演示下实现过程。【顺便提醒下,并非STM32G4全系列都内置高精度定时器】, j/ C$ a/ J7 Y8 j% `; p
, X) J! V$ y; U2 M8 u1 X
所谓Half模式就是指硬件基于给定的计数周期值自动输出占空比为50%的方波,用户无须对比较寄存器的值再进行设置,这里硬件默认使用比较寄存器1【cmp1】,硬件自动将用户设置的PERIOD值的一半赋给CMP1寄存器。换言之,用户此时无法对CMP1寄存器进行赋值。' P" R3 U# }: n" x/ g9 D

# ^) T% E; o: R) n, @3 S另外,对于输出配置必须使用CMP1比较事件和定时器的Period周期事件。( N9 z4 T- a6 `4 L' q

+ U5 S) q2 r: ^" a. `2 t
808614ccc90f45f5bb8833c0c4d5ded7.png

% p) e3 c! `; ~1 K  K1 ^7 s2 z3 ~! l: ~2 Q
关于HALF模式的原理就介绍到这里,下面就使用STM32G474RE的Nucleo开发板演示下实现过程,主要是软件配置,硬件没啥要处理的,有块开发板就行。, c6 a( b) ~' t  g3 p8 P
: |  R& e. ^$ F) B- ]0 ]- ^* D
9fb0e153afce61810bb409f94a4994e0.png

( s# ]2 b/ C2 e/ k9 ~/ R. P* F7 z! z/ k* t! w5 `' h
先使用STM32CubeMx进行配置【其它RCC等的配置此处就不说了】。/ M9 j  |3 h3 J0 X! l( e
% b' N5 K! m# W: \' [
4460249ac1fc05a1777bd130ef283448.png
( S6 j# c% K7 q
& O5 W" u# u7 A' A* s. x2 ?! x. v: b
下面截图橙色框中的配置是必须的,有关定时器的时间参数我随便配置的,毕竟这里只是演示一下功能。
8 }8 ^3 t# S" O9 g* |" F3 t$ k7 L" H5 {0 U  L
0710b542946312b5ce1c483be1ad5e3d.png

  J! J7 ?4 M  m2 M  t( C9 E9 k: K5 ]
这里的比较单元1必须使能,使能即可,无须参数配置。* v' ]) a- N7 q" }' A# l

8 P6 f+ T2 u! @1 X! R6 [- f
456cf41ee55b528de4505cc838f4aff0.png

5 A! K) z3 [# O: h: n' D/ g: M+ F8 a' a# r$ U9 ]% A8 c( g" c
下面关于TA1/TA2输出的配置,也是必须的关键配置。" f9 s  o! g( @, X/ F( o

# J0 C) E  K0 A" Q4 }
3771ff10d27e6e8491f23a004e708233.png

  S4 ]8 \# N5 X: S0 y* |/ h1 O' g# S0 c& o
至于定时器的其它配置,保持默认即可。配置完成后,生成初始化代码,然后加入合适的用户代码。6 c: p9 P2 v" ~3 [0 z) ]! k% Q

2 C- I2 C, M: I3 }/ x HAL_HRTIM_WaveformCountStart(&hhrtim1, HRTIM_TIMERID_TIMER_A);
9 o, B! B" i  F1 X
8 E5 G. g9 d3 f% L
, `! S6 H; p9 U( O! a/ K% q+ t  j5 u* Z; z2 M5 o+ M6 c
  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA1);: k- i4 _( e" H
3 W" ^  ]9 x# t; c/ j9 c3 N8 e: `
  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA2);
& {6 X% Y: z% v' G' I$ i3 o; O9 ^% x, n8 P" @8 j6 e
4 r9 j& e. H* l% p# V# Y
编译运行看结果:
( r3 U1 F( O7 z" X3 a- X( P, r  e$ O  ]9 k2 X( W
647065895cf34eb2b894b34b9b135da9.png
7 h9 v- `  _4 ~& n

& t' q! M' D6 [6 ^因为我把TA1/TA2极性选择是相反的,所有此时输出的是两路互补波形,如果二者极性选择一致,输出的就是两路占空比为50%的相同波形。
, F: ]/ x: [* h. e
: ]9 [3 I, h/ B: d- I- Q0 X; a
6 g5 J) P: ~( m/ c& t6 o  o: }; q0 D: N- c
收藏 评论0 发布时间:2021-12-8 22:00

举报

0个回答

所属标签

相似分享

官网相关资源

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