#include "pwm.h" #include "interrupt_interface.h" #include "stm8s_tim1.h" #include "stm8s_tim2.h" #define CCR1_Val ((uint16_t)800) #define CCR2_Val ((uint16_t)250) #define CCR3_Val ((uint16_t)125) static void timer2_interrupt(void) { TIM2_ClearFlag(TIM2_FLAG_CC1); TIM2_ClearFlag(TIM2_FLAG_CC2); TIM2_ClearFlag(TIM2_FLAG_CC3); } /** * @brief Configure TIM1 to generate 6 Steps PWM signal * @param None * @retval None */ static void TIM1_Config(void) { /* TIM1 Peripheral Configuration */ TIM1_DeInit(); TIM1_InternalClockConfig(); /* Time Base configuration */ /* TIM1_Period = 1023 TIM1_Prescaler = 0 TIM1_CounterMode = TIM1_COUNTERMODE_UP TIM1_RepetitionCounter = 0 */ TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_UP, 999, 0); //fCK_CNT = fCK_PSC / (PSCR[15:0] + 1) =16M/1=16M fpwm=16M/(999+1)=16k /* 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 */ //110:PWM模式1- 在向上计数时,一旦TIM1_CNT