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

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

[复制链接]
STMCU小助手 发布时间:2021-12-8 22:00
有人想使用STM32G474芯片做Half模式的PWM输出,发现有点问题,明明配置了定时器A的两路输出, 结果总是只有1路输出。这里简单演示下实现过程。【顺便提醒下,并非STM32G4全系列都内置高精度定时器】: ^2 V3 F* y7 N2 l1 s# o+ g

4 ?- }2 r' ]# P8 `$ F* q$ B所谓Half模式就是指硬件基于给定的计数周期值自动输出占空比为50%的方波,用户无须对比较寄存器的值再进行设置,这里硬件默认使用比较寄存器1【cmp1】,硬件自动将用户设置的PERIOD值的一半赋给CMP1寄存器。换言之,用户此时无法对CMP1寄存器进行赋值。
4 \% i2 a7 J  V  C! C' B2 R9 s& A' I' ^8 S# k! m; Q( J; ]
另外,对于输出配置必须使用CMP1比较事件和定时器的Period周期事件。4 p6 K4 y% j1 M% o
$ B' n/ r; Q" L5 ~
808614ccc90f45f5bb8833c0c4d5ded7.png
9 C) C& f- k# j1 s! F

0 K( K; E  V* ~% i关于HALF模式的原理就介绍到这里,下面就使用STM32G474RE的Nucleo开发板演示下实现过程,主要是软件配置,硬件没啥要处理的,有块开发板就行。
/ \8 y4 O% v" K' e1 e; F4 L
8 z6 `% j7 p! E" h, n
9fb0e153afce61810bb409f94a4994e0.png

% {, _' z7 @( q5 c
+ p) i+ K4 k% `6 n9 Q先使用STM32CubeMx进行配置【其它RCC等的配置此处就不说了】。
" p/ E" t9 Q) E$ N' S) V8 K% o( Y8 F8 L
4460249ac1fc05a1777bd130ef283448.png
4 ^& R3 w1 B7 x, j- p3 w0 I# a

& c* X. E" N4 @! t& H+ E下面截图橙色框中的配置是必须的,有关定时器的时间参数我随便配置的,毕竟这里只是演示一下功能。
) w% J! [# n6 X" v3 G) }, ]1 l, V4 P- N8 D6 B. O8 e
0710b542946312b5ce1c483be1ad5e3d.png
1 o  @! D: z5 F- {1 M. O

  u; C, E; Y5 v" E这里的比较单元1必须使能,使能即可,无须参数配置。
$ [6 ?8 u" I) s' Q8 b' ~7 J5 z+ N3 P- K
456cf41ee55b528de4505cc838f4aff0.png
. y! I0 `" ]  D# B

' O) g" s3 a7 |& T下面关于TA1/TA2输出的配置,也是必须的关键配置。
+ u3 R& x! }4 A% e! _+ ]; j, x* B2 t2 _4 G0 i' `/ {0 t' M
3771ff10d27e6e8491f23a004e708233.png
( z  c  V# B% m7 }# \& q

% I9 @! I3 m1 F3 O+ }1 u" r! \至于定时器的其它配置,保持默认即可。配置完成后,生成初始化代码,然后加入合适的用户代码。
1 J# f4 F/ ]' z. M2 _1 R) \0 H! K! a" m
HAL_HRTIM_WaveformCountStart(&hhrtim1, HRTIM_TIMERID_TIMER_A);
2 h/ \0 X# d/ l9 l/ M# g7 Y/ K& H  }: B  V" B' B

' F, |0 g- M$ B! t. c6 B! a) J+ ]$ N5 x6 b/ T
  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA1);
% J- N; B0 x" R5 `! J# m7 O! Q! J0 C! a5 c8 `! |  ~& p$ N
  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA2);2 c, t- |$ S7 `

. l5 w. M3 C( E5 p+ n1 `- C
" O% X- R( L# H' m+ q编译运行看结果:& Z+ ]) P6 i% Y( \+ M- T2 Q+ o; L

" h7 {+ Y* t* F! \" x
647065895cf34eb2b894b34b9b135da9.png
$ B) Z" [2 V- [  b. m' b- v9 u

  Z/ q; o; Q' U0 v% f" P5 R因为我把TA1/TA2极性选择是相反的,所有此时输出的是两路互补波形,如果二者极性选择一致,输出的就是两路占空比为50%的相同波形。
. {0 Z) _7 o0 C7 {8 v
: R" a( ^7 p) O  L- R
; q1 A! I* l: f4 e: @7 U7 V: l1 @
收藏 评论0 发布时间:2021-12-8 22:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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