STM32F103ZETx使PWM波率大于60HZ ARR为255,计算PSC的数值
时间: 2024-10-20 12:05:42 浏览: 17
STM32F103单片机 PWM DAC实验(寄存器版)DEMO例程源码.zip
5星 · 资源好评率100%
STM32F103系列微控制器的PWM功能通常使用定时器来生成周期性的脉冲宽度调制信号。其中,ARR(自动重装载寄存器)存储了定时器的最大计数值,而PSC(预分频器系数)决定了基本时钟频率对PWM输出周期的影响。
如果想让PWM频率大于60Hz,你需要首先了解STM32F103ZETx的系统时钟速率。这通常是一个较高的速度,比如72MHz或更高。假设我们采用72MHz作为基本时钟(CLK_IN)。
公式通常是这样的:
```python
PWM频率 (Hz) = System Clock Frequency / (PSC + 1)
```
已知条件是:
- PWM频率 > 60 Hz
- ARR = 255(意味着最大计数值为256)
- 需要找到PSC使得上述条件满足
设PSC为X,则有:
\( 72 * 10^6 / (X + 1) > 60 \)
解这个不等式找出最小的X(因为PSC必须是非负整数),我们可以近似地求解它。由于60 Hz是一个较低的频率,对于一个72MHz的时钟来说,可能只需要很小的预分频系数就能达到目标。让我们计算一下:
\( X + 1 < 72 * 10^6 / 60 \)
\( X < 12000000 - 1 \)
\( X < 11999999 \)
所以PSC的最大值大约是11999998(考虑到实际操作中不能用最大的ARR值减去1)。这意味着你可以设置PSC为11999998(或其他稍小一点的数,如11999997),以确保得到超过60Hz的PWM频率。
阅读全文