You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将STM32F103C6的PB6配置为PWM端口驱动舵机?

STM32F103C6 将PB6配置为PWM输出端口(舵机驱动适配)

核心结论

PB6在STM32F103C6上是TIM4_CH1的复用功能引脚,必须将原代码中的TIM2更换为TIM4来输出PWM。

具体操作步骤

1. 修改GPIO配置

替换原PA0的配置,开启GPIOB时钟并将PB6设为复用推挽输出:

// 开启GPIOB时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  // 复用推挽输出,适配PWM复用功能
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);

2. 修改定时器基础配置

将原TIM2的配置替换为TIM4(TIM4挂载在APB1总线,时钟开启方式不同):

// 开启TIM4时钟(APB1总线)
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
// 舵机需要50Hz PWM(周期20ms),基于72MHz系统时钟计算参数
// 预分频系数7199,计数周期199 → 72MHz/(7200*200) = 50Hz
TIM_TimeBaseStructure.TIM_Prescaler = 7199;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_Period = 199;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);

3. 修改PWM通道配置

替换原TIM2_CH1的配置为TIM4_CH1:

TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
// 舵机180度对应脉宽0.5ms-2.5ms,对应计数范围5-25(每计数单位10us)
TIM_OCInitStructure.TIM_Pulse = 15;  // 初始值对应90度中间位置
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC1Init(TIM4, &TIM_OCInitStructure);
TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);

4. 启动定时器

替换原TIM2的启动代码为TIM4:

TIM_Cmd(TIM4, ENABLE);

5. 调整舵机角度控制代码

将原控制TIM2_CH1脉宽的代码替换为TIM4_CH1:

// 替换原TIM_SetCompare1(TIM2, value)为以下代码
TIM_SetCompare1(TIM4, value);
// value取值范围5-25,对应舵机0-180度(5→0.5ms→0度,25→2.5ms→180度)

关键注意事项

  • STM32F103C6的TIM4为16位定时器,完全满足舵机PWM的精度需求
  • 必须确保PB6配置为复用推挽输出,普通IO模式无法输出PWM
  • 脉宽计算逻辑:预分频后每计数单位为10us,因此脉宽(ms) = value * 0.01ms

内容的提问来源于stack exchange,提问作者Pharaon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 19:20:31