动态调整PWM输出频率和比较值(占空比)

__HAL_TIM_SET_AUTORELOAD(&htim3, (1000000 / freq) - 1);//设置定时器 TIM3 的周期(即 PWM 信号的频率)

在cube中设定时器通道TimxChy的PSC为80-1,ARR为1000-1,CCR为500(TIMx->CCRy=500)

定时器 TIM3 的时钟源为 1MHz(即每秒计数 1,000,000 次)

每个计数的时间为 1 / 1,000,000 = 1μs(1 微秒)

T=(ARR+1)*计数时间=1/f

----------->ARR=(1000000/f)-1

  • 如果定时器实际时钟不是 1MHz,需调整公式中的 1,000,000。
  • 例如时钟为 84MHz,则公式应为 84,000,000 / freq - 1。
  • 如果频率过高导致 ARR 值超出寄存器范围(如 16 位定时器最大 ARR=65535),需限制频率下限

__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_2, 0.1*(__HAL_TIM_GET_AUTORELOAD(&htim3)+1));

__HAL_TIM_GET_AUTORELOAD(&htim3):获取当前 ARR 值(即上一步设置的 ARR)

+1:将 ARR 转换为总步数(因为 ARR 是最大值,实际周期是 ARR+1)

占空比:CCR/(ARR+1)

---------------->CCR/(ARR+1)=0.1(设置占空比为10%)-------->CCR=0.1*(ARR+1)

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐