Преглед изворни кода

国民MCU,adc采集,编码器OK

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui пре 3 година
родитељ
комит
6f05d9f70b

+ 2 - 2
Applications/app/app.c

@@ -128,7 +128,7 @@ static u32 _app_report_task(void *p) {
 		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());
@@ -137,7 +137,7 @@ static u32 _app_report_task(void *p) {
 		//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();

+ 36 - 28
Applications/bsp/n32/adc.c

@@ -31,7 +31,7 @@
 
 #endif
 
-s16 adc_buffer[REG_CHAN_NUM];
+u16 adc_buffer[REG_CHAN_NUM];
 float vref_adc = 1408.0f;
 float vref_5v_adc = 2047.0f;
 
@@ -40,7 +40,7 @@ float vref_5v_adc = 2047.0f;
 static void adc01_dma_init(void)
 {
 	DMA_InitType DMA_InitStructure;
-    rcu_periph_clock_enable(RCU_DMA1);
+    rcu_ahb_periph_clock_enable(RCU_DMA1);
 
     DMA_DeInit(DMA1_CH1);
     DMA_InitStructure.PeriphAddr     = (uint32_t)&ADC1->DAT;
@@ -64,8 +64,8 @@ static void adc01_init(void) {
     /* config ADC clock */
     RCC_ConfigAdcHclk(RCC_ADCHCLK_DIV4);
 
-	rcu_periph_clock_enable(RCU_ADC1);
-	rcu_periph_clock_enable(RCU_ADC2);
+	rcu_ahb_periph_clock_enable(RCU_ADC1);
+	rcu_ahb_periph_clock_enable(RCU_ADC2);
 
 	ADC_DeInit(ADC1);
 	ADC_DeInit(ADC2);
@@ -82,12 +82,20 @@ static void adc01_init(void) {
 	ADC_Init(ADC2, &ADC_InitStructure);
 
 	//Config Sampling Time
-	ADC_ConfigInjectedSequencerLength(ADC1,1);
+	ADC_ConfigInjectedSequencerLength(ADC1,INJ_CHAN_NUM);
 	ADC_ConfigInjectedChannel(ADC1, V_PHASE_I_CHAN, 1, ADC_INJ_SAMPLE_TIME);
-
-	ADC_ConfigInjectedSequencerLength(ADC2,1);
+#if (INJ_CHAN_NUM == 4)
+	ADC_ConfigInjectedChannel(ADC1, V_PHASE_I_CHAN, 2, ADC_INJ_SAMPLE_TIME);
+	ADC_ConfigInjectedChannel(ADC1, V_PHASE_I_CHAN, 3, ADC_INJ_SAMPLE_TIME);
+	ADC_ConfigInjectedChannel(ADC1, V_PHASE_I_CHAN, 4, ADC_INJ_SAMPLE_TIME);
+#endif
+	ADC_ConfigInjectedSequencerLength(ADC2,INJ_CHAN_NUM);
 	ADC_ConfigInjectedChannel(ADC2, W_PHASE_I_CHAN, 1, ADC_INJ_SAMPLE_TIME);
-
+#if (INJ_CHAN_NUM == 4)
+	ADC_ConfigInjectedChannel(ADC2, W_PHASE_I_CHAN, 2, ADC_INJ_SAMPLE_TIME);
+	ADC_ConfigInjectedChannel(ADC2, W_PHASE_I_CHAN, 3, ADC_INJ_SAMPLE_TIME);
+	ADC_ConfigInjectedChannel(ADC2, W_PHASE_I_CHAN, 4, ADC_INJ_SAMPLE_TIME);
+#endif
 	//ADC1 and ADC2 TrigInJectConv Enable
 	ADC_EnableExternalTrigInjectedConv(ADC1,ENABLE);
 	ADC_EnableExternalTrigInjectedConv(ADC2,ENABLE);
@@ -98,9 +106,9 @@ static void adc01_init(void) {
 	ADC_ConfigRegularChannel(ADC1, V_VOL_ADC_CHAN, 4, ADC_REGCHAN_SAMPLE_TIME);
 	ADC_ConfigRegularChannel(ADC1, THROTTLE_5V_CHAN, 5, ADC_REGCHAN_SAMPLE_TIME);
 	ADC_ConfigRegularChannel(ADC1, ZERO_ADC_CHAN, 6, ADC_REGCHAN_SAMPLE_TIME);
-	ADC_ConfigRegularChannel(ADC1, ADC_CH_17, 7, ADC_REGCHAN_SAMPLE_TIME);
+	ADC_ConfigRegularChannel(ADC1, ADC_CH_INT_VREF, 7, ADC_REGCHAN_SAMPLE_TIME);
 	ADC_ConfigRegularChannel(ADC1, DC5V_ADC_CHAN, 8, ADC_REGCHAN_SAMPLE_TIME); 
-	
+	ADC_EnableExternalTrigConv(ADC1, ENABLE);
 	
     ADC_ConfigRegularChannel(ADC2, MOS_TEMP_ADC_CHAN, 1, ADC_REGCHAN_SAMPLE_TIME);
 	ADC_ConfigRegularChannel(ADC2, MOTOR_TEMP_ADC_CHAN, 2, ADC_REGCHAN_SAMPLE_TIME);
@@ -151,89 +159,89 @@ static void adc01_init(void) {
 
 static void adc_gpio_init(void) {
 
-	rcu_periph_clock_enable(RCU_AF);
+	rcu_apb2_periph_clock_enable(RCU_AF);
 		/* configure ADC pin, current sampling -- ADC_IN1(PA1) ADC_IN12(PC2) ADC_IN13(PC3) */
 #ifdef U_PHASE_ADC_GROUP
-		rcu_periph_clock_enable(U_PHASE_ADC_RCU);
+		rcu_apb2_periph_clock_enable(U_PHASE_ADC_RCU);
 		gpio_init(U_PHASE_ADC_GROUP, U_PHASE_ADC_MODE, GPIO_OSPEED_50MHZ, U_PHASE_ADC_PIN);
 #endif
 #ifdef V_PHASE_ADC_GROUP
-		rcu_periph_clock_enable(V_PHASE_ADC_RCU);
+		rcu_apb2_periph_clock_enable(V_PHASE_ADC_RCU);
 		gpio_init(V_PHASE_ADC_GROUP, V_PHASE_ADC_MODE, GPIO_OSPEED_50MHZ, V_PHASE_ADC_PIN);
 #endif
 #ifdef W_PHASE_ADC_GROUP
-		rcu_periph_clock_enable(W_PHASE_ADC_RCU);
+		rcu_apb2_periph_clock_enable(W_PHASE_ADC_RCU);
 		gpio_init(W_PHASE_ADC_GROUP, W_PHASE_ADC_MODE, GPIO_OSPEED_50MHZ, W_PHASE_ADC_PIN);
 #endif
 
 #ifdef VBUS_V_ADC_GROUP
-	rcu_periph_clock_enable(VBUS_V_ADC_RCU);
+	rcu_apb2_periph_clock_enable(VBUS_V_ADC_RCU);
 	/* configure ADC pin, bus voltage sampling -- ADC_IN0(PA0) */
 	gpio_init(VBUS_V_ADC_GROUP, VBUS_V_ADC_MODE, GPIO_OSPEED_50MHZ, VBUS_V_ADC_PIN);
 #endif
 
 #ifdef VBUS_I_ADC_GROUP
-	rcu_periph_clock_enable(VBUS_I_ADC_RCU);
+	rcu_apb2_periph_clock_enable(VBUS_I_ADC_RCU);
 	/* configure ADC pin, bus voltage sampling -- ADC_IN0(PA0) */
 	gpio_init(VBUS_I_ADC_GROUP, VBUS_I_ADC_MODE, GPIO_OSPEED_50MHZ, VBUS_I_ADC_PIN);
 #endif
 
 
 #ifdef ACC_V_ADC_GROUP
-	rcu_periph_clock_enable(ACC_V_ADC_RCU);
+	rcu_apb2_periph_clock_enable(ACC_V_ADC_RCU);
 	/* configure ADC pin, bus voltage sampling -- ADC_IN0(PA0) */
 	gpio_init(ACC_V_ADC_GROUP, ACC_V_ADC_MODE, GPIO_OSPEED_50MHZ, ACC_V_ADC_PIN);
 #endif
 
 #ifdef THROTTLE_V_ADC_GROUP
-	rcu_periph_clock_enable(THROTTLE_V_ADC_RCU);
+	rcu_apb2_periph_clock_enable(THROTTLE_V_ADC_RCU);
 	/* configure ADC pin, bus voltage sampling -- ADC_IN0(PA0) */
 	gpio_init(THROTTLE_V_ADC_GROUP, THROTTLE_V_ADC_MODE, GPIO_OSPEED_50MHZ, THROTTLE_V_ADC_PIN);
 #endif
 #ifdef THROTTLE2_V_ADC_GROUP
-	rcu_periph_clock_enable(THROTTLE2_V_ADC_RCU);
+	rcu_apb2_periph_clock_enable(THROTTLE2_V_ADC_RCU);
 	gpio_init(THROTTLE2_V_ADC_GROUP, THROTTLE2_V_ADC_MODE, GPIO_OSPEED_50MHZ, THROTTLE2_V_ADC_PIN);
 #endif
 
 #ifdef THROTTLE_5V_ADC_GROUP
-	rcu_periph_clock_enable(THROTTLE_5V_ADC_RCU);
+	rcu_apb2_periph_clock_enable(THROTTLE_5V_ADC_RCU);
 	/* configure ADC pin, bus voltage sampling -- ADC_IN0(PA0) */
 	gpio_init(THROTTLE_5V_ADC_GROUP, THROTTLE_5V_ADC_MODE, GPIO_OSPEED_50MHZ, THROTTLE_5V_ADC_PIN);
 #endif
 #ifdef THROTTLE2_5V_ADC_GROUP
-	rcu_periph_clock_enable(THROTTLE2_5V_ADC_RCU);
+	rcu_apb2_periph_clock_enable(THROTTLE2_5V_ADC_RCU);
 	/* configure ADC pin, bus voltage sampling -- ADC_IN0(PA0) */
 	gpio_init(THROTTLE2_5V_ADC_GROUP, THROTTLE2_5V_ADC_MODE, GPIO_OSPEED_50MHZ, THROTTLE2_5V_ADC_PIN);
 #endif
 
 #ifdef U_VOL_ADC_GROUP
-	rcu_periph_clock_enable(U_VOL_ADC_RCU);
+	rcu_apb2_periph_clock_enable(U_VOL_ADC_RCU);
 	gpio_init(U_VOL_ADC_GROUP, U_VOL_ADC_MODE, GPIO_OSPEED_50MHZ, U_VOL_ADC_PIN);
 #endif
 #ifdef V_VOL_ADC_GROUP
-	rcu_periph_clock_enable(V_VOL_ADC_RCU);
+	rcu_apb2_periph_clock_enable(V_VOL_ADC_RCU);
 	gpio_init(V_VOL_ADC_GROUP, V_VOL_ADC_MODE, GPIO_OSPEED_50MHZ, V_VOL_ADC_PIN);
 #endif
 #ifdef W_VOL_ADC_GROUP
-	rcu_periph_clock_enable(W_VOL_ADC_RCU);
+	rcu_apb2_periph_clock_enable(W_VOL_ADC_RCU);
 	gpio_init(W_VOL_ADC_GROUP, W_VOL_ADC_MODE, GPIO_OSPEED_50MHZ, W_VOL_ADC_PIN);
 #endif
 #ifdef MOS_TEMP_ADC_GROUP
-	rcu_periph_clock_enable(MOS_TEMP_ADC_RCU);
+	rcu_apb2_periph_clock_enable(MOS_TEMP_ADC_RCU);
 	gpio_init(MOS_TEMP_ADC_GROUP, MOS_TEMP_ADC_MODE, GPIO_OSPEED_50MHZ, MOS_TEMP_ADC_PIN);
 #endif
 #ifdef MOS_TEMP1_ADC_GROUP
-	rcu_periph_clock_enable(MOS_TEMP1_ADC_RCU);
+	rcu_apb2_periph_clock_enable(MOS_TEMP1_ADC_RCU);
 	gpio_init(MOS_TEMP1_ADC_GROUP, MOS_TEMP1_ADC_MODE, GPIO_OSPEED_50MHZ, MOS_TEMP1_ADC_PIN);
 #endif
 
 #ifdef MOTOR_TEMP_ADC_GROUP
-	rcu_periph_clock_enable(MOTOR_TEMP_ADC_RCU);
+	rcu_apb2_periph_clock_enable(MOTOR_TEMP_ADC_RCU);
 	gpio_init(MOTOR_TEMP_ADC_GROUP, MOTOR_TEMP_ADC_MODE, GPIO_OSPEED_50MHZ, MOTOR_TEMP_ADC_PIN);
 #endif
 
 #ifdef ZERO_ADC_GROUP
-	rcu_periph_clock_enable(ZERO_ADC_RCU);
+	rcu_apb2_periph_clock_enable(ZERO_ADC_RCU);
 	gpio_init(ZERO_ADC_GROUP, ZERO_ADC_MODE, GPIO_OSPEED_50MHZ, ZERO_ADC_PIN);
 #endif
 

+ 45 - 7
Applications/bsp/n32/adc.h

@@ -29,7 +29,7 @@ inserted ADC 由timer0 ch3触发,
 #define JDAT_OFFSET ((uint8_t)0x28)
 #define CTRL2_INJ_EXT_TRIG_SET   ((uint32_t)0x00008000)
 #define CTRL2_INJ_EXT_TRIG_RESET ((uint32_t)0xFFFF7FFF)
-
+#define INJ_CHAN_NUM 4
 static u16 __inline ADC_GetInjectedDat(ADC_Module* ADCx, uint8_t ADC_InjectedChannel)
 {
     __IO uint32_t tmp = 0;
@@ -41,9 +41,47 @@ static u16 __inline ADC_GetInjectedDat(ADC_Module* ADCx, uint8_t ADC_InjectedCha
     return (uint16_t)(*(__IO uint32_t*)tmp);
 }
 
-static void __inline adc_phase_current_read(u8 phases, s32 *v1, s32 *v2) {
-	*v1 = (s32)((float)ADC_GetInjectedDat(ADC1, ADC_INJ_CH_1) * adc_5vref_compesion());
-	*v2 = (s32)((float)ADC_GetInjectedDat(ADC2, ADC_INJ_CH_1) * adc_5vref_compesion());
+#define v_calc(sum, v, min, max) \
+	do { \
+		if (v > max) { \
+			max = v; \
+		} \
+		if (v < min) { \
+			min = v; \
+		}\
+		sum += v; \
+	}while(0);
+
+static void __inline adc_phase_current_read(u8 phases, s32 *pv1, s32 *pv2) {
+#if (INJ_CHAN_NUM == 4)
+	u16 min, max;
+	u16 sum = 0;
+	u16 v1 = ADC_GetInjectedDat(ADC1, ADC_INJ_CH_1);
+	u16 v2 = ADC_GetInjectedDat(ADC1, ADC_INJ_CH_2);
+	u16 v3 = ADC_GetInjectedDat(ADC1, ADC_INJ_CH_3);
+	u16 v4 = ADC_GetInjectedDat(ADC1, ADC_INJ_CH_4);
+	min = max = v1;
+	sum += v1;
+	v_calc(sum, v2, min, max);
+	v_calc(sum, v3, min, max);
+	v_calc(sum, v4, min, max);
+	*pv1 = (s32) ((sum-min-max)/2.0f * adc_5vref_compesion());
+
+	sum = 0;
+	v1 = ADC_GetInjectedDat(ADC2, ADC_INJ_CH_1);
+	v2 = ADC_GetInjectedDat(ADC2, ADC_INJ_CH_2);
+	v3 = ADC_GetInjectedDat(ADC2, ADC_INJ_CH_3);
+	v4 = ADC_GetInjectedDat(ADC2, ADC_INJ_CH_4);
+	min = max = v1;
+	sum += v1;
+	v_calc(sum, v2, min, max);
+	v_calc(sum, v3, min, max);
+	v_calc(sum, v4, min, max);
+	*pv2 = (s32) ((sum-min-max)/2.0f * adc_5vref_compesion());
+#else
+	*pv1 = (s32)((float)ADC_GetInjectedDat(ADC1, ADC_INJ_CH_1) * adc_5vref_compesion());
+	*pv2 = (s32)((float)ADC_GetInjectedDat(ADC2, ADC_INJ_CH_1) * adc_5vref_compesion());
+#endif
 }
 
 
@@ -52,11 +90,11 @@ static void __inline adc_current_sample_config(u8 phases) {
 }
 
 static void __inline adc_disable_ext_trigger(void) {   
-	ADC1->CTRL2 &= CTRL2_INJ_EXT_TRIG_RESET;
+	//ADC1->CTRL2 &= CTRL2_INJ_EXT_TRIG_RESET;
 }
 
 static void __inline adc_enable_ext_trigger(void) {	
-	ADC1->CTRL2 |= CTRL2_INJ_EXT_TRIG_SET;
+	//ADC1->CTRL2 |= CTRL2_INJ_EXT_TRIG_SET;
 }
 
 
@@ -67,7 +105,7 @@ static __inline__ void adc_clear_irq_flags(void) {
 
 
 static __inline void adc_update_ext_trigger(u32 trigger) {
-	ADC1->CTRL2 |= trigger;
+	//ADC1->CTRL2 |= trigger;
 }
 
 void adc_init(void);

+ 1 - 1
Applications/bsp/n32/board_n32_mc105_v3.h

@@ -312,7 +312,7 @@
 #define ENC_B_RCU RCU_GPIOB
 #define ENC_B_MODE GPIO_MODE_IN_FLOATING
 
-#define TIMER2_PB4_PB5_REMAP GPIO_PART2_RMP_TIM2
+#define TIMER2_PB4_PB5_REMAP GPIO_PART1_RMP_TIM3
 
 #define ENC_PWM_GROUP GPIOB
 #define ENC_PWM_PIN GPIO_PIN_6

+ 2 - 1
Applications/bsp/n32/bsp.c

@@ -15,6 +15,7 @@ static void dbg_stop_tim1_8(void) {
 }
 void bsp_init(void){
 	wdog_enable();
+	SystemCoreClockUpdate();
 	dbg_stop_tim1_8();
 	systick_open();
 	task_ticks_enable();
@@ -76,7 +77,7 @@ static void wdog_enable(void)
                             = LsiFreq/(32 * 4)
                             = LsiFreq/128
      */
-    IWDG_CntReload(40000 / 128);
+    IWDG_CntReload(1600);
     /* Reload IWDG counter */
     IWDG_ReloadKey();
     /* Enable IWDG (the LSI oscillator will be enabled by hardware) */

+ 7 - 0
Applications/bsp/n32/bsp.h

@@ -7,6 +7,13 @@
 #define SYSTEM_CLOCK (144000000u) //system clk 120M Hz
 #define TIM_CLOCK (SYSTEM_CLOCK) /*SystemClock_Config��TIM1��clk��sys PLL �������̶�2����PLLƵ��*/
 #define TIM_CLOCK_MHz (144u)
+#define TIM_SCHED_CLK (SYSTEM_CLOCK/2)
+#define TIM_SCHED_CLK_MHz (TIM_CLOCK_MHz/2)
+
+#define TIM_PWM_CLK (SYSTEM_CLOCK/2)
+#define TIM_PWM_CLK_MHz (TIM_CLOCK_MHz/2)
+
+
 #define ADC_CLOCK (30000000u)
 #define ADC_CLOCK_MHz (30u)
 #define NS_PER_TCLK (7u) /* (1/120000000 * 1000000000) */

+ 8 - 2
Applications/bsp/n32/bsp_wrapper.h

@@ -62,8 +62,14 @@
 #define gpio_bit_reset(gpio_periph, pin)        GPIO_ResetBits(gpio_periph, pin) 
 #define gpio_pin_remap_config(pin, mode)        GPIO_ConfigPinRemap(pin, mode)
 
-#define rcu_periph_clock_enable(clk)            RCC_EnableAPB1PeriphClk(clk, ENABLE)
-#define rcu_periph_clock_disable(clk)           RCC_EnableAPB1PeriphClk(clk, DISABLE)
+#define rcu_ahb_periph_clock_enable(clk)            RCC_EnableAHBPeriphClk(clk, ENABLE)
+#define rcu_ahb_periph_clock_disable(clk)           RCC_EnableAHBPeriphClk(clk, DISABLE)
+
+#define rcu_apb1_periph_clock_enable(clk)            RCC_EnableAPB1PeriphClk(clk, ENABLE)
+#define rcu_apb1_periph_clock_disable(clk)           RCC_EnableAPB1PeriphClk(clk, DISABLE)
+
+#define rcu_apb2_periph_clock_enable(clk)            RCC_EnableAPB2PeriphClk(clk, ENABLE)
+#define rcu_apb2_periph_clock_disable(clk)           RCC_EnableAPB2PeriphClk(clk, DISABLE)
 
 #define EXTI_INTERRUPT  EXTI_Mode_Interrupt
 #define EXTI_TRIG_RISING  EXTI_Trigger_Rising

+ 4 - 4
Applications/bsp/n32/can.c

@@ -78,9 +78,9 @@ void CAN_RX1_IRQHandler(void)
 
 static void shark_can0_txrx_pin_config(void){
     /* enable can clock */
-    rcu_periph_clock_enable(RCU_CAN0);
-    rcu_periph_clock_enable(CAN_PIN_RCU);
-    rcu_periph_clock_enable(RCU_AF);
+    rcu_apb1_periph_clock_enable(RCU_CAN0);
+    rcu_apb2_periph_clock_enable(CAN_PIN_RCU);
+    rcu_apb2_periph_clock_enable(RCU_AF);
 
 #ifdef CAN_REMAP
 	gpio_pin_remap_config(CAN_REMAP,ENABLE);
@@ -226,7 +226,7 @@ void shark_can0_reset(void){
 
 void shark_can0_deinit(void){
 	CAN_DeInit(CAN_DEV);
-	rcu_periph_clock_disable(RCU_CAN0);
+	rcu_apb1_periph_clock_disable(RCU_CAN0);
 }
 
 void shark_can0_init(void){

+ 14 - 12
Applications/bsp/n32/enc_intf.c

@@ -2,10 +2,10 @@
 #include "libs/logger.h"
 
 static void _io_init(void) {
-	rcu_periph_clock_enable(ENC_A_RCU);
-	rcu_periph_clock_enable(ENC_B_RCU);
-	rcu_periph_clock_enable(ENC_PWM_RCU);
-	rcu_periph_clock_enable(ENC_I_RCU);
+	rcu_apb2_periph_clock_enable(ENC_A_RCU);
+	rcu_apb2_periph_clock_enable(ENC_B_RCU);
+	rcu_apb2_periph_clock_enable(ENC_PWM_RCU);
+	rcu_apb2_periph_clock_enable(ENC_I_RCU);
 #ifdef TIMER2_PB4_PB5_REMAP
 	gpio_pin_remap_config(TIMER2_PB4_PB5_REMAP, ENABLE);
 #endif
@@ -38,7 +38,7 @@ void enc_intf_quadrature_init(u32 rate) {
 	TIM_TimeBaseInitType TIM_TimeBaseStructure;
 	TIM_ICInitType TIM_ICInitStructure;
 
-	rcu_periph_clock_enable(ENC_TIMER_RCU);
+	rcu_apb1_periph_clock_enable(ENC_TIMER_RCU);
 	
 	TIM_Module* TIMx = ENC_TIMER;
 	
@@ -50,8 +50,7 @@ void enc_intf_quadrature_init(u32 rate) {
 	TIM_TimeBaseStructure.ClkDiv = TIM_CLK_DIV1;
 	TIM_TimeBaseStructure.CntMode = TIM_CNT_MODE_UP;
 	TIM_InitTimeBase(TIMx,&TIM_TimeBaseStructure);
-	//qr encode set
-	TIM_ConfigEncoderInterface(TIMx,TIM_ENCODE_MODE_TI12,TIM_IC_POLARITY_FALLING,TIM_IC_POLARITY_RISING);
+
 	TIM_InitIcStruct(&TIM_ICInitStructure);
 	TIM_ICInitStructure.IcPolarity = TIM_IC_POLARITY_RISING;
 	TIM_ICInitStructure.IcFilter = ENC_FILTER_NR;
@@ -59,6 +58,9 @@ void enc_intf_quadrature_init(u32 rate) {
 	TIM_ICInit(TIMx,&TIM_ICInitStructure);
 	TIM_ICInitStructure.Channel = TIM_CH_2;
 	TIM_ICInit(TIMx,&TIM_ICInitStructure);
+
+	//qr encode set
+	TIM_ConfigEncoderInterface(TIMx,TIM_ENCODE_MODE_TI12,TIM_IC_POLARITY_FALLING,TIM_IC_POLARITY_RISING);
 		
 	TIM_ConfigArPreload(TIMx,ENABLE);
 	TIM_SetCnt(TIMx,0);
@@ -72,14 +74,14 @@ void enc_intf_pwm_counter(void) {
 	TIM_TimeBaseInitType TIM_TimeBaseStructure;
 	TIM_ICInitType TIM_ICInitStructure;
 
-	rcu_periph_clock_enable(ENC_PWM_TIMER_RCU);
+	rcu_apb1_periph_clock_enable(ENC_PWM_TIMER_RCU);
 
-	TIM_Module* TIMx = ENC_TIMER;
+	TIM_Module* TIMx = ENC_PWM_TIMER;
 
 	TIM_DeInit(TIMx);
 	TIM_InitTimBaseStruct(&TIM_TimeBaseStructure);
-	TIM_TimeBaseStructure.Period = TIM_CLOCK/PWM_TIME_CLK - 1;
-	TIM_TimeBaseStructure.Prescaler = 0;
+	TIM_TimeBaseStructure.Period = 65535;
+	TIM_TimeBaseStructure.Prescaler = TIM_PWM_CLK/PWM_TIME_CLK - 1;
 	TIM_TimeBaseStructure.ClkDiv = TIM_CLK_DIV1;
 	TIM_TimeBaseStructure.CntMode = TIM_CNT_MODE_UP;
 	TIM_InitTimeBase(TIMx,&TIM_TimeBaseStructure);
@@ -88,7 +90,7 @@ void enc_intf_pwm_counter(void) {
     TIM_ICInitStructure.IcPolarity  = TIM_IC_POLARITY_RISING;
     TIM_ICInitStructure.IcSelection = TIM_IC_SELECTION_DIRECTTI;
     TIM_ICInitStructure.IcPrescaler = TIM_IC_PSC_DIV1;
-    TIM_ICInitStructure.IcFilter    = 0x0;
+    TIM_ICInitStructure.IcFilter    = ENC_FILTER_NR;
 
     TIM_ConfigPwmIc(TIMx, &TIM_ICInitStructure);
 

+ 1 - 1
Applications/bsp/n32/enc_intf.h

@@ -3,7 +3,7 @@
 #include "os/os_types.h"
 #include "bsp/bsp.h"
 
-#define PWM_TIME_CLK 1000000U
+#define PWM_TIME_CLK 9000000U
 
 
 #define ENC_DIR_UP 1

+ 10 - 10
Applications/bsp/n32/gpio.c

@@ -7,11 +7,11 @@
 */
 
 void gpio_pin_init(void){
-	rcu_periph_clock_enable(RCU_GPIOA);
-    rcu_periph_clock_enable(RCU_GPIOB);
-	rcu_periph_clock_enable(RCU_GPIOC);
-	rcu_periph_clock_enable(RCU_GPIOD);
-	rcu_periph_clock_enable(RCU_AF);
+	rcu_apb2_periph_clock_enable(RCU_GPIOA);
+    rcu_apb2_periph_clock_enable(RCU_GPIOB);
+	rcu_apb2_periph_clock_enable(RCU_GPIOC);
+	rcu_apb2_periph_clock_enable(RCU_GPIOD);
+	rcu_apb2_periph_clock_enable(RCU_AF);
 
 #ifdef CONFIG_BEEP
 	gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_2);
@@ -30,7 +30,7 @@ void gpio_beep(u32 ms) {
 
 void gpio_mc_brk_init(void) {
 #ifdef GPIO_BRAKE_IN_GROUP
-	rcu_periph_clock_enable(GPIO_BRAKE_IN_RCU);
+	rcu_apb2_periph_clock_enable(GPIO_BRAKE_IN_RCU);
 #ifdef GPIO_BRAKE_PIN_REMAP
 	gpio_pin_remap_config(GPIO_BRAKE_PIN_REMAP, ENABLE);
 #endif
@@ -56,14 +56,14 @@ void gpio_mc_brk_init(void) {
 
 void gpio_mlock_init(void) {
 #ifdef GPIO_MLOCK_IN_GROUP
-	rcu_periph_clock_enable(GPIO_MLOCK_IN_RCU);
+	rcu_apb2_periph_clock_enable(GPIO_MLOCK_IN_RCU);
 	gpio_init(GPIO_MLOCK_IN_GROUP, GPIO_MLOCK_IN_MODE, GPIO_OSPEED_50MHZ, GPIO_MLOCK_IN_PIN);
 #endif
 }
 
 void gpio_fan_det_init(void) {
 #ifdef GPIO_FAN1_IN_GROUP
-	rcu_periph_clock_enable(GPIO_FAN1_IN_RCU);
+	rcu_apb2_periph_clock_enable(GPIO_FAN1_IN_RCU);
 	gpio_init(GPIO_FAN1_IN_GROUP, GPIO_FAN1_IN_MODE, GPIO_OSPEED_50MHZ, GPIO_FAN1_IN_PIN);
 	gpio_exti_source_select(GPIO_FAN1_EXIT_SRC_GROUP, GPIO_FAN1_EXIT_SRC_PIN);
 	exti_init(GPIO_FAN1_EXTI, EXTI_INTERRUPT, EXTI_TRIG_RISING);
@@ -102,7 +102,7 @@ void gpio_phase_u_detect(bool enable) {
 
 void gpio_led_init(void) {
 #ifdef GPIO_LED_OUT_GROUP
-	rcu_periph_clock_enable(GPIO_LED_OUT_RCU);
+	rcu_apb2_periph_clock_enable(GPIO_LED_OUT_RCU);
 	gpio_init(GPIO_LED_OUT_GROUP, GPIO_LED_OUT_MODE, GPIO_OSPEED_50MHZ, GPIO_LED_OUT_PIN);
 	gpio_bit_reset(GPIO_LED_OUT_GROUP, GPIO_LED_OUT_PIN);
 #endif
@@ -110,7 +110,7 @@ void gpio_led_init(void) {
 
 void gpio_brk_light_init(void) {
 #ifdef GPIO_BRAKE_LIGHT_OUT_GROUP
-	rcu_periph_clock_enable(GPIO_BRAKE_LIGHT_OUT_RCU);
+	rcu_apb2_periph_clock_enable(GPIO_BRAKE_LIGHT_OUT_RCU);
 	gpio_init(GPIO_BRAKE_LIGHT_OUT_GROUP, GPIO_BRAKE_LIGHT_OUT_MODE, GPIO_OSPEED_50MHZ, GPIO_BRAKE_LIGHT_OUT_PIN);
 	gpio_bit_reset(GPIO_BRAKE_LIGHT_OUT_GROUP, GPIO_BRAKE_LIGHT_OUT_PIN);
 #endif

+ 10 - 2
Applications/bsp/n32/mc_irqs.c

@@ -9,6 +9,7 @@
 */
 void NMI_Handler(void)
 {
+	while(1);
 }
 
 /*!
@@ -69,9 +70,16 @@ void UsageFault_Handler(void)
 */
 void DebugMon_Handler(void)
 {
+	while(1);
 }
 
+void SVC_Handler(void) {
+	while(1);
+}
 
+void PendSV_Handler(void) {
+	while(1);
+}
 __weak void MC_Brake_IRQHandler(void) {
 
 }
@@ -149,7 +157,7 @@ void EXTI4_IRQHandler(void)
 	}	
 }
 
-void EXTI5_9_IRQHandler(void){
+void EXTI9_5_IRQHandler(void){
 	if(RESET != exti_interrupt_flag_get(EXTI_LINE5)){
 		exti_interrupt_flag_clear(EXTI_LINE5);
 	}
@@ -167,7 +175,7 @@ void EXTI5_9_IRQHandler(void){
 	}	
 }
 
-void EXTI10_15_IRQHandler(void){
+void EXTI15_10_IRQHandler(void){
 	if(RESET != exti_interrupt_flag_get(EXTI_LINE10)){
 		exti_interrupt_flag_clear(EXTI_LINE10);
 	}

+ 18 - 16
Applications/bsp/n32/pwm.c

@@ -35,7 +35,7 @@ void pwm_3phase_sides(bool hon, bool lon) {
 		return;
 	}
 	TIM_DeInit(pwm_timer);
-	rcu_periph_clock_enable(PWM_TIM_CLK);
+	rcu_apb2_periph_clock_enable(PWM_TIM_CLK);
     gpio_init(PWM_U_P_GROUP,GPIO_MODE_OUT_PP,GPIO_OSPEED_50MHZ,PWM_U_P_PIN);
     gpio_init(PWM_V_P_GROUP,GPIO_MODE_OUT_PP,GPIO_OSPEED_50MHZ,PWM_V_P_PIN);
     gpio_init(PWM_W_P_GROUP,GPIO_MODE_OUT_PP,GPIO_OSPEED_50MHZ,PWM_W_P_PIN);
@@ -78,13 +78,13 @@ void pwm_3phase_sides(bool hon, bool lon) {
 
 static void _pwm_gpio_config(void)
 {
-    rcu_periph_clock_enable(PWM_U_P_RCU);
-    rcu_periph_clock_enable(PWM_V_P_RCU);
-	rcu_periph_clock_enable(PWM_W_P_RCU);
-    rcu_periph_clock_enable(PWM_U_N_RCU);
-    rcu_periph_clock_enable(PWM_V_N_RCU);
-	rcu_periph_clock_enable(PWM_W_N_RCU);	
-    rcu_periph_clock_enable(RCU_AF);
+    rcu_apb2_periph_clock_enable(PWM_U_P_RCU);
+    rcu_apb2_periph_clock_enable(PWM_V_P_RCU);
+	rcu_apb2_periph_clock_enable(PWM_W_P_RCU);
+    rcu_apb2_periph_clock_enable(PWM_U_N_RCU);
+    rcu_apb2_periph_clock_enable(PWM_V_N_RCU);
+	rcu_apb2_periph_clock_enable(PWM_W_N_RCU);	
+    rcu_apb2_periph_clock_enable(RCU_AF);
 
     /*configure PA8 PA9 PA10(TIMER0 CH0 CH1 CH2) as alternate function*/
     gpio_init(PWM_U_P_GROUP,PWM_U_P_MODE,GPIO_OSPEED_50MHZ,PWM_U_P_PIN);
@@ -99,7 +99,7 @@ static void _pwm_gpio_config(void)
 	/*configure BRAKE IN*/
 #ifdef PWM_BRAKE_GROUP
     /* TIMER0 BKIN */
-	rcu_periph_clock_enable(PWM_BRAKE_RCU);
+	rcu_apb2_periph_clock_enable(PWM_BRAKE_RCU);
     gpio_init(PWM_BRAKE_GROUP, PWM_BRAKE_MODE, GPIO_OSPEED_50MHZ, PWM_BRAKE_PIN);
 #endif
 }
@@ -126,7 +126,7 @@ static void _init_pwm_timer(bool enable_brk) {
 	TIM_Module *TIMx = pwm_timer;
 	u32 half_period = FOC_PWM_Half_Period;
 
-	rcu_periph_clock_enable(PWM_TIM_CLK);
+	rcu_apb2_periph_clock_enable(PWM_TIM_CLK);
 
 	TIM_DeInit(TIMx);
 
@@ -151,7 +151,7 @@ static void _init_pwm_timer(bool enable_brk) {
 	TIM_InitOc2(TIMx, &TIM1_OCInitStructure);
 	TIM_InitOc3(TIMx, &TIM1_OCInitStructure);
 	//Channel 4 Configuration in OC 
-	TIM1_OCInitStructure.OcMode = TIM_OCMODE_PWM1;
+	TIM1_OCInitStructure.OcMode = TIM_OCMODE_PWM2;
 	TIM1_OCInitStructure.OutputState = TIM_OUTPUT_STATE_ENABLE;
 	TIM1_OCInitStructure.OutputNState = TIM_OUTPUT_NSTATE_DISABLE;
 	TIM1_OCInitStructure.Pulse = half_period - 1;//3400;
@@ -170,15 +170,17 @@ static void _init_pwm_timer(bool enable_brk) {
 	TIM1_BDTRInitStructure.Break = enable_brk?TIM_BREAK_IN_ENABLE:TIM_BREAK_IN_DISABLE;
 	TIM1_BDTRInitStructure.BreakPolarity = TIM_BREAK_POLARITY_LOW;
 	TIM1_BDTRInitStructure.AutomaticOutput = TIM_AUTO_OUTPUT_DISABLE;
-    TIM1_BDTRInitStructure.IomBreakEn = false;
+    TIM1_BDTRInitStructure.IomBreakEn = true;
 	TIM_ConfigBkdt(TIMx, &TIM1_BDTRInitStructure);
-
+	
 	pwm_enable_channel();
 
 	TIM_ClearFlag(TIMx,TIM_FLAG_UPDATE);
 	TIM_ConfigInt(TIMx, TIM_INT_UPDATE, DISABLE);
-
 	nvic_irq_enable(PWM_UP_IRQ, TIMER_UP_IRQ_PRIORITY, 0);
+	TIM_ClearFlag(TIMx,TIM_FLAG_BREAK);
+	TIM_ConfigInt(TIMx, TIM_INT_BREAK, ENABLE);
+	nvic_irq_enable(PWM_BRK_IRQ, EBREAK_IRQ_PRIORITY, 0);
 	//TIM1 counter enable
 	TIM_Enable(TIMx, ENABLE);
 }
@@ -231,10 +233,10 @@ void pwm_turn_on_low_side(void)
 void pwm_update_sample(u32 samp1, u32 samp2, u8 sector) {
 	if (samp1 < FOC_PWM_Half_Period) {
 		TIMER_CH3CV(pwm_timer) = samp1;
-		pwm_change_t3_mode(TIM_OCMODE_PWM1);
+		pwm_change_t3_mode(TIM_OCMODE_PWM2);
 	}else {
 		TIMER_CH3CV(pwm_timer) = samp2;
-		pwm_change_t3_mode(TIM_OCMODE_PWM2);
+		pwm_change_t3_mode(TIM_OCMODE_PWM1);
 	}
 	adc_current_sample_config(sector);
 }

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

@@ -80,10 +80,10 @@
 	do { \
 		if (n) { \
 			TIM_ClearFlag(pwm_timer, TIM_FLAG_UPDATE); \
-			TIM_ConfigInt(pwm_timer, TIM_INT_UPDATE, ENABLE);; \
+			TIM_ConfigInt(pwm_timer, TIM_INT_UPDATE, ENABLE); \
 		}else { \
-			TIM_ClearFlag(pwm_timer, TIM_FLAG_UPDATE); \
 			TIM_ConfigInt(pwm_timer, TIM_INT_UPDATE, DISABLE); \
+			TIM_ClrIntPendingBit(pwm_timer, TIM_INT_UPDATE); \
 		} \
 	}while(0)
 

+ 4 - 4
Applications/bsp/n32/sched_timer.c

@@ -3,17 +3,17 @@
 void sched_timer_enable(u32 us) {
     TIM_TimeBaseInitType TIM_TimeBaseStructure;
 
-    rcu_periph_clock_enable(SCHED_TIMER_RCU);
+    rcu_apb1_periph_clock_enable(SCHED_TIMER_RCU);
 
     TIM_DeInit(SCHED_TIMER);
 
 	TIM_InitTimBaseStruct(&TIM_TimeBaseStructure);
-    TIM_TimeBaseStructure.Period    = us-1;;
-    TIM_TimeBaseStructure.Prescaler = TIM_CLOCK_MHz-1;
+    TIM_TimeBaseStructure.Period    = us-1;
+    TIM_TimeBaseStructure.Prescaler = TIM_SCHED_CLK_MHz-1;
     TIM_TimeBaseStructure.ClkDiv    = 0;
     TIM_TimeBaseStructure.CntMode   = TIM_CNT_MODE_UP;
 
-    TIM_InitTimeBase(TIM3, &TIM_TimeBaseStructure);
+    TIM_InitTimeBase(TIM5, &TIM_TimeBaseStructure);
 
 	TIM_SetCnt(SCHED_TIMER,0);
 

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

@@ -188,7 +188,7 @@ void shark_uart_write_log(char *buffer){
 
 static void shark_uart_tx_dma_init(shark_uart_t *uart){
 
-	rcu_periph_clock_enable(SHARK_UART0_tx_dma_clk);
+	rcu_ahb_periph_clock_enable(SHARK_UART0_tx_dma_clk);
 
     DMA_InitType DMA_InitStructure;
 
@@ -212,7 +212,7 @@ static void shark_uart_tx_dma_init(shark_uart_t *uart){
 #if ENABLE_RX_DMA==1
 static void shark_uart_rx_dma_init(shark_uart_t *uart){
 
-	rcu_periph_clock_enable(SHARK_UART0_rx_dma_clk);
+	rcu_ahb_periph_clock_enable(SHARK_UART0_rx_dma_clk);
 
     DMA_InitType DMA_InitStructure;
 
@@ -236,10 +236,10 @@ static void shark_uart_rx_dma_init(shark_uart_t *uart){
 }
 #endif
 static void shark_uart_pin_init(shark_uart_t *uart){
-	rcu_periph_clock_enable(SHARK_UART0_clk);
-	rcu_periph_clock_enable(SHARK_UART0_rx_gpio_clk);
-	rcu_periph_clock_enable(SHARK_UART0_tx_gpio_clk);
-	rcu_periph_clock_enable(RCU_AF);
+	rcu_apb1_periph_clock_enable(SHARK_UART0_clk);
+	rcu_apb2_periph_clock_enable(SHARK_UART0_rx_gpio_clk);
+	rcu_apb2_periph_clock_enable(SHARK_UART0_tx_gpio_clk);
+	rcu_apb2_periph_clock_enable(RCU_AF);
 	gpio_init(SHARK_UART0_tx_port, GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,SHARK_UART0_tx_pin);
 	gpio_init(SHARK_UART0_rx_port, GPIO_MODE_IN_FLOATING,GPIO_OSPEED_50MHZ,SHARK_UART0_rx_pin);
 }

+ 119 - 9
Project/MC105N32_V3.uvoptx

@@ -103,7 +103,7 @@
         <bEvRecOn>1</bEvRecOn>
         <bSchkAxf>0</bSchkAxf>
         <bTchkAxf>0</bTchkAxf>
-        <nTsel>0</nTsel>
+        <nTsel>3</nTsel>
         <sDll></sDll>
         <sDllPa></sDllPa>
         <sDlgDll></sDlgDll>
@@ -114,28 +114,116 @@
         <tDlgDll></tDlgDll>
         <tDlgPa></tDlgPa>
         <tIfile></tIfile>
-        <pMon>BIN\UL2CM3.DLL</pMon>
+        <pMon>BIN\CMSIS_AGDI.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=75,104,525,661,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-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></Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>CMSIS_AGDI</Key>
+          <Name>-X"Any" -UAny -O206 -S9 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0N32G45x.FLM -FS08000000 -FL040000 -FP0($$Device:N32G452RCL7$Flash\N32G45x.FLM)</Name>
+        </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
           <Key>UL2CM3</Key>
           <Name>UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0N32G45x -FL040000 -FS08000000 -FP0($$Device:N32G452RCL7$Flash\N32G45x.FLM)</Name>
         </SetRegEntry>
       </TargetDriverDllRegistry>
-      <Breakpoint/>
+      <Breakpoint>
+        <Bp>
+          <Number>0</Number>
+          <Type>0</Type>
+          <LineNumber>400</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>134218182</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>1</BreakIfRCount>
+          <Filename>..\Librarys\CMSIS\N32G45x\startup\startup_n32g45x.s</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression>\\MC105N\../Librarys/CMSIS/N32G45x/startup/startup_n32g45x.s\400</Expression>
+        </Bp>
+        <Bp>
+          <Number>1</Number>
+          <Type>0</Type>
+          <LineNumber>123</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>134236084</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>1</BreakIfRCount>
+          <Filename>..\Applications\bsp\n32\mc_irqs.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression>\\MC105N\../Applications/bsp/n32/mc_irqs.c\123</Expression>
+        </Bp>
+      </Breakpoint>
+      <WatchWindow1>
+        <Ww>
+          <count>0</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>SystemCoreClock,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>1</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>adc_buffer[0],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,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 +254,34 @@
       <pszMrulep></pszMrulep>
       <pSingCmdsp></pSingCmdsp>
       <pMultCmdsp></pMultCmdsp>
+      <SystemViewers>
+        <Entry>
+          <Name>System Viewer\ADC1</Name>
+          <WinId>35904</WinId>
+        </Entry>
+        <Entry>
+          <Name>System Viewer\ADC2</Name>
+          <WinId>35902</WinId>
+        </Entry>
+        <Entry>
+          <Name>System Viewer\TIM1</Name>
+          <WinId>35901</WinId>
+        </Entry>
+        <Entry>
+          <Name>System Viewer\TIM3</Name>
+          <WinId>35903</WinId>
+        </Entry>
+        <Entry>
+          <Name>System Viewer\TIM4</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>
@@ -379,7 +489,7 @@
 
   <Group>
     <GroupName>Motor</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -823,7 +933,7 @@
 
   <Group>
     <GroupName>N32G45x_Drivers</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>

+ 1 - 1
Project/MC105N32_V3.uvprojx

@@ -361,7 +361,7 @@
             </VariousControls>
           </Aads>
           <LDads>
-            <umfTarg>0</umfTarg>
+            <umfTarg>1</umfTarg>
             <Ropi>0</Ropi>
             <Rwpi>0</Rwpi>
             <noStLib>0</noStLib>