文章目录
相关笔记:
STM32H743+CubeMX-定时器TIM输出PWM(Output Compare模式)
STM32H743+CubeMX-定时器TIM输出PWM(PWM Generation模式)
一、前言
PWM波形在实际工作上有非常广泛的使用,尤其在步进电机控制与LED阵列的控制。Cortex-M7架构增加了好几个低功耗定时器LPTIM,也可以用来产生PWM波。
LPTIM没有普通TIM的功能强大,主要的用途在于低功耗。
如下图所示,PWM波的频率是10kHz,占空比50%。
二、CubeMX
2.1、Clock Configuration
LPTIM2,LPTIM3等时钟源都是APB4总线,所以LPTIM2的工作频率是120M。
2.2、LPTIM2 Mode and Configuration
不勾选Waveform Generation的话,就没有分配GPIO口。
2.3、Parameter Settings
2.4、生成代码
三、代码
3.1、lptim.c
在函数MX_LPTIM2_Init(void)里添加用户代码,HAL_LPTIM_PWM_Start()开启PWM波输出,并设置ARR寄存器与CMP寄存器。
HAL_LPTIM_PWM_Start( )的第二个入口参数Period与第三个入口参数Pulse计算PWM波的频率与占空比。
PWM波的频率 = 120M / Period + 1 = 120M / 12000 = 10kHz
PWM波的占空比 = (Pulse + 1 / Period + 1) * 100% = (6000 / 12000) * 100% = 0.5 * 100% = 50%。
3.2、烧写代码
接着烧写代码,用示波器查看对应的GPIO口。
四、细节补充
- LPTIM与普通TIM调用的HAL库函数不一样,LPTIM调用HAL_LPTIM_PWM_Start()时需要设置PWM的频率与占空比,而普通TIM的HAL_TIM_PWM_Start()与HAL_TIM_OC_Start()只是打开某个通道的PWM输出。