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

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

[复制链接]
STMCU小助手 发布时间:2021-12-8 22:00
有人想使用STM32G474芯片做Half模式的PWM输出,发现有点问题,明明配置了定时器A的两路输出, 结果总是只有1路输出。这里简单演示下实现过程。【顺便提醒下,并非STM32G4全系列都内置高精度定时器】
$ A+ b  D1 o) S: Z  r! h$ H  Q0 ~. c3 M
所谓Half模式就是指硬件基于给定的计数周期值自动输出占空比为50%的方波,用户无须对比较寄存器的值再进行设置,这里硬件默认使用比较寄存器1【cmp1】,硬件自动将用户设置的PERIOD值的一半赋给CMP1寄存器。换言之,用户此时无法对CMP1寄存器进行赋值。* O. U7 e* P% s' c) R
( U3 u" J# L7 w: Z1 {
另外,对于输出配置必须使用CMP1比较事件和定时器的Period周期事件。
8 b1 S" S4 T+ u; K/ D; M- Z+ f
$ n2 h/ m  S/ l7 e7 c# ?# f
808614ccc90f45f5bb8833c0c4d5ded7.png

$ I/ r' z! T; _0 Q- H: _, w8 J: v! t5 z' |3 |2 [2 I& o
关于HALF模式的原理就介绍到这里,下面就使用STM32G474RE的Nucleo开发板演示下实现过程,主要是软件配置,硬件没啥要处理的,有块开发板就行。2 A+ G% U1 a0 t- a9 s# g& ]0 o
3 E8 [2 b3 b: z) I, a
9fb0e153afce61810bb409f94a4994e0.png

1 a; |, h% i" D: U- I3 t8 Q7 N; d% v
先使用STM32CubeMx进行配置【其它RCC等的配置此处就不说了】。* x7 g) b/ L& T: G
/ b0 Z8 f3 r( c4 V4 d' Y1 t5 D
4460249ac1fc05a1777bd130ef283448.png
. J( G  u' m# j) V% l
! n) g; G- i; l- J3 a1 s
下面截图橙色框中的配置是必须的,有关定时器的时间参数我随便配置的,毕竟这里只是演示一下功能。
' n0 Z( y" y* H) q- o/ w$ C; H7 l( C6 N( w* z0 j
0710b542946312b5ce1c483be1ad5e3d.png
* P3 Y# ^+ ?- K1 [: ^* A7 Q; Y- l
# l2 C* E" |7 ?& P
这里的比较单元1必须使能,使能即可,无须参数配置。3 M) _) G, S  h' A5 u0 Q; m

+ @& e% M/ m/ E8 O" J/ r7 }
456cf41ee55b528de4505cc838f4aff0.png

# t1 R- w' U- [2 d( ^
$ V0 u; r( e: c下面关于TA1/TA2输出的配置,也是必须的关键配置。- D* ]. E  w/ |( o
6 n9 z) V! L1 v* H, V+ G
3771ff10d27e6e8491f23a004e708233.png

, P, h& M7 }9 [* q! X
( e6 a8 Z8 x* m- Q3 |6 ~至于定时器的其它配置,保持默认即可。配置完成后,生成初始化代码,然后加入合适的用户代码。' {* t4 U' J7 B; `; s

' D8 i% L' L- r5 X3 i HAL_HRTIM_WaveformCountStart(&hhrtim1, HRTIM_TIMERID_TIMER_A);
, W, o- Q( A% X; F9 t1 F- t5 g: D9 R  X2 x0 r# Y1 f  J+ S

. j, W9 U7 ?& v& l. x! Q2 _* G5 R( [4 ^
  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA1);% w: t3 [5 ]5 p9 I! [9 e
) M1 q  e7 {" T5 h0 N9 [
  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA2);' K% W/ K+ M' l: E4 e4 o3 E$ j1 G

, U0 S) F$ C3 j4 E
+ k6 k) K. v! L; Q+ A' }4 K# n编译运行看结果:
( m. h7 ?5 U- H+ ^( T4 t+ D  }- n! G4 e3 U5 b/ U# v9 V$ ?
647065895cf34eb2b894b34b9b135da9.png
1 e$ \+ |0 Q% U2 M, r) i5 D
2 p; d; g7 W( H
因为我把TA1/TA2极性选择是相反的,所有此时输出的是两路互补波形,如果二者极性选择一致,输出的就是两路占空比为50%的相同波形。4 w. l, c, w& P0 J

* l9 ?: m, `' w( u2 |' S, T( j8 z! f) T% G

7 T; c/ g! t( h- ?) N; I# i- z) i
赞 收藏 评论0 发布时间:2021-12-8 22:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版