中级会员
 
- 积分
- 411
- 金钱
- 411
- 注册时间
- 2014-4-18
- 在线时间
- 94 小时
|
1金钱
现在使用TIM2、3、4、8输出多路PWM,但是发现TIM8输出的PWM边沿速度特别慢,当输出超过50kHz的时候已经完全失真了。
TIM8使用的是C6、C7、C8、C9,对应的通道是1、2、3、4
TIM2、3、4输出100kHz:
TIM8输出100kHz:
初始化部分:
[mw_shl_code=c,true] TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_TimeBaseStructure.TIM_Period = FrequencyTable[freTab][0] - 1;//计数上限
TIM_TimeBaseStructure.TIM_Prescaler = FrequencyTable[freTab][1] - 1;//pwm时钟分频
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数
TIM_TimeBaseInit(TIM8,&TIM_TimeBaseStructure);
//初始化通道PWM功能
TIM_OCStructInit(&TIM_OCInitStructure);
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_Pulse = 0;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputState_Disable;
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;[/mw_shl_code]
[mw_shl_code=c,true] TIM_OC1Init(TIM8,&TIM_OCInitStructure);
TIM_OC1PreloadConfig(TIM8, TIM_OCPreload_Enable);
TIMx->CCR1 = (uint16_t)((float)FrequencyTable[freTab][0] * (Duty/100.0f));[/mw_shl_code]
[mw_shl_code=c,true] TIM_ARRPreloadConfig(TIM8, ENABLE);
TIM_SelectOnePulseMode(TIM8,TIM_OPMode_Repetitive);
TIM_CtrlPWMOutputs(TIM8, ENABLE);
TIM_Cmd(TIM8,ENABLE);[/mw_shl_code]
|
|