基于CubeMX(hal库)stm32中hrtim高分辨率定时器的基本使用(自存)

文章介绍了如何使用CubeMX配置STM32的HRTIM,以实现单/双通道PWM输出。主要步骤包括选择通道、配置TimerA~F,设置比较值和占空比,以及通过HAL库控制PWM的启停。代码示例展示了如何改变PWM的频率和占空比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于CubeMX(hal库)stm32中hrtim高分辨率定时器的基本使用(自存)

一、CubeMX配置

1、选通道

单通道输出or双通道输出

在这里插入图片描述

2、Timer A~F配置

(Master Timer不用管)
在这里插入图片描述

比较值Compare
个人感觉跟CCR差不多的意思,注意不要大于上面的Period就行
在这里插入图片描述

设置上升沿和下降沿时间:
若想让上设Compare=CCR如图设置即可
即在计数到Compare1时拉低,计数溢出时拉高
所以上图输出频率10kHz占空比25%的互补PWM波
Set/Reset Sourcee Selection设置有几个源可以决定拉低拉高时间,有多个源还可设置优先级

在这里插入图片描述

下面的Output 2 Configuration我设置了互补输出直接不管
若是独立输出如上设置即可


博主仅学到这里,其他的设置默认都没有改
主要是为了输出更高频率的PWM所以很多高级功能都没有用上



二、keil代码

初始化中打开输出:

HAL_HRTIM_WaveformCounterStart(&hhrtim1, HRTIM_TIMERID_TIMER_A);
HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA1|HRTIM_OUTPUT_TA2);

改变初设的一些值:

hhrtim1.Instance->sTimerxRegs[0].PERxR = 50000;//通过修改重装载值PER,从而修改PWM的频率

hhrtim1.Instance->sTimerxRegs[0].CMP1xR = 1000;//通过修改比较值CMP,从而修改占空比

ps:sTimerxRegs对应A~F:

sTimerxRegs[0]---->TimerA
sTimerxRegs[1]---->TimerB
sTimerxRegs[2]---->TimerC
sTimerxRegs[3]---->TimerD
sTimerxRegs[4]---->TimerE

关闭PWM输出:

HAL_HRTIM_WaveformCountStop(&hhrtim1, HRTIM_TIMERID_TIMER_E);

如有错漏欢迎指正!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值