首页 文章 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条评论