动态调整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)

&spm=1001.2101.3001.5002&articleId=154654974&d=1&t=3&u=b23034185d774f1d91fbc9e84b984dbf)
549

被折叠的 条评论
为什么被折叠?



