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 

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);
}

}

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值