stm32f103rct6pwm引脚定义表


STM32F103RCT6 PWM引脚定义表及详细功能解析
STM32F103RCT6是意法半导体(ST)推出的一款基于ARM Cortex-M3内核的32位微控制器,采用LQFP64封装,拥有64个引脚,其中大部分引脚支持复用功能,包括PWM(脉冲宽度调制)输出。PWM功能广泛应用于电机控制、LED调光、舵机驱动等领域,是嵌入式系统开发中不可或缺的功能模块。本文将详细解析STM32F103RCT6的PWM引脚定义、功能配置及使用方法,并结合实际案例说明其应用场景。
一、STM32F103RCT6 PWM功能概述
STM32F103RCT6内置了多个定时器,包括高级定时器(TIM1、TIM8)、通用定时器(TIM2~TIM5)和基本定时器(TIM6、TIM7)。其中,高级定时器和通用定时器均支持PWM输出功能,具体如下:
高级定时器(TIM1、TIM8):支持高级PWM模式(如互补输出、死区时间控制),适用于电机驱动等高精度应用。
通用定时器(TIM2~TIM5):支持标准PWM模式,适用于LED调光、舵机控制等常规应用。
PWM输出的核心参数包括:
预分频器(PSC):用于降低定时器时钟频率。
自动重装载值(ARR):决定PWM周期。
捕获比较寄存器(CCR):决定PWM占空比。
二、STM32F103RCT6 PWM引脚定义表
以下是STM32F103RCT6中支持PWM输出的引脚及其复用功能定义:
引脚编号 | 引脚名称 | 默认功能 | 复用功能(PWM相关) |
---|---|---|---|
PA0 | TIM2_CH1 | GPIO | TIM2通道1(PWM输出) |
PA1 | TIM2_CH2 | GPIO | TIM2通道2(PWM输出) |
PA2 | TIM2_CH3 | GPIO | TIM2通道3(PWM输出) |
PA3 | TIM2_CH4 | GPIO | TIM2通道4(PWM输出) |
PA6 | TIM3_CH1 | GPIO | TIM3通道1(PWM输出) |
PA7 | TIM3_CH2 | GPIO | TIM3通道2(PWM输出) |
PB0 | TIM3_CH3 | GPIO | TIM3通道3(PWM输出) |
PB1 | TIM3_CH4 | GPIO | TIM3通道4(PWM输出) |
PA8 | TIM1_CH1 | GPIO | TIM1通道1(高级PWM输出,支持互补输出) |
PA9 | TIM1_CH2 | GPIO | TIM1通道2(高级PWM输出,支持互补输出) |
PA10 | TIM1_CH3 | GPIO | TIM1通道3(高级PWM输出,支持互补输出) |
PB13 | TIM1_CH1N | GPIO | TIM1通道1互补输出(需配合TIM1_CH1使用) |
PB14 | TIM1_CH2N | GPIO | TIM1通道2互补输出(需配合TIM1_CH2使用) |
PB15 | TIM1_CH3N | GPIO | TIM1通道3互补输出(需配合TIM1_CH3使用) |
PC6 | TIM3_CH1 | GPIO | TIM3通道1(PWM输出,部分开发板可能复用为其他功能) |
PC7 | TIM3_CH2 | GPIO | TIM3通道2(PWM输出,部分开发板可能复用为其他功能) |
PC8 | TIM3_CH3 | GPIO | TIM3通道3(PWM输出,部分开发板可能复用为其他功能) |
PC9 | TIM3_CH4 | GPIO | TIM3通道4(PWM输出,部分开发板可能复用为其他功能) |
引脚复用说明
高级定时器(TIM1):
TIM1的通道1~3(PA8~PA10)支持高级PWM模式,可配置互补输出(如PA8与PB13配对,PA9与PB14配对,PA10与PB15配对),适用于三相无刷电机驱动等场景。
互补输出需配置死区时间,避免上下桥臂直通。
通用定时器(TIM2~TIM5):
TIM2~TIM5的通道均支持标准PWM模式,适用于LED调光、舵机控制等常规应用。
例如,TIM2的通道1(PA0)可用于驱动SG90舵机,通过调整CCR值实现0°~180°的角度控制。
引脚驱动能力:
部分引脚(如PC13~PC15)驱动能力较弱,仅适用于低负载应用,不适合直接驱动电机或LED。
高负载应用需通过驱动电路(如三极管、MOSFET)增强驱动能力。
三、PWM功能配置步骤
以下是配置STM32F103RCT6 PWM输出的基本步骤(以TIM2通道1为例):
1. 硬件连接
将PWM输出引脚(如PA0)连接至负载(如LED、电机驱动模块)。
确保负载电源与MCU电源共地。
2. 初始化时钟
使能TIM2和GPIOA的时钟:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
3. 配置GPIO为复用推挽输出
将PA0配置为TIM2_CH1的复用推挽输出:
GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);
4. 配置TIM2为PWM模式
设置自动重装载值(ARR)和预分频器(PSC),计算PWM频率:
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructure.TIM_Period = 899; // ARR值 TIM_TimeBaseStructure.TIM_Prescaler = 0; // PSC值 TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
PWM频率计算公式:
f_PWM = 72MHz / ((PSC + 1) * (ARR + 1))
例如,PSC=0,ARR=899时,PWM频率为80kHz。
5. 配置PWM输出通道
设置TIM2通道1为PWM模式2,输出极性为高:
TIM_OCInitTypeDef TIM_OCInitStructure; TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 0; // 初始占空比为0 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC1Init(TIM2, &TIM_OCInitStructure);
6. 使能PWM输出
开启主输出使能(MOE)和ARR预装载:
TIM_CtrlPWMOutputs(TIM2, ENABLE); TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable); TIM_ARRPreloadConfig(TIM2, ENABLE); TIM_Cmd(TIM2, ENABLE);
7. 动态调整占空比
通过修改CCR值调整占空比:
TIM_SetCompare1(TIM2, pwmval); // pwmval范围为0~899 |
四、PWM应用案例
1. 舵机控制
硬件:SG90舵机、STM32F103RCT6开发板。
原理:SG90舵机通过PWM信号控制角度,周期为20ms(50Hz),脉宽范围为0.5ms~2.5ms(对应0°~180°)。
代码示例:
void Servo_SetAngle(float angle) { uint16_t pwmval = 500 + (angle / 180.0) * 2000; // 脉宽计算 TIM_SetCompare1(TIM2, pwmval); }
2. 电机调速
硬件:BLDC电机、UB510驱动器、STM32F103RCT6开发板。
原理:通过PWM信号控制电机驱动器的SV引脚,占空比范围为0%~100%,频率建议为1kHz~20kHz。
代码示例:
void Motor_SetSpeed(uint8_t speed) { |
uint16_t pwmval = (speed / 100.0) * 1000; // 占空比计算 |
TIM_SetCompare1(TIM2, pwmval); |
} |
3. LED调光
硬件:LED、限流电阻、STM32F103RCT6开发板。
原理:通过PWM信号控制LED亮度,占空比越高,LED越亮。
代码示例:
void LED_SetBrightness(uint8_t brightness) { |
uint16_t pwmval = (brightness / 100.0) * 899; // 占空比计算 |
TIM_SetCompare1(TIM2, pwmval); |
} |
五、注意事项
引脚冲突:避免同时启用同一引脚的不同功能(如USART与PWM)。
时钟配置:确保APB1/APB2时钟已正确配置,否则PWM频率可能异常。
驱动能力:高负载应用需通过驱动电路增强引脚驱动能力。
调试工具:使用示波器或逻辑分析仪监测PWM信号,确保波形正确。
六、总结
STM32F103RCT6的PWM功能通过多个定时器通道实现,支持标准PWM和高级PWM模式,适用于电机控制、LED调光、舵机驱动等多种场景。通过合理配置引脚复用、定时器参数和输出模式,开发者可以轻松实现高精度的PWM信号输出。本文详细介绍了PWM引脚定义、功能配置及实际应用案例,为嵌入式系统开发提供了全面的参考。
责任编辑:David
【免责声明】
1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。
2、本文的引用仅供读者交流学习使用,不涉及商业目的。
3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。
4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。
拍明芯城拥有对此声明的最终解释权。