基于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);
如有错漏欢迎指正!