Forráskód Böngészése

update for gd32f305

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 3 éve
szülő
commit
c0686b4705

+ 4 - 3
Applications/app/app.c

@@ -123,20 +123,21 @@ static u32 _app_report_task(void *p) {
 	can_report_ext_status(0x43);
 	can_report_phase_current(0x45);
 	if (++loop % 10 == 0) {
+		//sys_debug("rst 0x%x\n", get_mcu_reset_source());
 		//sys_debug("modulation %f, %f\n", PMSM_FOC_Get()->out.f_vdqRation, PMSM_FOC_Get()->rtLim.rpmLimRamp.interpolation);
 		sys_debug("Slow: %d - %d\n", g_meas_MCTask.intval_time, g_meas_MCTask.exec_time);
 		sys_debug("Fast: %d - %d, err: %d-%d-%d\n", g_meas_foc.intval_time, g_meas_foc.exec_time, g_meas_foc.intval_hi_err, g_meas_foc.intval_low_err, g_meas_foc.exec_max_error_time);
 		//sys_debug("FOC time err %d %d\n", g_meas_foc.intval_time_h_error, g_meas_foc.intval_time_l_error);
-		sys_debug("acc vol %d\n", get_acc_vol());
+		//sys_debug("acc vol %d\n", get_acc_vol());
 		sys_debug("throttle %f\n", get_throttle_float());
 		sys_debug("ADC Vref %f, %f\n", get_adc_vref(), adc_5vref_compesion());
-		sys_debug("dead time %d\n", get_deadtime());
+		//sys_debug("dead time %d\n", get_deadtime());
 		//sys_debug("Vdq in %f, %f\n", PMSM_FOC_Get()->in.s_targetVdq.d, PMSM_FOC_Get()->in.s_targetVdq.q);
 		//sys_debug("Vdq out %f, %f\n", PMSM_FOC_Get()->out.s_OutVdq.d, PMSM_FOC_Get()->out.s_OutVdq.q);
 		//sys_debug("target current %f\n", PMSM_FOC_Get()->in.s_targetCurrent);
 		//thro_torque_log();
 		encoder_log();
-		sample_log();
+		//sample_log();
 		///PMSM_FOC_LogDebug();
 		//eCtrl_debug_log();
 		//err_code_log();

+ 6 - 0
Applications/bsp/at32/bsp.c

@@ -41,6 +41,12 @@ u8 mcu_chip_id(u8 *buff)
 	return sizeof(values);
 }
 
+u32 get_mcu_reset_source(void)
+{
+	uint32_t reset_source = CRM->ctrlsts;
+	CRM->ctrlsts_bit.rstfc = TRUE;
+	return reset_source;
+}
 
 void wdog_reload(void){
 #if CONFIG_DEBUG == 0

+ 7 - 0
Applications/bsp/at32/enc_intf.c

@@ -131,6 +131,7 @@ __weak void ENC_PWM_Duty_Handler(float t, float d) {
 
 }
 
+static float pwm_freq = 0.0f;
 void ENC_PWM_IRQHandler(void) {
     if(SET == tmr_flag_get(ENC_PWM_TIMER, ENC_PWM_TIMER_INT_FLG)){
         /* clear channel 0 interrupt bit */
@@ -141,5 +142,11 @@ void ENC_PWM_IRQHandler(void) {
 		float p_calc = ENC_PWM_Calc_P(ic0value);
 		float d_calc = ENC_PWM_Calc_P(ic1value);
 		ENC_PWM_Duty_Handler(p_calc, d_calc);
+		pwm_freq = (float)PWM_TIME_CLK/((float)ic0value);
     }
 }
+
+float enc_get_pwm_freq(void) {
+	return pwm_freq;
+}
+

+ 2 - 1
Applications/bsp/at32/enc_intf.h

@@ -3,7 +3,7 @@
 #include "os/os_types.h"
 #include "bsp/bsp.h"
 
-#define PWM_TIME_CLK 20000000U
+#define PWM_TIME_CLK 10000000U
 
 
 #define ENC_DIR_UP 1
@@ -21,6 +21,7 @@
 void enc_intf_quadrature_init(u32 rate);
 void enc_intf_pwm_counter(void);
 void enc_intf_init(u32 rate);
+float enc_get_pwm_freq(void);
 
 #endif /*_ENC_INTF_H__*/
 

+ 1 - 1
Applications/bsp/bsp_driver.h

@@ -41,5 +41,5 @@ void system_reboot(void);
 int wdog_set_timeout(int wdog_time);
 void systick_open(void);
 u8 mcu_chip_id(u8 *buff);
-
+u32 get_mcu_reset_source(void);
 #endif /* __BSP_DRIVER_H__ */

+ 94 - 32
Applications/bsp/gd32/adc.c

@@ -122,6 +122,95 @@ static void adc01_dma_init(void)
 }
 #endif
 
+#if (CONFIG_HW_VERSION==3)
+static void adc01_init(void) {
+    /* config ADC clock */
+    rcu_adc_clock_config(RCU_CKADC_CKAPB2_DIV4); //APB2 clk 120M, adc clk 30M
+	rcu_periph_clock_enable(RCU_ADC0);
+	rcu_periph_clock_enable(RCU_ADC1);
+	adc_deinit(ADC0);
+	adc_deinit(ADC1);
+
+	/* config work mode */
+    adc_special_function_config(ADC0, ADC_CONTINUOUS_MODE, ENABLE);
+    adc_special_function_config(ADC0, ADC_SCAN_MODE, ENABLE);
+    adc_special_function_config(ADC1, ADC_CONTINUOUS_MODE, ENABLE);
+    adc_special_function_config(ADC1, ADC_SCAN_MODE, ENABLE);
+
+    /* configure ADC data alignment */
+    adc_data_alignment_config(ADC0, ADC_DATAALIGN_RIGHT);
+	adc_data_alignment_config(ADC1, ADC_DATAALIGN_RIGHT);
+
+	/* configure ADC regular channel */
+	adc_channel_length_config(ADC0, ADC_REGULAR_CHANNEL, ADC01_NUM);
+	adc_regular_channel_config(ADC0, 0, MOS_TEMP_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+	adc_regular_channel_config(ADC0, 1, MOTOR_TEMP_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+	adc_regular_channel_config(ADC0, 2, THROTTLE_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+	adc_regular_channel_config(ADC0, 3, THROTTLE2_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+	adc_regular_channel_config(ADC0, 4, ZERO_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME); //insert zero vol
+	adc_regular_channel_config(ADC0, 5, ADC_CHANNEL_17, ADC_REGCHAN_SAMPLE_TIME); //mcu内部vref
+	adc_regular_channel_config(ADC0, 6, THROTTLE2_5V_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+	adc_regular_channel_config(ADC0, 7, U_VOL_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+	adc_regular_channel_config(ADC0, 8, ZERO_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME); //insert zero vol
+	adc_tempsensor_vrefint_enable();
+
+	adc_channel_length_config(ADC1, ADC_REGULAR_CHANNEL, ADC01_NUM);
+	adc_regular_channel_config(ADC1, 0, VBUS_V_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+	adc_regular_channel_config(ADC1, 1, ACC_V_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+	adc_regular_channel_config(ADC1, 2, VBUS_I_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+	adc_regular_channel_config(ADC1, 3, V_VOL_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+	adc_regular_channel_config(ADC1, 4, W_VOL_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+	adc_regular_channel_config(ADC1, 5, ZERO_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME); //insert zero vol
+	adc_regular_channel_config(ADC1, 6, THROTTLE_5V_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+	adc_regular_channel_config(ADC1, 7, ZERO_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME); //insert zero vol
+	adc_regular_channel_config(ADC1, 8, DC5V_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+	adc_buffer[VREF_BUFF_IDX] = VREF_ADC_DATA; //1.21/3.3*4095
+
+    /* configure ADC regular channel trigger */
+    adc_external_trigger_source_config(ADC0, ADC_REGULAR_CHANNEL, ADC0_1_2_EXTTRIG_REGULAR_NONE);
+	adc_external_trigger_source_config(ADC1, ADC_REGULAR_CHANNEL, ADC0_1_2_EXTTRIG_REGULAR_NONE);
+    adc_external_trigger_config(ADC0, ADC_REGULAR_CHANNEL, ENABLE);
+	adc_external_trigger_config(ADC1, ADC_REGULAR_CHANNEL, ENABLE);
+
+	/* configure ADC inserted channel length */
+	adc_channel_length_config(ADC0, ADC_INSERTED_CHANNEL, 1);
+	adc_update_insert_sample_time(ADC0, V_PHASE_I_CHAN, ADC_SAMPLE_TIME);
+	adc_update_insert_sample_time(ADC0, W_PHASE_I_CHAN, ADC_SAMPLE_TIME);
+
+	adc_channel_length_config(ADC1, ADC_INSERTED_CHANNEL, 1);
+	adc_update_insert_sample_time(ADC1, V_PHASE_I_CHAN, ADC_SAMPLE_TIME);
+	adc_update_insert_sample_time(ADC1, W_PHASE_I_CHAN, ADC_SAMPLE_TIME);
+
+	adc_mode_config(ADC_DUAL_MODE);
+
+    /* configure ADC inserted channel trigger */
+    adc_external_trigger_source_config(ADC0, ADC_INSERTED_CHANNEL, ADC_TRIGGER_PHASE);
+    /* ADC external trigger enable */
+    adc_external_trigger_config(ADC0, ADC_INSERTED_CHANNEL, ENABLE);
+    /* ADC1 external trigger disable */
+	adc_external_trigger_source_config(ADC1, ADC_INSERTED_CHANNEL, ADC_TRIGGER_NONE);
+    adc_external_trigger_config(ADC1, ADC_INSERTED_CHANNEL, ENABLE);
+
+    /* enable ADC interface */
+    adc_enable(ADC0);
+	delay_ms(1);
+    /* ADC calibration and reset calibration */
+    adc_calibration_enable(ADC0);
+    adc_enable(ADC1);
+	delay_ms(1);
+    /* ADC calibration and reset calibration */
+    adc_calibration_enable(ADC1);
+
+	adc_dma_mode_enable(ADC0);
+
+	adc_disable_ext_trigger();
+
+	nvic_irq_enable(ADC0_1_IRQn, ADC_IRQ_PRIORITY, 0);
+
+	//start regular channels
+	adc_software_trigger_enable(ADC0, ADC_REGULAR_CHANNEL);
+}
+#else
 static void adc0_init(void){
     /* config ADC clock */
     rcu_adc_clock_config(RCU_CKADC_CKAPB2_DIV4); //APB2 clk 120M, adc clk 30M
@@ -181,19 +270,6 @@ static void adc0_init(void){
 	adc_regular_channel_config(ADC0, 5, W_VOL_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
 	adc_regular_channel_config(ADC0, 6, ADC_CHANNEL_10, ADC_REGCHAN_SAMPLE_TIME);
 	adc_regular_channel_config(ADC0, 7, ADC_CHANNEL_17, ADC_REGCHAN_SAMPLE_TIME);
-	adc_tempsensor_vrefint_enable();
-	adc_buffer[VREF_BUFF_IDX] = VREF_ADC_DATA; //1.21/3.3*4095
-#elif (CONFIG_HW_VERSION==3)
-	adc_regular_channel_config(ADC0, 0, MOS_TEMP_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
-	adc_regular_channel_config(ADC0, 1, MOTOR_TEMP_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
-	adc_regular_channel_config(ADC0, 2, THROTTLE_CHAN, ADC_REGCHAN_SAMPLE_TIME);
-	adc_regular_channel_config(ADC0, 3, THROTTLE2_CHAN, ADC_REGCHAN_SAMPLE_TIME);
-	adc_regular_channel_config(ADC0, 4, ZERO_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME); //insert zero vol
-	adc_regular_channel_config(ADC0, 5, ADC_CHANNEL_17, ADC_REGCHAN_SAMPLE_TIME); //mcu内部vref
-	adc_regular_channel_config(ADC0, 6, THROTTLE2_5V_CHAN, ADC_REGCHAN_SAMPLE_TIME);
-	adc_regular_channel_config(ADC0, 7, U_VOL_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
-	adc_regular_channel_config(ADC0, 8, ZERO_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME); //insert zero vol
-
 	adc_tempsensor_vrefint_enable();
 	adc_buffer[VREF_BUFF_IDX] = VREF_ADC_DATA; //1.21/3.3*4095
 #endif
@@ -249,24 +325,6 @@ static void adc1_init(void){
 	adc_external_trigger_source_config(ADC1, ADC_INSERTED_CHANNEL, ADC_TRIGGER_NONE);
     adc_external_trigger_config(ADC1, ADC_INSERTED_CHANNEL, ENABLE);
 
-#if (CONFIG_HW_VERSION==3)
-	adc_channel_length_config(ADC1, ADC_REGULAR_CHANNEL, ADC01_NUM);
-
-	adc_regular_channel_config(ADC1, 0, VBUS_V_CHAN, ADC_REGCHAN_SAMPLE_TIME);
-	adc_regular_channel_config(ADC1, 1, ACC_V_CHAN, ADC_REGCHAN_SAMPLE_TIME);
-	adc_regular_channel_config(ADC1, 2, VBUS_I_CHAN, ADC_REGCHAN_SAMPLE_TIME);
-	adc_regular_channel_config(ADC1, 3, V_VOL_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
-	adc_regular_channel_config(ADC1, 4, W_VOL_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
-	adc_regular_channel_config(ADC1, 5, ZERO_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME); //insert zero vol
-	adc_regular_channel_config(ADC1, 6, THROTTLE_5V_CHAN, ADC_REGCHAN_SAMPLE_TIME);
-	adc_regular_channel_config(ADC1, 7, ZERO_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME); //insert zero vol
-	adc_regular_channel_config(ADC1, 8, DC5V_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
-    /* configure ADC regular channel trigger */
-    adc_external_trigger_source_config(ADC1, ADC_REGULAR_CHANNEL, ADC0_1_2_EXTTRIG_REGULAR_NONE);
-    adc_external_trigger_config(ADC1, ADC_REGULAR_CHANNEL, ENABLE);
-
-	adc_dma_mode_enable(ADC1);
-#endif
     /* enable ADC interface */
     adc_enable(ADC1);
 	delay_ms(1);
@@ -274,6 +332,7 @@ static void adc1_init(void){
     adc_calibration_enable(ADC1);	
 }
 
+#endif
 
 static void adc_gpio_init(void) {
 
@@ -368,10 +427,13 @@ static void adc_gpio_init(void) {
 void adc_init(void) {
 	adc_gpio_init();
 	adc01_dma_init();
+#if (CONFIG_HW_VERSION==3)
+	adc01_init();
+#else
 	adc0_init();
 	adc1_init();
+#endif
 	adc_current_sample_config(0);
-	adc_software_trigger_enable(ADC0, ADC_REGULAR_CHANNEL);
 }
 
 void adc_set_vref_calc(float v) {

+ 1 - 1
Applications/bsp/gd32/adc.h

@@ -16,7 +16,7 @@ inserted ADC 由timer0 ch3触发,
 #define ISQ3_OFFSET 15
 #define IL_OFFSET   20
 
-#define ADC_SAMPLE_TIME ADC_SAMPLETIME_28POINT5
+#define ADC_SAMPLE_TIME ADC_SAMPLETIME_13POINT5
 #define ADC_TRIGGER_PHASE ADC0_1_EXTTRIG_INSERTED_T0_CH3
 #define ADC_TRIGGER_PHASE2 ADC0_1_EXTTRIG_INSERTED_T1_CH0
 #define ADC_TRIGGER_NONE  ADC0_1_2_EXTTRIG_INSERTED_NONE

+ 23 - 1
Applications/bsp/gd32/board_mc100_v1.h

@@ -92,6 +92,20 @@
 #define PWM_BRAKE_RCU 	RCU_GPIOB
 #define PWM_BRAKE_MODE 	GPIO_MODE_IN_FLOATING
 
+#ifdef GD32F30X_CL
+#define PWM_BRK_IRQ TIMER0_BRK_TIMER8_IRQn
+#define PWM_UP_IRQ  TIMER0_UP_TIMER9_IRQn
+#define PWM_UP_IRQHandler   TIMER0_UP_TIMER9_IRQHandler
+#define PWM_BRK_IRQHandler  TIMER0_BRK_TIMER8_IRQHandler
+
+#else
+#define PWM_BRK_IRQ TIMER0_BRK_IRQn
+#define PWM_UP_IRQ  TIMER0_UP_IRQn
+#define PWM_UP_IRQHandler   TIMER0_UP_IRQHandler
+#define PWM_BRK_IRQHandler  TIMER0_BRK_IRQHandler
+#endif
+
+
 #define HALL_SENSOR_CEOF 0.32F
 
 /* 高边电流传感器采样 */
@@ -263,7 +277,15 @@
 #define CAN_RX_GROUP GPIOA
 #define CAN_RX_PIN   GPIO_PIN_11
 #define CAN_PIN_RCU  RCU_GPIOA
-
+#ifdef GD32F30X_CL
+#define CAN_REMAP    GPIO_CAN0_PARTIAL_REMAP
+#define CAN_IRQ0     CAN0_RX0_IRQn
+#define CAN_RX0_IRQHandler  CAN0_RX0_IRQHandler
+#else
+#define CAN_REMAP    GPIO_CAN_PARTIAL_REMAP
+#define CAN_IRQ0     USBD_LP_CAN0_RX0_IRQn
+#define CAN_RX0_IRQHandler  USBD_LP_CAN0_RX0_IRQHandler
+#endif
 
 /* 是否用编码器 */
 #define USE_ENCODER_ABI

+ 1 - 1
Applications/bsp/gd32/board_mc105_v3.h

@@ -385,7 +385,7 @@
 #endif
 #define DEBUG_PORT_UART2
 
-#define CONFIG_MOT_TYPE MOTOR_BLUESHARK_ZD_100
+#define CONFIG_MOT_TYPE MOTOR_BLUESHARK_A1
 
 //#define CONFIG_DQ_STEP_RESPONSE
 

+ 9 - 0
Applications/bsp/gd32/bsp.c

@@ -39,6 +39,15 @@ u8 mcu_chip_id(u8 *buff)
 	return sizeof(values);
 }
 
+static u32 _mcu_rst_status = 0xFFFFFFFF;
+u32 get_mcu_reset_source(void)
+{
+	if (_mcu_rst_status == 0xFFFFFFFF) {
+		_mcu_rst_status = RCU_RSTSCK;
+		rcu_all_reset_flag_clear();
+	}
+	return _mcu_rst_status;
+}
 
 void wdog_reload(void){
 #if CONFIG_DEBUG == 0

+ 6 - 0
Applications/bsp/gd32/enc_intf.c

@@ -150,6 +150,7 @@ __weak void ENC_PWM_Duty_Handler(float t, float d) {
 
 }
 
+static float pwm_freq = 0.0f;
 void ENC_PWM_IRQHandler(void) {
     if(SET == timer_interrupt_flag_get(ENC_PWM_TIMER, ENC_PWM_TIMER_INT_FLG)){
         /* clear channel 0 interrupt bit */
@@ -160,5 +161,10 @@ void ENC_PWM_IRQHandler(void) {
 		float p_calc = ENC_PWM_Calc_P(ic0value);
 		float d_calc = ENC_PWM_Calc_P(ic1value);
 		ENC_PWM_Duty_Handler(p_calc, d_calc);
+		pwm_freq = (float)PWM_TIME_CLK/((float)ic0value);
     }
 }
+
+float enc_get_pwm_freq(void) {
+	return pwm_freq;
+}

+ 1 - 0
Applications/bsp/gd32/enc_intf.h

@@ -21,6 +21,7 @@
 void enc_intf_quadrature_init(u32 rate);
 void enc_intf_pwm_counter(void);
 void enc_intf_init(u32 rate);
+float enc_get_pwm_freq(void);
 
 #endif /*_ENC_INTF_H__*/
 

+ 0 - 7
Applications/bsp/gd32/gd32_bkp.c

@@ -76,11 +76,4 @@ void gd32_bkp_get_backtrace(uint32_t *backtrace, uint32_t *stack_over, uint32_t
 	*line = bkp_read_data(BACK_TRACE_LINE_REG);
 }
 
-uint32_t  gd32_get_reset_source(void)
-{
-	uint32_t reset_source = RCU_RSTSCK;
-	rcu_all_reset_flag_clear();
-	return reset_source;
-}
-
 

+ 1 - 0
Applications/foc/motor/encoder.c

@@ -410,4 +410,5 @@ float encoder_get_abi_angle(void) {
 void encoder_log(void) {
 	sys_debug("pwm %f, abi %f\n", encoder_get_pwm_angle(), encoder_get_abi_angle());
 	sys_debug("pwm count %d, I count %d\n", g_encoder.pwm_count, abi_I_delta);
+	sys_debug("pwm freq %f\n", enc_get_pwm_freq());
 }

+ 1 - 1
Applications/foc/motor/motor.c

@@ -602,7 +602,7 @@ void mc_force_run_open(s16 vd, s16 vq) {
 	pwm_enable_channel();
 	phase_current_calibrate_wait();
 	PMSM_FOC_Set_Angle(0);
-	PMSM_FOC_SetOpenVdq((float)vd * 0.7f, 0);
+	PMSM_FOC_SetOpenVdq((float)vd * 1.0f, 0);
 	_force_wait = 2000;
 	motor.b_force_run = true;
 }

+ 2 - 2
Project/MC100.uvprojx

@@ -16,8 +16,8 @@
         <TargetCommonOption>
           <Device>GD32F303RC</Device>
           <Vendor>GigaDevice</Vendor>
-          <PackID>GigaDevice.GD32F30x_DFP.2.2.0</PackID>
-          <PackURL>http://gd32mcu.com/data/documents/pack/</PackURL>
+          <PackID>GigaDevice.GD32F30x_DFP.2.2.3</PackID>
+          <PackURL>https://gd32mcu.com/data/documents/pack/</PackURL>
           <Cpu>IRAM(0x20000000,0x0C000) IROM(0x08000000,0x040000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE</Cpu>
           <FlashUtilSpec></FlashUtilSpec>
           <StartupFile></StartupFile>

+ 6 - 1
Project/MC105_V3.uvoptx

@@ -120,7 +120,7 @@
         <SetRegEntry>
           <Number>0</Number>
           <Key>CMSIS_AGDI</Key>
-          <Name>-X"Any" -UAny -O206 -S0 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0GD32F30x_CL.FLM -FS08000000 -FL040000 -FP0($$Device:GD32F305RC$Flash\GD32F30x_CL.FLM)</Name>
+          <Name>-X"Any" -UAny -O206 -S10 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0GD32F30x_CL.FLM -FS08000000 -FL040000 -FP0($$Device:GD32F305RC$Flash\GD32F30x_CL.FLM)</Name>
         </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
@@ -160,6 +160,11 @@
           <WinNumber>1</WinNumber>
           <ItemText>adc_buffer,0x0A</ItemText>
         </Ww>
+        <Ww>
+          <count>1</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>adc_buffer[1],0x0A</ItemText>
+        </Ww>
       </WatchWindow1>
       <MemoryWindow1>
         <Mm>