void motor_config(void){
// 定义并初始化GPIO和定时器配置的结构体
GPIO_InitTypeDef GPIOMotorinit;
TIM_TimeBaseInitTypeDef TIMMotorinit;
TIM_OCInitTypeDef TIMPWMMotortinit;
// 使能GPIOB端口的时钟(因为我们将使用GPIOB的引脚来控制)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
// 使能TIM3定时器的时钟(因为我们将使用TIM3来生成PWM信号)
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
// 使能复用功能IO的时钟(因为我们将使用GPIO的复用功能)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
// 配置TIM3的部分重映射 ,
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);
// 配置GPIOB的第5脚为复用推挽输出模式,速度50MHz
GPIOMotorinit.GPIO_Mode = GPIO_Mode_AF_PP;
GPIOMotorinit.GPIO_Pin = GPIO_Pin_5;
GPIOMotorinit.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIOMotorinit);
// 配置TIM3定时器的基本时间参数
TIMMotorinit.TIM_ClockDivision = TIM_CKD_DIV1; // 定时器时钟不分频
TIMMotorinit.TIM_CounterMode = TIM_CounterMode_Up; // 定时器向上计数模式
TIMMotorinit.TIM_Period = 200 - 1; // 自动重装载寄存器的值(决定PWM周期)
TIMMotorinit.TIM_Prescaler = 7200 - 1; // 预分频值,影响定时器计数频率
TIM_TimeBaseInit(TIM3, &TIMMotorinit); // 应用配置
// 配置TIM3的PWM输出比较参数
TIMPWMMotortinit.TIM_OCPolarity = TIM_OCPolarity_Low; // PWM输出低有效
TIMPWMMotortinit.TIM_OutputState = TIM_OutputState_Enable; // 使能输出比较通道
TIMPWMMotortinit.TIM_OCMode = TIM_OCMode_PWM1; // 使用PWM模式1
TIM_OC2Init(TIM3, &TIMPWMMotortinit); // GPIOB_Pin_5,对应的TIM3
TIM_Cmd(TIM3, ENABLE); // 使能TIM3定时器
TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); // 使能输出比较通道2的预装载功能
}
标签:TIM3,使能,定时器,控制,舵机,转动,TIM,TIMMotorinit,GPIO From: https://blog.csdn.net/m0_71715743/article/details/142555033