首页 文章 stm32f4,pwm控制电机自己的疑惑

stm32f4,pwm控制电机自己的疑惑

转载 举报

wangfei 2018-07-28


这是一个pwm的原理图,对于pwm其实就是一个定时器自我计数,并与我们自己设定的值比较,最终得出高低电平,从而产生有规律的波形


其中ARR是计数的最大值,CCRX是我们自己设定的比较值

定时器pwm有向上,向下计数,有pwm1,pwm2模式,有输出极性高低的选择

1.配置rcc

2.配置gpio复用为定时器

3.设置定时器pwm的模式并使能

(1)PWM模式1- 在向上计数时,一旦TIMx_CNT

   在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为无效电平,否则为有效电平。


 PWM模式2- 在向上计数时,一旦TIMx_CNT

  在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为有效电平,否则为无效电平。

(2)有效电平是通过TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_x来设置的,x可以为high,也可以为low



我自己的疑惑是,我设定的TIM_SetCompare1(TIM14,3000); 很高,但是电机却转的很慢,当我尝试把TIM_SetCompare1(TIM14,200); 时

我电机就变快了,这就是因为pwm模式的设定出了问题


void TIM14_PWM_Init(u32 arr,u32 psc)
{  

GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
TIM_OCInitTypeDef  TIM_OCInitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14,ENABLE);  
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); 

GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_TIM14); 

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;           
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;        
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;       
GPIO_Init(GPIOA,&GPIO_InitStructure);            
 
TIM_TimeBaseStructure.TIM_Prescaler=psc; 
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //我选择了向上计数
TIM_TimeBaseStructure.TIM_Period=arr;  
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; 

TIM_TimeBaseInit(TIM14,&TIM_TimeBaseStructure);

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择了pwm1模式
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性是低电平
TIM_OC1Init(TIM14, &TIM_OCInitStructure); 


TIM_OC1PreloadConfig(TIM14, TIM_OCPreload_Enable); 
 
  TIM_ARRPreloadConfig(TIM14,ENABLE);

TIM_Cmd(TIM14, ENABLE);  
}  

 //我选择了向上计数

//选择了pwm1模式

//输出极性是低电平

当我输出较大的设定值ccrx,那么以为是pwm1,向上计数,所以当cnt

所以,当cnt

就会是的低电平占的比例大,那么电机就转的慢了

,,这是一个pwm的原理图,对于pwm其实就是一个定时器自我计数,并与我们自己设定的值比较,最终得出高低电平,从而产生有规律的波形,这是一个pwm的原理图,对于pwm其实就是一个定时器自我计数,并与我们自己设定的值比较,最终得出高低电平,从而产生有规律的波形,这是一个pwm的原理图,对于pwm其实就是一个定时器自我计数,并与我们自己设定的值比较,最终得出高低电平,从而产生有规律的波形
3条评论