码字不易,点个赞在看吧(如果能关注就更好了)
文章如有错误,更欢迎各位大佬指出,谢谢啦
TIM_CounterMode = TIM_CounterMode_Up
(向上计数)时,CNT的值会依次递增,直至达到ARR+1
,然后归零,再从0依次递增,不断循环。TIM_OCPolarity = TIM_OCPolarity_High
,及当CNT(0~29)给一个惯性系统反复有规律的间断上电,那么它会匀速运行
TIM_OCInitTypeDef TIM_OCInitStructure;
结构体配置为例讲解重要部分,所有配置代码见下篇文章,下列回答结合AI做出)在 STM32 的 PWM(脉宽调制) 生成过程中,TIM_OCInitTypeDef
结构体用于配置 定时器的输出比较通道(OC,Output Compare),决定了 PWM 信号的输出特性。
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_OCInitTypeDef
是 STM32 标准外设库(StdPeriph Library)提供的一个结构体,专门用于 定时器输出比较(OC) 配置。接下来,我们逐行解析结构体的各个参数:
TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCMode_PWM1
:
<
CCR
(比较值)时,输出 高电平。≥
CCR
时,输出 低电平。TIM_OCMode_PWM2
:
<
CCR
时,输出 低电平。≥
CCR
时,输出 高电平。总结:
- PWM1:高电平持续时间 =
CCR
,适用于常见的 占空比控制。- PWM2:与 PWM1 相反,一般用于 反相 PWM 信号。
TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCPolarity_High
(默认):
0 → 1
时输出高电平,1 → 0
时输出低电平(普通情况)。TIM_OCPolarity_Low
:
0 → 1
时输出低电平,1 → 0
时输出高电平(反向)。总结:
TIM_OCPolarity_High
→ 正常 PWM(默认)。TIM_OCPolarity_Low
→ 反向 PWM(当需要反相信号时)。
TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OutputState_Enable
→ 开启输出TIM_OutputState_Disable
→ 关闭输出总结:如果
TIM_OutputState_Disable
,即使定时器运行,PWM 信号也不会输出到 GPIO。
TIM_Pulse = 50;
TIM_OCInitStructure.TIM_Pulse = 50;
CCR
决定 PWM 信号高电平持续的时间:
TIM_Pulse = CCR
代表 PWM 的高电平时间。CCR
(TIM_Pulse) → 高电平持续时间ARR
(自动重装值) → PWM 周期例如:
ARR = 100
,CCR = 50
,则:
ARR
和 PSC
(预分频器)决定。总结:
CCR
控制 PWM 占空比,调整CCR
值可以 动态改变 PWM 输出强度(如 LED 亮度、电机速度)。
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; // PWM 模式 1
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; // 正常极性
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; // 使能 PWM 输出
TIM_OCInitStructure.TIM_Pulse = 50; // 占空比 50%(CCR = 50)
TIM_OC3Init(TIM2, &TIM_OCInitStructure); // 这里是 TIM2 的通道 3
TIM_OC3Init(TIM2, &TIM_OCInitStructure);
配置项 | 作用 | 可能取值 |
---|---|---|
TIM_OCMode |
选择 PWM 模式 | TIM_OCMode_PWM1 (正向) / TIM_OCMode_PWM2 (反向) |
TIM_OCPolarity |
PWM 极性 | TIM_OCPolarity_High (默认) / TIM_OCPolarity_Low |
TIM_OutputState |
是否使能 PWM 输出 | TIM_OutputState_Enable (输出) / TIM_OutputState_Disable (关闭) |
TIM_Pulse |
控制 PWM 占空比 | CCR (单位:计数值) |
TIM_Pulse
(CCR
),改变 LED 亮度:PWM_SetCompare3(80); // 80% 亮度
CCR
设定角度:PWM_SetCompare3(7); // 舵机旋转至 90°
CCR
控制转速:PWM_SetCompare3(30); // 30% 占空比,低速运行
TIM_OCInitTypeDef
是 STM32 定时器输出比较(OC) 结构体,专门用于 PWM 配置。TIM_OCMode_PWM1
设定 正向 PWM,PWM 高电平时长 = CCR
。TIM_OCPolarity_High
设定 普通极性,否则 PWM 反向。TIM_OutputState_Enable
确保 PWM 信号真正输出。TIM_Pulse
(CCR) 决定 PWM 的占空比,从而控制 LED 亮度、电机转速等。** 综上, TIM_OCInitStructure
结构体就是用于配置 STM32 PWM 信号的关键参数,确保定时器正确输出 PWM 波形。**