有人想使用STM32G474芯片做Half模式的PWM输出,发现有点问题,明明配置了定时器A的两路输出, 结果总是只有1路输出。这里简单演示下实现过程。【顺便提醒下,并非STM32G4全系列都内置高精度定时器】
所谓Half模式就是指硬件基于给定的计数周期值自动输出占空比为50%的方波,用户无须对比较寄存器的值再进行设置,这里硬件默认使用比较寄存器1【cmp1】,硬件自动将用户设置的PERIOD值的一半赋给CMP1寄存器。换言之,用户此时无法对CMP1寄存器进行赋值。
另外,对于输出配置必须使用CMP1比较事件和定时器的Period周期事件。
关于HALF模式的原理就介绍到这里,下面就使用STM32G474RE的Nucleo开发板演示下实现过程,主要是软件配置,硬件没啥要处理的,有块开发板就行。
先使用STM32CubeMx进行配置【其它RCC等的配置此处就不说了】。
下面截图橙色框中的配置是必须的,有关定时器的时间参数我随便配置的,毕竟这里只是演示一下功能。
这里的比较单元1必须使能,使能即可,无须参数配置。
下面关于TA1/TA2输出的配置,也是必须的关键配置。
至于定时器的其它配置,保持默认即可。配置完成后,生成初始化代码,然后加入合适的用户代码。
HAL_HRTIM_WaveformCountStart(&hhrtim1, HRTIM_TIMERID_TIMER_A);
HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA1);
HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA2);
因为我把TA1/TA2极性选择是相反的,所有此时输出的是两路互补波形,如果二者极性选择一致,输出的就是两路占空比为50%的相同波形。
关键字:PWM输出
引用地址:
使用STM32G474芯片做Half模式的PWM输出
推荐阅读最新更新时间:2024-11-04 05:14
PIC32MX250F128B简单PWM输出
/********************************************************************* * * PIC32MX PWM demo * ********************************************************************* * FileName: pwm demo.c * Dependencies: plib.h * * Processor: PIC32MX * * Complier: MPLAB XC32 * MPLAB-X IDE * Company:
[单片机]
C8051F单片机PWM输出程序
//PWM输出脚P0.3 //----------------------------------------------------------------------------- // Includes //----------------------------------------------------------------------------- #include // SFR declarations #include #include //----------------------------------------------------------------------------- // Fun
[单片机]
MSP432E401Y-时钟输出PWM
关于时钟的PWM配置以及相关寄存器翻译在上篇文章中已经写过了,不做更多的描述。有问题移步MSP432E401Y-用定时器中断控制LED闪烁_丢萌的博客-CSDN博客。 MSP432E401Y自带的PWM口的输出会在下一篇详细翻译以及介绍。 关于定时器输出PWM的定义方式其实和中断差不多,具体的寄存器操作大同小异。这次参考了官方库修改系统频率(120兆HZ)然后用于生成2KHZ的PWM波,占空比为66% 具体代码如下 /* DriverLib Includes */ #include ti/devices/msp432e4/driverlib/driverlib.h /* Standard Includes */
[单片机]
用TIM的PWM输出模式写一个步进电机的Stepper库函数
这是之前写平衡小车时自己用 TI M的PWM输出模式写了一个 步进电机 的Stepper库函数。 1 调用顺序 1.1 init函数 1.2 begin函数 1.3 setSpeed函数 2 Stepper类结构 3 TIM结构框图 Stm32手册中的结构框图很重要,只要理解了外设的运行逻辑,按照逻辑一步一步给寄存器设值就可以让外设按我们的要求运行。 #ifndef __STEPPER_H #define __STEPPER_H #include peripheral.h #include math.h #ifdef __cplusplus extern C { #endif
[嵌入式]
用FPGA实现多路PWM输出的接口设计与仿真
引言 在许多嵌入式系统的实际应用中,需要扩展FP-GA(现场可编程门阵列)模块,将CPU实现有困难或实现效率低的部分用FPGA实现,如数字信号处理、硬件数字滤波器、各种算法等,或者利用FPGA来扩展I/O接口,如实现多路PWM(脉宽调制)输出、实现PCI接口扩展等。通过合理的系统软硬件功能划分,结合优秀高效的FPGA设计,整个嵌入式系统的效率和功能可以得到最大限度的提高。
在电机控制等许多应用场合,需要产生多路频率和脉冲宽度可调的PWM波形。本文用Altera公司FPGA产品开发工具QuartusⅡ,设计了6路PWM输出接口,并下载到FPGA,实现与CPU的协同工作。
1 FPGA概述
PLD(可编程逻辑器件
[嵌入式]
STM32CubeMX(Keil5)开发之路——7输出PWM
运行环境 Windows10 STM32CubeMX___Version 5.0.0 Keil5(MDK5)___Version 5.15 简介 本例程主要讲解如何设置PWM这只输出4路PWM信号 STM32CubeMx基本配置 基础配置过程请参考 STM32CubeMx(Keil5)开发之路—配置第一个项目 STM32CubeMx PWM配置 1——点击TIM2进行设置 2——4个Channel都选择 “PWM Generation CHx” 选项 3——预分频值填72-1即71 4——自动重装载值设置为100-1也就是99 5——会看到相应的输出管脚PA0——PA3就是PWM的输出管脚 讲解:PWM波的频率=时钟频率/
[单片机]
STM32 PWM 输出
简介:脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。STM32 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。 而通用定时器也能同时产生多达 4路的 PWM 输出,这样,STM32 最多可以同时产生 30 路 PWM 输出!首先要提到的是,PWM 相关的函数设置在库函数文件 stm32f10x_tim.h 和 stm32f10x_tim.c文件中。 1)开启 TIM
[单片机]
STM32CubeMX之定时器PWM输出
脉冲宽度调制模式(PWM)可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号。 本示例实现 IO 输出模式–PWM 波形输出。 以 LED 驱动为例, 使用定时器高级功能(PWM 模式), 实现呼吸灯效果。 1.硬件接口 本硬件平台有3个LED灯分别为LED2、LED3、LED4LED2接PA1,LED2接PB8,LED4接PB9,硬件原理图如下: 根据STM32引脚定义手册或者STM32CUbeMX软件我们可得知定时器4的CH1和CH2对应外部引脚PB8和PB9。 2 软件设计 打开STM32CubeMX工具,配置定时器4,将PB8配置为定时器4通道3(复用推挽输出),P
[单片机]