STM32F103C6T6(中等容量)所有定时器的引脚分配表
以下是 STM32F103C6T6(中等容量)所有定时器的引脚分配表,按定时器类型分类,并标注默认功能和复用选项:
📌 定时器引脚分配表(STM32F103C6T6)
1. 高级定时器 (TIM1)
| 通道 | 主引脚 | 默认功能 | 部分重映射 | 完全重映射 |
|---|---|---|---|---|
| TIM1_CH1 | PA8 | PWM输出 | - | - |
| TIM1_CH2 | PA9 | PWM输出/USART1_TX | - | - |
| TIM1_CH3 | PA10 | PWM输出/USART1_RX | - | - |
| TIM1_CH4 | PA11 | PWM输出/USB_DM | - | - |
| TIM1_BKIN | PB12 | 刹车输入 | - | - |
⚠️ 注意:TIM1 的 PA9/PA10 默认与 USART1 复用,需避免冲突。
2. 通用定时器 (TIM2/TIM3/TIM4)
TIM2(32位定时器)
| 通道 | 主引脚 | 默认功能 | 部分重映射 |
|---|---|---|---|
| TIM2_CH1 | PA0 | PWM输出/WKUP | PA15 (需重映射) |
| TIM2_CH2 | PA1 | PWM输出/ADC1_IN1 | - |
| TIM2_CH3 | PA2 | PWM输出/USART2_TX | - |
| TIM2_CH4 | PA3 | PWM输出/USART2_RX | - |
TIM3
| 通道 | 主引脚 | 默认功能 | 部分重映射 | 完全重映射 |
|---|---|---|---|---|
| TIM3_CH1 | PA6 | PWM输出 | PB4 (需重映射) | PC6 (仅大容量型号) |
| TIM3_CH2 | PA7 | PWM输出 | PB5 | PC7 |
| TIM3_CH3 | PB0 | PWM输出 | PB6 | PC8 |
| TIM3_CH4 | PB1 | PWM输出 | PB7 | PC9 |
TIM4
| 通道 | 主引脚 | 默认功能 | 部分重映射 |
|---|---|---|---|
| TIM4_CH1 | PB6 | PWM输出 | PD12 (仅大容量型号) |
| TIM4_CH2 | PB7 | PWM输出 | PD13 |
| TIM4_CH3 | PB8 | PWM输出 | PD14 |
| TIM4_CH4 | PB9 | PWM输出 | PD15 |
🔍 重映射说明:
- 使用
GPIO_PinRemapConfig()启用重映射(需先开启 AFIO 时钟)。- 部分重映射仅改变部分通道引脚,完全重映射需芯片支持(STM32F103C6T6不支持完全重映射)。
3. 基本定时器 (TIM6/TIM7)
- TIM6/TIM7:无PWM输出功能,仅用于定时中断或触发DAC,无专用引脚。
📌 关键注意事项
-
复用冲突:
- PA9/PA10(TIM1_CH2/CH3)默认与 USART1 复用,需避免同时启用。
- PB3/PB4(TIM3_CH1/CH2重映射)默认是JTAG引脚,需禁用JTAG:
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); // 禁用JTAG,保留SWD
-
时钟使能:
- 定时器时钟:
- TIM1/2/3/4 →
RCC_APB1PeriphClockCmd()(TIM1在APB2) - TIM6/7 →
RCC_APB1PeriphClockCmd()
- TIM1/2/3/4 →
- GPIO时钟:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx | RCC_APB2Periph_AFIO, ENABLE)
- 定时器时钟:
-
PWM频率计算:
[
f_{PWM} = \frac{72MHz}{(PSC + 1) \times (ARR + 1)}
]
📝 示例代码(TIM3_CH1 PWM输出)
// 启用TIM3和GPIOA时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
// 配置PA6为复用推挽输出
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStruct);
// 配置TIM3 PWM(1kHz频率,50%占空比)
TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct;
TIM_TimeBaseStruct.TIM_Period = 999; // ARR = 999
TIM_TimeBaseStruct.TIM_Prescaler = 71; // PSC = 71 (72MHz/72=1MHz)
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStruct);
TIM_OCInitTypeDef TIM_OCInitStruct;
TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStruct.TIM_Pulse = 500; // CCR1 = 500 (50%占空比)
TIM_OC1Init(TIM3, &TIM_OCInitStruct);
TIM_Cmd(TIM3, ENABLE);
🔧 验证方法
- 硬件连接:PA6 → LED → GND(串联220Ω电阻)。
- 示波器:测量PA6波形,确认是否为1kHz方波。
- 动态调光:修改
TIM3->CCR1值(0~999)观察亮度变化。
🚨 常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 无PWM输出 | GPIO模式错误 | 检查是否为 GPIO_Mode_AF_PP |
| 引脚无反应 | 未启用定时器时钟 | 调用 RCC_APB1PeriphClockCmd() |
| 频率不正确 | ARR/PSC计算错误 | 重新计算周期和分频值 |
🎯 总结
- TIM1:高级功能(互补输出、刹车),引脚固定。
- TIM2/3/4:灵活PWM输出,支持部分重映射。
- TIM6/7:无引脚,仅用于定时。
- 关键点:复用冲突、时钟使能、重映射配置。
按此配置可充分利用STM32F103C6T6的定时器资源! 🚀

浙公网安备 33010602011771号