From 1a4ea70147216f586f1341d4f1981733ed2c203c Mon Sep 17 00:00:00 2001
From: tao_z <tzj0429@163.com>
Date: Sat, 03 Jul 2021 21:41:30 +0800
Subject: [PATCH] 采用三个外部中断触发

---
 USR/SRC/Clock.c       |    2 
 USR/SRC/Motor.c       |   74 ++++++++++++++----------
 USR/INC/bldc_ctrl.h   |    4 
 USR/SRC/bldc_ctrl.c   |    7 ++
 USR/SRC/gd32e23x_it.c |    3 
 USR/INC/pwm.h         |    2 
 USR/SRC/GPIO.c        |   29 +++++----
 USR/SRC/pwm.c         |   32 +++++-----
 USR/SRC/main.c        |    5 +
 9 files changed, 92 insertions(+), 66 deletions(-)

diff --git a/USR/INC/bldc_ctrl.h b/USR/INC/bldc_ctrl.h
index c3e7b32..0c17079 100644
--- a/USR/INC/bldc_ctrl.h
+++ b/USR/INC/bldc_ctrl.h
@@ -4,8 +4,8 @@
 //���Ŷ���
 /*******************************************************/
 // ����������� SD ��
-#define SHUTDOWN_PIN GPIO_PIN_15
-#define SHUTDOWN_GPIO_PORT GPIOD
+#define SHUTDOWN_PIN GPIO_PIN_6
+#define SHUTDOWN_GPIO_PORT GPIOA
 // #define SHUTDOWN_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
 /*******************************************************/
 
diff --git a/USR/INC/pwm.h b/USR/INC/pwm.h
index f3e99c5..da32571 100644
--- a/USR/INC/pwm.h
+++ b/USR/INC/pwm.h
@@ -5,7 +5,7 @@
 #define PERIOD_CAP (30000U)
 
 //48Mzhz / 3000 = 16Khz = 62.5us
-#define PERIOD_CMP (4000u)
+#define PERIOD_CMP (3000u)
 
 void TimerInit(void);
 void SetPwmDuty(uint16_t ch, uint32_t duty);
diff --git a/USR/SRC/Clock.c b/USR/SRC/Clock.c
index 892233a..3b3e58e 100644
--- a/USR/SRC/Clock.c
+++ b/USR/SRC/Clock.c
@@ -38,7 +38,7 @@
             ;
     }
     /* configure the systick handler priority */
-    NVIC_SetPriority(SysTick_IRQn, 0x00);
+    NVIC_SetPriority(SysTick_IRQn, 0x01);
 }
 
 /*!
diff --git a/USR/SRC/GPIO.c b/USR/SRC/GPIO.c
index 7e0b581..c4226b4 100644
--- a/USR/SRC/GPIO.c
+++ b/USR/SRC/GPIO.c
@@ -6,35 +6,34 @@
 {
     rcu_periph_clock_enable(RCU_GPIOA);
     rcu_periph_clock_enable(RCU_GPIOB);
-    rcu_periph_clock_enable(RCU_GPIOF);
-
+    // rcu_periph_clock_enable(RCU_GPIOF);
+    /* enable the CFGCMP clock */
+    rcu_periph_clock_enable(RCU_CFGCMP);
     //初始化配置霍尔输入引脚
     gpio_mode_set(HALL_SENSOR_A_PORT, GPIO_MODE_INPUT, GPIO_PUPD_NONE, HALL_SENSOR_A_PIN);
     gpio_mode_set(HALL_SENSOR_B_PORT, GPIO_MODE_INPUT, GPIO_PUPD_NONE, HALL_SENSOR_B_PIN);
     gpio_mode_set(HALL_SENSOR_C_PORT, GPIO_MODE_INPUT, GPIO_PUPD_NONE, HALL_SENSOR_C_PIN);
-    /* enable the CFGCMP clock */
-    rcu_periph_clock_enable(RCU_CFGCMP);
-    nvic_irq_enable(EXTI4_15_IRQn, 0U);
+
     /* connect EXTI line to GPIO pin */
     syscfg_exti_line_config(EXTI_SOURCE_GPIOB, EXTI_SOURCE_PIN4);
     syscfg_exti_line_config(EXTI_SOURCE_GPIOB, EXTI_SOURCE_PIN5);
     syscfg_exti_line_config(EXTI_SOURCE_GPIOA, EXTI_SOURCE_PIN15);
 
-    exti_init(EXTI_4 | EXTI_5 | EXTI_15, EXTI_INTERRUPT, EXTI_TRIG_RISING); //配置外部上升沿中断
+    exti_init(EXTI_4, EXTI_INTERRUPT, EXTI_TRIG_RISING);  //配置外部上升沿中断
+    exti_init(EXTI_5, EXTI_INTERRUPT, EXTI_TRIG_RISING);  //配置外部上升沿中断
+    exti_init(EXTI_15, EXTI_INTERRUPT, EXTI_TRIG_RISING); //配置外部上升沿中断
+    nvic_irq_enable(EXTI4_15_IRQn, 0U);
     exti_interrupt_flag_clear(EXTI_4 | EXTI_5 | EXTI_15);
 
     //初始化PWM引脚
     gpio_mode_set(PWM_HIN1_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, PWM_HIN1_PIN);
     gpio_af_set(PWM_HIN1_PORT, GPIO_AF_2, PWM_HIN1_PIN);
-    gpio_output_options_set(PWM_HIN1_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, PWM_HIN1_PIN);
 
     gpio_mode_set(PWM_HIN2_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, PWM_HIN2_PIN);
     gpio_af_set(PWM_HIN2_PORT, GPIO_AF_2, PWM_HIN2_PIN);
-    gpio_output_options_set(PWM_HIN2_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, PWM_HIN2_PIN);
 
     gpio_mode_set(PWM_HIN3_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, PWM_HIN3_PIN);
     gpio_af_set(PWM_HIN3_PORT, GPIO_AF_2, PWM_HIN3_PIN);
-    gpio_output_options_set(PWM_HIN3_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, PWM_HIN3_PIN);
 
     // gpio_mode_set(PWM_LIN1_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, PWM_LIN1_PIN);
     // gpio_af_set(PWM_LIN1_PORT, GPIO_AF_2, PWM_LIN1_PIN);
@@ -87,13 +86,19 @@
 }
 extern uint8_t Get_HallSensorA_State(void)
 {
-    return (uint8_t)(gpio_input_bit_get(HALL_SENSOR_A_PORT, HALL_SENSOR_A_PIN));
+    uint8_t rtn = 0;
+    rtn = (SET == gpio_input_bit_get(HALL_SENSOR_A_PORT, HALL_SENSOR_A_PIN)) ? 1 : 0;
+    return rtn;
 }
 extern uint8_t Get_HallSensorB_State(void)
 {
-    return (uint8_t)(gpio_input_bit_get(HALL_SENSOR_B_PORT, HALL_SENSOR_B_PIN));
+    uint8_t rtn = 0;
+    rtn = (SET == gpio_input_bit_get(HALL_SENSOR_B_PORT, HALL_SENSOR_B_PIN)) ? 1 : 0;
+    return rtn;
 }
 extern uint8_t Get_HallSensorC_State(void)
 {
-    return (uint8_t)(gpio_input_bit_get(HALL_SENSOR_C_PORT, HALL_SENSOR_C_PIN));
+    uint8_t rtn = 0;
+    rtn = (SET == gpio_input_bit_get(HALL_SENSOR_C_PORT, HALL_SENSOR_C_PIN)) ? 1 : 0;
+    return rtn;
 }
diff --git a/USR/SRC/Motor.c b/USR/SRC/Motor.c
index 514feb8..ca17a04 100644
--- a/USR/SRC/Motor.c
+++ b/USR/SRC/Motor.c
@@ -8,7 +8,8 @@
 #include "SEGGER_RTT_Conf.h"
 #include "SEGGER_RTT.h"
 static volatile motor_rotate_t motor_drive = {0};
-static uint32_t motor_pluse = 0;
+static uint32_t motor_pluse = 1500;
+static volatile uint8_t motor_step = 0;
 static void motor_phasechange(void);
 static void update_speed_dir(uint8_t dir_in);
 
@@ -32,8 +33,8 @@
     exti_interrupt_enable(HALL_A_EXTI);
     exti_interrupt_enable(HALL_B_EXTI);
     exti_interrupt_enable(HALL_C_EXTI);
-    StartSpeedTime();    //start speed timer
-    motor_phasechange(); // ִ��һ�λ���
+    StartSpeedTime(); //start speed timer
+    // motor_phasechange(); // ִ��һ�λ���
 
     motor_drive.enable_flag = 1;
 }
@@ -61,19 +62,19 @@
     /* ��ȡ���������� U ��״̬ */
     if (Get_HallSensorA_State())
     {
-        state |= 0x01U << 0;
+        state |= (0x01U << 0);
     }
 
     /* ��ȡ���������� V ��״̬ */
     if (Get_HallSensorB_State())
     {
-        state |= 0x01U << 1;
+        state |= (0x01U << 1);
     }
 
     /* ��ȡ���������� W ��״̬ */
     if (Get_HallSensorC_State())
     {
-        state |= 0x01U << 2;
+        state |= (0x01U << 2);
     }
 
     return state; // ���ش�����״̬
@@ -206,16 +207,21 @@
 void HAL_HallExti_TriggerCallback(void)
 {
     uint8_t step = 0;
-    step = get_hall_state();
-    /* ��ȡ��������������״̬,��Ϊ��������� */
-    if (exti_interrupt_flag_get(HALL_A_EXTI | HALL_B_EXTI | HALL_C_EXTI)) // �ж��Ƿ��ɴ����жϲ���
+
+    // /* ��ȡ��������������״̬,��Ϊ��������� */
+    // if (exti_interrupt_flag_get(HALL_A_EXTI | HALL_B_EXTI | HALL_C_EXTI)) // �ж��Ƿ��ɴ����жϲ���
+    // {
+
+    //     // exti_interrupt_flag_clear(HALL_A_EXTI | HALL_B_EXTI | HALL_C_EXTI);
+    // }
+    for (step = 0; step < 30; step++)
     {
-        // update_motor_speed(step, __HAL_TIM_GET_COMPARE(htim, TIM_CHANNEL_1));//TODO ����ʱ������ü���ʱ��
-        update_motor_speed(step, 300u * GetSpeedTimerOutcnt() + timer_counter_read(TIMER2));
-        SEGGER_RTT_printf(0, "Speed is:%d!\n", motor_drive.speed);
-        motor_drive.timeout = 0;
-        exti_interrupt_flag_clear(HALL_A_EXTI | HALL_B_EXTI | HALL_C_EXTI);
     }
+    motor_step = get_hall_state();
+    // update_motor_speed(step, __HAL_TIM_GET_COMPARE(htim, TIM_CHANNEL_1));//TODO ����ʱ������ü���ʱ��
+    // update_motor_speed(step, 300u * GetSpeedTimerOutcnt() + timer_counter_read(TIMER2));
+    SEGGER_RTT_printf(0, "Hall state is:%d!\n", motor_step);
+    motor_drive.timeout = 0;
     // if (RESET != exti_interrupt_flag_get(EXTI_4))
     // {
     //     SEGGER_RTT_printf(0, "HALL_A_EXTI  triggle!\n");
@@ -228,7 +234,7 @@
     // {
     //     SEGGER_RTT_printf(0, "HALL_B_EXTI  triggle!\n");
     // }
-    motor_phasechange();
+    // motor_phasechange();
     // HAL_TIM_GenerateEvent(&htimx_bldcm, TIM_EVENTSOURCE_COM); // ������������¼�����ʱ�Ž�����д��
 }
 
@@ -245,7 +251,7 @@
     /* next step: step 2 configuration .A-C` breakover---------------------------- */
     case 1:
         /*  channel U configuration */
-        timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_U, TIMER_OC_MODE_PWM1);
+        timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_U, TIMER_OC_MODE_PWM0);
         timer_channel_output_state_config(TIMER0, MOTOR_OUT_CH_U, TIMER_CCX_ENABLE);
         MOTOR_U_L_DISABLE;
         // timer_channel_complementary_output_state_config(TIMER0, MOTOR_OUT_CH_U, TIMER_CCXN_DISABLE);
@@ -256,7 +262,7 @@
         // timer_channel_complementary_output_state_config(TIMER0, MOTOR_OUT_CH_V, TIMER_CCXN_DISABLE);
 
         /*  channel W configuration */
-        // timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_W, TIMER_OC_MODE_PWM1);
+        // timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_W, TIMER_OC_MODE_PWM0);
         timer_channel_output_state_config(TIMER0, MOTOR_OUT_CH_W, TIMER_CCX_DISABLE);
         MOTOR_W_L_ENABLE;
         // timer_channel_complementary_output_state_config(TIMER0, MOTOR_OUT_CH_W, TIMER_CCXN_ENABLE);
@@ -272,13 +278,13 @@
         MOTOR_U_L_DISABLE;
 
         /*  channel V configuration */
-        timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_V, TIMER_OC_MODE_PWM1);
+        timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_V, TIMER_OC_MODE_PWM0);
         timer_channel_output_state_config(TIMER0, MOTOR_OUT_CH_V, TIMER_CCX_ENABLE);
         // timer_channel_complementary_output_state_config(TIMER0, MOTOR_OUT_CH_V, TIMER_CCXN_DISABLE);
         MOTOR_V_L_DISABLE;
 
         /*  channel W configuration */
-        timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_W, TIMER_OC_MODE_PWM1);
+        timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_W, TIMER_OC_MODE_PWM0);
         timer_channel_output_state_config(TIMER0, MOTOR_OUT_CH_W, TIMER_CCX_DISABLE);
         // timer_channel_complementary_output_state_config(TIMER0, MOTOR_OUT_CH_W, TIMER_CCXN_ENABLE);
         MOTOR_W_L_ENABLE;
@@ -289,13 +295,13 @@
     /* next step: step 4 configuration .B-A` breakover---------------------------- */
     case 3:
         /*  channel U configuration */
-        timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_U, TIMER_OC_MODE_PWM1);
+        timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_U, TIMER_OC_MODE_PWM0);
         timer_channel_output_state_config(TIMER0, MOTOR_OUT_CH_U, TIMER_CCX_DISABLE);
         // timer_channel_complementary_output_state_config(TIMER0, MOTOR_OUT_CH_U, TIMER_CCXN_ENABLE);
         MOTOR_U_L_ENABLE;
 
         /*  channel V configuration */
-        timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_V, TIMER_OC_MODE_PWM1);
+        timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_V, TIMER_OC_MODE_PWM0);
         timer_channel_output_state_config(TIMER0, MOTOR_OUT_CH_V, TIMER_CCX_ENABLE);
         // timer_channel_complementary_output_state_config(TIMER0, MOTOR_OUT_CH_V, TIMER_CCXN_DISABLE);
         MOTOR_V_L_DISABLE;
@@ -311,7 +317,7 @@
     /* next step: step 5 configuration .C-A` breakover---------------------------- */
     case 4:
         /*  channel U configuration */
-        timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_U, TIMER_OC_MODE_PWM1);
+        timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_U, TIMER_OC_MODE_PWM0);
         timer_channel_output_state_config(TIMER0, MOTOR_OUT_CH_U, TIMER_CCX_DISABLE);
         // timer_channel_complementary_output_state_config(TIMER0, MOTOR_OUT_CH_U, TIMER_CCXN_ENABLE);
         MOTOR_U_L_ENABLE;
@@ -322,7 +328,7 @@
         MOTOR_V_L_DISABLE;
 
         /*  channel W configuration */
-        timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_W, TIMER_OC_MODE_PWM1);
+        timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_W, TIMER_OC_MODE_PWM0);
         timer_channel_output_state_config(TIMER0, MOTOR_OUT_CH_W, TIMER_CCX_ENABLE);
         // timer_channel_complementary_output_state_config(TIMER0, MOTOR_OUT_CH_W, TIMER_CCXN_DISABLE);
         MOTOR_W_L_DISABLE;
@@ -338,13 +344,13 @@
         MOTOR_U_L_DISABLE;
 
         /*  channel V configuration */
-        timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_V, TIMER_OC_MODE_PWM1);
+        timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_V, TIMER_OC_MODE_PWM0);
         timer_channel_output_state_config(TIMER0, MOTOR_OUT_CH_V, TIMER_CCX_DISABLE);
         // timer_channel_complementary_output_state_config(TIMER0, MOTOR_OUT_CH_V, TIMER_CCXN_ENABLE);
         MOTOR_V_L_ENABLE;
 
         /*  channel W configuration */
-        timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_W, TIMER_OC_MODE_PWM1);
+        timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_W, TIMER_OC_MODE_PWM0);
         timer_channel_output_state_config(TIMER0, MOTOR_OUT_CH_W, TIMER_CCX_ENABLE);
         // timer_channel_complementary_output_state_config(TIMER0, MOTOR_OUT_CH_W, TIMER_CCXN_DISABLE);
         MOTOR_W_L_DISABLE;
@@ -354,13 +360,13 @@
     /* next step: step 1 configuration .A-B` breakover---------------------------- */
     case 6:
         /*  channel U configuration */
-        timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_U, TIMER_OC_MODE_PWM1);
+        timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_U, TIMER_OC_MODE_PWM0);
         timer_channel_output_state_config(TIMER0, MOTOR_OUT_CH_U, TIMER_CCX_ENABLE);
         // timer_channel_complementary_output_state_config(TIMER0, MOTOR_OUT_CH_U, TIMER_CCXN_DISABLE);
         MOTOR_U_L_DISABLE;
 
         /*  channel V configuration */
-        timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_V, TIMER_OC_MODE_PWM1);
+        timer_channel_output_mode_config(TIMER0, MOTOR_OUT_CH_V, TIMER_OC_MODE_PWM0);
         timer_channel_output_state_config(TIMER0, MOTOR_OUT_CH_V, TIMER_CCX_DISABLE);
         // timer_channel_complementary_output_state_config(TIMER0, MOTOR_OUT_CH_V, TIMER_CCXN_ENABLE);
         MOTOR_V_L_ENABLE;
@@ -383,11 +389,14 @@
 extern void stop_pwm_output(void)
 {
     timer_channel_output_state_config(TIMER0, TIMER_CH_0, TIMER_CCX_DISABLE);
-    timer_channel_complementary_output_state_config(TIMER0, TIMER_CH_0, TIMER_CCXN_DISABLE);
+    // timer_channel_complementary_output_state_config(TIMER0, TIMER_CH_0, TIMER_CCXN_DISABLE);
     timer_channel_output_state_config(TIMER0, TIMER_CH_1, TIMER_CCX_DISABLE);
-    timer_channel_complementary_output_state_config(TIMER0, TIMER_CH_1, TIMER_CCXN_DISABLE);
+    // timer_channel_complementary_output_state_config(TIMER0, TIMER_CH_1, TIMER_CCXN_DISABLE);
     timer_channel_output_state_config(TIMER0, TIMER_CH_2, TIMER_CCX_DISABLE);
-    timer_channel_complementary_output_state_config(TIMER0, TIMER_CH_2, TIMER_CCXN_DISABLE);
+    // timer_channel_complementary_output_state_config(TIMER0, TIMER_CH_2, TIMER_CCXN_DISABLE);
+    MOTOR_W_L_DISABLE;
+    MOTOR_V_L_DISABLE;
+    MOTOR_U_L_DISABLE;
 }
 
 /**
@@ -399,7 +408,10 @@
 {
     /* ���ö�ʱ��ͨ����� PWM ��ռ�ձ� */
     motor_pluse = pulse;
-    //SetPwmDuty();
+    SetPwmDuty(TIMER_CH_0, motor_pluse);
+    SetPwmDuty(TIMER_CH_1, motor_pluse);
+    SetPwmDuty(TIMER_CH_2, motor_pluse);
+
     if (motor_drive.enable_flag)
     {
         motor_phasechange();
diff --git a/USR/SRC/bldc_ctrl.c b/USR/SRC/bldc_ctrl.c
index 2f3d428..322ce9c 100644
--- a/USR/SRC/bldc_ctrl.c
+++ b/USR/SRC/bldc_ctrl.c
@@ -22,7 +22,12 @@
 {
   // PWM_TIMx_Configuration(); // ������ƶ�ʱ�������ų�ʼ��
   // hall_tim_config();        // ������������ʼ��
-  sd_gpio_config(); // sd ���ų�ʼ��
+  // sd_gpio_config(); // sd ���ų�ʼ��
+  // Set_SDH2136_Enable();
+  Set_SDH2136_Disable();
+  bldcm_data.direction = MOTOR_FWD;
+  bldcm_data.is_enable = 1;
+  bldcm_data.dutyfactor = 1500;
 }
 
 /**
diff --git a/USR/SRC/gd32e23x_it.c b/USR/SRC/gd32e23x_it.c
index 85acfff..cb0933d 100644
--- a/USR/SRC/gd32e23x_it.c
+++ b/USR/SRC/gd32e23x_it.c
@@ -157,9 +157,8 @@
     if (RESET != exti_interrupt_flag_get(EXTI_4 | EXTI_5 | EXTI_15))
     {
         HAL_HallExti_TriggerCallback();
+        exti_interrupt_flag_clear(EXTI_4 | EXTI_5 | EXTI_15);
     }
-
-    exti_interrupt_flag_clear(EXTI_4 | EXTI_5 | EXTI_15);
 }
 
 /*!
diff --git a/USR/SRC/main.c b/USR/SRC/main.c
index a70f892..e8e0e54 100644
--- a/USR/SRC/main.c
+++ b/USR/SRC/main.c
@@ -10,9 +10,14 @@
 #include "bsp_pid.h"
 #include "os_task.h"
 #include "RttTask.h"
+#include "SEGGER_RTT_Conf.h"
+#include "SEGGER_RTT.h"
 
 static void Comm_Task(void *p)
 {
+	// uint8_t step = 0;
+	// step = get_hall_state();
+	// SEGGER_RTT_printf(0, "Hall state is:%d!\n", step);
 }
 
 int main()
diff --git a/USR/SRC/pwm.c b/USR/SRC/pwm.c
index b30d6e5..13d33dc 100644
--- a/USR/SRC/pwm.c
+++ b/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;
@@ -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);
 
-    /* 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);
 }
 

--
Gitblit v1.8.0