阡陌 发表于 2024-1-1 01:37:18

STM32 定时器


## 预分频器(TIMx_PSC)

预分频器的值 PSC,计数器的时钟频率 CK_CNT 等于 fCK_PSC/(PSC+1)。也就是说 PSC 等于分频数 - 1。

## 自动重装载寄存器(TIMx_ARR)

自动重装载的值 ARR,用于作为计数器的初始值(向下计数)或溢出值(向上计数)。下图的 ARR 被设置为 0x36,溢出发生在计数值为 0x36 的后部,所以实际计数了 0x37 个数(从 0 开始)。所以 ARR 的值应该为 计数值 - 1。

![](https://file.mculoop.com/images/2024/01/01/202401010132753.png)

## PWM

**PWM 模式 1**

在向上计数时,一旦 TIMx_CNT < TIMx_CCR1 时通道 1 为有效电平,否则为
无效电平;在向下计数时,一旦 TIMx_CNT > TIMx_CCR1 时通道 1 为无效电平(OC1REF=0),否
则为有效电平(OC1REF=1)。

**PWM 模式 2**

在向上计数时,一旦 TIMx_CNT < TIMx_CCR1 时通道 1 为无效电平,否则为
有效电平;在向下计数时,一旦 TIMx_CNT > TIMx_CCR1 时通道 1 为有效电平,否则为无效电
平。

CC1P:输入/捕获 1 输出极性(Capture/Compare 1 output polarity)
CC1 通道配置为输出:
0:OC1 高电平有效TIM_OCPolarity_High
1:OC1 低电平有效TIM_OCPolarity_Low

例如:

```c
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //PMW模式1(向上计数时CNT < CCR2时输出低电平)
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = TIM_TimeBaseStructure.TIM_Period / 2; //50%占空比
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //低电平为有效电平
TIM_OC2Init(TIM2, &TIM_OCInitStructure);
```


页: [1]
查看完整版本: STM32 定时器