您的位置:首页 > 其它

STM32F0 TIM17配置生成PWM控制步进电机

2017-08-28 14:52 561 查看
因为步进电机的转速只跟所给的脉冲数相关,而与占空比无关,所以下面的配置就只考虑脉冲数的变化,对于占空比,则不做多考虑,(占空比=TIM_OCInitStructure.TIM_Pulse/TIM_TimeBaseStructure.TIM_Period,如果在初始化后没生成PWM,可能就是给的参数刚好让这两者的比值为0或1)

/* 参数pulse为输出的脉冲数,在这里不能取0,0不能当除数 */
void Timer17_PWM_Config(u16 pulse){
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
GPIO_InitTypeDef GPIO_InitStructure;

u16 TimerPeriod = (SystemCoreClock / pulse) - 1;

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM17, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_5);

TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_Period = TimerPeriod;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM17, &TIM_TimeBaseStructure);

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low;
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;
TIM_OCInitStructure.TIM_Pulse = 100;
TIM_OC1Init(TIM17, &TIM_OCInitStructure);

TIM_Cmd(TIM17, ENABLE);
/*在TIM1,TIM15,TIM16,TIM17必须使用下面的函数使能,否则无法生成pwm*/
TIM_CtrlPWMOutputs(TIM17,ENABLE);
}


void main() {
Timer17_PWM_Config(1000);
while (1) {
}
}


如果希望脉冲输出为0,能可以通过修改占空比的方法来处理

/* 下面的寄存器操作就是将TIM_OCInitStructure.TIM_Pulse的值设置为0,从而使占空比为0,也就不再输出脉冲,电机也就不转了 */
void TIM_PWM_Stop()
{
TIM17->CCR1 = 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: