stm32f103c8 定时器1配置为比较输出模式,CH1-CH4都有输出,但CH1N、CH2N、CH3N没有输出?为什么呢?CH1N在比较模式下能用吗?[/mw_shl_code]
代码:[/mw_shl_code]
void PWM_Configuration(void)
{
/* TIM1 Configuration ---------------------------------------------------
定时器1配置:输出四路PWM波形,频率,占空比可调
----------------------------------------------------------------------- */
TIM_DeInit(TIM1);
/* Time Base configuration */
TIM_TimeBaseStructure.TIM_Prescaler = 4;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_Period = 0xffff;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
/* Channel 1 Configuration in PWM mode */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle; //输出比较模式
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //正向通道有效
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputState_Enable; //反向通道无效
TIM_OCInitStructure.TIM_Pulse = CCR1_Val; //占空时间
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCNPolarity_High; //输出极性
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High; //互补端的极性
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Set;
TIM_OC1Init(TIM1,&TIM_OCInitStructure); //通道1
TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Disable);
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle; //输出比较模式
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //正向通道有效
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputState_Enable; //反向通道无效
TIM_OCInitStructure.TIM_Pulse = CCR2_Val; //占空时间
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCNPolarity_High; //输出极性
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High; //互补端的极性
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Set;
TIM_OC2Init(TIM1,&TIM_OCInitStructure); //通道2
TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Disable);
TIM_OCInitStructure.TIM_Pulse = CCR3_Val; //占空时间
TIM_OC3Init(TIM1,&TIM_OCInitStructure); //通道3
TIM_OC3PreloadConfig(TIM1, TIM_OCPreload_Disable);
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle; //输出比较模式
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //正向通道有效
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputState_Disable; //反向通道无效
TIM_OCInitStructure.TIM_Pulse = CCR4_Val; //占空时间
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCNPolarity_High; //输出极性
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High; //互补端的极性
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Set;
TIM_OCInitStructure.TIM_Pulse = CCR4_Val; //占空时间
TIM_OC4Init(TIM1,&TIM_OCInitStructure); //通道4
TIM_OC4PreloadConfig(TIM1, TIM_OCPreload_Disable);
/* TIM1 counter enable */
TIM_Cmd(TIM1,ENABLE);
/* TIM1 Main Output Enable */
TIM_CtrlPWMOutputs(TIM1,ENABLE); //必须使能此处的PWM输出,否则没有信号
TIM_ARRPreloadConfig(TIM1, DISABLE);
TIM_ClearFlag(TIM1, TIM_FLAG_CC1|TIM_FLAG_CC2|TIM_FLAG_CC3|TIM_FLAG_CC4);
/* TIM IT enable */
TIM_ITConfig(TIM1, TIM_IT_CC1 | TIM_IT_CC2 | TIM_IT_CC3 | TIM_IT_CC4, ENABLE);
}
[/mw_shl_code]