tao_z
2021-07-10 9051da0184cf839037f1370c729b27bf065b9c95
USR/SRC/pwm.c
@@ -48,7 +48,7 @@
*****************************************************************************************************/
static void Timer0Init(void)
{
    uint16_t Duty = PERIOD_CMP / 10;
    uint16_t Duty = PERIOD_CMP / 2;
    timer_parameter_struct timercontralcfg;
    timer_oc_parameter_struct timeroutcfg[3];
    timer_break_parameter_struct timer_breakpara;
@@ -61,21 +61,21 @@
    timercontralcfg.period = PERIOD_CMP;                 // set period(counter value 0~2^15)
    timer_init(TIMER0, &timercontralcfg);
    timeroutcfg[0].ocpolarity = TIMER_OC_POLARITY_HIGH; //channel output polarity is high
    timeroutcfg[0].ocpolarity = TIMER_OC_POLARITY_HIGH; //channel output polarity is low
    timeroutcfg[0].ocnpolarity = TIMER_OCN_POLARITY_HIGH;
    timeroutcfg[0].outputstate = TIMER_CCX_ENABLE;    //channel enable
    timeroutcfg[0].outputnstate = TIMER_CCXN_DISABLE; //channel complementary DISABLE
    timeroutcfg[0].ocidlestate = TIMER_OC_IDLE_STATE_LOW;
    timeroutcfg[0].ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;
    timeroutcfg[1].ocpolarity = TIMER_OC_POLARITY_HIGH; //channel output polarity is high
    timeroutcfg[1].ocpolarity = TIMER_OC_POLARITY_HIGH; //channel output polarity is LOW
    timeroutcfg[1].ocnpolarity = TIMER_OCN_POLARITY_HIGH;
    timeroutcfg[1].outputstate = TIMER_CCX_ENABLE;    //channel enable
    timeroutcfg[1].outputnstate = TIMER_CCXN_DISABLE; //channel complementary  DISABLE
    timeroutcfg[1].ocidlestate = TIMER_OC_IDLE_STATE_LOW;
    timeroutcfg[1].ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;
    timeroutcfg[2].ocpolarity = TIMER_OC_POLARITY_HIGH; //channel output polarity is high
    timeroutcfg[2].ocpolarity = TIMER_OC_POLARITY_HIGH; //channel output polarity is LOW
    timeroutcfg[2].ocnpolarity = TIMER_OCN_POLARITY_HIGH;
    timeroutcfg[2].outputstate = TIMER_CCX_ENABLE;    //channel enable
    timeroutcfg[2].outputnstate = TIMER_CCXN_DISABLE; //channel complementary  DISABLE
@@ -90,25 +90,25 @@
    timer_channel_output_pulse_value_config(TIMER0, TIMER_CH_1, Duty);
    timer_channel_output_pulse_value_config(TIMER0, TIMER_CH_2, Duty);
    timer_channel_output_mode_config(TIMER0, TIMER_CH_0, TIMER_OC_MODE_PWM1); //set pwm1 mode first low then high
    timer_channel_output_mode_config(TIMER0, TIMER_CH_1, TIMER_OC_MODE_PWM1);
    timer_channel_output_mode_config(TIMER0, TIMER_CH_2, TIMER_OC_MODE_PWM1);
    timer_channel_output_mode_config(TIMER0, TIMER_CH_0, TIMER_OC_MODE_PWM0); //set pwm1 mode first low then high
    timer_channel_output_mode_config(TIMER0, TIMER_CH_1, TIMER_OC_MODE_PWM0);
    timer_channel_output_mode_config(TIMER0, TIMER_CH_2, TIMER_OC_MODE_PWM0);
    timer_channel_output_shadow_config(TIMER0, TIMER_CH_0, TIMER_OC_SHADOW_ENABLE); //shadow ENable
    timer_channel_output_shadow_config(TIMER0, TIMER_CH_1, TIMER_OC_SHADOW_ENABLE);
    timer_channel_output_shadow_config(TIMER0, TIMER_CH_2, TIMER_OC_SHADOW_ENABLE);
    timer_channel_output_shadow_config(TIMER0, TIMER_CH_0, TIMER_OC_SHADOW_DISABLE); //shadow ENable
    timer_channel_output_shadow_config(TIMER0, TIMER_CH_1, TIMER_OC_SHADOW_DISABLE);
    timer_channel_output_shadow_config(TIMER0, TIMER_CH_2, TIMER_OC_SHADOW_DISABLE);
    /* configure TIMER break function */
    timer_break_struct_para_init(&timer_breakpara);
    /* automatic output enable, break, dead time and lock configuration*/
    timer_breakpara.runoffstate = TIMER_ROS_STATE_DISABLE;
    timer_breakpara.ideloffstate = TIMER_IOS_STATE_DISABLE;
    timer_breakpara.deadtime = 255;
    timer_breakpara.breakpolarity = TIMER_BREAK_POLARITY_LOW;
    timer_breakpara.outputautostate = TIMER_OUTAUTO_ENABLE;
    timer_breakpara.protectmode = TIMER_CCHP_PROT_0;
    timer_breakpara.breakstate = TIMER_BREAK_ENABLE;
    timer_break_config(TIMER0, &timer_breakpara);
    // /* configure TIMER break function */
    // timer_break_struct_para_init(&timer_breakpara);
    // /* automatic output enable, break, dead time and lock configuration*/
    // timer_breakpara.runoffstate = TIMER_ROS_STATE_DISABLE;
    // timer_breakpara.ideloffstate = TIMER_IOS_STATE_DISABLE;
    // timer_breakpara.deadtime = 32;
    // timer_breakpara.breakpolarity = TIMER_BREAK_POLARITY_LOW;
    // timer_breakpara.outputautostate = TIMER_OUTAUTO_ENABLE;
    // timer_breakpara.protectmode = TIMER_CCHP_PROT_0;
    // timer_breakpara.breakstate = TIMER_BREAK_DISABLE;
    // timer_break_config(TIMER0, &timer_breakpara);
    timer_primary_output_config(TIMER0, ENABLE);
    timer_auto_reload_shadow_enable(TIMER0);
@@ -125,7 +125,7 @@
void SetPwmDuty(uint16_t ch, uint32_t duty)
{
    uint32_t duty_temp = (PERIOD_CMP >= duty) ? (PERIOD_CMP - duty) : 0;
    // uint32_t duty_temp = (PERIOD_CMP >= duty) ? (PERIOD_CMP - duty) : 0;
    timer_channel_output_pulse_value_config(TIMER0, ch, duty);
}