初级会员

- 积分
- 104
- 金钱
- 104
- 注册时间
- 2012-5-29
- 在线时间
- 23 小时
|
1金钱
各位前辈好,
我用STM32F407, PB6和PB7作为PWM输出,初始化如下:
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
TIM_OCInitTypeDef TIM_OCInitTypeStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|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(GPIOB, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_TIM4);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_TIM4);
TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInitStructure.TIM_Prescaler=psc;
TIM_TimeBaseInitStructure.TIM_Period=arr;
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseInitStructure);
TIM_OCInitTypeStructure.TIM_OCMode=TIM_OCMode_PWM1;
TIM_OCInitTypeStructure.TIM_OCPolarity=TIM_OCPolarity_Low;
TIM_OCInitTypeStructure.TIM_OutputState=TIM_OutputState_Enable;
TIM_OCInitTypeStructure.TIM_Pulse=0;
TIM_OC1Init(TIM4, &TIM_OCInitTypeStructure);
TIM_OC2Init(TIM4, &TIM_OCInitTypeStructure);
TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);
TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM4, ENABLE);
TIM_Cmd(TIM4, ENABLE);
然后再主函数中KEY1 KEY2,调整占空比如下:
switch(key)
{
case 1:
pwm1--;
if(pwm1<=0) pwm1 = 50;
TIM_SetCompare1(TIM4, pwm1);
break;
case 2:
pwm2--;
if(pwm2<=0) pwm2 = 50;
TIM_SetCompare2(TIM4, pwm2);
break;
}
发现两个输出会混乱,有时候按KEY1,PWM2会改变,请指教。
|
|