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

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

[复制链接]
STMCU小助手 发布时间:2021-12-8 22:00
有人想使用STM32G474芯片做Half模式的PWM输出,发现有点问题,明明配置了定时器A的两路输出, 结果总是只有1路输出。这里简单演示下实现过程。【顺便提醒下,并非STM32G4全系列都内置高精度定时器】/ V$ [+ {! ]/ H2 ?
( }* [* p  Z) a8 Q0 O
所谓Half模式就是指硬件基于给定的计数周期值自动输出占空比为50%的方波,用户无须对比较寄存器的值再进行设置,这里硬件默认使用比较寄存器1【cmp1】,硬件自动将用户设置的PERIOD值的一半赋给CMP1寄存器。换言之,用户此时无法对CMP1寄存器进行赋值。6 o% a+ v& b) Y- J( w/ B2 ~0 x. C) Q6 o& p

# L8 j9 y: Y$ F. R: g0 W5 n另外,对于输出配置必须使用CMP1比较事件和定时器的Period周期事件。5 [5 k: {! K1 t, ?6 Z% O  ^

- S: J- O5 y2 }* J: ?
808614ccc90f45f5bb8833c0c4d5ded7.png

8 E4 L1 i- M! C. N' S3 L
1 W0 g0 z8 i; U4 D. B2 y" j  O关于HALF模式的原理就介绍到这里,下面就使用STM32G474RE的Nucleo开发板演示下实现过程,主要是软件配置,硬件没啥要处理的,有块开发板就行。6 \+ \- `4 G5 g5 _* I

, X7 Z, `4 D) z# _; |6 }- j
9fb0e153afce61810bb409f94a4994e0.png
" B- s" j/ b1 p( N' W

* E! s% p/ h. d0 {先使用STM32CubeMx进行配置【其它RCC等的配置此处就不说了】。
1 y1 g( p7 I) u4 L5 g7 R
/ V5 y( D7 B4 a
4460249ac1fc05a1777bd130ef283448.png
5 t" n' k6 E  ~/ D; }- ]' }! `

. b/ V! {2 w' C9 G& K; L9 G下面截图橙色框中的配置是必须的,有关定时器的时间参数我随便配置的,毕竟这里只是演示一下功能。
# o* |) w" F: K  S2 G1 }8 Z; Y2 ~
0710b542946312b5ce1c483be1ad5e3d.png
! n1 ^* H* F) L5 l4 b

9 u0 j5 y' a4 k* h  t/ s这里的比较单元1必须使能,使能即可,无须参数配置。
1 D( O) ]' l3 Q9 X4 y! Y& |0 @# Y. Y* X- ~1 F
456cf41ee55b528de4505cc838f4aff0.png
9 w+ k1 U3 X6 l
' U- x( M1 h! \% G
下面关于TA1/TA2输出的配置,也是必须的关键配置。
) G0 Z+ S" b: G4 f: I
' `0 }4 ], E+ v
3771ff10d27e6e8491f23a004e708233.png
1 m! ]6 D6 U' {: L1 X

9 x; m, F0 s" f5 A3 I至于定时器的其它配置,保持默认即可。配置完成后,生成初始化代码,然后加入合适的用户代码。8 A5 j) S( Z  y' b

0 a% Z8 f. I. p' i9 V1 I- c3 m# J HAL_HRTIM_WaveformCountStart(&hhrtim1, HRTIM_TIMERID_TIMER_A);* J% C4 c2 V  }! [

- `- u* S" E9 U- p" R
8 h; m1 E, D( }0 I2 _( m; r7 o/ h) T- Z: G
  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA1);
9 s. h) ^$ T" u3 Y$ E
% r8 N) ?5 M1 \' j  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA2);
$ T5 i: |2 }2 O  o; J( z
0 [, I. w; H$ H) N$ `2 M
# @, C! `* W. i  y$ n编译运行看结果:
  J4 e9 U( R4 @. O9 S/ F4 d5 G6 K7 {# J6 G# _
647065895cf34eb2b894b34b9b135da9.png
/ k9 l) \0 s  N% L
# h" N3 P1 }) E& T% ^5 k1 v5 g
因为我把TA1/TA2极性选择是相反的,所有此时输出的是两路互补波形,如果二者极性选择一致,输出的就是两路占空比为50%的相同波形。( f; M( c/ T; ]. G" |1 G% J% x
+ z5 U& h, a' S; }% K+ \
7 e8 X" `% g+ q2 A8 X5 w  h) D

2 ~( t6 Z1 _" |7 b( ?
收藏 评论0 发布时间:2021-12-8 22:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版