ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s page 1 1 .cpu cortex-m4 2 .arch armv7e-m 3 .fpu fpv4-sp-d16 4 .eabi_attribute 27, 1 5 .eabi_attribute 28, 1 6 .eabi_attribute 20, 1 7 .eabi_attribute 21, 1 8 .eabi_attribute 23, 3 9 .eabi_attribute 24, 1 10 .eabi_attribute 25, 1 11 .eabi_attribute 26, 1 12 .eabi_attribute 30, 6 13 .eabi_attribute 34, 1 14 .eabi_attribute 18, 4 15 .file "soft_adc.c" 16 .text 17 .Ltext0: 18 .cfi_sections .debug_frame 19 .global ADC_value 20 .section .bss.ADC_value,"aw",%nobits 21 .align 1 24 ADC_value: 25 0000 0000 .space 2 26 .global aver_value 27 .section .bss.aver_value,"aw",%nobits 28 .align 2 31 aver_value: 32 0000 00000000 .space 4 33 .global adc_cnt 34 .section .bss.adc_cnt,"aw",%nobits 37 adc_cnt: 38 0000 00 .space 1 39 .global ADC_flag 40 .section .bss.ADC_flag,"aw",%nobits 41 .align 2 44 ADC_flag: 45 0000 00000000 .space 4 46 .section .text.HAL_ADC_ConvCpltCallback,"ax",%progbits 47 .align 1 48 .global HAL_ADC_ConvCpltCallback 49 .syntax unified 50 .thumb 51 .thumb_func 53 HAL_ADC_ConvCpltCallback: 54 .LFB130: 55 .file 1 "user_src/soft_adc.c" 1:user_src/soft_adc.c **** #include "adc.h" 2:user_src/soft_adc.c **** #include "soft_adc.h" 3:user_src/soft_adc.c **** #include "stm32f3xx_hal_adc_ex.h" 4:user_src/soft_adc.c **** 5:user_src/soft_adc.c **** uint16_t ADC_value = 0; 6:user_src/soft_adc.c **** float aver_value = 0; 7:user_src/soft_adc.c **** uint8_t adc_cnt = 0; 8:user_src/soft_adc.c **** uint32_t ADC_flag = 0; 9:user_src/soft_adc.c **** /*********************AD中断回调*******************/ 10:user_src/soft_adc.c **** void HAL_ADC_ConvCpltCallback( ADC_HandleTypeDef *hadc ) 11:user_src/soft_adc.c **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s page 2 56 .loc 1 11 1 57 .cfi_startproc 58 @ args = 0, pretend = 0, frame = 8 59 @ frame_needed = 1, uses_anonymous_args = 0 60 @ link register save eliminated. 61 0000 80B4 push {r7} 62 .LCFI0: 63 .cfi_def_cfa_offset 4 64 .cfi_offset 7, -4 65 0002 83B0 sub sp, sp, #12 66 .LCFI1: 67 .cfi_def_cfa_offset 16 68 0004 00AF add r7, sp, #0 69 .LCFI2: 70 .cfi_def_cfa_register 7 71 0006 7860 str r0, [r7, #4] 12:user_src/soft_adc.c **** ADC_flag = 1; 72 .loc 1 12 14 73 0008 044B ldr r3, .L2 74 000a 0122 movs r2, #1 75 000c 1A60 str r2, [r3] 13:user_src/soft_adc.c **** } 76 .loc 1 13 1 77 000e 00BF nop 78 0010 0C37 adds r7, r7, #12 79 .LCFI3: 80 .cfi_def_cfa_offset 4 81 0012 BD46 mov sp, r7 82 .LCFI4: 83 .cfi_def_cfa_register 13 84 @ sp needed 85 0014 5DF8047B ldr r7, [sp], #4 86 .LCFI5: 87 .cfi_restore 7 88 .cfi_def_cfa_offset 0 89 0018 7047 bx lr 90 .L3: 91 001a 00BF .align 2 92 .L2: 93 001c 00000000 .word ADC_flag 94 .cfi_endproc 95 .LFE130: 97 .section .text.buf_sort,"ax",%progbits 98 .align 1 99 .global buf_sort 100 .syntax unified 101 .thumb 102 .thumb_func 104 buf_sort: 105 .LFB131: 14:user_src/soft_adc.c **** 15:user_src/soft_adc.c **** /** 16:user_src/soft_adc.c **** * @file buf_sort 17:user_src/soft_adc.c **** * @brief 冒泡 从小到大 18:user_src/soft_adc.c **** * @param arr, length 19:user_src/soft_adc.c **** * @details 20:user_src/soft_adc.c **** * @author Zhang Sir ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s page 3 21:user_src/soft_adc.c **** **/ 22:user_src/soft_adc.c **** void buf_sort( float *arr, uint32_t length ) 23:user_src/soft_adc.c **** { 106 .loc 1 23 1 107 .cfi_startproc 108 @ args = 0, pretend = 0, frame = 24 109 @ frame_needed = 1, uses_anonymous_args = 0 110 @ link register save eliminated. 111 0000 80B4 push {r7} 112 .LCFI6: 113 .cfi_def_cfa_offset 4 114 .cfi_offset 7, -4 115 0002 87B0 sub sp, sp, #28 116 .LCFI7: 117 .cfi_def_cfa_offset 32 118 0004 00AF add r7, sp, #0 119 .LCFI8: 120 .cfi_def_cfa_register 7 121 0006 7860 str r0, [r7, #4] 122 0008 3960 str r1, [r7] 24:user_src/soft_adc.c **** if ( length < 2 ) 123 .loc 1 24 8 124 000a 3B68 ldr r3, [r7] 125 000c 012B cmp r3, #1 126 000e 46D9 bls .L14 25:user_src/soft_adc.c **** { 26:user_src/soft_adc.c **** return; 27:user_src/soft_adc.c **** } 28:user_src/soft_adc.c **** uint32_t num = 0, num1 = 0; 127 .loc 1 28 14 128 0010 0023 movs r3, #0 129 0012 7B61 str r3, [r7, #20] 130 .loc 1 28 23 131 0014 0023 movs r3, #0 132 0016 3B61 str r3, [r7, #16] 29:user_src/soft_adc.c **** float tmp = 0; 133 .loc 1 29 11 134 0018 4FF00003 mov r3, #0 135 001c FB60 str r3, [r7, #12] @ float 30:user_src/soft_adc.c **** for ( num = length - 1; num >= 1; num-- ) 136 .loc 1 30 15 137 001e 3B68 ldr r3, [r7] 138 0020 013B subs r3, r3, #1 139 0022 7B61 str r3, [r7, #20] 140 .loc 1 30 5 141 0024 37E0 b .L7 142 .L12: 31:user_src/soft_adc.c **** { 32:user_src/soft_adc.c **** for ( num1 = 0; num1 <= num - 1; num1++ ) 143 .loc 1 32 20 144 0026 0023 movs r3, #0 145 0028 3B61 str r3, [r7, #16] 146 .loc 1 32 9 147 002a 2CE0 b .L8 148 .L11: 33:user_src/soft_adc.c **** { 34:user_src/soft_adc.c **** if ( *( arr + num1 ) > *( arr + num1 + 1 ) ) ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s page 4 149 .loc 1 34 25 150 002c 3B69 ldr r3, [r7, #16] 151 002e 9B00 lsls r3, r3, #2 152 0030 7A68 ldr r2, [r7, #4] 153 0032 1344 add r3, r3, r2 154 .loc 1 34 18 155 0034 93ED007A vldr.32 s14, [r3] 156 .loc 1 34 50 157 0038 3B69 ldr r3, [r7, #16] 158 003a 0133 adds r3, r3, #1 159 003c 9B00 lsls r3, r3, #2 160 003e 7A68 ldr r2, [r7, #4] 161 0040 1344 add r3, r3, r2 162 .loc 1 34 36 163 0042 D3ED007A vldr.32 s15, [r3] 164 .loc 1 34 16 165 0046 B4EEE77A vcmpe.f32 s14, s15 166 004a F1EE10FA vmrs APSR_nzcv, FPSCR 167 004e 17DD ble .L9 35:user_src/soft_adc.c **** { 36:user_src/soft_adc.c **** tmp = *( arr + num1 ); 168 .loc 1 36 30 169 0050 3B69 ldr r3, [r7, #16] 170 0052 9B00 lsls r3, r3, #2 171 0054 7A68 ldr r2, [r7, #4] 172 0056 1344 add r3, r3, r2 173 .loc 1 36 21 174 0058 1B68 ldr r3, [r3] @ float 175 005a FB60 str r3, [r7, #12] @ float 37:user_src/soft_adc.c **** *( arr + num1 ) = *( arr + num1 + 1 ); 176 .loc 1 37 49 177 005c 3B69 ldr r3, [r7, #16] 178 005e 0133 adds r3, r3, #1 179 0060 9B00 lsls r3, r3, #2 180 0062 7A68 ldr r2, [r7, #4] 181 0064 1A44 add r2, r2, r3 182 .loc 1 37 24 183 0066 3B69 ldr r3, [r7, #16] 184 0068 9B00 lsls r3, r3, #2 185 006a 7968 ldr r1, [r7, #4] 186 006c 0B44 add r3, r3, r1 187 .loc 1 37 35 188 006e 1268 ldr r2, [r2] @ float 189 .loc 1 37 33 190 0070 1A60 str r2, [r3] @ float 38:user_src/soft_adc.c **** *( arr + num1 + 1 ) = tmp; 191 .loc 1 38 31 192 0072 3B69 ldr r3, [r7, #16] 193 0074 0133 adds r3, r3, #1 194 0076 9B00 lsls r3, r3, #2 195 0078 7A68 ldr r2, [r7, #4] 196 007a 1344 add r3, r3, r2 197 .loc 1 38 37 198 007c FA68 ldr r2, [r7, #12] @ float 199 007e 1A60 str r2, [r3] @ float 200 .L9: 32:user_src/soft_adc.c **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s page 5 201 .loc 1 32 46 discriminator 2 202 0080 3B69 ldr r3, [r7, #16] 203 0082 0133 adds r3, r3, #1 204 0084 3B61 str r3, [r7, #16] 205 .L8: 32:user_src/soft_adc.c **** { 206 .loc 1 32 37 discriminator 1 207 0086 7B69 ldr r3, [r7, #20] 208 0088 013B subs r3, r3, #1 32:user_src/soft_adc.c **** { 209 .loc 1 32 9 discriminator 1 210 008a 3A69 ldr r2, [r7, #16] 211 008c 9A42 cmp r2, r3 212 008e CDD9 bls .L11 30:user_src/soft_adc.c **** { 213 .loc 1 30 42 discriminator 2 214 0090 7B69 ldr r3, [r7, #20] 215 0092 013B subs r3, r3, #1 216 0094 7B61 str r3, [r7, #20] 217 .L7: 30:user_src/soft_adc.c **** { 218 .loc 1 30 5 discriminator 1 219 0096 7B69 ldr r3, [r7, #20] 220 0098 002B cmp r3, #0 221 009a C4D1 bne .L12 222 009c 00E0 b .L4 223 .L14: 26:user_src/soft_adc.c **** } 224 .loc 1 26 9 225 009e 00BF nop 226 .L4: 39:user_src/soft_adc.c **** } 40:user_src/soft_adc.c **** } 41:user_src/soft_adc.c **** } 42:user_src/soft_adc.c **** } 227 .loc 1 42 1 228 00a0 1C37 adds r7, r7, #28 229 .LCFI9: 230 .cfi_def_cfa_offset 4 231 00a2 BD46 mov sp, r7 232 .LCFI10: 233 .cfi_def_cfa_register 13 234 @ sp needed 235 00a4 5DF8047B ldr r7, [sp], #4 236 .LCFI11: 237 .cfi_restore 7 238 .cfi_def_cfa_offset 0 239 00a8 7047 bx lr 240 .cfi_endproc 241 .LFE131: 243 .section .text.Get_ADCChannelValue,"ax",%progbits 244 .align 1 245 .global Get_ADCChannelValue 246 .syntax unified 247 .thumb 248 .thumb_func 250 Get_ADCChannelValue: ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s page 6 251 .LFB132: 43:user_src/soft_adc.c **** /** 44:user_src/soft_adc.c **** * @file Get_ADCChannelValue 45:user_src/soft_adc.c **** * @brief 获取不同通道ad采集 46:user_src/soft_adc.c **** * @param None 47:user_src/soft_adc.c **** * @details 48:user_src/soft_adc.c **** * @author Zhang Sir 49:user_src/soft_adc.c **** **/ 50:user_src/soft_adc.c **** uint16_t Get_ADCChannelValue(ADC_HandleTypeDef *hadc, uint32_t channel) 51:user_src/soft_adc.c **** { 252 .loc 1 51 1 253 .cfi_startproc 254 @ args = 0, pretend = 0, frame = 40 255 @ frame_needed = 1, uses_anonymous_args = 0 256 0000 80B5 push {r7, lr} 257 .LCFI12: 258 .cfi_def_cfa_offset 8 259 .cfi_offset 7, -8 260 .cfi_offset 14, -4 261 0002 8AB0 sub sp, sp, #40 262 .LCFI13: 263 .cfi_def_cfa_offset 48 264 0004 00AF add r7, sp, #0 265 .LCFI14: 266 .cfi_def_cfa_register 7 267 0006 7860 str r0, [r7, #4] 268 0008 3960 str r1, [r7] 52:user_src/soft_adc.c **** uint16_t temp_adc = 0; 269 .loc 1 52 11 270 000a 0023 movs r3, #0 271 000c FB84 strh r3, [r7, #38] @ movhi 53:user_src/soft_adc.c **** ADC_ChannelConfTypeDef ADC_ChanConf; 54:user_src/soft_adc.c **** 55:user_src/soft_adc.c **** ADC_ChanConf.Channel = channel; 272 .loc 1 55 23 273 000e 3B68 ldr r3, [r7] 274 0010 FB60 str r3, [r7, #12] 56:user_src/soft_adc.c **** ADC_ChanConf.Rank = ADC_REGULAR_RANK_1; 275 .loc 1 56 20 276 0012 0123 movs r3, #1 277 0014 3B61 str r3, [r7, #16] 57:user_src/soft_adc.c **** ADC_ChanConf.SamplingTime = ADC_SAMPLETIME_61CYCLES_5; 278 .loc 1 57 28 279 0016 0523 movs r3, #5 280 0018 7B61 str r3, [r7, #20] 58:user_src/soft_adc.c **** if (HAL_ADC_ConfigChannel(hadc, &ADC_ChanConf) != HAL_OK) 281 .loc 1 58 6 282 001a 07F10C03 add r3, r7, #12 283 001e 1946 mov r1, r3 284 0020 7868 ldr r0, [r7, #4] 285 0022 FFF7FEFF bl HAL_ADC_ConfigChannel 286 0026 0346 mov r3, r0 287 .loc 1 58 5 288 0028 002B cmp r3, #0 289 002a 01D0 beq .L16 59:user_src/soft_adc.c **** { 60:user_src/soft_adc.c **** Error_Handler(); ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s page 7 290 .loc 1 60 3 291 002c FFF7FEFF bl Error_Handler 292 .L16: 61:user_src/soft_adc.c **** } 62:user_src/soft_adc.c **** 63:user_src/soft_adc.c **** HAL_ADC_Start_IT(hadc); 293 .loc 1 63 2 294 0030 7868 ldr r0, [r7, #4] 295 0032 FFF7FEFF bl HAL_ADC_Start_IT 64:user_src/soft_adc.c **** HAL_ADC_PollForConversion(hadc, 1); 296 .loc 1 64 2 297 0036 0121 movs r1, #1 298 0038 7868 ldr r0, [r7, #4] 299 003a FFF7FEFF bl HAL_ADC_PollForConversion 65:user_src/soft_adc.c **** 66:user_src/soft_adc.c **** temp_adc = HAL_ADC_GetValue(hadc); 300 .loc 1 66 13 301 003e 7868 ldr r0, [r7, #4] 302 0040 FFF7FEFF bl HAL_ADC_GetValue 303 0044 0346 mov r3, r0 304 .loc 1 66 11 305 0046 FB84 strh r3, [r7, #38] @ movhi 67:user_src/soft_adc.c **** return temp_adc; 306 .loc 1 67 10 307 0048 FB8C ldrh r3, [r7, #38] 68:user_src/soft_adc.c **** } 308 .loc 1 68 1 309 004a 1846 mov r0, r3 310 004c 2837 adds r7, r7, #40 311 .LCFI15: 312 .cfi_def_cfa_offset 8 313 004e BD46 mov sp, r7 314 .LCFI16: 315 .cfi_def_cfa_register 13 316 @ sp needed 317 0050 80BD pop {r7, pc} 318 .cfi_endproc 319 .LFE132: 321 .section .bss.ADC_buf,"aw",%nobits 322 .align 2 325 ADC_buf: 326 0000 00000000 .space 80 326 00000000 326 00000000 326 00000000 326 00000000 327 .global ADC_temp 328 .section .bss.ADC_temp,"aw",%nobits 329 .align 2 332 ADC_temp: 333 0000 00000000 .space 4 334 .section .text.adc_gather_hz,"ax",%progbits 335 .align 1 336 .global adc_gather_hz 337 .syntax unified 338 .thumb 339 .thumb_func ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s page 8 341 adc_gather_hz: 342 .LFB133: 69:user_src/soft_adc.c **** 70:user_src/soft_adc.c **** /** 71:user_src/soft_adc.c **** * @file adc_gather_hz 72:user_src/soft_adc.c **** * @brief AD电压采集 73:user_src/soft_adc.c **** * @param None 74:user_src/soft_adc.c **** * @details 75:user_src/soft_adc.c **** * @author Zhang Sir 76:user_src/soft_adc.c **** **/ 77:user_src/soft_adc.c **** static float ADC_buf[20]; 78:user_src/soft_adc.c **** float ADC_temp = 0.0f; 79:user_src/soft_adc.c **** void adc_gather_hz() 80:user_src/soft_adc.c **** { 343 .loc 1 80 1 344 .cfi_startproc 345 @ args = 0, pretend = 0, frame = 0 346 @ frame_needed = 1, uses_anonymous_args = 0 347 0000 80B5 push {r7, lr} 348 .LCFI17: 349 .cfi_def_cfa_offset 8 350 .cfi_offset 7, -8 351 .cfi_offset 14, -4 352 0002 00AF add r7, sp, #0 353 .LCFI18: 354 .cfi_def_cfa_register 7 81:user_src/soft_adc.c **** static uint32_t adc_time = 0; 82:user_src/soft_adc.c **** if ( HAL_GetTick() - adc_time > 20 ) 355 .loc 1 82 10 356 0004 FFF7FEFF bl HAL_GetTick 357 0008 0246 mov r2, r0 358 .loc 1 82 24 359 000a 164B ldr r3, .L22 360 000c 1B68 ldr r3, [r3] 361 000e D31A subs r3, r2, r3 362 .loc 1 82 8 363 0010 142B cmp r3, #20 364 0012 24D9 bls .L21 83:user_src/soft_adc.c **** { 84:user_src/soft_adc.c **** ADC_buf[adc_cnt] = Get_ADCChannelValue(&hadc1, ADC_CHANNEL_1); 365 .loc 1 84 28 366 0014 0121 movs r1, #1 367 0016 1448 ldr r0, .L22+4 368 0018 FFF7FEFF bl Get_ADCChannelValue 369 001c 0346 mov r3, r0 370 001e 07EE903A vmov s15, r3 @ int 371 .loc 1 84 16 372 0022 124B ldr r3, .L22+8 373 0024 1B78 ldrb r3, [r3] @ zero_extendqisi2 374 .loc 1 84 26 375 0026 F8EE677A vcvt.f32.u32 s15, s15 376 002a 114A ldr r2, .L22+12 377 002c 9B00 lsls r3, r3, #2 378 002e 1344 add r3, r3, r2 379 0030 C3ED007A vstr.32 s15, [r3] 85:user_src/soft_adc.c **** HAL_ADC_Stop(&hadc1); 380 .loc 1 85 9 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s page 9 381 0034 0C48 ldr r0, .L22+4 382 0036 FFF7FEFF bl HAL_ADC_Stop 86:user_src/soft_adc.c **** 87:user_src/soft_adc.c **** adc_cnt++; 383 .loc 1 87 16 384 003a 0C4B ldr r3, .L22+8 385 003c 1B78 ldrb r3, [r3] @ zero_extendqisi2 386 003e 0133 adds r3, r3, #1 387 0040 DAB2 uxtb r2, r3 388 0042 0A4B ldr r3, .L22+8 389 0044 1A70 strb r2, [r3] 88:user_src/soft_adc.c **** if ( adc_cnt >= 20 ) 390 .loc 1 88 22 391 0046 094B ldr r3, .L22+8 392 0048 1B78 ldrb r3, [r3] @ zero_extendqisi2 393 .loc 1 88 12 394 004a 132B cmp r3, #19 395 004c 02D9 bls .L20 89:user_src/soft_adc.c **** { 90:user_src/soft_adc.c **** adc_cnt = 0; 396 .loc 1 90 21 397 004e 074B ldr r3, .L22+8 398 0050 0022 movs r2, #0 399 0052 1A70 strb r2, [r3] 400 .L20: 91:user_src/soft_adc.c **** } 92:user_src/soft_adc.c **** adc_time = HAL_GetTick(); 401 .loc 1 92 20 402 0054 FFF7FEFF bl HAL_GetTick 403 0058 0346 mov r3, r0 404 .loc 1 92 18 405 005a 024A ldr r2, .L22 406 005c 1360 str r3, [r2] 407 .L21: 93:user_src/soft_adc.c **** } 94:user_src/soft_adc.c **** } 408 .loc 1 94 1 409 005e 00BF nop 410 0060 80BD pop {r7, pc} 411 .L23: 412 0062 00BF .align 2 413 .L22: 414 0064 00000000 .word adc_time.0 415 0068 00000000 .word hadc1 416 006c 00000000 .word adc_cnt 417 0070 00000000 .word ADC_buf 418 .cfi_endproc 419 .LFE133: 421 .section .text.ADC_gather,"ax",%progbits 422 .align 1 423 .global ADC_gather 424 .syntax unified 425 .thumb 426 .thumb_func 428 ADC_gather: 429 .LFB134: 95:user_src/soft_adc.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s page 10 96:user_src/soft_adc.c **** 97:user_src/soft_adc.c **** /** 98:user_src/soft_adc.c **** * @file ADC_gather 99:user_src/soft_adc.c **** * @brief AD采集转换成电压 100:user_src/soft_adc.c **** * @param None 101:user_src/soft_adc.c **** * @details 102:user_src/soft_adc.c **** * @author Zhang Sir 103:user_src/soft_adc.c **** **/ 104:user_src/soft_adc.c **** float ADC_gather( void ) 105:user_src/soft_adc.c **** { 430 .loc 1 105 1 431 .cfi_startproc 432 @ args = 0, pretend = 0, frame = 8 433 @ frame_needed = 1, uses_anonymous_args = 0 434 0000 80B5 push {r7, lr} 435 .LCFI19: 436 .cfi_def_cfa_offset 8 437 .cfi_offset 7, -8 438 .cfi_offset 14, -4 439 0002 82B0 sub sp, sp, #8 440 .LCFI20: 441 .cfi_def_cfa_offset 16 442 0004 00AF add r7, sp, #0 443 .LCFI21: 444 .cfi_def_cfa_register 7 106:user_src/soft_adc.c **** float real_value = 0; 445 .loc 1 106 11 446 0006 4FF00003 mov r3, #0 447 000a 7B60 str r3, [r7, #4] @ float 107:user_src/soft_adc.c **** if ( ADC_flag == 1 ) 448 .loc 1 107 19 449 000c 204B ldr r3, .L29 450 000e 1B68 ldr r3, [r3] 451 .loc 1 107 8 452 0010 012B cmp r3, #1 453 0012 34D1 bne .L25 108:user_src/soft_adc.c **** { 109:user_src/soft_adc.c **** ADC_flag = 0; 454 .loc 1 109 18 455 0014 1E4B ldr r3, .L29 456 0016 0022 movs r2, #0 457 0018 1A60 str r2, [r3] 110:user_src/soft_adc.c **** buf_sort( ADC_buf, 20 ); 458 .loc 1 110 9 459 001a 1421 movs r1, #20 460 001c 1D48 ldr r0, .L29+4 461 001e FFF7FEFF bl buf_sort 462 .LBB2: 111:user_src/soft_adc.c **** for ( uint8_t ib = 1; ib < 19; ib++ ) 463 .loc 1 111 23 464 0022 0123 movs r3, #1 465 0024 FB70 strb r3, [r7, #3] 466 .loc 1 111 9 467 0026 0EE0 b .L26 468 .L27: 112:user_src/soft_adc.c **** { 113:user_src/soft_adc.c **** real_value += ADC_buf[ib]; ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s page 11 469 .loc 1 113 34 discriminator 3 470 0028 FB78 ldrb r3, [r7, #3] @ zero_extendqisi2 471 002a 1A4A ldr r2, .L29+4 472 002c 9B00 lsls r3, r3, #2 473 002e 1344 add r3, r3, r2 474 0030 D3ED007A vldr.32 s15, [r3] 475 .loc 1 113 24 discriminator 3 476 0034 97ED017A vldr.32 s14, [r7, #4] 477 0038 77EE277A vadd.f32 s15, s14, s15 478 003c C7ED017A vstr.32 s15, [r7, #4] 111:user_src/soft_adc.c **** for ( uint8_t ib = 1; ib < 19; ib++ ) 479 .loc 1 111 42 discriminator 3 480 0040 FB78 ldrb r3, [r7, #3] @ zero_extendqisi2 481 0042 0133 adds r3, r3, #1 482 0044 FB70 strb r3, [r7, #3] 483 .L26: 111:user_src/soft_adc.c **** for ( uint8_t ib = 1; ib < 19; ib++ ) 484 .loc 1 111 9 discriminator 1 485 0046 FB78 ldrb r3, [r7, #3] @ zero_extendqisi2 486 0048 122B cmp r3, #18 487 004a EDD9 bls .L27 488 .LBE2: 114:user_src/soft_adc.c **** } 115:user_src/soft_adc.c **** //aver_value = real_value / 4096 * 3.3f / 18 * 28 * 1000; //Mv 4096*3 真实电压 , 取18 116:user_src/soft_adc.c **** //12bit 4095 超过94V 28分频不够 117:user_src/soft_adc.c **** aver_value = real_value / 4096 * 3.226f / 18 * 31 * 1000; //Mv 4096*3 真实电压 , 取18 489 .loc 1 117 33 490 004c 97ED017A vldr.32 s14, [r7, #4] 491 0050 DFED116A vldr.32 s13, .L29+8 492 0054 C7EE267A vdiv.f32 s15, s14, s13 493 .loc 1 117 40 494 0058 9FED107A vldr.32 s14, .L29+12 495 005c 27EE877A vmul.f32 s14, s15, s14 496 .loc 1 117 49 497 0060 F3EE026A vmov.f32 s13, #1.8e+1 498 0064 C7EE267A vdiv.f32 s15, s14, s13 499 .loc 1 117 54 500 0068 B3EE0F7A vmov.f32 s14, #3.1e+1 501 006c 67EE877A vmul.f32 s15, s15, s14 502 .loc 1 117 59 503 0070 9FED0B7A vldr.32 s14, .L29+16 504 0074 67EE877A vmul.f32 s15, s15, s14 505 .loc 1 117 20 506 0078 0A4B ldr r3, .L29+20 507 007a C3ED007A vstr.32 s15, [r3] 508 .L25: 118:user_src/soft_adc.c **** } 119:user_src/soft_adc.c **** 120:user_src/soft_adc.c **** return aver_value; 509 .loc 1 120 12 510 007e 094B ldr r3, .L29+20 511 0080 1B68 ldr r3, [r3] @ float 512 0082 07EE903A vmov s15, r3 121:user_src/soft_adc.c **** } 513 .loc 1 121 1 514 0086 B0EE670A vmov.f32 s0, s15 515 008a 0837 adds r7, r7, #8 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s page 12 516 .LCFI22: 517 .cfi_def_cfa_offset 8 518 008c BD46 mov sp, r7 519 .LCFI23: 520 .cfi_def_cfa_register 13 521 @ sp needed 522 008e 80BD pop {r7, pc} 523 .L30: 524 .align 2 525 .L29: 526 0090 00000000 .word ADC_flag 527 0094 00000000 .word ADC_buf 528 0098 00008045 .word 1166016512 529 009c C9764E40 .word 1078884041 530 00a0 00007A44 .word 1148846080 531 00a4 00000000 .word aver_value 532 .cfi_endproc 533 .LFE134: 535 .section .text.ADC_read_temptrue,"ax",%progbits 536 .align 1 537 .global ADC_read_temptrue 538 .syntax unified 539 .thumb 540 .thumb_func 542 ADC_read_temptrue: 543 .LFB135: 122:user_src/soft_adc.c **** 123:user_src/soft_adc.c **** 124:user_src/soft_adc.c **** /** 125:user_src/soft_adc.c **** * @file ADC_read_temptrue 126:user_src/soft_adc.c **** * @brief ad温度采集 127:user_src/soft_adc.c **** * @param None 128:user_src/soft_adc.c **** * @details 129:user_src/soft_adc.c **** * @author Zhang Sir 130:user_src/soft_adc.c **** **/ 131:user_src/soft_adc.c **** uint16_t ADC_read_temptrue() 132:user_src/soft_adc.c **** { 544 .loc 1 132 1 545 .cfi_startproc 546 @ args = 0, pretend = 0, frame = 8 547 @ frame_needed = 1, uses_anonymous_args = 0 548 0000 80B5 push {r7, lr} 549 .LCFI24: 550 .cfi_def_cfa_offset 8 551 .cfi_offset 7, -8 552 .cfi_offset 14, -4 553 0002 82B0 sub sp, sp, #8 554 .LCFI25: 555 .cfi_def_cfa_offset 16 556 0004 00AF add r7, sp, #0 557 .LCFI26: 558 .cfi_def_cfa_register 7 133:user_src/soft_adc.c **** uint16_t mcu_temp = 0; 559 .loc 1 133 11 560 0006 0023 movs r3, #0 561 0008 FB80 strh r3, [r7, #6] @ movhi 134:user_src/soft_adc.c **** float mcu_temp1 = 0; ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s page 13 562 .loc 1 134 11 563 000a 4FF00003 mov r3, #0 564 000e 3B60 str r3, [r7] @ float 135:user_src/soft_adc.c **** 136:user_src/soft_adc.c **** mcu_temp = Get_ADCChannelValue(&hadctemp, ADC_CHANNEL_16); 565 .loc 1 136 16 566 0010 1021 movs r1, #16 567 0012 1B48 ldr r0, .L33 568 0014 FFF7FEFF bl Get_ADCChannelValue 569 0018 0346 mov r3, r0 570 001a FB80 strh r3, [r7, #6] @ movhi 137:user_src/soft_adc.c **** HAL_ADC_Stop(&hadctemp); 571 .loc 1 137 5 572 001c 1848 ldr r0, .L33 573 001e FFF7FEFF bl HAL_ADC_Stop 138:user_src/soft_adc.c **** 139:user_src/soft_adc.c **** mcu_temp1 = ( int )( ( 1.43f - mcu_temp * 3.3f / 4096 ) / 0.00043f + 250 ) / 10.0f; 574 .loc 1 139 45 575 0022 FB88 ldrh r3, [r7, #6] 576 0024 07EE903A vmov s15, r3 @ int 577 0028 F8EEE77A vcvt.f32.s32 s15, s15 578 002c 9FED157A vldr.32 s14, .L33+4 579 0030 27EE877A vmul.f32 s14, s15, s14 580 .loc 1 139 52 581 0034 DFED146A vldr.32 s13, .L33+8 582 0038 C7EE267A vdiv.f32 s15, s14, s13 583 .loc 1 139 34 584 003c 9FED137A vldr.32 s14, .L33+12 585 0040 37EE677A vsub.f32 s14, s14, s15 586 .loc 1 139 61 587 0044 DFED126A vldr.32 s13, .L33+16 588 0048 C7EE267A vdiv.f32 s15, s14, s13 589 .loc 1 139 72 590 004c 9FED117A vldr.32 s14, .L33+20 591 0050 77EE877A vadd.f32 s15, s15, s14 592 .loc 1 139 17 593 0054 FDEEE77A vcvt.s32.f32 s15, s15 594 .loc 1 139 80 595 0058 B8EEE77A vcvt.f32.s32 s14, s15 596 .loc 1 139 15 597 005c F2EE046A vmov.f32 s13, #1.0e+1 598 0060 C7EE267A vdiv.f32 s15, s14, s13 599 0064 C7ED007A vstr.32 s15, [r7] 140:user_src/soft_adc.c **** 141:user_src/soft_adc.c **** return mcu_temp1; 600 .loc 1 141 12 601 0068 D7ED007A vldr.32 s15, [r7] 602 006c FCEEE77A vcvt.u32.f32 s15, s15 603 0070 17EE903A vmov r3, s15 @ int 604 0074 9BB2 uxth r3, r3 142:user_src/soft_adc.c **** } 605 .loc 1 142 1 606 0076 1846 mov r0, r3 607 0078 0837 adds r7, r7, #8 608 .LCFI27: 609 .cfi_def_cfa_offset 8 610 007a BD46 mov sp, r7 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s page 14 611 .LCFI28: 612 .cfi_def_cfa_register 13 613 @ sp needed 614 007c 80BD pop {r7, pc} 615 .L34: 616 007e 00BF .align 2 617 .L33: 618 0080 00000000 .word hadctemp 619 0084 33335340 .word 1079194419 620 0088 00008045 .word 1166016512 621 008c 3D0AB73F .word 1068960317 622 0090 9F71E139 .word 971075999 623 0094 00007A43 .word 1132068864 624 .cfi_endproc 625 .LFE135: 627 .section .bss.adc_time.0,"aw",%nobits 628 .align 2 631 adc_time.0: 632 0000 00000000 .space 4 633 .text 634 .Letext0: 635 .file 2 "d:\\arm-gcc\\arm-none-eabi\\include\\machine\\_default_types.h" 636 .file 3 "d:\\arm-gcc\\arm-none-eabi\\include\\sys\\_stdint.h" 637 .file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h" 638 .file 5 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f3xx.h" 639 .file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h" 640 .file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_dma.h" 641 .file 8 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_adc_ex.h" 642 .file 9 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_adc.h" 643 .file 10 "Core/Inc/adc.h" ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s page 15 DEFINED SYMBOLS *ABS*:00000000 soft_adc.c C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:24 .bss.ADC_value:00000000 ADC_value C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:21 .bss.ADC_value:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:31 .bss.aver_value:00000000 aver_value C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:28 .bss.aver_value:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:37 .bss.adc_cnt:00000000 adc_cnt C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:38 .bss.adc_cnt:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:44 .bss.ADC_flag:00000000 ADC_flag C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:41 .bss.ADC_flag:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:47 .text.HAL_ADC_ConvCpltCallback:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:53 .text.HAL_ADC_ConvCpltCallback:00000000 HAL_ADC_ConvCpltCallback C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:93 .text.HAL_ADC_ConvCpltCallback:0000001c $d C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:98 .text.buf_sort:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:104 .text.buf_sort:00000000 buf_sort C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:244 .text.Get_ADCChannelValue:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:250 .text.Get_ADCChannelValue:00000000 Get_ADCChannelValue C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:322 .bss.ADC_buf:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:325 .bss.ADC_buf:00000000 ADC_buf C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:332 .bss.ADC_temp:00000000 ADC_temp C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:329 .bss.ADC_temp:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:335 .text.adc_gather_hz:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:341 .text.adc_gather_hz:00000000 adc_gather_hz C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:414 .text.adc_gather_hz:00000064 $d C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:631 .bss.adc_time.0:00000000 adc_time.0 C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:422 .text.ADC_gather:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:428 .text.ADC_gather:00000000 ADC_gather C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:526 .text.ADC_gather:00000090 $d C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:536 .text.ADC_read_temptrue:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:542 .text.ADC_read_temptrue:00000000 ADC_read_temptrue C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:618 .text.ADC_read_temptrue:00000080 $d C:\Users\zl835\AppData\Local\Temp\ccdrowJQ.s:628 .bss.adc_time.0:00000000 $d UNDEFINED SYMBOLS HAL_ADC_ConfigChannel Error_Handler HAL_ADC_Start_IT HAL_ADC_PollForConversion HAL_ADC_GetValue HAL_GetTick HAL_ADC_Stop hadc1 hadctemp