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

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

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

9 _/ {- f) f* Y' Y所谓Half模式就是指硬件基于给定的计数周期值自动输出占空比为50%的方波,用户无须对比较寄存器的值再进行设置,这里硬件默认使用比较寄存器1【cmp1】,硬件自动将用户设置的PERIOD值的一半赋给CMP1寄存器。换言之,用户此时无法对CMP1寄存器进行赋值。
- @% t. }2 M. i8 I$ G
0 t/ w6 G/ |; b9 O1 O另外,对于输出配置必须使用CMP1比较事件和定时器的Period周期事件。# U" M! G  i" S' g, y

3 k6 C) I/ J. l6 @( l% q  c
808614ccc90f45f5bb8833c0c4d5ded7.png
/ D5 d, r2 N, t" i

6 |; z0 G9 u/ J( r' ?) a关于HALF模式的原理就介绍到这里,下面就使用STM32G474RE的Nucleo开发板演示下实现过程,主要是软件配置,硬件没啥要处理的,有块开发板就行。2 R+ G& G& n& ?9 g, P- m
# W, a! p( b  l6 z) Y1 v- E* C
9fb0e153afce61810bb409f94a4994e0.png

% |- }$ k" q& Y0 x( N1 ]8 M! i7 @7 ^  W* ^" K  `7 n6 v/ @* z
先使用STM32CubeMx进行配置【其它RCC等的配置此处就不说了】。3 L8 Q3 B6 d& t; U% [

1 m+ l2 v) o1 s& U4 A7 j! X3 s
4460249ac1fc05a1777bd130ef283448.png

; `# q& P; j+ q2 w9 ?/ P$ a7 r* K* s. o. {% d" l4 H8 o
下面截图橙色框中的配置是必须的,有关定时器的时间参数我随便配置的,毕竟这里只是演示一下功能。
8 r8 c7 C2 V" O# A( s3 v- \: {0 x1 ~6 {( R7 A! D
0710b542946312b5ce1c483be1ad5e3d.png
5 Y/ r* M. B" ?$ l* A5 ?6 k

, L- h: S# P4 Y" ?' _这里的比较单元1必须使能,使能即可,无须参数配置。
8 C/ N! L- ~# v" ?0 `- g! n7 ]: z  a8 N2 H; m/ _
456cf41ee55b528de4505cc838f4aff0.png

; Y4 a* m2 x( I
( a5 i" }; P* m( V/ W下面关于TA1/TA2输出的配置,也是必须的关键配置。! y6 I$ p) R7 ^! `/ F) h( T

3 k' C# f# |& n8 {( g  N+ [' k% q
3771ff10d27e6e8491f23a004e708233.png
8 x2 U0 I. \/ c
" H( {/ P6 {/ I# o# |
至于定时器的其它配置,保持默认即可。配置完成后,生成初始化代码,然后加入合适的用户代码。
/ |- [8 }! ^, r( H
. a' x0 \3 a$ r/ k2 F1 k+ [ HAL_HRTIM_WaveformCountStart(&hhrtim1, HRTIM_TIMERID_TIMER_A);) B( u$ b% N) B  a/ k
9 ]) k' G) j* v$ Z( g
. X2 ?- S% t8 {# f0 D
, I% s( X# j1 C
  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA1);
! I$ O! Q& z5 R' v: O: }
! }* J0 z! `5 c# r  HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA2);4 W7 ^- D( N. d! ^; @+ x9 F4 T

7 y" ~  H$ u0 ]# r
: L& L/ y# u8 Q3 ~+ W编译运行看结果:
0 ]- _5 F% O0 H6 b
( H0 d* r# I3 u
647065895cf34eb2b894b34b9b135da9.png
" F' E, Z& n, ]% ?( x5 s, G3 v
) F0 ]/ q$ n! _+ @2 c
因为我把TA1/TA2极性选择是相反的,所有此时输出的是两路互补波形,如果二者极性选择一致,输出的就是两路占空比为50%的相同波形。
' c1 L5 ^- k8 e! C' H" g
% r" a, {) X$ T4 K* x2 w  X9 Z1 A2 j, Y+ H0 @! @4 M% M
6 \7 ?2 A# |; w/ s3 B, V$ L
赞 收藏 评论0 发布时间:2021-12-8 22:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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