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

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

[复制链接]
STMCU小助手 发布时间:2021-12-8 22:00
有人想使用STM32G474芯片做Half模式的PWM输出,发现有点问题,明明配置了定时器A的两路输出, 结果总是只有1路输出。这里简单演示下实现过程。【顺便提醒下,并非STM32G4全系列都内置高精度定时器】
4 Q! q& B! T4 i! f. ^; s& e) x+ R; E$ S% R
所谓Half模式就是指硬件基于给定的计数周期值自动输出占空比为50%的方波,用户无须对比较寄存器的值再进行设置,这里硬件默认使用比较寄存器1【cmp1】,硬件自动将用户设置的PERIOD值的一半赋给CMP1寄存器。换言之,用户此时无法对CMP1寄存器进行赋值。
: i3 t$ |1 _/ I6 F+ k; v1 n6 _
. C/ {+ i8 J8 h) |' W另外,对于输出配置必须使用CMP1比较事件和定时器的Period周期事件。
7 f' ~5 ]) G; G! A: U1 V8 z
1 D0 a& H& A$ H1 \  C( z
808614ccc90f45f5bb8833c0c4d5ded7.png

8 X/ }1 s1 X9 x$ o4 u# G3 }: h& B' P( _% u" }3 M. j; v$ C) s9 p
关于HALF模式的原理就介绍到这里,下面就使用STM32G474RE的Nucleo开发板演示下实现过程,主要是软件配置,硬件没啥要处理的,有块开发板就行。
2 F: w8 O, A1 ^) k* b' t3 U8 q. p' P8 i2 a" {
9fb0e153afce61810bb409f94a4994e0.png
$ s& Y8 \5 L3 B9 O. X

+ L3 Q3 H  p) u  A7 t/ W先使用STM32CubeMx进行配置【其它RCC等的配置此处就不说了】。% h# _7 Y% Q: @  g; `
8 U4 |+ r3 u& V0 B; `' I$ m
4460249ac1fc05a1777bd130ef283448.png
/ g3 x; k6 S( w0 g6 @7 u1 P

& B1 P; u  H# b2 s下面截图橙色框中的配置是必须的,有关定时器的时间参数我随便配置的,毕竟这里只是演示一下功能。2 `6 s) n$ ~1 @' {! H8 X

+ M* N/ A3 ?( _+ C
0710b542946312b5ce1c483be1ad5e3d.png

( l; L6 o) @) V' v# b: [3 V" x* k! I# ]! P9 H% `; h! P' y( d
这里的比较单元1必须使能,使能即可,无须参数配置。
! z' A. s* C% a* _# L, x# f0 Q+ P* s+ r1 L7 p  W0 p
456cf41ee55b528de4505cc838f4aff0.png
9 o) M; C( M5 ?

3 W' E" P' h% a/ J5 j下面关于TA1/TA2输出的配置,也是必须的关键配置。
' x5 `) g0 ~  f0 `+ b1 B
7 A' [) a' Q& g, K0 W& g( c
3771ff10d27e6e8491f23a004e708233.png
5 M- K  V" r* `

& r8 j+ k7 z/ q. X* j0 q至于定时器的其它配置,保持默认即可。配置完成后,生成初始化代码,然后加入合适的用户代码。8 @; M  P. p% q  h
) u9 {  `6 s2 ~$ X; F& O. F. k: P& q% O
HAL_HRTIM_WaveformCountStart(&hhrtim1, HRTIM_TIMERID_TIMER_A);7 R8 c5 L, g! O
& c+ R# U4 v/ t" D2 _$ h- ~1 t1 V
; m* T" X% O  I6 W7 B

4 i  a6 }- X* w3 V: m* Q3 w  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA1);) C0 t; E  \4 U6 n7 u$ J9 g

( p: y. `, S: Y, G' O- k  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA2);4 a- ^% ]! q- R0 i/ _- H" Q  U

8 j" X1 ~: z5 H5 D5 ?) ]4 X+ t' _3 d3 X2 e! W8 c0 U$ B5 }
编译运行看结果:
) l% \0 h; u5 ?- m* z  b! U9 Z1 U
0 P* O0 s' Z) u$ I+ p% k
647065895cf34eb2b894b34b9b135da9.png
7 Z0 Q$ ^  a8 K' y, t* j

6 w9 S0 N/ ?: i因为我把TA1/TA2极性选择是相反的,所有此时输出的是两路互补波形,如果二者极性选择一致,输出的就是两路占空比为50%的相同波形。
, W1 Q& q. L3 d! H. r/ x: C: L% Q+ B" \/ N2 C4 ?' I

3 V3 b9 Z7 c% K) v5 I# i, k/ q
# Q  T+ T0 Z1 v8 a) Q
收藏 评论0 发布时间:2021-12-8 22:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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