初级会员

- 积分
- 124
- 金钱
- 124
- 注册时间
- 2018-3-26
- 在线时间
- 288 小时
|
20金钱
请教一下大家,关于TIM3和TIM8输出PWM的问题,想用TIM1-4和TIM8输出PWM,TIM1、2、4都成功了,TIM3和TIM8一直输出不正确,TIM3的引脚PB0、PB1、PB4、PB5输出PWM,TIM8的PC6、PC7、PC8、PC9输出PWM一直不成功,大家帮忙看一下,谢谢了。- void TIM3_PWM_Init(u16 arr, u16 psc)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
- TIM_OCInitTypeDef TIM_OCInitStructure;
-
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //?????3??
- RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE); //??GPIO??
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1|GPIO_Pin_4 | GPIO_Pin_5;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
-
- //???TIM3
- TIM_TimeBaseInitStructure.TIM_Period = arr;
- TIM_TimeBaseInitStructure.TIM_Prescaler = psc;
- TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
- TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStructure);
-
- //???TIM3_CH1 PWM ??
- TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
- TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
- TIM_OC1Init(TIM3, &TIM_OCInitStructure);
-
- //???TIM3_CH2 PWM ??
- TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
- TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
- TIM_OC2Init(TIM3, &TIM_OCInitStructure);
-
- //???TIM3_CH3 PWM ??
- TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
- TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
- TIM_OC3Init(TIM3, &TIM_OCInitStructure);
-
- //???TIM3_CH4 PWM ??
- TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
- TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
- TIM_OC4Init(TIM3, &TIM_OCInitStructure);
-
- //??TIM3?CCR????????
- TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);
- TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
- TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);
- TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable);
- //??TIM3
- TIM_Cmd(TIM3, ENABLE);
- //TIM_CtrlPWMOutputs(TIM3, ENABLE);
- }
- void TIM8_PWM_Init(u16 arr,u16 psc)
- {
-
- GPIO_InitTypeDef GPIO_InitStructure;
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- TIM_OCInitTypeDef TIM_OCInitStructure;
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE); //?????3??
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //??GPIO???AFIO????????
-
-
- //????????????,??TIM8 CH2?PWM???? GPIOB.5
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9; //TIM_CH2
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //??????
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOC, &GPIO_InitStructure);//???GPIO
-
- //???TIM8
- TIM_TimeBaseStructure.TIM_Period = arr; //???????????????????????????
- TIM_TimeBaseStructure.TIM_Prescaler =psc; //??????TIMx???????????
- TIM_TimeBaseStructure.TIM_ClockDivision =TIM_CKD_DIV1; //??????:TDTS = Tck_tim
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM??????
- TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure); //??TIM_TimeBaseInitStruct?????????TIMx???????
-
- //???TIM8 Channel2 PWM??
- TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //???????:TIM????????2
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //??????
- TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //????:TIM???????
- // TIM_OCInitStructure.TIM_Pulse=CCR1_Val;
- TIM_OC1Init(TIM8, &TIM_OCInitStructure); //??T??????????TIM8 OC2
- TIM_OC1PreloadConfig(TIM8, TIM_OCPreload_Enable); //??TIM8?CCR2????????
-
- TIM_CtrlPWMOutputs(TIM8,ENABLE);
-
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //??????
- TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //????:TIM???????
- // TIM_OCInitStructure.TIM_Pulse=CCR2_Val;
- TIM_OC2Init(TIM8, &TIM_OCInitStructure); //??T??????????TIM8 OC2
- TIM_OC2PreloadConfig(TIM8, TIM_OCPreload_Enable); //??TIM8?CCR2????????
-
- TIM_CtrlPWMOutputs(TIM8,ENABLE);
-
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //??????
- TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //????:TIM???????
- //TIM_OCInitStructure.TIM_Pulse=CCR3_Val;
- TIM_OC3Init(TIM8, &TIM_OCInitStructure); //??T??????????TIM8 OC2
- TIM_OC3PreloadConfig(TIM8, TIM_OCPreload_Enable); //??TIM8?CCR2????????
-
- TIM_CtrlPWMOutputs(TIM8,ENABLE);
-
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //??????
- TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //????:TIM???????
- //TIM_OCInitStructure.TIM_Pulse=CCR4_Val;
- TIM_OC4Init(TIM8, &TIM_OCInitStructure); //??T??????????TIM8 OC2
- TIM_OC4PreloadConfig(TIM8, TIM_OCPreload_Enable); //??TIM8?CCR2????????
-
- TIM_CtrlPWMOutputs(TIM8,ENABLE);
-
- TIM_Cmd(TIM8, ENABLE); //??TIM8
- }
复制代码
|
|