STMCU小助手
发布时间:2021-12-8 22:00
|
有人想使用STM32G474芯片做Half模式的PWM输出,发现有点问题,明明配置了定时器A的两路输出, 结果总是只有1路输出。这里简单演示下实现过程。【顺便提醒下,并非STM32G4全系列都内置高精度定时器】 $ 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 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
: 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
! n) g; G- i; l- J3 a1 s 下面截图橙色框中的配置是必须的,有关定时器的时间参数我随便配置的,毕竟这里只是演示一下功能。 $ C; H7 l( C6 N( w* z0 j
# l2 C* E" |7 ?& P 这里的比较单元1必须使能,使能即可,无须参数配置。3 M) _) G, S h' A5 u0 Q; m
下面关于TA1/TA2输出的配置,也是必须的关键配置。- D* ]. E w/ |( o 6 n9 z) V! L1 v* H, V+ G
至于定时器的其它配置,保持默认即可。配置完成后,生成初始化代码,然后加入合适的用户代码。' {* t4 U' J7 B; `; s HAL_HRTIM_WaveformCountStart(&hhrtim1, HRTIM_TIMERID_TIMER_A); 1 F- t5 g: D9 R X2 x0 r# Y1 f J+ S & 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 编译运行看结果: }- n! G4 e3 U5 b/ U# v9 V$ ?
2 p; d; g7 W( H 因为我把TA1/TA2极性选择是相反的,所有此时输出的是两路互补波形,如果二者极性选择一致,输出的就是两路占空比为50%的相同波形。4 w. l, c, w& P0 J , T( j8 z! f) T% G |
经验分享 | 基于STM32G4芯片TIM+SPI+DMA应用示例
STM32G47x 双 Bank 模式下在线升级
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
【经验分享】STM32G4之基本定时器
NUCLEO-G474RE 扩展 LSM6DSO 传感器数据融合实操演示全解析
经验分享 | STM32G474 高精度定时器同步功能全解析 从内部互联到多芯片协同的实现方案
经验分享 | STM32G4双BANK启动应用演示
STM32G4 LPTIM+DMAMUX 实现并行输出应用示例
实战经验 | LAT1578 SAU对NSC分区的影响
经验分享 | STM32G474 HRTIM Triggered-half模式实现两相交错电源180°相位同步方案
微信公众号
手机版