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

STM32G4高精度定时器的HALF输出模式示例

[复制链接]
STMCU小助手 发布时间:2021-8-17 10:03
1.png , M0 Q! `3 u4 v+ x9 y. q- l
# r8 y* y: z& V* l' A4 I
) n- n' E$ Y0 k& ]
有人想使用STM32G474芯片做Half模式的PWM输出,发现有点问题,明明配置了定时器A的两路输出, 结果总是只有1路输出。这里简单演示下实现过程。【顺便提醒下,并非STM32G4全系列都内置高精度定时器】& U; C0 B% k  r4 U% E
  a+ v4 L% N& h3 J% h" y) Q5 P
1 n5 p; f) F5 I# y7 x6 |; w5 d3 o
所谓Half模式就是指硬件基于给定的计数周期值自动输出占空比为50%的方波,用户无须对比较寄存器的值再进行设置,这里硬件默认使用比较寄存器1【cmp1】,硬件自动将用户设置的PERIOD值的一半赋给CMP1寄存器。换言之,用户此时无法对CMP1寄存器进行赋值。, M' Z9 X/ h3 L. o
; Y& q( ^/ t2 K0 L5 v; X
. i/ _; n0 H7 s1 g  I& f; e4 M& y
另外,对于输出配置必须使用CMP1比较事件和定时器的Period周期事件。
+ Q9 I1 y  U" ` 2.png
1 ?9 Y6 n2 V0 e/ i0 \
3 J  l/ |3 L1 f! G0 l2 u0 _
. Z6 t8 Y8 s4 S
关于HALF模式的原理就介绍到这里,下面就使用STM32G474RE的Nucleo开发板演示下实现过程,主要是软件配置,硬件没啥要处理的,有块开发板就行。+ s4 F* ^& @: C# t. S1 z& K
3.png % d7 j  R, {2 X: o0 y0 a5 R
& v1 Q6 K$ D+ j4 Y6 z

/ K, Z) `: ^$ {# V, e+ v先使用STM32CubeMx进行配置【其它RCC等的配置此处就不说了】。
! ^, c% o; o; D; a+ q" @2 @. s$ x 4.png ( ^- z. F- q( [( n/ _, s

  b: |/ B) g! H, R! C& d; I  W
5 t( R: o9 N' s, S; S
下面截图橙色框中的配置是必须的,有关定时器的时间参数我随便配置的,毕竟这里只是演示一下功能。8 g, F; n  p" u8 z* `
5.png + ?4 t; V5 a5 g" `$ z

8 d# B0 e5 w) J" y- g- X: Y: I; @

9 a. T6 x8 S9 Q! e这里的比较单元1必须使能,使能即可,无须参数配置。- a' t. [+ H2 }; t/ ?3 Y+ p8 n
6.png # J' a& o8 n$ {/ x6 D$ D  u
/ E( n( b3 P1 J( R1 |7 p# M  j1 |

/ O8 H8 O! e' S2 y, J$ b; U; ~下面关于TA1/TA2输出的配置,也是必须的关键配置。, n0 Z1 A8 l! o' u
7.png 3 I5 c  |5 C5 A" L
8 y8 z6 I  A/ `$ V# o8 [

$ C4 A/ ~$ y$ V' O! A6 X2 `至于定时器的其它配置,保持默认即可。配置完成后,生成初始化代码,然后加入合适的用户代码。8 P! k5 U; R1 s4 S
: u' v7 J  A; n$ g+ R. K

3 }. X( N7 ^: E" |) K HAL_HRTIM_WaveformCountStart(&hhrtim1, HRTIM_TIMERID_TIMER_A);
. @) Z7 e2 h- W5 f  o/ S3 c# Q
7 X* }4 a/ s! Y0 Z8 V9 B& Q+ U
. s; e& \4 B- C6 [8 q* P
  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA1);+ u& z+ w& p* g8 }
* B7 K, g: C# d+ `3 u& q1 Z

$ p- N* v) g0 W  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA2);3 k7 H! n) k+ r: k+ _4 \
% m5 |' C% B: S; }" u
9 v- q& I  D' m3 i: P  n9 q) n
编译运行看结果:$ `7 E& f5 A/ {
8.png
% b# [. V, x; v! z; l& j0 }" q& Z- z6 F

3 x* m$ o: N7 [因为我把TA1/TA2极性选择是相反的,所有此时输出的是两路互补波形,如果二者极性选择一致,输出的就是两路占空比为50%的相同波形。
1 {  s/ }3 S) f( [! j7 S5 E4 _, ?
9 @2 T8 X+ I# F  H0 t" o/ d

0 W$ u7 Q' u5 Y* T1 }7 M% W" ]( a & a) C+ V7 _2 G4 F1 V+ Z
赞 收藏 评论0 发布时间:2021-8-17 10:03

举报

0个回答

所属标签

相似技术帖

官网相关资源

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