ARM GAS  /tmp/cc3e9u1N.s 			page 1


   1              		.cpu cortex-m0
   2              		.arch armv6s-m
   3              		.fpu softvfp
   4              		.eabi_attribute 23, 1
   5              		.eabi_attribute 24, 1
   6              		.eabi_attribute 25, 1
   7              		.eabi_attribute 26, 1
   8              		.eabi_attribute 30, 2
   9              		.eabi_attribute 34, 0
  10              		.eabi_attribute 18, 4
  11              		.file	"motor.c"
  12              		.text
  13              	.Ltext0:
  14              		.cfi_sections	.debug_frame
  15              		.file 1 "User/motor.c"
  16              		.section	.text.temp_setp,"ax",%progbits
  17              		.align	1
  18              		.p2align 2,,3
  19              		.global	temp_setp
  20              		.syntax unified
  21              		.code	16
  22              		.thumb_func
  24              	temp_setp:
  25              	.LFB46:
   1:User/motor.c  **** #include "motor.h"
   2:User/motor.c  **** #include "lcm32f06x_conf.h"
   3:User/motor.c  **** 
   4:User/motor.c  **** #include "global.h"
   5:User/motor.c  **** #include "adc.h"
   6:User/motor.c  **** #include "pwm.h"
   7:User/motor.c  **** #include "uart.h"
   8:User/motor.c  **** 
   9:User/motor.c  **** #include "string.h"
  10:User/motor.c  **** 
  11:User/motor.c  **** #include "B11A1.h"
  12:User/motor.c  **** 
  13:User/motor.c  **** #define PI (0x7FFFFFFF)
  14:User/motor.c  **** #define _PI (0x80000000)
  15:User/motor.c  **** #define PI_2 (0x40000000)
  16:User/motor.c  **** #define _PI_2 (0xC0000000)
  17:User/motor.c  **** 
  18:User/motor.c  **** // Q格式宏定义
  19:User/motor.c  **** #define Q31_BITS 31
  20:User/motor.c  **** #define Q16_BITS 16
  21:User/motor.c  **** #define Q15_BITS 15
  22:User/motor.c  **** #define Q8_BITS 8
  23:User/motor.c  **** 
  24:User/motor.c  **** // 通用浮点转Q格式宏 (支持任意小数位数)
  25:User/motor.c  **** #define FLOAT_TO_Q(x, bits) ((int32_t)((x) * (1 << (bits))))
  26:User/motor.c  **** 
  27:User/motor.c  **** // 通用Q格式转浮点宏 (支持任意小数位数)
  28:User/motor.c  **** #define Q_TO_FLOAT(x, bits) ((float)(x) / (1 << (bits)))
  29:User/motor.c  **** 
  30:User/motor.c  **** // 通用Q格式之间的转换宏
  31:User/motor.c  **** #define Q_CONVERT(x, from_bits, to_bits) \
  32:User/motor.c  ****   ((to_bits) > (from_bits) ? ((int32_t)(x) << ((to_bits) - (from_bits))) : ((x) >> ((from_bits) - (
  33:User/motor.c  **** 
ARM GAS  /tmp/cc3e9u1N.s 			page 2


  34:User/motor.c  **** // 特定格式的浮点转Q格式 (保持向后兼容)
  35:User/motor.c  **** #define FLOAT_TO_Q31(x) FLOAT_TO_Q(x, Q31_BITS)
  36:User/motor.c  **** #define FLOAT_TO_Q16(x) FLOAT_TO_Q(x, Q16_BITS)
  37:User/motor.c  **** #define FLOAT_TO_Q15(x) ((int16_t)FLOAT_TO_Q(x, Q15_BITS))
  38:User/motor.c  **** #define FLOAT_TO_Q8(x) ((int16_t)FLOAT_TO_Q(x, Q8_BITS))
  39:User/motor.c  **** 
  40:User/motor.c  **** // 特定格式的Q格式转浮点 (保持向后兼容)
  41:User/motor.c  **** #define Q31_TO_FLOAT(x) Q_TO_FLOAT(x, Q31_BITS)
  42:User/motor.c  **** #define Q16_TO_FLOAT(x) Q_TO_FLOAT(x, Q16_BITS)
  43:User/motor.c  **** #define Q15_TO_FLOAT(x) Q_TO_FLOAT(x, Q15_BITS)
  44:User/motor.c  **** #define Q8_TO_FLOAT(x) Q_TO_FLOAT(x, Q8_BITS)
  45:User/motor.c  **** 
  46:User/motor.c  **** // 特定格式之间的转换 (保持向后兼容)
  47:User/motor.c  **** #define Q31_TO_Q16(x) Q_CONVERT(x, Q31_BITS, Q16_BITS)
  48:User/motor.c  **** #define Q16_TO_Q31(x) Q_CONVERT(x, Q16_BITS, Q31_BITS)
  49:User/motor.c  **** #define Q16_TO_Q15(x) Q_CONVERT(x, Q16_BITS, Q15_BITS)
  50:User/motor.c  **** #define Q15_TO_Q16(x) Q_CONVERT(x, Q15_BITS, Q16_BITS)
  51:User/motor.c  **** 
  52:User/motor.c  **** void ADC_Handler(void)
  53:User/motor.c  **** {
  54:User/motor.c  **** 
  55:User/motor.c  **** #if GPIO_TEST
  56:User/motor.c  ****   GPIOA->BSRR = GPIO_Pin_1;
  57:User/motor.c  **** #endif
  58:User/motor.c  **** 
  59:User/motor.c  ****   if (ADC->ISR & ADC->IER & ADC_IT_AWD0)
  60:User/motor.c  ****   {
  61:User/motor.c  ****     ADC->ISR = (uint32_t)ADC_IT_AWD0;
  62:User/motor.c  ****     B11A1_U.Motor.SetFault |= HardOverVoltage;
  63:User/motor.c  ****     PWMOUT_DISABLE();
  64:User/motor.c  ****   }
  65:User/motor.c  **** 
  66:User/motor.c  ****   if (ADC->ISR & ADC->IER & ADC_IT_AWD1)
  67:User/motor.c  ****   {
  68:User/motor.c  ****     ADC->ISR = (uint32_t)ADC_IT_AWD1;
  69:User/motor.c  ****     B11A1_U.Motor.SetFault |= HardOverCurrent;
  70:User/motor.c  ****     PWMOUT_DISABLE();
  71:User/motor.c  ****   }
  72:User/motor.c  **** 
  73:User/motor.c  ****   if (ADC->SOCISR & ADC->SOCIER & ADC_IT_EOC13)
  74:User/motor.c  ****   {
  75:User/motor.c  **** 
  76:User/motor.c  ****     ADC->SOCISR = (uint32_t)ADC_IT_EOC13;
  77:User/motor.c  ****     B11A1_U.Motor.TempAdcValue = EXTERNTEMPSENSOR;
  78:User/motor.c  ****     B11A1_U.Motor.HallAdcValue[0] = HALL_A;
  79:User/motor.c  ****     B11A1_U.Motor.HallAdcValue[1] = HALL_B;
  80:User/motor.c  ****     B11A1_U.Motor.VoltageAdcValue = VOLTAGE;
  81:User/motor.c  ****     B11A1_U.Motor.CurrentAdcValue[0] = CURRENT_U;
  82:User/motor.c  ****     B11A1_U.Motor.CurrentAdcValue[1] = CURRENT_V;
  83:User/motor.c  **** 
  84:User/motor.c  ****     InterruptUpdate();
  85:User/motor.c  ****     B11A1_U.Motor.SetFault = 0;
  86:User/motor.c  ****     if (B11A1_Y.Enable)
  87:User/motor.c  ****     {
  88:User/motor.c  ****       PWMOUT_ENABLE();
  89:User/motor.c  ****     }
  90:User/motor.c  ****     else
ARM GAS  /tmp/cc3e9u1N.s 			page 3


  91:User/motor.c  ****     {
  92:User/motor.c  ****       PWMOUT_DISABLE();
  93:User/motor.c  ****     }
  94:User/motor.c  **** 
  95:User/motor.c  ****     PWMOUT_U = B11A1_Y.Duty[0] * (PWMOUT_MAX) >> 14;
  96:User/motor.c  ****     PWMOUT_V = B11A1_Y.Duty[1] * (PWMOUT_MAX) >> 14;
  97:User/motor.c  ****     PWMOUT_W = B11A1_Y.Duty[2] * (PWMOUT_MAX) >> 14;
  98:User/motor.c  ****   }
  99:User/motor.c  **** 
 100:User/motor.c  **** #if GPIO_TEST
 101:User/motor.c  ****   GPIOA->BSRR = GPIO_Pin_1 << 16;
 102:User/motor.c  **** #endif
 103:User/motor.c  **** }
 104:User/motor.c  **** 
 105:User/motor.c  **** void temp_setp(void)
 106:User/motor.c  **** {
  26              		.loc 1 106 1 view -0
  27              		.cfi_startproc
  28              		@ args = 0, pretend = 0, frame = 0
  29              		@ frame_needed = 0, uses_anonymous_args = 0
 107:User/motor.c  ****   int16_t temp = ADC_GetVTStemperature(INTERNALTEMPSENSOR, ADC_ReferenceVoltage_4V9);
  30              		.loc 1 107 3 view .LVU1
  31              		.loc 1 107 18 is_stmt 0 view .LVU2
  32 0000 8021     		movs	r1, #128
  33              		.loc 1 107 40 view .LVU3
  34 0002 074B     		ldr	r3, .L4
 106:User/motor.c  ****   int16_t temp = ADC_GetVTStemperature(INTERNALTEMPSENSOR, ADC_ReferenceVoltage_4V9);
  35              		.loc 1 106 1 view .LVU4
  36 0004 10B5     		push	{r4, lr}
  37              	.LCFI0:
  38              		.cfi_def_cfa_offset 8
  39              		.cfi_offset 4, -8
  40              		.cfi_offset 14, -4
  41              		.loc 1 107 18 view .LVU5
  42 0006 1868     		ldr	r0, [r3]
  43 0008 8902     		lsls	r1, r1, #10
  44 000a FFF7FEFF 		bl	ADC_GetVTStemperature
  45              	.LVL0:
 108:User/motor.c  ****   if (temp > MOTOR_TEMP_FAULT)
  46              		.loc 1 108 3 is_stmt 1 view .LVU6
  47              		.loc 1 108 6 is_stmt 0 view .LVU7
  48 000e 00B2     		sxth	r0, r0
  49              		.loc 1 108 6 view .LVU8
  50 0010 7328     		cmp	r0, #115
  51 0012 04DD     		ble	.L1
  52              	.LBB4:
  53              	.LBI4:
 105:User/motor.c  **** {
  54              		.loc 1 105 6 is_stmt 1 view .LVU9
  55              	.LBB5:
 109:User/motor.c  ****   {
 110:User/motor.c  ****     B11A1_U.Motor.SetFault |= MotorOverTemperature;
  56              		.loc 1 110 5 view .LVU10
  57              		.loc 1 110 28 is_stmt 0 view .LVU11
  58 0014 8021     		movs	r1, #128
  59 0016 034A     		ldr	r2, .L4+4
  60 0018 1368     		ldr	r3, [r2]
ARM GAS  /tmp/cc3e9u1N.s 			page 4


  61 001a 0B43     		orrs	r3, r1
  62 001c 1360     		str	r3, [r2]
  63              	.L1:
  64              	.LBE5:
  65              	.LBE4:
 111:User/motor.c  ****   }
 112:User/motor.c  **** }
  66              		.loc 1 112 1 view .LVU12
  67              		@ sp needed
  68 001e 10BD     		pop	{r4, pc}
  69              	.L5:
  70              		.align	2
  71              	.L4:
  72 0020 DCA00140 		.word	1073848540
  73 0024 00000000 		.word	B11A1_U
  74              		.cfi_endproc
  75              	.LFE46:
  77              		.section	.text.motor_step,"ax",%progbits
  78              		.align	1
  79              		.p2align 2,,3
  80              		.global	motor_step
  81              		.syntax unified
  82              		.code	16
  83              		.thumb_func
  85              	motor_step:
  86              	.LFB47:
 113:User/motor.c  **** 
 114:User/motor.c  **** void motor_step(void)
 115:User/motor.c  **** {
  87              		.loc 1 115 1 is_stmt 1 view -0
  88              		.cfi_startproc
  89              		@ args = 0, pretend = 0, frame = 0
  90              		@ frame_needed = 0, uses_anonymous_args = 0
 116:User/motor.c  ****   MainUpdate();
  91              		.loc 1 116 3 view .LVU14
 115:User/motor.c  ****   MainUpdate();
  92              		.loc 1 115 1 is_stmt 0 view .LVU15
  93 0000 F8B5     		push	{r3, r4, r5, r6, r7, lr}
  94              	.LCFI1:
  95              		.cfi_def_cfa_offset 24
  96              		.cfi_offset 3, -24
  97              		.cfi_offset 4, -20
  98              		.cfi_offset 5, -16
  99              		.cfi_offset 6, -12
 100              		.cfi_offset 7, -8
 101              		.cfi_offset 14, -4
 102 0002 CE46     		mov	lr, r9
 103 0004 4746     		mov	r7, r8
 104 0006 80B5     		push	{r7, lr}
 105              	.LCFI2:
 106              		.cfi_def_cfa_offset 32
 107              		.cfi_offset 8, -32
 108              		.cfi_offset 9, -28
 109              		.loc 1 116 3 view .LVU16
 110 0008 FFF7FEFF 		bl	MainUpdate
 111              	.LVL1:
 117:User/motor.c  ****   if (B11A1_Y.Info.CaliFlag)
ARM GAS  /tmp/cc3e9u1N.s 			page 5


 112              		.loc 1 117 3 is_stmt 1 view .LVU17
 113              		.loc 1 117 19 is_stmt 0 view .LVU18
 114 000c 2B4B     		ldr	r3, .L13
 115              		.loc 1 117 6 view .LVU19
 116 000e 1B7B     		ldrb	r3, [r3, #12]
 117 0010 002B     		cmp	r3, #0
 118 0012 0BD1     		bne	.L11
 118:User/motor.c  ****   {
 119:User/motor.c  ****     B11A1_U.Control.Mode = StopMode;
 120:User/motor.c  ****   }
 121:User/motor.c  ****   // Clear Flag
 122:User/motor.c  ****   B11A1_U.Control.ResetPI = false;
 119              		.loc 1 122 27 view .LVU20
 120 0014 0022     		movs	r2, #0
 121 0016 2A4B     		ldr	r3, .L13+4
 122              		.loc 1 122 3 is_stmt 1 view .LVU21
 123:User/motor.c  ****   B11A1_U.Control.ResetLPF = false;
 123              		.loc 1 123 3 view .LVU22
 124:User/motor.c  ****   B11A1_U.Control.ResetFault = false;
 125:User/motor.c  **** 
 126:User/motor.c  ****   if (Save.Flag == ExecuteSave)
 124              		.loc 1 126 11 is_stmt 0 view .LVU23
 125 0018 2A4C     		ldr	r4, .L13+8
 122:User/motor.c  ****   B11A1_U.Control.ResetLPF = false;
 126              		.loc 1 122 27 view .LVU24
 127 001a 1A82     		strh	r2, [r3, #16]
 124:User/motor.c  ****   B11A1_U.Control.ResetFault = false;
 128              		.loc 1 124 3 is_stmt 1 view .LVU25
 124:User/motor.c  ****   B11A1_U.Control.ResetFault = false;
 129              		.loc 1 124 30 is_stmt 0 view .LVU26
 130 001c 5A62     		str	r2, [r3, #36]
 131              		.loc 1 126 3 is_stmt 1 view .LVU27
 132              		.loc 1 126 6 is_stmt 0 view .LVU28
 133 001e 2378     		ldrb	r3, [r4]
 134 0020 022B     		cmp	r3, #2
 135 0022 0DD0     		beq	.L12
 136              	.L6:
 127:User/motor.c  ****   {
 128:User/motor.c  ****     g_save.motor.state = HasStoredInfo;
 129:User/motor.c  ****     g_save.motor.angle_offset = Save.Info.AngleOffset;
 130:User/motor.c  **** 
 131:User/motor.c  ****     g_save.motor.hall_a_min = (Save.Info.HallMiddleValue[0] - (Save.Info.HallValueSpace[0] >> 1)) *
 132:User/motor.c  ****     g_save.motor.hall_b_min = (Save.Info.HallMiddleValue[1] - (Save.Info.HallValueSpace[1] >> 1)) *
 133:User/motor.c  ****     g_save.motor.hall_a_max = (Save.Info.HallMiddleValue[0] + (Save.Info.HallValueSpace[0] >> 1)) *
 134:User/motor.c  ****     g_save.motor.hall_b_max = (Save.Info.HallMiddleValue[1] + (Save.Info.HallValueSpace[1] >> 1)) *
 135:User/motor.c  **** 
 136:User/motor.c  ****     g_save.motor.current_a_adc_zero = Save.Info.CurrentAdcZeroPoint[0];
 137:User/motor.c  ****     g_save.motor.current_b_adc_zero = Save.Info.CurrentAdcZeroPoint[1];
 138:User/motor.c  **** 
 139:User/motor.c  ****     save_write();
 140:User/motor.c  ****   }
 141:User/motor.c  **** }
 137              		.loc 1 141 1 view .LVU29
 138              		@ sp needed
 139 0024 C0BC     		pop	{r6, r7}
 140 0026 B946     		mov	r9, r7
 141 0028 B046     		mov	r8, r6
ARM GAS  /tmp/cc3e9u1N.s 			page 6


 142 002a F8BD     		pop	{r3, r4, r5, r6, r7, pc}
 143              	.L11:
 119:User/motor.c  ****   }
 144              		.loc 1 119 5 is_stmt 1 view .LVU30
 119:User/motor.c  ****   }
 145              		.loc 1 119 26 is_stmt 0 view .LVU31
 146 002c 0022     		movs	r2, #0
 147 002e 244B     		ldr	r3, .L13+4
 126:User/motor.c  ****   {
 148              		.loc 1 126 11 view .LVU32
 149 0030 244C     		ldr	r4, .L13+8
 119:User/motor.c  ****   }
 150              		.loc 1 119 26 view .LVU33
 151 0032 5A61     		str	r2, [r3, #20]
 122:User/motor.c  ****   B11A1_U.Control.ResetLPF = false;
 152              		.loc 1 122 3 is_stmt 1 view .LVU34
 123:User/motor.c  ****   B11A1_U.Control.ResetFault = false;
 153              		.loc 1 123 3 view .LVU35
 122:User/motor.c  ****   B11A1_U.Control.ResetLPF = false;
 154              		.loc 1 122 27 is_stmt 0 view .LVU36
 155 0034 0022     		movs	r2, #0
 156 0036 1A82     		strh	r2, [r3, #16]
 124:User/motor.c  **** 
 157              		.loc 1 124 3 is_stmt 1 view .LVU37
 124:User/motor.c  **** 
 158              		.loc 1 124 30 is_stmt 0 view .LVU38
 159 0038 5A62     		str	r2, [r3, #36]
 126:User/motor.c  ****   {
 160              		.loc 1 126 3 is_stmt 1 view .LVU39
 126:User/motor.c  ****   {
 161              		.loc 1 126 6 is_stmt 0 view .LVU40
 162 003a 2378     		ldrb	r3, [r4]
 163 003c 022B     		cmp	r3, #2
 164 003e F1D1     		bne	.L6
 165              	.L12:
 166              	.LBB8:
 167              	.LBI8:
 114:User/motor.c  **** {
 168              		.loc 1 114 6 is_stmt 1 view .LVU41
 169              	.LBB9:
 128:User/motor.c  ****     g_save.motor.angle_offset = Save.Info.AngleOffset;
 170              		.loc 1 128 5 view .LVU42
 128:User/motor.c  ****     g_save.motor.angle_offset = Save.Info.AngleOffset;
 171              		.loc 1 128 24 is_stmt 0 view .LVU43
 172 0040 214D     		ldr	r5, .L13+12
 173 0042 013B     		subs	r3, r3, #1
 174 0044 2B76     		strb	r3, [r5, #24]
 129:User/motor.c  **** 
 175              		.loc 1 129 5 is_stmt 1 view .LVU44
 129:User/motor.c  **** 
 176              		.loc 1 129 31 is_stmt 0 view .LVU45
 177 0046 6368     		ldr	r3, [r4, #4]
 178 0048 6B62     		str	r3, [r5, #36]
 131:User/motor.c  ****     g_save.motor.hall_b_min = (Save.Info.HallMiddleValue[1] - (Save.Info.HallValueSpace[1] >> 1)) *
 179              		.loc 1 131 5 is_stmt 1 view .LVU46
 131:User/motor.c  ****     g_save.motor.hall_b_min = (Save.Info.HallMiddleValue[1] - (Save.Info.HallValueSpace[1] >> 1)) *
 180              		.loc 1 131 92 is_stmt 0 view .LVU47
ARM GAS  /tmp/cc3e9u1N.s 			page 7


 181 004a 2789     		ldrh	r7, [r4, #8]
 131:User/motor.c  ****     g_save.motor.hall_b_min = (Save.Info.HallMiddleValue[1] - (Save.Info.HallValueSpace[1] >> 1)) *
 182              		.loc 1 131 57 view .LVU48
 183 004c A689     		ldrh	r6, [r4, #12]
 131:User/motor.c  ****     g_save.motor.hall_b_min = (Save.Info.HallMiddleValue[1] - (Save.Info.HallValueSpace[1] >> 1)) *
 184              		.loc 1 131 92 view .LVU49
 185 004e 7F08     		lsrs	r7, r7, #1
 131:User/motor.c  ****     g_save.motor.hall_b_min = (Save.Info.HallMiddleValue[1] - (Save.Info.HallValueSpace[1] >> 1)) *
 186              		.loc 1 131 61 view .LVU50
 187 0050 F01B     		subs	r0, r6, r7
 131:User/motor.c  ****     g_save.motor.hall_b_min = (Save.Info.HallMiddleValue[1] - (Save.Info.HallValueSpace[1] >> 1)) *
 188              		.loc 1 131 99 view .LVU51
 189 0052 FFF7FEFF 		bl	__aeabi_i2d
 190              	.LVL2:
 191 0056 1D4A     		ldr	r2, .L13+16
 192 0058 1D4B     		ldr	r3, .L13+20
 193 005a FFF7FEFF 		bl	__aeabi_dmul
 194              	.LVL3:
 131:User/motor.c  ****     g_save.motor.hall_b_min = (Save.Info.HallMiddleValue[1] - (Save.Info.HallValueSpace[1] >> 1)) *
 195              		.loc 1 131 29 view .LVU52
 196 005e FFF7FEFF 		bl	__aeabi_d2uiz
 197              	.LVL4:
 198 0062 E883     		strh	r0, [r5, #30]
 132:User/motor.c  ****     g_save.motor.hall_a_max = (Save.Info.HallMiddleValue[0] + (Save.Info.HallValueSpace[0] >> 1)) *
 199              		.loc 1 132 5 is_stmt 1 view .LVU53
 132:User/motor.c  ****     g_save.motor.hall_a_max = (Save.Info.HallMiddleValue[0] + (Save.Info.HallValueSpace[0] >> 1)) *
 200              		.loc 1 132 57 is_stmt 0 view .LVU54
 201 0064 E389     		ldrh	r3, [r4, #14]
 202 0066 9846     		mov	r8, r3
 132:User/motor.c  ****     g_save.motor.hall_a_max = (Save.Info.HallMiddleValue[0] + (Save.Info.HallValueSpace[0] >> 1)) *
 203              		.loc 1 132 92 view .LVU55
 204 0068 6389     		ldrh	r3, [r4, #10]
 205 006a 5B08     		lsrs	r3, r3, #1
 206 006c 9946     		mov	r9, r3
 132:User/motor.c  ****     g_save.motor.hall_a_max = (Save.Info.HallMiddleValue[0] + (Save.Info.HallValueSpace[0] >> 1)) *
 207              		.loc 1 132 61 view .LVU56
 208 006e 4346     		mov	r3, r8
 209 0070 4A46     		mov	r2, r9
 210 0072 981A     		subs	r0, r3, r2
 132:User/motor.c  ****     g_save.motor.hall_a_max = (Save.Info.HallMiddleValue[0] + (Save.Info.HallValueSpace[0] >> 1)) *
 211              		.loc 1 132 99 view .LVU57
 212 0074 FFF7FEFF 		bl	__aeabi_i2d
 213              	.LVL5:
 214 0078 144A     		ldr	r2, .L13+16
 215 007a 154B     		ldr	r3, .L13+20
 216 007c FFF7FEFF 		bl	__aeabi_dmul
 217              	.LVL6:
 132:User/motor.c  ****     g_save.motor.hall_a_max = (Save.Info.HallMiddleValue[0] + (Save.Info.HallValueSpace[0] >> 1)) *
 218              		.loc 1 132 29 view .LVU58
 219 0080 FFF7FEFF 		bl	__aeabi_d2uiz
 220              	.LVL7:
 221 0084 2884     		strh	r0, [r5, #32]
 133:User/motor.c  ****     g_save.motor.hall_b_max = (Save.Info.HallMiddleValue[1] + (Save.Info.HallValueSpace[1] >> 1)) *
 222              		.loc 1 133 5 is_stmt 1 view .LVU59
 133:User/motor.c  ****     g_save.motor.hall_b_max = (Save.Info.HallMiddleValue[1] + (Save.Info.HallValueSpace[1] >> 1)) *
 223              		.loc 1 133 61 is_stmt 0 view .LVU60
 224 0086 F019     		adds	r0, r6, r7
ARM GAS  /tmp/cc3e9u1N.s 			page 8


 133:User/motor.c  ****     g_save.motor.hall_b_max = (Save.Info.HallMiddleValue[1] + (Save.Info.HallValueSpace[1] >> 1)) *
 225              		.loc 1 133 99 view .LVU61
 226 0088 FFF7FEFF 		bl	__aeabi_i2d
 227              	.LVL8:
 228 008c 0F4A     		ldr	r2, .L13+16
 229 008e 104B     		ldr	r3, .L13+20
 230 0090 FFF7FEFF 		bl	__aeabi_dmul
 231              	.LVL9:
 133:User/motor.c  ****     g_save.motor.hall_b_max = (Save.Info.HallMiddleValue[1] + (Save.Info.HallValueSpace[1] >> 1)) *
 232              		.loc 1 133 29 view .LVU62
 233 0094 FFF7FEFF 		bl	__aeabi_d2uiz
 234              	.LVL10:
 235 0098 6883     		strh	r0, [r5, #26]
 134:User/motor.c  **** 
 236              		.loc 1 134 5 is_stmt 1 view .LVU63
 134:User/motor.c  **** 
 237              		.loc 1 134 61 is_stmt 0 view .LVU64
 238 009a 4046     		mov	r0, r8
 239 009c 4844     		add	r0, r0, r9
 134:User/motor.c  **** 
 240              		.loc 1 134 99 view .LVU65
 241 009e FFF7FEFF 		bl	__aeabi_i2d
 242              	.LVL11:
 243 00a2 0A4A     		ldr	r2, .L13+16
 244 00a4 0A4B     		ldr	r3, .L13+20
 245 00a6 FFF7FEFF 		bl	__aeabi_dmul
 246              	.LVL12:
 134:User/motor.c  **** 
 247              		.loc 1 134 29 view .LVU66
 248 00aa FFF7FEFF 		bl	__aeabi_d2uiz
 249              	.LVL13:
 136:User/motor.c  ****     g_save.motor.current_b_adc_zero = Save.Info.CurrentAdcZeroPoint[1];
 250              		.loc 1 136 37 view .LVU67
 251 00ae 2369     		ldr	r3, [r4, #16]
 134:User/motor.c  **** 
 252              		.loc 1 134 29 view .LVU68
 253 00b0 A883     		strh	r0, [r5, #28]
 136:User/motor.c  ****     g_save.motor.current_b_adc_zero = Save.Info.CurrentAdcZeroPoint[1];
 254              		.loc 1 136 5 is_stmt 1 view .LVU69
 137:User/motor.c  **** 
 255              		.loc 1 137 5 view .LVU70
 136:User/motor.c  ****     g_save.motor.current_b_adc_zero = Save.Info.CurrentAdcZeroPoint[1];
 256              		.loc 1 136 37 is_stmt 0 view .LVU71
 257 00b2 2B63     		str	r3, [r5, #48]
 139:User/motor.c  ****   }
 258              		.loc 1 139 5 is_stmt 1 view .LVU72
 259 00b4 FFF7FEFF 		bl	save_write
 260              	.LVL14:
 261              	.LBE9:
 262              	.LBE8:
 263              		.loc 1 141 1 is_stmt 0 view .LVU73
 264 00b8 B4E7     		b	.L6
 265              	.L14:
 266 00ba C046     		.align	2
 267              	.L13:
 268 00bc 00000000 		.word	B11A1_Y
 269 00c0 00000000 		.word	B11A1_U
ARM GAS  /tmp/cc3e9u1N.s 			page 9


 270 00c4 00000000 		.word	Save
 271 00c8 00000000 		.word	g_save
 272 00cc 33333333 		.word	858993459
 273 00d0 3333F33F 		.word	1072902963
 274              		.cfi_endproc
 275              	.LFE47:
 277              		.section	.text.ADC_Handler,"ax",%progbits
 278              		.align	1
 279              		.p2align 2,,3
 280              		.global	ADC_Handler
 281              		.syntax unified
 282              		.code	16
 283              		.thumb_func
 285              	ADC_Handler:
 286              	.LFB45:
  53:User/motor.c  **** 
 287              		.loc 1 53 1 is_stmt 1 view -0
 288              		.cfi_startproc
 289              		@ args = 0, pretend = 0, frame = 0
 290              		@ frame_needed = 0, uses_anonymous_args = 0
  59:User/motor.c  ****   {
 291              		.loc 1 59 3 view .LVU75
  59:User/motor.c  ****   {
 292              		.loc 1 59 10 is_stmt 0 view .LVU76
 293 0000 424A     		ldr	r2, .L32
  53:User/motor.c  **** 
 294              		.loc 1 53 1 view .LVU77
 295 0002 10B5     		push	{r4, lr}
 296              	.LCFI3:
 297              		.cfi_def_cfa_offset 8
 298              		.cfi_offset 4, -8
 299              		.cfi_offset 14, -4
  59:User/motor.c  ****   {
 300              		.loc 1 59 10 view .LVU78
 301 0004 5168     		ldr	r1, [r2, #4]
  59:User/motor.c  ****   {
 302              		.loc 1 59 21 view .LVU79
 303 0006 9368     		ldr	r3, [r2, #8]
  59:User/motor.c  ****   {
 304              		.loc 1 59 16 view .LVU80
 305 0008 0B40     		ands	r3, r1
  59:User/motor.c  ****   {
 306              		.loc 1 59 27 view .LVU81
 307 000a 0121     		movs	r1, #1
  59:User/motor.c  ****   {
 308              		.loc 1 59 6 view .LVU82
 309 000c 1942     		tst	r1, r3
 310 000e 0AD0     		beq	.L16
  61:User/motor.c  ****     B11A1_U.Motor.SetFault |= HardOverVoltage;
 311              		.loc 1 61 5 is_stmt 1 view .LVU83
  61:User/motor.c  ****     B11A1_U.Motor.SetFault |= HardOverVoltage;
 312              		.loc 1 61 14 is_stmt 0 view .LVU84
 313 0010 5160     		str	r1, [r2, #4]
  62:User/motor.c  ****     PWMOUT_DISABLE();
 314              		.loc 1 62 5 is_stmt 1 view .LVU85
  62:User/motor.c  ****     PWMOUT_DISABLE();
 315              		.loc 1 62 28 is_stmt 0 view .LVU86
ARM GAS  /tmp/cc3e9u1N.s 			page 10


 316 0012 3F4A     		ldr	r2, .L32+4
 317 0014 0131     		adds	r1, r1, #1
 318 0016 1368     		ldr	r3, [r2]
 319 0018 0B43     		orrs	r3, r1
 320 001a 1360     		str	r3, [r2]
  63:User/motor.c  ****   }
 321              		.loc 1 63 5 is_stmt 1 view .LVU87
 322 001c 3D4A     		ldr	r2, .L32+8
 323 001e 3E49     		ldr	r1, .L32+12
 324 0020 136A     		ldr	r3, [r2, #32]
 325 0022 0B40     		ands	r3, r1
 326 0024 1362     		str	r3, [r2, #32]
 327              	.L16:
  66:User/motor.c  ****   {
 328              		.loc 1 66 3 view .LVU88
  66:User/motor.c  ****   {
 329              		.loc 1 66 10 is_stmt 0 view .LVU89
 330 0026 394A     		ldr	r2, .L32
 331 0028 5168     		ldr	r1, [r2, #4]
  66:User/motor.c  ****   {
 332              		.loc 1 66 21 view .LVU90
 333 002a 9368     		ldr	r3, [r2, #8]
  66:User/motor.c  ****   {
 334              		.loc 1 66 16 view .LVU91
 335 002c 0B40     		ands	r3, r1
  66:User/motor.c  ****   {
 336              		.loc 1 66 27 view .LVU92
 337 002e 0221     		movs	r1, #2
  66:User/motor.c  ****   {
 338              		.loc 1 66 6 view .LVU93
 339 0030 1942     		tst	r1, r3
 340 0032 0AD0     		beq	.L17
  68:User/motor.c  ****     B11A1_U.Motor.SetFault |= HardOverCurrent;
 341              		.loc 1 68 5 is_stmt 1 view .LVU94
  68:User/motor.c  ****     B11A1_U.Motor.SetFault |= HardOverCurrent;
 342              		.loc 1 68 14 is_stmt 0 view .LVU95
 343 0034 5160     		str	r1, [r2, #4]
  69:User/motor.c  ****     PWMOUT_DISABLE();
 344              		.loc 1 69 5 is_stmt 1 view .LVU96
  69:User/motor.c  ****     PWMOUT_DISABLE();
 345              		.loc 1 69 28 is_stmt 0 view .LVU97
 346 0036 364A     		ldr	r2, .L32+4
 347 0038 0139     		subs	r1, r1, #1
 348 003a 1368     		ldr	r3, [r2]
 349 003c 0B43     		orrs	r3, r1
 350 003e 1360     		str	r3, [r2]
  70:User/motor.c  ****   }
 351              		.loc 1 70 5 is_stmt 1 view .LVU98
 352 0040 344A     		ldr	r2, .L32+8
 353 0042 3549     		ldr	r1, .L32+12
 354 0044 136A     		ldr	r3, [r2, #32]
 355 0046 0B40     		ands	r3, r1
 356 0048 1362     		str	r3, [r2, #32]
 357              	.L17:
  73:User/motor.c  ****   {
 358              		.loc 1 73 3 view .LVU99
  73:User/motor.c  ****   {
ARM GAS  /tmp/cc3e9u1N.s 			page 11


 359              		.loc 1 73 10 is_stmt 0 view .LVU100
 360 004a 304A     		ldr	r2, .L32
 361 004c D168     		ldr	r1, [r2, #12]
  73:User/motor.c  ****   {
 362              		.loc 1 73 24 view .LVU101
 363 004e 1369     		ldr	r3, [r2, #16]
  73:User/motor.c  ****   {
 364              		.loc 1 73 19 view .LVU102
 365 0050 0B40     		ands	r3, r1
  73:User/motor.c  ****   {
 366              		.loc 1 73 33 view .LVU103
 367 0052 8021     		movs	r1, #128
 368 0054 8901     		lsls	r1, r1, #6
  73:User/motor.c  ****   {
 369              		.loc 1 73 6 view .LVU104
 370 0056 0B42     		tst	r3, r1
 371 0058 00D1     		bne	.L30
 372              	.L15:
 103:User/motor.c  **** 
 373              		.loc 1 103 1 view .LVU105
 374              		@ sp needed
 375 005a 10BD     		pop	{r4, pc}
 376              	.L30:
  76:User/motor.c  ****     B11A1_U.Motor.TempAdcValue = EXTERNTEMPSENSOR;
 377              		.loc 1 76 5 is_stmt 1 view .LVU106
  77:User/motor.c  ****     B11A1_U.Motor.HallAdcValue[0] = HALL_A;
 378              		.loc 1 77 34 is_stmt 0 view .LVU107
 379 005c 2F4B     		ldr	r3, .L32+16
  77:User/motor.c  ****     B11A1_U.Motor.HallAdcValue[0] = HALL_A;
 380              		.loc 1 77 32 view .LVU108
 381 005e 2C4C     		ldr	r4, .L32+4
 382 0060 1B68     		ldr	r3, [r3]
  76:User/motor.c  ****     B11A1_U.Motor.TempAdcValue = EXTERNTEMPSENSOR;
 383              		.loc 1 76 17 view .LVU109
 384 0062 D160     		str	r1, [r2, #12]
  77:User/motor.c  ****     B11A1_U.Motor.HallAdcValue[0] = HALL_A;
 385              		.loc 1 77 5 is_stmt 1 view .LVU110
  77:User/motor.c  ****     B11A1_U.Motor.HallAdcValue[0] = HALL_A;
 386              		.loc 1 77 32 is_stmt 0 view .LVU111
 387 0064 2381     		strh	r3, [r4, #8]
  78:User/motor.c  ****     B11A1_U.Motor.HallAdcValue[1] = HALL_B;
 388              		.loc 1 78 5 is_stmt 1 view .LVU112
  78:User/motor.c  ****     B11A1_U.Motor.HallAdcValue[1] = HALL_B;
 389              		.loc 1 78 37 is_stmt 0 view .LVU113
 390 0066 2E4B     		ldr	r3, .L32+20
 391 0068 1A68     		ldr	r2, [r3]
 392 006a 2E4B     		ldr	r3, .L32+24
 393 006c 1B68     		ldr	r3, [r3]
 394 006e D218     		adds	r2, r2, r3
 395 0070 2D4B     		ldr	r3, .L32+28
 396 0072 1B68     		ldr	r3, [r3]
 397 0074 9B18     		adds	r3, r3, r2
 398 0076 2D4A     		ldr	r2, .L32+32
 399 0078 1268     		ldr	r2, [r2]
 400 007a D218     		adds	r2, r2, r3
 401 007c 2C4B     		ldr	r3, .L32+36
 402 007e 1B68     		ldr	r3, [r3]
ARM GAS  /tmp/cc3e9u1N.s 			page 12


 403 0080 9B18     		adds	r3, r3, r2
  78:User/motor.c  ****     B11A1_U.Motor.HallAdcValue[1] = HALL_B;
 404              		.loc 1 78 35 view .LVU114
 405 0082 A380     		strh	r3, [r4, #4]
  79:User/motor.c  ****     B11A1_U.Motor.VoltageAdcValue = VOLTAGE;
 406              		.loc 1 79 5 is_stmt 1 view .LVU115
  79:User/motor.c  ****     B11A1_U.Motor.VoltageAdcValue = VOLTAGE;
 407              		.loc 1 79 37 is_stmt 0 view .LVU116
 408 0084 2B4B     		ldr	r3, .L32+40
 409 0086 1A68     		ldr	r2, [r3]
 410 0088 2B4B     		ldr	r3, .L32+44
 411 008a 1B68     		ldr	r3, [r3]
 412 008c D218     		adds	r2, r2, r3
 413 008e 2B4B     		ldr	r3, .L32+48
 414 0090 1B68     		ldr	r3, [r3]
 415 0092 9B18     		adds	r3, r3, r2
 416 0094 2A4A     		ldr	r2, .L32+52
 417 0096 1268     		ldr	r2, [r2]
 418 0098 D218     		adds	r2, r2, r3
 419 009a 2A4B     		ldr	r3, .L32+56
 420 009c 1B68     		ldr	r3, [r3]
 421 009e 9B18     		adds	r3, r3, r2
  79:User/motor.c  ****     B11A1_U.Motor.VoltageAdcValue = VOLTAGE;
 422              		.loc 1 79 35 view .LVU117
 423 00a0 E380     		strh	r3, [r4, #6]
  80:User/motor.c  ****     B11A1_U.Motor.CurrentAdcValue[0] = CURRENT_U;
 424              		.loc 1 80 5 is_stmt 1 view .LVU118
  80:User/motor.c  ****     B11A1_U.Motor.CurrentAdcValue[0] = CURRENT_U;
 425              		.loc 1 80 37 is_stmt 0 view .LVU119
 426 00a2 294B     		ldr	r3, .L32+60
  80:User/motor.c  ****     B11A1_U.Motor.CurrentAdcValue[0] = CURRENT_U;
 427              		.loc 1 80 35 view .LVU120
 428 00a4 1B68     		ldr	r3, [r3]
 429 00a6 6381     		strh	r3, [r4, #10]
  81:User/motor.c  ****     B11A1_U.Motor.CurrentAdcValue[1] = CURRENT_V;
 430              		.loc 1 81 5 is_stmt 1 view .LVU121
  81:User/motor.c  ****     B11A1_U.Motor.CurrentAdcValue[1] = CURRENT_V;
 431              		.loc 1 81 40 is_stmt 0 view .LVU122
 432 00a8 284B     		ldr	r3, .L32+64
  81:User/motor.c  ****     B11A1_U.Motor.CurrentAdcValue[1] = CURRENT_V;
 433              		.loc 1 81 38 view .LVU123
 434 00aa 1B68     		ldr	r3, [r3]
 435 00ac A381     		strh	r3, [r4, #12]
  82:User/motor.c  **** 
 436              		.loc 1 82 5 is_stmt 1 view .LVU124
  82:User/motor.c  **** 
 437              		.loc 1 82 40 is_stmt 0 view .LVU125
 438 00ae 284B     		ldr	r3, .L32+68
  82:User/motor.c  **** 
 439              		.loc 1 82 38 view .LVU126
 440 00b0 1B68     		ldr	r3, [r3]
 441 00b2 E381     		strh	r3, [r4, #14]
  84:User/motor.c  ****     B11A1_U.Motor.SetFault = 0;
 442              		.loc 1 84 5 is_stmt 1 view .LVU127
 443 00b4 FFF7FEFF 		bl	InterruptUpdate
 444              	.LVL15:
  85:User/motor.c  ****     if (B11A1_Y.Enable)
ARM GAS  /tmp/cc3e9u1N.s 			page 13


 445              		.loc 1 85 5 view .LVU128
  85:User/motor.c  ****     if (B11A1_Y.Enable)
 446              		.loc 1 85 28 is_stmt 0 view .LVU129
 447 00b8 0023     		movs	r3, #0
  86:User/motor.c  ****     {
 448              		.loc 1 86 16 view .LVU130
 449 00ba 264A     		ldr	r2, .L32+72
  85:User/motor.c  ****     if (B11A1_Y.Enable)
 450              		.loc 1 85 28 view .LVU131
 451 00bc 2360     		str	r3, [r4]
  86:User/motor.c  ****     {
 452              		.loc 1 86 5 is_stmt 1 view .LVU132
  86:User/motor.c  ****     {
 453              		.loc 1 86 8 is_stmt 0 view .LVU133
 454 00be 1378     		ldrb	r3, [r2]
  88:User/motor.c  ****     }
 455              		.loc 1 88 7 view .LVU134
 456 00c0 1449     		ldr	r1, .L32+8
  86:User/motor.c  ****     {
 457              		.loc 1 86 8 view .LVU135
 458 00c2 002B     		cmp	r3, #0
 459 00c4 1DD1     		bne	.L31
  92:User/motor.c  ****     }
 460              		.loc 1 92 7 is_stmt 1 view .LVU136
 461 00c6 0B6A     		ldr	r3, [r1, #32]
 462 00c8 1348     		ldr	r0, .L32+12
 463 00ca 0340     		ands	r3, r0
 464 00cc 0B62     		str	r3, [r1, #32]
 465              	.L20:
  95:User/motor.c  ****     PWMOUT_V = B11A1_Y.Duty[1] * (PWMOUT_MAX) >> 14;
 466              		.loc 1 95 5 view .LVU137
  95:User/motor.c  ****     PWMOUT_V = B11A1_Y.Duty[1] * (PWMOUT_MAX) >> 14;
 467              		.loc 1 95 28 is_stmt 0 view .LVU138
 468 00ce 0223     		movs	r3, #2
 469 00d0 D15E     		ldrsh	r1, [r2, r3]
  95:User/motor.c  ****     PWMOUT_V = B11A1_Y.Duty[1] * (PWMOUT_MAX) >> 14;
 470              		.loc 1 95 32 view .LVU139
 471 00d2 8B00     		lsls	r3, r1, #2
 472 00d4 5B18     		adds	r3, r3, r1
 473 00d6 9901     		lsls	r1, r3, #6
 474 00d8 5B18     		adds	r3, r3, r1
  95:User/motor.c  ****     PWMOUT_V = B11A1_Y.Duty[1] * (PWMOUT_MAX) >> 14;
 475              		.loc 1 95 14 view .LVU140
 476 00da 0E49     		ldr	r1, .L32+8
  95:User/motor.c  ****     PWMOUT_V = B11A1_Y.Duty[1] * (PWMOUT_MAX) >> 14;
 477              		.loc 1 95 47 view .LVU141
 478 00dc 1B13     		asrs	r3, r3, #12
  95:User/motor.c  ****     PWMOUT_V = B11A1_Y.Duty[1] * (PWMOUT_MAX) >> 14;
 479              		.loc 1 95 14 view .LVU142
 480 00de 4B63     		str	r3, [r1, #52]
  96:User/motor.c  ****     PWMOUT_W = B11A1_Y.Duty[2] * (PWMOUT_MAX) >> 14;
 481              		.loc 1 96 5 is_stmt 1 view .LVU143
  96:User/motor.c  ****     PWMOUT_W = B11A1_Y.Duty[2] * (PWMOUT_MAX) >> 14;
 482              		.loc 1 96 28 is_stmt 0 view .LVU144
 483 00e0 0423     		movs	r3, #4
 484 00e2 D05E     		ldrsh	r0, [r2, r3]
  96:User/motor.c  ****     PWMOUT_W = B11A1_Y.Duty[2] * (PWMOUT_MAX) >> 14;
ARM GAS  /tmp/cc3e9u1N.s 			page 14


 485              		.loc 1 96 32 view .LVU145
 486 00e4 8300     		lsls	r3, r0, #2
 487 00e6 1B18     		adds	r3, r3, r0
 488 00e8 9801     		lsls	r0, r3, #6
 489 00ea 1B18     		adds	r3, r3, r0
  96:User/motor.c  ****     PWMOUT_W = B11A1_Y.Duty[2] * (PWMOUT_MAX) >> 14;
 490              		.loc 1 96 47 view .LVU146
 491 00ec 1B13     		asrs	r3, r3, #12
  96:User/motor.c  ****     PWMOUT_W = B11A1_Y.Duty[2] * (PWMOUT_MAX) >> 14;
 492              		.loc 1 96 14 view .LVU147
 493 00ee 8B63     		str	r3, [r1, #56]
  97:User/motor.c  ****   }
 494              		.loc 1 97 5 is_stmt 1 view .LVU148
  97:User/motor.c  ****   }
 495              		.loc 1 97 28 is_stmt 0 view .LVU149
 496 00f0 0623     		movs	r3, #6
 497 00f2 D25E     		ldrsh	r2, [r2, r3]
  97:User/motor.c  ****   }
 498              		.loc 1 97 32 view .LVU150
 499 00f4 9300     		lsls	r3, r2, #2
 500 00f6 9B18     		adds	r3, r3, r2
 501 00f8 9A01     		lsls	r2, r3, #6
 502 00fa 9B18     		adds	r3, r3, r2
  97:User/motor.c  ****   }
 503              		.loc 1 97 47 view .LVU151
 504 00fc 1B13     		asrs	r3, r3, #12
  97:User/motor.c  ****   }
 505              		.loc 1 97 14 view .LVU152
 506 00fe CB63     		str	r3, [r1, #60]
 103:User/motor.c  **** 
 507              		.loc 1 103 1 view .LVU153
 508 0100 ABE7     		b	.L15
 509              	.L31:
  88:User/motor.c  ****     }
 510              		.loc 1 88 7 is_stmt 1 view .LVU154
 511 0102 086A     		ldr	r0, [r1, #32]
 512 0104 144B     		ldr	r3, .L32+76
 513 0106 0343     		orrs	r3, r0
 514 0108 0B62     		str	r3, [r1, #32]
 515 010a E0E7     		b	.L20
 516              	.L33:
 517              		.align	2
 518              	.L32:
 519 010c 00A00140 		.word	1073848320
 520 0110 00000000 		.word	B11A1_U
 521 0114 00000140 		.word	1073807360
 522 0118 AAFAFFFF 		.word	-1366
 523 011c D8A00140 		.word	1073848536
 524 0120 CCA00140 		.word	1073848524
 525 0124 D4A00140 		.word	1073848532
 526 0128 E4A00140 		.word	1073848548
 527 012c ECA00140 		.word	1073848556
 528 0130 F4A00140 		.word	1073848564
 529 0134 C8A00140 		.word	1073848520
 530 0138 D0A00140 		.word	1073848528
 531 013c E0A00140 		.word	1073848544
 532 0140 E8A00140 		.word	1073848552
ARM GAS  /tmp/cc3e9u1N.s 			page 15


 533 0144 F0A00140 		.word	1073848560
 534 0148 F8A00140 		.word	1073848568
 535 014c C0A00140 		.word	1073848512
 536 0150 C4A00140 		.word	1073848516
 537 0154 00000000 		.word	B11A1_Y
 538 0158 55050000 		.word	1365
 539              		.cfi_endproc
 540              	.LFE45:
 542              		.section	.text.motor_init,"ax",%progbits
 543              		.align	1
 544              		.p2align 2,,3
 545              		.global	motor_init
 546              		.syntax unified
 547              		.code	16
 548              		.thumb_func
 550              	motor_init:
 551              	.LFB48:
 142:User/motor.c  **** 
 143:User/motor.c  **** void motor_init(void)
 144:User/motor.c  **** {
 552              		.loc 1 144 1 view -0
 553              		.cfi_startproc
 554              		@ args = 0, pretend = 0, frame = 0
 555              		@ frame_needed = 0, uses_anonymous_args = 0
 145:User/motor.c  ****   memset(&Save.Info, 0, sizeof(Save.Info));
 556              		.loc 1 145 3 view .LVU156
 146:User/motor.c  ****   Save.Flag = g_save.motor.state;
 557              		.loc 1 146 3 view .LVU157
 144:User/motor.c  ****   memset(&Save.Info, 0, sizeof(Save.Info));
 558              		.loc 1 144 1 is_stmt 0 view .LVU158
 559 0000 F8B5     		push	{r3, r4, r5, r6, r7, lr}
 560              	.LCFI4:
 561              		.cfi_def_cfa_offset 24
 562              		.cfi_offset 3, -24
 563              		.cfi_offset 4, -20
 564              		.cfi_offset 5, -16
 565              		.cfi_offset 6, -12
 566              		.cfi_offset 7, -8
 567              		.cfi_offset 14, -4
 568 0002 CE46     		mov	lr, r9
 569 0004 4746     		mov	r7, r8
 570 0006 80B5     		push	{r7, lr}
 571              	.LCFI5:
 572              		.cfi_def_cfa_offset 32
 573              		.cfi_offset 8, -32
 574              		.cfi_offset 9, -28
 575              		.loc 1 146 27 view .LVU159
 576 0008 274D     		ldr	r5, .L35
 577              		.loc 1 146 13 view .LVU160
 578 000a 284C     		ldr	r4, .L35+4
 579 000c 2B7E     		ldrb	r3, [r5, #24]
 147:User/motor.c  ****   Save.Info.AngleOffset = g_save.motor.angle_offset;
 148:User/motor.c  ****   Save.Info.HallValueSpace[0] = (g_save.motor.hall_a_max - g_save.motor.hall_a_min) * 0.83333333333
 149:User/motor.c  ****   Save.Info.HallValueSpace[1] = (g_save.motor.hall_b_max - g_save.motor.hall_b_min) * 0.83333333333
 150:User/motor.c  ****   Save.Info.HallMiddleValue[0] = ((g_save.motor.hall_a_max + g_save.motor.hall_a_min) >> 1) * 0.833
 151:User/motor.c  ****   Save.Info.HallMiddleValue[1] = ((g_save.motor.hall_b_max + g_save.motor.hall_b_min) >> 1) * 0.833
 152:User/motor.c  ****   Save.Info.CurrentAdcZeroPoint[0] = g_save.motor.current_a_adc_zero;
ARM GAS  /tmp/cc3e9u1N.s 			page 16


 153:User/motor.c  ****   Save.Info.CurrentAdcZeroPoint[1] = g_save.motor.current_b_adc_zero;
 154:User/motor.c  ****   Save.Info.VelocityConfig.Kp = MOTOR_DEFAULT_VELOCITY_KP; // 比例系数
 155:User/motor.c  ****   Save.Info.VelocityConfig.Ki = MOTOR_DEFAULT_VELOCITY_KI; // 积分系数
 156:User/motor.c  ****   ModelInit();
 157:User/motor.c  ****   task_cycle_register(&g_task_handle, motor_step, 1);
 158:User/motor.c  ****   task_cycle_register(&g_task_handle, temp_setp, 100);
 159:User/motor.c  **** }
 580              		.loc 1 159 1 view .LVU161
 581              		@ sp needed
 146:User/motor.c  ****   Save.Info.AngleOffset = g_save.motor.angle_offset;
 582              		.loc 1 146 13 view .LVU162
 583 000e 2370     		strb	r3, [r4]
 147:User/motor.c  ****   Save.Info.AngleOffset = g_save.motor.angle_offset;
 584              		.loc 1 147 3 is_stmt 1 view .LVU163
 147:User/motor.c  ****   Save.Info.AngleOffset = g_save.motor.angle_offset;
 585              		.loc 1 147 25 is_stmt 0 view .LVU164
 586 0010 6B6A     		ldr	r3, [r5, #36]
 587 0012 6360     		str	r3, [r4, #4]
 148:User/motor.c  ****   Save.Info.HallValueSpace[1] = (g_save.motor.hall_b_max - g_save.motor.hall_b_min) * 0.83333333333
 588              		.loc 1 148 3 is_stmt 1 view .LVU165
 148:User/motor.c  ****   Save.Info.HallValueSpace[1] = (g_save.motor.hall_b_max - g_save.motor.hall_b_min) * 0.83333333333
 589              		.loc 1 148 46 is_stmt 0 view .LVU166
 590 0014 6E8B     		ldrh	r6, [r5, #26]
 148:User/motor.c  ****   Save.Info.HallValueSpace[1] = (g_save.motor.hall_b_max - g_save.motor.hall_b_min) * 0.83333333333
 591              		.loc 1 148 72 view .LVU167
 592 0016 EF8B     		ldrh	r7, [r5, #30]
 148:User/motor.c  ****   Save.Info.HallValueSpace[1] = (g_save.motor.hall_b_max - g_save.motor.hall_b_min) * 0.83333333333
 593              		.loc 1 148 58 view .LVU168
 594 0018 F01B     		subs	r0, r6, r7
 148:User/motor.c  ****   Save.Info.HallValueSpace[1] = (g_save.motor.hall_b_max - g_save.motor.hall_b_min) * 0.83333333333
 595              		.loc 1 148 85 view .LVU169
 596 001a FFF7FEFF 		bl	__aeabi_i2d
 597              	.LVL16:
 598 001e 244A     		ldr	r2, .L35+8
 599 0020 244B     		ldr	r3, .L35+12
 600 0022 FFF7FEFF 		bl	__aeabi_dmul
 601              	.LVL17:
 148:User/motor.c  ****   Save.Info.HallValueSpace[1] = (g_save.motor.hall_b_max - g_save.motor.hall_b_min) * 0.83333333333
 602              		.loc 1 148 31 view .LVU170
 603 0026 FFF7FEFF 		bl	__aeabi_d2uiz
 604              	.LVL18:
 605 002a 2081     		strh	r0, [r4, #8]
 149:User/motor.c  ****   Save.Info.HallMiddleValue[0] = ((g_save.motor.hall_a_max + g_save.motor.hall_a_min) >> 1) * 0.833
 606              		.loc 1 149 3 is_stmt 1 view .LVU171
 149:User/motor.c  ****   Save.Info.HallMiddleValue[0] = ((g_save.motor.hall_a_max + g_save.motor.hall_a_min) >> 1) * 0.833
 607              		.loc 1 149 46 is_stmt 0 view .LVU172
 608 002c AB8B     		ldrh	r3, [r5, #28]
 609 002e 9846     		mov	r8, r3
 149:User/motor.c  ****   Save.Info.HallMiddleValue[0] = ((g_save.motor.hall_a_max + g_save.motor.hall_a_min) >> 1) * 0.833
 610              		.loc 1 149 72 view .LVU173
 611 0030 2B8C     		ldrh	r3, [r5, #32]
 612 0032 9946     		mov	r9, r3
 149:User/motor.c  ****   Save.Info.HallMiddleValue[0] = ((g_save.motor.hall_a_max + g_save.motor.hall_a_min) >> 1) * 0.833
 613              		.loc 1 149 58 view .LVU174
 614 0034 4346     		mov	r3, r8
 615 0036 4A46     		mov	r2, r9
 616 0038 981A     		subs	r0, r3, r2
ARM GAS  /tmp/cc3e9u1N.s 			page 17


 149:User/motor.c  ****   Save.Info.HallMiddleValue[0] = ((g_save.motor.hall_a_max + g_save.motor.hall_a_min) >> 1) * 0.833
 617              		.loc 1 149 85 view .LVU175
 618 003a FFF7FEFF 		bl	__aeabi_i2d
 619              	.LVL19:
 620 003e 1C4A     		ldr	r2, .L35+8
 621 0040 1C4B     		ldr	r3, .L35+12
 622 0042 FFF7FEFF 		bl	__aeabi_dmul
 623              	.LVL20:
 149:User/motor.c  ****   Save.Info.HallMiddleValue[0] = ((g_save.motor.hall_a_max + g_save.motor.hall_a_min) >> 1) * 0.833
 624              		.loc 1 149 31 view .LVU176
 625 0046 FFF7FEFF 		bl	__aeabi_d2uiz
 626              	.LVL21:
 627 004a 6081     		strh	r0, [r4, #10]
 150:User/motor.c  ****   Save.Info.HallMiddleValue[1] = ((g_save.motor.hall_b_max + g_save.motor.hall_b_min) >> 1) * 0.833
 628              		.loc 1 150 3 is_stmt 1 view .LVU177
 150:User/motor.c  ****   Save.Info.HallMiddleValue[1] = ((g_save.motor.hall_b_max + g_save.motor.hall_b_min) >> 1) * 0.833
 629              		.loc 1 150 60 is_stmt 0 view .LVU178
 630 004c F019     		adds	r0, r6, r7
 150:User/motor.c  ****   Save.Info.HallMiddleValue[1] = ((g_save.motor.hall_b_max + g_save.motor.hall_b_min) >> 1) * 0.833
 631              		.loc 1 150 87 view .LVU179
 632 004e 4010     		asrs	r0, r0, #1
 150:User/motor.c  ****   Save.Info.HallMiddleValue[1] = ((g_save.motor.hall_b_max + g_save.motor.hall_b_min) >> 1) * 0.833
 633              		.loc 1 150 93 view .LVU180
 634 0050 FFF7FEFF 		bl	__aeabi_i2d
 635              	.LVL22:
 636 0054 164A     		ldr	r2, .L35+8
 637 0056 174B     		ldr	r3, .L35+12
 638 0058 FFF7FEFF 		bl	__aeabi_dmul
 639              	.LVL23:
 150:User/motor.c  ****   Save.Info.HallMiddleValue[1] = ((g_save.motor.hall_b_max + g_save.motor.hall_b_min) >> 1) * 0.833
 640              		.loc 1 150 32 view .LVU181
 641 005c FFF7FEFF 		bl	__aeabi_d2uiz
 642              	.LVL24:
 643 0060 A081     		strh	r0, [r4, #12]
 151:User/motor.c  ****   Save.Info.CurrentAdcZeroPoint[0] = g_save.motor.current_a_adc_zero;
 644              		.loc 1 151 3 is_stmt 1 view .LVU182
 151:User/motor.c  ****   Save.Info.CurrentAdcZeroPoint[0] = g_save.motor.current_a_adc_zero;
 645              		.loc 1 151 60 is_stmt 0 view .LVU183
 646 0062 4046     		mov	r0, r8
 647 0064 4844     		add	r0, r0, r9
 151:User/motor.c  ****   Save.Info.CurrentAdcZeroPoint[0] = g_save.motor.current_a_adc_zero;
 648              		.loc 1 151 87 view .LVU184
 649 0066 4010     		asrs	r0, r0, #1
 151:User/motor.c  ****   Save.Info.CurrentAdcZeroPoint[0] = g_save.motor.current_a_adc_zero;
 650              		.loc 1 151 93 view .LVU185
 651 0068 FFF7FEFF 		bl	__aeabi_i2d
 652              	.LVL25:
 653 006c 104A     		ldr	r2, .L35+8
 654 006e 114B     		ldr	r3, .L35+12
 655 0070 FFF7FEFF 		bl	__aeabi_dmul
 656              	.LVL26:
 151:User/motor.c  ****   Save.Info.CurrentAdcZeroPoint[0] = g_save.motor.current_a_adc_zero;
 657              		.loc 1 151 32 view .LVU186
 658 0074 FFF7FEFF 		bl	__aeabi_d2uiz
 659              	.LVL27:
 152:User/motor.c  ****   Save.Info.CurrentAdcZeroPoint[1] = g_save.motor.current_b_adc_zero;
 660              		.loc 1 152 36 view .LVU187
ARM GAS  /tmp/cc3e9u1N.s 			page 18


 661 0078 2B6B     		ldr	r3, [r5, #48]
 151:User/motor.c  ****   Save.Info.CurrentAdcZeroPoint[0] = g_save.motor.current_a_adc_zero;
 662              		.loc 1 151 32 view .LVU188
 663 007a E081     		strh	r0, [r4, #14]
 152:User/motor.c  ****   Save.Info.CurrentAdcZeroPoint[1] = g_save.motor.current_b_adc_zero;
 664              		.loc 1 152 3 is_stmt 1 view .LVU189
 153:User/motor.c  ****   Save.Info.VelocityConfig.Kp = MOTOR_DEFAULT_VELOCITY_KP; // 比例系数
 665              		.loc 1 153 3 view .LVU190
 152:User/motor.c  ****   Save.Info.CurrentAdcZeroPoint[1] = g_save.motor.current_b_adc_zero;
 666              		.loc 1 152 36 is_stmt 0 view .LVU191
 667 007c 2361     		str	r3, [r4, #16]
 154:User/motor.c  ****   Save.Info.VelocityConfig.Ki = MOTOR_DEFAULT_VELOCITY_KI; // 积分系数
 668              		.loc 1 154 3 is_stmt 1 view .LVU192
 154:User/motor.c  ****   Save.Info.VelocityConfig.Ki = MOTOR_DEFAULT_VELOCITY_KI; // 积分系数
 669              		.loc 1 154 31 is_stmt 0 view .LVU193
 670 007e 0E4B     		ldr	r3, .L35+16
 671 0080 6361     		str	r3, [r4, #20]
 155:User/motor.c  ****   ModelInit();
 672              		.loc 1 155 3 is_stmt 1 view .LVU194
 155:User/motor.c  ****   ModelInit();
 673              		.loc 1 155 31 is_stmt 0 view .LVU195
 674 0082 0E4B     		ldr	r3, .L35+20
 675 0084 A361     		str	r3, [r4, #24]
 156:User/motor.c  ****   task_cycle_register(&g_task_handle, motor_step, 1);
 676              		.loc 1 156 3 is_stmt 1 view .LVU196
 677 0086 FFF7FEFF 		bl	ModelInit
 678              	.LVL28:
 157:User/motor.c  ****   task_cycle_register(&g_task_handle, temp_setp, 100);
 679              		.loc 1 157 3 view .LVU197
 680 008a 0D4C     		ldr	r4, .L35+24
 681 008c 0122     		movs	r2, #1
 682 008e 2000     		movs	r0, r4
 683 0090 0C49     		ldr	r1, .L35+28
 684 0092 FFF7FEFF 		bl	task_cycle_register
 685              	.LVL29:
 158:User/motor.c  **** }
 686              		.loc 1 158 3 view .LVU198
 687 0096 6422     		movs	r2, #100
 688 0098 2000     		movs	r0, r4
 689 009a 0B49     		ldr	r1, .L35+32
 690 009c FFF7FEFF 		bl	task_cycle_register
 691              	.LVL30:
 692              		.loc 1 159 1 is_stmt 0 view .LVU199
 693 00a0 C0BC     		pop	{r6, r7}
 694 00a2 B946     		mov	r9, r7
 695 00a4 B046     		mov	r8, r6
 696 00a6 F8BD     		pop	{r3, r4, r5, r6, r7, pc}
 697              	.L36:
 698              		.align	2
 699              	.L35:
 700 00a8 00000000 		.word	g_save
 701 00ac 00000000 		.word	Save
 702 00b0 6335AAAA 		.word	-1431685789
 703 00b4 AAAAEA3F 		.word	1072343722
 704 00b8 B2B1B101 		.word	28422578
 705 00bc E9B50200 		.word	177641
 706 00c0 00000000 		.word	g_task_handle
ARM GAS  /tmp/cc3e9u1N.s 			page 19


 707 00c4 00000000 		.word	motor_step
 708 00c8 00000000 		.word	temp_setp
 709              		.cfi_endproc
 710              	.LFE48:
 712              		.section	.text.motor_get_fault,"ax",%progbits
 713              		.align	1
 714              		.p2align 2,,3
 715              		.global	motor_get_fault
 716              		.syntax unified
 717              		.code	16
 718              		.thumb_func
 720              	motor_get_fault:
 721              	.LFB49:
 160:User/motor.c  **** 
 161:User/motor.c  **** uint8_t motor_get_fault(void)
 162:User/motor.c  **** {
 722              		.loc 1 162 1 is_stmt 1 view -0
 723              		.cfi_startproc
 724              		@ args = 0, pretend = 0, frame = 0
 725              		@ frame_needed = 0, uses_anonymous_args = 0
 726              		@ link register save eliminated.
 163:User/motor.c  ****   uint8_t value = 0;
 727              		.loc 1 163 3 view .LVU201
 728              	.LVL31:
 164:User/motor.c  ****   if (B11A1_Y.Info.Fault & (HardOverCurrent | SoftOverCurrent))
 729              		.loc 1 164 3 view .LVU202
 730              		.loc 1 164 26 is_stmt 0 view .LVU203
 731 0000 0920     		movs	r0, #9
 732              		.loc 1 164 19 view .LVU204
 733 0002 0A4B     		ldr	r3, .L52
 734 0004 1B69     		ldr	r3, [r3, #16]
 735              		.loc 1 164 26 view .LVU205
 736 0006 1840     		ands	r0, r3
 737              		.loc 1 164 6 view .LVU206
 738 0008 421E     		subs	r2, r0, #1
 739 000a 9041     		sbcs	r0, r0, r2
 165:User/motor.c  ****   {
 166:User/motor.c  ****     value = 1 << 0;
 167:User/motor.c  ****   }
 168:User/motor.c  ****   if (B11A1_Y.Info.Fault & (HardOverVoltage | SoftOverVoltage | SoftUnderVoltage))
 740              		.loc 1 168 26 view .LVU207
 741 000c 3222     		movs	r2, #50
 164:User/motor.c  ****   if (B11A1_Y.Info.Fault & (HardOverCurrent | SoftOverCurrent))
 742              		.loc 1 164 6 view .LVU208
 743 000e C0B2     		uxtb	r0, r0
 744              	.LVL32:
 745              		.loc 1 168 3 is_stmt 1 view .LVU209
 746              		.loc 1 168 6 is_stmt 0 view .LVU210
 747 0010 1A42     		tst	r2, r3
 748 0012 01D0     		beq	.L38
 169:User/motor.c  ****   {
 170:User/motor.c  ****     value |= 1 << 1;
 749              		.loc 1 170 5 is_stmt 1 view .LVU211
 750              		.loc 1 170 11 is_stmt 0 view .LVU212
 751 0014 303A     		subs	r2, r2, #48
 752 0016 1043     		orrs	r0, r2
 753              	.LVL33:
ARM GAS  /tmp/cc3e9u1N.s 			page 20


 754              	.L38:
 171:User/motor.c  ****   }
 172:User/motor.c  ****   if (B11A1_Y.Info.Fault & (MotorOverTemperature))
 755              		.loc 1 172 3 is_stmt 1 view .LVU213
 756              		.loc 1 172 6 is_stmt 0 view .LVU214
 757 0018 1A06     		lsls	r2, r3, #24
 758 001a 01D5     		bpl	.L39
 173:User/motor.c  ****   {
 174:User/motor.c  ****     value |= 1 << 2;
 759              		.loc 1 174 5 is_stmt 1 view .LVU215
 760              		.loc 1 174 11 is_stmt 0 view .LVU216
 761 001c 0422     		movs	r2, #4
 762 001e 1043     		orrs	r0, r2
 763              	.LVL34:
 764              	.L39:
 175:User/motor.c  ****   }
 176:User/motor.c  ****   if (B11A1_Y.Info.Fault & (MotorInitFault))
 765              		.loc 1 176 3 is_stmt 1 view .LVU217
 766              		.loc 1 176 6 is_stmt 0 view .LVU218
 767 0020 DB05     		lsls	r3, r3, #23
 768 0022 01D5     		bpl	.L40
 177:User/motor.c  ****   {
 178:User/motor.c  ****     value |= 1 << 3;
 769              		.loc 1 178 5 is_stmt 1 view .LVU219
 770              		.loc 1 178 11 is_stmt 0 view .LVU220
 771 0024 0823     		movs	r3, #8
 772 0026 1843     		orrs	r0, r3
 773              	.LVL35:
 774              	.L40:
 179:User/motor.c  ****   }
 180:User/motor.c  ****   return value;
 775              		.loc 1 180 3 is_stmt 1 view .LVU221
 181:User/motor.c  **** }
 776              		.loc 1 181 1 is_stmt 0 view .LVU222
 777              		@ sp needed
 778 0028 7047     		bx	lr
 779              	.L53:
 780 002a C046     		.align	2
 781              	.L52:
 782 002c 00000000 		.word	B11A1_Y
 783              		.cfi_endproc
 784              	.LFE49:
 786              		.section	.text.motor_reset_fault,"ax",%progbits
 787              		.align	1
 788              		.p2align 2,,3
 789              		.global	motor_reset_fault
 790              		.syntax unified
 791              		.code	16
 792              		.thumb_func
 794              	motor_reset_fault:
 795              	.LVL36:
 796              	.LFB50:
 182:User/motor.c  **** 
 183:User/motor.c  **** uint8_t motor_reset_fault(uint8_t fault)
 184:User/motor.c  **** {
 797              		.loc 1 184 1 is_stmt 1 view -0
 798              		.cfi_startproc
ARM GAS  /tmp/cc3e9u1N.s 			page 21


 799              		@ args = 0, pretend = 0, frame = 0
 800              		@ frame_needed = 0, uses_anonymous_args = 0
 185:User/motor.c  ****   uint8_t value = 0;
 801              		.loc 1 185 3 view .LVU224
 186:User/motor.c  ****   if (fault | 0x01)
 802              		.loc 1 186 3 view .LVU225
 187:User/motor.c  ****   {
 188:User/motor.c  ****     B11A1_U.Control.ResetFault |= (HardOverCurrent | SoftOverCurrent);
 803              		.loc 1 188 5 view .LVU226
 804              		.loc 1 188 32 is_stmt 0 view .LVU227
 805 0000 0923     		movs	r3, #9
 189:User/motor.c  ****   }
 190:User/motor.c  **** 
 191:User/motor.c  ****   if (fault | 0x02)
 192:User/motor.c  ****   {
 193:User/motor.c  ****     if (B11A1_Y.Info.Udc > MOTOR_OVERVOLTAGE_FAULT_RECOVERY)
 806              		.loc 1 193 8 view .LVU228
 807 0002 1648     		ldr	r0, .L60
 808              	.LVL37:
 184:User/motor.c  ****   uint8_t value = 0;
 809              		.loc 1 184 1 view .LVU229
 810 0004 70B5     		push	{r4, r5, r6, lr}
 811              	.LCFI6:
 812              		.cfi_def_cfa_offset 16
 813              		.cfi_offset 4, -16
 814              		.cfi_offset 5, -12
 815              		.cfi_offset 6, -8
 816              		.cfi_offset 14, -4
 817              		.loc 1 193 8 view .LVU230
 818 0006 8446     		mov	ip, r0
 819 0008 FA20     		movs	r0, #250
 188:User/motor.c  ****   }
 820              		.loc 1 188 20 view .LVU231
 821 000a 154C     		ldr	r4, .L60+4
 822              		.loc 1 193 21 view .LVU232
 823 000c 154A     		ldr	r2, .L60+8
 188:User/motor.c  ****   }
 824              		.loc 1 188 20 view .LVU233
 825 000e 616A     		ldr	r1, [r4, #36]
 826              		.loc 1 193 8 view .LVU234
 827 0010 4001     		lsls	r0, r0, #5
 188:User/motor.c  ****   }
 828              		.loc 1 188 32 view .LVU235
 829 0012 0B43     		orrs	r3, r1
 830 0014 6362     		str	r3, [r4, #36]
 191:User/motor.c  ****   {
 831              		.loc 1 191 3 is_stmt 1 view .LVU236
 832              		.loc 1 193 5 view .LVU237
 833              		.loc 1 193 8 is_stmt 0 view .LVU238
 834 0016 9369     		ldr	r3, [r2, #24]
 835 0018 6344     		add	r3, r3, ip
 836 001a 8342     		cmp	r3, r0
 837 001c 0BD8     		bhi	.L59
 194:User/motor.c  ****     {
 195:User/motor.c  ****       value |= 1 << 1;
 196:User/motor.c  ****     }
 197:User/motor.c  ****     else if (B11A1_Y.Info.Udc < MOTOR_UNDERVOLTAGE_FAULT_RECOVERY)
ARM GAS  /tmp/cc3e9u1N.s 			page 22


 838              		.loc 1 197 10 is_stmt 1 view .LVU239
 198:User/motor.c  ****     {
 199:User/motor.c  ****       value |= 1 << 1;
 200:User/motor.c  ****     }
 201:User/motor.c  ****     else
 202:User/motor.c  ****     {
 203:User/motor.c  ****       B11A1_U.Control.ResetFault |= (HardOverVoltage | SoftOverVoltage | SoftUnderVoltage);
 839              		.loc 1 203 7 view .LVU240
 840              		.loc 1 203 34 is_stmt 0 view .LVU241
 841 001e 3B23     		movs	r3, #59
 204:User/motor.c  ****     }
 205:User/motor.c  ****   }
 206:User/motor.c  **** 
 207:User/motor.c  ****   if (fault | 0x04)
 208:User/motor.c  ****   {
 209:User/motor.c  ****     if ((B11A1_Y.Info.Temp > MOTOR_TEMP_FAULT_RECOVERY))
 842              		.loc 1 209 8 view .LVU242
 843 0020 9268     		ldr	r2, [r2, #8]
 203:User/motor.c  ****     }
 844              		.loc 1 203 34 view .LVU243
 845 0022 1943     		orrs	r1, r3
 846              		.loc 1 209 8 view .LVU244
 847 0024 104B     		ldr	r3, .L60+12
 203:User/motor.c  ****     }
 848              		.loc 1 203 34 view .LVU245
 849 0026 0426     		movs	r6, #4
 185:User/motor.c  ****   if (fault | 0x01)
 850              		.loc 1 185 11 view .LVU246
 851 0028 0025     		movs	r5, #0
 852              	.LVL38:
 207:User/motor.c  ****   {
 853              		.loc 1 207 3 is_stmt 1 view .LVU247
 854              		.loc 1 209 5 view .LVU248
 203:User/motor.c  ****     }
 855              		.loc 1 203 34 is_stmt 0 view .LVU249
 856 002a 6162     		str	r1, [r4, #36]
 857              		.loc 1 209 8 view .LVU250
 858 002c 9A42     		cmp	r2, r3
 859 002e 08DD     		ble	.L56
 860              	.L58:
 210:User/motor.c  ****     {
 211:User/motor.c  ****       value |= 1 << 2;
 861              		.loc 1 211 13 view .LVU251
 862 0030 3500     		movs	r5, r6
 863              	.LVL39:
 864              	.L57:
 212:User/motor.c  ****     }
 213:User/motor.c  ****     else if (ADC_GetVTStemperature(INTERNALTEMPSENSOR, ADC_ReferenceVoltage_4V9) > (MOTOR_TEMP_FAUL
 214:User/motor.c  ****     {
 215:User/motor.c  ****       value |= 1 << 2;
 216:User/motor.c  ****     }
 217:User/motor.c  ****     else
 218:User/motor.c  ****     {
 219:User/motor.c  ****       B11A1_U.Control.ResetFault |= (MotorOverTemperature);
 220:User/motor.c  ****     }
 221:User/motor.c  ****   }
 222:User/motor.c  **** 
ARM GAS  /tmp/cc3e9u1N.s 			page 23


 223:User/motor.c  ****   return value;
 865              		.loc 1 223 3 is_stmt 1 view .LVU252
 224:User/motor.c  **** }
 866              		.loc 1 224 1 is_stmt 0 view .LVU253
 867              		@ sp needed
 868 0032 2800     		movs	r0, r5
 869              	.LVL40:
 870              		.loc 1 224 1 view .LVU254
 871 0034 70BD     		pop	{r4, r5, r6, pc}
 872              	.LVL41:
 873              	.L59:
 209:User/motor.c  ****     {
 874              		.loc 1 209 8 view .LVU255
 875 0036 0C4B     		ldr	r3, .L60+12
 876 0038 9268     		ldr	r2, [r2, #8]
 877 003a 0626     		movs	r6, #6
 195:User/motor.c  ****     }
 878              		.loc 1 195 13 view .LVU256
 879 003c 0225     		movs	r5, #2
 880              	.LVL42:
 207:User/motor.c  ****   {
 881              		.loc 1 207 3 is_stmt 1 view .LVU257
 209:User/motor.c  ****     {
 882              		.loc 1 209 5 view .LVU258
 209:User/motor.c  ****     {
 883              		.loc 1 209 8 is_stmt 0 view .LVU259
 884 003e 9A42     		cmp	r2, r3
 885 0040 F6DC     		bgt	.L58
 886              	.L56:
 213:User/motor.c  ****     {
 887              		.loc 1 213 10 is_stmt 1 view .LVU260
 213:User/motor.c  ****     {
 888              		.loc 1 213 14 is_stmt 0 view .LVU261
 889 0042 8021     		movs	r1, #128
 213:User/motor.c  ****     {
 890              		.loc 1 213 36 view .LVU262
 891 0044 094B     		ldr	r3, .L60+16
 213:User/motor.c  ****     {
 892              		.loc 1 213 14 view .LVU263
 893 0046 8902     		lsls	r1, r1, #10
 894 0048 1868     		ldr	r0, [r3]
 895 004a FFF7FEFF 		bl	ADC_GetVTStemperature
 896              	.LVL43:
 213:User/motor.c  ****     {
 897              		.loc 1 213 13 discriminator 1 view .LVU264
 898 004e 6928     		cmp	r0, #105
 899 0050 EEDC     		bgt	.L58
 219:User/motor.c  ****     }
 900              		.loc 1 219 7 is_stmt 1 view .LVU265
 219:User/motor.c  ****     }
 901              		.loc 1 219 34 is_stmt 0 view .LVU266
 902 0052 8022     		movs	r2, #128
 903 0054 636A     		ldr	r3, [r4, #36]
 904 0056 1343     		orrs	r3, r2
 905 0058 6362     		str	r3, [r4, #36]
 906 005a EAE7     		b	.L57
 907              	.L61:
ARM GAS  /tmp/cc3e9u1N.s 			page 24


 908              		.align	2
 909              	.L60:
 910 005c E4DAFFFF 		.word	-9500
 911 0060 00000000 		.word	B11A1_U
 912 0064 00000000 		.word	B11A1_Y
 913 0068 34210000 		.word	8500
 914 006c DCA00140 		.word	1073848540
 915              		.cfi_endproc
 916              	.LFE50:
 918              		.text
 919              	.Letext0:
 920              		.file 2 "/home/ha/toolchain/arm-gnu-toolchain-14.3/arm-none-eabi/include/machine/_default_types.h"
 921              		.file 3 "/home/ha/toolchain/arm-gnu-toolchain-14.3/arm-none-eabi/include/sys/_stdint.h"
 922              		.file 4 "Library/inc/lcm32f06x.h"
 923              		.file 5 "Component/task/task_define.h"
 924              		.file 6 "User/global.h"
 925              		.file 7 "Component/chart/B11A1.h"
 926              		.file 8 "/home/ha/toolchain/arm-gnu-toolchain-14.3/arm-none-eabi/include/string.h"
 927              		.file 9 "Library/inc/lcm32f06x_adc.h"
 928              		.file 10 "Component/task/task.h"
ARM GAS  /tmp/cc3e9u1N.s 			page 25


DEFINED SYMBOLS
                            *ABS*:00000000 motor.c
     /tmp/cc3e9u1N.s:17     .text.temp_setp:00000000 $t
     /tmp/cc3e9u1N.s:24     .text.temp_setp:00000000 temp_setp
     /tmp/cc3e9u1N.s:72     .text.temp_setp:00000020 $d
     /tmp/cc3e9u1N.s:78     .text.motor_step:00000000 $t
     /tmp/cc3e9u1N.s:85     .text.motor_step:00000000 motor_step
     /tmp/cc3e9u1N.s:268    .text.motor_step:000000bc $d
     /tmp/cc3e9u1N.s:278    .text.ADC_Handler:00000000 $t
     /tmp/cc3e9u1N.s:285    .text.ADC_Handler:00000000 ADC_Handler
     /tmp/cc3e9u1N.s:519    .text.ADC_Handler:0000010c $d
     /tmp/cc3e9u1N.s:543    .text.motor_init:00000000 $t
     /tmp/cc3e9u1N.s:550    .text.motor_init:00000000 motor_init
     /tmp/cc3e9u1N.s:700    .text.motor_init:000000a8 $d
     /tmp/cc3e9u1N.s:713    .text.motor_get_fault:00000000 $t
     /tmp/cc3e9u1N.s:720    .text.motor_get_fault:00000000 motor_get_fault
     /tmp/cc3e9u1N.s:782    .text.motor_get_fault:0000002c $d
     /tmp/cc3e9u1N.s:787    .text.motor_reset_fault:00000000 $t
     /tmp/cc3e9u1N.s:794    .text.motor_reset_fault:00000000 motor_reset_fault
     /tmp/cc3e9u1N.s:910    .text.motor_reset_fault:0000005c $d

UNDEFINED SYMBOLS
ADC_GetVTStemperature
B11A1_U
MainUpdate
__aeabi_i2d
__aeabi_dmul
__aeabi_d2uiz
save_write
B11A1_Y
Save
g_save
InterruptUpdate
ModelInit
task_cycle_register
g_task_handle
