如题,有哪位高手知道如何配置STM8S105的TIM1各个通道才能输出PWM信号?不胜感激
根据官方例子修改,CH2和CH4能正常输出PWM,但是CH1和CH3就是不正常
- #define CCR1_Val ((uint16_t)2047)
- #define CCR2_Val ((uint16_t)1535)
- #define CCR3_Val ((uint16_t)1023)
- #define CCR4_Val ((uint16_t)511)
- static void TIM1_Config(void)
- {
- TIM1_DeInit();
- /* Time Base configuration */
- /*
- TIM1_Period = 4095
- TIM1_Prescaler = 0
- TIM1_CounterMode = TIM1_COUNTERMODE_UP
- TIM1_RepetitionCounter = 0
- */
- TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_UP, 4095, 0);
- /* Channel 1, 2,3 and 4 Configuration in PWM mode */
-
- /*
- TIM1_OCMode = TIM1_OCMODE_PWM2
- TIM1_OutputState = TIM1_OUTPUTSTATE_ENABLE
- TIM1_OutputNState = TIM1_OUTPUTNSTATE_ENABLE
- TIM1_Pulse = CCR1_Val
- TIM1_OCPolarity = TIM1_OCPOLARITY_LOW
- TIM1_OCNPolarity = TIM1_OCNPOLARITY_HIGH
- TIM1_OCIdleState = TIM1_OCIDLESTATE_SET
- TIM1_OCNIdleState = TIM1_OCIDLESTATE_RESET
-
- */
- TIM1_OC1Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE,
- CCR1_Val, TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET,
- TIM1_OCNIDLESTATE_RESET);
- /*TIM1_Pulse = CCR2_Val*/
- TIM1_OC2Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE, CCR2_Val,
- TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET,
- TIM1_OCNIDLESTATE_RESET);
- /*TIM1_Pulse = CCR3_Val*/
- TIM1_OC3Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE,
- CCR3_Val, TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET,
- TIM1_OCNIDLESTATE_RESET);
- /*TIM1_Pulse = CCR4_Val*/
- TIM1_OC4Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, CCR4_Val, TIM1_OCPOLARITY_LOW,
- TIM1_OCIDLESTATE_SET);
- /* TIM1 counter enable */
- TIM1_Cmd(ENABLE);
- /* TIM1 Main Output Enable */
- TIM1_CtrlPWMOutputs(ENABLE);
- }
|