ARM GAS /tmp/ccnT6iWU.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 "status_LED.c" 16 .text 17 .Ltext0: 18 .cfi_sections .debug_frame 19 .file 1 "Core/Src/status_LED.c" 20 .global red 21 .section .bss.red,"aw",%nobits 22 .align 2 25 red: 26 0000 00000000 .space 4 27 .global green 28 .section .bss.green,"aw",%nobits 29 .align 2 32 green: 33 0000 00000000 .space 4 34 .global blue 35 .section .bss.blue,"aw",%nobits 36 .align 2 39 blue: 40 0000 00000000 .space 4 41 .global blink_timer 42 .section .bss.blink_timer,"aw",%nobits 43 .align 2 46 blink_timer: 47 0000 00000000 .space 4 48 .global blink_state 49 .section .bss.blink_state,"aw",%nobits 52 blink_state: 53 0000 00 .space 1 54 .section .text.status_led_init,"ax",%progbits 55 .align 1 56 .global status_led_init 57 .syntax unified 58 .thumb 59 .thumb_func 61 status_led_init: 62 .LFB130: 1:Core/Src/status_LED.c **** /* 2:Core/Src/status_LED.c **** * status_LED.h 3:Core/Src/status_LED.c **** * 4:Core/Src/status_LED.c **** * Created on: 07.07.2024 5:Core/Src/status_LED.c **** * Author: Hamza 6:Core/Src/status_LED.c **** */ ARM GAS /tmp/ccnT6iWU.s page 2 7:Core/Src/status_LED.c **** 8:Core/Src/status_LED.c **** #include "ADBMS_LL_Driver.h" 9:Core/Src/status_LED.c **** #include "state_machine.h" 10:Core/Src/status_LED.c **** #include "stm32f3xx_hal.h" 11:Core/Src/status_LED.c **** #include 12:Core/Src/status_LED.c **** #include 13:Core/Src/status_LED.c **** 14:Core/Src/status_LED.c **** // TODO test out pulldown and pushpull settings 15:Core/Src/status_LED.c **** 16:Core/Src/status_LED.c **** /* The PWM period (1/FPWM) is defined by the following parameters: 17:Core/Src/status_LED.c **** ARR value, the Prescaler value, and the internal clock itself which drives the timer module FCLK. 18:Core/Src/status_LED.c **** F_PWM = (F_CLK)/((ARR + 1) * (PSC + 1)) 19:Core/Src/status_LED.c **** 20:Core/Src/status_LED.c **** Prescaler: 21:Core/Src/status_LED.c **** (ARR + 1) * (PSC + 1) = (F_CLK)/(F_PWM) 22:Core/Src/status_LED.c **** (PSC + 1) = (F_CLK)/(F_PWM * (ARR + 1)) 23:Core/Src/status_LED.c **** 625 = (16MHz)/(100Hz * (255 + 1)) 24:Core/Src/status_LED.c **** 25:Core/Src/status_LED.c **** F_CLK = 16 MHz 26:Core/Src/status_LED.c **** */ 27:Core/Src/status_LED.c **** 28:Core/Src/status_LED.c **** #define STATUS_LED_ARR 255 29:Core/Src/status_LED.c **** #define TIME_BLINK_SLOW 2000 30:Core/Src/status_LED.c **** #define TIME_BLINK_FAST 500 31:Core/Src/status_LED.c **** 32:Core/Src/status_LED.c **** TIM_HandleTypeDef* red; 33:Core/Src/status_LED.c **** TIM_HandleTypeDef* green; 34:Core/Src/status_LED.c **** TIM_HandleTypeDef* blue; 35:Core/Src/status_LED.c **** 36:Core/Src/status_LED.c **** uint32_t blink_timer; 37:Core/Src/status_LED.c **** bool blink_state; 38:Core/Src/status_LED.c **** 39:Core/Src/status_LED.c **** void status_led_init(TIM_HandleTypeDef* r, TIM_HandleTypeDef* g, TIM_HandleTypeDef* b){ 63 .loc 1 39 87 64 .cfi_startproc 65 @ args = 0, pretend = 0, frame = 16 66 @ frame_needed = 1, uses_anonymous_args = 0 67 0000 80B5 push {r7, lr} 68 .cfi_def_cfa_offset 8 69 .cfi_offset 7, -8 70 .cfi_offset 14, -4 71 0002 84B0 sub sp, sp, #16 72 .cfi_def_cfa_offset 24 73 0004 00AF add r7, sp, #0 74 .cfi_def_cfa_register 7 75 0006 F860 str r0, [r7, #12] 76 0008 B960 str r1, [r7, #8] 77 000a 7A60 str r2, [r7, #4] 40:Core/Src/status_LED.c **** red = r; 78 .loc 1 40 7 79 000c 144A ldr r2, .L2 80 000e FB68 ldr r3, [r7, #12] 81 0010 1360 str r3, [r2] 41:Core/Src/status_LED.c **** green = g; 82 .loc 1 41 9 83 0012 144A ldr r2, .L2+4 84 0014 BB68 ldr r3, [r7, #8] ARM GAS /tmp/ccnT6iWU.s page 3 85 0016 1360 str r3, [r2] 42:Core/Src/status_LED.c **** blue = b; 86 .loc 1 42 8 87 0018 134A ldr r2, .L2+8 88 001a 7B68 ldr r3, [r7, #4] 89 001c 1360 str r3, [r2] 43:Core/Src/status_LED.c **** 44:Core/Src/status_LED.c **** blink_timer = 0; 90 .loc 1 44 15 91 001e 134B ldr r3, .L2+12 92 0020 0022 movs r2, #0 93 0022 1A60 str r2, [r3] 45:Core/Src/status_LED.c **** blink_state = 0; 94 .loc 1 45 15 95 0024 124B ldr r3, .L2+16 96 0026 0022 movs r2, #0 97 0028 1A70 strb r2, [r3] 46:Core/Src/status_LED.c **** 47:Core/Src/status_LED.c **** HAL_TIM_PWM_Start(red, TIM_CHANNEL_1); //TIM4CH1 98 .loc 1 47 3 99 002a 0D4B ldr r3, .L2 100 002c 1B68 ldr r3, [r3] 101 002e 0021 movs r1, #0 102 0030 1846 mov r0, r3 103 0032 FFF7FEFF bl HAL_TIM_PWM_Start 48:Core/Src/status_LED.c **** HAL_TIM_PWM_Start(green, TIM_CHANNEL_2); //TIM4CH2 104 .loc 1 48 3 105 0036 0B4B ldr r3, .L2+4 106 0038 1B68 ldr r3, [r3] 107 003a 0421 movs r1, #4 108 003c 1846 mov r0, r3 109 003e FFF7FEFF bl HAL_TIM_PWM_Start 49:Core/Src/status_LED.c **** HAL_TIM_PWM_Start(blue, TIM_CHANNEL_3); //TIM4CH3 110 .loc 1 49 3 111 0042 094B ldr r3, .L2+8 112 0044 1B68 ldr r3, [r3] 113 0046 0821 movs r1, #8 114 0048 1846 mov r0, r3 115 004a FFF7FEFF bl HAL_TIM_PWM_Start 50:Core/Src/status_LED.c **** 51:Core/Src/status_LED.c **** status_led_set(255, 255, 255); 116 .loc 1 51 3 117 004e FF22 movs r2, #255 118 0050 FF21 movs r1, #255 119 0052 FF20 movs r0, #255 120 0054 FFF7FEFF bl status_led_set 52:Core/Src/status_LED.c **** } 121 .loc 1 52 1 122 0058 00BF nop 123 005a 1037 adds r7, r7, #16 124 .cfi_def_cfa_offset 8 125 005c BD46 mov sp, r7 126 .cfi_def_cfa_register 13 127 @ sp needed 128 005e 80BD pop {r7, pc} 129 .L3: 130 .align 2 ARM GAS /tmp/ccnT6iWU.s page 4 131 .L2: 132 0060 00000000 .word red 133 0064 00000000 .word green 134 0068 00000000 .word blue 135 006c 00000000 .word blink_timer 136 0070 00000000 .word blink_state 137 .cfi_endproc 138 .LFE130: 140 .section .text.status_led_update,"ax",%progbits 141 .align 1 142 .global status_led_update 143 .syntax unified 144 .thumb 145 .thumb_func 147 status_led_update: 148 .LFB131: 53:Core/Src/status_LED.c **** 54:Core/Src/status_LED.c **** void status_led_update(){ 149 .loc 1 54 25 150 .cfi_startproc 151 @ args = 0, pretend = 0, frame = 0 152 @ frame_needed = 1, uses_anonymous_args = 0 153 0000 80B5 push {r7, lr} 154 .cfi_def_cfa_offset 8 155 .cfi_offset 7, -8 156 .cfi_offset 14, -4 157 0002 00AF add r7, sp, #0 158 .cfi_def_cfa_register 7 55:Core/Src/status_LED.c **** if (state.current_state == STATE_ERROR){ 159 .loc 1 55 12 160 0004 344B ldr r3, .L20 161 0006 1B78 ldrb r3, [r3] @ zero_extendqisi2 162 .loc 1 55 6 163 0008 072B cmp r3, #7 164 000a 03D1 bne .L5 56:Core/Src/status_LED.c **** status_led_set_color(RED); 165 .loc 1 56 5 166 000c 0120 movs r0, #1 167 000e FFF7FEFF bl status_led_set_color 57:Core/Src/status_LED.c **** return; 168 .loc 1 57 5 169 0012 60E0 b .L4 170 .L5: 58:Core/Src/status_LED.c **** } 59:Core/Src/status_LED.c **** if(blink_timer > HAL_GetTick()){ 171 .loc 1 59 20 172 0014 FFF7FEFF bl HAL_GetTick 173 0018 0246 mov r2, r0 174 .loc 1 59 18 discriminator 1 175 001a 304B ldr r3, .L20+4 176 001c 1B68 ldr r3, [r3] 177 .loc 1 59 5 discriminator 1 178 001e 9A42 cmp r2, r3 179 0020 58D3 bcc .L18 60:Core/Src/status_LED.c **** return; 61:Core/Src/status_LED.c **** } 62:Core/Src/status_LED.c **** ARM GAS /tmp/ccnT6iWU.s page 5 63:Core/Src/status_LED.c **** if (blink_state == 1){ 180 .loc 1 63 19 181 0022 2F4B ldr r3, .L20+8 182 0024 1B78 ldrb r3, [r3] @ zero_extendqisi2 183 .loc 1 63 6 184 0026 002B cmp r3, #0 185 0028 17D0 beq .L8 64:Core/Src/status_LED.c **** if (state.current_state == STATE_INACTIVE) 186 .loc 1 64 14 187 002a 2B4B ldr r3, .L20 188 002c 1B78 ldrb r3, [r3] @ zero_extendqisi2 189 .loc 1 64 8 190 002e 002B cmp r3, #0 191 0030 06D1 bne .L9 65:Core/Src/status_LED.c **** blink_timer = HAL_GetTick() + TIME_BLINK_SLOW/10; 192 .loc 1 65 21 193 0032 FFF7FEFF bl HAL_GetTick 194 0036 0346 mov r3, r0 195 .loc 1 65 35 discriminator 1 196 0038 C833 adds r3, r3, #200 197 .loc 1 65 19 discriminator 1 198 003a 284A ldr r2, .L20+4 199 003c 1360 str r3, [r2] 200 003e 05E0 b .L10 201 .L9: 66:Core/Src/status_LED.c **** else 67:Core/Src/status_LED.c **** blink_timer = HAL_GetTick() + TIME_BLINK_FAST/10; 202 .loc 1 67 21 203 0040 FFF7FEFF bl HAL_GetTick 204 0044 0346 mov r3, r0 205 .loc 1 67 35 discriminator 1 206 0046 3233 adds r3, r3, #50 207 .loc 1 67 19 discriminator 1 208 0048 244A ldr r2, .L20+4 209 004a 1360 str r3, [r2] 210 .L10: 68:Core/Src/status_LED.c **** blink_state = 0; 211 .loc 1 68 17 212 004c 244B ldr r3, .L20+8 213 004e 0022 movs r2, #0 214 0050 1A70 strb r2, [r3] 69:Core/Src/status_LED.c **** status_led_set_color(OFF); 215 .loc 1 69 5 216 0052 0020 movs r0, #0 217 0054 FFF7FEFF bl status_led_set_color 70:Core/Src/status_LED.c **** return; 218 .loc 1 70 5 219 0058 3DE0 b .L4 220 .L8: 71:Core/Src/status_LED.c **** } else { 72:Core/Src/status_LED.c **** if (state.current_state == STATE_INACTIVE) 221 .loc 1 72 14 222 005a 1F4B ldr r3, .L20 223 005c 1B78 ldrb r3, [r3] @ zero_extendqisi2 224 .loc 1 72 8 225 005e 002B cmp r3, #0 226 0060 07D1 bne .L11 ARM GAS /tmp/ccnT6iWU.s page 6 73:Core/Src/status_LED.c **** blink_timer = HAL_GetTick() + TIME_BLINK_SLOW; 227 .loc 1 73 21 228 0062 FFF7FEFF bl HAL_GetTick 229 0066 0346 mov r3, r0 230 .loc 1 73 35 discriminator 1 231 0068 03F5FA63 add r3, r3, #2000 232 .loc 1 73 19 discriminator 1 233 006c 1B4A ldr r2, .L20+4 234 006e 1360 str r3, [r2] 235 0070 06E0 b .L12 236 .L11: 74:Core/Src/status_LED.c **** else 75:Core/Src/status_LED.c **** blink_timer = HAL_GetTick() + TIME_BLINK_FAST; 237 .loc 1 75 21 238 0072 FFF7FEFF bl HAL_GetTick 239 0076 0346 mov r3, r0 240 .loc 1 75 35 discriminator 1 241 0078 03F5FA73 add r3, r3, #500 242 .loc 1 75 19 discriminator 1 243 007c 174A ldr r2, .L20+4 244 007e 1360 str r3, [r2] 245 .L12: 76:Core/Src/status_LED.c **** blink_state = 1; 246 .loc 1 76 17 247 0080 174B ldr r3, .L20+8 248 0082 0122 movs r2, #1 249 0084 1A70 strb r2, [r3] 77:Core/Src/status_LED.c **** } 78:Core/Src/status_LED.c **** 79:Core/Src/status_LED.c **** switch (state.current_state) { 250 .loc 1 79 16 251 0086 144B ldr r3, .L20 252 0088 1B78 ldrb r3, [r3] @ zero_extendqisi2 253 .loc 1 79 3 254 008a 072B cmp r3, #7 255 008c 23D8 bhi .L4 256 008e 01A2 adr r2, .L14 257 0090 52F823F0 ldr pc, [r2, r3, lsl #2] 258 .p2align 2 259 .L14: 260 0094 B5000000 .word .L17+1 261 0098 BD000000 .word .L16+1 262 009c C5000000 .word .L15+1 263 00a0 C5000000 .word .L15+1 264 00a4 BD000000 .word .L16+1 265 00a8 BD000000 .word .L16+1 266 00ac C5000000 .word .L15+1 267 00b0 CD000000 .word .L13+1 268 .p2align 1 269 .L17: 80:Core/Src/status_LED.c **** case STATE_INACTIVE: 81:Core/Src/status_LED.c **** status_led_set_color(GREEN); 270 .loc 1 81 5 271 00b4 0220 movs r0, #2 272 00b6 FFF7FEFF bl status_led_set_color 82:Core/Src/status_LED.c **** break; 273 .loc 1 82 5 ARM GAS /tmp/ccnT6iWU.s page 7 274 00ba 0CE0 b .L4 275 .L16: 83:Core/Src/status_LED.c **** case STATE_CHARGING_PRECHARGE: 84:Core/Src/status_LED.c **** case STATE_PRECHARGE: 85:Core/Src/status_LED.c **** case STATE_DISCHARGE: 86:Core/Src/status_LED.c **** status_led_set_color( YELLOW); 276 .loc 1 86 5 277 00bc 0420 movs r0, #4 278 00be FFF7FEFF bl status_led_set_color 87:Core/Src/status_LED.c **** break; 279 .loc 1 87 5 280 00c2 08E0 b .L4 281 .L15: 88:Core/Src/status_LED.c **** case STATE_CHARGING: 89:Core/Src/status_LED.c **** case STATE_READY: 90:Core/Src/status_LED.c **** case STATE_ACTIVE: 91:Core/Src/status_LED.c **** status_led_set_color(PINK); 282 .loc 1 91 5 283 00c4 0520 movs r0, #5 284 00c6 FFF7FEFF bl status_led_set_color 92:Core/Src/status_LED.c **** break; 285 .loc 1 92 5 286 00ca 04E0 b .L4 287 .L13: 93:Core/Src/status_LED.c **** case STATE_ERROR: 94:Core/Src/status_LED.c **** status_led_set_color(RED); 288 .loc 1 94 5 289 00cc 0120 movs r0, #1 290 00ce FFF7FEFF bl status_led_set_color 95:Core/Src/status_LED.c **** break; 291 .loc 1 95 5 292 00d2 00E0 b .L4 293 .L18: 60:Core/Src/status_LED.c **** } 294 .loc 1 60 5 295 00d4 00BF nop 296 .L4: 96:Core/Src/status_LED.c **** } 97:Core/Src/status_LED.c **** } 297 .loc 1 97 1 298 00d6 80BD pop {r7, pc} 299 .L21: 300 .align 2 301 .L20: 302 00d8 00000000 .word state 303 00dc 00000000 .word blink_timer 304 00e0 00000000 .word blink_state 305 .cfi_endproc 306 .LFE131: 308 .section .text.status_led_set_color,"ax",%progbits 309 .align 1 310 .global status_led_set_color 311 .syntax unified 312 .thumb 313 .thumb_func 315 status_led_set_color: 316 .LFB132: ARM GAS /tmp/ccnT6iWU.s page 8 98:Core/Src/status_LED.c **** 99:Core/Src/status_LED.c **** void status_led_set_color(color color){ 317 .loc 1 99 39 318 .cfi_startproc 319 @ args = 0, pretend = 0, frame = 8 320 @ frame_needed = 1, uses_anonymous_args = 0 321 0000 80B5 push {r7, lr} 322 .cfi_def_cfa_offset 8 323 .cfi_offset 7, -8 324 .cfi_offset 14, -4 325 0002 82B0 sub sp, sp, #8 326 .cfi_def_cfa_offset 16 327 0004 00AF add r7, sp, #0 328 .cfi_def_cfa_register 7 329 0006 0346 mov r3, r0 330 0008 FB71 strb r3, [r7, #7] 100:Core/Src/status_LED.c **** switch (color) { 331 .loc 1 100 3 332 000a FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 333 000c 072B cmp r3, #7 334 000e 43D8 bhi .L33 335 0010 01A2 adr r2, .L25 336 0012 52F823F0 ldr pc, [r2, r3, lsl #2] 337 0016 00BF .p2align 2 338 .L25: 339 0018 8D000000 .word .L32+1 340 001c 39000000 .word .L31+1 341 0020 45000000 .word .L30+1 342 0024 51000000 .word .L29+1 343 0028 5D000000 .word .L28+1 344 002c 69000000 .word .L27+1 345 0030 75000000 .word .L26+1 346 0034 81000000 .word .L24+1 347 .p2align 1 348 .L31: 101:Core/Src/status_LED.c **** case RED: 102:Core/Src/status_LED.c **** status_led_set(0, 255, 255); 349 .loc 1 102 5 350 0038 FF22 movs r2, #255 351 003a FF21 movs r1, #255 352 003c 0020 movs r0, #0 353 003e FFF7FEFF bl status_led_set 103:Core/Src/status_LED.c **** break; 354 .loc 1 103 5 355 0042 29E0 b .L23 356 .L30: 104:Core/Src/status_LED.c **** case GREEN: 105:Core/Src/status_LED.c **** status_led_set(255, 0, 255); 357 .loc 1 105 5 358 0044 FF22 movs r2, #255 359 0046 0021 movs r1, #0 360 0048 FF20 movs r0, #255 361 004a FFF7FEFF bl status_led_set 106:Core/Src/status_LED.c **** break; 362 .loc 1 106 5 363 004e 23E0 b .L23 364 .L29: ARM GAS /tmp/ccnT6iWU.s page 9 107:Core/Src/status_LED.c **** case BLUE: 108:Core/Src/status_LED.c **** status_led_set(255, 255, 0); 365 .loc 1 108 5 366 0050 0022 movs r2, #0 367 0052 FF21 movs r1, #255 368 0054 FF20 movs r0, #255 369 0056 FFF7FEFF bl status_led_set 109:Core/Src/status_LED.c **** break; 370 .loc 1 109 5 371 005a 1DE0 b .L23 372 .L28: 110:Core/Src/status_LED.c **** case YELLOW: 111:Core/Src/status_LED.c **** status_led_set(0, 0, 255); 373 .loc 1 111 5 374 005c FF22 movs r2, #255 375 005e 0021 movs r1, #0 376 0060 0020 movs r0, #0 377 0062 FFF7FEFF bl status_led_set 112:Core/Src/status_LED.c **** break; 378 .loc 1 112 5 379 0066 17E0 b .L23 380 .L27: 113:Core/Src/status_LED.c **** case PINK: 114:Core/Src/status_LED.c **** status_led_set(0, 255, 0); 381 .loc 1 114 5 382 0068 0022 movs r2, #0 383 006a FF21 movs r1, #255 384 006c 0020 movs r0, #0 385 006e FFF7FEFF bl status_led_set 115:Core/Src/status_LED.c **** break; 386 .loc 1 115 5 387 0072 11E0 b .L23 388 .L26: 116:Core/Src/status_LED.c **** case CYAN: 117:Core/Src/status_LED.c **** status_led_set(255, 0, 0); 389 .loc 1 117 5 390 0074 0022 movs r2, #0 391 0076 0021 movs r1, #0 392 0078 FF20 movs r0, #255 393 007a FFF7FEFF bl status_led_set 118:Core/Src/status_LED.c **** break; 394 .loc 1 118 5 395 007e 0BE0 b .L23 396 .L24: 119:Core/Src/status_LED.c **** case WHITE: 120:Core/Src/status_LED.c **** status_led_set(0, 0, 0); 397 .loc 1 120 5 398 0080 0022 movs r2, #0 399 0082 0021 movs r1, #0 400 0084 0020 movs r0, #0 401 0086 FFF7FEFF bl status_led_set 121:Core/Src/status_LED.c **** break; 402 .loc 1 121 5 403 008a 05E0 b .L23 404 .L32: 122:Core/Src/status_LED.c **** case OFF: 123:Core/Src/status_LED.c **** status_led_set(255,255,255); ARM GAS /tmp/ccnT6iWU.s page 10 405 .loc 1 123 5 406 008c FF22 movs r2, #255 407 008e FF21 movs r1, #255 408 0090 FF20 movs r0, #255 409 0092 FFF7FEFF bl status_led_set 124:Core/Src/status_LED.c **** break; 410 .loc 1 124 5 411 0096 00BF nop 412 .L23: 413 .L33: 125:Core/Src/status_LED.c **** } 126:Core/Src/status_LED.c **** } 414 .loc 1 126 1 415 0098 00BF nop 416 009a 0837 adds r7, r7, #8 417 .cfi_def_cfa_offset 8 418 009c BD46 mov sp, r7 419 .cfi_def_cfa_register 13 420 @ sp needed 421 009e 80BD pop {r7, pc} 422 .cfi_endproc 423 .LFE132: 425 .section .text.status_led_set,"ax",%progbits 426 .align 1 427 .global status_led_set 428 .syntax unified 429 .thumb 430 .thumb_func 432 status_led_set: 433 .LFB133: 127:Core/Src/status_LED.c **** 128:Core/Src/status_LED.c **** void status_led_set(uint8_t r, uint8_t g, uint8_t b){ 434 .loc 1 128 53 435 .cfi_startproc 436 @ args = 0, pretend = 0, frame = 8 437 @ frame_needed = 1, uses_anonymous_args = 0 438 @ link register save eliminated. 439 0000 80B4 push {r7} 440 .cfi_def_cfa_offset 4 441 .cfi_offset 7, -4 442 0002 83B0 sub sp, sp, #12 443 .cfi_def_cfa_offset 16 444 0004 00AF add r7, sp, #0 445 .cfi_def_cfa_register 7 446 0006 0346 mov r3, r0 447 0008 FB71 strb r3, [r7, #7] 448 000a 0B46 mov r3, r1 449 000c BB71 strb r3, [r7, #6] 450 000e 1346 mov r3, r2 451 0010 7B71 strb r3, [r7, #5] 129:Core/Src/status_LED.c **** __HAL_TIM_SET_COMPARE(red, TIM_CHANNEL_1, r); 452 .loc 1 129 3 453 0012 0A4B ldr r3, .L36 454 0014 1B68 ldr r3, [r3] 455 0016 1B68 ldr r3, [r3] 456 0018 FA79 ldrb r2, [r7, #7] @ zero_extendqisi2 457 001a 5A63 str r2, [r3, #52] ARM GAS /tmp/ccnT6iWU.s page 11 130:Core/Src/status_LED.c **** __HAL_TIM_SET_COMPARE(green, TIM_CHANNEL_2, g); 458 .loc 1 130 3 459 001c 084B ldr r3, .L36+4 460 001e 1B68 ldr r3, [r3] 461 0020 1B68 ldr r3, [r3] 462 0022 BA79 ldrb r2, [r7, #6] @ zero_extendqisi2 463 0024 9A63 str r2, [r3, #56] 131:Core/Src/status_LED.c **** __HAL_TIM_SET_COMPARE(blue, TIM_CHANNEL_3, b); 464 .loc 1 131 3 465 0026 074B ldr r3, .L36+8 466 0028 1B68 ldr r3, [r3] 467 002a 1B68 ldr r3, [r3] 468 002c 7A79 ldrb r2, [r7, #5] @ zero_extendqisi2 469 002e DA63 str r2, [r3, #60] 132:Core/Src/status_LED.c **** }... 470 .loc 1 132 1 471 0030 00BF nop 472 0032 0C37 adds r7, r7, #12 473 .cfi_def_cfa_offset 4 474 0034 BD46 mov sp, r7 475 .cfi_def_cfa_register 13 476 @ sp needed 477 0036 5DF8047B ldr r7, [sp], #4 478 .cfi_restore 7 479 .cfi_def_cfa_offset 0 480 003a 7047 bx lr 481 .L37: 482 .align 2 483 .L36: 484 003c 00000000 .word red 485 0040 00000000 .word green 486 0044 00000000 .word blue 487 .cfi_endproc 488 .LFE133: 490 .text 491 .Letext0: 492 .file 2 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl 493 .file 3 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl 494 .file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h" 495 .file 5 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h" 496 .file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_dma.h" 497 .file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_tim.h" 498 .file 8 "Core/Inc/status_LED.h" 499 .file 9 "Core/Inc/state_machine.h" 500 .file 10 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal.h" ARM GAS /tmp/ccnT6iWU.s page 12 DEFINED SYMBOLS *ABS*:00000000 status_LED.c /tmp/ccnT6iWU.s:25 .bss.red:00000000 red /tmp/ccnT6iWU.s:22 .bss.red:00000000 $d /tmp/ccnT6iWU.s:32 .bss.green:00000000 green /tmp/ccnT6iWU.s:29 .bss.green:00000000 $d /tmp/ccnT6iWU.s:39 .bss.blue:00000000 blue /tmp/ccnT6iWU.s:36 .bss.blue:00000000 $d /tmp/ccnT6iWU.s:46 .bss.blink_timer:00000000 blink_timer /tmp/ccnT6iWU.s:43 .bss.blink_timer:00000000 $d /tmp/ccnT6iWU.s:52 .bss.blink_state:00000000 blink_state /tmp/ccnT6iWU.s:53 .bss.blink_state:00000000 $d /tmp/ccnT6iWU.s:55 .text.status_led_init:00000000 $t /tmp/ccnT6iWU.s:61 .text.status_led_init:00000000 status_led_init /tmp/ccnT6iWU.s:432 .text.status_led_set:00000000 status_led_set /tmp/ccnT6iWU.s:132 .text.status_led_init:00000060 $d /tmp/ccnT6iWU.s:141 .text.status_led_update:00000000 $t /tmp/ccnT6iWU.s:147 .text.status_led_update:00000000 status_led_update /tmp/ccnT6iWU.s:315 .text.status_led_set_color:00000000 status_led_set_color /tmp/ccnT6iWU.s:260 .text.status_led_update:00000094 $d /tmp/ccnT6iWU.s:268 .text.status_led_update:000000b4 $t /tmp/ccnT6iWU.s:302 .text.status_led_update:000000d8 $d /tmp/ccnT6iWU.s:309 .text.status_led_set_color:00000000 $t /tmp/ccnT6iWU.s:339 .text.status_led_set_color:00000018 $d /tmp/ccnT6iWU.s:347 .text.status_led_set_color:00000038 $t /tmp/ccnT6iWU.s:426 .text.status_led_set:00000000 $t /tmp/ccnT6iWU.s:484 .text.status_led_set:0000003c $d UNDEFINED SYMBOLS HAL_TIM_PWM_Start HAL_GetTick state