当前位置:   article > 正文

HAL PWM 配置 占空比 频率 stm32 学习笔记

HAL PWM 配置 占空比 频率 stm32 学习笔记

title: HALPWM配置占空比频率
tags:

  • STM32
  • Clion
  • Hal

1.STM32CubeMX学习笔记(13)——PWM输出(呼吸灯)使用

2.STM32标准库+HAL库 | 高精度动态调节PWM输出频率+占空比

41690c209abb74b830586107a34589d9
5deea5ca89951eb3f7a346bb02f18061
0c929cbae85d4ee5526606dffe4831fa

看你cubemx 里面的配置时钟频率是多少

参照第二篇文章描述修改 下面俩个参数就行

uint16_t prescaler
uint64_t tim_clk_freq 
  • 1
  • 2

20240506162512

void set_pwm_param(TIM_HandleTypeDef htim, uint32_t Channel, uint32_t freq, uint16_t duty)
{
    uint16_t prescaler = 72-1;
    uint64_t tim_clk_freq = 72000000;
    //计算PWM频率,所对应的自动重装载   ---> ARR = 主频 / (预分�?+1) / 预期PWM频率(Hz) - 1
    float pwm_freq_arr  = (tim_clk_freq * 1.0) / (prescaler+1) / freq * 1.0 - 1;
    //计算PWM占空比,对应比较寄存器的 ---> CCR = 预期占空�? * (自动重装载�??+1)
    //占空比则由捕/比较寄存器(TIMx_CRx)寄存器决定。占空比:duty = Pluse / (ARR+1)
    float pwm_duty_pulse = duty * 1.0 / 100 * (pwm_freq_arr + 1);

    //配置PSC预分频
    __HAL_TIM_SET_PRESCALER(&htim, prescaler);
    //配置PWM频率 ARR
    __HAL_TIM_SetAutoreload(&htim, (uint16_t)pwm_freq_arr);
    //配置PWM占空比
    __HAL_TIM_SetCompare(&htim, Channel, (uint16_t)pwm_duty_pulse);
//    printf("pwm_freq_arr:%.2f\r\n", pwm_freq_arr);
//    printf("pwm_duty_pulse:%.2f\r\n", pwm_duty_pulse);
}

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

参考链接

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/570370
推荐阅读
相关标签
  

闽ICP备14008679号