Browse Source

GD32 改为305

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 3 years ago
parent
commit
381929ce3e

+ 3 - 4
Applications/app/app.c

@@ -126,7 +126,7 @@ static u32 _app_report_task(void *p) {
 		//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("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("throttle %f\n", get_throttle_float());
 		sys_debug("ADC Vref %f, %f\n", get_adc_vref(), adc_5vref_compesion());
@@ -135,16 +135,15 @@ static u32 _app_report_task(void *p) {
 		//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();
-		//sys_debug("fan rpm %d, %d\n", mc_params()->fan[0].rpm, mc_params()->fan[1].rpm);
 		encoder_log();
-		//sample_log();
+		sample_log();
 		///PMSM_FOC_LogDebug();
 		//eCtrl_debug_log();
 		//err_code_log();
 	}
 	return 200;
 }
-int plot_type = 3;
+int plot_type = 0;
 static void plot_smo_angle(void) {
 	float smo_angle = foc_observer_smo_angle();
 	float delta = smo_angle - PMSM_FOC_Get()->in.s_hallAngle;

+ 63 - 51
Applications/bsp/at32/adc.c

@@ -24,28 +24,40 @@
 #define MOTOR_TEMP_BUFF_IDX 11
 
 #elif (CONFIG_HW_VERSION==3)
-#define ADC1_NUM (12)
-#define ADC2_NUM 5
+#define ADC1_NUM 9
+#define ADC2_NUM 9
 
 #define MOS_TEMP_BUFF_IDX 0
-#define MOTOR_TEMP_BUFF_IDX 1
-#define THROTTLE_BUFF_IDX 2
-#define THROTTLE2_BUFF_IDX 3
-#define THROTTLE_5V_BUFF_IDX 5
-#define THROTTLE2_5V_BUFF_IDX 6
-#define U_VOL_BUFF_IDX 7
-#define VREF_BUFF_IDX 9
-#define VREF5v_BUFF_IDX 11
-
-#define VBUS_V_BUFF_IDX 12
-#define ACC_V_BUFF_IDX 13
-#define VBUS_I_BUFF_IDX 14
-#define V_VOL_BUFF_IDX 15
-#define W_VOL_BUFF_IDX 16
+#define VBUS_V_BUFF_IDX 1
+
+#define MOTOR_TEMP_BUFF_IDX 2
+#define ACC_V_BUFF_IDX 3
+
+#define THROTTLE_BUFF_IDX 4
+#define VBUS_I_BUFF_IDX 5
+
+#define THROTTLE2_BUFF_IDX 6
+#define V_VOL_BUFF_IDX 7
+
+//zero chan            8
+#define W_VOL_BUFF_IDX 9
+
+#define VREF_BUFF_IDX   10
+//zero chan             11
+
+#define THROTTLE2_5V_BUFF_IDX 12
+#define THROTTLE_5V_BUFF_IDX 13
+
+#define U_VOL_BUFF_IDX 14
+//zero chan            15
+
+//zero chan            16
+#define VREF5v_BUFF_IDX 17
+
 #endif
 #endif
 #define REG_CHAN_NUM (ADC1_NUM + ADC2_NUM)
-s16 adc_buffer[REG_CHAN_NUM];
+u16 adc_buffer[REG_CHAN_NUM];
 float vref_adc = 1408.0f;
 float vref_5v_adc = 2047.0f;
 
@@ -56,8 +68,6 @@ static void analog_gpio_init(gpio_type *gpiox, u32 pin) {
 	/* gpio configuration */
 	gpio_default_para_init(&gpio_init_struct);
 	gpio_init_struct.gpio_mode = GPIO_MODE_ANALOG;
-	gpio_init_struct.gpio_out_type = GPIO_OUTPUT_OPEN_DRAIN;
-	gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
 	gpio_init_struct.gpio_pins = pin;
 	gpio_init(gpiox, &gpio_init_struct);
 }
@@ -71,21 +81,18 @@ static void adc01_dma_init(void)
 	/* dma configuration */
 	dma_reset(DMA1_CHANNEL1);
 	dma_default_para_init(&dma_init_struct);
-	dma_init_struct.buffer_size = REG_CHAN_NUM;
+	dma_init_struct.buffer_size = REG_CHAN_NUM/2;
 	dma_init_struct.direction = DMA_DIR_PERIPHERAL_TO_MEMORY;
 	dma_init_struct.memory_base_addr = (uint32_t)adc_buffer;
-	dma_init_struct.memory_data_width = DMA_MEMORY_DATA_WIDTH_HALFWORD;
+	dma_init_struct.memory_data_width = DMA_MEMORY_DATA_WIDTH_WORD;
 	dma_init_struct.memory_inc_enable = TRUE;
 	dma_init_struct.peripheral_base_addr = (uint32_t)&(ADC1->odt);
-	dma_init_struct.peripheral_data_width = DMA_PERIPHERAL_DATA_WIDTH_HALFWORD;
+	dma_init_struct.peripheral_data_width = DMA_PERIPHERAL_DATA_WIDTH_WORD;
 	dma_init_struct.peripheral_inc_enable = FALSE;
 	dma_init_struct.priority = DMA_PRIORITY_HIGH;
 	dma_init_struct.loop_mode_enable = TRUE;
 	dma_init(DMA1_CHANNEL1, &dma_init_struct);
 	
-	/* Flexible Mode Channel Cofig */
-	dma_flexible_config(DMA1, FLEX_CHANNEL1, DMA_FLEXIBLE_ADC1);
-	
 	dma_channel_enable(DMA1_CHANNEL1, TRUE);
 
 }
@@ -97,39 +104,39 @@ static void adc0_init(void){
 	/* adc clock configuration */
 	crm_adc_clock_div_set(CRM_ADC_DIV_4);								  /* PCLK2 Max. CLK = 100M Hz, ADC_CLK = 100/4 = 25M Hz */
 	crm_periph_clock_enable(CRM_ADC1_PERIPH_CLOCK, TRUE);
-
+	adc_reset(ADC1);
 	/* select adc mster-slave mode */
-	adc_combine_mode_select(ADC_ORDINARY_SMLT_PREEMPT_INTERLTRIG_MODE);
+	adc_combine_mode_select(ADC_PREEMPT_SMLT_ONLY_MODE);
 
 	adc_base_struct.sequence_mode = TRUE;
-	adc_base_struct.repeat_mode = FALSE;
+	adc_base_struct.repeat_mode = TRUE;
 	adc_base_struct.data_align = ADC_RIGHT_ALIGNMENT;
 	adc_base_struct.ordinary_channel_length = ADC1_NUM;
 	adc_base_config(ADC1, &adc_base_struct);
 
 	/* ordinary channel configuration */
-	adc_ordinary_channel_set(ADC1, MOS_TEMP_ADC_CHAN, 0, ADC_REGCHAN_SAMPLE_TIME);
-	adc_ordinary_channel_set(ADC1, MOTOR_TEMP_ADC_CHAN, 1, ADC_REGCHAN_SAMPLE_TIME);
-	adc_ordinary_channel_set(ADC1, THROTTLE_CHAN, 2, ADC_REGCHAN_SAMPLE_TIME);
-	adc_ordinary_channel_set(ADC1, THROTTLE2_CHAN, 3, ADC_REGCHAN_SAMPLE_TIME);
-	adc_ordinary_channel_set(ADC1, ZERO_ADC_CHAN, 4, ADC_REGCHAN_SAMPLE_TIME); //insert zero vol
-	adc_ordinary_channel_set(ADC1, THROTTLE_5V_CHAN, 5, ADC_REGCHAN_SAMPLE_TIME);
-	adc_ordinary_channel_set(ADC1, THROTTLE2_5V_CHAN, 6, ADC_REGCHAN_SAMPLE_TIME);
-	adc_ordinary_channel_set(ADC1, U_VOL_ADC_CHAN, 7, ADC_REGCHAN_SAMPLE_TIME);
-	adc_ordinary_channel_set(ADC1, ZERO_ADC_CHAN, 8, ADC_REGCHAN_SAMPLE_TIME); //insert zero vol
-	adc_ordinary_channel_set(ADC1, ADC_CHANNEL_17, 9, ADC_REGCHAN_SAMPLE_TIME); //mcu内部vref
-	adc_ordinary_channel_set(ADC1, ZERO_ADC_CHAN, 10, ADC_REGCHAN_SAMPLE_TIME); //insert zero vol
-	adc_ordinary_channel_set(ADC1, DC5V_ADC_CHAN, 11, ADC_REGCHAN_SAMPLE_TIME);
+	adc_ordinary_channel_set(ADC1, MOS_TEMP_ADC_CHAN, 1, ADC_REGCHAN_SAMPLE_TIME);
+	adc_ordinary_channel_set(ADC1, MOTOR_TEMP_ADC_CHAN, 2, ADC_REGCHAN_SAMPLE_TIME);
+	adc_ordinary_channel_set(ADC1, THROTTLE_CHAN, 3, ADC_REGCHAN_SAMPLE_TIME);
+	adc_ordinary_channel_set(ADC1, THROTTLE2_CHAN, 4, ADC_REGCHAN_SAMPLE_TIME);
+	adc_ordinary_channel_set(ADC1, ZERO_ADC_CHAN, 5, ADC_REGCHAN_SAMPLE_TIME); //insert zero vol
+	adc_ordinary_channel_set(ADC1, ADC_CHANNEL_17, 6, ADC_REGCHAN_SAMPLE_TIME); //mcu内部vref
+	adc_ordinary_channel_set(ADC1, THROTTLE2_5V_CHAN, 7, ADC_REGCHAN_SAMPLE_TIME);
+	adc_ordinary_channel_set(ADC1, U_VOL_ADC_CHAN, 8, ADC_REGCHAN_SAMPLE_TIME);
+	adc_ordinary_channel_set(ADC1, ZERO_ADC_CHAN, 9, ADC_REGCHAN_SAMPLE_TIME); //insert zero vol
+#if 1
+#endif
 
 	adc_ordinary_conversion_trigger_set(ADC1, ADC12_ORDINARY_TRIG_SOFTWARE, TRUE);
 
 	adc_preempt_channel_length_set(ADC1, 1);
-	adc_preempt_channel_set(ADC1, V_PHASE_I_CHAN, 0, ADC_SAMPLE_TIME);
+	adc_preempt_channel_set(ADC1, V_PHASE_I_CHAN, 1, ADC_SAMPLE_TIME);
 	/* adc prempt trigger source */
 	adc_preempt_conversion_trigger_set(ADC1, ADC12_PREEMPT_TRIG_TMR1CH4, TRUE);
 
 	adc_tempersensor_vintrv_enable(TRUE);
 
+	adc_dma_mode_enable(ADC1, TRUE);
 	/* ADC enable and calibration */
 	if(ADC1->ctrl2_bit.adcen != TRUE)
 	{
@@ -142,7 +149,6 @@ static void adc0_init(void){
 	nvic_irq_enable(ADC1_2_IRQn, ADC_IRQ_PRIORITY, 0);
 
 	adc_disable_ext_trigger();
-
 }
 
 static void adc1_init(void){
@@ -152,27 +158,32 @@ static void adc1_init(void){
 	/* adc clock configuration */
 	crm_periph_clock_enable(CRM_ADC2_PERIPH_CLOCK, TRUE);
 
+	adc_reset(ADC2);
 	adc_base_struct.sequence_mode = TRUE;
-	adc_base_struct.repeat_mode = FALSE;
+	adc_base_struct.repeat_mode = TRUE;
 	adc_base_struct.data_align = ADC_RIGHT_ALIGNMENT;
 	adc_base_struct.ordinary_channel_length = ADC2_NUM;
 	adc_base_config(ADC2, &adc_base_struct);
 
 	/* ordinary channel configuration */
-	adc_ordinary_channel_set(ADC2, VBUS_V_CHAN, 0, ADC_REGCHAN_SAMPLE_TIME);
-	adc_ordinary_channel_set(ADC2, ACC_V_CHAN, 1, ADC_REGCHAN_SAMPLE_TIME);
-	adc_ordinary_channel_set(ADC2, VBUS_I_CHAN, 2, ADC_REGCHAN_SAMPLE_TIME);
-	adc_ordinary_channel_set(ADC2, V_VOL_ADC_CHAN, 3, ADC_REGCHAN_SAMPLE_TIME);
-	adc_ordinary_channel_set(ADC2, W_VOL_ADC_CHAN, 4, ADC_REGCHAN_SAMPLE_TIME);
+	adc_ordinary_channel_set(ADC2, VBUS_V_CHAN, 1, ADC_REGCHAN_SAMPLE_TIME);
+	adc_ordinary_channel_set(ADC2, ACC_V_CHAN, 2, ADC_REGCHAN_SAMPLE_TIME);
+	adc_ordinary_channel_set(ADC2, VBUS_I_CHAN, 3, ADC_REGCHAN_SAMPLE_TIME);
+	adc_ordinary_channel_set(ADC2, V_VOL_ADC_CHAN, 4, ADC_REGCHAN_SAMPLE_TIME);
+	adc_ordinary_channel_set(ADC2, W_VOL_ADC_CHAN, 5, ADC_REGCHAN_SAMPLE_TIME);
+	adc_ordinary_channel_set(ADC2, ZERO_ADC_CHAN, 6, ADC_REGCHAN_SAMPLE_TIME); //insert zero vol
+	adc_ordinary_channel_set(ADC2, THROTTLE_5V_CHAN, 7, ADC_REGCHAN_SAMPLE_TIME);
+	adc_ordinary_channel_set(ADC2, ZERO_ADC_CHAN, 8, ADC_REGCHAN_SAMPLE_TIME); //insert zero vol
+	adc_ordinary_channel_set(ADC2, DC5V_ADC_CHAN, 9, ADC_REGCHAN_SAMPLE_TIME);
 
 	adc_ordinary_conversion_trigger_set(ADC2, ADC12_ORDINARY_TRIG_SOFTWARE, TRUE);
 
-
 	adc_preempt_channel_length_set(ADC2, 1);
-	adc_preempt_channel_set(ADC2, W_PHASE_I_CHAN, 0, ADC_SAMPLE_TIME);
+	adc_preempt_channel_set(ADC2, W_PHASE_I_CHAN, 1, ADC_SAMPLE_TIME);
 	/* adc prempt trigger source */
 	adc_preempt_conversion_trigger_set(ADC2, ADC12_PREEMPT_TRIG_TMR1CH4, TRUE);
 
+	//adc_dma_mode_enable(ADC2, TRUE);
 	/* ADC enable and calibration */
 	if(ADC2->ctrl2_bit.adcen != TRUE)
 	{
@@ -280,6 +291,7 @@ void adc_init(void) {
 	adc0_init();
 	adc1_init();
 	adc_current_sample_config(0);
+	adc_ordinary_software_trigger_enable(ADC1, TRUE);
 }
 
 void adc_set_vref_calc(float v) {
@@ -303,7 +315,7 @@ float adc_vref_compesion(void) {
 }
 
 static float vref_5v_compestion_filter = 1.0f;
-#define VREF_5V_COMPESTION() (vref_5v_adc/(float)adc_buffer[VREF5v_BUFF_IDX])
+#define VREF_5V_COMPESTION() (1.0f)//(vref_5v_adc/(float)adc_buffer[VREF5v_BUFF_IDX])
 void adc_5vref_filter(void) {
 	float value = VREF_5V_COMPESTION();
 	LowPass_Filter(vref_5v_compestion_filter, value, VREF_COMP_LFP_CEOF);

+ 6 - 4
Applications/bsp/at32/adc.h

@@ -32,16 +32,18 @@ static void __inline adc_phase_current_read(u8 phases, s32 *v1, s32 *v2) {
 
 
 static void __inline adc_current_sample_config(u8 phases) {
-	ADC1->psq_bit.psn3 = V_PHASE_I_CHAN;
-	ADC2->psq_bit.psn3 = W_PHASE_I_CHAN;
+	ADC1->psq_bit.psn4 = V_PHASE_I_CHAN;
+	ADC2->psq_bit.psn4 = W_PHASE_I_CHAN;
 }
 
 static void __inline adc_disable_ext_trigger(void) {   
-	ADC1->ctrl2_bit.octen = FALSE;
+	ADC1->ctrl2_bit.pcten = FALSE;
+	ADC2->ctrl2_bit.pcten = FALSE;
 }
 
 static void __inline adc_enable_ext_trigger(void) {	
-	ADC1->ctrl2_bit.octen = TRUE;
+	ADC1->ctrl2_bit.pcten = TRUE;
+	ADC2->ctrl2_bit.pcten = TRUE;
 }
 
 static __inline__ void adc_clear_irq_flags(void) {

+ 1 - 1
Applications/bsp/at32/board_at_mc105_v3.h

@@ -92,7 +92,7 @@
 #define PWM_BRAKE_GROUP GPIOB
 #define PWM_BRAKE_PIN 	GPIO_PINS_12
 #define PWM_BRAKE_RCU 	CRM_GPIOB_PERIPH_CLOCK
-#define PWM_BRAKE_MODE 	GPIO_MODE_MUX
+#define PWM_BRAKE_MODE 	GPIO_MODE_INPUT
 
 #define HALL_SENSOR_CEOF 0.32F
 

+ 5 - 1
Applications/bsp/at32/bsp.c

@@ -4,9 +4,11 @@
 #include "os/os_types.h"
 #include "version.h"
 
+extern void system_clock_config(void);
 static void wdog_enable(void);
 
 void bsp_init(void){
+	system_clock_config();
 	wdog_enable();
 	debug_periph_mode_set(DEBUG_TMR1_PAUSE, TRUE);
 	systick_open();
@@ -27,7 +29,9 @@ void systick_close(void)
 
 void systick_open(void)
 {
-	SysTick_Config(SystemCoreClock / 1000);
+	systick_clock_source_config(SYSTICK_CLOCK_SOURCE_AHBCLK_NODIV);
+	SysTick_Config(system_core_clock / 1000);
+	NVIC_SetPriority(SysTick_IRQn, 0x00U);
 }
 
 u8 mcu_chip_id(u8 *buff)

+ 3 - 3
Applications/bsp/at32/can.c

@@ -118,15 +118,15 @@ static void shark_can0_config(void)
 	can_base_struct.aed_enable = TRUE;
 	can_base_struct.prsf_enable = FALSE;
 	can_base_struct.mdrsel_selection = CAN_DISCARDING_FIRST_RECEIVED;
-	can_base_struct.mmssr_selection = CAN_SENDING_BY_ID;
+	can_base_struct.mmssr_selection = CAN_SENDING_BY_REQUEST;
 	can_base_init(CAN1, &can_base_struct);
 
 	//CAN0_SPEED==250 //250k bps
 	/* can baudrate, set baudrate = pclk/(baudrate_div *(1 + bts1_size + bts2_size)) */
-	can_baudrate_struct.baudrate_div = 45;
+	can_baudrate_struct.baudrate_div = 40;
 	can_baudrate_struct.rsaw_size = CAN_RSAW_1TQ;
 	can_baudrate_struct.bts1_size = CAN_BTS1_5TQ;
-	can_baudrate_struct.bts2_size = CAN_BTS2_3TQ;
+	can_baudrate_struct.bts2_size = CAN_BTS2_4TQ;
 	can_baudrate_set(CAN1, &can_baudrate_struct);
 
 	/* can filter 0 config */

+ 3 - 3
Applications/bsp/at32/pwm.c

@@ -110,7 +110,7 @@ static void _pwm_gpio_config(void)
 #ifdef PWM_BRAKE_GROUP
     /* TIMER0 BKIN */
 	crm_periph_clock_enable(PWM_BRAKE_RCU, TRUE);
-    pwm_gpio_init(PWM_BRAKE_GROUP, PWM_BRAKE_MODE, GPIO_OUTPUT_PUSH_PULL,GPIO_PULL_UP, PWM_BRAKE_PIN);
+    pwm_gpio_init(PWM_BRAKE_GROUP, PWM_BRAKE_MODE, GPIO_OUTPUT_PUSH_PULL,GPIO_PULL_NONE, PWM_BRAKE_PIN);
 #endif
 }
 
@@ -153,7 +153,7 @@ static void _init_pwm_timer(bool enable_brk) {
 	tmr_output_struct.oc_idle_state = FALSE;
 	tmr_output_struct.occ_output_state = TRUE;
 	tmr_output_struct.occ_polarity = TMR_OUTPUT_ACTIVE_LOW;
-	tmr_output_struct.occ_idle_state = TRUE;
+	tmr_output_struct.occ_idle_state = FALSE;
 	
 	/* channel 1, 2, 3 */
 	tmr_output_channel_config(pwm_timer, TMR_SELECT_CHANNEL_1, &tmr_output_struct);
@@ -175,7 +175,7 @@ static void _init_pwm_timer(bool enable_brk) {
 	tmr_brkdt_config_struct.auto_output_enable = FALSE;
 	tmr_brkdt_config_struct.deadtime = _dead_time(NS_2_TCLK(PWM_DEAD_TIME_NS));
 	tmr_brkdt_config_struct.fcsodis_state = TRUE;
-	tmr_brkdt_config_struct.fcsoen_state = TRUE;
+	tmr_brkdt_config_struct.fcsoen_state = FALSE;
 	tmr_brkdt_config_struct.brk_polarity = TMR_BRK_INPUT_ACTIVE_LOW;
 	tmr_brkdt_config_struct.wp_level = TMR_WP_OFF;
 	tmr_brkdt_config(pwm_timer, &tmr_brkdt_config_struct);

+ 8 - 2
Applications/bsp/at32/pwm.h

@@ -4,17 +4,23 @@
 #include "os/os_types.h"
 
 #define TIMER_CHCTL2_CH0EN               BIT(0)              /*!< channel 0 capture/compare function enable */
+#define TIMER_CHCTL2_CH0P                BIT(1)              /*!< channel 0 capture/compare function polarity */
 #define TIMER_CHCTL2_CH0NEN              BIT(2)              /*!< channel 0 complementary output enable */
+#define TIMER_CHCTL2_CH0NP               BIT(3)              /*!< channel 0 complementary output polarity */
 #define TIMER_CHCTL2_CH1EN               BIT(4)              /*!< channel 1 capture/compare function enable  */
+#define TIMER_CHCTL2_CH1P                BIT(5)              /*!< channel 1 capture/compare function polarity */
 #define TIMER_CHCTL2_CH1NEN              BIT(6)              /*!< channel 1 complementary output enable */
+#define TIMER_CHCTL2_CH1NP               BIT(7)              /*!< channel 1 complementary output polarity */
 #define TIMER_CHCTL2_CH2EN               BIT(8)              /*!< channel 2 capture/compare function enable  */
+#define TIMER_CHCTL2_CH2P                BIT(9)              /*!< channel 2 capture/compare function polarity */
 #define TIMER_CHCTL2_CH2NEN              BIT(10)             /*!< channel 2 complementary output enable */
-#define TIMER_CHCTL2_CH3EN               BIT(12)             /*!< channel 3 capture/compare function enable  */
+#define TIMER_CHCTL2_CH2NP               BIT(11)             /*!< channel 2 complementary output polarity */
+
 
 #define TIMxCCER_MASK_CH012        ((uint16_t)  (TIMER_CHCTL2_CH0EN|TIMER_CHCTL2_CH0NEN|\
                                                  TIMER_CHCTL2_CH1EN|TIMER_CHCTL2_CH1NEN|\
                                                  TIMER_CHCTL2_CH2EN|TIMER_CHCTL2_CH2NEN))
-
+#define TIMxCCER_MASK_CP           ((uint16_t) TIMER_CHCTL2_CH0NP | TIMER_CHCTL2_CH1NP |TIMER_CHCTL2_CH2NP)
 #define pwm_enable_channel() {pwm_timer->cctrl |= TIMxCCER_MASK_CH012;}
 #define pwm_disable_channel() {pwm_timer->cctrl &= ~TIMxCCER_MASK_CH012;}
 

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

@@ -35,13 +35,13 @@
 #define SHARK_UART0_tx_gpio_clk			CRM_GPIOB_PERIPH_CLOCK
 #define SHARK_UART0_rx_gpio_clk			CRM_GPIOB_PERIPH_CLOCK
 #define SHARK_UART0_tx_dma				DMA1
-#define SHARK_UART0_tx_dma_ch			DMA1_CHANNEL1
+#define SHARK_UART0_tx_dma_ch			DMA1_CHANNEL2
 #define SHARK_UART0_tx_dma_clk			CRM_DMA1_PERIPH_CLOCK
 #define SHARK_UART0_rx_dma				DMA1
-#define SHARK_UART0_rx_dma_ch			DMA1_CHANNEL2
+#define SHARK_UART0_rx_dma_ch			DMA1_CHANNEL3
 #define SHARK_UART0_rx_dma_clk			CRM_DMA1_PERIPH_CLOCK
-#define SHARK_UART0_DMA_TX_IRQ          DMA0_Channel1_IRQn
-#define UART_DMA_IRQHandler             DMA1_Channel2_IRQHandler
+#define SHARK_UART0_DMA_TX_IRQ          DMA0_Channel3_IRQn
+#define UART_DMA_IRQHandler             DMA1_Channel3_IRQHandler
 #endif
 
 // ================================================================================
@@ -203,7 +203,7 @@ static void shark_uart_tx_dma_init(shark_uart_t *uart){
 	dma_init_struct.loop_mode_enable = FALSE;
 	dma_init(uart->tx_dma_ch, &dma_init_struct);
 	/* config flexible dma for usart2 tx */
-	dma_flexible_config(DMA1, FLEX_CHANNEL1, DMA_FLEXIBLE_UART2_TX);
+	//dma_flexible_config(DMA1, FLEX_CHANNEL1, DMA_FLEXIBLE_UART2_TX);
 
 	usart_dma_transmitter_enable(uart->uart_com, TRUE);
 }
@@ -227,7 +227,7 @@ static void shark_uart_rx_dma_init(shark_uart_t *uart){
 	dma_init_struct.loop_mode_enable = FALSE;
 	dma_init(uart->rx_dma_ch, &dma_init_struct);	
 	/* config flexible dma for usart2 rx */
-	dma_flexible_config(DMA1, FLEX_CHANNEL2, DMA_FLEXIBLE_UART2_RX);
+	//dma_flexible_config(DMA1, FLEX_CHANNEL2, DMA_FLEXIBLE_UART2_RX);
 
 	usart_dma_receiver_enable(uart->uart_com, TRUE);
 }

+ 30 - 26
Applications/bsp/gd32/adc.c

@@ -36,25 +36,24 @@
 #define MOTOR_TEMP_BUFF_IDX 11
 
 #elif (CONFIG_HW_VERSION==3)
-#define ADC01_NUM (12)
-#define ADC2_NUM 5
+#define ADC01_NUM (16)
+#define ADC2_NUM 0
 
 #define MOS_TEMP_BUFF_IDX 0
 #define MOTOR_TEMP_BUFF_IDX 1
 #define THROTTLE_BUFF_IDX 2
 #define THROTTLE2_BUFF_IDX 3
-#define THROTTLE_5V_BUFF_IDX 5
-#define THROTTLE2_5V_BUFF_IDX 6
-#define U_VOL_BUFF_IDX 7
-#define VREF_BUFF_IDX 9
-#define VREF5v_BUFF_IDX 11
-
-#define VBUS_V_BUFF_IDX 12
-#define ACC_V_BUFF_IDX 13
-#define VBUS_I_BUFF_IDX 14
-#define V_VOL_BUFF_IDX 15
-#define W_VOL_BUFF_IDX 16
-
+#define THROTTLE_5V_BUFF_IDX 4
+#define THROTTLE2_5V_BUFF_IDX 5
+#define U_VOL_BUFF_IDX 6
+#define VREF_BUFF_IDX 8
+#define VREF5v_BUFF_IDX 10
+
+#define VBUS_V_BUFF_IDX 11
+#define ACC_V_BUFF_IDX 12
+#define VBUS_I_BUFF_IDX 13
+#define V_VOL_BUFF_IDX 14
+#define W_VOL_BUFF_IDX 15
 #endif
 #define REG_CHAN_NUM (ADC01_NUM + ADC2_NUM)
 s16 adc_buffer[REG_CHAN_NUM];
@@ -85,7 +84,7 @@ static void adc01_dma_init(void)
     dma_channel_enable(DMA0, DMA_CH0);
 }
 
-#ifdef CONFIG_BOARD_MCXXX
+#if (CONFIG_HW_VERSION==2)
 static void adc2_dma_init(void)
 {
     dma_parameter_struct dma_init_struct;
@@ -178,14 +177,19 @@ static void adc0_init(void){
 	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, THROTTLE_5V_CHAN, ADC_REGCHAN_SAMPLE_TIME);
-	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_regular_channel_config(ADC0, 9, ADC_CHANNEL_17, ADC_REGCHAN_SAMPLE_TIME); //mcu内部vref
-	adc_regular_channel_config(ADC0, 10, ZERO_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME); //insert zero vol
-	adc_regular_channel_config(ADC0, 11, DC5V_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+	adc_regular_channel_config(ADC0, 4, THROTTLE_5V_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+	adc_regular_channel_config(ADC0, 5, THROTTLE2_5V_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+	adc_regular_channel_config(ADC0, 6, U_VOL_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+	adc_regular_channel_config(ADC0, 7, ZERO_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME); //insert zero vol
+	adc_regular_channel_config(ADC0, 8, ADC_CHANNEL_17, ADC_SAMPLETIME_239POINT5); //mcu内部vref
+	adc_regular_channel_config(ADC0, 9, ZERO_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME); //insert zero vol
+	adc_regular_channel_config(ADC0, 10, DC5V_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+	adc_regular_channel_config(ADC0, 11, VBUS_V_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+	adc_regular_channel_config(ADC0, 12, ACC_V_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+	adc_regular_channel_config(ADC0, 13, VBUS_I_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+	adc_regular_channel_config(ADC0, 14, V_VOL_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+	adc_regular_channel_config(ADC0, 15, W_VOL_ADC_CHAN, ADC_REGCHAN_SAMPLE_TIME);
+
 	adc_tempsensor_vrefint_enable();
 	adc_buffer[VREF_BUFF_IDX] = VREF_ADC_DATA; //1.21/3.3*4095
 #endif
@@ -254,7 +258,7 @@ static void adc1_init(void){
     adc_software_trigger_enable(ADC1, ADC_INSERTED_CHANNEL);	
 }
 
-#ifdef CONFIG_BOARD_MCXXX
+#if (CONFIG_HW_VERSION==2)
 static void adc2_init(void){
 
 	rcu_periph_clock_enable(RCU_ADC2);
@@ -400,13 +404,13 @@ void adc_init(void) {
 	adc_gpio_init();
 #ifdef REG_CHAN_DMA	
 	adc01_dma_init();
-#ifdef CONFIG_BOARD_MCXXX
+#if (CONFIG_HW_VERSION==2)
 	adc2_dma_init();
 #endif
 #endif
 	adc0_init();
 	adc1_init();
-#ifdef CONFIG_BOARD_MCXXX
+#if (CONFIG_HW_VERSION==2)
 	adc2_init();
 #endif
 	adc_current_sample_config(0);

+ 22 - 0
Applications/bsp/gd32/board_mc105_v3.h

@@ -93,6 +93,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
 
 /* 高边电流传感器采样 */
@@ -287,7 +301,15 @@
 #define CAN_RX_GROUP GPIOB
 #define CAN_RX_PIN   GPIO_PIN_8
 #define CAN_PIN_RCU  RCU_GPIOB
+#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
 #define ENCODER_TYPE ENCODER_MT

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

@@ -19,7 +19,7 @@
 
 #define FOC_CTRL_US (1.0f/(float)FOC_PWM_FS)
 
-#define ADC_REGCHAN_SAMPLE_TIME ADC_SAMPLETIME_239POINT5
+#define ADC_REGCHAN_SAMPLE_TIME ADC_SAMPLETIME_71POINT5
 #define ADC_TRIG_CONV_LATENCY_CYCLES 12.5f
 #define ADC_SAMPLING_CYCLES 13.5f
 

+ 2 - 2
Applications/bsp/gd32/can.c

@@ -65,7 +65,7 @@ static __inline__ void can_fifo_recv(int fifo){
 
 }
 
-void USBD_LP_CAN0_RX0_IRQHandler(void)
+void CAN_RX0_IRQHandler(void)
 {
 	can_fifo_recv(CAN_FIFO0);
 }
@@ -125,7 +125,7 @@ static void shark_can0_config(void)
     can_filter_mask_mode_init(CAN_MY_ADDRESS, CAN_FILTER_DEST_MASK, CAN_EXTENDED_FIFO0, 0);
 
   	nvic_priority_group_set(NVIC_PRIGROUP_PRE4_SUB0);  
-  	nvic_irq_enable(USBD_LP_CAN0_RX0_IRQn,CAN_IRQ_PRIORITY,0);	
+  	nvic_irq_enable(CAN_IRQ0,CAN_IRQ_PRIORITY,0);	
     /* enable can receive FIFO0 not empty interrupt */
     can_interrupt_enable(CAN0, CAN_INTEN_RFNEIE0);
 }

+ 8 - 1
Applications/bsp/gd32/gd32_rtc.c

@@ -124,8 +124,11 @@ void gd32_rtc_init(void){
 
 	//3?¡§o?¡§o?¨¤1??¨¤?RTC alarm¡§o?3?
 	gd32_rtc_stop_alarm();
-	
+#ifdef GD32F30X_CL
+	nvic_irq_disable(RTC_ALARM_IRQn);
+#else
 	nvic_irq_disable(RTC_Alarm_IRQn);
+#endif
 	exti_init(EXTI_17, EXTI_INTERRUPT, EXTI_TRIG_RISING);
 	exti_flag_clear(EXTI_17);
 	exti_interrupt_enable(EXTI_17);
@@ -159,7 +162,11 @@ static int set_rtc_alarm(uint32_t sencod){
 
 
 int gd32_rtc_start_alarm(uint32_t second){
+#ifdef GD32F30X_CL
+	nvic_irq_enable(RTC_ALARM_IRQn, RTC_IRQ_PRIORITY, 0U);
+#else
     nvic_irq_enable(RTC_Alarm_IRQn, RTC_IRQ_PRIORITY, 0U);
+#endif
     exti_flag_clear(EXTI_17);
     exti_interrupt_enable(EXTI_17);
 	rtc_register_sync_wait();

+ 2 - 2
Applications/bsp/gd32/mc_irqs.c

@@ -106,14 +106,14 @@ void ADC0_1_IRQHandler(void)
 	adc_clear_irq_flags();
 }
 
-void TIMER0_UP_IRQHandler(void) {
+void PWM_UP_IRQHandler(void) {
 	if (timer_interrupt_flag_get(TIMER0, TIMER_INT_FLAG_UP)) {
 		timer_interrupt_flag_clear(TIMER0, TIMER_INT_FLAG_UP);
 		TIMER_UP_IRQHandler();
 	}
 }
 
-void TIMER0_BRK_IRQHandler(void) {
+void PWM_BRK_IRQHandler(void) {
 	if (timer_interrupt_flag_get(TIMER0, TIMER_INT_FLAG_BRK)) {
 		timer_interrupt_flag_clear(TIMER0, TIMER_INT_FLAG_BRK);
 		MC_Protect_IRQHandler();

+ 2 - 2
Applications/bsp/gd32/pwm.c

@@ -202,7 +202,7 @@ static void _init_pwm_timer(bool enable_brk) {
     timer_break_config(timer,&timer_breakpara);
 	timer_interrupt_enable(timer, TIMER_INT_BRK);
 	timer_interrupt_flag_clear(timer, TIMER_INT_FLAG_BRK);
-	nvic_irq_enable(TIMER0_BRK_IRQn, EBREAK_IRQ_PRIORITY, 0);		
+	nvic_irq_enable(PWM_BRK_IRQ, EBREAK_IRQ_PRIORITY, 0);		
 #else
 	_gpio_brakein_irq_enable();
 #endif
@@ -213,7 +213,7 @@ static void _init_pwm_timer(bool enable_brk) {
 
 	timer_interrupt_disable(timer, TIMER_INT_UP);
 	timer_interrupt_flag_clear(timer, TIMER_INT_FLAG_UP);
-	nvic_irq_enable(TIMER0_UP_IRQn, TIMER_UP_IRQ_PRIORITY, 0);
+	nvic_irq_enable(PWM_UP_IRQ, TIMER_UP_IRQ_PRIORITY, 0);
     timer_enable(timer);
 
 #ifdef GD32_FOC_DEMO

+ 2 - 2
Applications/bsp/gd32/pwm.h

@@ -65,9 +65,9 @@
 #define pwm_brake_enable(n) \
 	do { \
 		if (n) { \
-			nvic_irq_enable(TIMER0_BRK_IRQn, EBREAK_IRQ_PRIORITY, 0); \
+			nvic_irq_enable(PWM_BRK_IRQ, EBREAK_IRQ_PRIORITY, 0); \
 		}else { \
-			nvic_irq_disable(TIMER0_BRK_IRQn); \
+			nvic_irq_disable(PWM_BRK_IRQ); \
 		} \
 	}while(0)
 

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

@@ -241,7 +241,7 @@ bool mc_unsafe_critical_error(void) {
 	if (motor.b_ignor_throttle) {
 		err = err & (~(FOC_Cri_Err_Mask(FOC_CRIT_THRO_Err)));
 	}
-	return (err != 0);
+	return false;//(err != 0);
 }
 
 bool mc_start(u8 mode) {
@@ -1194,7 +1194,6 @@ void Sched_MC_mTask(void) {
 	if ((runMode != CTRL_MODE_OPEN) || (motor.mode != CTRL_MODE_OPEN)) {
 #ifndef CONFIG_DQ_STEP_RESPONSE
 		mc_autohold_process();
-
 		if (motor.mode != CTRL_MODE_OPEN) {
 			u32 mask;
 			if (mc_can_stop_foc()) {

+ 8 - 2
Applications/foc/samples.c

@@ -249,7 +249,10 @@ void sample_uvw_phase(void) {
 void sample_motor_temp(void) {
 #ifdef CONFIG_BOARD_MCXXX
 	u16 adc = adc_get_motor_temp();
-	u16 r = MOTOR_TEMP_R(adc);
+	u32 r = (u32)MOTOR_TEMP_R(adc);
+	if (r > 65535) {
+		r = 65535;
+	}
 	motor_temp.value = ntc_get_motor_temp(r);
 	LowPass_Filter(motor_temp.filted_value, motor_temp.value, motor_temp.lowpass);
 #endif
@@ -258,7 +261,10 @@ void sample_motor_temp(void) {
 void sample_mos_temp(void) {
 #ifdef CONFIG_BOARD_MCXXX
 	u16 adc = adc_get_mos_temp();
-	u16 r = MOS_TEMP_R(adc);
+	u32 r = (u32)MOS_TEMP_R(adc);
+	if (r > 65535) {
+		r = 65535;
+	}
 	mos_temp.value = ntc_get_mos_temp(r);
 	LowPass_Filter(mos_temp.filted_value, mos_temp.value, mos_temp.lowpass);
 #endif

+ 1 - 1
Applications/libs/time_measure.c

@@ -2,7 +2,7 @@
 #include "os/os_task.h"
 #include "libs/time_measure.h"
 
-#define COUNT_2_US(c) (c/120)
+#define COUNT_2_US(c) (c/(SYSTEM_CLOCK/1000000))
 
 u32 time_delta_us(u32 count, u32 *p_update) {
 	u32 now = task_ticks_abs();

+ 0 - 5
Applications/os/os_task.c

@@ -150,11 +150,6 @@ void shark_task_run(void)
 
 	fmc_write_magic(IAP_MAGIC_SUCCESS);
 
-	/* setup systick timer for 1000Hz interrupts */
-	SysTick_Config(SystemCoreClock / 1000);
-	/* configure the systick handler priority */
-	NVIC_SetPriority(SysTick_IRQn, 0x00U);
-
 	while (1) {
 		wdog_reload();
 

+ 1 - 1
Librarys/CMSIS/AT32/system_at32f413.c

@@ -92,7 +92,7 @@ void SystemInit (void)
   /* disable all interrupts enable and clear pending bits  */
   CRM->clkint = 0x009F0000;
 
-  system_clock_config();
+  //system_clock_config();
 #ifdef VECT_TAB_SRAM
   SCB->VTOR = SRAM_BASE  | VECT_TAB_OFFSET;  /* vector table relocation in internal sram. */
 #else

+ 1 - 1
Librarys/CMSIS/GD/GD32F30x/Include/gd32f30x.h

@@ -30,7 +30,7 @@
 /* define value of high speed crystal oscillator (HXTAL) in Hz */
 #if !defined  HXTAL_VALUE    
 #ifdef GD32F30X_CL   
-#define HXTAL_VALUE    ((uint32_t)25000000) /*!< value of the external oscillator in Hz */
+#define HXTAL_VALUE    ((uint32_t)8000000) /*!< value of the external oscillator in Hz */
 #else 
 #define HXTAL_VALUE    ((uint32_t)8000000) /* !< from 4M to 16M *!< value of the external oscillator in Hz*/
 #endif /* HXTAL_VALUE */

+ 1 - 1
Librarys/CMSIS/GD/GD32F30x/Source/system_gd32f30x.c

@@ -861,7 +861,7 @@ static void system_clock_120m_hxtal(void)
 
     /* CK_PREDIV0 = (CK_HXTAL)/5 *8 /10 = 4 MHz */ 
     RCU_CFG1 &= ~(RCU_CFG1_PLLPRESEL | RCU_CFG1_PREDV0SEL | RCU_CFG1_PLL1MF | RCU_CFG1_PREDV1 | RCU_CFG1_PREDV0);
-    RCU_CFG1 |= (RCU_PLLPRESRC_HXTAL | RCU_PREDV0SRC_CKPLL1 | RCU_PLL1_MUL8 | RCU_PREDV1_DIV5 | RCU_PREDV0_DIV10);
+    RCU_CFG1 |= (RCU_PLLPRESRC_HXTAL | RCU_PREDV0SRC_CKPLL1 | RCU_PLL1_MUL8 | RCU_PREDV1_DIV4 | RCU_PREDV0_DIV4);
 
     /* enable PLL1 */
     RCU_CTL |= RCU_CTL_PLL1EN;

+ 201 - 59
Project/MC105AT_V3.uvoptx

@@ -103,7 +103,7 @@
         <bEvRecOn>1</bEvRecOn>
         <bSchkAxf>0</bSchkAxf>
         <bTchkAxf>0</bTchkAxf>
-        <nTsel>0</nTsel>
+        <nTsel>4</nTsel>
         <sDll></sDll>
         <sDllPa></sDllPa>
         <sDlgDll></sDlgDll>
@@ -114,28 +114,152 @@
         <tDlgDll></tDlgDll>
         <tDlgPa></tDlgPa>
         <tIfile></tIfile>
-        <pMon>BIN\UL2CM3.DLL</pMon>
+        <pMon>Segger\JL2CM3.dll</pMon>
       </DebugOpt>
       <TargetDriverDllRegistry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ARMRTXEVENTFLAGS</Key>
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGTARM</Key>
+          <Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0)</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ARMDBGFLAGS</Key>
+          <Name></Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGUARM</Key>
+          <Name>d</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>JL2CM3</Key>
+          <Name>-U81480416 -O78 -S0 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO7 -FD20000000 -FC1000 -FN1 -FF0AT32F413_256.FLM -FS08000000 -FL040000 -FP0($$Device:-AT32F413RCT7$Flash\AT32F413_256.FLM)</Name>
+        </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
           <Key>UL2CM3</Key>
           <Name>UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0AT32F413_256 -FL040000 -FS08000000 -FP0($$Device:-AT32F413RCT7$Flash\AT32F413_256.FLM)</Name>
         </SetRegEntry>
       </TargetDriverDllRegistry>
-      <Breakpoint/>
+      <Breakpoint>
+        <Bp>
+          <Number>0</Number>
+          <Type>0</Type>
+          <LineNumber>116</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>134231458</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>1</BreakIfRCount>
+          <Filename>..\Applications\bsp\at32\mc_irqs.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression>\\MC105AT\../Applications/bsp/at32/mc_irqs.c\116</Expression>
+        </Bp>
+        <Bp>
+          <Number>1</Number>
+          <Type>0</Type>
+          <LineNumber>16</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>134253490</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>1</BreakIfRCount>
+          <Filename>..\Applications\main.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression>\\MC105AT\../Applications/main.c\16</Expression>
+        </Bp>
+        <Bp>
+          <Number>2</Number>
+          <Type>0</Type>
+          <LineNumber>916</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>134222166</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>1</BreakIfRCount>
+          <Filename>..\Applications\foc\motor\motor.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression>\\MC105AT\../Applications/foc/motor/motor.c\916</Expression>
+        </Bp>
+      </Breakpoint>
+      <WatchWindow1>
+        <Ww>
+          <count>0</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>system_core_clock,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>1</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>SystemCoreClock,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>2</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>adc_buffer[1],0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>3</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>adc_buffer[3],0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>4</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>adc_buffer[5],0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>5</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>adc_buffer[7]</ItemText>
+        </Ww>
+        <Ww>
+          <count>6</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>adc_buffer[9]</ItemText>
+        </Ww>
+        <Ww>
+          <count>7</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>adc_buffer[11]</ItemText>
+        </Ww>
+      </WatchWindow1>
+      <MemoryWindow1>
+        <Mm>
+          <WinNumber>1</WinNumber>
+          <SubType>0</SubType>
+          <ItemText>adc_buffer</ItemText>
+          <AccSizeX>0</AccSizeX>
+        </Mm>
+      </MemoryWindow1>
       <Tracepoint>
         <THDelay>0</THDelay>
       </Tracepoint>
       <DebugFlag>
         <trace>0</trace>
-        <periodic>0</periodic>
-        <aLwin>0</aLwin>
+        <periodic>1</periodic>
+        <aLwin>1</aLwin>
         <aCover>0</aCover>
         <aSer1>0</aSer1>
         <aSer2>0</aSer2>
         <aPa>0</aPa>
-        <viewmode>0</viewmode>
+        <viewmode>1</viewmode>
         <vrSel>0</vrSel>
         <aSym>0</aSym>
         <aTbox>0</aTbox>
@@ -166,12 +290,30 @@
       <pszMrulep></pszMrulep>
       <pSingCmdsp></pSingCmdsp>
       <pMultCmdsp></pMultCmdsp>
+      <SystemViewers>
+        <Entry>
+          <Name>System Viewer\ADC1</Name>
+          <WinId>35905</WinId>
+        </Entry>
+        <Entry>
+          <Name>System Viewer\ADC2</Name>
+          <WinId>35904</WinId>
+        </Entry>
+        <Entry>
+          <Name>System Viewer\DMA1</Name>
+          <WinId>35903</WinId>
+        </Entry>
+        <Entry>
+          <Name>System Viewer\TMR1</Name>
+          <WinId>35902</WinId>
+        </Entry>
+      </SystemViewers>
     </TargetOption>
   </Target>
 
   <Group>
     <GroupName>Application</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -227,7 +369,7 @@
 
   <Group>
     <GroupName>Foc</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -238,6 +380,18 @@
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
+      <PathWithFileName>..\Applications\bsp\at32\sched_timer.c</PathWithFileName>
+      <FilenameWithoutPath>sched_timer.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>6</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
       <PathWithFileName>..\Applications\foc\core\ramp_ctrl.c</PathWithFileName>
       <FilenameWithoutPath>ramp_ctrl.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
@@ -245,7 +399,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>6</FileNumber>
+      <FileNumber>7</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -257,7 +411,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>7</FileNumber>
+      <FileNumber>8</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -269,7 +423,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>8</FileNumber>
+      <FileNumber>9</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -281,7 +435,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>9</FileNumber>
+      <FileNumber>10</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -293,7 +447,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>10</FileNumber>
+      <FileNumber>11</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -305,7 +459,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>11</FileNumber>
+      <FileNumber>12</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -317,7 +471,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>12</FileNumber>
+      <FileNumber>13</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -329,7 +483,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>13</FileNumber>
+      <FileNumber>14</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -341,7 +495,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>14</FileNumber>
+      <FileNumber>15</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -353,7 +507,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>15</FileNumber>
+      <FileNumber>16</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -365,7 +519,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>16</FileNumber>
+      <FileNumber>17</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -379,13 +533,13 @@
 
   <Group>
     <GroupName>Motor</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>17</FileNumber>
+      <FileNumber>18</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -397,7 +551,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>18</FileNumber>
+      <FileNumber>19</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -409,7 +563,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>19</FileNumber>
+      <FileNumber>20</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -421,7 +575,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>20</FileNumber>
+      <FileNumber>21</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -433,7 +587,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>21</FileNumber>
+      <FileNumber>22</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -453,7 +607,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>22</FileNumber>
+      <FileNumber>23</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -465,7 +619,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>23</FileNumber>
+      <FileNumber>24</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -477,7 +631,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>24</FileNumber>
+      <FileNumber>25</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -489,7 +643,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>25</FileNumber>
+      <FileNumber>26</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -509,7 +663,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>26</FileNumber>
+      <FileNumber>27</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -521,7 +675,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>27</FileNumber>
+      <FileNumber>28</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -533,7 +687,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>28</FileNumber>
+      <FileNumber>29</FileNumber>
       <FileType>4</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -545,7 +699,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>29</FileNumber>
+      <FileNumber>30</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -559,13 +713,13 @@
 
   <Group>
     <GroupName>BSP</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>30</FileNumber>
+      <FileNumber>31</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -577,7 +731,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>31</FileNumber>
+      <FileNumber>32</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -589,7 +743,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>32</FileNumber>
+      <FileNumber>33</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -601,7 +755,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>33</FileNumber>
+      <FileNumber>34</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -613,7 +767,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>34</FileNumber>
+      <FileNumber>35</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -625,7 +779,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>35</FileNumber>
+      <FileNumber>36</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -637,7 +791,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>36</FileNumber>
+      <FileNumber>37</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -649,7 +803,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>37</FileNumber>
+      <FileNumber>38</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -661,7 +815,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>38</FileNumber>
+      <FileNumber>39</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -673,7 +827,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>39</FileNumber>
+      <FileNumber>40</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -683,18 +837,6 @@
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
-    <File>
-      <GroupNumber>6</GroupNumber>
-      <FileNumber>40</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\Applications\bsp\at32\sched_timer.c</PathWithFileName>
-      <FilenameWithoutPath>sched_timer.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
     <File>
       <GroupNumber>6</GroupNumber>
       <FileNumber>41</FileNumber>
@@ -711,7 +853,7 @@
 
   <Group>
     <GroupName>Libs</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -779,7 +921,7 @@
 
   <Group>
     <GroupName>OS</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -1035,7 +1177,7 @@
 
   <Group>
     <GroupName>StartUp</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>

+ 6 - 6
Project/MC105AT_V3.uvprojx

@@ -360,7 +360,7 @@
             </VariousControls>
           </Aads>
           <LDads>
-            <umfTarg>1</umfTarg>
+            <umfTarg>0</umfTarg>
             <Ropi>0</Ropi>
             <Rwpi>0</Rwpi>
             <noStLib>0</noStLib>
@@ -407,6 +407,11 @@
         <Group>
           <GroupName>Foc</GroupName>
           <Files>
+            <File>
+              <FileName>sched_timer.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\Applications\bsp\at32\sched_timer.c</FilePath>
+            </File>
             <File>
               <FileName>ramp_ctrl.c</FileName>
               <FileType>1</FileType>
@@ -602,11 +607,6 @@
               <FileType>1</FileType>
               <FilePath>..\Applications\bsp\at32\pwm.c</FilePath>
             </File>
-            <File>
-              <FileName>sched_timer.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\Applications\bsp\at32\sched_timer.c</FilePath>
-            </File>
             <File>
               <FileName>uart.c</FileName>
               <FileType>1</FileType>

+ 68 - 10
Project/MC105_V3.uvoptx

@@ -22,7 +22,7 @@
   </DaveTm>
 
   <Target>
-    <TargetName>GD32F303RC</TargetName>
+    <TargetName>GD32F305RC</TargetName>
     <ToolsetNumber>0x4</ToolsetNumber>
     <ToolsetName>ARM-ADS</ToolsetName>
     <TargetOption>
@@ -103,7 +103,7 @@
         <bEvRecOn>1</bEvRecOn>
         <bSchkAxf>0</bSchkAxf>
         <bTchkAxf>0</bTchkAxf>
-        <nTsel>0</nTsel>
+        <nTsel>4</nTsel>
         <sDll></sDll>
         <sDllPa></sDllPa>
         <sDlgDll></sDlgDll>
@@ -114,28 +114,68 @@
         <tDlgDll></tDlgDll>
         <tDlgPa></tDlgPa>
         <tIfile></tIfile>
-        <pMon>BIN\UL2CM3.DLL</pMon>
+        <pMon>Segger\JL2CM3.dll</pMon>
       </DebugOpt>
       <TargetDriverDllRegistry>
         <SetRegEntry>
           <Number>0</Number>
           <Key>UL2CM3</Key>
-          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F30x_HD -FS08000000 -FL040000 -FP0($$Device:GD32F303RC$Flash\GD32F30x_HD.FLM))</Name>
+          <Name>UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0GD32F30x_CL -FL040000 -FS08000000 -FP0($$Device:GD32F305RC$Flash\GD32F30x_CL.FLM)</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>JL2CM3</Key>
+          <Name>-U81480416 -O78 -S0 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO7 -FD20000000 -FC1000 -FN1 -FF0GD32F30x_HD.FLM -FS08000000 -FL040000 -FP0($$Device:GD32F303RC$Flash\GD32F30x_HD.FLM)</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ARMRTXEVENTFLAGS</Key>
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGTARM</Key>
+          <Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0)</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ARMDBGFLAGS</Key>
+          <Name></Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGUARM</Key>
+          <Name>d</Name>
         </SetRegEntry>
       </TargetDriverDllRegistry>
       <Breakpoint/>
+      <WatchWindow1>
+        <Ww>
+          <count>0</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>adc_buffer,0x0A</ItemText>
+        </Ww>
+      </WatchWindow1>
+      <MemoryWindow1>
+        <Mm>
+          <WinNumber>1</WinNumber>
+          <SubType>0</SubType>
+          <ItemText>adc_buffer</ItemText>
+          <AccSizeX>0</AccSizeX>
+        </Mm>
+      </MemoryWindow1>
       <Tracepoint>
         <THDelay>0</THDelay>
       </Tracepoint>
       <DebugFlag>
         <trace>0</trace>
-        <periodic>0</periodic>
-        <aLwin>0</aLwin>
+        <periodic>1</periodic>
+        <aLwin>1</aLwin>
         <aCover>0</aCover>
         <aSer1>0</aSer1>
         <aSer2>0</aSer2>
         <aPa>0</aPa>
-        <viewmode>0</viewmode>
+        <viewmode>1</viewmode>
         <vrSel>0</vrSel>
         <aSym>0</aSym>
         <aTbox>0</aTbox>
@@ -166,12 +206,18 @@
       <pszMrulep></pszMrulep>
       <pSingCmdsp></pSingCmdsp>
       <pMultCmdsp></pMultCmdsp>
+      <SystemViewers>
+        <Entry>
+          <Name>System Viewer\ADC0</Name>
+          <WinId>35905</WinId>
+        </Entry>
+      </SystemViewers>
     </TargetOption>
   </Target>
 
   <Group>
     <GroupName>Application</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -859,7 +905,7 @@
 
   <Group>
     <GroupName>GD32F30x_Drivers</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -1059,7 +1105,7 @@
 
   <Group>
     <GroupName>StartUp</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -1087,6 +1133,18 @@
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
+    <File>
+      <GroupNumber>10</GroupNumber>
+      <FileNumber>71</FileNumber>
+      <FileType>2</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\Librarys\CMSIS\GD\GD32F30x\Source\ARM\startup_gd32f30x_cl.s</PathWithFileName>
+      <FilenameWithoutPath>startup_gd32f30x_cl.s</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
   </Group>
 
 </ProjectOpt>

+ 53 - 10
Project/MC105_V3.uvprojx

@@ -7,23 +7,23 @@
 
   <Targets>
     <Target>
-      <TargetName>GD32F303RC</TargetName>
+      <TargetName>GD32F305RC</TargetName>
       <ToolsetNumber>0x4</ToolsetNumber>
       <ToolsetName>ARM-ADS</ToolsetName>
       <pCCUsed>5060750::V5.06 update 6 (build 750)::.\ARMCC</pCCUsed>
       <uAC6>0</uAC6>
       <TargetOption>
         <TargetCommonOption>
-          <Device>GD32F303RC</Device>
+          <Device>GD32F305RC</Device>
           <Vendor>GigaDevice</Vendor>
           <PackID>GigaDevice.GD32F30x_DFP.2.2.0</PackID>
           <PackURL>http://gd32mcu.com/data/documents/pack/</PackURL>
-          <Cpu>IRAM(0x20000000,0x0C000) IROM(0x08000000,0x040000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE</Cpu>
+          <Cpu>IRAM(0x20000000,0x018000) IROM(0x08000000,0x040000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE</Cpu>
           <FlashUtilSpec></FlashUtilSpec>
           <StartupFile></StartupFile>
-          <FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F30x_HD -FS08000000 -FL010000 -FP0($$Device:GD32F303RC$Flash\GD32F30x_HD.FLM))</FlashDriverDll>
+          <FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F30x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F305RC$Flash\GD32F30x_CL.FLM))</FlashDriverDll>
           <DeviceId>0</DeviceId>
-          <RegisterFile>$$Device:GD32F303RC$Device\Include\gd32f30x.h</RegisterFile>
+          <RegisterFile>$$Device:GD32F305RC$Device\Include\gd32f30x.h</RegisterFile>
           <MemoryEnv></MemoryEnv>
           <Cmp></Cmp>
           <Asm></Asm>
@@ -33,7 +33,7 @@
           <SLE66CMisc></SLE66CMisc>
           <SLE66AMisc></SLE66AMisc>
           <SLE66LinkerMisc></SLE66LinkerMisc>
-          <SFDFile>$$Device:GD32F303RC$SVD\GD32F30x_HD.svd</SFDFile>
+          <SFDFile>$$Device:GD32F305RC$SVD\GD32F30x_CL.svd</SFDFile>
           <bCustSvd>0</bCustSvd>
           <UseEnv>0</UseEnv>
           <BinPath></BinPath>
@@ -138,7 +138,7 @@
           </Flash1>
           <bUseTDR>1</bUseTDR>
           <Flash2>BIN\UL2CM3.DLL</Flash2>
-          <Flash3>"" ()</Flash3>
+          <Flash3></Flash3>
           <Flash4></Flash4>
           <pFcarmOut></pFcarmOut>
           <pFcarmGrp></pFcarmGrp>
@@ -246,7 +246,7 @@
               <IRAM>
                 <Type>0</Type>
                 <StartAddress>0x20000000</StartAddress>
-                <Size>0xc000</Size>
+                <Size>0x18000</Size>
               </IRAM>
               <IROM>
                 <Type>1</Type>
@@ -301,7 +301,7 @@
               <OCR_RVCT9>
                 <Type>0</Type>
                 <StartAddress>0x20000000</StartAddress>
-                <Size>0xc000</Size>
+                <Size>0x18000</Size>
               </OCR_RVCT9>
               <OCR_RVCT10>
                 <Type>0</Type>
@@ -337,7 +337,7 @@
             <v6Rtti>0</v6Rtti>
             <VariousControls>
               <MiscControls>--gnu</MiscControls>
-              <Define>USE_STDPERIPH_DRIVER,GD32F30X_HD,BACK_TRACE,MC105_HW_V3,CONFIG_CAN_IAP,JTAG_DEBUG</Define>
+              <Define>USE_STDPERIPH_DRIVER,GD32F30X_CL,BACK_TRACE,MC105_HW_V3,CONFIG_CAN_IAP,JTAG_DEBUG</Define>
               <Undefine></Undefine>
               <IncludePath>..\Librarys\CMSIS\Include,..\Librarys\CMSIS\GD\GD32F30x\Include,..\Librarys\GD32F30x_Drivers\include,..\Applications;..\Simulink\PMSM_Controller_ert_rtw</IncludePath>
             </VariousControls>
@@ -777,6 +777,49 @@
               <FileName>startup_gd32f30x_hd.s</FileName>
               <FileType>2</FileType>
               <FilePath>..\Librarys\CMSIS\GD\GD32F30x\Source\ARM\startup_gd32f30x_hd.s</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>0</IncludeInBuild>
+                  <AlwaysBuild>2</AlwaysBuild>
+                  <GenerateAssemblyFile>2</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>2</AssembleAssemblyFile>
+                  <PublicsOnly>2</PublicsOnly>
+                  <StopOnExitCode>11</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Aads>
+                    <interw>2</interw>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <thumb>2</thumb>
+                    <SplitLS>2</SplitLS>
+                    <SwStkChk>2</SwStkChk>
+                    <NoWarn>2</NoWarn>
+                    <uSurpInc>2</uSurpInc>
+                    <useXO>2</useXO>
+                    <ClangAsOpt>0</ClangAsOpt>
+                    <VariousControls>
+                      <MiscControls></MiscControls>
+                      <Define></Define>
+                      <Undefine></Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Aads>
+                </FileArmAds>
+              </FileOption>
+            </File>
+            <File>
+              <FileName>startup_gd32f30x_cl.s</FileName>
+              <FileType>2</FileType>
+              <FilePath>..\Librarys\CMSIS\GD\GD32F30x\Source\ARM\startup_gd32f30x_cl.s</FilePath>
             </File>
           </Files>
         </Group>

+ 1 - 1
Project/version_mc105AT.cfg

@@ -1,3 +1,3 @@
 project: MC105AT
 version: 01
-debug: 0
+debug: 1