From b1d439d82e0935ff3f7c44536163077944d43a04 Mon Sep 17 00:00:00 2001 From: Mitchell M Date: Sat, 12 Oct 2024 12:44:33 -0500 Subject: [PATCH] update to rev 1.1 --- Core/Inc/main.h | 18 +- Core/Src/main.c | 26 +- Debug/Core/Src/main.cyclo | 28 +- Debug/Core/Src/main.o | Bin 734400 -> 734676 bytes Debug/Core/Src/main.su | 30 +- Debug/Core/Src/stm32g0xx_hal_msp.o | Bin 720696 -> 720772 bytes Debug/Core/Src/stm32g0xx_it.o | Bin 714656 -> 714732 bytes Debug/wires.elf | Bin 812848 -> 812964 bytes Debug/wires.list | 17267 ++++++++++++++------------- Debug/wires.map | 658 +- wires.ioc | 69 +- 11 files changed, 9088 insertions(+), 9008 deletions(-) diff --git a/Core/Inc/main.h b/Core/Inc/main.h index b19f542..d4376b0 100644 --- a/Core/Inc/main.h +++ b/Core/Inc/main.h @@ -57,6 +57,8 @@ void Error_Handler(void); /* USER CODE END EFP */ /* Private defines -----------------------------------------------------------*/ +#define LED2_Pin GPIO_PIN_13 +#define LED2_GPIO_Port GPIOC #define LED3_Pin GPIO_PIN_0 #define LED3_GPIO_Port GPIOA #define TX_Pin GPIO_PIN_2 @@ -79,20 +81,20 @@ void Error_Handler(void); #define WIRE2_GPIO_Port GPIOB #define WIRE1_Pin GPIO_PIN_10 #define WIRE1_GPIO_Port GPIOB -#define BUZZ_Pin GPIO_PIN_13 +#define RELAY1_Pin GPIO_PIN_13 +#define RELAY1_GPIO_Port GPIOB +#define RELAY2_Pin GPIO_PIN_14 +#define RELAY2_GPIO_Port GPIOB +#define BUZZ_Pin GPIO_PIN_15 #define BUZZ_GPIO_Port GPIOB -#define LED4_Pin GPIO_PIN_14 -#define LED4_GPIO_Port GPIOB -#define RELAY_Pin GPIO_PIN_15 -#define RELAY_GPIO_Port GPIOB #define HELP_BTN_Pin GPIO_PIN_8 #define HELP_BTN_GPIO_Port GPIOA #define INT_Pin GPIO_PIN_10 #define INT_GPIO_Port GPIOA -#define LED1_Pin GPIO_PIN_8 +#define LED4_Pin GPIO_PIN_8 +#define LED4_GPIO_Port GPIOB +#define LED1_Pin GPIO_PIN_9 #define LED1_GPIO_Port GPIOB -#define LED2_Pin GPIO_PIN_9 -#define LED2_GPIO_Port GPIOB /* USER CODE BEGIN Private defines */ diff --git a/Core/Src/main.c b/Core/Src/main.c index a21a20a..7a8d404 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -324,16 +324,27 @@ static void MX_GPIO_Init(void) /* USER CODE END MX_GPIO_Init_1 */ /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOF_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET); + /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOA, LED3_Pin|HELP_BTN_Pin|INT_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOB, BUZZ_Pin|LED4_Pin|RELAY_Pin|LED1_Pin - |LED2_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOB, RELAY1_Pin|RELAY2_Pin|BUZZ_Pin|LED4_Pin + |LED1_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin : LED2_Pin */ + GPIO_InitStruct.Pin = LED2_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(LED2_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pins : LED3_Pin HELP_BTN_Pin INT_Pin */ GPIO_InitStruct.Pin = LED3_Pin|HELP_BTN_Pin|INT_Pin; @@ -354,10 +365,10 @@ static void MX_GPIO_Init(void) GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - /*Configure GPIO pins : BUZZ_Pin LED4_Pin RELAY_Pin LED1_Pin - LED2_Pin */ - GPIO_InitStruct.Pin = BUZZ_Pin|LED4_Pin|RELAY_Pin|LED1_Pin - |LED2_Pin; + /*Configure GPIO pins : RELAY1_Pin RELAY2_Pin BUZZ_Pin LED4_Pin + LED1_Pin */ + GPIO_InitStruct.Pin = RELAY1_Pin|RELAY2_Pin|BUZZ_Pin|LED4_Pin + |LED1_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; @@ -517,7 +528,8 @@ void set_relay_buzz(void) if (relay_buzz != old_relay_buzz) { old_relay_buzz = relay_buzz; HAL_GPIO_WritePin(BUZZ_GPIO_Port, BUZZ_Pin, (relay_buzz >> BUZZ_BIT_IDX) & 1); - HAL_GPIO_WritePin(RELAY_GPIO_Port, RELAY_Pin, (relay_buzz >> RELAY_BIT_IDX) & 1); + HAL_GPIO_WritePin(RELAY1_GPIO_Port, RELAY1_Pin, (relay_buzz >> RELAY_BIT_IDX) & 1); + HAL_GPIO_WritePin(RELAY2_GPIO_Port, RELAY2_Pin, (relay_buzz >> RELAY_BIT_IDX) & 1); } } diff --git a/Debug/Core/Src/main.cyclo b/Debug/Core/Src/main.cyclo index e82c51d..80f3cda 100644 --- a/Debug/Core/Src/main.cyclo +++ b/Debug/Core/Src/main.cyclo @@ -3,17 +3,17 @@ ../Core/Src/main.c:224:13:MX_I2C1_Init 4 ../Core/Src/main.c:272:13:MX_USART2_UART_Init 5 ../Core/Src/main.c:320:13:MX_GPIO_Init 1 -../Core/Src/main.c:371:1:__io_putchar 1 -../Core/Src/main.c:381:6:HAL_I2C_ListenCpltCallback 1 -../Core/Src/main.c:388:6:HAL_I2C_AddrCallback 2 -../Core/Src/main.c:398:6:send_register 9 -../Core/Src/main.c:434:6:recv_register 7 -../Core/Src/main.c:454:6:HAL_I2C_SlaveRxCpltCallback 5 -../Core/Src/main.c:479:6:HAL_I2C_SlaveTxCpltCallback 1 -../Core/Src/main.c:484:6:scan_wires 9 -../Core/Src/main.c:505:6:scan_button 2 -../Core/Src/main.c:515:6:set_relay_buzz 2 -../Core/Src/main.c:524:6:set_leds 2 -../Core/Src/main.c:535:6:send_interupt 2 -../Core/Src/main.c:544:6:handle_strike 7 -../Core/Src/main.c:581:6:Error_Handler 1 +../Core/Src/main.c:382:1:__io_putchar 1 +../Core/Src/main.c:392:6:HAL_I2C_ListenCpltCallback 1 +../Core/Src/main.c:399:6:HAL_I2C_AddrCallback 2 +../Core/Src/main.c:409:6:send_register 9 +../Core/Src/main.c:445:6:recv_register 7 +../Core/Src/main.c:465:6:HAL_I2C_SlaveRxCpltCallback 5 +../Core/Src/main.c:490:6:HAL_I2C_SlaveTxCpltCallback 1 +../Core/Src/main.c:495:6:scan_wires 9 +../Core/Src/main.c:516:6:scan_button 2 +../Core/Src/main.c:526:6:set_relay_buzz 2 +../Core/Src/main.c:536:6:set_leds 2 +../Core/Src/main.c:547:6:send_interupt 2 +../Core/Src/main.c:556:6:handle_strike 7 +../Core/Src/main.c:593:6:Error_Handler 1 diff --git a/Debug/Core/Src/main.o b/Debug/Core/Src/main.o index 24efd0411936d72a3af62ea3d73c53bfc40ac438..242443da0f6c0c8ce30280e848f40ee3772f83f2 100644 GIT binary patch delta 86577 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

iO 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 JkG3{d{y&p|_4)t+ diff --git a/Debug/Core/Src/main.su b/Debug/Core/Src/main.su index 56942b2..9fe7e1f 100644 --- a/Debug/Core/Src/main.su +++ b/Debug/Core/Src/main.su @@ -2,18 +2,18 @@ ../Core/Src/main.c:183:6:SystemClock_Config 88 static ../Core/Src/main.c:224:13:MX_I2C1_Init 8 static ../Core/Src/main.c:272:13:MX_USART2_UART_Init 8 static -../Core/Src/main.c:320:13:MX_GPIO_Init 48 static -../Core/Src/main.c:371:1:__io_putchar 16 static -../Core/Src/main.c:381:6:HAL_I2C_ListenCpltCallback 16 static -../Core/Src/main.c:388:6:HAL_I2C_AddrCallback 16 static -../Core/Src/main.c:398:6:send_register 8 static -../Core/Src/main.c:434:6:recv_register 8 static -../Core/Src/main.c:454:6:HAL_I2C_SlaveRxCpltCallback 16 static -../Core/Src/main.c:479:6:HAL_I2C_SlaveTxCpltCallback 16 static -../Core/Src/main.c:484:6:scan_wires 16 static -../Core/Src/main.c:505:6:scan_button 8 static -../Core/Src/main.c:515:6:set_relay_buzz 8 static -../Core/Src/main.c:524:6:set_leds 8 static -../Core/Src/main.c:535:6:send_interupt 8 static -../Core/Src/main.c:544:6:handle_strike 24 static -../Core/Src/main.c:581:6:Error_Handler 8 static,ignoring_inline_asm +../Core/Src/main.c:320:13:MX_GPIO_Init 56 static +../Core/Src/main.c:382:1:__io_putchar 16 static +../Core/Src/main.c:392:6:HAL_I2C_ListenCpltCallback 16 static +../Core/Src/main.c:399:6:HAL_I2C_AddrCallback 16 static +../Core/Src/main.c:409:6:send_register 8 static +../Core/Src/main.c:445:6:recv_register 8 static +../Core/Src/main.c:465:6:HAL_I2C_SlaveRxCpltCallback 16 static +../Core/Src/main.c:490:6:HAL_I2C_SlaveTxCpltCallback 16 static +../Core/Src/main.c:495:6:scan_wires 16 static +../Core/Src/main.c:516:6:scan_button 8 static +../Core/Src/main.c:526:6:set_relay_buzz 8 static +../Core/Src/main.c:536:6:set_leds 8 static +../Core/Src/main.c:547:6:send_interupt 8 static +../Core/Src/main.c:556:6:handle_strike 24 static +../Core/Src/main.c:593:6:Error_Handler 8 static,ignoring_inline_asm diff --git a/Debug/Core/Src/stm32g0xx_hal_msp.o b/Debug/Core/Src/stm32g0xx_hal_msp.o index e8a7339e1f1344ed89b767fd3353a498c697eeca..b088114181e08ab7522280591068f4d5b91768db 100644 GIT binary patch delta 83280 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 delta 83212 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

!x__b`n*x5QM3$3o1P27)qlvZ<3AykygCe-Kkl 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%0A!HurXp~`w&x!}7h?N96-mczm8;=8 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 bUtw%2l4t0BDvV9k9Q?%8EWK5U(f0oU`Mjvt diff --git a/Debug/Core/Src/stm32g0xx_it.o b/Debug/Core/Src/stm32g0xx_it.o index 61975846549eebd6c2aa2f978c484b81775fcc66..f30b791f78279fbaca682ca21afd66f12a287151 100644 GIT binary patch delta 81448 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%0ADac`D{GG=kPhn^(HQq@ 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 U%XQt`-AmUsL+<$h|K4Bz4|@k|`Tzg` delta 81354 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 diff --git a/Debug/wires.elf b/Debug/wires.elf index 98ecdd0fb677cd1990d6b6399a235f57b2cd74f4..0d378e4e705770c3bba325c889c3af8e97536f40 100644 GIT binary patch delta 135116 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 L@_PE8>+Amm(#+&& delta 135441 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 z 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: 80000e0: 4b04 ldr r3, [pc, #16] @ (80000f4 ) @@ -82,7 +82,7 @@ Disassembly of section .text: 80000f2: 46c0 nop @ (mov r8, r8) 80000f4: 00000000 .word 0x00000000 80000f8: 20000014 .word 0x20000014 - 80000fc: 08004ae0 .word 0x08004ae0 + 80000fc: 08004b4c .word 0x08004b4c 08000100 <__udivsi3>: 8000100: 2200 movs r2, #0 @@ -481,7 +481,7 @@ int main(void) /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); - 80003f0: f000 fe18 bl 8001024 + 80003f0: f000 fe4e bl 8001090 /* USER CODE BEGIN Init */ /* USER CODE END Init */ @@ -505,24 +505,24 @@ int main(void) HAL_I2C_EnableListen_IT(&hi2c1); 8000404: 4b08 ldr r3, [pc, #32] @ (8000428 ) 8000406: 0018 movs r0, r3 - 8000408: f001 fbc2 bl 8001b90 + 8000408: f001 fbf8 bl 8001bfc while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ scan_wires(); - 800040c: f000 fac8 bl 80009a0 + 800040c: f000 faf0 bl 80009f0 scan_button(); - 8000410: f000 fb82 bl 8000b18 + 8000410: f000 fbaa bl 8000b68 handle_strike(); - 8000414: f000 fc42 bl 8000c9c + 8000414: f000 fc78 bl 8000d08 set_relay_buzz(); - 8000418: f000 fbaa bl 8000b70 + 8000418: f000 fbd2 bl 8000bc0 set_leds(); - 800041c: f000 fbd6 bl 8000bcc + 800041c: f000 fc0a bl 8000c34 send_interupt(); - 8000420: f000 fc1c bl 8000c5c + 8000420: f000 fc52 bl 8000cc8 scan_wires(); 8000424: 46c0 nop @ (mov r8, r8) 8000426: e7f1 b.n 800040c @@ -545,14 +545,14 @@ void SystemClock_Config(void) 8000438: 2334 movs r3, #52 @ 0x34 800043a: 001a movs r2, r3 800043c: 2100 movs r1, #0 - 800043e: f004 fb23 bl 8004a88 + 800043e: f004 fb59 bl 8004af4 RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; 8000442: 1d3b adds r3, r7, #4 8000444: 0018 movs r0, r3 8000446: 2310 movs r3, #16 8000448: 001a movs r2, r3 800044a: 2100 movs r1, #0 - 800044c: f004 fb1c bl 8004a88 + 800044c: f004 fb52 bl 8004af4 /** Configure the main internal regulator output voltage */ @@ -560,7 +560,7 @@ void SystemClock_Config(void) 8000450: 2380 movs r3, #128 @ 0x80 8000452: 009b lsls r3, r3, #2 8000454: 0018 movs r0, r3 - 8000456: f002 ff95 bl 8003384 + 8000456: f002 ffcb bl 80033f0 /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. @@ -589,12 +589,12 @@ void SystemClock_Config(void) if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) 800047a: 193b adds r3, r7, r4 800047c: 0018 movs r0, r3 - 800047e: f002 ffcd bl 800341c + 800047e: f003 f803 bl 8003488 8000482: 1e03 subs r3, r0, #0 8000484: d001 beq.n 800048a { Error_Handler(); - 8000486: f000 fc73 bl 8000d70 + 8000486: f000 fca9 bl 8000ddc } /** Initializes the CPU, AHB and APB buses clocks @@ -621,12 +621,12 @@ void SystemClock_Config(void) 80004a2: 1d3b adds r3, r7, #4 80004a4: 2100 movs r1, #0 80004a6: 0018 movs r0, r3 - 80004a8: f003 fac8 bl 8003a3c + 80004a8: f003 fafe bl 8003aa8 80004ac: 1e03 subs r3, r0, #0 80004ae: d001 beq.n 80004b4 { Error_Handler(); - 80004b0: f000 fc5e bl 8000d70 + 80004b0: f000 fc94 bl 8000ddc } } 80004b4: 46c0 nop @ (mov r8, r8) @@ -687,12 +687,12 @@ static void MX_I2C1_Init(void) if (HAL_I2C_Init(&hi2c1) != HAL_OK) 80004f6: 4b0e ldr r3, [pc, #56] @ (8000530 ) 80004f8: 0018 movs r0, r3 - 80004fa: f001 f921 bl 8001740 + 80004fa: f001 f957 bl 80017ac 80004fe: 1e03 subs r3, r0, #0 8000500: d001 beq.n 8000506 { Error_Handler(); - 8000502: f000 fc35 bl 8000d70 + 8000502: f000 fc6b bl 8000ddc } /** Configure Analogue filter @@ -701,12 +701,12 @@ static void MX_I2C1_Init(void) 8000506: 4b0a ldr r3, [pc, #40] @ (8000530 ) 8000508: 2100 movs r1, #0 800050a: 0018 movs r0, r3 - 800050c: f002 fea2 bl 8003254 + 800050c: f002 fed8 bl 80032c0 8000510: 1e03 subs r3, r0, #0 8000512: d001 beq.n 8000518 { Error_Handler(); - 8000514: f000 fc2c bl 8000d70 + 8000514: f000 fc62 bl 8000ddc } /** Configure Digital filter @@ -715,12 +715,12 @@ static void MX_I2C1_Init(void) 8000518: 4b05 ldr r3, [pc, #20] @ (8000530 ) 800051a: 2100 movs r1, #0 800051c: 0018 movs r0, r3 - 800051e: f002 fee5 bl 80032ec + 800051e: f002 ff1b bl 8003358 8000522: 1e03 subs r3, r0, #0 8000524: d001 beq.n 800052a { Error_Handler(); - 8000526: f000 fc23 bl 8000d70 + 8000526: f000 fc59 bl 8000ddc } /* USER CODE BEGIN I2C1_Init 2 */ @@ -796,44 +796,44 @@ static void MX_USART2_UART_Init(void) if (HAL_UART_Init(&huart2) != HAL_OK) 8000584: 4b12 ldr r3, [pc, #72] @ (80005d0 ) 8000586: 0018 movs r0, r3 - 8000588: f003 fd36 bl 8003ff8 + 8000588: f003 fd6c bl 8004064 800058c: 1e03 subs r3, r0, #0 800058e: d001 beq.n 8000594 { Error_Handler(); - 8000590: f000 fbee bl 8000d70 + 8000590: f000 fc24 bl 8000ddc } if (HAL_UARTEx_SetTxFifoThreshold(&huart2, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) 8000594: 4b0e ldr r3, [pc, #56] @ (80005d0 ) 8000596: 2100 movs r1, #0 8000598: 0018 movs r0, r3 - 800059a: f004 f995 bl 80048c8 + 800059a: f004 f9cb bl 8004934 800059e: 1e03 subs r3, r0, #0 80005a0: d001 beq.n 80005a6 { Error_Handler(); - 80005a2: f000 fbe5 bl 8000d70 + 80005a2: f000 fc1b bl 8000ddc } if (HAL_UARTEx_SetRxFifoThreshold(&huart2, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) 80005a6: 4b0a ldr r3, [pc, #40] @ (80005d0 ) 80005a8: 2100 movs r1, #0 80005aa: 0018 movs r0, r3 - 80005ac: f004 f9cc bl 8004948 + 80005ac: f004 fa02 bl 80049b4 80005b0: 1e03 subs r3, r0, #0 80005b2: d001 beq.n 80005b8 { Error_Handler(); - 80005b4: f000 fbdc bl 8000d70 + 80005b4: f000 fc12 bl 8000ddc } if (HAL_UARTEx_DisableFifoMode(&huart2) != HAL_OK) 80005b8: 4b05 ldr r3, [pc, #20] @ (80005d0 ) 80005ba: 0018 movs r0, r3 - 80005bc: f004 f94a bl 8004854 + 80005bc: f004 f980 bl 80048c0 80005c0: 1e03 subs r3, r0, #0 80005c2: d001 beq.n 80005c8 { Error_Handler(); - 80005c4: f000 fbd4 bl 8000d70 + 80005c4: f000 fc0a bl 8000ddc } /* USER CODE BEGIN USART2_Init 2 */ @@ -855,12393 +855,12388 @@ static void MX_USART2_UART_Init(void) static void MX_GPIO_Init(void) { 80005d8: b590 push {r4, r7, lr} - 80005da: b089 sub sp, #36 @ 0x24 + 80005da: b08b sub sp, #44 @ 0x2c 80005dc: af00 add r7, sp, #0 GPIO_InitTypeDef GPIO_InitStruct = {0}; - 80005de: 240c movs r4, #12 + 80005de: 2414 movs r4, #20 80005e0: 193b adds r3, r7, r4 80005e2: 0018 movs r0, r3 80005e4: 2314 movs r3, #20 80005e6: 001a movs r2, r3 80005e8: 2100 movs r1, #0 - 80005ea: f004 fa4d bl 8004a88 + 80005ea: f004 fa83 bl 8004af4 /* USER CODE BEGIN MX_GPIO_Init_1 */ /* USER CODE END MX_GPIO_Init_1 */ /* GPIO Ports Clock Enable */ - __HAL_RCC_GPIOF_CLK_ENABLE(); - 80005ee: 4b3e ldr r3, [pc, #248] @ (80006e8 ) + __HAL_RCC_GPIOC_CLK_ENABLE(); + 80005ee: 4b51 ldr r3, [pc, #324] @ (8000734 ) 80005f0: 6b5a ldr r2, [r3, #52] @ 0x34 - 80005f2: 4b3d ldr r3, [pc, #244] @ (80006e8 ) - 80005f4: 2120 movs r1, #32 + 80005f2: 4b50 ldr r3, [pc, #320] @ (8000734 ) + 80005f4: 2104 movs r1, #4 80005f6: 430a orrs r2, r1 80005f8: 635a str r2, [r3, #52] @ 0x34 - 80005fa: 4b3b ldr r3, [pc, #236] @ (80006e8 ) + 80005fa: 4b4e ldr r3, [pc, #312] @ (8000734 ) 80005fc: 6b5b ldr r3, [r3, #52] @ 0x34 - 80005fe: 2220 movs r2, #32 + 80005fe: 2204 movs r2, #4 8000600: 4013 ands r3, r2 - 8000602: 60bb str r3, [r7, #8] - 8000604: 68bb ldr r3, [r7, #8] - __HAL_RCC_GPIOA_CLK_ENABLE(); - 8000606: 4b38 ldr r3, [pc, #224] @ (80006e8 ) + 8000602: 613b str r3, [r7, #16] + 8000604: 693b ldr r3, [r7, #16] + __HAL_RCC_GPIOF_CLK_ENABLE(); + 8000606: 4b4b ldr r3, [pc, #300] @ (8000734 ) 8000608: 6b5a ldr r2, [r3, #52] @ 0x34 - 800060a: 4b37 ldr r3, [pc, #220] @ (80006e8 ) - 800060c: 2101 movs r1, #1 + 800060a: 4b4a ldr r3, [pc, #296] @ (8000734 ) + 800060c: 2120 movs r1, #32 800060e: 430a orrs r2, r1 8000610: 635a str r2, [r3, #52] @ 0x34 - 8000612: 4b35 ldr r3, [pc, #212] @ (80006e8 ) + 8000612: 4b48 ldr r3, [pc, #288] @ (8000734 ) 8000614: 6b5b ldr r3, [r3, #52] @ 0x34 - 8000616: 2201 movs r2, #1 + 8000616: 2220 movs r2, #32 8000618: 4013 ands r3, r2 - 800061a: 607b str r3, [r7, #4] - 800061c: 687b ldr r3, [r7, #4] - __HAL_RCC_GPIOB_CLK_ENABLE(); - 800061e: 4b32 ldr r3, [pc, #200] @ (80006e8 ) + 800061a: 60fb str r3, [r7, #12] + 800061c: 68fb ldr r3, [r7, #12] + __HAL_RCC_GPIOA_CLK_ENABLE(); + 800061e: 4b45 ldr r3, [pc, #276] @ (8000734 ) 8000620: 6b5a ldr r2, [r3, #52] @ 0x34 - 8000622: 4b31 ldr r3, [pc, #196] @ (80006e8 ) - 8000624: 2102 movs r1, #2 + 8000622: 4b44 ldr r3, [pc, #272] @ (8000734 ) + 8000624: 2101 movs r1, #1 8000626: 430a orrs r2, r1 8000628: 635a str r2, [r3, #52] @ 0x34 - 800062a: 4b2f ldr r3, [pc, #188] @ (80006e8 ) + 800062a: 4b42 ldr r3, [pc, #264] @ (8000734 ) 800062c: 6b5b ldr r3, [r3, #52] @ 0x34 - 800062e: 2202 movs r2, #2 + 800062e: 2201 movs r2, #1 8000630: 4013 ands r3, r2 - 8000632: 603b str r3, [r7, #0] - 8000634: 683b ldr r3, [r7, #0] + 8000632: 60bb str r3, [r7, #8] + 8000634: 68bb ldr r3, [r7, #8] + __HAL_RCC_GPIOB_CLK_ENABLE(); + 8000636: 4b3f ldr r3, [pc, #252] @ (8000734 ) + 8000638: 6b5a ldr r2, [r3, #52] @ 0x34 + 800063a: 4b3e ldr r3, [pc, #248] @ (8000734 ) + 800063c: 2102 movs r1, #2 + 800063e: 430a orrs r2, r1 + 8000640: 635a str r2, [r3, #52] @ 0x34 + 8000642: 4b3c ldr r3, [pc, #240] @ (8000734 ) + 8000644: 6b5b ldr r3, [r3, #52] @ 0x34 + 8000646: 2202 movs r2, #2 + 8000648: 4013 ands r3, r2 + 800064a: 607b str r3, [r7, #4] + 800064c: 687b ldr r3, [r7, #4] + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET); + 800064e: 2380 movs r3, #128 @ 0x80 + 8000650: 019b lsls r3, r3, #6 + 8000652: 4839 ldr r0, [pc, #228] @ (8000738 ) + 8000654: 2200 movs r2, #0 + 8000656: 0019 movs r1, r3 + 8000658: f001 f88b bl 8001772 /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOA, LED3_Pin|HELP_BTN_Pin|INT_Pin, GPIO_PIN_RESET); - 8000636: 492d ldr r1, [pc, #180] @ (80006ec ) - 8000638: 23a0 movs r3, #160 @ 0xa0 - 800063a: 05db lsls r3, r3, #23 - 800063c: 2200 movs r2, #0 - 800063e: 0018 movs r0, r3 - 8000640: f001 f861 bl 8001706 + 800065c: 4937 ldr r1, [pc, #220] @ (800073c ) + 800065e: 23a0 movs r3, #160 @ 0xa0 + 8000660: 05db lsls r3, r3, #23 + 8000662: 2200 movs r2, #0 + 8000664: 0018 movs r0, r3 + 8000666: f001 f884 bl 8001772 /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOB, BUZZ_Pin|LED4_Pin|RELAY_Pin|LED1_Pin - 8000644: 23e3 movs r3, #227 @ 0xe3 - 8000646: 021b lsls r3, r3, #8 - 8000648: 4829 ldr r0, [pc, #164] @ (80006f0 ) - 800064a: 2200 movs r2, #0 - 800064c: 0019 movs r1, r3 - 800064e: f001 f85a bl 8001706 - |LED2_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOB, RELAY1_Pin|RELAY2_Pin|BUZZ_Pin|LED4_Pin + 800066a: 23e3 movs r3, #227 @ 0xe3 + 800066c: 021b lsls r3, r3, #8 + 800066e: 4834 ldr r0, [pc, #208] @ (8000740 ) + 8000670: 2200 movs r2, #0 + 8000672: 0019 movs r1, r3 + 8000674: f001 f87d bl 8001772 + |LED1_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin : LED2_Pin */ + GPIO_InitStruct.Pin = LED2_Pin; + 8000678: 193b adds r3, r7, r4 + 800067a: 2280 movs r2, #128 @ 0x80 + 800067c: 0192 lsls r2, r2, #6 + 800067e: 601a str r2, [r3, #0] + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 8000680: 193b adds r3, r7, r4 + 8000682: 2201 movs r2, #1 + 8000684: 605a str r2, [r3, #4] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000686: 193b adds r3, r7, r4 + 8000688: 2200 movs r2, #0 + 800068a: 609a str r2, [r3, #8] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 800068c: 193b adds r3, r7, r4 + 800068e: 2200 movs r2, #0 + 8000690: 60da str r2, [r3, #12] + HAL_GPIO_Init(LED2_GPIO_Port, &GPIO_InitStruct); + 8000692: 193b adds r3, r7, r4 + 8000694: 4a28 ldr r2, [pc, #160] @ (8000738 ) + 8000696: 0019 movs r1, r3 + 8000698: 0010 movs r0, r2 + 800069a: f000 fee9 bl 8001470 /*Configure GPIO pins : LED3_Pin HELP_BTN_Pin INT_Pin */ GPIO_InitStruct.Pin = LED3_Pin|HELP_BTN_Pin|INT_Pin; - 8000652: 193b adds r3, r7, r4 - 8000654: 4a25 ldr r2, [pc, #148] @ (80006ec ) - 8000656: 601a str r2, [r3, #0] + 800069e: 193b adds r3, r7, r4 + 80006a0: 4a26 ldr r2, [pc, #152] @ (800073c ) + 80006a2: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8000658: 193b adds r3, r7, r4 - 800065a: 2201 movs r2, #1 - 800065c: 605a str r2, [r3, #4] + 80006a4: 193b adds r3, r7, r4 + 80006a6: 2201 movs r2, #1 + 80006a8: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; - 800065e: 193b adds r3, r7, r4 - 8000660: 2200 movs r2, #0 - 8000662: 609a str r2, [r3, #8] + 80006aa: 193b adds r3, r7, r4 + 80006ac: 2200 movs r2, #0 + 80006ae: 609a str r2, [r3, #8] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8000664: 193b adds r3, r7, r4 - 8000666: 2200 movs r2, #0 - 8000668: 60da str r2, [r3, #12] + 80006b0: 193b adds r3, r7, r4 + 80006b2: 2200 movs r2, #0 + 80006b4: 60da str r2, [r3, #12] HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 800066a: 193a adds r2, r7, r4 - 800066c: 23a0 movs r3, #160 @ 0xa0 - 800066e: 05db lsls r3, r3, #23 - 8000670: 0011 movs r1, r2 - 8000672: 0018 movs r0, r3 - 8000674: f000 fec6 bl 8001404 + 80006b6: 193a adds r2, r7, r4 + 80006b8: 23a0 movs r3, #160 @ 0xa0 + 80006ba: 05db lsls r3, r3, #23 + 80006bc: 0011 movs r1, r2 + 80006be: 0018 movs r0, r3 + 80006c0: f000 fed6 bl 8001470 /*Configure GPIO pins : WIRE8_Pin WIRE7_Pin WIRE6_Pin WIRE5_Pin */ GPIO_InitStruct.Pin = WIRE8_Pin|WIRE7_Pin|WIRE6_Pin|WIRE5_Pin; - 8000678: 193b adds r3, r7, r4 - 800067a: 22f0 movs r2, #240 @ 0xf0 - 800067c: 601a str r2, [r3, #0] + 80006c4: 193b adds r3, r7, r4 + 80006c6: 22f0 movs r2, #240 @ 0xf0 + 80006c8: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - 800067e: 193b adds r3, r7, r4 - 8000680: 2200 movs r2, #0 - 8000682: 605a str r2, [r3, #4] + 80006ca: 193b adds r3, r7, r4 + 80006cc: 2200 movs r2, #0 + 80006ce: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_PULLUP; - 8000684: 193b adds r3, r7, r4 - 8000686: 2201 movs r2, #1 - 8000688: 609a str r2, [r3, #8] + 80006d0: 193b adds r3, r7, r4 + 80006d2: 2201 movs r2, #1 + 80006d4: 609a str r2, [r3, #8] HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 800068a: 193a adds r2, r7, r4 - 800068c: 23a0 movs r3, #160 @ 0xa0 - 800068e: 05db lsls r3, r3, #23 - 8000690: 0011 movs r1, r2 - 8000692: 0018 movs r0, r3 - 8000694: f000 feb6 bl 8001404 + 80006d6: 193a adds r2, r7, r4 + 80006d8: 23a0 movs r3, #160 @ 0xa0 + 80006da: 05db lsls r3, r3, #23 + 80006dc: 0011 movs r1, r2 + 80006de: 0018 movs r0, r3 + 80006e0: f000 fec6 bl 8001470 /*Configure GPIO pins : WIRE4_Pin WIRE3_Pin WIRE2_Pin WIRE1_Pin */ GPIO_InitStruct.Pin = WIRE4_Pin|WIRE3_Pin|WIRE2_Pin|WIRE1_Pin; - 8000698: 193b adds r3, r7, r4 - 800069a: 4a16 ldr r2, [pc, #88] @ (80006f4 ) - 800069c: 601a str r2, [r3, #0] + 80006e4: 193b adds r3, r7, r4 + 80006e6: 4a17 ldr r2, [pc, #92] @ (8000744 ) + 80006e8: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - 800069e: 193b adds r3, r7, r4 - 80006a0: 2200 movs r2, #0 - 80006a2: 605a str r2, [r3, #4] + 80006ea: 193b adds r3, r7, r4 + 80006ec: 2200 movs r2, #0 + 80006ee: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_PULLUP; - 80006a4: 193b adds r3, r7, r4 - 80006a6: 2201 movs r2, #1 - 80006a8: 609a str r2, [r3, #8] + 80006f0: 193b adds r3, r7, r4 + 80006f2: 2201 movs r2, #1 + 80006f4: 609a str r2, [r3, #8] HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 80006aa: 193b adds r3, r7, r4 - 80006ac: 4a10 ldr r2, [pc, #64] @ (80006f0 ) - 80006ae: 0019 movs r1, r3 - 80006b0: 0010 movs r0, r2 - 80006b2: f000 fea7 bl 8001404 + 80006f6: 193b adds r3, r7, r4 + 80006f8: 4a11 ldr r2, [pc, #68] @ (8000740 ) + 80006fa: 0019 movs r1, r3 + 80006fc: 0010 movs r0, r2 + 80006fe: f000 feb7 bl 8001470 - /*Configure GPIO pins : BUZZ_Pin LED4_Pin RELAY_Pin LED1_Pin - LED2_Pin */ - GPIO_InitStruct.Pin = BUZZ_Pin|LED4_Pin|RELAY_Pin|LED1_Pin - 80006b6: 0021 movs r1, r4 - 80006b8: 187b adds r3, r7, r1 - 80006ba: 22e3 movs r2, #227 @ 0xe3 - 80006bc: 0212 lsls r2, r2, #8 - 80006be: 601a str r2, [r3, #0] - |LED2_Pin; + /*Configure GPIO pins : RELAY1_Pin RELAY2_Pin BUZZ_Pin LED4_Pin + LED1_Pin */ + GPIO_InitStruct.Pin = RELAY1_Pin|RELAY2_Pin|BUZZ_Pin|LED4_Pin + 8000702: 0021 movs r1, r4 + 8000704: 187b adds r3, r7, r1 + 8000706: 22e3 movs r2, #227 @ 0xe3 + 8000708: 0212 lsls r2, r2, #8 + 800070a: 601a str r2, [r3, #0] + |LED1_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 80006c0: 187b adds r3, r7, r1 - 80006c2: 2201 movs r2, #1 - 80006c4: 605a str r2, [r3, #4] + 800070c: 187b adds r3, r7, r1 + 800070e: 2201 movs r2, #1 + 8000710: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; - 80006c6: 187b adds r3, r7, r1 - 80006c8: 2200 movs r2, #0 - 80006ca: 609a str r2, [r3, #8] + 8000712: 187b adds r3, r7, r1 + 8000714: 2200 movs r2, #0 + 8000716: 609a str r2, [r3, #8] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 80006cc: 187b adds r3, r7, r1 - 80006ce: 2200 movs r2, #0 - 80006d0: 60da str r2, [r3, #12] + 8000718: 187b adds r3, r7, r1 + 800071a: 2200 movs r2, #0 + 800071c: 60da str r2, [r3, #12] HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 80006d2: 187b adds r3, r7, r1 - 80006d4: 4a06 ldr r2, [pc, #24] @ (80006f0 ) - 80006d6: 0019 movs r1, r3 - 80006d8: 0010 movs r0, r2 - 80006da: f000 fe93 bl 8001404 + 800071e: 187b adds r3, r7, r1 + 8000720: 4a07 ldr r2, [pc, #28] @ (8000740 ) + 8000722: 0019 movs r1, r3 + 8000724: 0010 movs r0, r2 + 8000726: f000 fea3 bl 8001470 /* USER CODE BEGIN MX_GPIO_Init_2 */ /* USER CODE END MX_GPIO_Init_2 */ } - 80006de: 46c0 nop @ (mov r8, r8) - 80006e0: 46bd mov sp, r7 - 80006e2: b009 add sp, #36 @ 0x24 - 80006e4: bd90 pop {r4, r7, pc} - 80006e6: 46c0 nop @ (mov r8, r8) - 80006e8: 40021000 .word 0x40021000 - 80006ec: 00000501 .word 0x00000501 - 80006f0: 50000400 .word 0x50000400 - 80006f4: 00000407 .word 0x00000407 + 800072a: 46c0 nop @ (mov r8, r8) + 800072c: 46bd mov sp, r7 + 800072e: b00b add sp, #44 @ 0x2c + 8000730: bd90 pop {r4, r7, pc} + 8000732: 46c0 nop @ (mov r8, r8) + 8000734: 40021000 .word 0x40021000 + 8000738: 50000800 .word 0x50000800 + 800073c: 00000501 .word 0x00000501 + 8000740: 50000400 .word 0x50000400 + 8000744: 00000407 .word 0x00000407 -080006f8 : +08000748 : return ch; } bool has_received_data; void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c) { - 80006f8: b580 push {r7, lr} - 80006fa: b082 sub sp, #8 - 80006fc: af00 add r7, sp, #0 - 80006fe: 6078 str r0, [r7, #4] + 8000748: b580 push {r7, lr} + 800074a: b082 sub sp, #8 + 800074c: af00 add r7, sp, #0 + 800074e: 6078 str r0, [r7, #4] i2c_register = 0; - 8000700: 4b06 ldr r3, [pc, #24] @ (800071c ) - 8000702: 2200 movs r2, #0 - 8000704: 701a strb r2, [r3, #0] + 8000750: 4b06 ldr r3, [pc, #24] @ (800076c ) + 8000752: 2200 movs r2, #0 + 8000754: 701a strb r2, [r3, #0] has_received_data = false; - 8000706: 4b06 ldr r3, [pc, #24] @ (8000720 ) - 8000708: 2200 movs r2, #0 - 800070a: 701a strb r2, [r3, #0] + 8000756: 4b06 ldr r3, [pc, #24] @ (8000770 ) + 8000758: 2200 movs r2, #0 + 800075a: 701a strb r2, [r3, #0] HAL_I2C_EnableListen_IT(hi2c); - 800070c: 687b ldr r3, [r7, #4] - 800070e: 0018 movs r0, r3 - 8000710: f001 fa3e bl 8001b90 + 800075c: 687b ldr r3, [r7, #4] + 800075e: 0018 movs r0, r3 + 8000760: f001 fa4c bl 8001bfc } - 8000714: 46c0 nop @ (mov r8, r8) - 8000716: 46bd mov sp, r7 - 8000718: b002 add sp, #8 - 800071a: bd80 pop {r7, pc} - 800071c: 2000002c .word 0x2000002c - 8000720: 20000128 .word 0x20000128 + 8000764: 46c0 nop @ (mov r8, r8) + 8000766: 46bd mov sp, r7 + 8000768: b002 add sp, #8 + 800076a: bd80 pop {r7, pc} + 800076c: 2000002c .word 0x2000002c + 8000770: 20000128 .word 0x20000128 -08000724 : +08000774 : void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode) { - 8000724: b580 push {r7, lr} - 8000726: b082 sub sp, #8 - 8000728: af00 add r7, sp, #0 - 800072a: 6078 str r0, [r7, #4] - 800072c: 0008 movs r0, r1 - 800072e: 0011 movs r1, r2 - 8000730: 1cfb adds r3, r7, #3 - 8000732: 1c02 adds r2, r0, #0 - 8000734: 701a strb r2, [r3, #0] - 8000736: 003b movs r3, r7 - 8000738: 1c0a adds r2, r1, #0 - 800073a: 801a strh r2, [r3, #0] + 8000774: b580 push {r7, lr} + 8000776: b082 sub sp, #8 + 8000778: af00 add r7, sp, #0 + 800077a: 6078 str r0, [r7, #4] + 800077c: 0008 movs r0, r1 + 800077e: 0011 movs r1, r2 + 8000780: 1cfb adds r3, r7, #3 + 8000782: 1c02 adds r2, r0, #0 + 8000784: 701a strb r2, [r3, #0] + 8000786: 003b movs r3, r7 + 8000788: 1c0a adds r2, r1, #0 + 800078a: 801a strh r2, [r3, #0] if (TransferDirection == I2C_DIRECTION_TRANSMIT) { - 800073c: 1cfb adds r3, r7, #3 - 800073e: 781b ldrb r3, [r3, #0] - 8000740: 2b00 cmp r3, #0 - 8000742: d107 bne.n 8000754 + 800078c: 1cfb adds r3, r7, #3 + 800078e: 781b ldrb r3, [r3, #0] + 8000790: 2b00 cmp r3, #0 + 8000792: d107 bne.n 80007a4 HAL_I2C_Slave_Seq_Receive_IT(hi2c, &i2c_register, 1, I2C_NEXT_FRAME); - 8000744: 2380 movs r3, #128 @ 0x80 - 8000746: 045b lsls r3, r3, #17 - 8000748: 4905 ldr r1, [pc, #20] @ (8000760 ) - 800074a: 6878 ldr r0, [r7, #4] - 800074c: 2201 movs r2, #1 - 800074e: f001 f95d bl 8001a0c + 8000794: 2380 movs r3, #128 @ 0x80 + 8000796: 045b lsls r3, r3, #17 + 8000798: 4905 ldr r1, [pc, #20] @ (80007b0 ) + 800079a: 6878 ldr r0, [r7, #4] + 800079c: 2201 movs r2, #1 + 800079e: f001 f96b bl 8001a78 } else { send_register(); } } - 8000752: e001 b.n 8000758 + 80007a2: e001 b.n 80007a8 send_register(); - 8000754: f000 f806 bl 8000764 + 80007a4: f000 f806 bl 80007b4 } - 8000758: 46c0 nop @ (mov r8, r8) - 800075a: 46bd mov sp, r7 - 800075c: b002 add sp, #8 - 800075e: bd80 pop {r7, pc} - 8000760: 2000002c .word 0x2000002c + 80007a8: 46c0 nop @ (mov r8, r8) + 80007aa: 46bd mov sp, r7 + 80007ac: b002 add sp, #8 + 80007ae: bd80 pop {r7, pc} + 80007b0: 2000002c .word 0x2000002c -08000764 : +080007b4 : uint8_t send_data[2]; void send_register(void) { - 8000764: b580 push {r7, lr} - 8000766: af00 add r7, sp, #0 + 80007b4: b580 push {r7, lr} + 80007b6: af00 add r7, sp, #0 switch (i2c_register) { - 8000768: 4b35 ldr r3, [pc, #212] @ (8000840 ) - 800076a: 781b ldrb r3, [r3, #0] - 800076c: 2b08 cmp r3, #8 - 800076e: d862 bhi.n 8000836 - 8000770: 009a lsls r2, r3, #2 - 8000772: 4b34 ldr r3, [pc, #208] @ (8000844 ) - 8000774: 18d3 adds r3, r2, r3 - 8000776: 681b ldr r3, [r3, #0] - 8000778: 469f mov pc, r3 + 80007b8: 4b35 ldr r3, [pc, #212] @ (8000890 ) + 80007ba: 781b ldrb r3, [r3, #0] + 80007bc: 2b08 cmp r3, #8 + 80007be: d862 bhi.n 8000886 + 80007c0: 009a lsls r2, r3, #2 + 80007c2: 4b34 ldr r3, [pc, #208] @ (8000894 ) + 80007c4: 18d3 adds r3, r2, r3 + 80007c6: 681b ldr r3, [r3, #0] + 80007c8: 469f mov pc, r3 case I2C_REGISTER_DELTA: HAL_I2C_Slave_Seq_Transmit_IT(&hi2c1, &delta, 1, I2C_NEXT_FRAME); - 800077a: 2380 movs r3, #128 @ 0x80 - 800077c: 045b lsls r3, r3, #17 - 800077e: 4932 ldr r1, [pc, #200] @ (8000848 ) - 8000780: 4832 ldr r0, [pc, #200] @ (800084c ) - 8000782: 2201 movs r2, #1 - 8000784: f001 f882 bl 800188c + 80007ca: 2380 movs r3, #128 @ 0x80 + 80007cc: 045b lsls r3, r3, #17 + 80007ce: 4932 ldr r1, [pc, #200] @ (8000898 ) + 80007d0: 4832 ldr r0, [pc, #200] @ (800089c ) + 80007d2: 2201 movs r2, #1 + 80007d4: f001 f890 bl 80018f8 break; - 8000788: e056 b.n 8000838 + 80007d8: e056 b.n 8000888 case I2C_REGISTER_WIRES: HAL_I2C_Slave_Seq_Transmit_IT(&hi2c1, &wires, 1, I2C_NEXT_FRAME); - 800078a: 2380 movs r3, #128 @ 0x80 - 800078c: 045b lsls r3, r3, #17 - 800078e: 4930 ldr r1, [pc, #192] @ (8000850 ) - 8000790: 482e ldr r0, [pc, #184] @ (800084c ) - 8000792: 2201 movs r2, #1 - 8000794: f001 f87a bl 800188c + 80007da: 2380 movs r3, #128 @ 0x80 + 80007dc: 045b lsls r3, r3, #17 + 80007de: 4930 ldr r1, [pc, #192] @ (80008a0 ) + 80007e0: 482e ldr r0, [pc, #184] @ (800089c ) + 80007e2: 2201 movs r2, #1 + 80007e4: f001 f888 bl 80018f8 delta &= ~(1 << DELTA_BIT_WIRES); - 8000798: 4b2b ldr r3, [pc, #172] @ (8000848 ) - 800079a: 781b ldrb r3, [r3, #0] - 800079c: 2201 movs r2, #1 - 800079e: 4393 bics r3, r2 - 80007a0: b2da uxtb r2, r3 - 80007a2: 4b29 ldr r3, [pc, #164] @ (8000848 ) - 80007a4: 701a strb r2, [r3, #0] + 80007e8: 4b2b ldr r3, [pc, #172] @ (8000898 ) + 80007ea: 781b ldrb r3, [r3, #0] + 80007ec: 2201 movs r2, #1 + 80007ee: 4393 bics r3, r2 + 80007f0: b2da uxtb r2, r3 + 80007f2: 4b29 ldr r3, [pc, #164] @ (8000898 ) + 80007f4: 701a strb r2, [r3, #0] break; - 80007a6: e047 b.n 8000838 + 80007f6: e047 b.n 8000888 case I2C_REGISTER_BUTTON: HAL_I2C_Slave_Seq_Transmit_IT(&hi2c1, &button, 1, I2C_NEXT_FRAME); - 80007a8: 2380 movs r3, #128 @ 0x80 - 80007aa: 045b lsls r3, r3, #17 - 80007ac: 4929 ldr r1, [pc, #164] @ (8000854 ) - 80007ae: 4827 ldr r0, [pc, #156] @ (800084c ) - 80007b0: 2201 movs r2, #1 - 80007b2: f001 f86b bl 800188c + 80007f8: 2380 movs r3, #128 @ 0x80 + 80007fa: 045b lsls r3, r3, #17 + 80007fc: 4929 ldr r1, [pc, #164] @ (80008a4 ) + 80007fe: 4827 ldr r0, [pc, #156] @ (800089c ) + 8000800: 2201 movs r2, #1 + 8000802: f001 f879 bl 80018f8 delta &= ~(1 << DELTA_BIT_BUTTON); - 80007b6: 4b24 ldr r3, [pc, #144] @ (8000848 ) - 80007b8: 781b ldrb r3, [r3, #0] - 80007ba: 2202 movs r2, #2 - 80007bc: 4393 bics r3, r2 - 80007be: b2da uxtb r2, r3 - 80007c0: 4b21 ldr r3, [pc, #132] @ (8000848 ) - 80007c2: 701a strb r2, [r3, #0] + 8000806: 4b24 ldr r3, [pc, #144] @ (8000898 ) + 8000808: 781b ldrb r3, [r3, #0] + 800080a: 2202 movs r2, #2 + 800080c: 4393 bics r3, r2 + 800080e: b2da uxtb r2, r3 + 8000810: 4b21 ldr r3, [pc, #132] @ (8000898 ) + 8000812: 701a strb r2, [r3, #0] break; - 80007c4: e038 b.n 8000838 + 8000814: e038 b.n 8000888 case I2C_REGISTER_RELAY_BUZZ: HAL_I2C_Slave_Seq_Transmit_IT(&hi2c1, &relay_buzz, 1, I2C_NEXT_FRAME); - 80007c6: 2380 movs r3, #128 @ 0x80 - 80007c8: 045b lsls r3, r3, #17 - 80007ca: 4923 ldr r1, [pc, #140] @ (8000858 ) - 80007cc: 481f ldr r0, [pc, #124] @ (800084c ) - 80007ce: 2201 movs r2, #1 - 80007d0: f001 f85c bl 800188c + 8000816: 2380 movs r3, #128 @ 0x80 + 8000818: 045b lsls r3, r3, #17 + 800081a: 4923 ldr r1, [pc, #140] @ (80008a8 ) + 800081c: 481f ldr r0, [pc, #124] @ (800089c ) + 800081e: 2201 movs r2, #1 + 8000820: f001 f86a bl 80018f8 break; - 80007d4: e030 b.n 8000838 + 8000824: e030 b.n 8000888 case I2C_REGISTER_LED: HAL_I2C_Slave_Seq_Transmit_IT(&hi2c1, &leds, 1, I2C_NEXT_FRAME); - 80007d6: 2380 movs r3, #128 @ 0x80 - 80007d8: 045b lsls r3, r3, #17 - 80007da: 4920 ldr r1, [pc, #128] @ (800085c ) - 80007dc: 481b ldr r0, [pc, #108] @ (800084c ) - 80007de: 2201 movs r2, #1 - 80007e0: f001 f854 bl 800188c - break; - 80007e4: e028 b.n 8000838 - case I2C_REGISTER_STRIKE_BUZZ_LEN: - send_data[0] = strike_buzz_len & 0xFF; - 80007e6: 4b1e ldr r3, [pc, #120] @ (8000860 ) - 80007e8: 881b ldrh r3, [r3, #0] - 80007ea: b2da uxtb r2, r3 - 80007ec: 4b1d ldr r3, [pc, #116] @ (8000864 ) - 80007ee: 701a strb r2, [r3, #0] - send_data[1] = strike_buzz_len >> 8; - 80007f0: 4b1b ldr r3, [pc, #108] @ (8000860 ) - 80007f2: 881b ldrh r3, [r3, #0] - 80007f4: 0a1b lsrs r3, r3, #8 - 80007f6: b29b uxth r3, r3 - 80007f8: b2da uxtb r2, r3 - 80007fa: 4b1a ldr r3, [pc, #104] @ (8000864 ) - 80007fc: 705a strb r2, [r3, #1] - HAL_I2C_Slave_Seq_Transmit_IT(&hi2c1, send_data, 2, I2C_NEXT_FRAME); - 80007fe: 2380 movs r3, #128 @ 0x80 - 8000800: 045b lsls r3, r3, #17 - 8000802: 4918 ldr r1, [pc, #96] @ (8000864 ) - 8000804: 4811 ldr r0, [pc, #68] @ (800084c ) - 8000806: 2202 movs r2, #2 - 8000808: f001 f840 bl 800188c - break; - 800080c: e014 b.n 8000838 - case I2C_REGISTER_STRIKE_RELAY_LEN: - send_data[0] = strike_relay_len & 0xFF; - 800080e: 4b16 ldr r3, [pc, #88] @ (8000868 ) - 8000810: 881b ldrh r3, [r3, #0] - 8000812: b2da uxtb r2, r3 - 8000814: 4b13 ldr r3, [pc, #76] @ (8000864 ) - 8000816: 701a strb r2, [r3, #0] - send_data[1] = strike_relay_len >> 8; - 8000818: 4b13 ldr r3, [pc, #76] @ (8000868 ) - 800081a: 881b ldrh r3, [r3, #0] - 800081c: 0a1b lsrs r3, r3, #8 - 800081e: b29b uxth r3, r3 - 8000820: b2da uxtb r2, r3 - 8000822: 4b10 ldr r3, [pc, #64] @ (8000864 ) - 8000824: 705a strb r2, [r3, #1] - HAL_I2C_Slave_Seq_Transmit_IT(&hi2c1, send_data, 2, I2C_NEXT_FRAME); 8000826: 2380 movs r3, #128 @ 0x80 8000828: 045b lsls r3, r3, #17 - 800082a: 490e ldr r1, [pc, #56] @ (8000864 ) - 800082c: 4807 ldr r0, [pc, #28] @ (800084c ) - 800082e: 2202 movs r2, #2 - 8000830: f001 f82c bl 800188c + 800082a: 4920 ldr r1, [pc, #128] @ (80008ac ) + 800082c: 481b ldr r0, [pc, #108] @ (800089c ) + 800082e: 2201 movs r2, #1 + 8000830: f001 f862 bl 80018f8 break; - 8000834: e000 b.n 8000838 + 8000834: e028 b.n 8000888 + case I2C_REGISTER_STRIKE_BUZZ_LEN: + send_data[0] = strike_buzz_len & 0xFF; + 8000836: 4b1e ldr r3, [pc, #120] @ (80008b0 ) + 8000838: 881b ldrh r3, [r3, #0] + 800083a: b2da uxtb r2, r3 + 800083c: 4b1d ldr r3, [pc, #116] @ (80008b4 ) + 800083e: 701a strb r2, [r3, #0] + send_data[1] = strike_buzz_len >> 8; + 8000840: 4b1b ldr r3, [pc, #108] @ (80008b0 ) + 8000842: 881b ldrh r3, [r3, #0] + 8000844: 0a1b lsrs r3, r3, #8 + 8000846: b29b uxth r3, r3 + 8000848: b2da uxtb r2, r3 + 800084a: 4b1a ldr r3, [pc, #104] @ (80008b4 ) + 800084c: 705a strb r2, [r3, #1] + HAL_I2C_Slave_Seq_Transmit_IT(&hi2c1, send_data, 2, I2C_NEXT_FRAME); + 800084e: 2380 movs r3, #128 @ 0x80 + 8000850: 045b lsls r3, r3, #17 + 8000852: 4918 ldr r1, [pc, #96] @ (80008b4 ) + 8000854: 4811 ldr r0, [pc, #68] @ (800089c ) + 8000856: 2202 movs r2, #2 + 8000858: f001 f84e bl 80018f8 + break; + 800085c: e014 b.n 8000888 + case I2C_REGISTER_STRIKE_RELAY_LEN: + send_data[0] = strike_relay_len & 0xFF; + 800085e: 4b16 ldr r3, [pc, #88] @ (80008b8 ) + 8000860: 881b ldrh r3, [r3, #0] + 8000862: b2da uxtb r2, r3 + 8000864: 4b13 ldr r3, [pc, #76] @ (80008b4 ) + 8000866: 701a strb r2, [r3, #0] + send_data[1] = strike_relay_len >> 8; + 8000868: 4b13 ldr r3, [pc, #76] @ (80008b8 ) + 800086a: 881b ldrh r3, [r3, #0] + 800086c: 0a1b lsrs r3, r3, #8 + 800086e: b29b uxth r3, r3 + 8000870: b2da uxtb r2, r3 + 8000872: 4b10 ldr r3, [pc, #64] @ (80008b4 ) + 8000874: 705a strb r2, [r3, #1] + HAL_I2C_Slave_Seq_Transmit_IT(&hi2c1, send_data, 2, I2C_NEXT_FRAME); + 8000876: 2380 movs r3, #128 @ 0x80 + 8000878: 045b lsls r3, r3, #17 + 800087a: 490e ldr r1, [pc, #56] @ (80008b4 ) + 800087c: 4807 ldr r0, [pc, #28] @ (800089c ) + 800087e: 2202 movs r2, #2 + 8000880: f001 f83a bl 80018f8 + break; + 8000884: e000 b.n 8000888 default: break; - 8000836: 46c0 nop @ (mov r8, r8) + 8000886: 46c0 nop @ (mov r8, r8) } } - 8000838: 46c0 nop @ (mov r8, r8) - 800083a: 46bd mov sp, r7 - 800083c: bd80 pop {r7, pc} - 800083e: 46c0 nop @ (mov r8, r8) - 8000840: 2000002c .word 0x2000002c - 8000844: 08004af8 .word 0x08004af8 - 8000848: 20000119 .word 0x20000119 - 800084c: 20000030 .word 0x20000030 - 8000850: 2000011b .word 0x2000011b - 8000854: 2000011d .word 0x2000011d - 8000858: 2000011f .word 0x2000011f - 800085c: 20000121 .word 0x20000121 - 8000860: 20000000 .word 0x20000000 - 8000864: 2000012c .word 0x2000012c - 8000868: 20000002 .word 0x20000002 + 8000888: 46c0 nop @ (mov r8, r8) + 800088a: 46bd mov sp, r7 + 800088c: bd80 pop {r7, pc} + 800088e: 46c0 nop @ (mov r8, r8) + 8000890: 2000002c .word 0x2000002c + 8000894: 08004b64 .word 0x08004b64 + 8000898: 20000119 .word 0x20000119 + 800089c: 20000030 .word 0x20000030 + 80008a0: 2000011b .word 0x2000011b + 80008a4: 2000011d .word 0x2000011d + 80008a8: 2000011f .word 0x2000011f + 80008ac: 20000121 .word 0x20000121 + 80008b0: 20000000 .word 0x20000000 + 80008b4: 2000012c .word 0x2000012c + 80008b8: 20000002 .word 0x20000002 -0800086c : +080008bc : uint8_t recv_data[2]; void recv_register(void) { - 800086c: b580 push {r7, lr} - 800086e: af00 add r7, sp, #0 + 80008bc: b580 push {r7, lr} + 80008be: af00 add r7, sp, #0 switch (i2c_register) { - 8000870: 4b19 ldr r3, [pc, #100] @ (80008d8 ) - 8000872: 781b ldrb r3, [r3, #0] - 8000874: 2b08 cmp r3, #8 - 8000876: d020 beq.n 80008ba - 8000878: dc27 bgt.n 80008ca - 800087a: 2b07 cmp r3, #7 - 800087c: d015 beq.n 80008aa - 800087e: dc24 bgt.n 80008ca - 8000880: 2b04 cmp r3, #4 - 8000882: d002 beq.n 800088a - 8000884: 2b05 cmp r3, #5 - 8000886: d008 beq.n 800089a + 80008c0: 4b19 ldr r3, [pc, #100] @ (8000928 ) + 80008c2: 781b ldrb r3, [r3, #0] + 80008c4: 2b08 cmp r3, #8 + 80008c6: d020 beq.n 800090a + 80008c8: dc27 bgt.n 800091a + 80008ca: 2b07 cmp r3, #7 + 80008cc: d015 beq.n 80008fa + 80008ce: dc24 bgt.n 800091a + 80008d0: 2b04 cmp r3, #4 + 80008d2: d002 beq.n 80008da + 80008d4: 2b05 cmp r3, #5 + 80008d6: d008 beq.n 80008ea break; case I2C_REGISTER_STRIKE_RELAY_LEN: HAL_I2C_Slave_Seq_Receive_IT(&hi2c1, recv_data, 2, I2C_NEXT_FRAME); break; default: break; - 8000888: e01f b.n 80008ca + 80008d8: e01f b.n 800091a HAL_I2C_Slave_Seq_Receive_IT(&hi2c1, &relay_buzz, 1, I2C_NEXT_FRAME); - 800088a: 2380 movs r3, #128 @ 0x80 - 800088c: 045b lsls r3, r3, #17 - 800088e: 4913 ldr r1, [pc, #76] @ (80008dc ) - 8000890: 4813 ldr r0, [pc, #76] @ (80008e0 ) - 8000892: 2201 movs r2, #1 - 8000894: f001 f8ba bl 8001a0c + 80008da: 2380 movs r3, #128 @ 0x80 + 80008dc: 045b lsls r3, r3, #17 + 80008de: 4913 ldr r1, [pc, #76] @ (800092c ) + 80008e0: 4813 ldr r0, [pc, #76] @ (8000930 ) + 80008e2: 2201 movs r2, #1 + 80008e4: f001 f8c8 bl 8001a78 break; - 8000898: e018 b.n 80008cc + 80008e8: e018 b.n 800091c HAL_I2C_Slave_Seq_Receive_IT(&hi2c1, &leds, 1, I2C_NEXT_FRAME); - 800089a: 2380 movs r3, #128 @ 0x80 - 800089c: 045b lsls r3, r3, #17 - 800089e: 4911 ldr r1, [pc, #68] @ (80008e4 ) - 80008a0: 480f ldr r0, [pc, #60] @ (80008e0 ) - 80008a2: 2201 movs r2, #1 - 80008a4: f001 f8b2 bl 8001a0c + 80008ea: 2380 movs r3, #128 @ 0x80 + 80008ec: 045b lsls r3, r3, #17 + 80008ee: 4911 ldr r1, [pc, #68] @ (8000934 ) + 80008f0: 480f ldr r0, [pc, #60] @ (8000930 ) + 80008f2: 2201 movs r2, #1 + 80008f4: f001 f8c0 bl 8001a78 break; - 80008a8: e010 b.n 80008cc + 80008f8: e010 b.n 800091c HAL_I2C_Slave_Seq_Receive_IT(&hi2c1, recv_data, 2, I2C_NEXT_FRAME); - 80008aa: 2380 movs r3, #128 @ 0x80 - 80008ac: 045b lsls r3, r3, #17 - 80008ae: 490e ldr r1, [pc, #56] @ (80008e8 ) - 80008b0: 480b ldr r0, [pc, #44] @ (80008e0 ) - 80008b2: 2202 movs r2, #2 - 80008b4: f001 f8aa bl 8001a0c + 80008fa: 2380 movs r3, #128 @ 0x80 + 80008fc: 045b lsls r3, r3, #17 + 80008fe: 490e ldr r1, [pc, #56] @ (8000938 ) + 8000900: 480b ldr r0, [pc, #44] @ (8000930 ) + 8000902: 2202 movs r2, #2 + 8000904: f001 f8b8 bl 8001a78 break; - 80008b8: e008 b.n 80008cc + 8000908: e008 b.n 800091c HAL_I2C_Slave_Seq_Receive_IT(&hi2c1, recv_data, 2, I2C_NEXT_FRAME); - 80008ba: 2380 movs r3, #128 @ 0x80 - 80008bc: 045b lsls r3, r3, #17 - 80008be: 490a ldr r1, [pc, #40] @ (80008e8 ) - 80008c0: 4807 ldr r0, [pc, #28] @ (80008e0 ) - 80008c2: 2202 movs r2, #2 - 80008c4: f001 f8a2 bl 8001a0c + 800090a: 2380 movs r3, #128 @ 0x80 + 800090c: 045b lsls r3, r3, #17 + 800090e: 490a ldr r1, [pc, #40] @ (8000938 ) + 8000910: 4807 ldr r0, [pc, #28] @ (8000930 ) + 8000912: 2202 movs r2, #2 + 8000914: f001 f8b0 bl 8001a78 break; - 80008c8: e000 b.n 80008cc + 8000918: e000 b.n 800091c break; - 80008ca: 46c0 nop @ (mov r8, r8) + 800091a: 46c0 nop @ (mov r8, r8) } has_received_data = true; - 80008cc: 4b07 ldr r3, [pc, #28] @ (80008ec ) - 80008ce: 2201 movs r2, #1 - 80008d0: 701a strb r2, [r3, #0] + 800091c: 4b07 ldr r3, [pc, #28] @ (800093c ) + 800091e: 2201 movs r2, #1 + 8000920: 701a strb r2, [r3, #0] } - 80008d2: 46c0 nop @ (mov r8, r8) - 80008d4: 46bd mov sp, r7 - 80008d6: bd80 pop {r7, pc} - 80008d8: 2000002c .word 0x2000002c - 80008dc: 2000011f .word 0x2000011f - 80008e0: 20000030 .word 0x20000030 - 80008e4: 20000121 .word 0x20000121 - 80008e8: 20000130 .word 0x20000130 - 80008ec: 20000128 .word 0x20000128 + 8000922: 46c0 nop @ (mov r8, r8) + 8000924: 46bd mov sp, r7 + 8000926: bd80 pop {r7, pc} + 8000928: 2000002c .word 0x2000002c + 800092c: 2000011f .word 0x2000011f + 8000930: 20000030 .word 0x20000030 + 8000934: 20000121 .word 0x20000121 + 8000938: 20000130 .word 0x20000130 + 800093c: 20000128 .word 0x20000128 -080008f0 : +08000940 : void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c) { - 80008f0: b580 push {r7, lr} - 80008f2: b082 sub sp, #8 - 80008f4: af00 add r7, sp, #0 - 80008f6: 6078 str r0, [r7, #4] + 8000940: b580 push {r7, lr} + 8000942: b082 sub sp, #8 + 8000944: af00 add r7, sp, #0 + 8000946: 6078 str r0, [r7, #4] if (i2c_register == I2C_REGISTER_ISSUE_STRIKE) { - 80008f8: 4b1f ldr r3, [pc, #124] @ (8000978 ) - 80008fa: 781b ldrb r3, [r3, #0] - 80008fc: 2b06 cmp r3, #6 - 80008fe: d102 bne.n 8000906 + 8000948: 4b1f ldr r3, [pc, #124] @ (80009c8 ) + 800094a: 781b ldrb r3, [r3, #0] + 800094c: 2b06 cmp r3, #6 + 800094e: d102 bne.n 8000956 strike_issued = true; - 8000900: 4b1e ldr r3, [pc, #120] @ (800097c ) - 8000902: 2201 movs r2, #1 - 8000904: 701a strb r2, [r3, #0] + 8000950: 4b1e ldr r3, [pc, #120] @ (80009cc ) + 8000952: 2201 movs r2, #1 + 8000954: 701a strb r2, [r3, #0] } if (has_received_data) { - 8000906: 4b1e ldr r3, [pc, #120] @ (8000980 ) - 8000908: 781b ldrb r3, [r3, #0] - 800090a: 2b00 cmp r3, #0 - 800090c: d02d beq.n 800096a + 8000956: 4b1e ldr r3, [pc, #120] @ (80009d0 ) + 8000958: 781b ldrb r3, [r3, #0] + 800095a: 2b00 cmp r3, #0 + 800095c: d02d beq.n 80009ba has_received_data = false; - 800090e: 4b1c ldr r3, [pc, #112] @ (8000980 ) - 8000910: 2200 movs r2, #0 - 8000912: 701a strb r2, [r3, #0] + 800095e: 4b1c ldr r3, [pc, #112] @ (80009d0 ) + 8000960: 2200 movs r2, #0 + 8000962: 701a strb r2, [r3, #0] // reconstruct anything that needs to be reconstructed switch (i2c_register) { - 8000914: 4b18 ldr r3, [pc, #96] @ (8000978 ) - 8000916: 781b ldrb r3, [r3, #0] - 8000918: 2b07 cmp r3, #7 - 800091a: d002 beq.n 8000922 - 800091c: 2b08 cmp r3, #8 - 800091e: d012 beq.n 8000946 + 8000964: 4b18 ldr r3, [pc, #96] @ (80009c8 ) + 8000966: 781b ldrb r3, [r3, #0] + 8000968: 2b07 cmp r3, #7 + 800096a: d002 beq.n 8000972 + 800096c: 2b08 cmp r3, #8 + 800096e: d012 beq.n 8000996 case I2C_REGISTER_STRIKE_RELAY_LEN: strike_relay_len = recv_data[0]; strike_relay_len |= ((uint16_t) recv_data[1]) << 8; break; default: break; - 8000920: e026 b.n 8000970 + 8000970: e026 b.n 80009c0 strike_buzz_len = recv_data[0]; - 8000922: 4b18 ldr r3, [pc, #96] @ (8000984 ) - 8000924: 781b ldrb r3, [r3, #0] - 8000926: 001a movs r2, r3 - 8000928: 4b17 ldr r3, [pc, #92] @ (8000988 ) - 800092a: 801a strh r2, [r3, #0] + 8000972: 4b18 ldr r3, [pc, #96] @ (80009d4 ) + 8000974: 781b ldrb r3, [r3, #0] + 8000976: 001a movs r2, r3 + 8000978: 4b17 ldr r3, [pc, #92] @ (80009d8 ) + 800097a: 801a strh r2, [r3, #0] strike_buzz_len |= ((uint16_t) recv_data[1]) << 8; - 800092c: 4b15 ldr r3, [pc, #84] @ (8000984 ) - 800092e: 785b ldrb r3, [r3, #1] - 8000930: 021b lsls r3, r3, #8 - 8000932: b21a sxth r2, r3 - 8000934: 4b14 ldr r3, [pc, #80] @ (8000988 ) - 8000936: 881b ldrh r3, [r3, #0] - 8000938: b21b sxth r3, r3 - 800093a: 4313 orrs r3, r2 - 800093c: b21b sxth r3, r3 - 800093e: b29a uxth r2, r3 - 8000940: 4b11 ldr r3, [pc, #68] @ (8000988 ) - 8000942: 801a strh r2, [r3, #0] + 800097c: 4b15 ldr r3, [pc, #84] @ (80009d4 ) + 800097e: 785b ldrb r3, [r3, #1] + 8000980: 021b lsls r3, r3, #8 + 8000982: b21a sxth r2, r3 + 8000984: 4b14 ldr r3, [pc, #80] @ (80009d8 ) + 8000986: 881b ldrh r3, [r3, #0] + 8000988: b21b sxth r3, r3 + 800098a: 4313 orrs r3, r2 + 800098c: b21b sxth r3, r3 + 800098e: b29a uxth r2, r3 + 8000990: 4b11 ldr r3, [pc, #68] @ (80009d8 ) + 8000992: 801a strh r2, [r3, #0] break; - 8000944: e014 b.n 8000970 + 8000994: e014 b.n 80009c0 strike_relay_len = recv_data[0]; - 8000946: 4b0f ldr r3, [pc, #60] @ (8000984 ) - 8000948: 781b ldrb r3, [r3, #0] - 800094a: 001a movs r2, r3 - 800094c: 4b0f ldr r3, [pc, #60] @ (800098c ) - 800094e: 801a strh r2, [r3, #0] + 8000996: 4b0f ldr r3, [pc, #60] @ (80009d4 ) + 8000998: 781b ldrb r3, [r3, #0] + 800099a: 001a movs r2, r3 + 800099c: 4b0f ldr r3, [pc, #60] @ (80009dc ) + 800099e: 801a strh r2, [r3, #0] strike_relay_len |= ((uint16_t) recv_data[1]) << 8; - 8000950: 4b0c ldr r3, [pc, #48] @ (8000984 ) - 8000952: 785b ldrb r3, [r3, #1] - 8000954: 021b lsls r3, r3, #8 - 8000956: b21a sxth r2, r3 - 8000958: 4b0c ldr r3, [pc, #48] @ (800098c ) - 800095a: 881b ldrh r3, [r3, #0] - 800095c: b21b sxth r3, r3 - 800095e: 4313 orrs r3, r2 - 8000960: b21b sxth r3, r3 - 8000962: b29a uxth r2, r3 - 8000964: 4b09 ldr r3, [pc, #36] @ (800098c ) - 8000966: 801a strh r2, [r3, #0] + 80009a0: 4b0c ldr r3, [pc, #48] @ (80009d4 ) + 80009a2: 785b ldrb r3, [r3, #1] + 80009a4: 021b lsls r3, r3, #8 + 80009a6: b21a sxth r2, r3 + 80009a8: 4b0c ldr r3, [pc, #48] @ (80009dc ) + 80009aa: 881b ldrh r3, [r3, #0] + 80009ac: b21b sxth r3, r3 + 80009ae: 4313 orrs r3, r2 + 80009b0: b21b sxth r3, r3 + 80009b2: b29a uxth r2, r3 + 80009b4: 4b09 ldr r3, [pc, #36] @ (80009dc ) + 80009b6: 801a strh r2, [r3, #0] break; - 8000968: e002 b.n 8000970 + 80009b8: e002 b.n 80009c0 } } else { recv_register(); - 800096a: f7ff ff7f bl 800086c + 80009ba: f7ff ff7f bl 80008bc } } - 800096e: 46c0 nop @ (mov r8, r8) - 8000970: 46c0 nop @ (mov r8, r8) - 8000972: 46bd mov sp, r7 - 8000974: b002 add sp, #8 - 8000976: bd80 pop {r7, pc} - 8000978: 2000002c .word 0x2000002c - 800097c: 20000122 .word 0x20000122 - 8000980: 20000128 .word 0x20000128 - 8000984: 20000130 .word 0x20000130 - 8000988: 20000000 .word 0x20000000 - 800098c: 20000002 .word 0x20000002 + 80009be: 46c0 nop @ (mov r8, r8) + 80009c0: 46c0 nop @ (mov r8, r8) + 80009c2: 46bd mov sp, r7 + 80009c4: b002 add sp, #8 + 80009c6: bd80 pop {r7, pc} + 80009c8: 2000002c .word 0x2000002c + 80009cc: 20000122 .word 0x20000122 + 80009d0: 20000128 .word 0x20000128 + 80009d4: 20000130 .word 0x20000130 + 80009d8: 20000000 .word 0x20000000 + 80009dc: 20000002 .word 0x20000002 -08000990 : +080009e0 : void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c) { - 8000990: b580 push {r7, lr} - 8000992: b082 sub sp, #8 - 8000994: af00 add r7, sp, #0 - 8000996: 6078 str r0, [r7, #4] + 80009e0: b580 push {r7, lr} + 80009e2: b082 sub sp, #8 + 80009e4: af00 add r7, sp, #0 + 80009e6: 6078 str r0, [r7, #4] } - 8000998: 46c0 nop @ (mov r8, r8) - 800099a: 46bd mov sp, r7 - 800099c: b002 add sp, #8 - 800099e: bd80 pop {r7, pc} + 80009e8: 46c0 nop @ (mov r8, r8) + 80009ea: 46bd mov sp, r7 + 80009ec: b002 add sp, #8 + 80009ee: bd80 pop {r7, pc} -080009a0 : +080009f0 : void scan_wires(void) { - 80009a0: b580 push {r7, lr} - 80009a2: b082 sub sp, #8 - 80009a4: af00 add r7, sp, #0 + 80009f0: b580 push {r7, lr} + 80009f2: b082 sub sp, #8 + 80009f4: af00 add r7, sp, #0 old_wires = wires; - 80009a6: 4b58 ldr r3, [pc, #352] @ (8000b08 ) - 80009a8: 781a ldrb r2, [r3, #0] - 80009aa: 4b58 ldr r3, [pc, #352] @ (8000b0c ) - 80009ac: 701a strb r2, [r3, #0] + 80009f6: 4b58 ldr r3, [pc, #352] @ (8000b58 ) + 80009f8: 781a ldrb r2, [r3, #0] + 80009fa: 4b58 ldr r3, [pc, #352] @ (8000b5c ) + 80009fc: 701a strb r2, [r3, #0] uint8_t new_wires = 0; - 80009ae: 1dfb adds r3, r7, #7 - 80009b0: 2200 movs r2, #0 - 80009b2: 701a strb r2, [r3, #0] + 80009fe: 1dfb adds r3, r7, #7 + 8000a00: 2200 movs r2, #0 + 8000a02: 701a strb r2, [r3, #0] new_wires |= (HAL_GPIO_ReadPin(WIRE1_GPIO_Port, WIRE1_Pin) == GPIO_PIN_RESET) << 0; - 80009b4: 2380 movs r3, #128 @ 0x80 - 80009b6: 00db lsls r3, r3, #3 - 80009b8: 4a55 ldr r2, [pc, #340] @ (8000b10 ) - 80009ba: 0019 movs r1, r3 - 80009bc: 0010 movs r0, r2 - 80009be: f000 fe85 bl 80016cc - 80009c2: 0003 movs r3, r0 - 80009c4: 425a negs r2, r3 - 80009c6: 4153 adcs r3, r2 - 80009c8: b2db uxtb r3, r3 - 80009ca: b25a sxtb r2, r3 - 80009cc: 1dfb adds r3, r7, #7 - 80009ce: 781b ldrb r3, [r3, #0] - 80009d0: b25b sxtb r3, r3 - 80009d2: 4313 orrs r3, r2 - 80009d4: b25a sxtb r2, r3 - 80009d6: 1dfb adds r3, r7, #7 - 80009d8: 701a strb r2, [r3, #0] + 8000a04: 2380 movs r3, #128 @ 0x80 + 8000a06: 00db lsls r3, r3, #3 + 8000a08: 4a55 ldr r2, [pc, #340] @ (8000b60 ) + 8000a0a: 0019 movs r1, r3 + 8000a0c: 0010 movs r0, r2 + 8000a0e: f000 fe93 bl 8001738 + 8000a12: 0003 movs r3, r0 + 8000a14: 425a negs r2, r3 + 8000a16: 4153 adcs r3, r2 + 8000a18: b2db uxtb r3, r3 + 8000a1a: b25a sxtb r2, r3 + 8000a1c: 1dfb adds r3, r7, #7 + 8000a1e: 781b ldrb r3, [r3, #0] + 8000a20: b25b sxtb r3, r3 + 8000a22: 4313 orrs r3, r2 + 8000a24: b25a sxtb r2, r3 + 8000a26: 1dfb adds r3, r7, #7 + 8000a28: 701a strb r2, [r3, #0] new_wires |= (HAL_GPIO_ReadPin(WIRE2_GPIO_Port, WIRE2_Pin) == GPIO_PIN_RESET) << 1; - 80009da: 4b4d ldr r3, [pc, #308] @ (8000b10 ) - 80009dc: 2104 movs r1, #4 - 80009de: 0018 movs r0, r3 - 80009e0: f000 fe74 bl 80016cc - 80009e4: 1e03 subs r3, r0, #0 - 80009e6: d101 bne.n 80009ec - 80009e8: 2302 movs r3, #2 - 80009ea: e000 b.n 80009ee - 80009ec: 2300 movs r3, #0 - 80009ee: b25a sxtb r2, r3 - 80009f0: 1dfb adds r3, r7, #7 - 80009f2: 781b ldrb r3, [r3, #0] - 80009f4: b25b sxtb r3, r3 - 80009f6: 4313 orrs r3, r2 - 80009f8: b25a sxtb r2, r3 - 80009fa: 1dfb adds r3, r7, #7 - 80009fc: 701a strb r2, [r3, #0] + 8000a2a: 4b4d ldr r3, [pc, #308] @ (8000b60 ) + 8000a2c: 2104 movs r1, #4 + 8000a2e: 0018 movs r0, r3 + 8000a30: f000 fe82 bl 8001738 + 8000a34: 1e03 subs r3, r0, #0 + 8000a36: d101 bne.n 8000a3c + 8000a38: 2302 movs r3, #2 + 8000a3a: e000 b.n 8000a3e + 8000a3c: 2300 movs r3, #0 + 8000a3e: b25a sxtb r2, r3 + 8000a40: 1dfb adds r3, r7, #7 + 8000a42: 781b ldrb r3, [r3, #0] + 8000a44: b25b sxtb r3, r3 + 8000a46: 4313 orrs r3, r2 + 8000a48: b25a sxtb r2, r3 + 8000a4a: 1dfb adds r3, r7, #7 + 8000a4c: 701a strb r2, [r3, #0] new_wires |= (HAL_GPIO_ReadPin(WIRE3_GPIO_Port, WIRE3_Pin) == GPIO_PIN_RESET) << 2; - 80009fe: 4b44 ldr r3, [pc, #272] @ (8000b10 ) - 8000a00: 2102 movs r1, #2 - 8000a02: 0018 movs r0, r3 - 8000a04: f000 fe62 bl 80016cc - 8000a08: 1e03 subs r3, r0, #0 - 8000a0a: d101 bne.n 8000a10 - 8000a0c: 2304 movs r3, #4 - 8000a0e: e000 b.n 8000a12 - 8000a10: 2300 movs r3, #0 - 8000a12: b25a sxtb r2, r3 - 8000a14: 1dfb adds r3, r7, #7 - 8000a16: 781b ldrb r3, [r3, #0] - 8000a18: b25b sxtb r3, r3 - 8000a1a: 4313 orrs r3, r2 - 8000a1c: b25a sxtb r2, r3 - 8000a1e: 1dfb adds r3, r7, #7 - 8000a20: 701a strb r2, [r3, #0] + 8000a4e: 4b44 ldr r3, [pc, #272] @ (8000b60 ) + 8000a50: 2102 movs r1, #2 + 8000a52: 0018 movs r0, r3 + 8000a54: f000 fe70 bl 8001738 + 8000a58: 1e03 subs r3, r0, #0 + 8000a5a: d101 bne.n 8000a60 + 8000a5c: 2304 movs r3, #4 + 8000a5e: e000 b.n 8000a62 + 8000a60: 2300 movs r3, #0 + 8000a62: b25a sxtb r2, r3 + 8000a64: 1dfb adds r3, r7, #7 + 8000a66: 781b ldrb r3, [r3, #0] + 8000a68: b25b sxtb r3, r3 + 8000a6a: 4313 orrs r3, r2 + 8000a6c: b25a sxtb r2, r3 + 8000a6e: 1dfb adds r3, r7, #7 + 8000a70: 701a strb r2, [r3, #0] new_wires |= (HAL_GPIO_ReadPin(WIRE4_GPIO_Port, WIRE4_Pin) == GPIO_PIN_RESET) << 3; - 8000a22: 4b3b ldr r3, [pc, #236] @ (8000b10 ) - 8000a24: 2101 movs r1, #1 - 8000a26: 0018 movs r0, r3 - 8000a28: f000 fe50 bl 80016cc - 8000a2c: 1e03 subs r3, r0, #0 - 8000a2e: d101 bne.n 8000a34 - 8000a30: 2308 movs r3, #8 - 8000a32: e000 b.n 8000a36 - 8000a34: 2300 movs r3, #0 - 8000a36: b25a sxtb r2, r3 - 8000a38: 1dfb adds r3, r7, #7 - 8000a3a: 781b ldrb r3, [r3, #0] - 8000a3c: b25b sxtb r3, r3 - 8000a3e: 4313 orrs r3, r2 - 8000a40: b25a sxtb r2, r3 - 8000a42: 1dfb adds r3, r7, #7 - 8000a44: 701a strb r2, [r3, #0] + 8000a72: 4b3b ldr r3, [pc, #236] @ (8000b60 ) + 8000a74: 2101 movs r1, #1 + 8000a76: 0018 movs r0, r3 + 8000a78: f000 fe5e bl 8001738 + 8000a7c: 1e03 subs r3, r0, #0 + 8000a7e: d101 bne.n 8000a84 + 8000a80: 2308 movs r3, #8 + 8000a82: e000 b.n 8000a86 + 8000a84: 2300 movs r3, #0 + 8000a86: b25a sxtb r2, r3 + 8000a88: 1dfb adds r3, r7, #7 + 8000a8a: 781b ldrb r3, [r3, #0] + 8000a8c: b25b sxtb r3, r3 + 8000a8e: 4313 orrs r3, r2 + 8000a90: b25a sxtb r2, r3 + 8000a92: 1dfb adds r3, r7, #7 + 8000a94: 701a strb r2, [r3, #0] new_wires |= (HAL_GPIO_ReadPin(WIRE5_GPIO_Port, WIRE5_Pin) == GPIO_PIN_RESET) << 4; - 8000a46: 23a0 movs r3, #160 @ 0xa0 - 8000a48: 05db lsls r3, r3, #23 - 8000a4a: 2180 movs r1, #128 @ 0x80 - 8000a4c: 0018 movs r0, r3 - 8000a4e: f000 fe3d bl 80016cc - 8000a52: 1e03 subs r3, r0, #0 - 8000a54: d101 bne.n 8000a5a - 8000a56: 2310 movs r3, #16 - 8000a58: e000 b.n 8000a5c - 8000a5a: 2300 movs r3, #0 - 8000a5c: b25a sxtb r2, r3 - 8000a5e: 1dfb adds r3, r7, #7 - 8000a60: 781b ldrb r3, [r3, #0] - 8000a62: b25b sxtb r3, r3 - 8000a64: 4313 orrs r3, r2 - 8000a66: b25a sxtb r2, r3 - 8000a68: 1dfb adds r3, r7, #7 - 8000a6a: 701a strb r2, [r3, #0] + 8000a96: 23a0 movs r3, #160 @ 0xa0 + 8000a98: 05db lsls r3, r3, #23 + 8000a9a: 2180 movs r1, #128 @ 0x80 + 8000a9c: 0018 movs r0, r3 + 8000a9e: f000 fe4b bl 8001738 + 8000aa2: 1e03 subs r3, r0, #0 + 8000aa4: d101 bne.n 8000aaa + 8000aa6: 2310 movs r3, #16 + 8000aa8: e000 b.n 8000aac + 8000aaa: 2300 movs r3, #0 + 8000aac: b25a sxtb r2, r3 + 8000aae: 1dfb adds r3, r7, #7 + 8000ab0: 781b ldrb r3, [r3, #0] + 8000ab2: b25b sxtb r3, r3 + 8000ab4: 4313 orrs r3, r2 + 8000ab6: b25a sxtb r2, r3 + 8000ab8: 1dfb adds r3, r7, #7 + 8000aba: 701a strb r2, [r3, #0] new_wires |= (HAL_GPIO_ReadPin(WIRE6_GPIO_Port, WIRE6_Pin) == GPIO_PIN_RESET) << 5; - 8000a6c: 23a0 movs r3, #160 @ 0xa0 - 8000a6e: 05db lsls r3, r3, #23 - 8000a70: 2140 movs r1, #64 @ 0x40 - 8000a72: 0018 movs r0, r3 - 8000a74: f000 fe2a bl 80016cc - 8000a78: 1e03 subs r3, r0, #0 - 8000a7a: d101 bne.n 8000a80 - 8000a7c: 2320 movs r3, #32 - 8000a7e: e000 b.n 8000a82 - 8000a80: 2300 movs r3, #0 - 8000a82: b25a sxtb r2, r3 - 8000a84: 1dfb adds r3, r7, #7 - 8000a86: 781b ldrb r3, [r3, #0] - 8000a88: b25b sxtb r3, r3 - 8000a8a: 4313 orrs r3, r2 - 8000a8c: b25a sxtb r2, r3 - 8000a8e: 1dfb adds r3, r7, #7 - 8000a90: 701a strb r2, [r3, #0] + 8000abc: 23a0 movs r3, #160 @ 0xa0 + 8000abe: 05db lsls r3, r3, #23 + 8000ac0: 2140 movs r1, #64 @ 0x40 + 8000ac2: 0018 movs r0, r3 + 8000ac4: f000 fe38 bl 8001738 + 8000ac8: 1e03 subs r3, r0, #0 + 8000aca: d101 bne.n 8000ad0 + 8000acc: 2320 movs r3, #32 + 8000ace: e000 b.n 8000ad2 + 8000ad0: 2300 movs r3, #0 + 8000ad2: b25a sxtb r2, r3 + 8000ad4: 1dfb adds r3, r7, #7 + 8000ad6: 781b ldrb r3, [r3, #0] + 8000ad8: b25b sxtb r3, r3 + 8000ada: 4313 orrs r3, r2 + 8000adc: b25a sxtb r2, r3 + 8000ade: 1dfb adds r3, r7, #7 + 8000ae0: 701a strb r2, [r3, #0] new_wires |= (HAL_GPIO_ReadPin(WIRE7_GPIO_Port, WIRE7_Pin) == GPIO_PIN_RESET) << 6; - 8000a92: 23a0 movs r3, #160 @ 0xa0 - 8000a94: 05db lsls r3, r3, #23 - 8000a96: 2120 movs r1, #32 - 8000a98: 0018 movs r0, r3 - 8000a9a: f000 fe17 bl 80016cc - 8000a9e: 1e03 subs r3, r0, #0 - 8000aa0: d101 bne.n 8000aa6 - 8000aa2: 2340 movs r3, #64 @ 0x40 - 8000aa4: e000 b.n 8000aa8 - 8000aa6: 2300 movs r3, #0 - 8000aa8: b25a sxtb r2, r3 - 8000aaa: 1dfb adds r3, r7, #7 - 8000aac: 781b ldrb r3, [r3, #0] - 8000aae: b25b sxtb r3, r3 - 8000ab0: 4313 orrs r3, r2 - 8000ab2: b25a sxtb r2, r3 - 8000ab4: 1dfb adds r3, r7, #7 - 8000ab6: 701a strb r2, [r3, #0] + 8000ae2: 23a0 movs r3, #160 @ 0xa0 + 8000ae4: 05db lsls r3, r3, #23 + 8000ae6: 2120 movs r1, #32 + 8000ae8: 0018 movs r0, r3 + 8000aea: f000 fe25 bl 8001738 + 8000aee: 1e03 subs r3, r0, #0 + 8000af0: d101 bne.n 8000af6 + 8000af2: 2340 movs r3, #64 @ 0x40 + 8000af4: e000 b.n 8000af8 + 8000af6: 2300 movs r3, #0 + 8000af8: b25a sxtb r2, r3 + 8000afa: 1dfb adds r3, r7, #7 + 8000afc: 781b ldrb r3, [r3, #0] + 8000afe: b25b sxtb r3, r3 + 8000b00: 4313 orrs r3, r2 + 8000b02: b25a sxtb r2, r3 + 8000b04: 1dfb adds r3, r7, #7 + 8000b06: 701a strb r2, [r3, #0] new_wires |= (HAL_GPIO_ReadPin(WIRE8_GPIO_Port, WIRE8_Pin) == GPIO_PIN_RESET) << 7; - 8000ab8: 23a0 movs r3, #160 @ 0xa0 - 8000aba: 05db lsls r3, r3, #23 - 8000abc: 2110 movs r1, #16 - 8000abe: 0018 movs r0, r3 - 8000ac0: f000 fe04 bl 80016cc - 8000ac4: 1e03 subs r3, r0, #0 - 8000ac6: d101 bne.n 8000acc - 8000ac8: 2380 movs r3, #128 @ 0x80 - 8000aca: e000 b.n 8000ace - 8000acc: 2300 movs r3, #0 - 8000ace: b25a sxtb r2, r3 - 8000ad0: 1dfb adds r3, r7, #7 - 8000ad2: 781b ldrb r3, [r3, #0] - 8000ad4: b25b sxtb r3, r3 - 8000ad6: 4313 orrs r3, r2 - 8000ad8: b25a sxtb r2, r3 - 8000ada: 1dfb adds r3, r7, #7 - 8000adc: 701a strb r2, [r3, #0] + 8000b08: 23a0 movs r3, #160 @ 0xa0 + 8000b0a: 05db lsls r3, r3, #23 + 8000b0c: 2110 movs r1, #16 + 8000b0e: 0018 movs r0, r3 + 8000b10: f000 fe12 bl 8001738 + 8000b14: 1e03 subs r3, r0, #0 + 8000b16: d101 bne.n 8000b1c + 8000b18: 2380 movs r3, #128 @ 0x80 + 8000b1a: e000 b.n 8000b1e + 8000b1c: 2300 movs r3, #0 + 8000b1e: b25a sxtb r2, r3 + 8000b20: 1dfb adds r3, r7, #7 + 8000b22: 781b ldrb r3, [r3, #0] + 8000b24: b25b sxtb r3, r3 + 8000b26: 4313 orrs r3, r2 + 8000b28: b25a sxtb r2, r3 + 8000b2a: 1dfb adds r3, r7, #7 + 8000b2c: 701a strb r2, [r3, #0] wires = new_wires; - 8000ade: 4b0a ldr r3, [pc, #40] @ (8000b08 ) - 8000ae0: 1dfa adds r2, r7, #7 - 8000ae2: 7812 ldrb r2, [r2, #0] - 8000ae4: 701a strb r2, [r3, #0] + 8000b2e: 4b0a ldr r3, [pc, #40] @ (8000b58 ) + 8000b30: 1dfa adds r2, r7, #7 + 8000b32: 7812 ldrb r2, [r2, #0] + 8000b34: 701a strb r2, [r3, #0] if (wires != old_wires) { - 8000ae6: 4b08 ldr r3, [pc, #32] @ (8000b08 ) - 8000ae8: 781a ldrb r2, [r3, #0] - 8000aea: 4b08 ldr r3, [pc, #32] @ (8000b0c ) - 8000aec: 781b ldrb r3, [r3, #0] - 8000aee: 429a cmp r2, r3 - 8000af0: d006 beq.n 8000b00 + 8000b36: 4b08 ldr r3, [pc, #32] @ (8000b58 ) + 8000b38: 781a ldrb r2, [r3, #0] + 8000b3a: 4b08 ldr r3, [pc, #32] @ (8000b5c ) + 8000b3c: 781b ldrb r3, [r3, #0] + 8000b3e: 429a cmp r2, r3 + 8000b40: d006 beq.n 8000b50 delta |= 1 << DELTA_BIT_WIRES; - 8000af2: 4b08 ldr r3, [pc, #32] @ (8000b14 ) - 8000af4: 781b ldrb r3, [r3, #0] - 8000af6: 2201 movs r2, #1 - 8000af8: 4313 orrs r3, r2 - 8000afa: b2da uxtb r2, r3 - 8000afc: 4b05 ldr r3, [pc, #20] @ (8000b14 ) - 8000afe: 701a strb r2, [r3, #0] + 8000b42: 4b08 ldr r3, [pc, #32] @ (8000b64 ) + 8000b44: 781b ldrb r3, [r3, #0] + 8000b46: 2201 movs r2, #1 + 8000b48: 4313 orrs r3, r2 + 8000b4a: b2da uxtb r2, r3 + 8000b4c: 4b05 ldr r3, [pc, #20] @ (8000b64 ) + 8000b4e: 701a strb r2, [r3, #0] } } - 8000b00: 46c0 nop @ (mov r8, r8) - 8000b02: 46bd mov sp, r7 - 8000b04: b002 add sp, #8 - 8000b06: bd80 pop {r7, pc} - 8000b08: 2000011b .word 0x2000011b - 8000b0c: 2000011a .word 0x2000011a - 8000b10: 50000400 .word 0x50000400 - 8000b14: 20000119 .word 0x20000119 + 8000b50: 46c0 nop @ (mov r8, r8) + 8000b52: 46bd mov sp, r7 + 8000b54: b002 add sp, #8 + 8000b56: bd80 pop {r7, pc} + 8000b58: 2000011b .word 0x2000011b + 8000b5c: 2000011a .word 0x2000011a + 8000b60: 50000400 .word 0x50000400 + 8000b64: 20000119 .word 0x20000119 -08000b18 : +08000b68 : void scan_button(void) { - 8000b18: b580 push {r7, lr} - 8000b1a: af00 add r7, sp, #0 + 8000b68: b580 push {r7, lr} + 8000b6a: af00 add r7, sp, #0 old_button = button; - 8000b1c: 4b11 ldr r3, [pc, #68] @ (8000b64 ) - 8000b1e: 781a ldrb r2, [r3, #0] - 8000b20: 4b11 ldr r3, [pc, #68] @ (8000b68 ) - 8000b22: 701a strb r2, [r3, #0] + 8000b6c: 4b11 ldr r3, [pc, #68] @ (8000bb4 ) + 8000b6e: 781a ldrb r2, [r3, #0] + 8000b70: 4b11 ldr r3, [pc, #68] @ (8000bb8 ) + 8000b72: 701a strb r2, [r3, #0] button = HAL_GPIO_ReadPin(HELP_BTN_GPIO_Port, HELP_BTN_Pin) == GPIO_PIN_RESET; - 8000b24: 2380 movs r3, #128 @ 0x80 - 8000b26: 005a lsls r2, r3, #1 - 8000b28: 23a0 movs r3, #160 @ 0xa0 - 8000b2a: 05db lsls r3, r3, #23 - 8000b2c: 0011 movs r1, r2 - 8000b2e: 0018 movs r0, r3 - 8000b30: f000 fdcc bl 80016cc - 8000b34: 0003 movs r3, r0 - 8000b36: 425a negs r2, r3 - 8000b38: 4153 adcs r3, r2 - 8000b3a: b2db uxtb r3, r3 - 8000b3c: 001a movs r2, r3 - 8000b3e: 4b09 ldr r3, [pc, #36] @ (8000b64 ) - 8000b40: 701a strb r2, [r3, #0] + 8000b74: 2380 movs r3, #128 @ 0x80 + 8000b76: 005a lsls r2, r3, #1 + 8000b78: 23a0 movs r3, #160 @ 0xa0 + 8000b7a: 05db lsls r3, r3, #23 + 8000b7c: 0011 movs r1, r2 + 8000b7e: 0018 movs r0, r3 + 8000b80: f000 fdda bl 8001738 + 8000b84: 0003 movs r3, r0 + 8000b86: 425a negs r2, r3 + 8000b88: 4153 adcs r3, r2 + 8000b8a: b2db uxtb r3, r3 + 8000b8c: 001a movs r2, r3 + 8000b8e: 4b09 ldr r3, [pc, #36] @ (8000bb4 ) + 8000b90: 701a strb r2, [r3, #0] if (button != old_button) { - 8000b42: 4b08 ldr r3, [pc, #32] @ (8000b64 ) - 8000b44: 781a ldrb r2, [r3, #0] - 8000b46: 4b08 ldr r3, [pc, #32] @ (8000b68 ) - 8000b48: 781b ldrb r3, [r3, #0] - 8000b4a: 429a cmp r2, r3 - 8000b4c: d006 beq.n 8000b5c + 8000b92: 4b08 ldr r3, [pc, #32] @ (8000bb4 ) + 8000b94: 781a ldrb r2, [r3, #0] + 8000b96: 4b08 ldr r3, [pc, #32] @ (8000bb8 ) + 8000b98: 781b ldrb r3, [r3, #0] + 8000b9a: 429a cmp r2, r3 + 8000b9c: d006 beq.n 8000bac delta |= 1 << DELTA_BIT_BUTTON; - 8000b4e: 4b07 ldr r3, [pc, #28] @ (8000b6c ) - 8000b50: 781b ldrb r3, [r3, #0] - 8000b52: 2202 movs r2, #2 - 8000b54: 4313 orrs r3, r2 - 8000b56: b2da uxtb r2, r3 - 8000b58: 4b04 ldr r3, [pc, #16] @ (8000b6c ) - 8000b5a: 701a strb r2, [r3, #0] + 8000b9e: 4b07 ldr r3, [pc, #28] @ (8000bbc ) + 8000ba0: 781b ldrb r3, [r3, #0] + 8000ba2: 2202 movs r2, #2 + 8000ba4: 4313 orrs r3, r2 + 8000ba6: b2da uxtb r2, r3 + 8000ba8: 4b04 ldr r3, [pc, #16] @ (8000bbc ) + 8000baa: 701a strb r2, [r3, #0] } } - 8000b5c: 46c0 nop @ (mov r8, r8) - 8000b5e: 46bd mov sp, r7 - 8000b60: bd80 pop {r7, pc} - 8000b62: 46c0 nop @ (mov r8, r8) - 8000b64: 2000011d .word 0x2000011d - 8000b68: 2000011c .word 0x2000011c - 8000b6c: 20000119 .word 0x20000119 + 8000bac: 46c0 nop @ (mov r8, r8) + 8000bae: 46bd mov sp, r7 + 8000bb0: bd80 pop {r7, pc} + 8000bb2: 46c0 nop @ (mov r8, r8) + 8000bb4: 2000011d .word 0x2000011d + 8000bb8: 2000011c .word 0x2000011c + 8000bbc: 20000119 .word 0x20000119 -08000b70 : +08000bc0 : void set_relay_buzz(void) { - 8000b70: b580 push {r7, lr} - 8000b72: af00 add r7, sp, #0 + 8000bc0: b580 push {r7, lr} + 8000bc2: af00 add r7, sp, #0 if (relay_buzz != old_relay_buzz) { - 8000b74: 4b12 ldr r3, [pc, #72] @ (8000bc0 ) - 8000b76: 781a ldrb r2, [r3, #0] - 8000b78: 4b12 ldr r3, [pc, #72] @ (8000bc4 ) - 8000b7a: 781b ldrb r3, [r3, #0] - 8000b7c: 429a cmp r2, r3 - 8000b7e: d01b beq.n 8000bb8 + 8000bc4: 4b18 ldr r3, [pc, #96] @ (8000c28 ) + 8000bc6: 781a ldrb r2, [r3, #0] + 8000bc8: 4b18 ldr r3, [pc, #96] @ (8000c2c ) + 8000bca: 781b ldrb r3, [r3, #0] + 8000bcc: 429a cmp r2, r3 + 8000bce: d028 beq.n 8000c22 old_relay_buzz = relay_buzz; - 8000b80: 4b0f ldr r3, [pc, #60] @ (8000bc0 ) - 8000b82: 781a ldrb r2, [r3, #0] - 8000b84: 4b0f ldr r3, [pc, #60] @ (8000bc4 ) - 8000b86: 701a strb r2, [r3, #0] + 8000bd0: 4b15 ldr r3, [pc, #84] @ (8000c28 ) + 8000bd2: 781a ldrb r2, [r3, #0] + 8000bd4: 4b15 ldr r3, [pc, #84] @ (8000c2c ) + 8000bd6: 701a strb r2, [r3, #0] HAL_GPIO_WritePin(BUZZ_GPIO_Port, BUZZ_Pin, (relay_buzz >> BUZZ_BIT_IDX) & 1); - 8000b88: 4b0d ldr r3, [pc, #52] @ (8000bc0 ) - 8000b8a: 781b ldrb r3, [r3, #0] - 8000b8c: 2201 movs r2, #1 - 8000b8e: 4013 ands r3, r2 - 8000b90: b2da uxtb r2, r3 - 8000b92: 2380 movs r3, #128 @ 0x80 - 8000b94: 019b lsls r3, r3, #6 - 8000b96: 480c ldr r0, [pc, #48] @ (8000bc8 ) - 8000b98: 0019 movs r1, r3 - 8000b9a: f000 fdb4 bl 8001706 - HAL_GPIO_WritePin(RELAY_GPIO_Port, RELAY_Pin, (relay_buzz >> RELAY_BIT_IDX) & 1); - 8000b9e: 4b08 ldr r3, [pc, #32] @ (8000bc0 ) - 8000ba0: 781b ldrb r3, [r3, #0] - 8000ba2: 085b lsrs r3, r3, #1 - 8000ba4: b2db uxtb r3, r3 - 8000ba6: 2201 movs r2, #1 - 8000ba8: 4013 ands r3, r2 - 8000baa: b2da uxtb r2, r3 - 8000bac: 2380 movs r3, #128 @ 0x80 - 8000bae: 021b lsls r3, r3, #8 - 8000bb0: 4805 ldr r0, [pc, #20] @ (8000bc8 ) - 8000bb2: 0019 movs r1, r3 - 8000bb4: f000 fda7 bl 8001706 + 8000bd8: 4b13 ldr r3, [pc, #76] @ (8000c28 ) + 8000bda: 781b ldrb r3, [r3, #0] + 8000bdc: 2201 movs r2, #1 + 8000bde: 4013 ands r3, r2 + 8000be0: b2da uxtb r2, r3 + 8000be2: 2380 movs r3, #128 @ 0x80 + 8000be4: 021b lsls r3, r3, #8 + 8000be6: 4812 ldr r0, [pc, #72] @ (8000c30 ) + 8000be8: 0019 movs r1, r3 + 8000bea: f000 fdc2 bl 8001772 + HAL_GPIO_WritePin(RELAY1_GPIO_Port, RELAY1_Pin, (relay_buzz >> RELAY_BIT_IDX) & 1); + 8000bee: 4b0e ldr r3, [pc, #56] @ (8000c28 ) + 8000bf0: 781b ldrb r3, [r3, #0] + 8000bf2: 085b lsrs r3, r3, #1 + 8000bf4: b2db uxtb r3, r3 + 8000bf6: 2201 movs r2, #1 + 8000bf8: 4013 ands r3, r2 + 8000bfa: b2da uxtb r2, r3 + 8000bfc: 2380 movs r3, #128 @ 0x80 + 8000bfe: 019b lsls r3, r3, #6 + 8000c00: 480b ldr r0, [pc, #44] @ (8000c30 ) + 8000c02: 0019 movs r1, r3 + 8000c04: f000 fdb5 bl 8001772 + HAL_GPIO_WritePin(RELAY2_GPIO_Port, RELAY2_Pin, (relay_buzz >> RELAY_BIT_IDX) & 1); + 8000c08: 4b07 ldr r3, [pc, #28] @ (8000c28 ) + 8000c0a: 781b ldrb r3, [r3, #0] + 8000c0c: 085b lsrs r3, r3, #1 + 8000c0e: b2db uxtb r3, r3 + 8000c10: 2201 movs r2, #1 + 8000c12: 4013 ands r3, r2 + 8000c14: b2da uxtb r2, r3 + 8000c16: 2380 movs r3, #128 @ 0x80 + 8000c18: 01db lsls r3, r3, #7 + 8000c1a: 4805 ldr r0, [pc, #20] @ (8000c30 ) + 8000c1c: 0019 movs r1, r3 + 8000c1e: f000 fda8 bl 8001772 } } - 8000bb8: 46c0 nop @ (mov r8, r8) - 8000bba: 46bd mov sp, r7 - 8000bbc: bd80 pop {r7, pc} - 8000bbe: 46c0 nop @ (mov r8, r8) - 8000bc0: 2000011f .word 0x2000011f - 8000bc4: 2000011e .word 0x2000011e - 8000bc8: 50000400 .word 0x50000400 + 8000c22: 46c0 nop @ (mov r8, r8) + 8000c24: 46bd mov sp, r7 + 8000c26: bd80 pop {r7, pc} + 8000c28: 2000011f .word 0x2000011f + 8000c2c: 2000011e .word 0x2000011e + 8000c30: 50000400 .word 0x50000400 -08000bcc : +08000c34 : void set_leds(void) { - 8000bcc: b580 push {r7, lr} - 8000bce: af00 add r7, sp, #0 + 8000c34: b580 push {r7, lr} + 8000c36: af00 add r7, sp, #0 if (leds != old_leds) { - 8000bd0: 4b1f ldr r3, [pc, #124] @ (8000c50 ) - 8000bd2: 781a ldrb r2, [r3, #0] - 8000bd4: 4b1f ldr r3, [pc, #124] @ (8000c54 ) - 8000bd6: 781b ldrb r3, [r3, #0] - 8000bd8: 429a cmp r2, r3 - 8000bda: d035 beq.n 8000c48 + 8000c38: 4b1f ldr r3, [pc, #124] @ (8000cb8 ) + 8000c3a: 781a ldrb r2, [r3, #0] + 8000c3c: 4b1f ldr r3, [pc, #124] @ (8000cbc ) + 8000c3e: 781b ldrb r3, [r3, #0] + 8000c40: 429a cmp r2, r3 + 8000c42: d035 beq.n 8000cb0 old_leds = leds; - 8000bdc: 4b1c ldr r3, [pc, #112] @ (8000c50 ) - 8000bde: 781a ldrb r2, [r3, #0] - 8000be0: 4b1c ldr r3, [pc, #112] @ (8000c54 ) - 8000be2: 701a strb r2, [r3, #0] + 8000c44: 4b1c ldr r3, [pc, #112] @ (8000cb8 ) + 8000c46: 781a ldrb r2, [r3, #0] + 8000c48: 4b1c ldr r3, [pc, #112] @ (8000cbc ) + 8000c4a: 701a strb r2, [r3, #0] HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, (leds >> 0) & 1); - 8000be4: 4b1a ldr r3, [pc, #104] @ (8000c50 ) - 8000be6: 781b ldrb r3, [r3, #0] - 8000be8: 2201 movs r2, #1 - 8000bea: 4013 ands r3, r2 - 8000bec: b2da uxtb r2, r3 - 8000bee: 2380 movs r3, #128 @ 0x80 - 8000bf0: 005b lsls r3, r3, #1 - 8000bf2: 4819 ldr r0, [pc, #100] @ (8000c58 ) - 8000bf4: 0019 movs r1, r3 - 8000bf6: f000 fd86 bl 8001706 + 8000c4c: 4b1a ldr r3, [pc, #104] @ (8000cb8 ) + 8000c4e: 781b ldrb r3, [r3, #0] + 8000c50: 2201 movs r2, #1 + 8000c52: 4013 ands r3, r2 + 8000c54: b2da uxtb r2, r3 + 8000c56: 2380 movs r3, #128 @ 0x80 + 8000c58: 009b lsls r3, r3, #2 + 8000c5a: 4819 ldr r0, [pc, #100] @ (8000cc0 ) + 8000c5c: 0019 movs r1, r3 + 8000c5e: f000 fd88 bl 8001772 HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, (leds >> 1) & 1); - 8000bfa: 4b15 ldr r3, [pc, #84] @ (8000c50 ) - 8000bfc: 781b ldrb r3, [r3, #0] - 8000bfe: 085b lsrs r3, r3, #1 - 8000c00: b2db uxtb r3, r3 - 8000c02: 2201 movs r2, #1 - 8000c04: 4013 ands r3, r2 - 8000c06: b2da uxtb r2, r3 - 8000c08: 2380 movs r3, #128 @ 0x80 - 8000c0a: 009b lsls r3, r3, #2 - 8000c0c: 4812 ldr r0, [pc, #72] @ (8000c58 ) - 8000c0e: 0019 movs r1, r3 - 8000c10: f000 fd79 bl 8001706 + 8000c62: 4b15 ldr r3, [pc, #84] @ (8000cb8 ) + 8000c64: 781b ldrb r3, [r3, #0] + 8000c66: 085b lsrs r3, r3, #1 + 8000c68: b2db uxtb r3, r3 + 8000c6a: 2201 movs r2, #1 + 8000c6c: 4013 ands r3, r2 + 8000c6e: b2da uxtb r2, r3 + 8000c70: 2380 movs r3, #128 @ 0x80 + 8000c72: 019b lsls r3, r3, #6 + 8000c74: 4813 ldr r0, [pc, #76] @ (8000cc4 ) + 8000c76: 0019 movs r1, r3 + 8000c78: f000 fd7b bl 8001772 HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, (leds >> 2) & 1); - 8000c14: 4b0e ldr r3, [pc, #56] @ (8000c50 ) - 8000c16: 781b ldrb r3, [r3, #0] - 8000c18: 089b lsrs r3, r3, #2 - 8000c1a: b2db uxtb r3, r3 - 8000c1c: 2201 movs r2, #1 - 8000c1e: 4013 ands r3, r2 - 8000c20: b2da uxtb r2, r3 - 8000c22: 23a0 movs r3, #160 @ 0xa0 - 8000c24: 05db lsls r3, r3, #23 - 8000c26: 2101 movs r1, #1 - 8000c28: 0018 movs r0, r3 - 8000c2a: f000 fd6c bl 8001706 + 8000c7c: 4b0e ldr r3, [pc, #56] @ (8000cb8 ) + 8000c7e: 781b ldrb r3, [r3, #0] + 8000c80: 089b lsrs r3, r3, #2 + 8000c82: b2db uxtb r3, r3 + 8000c84: 2201 movs r2, #1 + 8000c86: 4013 ands r3, r2 + 8000c88: b2da uxtb r2, r3 + 8000c8a: 23a0 movs r3, #160 @ 0xa0 + 8000c8c: 05db lsls r3, r3, #23 + 8000c8e: 2101 movs r1, #1 + 8000c90: 0018 movs r0, r3 + 8000c92: f000 fd6e bl 8001772 HAL_GPIO_WritePin(LED4_GPIO_Port, LED4_Pin, (leds >> 3) & 1); - 8000c2e: 4b08 ldr r3, [pc, #32] @ (8000c50 ) - 8000c30: 781b ldrb r3, [r3, #0] - 8000c32: 08db lsrs r3, r3, #3 - 8000c34: b2db uxtb r3, r3 - 8000c36: 2201 movs r2, #1 - 8000c38: 4013 ands r3, r2 - 8000c3a: b2da uxtb r2, r3 - 8000c3c: 2380 movs r3, #128 @ 0x80 - 8000c3e: 01db lsls r3, r3, #7 - 8000c40: 4805 ldr r0, [pc, #20] @ (8000c58 ) - 8000c42: 0019 movs r1, r3 - 8000c44: f000 fd5f bl 8001706 + 8000c96: 4b08 ldr r3, [pc, #32] @ (8000cb8 ) + 8000c98: 781b ldrb r3, [r3, #0] + 8000c9a: 08db lsrs r3, r3, #3 + 8000c9c: b2db uxtb r3, r3 + 8000c9e: 2201 movs r2, #1 + 8000ca0: 4013 ands r3, r2 + 8000ca2: b2da uxtb r2, r3 + 8000ca4: 2380 movs r3, #128 @ 0x80 + 8000ca6: 005b lsls r3, r3, #1 + 8000ca8: 4805 ldr r0, [pc, #20] @ (8000cc0 ) + 8000caa: 0019 movs r1, r3 + 8000cac: f000 fd61 bl 8001772 } } - 8000c48: 46c0 nop @ (mov r8, r8) - 8000c4a: 46bd mov sp, r7 - 8000c4c: bd80 pop {r7, pc} - 8000c4e: 46c0 nop @ (mov r8, r8) - 8000c50: 20000121 .word 0x20000121 - 8000c54: 20000120 .word 0x20000120 - 8000c58: 50000400 .word 0x50000400 + 8000cb0: 46c0 nop @ (mov r8, r8) + 8000cb2: 46bd mov sp, r7 + 8000cb4: bd80 pop {r7, pc} + 8000cb6: 46c0 nop @ (mov r8, r8) + 8000cb8: 20000121 .word 0x20000121 + 8000cbc: 20000120 .word 0x20000120 + 8000cc0: 50000400 .word 0x50000400 + 8000cc4: 50000800 .word 0x50000800 -08000c5c : +08000cc8 : void send_interupt(void) { - 8000c5c: b580 push {r7, lr} - 8000c5e: af00 add r7, sp, #0 + 8000cc8: b580 push {r7, lr} + 8000cca: af00 add r7, sp, #0 if (delta != old_delta) { - 8000c60: 4b0c ldr r3, [pc, #48] @ (8000c94 ) - 8000c62: 781a ldrb r2, [r3, #0] - 8000c64: 4b0c ldr r3, [pc, #48] @ (8000c98 ) - 8000c66: 781b ldrb r3, [r3, #0] - 8000c68: 429a cmp r2, r3 - 8000c6a: d010 beq.n 8000c8e + 8000ccc: 4b0c ldr r3, [pc, #48] @ (8000d00 ) + 8000cce: 781a ldrb r2, [r3, #0] + 8000cd0: 4b0c ldr r3, [pc, #48] @ (8000d04 ) + 8000cd2: 781b ldrb r3, [r3, #0] + 8000cd4: 429a cmp r2, r3 + 8000cd6: d010 beq.n 8000cfa old_delta = delta; - 8000c6c: 4b09 ldr r3, [pc, #36] @ (8000c94 ) - 8000c6e: 781a ldrb r2, [r3, #0] - 8000c70: 4b09 ldr r3, [pc, #36] @ (8000c98 ) - 8000c72: 701a strb r2, [r3, #0] + 8000cd8: 4b09 ldr r3, [pc, #36] @ (8000d00 ) + 8000cda: 781a ldrb r2, [r3, #0] + 8000cdc: 4b09 ldr r3, [pc, #36] @ (8000d04 ) + 8000cde: 701a strb r2, [r3, #0] HAL_GPIO_WritePin(INT_GPIO_Port, INT_Pin, delta == 0); - 8000c74: 4b07 ldr r3, [pc, #28] @ (8000c94 ) - 8000c76: 781b ldrb r3, [r3, #0] - 8000c78: 425a negs r2, r3 - 8000c7a: 4153 adcs r3, r2 - 8000c7c: b2db uxtb r3, r3 - 8000c7e: 001a movs r2, r3 - 8000c80: 2380 movs r3, #128 @ 0x80 - 8000c82: 00d9 lsls r1, r3, #3 - 8000c84: 23a0 movs r3, #160 @ 0xa0 - 8000c86: 05db lsls r3, r3, #23 - 8000c88: 0018 movs r0, r3 - 8000c8a: f000 fd3c bl 8001706 + 8000ce0: 4b07 ldr r3, [pc, #28] @ (8000d00 ) + 8000ce2: 781b ldrb r3, [r3, #0] + 8000ce4: 425a negs r2, r3 + 8000ce6: 4153 adcs r3, r2 + 8000ce8: b2db uxtb r3, r3 + 8000cea: 001a movs r2, r3 + 8000cec: 2380 movs r3, #128 @ 0x80 + 8000cee: 00d9 lsls r1, r3, #3 + 8000cf0: 23a0 movs r3, #160 @ 0xa0 + 8000cf2: 05db lsls r3, r3, #23 + 8000cf4: 0018 movs r0, r3 + 8000cf6: f000 fd3c bl 8001772 } } - 8000c8e: 46c0 nop @ (mov r8, r8) - 8000c90: 46bd mov sp, r7 - 8000c92: bd80 pop {r7, pc} - 8000c94: 20000119 .word 0x20000119 - 8000c98: 20000118 .word 0x20000118 + 8000cfa: 46c0 nop @ (mov r8, r8) + 8000cfc: 46bd mov sp, r7 + 8000cfe: bd80 pop {r7, pc} + 8000d00: 20000119 .word 0x20000119 + 8000d04: 20000118 .word 0x20000118 -08000c9c : +08000d08 : uint32_t old_tick; void handle_strike(void) { - 8000c9c: b580 push {r7, lr} - 8000c9e: b084 sub sp, #16 - 8000ca0: af00 add r7, sp, #0 + 8000d08: b580 push {r7, lr} + 8000d0a: b084 sub sp, #16 + 8000d0c: af00 add r7, sp, #0 if (strike_issued && (strike_at == 0)) { - 8000ca2: 4b2c ldr r3, [pc, #176] @ (8000d54 ) - 8000ca4: 781b ldrb r3, [r3, #0] - 8000ca6: 2b00 cmp r3, #0 - 8000ca8: d019 beq.n 8000cde - 8000caa: 4b2b ldr r3, [pc, #172] @ (8000d58 ) - 8000cac: 681b ldr r3, [r3, #0] - 8000cae: 2b00 cmp r3, #0 - 8000cb0: d115 bne.n 8000cde + 8000d0e: 4b2c ldr r3, [pc, #176] @ (8000dc0 ) + 8000d10: 781b ldrb r3, [r3, #0] + 8000d12: 2b00 cmp r3, #0 + 8000d14: d019 beq.n 8000d4a + 8000d16: 4b2b ldr r3, [pc, #172] @ (8000dc4 ) + 8000d18: 681b ldr r3, [r3, #0] + 8000d1a: 2b00 cmp r3, #0 + 8000d1c: d115 bne.n 8000d4a strike_issued = false; - 8000cb2: 4b28 ldr r3, [pc, #160] @ (8000d54 ) - 8000cb4: 2200 movs r2, #0 - 8000cb6: 701a strb r2, [r3, #0] + 8000d1e: 4b28 ldr r3, [pc, #160] @ (8000dc0 ) + 8000d20: 2200 movs r2, #0 + 8000d22: 701a strb r2, [r3, #0] strike_at = HAL_GetTick(); - 8000cb8: f000 fa30 bl 800111c - 8000cbc: 0002 movs r2, r0 - 8000cbe: 4b26 ldr r3, [pc, #152] @ (8000d58 ) - 8000cc0: 601a str r2, [r3, #0] + 8000d24: f000 fa30 bl 8001188 + 8000d28: 0002 movs r2, r0 + 8000d2a: 4b26 ldr r3, [pc, #152] @ (8000dc4 ) + 8000d2c: 601a str r2, [r3, #0] // start the buzzer and set the led relay_buzz |= 1 << BUZZ_BIT_IDX; - 8000cc2: 4b26 ldr r3, [pc, #152] @ (8000d5c ) - 8000cc4: 781b ldrb r3, [r3, #0] - 8000cc6: 2201 movs r2, #1 - 8000cc8: 4313 orrs r3, r2 - 8000cca: b2da uxtb r2, r3 - 8000ccc: 4b23 ldr r3, [pc, #140] @ (8000d5c ) - 8000cce: 701a strb r2, [r3, #0] + 8000d2e: 4b26 ldr r3, [pc, #152] @ (8000dc8 ) + 8000d30: 781b ldrb r3, [r3, #0] + 8000d32: 2201 movs r2, #1 + 8000d34: 4313 orrs r3, r2 + 8000d36: b2da uxtb r2, r3 + 8000d38: 4b23 ldr r3, [pc, #140] @ (8000dc8 ) + 8000d3a: 701a strb r2, [r3, #0] leds |= 1 << 3; - 8000cd0: 4b23 ldr r3, [pc, #140] @ (8000d60 ) - 8000cd2: 781b ldrb r3, [r3, #0] - 8000cd4: 2208 movs r2, #8 - 8000cd6: 4313 orrs r3, r2 - 8000cd8: b2da uxtb r2, r3 - 8000cda: 4b21 ldr r3, [pc, #132] @ (8000d60 ) - 8000cdc: 701a strb r2, [r3, #0] + 8000d3c: 4b23 ldr r3, [pc, #140] @ (8000dcc ) + 8000d3e: 781b ldrb r3, [r3, #0] + 8000d40: 2208 movs r2, #8 + 8000d42: 4313 orrs r3, r2 + 8000d44: b2da uxtb r2, r3 + 8000d46: 4b21 ldr r3, [pc, #132] @ (8000dcc ) + 8000d48: 701a strb r2, [r3, #0] } if (strike_at == 0) { - 8000cde: 4b1e ldr r3, [pc, #120] @ (8000d58 ) - 8000ce0: 681b ldr r3, [r3, #0] - 8000ce2: 2b00 cmp r3, #0 - 8000ce4: d031 beq.n 8000d4a + 8000d4a: 4b1e ldr r3, [pc, #120] @ (8000dc4 ) + 8000d4c: 681b ldr r3, [r3, #0] + 8000d4e: 2b00 cmp r3, #0 + 8000d50: d031 beq.n 8000db6 return; } uint32_t now = HAL_GetTick(); - 8000ce6: f000 fa19 bl 800111c - 8000cea: 0003 movs r3, r0 - 8000cec: 60fb str r3, [r7, #12] + 8000d52: f000 fa19 bl 8001188 + 8000d56: 0003 movs r3, r0 + 8000d58: 60fb str r3, [r7, #12] uint32_t buzz_threshold = strike_at + strike_buzz_len; - 8000cee: 4b1d ldr r3, [pc, #116] @ (8000d64 ) - 8000cf0: 881b ldrh r3, [r3, #0] - 8000cf2: 001a movs r2, r3 - 8000cf4: 4b18 ldr r3, [pc, #96] @ (8000d58 ) - 8000cf6: 681b ldr r3, [r3, #0] - 8000cf8: 18d3 adds r3, r2, r3 - 8000cfa: 60bb str r3, [r7, #8] + 8000d5a: 4b1d ldr r3, [pc, #116] @ (8000dd0 ) + 8000d5c: 881b ldrh r3, [r3, #0] + 8000d5e: 001a movs r2, r3 + 8000d60: 4b18 ldr r3, [pc, #96] @ (8000dc4 ) + 8000d62: 681b ldr r3, [r3, #0] + 8000d64: 18d3 adds r3, r2, r3 + 8000d66: 60bb str r3, [r7, #8] if (now > buzz_threshold && old_tick <= buzz_threshold) { - 8000cfc: 68fa ldr r2, [r7, #12] - 8000cfe: 68bb ldr r3, [r7, #8] - 8000d00: 429a cmp r2, r3 - 8000d02: d907 bls.n 8000d14 - 8000d04: 4b18 ldr r3, [pc, #96] @ (8000d68 ) - 8000d06: 681b ldr r3, [r3, #0] - 8000d08: 68ba ldr r2, [r7, #8] - 8000d0a: 429a cmp r2, r3 - 8000d0c: d302 bcc.n 8000d14 + 8000d68: 68fa ldr r2, [r7, #12] + 8000d6a: 68bb ldr r3, [r7, #8] + 8000d6c: 429a cmp r2, r3 + 8000d6e: d907 bls.n 8000d80 + 8000d70: 4b18 ldr r3, [pc, #96] @ (8000dd4 ) + 8000d72: 681b ldr r3, [r3, #0] + 8000d74: 68ba ldr r2, [r7, #8] + 8000d76: 429a cmp r2, r3 + 8000d78: d302 bcc.n 8000d80 // stop buzzing, start the relay relay_buzz = (1 << RELAY_BIT_IDX); - 8000d0e: 4b13 ldr r3, [pc, #76] @ (8000d5c ) - 8000d10: 2202 movs r2, #2 - 8000d12: 701a strb r2, [r3, #0] + 8000d7a: 4b13 ldr r3, [pc, #76] @ (8000dc8 ) + 8000d7c: 2202 movs r2, #2 + 8000d7e: 701a strb r2, [r3, #0] } uint32_t relay_threshold = buzz_threshold + strike_relay_len; - 8000d14: 4b15 ldr r3, [pc, #84] @ (8000d6c ) - 8000d16: 881b ldrh r3, [r3, #0] - 8000d18: 001a movs r2, r3 - 8000d1a: 68bb ldr r3, [r7, #8] - 8000d1c: 189b adds r3, r3, r2 - 8000d1e: 607b str r3, [r7, #4] + 8000d80: 4b15 ldr r3, [pc, #84] @ (8000dd8 ) + 8000d82: 881b ldrh r3, [r3, #0] + 8000d84: 001a movs r2, r3 + 8000d86: 68bb ldr r3, [r7, #8] + 8000d88: 189b adds r3, r3, r2 + 8000d8a: 607b str r3, [r7, #4] if (now > relay_threshold) { - 8000d20: 68fa ldr r2, [r7, #12] - 8000d22: 687b ldr r3, [r7, #4] - 8000d24: 429a cmp r2, r3 - 8000d26: d90c bls.n 8000d42 + 8000d8c: 68fa ldr r2, [r7, #12] + 8000d8e: 687b ldr r3, [r7, #4] + 8000d90: 429a cmp r2, r3 + 8000d92: d90c bls.n 8000dae // stop the strike strike_at = 0; - 8000d28: 4b0b ldr r3, [pc, #44] @ (8000d58 ) - 8000d2a: 2200 movs r2, #0 - 8000d2c: 601a str r2, [r3, #0] + 8000d94: 4b0b ldr r3, [pc, #44] @ (8000dc4 ) + 8000d96: 2200 movs r2, #0 + 8000d98: 601a str r2, [r3, #0] relay_buzz = 0; - 8000d2e: 4b0b ldr r3, [pc, #44] @ (8000d5c ) - 8000d30: 2200 movs r2, #0 - 8000d32: 701a strb r2, [r3, #0] + 8000d9a: 4b0b ldr r3, [pc, #44] @ (8000dc8 ) + 8000d9c: 2200 movs r2, #0 + 8000d9e: 701a strb r2, [r3, #0] leds &= ~(1 << 3); - 8000d34: 4b0a ldr r3, [pc, #40] @ (8000d60 ) - 8000d36: 781b ldrb r3, [r3, #0] - 8000d38: 2208 movs r2, #8 - 8000d3a: 4393 bics r3, r2 - 8000d3c: b2da uxtb r2, r3 - 8000d3e: 4b08 ldr r3, [pc, #32] @ (8000d60 ) - 8000d40: 701a strb r2, [r3, #0] + 8000da0: 4b0a ldr r3, [pc, #40] @ (8000dcc ) + 8000da2: 781b ldrb r3, [r3, #0] + 8000da4: 2208 movs r2, #8 + 8000da6: 4393 bics r3, r2 + 8000da8: b2da uxtb r2, r3 + 8000daa: 4b08 ldr r3, [pc, #32] @ (8000dcc ) + 8000dac: 701a strb r2, [r3, #0] } old_tick = now; - 8000d42: 4b09 ldr r3, [pc, #36] @ (8000d68 ) - 8000d44: 68fa ldr r2, [r7, #12] - 8000d46: 601a str r2, [r3, #0] - 8000d48: e000 b.n 8000d4c + 8000dae: 4b09 ldr r3, [pc, #36] @ (8000dd4 ) + 8000db0: 68fa ldr r2, [r7, #12] + 8000db2: 601a str r2, [r3, #0] + 8000db4: e000 b.n 8000db8 return; - 8000d4a: 46c0 nop @ (mov r8, r8) + 8000db6: 46c0 nop @ (mov r8, r8) } - 8000d4c: 46bd mov sp, r7 - 8000d4e: b004 add sp, #16 - 8000d50: bd80 pop {r7, pc} - 8000d52: 46c0 nop @ (mov r8, r8) - 8000d54: 20000122 .word 0x20000122 - 8000d58: 20000124 .word 0x20000124 - 8000d5c: 2000011f .word 0x2000011f - 8000d60: 20000121 .word 0x20000121 - 8000d64: 20000000 .word 0x20000000 - 8000d68: 20000134 .word 0x20000134 - 8000d6c: 20000002 .word 0x20000002 + 8000db8: 46bd mov sp, r7 + 8000dba: b004 add sp, #16 + 8000dbc: bd80 pop {r7, pc} + 8000dbe: 46c0 nop @ (mov r8, r8) + 8000dc0: 20000122 .word 0x20000122 + 8000dc4: 20000124 .word 0x20000124 + 8000dc8: 2000011f .word 0x2000011f + 8000dcc: 20000121 .word 0x20000121 + 8000dd0: 20000000 .word 0x20000000 + 8000dd4: 20000134 .word 0x20000134 + 8000dd8: 20000002 .word 0x20000002 -08000d70 : +08000ddc : /** * @brief This function is executed in case of error occurrence. * @retval None */ void Error_Handler(void) { - 8000d70: b580 push {r7, lr} - 8000d72: af00 add r7, sp, #0 + 8000ddc: b580 push {r7, lr} + 8000dde: af00 add r7, sp, #0 \details Disables IRQ interrupts by setting the I-bit in the CPSR. Can only be executed in Privileged modes. */ __STATIC_FORCEINLINE void __disable_irq(void) { __ASM volatile ("cpsid i" : : : "memory"); - 8000d74: b672 cpsid i + 8000de0: b672 cpsid i } - 8000d76: 46c0 nop @ (mov r8, r8) + 8000de2: 46c0 nop @ (mov r8, r8) /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ __disable_irq(); while (1) - 8000d78: 46c0 nop @ (mov r8, r8) - 8000d7a: e7fd b.n 8000d78 + 8000de4: 46c0 nop @ (mov r8, r8) + 8000de6: e7fd b.n 8000de4 -08000d7c : +08000de8 : /* USER CODE END 0 */ /** * Initializes the Global MSP. */ void HAL_MspInit(void) { - 8000d7c: b580 push {r7, lr} - 8000d7e: b082 sub sp, #8 - 8000d80: af00 add r7, sp, #0 + 8000de8: b580 push {r7, lr} + 8000dea: b082 sub sp, #8 + 8000dec: af00 add r7, sp, #0 /* USER CODE BEGIN MspInit 0 */ /* USER CODE END MspInit 0 */ __HAL_RCC_SYSCFG_CLK_ENABLE(); - 8000d82: 4b11 ldr r3, [pc, #68] @ (8000dc8 ) - 8000d84: 6c1a ldr r2, [r3, #64] @ 0x40 - 8000d86: 4b10 ldr r3, [pc, #64] @ (8000dc8 ) - 8000d88: 2101 movs r1, #1 - 8000d8a: 430a orrs r2, r1 - 8000d8c: 641a str r2, [r3, #64] @ 0x40 - 8000d8e: 4b0e ldr r3, [pc, #56] @ (8000dc8 ) - 8000d90: 6c1b ldr r3, [r3, #64] @ 0x40 - 8000d92: 2201 movs r2, #1 - 8000d94: 4013 ands r3, r2 - 8000d96: 607b str r3, [r7, #4] - 8000d98: 687b ldr r3, [r7, #4] + 8000dee: 4b11 ldr r3, [pc, #68] @ (8000e34 ) + 8000df0: 6c1a ldr r2, [r3, #64] @ 0x40 + 8000df2: 4b10 ldr r3, [pc, #64] @ (8000e34 ) + 8000df4: 2101 movs r1, #1 + 8000df6: 430a orrs r2, r1 + 8000df8: 641a str r2, [r3, #64] @ 0x40 + 8000dfa: 4b0e ldr r3, [pc, #56] @ (8000e34 ) + 8000dfc: 6c1b ldr r3, [r3, #64] @ 0x40 + 8000dfe: 2201 movs r2, #1 + 8000e00: 4013 ands r3, r2 + 8000e02: 607b str r3, [r7, #4] + 8000e04: 687b ldr r3, [r7, #4] __HAL_RCC_PWR_CLK_ENABLE(); - 8000d9a: 4b0b ldr r3, [pc, #44] @ (8000dc8 ) - 8000d9c: 6bda ldr r2, [r3, #60] @ 0x3c - 8000d9e: 4b0a ldr r3, [pc, #40] @ (8000dc8 ) - 8000da0: 2180 movs r1, #128 @ 0x80 - 8000da2: 0549 lsls r1, r1, #21 - 8000da4: 430a orrs r2, r1 - 8000da6: 63da str r2, [r3, #60] @ 0x3c - 8000da8: 4b07 ldr r3, [pc, #28] @ (8000dc8 ) - 8000daa: 6bda ldr r2, [r3, #60] @ 0x3c - 8000dac: 2380 movs r3, #128 @ 0x80 - 8000dae: 055b lsls r3, r3, #21 - 8000db0: 4013 ands r3, r2 - 8000db2: 603b str r3, [r7, #0] - 8000db4: 683b ldr r3, [r7, #0] + 8000e06: 4b0b ldr r3, [pc, #44] @ (8000e34 ) + 8000e08: 6bda ldr r2, [r3, #60] @ 0x3c + 8000e0a: 4b0a ldr r3, [pc, #40] @ (8000e34 ) + 8000e0c: 2180 movs r1, #128 @ 0x80 + 8000e0e: 0549 lsls r1, r1, #21 + 8000e10: 430a orrs r2, r1 + 8000e12: 63da str r2, [r3, #60] @ 0x3c + 8000e14: 4b07 ldr r3, [pc, #28] @ (8000e34 ) + 8000e16: 6bda ldr r2, [r3, #60] @ 0x3c + 8000e18: 2380 movs r3, #128 @ 0x80 + 8000e1a: 055b lsls r3, r3, #21 + 8000e1c: 4013 ands r3, r2 + 8000e1e: 603b str r3, [r7, #0] + 8000e20: 683b ldr r3, [r7, #0] /* System interrupt init*/ /** Disable the internal Pull-Up in Dead Battery pins of UCPD peripheral */ HAL_SYSCFG_StrobeDBattpinsConfig(SYSCFG_CFGR1_UCPD1_STROBE | SYSCFG_CFGR1_UCPD2_STROBE); - 8000db6: 23c0 movs r3, #192 @ 0xc0 - 8000db8: 00db lsls r3, r3, #3 - 8000dba: 0018 movs r0, r3 - 8000dbc: f000 f9b8 bl 8001130 + 8000e22: 23c0 movs r3, #192 @ 0xc0 + 8000e24: 00db lsls r3, r3, #3 + 8000e26: 0018 movs r0, r3 + 8000e28: f000 f9b8 bl 800119c /* USER CODE BEGIN MspInit 1 */ /* USER CODE END MspInit 1 */ } - 8000dc0: 46c0 nop @ (mov r8, r8) - 8000dc2: 46bd mov sp, r7 - 8000dc4: b002 add sp, #8 - 8000dc6: bd80 pop {r7, pc} - 8000dc8: 40021000 .word 0x40021000 + 8000e2c: 46c0 nop @ (mov r8, r8) + 8000e2e: 46bd mov sp, r7 + 8000e30: b002 add sp, #8 + 8000e32: bd80 pop {r7, pc} + 8000e34: 40021000 .word 0x40021000 -08000dcc : +08000e38 : * This function configures the hardware resources used in this example * @param hi2c: I2C handle pointer * @retval None */ void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c) { - 8000dcc: b590 push {r4, r7, lr} - 8000dce: b091 sub sp, #68 @ 0x44 - 8000dd0: af00 add r7, sp, #0 - 8000dd2: 6078 str r0, [r7, #4] + 8000e38: b590 push {r4, r7, lr} + 8000e3a: b091 sub sp, #68 @ 0x44 + 8000e3c: af00 add r7, sp, #0 + 8000e3e: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8000dd4: 232c movs r3, #44 @ 0x2c - 8000dd6: 18fb adds r3, r7, r3 - 8000dd8: 0018 movs r0, r3 - 8000dda: 2314 movs r3, #20 - 8000ddc: 001a movs r2, r3 - 8000dde: 2100 movs r1, #0 - 8000de0: f003 fe52 bl 8004a88 + 8000e40: 232c movs r3, #44 @ 0x2c + 8000e42: 18fb adds r3, r7, r3 + 8000e44: 0018 movs r0, r3 + 8000e46: 2314 movs r3, #20 + 8000e48: 001a movs r2, r3 + 8000e4a: 2100 movs r1, #0 + 8000e4c: f003 fe52 bl 8004af4 RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - 8000de4: 2410 movs r4, #16 - 8000de6: 193b adds r3, r7, r4 - 8000de8: 0018 movs r0, r3 - 8000dea: 231c movs r3, #28 - 8000dec: 001a movs r2, r3 - 8000dee: 2100 movs r1, #0 - 8000df0: f003 fe4a bl 8004a88 + 8000e50: 2410 movs r4, #16 + 8000e52: 193b adds r3, r7, r4 + 8000e54: 0018 movs r0, r3 + 8000e56: 231c movs r3, #28 + 8000e58: 001a movs r2, r3 + 8000e5a: 2100 movs r1, #0 + 8000e5c: f003 fe4a bl 8004af4 if(hi2c->Instance==I2C1) - 8000df4: 687b ldr r3, [r7, #4] - 8000df6: 681b ldr r3, [r3, #0] - 8000df8: 4a26 ldr r2, [pc, #152] @ (8000e94 ) - 8000dfa: 4293 cmp r3, r2 - 8000dfc: d145 bne.n 8000e8a + 8000e60: 687b ldr r3, [r7, #4] + 8000e62: 681b ldr r3, [r3, #0] + 8000e64: 4a26 ldr r2, [pc, #152] @ (8000f00 ) + 8000e66: 4293 cmp r3, r2 + 8000e68: d145 bne.n 8000ef6 /* USER CODE END I2C1_MspInit 0 */ /** Initializes the peripherals clocks */ PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_I2C1; - 8000dfe: 193b adds r3, r7, r4 - 8000e00: 2220 movs r2, #32 - 8000e02: 601a str r2, [r3, #0] + 8000e6a: 193b adds r3, r7, r4 + 8000e6c: 2220 movs r2, #32 + 8000e6e: 601a str r2, [r3, #0] PeriphClkInit.I2c1ClockSelection = RCC_I2C1CLKSOURCE_PCLK1; - 8000e04: 193b adds r3, r7, r4 - 8000e06: 2200 movs r2, #0 - 8000e08: 60da str r2, [r3, #12] + 8000e70: 193b adds r3, r7, r4 + 8000e72: 2200 movs r2, #0 + 8000e74: 60da str r2, [r3, #12] if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - 8000e0a: 193b adds r3, r7, r4 - 8000e0c: 0018 movs r0, r3 - 8000e0e: f002 ffbf bl 8003d90 - 8000e12: 1e03 subs r3, r0, #0 - 8000e14: d001 beq.n 8000e1a + 8000e76: 193b adds r3, r7, r4 + 8000e78: 0018 movs r0, r3 + 8000e7a: f002 ffbf bl 8003dfc + 8000e7e: 1e03 subs r3, r0, #0 + 8000e80: d001 beq.n 8000e86 { Error_Handler(); - 8000e16: f7ff ffab bl 8000d70 + 8000e82: f7ff ffab bl 8000ddc } __HAL_RCC_GPIOB_CLK_ENABLE(); - 8000e1a: 4b1f ldr r3, [pc, #124] @ (8000e98 ) - 8000e1c: 6b5a ldr r2, [r3, #52] @ 0x34 - 8000e1e: 4b1e ldr r3, [pc, #120] @ (8000e98 ) - 8000e20: 2102 movs r1, #2 - 8000e22: 430a orrs r2, r1 - 8000e24: 635a str r2, [r3, #52] @ 0x34 - 8000e26: 4b1c ldr r3, [pc, #112] @ (8000e98 ) - 8000e28: 6b5b ldr r3, [r3, #52] @ 0x34 - 8000e2a: 2202 movs r2, #2 - 8000e2c: 4013 ands r3, r2 - 8000e2e: 60fb str r3, [r7, #12] - 8000e30: 68fb ldr r3, [r7, #12] + 8000e86: 4b1f ldr r3, [pc, #124] @ (8000f04 ) + 8000e88: 6b5a ldr r2, [r3, #52] @ 0x34 + 8000e8a: 4b1e ldr r3, [pc, #120] @ (8000f04 ) + 8000e8c: 2102 movs r1, #2 + 8000e8e: 430a orrs r2, r1 + 8000e90: 635a str r2, [r3, #52] @ 0x34 + 8000e92: 4b1c ldr r3, [pc, #112] @ (8000f04 ) + 8000e94: 6b5b ldr r3, [r3, #52] @ 0x34 + 8000e96: 2202 movs r2, #2 + 8000e98: 4013 ands r3, r2 + 8000e9a: 60fb str r3, [r7, #12] + 8000e9c: 68fb ldr r3, [r7, #12] /**I2C1 GPIO Configuration PB6 ------> I2C1_SCL PB7 ------> I2C1_SDA */ GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7; - 8000e32: 212c movs r1, #44 @ 0x2c - 8000e34: 187b adds r3, r7, r1 - 8000e36: 22c0 movs r2, #192 @ 0xc0 - 8000e38: 601a str r2, [r3, #0] + 8000e9e: 212c movs r1, #44 @ 0x2c + 8000ea0: 187b adds r3, r7, r1 + 8000ea2: 22c0 movs r2, #192 @ 0xc0 + 8000ea4: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; - 8000e3a: 187b adds r3, r7, r1 - 8000e3c: 2212 movs r2, #18 - 8000e3e: 605a str r2, [r3, #4] + 8000ea6: 187b adds r3, r7, r1 + 8000ea8: 2212 movs r2, #18 + 8000eaa: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8000e40: 187b adds r3, r7, r1 - 8000e42: 2200 movs r2, #0 - 8000e44: 609a str r2, [r3, #8] + 8000eac: 187b adds r3, r7, r1 + 8000eae: 2200 movs r2, #0 + 8000eb0: 609a str r2, [r3, #8] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8000e46: 187b adds r3, r7, r1 - 8000e48: 2200 movs r2, #0 - 8000e4a: 60da str r2, [r3, #12] + 8000eb2: 187b adds r3, r7, r1 + 8000eb4: 2200 movs r2, #0 + 8000eb6: 60da str r2, [r3, #12] GPIO_InitStruct.Alternate = GPIO_AF6_I2C1; - 8000e4c: 187b adds r3, r7, r1 - 8000e4e: 2206 movs r2, #6 - 8000e50: 611a str r2, [r3, #16] + 8000eb8: 187b adds r3, r7, r1 + 8000eba: 2206 movs r2, #6 + 8000ebc: 611a str r2, [r3, #16] HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 8000e52: 187b adds r3, r7, r1 - 8000e54: 4a11 ldr r2, [pc, #68] @ (8000e9c ) - 8000e56: 0019 movs r1, r3 - 8000e58: 0010 movs r0, r2 - 8000e5a: f000 fad3 bl 8001404 + 8000ebe: 187b adds r3, r7, r1 + 8000ec0: 4a11 ldr r2, [pc, #68] @ (8000f08 ) + 8000ec2: 0019 movs r1, r3 + 8000ec4: 0010 movs r0, r2 + 8000ec6: f000 fad3 bl 8001470 /* Peripheral clock enable */ __HAL_RCC_I2C1_CLK_ENABLE(); - 8000e5e: 4b0e ldr r3, [pc, #56] @ (8000e98 ) - 8000e60: 6bda ldr r2, [r3, #60] @ 0x3c - 8000e62: 4b0d ldr r3, [pc, #52] @ (8000e98 ) - 8000e64: 2180 movs r1, #128 @ 0x80 - 8000e66: 0389 lsls r1, r1, #14 - 8000e68: 430a orrs r2, r1 - 8000e6a: 63da str r2, [r3, #60] @ 0x3c - 8000e6c: 4b0a ldr r3, [pc, #40] @ (8000e98 ) - 8000e6e: 6bda ldr r2, [r3, #60] @ 0x3c - 8000e70: 2380 movs r3, #128 @ 0x80 - 8000e72: 039b lsls r3, r3, #14 - 8000e74: 4013 ands r3, r2 - 8000e76: 60bb str r3, [r7, #8] - 8000e78: 68bb ldr r3, [r7, #8] + 8000eca: 4b0e ldr r3, [pc, #56] @ (8000f04 ) + 8000ecc: 6bda ldr r2, [r3, #60] @ 0x3c + 8000ece: 4b0d ldr r3, [pc, #52] @ (8000f04 ) + 8000ed0: 2180 movs r1, #128 @ 0x80 + 8000ed2: 0389 lsls r1, r1, #14 + 8000ed4: 430a orrs r2, r1 + 8000ed6: 63da str r2, [r3, #60] @ 0x3c + 8000ed8: 4b0a ldr r3, [pc, #40] @ (8000f04 ) + 8000eda: 6bda ldr r2, [r3, #60] @ 0x3c + 8000edc: 2380 movs r3, #128 @ 0x80 + 8000ede: 039b lsls r3, r3, #14 + 8000ee0: 4013 ands r3, r2 + 8000ee2: 60bb str r3, [r7, #8] + 8000ee4: 68bb ldr r3, [r7, #8] /* I2C1 interrupt Init */ HAL_NVIC_SetPriority(I2C1_IRQn, 0, 0); - 8000e7a: 2200 movs r2, #0 - 8000e7c: 2100 movs r1, #0 - 8000e7e: 2017 movs r0, #23 - 8000e80: f000 fa18 bl 80012b4 + 8000ee6: 2200 movs r2, #0 + 8000ee8: 2100 movs r1, #0 + 8000eea: 2017 movs r0, #23 + 8000eec: f000 fa18 bl 8001320 HAL_NVIC_EnableIRQ(I2C1_IRQn); - 8000e84: 2017 movs r0, #23 - 8000e86: f000 fa2a bl 80012de + 8000ef0: 2017 movs r0, #23 + 8000ef2: f000 fa2a bl 800134a /* USER CODE BEGIN I2C1_MspInit 1 */ /* USER CODE END I2C1_MspInit 1 */ } } - 8000e8a: 46c0 nop @ (mov r8, r8) - 8000e8c: 46bd mov sp, r7 - 8000e8e: b011 add sp, #68 @ 0x44 - 8000e90: bd90 pop {r4, r7, pc} - 8000e92: 46c0 nop @ (mov r8, r8) - 8000e94: 40005400 .word 0x40005400 - 8000e98: 40021000 .word 0x40021000 - 8000e9c: 50000400 .word 0x50000400 + 8000ef6: 46c0 nop @ (mov r8, r8) + 8000ef8: 46bd mov sp, r7 + 8000efa: b011 add sp, #68 @ 0x44 + 8000efc: bd90 pop {r4, r7, pc} + 8000efe: 46c0 nop @ (mov r8, r8) + 8000f00: 40005400 .word 0x40005400 + 8000f04: 40021000 .word 0x40021000 + 8000f08: 50000400 .word 0x50000400 -08000ea0 : +08000f0c : * This function configures the hardware resources used in this example * @param huart: UART handle pointer * @retval None */ void HAL_UART_MspInit(UART_HandleTypeDef* huart) { - 8000ea0: b590 push {r4, r7, lr} - 8000ea2: b091 sub sp, #68 @ 0x44 - 8000ea4: af00 add r7, sp, #0 - 8000ea6: 6078 str r0, [r7, #4] + 8000f0c: b590 push {r4, r7, lr} + 8000f0e: b091 sub sp, #68 @ 0x44 + 8000f10: af00 add r7, sp, #0 + 8000f12: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8000ea8: 232c movs r3, #44 @ 0x2c - 8000eaa: 18fb adds r3, r7, r3 - 8000eac: 0018 movs r0, r3 - 8000eae: 2314 movs r3, #20 - 8000eb0: 001a movs r2, r3 - 8000eb2: 2100 movs r1, #0 - 8000eb4: f003 fde8 bl 8004a88 + 8000f14: 232c movs r3, #44 @ 0x2c + 8000f16: 18fb adds r3, r7, r3 + 8000f18: 0018 movs r0, r3 + 8000f1a: 2314 movs r3, #20 + 8000f1c: 001a movs r2, r3 + 8000f1e: 2100 movs r1, #0 + 8000f20: f003 fde8 bl 8004af4 RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - 8000eb8: 2410 movs r4, #16 - 8000eba: 193b adds r3, r7, r4 - 8000ebc: 0018 movs r0, r3 - 8000ebe: 231c movs r3, #28 - 8000ec0: 001a movs r2, r3 - 8000ec2: 2100 movs r1, #0 - 8000ec4: f003 fde0 bl 8004a88 + 8000f24: 2410 movs r4, #16 + 8000f26: 193b adds r3, r7, r4 + 8000f28: 0018 movs r0, r3 + 8000f2a: 231c movs r3, #28 + 8000f2c: 001a movs r2, r3 + 8000f2e: 2100 movs r1, #0 + 8000f30: f003 fde0 bl 8004af4 if(huart->Instance==USART2) - 8000ec8: 687b ldr r3, [r7, #4] - 8000eca: 681b ldr r3, [r3, #0] - 8000ecc: 4a22 ldr r2, [pc, #136] @ (8000f58 ) - 8000ece: 4293 cmp r3, r2 - 8000ed0: d13e bne.n 8000f50 + 8000f34: 687b ldr r3, [r7, #4] + 8000f36: 681b ldr r3, [r3, #0] + 8000f38: 4a22 ldr r2, [pc, #136] @ (8000fc4 ) + 8000f3a: 4293 cmp r3, r2 + 8000f3c: d13e bne.n 8000fbc /* USER CODE END USART2_MspInit 0 */ /** Initializes the peripherals clocks */ PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART2; - 8000ed2: 193b adds r3, r7, r4 - 8000ed4: 2202 movs r2, #2 - 8000ed6: 601a str r2, [r3, #0] + 8000f3e: 193b adds r3, r7, r4 + 8000f40: 2202 movs r2, #2 + 8000f42: 601a str r2, [r3, #0] PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1; - 8000ed8: 193b adds r3, r7, r4 - 8000eda: 2200 movs r2, #0 - 8000edc: 609a str r2, [r3, #8] + 8000f44: 193b adds r3, r7, r4 + 8000f46: 2200 movs r2, #0 + 8000f48: 609a str r2, [r3, #8] if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - 8000ede: 193b adds r3, r7, r4 - 8000ee0: 0018 movs r0, r3 - 8000ee2: f002 ff55 bl 8003d90 - 8000ee6: 1e03 subs r3, r0, #0 - 8000ee8: d001 beq.n 8000eee + 8000f4a: 193b adds r3, r7, r4 + 8000f4c: 0018 movs r0, r3 + 8000f4e: f002 ff55 bl 8003dfc + 8000f52: 1e03 subs r3, r0, #0 + 8000f54: d001 beq.n 8000f5a { Error_Handler(); - 8000eea: f7ff ff41 bl 8000d70 + 8000f56: f7ff ff41 bl 8000ddc } /* Peripheral clock enable */ __HAL_RCC_USART2_CLK_ENABLE(); - 8000eee: 4b1b ldr r3, [pc, #108] @ (8000f5c ) - 8000ef0: 6bda ldr r2, [r3, #60] @ 0x3c - 8000ef2: 4b1a ldr r3, [pc, #104] @ (8000f5c ) - 8000ef4: 2180 movs r1, #128 @ 0x80 - 8000ef6: 0289 lsls r1, r1, #10 - 8000ef8: 430a orrs r2, r1 - 8000efa: 63da str r2, [r3, #60] @ 0x3c - 8000efc: 4b17 ldr r3, [pc, #92] @ (8000f5c ) - 8000efe: 6bda ldr r2, [r3, #60] @ 0x3c - 8000f00: 2380 movs r3, #128 @ 0x80 - 8000f02: 029b lsls r3, r3, #10 - 8000f04: 4013 ands r3, r2 - 8000f06: 60fb str r3, [r7, #12] - 8000f08: 68fb ldr r3, [r7, #12] + 8000f5a: 4b1b ldr r3, [pc, #108] @ (8000fc8 ) + 8000f5c: 6bda ldr r2, [r3, #60] @ 0x3c + 8000f5e: 4b1a ldr r3, [pc, #104] @ (8000fc8 ) + 8000f60: 2180 movs r1, #128 @ 0x80 + 8000f62: 0289 lsls r1, r1, #10 + 8000f64: 430a orrs r2, r1 + 8000f66: 63da str r2, [r3, #60] @ 0x3c + 8000f68: 4b17 ldr r3, [pc, #92] @ (8000fc8 ) + 8000f6a: 6bda ldr r2, [r3, #60] @ 0x3c + 8000f6c: 2380 movs r3, #128 @ 0x80 + 8000f6e: 029b lsls r3, r3, #10 + 8000f70: 4013 ands r3, r2 + 8000f72: 60fb str r3, [r7, #12] + 8000f74: 68fb ldr r3, [r7, #12] __HAL_RCC_GPIOA_CLK_ENABLE(); - 8000f0a: 4b14 ldr r3, [pc, #80] @ (8000f5c ) - 8000f0c: 6b5a ldr r2, [r3, #52] @ 0x34 - 8000f0e: 4b13 ldr r3, [pc, #76] @ (8000f5c ) - 8000f10: 2101 movs r1, #1 - 8000f12: 430a orrs r2, r1 - 8000f14: 635a str r2, [r3, #52] @ 0x34 - 8000f16: 4b11 ldr r3, [pc, #68] @ (8000f5c ) - 8000f18: 6b5b ldr r3, [r3, #52] @ 0x34 - 8000f1a: 2201 movs r2, #1 - 8000f1c: 4013 ands r3, r2 - 8000f1e: 60bb str r3, [r7, #8] - 8000f20: 68bb ldr r3, [r7, #8] + 8000f76: 4b14 ldr r3, [pc, #80] @ (8000fc8 ) + 8000f78: 6b5a ldr r2, [r3, #52] @ 0x34 + 8000f7a: 4b13 ldr r3, [pc, #76] @ (8000fc8 ) + 8000f7c: 2101 movs r1, #1 + 8000f7e: 430a orrs r2, r1 + 8000f80: 635a str r2, [r3, #52] @ 0x34 + 8000f82: 4b11 ldr r3, [pc, #68] @ (8000fc8 ) + 8000f84: 6b5b ldr r3, [r3, #52] @ 0x34 + 8000f86: 2201 movs r2, #1 + 8000f88: 4013 ands r3, r2 + 8000f8a: 60bb str r3, [r7, #8] + 8000f8c: 68bb ldr r3, [r7, #8] /**USART2 GPIO Configuration PA2 ------> USART2_TX PA3 ------> USART2_RX */ GPIO_InitStruct.Pin = TX_Pin|RX_Pin; - 8000f22: 212c movs r1, #44 @ 0x2c - 8000f24: 187b adds r3, r7, r1 - 8000f26: 220c movs r2, #12 - 8000f28: 601a str r2, [r3, #0] + 8000f8e: 212c movs r1, #44 @ 0x2c + 8000f90: 187b adds r3, r7, r1 + 8000f92: 220c movs r2, #12 + 8000f94: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8000f2a: 187b adds r3, r7, r1 - 8000f2c: 2202 movs r2, #2 - 8000f2e: 605a str r2, [r3, #4] + 8000f96: 187b adds r3, r7, r1 + 8000f98: 2202 movs r2, #2 + 8000f9a: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8000f30: 187b adds r3, r7, r1 - 8000f32: 2200 movs r2, #0 - 8000f34: 609a str r2, [r3, #8] + 8000f9c: 187b adds r3, r7, r1 + 8000f9e: 2200 movs r2, #0 + 8000fa0: 609a str r2, [r3, #8] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8000f36: 187b adds r3, r7, r1 - 8000f38: 2200 movs r2, #0 - 8000f3a: 60da str r2, [r3, #12] + 8000fa2: 187b adds r3, r7, r1 + 8000fa4: 2200 movs r2, #0 + 8000fa6: 60da str r2, [r3, #12] GPIO_InitStruct.Alternate = GPIO_AF1_USART2; - 8000f3c: 187b adds r3, r7, r1 - 8000f3e: 2201 movs r2, #1 - 8000f40: 611a str r2, [r3, #16] + 8000fa8: 187b adds r3, r7, r1 + 8000faa: 2201 movs r2, #1 + 8000fac: 611a str r2, [r3, #16] HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 8000f42: 187a adds r2, r7, r1 - 8000f44: 23a0 movs r3, #160 @ 0xa0 - 8000f46: 05db lsls r3, r3, #23 - 8000f48: 0011 movs r1, r2 - 8000f4a: 0018 movs r0, r3 - 8000f4c: f000 fa5a bl 8001404 + 8000fae: 187a adds r2, r7, r1 + 8000fb0: 23a0 movs r3, #160 @ 0xa0 + 8000fb2: 05db lsls r3, r3, #23 + 8000fb4: 0011 movs r1, r2 + 8000fb6: 0018 movs r0, r3 + 8000fb8: f000 fa5a bl 8001470 /* USER CODE BEGIN USART2_MspInit 1 */ /* USER CODE END USART2_MspInit 1 */ } } - 8000f50: 46c0 nop @ (mov r8, r8) - 8000f52: 46bd mov sp, r7 - 8000f54: b011 add sp, #68 @ 0x44 - 8000f56: bd90 pop {r4, r7, pc} - 8000f58: 40004400 .word 0x40004400 - 8000f5c: 40021000 .word 0x40021000 + 8000fbc: 46c0 nop @ (mov r8, r8) + 8000fbe: 46bd mov sp, r7 + 8000fc0: b011 add sp, #68 @ 0x44 + 8000fc2: bd90 pop {r4, r7, pc} + 8000fc4: 40004400 .word 0x40004400 + 8000fc8: 40021000 .word 0x40021000 -08000f60 : +08000fcc : /******************************************************************************/ /** * @brief This function handles Non maskable interrupt. */ void NMI_Handler(void) { - 8000f60: b580 push {r7, lr} - 8000f62: af00 add r7, sp, #0 + 8000fcc: b580 push {r7, lr} + 8000fce: af00 add r7, sp, #0 /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ /* USER CODE END NonMaskableInt_IRQn 0 */ /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ while (1) - 8000f64: 46c0 nop @ (mov r8, r8) - 8000f66: e7fd b.n 8000f64 + 8000fd0: 46c0 nop @ (mov r8, r8) + 8000fd2: e7fd b.n 8000fd0 -08000f68 : +08000fd4 : /** * @brief This function handles Hard fault interrupt. */ void HardFault_Handler(void) { - 8000f68: b580 push {r7, lr} - 8000f6a: af00 add r7, sp, #0 + 8000fd4: b580 push {r7, lr} + 8000fd6: af00 add r7, sp, #0 /* USER CODE BEGIN HardFault_IRQn 0 */ /* USER CODE END HardFault_IRQn 0 */ while (1) - 8000f6c: 46c0 nop @ (mov r8, r8) - 8000f6e: e7fd b.n 8000f6c + 8000fd8: 46c0 nop @ (mov r8, r8) + 8000fda: e7fd b.n 8000fd8 -08000f70 : +08000fdc : /** * @brief This function handles System service call via SWI instruction. */ void SVC_Handler(void) { - 8000f70: b580 push {r7, lr} - 8000f72: af00 add r7, sp, #0 + 8000fdc: b580 push {r7, lr} + 8000fde: af00 add r7, sp, #0 /* USER CODE END SVC_IRQn 0 */ /* USER CODE BEGIN SVC_IRQn 1 */ /* USER CODE END SVC_IRQn 1 */ } - 8000f74: 46c0 nop @ (mov r8, r8) - 8000f76: 46bd mov sp, r7 - 8000f78: bd80 pop {r7, pc} + 8000fe0: 46c0 nop @ (mov r8, r8) + 8000fe2: 46bd mov sp, r7 + 8000fe4: bd80 pop {r7, pc} -08000f7a : +08000fe6 : /** * @brief This function handles Pendable request for system service. */ void PendSV_Handler(void) { - 8000f7a: b580 push {r7, lr} - 8000f7c: af00 add r7, sp, #0 + 8000fe6: b580 push {r7, lr} + 8000fe8: af00 add r7, sp, #0 /* USER CODE END PendSV_IRQn 0 */ /* USER CODE BEGIN PendSV_IRQn 1 */ /* USER CODE END PendSV_IRQn 1 */ } - 8000f7e: 46c0 nop @ (mov r8, r8) - 8000f80: 46bd mov sp, r7 - 8000f82: bd80 pop {r7, pc} + 8000fea: 46c0 nop @ (mov r8, r8) + 8000fec: 46bd mov sp, r7 + 8000fee: bd80 pop {r7, pc} -08000f84 : +08000ff0 : /** * @brief This function handles System tick timer. */ void SysTick_Handler(void) { - 8000f84: b580 push {r7, lr} - 8000f86: af00 add r7, sp, #0 + 8000ff0: b580 push {r7, lr} + 8000ff2: af00 add r7, sp, #0 /* USER CODE BEGIN SysTick_IRQn 0 */ /* USER CODE END SysTick_IRQn 0 */ HAL_IncTick(); - 8000f88: f000 f8b6 bl 80010f8 + 8000ff4: f000 f8b6 bl 8001164 /* USER CODE BEGIN SysTick_IRQn 1 */ /* USER CODE END SysTick_IRQn 1 */ } - 8000f8c: 46c0 nop @ (mov r8, r8) - 8000f8e: 46bd mov sp, r7 - 8000f90: bd80 pop {r7, pc} + 8000ff8: 46c0 nop @ (mov r8, r8) + 8000ffa: 46bd mov sp, r7 + 8000ffc: bd80 pop {r7, pc} ... -08000f94 : +08001000 : /** * @brief This function handles I2C1 event global interrupt / I2C1 wake-up interrupt through EXTI line 23. */ void I2C1_IRQHandler(void) { - 8000f94: b580 push {r7, lr} - 8000f96: af00 add r7, sp, #0 + 8001000: b580 push {r7, lr} + 8001002: af00 add r7, sp, #0 /* USER CODE BEGIN I2C1_IRQn 0 */ /* USER CODE END I2C1_IRQn 0 */ if (hi2c1.Instance->ISR & (I2C_FLAG_BERR | I2C_FLAG_ARLO | I2C_FLAG_OVR)) { - 8000f98: 4b09 ldr r3, [pc, #36] @ (8000fc0 ) - 8000f9a: 681b ldr r3, [r3, #0] - 8000f9c: 699a ldr r2, [r3, #24] - 8000f9e: 23e0 movs r3, #224 @ 0xe0 - 8000fa0: 00db lsls r3, r3, #3 - 8000fa2: 4013 ands r3, r2 - 8000fa4: d004 beq.n 8000fb0 + 8001004: 4b09 ldr r3, [pc, #36] @ (800102c ) + 8001006: 681b ldr r3, [r3, #0] + 8001008: 699a ldr r2, [r3, #24] + 800100a: 23e0 movs r3, #224 @ 0xe0 + 800100c: 00db lsls r3, r3, #3 + 800100e: 4013 ands r3, r2 + 8001010: d004 beq.n 800101c HAL_I2C_ER_IRQHandler(&hi2c1); - 8000fa6: 4b06 ldr r3, [pc, #24] @ (8000fc0 ) - 8000fa8: 0018 movs r0, r3 - 8000faa: f000 fe2d bl 8001c08 + 8001012: 4b06 ldr r3, [pc, #24] @ (800102c ) + 8001014: 0018 movs r0, r3 + 8001016: f000 fe2d bl 8001c74 HAL_I2C_EV_IRQHandler(&hi2c1); } /* USER CODE BEGIN I2C1_IRQn 1 */ /* USER CODE END I2C1_IRQn 1 */ } - 8000fae: e003 b.n 8000fb8 + 800101a: e003 b.n 8001024 HAL_I2C_EV_IRQHandler(&hi2c1); - 8000fb0: 4b03 ldr r3, [pc, #12] @ (8000fc0 ) - 8000fb2: 0018 movs r0, r3 - 8000fb4: f000 fe0e bl 8001bd4 + 800101c: 4b03 ldr r3, [pc, #12] @ (800102c ) + 800101e: 0018 movs r0, r3 + 8001020: f000 fe0e bl 8001c40 } - 8000fb8: 46c0 nop @ (mov r8, r8) - 8000fba: 46bd mov sp, r7 - 8000fbc: bd80 pop {r7, pc} - 8000fbe: 46c0 nop @ (mov r8, r8) - 8000fc0: 20000030 .word 0x20000030 + 8001024: 46c0 nop @ (mov r8, r8) + 8001026: 46bd mov sp, r7 + 8001028: bd80 pop {r7, pc} + 800102a: 46c0 nop @ (mov r8, r8) + 800102c: 20000030 .word 0x20000030 -08000fc4 : +08001030 : * @brief Setup the microcontroller system. * @param None * @retval None */ void SystemInit(void) { - 8000fc4: b580 push {r7, lr} - 8000fc6: af00 add r7, sp, #0 + 8001030: b580 push {r7, lr} + 8001032: af00 add r7, sp, #0 /* Configure the Vector Table location -------------------------------------*/ #if defined(USER_VECT_TAB_ADDRESS) SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation */ #endif /* USER_VECT_TAB_ADDRESS */ } - 8000fc8: 46c0 nop @ (mov r8, r8) - 8000fca: 46bd mov sp, r7 - 8000fcc: bd80 pop {r7, pc} + 8001034: 46c0 nop @ (mov r8, r8) + 8001036: 46bd mov sp, r7 + 8001038: bd80 pop {r7, pc} ... -08000fd0 : +0800103c : .section .text.Reset_Handler .weak Reset_Handler .type Reset_Handler, %function Reset_Handler: ldr r0, =_estack - 8000fd0: 480d ldr r0, [pc, #52] @ (8001008 ) + 800103c: 480d ldr r0, [pc, #52] @ (8001074 ) mov sp, r0 /* set stack pointer */ - 8000fd2: 4685 mov sp, r0 + 800103e: 4685 mov sp, r0 /* Call the clock system initialization function.*/ bl SystemInit - 8000fd4: f7ff fff6 bl 8000fc4 + 8001040: f7ff fff6 bl 8001030 /* Copy the data segment initializers from flash to SRAM */ ldr r0, =_sdata - 8000fd8: 480c ldr r0, [pc, #48] @ (800100c ) + 8001044: 480c ldr r0, [pc, #48] @ (8001078 ) ldr r1, =_edata - 8000fda: 490d ldr r1, [pc, #52] @ (8001010 ) + 8001046: 490d ldr r1, [pc, #52] @ (800107c ) ldr r2, =_sidata - 8000fdc: 4a0d ldr r2, [pc, #52] @ (8001014 ) + 8001048: 4a0d ldr r2, [pc, #52] @ (8001080 ) movs r3, #0 - 8000fde: 2300 movs r3, #0 + 800104a: 2300 movs r3, #0 b LoopCopyDataInit - 8000fe0: e002 b.n 8000fe8 + 800104c: e002 b.n 8001054 -08000fe2 : +0800104e : CopyDataInit: ldr r4, [r2, r3] - 8000fe2: 58d4 ldr r4, [r2, r3] + 800104e: 58d4 ldr r4, [r2, r3] str r4, [r0, r3] - 8000fe4: 50c4 str r4, [r0, r3] + 8001050: 50c4 str r4, [r0, r3] adds r3, r3, #4 - 8000fe6: 3304 adds r3, #4 + 8001052: 3304 adds r3, #4 -08000fe8 : +08001054 : LoopCopyDataInit: adds r4, r0, r3 - 8000fe8: 18c4 adds r4, r0, r3 + 8001054: 18c4 adds r4, r0, r3 cmp r4, r1 - 8000fea: 428c cmp r4, r1 + 8001056: 428c cmp r4, r1 bcc CopyDataInit - 8000fec: d3f9 bcc.n 8000fe2 + 8001058: d3f9 bcc.n 800104e /* Zero fill the bss segment. */ ldr r2, =_sbss - 8000fee: 4a0a ldr r2, [pc, #40] @ (8001018 ) + 800105a: 4a0a ldr r2, [pc, #40] @ (8001084 ) ldr r4, =_ebss - 8000ff0: 4c0a ldr r4, [pc, #40] @ (800101c ) + 800105c: 4c0a ldr r4, [pc, #40] @ (8001088 ) movs r3, #0 - 8000ff2: 2300 movs r3, #0 + 800105e: 2300 movs r3, #0 b LoopFillZerobss - 8000ff4: e001 b.n 8000ffa + 8001060: e001 b.n 8001066 -08000ff6 : +08001062 : FillZerobss: str r3, [r2] - 8000ff6: 6013 str r3, [r2, #0] + 8001062: 6013 str r3, [r2, #0] adds r2, r2, #4 - 8000ff8: 3204 adds r2, #4 + 8001064: 3204 adds r2, #4 -08000ffa : +08001066 : LoopFillZerobss: cmp r2, r4 - 8000ffa: 42a2 cmp r2, r4 + 8001066: 42a2 cmp r2, r4 bcc FillZerobss - 8000ffc: d3fb bcc.n 8000ff6 + 8001068: d3fb bcc.n 8001062 /* Call static constructors */ bl __libc_init_array - 8000ffe: f003 fd4b bl 8004a98 <__libc_init_array> + 800106a: f003 fd4b bl 8004b04 <__libc_init_array> /* Call the application s entry point.*/ bl main - 8001002: f7ff f9f3 bl 80003ec

+ 800106e: f7ff f9bd bl 80003ec
-08001006 : +08001072 : LoopForever: b LoopForever - 8001006: e7fe b.n 8001006 + 8001072: e7fe b.n 8001072 ldr r0, =_estack - 8001008: 20009000 .word 0x20009000 + 8001074: 20009000 .word 0x20009000 ldr r0, =_sdata - 800100c: 20000000 .word 0x20000000 + 8001078: 20000000 .word 0x20000000 ldr r1, =_edata - 8001010: 20000010 .word 0x20000010 + 800107c: 20000010 .word 0x20000010 ldr r2, =_sidata - 8001014: 08004bac .word 0x08004bac + 8001080: 08004c18 .word 0x08004c18 ldr r2, =_sbss - 8001018: 20000010 .word 0x20000010 + 8001084: 20000010 .word 0x20000010 ldr r4, =_ebss - 800101c: 2000013c .word 0x2000013c + 8001088: 2000013c .word 0x2000013c -08001020 : +0800108c : * @retval None */ .section .text.Default_Handler,"ax",%progbits Default_Handler: Infinite_Loop: b Infinite_Loop - 8001020: e7fe b.n 8001020 + 800108c: e7fe b.n 800108c ... -08001024 : +08001090 : * each 1ms in the SysTick_Handler() interrupt handler. * * @retval HAL status */ HAL_StatusTypeDef HAL_Init(void) { - 8001024: b580 push {r7, lr} - 8001026: b082 sub sp, #8 - 8001028: af00 add r7, sp, #0 + 8001090: b580 push {r7, lr} + 8001092: b082 sub sp, #8 + 8001094: af00 add r7, sp, #0 HAL_StatusTypeDef status = HAL_OK; - 800102a: 1dfb adds r3, r7, #7 - 800102c: 2200 movs r2, #0 - 800102e: 701a strb r2, [r3, #0] + 8001096: 1dfb adds r3, r7, #7 + 8001098: 2200 movs r2, #0 + 800109a: 701a strb r2, [r3, #0] #if (INSTRUCTION_CACHE_ENABLE == 0U) __HAL_FLASH_INSTRUCTION_CACHE_DISABLE(); #endif /* INSTRUCTION_CACHE_ENABLE */ #if (PREFETCH_ENABLE != 0U) __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); - 8001030: 4b0b ldr r3, [pc, #44] @ (8001060 ) - 8001032: 681a ldr r2, [r3, #0] - 8001034: 4b0a ldr r3, [pc, #40] @ (8001060 ) - 8001036: 2180 movs r1, #128 @ 0x80 - 8001038: 0049 lsls r1, r1, #1 - 800103a: 430a orrs r2, r1 - 800103c: 601a str r2, [r3, #0] + 800109c: 4b0b ldr r3, [pc, #44] @ (80010cc ) + 800109e: 681a ldr r2, [r3, #0] + 80010a0: 4b0a ldr r3, [pc, #40] @ (80010cc ) + 80010a2: 2180 movs r1, #128 @ 0x80 + 80010a4: 0049 lsls r1, r1, #1 + 80010a6: 430a orrs r2, r1 + 80010a8: 601a str r2, [r3, #0] #endif /* PREFETCH_ENABLE */ /* Use SysTick as time base source and configure 1ms tick (default clock after Reset is HSI) */ if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK) - 800103e: 2003 movs r0, #3 - 8001040: f000 f810 bl 8001064 - 8001044: 1e03 subs r3, r0, #0 - 8001046: d003 beq.n 8001050 + 80010aa: 2003 movs r0, #3 + 80010ac: f000 f810 bl 80010d0 + 80010b0: 1e03 subs r3, r0, #0 + 80010b2: d003 beq.n 80010bc { status = HAL_ERROR; - 8001048: 1dfb adds r3, r7, #7 - 800104a: 2201 movs r2, #1 - 800104c: 701a strb r2, [r3, #0] - 800104e: e001 b.n 8001054 + 80010b4: 1dfb adds r3, r7, #7 + 80010b6: 2201 movs r2, #1 + 80010b8: 701a strb r2, [r3, #0] + 80010ba: e001 b.n 80010c0 } else { /* Init the low level hardware */ HAL_MspInit(); - 8001050: f7ff fe94 bl 8000d7c + 80010bc: f7ff fe94 bl 8000de8 } /* Return function status */ return status; - 8001054: 1dfb adds r3, r7, #7 - 8001056: 781b ldrb r3, [r3, #0] + 80010c0: 1dfb adds r3, r7, #7 + 80010c2: 781b ldrb r3, [r3, #0] } - 8001058: 0018 movs r0, r3 - 800105a: 46bd mov sp, r7 - 800105c: b002 add sp, #8 - 800105e: bd80 pop {r7, pc} - 8001060: 40022000 .word 0x40022000 + 80010c4: 0018 movs r0, r3 + 80010c6: 46bd mov sp, r7 + 80010c8: b002 add sp, #8 + 80010ca: bd80 pop {r7, pc} + 80010cc: 40022000 .word 0x40022000 -08001064 : +080010d0 : * implementation in user file. * @param TickPriority Tick interrupt priority. * @retval HAL status */ __weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) { - 8001064: b590 push {r4, r7, lr} - 8001066: b085 sub sp, #20 - 8001068: af00 add r7, sp, #0 - 800106a: 6078 str r0, [r7, #4] + 80010d0: b590 push {r4, r7, lr} + 80010d2: b085 sub sp, #20 + 80010d4: af00 add r7, sp, #0 + 80010d6: 6078 str r0, [r7, #4] HAL_StatusTypeDef status = HAL_OK; - 800106c: 230f movs r3, #15 - 800106e: 18fb adds r3, r7, r3 - 8001070: 2200 movs r2, #0 - 8001072: 701a strb r2, [r3, #0] + 80010d8: 230f movs r3, #15 + 80010da: 18fb adds r3, r7, r3 + 80010dc: 2200 movs r2, #0 + 80010de: 701a strb r2, [r3, #0] /* Check uwTickFreq for MisraC 2012 (even if uwTickFreq is a enum type that doesn't take the value zero)*/ if ((uint32_t)uwTickFreq != 0U) - 8001074: 4b1d ldr r3, [pc, #116] @ (80010ec ) - 8001076: 781b ldrb r3, [r3, #0] - 8001078: 2b00 cmp r3, #0 - 800107a: d02b beq.n 80010d4 + 80010e0: 4b1d ldr r3, [pc, #116] @ (8001158 ) + 80010e2: 781b ldrb r3, [r3, #0] + 80010e4: 2b00 cmp r3, #0 + 80010e6: d02b beq.n 8001140 { /*Configure the SysTick to have interrupt in 1ms time basis*/ if (HAL_SYSTICK_Config(SystemCoreClock / (1000U /(uint32_t)uwTickFreq)) == 0U) - 800107c: 4b1c ldr r3, [pc, #112] @ (80010f0 ) - 800107e: 681c ldr r4, [r3, #0] - 8001080: 4b1a ldr r3, [pc, #104] @ (80010ec ) - 8001082: 781b ldrb r3, [r3, #0] - 8001084: 0019 movs r1, r3 - 8001086: 23fa movs r3, #250 @ 0xfa - 8001088: 0098 lsls r0, r3, #2 - 800108a: f7ff f839 bl 8000100 <__udivsi3> - 800108e: 0003 movs r3, r0 - 8001090: 0019 movs r1, r3 - 8001092: 0020 movs r0, r4 - 8001094: f7ff f834 bl 8000100 <__udivsi3> - 8001098: 0003 movs r3, r0 - 800109a: 0018 movs r0, r3 - 800109c: f000 f92f bl 80012fe - 80010a0: 1e03 subs r3, r0, #0 - 80010a2: d112 bne.n 80010ca + 80010e8: 4b1c ldr r3, [pc, #112] @ (800115c ) + 80010ea: 681c ldr r4, [r3, #0] + 80010ec: 4b1a ldr r3, [pc, #104] @ (8001158 ) + 80010ee: 781b ldrb r3, [r3, #0] + 80010f0: 0019 movs r1, r3 + 80010f2: 23fa movs r3, #250 @ 0xfa + 80010f4: 0098 lsls r0, r3, #2 + 80010f6: f7ff f803 bl 8000100 <__udivsi3> + 80010fa: 0003 movs r3, r0 + 80010fc: 0019 movs r1, r3 + 80010fe: 0020 movs r0, r4 + 8001100: f7fe fffe bl 8000100 <__udivsi3> + 8001104: 0003 movs r3, r0 + 8001106: 0018 movs r0, r3 + 8001108: f000 f92f bl 800136a + 800110c: 1e03 subs r3, r0, #0 + 800110e: d112 bne.n 8001136 { /* Configure the SysTick IRQ priority */ if (TickPriority < (1UL << __NVIC_PRIO_BITS)) - 80010a4: 687b ldr r3, [r7, #4] - 80010a6: 2b03 cmp r3, #3 - 80010a8: d80a bhi.n 80010c0 + 8001110: 687b ldr r3, [r7, #4] + 8001112: 2b03 cmp r3, #3 + 8001114: d80a bhi.n 800112c { HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); - 80010aa: 6879 ldr r1, [r7, #4] - 80010ac: 2301 movs r3, #1 - 80010ae: 425b negs r3, r3 - 80010b0: 2200 movs r2, #0 - 80010b2: 0018 movs r0, r3 - 80010b4: f000 f8fe bl 80012b4 + 8001116: 6879 ldr r1, [r7, #4] + 8001118: 2301 movs r3, #1 + 800111a: 425b negs r3, r3 + 800111c: 2200 movs r2, #0 + 800111e: 0018 movs r0, r3 + 8001120: f000 f8fe bl 8001320 uwTickPrio = TickPriority; - 80010b8: 4b0e ldr r3, [pc, #56] @ (80010f4 ) - 80010ba: 687a ldr r2, [r7, #4] - 80010bc: 601a str r2, [r3, #0] - 80010be: e00d b.n 80010dc + 8001124: 4b0e ldr r3, [pc, #56] @ (8001160 ) + 8001126: 687a ldr r2, [r7, #4] + 8001128: 601a str r2, [r3, #0] + 800112a: e00d b.n 8001148 } else { status = HAL_ERROR; - 80010c0: 230f movs r3, #15 - 80010c2: 18fb adds r3, r7, r3 - 80010c4: 2201 movs r2, #1 - 80010c6: 701a strb r2, [r3, #0] - 80010c8: e008 b.n 80010dc + 800112c: 230f movs r3, #15 + 800112e: 18fb adds r3, r7, r3 + 8001130: 2201 movs r2, #1 + 8001132: 701a strb r2, [r3, #0] + 8001134: e008 b.n 8001148 } } else { status = HAL_ERROR; - 80010ca: 230f movs r3, #15 - 80010cc: 18fb adds r3, r7, r3 - 80010ce: 2201 movs r2, #1 - 80010d0: 701a strb r2, [r3, #0] - 80010d2: e003 b.n 80010dc + 8001136: 230f movs r3, #15 + 8001138: 18fb adds r3, r7, r3 + 800113a: 2201 movs r2, #1 + 800113c: 701a strb r2, [r3, #0] + 800113e: e003 b.n 8001148 } } else { status = HAL_ERROR; - 80010d4: 230f movs r3, #15 - 80010d6: 18fb adds r3, r7, r3 - 80010d8: 2201 movs r2, #1 - 80010da: 701a strb r2, [r3, #0] + 8001140: 230f movs r3, #15 + 8001142: 18fb adds r3, r7, r3 + 8001144: 2201 movs r2, #1 + 8001146: 701a strb r2, [r3, #0] } /* Return function status */ return status; - 80010dc: 230f movs r3, #15 - 80010de: 18fb adds r3, r7, r3 - 80010e0: 781b ldrb r3, [r3, #0] + 8001148: 230f movs r3, #15 + 800114a: 18fb adds r3, r7, r3 + 800114c: 781b ldrb r3, [r3, #0] } - 80010e2: 0018 movs r0, r3 - 80010e4: 46bd mov sp, r7 - 80010e6: b005 add sp, #20 - 80010e8: bd90 pop {r4, r7, pc} - 80010ea: 46c0 nop @ (mov r8, r8) - 80010ec: 2000000c .word 0x2000000c - 80010f0: 20000004 .word 0x20000004 - 80010f4: 20000008 .word 0x20000008 + 800114e: 0018 movs r0, r3 + 8001150: 46bd mov sp, r7 + 8001152: b005 add sp, #20 + 8001154: bd90 pop {r4, r7, pc} + 8001156: 46c0 nop @ (mov r8, r8) + 8001158: 2000000c .word 0x2000000c + 800115c: 20000004 .word 0x20000004 + 8001160: 20000008 .word 0x20000008 -080010f8 : +08001164 : * @note This function is declared as __weak to be overwritten in case of other * implementations in user file. * @retval None */ __weak void HAL_IncTick(void) { - 80010f8: b580 push {r7, lr} - 80010fa: af00 add r7, sp, #0 + 8001164: b580 push {r7, lr} + 8001166: af00 add r7, sp, #0 uwTick += (uint32_t)uwTickFreq; - 80010fc: 4b05 ldr r3, [pc, #20] @ (8001114 ) - 80010fe: 781b ldrb r3, [r3, #0] - 8001100: 001a movs r2, r3 - 8001102: 4b05 ldr r3, [pc, #20] @ (8001118 ) - 8001104: 681b ldr r3, [r3, #0] - 8001106: 18d2 adds r2, r2, r3 - 8001108: 4b03 ldr r3, [pc, #12] @ (8001118 ) - 800110a: 601a str r2, [r3, #0] + 8001168: 4b05 ldr r3, [pc, #20] @ (8001180 ) + 800116a: 781b ldrb r3, [r3, #0] + 800116c: 001a movs r2, r3 + 800116e: 4b05 ldr r3, [pc, #20] @ (8001184 ) + 8001170: 681b ldr r3, [r3, #0] + 8001172: 18d2 adds r2, r2, r3 + 8001174: 4b03 ldr r3, [pc, #12] @ (8001184 ) + 8001176: 601a str r2, [r3, #0] } - 800110c: 46c0 nop @ (mov r8, r8) - 800110e: 46bd mov sp, r7 - 8001110: bd80 pop {r7, pc} - 8001112: 46c0 nop @ (mov r8, r8) - 8001114: 2000000c .word 0x2000000c - 8001118: 20000138 .word 0x20000138 + 8001178: 46c0 nop @ (mov r8, r8) + 800117a: 46bd mov sp, r7 + 800117c: bd80 pop {r7, pc} + 800117e: 46c0 nop @ (mov r8, r8) + 8001180: 2000000c .word 0x2000000c + 8001184: 20000138 .word 0x20000138 -0800111c : +08001188 : * @note This function is declared as __weak to be overwritten in case of other * implementations in user file. * @retval tick value */ __weak uint32_t HAL_GetTick(void) { - 800111c: b580 push {r7, lr} - 800111e: af00 add r7, sp, #0 + 8001188: b580 push {r7, lr} + 800118a: af00 add r7, sp, #0 return uwTick; - 8001120: 4b02 ldr r3, [pc, #8] @ (800112c ) - 8001122: 681b ldr r3, [r3, #0] + 800118c: 4b02 ldr r3, [pc, #8] @ (8001198 ) + 800118e: 681b ldr r3, [r3, #0] } - 8001124: 0018 movs r0, r3 - 8001126: 46bd mov sp, r7 - 8001128: bd80 pop {r7, pc} - 800112a: 46c0 nop @ (mov r8, r8) - 800112c: 20000138 .word 0x20000138 + 8001190: 0018 movs r0, r3 + 8001192: 46bd mov sp, r7 + 8001194: bd80 pop {r7, pc} + 8001196: 46c0 nop @ (mov r8, r8) + 8001198: 20000138 .word 0x20000138 -08001130 : +0800119c : * @arg @ref SYSCFG_UCPD1_STROBE * @arg @ref SYSCFG_UCPD2_STROBE * @retval None */ void HAL_SYSCFG_StrobeDBattpinsConfig(uint32_t ConfigDeadBattery) { - 8001130: b580 push {r7, lr} - 8001132: b082 sub sp, #8 - 8001134: af00 add r7, sp, #0 - 8001136: 6078 str r0, [r7, #4] + 800119c: b580 push {r7, lr} + 800119e: b082 sub sp, #8 + 80011a0: af00 add r7, sp, #0 + 80011a2: 6078 str r0, [r7, #4] assert_param(IS_SYSCFG_DBATT_CONFIG(ConfigDeadBattery)); /* Change strobe configuration of GPIO depending on UCPDx dead battery settings */ MODIFY_REG(SYSCFG->CFGR1, (SYSCFG_CFGR1_UCPD1_STROBE | SYSCFG_CFGR1_UCPD2_STROBE), ConfigDeadBattery); - 8001138: 4b06 ldr r3, [pc, #24] @ (8001154 ) - 800113a: 681b ldr r3, [r3, #0] - 800113c: 4a06 ldr r2, [pc, #24] @ (8001158 ) - 800113e: 4013 ands r3, r2 - 8001140: 0019 movs r1, r3 - 8001142: 4b04 ldr r3, [pc, #16] @ (8001154 ) - 8001144: 687a ldr r2, [r7, #4] - 8001146: 430a orrs r2, r1 - 8001148: 601a str r2, [r3, #0] + 80011a4: 4b06 ldr r3, [pc, #24] @ (80011c0 ) + 80011a6: 681b ldr r3, [r3, #0] + 80011a8: 4a06 ldr r2, [pc, #24] @ (80011c4 ) + 80011aa: 4013 ands r3, r2 + 80011ac: 0019 movs r1, r3 + 80011ae: 4b04 ldr r3, [pc, #16] @ (80011c0 ) + 80011b0: 687a ldr r2, [r7, #4] + 80011b2: 430a orrs r2, r1 + 80011b4: 601a str r2, [r3, #0] } - 800114a: 46c0 nop @ (mov r8, r8) - 800114c: 46bd mov sp, r7 - 800114e: b002 add sp, #8 - 8001150: bd80 pop {r7, pc} - 8001152: 46c0 nop @ (mov r8, r8) - 8001154: 40010000 .word 0x40010000 - 8001158: fffff9ff .word 0xfffff9ff + 80011b6: 46c0 nop @ (mov r8, r8) + 80011b8: 46bd mov sp, r7 + 80011ba: b002 add sp, #8 + 80011bc: bd80 pop {r7, pc} + 80011be: 46c0 nop @ (mov r8, r8) + 80011c0: 40010000 .word 0x40010000 + 80011c4: fffff9ff .word 0xfffff9ff -0800115c <__NVIC_EnableIRQ>: +080011c8 <__NVIC_EnableIRQ>: \details Enables a device specific interrupt in the NVIC interrupt controller. \param [in] IRQn Device specific interrupt number. \note IRQn must not be negative. */ __STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) { - 800115c: b580 push {r7, lr} - 800115e: b082 sub sp, #8 - 8001160: af00 add r7, sp, #0 - 8001162: 0002 movs r2, r0 - 8001164: 1dfb adds r3, r7, #7 - 8001166: 701a strb r2, [r3, #0] + 80011c8: b580 push {r7, lr} + 80011ca: b082 sub sp, #8 + 80011cc: af00 add r7, sp, #0 + 80011ce: 0002 movs r2, r0 + 80011d0: 1dfb adds r3, r7, #7 + 80011d2: 701a strb r2, [r3, #0] if ((int32_t)(IRQn) >= 0) - 8001168: 1dfb adds r3, r7, #7 - 800116a: 781b ldrb r3, [r3, #0] - 800116c: 2b7f cmp r3, #127 @ 0x7f - 800116e: d809 bhi.n 8001184 <__NVIC_EnableIRQ+0x28> + 80011d4: 1dfb adds r3, r7, #7 + 80011d6: 781b ldrb r3, [r3, #0] + 80011d8: 2b7f cmp r3, #127 @ 0x7f + 80011da: d809 bhi.n 80011f0 <__NVIC_EnableIRQ+0x28> { __COMPILER_BARRIER(); NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); - 8001170: 1dfb adds r3, r7, #7 - 8001172: 781b ldrb r3, [r3, #0] - 8001174: 001a movs r2, r3 - 8001176: 231f movs r3, #31 - 8001178: 401a ands r2, r3 - 800117a: 4b04 ldr r3, [pc, #16] @ (800118c <__NVIC_EnableIRQ+0x30>) - 800117c: 2101 movs r1, #1 - 800117e: 4091 lsls r1, r2 - 8001180: 000a movs r2, r1 - 8001182: 601a str r2, [r3, #0] + 80011dc: 1dfb adds r3, r7, #7 + 80011de: 781b ldrb r3, [r3, #0] + 80011e0: 001a movs r2, r3 + 80011e2: 231f movs r3, #31 + 80011e4: 401a ands r2, r3 + 80011e6: 4b04 ldr r3, [pc, #16] @ (80011f8 <__NVIC_EnableIRQ+0x30>) + 80011e8: 2101 movs r1, #1 + 80011ea: 4091 lsls r1, r2 + 80011ec: 000a movs r2, r1 + 80011ee: 601a str r2, [r3, #0] __COMPILER_BARRIER(); } } - 8001184: 46c0 nop @ (mov r8, r8) - 8001186: 46bd mov sp, r7 - 8001188: b002 add sp, #8 - 800118a: bd80 pop {r7, pc} - 800118c: e000e100 .word 0xe000e100 + 80011f0: 46c0 nop @ (mov r8, r8) + 80011f2: 46bd mov sp, r7 + 80011f4: b002 add sp, #8 + 80011f6: bd80 pop {r7, pc} + 80011f8: e000e100 .word 0xe000e100 -08001190 <__NVIC_SetPriority>: +080011fc <__NVIC_SetPriority>: \param [in] IRQn Interrupt number. \param [in] priority Priority to set. \note The priority cannot be set for every processor exception. */ __STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) { - 8001190: b590 push {r4, r7, lr} - 8001192: b083 sub sp, #12 - 8001194: af00 add r7, sp, #0 - 8001196: 0002 movs r2, r0 - 8001198: 6039 str r1, [r7, #0] - 800119a: 1dfb adds r3, r7, #7 - 800119c: 701a strb r2, [r3, #0] + 80011fc: b590 push {r4, r7, lr} + 80011fe: b083 sub sp, #12 + 8001200: af00 add r7, sp, #0 + 8001202: 0002 movs r2, r0 + 8001204: 6039 str r1, [r7, #0] + 8001206: 1dfb adds r3, r7, #7 + 8001208: 701a strb r2, [r3, #0] if ((int32_t)(IRQn) >= 0) - 800119e: 1dfb adds r3, r7, #7 - 80011a0: 781b ldrb r3, [r3, #0] - 80011a2: 2b7f cmp r3, #127 @ 0x7f - 80011a4: d828 bhi.n 80011f8 <__NVIC_SetPriority+0x68> + 800120a: 1dfb adds r3, r7, #7 + 800120c: 781b ldrb r3, [r3, #0] + 800120e: 2b7f cmp r3, #127 @ 0x7f + 8001210: d828 bhi.n 8001264 <__NVIC_SetPriority+0x68> { NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - 80011a6: 4a2f ldr r2, [pc, #188] @ (8001264 <__NVIC_SetPriority+0xd4>) - 80011a8: 1dfb adds r3, r7, #7 - 80011aa: 781b ldrb r3, [r3, #0] - 80011ac: b25b sxtb r3, r3 - 80011ae: 089b lsrs r3, r3, #2 - 80011b0: 33c0 adds r3, #192 @ 0xc0 - 80011b2: 009b lsls r3, r3, #2 - 80011b4: 589b ldr r3, [r3, r2] - 80011b6: 1dfa adds r2, r7, #7 - 80011b8: 7812 ldrb r2, [r2, #0] - 80011ba: 0011 movs r1, r2 - 80011bc: 2203 movs r2, #3 - 80011be: 400a ands r2, r1 - 80011c0: 00d2 lsls r2, r2, #3 - 80011c2: 21ff movs r1, #255 @ 0xff - 80011c4: 4091 lsls r1, r2 - 80011c6: 000a movs r2, r1 - 80011c8: 43d2 mvns r2, r2 - 80011ca: 401a ands r2, r3 - 80011cc: 0011 movs r1, r2 + 8001212: 4a2f ldr r2, [pc, #188] @ (80012d0 <__NVIC_SetPriority+0xd4>) + 8001214: 1dfb adds r3, r7, #7 + 8001216: 781b ldrb r3, [r3, #0] + 8001218: b25b sxtb r3, r3 + 800121a: 089b lsrs r3, r3, #2 + 800121c: 33c0 adds r3, #192 @ 0xc0 + 800121e: 009b lsls r3, r3, #2 + 8001220: 589b ldr r3, [r3, r2] + 8001222: 1dfa adds r2, r7, #7 + 8001224: 7812 ldrb r2, [r2, #0] + 8001226: 0011 movs r1, r2 + 8001228: 2203 movs r2, #3 + 800122a: 400a ands r2, r1 + 800122c: 00d2 lsls r2, r2, #3 + 800122e: 21ff movs r1, #255 @ 0xff + 8001230: 4091 lsls r1, r2 + 8001232: 000a movs r2, r1 + 8001234: 43d2 mvns r2, r2 + 8001236: 401a ands r2, r3 + 8001238: 0011 movs r1, r2 (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); - 80011ce: 683b ldr r3, [r7, #0] - 80011d0: 019b lsls r3, r3, #6 - 80011d2: 22ff movs r2, #255 @ 0xff - 80011d4: 401a ands r2, r3 - 80011d6: 1dfb adds r3, r7, #7 - 80011d8: 781b ldrb r3, [r3, #0] - 80011da: 0018 movs r0, r3 - 80011dc: 2303 movs r3, #3 - 80011de: 4003 ands r3, r0 - 80011e0: 00db lsls r3, r3, #3 - 80011e2: 409a lsls r2, r3 + 800123a: 683b ldr r3, [r7, #0] + 800123c: 019b lsls r3, r3, #6 + 800123e: 22ff movs r2, #255 @ 0xff + 8001240: 401a ands r2, r3 + 8001242: 1dfb adds r3, r7, #7 + 8001244: 781b ldrb r3, [r3, #0] + 8001246: 0018 movs r0, r3 + 8001248: 2303 movs r3, #3 + 800124a: 4003 ands r3, r0 + 800124c: 00db lsls r3, r3, #3 + 800124e: 409a lsls r2, r3 NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - 80011e4: 481f ldr r0, [pc, #124] @ (8001264 <__NVIC_SetPriority+0xd4>) - 80011e6: 1dfb adds r3, r7, #7 - 80011e8: 781b ldrb r3, [r3, #0] - 80011ea: b25b sxtb r3, r3 - 80011ec: 089b lsrs r3, r3, #2 - 80011ee: 430a orrs r2, r1 - 80011f0: 33c0 adds r3, #192 @ 0xc0 - 80011f2: 009b lsls r3, r3, #2 - 80011f4: 501a str r2, [r3, r0] + 8001250: 481f ldr r0, [pc, #124] @ (80012d0 <__NVIC_SetPriority+0xd4>) + 8001252: 1dfb adds r3, r7, #7 + 8001254: 781b ldrb r3, [r3, #0] + 8001256: b25b sxtb r3, r3 + 8001258: 089b lsrs r3, r3, #2 + 800125a: 430a orrs r2, r1 + 800125c: 33c0 adds r3, #192 @ 0xc0 + 800125e: 009b lsls r3, r3, #2 + 8001260: 501a str r2, [r3, r0] else { SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); } } - 80011f6: e031 b.n 800125c <__NVIC_SetPriority+0xcc> + 8001262: e031 b.n 80012c8 <__NVIC_SetPriority+0xcc> SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - 80011f8: 4a1b ldr r2, [pc, #108] @ (8001268 <__NVIC_SetPriority+0xd8>) - 80011fa: 1dfb adds r3, r7, #7 - 80011fc: 781b ldrb r3, [r3, #0] - 80011fe: 0019 movs r1, r3 - 8001200: 230f movs r3, #15 - 8001202: 400b ands r3, r1 - 8001204: 3b08 subs r3, #8 - 8001206: 089b lsrs r3, r3, #2 - 8001208: 3306 adds r3, #6 - 800120a: 009b lsls r3, r3, #2 - 800120c: 18d3 adds r3, r2, r3 - 800120e: 3304 adds r3, #4 - 8001210: 681b ldr r3, [r3, #0] - 8001212: 1dfa adds r2, r7, #7 - 8001214: 7812 ldrb r2, [r2, #0] - 8001216: 0011 movs r1, r2 - 8001218: 2203 movs r2, #3 - 800121a: 400a ands r2, r1 - 800121c: 00d2 lsls r2, r2, #3 - 800121e: 21ff movs r1, #255 @ 0xff - 8001220: 4091 lsls r1, r2 - 8001222: 000a movs r2, r1 - 8001224: 43d2 mvns r2, r2 - 8001226: 401a ands r2, r3 - 8001228: 0011 movs r1, r2 + 8001264: 4a1b ldr r2, [pc, #108] @ (80012d4 <__NVIC_SetPriority+0xd8>) + 8001266: 1dfb adds r3, r7, #7 + 8001268: 781b ldrb r3, [r3, #0] + 800126a: 0019 movs r1, r3 + 800126c: 230f movs r3, #15 + 800126e: 400b ands r3, r1 + 8001270: 3b08 subs r3, #8 + 8001272: 089b lsrs r3, r3, #2 + 8001274: 3306 adds r3, #6 + 8001276: 009b lsls r3, r3, #2 + 8001278: 18d3 adds r3, r2, r3 + 800127a: 3304 adds r3, #4 + 800127c: 681b ldr r3, [r3, #0] + 800127e: 1dfa adds r2, r7, #7 + 8001280: 7812 ldrb r2, [r2, #0] + 8001282: 0011 movs r1, r2 + 8001284: 2203 movs r2, #3 + 8001286: 400a ands r2, r1 + 8001288: 00d2 lsls r2, r2, #3 + 800128a: 21ff movs r1, #255 @ 0xff + 800128c: 4091 lsls r1, r2 + 800128e: 000a movs r2, r1 + 8001290: 43d2 mvns r2, r2 + 8001292: 401a ands r2, r3 + 8001294: 0011 movs r1, r2 (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); - 800122a: 683b ldr r3, [r7, #0] - 800122c: 019b lsls r3, r3, #6 - 800122e: 22ff movs r2, #255 @ 0xff - 8001230: 401a ands r2, r3 - 8001232: 1dfb adds r3, r7, #7 - 8001234: 781b ldrb r3, [r3, #0] - 8001236: 0018 movs r0, r3 - 8001238: 2303 movs r3, #3 - 800123a: 4003 ands r3, r0 - 800123c: 00db lsls r3, r3, #3 - 800123e: 409a lsls r2, r3 + 8001296: 683b ldr r3, [r7, #0] + 8001298: 019b lsls r3, r3, #6 + 800129a: 22ff movs r2, #255 @ 0xff + 800129c: 401a ands r2, r3 + 800129e: 1dfb adds r3, r7, #7 + 80012a0: 781b ldrb r3, [r3, #0] + 80012a2: 0018 movs r0, r3 + 80012a4: 2303 movs r3, #3 + 80012a6: 4003 ands r3, r0 + 80012a8: 00db lsls r3, r3, #3 + 80012aa: 409a lsls r2, r3 SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - 8001240: 4809 ldr r0, [pc, #36] @ (8001268 <__NVIC_SetPriority+0xd8>) - 8001242: 1dfb adds r3, r7, #7 - 8001244: 781b ldrb r3, [r3, #0] - 8001246: 001c movs r4, r3 - 8001248: 230f movs r3, #15 - 800124a: 4023 ands r3, r4 - 800124c: 3b08 subs r3, #8 - 800124e: 089b lsrs r3, r3, #2 - 8001250: 430a orrs r2, r1 - 8001252: 3306 adds r3, #6 - 8001254: 009b lsls r3, r3, #2 - 8001256: 18c3 adds r3, r0, r3 - 8001258: 3304 adds r3, #4 - 800125a: 601a str r2, [r3, #0] + 80012ac: 4809 ldr r0, [pc, #36] @ (80012d4 <__NVIC_SetPriority+0xd8>) + 80012ae: 1dfb adds r3, r7, #7 + 80012b0: 781b ldrb r3, [r3, #0] + 80012b2: 001c movs r4, r3 + 80012b4: 230f movs r3, #15 + 80012b6: 4023 ands r3, r4 + 80012b8: 3b08 subs r3, #8 + 80012ba: 089b lsrs r3, r3, #2 + 80012bc: 430a orrs r2, r1 + 80012be: 3306 adds r3, #6 + 80012c0: 009b lsls r3, r3, #2 + 80012c2: 18c3 adds r3, r0, r3 + 80012c4: 3304 adds r3, #4 + 80012c6: 601a str r2, [r3, #0] } - 800125c: 46c0 nop @ (mov r8, r8) - 800125e: 46bd mov sp, r7 - 8001260: b003 add sp, #12 - 8001262: bd90 pop {r4, r7, pc} - 8001264: e000e100 .word 0xe000e100 - 8001268: e000ed00 .word 0xe000ed00 + 80012c8: 46c0 nop @ (mov r8, r8) + 80012ca: 46bd mov sp, r7 + 80012cc: b003 add sp, #12 + 80012ce: bd90 pop {r4, r7, pc} + 80012d0: e000e100 .word 0xe000e100 + 80012d4: e000ed00 .word 0xe000ed00 -0800126c : +080012d8 : \note When the variable __Vendor_SysTickConfig is set to 1, then the function SysTick_Config is not included. In this case, the file device.h must contain a vendor-specific implementation of this function. */ __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) { - 800126c: b580 push {r7, lr} - 800126e: b082 sub sp, #8 - 8001270: af00 add r7, sp, #0 - 8001272: 6078 str r0, [r7, #4] + 80012d8: b580 push {r7, lr} + 80012da: b082 sub sp, #8 + 80012dc: af00 add r7, sp, #0 + 80012de: 6078 str r0, [r7, #4] if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) - 8001274: 687b ldr r3, [r7, #4] - 8001276: 1e5a subs r2, r3, #1 - 8001278: 2380 movs r3, #128 @ 0x80 - 800127a: 045b lsls r3, r3, #17 - 800127c: 429a cmp r2, r3 - 800127e: d301 bcc.n 8001284 + 80012e0: 687b ldr r3, [r7, #4] + 80012e2: 1e5a subs r2, r3, #1 + 80012e4: 2380 movs r3, #128 @ 0x80 + 80012e6: 045b lsls r3, r3, #17 + 80012e8: 429a cmp r2, r3 + 80012ea: d301 bcc.n 80012f0 { return (1UL); /* Reload value impossible */ - 8001280: 2301 movs r3, #1 - 8001282: e010 b.n 80012a6 + 80012ec: 2301 movs r3, #1 + 80012ee: e010 b.n 8001312 } SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ - 8001284: 4b0a ldr r3, [pc, #40] @ (80012b0 ) - 8001286: 687a ldr r2, [r7, #4] - 8001288: 3a01 subs r2, #1 - 800128a: 605a str r2, [r3, #4] + 80012f0: 4b0a ldr r3, [pc, #40] @ (800131c ) + 80012f2: 687a ldr r2, [r7, #4] + 80012f4: 3a01 subs r2, #1 + 80012f6: 605a str r2, [r3, #4] NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ - 800128c: 2301 movs r3, #1 - 800128e: 425b negs r3, r3 - 8001290: 2103 movs r1, #3 - 8001292: 0018 movs r0, r3 - 8001294: f7ff ff7c bl 8001190 <__NVIC_SetPriority> + 80012f8: 2301 movs r3, #1 + 80012fa: 425b negs r3, r3 + 80012fc: 2103 movs r1, #3 + 80012fe: 0018 movs r0, r3 + 8001300: f7ff ff7c bl 80011fc <__NVIC_SetPriority> SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ - 8001298: 4b05 ldr r3, [pc, #20] @ (80012b0 ) - 800129a: 2200 movs r2, #0 - 800129c: 609a str r2, [r3, #8] + 8001304: 4b05 ldr r3, [pc, #20] @ (800131c ) + 8001306: 2200 movs r2, #0 + 8001308: 609a str r2, [r3, #8] SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - 800129e: 4b04 ldr r3, [pc, #16] @ (80012b0 ) - 80012a0: 2207 movs r2, #7 - 80012a2: 601a str r2, [r3, #0] + 800130a: 4b04 ldr r3, [pc, #16] @ (800131c ) + 800130c: 2207 movs r2, #7 + 800130e: 601a str r2, [r3, #0] SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ return (0UL); /* Function successful */ - 80012a4: 2300 movs r3, #0 + 8001310: 2300 movs r3, #0 } - 80012a6: 0018 movs r0, r3 - 80012a8: 46bd mov sp, r7 - 80012aa: b002 add sp, #8 - 80012ac: bd80 pop {r7, pc} - 80012ae: 46c0 nop @ (mov r8, r8) - 80012b0: e000e010 .word 0xe000e010 + 8001312: 0018 movs r0, r3 + 8001314: 46bd mov sp, r7 + 8001316: b002 add sp, #8 + 8001318: bd80 pop {r7, pc} + 800131a: 46c0 nop @ (mov r8, r8) + 800131c: e000e010 .word 0xe000e010 -080012b4 : +08001320 : * with stm32g0xx devices, this parameter is a dummy value and it is ignored, because * no subpriority supported in Cortex M0+ based products. * @retval None */ void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) { - 80012b4: b580 push {r7, lr} - 80012b6: b084 sub sp, #16 - 80012b8: af00 add r7, sp, #0 - 80012ba: 60b9 str r1, [r7, #8] - 80012bc: 607a str r2, [r7, #4] - 80012be: 210f movs r1, #15 - 80012c0: 187b adds r3, r7, r1 - 80012c2: 1c02 adds r2, r0, #0 - 80012c4: 701a strb r2, [r3, #0] + 8001320: b580 push {r7, lr} + 8001322: b084 sub sp, #16 + 8001324: af00 add r7, sp, #0 + 8001326: 60b9 str r1, [r7, #8] + 8001328: 607a str r2, [r7, #4] + 800132a: 210f movs r1, #15 + 800132c: 187b adds r3, r7, r1 + 800132e: 1c02 adds r2, r0, #0 + 8001330: 701a strb r2, [r3, #0] /* Prevent unused argument(s) compilation warning */ UNUSED(SubPriority); /* Check the parameters */ assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); NVIC_SetPriority(IRQn, PreemptPriority); - 80012c6: 68ba ldr r2, [r7, #8] - 80012c8: 187b adds r3, r7, r1 - 80012ca: 781b ldrb r3, [r3, #0] - 80012cc: b25b sxtb r3, r3 - 80012ce: 0011 movs r1, r2 - 80012d0: 0018 movs r0, r3 - 80012d2: f7ff ff5d bl 8001190 <__NVIC_SetPriority> + 8001332: 68ba ldr r2, [r7, #8] + 8001334: 187b adds r3, r7, r1 + 8001336: 781b ldrb r3, [r3, #0] + 8001338: b25b sxtb r3, r3 + 800133a: 0011 movs r1, r2 + 800133c: 0018 movs r0, r3 + 800133e: f7ff ff5d bl 80011fc <__NVIC_SetPriority> } - 80012d6: 46c0 nop @ (mov r8, r8) - 80012d8: 46bd mov sp, r7 - 80012da: b004 add sp, #16 - 80012dc: bd80 pop {r7, pc} + 8001342: 46c0 nop @ (mov r8, r8) + 8001344: 46bd mov sp, r7 + 8001346: b004 add sp, #16 + 8001348: bd80 pop {r7, pc} -080012de : +0800134a : * This parameter can be an enumerator of IRQn_Type enumeration * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32g0xxxx.h)) * @retval None */ void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) { - 80012de: b580 push {r7, lr} - 80012e0: b082 sub sp, #8 - 80012e2: af00 add r7, sp, #0 - 80012e4: 0002 movs r2, r0 - 80012e6: 1dfb adds r3, r7, #7 - 80012e8: 701a strb r2, [r3, #0] + 800134a: b580 push {r7, lr} + 800134c: b082 sub sp, #8 + 800134e: af00 add r7, sp, #0 + 8001350: 0002 movs r2, r0 + 8001352: 1dfb adds r3, r7, #7 + 8001354: 701a strb r2, [r3, #0] /* Check the parameters */ assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); /* Enable interrupt */ NVIC_EnableIRQ(IRQn); - 80012ea: 1dfb adds r3, r7, #7 - 80012ec: 781b ldrb r3, [r3, #0] - 80012ee: b25b sxtb r3, r3 - 80012f0: 0018 movs r0, r3 - 80012f2: f7ff ff33 bl 800115c <__NVIC_EnableIRQ> + 8001356: 1dfb adds r3, r7, #7 + 8001358: 781b ldrb r3, [r3, #0] + 800135a: b25b sxtb r3, r3 + 800135c: 0018 movs r0, r3 + 800135e: f7ff ff33 bl 80011c8 <__NVIC_EnableIRQ> } - 80012f6: 46c0 nop @ (mov r8, r8) - 80012f8: 46bd mov sp, r7 - 80012fa: b002 add sp, #8 - 80012fc: bd80 pop {r7, pc} + 8001362: 46c0 nop @ (mov r8, r8) + 8001364: 46bd mov sp, r7 + 8001366: b002 add sp, #8 + 8001368: bd80 pop {r7, pc} -080012fe : +0800136a : * @param TicksNumb Specifies the ticks Number of ticks between two interrupts. * @retval status: - 0 Function succeeded. * - 1 Function failed. */ uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) { - 80012fe: b580 push {r7, lr} - 8001300: b082 sub sp, #8 - 8001302: af00 add r7, sp, #0 - 8001304: 6078 str r0, [r7, #4] + 800136a: b580 push {r7, lr} + 800136c: b082 sub sp, #8 + 800136e: af00 add r7, sp, #0 + 8001370: 6078 str r0, [r7, #4] return SysTick_Config(TicksNumb); - 8001306: 687b ldr r3, [r7, #4] - 8001308: 0018 movs r0, r3 - 800130a: f7ff ffaf bl 800126c - 800130e: 0003 movs r3, r0 + 8001372: 687b ldr r3, [r7, #4] + 8001374: 0018 movs r0, r3 + 8001376: f7ff ffaf bl 80012d8 + 800137a: 0003 movs r3, r0 } - 8001310: 0018 movs r0, r3 - 8001312: 46bd mov sp, r7 - 8001314: b002 add sp, #8 - 8001316: bd80 pop {r7, pc} + 800137c: 0018 movs r0, r3 + 800137e: 46bd mov sp, r7 + 8001380: b002 add sp, #8 + 8001382: bd80 pop {r7, pc} -08001318 : +08001384 : * @param hdma Pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA Channel. * @retval HAL status */ HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma) { - 8001318: b580 push {r7, lr} - 800131a: b084 sub sp, #16 - 800131c: af00 add r7, sp, #0 - 800131e: 6078 str r0, [r7, #4] + 8001384: b580 push {r7, lr} + 8001386: b084 sub sp, #16 + 8001388: af00 add r7, sp, #0 + 800138a: 6078 str r0, [r7, #4] HAL_StatusTypeDef status = HAL_OK; - 8001320: 210f movs r1, #15 - 8001322: 187b adds r3, r7, r1 - 8001324: 2200 movs r2, #0 - 8001326: 701a strb r2, [r3, #0] + 800138c: 210f movs r1, #15 + 800138e: 187b adds r3, r7, r1 + 8001390: 2200 movs r2, #0 + 8001392: 701a strb r2, [r3, #0] if (hdma->State != HAL_DMA_STATE_BUSY) - 8001328: 687b ldr r3, [r7, #4] - 800132a: 2225 movs r2, #37 @ 0x25 - 800132c: 5c9b ldrb r3, [r3, r2] - 800132e: b2db uxtb r3, r3 - 8001330: 2b02 cmp r3, #2 - 8001332: d006 beq.n 8001342 + 8001394: 687b ldr r3, [r7, #4] + 8001396: 2225 movs r2, #37 @ 0x25 + 8001398: 5c9b ldrb r3, [r3, r2] + 800139a: b2db uxtb r3, r3 + 800139c: 2b02 cmp r3, #2 + 800139e: d006 beq.n 80013ae { /* no transfer ongoing */ hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; - 8001334: 687b ldr r3, [r7, #4] - 8001336: 2204 movs r2, #4 - 8001338: 63da str r2, [r3, #60] @ 0x3c + 80013a0: 687b ldr r3, [r7, #4] + 80013a2: 2204 movs r2, #4 + 80013a4: 63da str r2, [r3, #60] @ 0x3c status = HAL_ERROR; - 800133a: 187b adds r3, r7, r1 - 800133c: 2201 movs r2, #1 - 800133e: 701a strb r2, [r3, #0] - 8001340: e049 b.n 80013d6 + 80013a6: 187b adds r3, r7, r1 + 80013a8: 2201 movs r2, #1 + 80013aa: 701a strb r2, [r3, #0] + 80013ac: e049 b.n 8001442 } else { /* Disable DMA IT */ __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); - 8001342: 687b ldr r3, [r7, #4] - 8001344: 681b ldr r3, [r3, #0] - 8001346: 681a ldr r2, [r3, #0] - 8001348: 687b ldr r3, [r7, #4] - 800134a: 681b ldr r3, [r3, #0] - 800134c: 210e movs r1, #14 - 800134e: 438a bics r2, r1 - 8001350: 601a str r2, [r3, #0] + 80013ae: 687b ldr r3, [r7, #4] + 80013b0: 681b ldr r3, [r3, #0] + 80013b2: 681a ldr r2, [r3, #0] + 80013b4: 687b ldr r3, [r7, #4] + 80013b6: 681b ldr r3, [r3, #0] + 80013b8: 210e movs r1, #14 + 80013ba: 438a bics r2, r1 + 80013bc: 601a str r2, [r3, #0] /* Disable the channel */ __HAL_DMA_DISABLE(hdma); - 8001352: 687b ldr r3, [r7, #4] - 8001354: 681b ldr r3, [r3, #0] - 8001356: 681a ldr r2, [r3, #0] - 8001358: 687b ldr r3, [r7, #4] - 800135a: 681b ldr r3, [r3, #0] - 800135c: 2101 movs r1, #1 - 800135e: 438a bics r2, r1 - 8001360: 601a str r2, [r3, #0] + 80013be: 687b ldr r3, [r7, #4] + 80013c0: 681b ldr r3, [r3, #0] + 80013c2: 681a ldr r2, [r3, #0] + 80013c4: 687b ldr r3, [r7, #4] + 80013c6: 681b ldr r3, [r3, #0] + 80013c8: 2101 movs r1, #1 + 80013ca: 438a bics r2, r1 + 80013cc: 601a str r2, [r3, #0] /* disable the DMAMUX sync overrun IT*/ hdma->DMAmuxChannel->CCR &= ~DMAMUX_CxCR_SOIE; - 8001362: 687b ldr r3, [r7, #4] - 8001364: 6c5b ldr r3, [r3, #68] @ 0x44 - 8001366: 681a ldr r2, [r3, #0] - 8001368: 687b ldr r3, [r7, #4] - 800136a: 6c5b ldr r3, [r3, #68] @ 0x44 - 800136c: 491d ldr r1, [pc, #116] @ (80013e4 ) - 800136e: 400a ands r2, r1 - 8001370: 601a str r2, [r3, #0] + 80013ce: 687b ldr r3, [r7, #4] + 80013d0: 6c5b ldr r3, [r3, #68] @ 0x44 + 80013d2: 681a ldr r2, [r3, #0] + 80013d4: 687b ldr r3, [r7, #4] + 80013d6: 6c5b ldr r3, [r3, #68] @ 0x44 + 80013d8: 491d ldr r1, [pc, #116] @ (8001450 ) + 80013da: 400a ands r2, r1 + 80013dc: 601a str r2, [r3, #0] /* Clear all flags */ #if defined(DMA2) hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); #else __HAL_DMA_CLEAR_FLAG(hdma, ((DMA_FLAG_GI1) << (hdma->ChannelIndex & 0x1CU))); - 8001372: 4b1d ldr r3, [pc, #116] @ (80013e8 ) - 8001374: 6859 ldr r1, [r3, #4] - 8001376: 687b ldr r3, [r7, #4] - 8001378: 6c1b ldr r3, [r3, #64] @ 0x40 - 800137a: 221c movs r2, #28 - 800137c: 4013 ands r3, r2 - 800137e: 2201 movs r2, #1 - 8001380: 409a lsls r2, r3 - 8001382: 4b19 ldr r3, [pc, #100] @ (80013e8 ) - 8001384: 430a orrs r2, r1 - 8001386: 605a str r2, [r3, #4] + 80013de: 4b1d ldr r3, [pc, #116] @ (8001454 ) + 80013e0: 6859 ldr r1, [r3, #4] + 80013e2: 687b ldr r3, [r7, #4] + 80013e4: 6c1b ldr r3, [r3, #64] @ 0x40 + 80013e6: 221c movs r2, #28 + 80013e8: 4013 ands r3, r2 + 80013ea: 2201 movs r2, #1 + 80013ec: 409a lsls r2, r3 + 80013ee: 4b19 ldr r3, [pc, #100] @ (8001454 ) + 80013f0: 430a orrs r2, r1 + 80013f2: 605a str r2, [r3, #4] #endif /* DMA2 */ /* Clear the DMAMUX synchro overrun flag */ hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask; - 8001388: 687b ldr r3, [r7, #4] - 800138a: 6c9b ldr r3, [r3, #72] @ 0x48 - 800138c: 687a ldr r2, [r7, #4] - 800138e: 6cd2 ldr r2, [r2, #76] @ 0x4c - 8001390: 605a str r2, [r3, #4] + 80013f4: 687b ldr r3, [r7, #4] + 80013f6: 6c9b ldr r3, [r3, #72] @ 0x48 + 80013f8: 687a ldr r2, [r7, #4] + 80013fa: 6cd2 ldr r2, [r2, #76] @ 0x4c + 80013fc: 605a str r2, [r3, #4] if (hdma->DMAmuxRequestGen != 0U) - 8001392: 687b ldr r3, [r7, #4] - 8001394: 6d1b ldr r3, [r3, #80] @ 0x50 - 8001396: 2b00 cmp r3, #0 - 8001398: d00c beq.n 80013b4 + 80013fe: 687b ldr r3, [r7, #4] + 8001400: 6d1b ldr r3, [r3, #80] @ 0x50 + 8001402: 2b00 cmp r3, #0 + 8001404: d00c beq.n 8001420 { /* if using DMAMUX request generator, disable the DMAMUX request generator overrun IT*/ /* disable the request gen overrun IT*/ hdma->DMAmuxRequestGen->RGCR &= ~DMAMUX_RGxCR_OIE; - 800139a: 687b ldr r3, [r7, #4] - 800139c: 6d1b ldr r3, [r3, #80] @ 0x50 - 800139e: 681a ldr r2, [r3, #0] - 80013a0: 687b ldr r3, [r7, #4] - 80013a2: 6d1b ldr r3, [r3, #80] @ 0x50 - 80013a4: 490f ldr r1, [pc, #60] @ (80013e4 ) - 80013a6: 400a ands r2, r1 - 80013a8: 601a str r2, [r3, #0] + 8001406: 687b ldr r3, [r7, #4] + 8001408: 6d1b ldr r3, [r3, #80] @ 0x50 + 800140a: 681a ldr r2, [r3, #0] + 800140c: 687b ldr r3, [r7, #4] + 800140e: 6d1b ldr r3, [r3, #80] @ 0x50 + 8001410: 490f ldr r1, [pc, #60] @ (8001450 ) + 8001412: 400a ands r2, r1 + 8001414: 601a str r2, [r3, #0] /* Clear the DMAMUX request generator overrun flag */ hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask; - 80013aa: 687b ldr r3, [r7, #4] - 80013ac: 6d5b ldr r3, [r3, #84] @ 0x54 - 80013ae: 687a ldr r2, [r7, #4] - 80013b0: 6d92 ldr r2, [r2, #88] @ 0x58 - 80013b2: 605a str r2, [r3, #4] + 8001416: 687b ldr r3, [r7, #4] + 8001418: 6d5b ldr r3, [r3, #84] @ 0x54 + 800141a: 687a ldr r2, [r7, #4] + 800141c: 6d92 ldr r2, [r2, #88] @ 0x58 + 800141e: 605a str r2, [r3, #4] } /* Change the DMA state */ hdma->State = HAL_DMA_STATE_READY; - 80013b4: 687b ldr r3, [r7, #4] - 80013b6: 2225 movs r2, #37 @ 0x25 - 80013b8: 2101 movs r1, #1 - 80013ba: 5499 strb r1, [r3, r2] + 8001420: 687b ldr r3, [r7, #4] + 8001422: 2225 movs r2, #37 @ 0x25 + 8001424: 2101 movs r1, #1 + 8001426: 5499 strb r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(hdma); - 80013bc: 687b ldr r3, [r7, #4] - 80013be: 2224 movs r2, #36 @ 0x24 - 80013c0: 2100 movs r1, #0 - 80013c2: 5499 strb r1, [r3, r2] + 8001428: 687b ldr r3, [r7, #4] + 800142a: 2224 movs r2, #36 @ 0x24 + 800142c: 2100 movs r1, #0 + 800142e: 5499 strb r1, [r3, r2] /* Call User Abort callback */ if (hdma->XferAbortCallback != NULL) - 80013c4: 687b ldr r3, [r7, #4] - 80013c6: 6b9b ldr r3, [r3, #56] @ 0x38 - 80013c8: 2b00 cmp r3, #0 - 80013ca: d004 beq.n 80013d6 + 8001430: 687b ldr r3, [r7, #4] + 8001432: 6b9b ldr r3, [r3, #56] @ 0x38 + 8001434: 2b00 cmp r3, #0 + 8001436: d004 beq.n 8001442 { hdma->XferAbortCallback(hdma); - 80013cc: 687b ldr r3, [r7, #4] - 80013ce: 6b9b ldr r3, [r3, #56] @ 0x38 - 80013d0: 687a ldr r2, [r7, #4] - 80013d2: 0010 movs r0, r2 - 80013d4: 4798 blx r3 + 8001438: 687b ldr r3, [r7, #4] + 800143a: 6b9b ldr r3, [r3, #56] @ 0x38 + 800143c: 687a ldr r2, [r7, #4] + 800143e: 0010 movs r0, r2 + 8001440: 4798 blx r3 } } return status; - 80013d6: 230f movs r3, #15 - 80013d8: 18fb adds r3, r7, r3 - 80013da: 781b ldrb r3, [r3, #0] + 8001442: 230f movs r3, #15 + 8001444: 18fb adds r3, r7, r3 + 8001446: 781b ldrb r3, [r3, #0] } - 80013dc: 0018 movs r0, r3 - 80013de: 46bd mov sp, r7 - 80013e0: b004 add sp, #16 - 80013e2: bd80 pop {r7, pc} - 80013e4: fffffeff .word 0xfffffeff - 80013e8: 40020000 .word 0x40020000 + 8001448: 0018 movs r0, r3 + 800144a: 46bd mov sp, r7 + 800144c: b004 add sp, #16 + 800144e: bd80 pop {r7, pc} + 8001450: fffffeff .word 0xfffffeff + 8001454: 40020000 .word 0x40020000 -080013ec : +08001458 : * @param hdma Pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA Channel. * @retval HAL state */ HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma) { - 80013ec: b580 push {r7, lr} - 80013ee: b082 sub sp, #8 - 80013f0: af00 add r7, sp, #0 - 80013f2: 6078 str r0, [r7, #4] + 8001458: b580 push {r7, lr} + 800145a: b082 sub sp, #8 + 800145c: af00 add r7, sp, #0 + 800145e: 6078 str r0, [r7, #4] /* Return DMA handle state */ return hdma->State; - 80013f4: 687b ldr r3, [r7, #4] - 80013f6: 2225 movs r2, #37 @ 0x25 - 80013f8: 5c9b ldrb r3, [r3, r2] - 80013fa: b2db uxtb r3, r3 + 8001460: 687b ldr r3, [r7, #4] + 8001462: 2225 movs r2, #37 @ 0x25 + 8001464: 5c9b ldrb r3, [r3, r2] + 8001466: b2db uxtb r3, r3 } - 80013fc: 0018 movs r0, r3 - 80013fe: 46bd mov sp, r7 - 8001400: b002 add sp, #8 - 8001402: bd80 pop {r7, pc} + 8001468: 0018 movs r0, r3 + 800146a: 46bd mov sp, r7 + 800146c: b002 add sp, #8 + 800146e: bd80 pop {r7, pc} -08001404 : +08001470 : * @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains * the configuration information for the specified GPIO peripheral. * @retval None */ void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) { - 8001404: b580 push {r7, lr} - 8001406: b086 sub sp, #24 - 8001408: af00 add r7, sp, #0 - 800140a: 6078 str r0, [r7, #4] - 800140c: 6039 str r1, [r7, #0] + 8001470: b580 push {r7, lr} + 8001472: b086 sub sp, #24 + 8001474: af00 add r7, sp, #0 + 8001476: 6078 str r0, [r7, #4] + 8001478: 6039 str r1, [r7, #0] uint32_t position = 0x00u; - 800140e: 2300 movs r3, #0 - 8001410: 617b str r3, [r7, #20] + 800147a: 2300 movs r3, #0 + 800147c: 617b str r3, [r7, #20] assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); /* Configure the port pins */ while (((GPIO_Init->Pin) >> position) != 0x00u) - 8001412: e147 b.n 80016a4 + 800147e: e147 b.n 8001710 { /* Get current io position */ iocurrent = (GPIO_Init->Pin) & (1uL << position); - 8001414: 683b ldr r3, [r7, #0] - 8001416: 681b ldr r3, [r3, #0] - 8001418: 2101 movs r1, #1 - 800141a: 697a ldr r2, [r7, #20] - 800141c: 4091 lsls r1, r2 - 800141e: 000a movs r2, r1 - 8001420: 4013 ands r3, r2 - 8001422: 60fb str r3, [r7, #12] + 8001480: 683b ldr r3, [r7, #0] + 8001482: 681b ldr r3, [r3, #0] + 8001484: 2101 movs r1, #1 + 8001486: 697a ldr r2, [r7, #20] + 8001488: 4091 lsls r1, r2 + 800148a: 000a movs r2, r1 + 800148c: 4013 ands r3, r2 + 800148e: 60fb str r3, [r7, #12] if (iocurrent != 0x00u) - 8001424: 68fb ldr r3, [r7, #12] - 8001426: 2b00 cmp r3, #0 - 8001428: d100 bne.n 800142c - 800142a: e138 b.n 800169e + 8001490: 68fb ldr r3, [r7, #12] + 8001492: 2b00 cmp r3, #0 + 8001494: d100 bne.n 8001498 + 8001496: e138 b.n 800170a { /*--------------------- GPIO Mode Configuration ------------------------*/ /* In case of Output or Alternate function mode selection */ if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)) - 800142c: 683b ldr r3, [r7, #0] - 800142e: 685b ldr r3, [r3, #4] - 8001430: 2203 movs r2, #3 - 8001432: 4013 ands r3, r2 - 8001434: 2b01 cmp r3, #1 - 8001436: d005 beq.n 8001444 - 8001438: 683b ldr r3, [r7, #0] - 800143a: 685b ldr r3, [r3, #4] - 800143c: 2203 movs r2, #3 - 800143e: 4013 ands r3, r2 - 8001440: 2b02 cmp r3, #2 - 8001442: d130 bne.n 80014a6 + 8001498: 683b ldr r3, [r7, #0] + 800149a: 685b ldr r3, [r3, #4] + 800149c: 2203 movs r2, #3 + 800149e: 4013 ands r3, r2 + 80014a0: 2b01 cmp r3, #1 + 80014a2: d005 beq.n 80014b0 + 80014a4: 683b ldr r3, [r7, #0] + 80014a6: 685b ldr r3, [r3, #4] + 80014a8: 2203 movs r2, #3 + 80014aa: 4013 ands r3, r2 + 80014ac: 2b02 cmp r3, #2 + 80014ae: d130 bne.n 8001512 { /* Check the Speed parameter */ assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); /* Configure the IO Speed */ temp = GPIOx->OSPEEDR; - 8001444: 687b ldr r3, [r7, #4] - 8001446: 689b ldr r3, [r3, #8] - 8001448: 613b str r3, [r7, #16] + 80014b0: 687b ldr r3, [r7, #4] + 80014b2: 689b ldr r3, [r3, #8] + 80014b4: 613b str r3, [r7, #16] temp &= ~(GPIO_OSPEEDR_OSPEED0 << (position * 2u)); - 800144a: 697b ldr r3, [r7, #20] - 800144c: 005b lsls r3, r3, #1 - 800144e: 2203 movs r2, #3 - 8001450: 409a lsls r2, r3 - 8001452: 0013 movs r3, r2 - 8001454: 43da mvns r2, r3 - 8001456: 693b ldr r3, [r7, #16] - 8001458: 4013 ands r3, r2 - 800145a: 613b str r3, [r7, #16] + 80014b6: 697b ldr r3, [r7, #20] + 80014b8: 005b lsls r3, r3, #1 + 80014ba: 2203 movs r2, #3 + 80014bc: 409a lsls r2, r3 + 80014be: 0013 movs r3, r2 + 80014c0: 43da mvns r2, r3 + 80014c2: 693b ldr r3, [r7, #16] + 80014c4: 4013 ands r3, r2 + 80014c6: 613b str r3, [r7, #16] temp |= (GPIO_Init->Speed << (position * 2u)); - 800145c: 683b ldr r3, [r7, #0] - 800145e: 68da ldr r2, [r3, #12] - 8001460: 697b ldr r3, [r7, #20] - 8001462: 005b lsls r3, r3, #1 - 8001464: 409a lsls r2, r3 - 8001466: 0013 movs r3, r2 - 8001468: 693a ldr r2, [r7, #16] - 800146a: 4313 orrs r3, r2 - 800146c: 613b str r3, [r7, #16] + 80014c8: 683b ldr r3, [r7, #0] + 80014ca: 68da ldr r2, [r3, #12] + 80014cc: 697b ldr r3, [r7, #20] + 80014ce: 005b lsls r3, r3, #1 + 80014d0: 409a lsls r2, r3 + 80014d2: 0013 movs r3, r2 + 80014d4: 693a ldr r2, [r7, #16] + 80014d6: 4313 orrs r3, r2 + 80014d8: 613b str r3, [r7, #16] GPIOx->OSPEEDR = temp; - 800146e: 687b ldr r3, [r7, #4] - 8001470: 693a ldr r2, [r7, #16] - 8001472: 609a str r2, [r3, #8] + 80014da: 687b ldr r3, [r7, #4] + 80014dc: 693a ldr r2, [r7, #16] + 80014de: 609a str r2, [r3, #8] /* Configure the IO Output Type */ temp = GPIOx->OTYPER; - 8001474: 687b ldr r3, [r7, #4] - 8001476: 685b ldr r3, [r3, #4] - 8001478: 613b str r3, [r7, #16] + 80014e0: 687b ldr r3, [r7, #4] + 80014e2: 685b ldr r3, [r3, #4] + 80014e4: 613b str r3, [r7, #16] temp &= ~(GPIO_OTYPER_OT0 << position) ; - 800147a: 2201 movs r2, #1 - 800147c: 697b ldr r3, [r7, #20] - 800147e: 409a lsls r2, r3 - 8001480: 0013 movs r3, r2 - 8001482: 43da mvns r2, r3 - 8001484: 693b ldr r3, [r7, #16] - 8001486: 4013 ands r3, r2 - 8001488: 613b str r3, [r7, #16] + 80014e6: 2201 movs r2, #1 + 80014e8: 697b ldr r3, [r7, #20] + 80014ea: 409a lsls r2, r3 + 80014ec: 0013 movs r3, r2 + 80014ee: 43da mvns r2, r3 + 80014f0: 693b ldr r3, [r7, #16] + 80014f2: 4013 ands r3, r2 + 80014f4: 613b str r3, [r7, #16] temp |= (((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); - 800148a: 683b ldr r3, [r7, #0] - 800148c: 685b ldr r3, [r3, #4] - 800148e: 091b lsrs r3, r3, #4 - 8001490: 2201 movs r2, #1 - 8001492: 401a ands r2, r3 - 8001494: 697b ldr r3, [r7, #20] - 8001496: 409a lsls r2, r3 - 8001498: 0013 movs r3, r2 - 800149a: 693a ldr r2, [r7, #16] - 800149c: 4313 orrs r3, r2 - 800149e: 613b str r3, [r7, #16] + 80014f6: 683b ldr r3, [r7, #0] + 80014f8: 685b ldr r3, [r3, #4] + 80014fa: 091b lsrs r3, r3, #4 + 80014fc: 2201 movs r2, #1 + 80014fe: 401a ands r2, r3 + 8001500: 697b ldr r3, [r7, #20] + 8001502: 409a lsls r2, r3 + 8001504: 0013 movs r3, r2 + 8001506: 693a ldr r2, [r7, #16] + 8001508: 4313 orrs r3, r2 + 800150a: 613b str r3, [r7, #16] GPIOx->OTYPER = temp; - 80014a0: 687b ldr r3, [r7, #4] - 80014a2: 693a ldr r2, [r7, #16] - 80014a4: 605a str r2, [r3, #4] + 800150c: 687b ldr r3, [r7, #4] + 800150e: 693a ldr r2, [r7, #16] + 8001510: 605a str r2, [r3, #4] } if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) - 80014a6: 683b ldr r3, [r7, #0] - 80014a8: 685b ldr r3, [r3, #4] - 80014aa: 2203 movs r2, #3 - 80014ac: 4013 ands r3, r2 - 80014ae: 2b03 cmp r3, #3 - 80014b0: d017 beq.n 80014e2 + 8001512: 683b ldr r3, [r7, #0] + 8001514: 685b ldr r3, [r3, #4] + 8001516: 2203 movs r2, #3 + 8001518: 4013 ands r3, r2 + 800151a: 2b03 cmp r3, #3 + 800151c: d017 beq.n 800154e { /* Check the Pull parameter */ assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); /* Activate the Pull-up or Pull down resistor for the current IO */ temp = GPIOx->PUPDR; - 80014b2: 687b ldr r3, [r7, #4] - 80014b4: 68db ldr r3, [r3, #12] - 80014b6: 613b str r3, [r7, #16] + 800151e: 687b ldr r3, [r7, #4] + 8001520: 68db ldr r3, [r3, #12] + 8001522: 613b str r3, [r7, #16] temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2u)); - 80014b8: 697b ldr r3, [r7, #20] - 80014ba: 005b lsls r3, r3, #1 - 80014bc: 2203 movs r2, #3 - 80014be: 409a lsls r2, r3 - 80014c0: 0013 movs r3, r2 - 80014c2: 43da mvns r2, r3 - 80014c4: 693b ldr r3, [r7, #16] - 80014c6: 4013 ands r3, r2 - 80014c8: 613b str r3, [r7, #16] + 8001524: 697b ldr r3, [r7, #20] + 8001526: 005b lsls r3, r3, #1 + 8001528: 2203 movs r2, #3 + 800152a: 409a lsls r2, r3 + 800152c: 0013 movs r3, r2 + 800152e: 43da mvns r2, r3 + 8001530: 693b ldr r3, [r7, #16] + 8001532: 4013 ands r3, r2 + 8001534: 613b str r3, [r7, #16] temp |= ((GPIO_Init->Pull) << (position * 2u)); - 80014ca: 683b ldr r3, [r7, #0] - 80014cc: 689a ldr r2, [r3, #8] - 80014ce: 697b ldr r3, [r7, #20] - 80014d0: 005b lsls r3, r3, #1 - 80014d2: 409a lsls r2, r3 - 80014d4: 0013 movs r3, r2 - 80014d6: 693a ldr r2, [r7, #16] - 80014d8: 4313 orrs r3, r2 - 80014da: 613b str r3, [r7, #16] + 8001536: 683b ldr r3, [r7, #0] + 8001538: 689a ldr r2, [r3, #8] + 800153a: 697b ldr r3, [r7, #20] + 800153c: 005b lsls r3, r3, #1 + 800153e: 409a lsls r2, r3 + 8001540: 0013 movs r3, r2 + 8001542: 693a ldr r2, [r7, #16] + 8001544: 4313 orrs r3, r2 + 8001546: 613b str r3, [r7, #16] GPIOx->PUPDR = temp; - 80014dc: 687b ldr r3, [r7, #4] - 80014de: 693a ldr r2, [r7, #16] - 80014e0: 60da str r2, [r3, #12] + 8001548: 687b ldr r3, [r7, #4] + 800154a: 693a ldr r2, [r7, #16] + 800154c: 60da str r2, [r3, #12] } /* In case of Alternate function mode selection */ if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) - 80014e2: 683b ldr r3, [r7, #0] - 80014e4: 685b ldr r3, [r3, #4] - 80014e6: 2203 movs r2, #3 - 80014e8: 4013 ands r3, r2 - 80014ea: 2b02 cmp r3, #2 - 80014ec: d123 bne.n 8001536 + 800154e: 683b ldr r3, [r7, #0] + 8001550: 685b ldr r3, [r3, #4] + 8001552: 2203 movs r2, #3 + 8001554: 4013 ands r3, r2 + 8001556: 2b02 cmp r3, #2 + 8001558: d123 bne.n 80015a2 /* Check the Alternate function parameters */ assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); /* Configure Alternate function mapped with the current IO */ temp = GPIOx->AFR[position >> 3u]; - 80014ee: 697b ldr r3, [r7, #20] - 80014f0: 08da lsrs r2, r3, #3 - 80014f2: 687b ldr r3, [r7, #4] - 80014f4: 3208 adds r2, #8 - 80014f6: 0092 lsls r2, r2, #2 - 80014f8: 58d3 ldr r3, [r2, r3] - 80014fa: 613b str r3, [r7, #16] + 800155a: 697b ldr r3, [r7, #20] + 800155c: 08da lsrs r2, r3, #3 + 800155e: 687b ldr r3, [r7, #4] + 8001560: 3208 adds r2, #8 + 8001562: 0092 lsls r2, r2, #2 + 8001564: 58d3 ldr r3, [r2, r3] + 8001566: 613b str r3, [r7, #16] temp &= ~(0xFu << ((position & 0x07u) * 4u)); - 80014fc: 697b ldr r3, [r7, #20] - 80014fe: 2207 movs r2, #7 - 8001500: 4013 ands r3, r2 - 8001502: 009b lsls r3, r3, #2 - 8001504: 220f movs r2, #15 - 8001506: 409a lsls r2, r3 - 8001508: 0013 movs r3, r2 - 800150a: 43da mvns r2, r3 - 800150c: 693b ldr r3, [r7, #16] - 800150e: 4013 ands r3, r2 - 8001510: 613b str r3, [r7, #16] + 8001568: 697b ldr r3, [r7, #20] + 800156a: 2207 movs r2, #7 + 800156c: 4013 ands r3, r2 + 800156e: 009b lsls r3, r3, #2 + 8001570: 220f movs r2, #15 + 8001572: 409a lsls r2, r3 + 8001574: 0013 movs r3, r2 + 8001576: 43da mvns r2, r3 + 8001578: 693b ldr r3, [r7, #16] + 800157a: 4013 ands r3, r2 + 800157c: 613b str r3, [r7, #16] temp |= ((GPIO_Init->Alternate) << ((position & 0x07u) * 4u)); - 8001512: 683b ldr r3, [r7, #0] - 8001514: 691a ldr r2, [r3, #16] - 8001516: 697b ldr r3, [r7, #20] - 8001518: 2107 movs r1, #7 - 800151a: 400b ands r3, r1 - 800151c: 009b lsls r3, r3, #2 - 800151e: 409a lsls r2, r3 - 8001520: 0013 movs r3, r2 - 8001522: 693a ldr r2, [r7, #16] - 8001524: 4313 orrs r3, r2 - 8001526: 613b str r3, [r7, #16] + 800157e: 683b ldr r3, [r7, #0] + 8001580: 691a ldr r2, [r3, #16] + 8001582: 697b ldr r3, [r7, #20] + 8001584: 2107 movs r1, #7 + 8001586: 400b ands r3, r1 + 8001588: 009b lsls r3, r3, #2 + 800158a: 409a lsls r2, r3 + 800158c: 0013 movs r3, r2 + 800158e: 693a ldr r2, [r7, #16] + 8001590: 4313 orrs r3, r2 + 8001592: 613b str r3, [r7, #16] GPIOx->AFR[position >> 3u] = temp; - 8001528: 697b ldr r3, [r7, #20] - 800152a: 08da lsrs r2, r3, #3 - 800152c: 687b ldr r3, [r7, #4] - 800152e: 3208 adds r2, #8 - 8001530: 0092 lsls r2, r2, #2 - 8001532: 6939 ldr r1, [r7, #16] - 8001534: 50d1 str r1, [r2, r3] + 8001594: 697b ldr r3, [r7, #20] + 8001596: 08da lsrs r2, r3, #3 + 8001598: 687b ldr r3, [r7, #4] + 800159a: 3208 adds r2, #8 + 800159c: 0092 lsls r2, r2, #2 + 800159e: 6939 ldr r1, [r7, #16] + 80015a0: 50d1 str r1, [r2, r3] } /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ temp = GPIOx->MODER; - 8001536: 687b ldr r3, [r7, #4] - 8001538: 681b ldr r3, [r3, #0] - 800153a: 613b str r3, [r7, #16] + 80015a2: 687b ldr r3, [r7, #4] + 80015a4: 681b ldr r3, [r3, #0] + 80015a6: 613b str r3, [r7, #16] temp &= ~(GPIO_MODER_MODE0 << (position * 2u)); - 800153c: 697b ldr r3, [r7, #20] - 800153e: 005b lsls r3, r3, #1 - 8001540: 2203 movs r2, #3 - 8001542: 409a lsls r2, r3 - 8001544: 0013 movs r3, r2 - 8001546: 43da mvns r2, r3 - 8001548: 693b ldr r3, [r7, #16] - 800154a: 4013 ands r3, r2 - 800154c: 613b str r3, [r7, #16] + 80015a8: 697b ldr r3, [r7, #20] + 80015aa: 005b lsls r3, r3, #1 + 80015ac: 2203 movs r2, #3 + 80015ae: 409a lsls r2, r3 + 80015b0: 0013 movs r3, r2 + 80015b2: 43da mvns r2, r3 + 80015b4: 693b ldr r3, [r7, #16] + 80015b6: 4013 ands r3, r2 + 80015b8: 613b str r3, [r7, #16] temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2u)); - 800154e: 683b ldr r3, [r7, #0] - 8001550: 685b ldr r3, [r3, #4] - 8001552: 2203 movs r2, #3 - 8001554: 401a ands r2, r3 - 8001556: 697b ldr r3, [r7, #20] - 8001558: 005b lsls r3, r3, #1 - 800155a: 409a lsls r2, r3 - 800155c: 0013 movs r3, r2 - 800155e: 693a ldr r2, [r7, #16] - 8001560: 4313 orrs r3, r2 - 8001562: 613b str r3, [r7, #16] + 80015ba: 683b ldr r3, [r7, #0] + 80015bc: 685b ldr r3, [r3, #4] + 80015be: 2203 movs r2, #3 + 80015c0: 401a ands r2, r3 + 80015c2: 697b ldr r3, [r7, #20] + 80015c4: 005b lsls r3, r3, #1 + 80015c6: 409a lsls r2, r3 + 80015c8: 0013 movs r3, r2 + 80015ca: 693a ldr r2, [r7, #16] + 80015cc: 4313 orrs r3, r2 + 80015ce: 613b str r3, [r7, #16] GPIOx->MODER = temp; - 8001564: 687b ldr r3, [r7, #4] - 8001566: 693a ldr r2, [r7, #16] - 8001568: 601a str r2, [r3, #0] + 80015d0: 687b ldr r3, [r7, #4] + 80015d2: 693a ldr r2, [r7, #16] + 80015d4: 601a str r2, [r3, #0] /*--------------------- EXTI Mode Configuration ------------------------*/ /* Configure the External Interrupt or event for the current IO */ if ((GPIO_Init->Mode & EXTI_MODE) != 0x00u) - 800156a: 683b ldr r3, [r7, #0] - 800156c: 685a ldr r2, [r3, #4] - 800156e: 23c0 movs r3, #192 @ 0xc0 - 8001570: 029b lsls r3, r3, #10 - 8001572: 4013 ands r3, r2 - 8001574: d100 bne.n 8001578 - 8001576: e092 b.n 800169e + 80015d6: 683b ldr r3, [r7, #0] + 80015d8: 685a ldr r2, [r3, #4] + 80015da: 23c0 movs r3, #192 @ 0xc0 + 80015dc: 029b lsls r3, r3, #10 + 80015de: 4013 ands r3, r2 + 80015e0: d100 bne.n 80015e4 + 80015e2: e092 b.n 800170a { temp = EXTI->EXTICR[position >> 2u]; - 8001578: 4a50 ldr r2, [pc, #320] @ (80016bc ) - 800157a: 697b ldr r3, [r7, #20] - 800157c: 089b lsrs r3, r3, #2 - 800157e: 3318 adds r3, #24 - 8001580: 009b lsls r3, r3, #2 - 8001582: 589b ldr r3, [r3, r2] - 8001584: 613b str r3, [r7, #16] + 80015e4: 4a50 ldr r2, [pc, #320] @ (8001728 ) + 80015e6: 697b ldr r3, [r7, #20] + 80015e8: 089b lsrs r3, r3, #2 + 80015ea: 3318 adds r3, #24 + 80015ec: 009b lsls r3, r3, #2 + 80015ee: 589b ldr r3, [r3, r2] + 80015f0: 613b str r3, [r7, #16] temp &= ~(0x0FuL << (8u * (position & 0x03u))); - 8001586: 697b ldr r3, [r7, #20] - 8001588: 2203 movs r2, #3 - 800158a: 4013 ands r3, r2 - 800158c: 00db lsls r3, r3, #3 - 800158e: 220f movs r2, #15 - 8001590: 409a lsls r2, r3 - 8001592: 0013 movs r3, r2 - 8001594: 43da mvns r2, r3 - 8001596: 693b ldr r3, [r7, #16] - 8001598: 4013 ands r3, r2 - 800159a: 613b str r3, [r7, #16] + 80015f2: 697b ldr r3, [r7, #20] + 80015f4: 2203 movs r2, #3 + 80015f6: 4013 ands r3, r2 + 80015f8: 00db lsls r3, r3, #3 + 80015fa: 220f movs r2, #15 + 80015fc: 409a lsls r2, r3 + 80015fe: 0013 movs r3, r2 + 8001600: 43da mvns r2, r3 + 8001602: 693b ldr r3, [r7, #16] + 8001604: 4013 ands r3, r2 + 8001606: 613b str r3, [r7, #16] temp |= (GPIO_GET_INDEX(GPIOx) << (8u * (position & 0x03u))); - 800159c: 687a ldr r2, [r7, #4] - 800159e: 23a0 movs r3, #160 @ 0xa0 - 80015a0: 05db lsls r3, r3, #23 - 80015a2: 429a cmp r2, r3 - 80015a4: d013 beq.n 80015ce - 80015a6: 687b ldr r3, [r7, #4] - 80015a8: 4a45 ldr r2, [pc, #276] @ (80016c0 ) - 80015aa: 4293 cmp r3, r2 - 80015ac: d00d beq.n 80015ca - 80015ae: 687b ldr r3, [r7, #4] - 80015b0: 4a44 ldr r2, [pc, #272] @ (80016c4 ) - 80015b2: 4293 cmp r3, r2 - 80015b4: d007 beq.n 80015c6 - 80015b6: 687b ldr r3, [r7, #4] - 80015b8: 4a43 ldr r2, [pc, #268] @ (80016c8 ) - 80015ba: 4293 cmp r3, r2 - 80015bc: d101 bne.n 80015c2 - 80015be: 2303 movs r3, #3 - 80015c0: e006 b.n 80015d0 - 80015c2: 2305 movs r3, #5 - 80015c4: e004 b.n 80015d0 - 80015c6: 2302 movs r3, #2 - 80015c8: e002 b.n 80015d0 - 80015ca: 2301 movs r3, #1 - 80015cc: e000 b.n 80015d0 - 80015ce: 2300 movs r3, #0 - 80015d0: 697a ldr r2, [r7, #20] - 80015d2: 2103 movs r1, #3 - 80015d4: 400a ands r2, r1 - 80015d6: 00d2 lsls r2, r2, #3 - 80015d8: 4093 lsls r3, r2 - 80015da: 693a ldr r2, [r7, #16] - 80015dc: 4313 orrs r3, r2 - 80015de: 613b str r3, [r7, #16] + 8001608: 687a ldr r2, [r7, #4] + 800160a: 23a0 movs r3, #160 @ 0xa0 + 800160c: 05db lsls r3, r3, #23 + 800160e: 429a cmp r2, r3 + 8001610: d013 beq.n 800163a + 8001612: 687b ldr r3, [r7, #4] + 8001614: 4a45 ldr r2, [pc, #276] @ (800172c ) + 8001616: 4293 cmp r3, r2 + 8001618: d00d beq.n 8001636 + 800161a: 687b ldr r3, [r7, #4] + 800161c: 4a44 ldr r2, [pc, #272] @ (8001730 ) + 800161e: 4293 cmp r3, r2 + 8001620: d007 beq.n 8001632 + 8001622: 687b ldr r3, [r7, #4] + 8001624: 4a43 ldr r2, [pc, #268] @ (8001734 ) + 8001626: 4293 cmp r3, r2 + 8001628: d101 bne.n 800162e + 800162a: 2303 movs r3, #3 + 800162c: e006 b.n 800163c + 800162e: 2305 movs r3, #5 + 8001630: e004 b.n 800163c + 8001632: 2302 movs r3, #2 + 8001634: e002 b.n 800163c + 8001636: 2301 movs r3, #1 + 8001638: e000 b.n 800163c + 800163a: 2300 movs r3, #0 + 800163c: 697a ldr r2, [r7, #20] + 800163e: 2103 movs r1, #3 + 8001640: 400a ands r2, r1 + 8001642: 00d2 lsls r2, r2, #3 + 8001644: 4093 lsls r3, r2 + 8001646: 693a ldr r2, [r7, #16] + 8001648: 4313 orrs r3, r2 + 800164a: 613b str r3, [r7, #16] EXTI->EXTICR[position >> 2u] = temp; - 80015e0: 4936 ldr r1, [pc, #216] @ (80016bc ) - 80015e2: 697b ldr r3, [r7, #20] - 80015e4: 089b lsrs r3, r3, #2 - 80015e6: 3318 adds r3, #24 - 80015e8: 009b lsls r3, r3, #2 - 80015ea: 693a ldr r2, [r7, #16] - 80015ec: 505a str r2, [r3, r1] + 800164c: 4936 ldr r1, [pc, #216] @ (8001728 ) + 800164e: 697b ldr r3, [r7, #20] + 8001650: 089b lsrs r3, r3, #2 + 8001652: 3318 adds r3, #24 + 8001654: 009b lsls r3, r3, #2 + 8001656: 693a ldr r2, [r7, #16] + 8001658: 505a str r2, [r3, r1] /* Clear Rising Falling edge configuration */ temp = EXTI->RTSR1; - 80015ee: 4b33 ldr r3, [pc, #204] @ (80016bc ) - 80015f0: 681b ldr r3, [r3, #0] - 80015f2: 613b str r3, [r7, #16] + 800165a: 4b33 ldr r3, [pc, #204] @ (8001728 ) + 800165c: 681b ldr r3, [r3, #0] + 800165e: 613b str r3, [r7, #16] temp &= ~(iocurrent); - 80015f4: 68fb ldr r3, [r7, #12] - 80015f6: 43da mvns r2, r3 - 80015f8: 693b ldr r3, [r7, #16] - 80015fa: 4013 ands r3, r2 - 80015fc: 613b str r3, [r7, #16] + 8001660: 68fb ldr r3, [r7, #12] + 8001662: 43da mvns r2, r3 + 8001664: 693b ldr r3, [r7, #16] + 8001666: 4013 ands r3, r2 + 8001668: 613b str r3, [r7, #16] if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00u) - 80015fe: 683b ldr r3, [r7, #0] - 8001600: 685a ldr r2, [r3, #4] - 8001602: 2380 movs r3, #128 @ 0x80 - 8001604: 035b lsls r3, r3, #13 - 8001606: 4013 ands r3, r2 - 8001608: d003 beq.n 8001612 + 800166a: 683b ldr r3, [r7, #0] + 800166c: 685a ldr r2, [r3, #4] + 800166e: 2380 movs r3, #128 @ 0x80 + 8001670: 035b lsls r3, r3, #13 + 8001672: 4013 ands r3, r2 + 8001674: d003 beq.n 800167e { temp |= iocurrent; - 800160a: 693a ldr r2, [r7, #16] - 800160c: 68fb ldr r3, [r7, #12] - 800160e: 4313 orrs r3, r2 - 8001610: 613b str r3, [r7, #16] + 8001676: 693a ldr r2, [r7, #16] + 8001678: 68fb ldr r3, [r7, #12] + 800167a: 4313 orrs r3, r2 + 800167c: 613b str r3, [r7, #16] } EXTI->RTSR1 = temp; - 8001612: 4b2a ldr r3, [pc, #168] @ (80016bc ) - 8001614: 693a ldr r2, [r7, #16] - 8001616: 601a str r2, [r3, #0] + 800167e: 4b2a ldr r3, [pc, #168] @ (8001728 ) + 8001680: 693a ldr r2, [r7, #16] + 8001682: 601a str r2, [r3, #0] temp = EXTI->FTSR1; - 8001618: 4b28 ldr r3, [pc, #160] @ (80016bc ) - 800161a: 685b ldr r3, [r3, #4] - 800161c: 613b str r3, [r7, #16] + 8001684: 4b28 ldr r3, [pc, #160] @ (8001728 ) + 8001686: 685b ldr r3, [r3, #4] + 8001688: 613b str r3, [r7, #16] temp &= ~(iocurrent); - 800161e: 68fb ldr r3, [r7, #12] - 8001620: 43da mvns r2, r3 - 8001622: 693b ldr r3, [r7, #16] - 8001624: 4013 ands r3, r2 - 8001626: 613b str r3, [r7, #16] + 800168a: 68fb ldr r3, [r7, #12] + 800168c: 43da mvns r2, r3 + 800168e: 693b ldr r3, [r7, #16] + 8001690: 4013 ands r3, r2 + 8001692: 613b str r3, [r7, #16] if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00u) - 8001628: 683b ldr r3, [r7, #0] - 800162a: 685a ldr r2, [r3, #4] - 800162c: 2380 movs r3, #128 @ 0x80 - 800162e: 039b lsls r3, r3, #14 - 8001630: 4013 ands r3, r2 - 8001632: d003 beq.n 800163c + 8001694: 683b ldr r3, [r7, #0] + 8001696: 685a ldr r2, [r3, #4] + 8001698: 2380 movs r3, #128 @ 0x80 + 800169a: 039b lsls r3, r3, #14 + 800169c: 4013 ands r3, r2 + 800169e: d003 beq.n 80016a8 { temp |= iocurrent; - 8001634: 693a ldr r2, [r7, #16] - 8001636: 68fb ldr r3, [r7, #12] - 8001638: 4313 orrs r3, r2 - 800163a: 613b str r3, [r7, #16] + 80016a0: 693a ldr r2, [r7, #16] + 80016a2: 68fb ldr r3, [r7, #12] + 80016a4: 4313 orrs r3, r2 + 80016a6: 613b str r3, [r7, #16] } EXTI->FTSR1 = temp; - 800163c: 4b1f ldr r3, [pc, #124] @ (80016bc ) - 800163e: 693a ldr r2, [r7, #16] - 8001640: 605a str r2, [r3, #4] + 80016a8: 4b1f ldr r3, [pc, #124] @ (8001728 ) + 80016aa: 693a ldr r2, [r7, #16] + 80016ac: 605a str r2, [r3, #4] /* Clear EXTI line configuration */ temp = EXTI->EMR1; - 8001642: 4a1e ldr r2, [pc, #120] @ (80016bc ) - 8001644: 2384 movs r3, #132 @ 0x84 - 8001646: 58d3 ldr r3, [r2, r3] - 8001648: 613b str r3, [r7, #16] + 80016ae: 4a1e ldr r2, [pc, #120] @ (8001728 ) + 80016b0: 2384 movs r3, #132 @ 0x84 + 80016b2: 58d3 ldr r3, [r2, r3] + 80016b4: 613b str r3, [r7, #16] temp &= ~(iocurrent); - 800164a: 68fb ldr r3, [r7, #12] - 800164c: 43da mvns r2, r3 - 800164e: 693b ldr r3, [r7, #16] - 8001650: 4013 ands r3, r2 - 8001652: 613b str r3, [r7, #16] + 80016b6: 68fb ldr r3, [r7, #12] + 80016b8: 43da mvns r2, r3 + 80016ba: 693b ldr r3, [r7, #16] + 80016bc: 4013 ands r3, r2 + 80016be: 613b str r3, [r7, #16] if ((GPIO_Init->Mode & EXTI_EVT) != 0x00u) - 8001654: 683b ldr r3, [r7, #0] - 8001656: 685a ldr r2, [r3, #4] - 8001658: 2380 movs r3, #128 @ 0x80 - 800165a: 029b lsls r3, r3, #10 - 800165c: 4013 ands r3, r2 - 800165e: d003 beq.n 8001668 + 80016c0: 683b ldr r3, [r7, #0] + 80016c2: 685a ldr r2, [r3, #4] + 80016c4: 2380 movs r3, #128 @ 0x80 + 80016c6: 029b lsls r3, r3, #10 + 80016c8: 4013 ands r3, r2 + 80016ca: d003 beq.n 80016d4 { temp |= iocurrent; - 8001660: 693a ldr r2, [r7, #16] - 8001662: 68fb ldr r3, [r7, #12] - 8001664: 4313 orrs r3, r2 - 8001666: 613b str r3, [r7, #16] + 80016cc: 693a ldr r2, [r7, #16] + 80016ce: 68fb ldr r3, [r7, #12] + 80016d0: 4313 orrs r3, r2 + 80016d2: 613b str r3, [r7, #16] } EXTI->EMR1 = temp; - 8001668: 4914 ldr r1, [pc, #80] @ (80016bc ) - 800166a: 2284 movs r2, #132 @ 0x84 - 800166c: 693b ldr r3, [r7, #16] - 800166e: 508b str r3, [r1, r2] + 80016d4: 4914 ldr r1, [pc, #80] @ (8001728 ) + 80016d6: 2284 movs r2, #132 @ 0x84 + 80016d8: 693b ldr r3, [r7, #16] + 80016da: 508b str r3, [r1, r2] temp = EXTI->IMR1; - 8001670: 4a12 ldr r2, [pc, #72] @ (80016bc ) - 8001672: 2380 movs r3, #128 @ 0x80 - 8001674: 58d3 ldr r3, [r2, r3] - 8001676: 613b str r3, [r7, #16] + 80016dc: 4a12 ldr r2, [pc, #72] @ (8001728 ) + 80016de: 2380 movs r3, #128 @ 0x80 + 80016e0: 58d3 ldr r3, [r2, r3] + 80016e2: 613b str r3, [r7, #16] temp &= ~(iocurrent); - 8001678: 68fb ldr r3, [r7, #12] - 800167a: 43da mvns r2, r3 - 800167c: 693b ldr r3, [r7, #16] - 800167e: 4013 ands r3, r2 - 8001680: 613b str r3, [r7, #16] + 80016e4: 68fb ldr r3, [r7, #12] + 80016e6: 43da mvns r2, r3 + 80016e8: 693b ldr r3, [r7, #16] + 80016ea: 4013 ands r3, r2 + 80016ec: 613b str r3, [r7, #16] if ((GPIO_Init->Mode & EXTI_IT) != 0x00u) - 8001682: 683b ldr r3, [r7, #0] - 8001684: 685a ldr r2, [r3, #4] - 8001686: 2380 movs r3, #128 @ 0x80 - 8001688: 025b lsls r3, r3, #9 - 800168a: 4013 ands r3, r2 - 800168c: d003 beq.n 8001696 + 80016ee: 683b ldr r3, [r7, #0] + 80016f0: 685a ldr r2, [r3, #4] + 80016f2: 2380 movs r3, #128 @ 0x80 + 80016f4: 025b lsls r3, r3, #9 + 80016f6: 4013 ands r3, r2 + 80016f8: d003 beq.n 8001702 { temp |= iocurrent; - 800168e: 693a ldr r2, [r7, #16] - 8001690: 68fb ldr r3, [r7, #12] - 8001692: 4313 orrs r3, r2 - 8001694: 613b str r3, [r7, #16] + 80016fa: 693a ldr r2, [r7, #16] + 80016fc: 68fb ldr r3, [r7, #12] + 80016fe: 4313 orrs r3, r2 + 8001700: 613b str r3, [r7, #16] } EXTI->IMR1 = temp; - 8001696: 4909 ldr r1, [pc, #36] @ (80016bc ) - 8001698: 2280 movs r2, #128 @ 0x80 - 800169a: 693b ldr r3, [r7, #16] - 800169c: 508b str r3, [r1, r2] + 8001702: 4909 ldr r1, [pc, #36] @ (8001728 ) + 8001704: 2280 movs r2, #128 @ 0x80 + 8001706: 693b ldr r3, [r7, #16] + 8001708: 508b str r3, [r1, r2] } } position++; - 800169e: 697b ldr r3, [r7, #20] - 80016a0: 3301 adds r3, #1 - 80016a2: 617b str r3, [r7, #20] + 800170a: 697b ldr r3, [r7, #20] + 800170c: 3301 adds r3, #1 + 800170e: 617b str r3, [r7, #20] while (((GPIO_Init->Pin) >> position) != 0x00u) - 80016a4: 683b ldr r3, [r7, #0] - 80016a6: 681a ldr r2, [r3, #0] - 80016a8: 697b ldr r3, [r7, #20] - 80016aa: 40da lsrs r2, r3 - 80016ac: 1e13 subs r3, r2, #0 - 80016ae: d000 beq.n 80016b2 - 80016b0: e6b0 b.n 8001414 + 8001710: 683b ldr r3, [r7, #0] + 8001712: 681a ldr r2, [r3, #0] + 8001714: 697b ldr r3, [r7, #20] + 8001716: 40da lsrs r2, r3 + 8001718: 1e13 subs r3, r2, #0 + 800171a: d000 beq.n 800171e + 800171c: e6b0 b.n 8001480 } } - 80016b2: 46c0 nop @ (mov r8, r8) - 80016b4: 46c0 nop @ (mov r8, r8) - 80016b6: 46bd mov sp, r7 - 80016b8: b006 add sp, #24 - 80016ba: bd80 pop {r7, pc} - 80016bc: 40021800 .word 0x40021800 - 80016c0: 50000400 .word 0x50000400 - 80016c4: 50000800 .word 0x50000800 - 80016c8: 50000c00 .word 0x50000c00 + 800171e: 46c0 nop @ (mov r8, r8) + 8001720: 46c0 nop @ (mov r8, r8) + 8001722: 46bd mov sp, r7 + 8001724: b006 add sp, #24 + 8001726: bd80 pop {r7, pc} + 8001728: 40021800 .word 0x40021800 + 800172c: 50000400 .word 0x50000400 + 8001730: 50000800 .word 0x50000800 + 8001734: 50000c00 .word 0x50000c00 -080016cc : +08001738 : * @param GPIO_Pin specifies the port bit to read. * This parameter can be any combination of GPIO_Pin_x where x can be (0..15). * @retval The input port pin value. */ GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) { - 80016cc: b580 push {r7, lr} - 80016ce: b084 sub sp, #16 - 80016d0: af00 add r7, sp, #0 - 80016d2: 6078 str r0, [r7, #4] - 80016d4: 000a movs r2, r1 - 80016d6: 1cbb adds r3, r7, #2 - 80016d8: 801a strh r2, [r3, #0] + 8001738: b580 push {r7, lr} + 800173a: b084 sub sp, #16 + 800173c: af00 add r7, sp, #0 + 800173e: 6078 str r0, [r7, #4] + 8001740: 000a movs r2, r1 + 8001742: 1cbb adds r3, r7, #2 + 8001744: 801a strh r2, [r3, #0] GPIO_PinState bitstatus; /* Check the parameters */ assert_param(IS_GPIO_PIN(GPIO_Pin)); if ((GPIOx->IDR & GPIO_Pin) != 0x00u) - 80016da: 687b ldr r3, [r7, #4] - 80016dc: 691b ldr r3, [r3, #16] - 80016de: 1cba adds r2, r7, #2 - 80016e0: 8812 ldrh r2, [r2, #0] - 80016e2: 4013 ands r3, r2 - 80016e4: d004 beq.n 80016f0 + 8001746: 687b ldr r3, [r7, #4] + 8001748: 691b ldr r3, [r3, #16] + 800174a: 1cba adds r2, r7, #2 + 800174c: 8812 ldrh r2, [r2, #0] + 800174e: 4013 ands r3, r2 + 8001750: d004 beq.n 800175c { bitstatus = GPIO_PIN_SET; - 80016e6: 230f movs r3, #15 - 80016e8: 18fb adds r3, r7, r3 - 80016ea: 2201 movs r2, #1 - 80016ec: 701a strb r2, [r3, #0] - 80016ee: e003 b.n 80016f8 + 8001752: 230f movs r3, #15 + 8001754: 18fb adds r3, r7, r3 + 8001756: 2201 movs r2, #1 + 8001758: 701a strb r2, [r3, #0] + 800175a: e003 b.n 8001764 } else { bitstatus = GPIO_PIN_RESET; - 80016f0: 230f movs r3, #15 - 80016f2: 18fb adds r3, r7, r3 - 80016f4: 2200 movs r2, #0 - 80016f6: 701a strb r2, [r3, #0] + 800175c: 230f movs r3, #15 + 800175e: 18fb adds r3, r7, r3 + 8001760: 2200 movs r2, #0 + 8001762: 701a strb r2, [r3, #0] } return bitstatus; - 80016f8: 230f movs r3, #15 - 80016fa: 18fb adds r3, r7, r3 - 80016fc: 781b ldrb r3, [r3, #0] + 8001764: 230f movs r3, #15 + 8001766: 18fb adds r3, r7, r3 + 8001768: 781b ldrb r3, [r3, #0] } - 80016fe: 0018 movs r0, r3 - 8001700: 46bd mov sp, r7 - 8001702: b004 add sp, #16 - 8001704: bd80 pop {r7, pc} + 800176a: 0018 movs r0, r3 + 800176c: 46bd mov sp, r7 + 800176e: b004 add sp, #16 + 8001770: bd80 pop {r7, pc} -08001706 : +08001772 : * @arg GPIO_PIN_RESET: to clear the port pin * @arg GPIO_PIN_SET: to set the port pin * @retval None */ void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) { - 8001706: b580 push {r7, lr} - 8001708: b082 sub sp, #8 - 800170a: af00 add r7, sp, #0 - 800170c: 6078 str r0, [r7, #4] - 800170e: 0008 movs r0, r1 - 8001710: 0011 movs r1, r2 - 8001712: 1cbb adds r3, r7, #2 - 8001714: 1c02 adds r2, r0, #0 - 8001716: 801a strh r2, [r3, #0] - 8001718: 1c7b adds r3, r7, #1 - 800171a: 1c0a adds r2, r1, #0 - 800171c: 701a strb r2, [r3, #0] + 8001772: b580 push {r7, lr} + 8001774: b082 sub sp, #8 + 8001776: af00 add r7, sp, #0 + 8001778: 6078 str r0, [r7, #4] + 800177a: 0008 movs r0, r1 + 800177c: 0011 movs r1, r2 + 800177e: 1cbb adds r3, r7, #2 + 8001780: 1c02 adds r2, r0, #0 + 8001782: 801a strh r2, [r3, #0] + 8001784: 1c7b adds r3, r7, #1 + 8001786: 1c0a adds r2, r1, #0 + 8001788: 701a strb r2, [r3, #0] /* Check the parameters */ assert_param(IS_GPIO_PIN(GPIO_Pin)); assert_param(IS_GPIO_PIN_ACTION(PinState)); if (PinState != GPIO_PIN_RESET) - 800171e: 1c7b adds r3, r7, #1 - 8001720: 781b ldrb r3, [r3, #0] - 8001722: 2b00 cmp r3, #0 - 8001724: d004 beq.n 8001730 + 800178a: 1c7b adds r3, r7, #1 + 800178c: 781b ldrb r3, [r3, #0] + 800178e: 2b00 cmp r3, #0 + 8001790: d004 beq.n 800179c { GPIOx->BSRR = (uint32_t)GPIO_Pin; - 8001726: 1cbb adds r3, r7, #2 - 8001728: 881a ldrh r2, [r3, #0] - 800172a: 687b ldr r3, [r7, #4] - 800172c: 619a str r2, [r3, #24] + 8001792: 1cbb adds r3, r7, #2 + 8001794: 881a ldrh r2, [r3, #0] + 8001796: 687b ldr r3, [r7, #4] + 8001798: 619a str r2, [r3, #24] } else { GPIOx->BRR = (uint32_t)GPIO_Pin; } } - 800172e: e003 b.n 8001738 + 800179a: e003 b.n 80017a4 GPIOx->BRR = (uint32_t)GPIO_Pin; - 8001730: 1cbb adds r3, r7, #2 - 8001732: 881a ldrh r2, [r3, #0] - 8001734: 687b ldr r3, [r7, #4] - 8001736: 629a str r2, [r3, #40] @ 0x28 + 800179c: 1cbb adds r3, r7, #2 + 800179e: 881a ldrh r2, [r3, #0] + 80017a0: 687b ldr r3, [r7, #4] + 80017a2: 629a str r2, [r3, #40] @ 0x28 } - 8001738: 46c0 nop @ (mov r8, r8) - 800173a: 46bd mov sp, r7 - 800173c: b002 add sp, #8 - 800173e: bd80 pop {r7, pc} + 80017a4: 46c0 nop @ (mov r8, r8) + 80017a6: 46bd mov sp, r7 + 80017a8: b002 add sp, #8 + 80017aa: bd80 pop {r7, pc} -08001740 : +080017ac : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval HAL status */ HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c) { - 8001740: b580 push {r7, lr} - 8001742: b082 sub sp, #8 - 8001744: af00 add r7, sp, #0 - 8001746: 6078 str r0, [r7, #4] + 80017ac: b580 push {r7, lr} + 80017ae: b082 sub sp, #8 + 80017b0: af00 add r7, sp, #0 + 80017b2: 6078 str r0, [r7, #4] /* Check the I2C handle allocation */ if (hi2c == NULL) - 8001748: 687b ldr r3, [r7, #4] - 800174a: 2b00 cmp r3, #0 - 800174c: d101 bne.n 8001752 + 80017b4: 687b ldr r3, [r7, #4] + 80017b6: 2b00 cmp r3, #0 + 80017b8: d101 bne.n 80017be { return HAL_ERROR; - 800174e: 2301 movs r3, #1 - 8001750: e08f b.n 8001872 + 80017ba: 2301 movs r3, #1 + 80017bc: e08f b.n 80018de assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2)); assert_param(IS_I2C_OWN_ADDRESS2_MASK(hi2c->Init.OwnAddress2Masks)); assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode)); assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode)); if (hi2c->State == HAL_I2C_STATE_RESET) - 8001752: 687b ldr r3, [r7, #4] - 8001754: 2241 movs r2, #65 @ 0x41 - 8001756: 5c9b ldrb r3, [r3, r2] - 8001758: b2db uxtb r3, r3 - 800175a: 2b00 cmp r3, #0 - 800175c: d107 bne.n 800176e + 80017be: 687b ldr r3, [r7, #4] + 80017c0: 2241 movs r2, #65 @ 0x41 + 80017c2: 5c9b ldrb r3, [r3, r2] + 80017c4: b2db uxtb r3, r3 + 80017c6: 2b00 cmp r3, #0 + 80017c8: d107 bne.n 80017da { /* Allocate lock resource and initialize it */ hi2c->Lock = HAL_UNLOCKED; - 800175e: 687b ldr r3, [r7, #4] - 8001760: 2240 movs r2, #64 @ 0x40 - 8001762: 2100 movs r1, #0 - 8001764: 5499 strb r1, [r3, r2] + 80017ca: 687b ldr r3, [r7, #4] + 80017cc: 2240 movs r2, #64 @ 0x40 + 80017ce: 2100 movs r1, #0 + 80017d0: 5499 strb r1, [r3, r2] /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */ hi2c->MspInitCallback(hi2c); #else /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */ HAL_I2C_MspInit(hi2c); - 8001766: 687b ldr r3, [r7, #4] - 8001768: 0018 movs r0, r3 - 800176a: f7ff fb2f bl 8000dcc + 80017d2: 687b ldr r3, [r7, #4] + 80017d4: 0018 movs r0, r3 + 80017d6: f7ff fb2f bl 8000e38 #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ } hi2c->State = HAL_I2C_STATE_BUSY; - 800176e: 687b ldr r3, [r7, #4] - 8001770: 2241 movs r2, #65 @ 0x41 - 8001772: 2124 movs r1, #36 @ 0x24 - 8001774: 5499 strb r1, [r3, r2] + 80017da: 687b ldr r3, [r7, #4] + 80017dc: 2241 movs r2, #65 @ 0x41 + 80017de: 2124 movs r1, #36 @ 0x24 + 80017e0: 5499 strb r1, [r3, r2] /* Disable the selected I2C peripheral */ __HAL_I2C_DISABLE(hi2c); - 8001776: 687b ldr r3, [r7, #4] - 8001778: 681b ldr r3, [r3, #0] - 800177a: 681a ldr r2, [r3, #0] - 800177c: 687b ldr r3, [r7, #4] - 800177e: 681b ldr r3, [r3, #0] - 8001780: 2101 movs r1, #1 - 8001782: 438a bics r2, r1 - 8001784: 601a str r2, [r3, #0] + 80017e2: 687b ldr r3, [r7, #4] + 80017e4: 681b ldr r3, [r3, #0] + 80017e6: 681a ldr r2, [r3, #0] + 80017e8: 687b ldr r3, [r7, #4] + 80017ea: 681b ldr r3, [r3, #0] + 80017ec: 2101 movs r1, #1 + 80017ee: 438a bics r2, r1 + 80017f0: 601a str r2, [r3, #0] /*---------------------------- I2Cx TIMINGR Configuration ------------------*/ /* Configure I2Cx: Frequency range */ hi2c->Instance->TIMINGR = hi2c->Init.Timing & TIMING_CLEAR_MASK; - 8001786: 687b ldr r3, [r7, #4] - 8001788: 685a ldr r2, [r3, #4] - 800178a: 687b ldr r3, [r7, #4] - 800178c: 681b ldr r3, [r3, #0] - 800178e: 493b ldr r1, [pc, #236] @ (800187c ) - 8001790: 400a ands r2, r1 - 8001792: 611a str r2, [r3, #16] + 80017f2: 687b ldr r3, [r7, #4] + 80017f4: 685a ldr r2, [r3, #4] + 80017f6: 687b ldr r3, [r7, #4] + 80017f8: 681b ldr r3, [r3, #0] + 80017fa: 493b ldr r1, [pc, #236] @ (80018e8 ) + 80017fc: 400a ands r2, r1 + 80017fe: 611a str r2, [r3, #16] /*---------------------------- I2Cx OAR1 Configuration ---------------------*/ /* Disable Own Address1 before set the Own Address1 configuration */ hi2c->Instance->OAR1 &= ~I2C_OAR1_OA1EN; - 8001794: 687b ldr r3, [r7, #4] - 8001796: 681b ldr r3, [r3, #0] - 8001798: 689a ldr r2, [r3, #8] - 800179a: 687b ldr r3, [r7, #4] - 800179c: 681b ldr r3, [r3, #0] - 800179e: 4938 ldr r1, [pc, #224] @ (8001880 ) - 80017a0: 400a ands r2, r1 - 80017a2: 609a str r2, [r3, #8] + 8001800: 687b ldr r3, [r7, #4] + 8001802: 681b ldr r3, [r3, #0] + 8001804: 689a ldr r2, [r3, #8] + 8001806: 687b ldr r3, [r7, #4] + 8001808: 681b ldr r3, [r3, #0] + 800180a: 4938 ldr r1, [pc, #224] @ (80018ec ) + 800180c: 400a ands r2, r1 + 800180e: 609a str r2, [r3, #8] /* Configure I2Cx: Own Address1 and ack own address1 mode */ if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_7BIT) - 80017a4: 687b ldr r3, [r7, #4] - 80017a6: 68db ldr r3, [r3, #12] - 80017a8: 2b01 cmp r3, #1 - 80017aa: d108 bne.n 80017be + 8001810: 687b ldr r3, [r7, #4] + 8001812: 68db ldr r3, [r3, #12] + 8001814: 2b01 cmp r3, #1 + 8001816: d108 bne.n 800182a { hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | hi2c->Init.OwnAddress1); - 80017ac: 687b ldr r3, [r7, #4] - 80017ae: 689a ldr r2, [r3, #8] - 80017b0: 687b ldr r3, [r7, #4] - 80017b2: 681b ldr r3, [r3, #0] - 80017b4: 2180 movs r1, #128 @ 0x80 - 80017b6: 0209 lsls r1, r1, #8 - 80017b8: 430a orrs r2, r1 - 80017ba: 609a str r2, [r3, #8] - 80017bc: e007 b.n 80017ce + 8001818: 687b ldr r3, [r7, #4] + 800181a: 689a ldr r2, [r3, #8] + 800181c: 687b ldr r3, [r7, #4] + 800181e: 681b ldr r3, [r3, #0] + 8001820: 2180 movs r1, #128 @ 0x80 + 8001822: 0209 lsls r1, r1, #8 + 8001824: 430a orrs r2, r1 + 8001826: 609a str r2, [r3, #8] + 8001828: e007 b.n 800183a } else /* I2C_ADDRESSINGMODE_10BIT */ { hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | I2C_OAR1_OA1MODE | hi2c->Init.OwnAddress1); - 80017be: 687b ldr r3, [r7, #4] - 80017c0: 689a ldr r2, [r3, #8] - 80017c2: 687b ldr r3, [r7, #4] - 80017c4: 681b ldr r3, [r3, #0] - 80017c6: 2184 movs r1, #132 @ 0x84 - 80017c8: 0209 lsls r1, r1, #8 - 80017ca: 430a orrs r2, r1 - 80017cc: 609a str r2, [r3, #8] + 800182a: 687b ldr r3, [r7, #4] + 800182c: 689a ldr r2, [r3, #8] + 800182e: 687b ldr r3, [r7, #4] + 8001830: 681b ldr r3, [r3, #0] + 8001832: 2184 movs r1, #132 @ 0x84 + 8001834: 0209 lsls r1, r1, #8 + 8001836: 430a orrs r2, r1 + 8001838: 609a str r2, [r3, #8] } /*---------------------------- I2Cx CR2 Configuration ----------------------*/ /* Configure I2Cx: Addressing Master mode */ if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) - 80017ce: 687b ldr r3, [r7, #4] - 80017d0: 68db ldr r3, [r3, #12] - 80017d2: 2b02 cmp r3, #2 - 80017d4: d109 bne.n 80017ea + 800183a: 687b ldr r3, [r7, #4] + 800183c: 68db ldr r3, [r3, #12] + 800183e: 2b02 cmp r3, #2 + 8001840: d109 bne.n 8001856 { SET_BIT(hi2c->Instance->CR2, I2C_CR2_ADD10); - 80017d6: 687b ldr r3, [r7, #4] - 80017d8: 681b ldr r3, [r3, #0] - 80017da: 685a ldr r2, [r3, #4] - 80017dc: 687b ldr r3, [r7, #4] - 80017de: 681b ldr r3, [r3, #0] - 80017e0: 2180 movs r1, #128 @ 0x80 - 80017e2: 0109 lsls r1, r1, #4 - 80017e4: 430a orrs r2, r1 - 80017e6: 605a str r2, [r3, #4] - 80017e8: e007 b.n 80017fa + 8001842: 687b ldr r3, [r7, #4] + 8001844: 681b ldr r3, [r3, #0] + 8001846: 685a ldr r2, [r3, #4] + 8001848: 687b ldr r3, [r7, #4] + 800184a: 681b ldr r3, [r3, #0] + 800184c: 2180 movs r1, #128 @ 0x80 + 800184e: 0109 lsls r1, r1, #4 + 8001850: 430a orrs r2, r1 + 8001852: 605a str r2, [r3, #4] + 8001854: e007 b.n 8001866 } else { /* Clear the I2C ADD10 bit */ CLEAR_BIT(hi2c->Instance->CR2, I2C_CR2_ADD10); - 80017ea: 687b ldr r3, [r7, #4] - 80017ec: 681b ldr r3, [r3, #0] - 80017ee: 685a ldr r2, [r3, #4] - 80017f0: 687b ldr r3, [r7, #4] - 80017f2: 681b ldr r3, [r3, #0] - 80017f4: 4923 ldr r1, [pc, #140] @ (8001884 ) - 80017f6: 400a ands r2, r1 - 80017f8: 605a str r2, [r3, #4] + 8001856: 687b ldr r3, [r7, #4] + 8001858: 681b ldr r3, [r3, #0] + 800185a: 685a ldr r2, [r3, #4] + 800185c: 687b ldr r3, [r7, #4] + 800185e: 681b ldr r3, [r3, #0] + 8001860: 4923 ldr r1, [pc, #140] @ (80018f0 ) + 8001862: 400a ands r2, r1 + 8001864: 605a str r2, [r3, #4] } /* Enable the AUTOEND by default, and enable NACK (should be disable only during Slave process */ hi2c->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK); - 80017fa: 687b ldr r3, [r7, #4] - 80017fc: 681b ldr r3, [r3, #0] - 80017fe: 685a ldr r2, [r3, #4] - 8001800: 687b ldr r3, [r7, #4] - 8001802: 681b ldr r3, [r3, #0] - 8001804: 4920 ldr r1, [pc, #128] @ (8001888 ) - 8001806: 430a orrs r2, r1 - 8001808: 605a str r2, [r3, #4] + 8001866: 687b ldr r3, [r7, #4] + 8001868: 681b ldr r3, [r3, #0] + 800186a: 685a ldr r2, [r3, #4] + 800186c: 687b ldr r3, [r7, #4] + 800186e: 681b ldr r3, [r3, #0] + 8001870: 4920 ldr r1, [pc, #128] @ (80018f4 ) + 8001872: 430a orrs r2, r1 + 8001874: 605a str r2, [r3, #4] /*---------------------------- I2Cx OAR2 Configuration ---------------------*/ /* Disable Own Address2 before set the Own Address2 configuration */ hi2c->Instance->OAR2 &= ~I2C_DUALADDRESS_ENABLE; - 800180a: 687b ldr r3, [r7, #4] - 800180c: 681b ldr r3, [r3, #0] - 800180e: 68da ldr r2, [r3, #12] - 8001810: 687b ldr r3, [r7, #4] - 8001812: 681b ldr r3, [r3, #0] - 8001814: 491a ldr r1, [pc, #104] @ (8001880 ) - 8001816: 400a ands r2, r1 - 8001818: 60da str r2, [r3, #12] + 8001876: 687b ldr r3, [r7, #4] + 8001878: 681b ldr r3, [r3, #0] + 800187a: 68da ldr r2, [r3, #12] + 800187c: 687b ldr r3, [r7, #4] + 800187e: 681b ldr r3, [r3, #0] + 8001880: 491a ldr r1, [pc, #104] @ (80018ec ) + 8001882: 400a ands r2, r1 + 8001884: 60da str r2, [r3, #12] /* Configure I2Cx: Dual mode and Own Address2 */ hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ - 800181a: 687b ldr r3, [r7, #4] - 800181c: 691a ldr r2, [r3, #16] - 800181e: 687b ldr r3, [r7, #4] - 8001820: 695b ldr r3, [r3, #20] - 8001822: 431a orrs r2, r3 - 8001824: 0011 movs r1, r2 + 8001886: 687b ldr r3, [r7, #4] + 8001888: 691a ldr r2, [r3, #16] + 800188a: 687b ldr r3, [r7, #4] + 800188c: 695b ldr r3, [r3, #20] + 800188e: 431a orrs r2, r3 + 8001890: 0011 movs r1, r2 (hi2c->Init.OwnAddress2Masks << 8)); - 8001826: 687b ldr r3, [r7, #4] - 8001828: 699b ldr r3, [r3, #24] - 800182a: 021a lsls r2, r3, #8 + 8001892: 687b ldr r3, [r7, #4] + 8001894: 699b ldr r3, [r3, #24] + 8001896: 021a lsls r2, r3, #8 hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ - 800182c: 687b ldr r3, [r7, #4] - 800182e: 681b ldr r3, [r3, #0] - 8001830: 430a orrs r2, r1 - 8001832: 60da str r2, [r3, #12] + 8001898: 687b ldr r3, [r7, #4] + 800189a: 681b ldr r3, [r3, #0] + 800189c: 430a orrs r2, r1 + 800189e: 60da str r2, [r3, #12] /*---------------------------- I2Cx CR1 Configuration ----------------------*/ /* Configure I2Cx: Generalcall and NoStretch mode */ hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode); - 8001834: 687b ldr r3, [r7, #4] - 8001836: 69d9 ldr r1, [r3, #28] - 8001838: 687b ldr r3, [r7, #4] - 800183a: 6a1a ldr r2, [r3, #32] - 800183c: 687b ldr r3, [r7, #4] - 800183e: 681b ldr r3, [r3, #0] - 8001840: 430a orrs r2, r1 - 8001842: 601a str r2, [r3, #0] + 80018a0: 687b ldr r3, [r7, #4] + 80018a2: 69d9 ldr r1, [r3, #28] + 80018a4: 687b ldr r3, [r7, #4] + 80018a6: 6a1a ldr r2, [r3, #32] + 80018a8: 687b ldr r3, [r7, #4] + 80018aa: 681b ldr r3, [r3, #0] + 80018ac: 430a orrs r2, r1 + 80018ae: 601a str r2, [r3, #0] /* Enable the selected I2C peripheral */ __HAL_I2C_ENABLE(hi2c); - 8001844: 687b ldr r3, [r7, #4] - 8001846: 681b ldr r3, [r3, #0] - 8001848: 681a ldr r2, [r3, #0] - 800184a: 687b ldr r3, [r7, #4] - 800184c: 681b ldr r3, [r3, #0] - 800184e: 2101 movs r1, #1 - 8001850: 430a orrs r2, r1 - 8001852: 601a str r2, [r3, #0] + 80018b0: 687b ldr r3, [r7, #4] + 80018b2: 681b ldr r3, [r3, #0] + 80018b4: 681a ldr r2, [r3, #0] + 80018b6: 687b ldr r3, [r7, #4] + 80018b8: 681b ldr r3, [r3, #0] + 80018ba: 2101 movs r1, #1 + 80018bc: 430a orrs r2, r1 + 80018be: 601a str r2, [r3, #0] hi2c->ErrorCode = HAL_I2C_ERROR_NONE; - 8001854: 687b ldr r3, [r7, #4] - 8001856: 2200 movs r2, #0 - 8001858: 645a str r2, [r3, #68] @ 0x44 + 80018c0: 687b ldr r3, [r7, #4] + 80018c2: 2200 movs r2, #0 + 80018c4: 645a str r2, [r3, #68] @ 0x44 hi2c->State = HAL_I2C_STATE_READY; - 800185a: 687b ldr r3, [r7, #4] - 800185c: 2241 movs r2, #65 @ 0x41 - 800185e: 2120 movs r1, #32 - 8001860: 5499 strb r1, [r3, r2] + 80018c6: 687b ldr r3, [r7, #4] + 80018c8: 2241 movs r2, #65 @ 0x41 + 80018ca: 2120 movs r1, #32 + 80018cc: 5499 strb r1, [r3, r2] hi2c->PreviousState = I2C_STATE_NONE; - 8001862: 687b ldr r3, [r7, #4] - 8001864: 2200 movs r2, #0 - 8001866: 631a str r2, [r3, #48] @ 0x30 + 80018ce: 687b ldr r3, [r7, #4] + 80018d0: 2200 movs r2, #0 + 80018d2: 631a str r2, [r3, #48] @ 0x30 hi2c->Mode = HAL_I2C_MODE_NONE; - 8001868: 687b ldr r3, [r7, #4] - 800186a: 2242 movs r2, #66 @ 0x42 - 800186c: 2100 movs r1, #0 - 800186e: 5499 strb r1, [r3, r2] + 80018d4: 687b ldr r3, [r7, #4] + 80018d6: 2242 movs r2, #66 @ 0x42 + 80018d8: 2100 movs r1, #0 + 80018da: 5499 strb r1, [r3, r2] return HAL_OK; - 8001870: 2300 movs r3, #0 + 80018dc: 2300 movs r3, #0 } - 8001872: 0018 movs r0, r3 - 8001874: 46bd mov sp, r7 - 8001876: b002 add sp, #8 - 8001878: bd80 pop {r7, pc} - 800187a: 46c0 nop @ (mov r8, r8) - 800187c: f0ffffff .word 0xf0ffffff - 8001880: ffff7fff .word 0xffff7fff - 8001884: fffff7ff .word 0xfffff7ff - 8001888: 02008000 .word 0x02008000 + 80018de: 0018 movs r0, r3 + 80018e0: 46bd mov sp, r7 + 80018e2: b002 add sp, #8 + 80018e4: bd80 pop {r7, pc} + 80018e6: 46c0 nop @ (mov r8, r8) + 80018e8: f0ffffff .word 0xf0ffffff + 80018ec: ffff7fff .word 0xffff7fff + 80018f0: fffff7ff .word 0xfffff7ff + 80018f4: 02008000 .word 0x02008000 -0800188c : +080018f8 : * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS * @retval HAL status */ HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions) { - 800188c: b580 push {r7, lr} - 800188e: b086 sub sp, #24 - 8001890: af00 add r7, sp, #0 - 8001892: 60f8 str r0, [r7, #12] - 8001894: 60b9 str r1, [r7, #8] - 8001896: 603b str r3, [r7, #0] - 8001898: 1dbb adds r3, r7, #6 - 800189a: 801a strh r2, [r3, #0] + 80018f8: b580 push {r7, lr} + 80018fa: b086 sub sp, #24 + 80018fc: af00 add r7, sp, #0 + 80018fe: 60f8 str r0, [r7, #12] + 8001900: 60b9 str r1, [r7, #8] + 8001902: 603b str r3, [r7, #0] + 8001904: 1dbb adds r3, r7, #6 + 8001906: 801a strh r2, [r3, #0] FlagStatus tmp; /* Check the parameters */ assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) - 800189c: 68fb ldr r3, [r7, #12] - 800189e: 2241 movs r2, #65 @ 0x41 - 80018a0: 5c9b ldrb r3, [r3, r2] - 80018a2: b2db uxtb r3, r3 - 80018a4: 001a movs r2, r3 - 80018a6: 2328 movs r3, #40 @ 0x28 - 80018a8: 4013 ands r3, r2 - 80018aa: 2b28 cmp r3, #40 @ 0x28 - 80018ac: d000 beq.n 80018b0 - 80018ae: e09f b.n 80019f0 + 8001908: 68fb ldr r3, [r7, #12] + 800190a: 2241 movs r2, #65 @ 0x41 + 800190c: 5c9b ldrb r3, [r3, r2] + 800190e: b2db uxtb r3, r3 + 8001910: 001a movs r2, r3 + 8001912: 2328 movs r3, #40 @ 0x28 + 8001914: 4013 ands r3, r2 + 8001916: 2b28 cmp r3, #40 @ 0x28 + 8001918: d000 beq.n 800191c + 800191a: e09f b.n 8001a5c { if ((pData == NULL) || (Size == 0U)) - 80018b0: 68bb ldr r3, [r7, #8] - 80018b2: 2b00 cmp r3, #0 - 80018b4: d003 beq.n 80018be - 80018b6: 1dbb adds r3, r7, #6 - 80018b8: 881b ldrh r3, [r3, #0] - 80018ba: 2b00 cmp r3, #0 - 80018bc: d105 bne.n 80018ca + 800191c: 68bb ldr r3, [r7, #8] + 800191e: 2b00 cmp r3, #0 + 8001920: d003 beq.n 800192a + 8001922: 1dbb adds r3, r7, #6 + 8001924: 881b ldrh r3, [r3, #0] + 8001926: 2b00 cmp r3, #0 + 8001928: d105 bne.n 8001936 { hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; - 80018be: 68fb ldr r3, [r7, #12] - 80018c0: 2280 movs r2, #128 @ 0x80 - 80018c2: 0092 lsls r2, r2, #2 - 80018c4: 645a str r2, [r3, #68] @ 0x44 + 800192a: 68fb ldr r3, [r7, #12] + 800192c: 2280 movs r2, #128 @ 0x80 + 800192e: 0092 lsls r2, r2, #2 + 8001930: 645a str r2, [r3, #68] @ 0x44 return HAL_ERROR; - 80018c6: 2301 movs r3, #1 - 80018c8: e093 b.n 80019f2 + 8001932: 2301 movs r3, #1 + 8001934: e093 b.n 8001a5e } /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); - 80018ca: 4a4c ldr r2, [pc, #304] @ (80019fc ) - 80018cc: 68fb ldr r3, [r7, #12] - 80018ce: 0011 movs r1, r2 - 80018d0: 0018 movs r0, r3 - 80018d2: f001 fc5b bl 800318c + 8001936: 4a4c ldr r2, [pc, #304] @ (8001a68 ) + 8001938: 68fb ldr r3, [r7, #12] + 800193a: 0011 movs r1, r2 + 800193c: 0018 movs r0, r3 + 800193e: f001 fc5b bl 80031f8 /* Process Locked */ __HAL_LOCK(hi2c); - 80018d6: 68fb ldr r3, [r7, #12] - 80018d8: 2240 movs r2, #64 @ 0x40 - 80018da: 5c9b ldrb r3, [r3, r2] - 80018dc: 2b01 cmp r3, #1 - 80018de: d101 bne.n 80018e4 - 80018e0: 2302 movs r3, #2 - 80018e2: e086 b.n 80019f2 - 80018e4: 68fb ldr r3, [r7, #12] - 80018e6: 2240 movs r2, #64 @ 0x40 - 80018e8: 2101 movs r1, #1 - 80018ea: 5499 strb r1, [r3, r2] + 8001942: 68fb ldr r3, [r7, #12] + 8001944: 2240 movs r2, #64 @ 0x40 + 8001946: 5c9b ldrb r3, [r3, r2] + 8001948: 2b01 cmp r3, #1 + 800194a: d101 bne.n 8001950 + 800194c: 2302 movs r3, #2 + 800194e: e086 b.n 8001a5e + 8001950: 68fb ldr r3, [r7, #12] + 8001952: 2240 movs r2, #64 @ 0x40 + 8001954: 2101 movs r1, #1 + 8001956: 5499 strb r1, [r3, r2] /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ /* and then toggle the HAL slave RX state to TX state */ if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) - 80018ec: 68fb ldr r3, [r7, #12] - 80018ee: 2241 movs r2, #65 @ 0x41 - 80018f0: 5c9b ldrb r3, [r3, r2] - 80018f2: b2db uxtb r3, r3 - 80018f4: 2b2a cmp r3, #42 @ 0x2a - 80018f6: d12c bne.n 8001952 + 8001958: 68fb ldr r3, [r7, #12] + 800195a: 2241 movs r2, #65 @ 0x41 + 800195c: 5c9b ldrb r3, [r3, r2] + 800195e: b2db uxtb r3, r3 + 8001960: 2b2a cmp r3, #42 @ 0x2a + 8001962: d12c bne.n 80019be { /* Disable associated Interrupts */ I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); - 80018f8: 68fb ldr r3, [r7, #12] - 80018fa: 2102 movs r1, #2 - 80018fc: 0018 movs r0, r3 - 80018fe: f001 fc45 bl 800318c + 8001964: 68fb ldr r3, [r7, #12] + 8001966: 2102 movs r1, #2 + 8001968: 0018 movs r0, r3 + 800196a: f001 fc45 bl 80031f8 /* Abort DMA Xfer if any */ if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) - 8001902: 68fb ldr r3, [r7, #12] - 8001904: 681b ldr r3, [r3, #0] - 8001906: 681a ldr r2, [r3, #0] - 8001908: 2380 movs r3, #128 @ 0x80 - 800190a: 021b lsls r3, r3, #8 - 800190c: 401a ands r2, r3 - 800190e: 2380 movs r3, #128 @ 0x80 - 8001910: 021b lsls r3, r3, #8 - 8001912: 429a cmp r2, r3 - 8001914: d11d bne.n 8001952 + 800196e: 68fb ldr r3, [r7, #12] + 8001970: 681b ldr r3, [r3, #0] + 8001972: 681a ldr r2, [r3, #0] + 8001974: 2380 movs r3, #128 @ 0x80 + 8001976: 021b lsls r3, r3, #8 + 8001978: 401a ands r2, r3 + 800197a: 2380 movs r3, #128 @ 0x80 + 800197c: 021b lsls r3, r3, #8 + 800197e: 429a cmp r2, r3 + 8001980: d11d bne.n 80019be { hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; - 8001916: 68fb ldr r3, [r7, #12] - 8001918: 681b ldr r3, [r3, #0] - 800191a: 681a ldr r2, [r3, #0] - 800191c: 68fb ldr r3, [r7, #12] - 800191e: 681b ldr r3, [r3, #0] - 8001920: 4937 ldr r1, [pc, #220] @ (8001a00 ) - 8001922: 400a ands r2, r1 - 8001924: 601a str r2, [r3, #0] + 8001982: 68fb ldr r3, [r7, #12] + 8001984: 681b ldr r3, [r3, #0] + 8001986: 681a ldr r2, [r3, #0] + 8001988: 68fb ldr r3, [r7, #12] + 800198a: 681b ldr r3, [r3, #0] + 800198c: 4937 ldr r1, [pc, #220] @ (8001a6c ) + 800198e: 400a ands r2, r1 + 8001990: 601a str r2, [r3, #0] if (hi2c->hdmarx != NULL) - 8001926: 68fb ldr r3, [r7, #12] - 8001928: 6bdb ldr r3, [r3, #60] @ 0x3c - 800192a: 2b00 cmp r3, #0 - 800192c: d011 beq.n 8001952 + 8001992: 68fb ldr r3, [r7, #12] + 8001994: 6bdb ldr r3, [r3, #60] @ 0x3c + 8001996: 2b00 cmp r3, #0 + 8001998: d011 beq.n 80019be { /* Set the I2C DMA Abort callback : will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; - 800192e: 68fb ldr r3, [r7, #12] - 8001930: 6bdb ldr r3, [r3, #60] @ 0x3c - 8001932: 4a34 ldr r2, [pc, #208] @ (8001a04 ) - 8001934: 639a str r2, [r3, #56] @ 0x38 + 800199a: 68fb ldr r3, [r7, #12] + 800199c: 6bdb ldr r3, [r3, #60] @ 0x3c + 800199e: 4a34 ldr r2, [pc, #208] @ (8001a70 ) + 80019a0: 639a str r2, [r3, #56] @ 0x38 /* Abort DMA RX */ if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) - 8001936: 68fb ldr r3, [r7, #12] - 8001938: 6bdb ldr r3, [r3, #60] @ 0x3c - 800193a: 0018 movs r0, r3 - 800193c: f7ff fcec bl 8001318 - 8001940: 1e03 subs r3, r0, #0 - 8001942: d006 beq.n 8001952 + 80019a2: 68fb ldr r3, [r7, #12] + 80019a4: 6bdb ldr r3, [r3, #60] @ 0x3c + 80019a6: 0018 movs r0, r3 + 80019a8: f7ff fcec bl 8001384 + 80019ac: 1e03 subs r3, r0, #0 + 80019ae: d006 beq.n 80019be { /* Call Directly XferAbortCallback function in case of error */ hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); - 8001944: 68fb ldr r3, [r7, #12] - 8001946: 6bdb ldr r3, [r3, #60] @ 0x3c - 8001948: 6b9a ldr r2, [r3, #56] @ 0x38 - 800194a: 68fb ldr r3, [r7, #12] - 800194c: 6bdb ldr r3, [r3, #60] @ 0x3c - 800194e: 0018 movs r0, r3 - 8001950: 4790 blx r2 + 80019b0: 68fb ldr r3, [r7, #12] + 80019b2: 6bdb ldr r3, [r3, #60] @ 0x3c + 80019b4: 6b9a ldr r2, [r3, #56] @ 0x38 + 80019b6: 68fb ldr r3, [r7, #12] + 80019b8: 6bdb ldr r3, [r3, #60] @ 0x3c + 80019ba: 0018 movs r0, r3 + 80019bc: 4790 blx r2 } } } } hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; - 8001952: 68fb ldr r3, [r7, #12] - 8001954: 2241 movs r2, #65 @ 0x41 - 8001956: 2129 movs r1, #41 @ 0x29 - 8001958: 5499 strb r1, [r3, r2] + 80019be: 68fb ldr r3, [r7, #12] + 80019c0: 2241 movs r2, #65 @ 0x41 + 80019c2: 2129 movs r1, #41 @ 0x29 + 80019c4: 5499 strb r1, [r3, r2] hi2c->Mode = HAL_I2C_MODE_SLAVE; - 800195a: 68fb ldr r3, [r7, #12] - 800195c: 2242 movs r2, #66 @ 0x42 - 800195e: 2120 movs r1, #32 - 8001960: 5499 strb r1, [r3, r2] + 80019c6: 68fb ldr r3, [r7, #12] + 80019c8: 2242 movs r2, #66 @ 0x42 + 80019ca: 2120 movs r1, #32 + 80019cc: 5499 strb r1, [r3, r2] hi2c->ErrorCode = HAL_I2C_ERROR_NONE; - 8001962: 68fb ldr r3, [r7, #12] - 8001964: 2200 movs r2, #0 - 8001966: 645a str r2, [r3, #68] @ 0x44 + 80019ce: 68fb ldr r3, [r7, #12] + 80019d0: 2200 movs r2, #0 + 80019d2: 645a str r2, [r3, #68] @ 0x44 /* Enable Address Acknowledge */ hi2c->Instance->CR2 &= ~I2C_CR2_NACK; - 8001968: 68fb ldr r3, [r7, #12] - 800196a: 681b ldr r3, [r3, #0] - 800196c: 685a ldr r2, [r3, #4] - 800196e: 68fb ldr r3, [r7, #12] - 8001970: 681b ldr r3, [r3, #0] - 8001972: 4923 ldr r1, [pc, #140] @ (8001a00 ) - 8001974: 400a ands r2, r1 - 8001976: 605a str r2, [r3, #4] + 80019d4: 68fb ldr r3, [r7, #12] + 80019d6: 681b ldr r3, [r3, #0] + 80019d8: 685a ldr r2, [r3, #4] + 80019da: 68fb ldr r3, [r7, #12] + 80019dc: 681b ldr r3, [r3, #0] + 80019de: 4923 ldr r1, [pc, #140] @ (8001a6c ) + 80019e0: 400a ands r2, r1 + 80019e2: 605a str r2, [r3, #4] /* Prepare transfer parameters */ hi2c->pBuffPtr = pData; - 8001978: 68fb ldr r3, [r7, #12] - 800197a: 68ba ldr r2, [r7, #8] - 800197c: 625a str r2, [r3, #36] @ 0x24 + 80019e4: 68fb ldr r3, [r7, #12] + 80019e6: 68ba ldr r2, [r7, #8] + 80019e8: 625a str r2, [r3, #36] @ 0x24 hi2c->XferCount = Size; - 800197e: 68fb ldr r3, [r7, #12] - 8001980: 1dba adds r2, r7, #6 - 8001982: 8812 ldrh r2, [r2, #0] - 8001984: 855a strh r2, [r3, #42] @ 0x2a + 80019ea: 68fb ldr r3, [r7, #12] + 80019ec: 1dba adds r2, r7, #6 + 80019ee: 8812 ldrh r2, [r2, #0] + 80019f0: 855a strh r2, [r3, #42] @ 0x2a hi2c->XferSize = hi2c->XferCount; - 8001986: 68fb ldr r3, [r7, #12] - 8001988: 8d5b ldrh r3, [r3, #42] @ 0x2a - 800198a: b29a uxth r2, r3 - 800198c: 68fb ldr r3, [r7, #12] - 800198e: 851a strh r2, [r3, #40] @ 0x28 + 80019f2: 68fb ldr r3, [r7, #12] + 80019f4: 8d5b ldrh r3, [r3, #42] @ 0x2a + 80019f6: b29a uxth r2, r3 + 80019f8: 68fb ldr r3, [r7, #12] + 80019fa: 851a strh r2, [r3, #40] @ 0x28 hi2c->XferOptions = XferOptions; - 8001990: 68fb ldr r3, [r7, #12] - 8001992: 683a ldr r2, [r7, #0] - 8001994: 62da str r2, [r3, #44] @ 0x2c + 80019fc: 68fb ldr r3, [r7, #12] + 80019fe: 683a ldr r2, [r7, #0] + 8001a00: 62da str r2, [r3, #44] @ 0x2c hi2c->XferISR = I2C_Slave_ISR_IT; - 8001996: 68fb ldr r3, [r7, #12] - 8001998: 4a1b ldr r2, [pc, #108] @ (8001a08 ) - 800199a: 635a str r2, [r3, #52] @ 0x34 + 8001a02: 68fb ldr r3, [r7, #12] + 8001a04: 4a1b ldr r2, [pc, #108] @ (8001a74 ) + 8001a06: 635a str r2, [r3, #52] @ 0x34 tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); - 800199c: 68fb ldr r3, [r7, #12] - 800199e: 681b ldr r3, [r3, #0] - 80019a0: 699b ldr r3, [r3, #24] - 80019a2: 2208 movs r2, #8 - 80019a4: 4013 ands r3, r2 - 80019a6: 3b08 subs r3, #8 - 80019a8: 425a negs r2, r3 - 80019aa: 4153 adcs r3, r2 - 80019ac: b2da uxtb r2, r3 - 80019ae: 2117 movs r1, #23 - 80019b0: 187b adds r3, r7, r1 - 80019b2: 701a strb r2, [r3, #0] + 8001a08: 68fb ldr r3, [r7, #12] + 8001a0a: 681b ldr r3, [r3, #0] + 8001a0c: 699b ldr r3, [r3, #24] + 8001a0e: 2208 movs r2, #8 + 8001a10: 4013 ands r3, r2 + 8001a12: 3b08 subs r3, #8 + 8001a14: 425a negs r2, r3 + 8001a16: 4153 adcs r3, r2 + 8001a18: b2da uxtb r2, r3 + 8001a1a: 2117 movs r1, #23 + 8001a1c: 187b adds r3, r7, r1 + 8001a1e: 701a strb r2, [r3, #0] if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) - 80019b4: 68fb ldr r3, [r7, #12] - 80019b6: 681b ldr r3, [r3, #0] - 80019b8: 699b ldr r3, [r3, #24] - 80019ba: 0c1b lsrs r3, r3, #16 - 80019bc: b2db uxtb r3, r3 - 80019be: 2201 movs r2, #1 - 80019c0: 4013 ands r3, r2 - 80019c2: b2db uxtb r3, r3 - 80019c4: 2b01 cmp r3, #1 - 80019c6: d107 bne.n 80019d8 - 80019c8: 187b adds r3, r7, r1 - 80019ca: 781b ldrb r3, [r3, #0] - 80019cc: 2b00 cmp r3, #0 - 80019ce: d003 beq.n 80019d8 + 8001a20: 68fb ldr r3, [r7, #12] + 8001a22: 681b ldr r3, [r3, #0] + 8001a24: 699b ldr r3, [r3, #24] + 8001a26: 0c1b lsrs r3, r3, #16 + 8001a28: b2db uxtb r3, r3 + 8001a2a: 2201 movs r2, #1 + 8001a2c: 4013 ands r3, r2 + 8001a2e: b2db uxtb r3, r3 + 8001a30: 2b01 cmp r3, #1 + 8001a32: d107 bne.n 8001a44 + 8001a34: 187b adds r3, r7, r1 + 8001a36: 781b ldrb r3, [r3, #0] + 8001a38: 2b00 cmp r3, #0 + 8001a3a: d003 beq.n 8001a44 { /* Clear ADDR flag after prepare the transfer parameters */ /* This action will generate an acknowledge to the Master */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); - 80019d0: 68fb ldr r3, [r7, #12] - 80019d2: 681b ldr r3, [r3, #0] - 80019d4: 2208 movs r2, #8 - 80019d6: 61da str r2, [r3, #28] + 8001a3c: 68fb ldr r3, [r7, #12] + 8001a3e: 681b ldr r3, [r3, #0] + 8001a40: 2208 movs r2, #8 + 8001a42: 61da str r2, [r3, #28] } /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 80019d8: 68fb ldr r3, [r7, #12] - 80019da: 2240 movs r2, #64 @ 0x40 - 80019dc: 2100 movs r1, #0 - 80019de: 5499 strb r1, [r3, r2] + 8001a44: 68fb ldr r3, [r7, #12] + 8001a46: 2240 movs r2, #64 @ 0x40 + 8001a48: 2100 movs r1, #0 + 8001a4a: 5499 strb r1, [r3, r2] /* Note : The I2C interrupts must be enabled after unlocking current process to avoid the risk of I2C interrupt handle execution before current process unlock */ /* REnable ADDR interrupt */ I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); - 80019e0: 4a06 ldr r2, [pc, #24] @ (80019fc ) - 80019e2: 68fb ldr r3, [r7, #12] - 80019e4: 0011 movs r1, r2 - 80019e6: 0018 movs r0, r3 - 80019e8: f001 fb46 bl 8003078 + 8001a4c: 4a06 ldr r2, [pc, #24] @ (8001a68 ) + 8001a4e: 68fb ldr r3, [r7, #12] + 8001a50: 0011 movs r1, r2 + 8001a52: 0018 movs r0, r3 + 8001a54: f001 fb46 bl 80030e4 return HAL_OK; - 80019ec: 2300 movs r3, #0 - 80019ee: e000 b.n 80019f2 + 8001a58: 2300 movs r3, #0 + 8001a5a: e000 b.n 8001a5e } else { return HAL_ERROR; - 80019f0: 2301 movs r3, #1 + 8001a5c: 2301 movs r3, #1 } } - 80019f2: 0018 movs r0, r3 - 80019f4: 46bd mov sp, r7 - 80019f6: b006 add sp, #24 - 80019f8: bd80 pop {r7, pc} - 80019fa: 46c0 nop @ (mov r8, r8) - 80019fc: 00008001 .word 0x00008001 - 8001a00: ffff7fff .word 0xffff7fff - 8001a04: 08002fc7 .word 0x08002fc7 - 8001a08: 08001d1d .word 0x08001d1d + 8001a5e: 0018 movs r0, r3 + 8001a60: 46bd mov sp, r7 + 8001a62: b006 add sp, #24 + 8001a64: bd80 pop {r7, pc} + 8001a66: 46c0 nop @ (mov r8, r8) + 8001a68: 00008001 .word 0x00008001 + 8001a6c: ffff7fff .word 0xffff7fff + 8001a70: 08003033 .word 0x08003033 + 8001a74: 08001d89 .word 0x08001d89 -08001a0c : +08001a78 : * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS * @retval HAL status */ HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions) { - 8001a0c: b580 push {r7, lr} - 8001a0e: b086 sub sp, #24 - 8001a10: af00 add r7, sp, #0 - 8001a12: 60f8 str r0, [r7, #12] - 8001a14: 60b9 str r1, [r7, #8] - 8001a16: 603b str r3, [r7, #0] - 8001a18: 1dbb adds r3, r7, #6 - 8001a1a: 801a strh r2, [r3, #0] + 8001a78: b580 push {r7, lr} + 8001a7a: b086 sub sp, #24 + 8001a7c: af00 add r7, sp, #0 + 8001a7e: 60f8 str r0, [r7, #12] + 8001a80: 60b9 str r1, [r7, #8] + 8001a82: 603b str r3, [r7, #0] + 8001a84: 1dbb adds r3, r7, #6 + 8001a86: 801a strh r2, [r3, #0] FlagStatus tmp; /* Check the parameters */ assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) - 8001a1c: 68fb ldr r3, [r7, #12] - 8001a1e: 2241 movs r2, #65 @ 0x41 - 8001a20: 5c9b ldrb r3, [r3, r2] - 8001a22: b2db uxtb r3, r3 - 8001a24: 001a movs r2, r3 - 8001a26: 2328 movs r3, #40 @ 0x28 - 8001a28: 4013 ands r3, r2 - 8001a2a: 2b28 cmp r3, #40 @ 0x28 - 8001a2c: d000 beq.n 8001a30 - 8001a2e: e09f b.n 8001b70 + 8001a88: 68fb ldr r3, [r7, #12] + 8001a8a: 2241 movs r2, #65 @ 0x41 + 8001a8c: 5c9b ldrb r3, [r3, r2] + 8001a8e: b2db uxtb r3, r3 + 8001a90: 001a movs r2, r3 + 8001a92: 2328 movs r3, #40 @ 0x28 + 8001a94: 4013 ands r3, r2 + 8001a96: 2b28 cmp r3, #40 @ 0x28 + 8001a98: d000 beq.n 8001a9c + 8001a9a: e09f b.n 8001bdc { if ((pData == NULL) || (Size == 0U)) - 8001a30: 68bb ldr r3, [r7, #8] - 8001a32: 2b00 cmp r3, #0 - 8001a34: d003 beq.n 8001a3e - 8001a36: 1dbb adds r3, r7, #6 - 8001a38: 881b ldrh r3, [r3, #0] - 8001a3a: 2b00 cmp r3, #0 - 8001a3c: d105 bne.n 8001a4a + 8001a9c: 68bb ldr r3, [r7, #8] + 8001a9e: 2b00 cmp r3, #0 + 8001aa0: d003 beq.n 8001aaa + 8001aa2: 1dbb adds r3, r7, #6 + 8001aa4: 881b ldrh r3, [r3, #0] + 8001aa6: 2b00 cmp r3, #0 + 8001aa8: d105 bne.n 8001ab6 { hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; - 8001a3e: 68fb ldr r3, [r7, #12] - 8001a40: 2280 movs r2, #128 @ 0x80 - 8001a42: 0092 lsls r2, r2, #2 - 8001a44: 645a str r2, [r3, #68] @ 0x44 + 8001aaa: 68fb ldr r3, [r7, #12] + 8001aac: 2280 movs r2, #128 @ 0x80 + 8001aae: 0092 lsls r2, r2, #2 + 8001ab0: 645a str r2, [r3, #68] @ 0x44 return HAL_ERROR; - 8001a46: 2301 movs r3, #1 - 8001a48: e093 b.n 8001b72 + 8001ab2: 2301 movs r3, #1 + 8001ab4: e093 b.n 8001bde } /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); - 8001a4a: 4a4c ldr r2, [pc, #304] @ (8001b7c ) - 8001a4c: 68fb ldr r3, [r7, #12] - 8001a4e: 0011 movs r1, r2 - 8001a50: 0018 movs r0, r3 - 8001a52: f001 fb9b bl 800318c + 8001ab6: 4a4c ldr r2, [pc, #304] @ (8001be8 ) + 8001ab8: 68fb ldr r3, [r7, #12] + 8001aba: 0011 movs r1, r2 + 8001abc: 0018 movs r0, r3 + 8001abe: f001 fb9b bl 80031f8 /* Process Locked */ __HAL_LOCK(hi2c); - 8001a56: 68fb ldr r3, [r7, #12] - 8001a58: 2240 movs r2, #64 @ 0x40 - 8001a5a: 5c9b ldrb r3, [r3, r2] - 8001a5c: 2b01 cmp r3, #1 - 8001a5e: d101 bne.n 8001a64 - 8001a60: 2302 movs r3, #2 - 8001a62: e086 b.n 8001b72 - 8001a64: 68fb ldr r3, [r7, #12] - 8001a66: 2240 movs r2, #64 @ 0x40 - 8001a68: 2101 movs r1, #1 - 8001a6a: 5499 strb r1, [r3, r2] + 8001ac2: 68fb ldr r3, [r7, #12] + 8001ac4: 2240 movs r2, #64 @ 0x40 + 8001ac6: 5c9b ldrb r3, [r3, r2] + 8001ac8: 2b01 cmp r3, #1 + 8001aca: d101 bne.n 8001ad0 + 8001acc: 2302 movs r3, #2 + 8001ace: e086 b.n 8001bde + 8001ad0: 68fb ldr r3, [r7, #12] + 8001ad2: 2240 movs r2, #64 @ 0x40 + 8001ad4: 2101 movs r1, #1 + 8001ad6: 5499 strb r1, [r3, r2] /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ /* and then toggle the HAL slave TX state to RX state */ if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) - 8001a6c: 68fb ldr r3, [r7, #12] - 8001a6e: 2241 movs r2, #65 @ 0x41 - 8001a70: 5c9b ldrb r3, [r3, r2] - 8001a72: b2db uxtb r3, r3 - 8001a74: 2b29 cmp r3, #41 @ 0x29 - 8001a76: d12c bne.n 8001ad2 + 8001ad8: 68fb ldr r3, [r7, #12] + 8001ada: 2241 movs r2, #65 @ 0x41 + 8001adc: 5c9b ldrb r3, [r3, r2] + 8001ade: b2db uxtb r3, r3 + 8001ae0: 2b29 cmp r3, #41 @ 0x29 + 8001ae2: d12c bne.n 8001b3e { /* Disable associated Interrupts */ I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); - 8001a78: 68fb ldr r3, [r7, #12] - 8001a7a: 2101 movs r1, #1 - 8001a7c: 0018 movs r0, r3 - 8001a7e: f001 fb85 bl 800318c + 8001ae4: 68fb ldr r3, [r7, #12] + 8001ae6: 2101 movs r1, #1 + 8001ae8: 0018 movs r0, r3 + 8001aea: f001 fb85 bl 80031f8 if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) - 8001a82: 68fb ldr r3, [r7, #12] - 8001a84: 681b ldr r3, [r3, #0] - 8001a86: 681a ldr r2, [r3, #0] - 8001a88: 2380 movs r3, #128 @ 0x80 - 8001a8a: 01db lsls r3, r3, #7 - 8001a8c: 401a ands r2, r3 - 8001a8e: 2380 movs r3, #128 @ 0x80 - 8001a90: 01db lsls r3, r3, #7 - 8001a92: 429a cmp r2, r3 - 8001a94: d11d bne.n 8001ad2 + 8001aee: 68fb ldr r3, [r7, #12] + 8001af0: 681b ldr r3, [r3, #0] + 8001af2: 681a ldr r2, [r3, #0] + 8001af4: 2380 movs r3, #128 @ 0x80 + 8001af6: 01db lsls r3, r3, #7 + 8001af8: 401a ands r2, r3 + 8001afa: 2380 movs r3, #128 @ 0x80 + 8001afc: 01db lsls r3, r3, #7 + 8001afe: 429a cmp r2, r3 + 8001b00: d11d bne.n 8001b3e { hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; - 8001a96: 68fb ldr r3, [r7, #12] - 8001a98: 681b ldr r3, [r3, #0] - 8001a9a: 681a ldr r2, [r3, #0] - 8001a9c: 68fb ldr r3, [r7, #12] - 8001a9e: 681b ldr r3, [r3, #0] - 8001aa0: 4937 ldr r1, [pc, #220] @ (8001b80 ) - 8001aa2: 400a ands r2, r1 - 8001aa4: 601a str r2, [r3, #0] + 8001b02: 68fb ldr r3, [r7, #12] + 8001b04: 681b ldr r3, [r3, #0] + 8001b06: 681a ldr r2, [r3, #0] + 8001b08: 68fb ldr r3, [r7, #12] + 8001b0a: 681b ldr r3, [r3, #0] + 8001b0c: 4937 ldr r1, [pc, #220] @ (8001bec ) + 8001b0e: 400a ands r2, r1 + 8001b10: 601a str r2, [r3, #0] /* Abort DMA Xfer if any */ if (hi2c->hdmatx != NULL) - 8001aa6: 68fb ldr r3, [r7, #12] - 8001aa8: 6b9b ldr r3, [r3, #56] @ 0x38 - 8001aaa: 2b00 cmp r3, #0 - 8001aac: d011 beq.n 8001ad2 + 8001b12: 68fb ldr r3, [r7, #12] + 8001b14: 6b9b ldr r3, [r3, #56] @ 0x38 + 8001b16: 2b00 cmp r3, #0 + 8001b18: d011 beq.n 8001b3e { /* Set the I2C DMA Abort callback : will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; - 8001aae: 68fb ldr r3, [r7, #12] - 8001ab0: 6b9b ldr r3, [r3, #56] @ 0x38 - 8001ab2: 4a34 ldr r2, [pc, #208] @ (8001b84 ) - 8001ab4: 639a str r2, [r3, #56] @ 0x38 + 8001b1a: 68fb ldr r3, [r7, #12] + 8001b1c: 6b9b ldr r3, [r3, #56] @ 0x38 + 8001b1e: 4a34 ldr r2, [pc, #208] @ (8001bf0 ) + 8001b20: 639a str r2, [r3, #56] @ 0x38 /* Abort DMA TX */ if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) - 8001ab6: 68fb ldr r3, [r7, #12] - 8001ab8: 6b9b ldr r3, [r3, #56] @ 0x38 - 8001aba: 0018 movs r0, r3 - 8001abc: f7ff fc2c bl 8001318 - 8001ac0: 1e03 subs r3, r0, #0 - 8001ac2: d006 beq.n 8001ad2 + 8001b22: 68fb ldr r3, [r7, #12] + 8001b24: 6b9b ldr r3, [r3, #56] @ 0x38 + 8001b26: 0018 movs r0, r3 + 8001b28: f7ff fc2c bl 8001384 + 8001b2c: 1e03 subs r3, r0, #0 + 8001b2e: d006 beq.n 8001b3e { /* Call Directly XferAbortCallback function in case of error */ hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); - 8001ac4: 68fb ldr r3, [r7, #12] - 8001ac6: 6b9b ldr r3, [r3, #56] @ 0x38 - 8001ac8: 6b9a ldr r2, [r3, #56] @ 0x38 - 8001aca: 68fb ldr r3, [r7, #12] - 8001acc: 6b9b ldr r3, [r3, #56] @ 0x38 - 8001ace: 0018 movs r0, r3 - 8001ad0: 4790 blx r2 + 8001b30: 68fb ldr r3, [r7, #12] + 8001b32: 6b9b ldr r3, [r3, #56] @ 0x38 + 8001b34: 6b9a ldr r2, [r3, #56] @ 0x38 + 8001b36: 68fb ldr r3, [r7, #12] + 8001b38: 6b9b ldr r3, [r3, #56] @ 0x38 + 8001b3a: 0018 movs r0, r3 + 8001b3c: 4790 blx r2 } } } } hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; - 8001ad2: 68fb ldr r3, [r7, #12] - 8001ad4: 2241 movs r2, #65 @ 0x41 - 8001ad6: 212a movs r1, #42 @ 0x2a - 8001ad8: 5499 strb r1, [r3, r2] + 8001b3e: 68fb ldr r3, [r7, #12] + 8001b40: 2241 movs r2, #65 @ 0x41 + 8001b42: 212a movs r1, #42 @ 0x2a + 8001b44: 5499 strb r1, [r3, r2] hi2c->Mode = HAL_I2C_MODE_SLAVE; - 8001ada: 68fb ldr r3, [r7, #12] - 8001adc: 2242 movs r2, #66 @ 0x42 - 8001ade: 2120 movs r1, #32 - 8001ae0: 5499 strb r1, [r3, r2] + 8001b46: 68fb ldr r3, [r7, #12] + 8001b48: 2242 movs r2, #66 @ 0x42 + 8001b4a: 2120 movs r1, #32 + 8001b4c: 5499 strb r1, [r3, r2] hi2c->ErrorCode = HAL_I2C_ERROR_NONE; - 8001ae2: 68fb ldr r3, [r7, #12] - 8001ae4: 2200 movs r2, #0 - 8001ae6: 645a str r2, [r3, #68] @ 0x44 + 8001b4e: 68fb ldr r3, [r7, #12] + 8001b50: 2200 movs r2, #0 + 8001b52: 645a str r2, [r3, #68] @ 0x44 /* Enable Address Acknowledge */ hi2c->Instance->CR2 &= ~I2C_CR2_NACK; - 8001ae8: 68fb ldr r3, [r7, #12] - 8001aea: 681b ldr r3, [r3, #0] - 8001aec: 685a ldr r2, [r3, #4] - 8001aee: 68fb ldr r3, [r7, #12] - 8001af0: 681b ldr r3, [r3, #0] - 8001af2: 4925 ldr r1, [pc, #148] @ (8001b88 ) - 8001af4: 400a ands r2, r1 - 8001af6: 605a str r2, [r3, #4] + 8001b54: 68fb ldr r3, [r7, #12] + 8001b56: 681b ldr r3, [r3, #0] + 8001b58: 685a ldr r2, [r3, #4] + 8001b5a: 68fb ldr r3, [r7, #12] + 8001b5c: 681b ldr r3, [r3, #0] + 8001b5e: 4925 ldr r1, [pc, #148] @ (8001bf4 ) + 8001b60: 400a ands r2, r1 + 8001b62: 605a str r2, [r3, #4] /* Prepare transfer parameters */ hi2c->pBuffPtr = pData; - 8001af8: 68fb ldr r3, [r7, #12] - 8001afa: 68ba ldr r2, [r7, #8] - 8001afc: 625a str r2, [r3, #36] @ 0x24 + 8001b64: 68fb ldr r3, [r7, #12] + 8001b66: 68ba ldr r2, [r7, #8] + 8001b68: 625a str r2, [r3, #36] @ 0x24 hi2c->XferCount = Size; - 8001afe: 68fb ldr r3, [r7, #12] - 8001b00: 1dba adds r2, r7, #6 - 8001b02: 8812 ldrh r2, [r2, #0] - 8001b04: 855a strh r2, [r3, #42] @ 0x2a + 8001b6a: 68fb ldr r3, [r7, #12] + 8001b6c: 1dba adds r2, r7, #6 + 8001b6e: 8812 ldrh r2, [r2, #0] + 8001b70: 855a strh r2, [r3, #42] @ 0x2a hi2c->XferSize = hi2c->XferCount; - 8001b06: 68fb ldr r3, [r7, #12] - 8001b08: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8001b0a: b29a uxth r2, r3 - 8001b0c: 68fb ldr r3, [r7, #12] - 8001b0e: 851a strh r2, [r3, #40] @ 0x28 + 8001b72: 68fb ldr r3, [r7, #12] + 8001b74: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8001b76: b29a uxth r2, r3 + 8001b78: 68fb ldr r3, [r7, #12] + 8001b7a: 851a strh r2, [r3, #40] @ 0x28 hi2c->XferOptions = XferOptions; - 8001b10: 68fb ldr r3, [r7, #12] - 8001b12: 683a ldr r2, [r7, #0] - 8001b14: 62da str r2, [r3, #44] @ 0x2c + 8001b7c: 68fb ldr r3, [r7, #12] + 8001b7e: 683a ldr r2, [r7, #0] + 8001b80: 62da str r2, [r3, #44] @ 0x2c hi2c->XferISR = I2C_Slave_ISR_IT; - 8001b16: 68fb ldr r3, [r7, #12] - 8001b18: 4a1c ldr r2, [pc, #112] @ (8001b8c ) - 8001b1a: 635a str r2, [r3, #52] @ 0x34 + 8001b82: 68fb ldr r3, [r7, #12] + 8001b84: 4a1c ldr r2, [pc, #112] @ (8001bf8 ) + 8001b86: 635a str r2, [r3, #52] @ 0x34 tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); - 8001b1c: 68fb ldr r3, [r7, #12] - 8001b1e: 681b ldr r3, [r3, #0] - 8001b20: 699b ldr r3, [r3, #24] - 8001b22: 2208 movs r2, #8 - 8001b24: 4013 ands r3, r2 - 8001b26: 3b08 subs r3, #8 - 8001b28: 425a negs r2, r3 - 8001b2a: 4153 adcs r3, r2 - 8001b2c: b2da uxtb r2, r3 - 8001b2e: 2117 movs r1, #23 - 8001b30: 187b adds r3, r7, r1 - 8001b32: 701a strb r2, [r3, #0] + 8001b88: 68fb ldr r3, [r7, #12] + 8001b8a: 681b ldr r3, [r3, #0] + 8001b8c: 699b ldr r3, [r3, #24] + 8001b8e: 2208 movs r2, #8 + 8001b90: 4013 ands r3, r2 + 8001b92: 3b08 subs r3, #8 + 8001b94: 425a negs r2, r3 + 8001b96: 4153 adcs r3, r2 + 8001b98: b2da uxtb r2, r3 + 8001b9a: 2117 movs r1, #23 + 8001b9c: 187b adds r3, r7, r1 + 8001b9e: 701a strb r2, [r3, #0] if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) - 8001b34: 68fb ldr r3, [r7, #12] - 8001b36: 681b ldr r3, [r3, #0] - 8001b38: 699b ldr r3, [r3, #24] - 8001b3a: 0c1b lsrs r3, r3, #16 - 8001b3c: b2db uxtb r3, r3 - 8001b3e: 2201 movs r2, #1 - 8001b40: 4013 ands r3, r2 - 8001b42: b2db uxtb r3, r3 - 8001b44: 2b00 cmp r3, #0 - 8001b46: d107 bne.n 8001b58 - 8001b48: 187b adds r3, r7, r1 - 8001b4a: 781b ldrb r3, [r3, #0] - 8001b4c: 2b00 cmp r3, #0 - 8001b4e: d003 beq.n 8001b58 + 8001ba0: 68fb ldr r3, [r7, #12] + 8001ba2: 681b ldr r3, [r3, #0] + 8001ba4: 699b ldr r3, [r3, #24] + 8001ba6: 0c1b lsrs r3, r3, #16 + 8001ba8: b2db uxtb r3, r3 + 8001baa: 2201 movs r2, #1 + 8001bac: 4013 ands r3, r2 + 8001bae: b2db uxtb r3, r3 + 8001bb0: 2b00 cmp r3, #0 + 8001bb2: d107 bne.n 8001bc4 + 8001bb4: 187b adds r3, r7, r1 + 8001bb6: 781b ldrb r3, [r3, #0] + 8001bb8: 2b00 cmp r3, #0 + 8001bba: d003 beq.n 8001bc4 { /* Clear ADDR flag after prepare the transfer parameters */ /* This action will generate an acknowledge to the Master */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); - 8001b50: 68fb ldr r3, [r7, #12] - 8001b52: 681b ldr r3, [r3, #0] - 8001b54: 2208 movs r2, #8 - 8001b56: 61da str r2, [r3, #28] + 8001bbc: 68fb ldr r3, [r7, #12] + 8001bbe: 681b ldr r3, [r3, #0] + 8001bc0: 2208 movs r2, #8 + 8001bc2: 61da str r2, [r3, #28] } /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8001b58: 68fb ldr r3, [r7, #12] - 8001b5a: 2240 movs r2, #64 @ 0x40 - 8001b5c: 2100 movs r1, #0 - 8001b5e: 5499 strb r1, [r3, r2] + 8001bc4: 68fb ldr r3, [r7, #12] + 8001bc6: 2240 movs r2, #64 @ 0x40 + 8001bc8: 2100 movs r1, #0 + 8001bca: 5499 strb r1, [r3, r2] /* Note : The I2C interrupts must be enabled after unlocking current process to avoid the risk of I2C interrupt handle execution before current process unlock */ /* REnable ADDR interrupt */ I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); - 8001b60: 4a06 ldr r2, [pc, #24] @ (8001b7c ) - 8001b62: 68fb ldr r3, [r7, #12] - 8001b64: 0011 movs r1, r2 - 8001b66: 0018 movs r0, r3 - 8001b68: f001 fa86 bl 8003078 + 8001bcc: 4a06 ldr r2, [pc, #24] @ (8001be8 ) + 8001bce: 68fb ldr r3, [r7, #12] + 8001bd0: 0011 movs r1, r2 + 8001bd2: 0018 movs r0, r3 + 8001bd4: f001 fa86 bl 80030e4 return HAL_OK; - 8001b6c: 2300 movs r3, #0 - 8001b6e: e000 b.n 8001b72 + 8001bd8: 2300 movs r3, #0 + 8001bda: e000 b.n 8001bde } else { return HAL_ERROR; - 8001b70: 2301 movs r3, #1 + 8001bdc: 2301 movs r3, #1 } } - 8001b72: 0018 movs r0, r3 - 8001b74: 46bd mov sp, r7 - 8001b76: b006 add sp, #24 - 8001b78: bd80 pop {r7, pc} - 8001b7a: 46c0 nop @ (mov r8, r8) - 8001b7c: 00008002 .word 0x00008002 - 8001b80: ffffbfff .word 0xffffbfff - 8001b84: 08002fc7 .word 0x08002fc7 - 8001b88: ffff7fff .word 0xffff7fff - 8001b8c: 08001d1d .word 0x08001d1d + 8001bde: 0018 movs r0, r3 + 8001be0: 46bd mov sp, r7 + 8001be2: b006 add sp, #24 + 8001be4: bd80 pop {r7, pc} + 8001be6: 46c0 nop @ (mov r8, r8) + 8001be8: 00008002 .word 0x00008002 + 8001bec: ffffbfff .word 0xffffbfff + 8001bf0: 08003033 .word 0x08003033 + 8001bf4: ffff7fff .word 0xffff7fff + 8001bf8: 08001d89 .word 0x08001d89 -08001b90 : +08001bfc : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval HAL status */ HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c) { - 8001b90: b580 push {r7, lr} - 8001b92: b082 sub sp, #8 - 8001b94: af00 add r7, sp, #0 - 8001b96: 6078 str r0, [r7, #4] + 8001bfc: b580 push {r7, lr} + 8001bfe: b082 sub sp, #8 + 8001c00: af00 add r7, sp, #0 + 8001c02: 6078 str r0, [r7, #4] if (hi2c->State == HAL_I2C_STATE_READY) - 8001b98: 687b ldr r3, [r7, #4] - 8001b9a: 2241 movs r2, #65 @ 0x41 - 8001b9c: 5c9b ldrb r3, [r3, r2] - 8001b9e: b2db uxtb r3, r3 - 8001ba0: 2b20 cmp r3, #32 - 8001ba2: d10f bne.n 8001bc4 + 8001c04: 687b ldr r3, [r7, #4] + 8001c06: 2241 movs r2, #65 @ 0x41 + 8001c08: 5c9b ldrb r3, [r3, r2] + 8001c0a: b2db uxtb r3, r3 + 8001c0c: 2b20 cmp r3, #32 + 8001c0e: d10f bne.n 8001c30 { hi2c->State = HAL_I2C_STATE_LISTEN; - 8001ba4: 687b ldr r3, [r7, #4] - 8001ba6: 2241 movs r2, #65 @ 0x41 - 8001ba8: 2128 movs r1, #40 @ 0x28 - 8001baa: 5499 strb r1, [r3, r2] + 8001c10: 687b ldr r3, [r7, #4] + 8001c12: 2241 movs r2, #65 @ 0x41 + 8001c14: 2128 movs r1, #40 @ 0x28 + 8001c16: 5499 strb r1, [r3, r2] hi2c->XferISR = I2C_Slave_ISR_IT; - 8001bac: 687b ldr r3, [r7, #4] - 8001bae: 4a08 ldr r2, [pc, #32] @ (8001bd0 ) - 8001bb0: 635a str r2, [r3, #52] @ 0x34 + 8001c18: 687b ldr r3, [r7, #4] + 8001c1a: 4a08 ldr r2, [pc, #32] @ (8001c3c ) + 8001c1c: 635a str r2, [r3, #52] @ 0x34 /* Enable the Address Match interrupt */ I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); - 8001bb2: 2380 movs r3, #128 @ 0x80 - 8001bb4: 021a lsls r2, r3, #8 - 8001bb6: 687b ldr r3, [r7, #4] - 8001bb8: 0011 movs r1, r2 - 8001bba: 0018 movs r0, r3 - 8001bbc: f001 fa5c bl 8003078 + 8001c1e: 2380 movs r3, #128 @ 0x80 + 8001c20: 021a lsls r2, r3, #8 + 8001c22: 687b ldr r3, [r7, #4] + 8001c24: 0011 movs r1, r2 + 8001c26: 0018 movs r0, r3 + 8001c28: f001 fa5c bl 80030e4 return HAL_OK; - 8001bc0: 2300 movs r3, #0 - 8001bc2: e000 b.n 8001bc6 + 8001c2c: 2300 movs r3, #0 + 8001c2e: e000 b.n 8001c32 } else { return HAL_BUSY; - 8001bc4: 2302 movs r3, #2 + 8001c30: 2302 movs r3, #2 } } - 8001bc6: 0018 movs r0, r3 - 8001bc8: 46bd mov sp, r7 - 8001bca: b002 add sp, #8 - 8001bcc: bd80 pop {r7, pc} - 8001bce: 46c0 nop @ (mov r8, r8) - 8001bd0: 08001d1d .word 0x08001d1d + 8001c32: 0018 movs r0, r3 + 8001c34: 46bd mov sp, r7 + 8001c36: b002 add sp, #8 + 8001c38: bd80 pop {r7, pc} + 8001c3a: 46c0 nop @ (mov r8, r8) + 8001c3c: 08001d89 .word 0x08001d89 -08001bd4 : +08001c40 : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval None */ void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c) /* Derogation MISRAC2012-Rule-8.13 */ { - 8001bd4: b580 push {r7, lr} - 8001bd6: b084 sub sp, #16 - 8001bd8: af00 add r7, sp, #0 - 8001bda: 6078 str r0, [r7, #4] + 8001c40: b580 push {r7, lr} + 8001c42: b084 sub sp, #16 + 8001c44: af00 add r7, sp, #0 + 8001c46: 6078 str r0, [r7, #4] /* Get current IT Flags and IT sources value */ uint32_t itflags = READ_REG(hi2c->Instance->ISR); - 8001bdc: 687b ldr r3, [r7, #4] - 8001bde: 681b ldr r3, [r3, #0] - 8001be0: 699b ldr r3, [r3, #24] - 8001be2: 60fb str r3, [r7, #12] + 8001c48: 687b ldr r3, [r7, #4] + 8001c4a: 681b ldr r3, [r3, #0] + 8001c4c: 699b ldr r3, [r3, #24] + 8001c4e: 60fb str r3, [r7, #12] uint32_t itsources = READ_REG(hi2c->Instance->CR1); - 8001be4: 687b ldr r3, [r7, #4] - 8001be6: 681b ldr r3, [r3, #0] - 8001be8: 681b ldr r3, [r3, #0] - 8001bea: 60bb str r3, [r7, #8] + 8001c50: 687b ldr r3, [r7, #4] + 8001c52: 681b ldr r3, [r3, #0] + 8001c54: 681b ldr r3, [r3, #0] + 8001c56: 60bb str r3, [r7, #8] /* I2C events treatment -------------------------------------*/ if (hi2c->XferISR != NULL) - 8001bec: 687b ldr r3, [r7, #4] - 8001bee: 6b5b ldr r3, [r3, #52] @ 0x34 - 8001bf0: 2b00 cmp r3, #0 - 8001bf2: d005 beq.n 8001c00 + 8001c58: 687b ldr r3, [r7, #4] + 8001c5a: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001c5c: 2b00 cmp r3, #0 + 8001c5e: d005 beq.n 8001c6c { hi2c->XferISR(hi2c, itflags, itsources); - 8001bf4: 687b ldr r3, [r7, #4] - 8001bf6: 6b5b ldr r3, [r3, #52] @ 0x34 - 8001bf8: 68ba ldr r2, [r7, #8] - 8001bfa: 68f9 ldr r1, [r7, #12] - 8001bfc: 6878 ldr r0, [r7, #4] - 8001bfe: 4798 blx r3 + 8001c60: 687b ldr r3, [r7, #4] + 8001c62: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001c64: 68ba ldr r2, [r7, #8] + 8001c66: 68f9 ldr r1, [r7, #12] + 8001c68: 6878 ldr r0, [r7, #4] + 8001c6a: 4798 blx r3 } } - 8001c00: 46c0 nop @ (mov r8, r8) - 8001c02: 46bd mov sp, r7 - 8001c04: b004 add sp, #16 - 8001c06: bd80 pop {r7, pc} + 8001c6c: 46c0 nop @ (mov r8, r8) + 8001c6e: 46bd mov sp, r7 + 8001c70: b004 add sp, #16 + 8001c72: bd80 pop {r7, pc} -08001c08 : +08001c74 : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval None */ void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c) { - 8001c08: b580 push {r7, lr} - 8001c0a: b086 sub sp, #24 - 8001c0c: af00 add r7, sp, #0 - 8001c0e: 6078 str r0, [r7, #4] + 8001c74: b580 push {r7, lr} + 8001c76: b086 sub sp, #24 + 8001c78: af00 add r7, sp, #0 + 8001c7a: 6078 str r0, [r7, #4] uint32_t itflags = READ_REG(hi2c->Instance->ISR); - 8001c10: 687b ldr r3, [r7, #4] - 8001c12: 681b ldr r3, [r3, #0] - 8001c14: 699b ldr r3, [r3, #24] - 8001c16: 617b str r3, [r7, #20] + 8001c7c: 687b ldr r3, [r7, #4] + 8001c7e: 681b ldr r3, [r3, #0] + 8001c80: 699b ldr r3, [r3, #24] + 8001c82: 617b str r3, [r7, #20] uint32_t itsources = READ_REG(hi2c->Instance->CR1); - 8001c18: 687b ldr r3, [r7, #4] - 8001c1a: 681b ldr r3, [r3, #0] - 8001c1c: 681b ldr r3, [r3, #0] - 8001c1e: 613b str r3, [r7, #16] + 8001c84: 687b ldr r3, [r7, #4] + 8001c86: 681b ldr r3, [r3, #0] + 8001c88: 681b ldr r3, [r3, #0] + 8001c8a: 613b str r3, [r7, #16] uint32_t tmperror; /* I2C Bus error interrupt occurred ------------------------------------*/ if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_BERR) != RESET) && \ - 8001c20: 697a ldr r2, [r7, #20] - 8001c22: 2380 movs r3, #128 @ 0x80 - 8001c24: 005b lsls r3, r3, #1 - 8001c26: 4013 ands r3, r2 - 8001c28: d00e beq.n 8001c48 + 8001c8c: 697a ldr r2, [r7, #20] + 8001c8e: 2380 movs r3, #128 @ 0x80 + 8001c90: 005b lsls r3, r3, #1 + 8001c92: 4013 ands r3, r2 + 8001c94: d00e beq.n 8001cb4 (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) - 8001c2a: 693b ldr r3, [r7, #16] - 8001c2c: 2280 movs r2, #128 @ 0x80 - 8001c2e: 4013 ands r3, r2 + 8001c96: 693b ldr r3, [r7, #16] + 8001c98: 2280 movs r2, #128 @ 0x80 + 8001c9a: 4013 ands r3, r2 if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_BERR) != RESET) && \ - 8001c30: d00a beq.n 8001c48 + 8001c9c: d00a beq.n 8001cb4 { hi2c->ErrorCode |= HAL_I2C_ERROR_BERR; - 8001c32: 687b ldr r3, [r7, #4] - 8001c34: 6c5b ldr r3, [r3, #68] @ 0x44 - 8001c36: 2201 movs r2, #1 - 8001c38: 431a orrs r2, r3 - 8001c3a: 687b ldr r3, [r7, #4] - 8001c3c: 645a str r2, [r3, #68] @ 0x44 + 8001c9e: 687b ldr r3, [r7, #4] + 8001ca0: 6c5b ldr r3, [r3, #68] @ 0x44 + 8001ca2: 2201 movs r2, #1 + 8001ca4: 431a orrs r2, r3 + 8001ca6: 687b ldr r3, [r7, #4] + 8001ca8: 645a str r2, [r3, #68] @ 0x44 /* Clear BERR flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); - 8001c3e: 687b ldr r3, [r7, #4] - 8001c40: 681b ldr r3, [r3, #0] - 8001c42: 2280 movs r2, #128 @ 0x80 - 8001c44: 0052 lsls r2, r2, #1 - 8001c46: 61da str r2, [r3, #28] + 8001caa: 687b ldr r3, [r7, #4] + 8001cac: 681b ldr r3, [r3, #0] + 8001cae: 2280 movs r2, #128 @ 0x80 + 8001cb0: 0052 lsls r2, r2, #1 + 8001cb2: 61da str r2, [r3, #28] } /* I2C Over-Run/Under-Run interrupt occurred ----------------------------------------*/ if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_OVR) != RESET) && \ - 8001c48: 697a ldr r2, [r7, #20] - 8001c4a: 2380 movs r3, #128 @ 0x80 - 8001c4c: 00db lsls r3, r3, #3 - 8001c4e: 4013 ands r3, r2 - 8001c50: d00e beq.n 8001c70 + 8001cb4: 697a ldr r2, [r7, #20] + 8001cb6: 2380 movs r3, #128 @ 0x80 + 8001cb8: 00db lsls r3, r3, #3 + 8001cba: 4013 ands r3, r2 + 8001cbc: d00e beq.n 8001cdc (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) - 8001c52: 693b ldr r3, [r7, #16] - 8001c54: 2280 movs r2, #128 @ 0x80 - 8001c56: 4013 ands r3, r2 + 8001cbe: 693b ldr r3, [r7, #16] + 8001cc0: 2280 movs r2, #128 @ 0x80 + 8001cc2: 4013 ands r3, r2 if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_OVR) != RESET) && \ - 8001c58: d00a beq.n 8001c70 + 8001cc4: d00a beq.n 8001cdc { hi2c->ErrorCode |= HAL_I2C_ERROR_OVR; - 8001c5a: 687b ldr r3, [r7, #4] - 8001c5c: 6c5b ldr r3, [r3, #68] @ 0x44 - 8001c5e: 2208 movs r2, #8 - 8001c60: 431a orrs r2, r3 - 8001c62: 687b ldr r3, [r7, #4] - 8001c64: 645a str r2, [r3, #68] @ 0x44 + 8001cc6: 687b ldr r3, [r7, #4] + 8001cc8: 6c5b ldr r3, [r3, #68] @ 0x44 + 8001cca: 2208 movs r2, #8 + 8001ccc: 431a orrs r2, r3 + 8001cce: 687b ldr r3, [r7, #4] + 8001cd0: 645a str r2, [r3, #68] @ 0x44 /* Clear OVR flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); - 8001c66: 687b ldr r3, [r7, #4] - 8001c68: 681b ldr r3, [r3, #0] - 8001c6a: 2280 movs r2, #128 @ 0x80 - 8001c6c: 00d2 lsls r2, r2, #3 - 8001c6e: 61da str r2, [r3, #28] + 8001cd2: 687b ldr r3, [r7, #4] + 8001cd4: 681b ldr r3, [r3, #0] + 8001cd6: 2280 movs r2, #128 @ 0x80 + 8001cd8: 00d2 lsls r2, r2, #3 + 8001cda: 61da str r2, [r3, #28] } /* I2C Arbitration Loss error interrupt occurred -------------------------------------*/ if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_ARLO) != RESET) && \ - 8001c70: 697a ldr r2, [r7, #20] - 8001c72: 2380 movs r3, #128 @ 0x80 - 8001c74: 009b lsls r3, r3, #2 - 8001c76: 4013 ands r3, r2 - 8001c78: d00e beq.n 8001c98 + 8001cdc: 697a ldr r2, [r7, #20] + 8001cde: 2380 movs r3, #128 @ 0x80 + 8001ce0: 009b lsls r3, r3, #2 + 8001ce2: 4013 ands r3, r2 + 8001ce4: d00e beq.n 8001d04 (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) - 8001c7a: 693b ldr r3, [r7, #16] - 8001c7c: 2280 movs r2, #128 @ 0x80 - 8001c7e: 4013 ands r3, r2 + 8001ce6: 693b ldr r3, [r7, #16] + 8001ce8: 2280 movs r2, #128 @ 0x80 + 8001cea: 4013 ands r3, r2 if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_ARLO) != RESET) && \ - 8001c80: d00a beq.n 8001c98 + 8001cec: d00a beq.n 8001d04 { hi2c->ErrorCode |= HAL_I2C_ERROR_ARLO; - 8001c82: 687b ldr r3, [r7, #4] - 8001c84: 6c5b ldr r3, [r3, #68] @ 0x44 - 8001c86: 2202 movs r2, #2 - 8001c88: 431a orrs r2, r3 - 8001c8a: 687b ldr r3, [r7, #4] - 8001c8c: 645a str r2, [r3, #68] @ 0x44 + 8001cee: 687b ldr r3, [r7, #4] + 8001cf0: 6c5b ldr r3, [r3, #68] @ 0x44 + 8001cf2: 2202 movs r2, #2 + 8001cf4: 431a orrs r2, r3 + 8001cf6: 687b ldr r3, [r7, #4] + 8001cf8: 645a str r2, [r3, #68] @ 0x44 /* Clear ARLO flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); - 8001c8e: 687b ldr r3, [r7, #4] - 8001c90: 681b ldr r3, [r3, #0] - 8001c92: 2280 movs r2, #128 @ 0x80 - 8001c94: 0092 lsls r2, r2, #2 - 8001c96: 61da str r2, [r3, #28] + 8001cfa: 687b ldr r3, [r7, #4] + 8001cfc: 681b ldr r3, [r3, #0] + 8001cfe: 2280 movs r2, #128 @ 0x80 + 8001d00: 0092 lsls r2, r2, #2 + 8001d02: 61da str r2, [r3, #28] } /* Store current volatile hi2c->ErrorCode, misra rule */ tmperror = hi2c->ErrorCode; - 8001c98: 687b ldr r3, [r7, #4] - 8001c9a: 6c5b ldr r3, [r3, #68] @ 0x44 - 8001c9c: 60fb str r3, [r7, #12] + 8001d04: 687b ldr r3, [r7, #4] + 8001d06: 6c5b ldr r3, [r3, #68] @ 0x44 + 8001d08: 60fb str r3, [r7, #12] /* Call the Error Callback in case of Error detected */ if ((tmperror & (HAL_I2C_ERROR_BERR | HAL_I2C_ERROR_OVR | HAL_I2C_ERROR_ARLO)) != HAL_I2C_ERROR_NONE) - 8001c9e: 68fb ldr r3, [r7, #12] - 8001ca0: 220b movs r2, #11 - 8001ca2: 4013 ands r3, r2 - 8001ca4: d005 beq.n 8001cb2 + 8001d0a: 68fb ldr r3, [r7, #12] + 8001d0c: 220b movs r2, #11 + 8001d0e: 4013 ands r3, r2 + 8001d10: d005 beq.n 8001d1e { I2C_ITError(hi2c, tmperror); - 8001ca6: 68fa ldr r2, [r7, #12] - 8001ca8: 687b ldr r3, [r7, #4] - 8001caa: 0011 movs r1, r2 - 8001cac: 0018 movs r0, r3 - 8001cae: f001 f83d bl 8002d2c + 8001d12: 68fa ldr r2, [r7, #12] + 8001d14: 687b ldr r3, [r7, #4] + 8001d16: 0011 movs r1, r2 + 8001d18: 0018 movs r0, r3 + 8001d1a: f001 f83d bl 8002d98 } } - 8001cb2: 46c0 nop @ (mov r8, r8) - 8001cb4: 46bd mov sp, r7 - 8001cb6: b006 add sp, #24 - 8001cb8: bd80 pop {r7, pc} + 8001d1e: 46c0 nop @ (mov r8, r8) + 8001d20: 46bd mov sp, r7 + 8001d22: b006 add sp, #24 + 8001d24: bd80 pop {r7, pc} -08001cba : +08001d26 : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval None */ __weak void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c) { - 8001cba: b580 push {r7, lr} - 8001cbc: b082 sub sp, #8 - 8001cbe: af00 add r7, sp, #0 - 8001cc0: 6078 str r0, [r7, #4] + 8001d26: b580 push {r7, lr} + 8001d28: b082 sub sp, #8 + 8001d2a: af00 add r7, sp, #0 + 8001d2c: 6078 str r0, [r7, #4] UNUSED(hi2c); /* NOTE : This function should not be modified, when the callback is needed, the HAL_I2C_MasterTxCpltCallback could be implemented in the user file */ } - 8001cc2: 46c0 nop @ (mov r8, r8) - 8001cc4: 46bd mov sp, r7 - 8001cc6: b002 add sp, #8 - 8001cc8: bd80 pop {r7, pc} + 8001d2e: 46c0 nop @ (mov r8, r8) + 8001d30: 46bd mov sp, r7 + 8001d32: b002 add sp, #8 + 8001d34: bd80 pop {r7, pc} -08001cca : +08001d36 : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval None */ __weak void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c) { - 8001cca: b580 push {r7, lr} - 8001ccc: b082 sub sp, #8 - 8001cce: af00 add r7, sp, #0 - 8001cd0: 6078 str r0, [r7, #4] + 8001d36: b580 push {r7, lr} + 8001d38: b082 sub sp, #8 + 8001d3a: af00 add r7, sp, #0 + 8001d3c: 6078 str r0, [r7, #4] UNUSED(hi2c); /* NOTE : This function should not be modified, when the callback is needed, the HAL_I2C_MasterRxCpltCallback could be implemented in the user file */ } - 8001cd2: 46c0 nop @ (mov r8, r8) - 8001cd4: 46bd mov sp, r7 - 8001cd6: b002 add sp, #8 - 8001cd8: bd80 pop {r7, pc} + 8001d3e: 46c0 nop @ (mov r8, r8) + 8001d40: 46bd mov sp, r7 + 8001d42: b002 add sp, #8 + 8001d44: bd80 pop {r7, pc} -08001cda : +08001d46 : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval None */ __weak void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c) { - 8001cda: b580 push {r7, lr} - 8001cdc: b082 sub sp, #8 - 8001cde: af00 add r7, sp, #0 - 8001ce0: 6078 str r0, [r7, #4] + 8001d46: b580 push {r7, lr} + 8001d48: b082 sub sp, #8 + 8001d4a: af00 add r7, sp, #0 + 8001d4c: 6078 str r0, [r7, #4] UNUSED(hi2c); /* NOTE : This function should not be modified, when the callback is needed, the HAL_I2C_MemTxCpltCallback could be implemented in the user file */ } - 8001ce2: 46c0 nop @ (mov r8, r8) - 8001ce4: 46bd mov sp, r7 - 8001ce6: b002 add sp, #8 - 8001ce8: bd80 pop {r7, pc} + 8001d4e: 46c0 nop @ (mov r8, r8) + 8001d50: 46bd mov sp, r7 + 8001d52: b002 add sp, #8 + 8001d54: bd80 pop {r7, pc} -08001cea : +08001d56 : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval None */ __weak void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c) { - 8001cea: b580 push {r7, lr} - 8001cec: b082 sub sp, #8 - 8001cee: af00 add r7, sp, #0 - 8001cf0: 6078 str r0, [r7, #4] + 8001d56: b580 push {r7, lr} + 8001d58: b082 sub sp, #8 + 8001d5a: af00 add r7, sp, #0 + 8001d5c: 6078 str r0, [r7, #4] UNUSED(hi2c); /* NOTE : This function should not be modified, when the callback is needed, the HAL_I2C_MemRxCpltCallback could be implemented in the user file */ } - 8001cf2: 46c0 nop @ (mov r8, r8) - 8001cf4: 46bd mov sp, r7 - 8001cf6: b002 add sp, #8 - 8001cf8: bd80 pop {r7, pc} + 8001d5e: 46c0 nop @ (mov r8, r8) + 8001d60: 46bd mov sp, r7 + 8001d62: b002 add sp, #8 + 8001d64: bd80 pop {r7, pc} -08001cfa : +08001d66 : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval None */ __weak void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c) { - 8001cfa: b580 push {r7, lr} - 8001cfc: b082 sub sp, #8 - 8001cfe: af00 add r7, sp, #0 - 8001d00: 6078 str r0, [r7, #4] + 8001d66: b580 push {r7, lr} + 8001d68: b082 sub sp, #8 + 8001d6a: af00 add r7, sp, #0 + 8001d6c: 6078 str r0, [r7, #4] UNUSED(hi2c); /* NOTE : This function should not be modified, when the callback is needed, the HAL_I2C_ErrorCallback could be implemented in the user file */ } - 8001d02: 46c0 nop @ (mov r8, r8) - 8001d04: 46bd mov sp, r7 - 8001d06: b002 add sp, #8 - 8001d08: bd80 pop {r7, pc} + 8001d6e: 46c0 nop @ (mov r8, r8) + 8001d70: 46bd mov sp, r7 + 8001d72: b002 add sp, #8 + 8001d74: bd80 pop {r7, pc} -08001d0a : +08001d76 : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval None */ __weak void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c) { - 8001d0a: b580 push {r7, lr} - 8001d0c: b082 sub sp, #8 - 8001d0e: af00 add r7, sp, #0 - 8001d10: 6078 str r0, [r7, #4] + 8001d76: b580 push {r7, lr} + 8001d78: b082 sub sp, #8 + 8001d7a: af00 add r7, sp, #0 + 8001d7c: 6078 str r0, [r7, #4] UNUSED(hi2c); /* NOTE : This function should not be modified, when the callback is needed, the HAL_I2C_AbortCpltCallback could be implemented in the user file */ } - 8001d12: 46c0 nop @ (mov r8, r8) - 8001d14: 46bd mov sp, r7 - 8001d16: b002 add sp, #8 - 8001d18: bd80 pop {r7, pc} + 8001d7e: 46c0 nop @ (mov r8, r8) + 8001d80: 46bd mov sp, r7 + 8001d82: b002 add sp, #8 + 8001d84: bd80 pop {r7, pc} ... -08001d1c : +08001d88 : * @param ITSources Interrupt sources enabled. * @retval HAL status */ static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources) { - 8001d1c: b580 push {r7, lr} - 8001d1e: b086 sub sp, #24 - 8001d20: af00 add r7, sp, #0 - 8001d22: 60f8 str r0, [r7, #12] - 8001d24: 60b9 str r1, [r7, #8] - 8001d26: 607a str r2, [r7, #4] + 8001d88: b580 push {r7, lr} + 8001d8a: b086 sub sp, #24 + 8001d8c: af00 add r7, sp, #0 + 8001d8e: 60f8 str r0, [r7, #12] + 8001d90: 60b9 str r1, [r7, #8] + 8001d92: 607a str r2, [r7, #4] uint32_t tmpoptions = hi2c->XferOptions; - 8001d28: 68fb ldr r3, [r7, #12] - 8001d2a: 6adb ldr r3, [r3, #44] @ 0x2c - 8001d2c: 617b str r3, [r7, #20] + 8001d94: 68fb ldr r3, [r7, #12] + 8001d96: 6adb ldr r3, [r3, #44] @ 0x2c + 8001d98: 617b str r3, [r7, #20] uint32_t tmpITFlags = ITFlags; - 8001d2e: 68bb ldr r3, [r7, #8] - 8001d30: 613b str r3, [r7, #16] + 8001d9a: 68bb ldr r3, [r7, #8] + 8001d9c: 613b str r3, [r7, #16] /* Process locked */ __HAL_LOCK(hi2c); - 8001d32: 68fb ldr r3, [r7, #12] - 8001d34: 2240 movs r2, #64 @ 0x40 - 8001d36: 5c9b ldrb r3, [r3, r2] - 8001d38: 2b01 cmp r3, #1 - 8001d3a: d101 bne.n 8001d40 - 8001d3c: 2302 movs r3, #2 - 8001d3e: e0e7 b.n 8001f10 - 8001d40: 68fb ldr r3, [r7, #12] - 8001d42: 2240 movs r2, #64 @ 0x40 - 8001d44: 2101 movs r1, #1 - 8001d46: 5499 strb r1, [r3, r2] + 8001d9e: 68fb ldr r3, [r7, #12] + 8001da0: 2240 movs r2, #64 @ 0x40 + 8001da2: 5c9b ldrb r3, [r3, r2] + 8001da4: 2b01 cmp r3, #1 + 8001da6: d101 bne.n 8001dac + 8001da8: 2302 movs r3, #2 + 8001daa: e0e7 b.n 8001f7c + 8001dac: 68fb ldr r3, [r7, #12] + 8001dae: 2240 movs r2, #64 @ 0x40 + 8001db0: 2101 movs r1, #1 + 8001db2: 5499 strb r1, [r3, r2] /* Check if STOPF is set */ if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ - 8001d48: 693b ldr r3, [r7, #16] - 8001d4a: 2220 movs r2, #32 - 8001d4c: 4013 ands r3, r2 - 8001d4e: d00a beq.n 8001d66 + 8001db4: 693b ldr r3, [r7, #16] + 8001db6: 2220 movs r2, #32 + 8001db8: 4013 ands r3, r2 + 8001dba: d00a beq.n 8001dd2 (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) - 8001d50: 687b ldr r3, [r7, #4] - 8001d52: 2220 movs r2, #32 - 8001d54: 4013 ands r3, r2 + 8001dbc: 687b ldr r3, [r7, #4] + 8001dbe: 2220 movs r2, #32 + 8001dc0: 4013 ands r3, r2 if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ - 8001d56: d006 beq.n 8001d66 + 8001dc2: d006 beq.n 8001dd2 { /* Call I2C Slave complete process */ I2C_ITSlaveCplt(hi2c, tmpITFlags); - 8001d58: 693a ldr r2, [r7, #16] - 8001d5a: 68fb ldr r3, [r7, #12] - 8001d5c: 0011 movs r1, r2 - 8001d5e: 0018 movs r0, r3 - 8001d60: f000 fe04 bl 800296c - 8001d64: e0cf b.n 8001f06 + 8001dc4: 693a ldr r2, [r7, #16] + 8001dc6: 68fb ldr r3, [r7, #12] + 8001dc8: 0011 movs r1, r2 + 8001dca: 0018 movs r0, r3 + 8001dcc: f000 fe04 bl 80029d8 + 8001dd0: e0cf b.n 8001f72 } else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ - 8001d66: 693b ldr r3, [r7, #16] - 8001d68: 2210 movs r2, #16 - 8001d6a: 4013 ands r3, r2 - 8001d6c: d052 beq.n 8001e14 + 8001dd2: 693b ldr r3, [r7, #16] + 8001dd4: 2210 movs r2, #16 + 8001dd6: 4013 ands r3, r2 + 8001dd8: d052 beq.n 8001e80 (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) - 8001d6e: 687b ldr r3, [r7, #4] - 8001d70: 2210 movs r2, #16 - 8001d72: 4013 ands r3, r2 + 8001dda: 687b ldr r3, [r7, #4] + 8001ddc: 2210 movs r2, #16 + 8001dde: 4013 ands r3, r2 else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ - 8001d74: d04e beq.n 8001e14 + 8001de0: d04e beq.n 8001e80 { /* Check that I2C transfer finished */ /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */ /* Mean XferCount == 0*/ /* So clear Flag NACKF only */ if (hi2c->XferCount == 0U) - 8001d76: 68fb ldr r3, [r7, #12] - 8001d78: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8001d7a: b29b uxth r3, r3 - 8001d7c: 2b00 cmp r3, #0 - 8001d7e: d12d bne.n 8001ddc + 8001de2: 68fb ldr r3, [r7, #12] + 8001de4: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8001de6: b29b uxth r3, r3 + 8001de8: 2b00 cmp r3, #0 + 8001dea: d12d bne.n 8001e48 { if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) - 8001d80: 68fb ldr r3, [r7, #12] - 8001d82: 2241 movs r2, #65 @ 0x41 - 8001d84: 5c9b ldrb r3, [r3, r2] - 8001d86: b2db uxtb r3, r3 - 8001d88: 2b28 cmp r3, #40 @ 0x28 - 8001d8a: d10b bne.n 8001da4 - 8001d8c: 697a ldr r2, [r7, #20] - 8001d8e: 2380 movs r3, #128 @ 0x80 - 8001d90: 049b lsls r3, r3, #18 - 8001d92: 429a cmp r2, r3 - 8001d94: d106 bne.n 8001da4 + 8001dec: 68fb ldr r3, [r7, #12] + 8001dee: 2241 movs r2, #65 @ 0x41 + 8001df0: 5c9b ldrb r3, [r3, r2] + 8001df2: b2db uxtb r3, r3 + 8001df4: 2b28 cmp r3, #40 @ 0x28 + 8001df6: d10b bne.n 8001e10 + 8001df8: 697a ldr r2, [r7, #20] + 8001dfa: 2380 movs r3, #128 @ 0x80 + 8001dfc: 049b lsls r3, r3, #18 + 8001dfe: 429a cmp r2, r3 + 8001e00: d106 bne.n 8001e10 /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for Warning[Pa134]: left and right operands are identical */ { /* Call I2C Listen complete process */ I2C_ITListenCplt(hi2c, tmpITFlags); - 8001d96: 693a ldr r2, [r7, #16] - 8001d98: 68fb ldr r3, [r7, #12] - 8001d9a: 0011 movs r1, r2 - 8001d9c: 0018 movs r0, r3 - 8001d9e: f000 ff6d bl 8002c7c - 8001da2: e036 b.n 8001e12 + 8001e02: 693a ldr r2, [r7, #16] + 8001e04: 68fb ldr r3, [r7, #12] + 8001e06: 0011 movs r1, r2 + 8001e08: 0018 movs r0, r3 + 8001e0a: f000 ff6d bl 8002ce8 + 8001e0e: e036 b.n 8001e7e } else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) - 8001da4: 68fb ldr r3, [r7, #12] - 8001da6: 2241 movs r2, #65 @ 0x41 - 8001da8: 5c9b ldrb r3, [r3, r2] - 8001daa: b2db uxtb r3, r3 - 8001dac: 2b29 cmp r3, #41 @ 0x29 - 8001dae: d110 bne.n 8001dd2 - 8001db0: 697b ldr r3, [r7, #20] - 8001db2: 4a59 ldr r2, [pc, #356] @ (8001f18 ) - 8001db4: 4293 cmp r3, r2 - 8001db6: d00c beq.n 8001dd2 + 8001e10: 68fb ldr r3, [r7, #12] + 8001e12: 2241 movs r2, #65 @ 0x41 + 8001e14: 5c9b ldrb r3, [r3, r2] + 8001e16: b2db uxtb r3, r3 + 8001e18: 2b29 cmp r3, #41 @ 0x29 + 8001e1a: d110 bne.n 8001e3e + 8001e1c: 697b ldr r3, [r7, #20] + 8001e1e: 4a59 ldr r2, [pc, #356] @ (8001f84 ) + 8001e20: 4293 cmp r3, r2 + 8001e22: d00c beq.n 8001e3e { /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8001db8: 68fb ldr r3, [r7, #12] - 8001dba: 681b ldr r3, [r3, #0] - 8001dbc: 2210 movs r2, #16 - 8001dbe: 61da str r2, [r3, #28] + 8001e24: 68fb ldr r3, [r7, #12] + 8001e26: 681b ldr r3, [r3, #0] + 8001e28: 2210 movs r2, #16 + 8001e2a: 61da str r2, [r3, #28] /* Flush TX register */ I2C_Flush_TXDR(hi2c); - 8001dc0: 68fb ldr r3, [r7, #12] - 8001dc2: 0018 movs r0, r3 - 8001dc4: f001 f8dd bl 8002f82 + 8001e2c: 68fb ldr r3, [r7, #12] + 8001e2e: 0018 movs r0, r3 + 8001e30: f001 f8dd bl 8002fee /* Last Byte is Transmitted */ /* Call I2C Slave Sequential complete process */ I2C_ITSlaveSeqCplt(hi2c); - 8001dc8: 68fb ldr r3, [r7, #12] - 8001dca: 0018 movs r0, r3 - 8001dcc: f000 fc9c bl 8002708 - 8001dd0: e01f b.n 8001e12 + 8001e34: 68fb ldr r3, [r7, #12] + 8001e36: 0018 movs r0, r3 + 8001e38: f000 fc9c bl 8002774 + 8001e3c: e01f b.n 8001e7e } else { /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8001dd2: 68fb ldr r3, [r7, #12] - 8001dd4: 681b ldr r3, [r3, #0] - 8001dd6: 2210 movs r2, #16 - 8001dd8: 61da str r2, [r3, #28] + 8001e3e: 68fb ldr r3, [r7, #12] + 8001e40: 681b ldr r3, [r3, #0] + 8001e42: 2210 movs r2, #16 + 8001e44: 61da str r2, [r3, #28] if (hi2c->XferCount == 0U) - 8001dda: e091 b.n 8001f00 + 8001e46: e091 b.n 8001f6c } else { /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/ /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8001ddc: 68fb ldr r3, [r7, #12] - 8001dde: 681b ldr r3, [r3, #0] - 8001de0: 2210 movs r2, #16 - 8001de2: 61da str r2, [r3, #28] + 8001e48: 68fb ldr r3, [r7, #12] + 8001e4a: 681b ldr r3, [r3, #0] + 8001e4c: 2210 movs r2, #16 + 8001e4e: 61da str r2, [r3, #28] /* Set ErrorCode corresponding to a Non-Acknowledge */ hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 8001de4: 68fb ldr r3, [r7, #12] - 8001de6: 6c5b ldr r3, [r3, #68] @ 0x44 - 8001de8: 2204 movs r2, #4 - 8001dea: 431a orrs r2, r3 - 8001dec: 68fb ldr r3, [r7, #12] - 8001dee: 645a str r2, [r3, #68] @ 0x44 + 8001e50: 68fb ldr r3, [r7, #12] + 8001e52: 6c5b ldr r3, [r3, #68] @ 0x44 + 8001e54: 2204 movs r2, #4 + 8001e56: 431a orrs r2, r3 + 8001e58: 68fb ldr r3, [r7, #12] + 8001e5a: 645a str r2, [r3, #68] @ 0x44 if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME)) - 8001df0: 697b ldr r3, [r7, #20] - 8001df2: 2b00 cmp r3, #0 - 8001df4: d005 beq.n 8001e02 - 8001df6: 697a ldr r2, [r7, #20] - 8001df8: 2380 movs r3, #128 @ 0x80 - 8001dfa: 045b lsls r3, r3, #17 - 8001dfc: 429a cmp r2, r3 - 8001dfe: d000 beq.n 8001e02 - 8001e00: e07e b.n 8001f00 + 8001e5c: 697b ldr r3, [r7, #20] + 8001e5e: 2b00 cmp r3, #0 + 8001e60: d005 beq.n 8001e6e + 8001e62: 697a ldr r2, [r7, #20] + 8001e64: 2380 movs r3, #128 @ 0x80 + 8001e66: 045b lsls r3, r3, #17 + 8001e68: 429a cmp r2, r3 + 8001e6a: d000 beq.n 8001e6e + 8001e6c: e07e b.n 8001f6c { /* Call the corresponding callback to inform upper layer of End of Transfer */ I2C_ITError(hi2c, hi2c->ErrorCode); - 8001e02: 68fb ldr r3, [r7, #12] - 8001e04: 6c5a ldr r2, [r3, #68] @ 0x44 - 8001e06: 68fb ldr r3, [r7, #12] - 8001e08: 0011 movs r1, r2 - 8001e0a: 0018 movs r0, r3 - 8001e0c: f000 ff8e bl 8002d2c + 8001e6e: 68fb ldr r3, [r7, #12] + 8001e70: 6c5a ldr r2, [r3, #68] @ 0x44 + 8001e72: 68fb ldr r3, [r7, #12] + 8001e74: 0011 movs r1, r2 + 8001e76: 0018 movs r0, r3 + 8001e78: f000 ff8e bl 8002d98 if (hi2c->XferCount == 0U) - 8001e10: e076 b.n 8001f00 - 8001e12: e075 b.n 8001f00 + 8001e7c: e076 b.n 8001f6c + 8001e7e: e075 b.n 8001f6c } } } else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ - 8001e14: 693b ldr r3, [r7, #16] - 8001e16: 2204 movs r2, #4 - 8001e18: 4013 ands r3, r2 - 8001e1a: d02f beq.n 8001e7c + 8001e80: 693b ldr r3, [r7, #16] + 8001e82: 2204 movs r2, #4 + 8001e84: 4013 ands r3, r2 + 8001e86: d02f beq.n 8001ee8 (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) - 8001e1c: 687b ldr r3, [r7, #4] - 8001e1e: 2204 movs r2, #4 - 8001e20: 4013 ands r3, r2 + 8001e88: 687b ldr r3, [r7, #4] + 8001e8a: 2204 movs r2, #4 + 8001e8c: 4013 ands r3, r2 else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ - 8001e22: d02b beq.n 8001e7c + 8001e8e: d02b beq.n 8001ee8 { if (hi2c->XferCount > 0U) - 8001e24: 68fb ldr r3, [r7, #12] - 8001e26: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8001e28: b29b uxth r3, r3 - 8001e2a: 2b00 cmp r3, #0 - 8001e2c: d018 beq.n 8001e60 + 8001e90: 68fb ldr r3, [r7, #12] + 8001e92: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8001e94: b29b uxth r3, r3 + 8001e96: 2b00 cmp r3, #0 + 8001e98: d018 beq.n 8001ecc { /* Read data from RXDR */ *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; - 8001e2e: 68fb ldr r3, [r7, #12] - 8001e30: 681b ldr r3, [r3, #0] - 8001e32: 6a5a ldr r2, [r3, #36] @ 0x24 - 8001e34: 68fb ldr r3, [r7, #12] - 8001e36: 6a5b ldr r3, [r3, #36] @ 0x24 - 8001e38: b2d2 uxtb r2, r2 - 8001e3a: 701a strb r2, [r3, #0] + 8001e9a: 68fb ldr r3, [r7, #12] + 8001e9c: 681b ldr r3, [r3, #0] + 8001e9e: 6a5a ldr r2, [r3, #36] @ 0x24 + 8001ea0: 68fb ldr r3, [r7, #12] + 8001ea2: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001ea4: b2d2 uxtb r2, r2 + 8001ea6: 701a strb r2, [r3, #0] /* Increment Buffer pointer */ hi2c->pBuffPtr++; - 8001e3c: 68fb ldr r3, [r7, #12] - 8001e3e: 6a5b ldr r3, [r3, #36] @ 0x24 - 8001e40: 1c5a adds r2, r3, #1 - 8001e42: 68fb ldr r3, [r7, #12] - 8001e44: 625a str r2, [r3, #36] @ 0x24 + 8001ea8: 68fb ldr r3, [r7, #12] + 8001eaa: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001eac: 1c5a adds r2, r3, #1 + 8001eae: 68fb ldr r3, [r7, #12] + 8001eb0: 625a str r2, [r3, #36] @ 0x24 hi2c->XferSize--; - 8001e46: 68fb ldr r3, [r7, #12] - 8001e48: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8001e4a: 3b01 subs r3, #1 - 8001e4c: b29a uxth r2, r3 - 8001e4e: 68fb ldr r3, [r7, #12] - 8001e50: 851a strh r2, [r3, #40] @ 0x28 + 8001eb2: 68fb ldr r3, [r7, #12] + 8001eb4: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8001eb6: 3b01 subs r3, #1 + 8001eb8: b29a uxth r2, r3 + 8001eba: 68fb ldr r3, [r7, #12] + 8001ebc: 851a strh r2, [r3, #40] @ 0x28 hi2c->XferCount--; - 8001e52: 68fb ldr r3, [r7, #12] - 8001e54: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8001e56: b29b uxth r3, r3 - 8001e58: 3b01 subs r3, #1 - 8001e5a: b29a uxth r2, r3 - 8001e5c: 68fb ldr r3, [r7, #12] - 8001e5e: 855a strh r2, [r3, #42] @ 0x2a + 8001ebe: 68fb ldr r3, [r7, #12] + 8001ec0: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8001ec2: b29b uxth r3, r3 + 8001ec4: 3b01 subs r3, #1 + 8001ec6: b29a uxth r2, r3 + 8001ec8: 68fb ldr r3, [r7, #12] + 8001eca: 855a strh r2, [r3, #42] @ 0x2a } if ((hi2c->XferCount == 0U) && \ - 8001e60: 68fb ldr r3, [r7, #12] - 8001e62: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8001e64: b29b uxth r3, r3 - 8001e66: 2b00 cmp r3, #0 - 8001e68: d14c bne.n 8001f04 - 8001e6a: 697b ldr r3, [r7, #20] - 8001e6c: 4a2a ldr r2, [pc, #168] @ (8001f18 ) - 8001e6e: 4293 cmp r3, r2 - 8001e70: d048 beq.n 8001f04 + 8001ecc: 68fb ldr r3, [r7, #12] + 8001ece: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8001ed0: b29b uxth r3, r3 + 8001ed2: 2b00 cmp r3, #0 + 8001ed4: d14c bne.n 8001f70 + 8001ed6: 697b ldr r3, [r7, #20] + 8001ed8: 4a2a ldr r2, [pc, #168] @ (8001f84 ) + 8001eda: 4293 cmp r3, r2 + 8001edc: d048 beq.n 8001f70 (tmpoptions != I2C_NO_OPTION_FRAME)) { /* Call I2C Slave Sequential complete process */ I2C_ITSlaveSeqCplt(hi2c); - 8001e72: 68fb ldr r3, [r7, #12] - 8001e74: 0018 movs r0, r3 - 8001e76: f000 fc47 bl 8002708 + 8001ede: 68fb ldr r3, [r7, #12] + 8001ee0: 0018 movs r0, r3 + 8001ee2: f000 fc47 bl 8002774 if ((hi2c->XferCount == 0U) && \ - 8001e7a: e043 b.n 8001f04 + 8001ee6: e043 b.n 8001f70 } } else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_ADDR) != RESET) && \ - 8001e7c: 693b ldr r3, [r7, #16] - 8001e7e: 2208 movs r2, #8 - 8001e80: 4013 ands r3, r2 - 8001e82: d00a beq.n 8001e9a + 8001ee8: 693b ldr r3, [r7, #16] + 8001eea: 2208 movs r2, #8 + 8001eec: 4013 ands r3, r2 + 8001eee: d00a beq.n 8001f06 (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) - 8001e84: 687b ldr r3, [r7, #4] - 8001e86: 2208 movs r2, #8 - 8001e88: 4013 ands r3, r2 + 8001ef0: 687b ldr r3, [r7, #4] + 8001ef2: 2208 movs r2, #8 + 8001ef4: 4013 ands r3, r2 else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_ADDR) != RESET) && \ - 8001e8a: d006 beq.n 8001e9a + 8001ef6: d006 beq.n 8001f06 { I2C_ITAddrCplt(hi2c, tmpITFlags); - 8001e8c: 693a ldr r2, [r7, #16] - 8001e8e: 68fb ldr r3, [r7, #12] - 8001e90: 0011 movs r1, r2 - 8001e92: 0018 movs r0, r3 - 8001e94: f000 fb52 bl 800253c - 8001e98: e035 b.n 8001f06 + 8001ef8: 693a ldr r2, [r7, #16] + 8001efa: 68fb ldr r3, [r7, #12] + 8001efc: 0011 movs r1, r2 + 8001efe: 0018 movs r0, r3 + 8001f00: f000 fb52 bl 80025a8 + 8001f04: e035 b.n 8001f72 } else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ - 8001e9a: 693b ldr r3, [r7, #16] - 8001e9c: 2202 movs r2, #2 - 8001e9e: 4013 ands r3, r2 - 8001ea0: d031 beq.n 8001f06 + 8001f06: 693b ldr r3, [r7, #16] + 8001f08: 2202 movs r2, #2 + 8001f0a: 4013 ands r3, r2 + 8001f0c: d031 beq.n 8001f72 (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) - 8001ea2: 687b ldr r3, [r7, #4] - 8001ea4: 2202 movs r2, #2 - 8001ea6: 4013 ands r3, r2 + 8001f0e: 687b ldr r3, [r7, #4] + 8001f10: 2202 movs r2, #2 + 8001f12: 4013 ands r3, r2 else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ - 8001ea8: d02d beq.n 8001f06 + 8001f14: d02d beq.n 8001f72 { /* Write data to TXDR only if XferCount not reach "0" */ /* A TXIS flag can be set, during STOP treatment */ /* Check if all Data have already been sent */ /* If it is the case, this last write in TXDR is not sent, correspond to a dummy TXIS event */ if (hi2c->XferCount > 0U) - 8001eaa: 68fb ldr r3, [r7, #12] - 8001eac: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8001eae: b29b uxth r3, r3 - 8001eb0: 2b00 cmp r3, #0 - 8001eb2: d018 beq.n 8001ee6 + 8001f16: 68fb ldr r3, [r7, #12] + 8001f18: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8001f1a: b29b uxth r3, r3 + 8001f1c: 2b00 cmp r3, #0 + 8001f1e: d018 beq.n 8001f52 { /* Write data to TXDR */ hi2c->Instance->TXDR = *hi2c->pBuffPtr; - 8001eb4: 68fb ldr r3, [r7, #12] - 8001eb6: 6a5b ldr r3, [r3, #36] @ 0x24 - 8001eb8: 781a ldrb r2, [r3, #0] - 8001eba: 68fb ldr r3, [r7, #12] - 8001ebc: 681b ldr r3, [r3, #0] - 8001ebe: 629a str r2, [r3, #40] @ 0x28 + 8001f20: 68fb ldr r3, [r7, #12] + 8001f22: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001f24: 781a ldrb r2, [r3, #0] + 8001f26: 68fb ldr r3, [r7, #12] + 8001f28: 681b ldr r3, [r3, #0] + 8001f2a: 629a str r2, [r3, #40] @ 0x28 /* Increment Buffer pointer */ hi2c->pBuffPtr++; - 8001ec0: 68fb ldr r3, [r7, #12] - 8001ec2: 6a5b ldr r3, [r3, #36] @ 0x24 - 8001ec4: 1c5a adds r2, r3, #1 - 8001ec6: 68fb ldr r3, [r7, #12] - 8001ec8: 625a str r2, [r3, #36] @ 0x24 + 8001f2c: 68fb ldr r3, [r7, #12] + 8001f2e: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001f30: 1c5a adds r2, r3, #1 + 8001f32: 68fb ldr r3, [r7, #12] + 8001f34: 625a str r2, [r3, #36] @ 0x24 hi2c->XferCount--; - 8001eca: 68fb ldr r3, [r7, #12] - 8001ecc: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8001ece: b29b uxth r3, r3 - 8001ed0: 3b01 subs r3, #1 - 8001ed2: b29a uxth r2, r3 - 8001ed4: 68fb ldr r3, [r7, #12] - 8001ed6: 855a strh r2, [r3, #42] @ 0x2a + 8001f36: 68fb ldr r3, [r7, #12] + 8001f38: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8001f3a: b29b uxth r3, r3 + 8001f3c: 3b01 subs r3, #1 + 8001f3e: b29a uxth r2, r3 + 8001f40: 68fb ldr r3, [r7, #12] + 8001f42: 855a strh r2, [r3, #42] @ 0x2a hi2c->XferSize--; - 8001ed8: 68fb ldr r3, [r7, #12] - 8001eda: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8001edc: 3b01 subs r3, #1 - 8001ede: b29a uxth r2, r3 - 8001ee0: 68fb ldr r3, [r7, #12] - 8001ee2: 851a strh r2, [r3, #40] @ 0x28 - 8001ee4: e00f b.n 8001f06 + 8001f44: 68fb ldr r3, [r7, #12] + 8001f46: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8001f48: 3b01 subs r3, #1 + 8001f4a: b29a uxth r2, r3 + 8001f4c: 68fb ldr r3, [r7, #12] + 8001f4e: 851a strh r2, [r3, #40] @ 0x28 + 8001f50: e00f b.n 8001f72 } else { if ((tmpoptions == I2C_NEXT_FRAME) || (tmpoptions == I2C_FIRST_FRAME)) - 8001ee6: 697a ldr r2, [r7, #20] - 8001ee8: 2380 movs r3, #128 @ 0x80 - 8001eea: 045b lsls r3, r3, #17 - 8001eec: 429a cmp r2, r3 - 8001eee: d002 beq.n 8001ef6 - 8001ef0: 697b ldr r3, [r7, #20] - 8001ef2: 2b00 cmp r3, #0 - 8001ef4: d107 bne.n 8001f06 + 8001f52: 697a ldr r2, [r7, #20] + 8001f54: 2380 movs r3, #128 @ 0x80 + 8001f56: 045b lsls r3, r3, #17 + 8001f58: 429a cmp r2, r3 + 8001f5a: d002 beq.n 8001f62 + 8001f5c: 697b ldr r3, [r7, #20] + 8001f5e: 2b00 cmp r3, #0 + 8001f60: d107 bne.n 8001f72 { /* Last Byte is Transmitted */ /* Call I2C Slave Sequential complete process */ I2C_ITSlaveSeqCplt(hi2c); - 8001ef6: 68fb ldr r3, [r7, #12] - 8001ef8: 0018 movs r0, r3 - 8001efa: f000 fc05 bl 8002708 - 8001efe: e002 b.n 8001f06 + 8001f62: 68fb ldr r3, [r7, #12] + 8001f64: 0018 movs r0, r3 + 8001f66: f000 fc05 bl 8002774 + 8001f6a: e002 b.n 8001f72 if (hi2c->XferCount == 0U) - 8001f00: 46c0 nop @ (mov r8, r8) - 8001f02: e000 b.n 8001f06 + 8001f6c: 46c0 nop @ (mov r8, r8) + 8001f6e: e000 b.n 8001f72 if ((hi2c->XferCount == 0U) && \ - 8001f04: 46c0 nop @ (mov r8, r8) + 8001f70: 46c0 nop @ (mov r8, r8) { /* Nothing to do */ } /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8001f06: 68fb ldr r3, [r7, #12] - 8001f08: 2240 movs r2, #64 @ 0x40 - 8001f0a: 2100 movs r1, #0 - 8001f0c: 5499 strb r1, [r3, r2] + 8001f72: 68fb ldr r3, [r7, #12] + 8001f74: 2240 movs r2, #64 @ 0x40 + 8001f76: 2100 movs r1, #0 + 8001f78: 5499 strb r1, [r3, r2] return HAL_OK; - 8001f0e: 2300 movs r3, #0 + 8001f7a: 2300 movs r3, #0 } - 8001f10: 0018 movs r0, r3 - 8001f12: 46bd mov sp, r7 - 8001f14: b006 add sp, #24 - 8001f16: bd80 pop {r7, pc} - 8001f18: ffff0000 .word 0xffff0000 + 8001f7c: 0018 movs r0, r3 + 8001f7e: 46bd mov sp, r7 + 8001f80: b006 add sp, #24 + 8001f82: bd80 pop {r7, pc} + 8001f84: ffff0000 .word 0xffff0000 -08001f1c : +08001f88 : * @param ITSources Interrupt sources enabled. * @retval HAL status */ static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources) { - 8001f1c: b590 push {r4, r7, lr} - 8001f1e: b089 sub sp, #36 @ 0x24 - 8001f20: af02 add r7, sp, #8 - 8001f22: 60f8 str r0, [r7, #12] - 8001f24: 60b9 str r1, [r7, #8] - 8001f26: 607a str r2, [r7, #4] + 8001f88: b590 push {r4, r7, lr} + 8001f8a: b089 sub sp, #36 @ 0x24 + 8001f8c: af02 add r7, sp, #8 + 8001f8e: 60f8 str r0, [r7, #12] + 8001f90: 60b9 str r1, [r7, #8] + 8001f92: 607a str r2, [r7, #4] uint16_t devaddress; uint32_t xfermode; /* Process Locked */ __HAL_LOCK(hi2c); - 8001f28: 68fb ldr r3, [r7, #12] - 8001f2a: 2240 movs r2, #64 @ 0x40 - 8001f2c: 5c9b ldrb r3, [r3, r2] - 8001f2e: 2b01 cmp r3, #1 - 8001f30: d101 bne.n 8001f36 - 8001f32: 2302 movs r3, #2 - 8001f34: e0e7 b.n 8002106 - 8001f36: 68fb ldr r3, [r7, #12] - 8001f38: 2240 movs r2, #64 @ 0x40 - 8001f3a: 2101 movs r1, #1 - 8001f3c: 5499 strb r1, [r3, r2] + 8001f94: 68fb ldr r3, [r7, #12] + 8001f96: 2240 movs r2, #64 @ 0x40 + 8001f98: 5c9b ldrb r3, [r3, r2] + 8001f9a: 2b01 cmp r3, #1 + 8001f9c: d101 bne.n 8001fa2 + 8001f9e: 2302 movs r3, #2 + 8001fa0: e0e7 b.n 8002172 + 8001fa2: 68fb ldr r3, [r7, #12] + 8001fa4: 2240 movs r2, #64 @ 0x40 + 8001fa6: 2101 movs r1, #1 + 8001fa8: 5499 strb r1, [r3, r2] if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ - 8001f3e: 68bb ldr r3, [r7, #8] - 8001f40: 2210 movs r2, #16 - 8001f42: 4013 ands r3, r2 - 8001f44: d017 beq.n 8001f76 + 8001faa: 68bb ldr r3, [r7, #8] + 8001fac: 2210 movs r2, #16 + 8001fae: 4013 ands r3, r2 + 8001fb0: d017 beq.n 8001fe2 (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) - 8001f46: 687b ldr r3, [r7, #4] - 8001f48: 2210 movs r2, #16 - 8001f4a: 4013 ands r3, r2 + 8001fb2: 687b ldr r3, [r7, #4] + 8001fb4: 2210 movs r2, #16 + 8001fb6: 4013 ands r3, r2 if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ - 8001f4c: d013 beq.n 8001f76 + 8001fb8: d013 beq.n 8001fe2 { /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8001f4e: 68fb ldr r3, [r7, #12] - 8001f50: 681b ldr r3, [r3, #0] - 8001f52: 2210 movs r2, #16 - 8001f54: 61da str r2, [r3, #28] + 8001fba: 68fb ldr r3, [r7, #12] + 8001fbc: 681b ldr r3, [r3, #0] + 8001fbe: 2210 movs r2, #16 + 8001fc0: 61da str r2, [r3, #28] /* Set corresponding Error Code */ hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 8001f56: 68fb ldr r3, [r7, #12] - 8001f58: 6c5b ldr r3, [r3, #68] @ 0x44 - 8001f5a: 2204 movs r2, #4 - 8001f5c: 431a orrs r2, r3 - 8001f5e: 68fb ldr r3, [r7, #12] - 8001f60: 645a str r2, [r3, #68] @ 0x44 + 8001fc2: 68fb ldr r3, [r7, #12] + 8001fc4: 6c5b ldr r3, [r3, #68] @ 0x44 + 8001fc6: 2204 movs r2, #4 + 8001fc8: 431a orrs r2, r3 + 8001fca: 68fb ldr r3, [r7, #12] + 8001fcc: 645a str r2, [r3, #68] @ 0x44 /* No need to generate STOP, it is automatically done */ /* But enable STOP interrupt, to treat it */ /* Error callback will be send during stop flag treatment */ I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); - 8001f62: 68fb ldr r3, [r7, #12] - 8001f64: 2120 movs r1, #32 - 8001f66: 0018 movs r0, r3 - 8001f68: f001 f886 bl 8003078 + 8001fce: 68fb ldr r3, [r7, #12] + 8001fd0: 2120 movs r1, #32 + 8001fd2: 0018 movs r0, r3 + 8001fd4: f001 f886 bl 80030e4 /* Flush TX register */ I2C_Flush_TXDR(hi2c); - 8001f6c: 68fb ldr r3, [r7, #12] - 8001f6e: 0018 movs r0, r3 - 8001f70: f001 f807 bl 8002f82 - 8001f74: e0c2 b.n 80020fc + 8001fd8: 68fb ldr r3, [r7, #12] + 8001fda: 0018 movs r0, r3 + 8001fdc: f001 f807 bl 8002fee + 8001fe0: e0c2 b.n 8002168 } else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \ - 8001f76: 68bb ldr r3, [r7, #8] - 8001f78: 2280 movs r2, #128 @ 0x80 - 8001f7a: 4013 ands r3, r2 - 8001f7c: d100 bne.n 8001f80 - 8001f7e: e07c b.n 800207a + 8001fe2: 68bb ldr r3, [r7, #8] + 8001fe4: 2280 movs r2, #128 @ 0x80 + 8001fe6: 4013 ands r3, r2 + 8001fe8: d100 bne.n 8001fec + 8001fea: e07c b.n 80020e6 (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) - 8001f80: 687b ldr r3, [r7, #4] - 8001f82: 2240 movs r2, #64 @ 0x40 - 8001f84: 4013 ands r3, r2 + 8001fec: 687b ldr r3, [r7, #4] + 8001fee: 2240 movs r2, #64 @ 0x40 + 8001ff0: 4013 ands r3, r2 else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \ - 8001f86: d100 bne.n 8001f8a - 8001f88: e077 b.n 800207a + 8001ff2: d100 bne.n 8001ff6 + 8001ff4: e077 b.n 80020e6 { /* Disable TC interrupt */ __HAL_I2C_DISABLE_IT(hi2c, I2C_IT_TCI); - 8001f8a: 68fb ldr r3, [r7, #12] - 8001f8c: 681b ldr r3, [r3, #0] - 8001f8e: 681a ldr r2, [r3, #0] - 8001f90: 68fb ldr r3, [r7, #12] - 8001f92: 681b ldr r3, [r3, #0] - 8001f94: 2140 movs r1, #64 @ 0x40 - 8001f96: 438a bics r2, r1 - 8001f98: 601a str r2, [r3, #0] + 8001ff6: 68fb ldr r3, [r7, #12] + 8001ff8: 681b ldr r3, [r3, #0] + 8001ffa: 681a ldr r2, [r3, #0] + 8001ffc: 68fb ldr r3, [r7, #12] + 8001ffe: 681b ldr r3, [r3, #0] + 8002000: 2140 movs r1, #64 @ 0x40 + 8002002: 438a bics r2, r1 + 8002004: 601a str r2, [r3, #0] if (hi2c->XferCount != 0U) - 8001f9a: 68fb ldr r3, [r7, #12] - 8001f9c: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8001f9e: b29b uxth r3, r3 - 8001fa0: 2b00 cmp r3, #0 - 8001fa2: d055 beq.n 8002050 + 8002006: 68fb ldr r3, [r7, #12] + 8002008: 8d5b ldrh r3, [r3, #42] @ 0x2a + 800200a: b29b uxth r3, r3 + 800200c: 2b00 cmp r3, #0 + 800200e: d055 beq.n 80020bc { /* Recover Slave address */ devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); - 8001fa4: 68fb ldr r3, [r7, #12] - 8001fa6: 681b ldr r3, [r3, #0] - 8001fa8: 685b ldr r3, [r3, #4] - 8001faa: b29a uxth r2, r3 - 8001fac: 2312 movs r3, #18 - 8001fae: 18fb adds r3, r7, r3 - 8001fb0: 0592 lsls r2, r2, #22 - 8001fb2: 0d92 lsrs r2, r2, #22 - 8001fb4: 801a strh r2, [r3, #0] + 8002010: 68fb ldr r3, [r7, #12] + 8002012: 681b ldr r3, [r3, #0] + 8002014: 685b ldr r3, [r3, #4] + 8002016: b29a uxth r2, r3 + 8002018: 2312 movs r3, #18 + 800201a: 18fb adds r3, r7, r3 + 800201c: 0592 lsls r2, r2, #22 + 800201e: 0d92 lsrs r2, r2, #22 + 8002020: 801a strh r2, [r3, #0] /* Prepare the new XferSize to transfer */ if (hi2c->XferCount > MAX_NBYTE_SIZE) - 8001fb6: 68fb ldr r3, [r7, #12] - 8001fb8: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8001fba: b29b uxth r3, r3 - 8001fbc: 2bff cmp r3, #255 @ 0xff - 8001fbe: d906 bls.n 8001fce + 8002022: 68fb ldr r3, [r7, #12] + 8002024: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8002026: b29b uxth r3, r3 + 8002028: 2bff cmp r3, #255 @ 0xff + 800202a: d906 bls.n 800203a { hi2c->XferSize = MAX_NBYTE_SIZE; - 8001fc0: 68fb ldr r3, [r7, #12] - 8001fc2: 22ff movs r2, #255 @ 0xff - 8001fc4: 851a strh r2, [r3, #40] @ 0x28 + 800202c: 68fb ldr r3, [r7, #12] + 800202e: 22ff movs r2, #255 @ 0xff + 8002030: 851a strh r2, [r3, #40] @ 0x28 xfermode = I2C_RELOAD_MODE; - 8001fc6: 2380 movs r3, #128 @ 0x80 - 8001fc8: 045b lsls r3, r3, #17 - 8001fca: 617b str r3, [r7, #20] - 8001fcc: e010 b.n 8001ff0 + 8002032: 2380 movs r3, #128 @ 0x80 + 8002034: 045b lsls r3, r3, #17 + 8002036: 617b str r3, [r7, #20] + 8002038: e010 b.n 800205c } else { hi2c->XferSize = hi2c->XferCount; - 8001fce: 68fb ldr r3, [r7, #12] - 8001fd0: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8001fd2: b29a uxth r2, r3 - 8001fd4: 68fb ldr r3, [r7, #12] - 8001fd6: 851a strh r2, [r3, #40] @ 0x28 + 800203a: 68fb ldr r3, [r7, #12] + 800203c: 8d5b ldrh r3, [r3, #42] @ 0x2a + 800203e: b29a uxth r2, r3 + 8002040: 68fb ldr r3, [r7, #12] + 8002042: 851a strh r2, [r3, #40] @ 0x28 if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) - 8001fd8: 68fb ldr r3, [r7, #12] - 8001fda: 6adb ldr r3, [r3, #44] @ 0x2c - 8001fdc: 4a4c ldr r2, [pc, #304] @ (8002110 ) - 8001fde: 4293 cmp r3, r2 - 8001fe0: d003 beq.n 8001fea + 8002044: 68fb ldr r3, [r7, #12] + 8002046: 6adb ldr r3, [r3, #44] @ 0x2c + 8002048: 4a4c ldr r2, [pc, #304] @ (800217c ) + 800204a: 4293 cmp r3, r2 + 800204c: d003 beq.n 8002056 { xfermode = hi2c->XferOptions; - 8001fe2: 68fb ldr r3, [r7, #12] - 8001fe4: 6adb ldr r3, [r3, #44] @ 0x2c - 8001fe6: 617b str r3, [r7, #20] - 8001fe8: e002 b.n 8001ff0 + 800204e: 68fb ldr r3, [r7, #12] + 8002050: 6adb ldr r3, [r3, #44] @ 0x2c + 8002052: 617b str r3, [r7, #20] + 8002054: e002 b.n 800205c } else { xfermode = I2C_AUTOEND_MODE; - 8001fea: 2380 movs r3, #128 @ 0x80 - 8001fec: 049b lsls r3, r3, #18 - 8001fee: 617b str r3, [r7, #20] + 8002056: 2380 movs r3, #128 @ 0x80 + 8002058: 049b lsls r3, r3, #18 + 800205a: 617b str r3, [r7, #20] } } /* Set the new XferSize in Nbytes register */ I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP); - 8001ff0: 68fb ldr r3, [r7, #12] - 8001ff2: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8001ff4: b2da uxtb r2, r3 - 8001ff6: 697c ldr r4, [r7, #20] - 8001ff8: 2312 movs r3, #18 - 8001ffa: 18fb adds r3, r7, r3 - 8001ffc: 8819 ldrh r1, [r3, #0] - 8001ffe: 68f8 ldr r0, [r7, #12] - 8002000: 2300 movs r3, #0 - 8002002: 9300 str r3, [sp, #0] - 8002004: 0023 movs r3, r4 - 8002006: f000 fffd bl 8003004 + 800205c: 68fb ldr r3, [r7, #12] + 800205e: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8002060: b2da uxtb r2, r3 + 8002062: 697c ldr r4, [r7, #20] + 8002064: 2312 movs r3, #18 + 8002066: 18fb adds r3, r7, r3 + 8002068: 8819 ldrh r1, [r3, #0] + 800206a: 68f8 ldr r0, [r7, #12] + 800206c: 2300 movs r3, #0 + 800206e: 9300 str r3, [sp, #0] + 8002070: 0023 movs r3, r4 + 8002072: f000 fffd bl 8003070 /* Update XferCount value */ hi2c->XferCount -= hi2c->XferSize; - 800200a: 68fb ldr r3, [r7, #12] - 800200c: 8d5b ldrh r3, [r3, #42] @ 0x2a - 800200e: b29a uxth r2, r3 - 8002010: 68fb ldr r3, [r7, #12] - 8002012: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8002014: 1ad3 subs r3, r2, r3 - 8002016: b29a uxth r2, r3 - 8002018: 68fb ldr r3, [r7, #12] - 800201a: 855a strh r2, [r3, #42] @ 0x2a + 8002076: 68fb ldr r3, [r7, #12] + 8002078: 8d5b ldrh r3, [r3, #42] @ 0x2a + 800207a: b29a uxth r2, r3 + 800207c: 68fb ldr r3, [r7, #12] + 800207e: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8002080: 1ad3 subs r3, r2, r3 + 8002082: b29a uxth r2, r3 + 8002084: 68fb ldr r3, [r7, #12] + 8002086: 855a strh r2, [r3, #42] @ 0x2a /* Enable DMA Request */ if (hi2c->State == HAL_I2C_STATE_BUSY_RX) - 800201c: 68fb ldr r3, [r7, #12] - 800201e: 2241 movs r2, #65 @ 0x41 - 8002020: 5c9b ldrb r3, [r3, r2] - 8002022: b2db uxtb r3, r3 - 8002024: 2b22 cmp r3, #34 @ 0x22 - 8002026: d109 bne.n 800203c + 8002088: 68fb ldr r3, [r7, #12] + 800208a: 2241 movs r2, #65 @ 0x41 + 800208c: 5c9b ldrb r3, [r3, r2] + 800208e: b2db uxtb r3, r3 + 8002090: 2b22 cmp r3, #34 @ 0x22 + 8002092: d109 bne.n 80020a8 { hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; - 8002028: 68fb ldr r3, [r7, #12] - 800202a: 681b ldr r3, [r3, #0] - 800202c: 681a ldr r2, [r3, #0] - 800202e: 68fb ldr r3, [r7, #12] - 8002030: 681b ldr r3, [r3, #0] - 8002032: 2180 movs r1, #128 @ 0x80 - 8002034: 0209 lsls r1, r1, #8 - 8002036: 430a orrs r2, r1 - 8002038: 601a str r2, [r3, #0] + 8002094: 68fb ldr r3, [r7, #12] + 8002096: 681b ldr r3, [r3, #0] + 8002098: 681a ldr r2, [r3, #0] + 800209a: 68fb ldr r3, [r7, #12] + 800209c: 681b ldr r3, [r3, #0] + 800209e: 2180 movs r1, #128 @ 0x80 + 80020a0: 0209 lsls r1, r1, #8 + 80020a2: 430a orrs r2, r1 + 80020a4: 601a str r2, [r3, #0] if (hi2c->XferCount != 0U) - 800203a: e05f b.n 80020fc + 80020a6: e05f b.n 8002168 } else { hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; - 800203c: 68fb ldr r3, [r7, #12] - 800203e: 681b ldr r3, [r3, #0] - 8002040: 681a ldr r2, [r3, #0] - 8002042: 68fb ldr r3, [r7, #12] - 8002044: 681b ldr r3, [r3, #0] - 8002046: 2180 movs r1, #128 @ 0x80 - 8002048: 01c9 lsls r1, r1, #7 - 800204a: 430a orrs r2, r1 - 800204c: 601a str r2, [r3, #0] + 80020a8: 68fb ldr r3, [r7, #12] + 80020aa: 681b ldr r3, [r3, #0] + 80020ac: 681a ldr r2, [r3, #0] + 80020ae: 68fb ldr r3, [r7, #12] + 80020b0: 681b ldr r3, [r3, #0] + 80020b2: 2180 movs r1, #128 @ 0x80 + 80020b4: 01c9 lsls r1, r1, #7 + 80020b6: 430a orrs r2, r1 + 80020b8: 601a str r2, [r3, #0] if (hi2c->XferCount != 0U) - 800204e: e055 b.n 80020fc + 80020ba: e055 b.n 8002168 } } else { /* Call TxCpltCallback() if no stop mode is set */ if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) - 8002050: 68fb ldr r3, [r7, #12] - 8002052: 681b ldr r3, [r3, #0] - 8002054: 685a ldr r2, [r3, #4] - 8002056: 2380 movs r3, #128 @ 0x80 - 8002058: 049b lsls r3, r3, #18 - 800205a: 401a ands r2, r3 - 800205c: 2380 movs r3, #128 @ 0x80 - 800205e: 049b lsls r3, r3, #18 - 8002060: 429a cmp r2, r3 - 8002062: d004 beq.n 800206e + 80020bc: 68fb ldr r3, [r7, #12] + 80020be: 681b ldr r3, [r3, #0] + 80020c0: 685a ldr r2, [r3, #4] + 80020c2: 2380 movs r3, #128 @ 0x80 + 80020c4: 049b lsls r3, r3, #18 + 80020c6: 401a ands r2, r3 + 80020c8: 2380 movs r3, #128 @ 0x80 + 80020ca: 049b lsls r3, r3, #18 + 80020cc: 429a cmp r2, r3 + 80020ce: d004 beq.n 80020da { /* Call I2C Master Sequential complete process */ I2C_ITMasterSeqCplt(hi2c); - 8002064: 68fb ldr r3, [r7, #12] - 8002066: 0018 movs r0, r3 - 8002068: f000 fb0c bl 8002684 + 80020d0: 68fb ldr r3, [r7, #12] + 80020d2: 0018 movs r0, r3 + 80020d4: f000 fb0c bl 80026f0 if (hi2c->XferCount != 0U) - 800206c: e046 b.n 80020fc + 80020d8: e046 b.n 8002168 } else { /* Wrong size Status regarding TCR flag event */ /* Call the corresponding callback to inform upper layer of End of Transfer */ I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); - 800206e: 68fb ldr r3, [r7, #12] - 8002070: 2140 movs r1, #64 @ 0x40 - 8002072: 0018 movs r0, r3 - 8002074: f000 fe5a bl 8002d2c + 80020da: 68fb ldr r3, [r7, #12] + 80020dc: 2140 movs r1, #64 @ 0x40 + 80020de: 0018 movs r0, r3 + 80020e0: f000 fe5a bl 8002d98 if (hi2c->XferCount != 0U) - 8002078: e040 b.n 80020fc + 80020e4: e040 b.n 8002168 } } } else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \ - 800207a: 68bb ldr r3, [r7, #8] - 800207c: 2240 movs r2, #64 @ 0x40 - 800207e: 4013 ands r3, r2 - 8002080: d02c beq.n 80020dc + 80020e6: 68bb ldr r3, [r7, #8] + 80020e8: 2240 movs r2, #64 @ 0x40 + 80020ea: 4013 ands r3, r2 + 80020ec: d02c beq.n 8002148 (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) - 8002082: 687b ldr r3, [r7, #4] - 8002084: 2240 movs r2, #64 @ 0x40 - 8002086: 4013 ands r3, r2 + 80020ee: 687b ldr r3, [r7, #4] + 80020f0: 2240 movs r2, #64 @ 0x40 + 80020f2: 4013 ands r3, r2 else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \ - 8002088: d028 beq.n 80020dc + 80020f4: d028 beq.n 8002148 { if (hi2c->XferCount == 0U) - 800208a: 68fb ldr r3, [r7, #12] - 800208c: 8d5b ldrh r3, [r3, #42] @ 0x2a - 800208e: b29b uxth r3, r3 - 8002090: 2b00 cmp r3, #0 - 8002092: d11d bne.n 80020d0 + 80020f6: 68fb ldr r3, [r7, #12] + 80020f8: 8d5b ldrh r3, [r3, #42] @ 0x2a + 80020fa: b29b uxth r3, r3 + 80020fc: 2b00 cmp r3, #0 + 80020fe: d11d bne.n 800213c { if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) - 8002094: 68fb ldr r3, [r7, #12] - 8002096: 681b ldr r3, [r3, #0] - 8002098: 685a ldr r2, [r3, #4] - 800209a: 2380 movs r3, #128 @ 0x80 - 800209c: 049b lsls r3, r3, #18 - 800209e: 401a ands r2, r3 - 80020a0: 2380 movs r3, #128 @ 0x80 - 80020a2: 049b lsls r3, r3, #18 - 80020a4: 429a cmp r2, r3 - 80020a6: d028 beq.n 80020fa + 8002100: 68fb ldr r3, [r7, #12] + 8002102: 681b ldr r3, [r3, #0] + 8002104: 685a ldr r2, [r3, #4] + 8002106: 2380 movs r3, #128 @ 0x80 + 8002108: 049b lsls r3, r3, #18 + 800210a: 401a ands r2, r3 + 800210c: 2380 movs r3, #128 @ 0x80 + 800210e: 049b lsls r3, r3, #18 + 8002110: 429a cmp r2, r3 + 8002112: d028 beq.n 8002166 { /* Generate a stop condition in case of no transfer option */ if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) - 80020a8: 68fb ldr r3, [r7, #12] - 80020aa: 6adb ldr r3, [r3, #44] @ 0x2c - 80020ac: 4a18 ldr r2, [pc, #96] @ (8002110 ) - 80020ae: 4293 cmp r3, r2 - 80020b0: d109 bne.n 80020c6 + 8002114: 68fb ldr r3, [r7, #12] + 8002116: 6adb ldr r3, [r3, #44] @ 0x2c + 8002118: 4a18 ldr r2, [pc, #96] @ (800217c ) + 800211a: 4293 cmp r3, r2 + 800211c: d109 bne.n 8002132 { /* Generate Stop */ hi2c->Instance->CR2 |= I2C_CR2_STOP; - 80020b2: 68fb ldr r3, [r7, #12] - 80020b4: 681b ldr r3, [r3, #0] - 80020b6: 685a ldr r2, [r3, #4] - 80020b8: 68fb ldr r3, [r7, #12] - 80020ba: 681b ldr r3, [r3, #0] - 80020bc: 2180 movs r1, #128 @ 0x80 - 80020be: 01c9 lsls r1, r1, #7 - 80020c0: 430a orrs r2, r1 - 80020c2: 605a str r2, [r3, #4] + 800211e: 68fb ldr r3, [r7, #12] + 8002120: 681b ldr r3, [r3, #0] + 8002122: 685a ldr r2, [r3, #4] + 8002124: 68fb ldr r3, [r7, #12] + 8002126: 681b ldr r3, [r3, #0] + 8002128: 2180 movs r1, #128 @ 0x80 + 800212a: 01c9 lsls r1, r1, #7 + 800212c: 430a orrs r2, r1 + 800212e: 605a str r2, [r3, #4] if (hi2c->XferCount == 0U) - 80020c4: e019 b.n 80020fa + 8002130: e019 b.n 8002166 } else { /* Call I2C Master Sequential complete process */ I2C_ITMasterSeqCplt(hi2c); - 80020c6: 68fb ldr r3, [r7, #12] - 80020c8: 0018 movs r0, r3 - 80020ca: f000 fadb bl 8002684 + 8002132: 68fb ldr r3, [r7, #12] + 8002134: 0018 movs r0, r3 + 8002136: f000 fadb bl 80026f0 if (hi2c->XferCount == 0U) - 80020ce: e014 b.n 80020fa + 800213a: e014 b.n 8002166 } else { /* Wrong size Status regarding TC flag event */ /* Call the corresponding callback to inform upper layer of End of Transfer */ I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); - 80020d0: 68fb ldr r3, [r7, #12] - 80020d2: 2140 movs r1, #64 @ 0x40 - 80020d4: 0018 movs r0, r3 - 80020d6: f000 fe29 bl 8002d2c + 800213c: 68fb ldr r3, [r7, #12] + 800213e: 2140 movs r1, #64 @ 0x40 + 8002140: 0018 movs r0, r3 + 8002142: f000 fe29 bl 8002d98 if (hi2c->XferCount == 0U) - 80020da: e00e b.n 80020fa + 8002146: e00e b.n 8002166 } } else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ - 80020dc: 68bb ldr r3, [r7, #8] - 80020de: 2220 movs r2, #32 - 80020e0: 4013 ands r3, r2 - 80020e2: d00b beq.n 80020fc + 8002148: 68bb ldr r3, [r7, #8] + 800214a: 2220 movs r2, #32 + 800214c: 4013 ands r3, r2 + 800214e: d00b beq.n 8002168 (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) - 80020e4: 687b ldr r3, [r7, #4] - 80020e6: 2220 movs r2, #32 - 80020e8: 4013 ands r3, r2 + 8002150: 687b ldr r3, [r7, #4] + 8002152: 2220 movs r2, #32 + 8002154: 4013 ands r3, r2 else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ - 80020ea: d007 beq.n 80020fc + 8002156: d007 beq.n 8002168 { /* Call I2C Master complete process */ I2C_ITMasterCplt(hi2c, ITFlags); - 80020ec: 68ba ldr r2, [r7, #8] - 80020ee: 68fb ldr r3, [r7, #12] - 80020f0: 0011 movs r1, r2 - 80020f2: 0018 movs r0, r3 - 80020f4: f000 fb6c bl 80027d0 - 80020f8: e000 b.n 80020fc + 8002158: 68ba ldr r2, [r7, #8] + 800215a: 68fb ldr r3, [r7, #12] + 800215c: 0011 movs r1, r2 + 800215e: 0018 movs r0, r3 + 8002160: f000 fb6c bl 800283c + 8002164: e000 b.n 8002168 if (hi2c->XferCount == 0U) - 80020fa: 46c0 nop @ (mov r8, r8) + 8002166: 46c0 nop @ (mov r8, r8) { /* Nothing to do */ } /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 80020fc: 68fb ldr r3, [r7, #12] - 80020fe: 2240 movs r2, #64 @ 0x40 - 8002100: 2100 movs r1, #0 - 8002102: 5499 strb r1, [r3, r2] + 8002168: 68fb ldr r3, [r7, #12] + 800216a: 2240 movs r2, #64 @ 0x40 + 800216c: 2100 movs r1, #0 + 800216e: 5499 strb r1, [r3, r2] return HAL_OK; - 8002104: 2300 movs r3, #0 + 8002170: 2300 movs r3, #0 } - 8002106: 0018 movs r0, r3 - 8002108: 46bd mov sp, r7 - 800210a: b007 add sp, #28 - 800210c: bd90 pop {r4, r7, pc} - 800210e: 46c0 nop @ (mov r8, r8) - 8002110: ffff0000 .word 0xffff0000 + 8002172: 0018 movs r0, r3 + 8002174: 46bd mov sp, r7 + 8002176: b007 add sp, #28 + 8002178: bd90 pop {r4, r7, pc} + 800217a: 46c0 nop @ (mov r8, r8) + 800217c: ffff0000 .word 0xffff0000 -08002114 : +08002180 : * @param ITSources Interrupt sources enabled. * @retval HAL status */ static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources) { - 8002114: b590 push {r4, r7, lr} - 8002116: b089 sub sp, #36 @ 0x24 - 8002118: af02 add r7, sp, #8 - 800211a: 60f8 str r0, [r7, #12] - 800211c: 60b9 str r1, [r7, #8] - 800211e: 607a str r2, [r7, #4] + 8002180: b590 push {r4, r7, lr} + 8002182: b089 sub sp, #36 @ 0x24 + 8002184: af02 add r7, sp, #8 + 8002186: 60f8 str r0, [r7, #12] + 8002188: 60b9 str r1, [r7, #8] + 800218a: 607a str r2, [r7, #4] uint32_t direction = I2C_GENERATE_START_WRITE; - 8002120: 4b90 ldr r3, [pc, #576] @ (8002364 ) - 8002122: 617b str r3, [r7, #20] + 800218c: 4b90 ldr r3, [pc, #576] @ (80023d0 ) + 800218e: 617b str r3, [r7, #20] /* Process Locked */ __HAL_LOCK(hi2c); - 8002124: 68fb ldr r3, [r7, #12] - 8002126: 2240 movs r2, #64 @ 0x40 - 8002128: 5c9b ldrb r3, [r3, r2] - 800212a: 2b01 cmp r3, #1 - 800212c: d101 bne.n 8002132 - 800212e: 2302 movs r3, #2 - 8002130: e113 b.n 800235a - 8002132: 68fb ldr r3, [r7, #12] - 8002134: 2240 movs r2, #64 @ 0x40 - 8002136: 2101 movs r1, #1 - 8002138: 5499 strb r1, [r3, r2] + 8002190: 68fb ldr r3, [r7, #12] + 8002192: 2240 movs r2, #64 @ 0x40 + 8002194: 5c9b ldrb r3, [r3, r2] + 8002196: 2b01 cmp r3, #1 + 8002198: d101 bne.n 800219e + 800219a: 2302 movs r3, #2 + 800219c: e113 b.n 80023c6 + 800219e: 68fb ldr r3, [r7, #12] + 80021a0: 2240 movs r2, #64 @ 0x40 + 80021a2: 2101 movs r1, #1 + 80021a4: 5499 strb r1, [r3, r2] if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ - 800213a: 68bb ldr r3, [r7, #8] - 800213c: 2210 movs r2, #16 - 800213e: 4013 ands r3, r2 - 8002140: d017 beq.n 8002172 + 80021a6: 68bb ldr r3, [r7, #8] + 80021a8: 2210 movs r2, #16 + 80021aa: 4013 ands r3, r2 + 80021ac: d017 beq.n 80021de (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) - 8002142: 687b ldr r3, [r7, #4] - 8002144: 2210 movs r2, #16 - 8002146: 4013 ands r3, r2 + 80021ae: 687b ldr r3, [r7, #4] + 80021b0: 2210 movs r2, #16 + 80021b2: 4013 ands r3, r2 if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ - 8002148: d013 beq.n 8002172 + 80021b4: d013 beq.n 80021de { /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 800214a: 68fb ldr r3, [r7, #12] - 800214c: 681b ldr r3, [r3, #0] - 800214e: 2210 movs r2, #16 - 8002150: 61da str r2, [r3, #28] + 80021b6: 68fb ldr r3, [r7, #12] + 80021b8: 681b ldr r3, [r3, #0] + 80021ba: 2210 movs r2, #16 + 80021bc: 61da str r2, [r3, #28] /* Set corresponding Error Code */ hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 8002152: 68fb ldr r3, [r7, #12] - 8002154: 6c5b ldr r3, [r3, #68] @ 0x44 - 8002156: 2204 movs r2, #4 - 8002158: 431a orrs r2, r3 - 800215a: 68fb ldr r3, [r7, #12] - 800215c: 645a str r2, [r3, #68] @ 0x44 + 80021be: 68fb ldr r3, [r7, #12] + 80021c0: 6c5b ldr r3, [r3, #68] @ 0x44 + 80021c2: 2204 movs r2, #4 + 80021c4: 431a orrs r2, r3 + 80021c6: 68fb ldr r3, [r7, #12] + 80021c8: 645a str r2, [r3, #68] @ 0x44 /* No need to generate STOP, it is automatically done */ /* But enable STOP interrupt, to treat it */ /* Error callback will be send during stop flag treatment */ I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); - 800215e: 68fb ldr r3, [r7, #12] - 8002160: 2120 movs r1, #32 - 8002162: 0018 movs r0, r3 - 8002164: f000 ff88 bl 8003078 + 80021ca: 68fb ldr r3, [r7, #12] + 80021cc: 2120 movs r1, #32 + 80021ce: 0018 movs r0, r3 + 80021d0: f000 ff88 bl 80030e4 /* Flush TX register */ I2C_Flush_TXDR(hi2c); - 8002168: 68fb ldr r3, [r7, #12] - 800216a: 0018 movs r0, r3 - 800216c: f000 ff09 bl 8002f82 - 8002170: e0ee b.n 8002350 + 80021d4: 68fb ldr r3, [r7, #12] + 80021d6: 0018 movs r0, r3 + 80021d8: f000 ff09 bl 8002fee + 80021dc: e0ee b.n 80023bc } else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TXIS) != RESET) && \ - 8002172: 68bb ldr r3, [r7, #8] - 8002174: 2202 movs r2, #2 - 8002176: 4013 ands r3, r2 - 8002178: d00d beq.n 8002196 + 80021de: 68bb ldr r3, [r7, #8] + 80021e0: 2202 movs r2, #2 + 80021e2: 4013 ands r3, r2 + 80021e4: d00d beq.n 8002202 (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) - 800217a: 687b ldr r3, [r7, #4] - 800217c: 2202 movs r2, #2 - 800217e: 4013 ands r3, r2 + 80021e6: 687b ldr r3, [r7, #4] + 80021e8: 2202 movs r2, #2 + 80021ea: 4013 ands r3, r2 else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TXIS) != RESET) && \ - 8002180: d009 beq.n 8002196 + 80021ec: d009 beq.n 8002202 { /* Write LSB part of Memory Address */ hi2c->Instance->TXDR = hi2c->Memaddress; - 8002182: 68fb ldr r3, [r7, #12] - 8002184: 681b ldr r3, [r3, #0] - 8002186: 68fa ldr r2, [r7, #12] - 8002188: 6d12 ldr r2, [r2, #80] @ 0x50 - 800218a: 629a str r2, [r3, #40] @ 0x28 + 80021ee: 68fb ldr r3, [r7, #12] + 80021f0: 681b ldr r3, [r3, #0] + 80021f2: 68fa ldr r2, [r7, #12] + 80021f4: 6d12 ldr r2, [r2, #80] @ 0x50 + 80021f6: 629a str r2, [r3, #40] @ 0x28 /* Reset Memaddress content */ hi2c->Memaddress = 0xFFFFFFFFU; - 800218c: 68fb ldr r3, [r7, #12] - 800218e: 2201 movs r2, #1 - 8002190: 4252 negs r2, r2 - 8002192: 651a str r2, [r3, #80] @ 0x50 - 8002194: e0dc b.n 8002350 + 80021f8: 68fb ldr r3, [r7, #12] + 80021fa: 2201 movs r2, #1 + 80021fc: 4252 negs r2, r2 + 80021fe: 651a str r2, [r3, #80] @ 0x50 + 8002200: e0dc b.n 80023bc } else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \ - 8002196: 68bb ldr r3, [r7, #8] - 8002198: 2280 movs r2, #128 @ 0x80 - 800219a: 4013 ands r3, r2 - 800219c: d063 beq.n 8002266 + 8002202: 68bb ldr r3, [r7, #8] + 8002204: 2280 movs r2, #128 @ 0x80 + 8002206: 4013 ands r3, r2 + 8002208: d063 beq.n 80022d2 (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) - 800219e: 687b ldr r3, [r7, #4] - 80021a0: 2240 movs r2, #64 @ 0x40 - 80021a2: 4013 ands r3, r2 + 800220a: 687b ldr r3, [r7, #4] + 800220c: 2240 movs r2, #64 @ 0x40 + 800220e: 4013 ands r3, r2 else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \ - 80021a4: d05f beq.n 8002266 + 8002210: d05f beq.n 80022d2 { /* Disable Interrupt related to address step */ I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); - 80021a6: 68fb ldr r3, [r7, #12] - 80021a8: 2101 movs r1, #1 - 80021aa: 0018 movs r0, r3 - 80021ac: f000 ffee bl 800318c + 8002212: 68fb ldr r3, [r7, #12] + 8002214: 2101 movs r1, #1 + 8002216: 0018 movs r0, r3 + 8002218: f000 ffee bl 80031f8 /* Enable only Error interrupt */ I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); - 80021b0: 68fb ldr r3, [r7, #12] - 80021b2: 2110 movs r1, #16 - 80021b4: 0018 movs r0, r3 - 80021b6: f000 ff5f bl 8003078 + 800221c: 68fb ldr r3, [r7, #12] + 800221e: 2110 movs r1, #16 + 8002220: 0018 movs r0, r3 + 8002222: f000 ff5f bl 80030e4 if (hi2c->XferCount != 0U) - 80021ba: 68fb ldr r3, [r7, #12] - 80021bc: 8d5b ldrh r3, [r3, #42] @ 0x2a - 80021be: b29b uxth r3, r3 - 80021c0: 2b00 cmp r3, #0 - 80021c2: d04a beq.n 800225a + 8002226: 68fb ldr r3, [r7, #12] + 8002228: 8d5b ldrh r3, [r3, #42] @ 0x2a + 800222a: b29b uxth r3, r3 + 800222c: 2b00 cmp r3, #0 + 800222e: d04a beq.n 80022c6 { /* Prepare the new XferSize to transfer */ if (hi2c->XferCount > MAX_NBYTE_SIZE) - 80021c4: 68fb ldr r3, [r7, #12] - 80021c6: 8d5b ldrh r3, [r3, #42] @ 0x2a - 80021c8: b29b uxth r3, r3 - 80021ca: 2bff cmp r3, #255 @ 0xff - 80021cc: d910 bls.n 80021f0 + 8002230: 68fb ldr r3, [r7, #12] + 8002232: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8002234: b29b uxth r3, r3 + 8002236: 2bff cmp r3, #255 @ 0xff + 8002238: d910 bls.n 800225c { hi2c->XferSize = MAX_NBYTE_SIZE; - 80021ce: 68fb ldr r3, [r7, #12] - 80021d0: 22ff movs r2, #255 @ 0xff - 80021d2: 851a strh r2, [r3, #40] @ 0x28 + 800223a: 68fb ldr r3, [r7, #12] + 800223c: 22ff movs r2, #255 @ 0xff + 800223e: 851a strh r2, [r3, #40] @ 0x28 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, - 80021d4: 68fb ldr r3, [r7, #12] - 80021d6: 6cdb ldr r3, [r3, #76] @ 0x4c - 80021d8: b299 uxth r1, r3 - 80021da: 68fb ldr r3, [r7, #12] - 80021dc: 8d1b ldrh r3, [r3, #40] @ 0x28 - 80021de: b2da uxtb r2, r3 - 80021e0: 2380 movs r3, #128 @ 0x80 - 80021e2: 045b lsls r3, r3, #17 - 80021e4: 68f8 ldr r0, [r7, #12] - 80021e6: 2400 movs r4, #0 - 80021e8: 9400 str r4, [sp, #0] - 80021ea: f000 ff0b bl 8003004 - 80021ee: e011 b.n 8002214 + 8002240: 68fb ldr r3, [r7, #12] + 8002242: 6cdb ldr r3, [r3, #76] @ 0x4c + 8002244: b299 uxth r1, r3 + 8002246: 68fb ldr r3, [r7, #12] + 8002248: 8d1b ldrh r3, [r3, #40] @ 0x28 + 800224a: b2da uxtb r2, r3 + 800224c: 2380 movs r3, #128 @ 0x80 + 800224e: 045b lsls r3, r3, #17 + 8002250: 68f8 ldr r0, [r7, #12] + 8002252: 2400 movs r4, #0 + 8002254: 9400 str r4, [sp, #0] + 8002256: f000 ff0b bl 8003070 + 800225a: e011 b.n 8002280 I2C_RELOAD_MODE, I2C_NO_STARTSTOP); } else { hi2c->XferSize = hi2c->XferCount; - 80021f0: 68fb ldr r3, [r7, #12] - 80021f2: 8d5b ldrh r3, [r3, #42] @ 0x2a - 80021f4: b29a uxth r2, r3 - 80021f6: 68fb ldr r3, [r7, #12] - 80021f8: 851a strh r2, [r3, #40] @ 0x28 + 800225c: 68fb ldr r3, [r7, #12] + 800225e: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8002260: b29a uxth r2, r3 + 8002262: 68fb ldr r3, [r7, #12] + 8002264: 851a strh r2, [r3, #40] @ 0x28 I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, - 80021fa: 68fb ldr r3, [r7, #12] - 80021fc: 6cdb ldr r3, [r3, #76] @ 0x4c - 80021fe: b299 uxth r1, r3 - 8002200: 68fb ldr r3, [r7, #12] - 8002202: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8002204: b2da uxtb r2, r3 - 8002206: 2380 movs r3, #128 @ 0x80 - 8002208: 049b lsls r3, r3, #18 - 800220a: 68f8 ldr r0, [r7, #12] - 800220c: 2400 movs r4, #0 - 800220e: 9400 str r4, [sp, #0] - 8002210: f000 fef8 bl 8003004 + 8002266: 68fb ldr r3, [r7, #12] + 8002268: 6cdb ldr r3, [r3, #76] @ 0x4c + 800226a: b299 uxth r1, r3 + 800226c: 68fb ldr r3, [r7, #12] + 800226e: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8002270: b2da uxtb r2, r3 + 8002272: 2380 movs r3, #128 @ 0x80 + 8002274: 049b lsls r3, r3, #18 + 8002276: 68f8 ldr r0, [r7, #12] + 8002278: 2400 movs r4, #0 + 800227a: 9400 str r4, [sp, #0] + 800227c: f000 fef8 bl 8003070 I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); } /* Update XferCount value */ hi2c->XferCount -= hi2c->XferSize; - 8002214: 68fb ldr r3, [r7, #12] - 8002216: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8002218: b29a uxth r2, r3 - 800221a: 68fb ldr r3, [r7, #12] - 800221c: 8d1b ldrh r3, [r3, #40] @ 0x28 - 800221e: 1ad3 subs r3, r2, r3 - 8002220: b29a uxth r2, r3 - 8002222: 68fb ldr r3, [r7, #12] - 8002224: 855a strh r2, [r3, #42] @ 0x2a + 8002280: 68fb ldr r3, [r7, #12] + 8002282: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8002284: b29a uxth r2, r3 + 8002286: 68fb ldr r3, [r7, #12] + 8002288: 8d1b ldrh r3, [r3, #40] @ 0x28 + 800228a: 1ad3 subs r3, r2, r3 + 800228c: b29a uxth r2, r3 + 800228e: 68fb ldr r3, [r7, #12] + 8002290: 855a strh r2, [r3, #42] @ 0x2a /* Enable DMA Request */ if (hi2c->State == HAL_I2C_STATE_BUSY_RX) - 8002226: 68fb ldr r3, [r7, #12] - 8002228: 2241 movs r2, #65 @ 0x41 - 800222a: 5c9b ldrb r3, [r3, r2] - 800222c: b2db uxtb r3, r3 - 800222e: 2b22 cmp r3, #34 @ 0x22 - 8002230: d109 bne.n 8002246 + 8002292: 68fb ldr r3, [r7, #12] + 8002294: 2241 movs r2, #65 @ 0x41 + 8002296: 5c9b ldrb r3, [r3, r2] + 8002298: b2db uxtb r3, r3 + 800229a: 2b22 cmp r3, #34 @ 0x22 + 800229c: d109 bne.n 80022b2 { hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; - 8002232: 68fb ldr r3, [r7, #12] - 8002234: 681b ldr r3, [r3, #0] - 8002236: 681a ldr r2, [r3, #0] - 8002238: 68fb ldr r3, [r7, #12] - 800223a: 681b ldr r3, [r3, #0] - 800223c: 2180 movs r1, #128 @ 0x80 - 800223e: 0209 lsls r1, r1, #8 - 8002240: 430a orrs r2, r1 - 8002242: 601a str r2, [r3, #0] + 800229e: 68fb ldr r3, [r7, #12] + 80022a0: 681b ldr r3, [r3, #0] + 80022a2: 681a ldr r2, [r3, #0] + 80022a4: 68fb ldr r3, [r7, #12] + 80022a6: 681b ldr r3, [r3, #0] + 80022a8: 2180 movs r1, #128 @ 0x80 + 80022aa: 0209 lsls r1, r1, #8 + 80022ac: 430a orrs r2, r1 + 80022ae: 601a str r2, [r3, #0] if (hi2c->XferCount != 0U) - 8002244: e084 b.n 8002350 + 80022b0: e084 b.n 80023bc } else { hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; - 8002246: 68fb ldr r3, [r7, #12] - 8002248: 681b ldr r3, [r3, #0] - 800224a: 681a ldr r2, [r3, #0] - 800224c: 68fb ldr r3, [r7, #12] - 800224e: 681b ldr r3, [r3, #0] - 8002250: 2180 movs r1, #128 @ 0x80 - 8002252: 01c9 lsls r1, r1, #7 - 8002254: 430a orrs r2, r1 - 8002256: 601a str r2, [r3, #0] + 80022b2: 68fb ldr r3, [r7, #12] + 80022b4: 681b ldr r3, [r3, #0] + 80022b6: 681a ldr r2, [r3, #0] + 80022b8: 68fb ldr r3, [r7, #12] + 80022ba: 681b ldr r3, [r3, #0] + 80022bc: 2180 movs r1, #128 @ 0x80 + 80022be: 01c9 lsls r1, r1, #7 + 80022c0: 430a orrs r2, r1 + 80022c2: 601a str r2, [r3, #0] if (hi2c->XferCount != 0U) - 8002258: e07a b.n 8002350 + 80022c4: e07a b.n 80023bc } else { /* Wrong size Status regarding TCR flag event */ /* Call the corresponding callback to inform upper layer of End of Transfer */ I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); - 800225a: 68fb ldr r3, [r7, #12] - 800225c: 2140 movs r1, #64 @ 0x40 - 800225e: 0018 movs r0, r3 - 8002260: f000 fd64 bl 8002d2c + 80022c6: 68fb ldr r3, [r7, #12] + 80022c8: 2140 movs r1, #64 @ 0x40 + 80022ca: 0018 movs r0, r3 + 80022cc: f000 fd64 bl 8002d98 if (hi2c->XferCount != 0U) - 8002264: e074 b.n 8002350 + 80022d0: e074 b.n 80023bc } } else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \ - 8002266: 68bb ldr r3, [r7, #8] - 8002268: 2240 movs r2, #64 @ 0x40 - 800226a: 4013 ands r3, r2 - 800226c: d062 beq.n 8002334 + 80022d2: 68bb ldr r3, [r7, #8] + 80022d4: 2240 movs r2, #64 @ 0x40 + 80022d6: 4013 ands r3, r2 + 80022d8: d062 beq.n 80023a0 (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) - 800226e: 687b ldr r3, [r7, #4] - 8002270: 2240 movs r2, #64 @ 0x40 - 8002272: 4013 ands r3, r2 + 80022da: 687b ldr r3, [r7, #4] + 80022dc: 2240 movs r2, #64 @ 0x40 + 80022de: 4013 ands r3, r2 else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \ - 8002274: d05e beq.n 8002334 + 80022e0: d05e beq.n 80023a0 { /* Disable Interrupt related to address step */ I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); - 8002276: 68fb ldr r3, [r7, #12] - 8002278: 2101 movs r1, #1 - 800227a: 0018 movs r0, r3 - 800227c: f000 ff86 bl 800318c + 80022e2: 68fb ldr r3, [r7, #12] + 80022e4: 2101 movs r1, #1 + 80022e6: 0018 movs r0, r3 + 80022e8: f000 ff86 bl 80031f8 /* Enable only Error and NACK interrupt for data transfer */ I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); - 8002280: 68fb ldr r3, [r7, #12] - 8002282: 2110 movs r1, #16 - 8002284: 0018 movs r0, r3 - 8002286: f000 fef7 bl 8003078 + 80022ec: 68fb ldr r3, [r7, #12] + 80022ee: 2110 movs r1, #16 + 80022f0: 0018 movs r0, r3 + 80022f2: f000 fef7 bl 80030e4 if (hi2c->State == HAL_I2C_STATE_BUSY_RX) - 800228a: 68fb ldr r3, [r7, #12] - 800228c: 2241 movs r2, #65 @ 0x41 - 800228e: 5c9b ldrb r3, [r3, r2] - 8002290: b2db uxtb r3, r3 - 8002292: 2b22 cmp r3, #34 @ 0x22 - 8002294: d101 bne.n 800229a + 80022f6: 68fb ldr r3, [r7, #12] + 80022f8: 2241 movs r2, #65 @ 0x41 + 80022fa: 5c9b ldrb r3, [r3, r2] + 80022fc: b2db uxtb r3, r3 + 80022fe: 2b22 cmp r3, #34 @ 0x22 + 8002300: d101 bne.n 8002306 { direction = I2C_GENERATE_START_READ; - 8002296: 4b34 ldr r3, [pc, #208] @ (8002368 ) - 8002298: 617b str r3, [r7, #20] + 8002302: 4b34 ldr r3, [pc, #208] @ (80023d4 ) + 8002304: 617b str r3, [r7, #20] } if (hi2c->XferCount > MAX_NBYTE_SIZE) - 800229a: 68fb ldr r3, [r7, #12] - 800229c: 8d5b ldrh r3, [r3, #42] @ 0x2a - 800229e: b29b uxth r3, r3 - 80022a0: 2bff cmp r3, #255 @ 0xff - 80022a2: d911 bls.n 80022c8 + 8002306: 68fb ldr r3, [r7, #12] + 8002308: 8d5b ldrh r3, [r3, #42] @ 0x2a + 800230a: b29b uxth r3, r3 + 800230c: 2bff cmp r3, #255 @ 0xff + 800230e: d911 bls.n 8002334 { hi2c->XferSize = MAX_NBYTE_SIZE; - 80022a4: 68fb ldr r3, [r7, #12] - 80022a6: 22ff movs r2, #255 @ 0xff - 80022a8: 851a strh r2, [r3, #40] @ 0x28 + 8002310: 68fb ldr r3, [r7, #12] + 8002312: 22ff movs r2, #255 @ 0xff + 8002314: 851a strh r2, [r3, #40] @ 0x28 /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, - 80022aa: 68fb ldr r3, [r7, #12] - 80022ac: 6cdb ldr r3, [r3, #76] @ 0x4c - 80022ae: b299 uxth r1, r3 - 80022b0: 68fb ldr r3, [r7, #12] - 80022b2: 8d1b ldrh r3, [r3, #40] @ 0x28 - 80022b4: b2da uxtb r2, r3 - 80022b6: 2380 movs r3, #128 @ 0x80 - 80022b8: 045c lsls r4, r3, #17 - 80022ba: 68f8 ldr r0, [r7, #12] - 80022bc: 697b ldr r3, [r7, #20] - 80022be: 9300 str r3, [sp, #0] - 80022c0: 0023 movs r3, r4 - 80022c2: f000 fe9f bl 8003004 - 80022c6: e012 b.n 80022ee + 8002316: 68fb ldr r3, [r7, #12] + 8002318: 6cdb ldr r3, [r3, #76] @ 0x4c + 800231a: b299 uxth r1, r3 + 800231c: 68fb ldr r3, [r7, #12] + 800231e: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8002320: b2da uxtb r2, r3 + 8002322: 2380 movs r3, #128 @ 0x80 + 8002324: 045c lsls r4, r3, #17 + 8002326: 68f8 ldr r0, [r7, #12] + 8002328: 697b ldr r3, [r7, #20] + 800232a: 9300 str r3, [sp, #0] + 800232c: 0023 movs r3, r4 + 800232e: f000 fe9f bl 8003070 + 8002332: e012 b.n 800235a I2C_RELOAD_MODE, direction); } else { hi2c->XferSize = hi2c->XferCount; - 80022c8: 68fb ldr r3, [r7, #12] - 80022ca: 8d5b ldrh r3, [r3, #42] @ 0x2a - 80022cc: b29a uxth r2, r3 - 80022ce: 68fb ldr r3, [r7, #12] - 80022d0: 851a strh r2, [r3, #40] @ 0x28 + 8002334: 68fb ldr r3, [r7, #12] + 8002336: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8002338: b29a uxth r2, r3 + 800233a: 68fb ldr r3, [r7, #12] + 800233c: 851a strh r2, [r3, #40] @ 0x28 /* Set NBYTES to write and generate RESTART */ I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, - 80022d2: 68fb ldr r3, [r7, #12] - 80022d4: 6cdb ldr r3, [r3, #76] @ 0x4c - 80022d6: b299 uxth r1, r3 - 80022d8: 68fb ldr r3, [r7, #12] - 80022da: 8d1b ldrh r3, [r3, #40] @ 0x28 - 80022dc: b2da uxtb r2, r3 - 80022de: 2380 movs r3, #128 @ 0x80 - 80022e0: 049c lsls r4, r3, #18 - 80022e2: 68f8 ldr r0, [r7, #12] - 80022e4: 697b ldr r3, [r7, #20] - 80022e6: 9300 str r3, [sp, #0] - 80022e8: 0023 movs r3, r4 - 80022ea: f000 fe8b bl 8003004 + 800233e: 68fb ldr r3, [r7, #12] + 8002340: 6cdb ldr r3, [r3, #76] @ 0x4c + 8002342: b299 uxth r1, r3 + 8002344: 68fb ldr r3, [r7, #12] + 8002346: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8002348: b2da uxtb r2, r3 + 800234a: 2380 movs r3, #128 @ 0x80 + 800234c: 049c lsls r4, r3, #18 + 800234e: 68f8 ldr r0, [r7, #12] + 8002350: 697b ldr r3, [r7, #20] + 8002352: 9300 str r3, [sp, #0] + 8002354: 0023 movs r3, r4 + 8002356: f000 fe8b bl 8003070 I2C_AUTOEND_MODE, direction); } /* Update XferCount value */ hi2c->XferCount -= hi2c->XferSize; - 80022ee: 68fb ldr r3, [r7, #12] - 80022f0: 8d5b ldrh r3, [r3, #42] @ 0x2a - 80022f2: b29a uxth r2, r3 - 80022f4: 68fb ldr r3, [r7, #12] - 80022f6: 8d1b ldrh r3, [r3, #40] @ 0x28 - 80022f8: 1ad3 subs r3, r2, r3 - 80022fa: b29a uxth r2, r3 - 80022fc: 68fb ldr r3, [r7, #12] - 80022fe: 855a strh r2, [r3, #42] @ 0x2a + 800235a: 68fb ldr r3, [r7, #12] + 800235c: 8d5b ldrh r3, [r3, #42] @ 0x2a + 800235e: b29a uxth r2, r3 + 8002360: 68fb ldr r3, [r7, #12] + 8002362: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8002364: 1ad3 subs r3, r2, r3 + 8002366: b29a uxth r2, r3 + 8002368: 68fb ldr r3, [r7, #12] + 800236a: 855a strh r2, [r3, #42] @ 0x2a /* Enable DMA Request */ if (hi2c->State == HAL_I2C_STATE_BUSY_RX) - 8002300: 68fb ldr r3, [r7, #12] - 8002302: 2241 movs r2, #65 @ 0x41 - 8002304: 5c9b ldrb r3, [r3, r2] - 8002306: b2db uxtb r3, r3 - 8002308: 2b22 cmp r3, #34 @ 0x22 - 800230a: d109 bne.n 8002320 + 800236c: 68fb ldr r3, [r7, #12] + 800236e: 2241 movs r2, #65 @ 0x41 + 8002370: 5c9b ldrb r3, [r3, r2] + 8002372: b2db uxtb r3, r3 + 8002374: 2b22 cmp r3, #34 @ 0x22 + 8002376: d109 bne.n 800238c { hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; - 800230c: 68fb ldr r3, [r7, #12] - 800230e: 681b ldr r3, [r3, #0] - 8002310: 681a ldr r2, [r3, #0] - 8002312: 68fb ldr r3, [r7, #12] - 8002314: 681b ldr r3, [r3, #0] - 8002316: 2180 movs r1, #128 @ 0x80 - 8002318: 0209 lsls r1, r1, #8 - 800231a: 430a orrs r2, r1 - 800231c: 601a str r2, [r3, #0] + 8002378: 68fb ldr r3, [r7, #12] + 800237a: 681b ldr r3, [r3, #0] + 800237c: 681a ldr r2, [r3, #0] + 800237e: 68fb ldr r3, [r7, #12] + 8002380: 681b ldr r3, [r3, #0] + 8002382: 2180 movs r1, #128 @ 0x80 + 8002384: 0209 lsls r1, r1, #8 + 8002386: 430a orrs r2, r1 + 8002388: 601a str r2, [r3, #0] if (hi2c->State == HAL_I2C_STATE_BUSY_RX) - 800231e: e017 b.n 8002350 + 800238a: e017 b.n 80023bc } else { hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; - 8002320: 68fb ldr r3, [r7, #12] - 8002322: 681b ldr r3, [r3, #0] - 8002324: 681a ldr r2, [r3, #0] - 8002326: 68fb ldr r3, [r7, #12] - 8002328: 681b ldr r3, [r3, #0] - 800232a: 2180 movs r1, #128 @ 0x80 - 800232c: 01c9 lsls r1, r1, #7 - 800232e: 430a orrs r2, r1 - 8002330: 601a str r2, [r3, #0] + 800238c: 68fb ldr r3, [r7, #12] + 800238e: 681b ldr r3, [r3, #0] + 8002390: 681a ldr r2, [r3, #0] + 8002392: 68fb ldr r3, [r7, #12] + 8002394: 681b ldr r3, [r3, #0] + 8002396: 2180 movs r1, #128 @ 0x80 + 8002398: 01c9 lsls r1, r1, #7 + 800239a: 430a orrs r2, r1 + 800239c: 601a str r2, [r3, #0] if (hi2c->State == HAL_I2C_STATE_BUSY_RX) - 8002332: e00d b.n 8002350 + 800239e: e00d b.n 80023bc } } else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ - 8002334: 68bb ldr r3, [r7, #8] - 8002336: 2220 movs r2, #32 - 8002338: 4013 ands r3, r2 - 800233a: d009 beq.n 8002350 + 80023a0: 68bb ldr r3, [r7, #8] + 80023a2: 2220 movs r2, #32 + 80023a4: 4013 ands r3, r2 + 80023a6: d009 beq.n 80023bc (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) - 800233c: 687b ldr r3, [r7, #4] - 800233e: 2220 movs r2, #32 - 8002340: 4013 ands r3, r2 + 80023a8: 687b ldr r3, [r7, #4] + 80023aa: 2220 movs r2, #32 + 80023ac: 4013 ands r3, r2 else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ - 8002342: d005 beq.n 8002350 + 80023ae: d005 beq.n 80023bc { /* Call I2C Master complete process */ I2C_ITMasterCplt(hi2c, ITFlags); - 8002344: 68ba ldr r2, [r7, #8] - 8002346: 68fb ldr r3, [r7, #12] - 8002348: 0011 movs r1, r2 - 800234a: 0018 movs r0, r3 - 800234c: f000 fa40 bl 80027d0 + 80023b0: 68ba ldr r2, [r7, #8] + 80023b2: 68fb ldr r3, [r7, #12] + 80023b4: 0011 movs r1, r2 + 80023b6: 0018 movs r0, r3 + 80023b8: f000 fa40 bl 800283c { /* Nothing to do */ } /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8002350: 68fb ldr r3, [r7, #12] - 8002352: 2240 movs r2, #64 @ 0x40 - 8002354: 2100 movs r1, #0 - 8002356: 5499 strb r1, [r3, r2] + 80023bc: 68fb ldr r3, [r7, #12] + 80023be: 2240 movs r2, #64 @ 0x40 + 80023c0: 2100 movs r1, #0 + 80023c2: 5499 strb r1, [r3, r2] return HAL_OK; - 8002358: 2300 movs r3, #0 + 80023c4: 2300 movs r3, #0 } - 800235a: 0018 movs r0, r3 - 800235c: 46bd mov sp, r7 - 800235e: b007 add sp, #28 - 8002360: bd90 pop {r4, r7, pc} - 8002362: 46c0 nop @ (mov r8, r8) - 8002364: 80002000 .word 0x80002000 - 8002368: 80002400 .word 0x80002400 + 80023c6: 0018 movs r0, r3 + 80023c8: 46bd mov sp, r7 + 80023ca: b007 add sp, #28 + 80023cc: bd90 pop {r4, r7, pc} + 80023ce: 46c0 nop @ (mov r8, r8) + 80023d0: 80002000 .word 0x80002000 + 80023d4: 80002400 .word 0x80002400 -0800236c : +080023d8 : * @param ITSources Interrupt sources enabled. * @retval HAL status */ static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources) { - 800236c: b580 push {r7, lr} - 800236e: b088 sub sp, #32 - 8002370: af00 add r7, sp, #0 - 8002372: 60f8 str r0, [r7, #12] - 8002374: 60b9 str r1, [r7, #8] - 8002376: 607a str r2, [r7, #4] + 80023d8: b580 push {r7, lr} + 80023da: b088 sub sp, #32 + 80023dc: af00 add r7, sp, #0 + 80023de: 60f8 str r0, [r7, #12] + 80023e0: 60b9 str r1, [r7, #8] + 80023e2: 607a str r2, [r7, #4] uint32_t tmpoptions = hi2c->XferOptions; - 8002378: 68fb ldr r3, [r7, #12] - 800237a: 6adb ldr r3, [r3, #44] @ 0x2c - 800237c: 61bb str r3, [r7, #24] + 80023e4: 68fb ldr r3, [r7, #12] + 80023e6: 6adb ldr r3, [r3, #44] @ 0x2c + 80023e8: 61bb str r3, [r7, #24] uint32_t treatdmanack = 0U; - 800237e: 2300 movs r3, #0 - 8002380: 61fb str r3, [r7, #28] + 80023ea: 2300 movs r3, #0 + 80023ec: 61fb str r3, [r7, #28] HAL_I2C_StateTypeDef tmpstate; /* Process locked */ __HAL_LOCK(hi2c); - 8002382: 68fb ldr r3, [r7, #12] - 8002384: 2240 movs r2, #64 @ 0x40 - 8002386: 5c9b ldrb r3, [r3, r2] - 8002388: 2b01 cmp r3, #1 - 800238a: d101 bne.n 8002390 - 800238c: 2302 movs r3, #2 - 800238e: e0ce b.n 800252e - 8002390: 68fb ldr r3, [r7, #12] - 8002392: 2240 movs r2, #64 @ 0x40 - 8002394: 2101 movs r1, #1 - 8002396: 5499 strb r1, [r3, r2] + 80023ee: 68fb ldr r3, [r7, #12] + 80023f0: 2240 movs r2, #64 @ 0x40 + 80023f2: 5c9b ldrb r3, [r3, r2] + 80023f4: 2b01 cmp r3, #1 + 80023f6: d101 bne.n 80023fc + 80023f8: 2302 movs r3, #2 + 80023fa: e0ce b.n 800259a + 80023fc: 68fb ldr r3, [r7, #12] + 80023fe: 2240 movs r2, #64 @ 0x40 + 8002400: 2101 movs r1, #1 + 8002402: 5499 strb r1, [r3, r2] /* Check if STOPF is set */ if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ - 8002398: 68bb ldr r3, [r7, #8] - 800239a: 2220 movs r2, #32 - 800239c: 4013 ands r3, r2 - 800239e: d00a beq.n 80023b6 + 8002404: 68bb ldr r3, [r7, #8] + 8002406: 2220 movs r2, #32 + 8002408: 4013 ands r3, r2 + 800240a: d00a beq.n 8002422 (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) - 80023a0: 687b ldr r3, [r7, #4] - 80023a2: 2220 movs r2, #32 - 80023a4: 4013 ands r3, r2 + 800240c: 687b ldr r3, [r7, #4] + 800240e: 2220 movs r2, #32 + 8002410: 4013 ands r3, r2 if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ - 80023a6: d006 beq.n 80023b6 + 8002412: d006 beq.n 8002422 { /* Call I2C Slave complete process */ I2C_ITSlaveCplt(hi2c, ITFlags); - 80023a8: 68ba ldr r2, [r7, #8] - 80023aa: 68fb ldr r3, [r7, #12] - 80023ac: 0011 movs r1, r2 - 80023ae: 0018 movs r0, r3 - 80023b0: f000 fadc bl 800296c - 80023b4: e0b6 b.n 8002524 + 8002414: 68ba ldr r2, [r7, #8] + 8002416: 68fb ldr r3, [r7, #12] + 8002418: 0011 movs r1, r2 + 800241a: 0018 movs r0, r3 + 800241c: f000 fadc bl 80029d8 + 8002420: e0b6 b.n 8002590 } else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ - 80023b6: 68bb ldr r3, [r7, #8] - 80023b8: 2210 movs r2, #16 - 80023ba: 4013 ands r3, r2 - 80023bc: d100 bne.n 80023c0 - 80023be: e0a3 b.n 8002508 + 8002422: 68bb ldr r3, [r7, #8] + 8002424: 2210 movs r2, #16 + 8002426: 4013 ands r3, r2 + 8002428: d100 bne.n 800242c + 800242a: e0a3 b.n 8002574 (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) - 80023c0: 687b ldr r3, [r7, #4] - 80023c2: 2210 movs r2, #16 - 80023c4: 4013 ands r3, r2 + 800242c: 687b ldr r3, [r7, #4] + 800242e: 2210 movs r2, #16 + 8002430: 4013 ands r3, r2 else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ - 80023c6: d100 bne.n 80023ca - 80023c8: e09e b.n 8002508 + 8002432: d100 bne.n 8002436 + 8002434: e09e b.n 8002574 { /* Check that I2C transfer finished */ /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */ /* Mean XferCount == 0 */ /* So clear Flag NACKF only */ if ((I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) || - 80023ca: 687a ldr r2, [r7, #4] - 80023cc: 2380 movs r3, #128 @ 0x80 - 80023ce: 01db lsls r3, r3, #7 - 80023d0: 4013 ands r3, r2 - 80023d2: d105 bne.n 80023e0 + 8002436: 687a ldr r2, [r7, #4] + 8002438: 2380 movs r3, #128 @ 0x80 + 800243a: 01db lsls r3, r3, #7 + 800243c: 4013 ands r3, r2 + 800243e: d105 bne.n 800244c (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET)) - 80023d4: 687a ldr r2, [r7, #4] - 80023d6: 2380 movs r3, #128 @ 0x80 - 80023d8: 021b lsls r3, r3, #8 - 80023da: 4013 ands r3, r2 + 8002440: 687a ldr r2, [r7, #4] + 8002442: 2380 movs r3, #128 @ 0x80 + 8002444: 021b lsls r3, r3, #8 + 8002446: 4013 ands r3, r2 if ((I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) || - 80023dc: d100 bne.n 80023e0 - 80023de: e08c b.n 80024fa + 8002448: d100 bne.n 800244c + 800244a: e08c b.n 8002566 { /* Split check of hdmarx, for MISRA compliance */ if (hi2c->hdmarx != NULL) - 80023e0: 68fb ldr r3, [r7, #12] - 80023e2: 6bdb ldr r3, [r3, #60] @ 0x3c - 80023e4: 2b00 cmp r3, #0 - 80023e6: d00c beq.n 8002402 + 800244c: 68fb ldr r3, [r7, #12] + 800244e: 6bdb ldr r3, [r3, #60] @ 0x3c + 8002450: 2b00 cmp r3, #0 + 8002452: d00c beq.n 800246e { if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET) - 80023e8: 687a ldr r2, [r7, #4] - 80023ea: 2380 movs r3, #128 @ 0x80 - 80023ec: 021b lsls r3, r3, #8 - 80023ee: 4013 ands r3, r2 - 80023f0: d007 beq.n 8002402 + 8002454: 687a ldr r2, [r7, #4] + 8002456: 2380 movs r3, #128 @ 0x80 + 8002458: 021b lsls r3, r3, #8 + 800245a: 4013 ands r3, r2 + 800245c: d007 beq.n 800246e { if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) - 80023f2: 68fb ldr r3, [r7, #12] - 80023f4: 6bdb ldr r3, [r3, #60] @ 0x3c - 80023f6: 681b ldr r3, [r3, #0] - 80023f8: 685b ldr r3, [r3, #4] - 80023fa: 2b00 cmp r3, #0 - 80023fc: d101 bne.n 8002402 + 800245e: 68fb ldr r3, [r7, #12] + 8002460: 6bdb ldr r3, [r3, #60] @ 0x3c + 8002462: 681b ldr r3, [r3, #0] + 8002464: 685b ldr r3, [r3, #4] + 8002466: 2b00 cmp r3, #0 + 8002468: d101 bne.n 800246e { treatdmanack = 1U; - 80023fe: 2301 movs r3, #1 - 8002400: 61fb str r3, [r7, #28] + 800246a: 2301 movs r3, #1 + 800246c: 61fb str r3, [r7, #28] } } } /* Split check of hdmatx, for MISRA compliance */ if (hi2c->hdmatx != NULL) - 8002402: 68fb ldr r3, [r7, #12] - 8002404: 6b9b ldr r3, [r3, #56] @ 0x38 - 8002406: 2b00 cmp r3, #0 - 8002408: d00c beq.n 8002424 + 800246e: 68fb ldr r3, [r7, #12] + 8002470: 6b9b ldr r3, [r3, #56] @ 0x38 + 8002472: 2b00 cmp r3, #0 + 8002474: d00c beq.n 8002490 { if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) - 800240a: 687a ldr r2, [r7, #4] - 800240c: 2380 movs r3, #128 @ 0x80 - 800240e: 01db lsls r3, r3, #7 - 8002410: 4013 ands r3, r2 - 8002412: d007 beq.n 8002424 + 8002476: 687a ldr r2, [r7, #4] + 8002478: 2380 movs r3, #128 @ 0x80 + 800247a: 01db lsls r3, r3, #7 + 800247c: 4013 ands r3, r2 + 800247e: d007 beq.n 8002490 { if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx) == 0U) - 8002414: 68fb ldr r3, [r7, #12] - 8002416: 6b9b ldr r3, [r3, #56] @ 0x38 - 8002418: 681b ldr r3, [r3, #0] - 800241a: 685b ldr r3, [r3, #4] - 800241c: 2b00 cmp r3, #0 - 800241e: d101 bne.n 8002424 + 8002480: 68fb ldr r3, [r7, #12] + 8002482: 6b9b ldr r3, [r3, #56] @ 0x38 + 8002484: 681b ldr r3, [r3, #0] + 8002486: 685b ldr r3, [r3, #4] + 8002488: 2b00 cmp r3, #0 + 800248a: d101 bne.n 8002490 { treatdmanack = 1U; - 8002420: 2301 movs r3, #1 - 8002422: 61fb str r3, [r7, #28] + 800248c: 2301 movs r3, #1 + 800248e: 61fb str r3, [r7, #28] } } } if (treatdmanack == 1U) - 8002424: 69fb ldr r3, [r7, #28] - 8002426: 2b01 cmp r3, #1 - 8002428: d12d bne.n 8002486 + 8002490: 69fb ldr r3, [r7, #28] + 8002492: 2b01 cmp r3, #1 + 8002494: d12d bne.n 80024f2 { if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) - 800242a: 68fb ldr r3, [r7, #12] - 800242c: 2241 movs r2, #65 @ 0x41 - 800242e: 5c9b ldrb r3, [r3, r2] - 8002430: b2db uxtb r3, r3 - 8002432: 2b28 cmp r3, #40 @ 0x28 - 8002434: d10b bne.n 800244e - 8002436: 69ba ldr r2, [r7, #24] - 8002438: 2380 movs r3, #128 @ 0x80 - 800243a: 049b lsls r3, r3, #18 - 800243c: 429a cmp r2, r3 - 800243e: d106 bne.n 800244e + 8002496: 68fb ldr r3, [r7, #12] + 8002498: 2241 movs r2, #65 @ 0x41 + 800249a: 5c9b ldrb r3, [r3, r2] + 800249c: b2db uxtb r3, r3 + 800249e: 2b28 cmp r3, #40 @ 0x28 + 80024a0: d10b bne.n 80024ba + 80024a2: 69ba ldr r2, [r7, #24] + 80024a4: 2380 movs r3, #128 @ 0x80 + 80024a6: 049b lsls r3, r3, #18 + 80024a8: 429a cmp r2, r3 + 80024aa: d106 bne.n 80024ba /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for Warning[Pa134]: left and right operands are identical */ { /* Call I2C Listen complete process */ I2C_ITListenCplt(hi2c, ITFlags); - 8002440: 68ba ldr r2, [r7, #8] - 8002442: 68fb ldr r3, [r7, #12] - 8002444: 0011 movs r1, r2 - 8002446: 0018 movs r0, r3 - 8002448: f000 fc18 bl 8002c7c - 800244c: e054 b.n 80024f8 + 80024ac: 68ba ldr r2, [r7, #8] + 80024ae: 68fb ldr r3, [r7, #12] + 80024b0: 0011 movs r1, r2 + 80024b2: 0018 movs r0, r3 + 80024b4: f000 fc18 bl 8002ce8 + 80024b8: e054 b.n 8002564 } else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) - 800244e: 68fb ldr r3, [r7, #12] - 8002450: 2241 movs r2, #65 @ 0x41 - 8002452: 5c9b ldrb r3, [r3, r2] - 8002454: b2db uxtb r3, r3 - 8002456: 2b29 cmp r3, #41 @ 0x29 - 8002458: d110 bne.n 800247c - 800245a: 69bb ldr r3, [r7, #24] - 800245c: 4a36 ldr r2, [pc, #216] @ (8002538 ) - 800245e: 4293 cmp r3, r2 - 8002460: d00c beq.n 800247c + 80024ba: 68fb ldr r3, [r7, #12] + 80024bc: 2241 movs r2, #65 @ 0x41 + 80024be: 5c9b ldrb r3, [r3, r2] + 80024c0: b2db uxtb r3, r3 + 80024c2: 2b29 cmp r3, #41 @ 0x29 + 80024c4: d110 bne.n 80024e8 + 80024c6: 69bb ldr r3, [r7, #24] + 80024c8: 4a36 ldr r2, [pc, #216] @ (80025a4 ) + 80024ca: 4293 cmp r3, r2 + 80024cc: d00c beq.n 80024e8 { /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8002462: 68fb ldr r3, [r7, #12] - 8002464: 681b ldr r3, [r3, #0] - 8002466: 2210 movs r2, #16 - 8002468: 61da str r2, [r3, #28] + 80024ce: 68fb ldr r3, [r7, #12] + 80024d0: 681b ldr r3, [r3, #0] + 80024d2: 2210 movs r2, #16 + 80024d4: 61da str r2, [r3, #28] /* Flush TX register */ I2C_Flush_TXDR(hi2c); - 800246a: 68fb ldr r3, [r7, #12] - 800246c: 0018 movs r0, r3 - 800246e: f000 fd88 bl 8002f82 + 80024d6: 68fb ldr r3, [r7, #12] + 80024d8: 0018 movs r0, r3 + 80024da: f000 fd88 bl 8002fee /* Last Byte is Transmitted */ /* Call I2C Slave Sequential complete process */ I2C_ITSlaveSeqCplt(hi2c); - 8002472: 68fb ldr r3, [r7, #12] - 8002474: 0018 movs r0, r3 - 8002476: f000 f947 bl 8002708 - 800247a: e03d b.n 80024f8 + 80024de: 68fb ldr r3, [r7, #12] + 80024e0: 0018 movs r0, r3 + 80024e2: f000 f947 bl 8002774 + 80024e6: e03d b.n 8002564 } else { /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 800247c: 68fb ldr r3, [r7, #12] - 800247e: 681b ldr r3, [r3, #0] - 8002480: 2210 movs r2, #16 - 8002482: 61da str r2, [r3, #28] + 80024e8: 68fb ldr r3, [r7, #12] + 80024ea: 681b ldr r3, [r3, #0] + 80024ec: 2210 movs r2, #16 + 80024ee: 61da str r2, [r3, #28] if (treatdmanack == 1U) - 8002484: e03e b.n 8002504 + 80024f0: e03e b.n 8002570 } else { /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/ /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8002486: 68fb ldr r3, [r7, #12] - 8002488: 681b ldr r3, [r3, #0] - 800248a: 2210 movs r2, #16 - 800248c: 61da str r2, [r3, #28] + 80024f2: 68fb ldr r3, [r7, #12] + 80024f4: 681b ldr r3, [r3, #0] + 80024f6: 2210 movs r2, #16 + 80024f8: 61da str r2, [r3, #28] /* Set ErrorCode corresponding to a Non-Acknowledge */ hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 800248e: 68fb ldr r3, [r7, #12] - 8002490: 6c5b ldr r3, [r3, #68] @ 0x44 - 8002492: 2204 movs r2, #4 - 8002494: 431a orrs r2, r3 - 8002496: 68fb ldr r3, [r7, #12] - 8002498: 645a str r2, [r3, #68] @ 0x44 + 80024fa: 68fb ldr r3, [r7, #12] + 80024fc: 6c5b ldr r3, [r3, #68] @ 0x44 + 80024fe: 2204 movs r2, #4 + 8002500: 431a orrs r2, r3 + 8002502: 68fb ldr r3, [r7, #12] + 8002504: 645a str r2, [r3, #68] @ 0x44 /* Store current hi2c->State, solve MISRA2012-Rule-13.5 */ tmpstate = hi2c->State; - 800249a: 2317 movs r3, #23 - 800249c: 18fb adds r3, r7, r3 - 800249e: 68fa ldr r2, [r7, #12] - 80024a0: 2141 movs r1, #65 @ 0x41 - 80024a2: 5c52 ldrb r2, [r2, r1] - 80024a4: 701a strb r2, [r3, #0] + 8002506: 2317 movs r3, #23 + 8002508: 18fb adds r3, r7, r3 + 800250a: 68fa ldr r2, [r7, #12] + 800250c: 2141 movs r1, #65 @ 0x41 + 800250e: 5c52 ldrb r2, [r2, r1] + 8002510: 701a strb r2, [r3, #0] if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME)) - 80024a6: 69bb ldr r3, [r7, #24] - 80024a8: 2b00 cmp r3, #0 - 80024aa: d004 beq.n 80024b6 - 80024ac: 69ba ldr r2, [r7, #24] - 80024ae: 2380 movs r3, #128 @ 0x80 - 80024b0: 045b lsls r3, r3, #17 - 80024b2: 429a cmp r2, r3 - 80024b4: d126 bne.n 8002504 + 8002512: 69bb ldr r3, [r7, #24] + 8002514: 2b00 cmp r3, #0 + 8002516: d004 beq.n 8002522 + 8002518: 69ba ldr r2, [r7, #24] + 800251a: 2380 movs r3, #128 @ 0x80 + 800251c: 045b lsls r3, r3, #17 + 800251e: 429a cmp r2, r3 + 8002520: d126 bne.n 8002570 { if ((tmpstate == HAL_I2C_STATE_BUSY_TX) || (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN)) - 80024b6: 2217 movs r2, #23 - 80024b8: 18bb adds r3, r7, r2 - 80024ba: 781b ldrb r3, [r3, #0] - 80024bc: 2b21 cmp r3, #33 @ 0x21 - 80024be: d003 beq.n 80024c8 - 80024c0: 18bb adds r3, r7, r2 - 80024c2: 781b ldrb r3, [r3, #0] - 80024c4: 2b29 cmp r3, #41 @ 0x29 - 80024c6: d103 bne.n 80024d0 + 8002522: 2217 movs r2, #23 + 8002524: 18bb adds r3, r7, r2 + 8002526: 781b ldrb r3, [r3, #0] + 8002528: 2b21 cmp r3, #33 @ 0x21 + 800252a: d003 beq.n 8002534 + 800252c: 18bb adds r3, r7, r2 + 800252e: 781b ldrb r3, [r3, #0] + 8002530: 2b29 cmp r3, #41 @ 0x29 + 8002532: d103 bne.n 800253c { hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; - 80024c8: 68fb ldr r3, [r7, #12] - 80024ca: 2221 movs r2, #33 @ 0x21 - 80024cc: 631a str r2, [r3, #48] @ 0x30 - 80024ce: e00b b.n 80024e8 + 8002534: 68fb ldr r3, [r7, #12] + 8002536: 2221 movs r2, #33 @ 0x21 + 8002538: 631a str r2, [r3, #48] @ 0x30 + 800253a: e00b b.n 8002554 } else if ((tmpstate == HAL_I2C_STATE_BUSY_RX) || (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) - 80024d0: 2217 movs r2, #23 - 80024d2: 18bb adds r3, r7, r2 - 80024d4: 781b ldrb r3, [r3, #0] - 80024d6: 2b22 cmp r3, #34 @ 0x22 - 80024d8: d003 beq.n 80024e2 - 80024da: 18bb adds r3, r7, r2 - 80024dc: 781b ldrb r3, [r3, #0] - 80024de: 2b2a cmp r3, #42 @ 0x2a - 80024e0: d102 bne.n 80024e8 + 800253c: 2217 movs r2, #23 + 800253e: 18bb adds r3, r7, r2 + 8002540: 781b ldrb r3, [r3, #0] + 8002542: 2b22 cmp r3, #34 @ 0x22 + 8002544: d003 beq.n 800254e + 8002546: 18bb adds r3, r7, r2 + 8002548: 781b ldrb r3, [r3, #0] + 800254a: 2b2a cmp r3, #42 @ 0x2a + 800254c: d102 bne.n 8002554 { hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; - 80024e2: 68fb ldr r3, [r7, #12] - 80024e4: 2222 movs r2, #34 @ 0x22 - 80024e6: 631a str r2, [r3, #48] @ 0x30 + 800254e: 68fb ldr r3, [r7, #12] + 8002550: 2222 movs r2, #34 @ 0x22 + 8002552: 631a str r2, [r3, #48] @ 0x30 { /* Do nothing */ } /* Call the corresponding callback to inform upper layer of End of Transfer */ I2C_ITError(hi2c, hi2c->ErrorCode); - 80024e8: 68fb ldr r3, [r7, #12] - 80024ea: 6c5a ldr r2, [r3, #68] @ 0x44 - 80024ec: 68fb ldr r3, [r7, #12] - 80024ee: 0011 movs r1, r2 - 80024f0: 0018 movs r0, r3 - 80024f2: f000 fc1b bl 8002d2c + 8002554: 68fb ldr r3, [r7, #12] + 8002556: 6c5a ldr r2, [r3, #68] @ 0x44 + 8002558: 68fb ldr r3, [r7, #12] + 800255a: 0011 movs r1, r2 + 800255c: 0018 movs r0, r3 + 800255e: f000 fc1b bl 8002d98 if (treatdmanack == 1U) - 80024f6: e005 b.n 8002504 - 80024f8: e004 b.n 8002504 + 8002562: e005 b.n 8002570 + 8002564: e004 b.n 8002570 } } else { /* Only Clear NACK Flag, no DMA treatment is pending */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 80024fa: 68fb ldr r3, [r7, #12] - 80024fc: 681b ldr r3, [r3, #0] - 80024fe: 2210 movs r2, #16 - 8002500: 61da str r2, [r3, #28] + 8002566: 68fb ldr r3, [r7, #12] + 8002568: 681b ldr r3, [r3, #0] + 800256a: 2210 movs r2, #16 + 800256c: 61da str r2, [r3, #28] if ((I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) || - 8002502: e00f b.n 8002524 + 800256e: e00f b.n 8002590 if (treatdmanack == 1U) - 8002504: 46c0 nop @ (mov r8, r8) + 8002570: 46c0 nop @ (mov r8, r8) if ((I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) || - 8002506: e00d b.n 8002524 + 8002572: e00d b.n 8002590 } } else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_ADDR) != RESET) && \ - 8002508: 68bb ldr r3, [r7, #8] - 800250a: 2208 movs r2, #8 - 800250c: 4013 ands r3, r2 - 800250e: d009 beq.n 8002524 + 8002574: 68bb ldr r3, [r7, #8] + 8002576: 2208 movs r2, #8 + 8002578: 4013 ands r3, r2 + 800257a: d009 beq.n 8002590 (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) - 8002510: 687b ldr r3, [r7, #4] - 8002512: 2208 movs r2, #8 - 8002514: 4013 ands r3, r2 + 800257c: 687b ldr r3, [r7, #4] + 800257e: 2208 movs r2, #8 + 8002580: 4013 ands r3, r2 else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_ADDR) != RESET) && \ - 8002516: d005 beq.n 8002524 + 8002582: d005 beq.n 8002590 { I2C_ITAddrCplt(hi2c, ITFlags); - 8002518: 68ba ldr r2, [r7, #8] - 800251a: 68fb ldr r3, [r7, #12] - 800251c: 0011 movs r1, r2 - 800251e: 0018 movs r0, r3 - 8002520: f000 f80c bl 800253c + 8002584: 68ba ldr r2, [r7, #8] + 8002586: 68fb ldr r3, [r7, #12] + 8002588: 0011 movs r1, r2 + 800258a: 0018 movs r0, r3 + 800258c: f000 f80c bl 80025a8 { /* Nothing to do */ } /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8002524: 68fb ldr r3, [r7, #12] - 8002526: 2240 movs r2, #64 @ 0x40 - 8002528: 2100 movs r1, #0 - 800252a: 5499 strb r1, [r3, r2] + 8002590: 68fb ldr r3, [r7, #12] + 8002592: 2240 movs r2, #64 @ 0x40 + 8002594: 2100 movs r1, #0 + 8002596: 5499 strb r1, [r3, r2] return HAL_OK; - 800252c: 2300 movs r3, #0 + 8002598: 2300 movs r3, #0 } - 800252e: 0018 movs r0, r3 - 8002530: 46bd mov sp, r7 - 8002532: b008 add sp, #32 - 8002534: bd80 pop {r7, pc} - 8002536: 46c0 nop @ (mov r8, r8) - 8002538: ffff0000 .word 0xffff0000 + 800259a: 0018 movs r0, r3 + 800259c: 46bd mov sp, r7 + 800259e: b008 add sp, #32 + 80025a0: bd80 pop {r7, pc} + 80025a2: 46c0 nop @ (mov r8, r8) + 80025a4: ffff0000 .word 0xffff0000 -0800253c : +080025a8 : * @param hi2c I2C handle. * @param ITFlags Interrupt flags to handle. * @retval None */ static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) { - 800253c: b5b0 push {r4, r5, r7, lr} - 800253e: b084 sub sp, #16 - 8002540: af00 add r7, sp, #0 - 8002542: 6078 str r0, [r7, #4] - 8002544: 6039 str r1, [r7, #0] + 80025a8: b5b0 push {r4, r5, r7, lr} + 80025aa: b084 sub sp, #16 + 80025ac: af00 add r7, sp, #0 + 80025ae: 6078 str r0, [r7, #4] + 80025b0: 6039 str r1, [r7, #0] /* Prevent unused argument(s) compilation warning */ UNUSED(ITFlags); /* In case of Listen state, need to inform upper layer of address match code event */ if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) - 8002546: 687b ldr r3, [r7, #4] - 8002548: 2241 movs r2, #65 @ 0x41 - 800254a: 5c9b ldrb r3, [r3, r2] - 800254c: b2db uxtb r3, r3 - 800254e: 001a movs r2, r3 - 8002550: 2328 movs r3, #40 @ 0x28 - 8002552: 4013 ands r3, r2 - 8002554: 2b28 cmp r3, #40 @ 0x28 - 8002556: d000 beq.n 800255a - 8002558: e088 b.n 800266c + 80025b2: 687b ldr r3, [r7, #4] + 80025b4: 2241 movs r2, #65 @ 0x41 + 80025b6: 5c9b ldrb r3, [r3, r2] + 80025b8: b2db uxtb r3, r3 + 80025ba: 001a movs r2, r3 + 80025bc: 2328 movs r3, #40 @ 0x28 + 80025be: 4013 ands r3, r2 + 80025c0: 2b28 cmp r3, #40 @ 0x28 + 80025c2: d000 beq.n 80025c6 + 80025c4: e088 b.n 80026d8 { transferdirection = I2C_GET_DIR(hi2c); - 800255a: 687b ldr r3, [r7, #4] - 800255c: 681b ldr r3, [r3, #0] - 800255e: 699b ldr r3, [r3, #24] - 8002560: 0c1b lsrs r3, r3, #16 - 8002562: b2da uxtb r2, r3 - 8002564: 250f movs r5, #15 - 8002566: 197b adds r3, r7, r5 - 8002568: 2101 movs r1, #1 - 800256a: 400a ands r2, r1 - 800256c: 701a strb r2, [r3, #0] + 80025c6: 687b ldr r3, [r7, #4] + 80025c8: 681b ldr r3, [r3, #0] + 80025ca: 699b ldr r3, [r3, #24] + 80025cc: 0c1b lsrs r3, r3, #16 + 80025ce: b2da uxtb r2, r3 + 80025d0: 250f movs r5, #15 + 80025d2: 197b adds r3, r7, r5 + 80025d4: 2101 movs r1, #1 + 80025d6: 400a ands r2, r1 + 80025d8: 701a strb r2, [r3, #0] slaveaddrcode = I2C_GET_ADDR_MATCH(hi2c); - 800256e: 687b ldr r3, [r7, #4] - 8002570: 681b ldr r3, [r3, #0] - 8002572: 699b ldr r3, [r3, #24] - 8002574: 0c1b lsrs r3, r3, #16 - 8002576: b29a uxth r2, r3 - 8002578: 200c movs r0, #12 - 800257a: 183b adds r3, r7, r0 - 800257c: 21fe movs r1, #254 @ 0xfe - 800257e: 400a ands r2, r1 - 8002580: 801a strh r2, [r3, #0] + 80025da: 687b ldr r3, [r7, #4] + 80025dc: 681b ldr r3, [r3, #0] + 80025de: 699b ldr r3, [r3, #24] + 80025e0: 0c1b lsrs r3, r3, #16 + 80025e2: b29a uxth r2, r3 + 80025e4: 200c movs r0, #12 + 80025e6: 183b adds r3, r7, r0 + 80025e8: 21fe movs r1, #254 @ 0xfe + 80025ea: 400a ands r2, r1 + 80025ec: 801a strh r2, [r3, #0] ownadd1code = I2C_GET_OWN_ADDRESS1(hi2c); - 8002582: 687b ldr r3, [r7, #4] - 8002584: 681b ldr r3, [r3, #0] - 8002586: 689b ldr r3, [r3, #8] - 8002588: b29a uxth r2, r3 - 800258a: 240a movs r4, #10 - 800258c: 193b adds r3, r7, r4 - 800258e: 0592 lsls r2, r2, #22 - 8002590: 0d92 lsrs r2, r2, #22 - 8002592: 801a strh r2, [r3, #0] + 80025ee: 687b ldr r3, [r7, #4] + 80025f0: 681b ldr r3, [r3, #0] + 80025f2: 689b ldr r3, [r3, #8] + 80025f4: b29a uxth r2, r3 + 80025f6: 240a movs r4, #10 + 80025f8: 193b adds r3, r7, r4 + 80025fa: 0592 lsls r2, r2, #22 + 80025fc: 0d92 lsrs r2, r2, #22 + 80025fe: 801a strh r2, [r3, #0] ownadd2code = I2C_GET_OWN_ADDRESS2(hi2c); - 8002594: 687b ldr r3, [r7, #4] - 8002596: 681b ldr r3, [r3, #0] - 8002598: 68db ldr r3, [r3, #12] - 800259a: b29a uxth r2, r3 - 800259c: 2308 movs r3, #8 - 800259e: 18fb adds r3, r7, r3 - 80025a0: 21fe movs r1, #254 @ 0xfe - 80025a2: 400a ands r2, r1 - 80025a4: 801a strh r2, [r3, #0] + 8002600: 687b ldr r3, [r7, #4] + 8002602: 681b ldr r3, [r3, #0] + 8002604: 68db ldr r3, [r3, #12] + 8002606: b29a uxth r2, r3 + 8002608: 2308 movs r3, #8 + 800260a: 18fb adds r3, r7, r3 + 800260c: 21fe movs r1, #254 @ 0xfe + 800260e: 400a ands r2, r1 + 8002610: 801a strh r2, [r3, #0] /* If 10bits addressing mode is selected */ if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) - 80025a6: 687b ldr r3, [r7, #4] - 80025a8: 68db ldr r3, [r3, #12] - 80025aa: 2b02 cmp r3, #2 - 80025ac: d148 bne.n 8002640 + 8002612: 687b ldr r3, [r7, #4] + 8002614: 68db ldr r3, [r3, #12] + 8002616: 2b02 cmp r3, #2 + 8002618: d148 bne.n 80026ac { if ((slaveaddrcode & SLAVE_ADDR_MSK) == ((ownadd1code >> SLAVE_ADDR_SHIFT) & SLAVE_ADDR_MSK)) - 80025ae: 0021 movs r1, r4 - 80025b0: 187b adds r3, r7, r1 - 80025b2: 881b ldrh r3, [r3, #0] - 80025b4: 09db lsrs r3, r3, #7 - 80025b6: b29a uxth r2, r3 - 80025b8: 183b adds r3, r7, r0 - 80025ba: 881b ldrh r3, [r3, #0] - 80025bc: 4053 eors r3, r2 - 80025be: b29b uxth r3, r3 - 80025c0: 001a movs r2, r3 - 80025c2: 2306 movs r3, #6 - 80025c4: 4013 ands r3, r2 - 80025c6: d120 bne.n 800260a + 800261a: 0021 movs r1, r4 + 800261c: 187b adds r3, r7, r1 + 800261e: 881b ldrh r3, [r3, #0] + 8002620: 09db lsrs r3, r3, #7 + 8002622: b29a uxth r2, r3 + 8002624: 183b adds r3, r7, r0 + 8002626: 881b ldrh r3, [r3, #0] + 8002628: 4053 eors r3, r2 + 800262a: b29b uxth r3, r3 + 800262c: 001a movs r2, r3 + 800262e: 2306 movs r3, #6 + 8002630: 4013 ands r3, r2 + 8002632: d120 bne.n 8002676 { slaveaddrcode = ownadd1code; - 80025c8: 183b adds r3, r7, r0 - 80025ca: 187a adds r2, r7, r1 - 80025cc: 8812 ldrh r2, [r2, #0] - 80025ce: 801a strh r2, [r3, #0] + 8002634: 183b adds r3, r7, r0 + 8002636: 187a adds r2, r7, r1 + 8002638: 8812 ldrh r2, [r2, #0] + 800263a: 801a strh r2, [r3, #0] hi2c->AddrEventCount++; - 80025d0: 687b ldr r3, [r7, #4] - 80025d2: 6c9b ldr r3, [r3, #72] @ 0x48 - 80025d4: 1c5a adds r2, r3, #1 - 80025d6: 687b ldr r3, [r7, #4] - 80025d8: 649a str r2, [r3, #72] @ 0x48 + 800263c: 687b ldr r3, [r7, #4] + 800263e: 6c9b ldr r3, [r3, #72] @ 0x48 + 8002640: 1c5a adds r2, r3, #1 + 8002642: 687b ldr r3, [r7, #4] + 8002644: 649a str r2, [r3, #72] @ 0x48 if (hi2c->AddrEventCount == 2U) - 80025da: 687b ldr r3, [r7, #4] - 80025dc: 6c9b ldr r3, [r3, #72] @ 0x48 - 80025de: 2b02 cmp r3, #2 - 80025e0: d14c bne.n 800267c + 8002646: 687b ldr r3, [r7, #4] + 8002648: 6c9b ldr r3, [r3, #72] @ 0x48 + 800264a: 2b02 cmp r3, #2 + 800264c: d14c bne.n 80026e8 { /* Reset Address Event counter */ hi2c->AddrEventCount = 0U; - 80025e2: 687b ldr r3, [r7, #4] - 80025e4: 2200 movs r2, #0 - 80025e6: 649a str r2, [r3, #72] @ 0x48 + 800264e: 687b ldr r3, [r7, #4] + 8002650: 2200 movs r2, #0 + 8002652: 649a str r2, [r3, #72] @ 0x48 /* Clear ADDR flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); - 80025e8: 687b ldr r3, [r7, #4] - 80025ea: 681b ldr r3, [r3, #0] - 80025ec: 2208 movs r2, #8 - 80025ee: 61da str r2, [r3, #28] + 8002654: 687b ldr r3, [r7, #4] + 8002656: 681b ldr r3, [r3, #0] + 8002658: 2208 movs r2, #8 + 800265a: 61da str r2, [r3, #28] /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 80025f0: 687b ldr r3, [r7, #4] - 80025f2: 2240 movs r2, #64 @ 0x40 - 80025f4: 2100 movs r1, #0 - 80025f6: 5499 strb r1, [r3, r2] + 800265c: 687b ldr r3, [r7, #4] + 800265e: 2240 movs r2, #64 @ 0x40 + 8002660: 2100 movs r1, #0 + 8002662: 5499 strb r1, [r3, r2] /* Call Slave Addr callback */ #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); #else HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); - 80025f8: 183b adds r3, r7, r0 - 80025fa: 881a ldrh r2, [r3, #0] - 80025fc: 197b adds r3, r7, r5 - 80025fe: 7819 ldrb r1, [r3, #0] - 8002600: 687b ldr r3, [r7, #4] - 8002602: 0018 movs r0, r3 - 8002604: f7fe f88e bl 8000724 + 8002664: 183b adds r3, r7, r0 + 8002666: 881a ldrh r2, [r3, #0] + 8002668: 197b adds r3, r7, r5 + 800266a: 7819 ldrb r1, [r3, #0] + 800266c: 687b ldr r3, [r7, #4] + 800266e: 0018 movs r0, r3 + 8002670: f7fe f880 bl 8000774 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); /* Process Unlocked */ __HAL_UNLOCK(hi2c); } } - 8002608: e038 b.n 800267c + 8002674: e038 b.n 80026e8 slaveaddrcode = ownadd2code; - 800260a: 240c movs r4, #12 - 800260c: 193b adds r3, r7, r4 - 800260e: 2208 movs r2, #8 - 8002610: 18ba adds r2, r7, r2 - 8002612: 8812 ldrh r2, [r2, #0] - 8002614: 801a strh r2, [r3, #0] + 8002676: 240c movs r4, #12 + 8002678: 193b adds r3, r7, r4 + 800267a: 2208 movs r2, #8 + 800267c: 18ba adds r2, r7, r2 + 800267e: 8812 ldrh r2, [r2, #0] + 8002680: 801a strh r2, [r3, #0] I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); - 8002616: 2380 movs r3, #128 @ 0x80 - 8002618: 021a lsls r2, r3, #8 - 800261a: 687b ldr r3, [r7, #4] - 800261c: 0011 movs r1, r2 - 800261e: 0018 movs r0, r3 - 8002620: f000 fdb4 bl 800318c + 8002682: 2380 movs r3, #128 @ 0x80 + 8002684: 021a lsls r2, r3, #8 + 8002686: 687b ldr r3, [r7, #4] + 8002688: 0011 movs r1, r2 + 800268a: 0018 movs r0, r3 + 800268c: f000 fdb4 bl 80031f8 __HAL_UNLOCK(hi2c); - 8002624: 687b ldr r3, [r7, #4] - 8002626: 2240 movs r2, #64 @ 0x40 - 8002628: 2100 movs r1, #0 - 800262a: 5499 strb r1, [r3, r2] + 8002690: 687b ldr r3, [r7, #4] + 8002692: 2240 movs r2, #64 @ 0x40 + 8002694: 2100 movs r1, #0 + 8002696: 5499 strb r1, [r3, r2] HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); - 800262c: 193b adds r3, r7, r4 - 800262e: 881a ldrh r2, [r3, #0] - 8002630: 230f movs r3, #15 - 8002632: 18fb adds r3, r7, r3 - 8002634: 7819 ldrb r1, [r3, #0] - 8002636: 687b ldr r3, [r7, #4] - 8002638: 0018 movs r0, r3 - 800263a: f7fe f873 bl 8000724 + 8002698: 193b adds r3, r7, r4 + 800269a: 881a ldrh r2, [r3, #0] + 800269c: 230f movs r3, #15 + 800269e: 18fb adds r3, r7, r3 + 80026a0: 7819 ldrb r1, [r3, #0] + 80026a2: 687b ldr r3, [r7, #4] + 80026a4: 0018 movs r0, r3 + 80026a6: f7fe f865 bl 8000774 } - 800263e: e01d b.n 800267c + 80026aa: e01d b.n 80026e8 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); - 8002640: 2380 movs r3, #128 @ 0x80 - 8002642: 021a lsls r2, r3, #8 - 8002644: 687b ldr r3, [r7, #4] - 8002646: 0011 movs r1, r2 - 8002648: 0018 movs r0, r3 - 800264a: f000 fd9f bl 800318c + 80026ac: 2380 movs r3, #128 @ 0x80 + 80026ae: 021a lsls r2, r3, #8 + 80026b0: 687b ldr r3, [r7, #4] + 80026b2: 0011 movs r1, r2 + 80026b4: 0018 movs r0, r3 + 80026b6: f000 fd9f bl 80031f8 __HAL_UNLOCK(hi2c); - 800264e: 687b ldr r3, [r7, #4] - 8002650: 2240 movs r2, #64 @ 0x40 - 8002652: 2100 movs r1, #0 - 8002654: 5499 strb r1, [r3, r2] + 80026ba: 687b ldr r3, [r7, #4] + 80026bc: 2240 movs r2, #64 @ 0x40 + 80026be: 2100 movs r1, #0 + 80026c0: 5499 strb r1, [r3, r2] HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); - 8002656: 230c movs r3, #12 - 8002658: 18fb adds r3, r7, r3 - 800265a: 881a ldrh r2, [r3, #0] - 800265c: 230f movs r3, #15 - 800265e: 18fb adds r3, r7, r3 - 8002660: 7819 ldrb r1, [r3, #0] - 8002662: 687b ldr r3, [r7, #4] - 8002664: 0018 movs r0, r3 - 8002666: f7fe f85d bl 8000724 + 80026c2: 230c movs r3, #12 + 80026c4: 18fb adds r3, r7, r3 + 80026c6: 881a ldrh r2, [r3, #0] + 80026c8: 230f movs r3, #15 + 80026ca: 18fb adds r3, r7, r3 + 80026cc: 7819 ldrb r1, [r3, #0] + 80026ce: 687b ldr r3, [r7, #4] + 80026d0: 0018 movs r0, r3 + 80026d2: f7fe f84f bl 8000774 } - 800266a: e007 b.n 800267c + 80026d6: e007 b.n 80026e8 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); - 800266c: 687b ldr r3, [r7, #4] - 800266e: 681b ldr r3, [r3, #0] - 8002670: 2208 movs r2, #8 - 8002672: 61da str r2, [r3, #28] + 80026d8: 687b ldr r3, [r7, #4] + 80026da: 681b ldr r3, [r3, #0] + 80026dc: 2208 movs r2, #8 + 80026de: 61da str r2, [r3, #28] __HAL_UNLOCK(hi2c); - 8002674: 687b ldr r3, [r7, #4] - 8002676: 2240 movs r2, #64 @ 0x40 - 8002678: 2100 movs r1, #0 - 800267a: 5499 strb r1, [r3, r2] + 80026e0: 687b ldr r3, [r7, #4] + 80026e2: 2240 movs r2, #64 @ 0x40 + 80026e4: 2100 movs r1, #0 + 80026e6: 5499 strb r1, [r3, r2] } - 800267c: 46c0 nop @ (mov r8, r8) - 800267e: 46bd mov sp, r7 - 8002680: b004 add sp, #16 - 8002682: bdb0 pop {r4, r5, r7, pc} + 80026e8: 46c0 nop @ (mov r8, r8) + 80026ea: 46bd mov sp, r7 + 80026ec: b004 add sp, #16 + 80026ee: bdb0 pop {r4, r5, r7, pc} -08002684 : +080026f0 : * @brief I2C Master sequential complete process. * @param hi2c I2C handle. * @retval None */ static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c) { - 8002684: b580 push {r7, lr} - 8002686: b082 sub sp, #8 - 8002688: af00 add r7, sp, #0 - 800268a: 6078 str r0, [r7, #4] + 80026f0: b580 push {r7, lr} + 80026f2: b082 sub sp, #8 + 80026f4: af00 add r7, sp, #0 + 80026f6: 6078 str r0, [r7, #4] /* Reset I2C handle mode */ hi2c->Mode = HAL_I2C_MODE_NONE; - 800268c: 687b ldr r3, [r7, #4] - 800268e: 2242 movs r2, #66 @ 0x42 - 8002690: 2100 movs r1, #0 - 8002692: 5499 strb r1, [r3, r2] + 80026f8: 687b ldr r3, [r7, #4] + 80026fa: 2242 movs r2, #66 @ 0x42 + 80026fc: 2100 movs r1, #0 + 80026fe: 5499 strb r1, [r3, r2] /* No Generate Stop, to permit restart mode */ /* The stop will be done at the end of transfer, when I2C_AUTOEND_MODE enable */ if (hi2c->State == HAL_I2C_STATE_BUSY_TX) - 8002694: 687b ldr r3, [r7, #4] - 8002696: 2241 movs r2, #65 @ 0x41 - 8002698: 5c9b ldrb r3, [r3, r2] - 800269a: b2db uxtb r3, r3 - 800269c: 2b21 cmp r3, #33 @ 0x21 - 800269e: d117 bne.n 80026d0 + 8002700: 687b ldr r3, [r7, #4] + 8002702: 2241 movs r2, #65 @ 0x41 + 8002704: 5c9b ldrb r3, [r3, r2] + 8002706: b2db uxtb r3, r3 + 8002708: 2b21 cmp r3, #33 @ 0x21 + 800270a: d117 bne.n 800273c { hi2c->State = HAL_I2C_STATE_READY; - 80026a0: 687b ldr r3, [r7, #4] - 80026a2: 2241 movs r2, #65 @ 0x41 - 80026a4: 2120 movs r1, #32 - 80026a6: 5499 strb r1, [r3, r2] + 800270c: 687b ldr r3, [r7, #4] + 800270e: 2241 movs r2, #65 @ 0x41 + 8002710: 2120 movs r1, #32 + 8002712: 5499 strb r1, [r3, r2] hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; - 80026a8: 687b ldr r3, [r7, #4] - 80026aa: 2211 movs r2, #17 - 80026ac: 631a str r2, [r3, #48] @ 0x30 + 8002714: 687b ldr r3, [r7, #4] + 8002716: 2211 movs r2, #17 + 8002718: 631a str r2, [r3, #48] @ 0x30 hi2c->XferISR = NULL; - 80026ae: 687b ldr r3, [r7, #4] - 80026b0: 2200 movs r2, #0 - 80026b2: 635a str r2, [r3, #52] @ 0x34 + 800271a: 687b ldr r3, [r7, #4] + 800271c: 2200 movs r2, #0 + 800271e: 635a str r2, [r3, #52] @ 0x34 /* Disable Interrupts */ I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); - 80026b4: 687b ldr r3, [r7, #4] - 80026b6: 2101 movs r1, #1 - 80026b8: 0018 movs r0, r3 - 80026ba: f000 fd67 bl 800318c + 8002720: 687b ldr r3, [r7, #4] + 8002722: 2101 movs r1, #1 + 8002724: 0018 movs r0, r3 + 8002726: f000 fd67 bl 80031f8 /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 80026be: 687b ldr r3, [r7, #4] - 80026c0: 2240 movs r2, #64 @ 0x40 - 80026c2: 2100 movs r1, #0 - 80026c4: 5499 strb r1, [r3, r2] + 800272a: 687b ldr r3, [r7, #4] + 800272c: 2240 movs r2, #64 @ 0x40 + 800272e: 2100 movs r1, #0 + 8002730: 5499 strb r1, [r3, r2] /* Call the corresponding callback to inform upper layer of End of Transfer */ #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) hi2c->MasterTxCpltCallback(hi2c); #else HAL_I2C_MasterTxCpltCallback(hi2c); - 80026c6: 687b ldr r3, [r7, #4] - 80026c8: 0018 movs r0, r3 - 80026ca: f7ff faf6 bl 8001cba + 8002732: 687b ldr r3, [r7, #4] + 8002734: 0018 movs r0, r3 + 8002736: f7ff faf6 bl 8001d26 hi2c->MasterRxCpltCallback(hi2c); #else HAL_I2C_MasterRxCpltCallback(hi2c); #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ } } - 80026ce: e016 b.n 80026fe + 800273a: e016 b.n 800276a hi2c->State = HAL_I2C_STATE_READY; - 80026d0: 687b ldr r3, [r7, #4] - 80026d2: 2241 movs r2, #65 @ 0x41 - 80026d4: 2120 movs r1, #32 - 80026d6: 5499 strb r1, [r3, r2] + 800273c: 687b ldr r3, [r7, #4] + 800273e: 2241 movs r2, #65 @ 0x41 + 8002740: 2120 movs r1, #32 + 8002742: 5499 strb r1, [r3, r2] hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; - 80026d8: 687b ldr r3, [r7, #4] - 80026da: 2212 movs r2, #18 - 80026dc: 631a str r2, [r3, #48] @ 0x30 + 8002744: 687b ldr r3, [r7, #4] + 8002746: 2212 movs r2, #18 + 8002748: 631a str r2, [r3, #48] @ 0x30 hi2c->XferISR = NULL; - 80026de: 687b ldr r3, [r7, #4] - 80026e0: 2200 movs r2, #0 - 80026e2: 635a str r2, [r3, #52] @ 0x34 + 800274a: 687b ldr r3, [r7, #4] + 800274c: 2200 movs r2, #0 + 800274e: 635a str r2, [r3, #52] @ 0x34 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); - 80026e4: 687b ldr r3, [r7, #4] - 80026e6: 2102 movs r1, #2 - 80026e8: 0018 movs r0, r3 - 80026ea: f000 fd4f bl 800318c + 8002750: 687b ldr r3, [r7, #4] + 8002752: 2102 movs r1, #2 + 8002754: 0018 movs r0, r3 + 8002756: f000 fd4f bl 80031f8 __HAL_UNLOCK(hi2c); - 80026ee: 687b ldr r3, [r7, #4] - 80026f0: 2240 movs r2, #64 @ 0x40 - 80026f2: 2100 movs r1, #0 - 80026f4: 5499 strb r1, [r3, r2] + 800275a: 687b ldr r3, [r7, #4] + 800275c: 2240 movs r2, #64 @ 0x40 + 800275e: 2100 movs r1, #0 + 8002760: 5499 strb r1, [r3, r2] HAL_I2C_MasterRxCpltCallback(hi2c); - 80026f6: 687b ldr r3, [r7, #4] - 80026f8: 0018 movs r0, r3 - 80026fa: f7ff fae6 bl 8001cca + 8002762: 687b ldr r3, [r7, #4] + 8002764: 0018 movs r0, r3 + 8002766: f7ff fae6 bl 8001d36 } - 80026fe: 46c0 nop @ (mov r8, r8) - 8002700: 46bd mov sp, r7 - 8002702: b002 add sp, #8 - 8002704: bd80 pop {r7, pc} + 800276a: 46c0 nop @ (mov r8, r8) + 800276c: 46bd mov sp, r7 + 800276e: b002 add sp, #8 + 8002770: bd80 pop {r7, pc} ... -08002708 : +08002774 : * @brief I2C Slave sequential complete process. * @param hi2c I2C handle. * @retval None */ static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c) { - 8002708: b580 push {r7, lr} - 800270a: b084 sub sp, #16 - 800270c: af00 add r7, sp, #0 - 800270e: 6078 str r0, [r7, #4] + 8002774: b580 push {r7, lr} + 8002776: b084 sub sp, #16 + 8002778: af00 add r7, sp, #0 + 800277a: 6078 str r0, [r7, #4] uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); - 8002710: 687b ldr r3, [r7, #4] - 8002712: 681b ldr r3, [r3, #0] - 8002714: 681b ldr r3, [r3, #0] - 8002716: 60fb str r3, [r7, #12] + 800277c: 687b ldr r3, [r7, #4] + 800277e: 681b ldr r3, [r3, #0] + 8002780: 681b ldr r3, [r3, #0] + 8002782: 60fb str r3, [r7, #12] /* Reset I2C handle mode */ hi2c->Mode = HAL_I2C_MODE_NONE; - 8002718: 687b ldr r3, [r7, #4] - 800271a: 2242 movs r2, #66 @ 0x42 - 800271c: 2100 movs r1, #0 - 800271e: 5499 strb r1, [r3, r2] + 8002784: 687b ldr r3, [r7, #4] + 8002786: 2242 movs r2, #66 @ 0x42 + 8002788: 2100 movs r1, #0 + 800278a: 5499 strb r1, [r3, r2] /* If a DMA is ongoing, Update handle size context */ if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET) - 8002720: 68fa ldr r2, [r7, #12] - 8002722: 2380 movs r3, #128 @ 0x80 - 8002724: 01db lsls r3, r3, #7 - 8002726: 4013 ands r3, r2 - 8002728: d008 beq.n 800273c + 800278c: 68fa ldr r2, [r7, #12] + 800278e: 2380 movs r3, #128 @ 0x80 + 8002790: 01db lsls r3, r3, #7 + 8002792: 4013 ands r3, r2 + 8002794: d008 beq.n 80027a8 { /* Disable DMA Request */ hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; - 800272a: 687b ldr r3, [r7, #4] - 800272c: 681b ldr r3, [r3, #0] - 800272e: 681a ldr r2, [r3, #0] - 8002730: 687b ldr r3, [r7, #4] - 8002732: 681b ldr r3, [r3, #0] - 8002734: 4924 ldr r1, [pc, #144] @ (80027c8 ) - 8002736: 400a ands r2, r1 - 8002738: 601a str r2, [r3, #0] - 800273a: e00c b.n 8002756 + 8002796: 687b ldr r3, [r7, #4] + 8002798: 681b ldr r3, [r3, #0] + 800279a: 681a ldr r2, [r3, #0] + 800279c: 687b ldr r3, [r7, #4] + 800279e: 681b ldr r3, [r3, #0] + 80027a0: 4924 ldr r1, [pc, #144] @ (8002834 ) + 80027a2: 400a ands r2, r1 + 80027a4: 601a str r2, [r3, #0] + 80027a6: e00c b.n 80027c2 } else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET) - 800273c: 68fa ldr r2, [r7, #12] - 800273e: 2380 movs r3, #128 @ 0x80 - 8002740: 021b lsls r3, r3, #8 - 8002742: 4013 ands r3, r2 - 8002744: d007 beq.n 8002756 + 80027a8: 68fa ldr r2, [r7, #12] + 80027aa: 2380 movs r3, #128 @ 0x80 + 80027ac: 021b lsls r3, r3, #8 + 80027ae: 4013 ands r3, r2 + 80027b0: d007 beq.n 80027c2 { /* Disable DMA Request */ hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; - 8002746: 687b ldr r3, [r7, #4] - 8002748: 681b ldr r3, [r3, #0] - 800274a: 681a ldr r2, [r3, #0] - 800274c: 687b ldr r3, [r7, #4] - 800274e: 681b ldr r3, [r3, #0] - 8002750: 491e ldr r1, [pc, #120] @ (80027cc ) - 8002752: 400a ands r2, r1 - 8002754: 601a str r2, [r3, #0] + 80027b2: 687b ldr r3, [r7, #4] + 80027b4: 681b ldr r3, [r3, #0] + 80027b6: 681a ldr r2, [r3, #0] + 80027b8: 687b ldr r3, [r7, #4] + 80027ba: 681b ldr r3, [r3, #0] + 80027bc: 491e ldr r1, [pc, #120] @ (8002838 ) + 80027be: 400a ands r2, r1 + 80027c0: 601a str r2, [r3, #0] else { /* Do nothing */ } if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) - 8002756: 687b ldr r3, [r7, #4] - 8002758: 2241 movs r2, #65 @ 0x41 - 800275a: 5c9b ldrb r3, [r3, r2] - 800275c: b2db uxtb r3, r3 - 800275e: 2b29 cmp r3, #41 @ 0x29 - 8002760: d114 bne.n 800278c + 80027c2: 687b ldr r3, [r7, #4] + 80027c4: 2241 movs r2, #65 @ 0x41 + 80027c6: 5c9b ldrb r3, [r3, r2] + 80027c8: b2db uxtb r3, r3 + 80027ca: 2b29 cmp r3, #41 @ 0x29 + 80027cc: d114 bne.n 80027f8 { /* Remove HAL_I2C_STATE_SLAVE_BUSY_TX, keep only HAL_I2C_STATE_LISTEN */ hi2c->State = HAL_I2C_STATE_LISTEN; - 8002762: 687b ldr r3, [r7, #4] - 8002764: 2241 movs r2, #65 @ 0x41 - 8002766: 2128 movs r1, #40 @ 0x28 - 8002768: 5499 strb r1, [r3, r2] + 80027ce: 687b ldr r3, [r7, #4] + 80027d0: 2241 movs r2, #65 @ 0x41 + 80027d2: 2128 movs r1, #40 @ 0x28 + 80027d4: 5499 strb r1, [r3, r2] hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; - 800276a: 687b ldr r3, [r7, #4] - 800276c: 2221 movs r2, #33 @ 0x21 - 800276e: 631a str r2, [r3, #48] @ 0x30 + 80027d6: 687b ldr r3, [r7, #4] + 80027d8: 2221 movs r2, #33 @ 0x21 + 80027da: 631a str r2, [r3, #48] @ 0x30 /* Disable Interrupts */ I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); - 8002770: 687b ldr r3, [r7, #4] - 8002772: 2101 movs r1, #1 - 8002774: 0018 movs r0, r3 - 8002776: f000 fd09 bl 800318c + 80027dc: 687b ldr r3, [r7, #4] + 80027de: 2101 movs r1, #1 + 80027e0: 0018 movs r0, r3 + 80027e2: f000 fd09 bl 80031f8 /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 800277a: 687b ldr r3, [r7, #4] - 800277c: 2240 movs r2, #64 @ 0x40 - 800277e: 2100 movs r1, #0 - 8002780: 5499 strb r1, [r3, r2] + 80027e6: 687b ldr r3, [r7, #4] + 80027e8: 2240 movs r2, #64 @ 0x40 + 80027ea: 2100 movs r1, #0 + 80027ec: 5499 strb r1, [r3, r2] /* Call the corresponding callback to inform upper layer of End of Transfer */ #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) hi2c->SlaveTxCpltCallback(hi2c); #else HAL_I2C_SlaveTxCpltCallback(hi2c); - 8002782: 687b ldr r3, [r7, #4] - 8002784: 0018 movs r0, r3 - 8002786: f7fe f903 bl 8000990 + 80027ee: 687b ldr r3, [r7, #4] + 80027f0: 0018 movs r0, r3 + 80027f2: f7fe f8f5 bl 80009e0 } else { /* Nothing to do */ } } - 800278a: e019 b.n 80027c0 + 80027f6: e019 b.n 800282c else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) - 800278c: 687b ldr r3, [r7, #4] - 800278e: 2241 movs r2, #65 @ 0x41 - 8002790: 5c9b ldrb r3, [r3, r2] - 8002792: b2db uxtb r3, r3 - 8002794: 2b2a cmp r3, #42 @ 0x2a - 8002796: d113 bne.n 80027c0 + 80027f8: 687b ldr r3, [r7, #4] + 80027fa: 2241 movs r2, #65 @ 0x41 + 80027fc: 5c9b ldrb r3, [r3, r2] + 80027fe: b2db uxtb r3, r3 + 8002800: 2b2a cmp r3, #42 @ 0x2a + 8002802: d113 bne.n 800282c hi2c->State = HAL_I2C_STATE_LISTEN; - 8002798: 687b ldr r3, [r7, #4] - 800279a: 2241 movs r2, #65 @ 0x41 - 800279c: 2128 movs r1, #40 @ 0x28 - 800279e: 5499 strb r1, [r3, r2] + 8002804: 687b ldr r3, [r7, #4] + 8002806: 2241 movs r2, #65 @ 0x41 + 8002808: 2128 movs r1, #40 @ 0x28 + 800280a: 5499 strb r1, [r3, r2] hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; - 80027a0: 687b ldr r3, [r7, #4] - 80027a2: 2222 movs r2, #34 @ 0x22 - 80027a4: 631a str r2, [r3, #48] @ 0x30 + 800280c: 687b ldr r3, [r7, #4] + 800280e: 2222 movs r2, #34 @ 0x22 + 8002810: 631a str r2, [r3, #48] @ 0x30 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); - 80027a6: 687b ldr r3, [r7, #4] - 80027a8: 2102 movs r1, #2 - 80027aa: 0018 movs r0, r3 - 80027ac: f000 fcee bl 800318c + 8002812: 687b ldr r3, [r7, #4] + 8002814: 2102 movs r1, #2 + 8002816: 0018 movs r0, r3 + 8002818: f000 fcee bl 80031f8 __HAL_UNLOCK(hi2c); - 80027b0: 687b ldr r3, [r7, #4] - 80027b2: 2240 movs r2, #64 @ 0x40 - 80027b4: 2100 movs r1, #0 - 80027b6: 5499 strb r1, [r3, r2] + 800281c: 687b ldr r3, [r7, #4] + 800281e: 2240 movs r2, #64 @ 0x40 + 8002820: 2100 movs r1, #0 + 8002822: 5499 strb r1, [r3, r2] HAL_I2C_SlaveRxCpltCallback(hi2c); - 80027b8: 687b ldr r3, [r7, #4] - 80027ba: 0018 movs r0, r3 - 80027bc: f7fe f898 bl 80008f0 + 8002824: 687b ldr r3, [r7, #4] + 8002826: 0018 movs r0, r3 + 8002828: f7fe f88a bl 8000940 } - 80027c0: 46c0 nop @ (mov r8, r8) - 80027c2: 46bd mov sp, r7 - 80027c4: b004 add sp, #16 - 80027c6: bd80 pop {r7, pc} - 80027c8: ffffbfff .word 0xffffbfff - 80027cc: ffff7fff .word 0xffff7fff + 800282c: 46c0 nop @ (mov r8, r8) + 800282e: 46bd mov sp, r7 + 8002830: b004 add sp, #16 + 8002832: bd80 pop {r7, pc} + 8002834: ffffbfff .word 0xffffbfff + 8002838: ffff7fff .word 0xffff7fff -080027d0 : +0800283c : * @param hi2c I2C handle. * @param ITFlags Interrupt flags to handle. * @retval None */ static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) { - 80027d0: b580 push {r7, lr} - 80027d2: b086 sub sp, #24 - 80027d4: af00 add r7, sp, #0 - 80027d6: 6078 str r0, [r7, #4] - 80027d8: 6039 str r1, [r7, #0] + 800283c: b580 push {r7, lr} + 800283e: b086 sub sp, #24 + 8002840: af00 add r7, sp, #0 + 8002842: 6078 str r0, [r7, #4] + 8002844: 6039 str r1, [r7, #0] uint32_t tmperror; uint32_t tmpITFlags = ITFlags; - 80027da: 683b ldr r3, [r7, #0] - 80027dc: 617b str r3, [r7, #20] + 8002846: 683b ldr r3, [r7, #0] + 8002848: 617b str r3, [r7, #20] __IO uint32_t tmpreg; /* Clear STOP Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); - 80027de: 687b ldr r3, [r7, #4] - 80027e0: 681b ldr r3, [r3, #0] - 80027e2: 2220 movs r2, #32 - 80027e4: 61da str r2, [r3, #28] + 800284a: 687b ldr r3, [r7, #4] + 800284c: 681b ldr r3, [r3, #0] + 800284e: 2220 movs r2, #32 + 8002850: 61da str r2, [r3, #28] /* Disable Interrupts and Store Previous state */ if (hi2c->State == HAL_I2C_STATE_BUSY_TX) - 80027e6: 687b ldr r3, [r7, #4] - 80027e8: 2241 movs r2, #65 @ 0x41 - 80027ea: 5c9b ldrb r3, [r3, r2] - 80027ec: b2db uxtb r3, r3 - 80027ee: 2b21 cmp r3, #33 @ 0x21 - 80027f0: d108 bne.n 8002804 + 8002852: 687b ldr r3, [r7, #4] + 8002854: 2241 movs r2, #65 @ 0x41 + 8002856: 5c9b ldrb r3, [r3, r2] + 8002858: b2db uxtb r3, r3 + 800285a: 2b21 cmp r3, #33 @ 0x21 + 800285c: d108 bne.n 8002870 { I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); - 80027f2: 687b ldr r3, [r7, #4] - 80027f4: 2101 movs r1, #1 - 80027f6: 0018 movs r0, r3 - 80027f8: f000 fcc8 bl 800318c + 800285e: 687b ldr r3, [r7, #4] + 8002860: 2101 movs r1, #1 + 8002862: 0018 movs r0, r3 + 8002864: f000 fcc8 bl 80031f8 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; - 80027fc: 687b ldr r3, [r7, #4] - 80027fe: 2211 movs r2, #17 - 8002800: 631a str r2, [r3, #48] @ 0x30 - 8002802: e00d b.n 8002820 + 8002868: 687b ldr r3, [r7, #4] + 800286a: 2211 movs r2, #17 + 800286c: 631a str r2, [r3, #48] @ 0x30 + 800286e: e00d b.n 800288c } else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) - 8002804: 687b ldr r3, [r7, #4] - 8002806: 2241 movs r2, #65 @ 0x41 - 8002808: 5c9b ldrb r3, [r3, r2] - 800280a: b2db uxtb r3, r3 - 800280c: 2b22 cmp r3, #34 @ 0x22 - 800280e: d107 bne.n 8002820 + 8002870: 687b ldr r3, [r7, #4] + 8002872: 2241 movs r2, #65 @ 0x41 + 8002874: 5c9b ldrb r3, [r3, r2] + 8002876: b2db uxtb r3, r3 + 8002878: 2b22 cmp r3, #34 @ 0x22 + 800287a: d107 bne.n 800288c { I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); - 8002810: 687b ldr r3, [r7, #4] - 8002812: 2102 movs r1, #2 - 8002814: 0018 movs r0, r3 - 8002816: f000 fcb9 bl 800318c + 800287c: 687b ldr r3, [r7, #4] + 800287e: 2102 movs r1, #2 + 8002880: 0018 movs r0, r3 + 8002882: f000 fcb9 bl 80031f8 hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; - 800281a: 687b ldr r3, [r7, #4] - 800281c: 2212 movs r2, #18 - 800281e: 631a str r2, [r3, #48] @ 0x30 + 8002886: 687b ldr r3, [r7, #4] + 8002888: 2212 movs r2, #18 + 800288a: 631a str r2, [r3, #48] @ 0x30 { /* Do nothing */ } /* Clear Configuration Register 2 */ I2C_RESET_CR2(hi2c); - 8002820: 687b ldr r3, [r7, #4] - 8002822: 681b ldr r3, [r3, #0] - 8002824: 685a ldr r2, [r3, #4] - 8002826: 687b ldr r3, [r7, #4] - 8002828: 681b ldr r3, [r3, #0] - 800282a: 494e ldr r1, [pc, #312] @ (8002964 ) - 800282c: 400a ands r2, r1 - 800282e: 605a str r2, [r3, #4] + 800288c: 687b ldr r3, [r7, #4] + 800288e: 681b ldr r3, [r3, #0] + 8002890: 685a ldr r2, [r3, #4] + 8002892: 687b ldr r3, [r7, #4] + 8002894: 681b ldr r3, [r3, #0] + 8002896: 494e ldr r1, [pc, #312] @ (80029d0 ) + 8002898: 400a ands r2, r1 + 800289a: 605a str r2, [r3, #4] /* Reset handle parameters */ hi2c->XferISR = NULL; - 8002830: 687b ldr r3, [r7, #4] - 8002832: 2200 movs r2, #0 - 8002834: 635a str r2, [r3, #52] @ 0x34 + 800289c: 687b ldr r3, [r7, #4] + 800289e: 2200 movs r2, #0 + 80028a0: 635a str r2, [r3, #52] @ 0x34 hi2c->XferOptions = I2C_NO_OPTION_FRAME; - 8002836: 687b ldr r3, [r7, #4] - 8002838: 4a4b ldr r2, [pc, #300] @ (8002968 ) - 800283a: 62da str r2, [r3, #44] @ 0x2c + 80028a2: 687b ldr r3, [r7, #4] + 80028a4: 4a4b ldr r2, [pc, #300] @ (80029d4 ) + 80028a6: 62da str r2, [r3, #44] @ 0x2c if (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) - 800283c: 697b ldr r3, [r7, #20] - 800283e: 2210 movs r2, #16 - 8002840: 4013 ands r3, r2 - 8002842: d009 beq.n 8002858 + 80028a8: 697b ldr r3, [r7, #20] + 80028aa: 2210 movs r2, #16 + 80028ac: 4013 ands r3, r2 + 80028ae: d009 beq.n 80028c4 { /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8002844: 687b ldr r3, [r7, #4] - 8002846: 681b ldr r3, [r3, #0] - 8002848: 2210 movs r2, #16 - 800284a: 61da str r2, [r3, #28] + 80028b0: 687b ldr r3, [r7, #4] + 80028b2: 681b ldr r3, [r3, #0] + 80028b4: 2210 movs r2, #16 + 80028b6: 61da str r2, [r3, #28] /* Set acknowledge error code */ hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 800284c: 687b ldr r3, [r7, #4] - 800284e: 6c5b ldr r3, [r3, #68] @ 0x44 - 8002850: 2204 movs r2, #4 - 8002852: 431a orrs r2, r3 - 8002854: 687b ldr r3, [r7, #4] - 8002856: 645a str r2, [r3, #68] @ 0x44 + 80028b8: 687b ldr r3, [r7, #4] + 80028ba: 6c5b ldr r3, [r3, #68] @ 0x44 + 80028bc: 2204 movs r2, #4 + 80028be: 431a orrs r2, r3 + 80028c0: 687b ldr r3, [r7, #4] + 80028c2: 645a str r2, [r3, #68] @ 0x44 } /* Fetch Last receive data if any */ if ((hi2c->State == HAL_I2C_STATE_ABORT) && (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET)) - 8002858: 687b ldr r3, [r7, #4] - 800285a: 2241 movs r2, #65 @ 0x41 - 800285c: 5c9b ldrb r3, [r3, r2] - 800285e: b2db uxtb r3, r3 - 8002860: 2b60 cmp r3, #96 @ 0x60 - 8002862: d109 bne.n 8002878 - 8002864: 697b ldr r3, [r7, #20] - 8002866: 2204 movs r2, #4 - 8002868: 4013 ands r3, r2 - 800286a: d005 beq.n 8002878 + 80028c4: 687b ldr r3, [r7, #4] + 80028c6: 2241 movs r2, #65 @ 0x41 + 80028c8: 5c9b ldrb r3, [r3, r2] + 80028ca: b2db uxtb r3, r3 + 80028cc: 2b60 cmp r3, #96 @ 0x60 + 80028ce: d109 bne.n 80028e4 + 80028d0: 697b ldr r3, [r7, #20] + 80028d2: 2204 movs r2, #4 + 80028d4: 4013 ands r3, r2 + 80028d6: d005 beq.n 80028e4 { /* Read data from RXDR */ tmpreg = (uint8_t)hi2c->Instance->RXDR; - 800286c: 687b ldr r3, [r7, #4] - 800286e: 681b ldr r3, [r3, #0] - 8002870: 6a5b ldr r3, [r3, #36] @ 0x24 - 8002872: b2db uxtb r3, r3 - 8002874: 60fb str r3, [r7, #12] + 80028d8: 687b ldr r3, [r7, #4] + 80028da: 681b ldr r3, [r3, #0] + 80028dc: 6a5b ldr r3, [r3, #36] @ 0x24 + 80028de: b2db uxtb r3, r3 + 80028e0: 60fb str r3, [r7, #12] UNUSED(tmpreg); - 8002876: 68fb ldr r3, [r7, #12] + 80028e2: 68fb ldr r3, [r7, #12] } /* Flush TX register */ I2C_Flush_TXDR(hi2c); - 8002878: 687b ldr r3, [r7, #4] - 800287a: 0018 movs r0, r3 - 800287c: f000 fb81 bl 8002f82 + 80028e4: 687b ldr r3, [r7, #4] + 80028e6: 0018 movs r0, r3 + 80028e8: f000 fb81 bl 8002fee /* Store current volatile hi2c->ErrorCode, misra rule */ tmperror = hi2c->ErrorCode; - 8002880: 687b ldr r3, [r7, #4] - 8002882: 6c5b ldr r3, [r3, #68] @ 0x44 - 8002884: 613b str r3, [r7, #16] + 80028ec: 687b ldr r3, [r7, #4] + 80028ee: 6c5b ldr r3, [r3, #68] @ 0x44 + 80028f0: 613b str r3, [r7, #16] /* Call the corresponding callback to inform upper layer of End of Transfer */ if ((hi2c->State == HAL_I2C_STATE_ABORT) || (tmperror != HAL_I2C_ERROR_NONE)) - 8002886: 687b ldr r3, [r7, #4] - 8002888: 2241 movs r2, #65 @ 0x41 - 800288a: 5c9b ldrb r3, [r3, r2] - 800288c: b2db uxtb r3, r3 - 800288e: 2b60 cmp r3, #96 @ 0x60 - 8002890: d002 beq.n 8002898 - 8002892: 693b ldr r3, [r7, #16] - 8002894: 2b00 cmp r3, #0 - 8002896: d007 beq.n 80028a8 + 80028f2: 687b ldr r3, [r7, #4] + 80028f4: 2241 movs r2, #65 @ 0x41 + 80028f6: 5c9b ldrb r3, [r3, r2] + 80028f8: b2db uxtb r3, r3 + 80028fa: 2b60 cmp r3, #96 @ 0x60 + 80028fc: d002 beq.n 8002904 + 80028fe: 693b ldr r3, [r7, #16] + 8002900: 2b00 cmp r3, #0 + 8002902: d007 beq.n 8002914 { /* Call the corresponding callback to inform upper layer of End of Transfer */ I2C_ITError(hi2c, hi2c->ErrorCode); - 8002898: 687b ldr r3, [r7, #4] - 800289a: 6c5a ldr r2, [r3, #68] @ 0x44 - 800289c: 687b ldr r3, [r7, #4] - 800289e: 0011 movs r1, r2 - 80028a0: 0018 movs r0, r3 - 80028a2: f000 fa43 bl 8002d2c + 8002904: 687b ldr r3, [r7, #4] + 8002906: 6c5a ldr r2, [r3, #68] @ 0x44 + 8002908: 687b ldr r3, [r7, #4] + 800290a: 0011 movs r1, r2 + 800290c: 0018 movs r0, r3 + 800290e: f000 fa43 bl 8002d98 } else { /* Nothing to do */ } } - 80028a6: e058 b.n 800295a + 8002912: e058 b.n 80029c6 else if (hi2c->State == HAL_I2C_STATE_BUSY_TX) - 80028a8: 687b ldr r3, [r7, #4] - 80028aa: 2241 movs r2, #65 @ 0x41 - 80028ac: 5c9b ldrb r3, [r3, r2] - 80028ae: b2db uxtb r3, r3 - 80028b0: 2b21 cmp r3, #33 @ 0x21 - 80028b2: d126 bne.n 8002902 + 8002914: 687b ldr r3, [r7, #4] + 8002916: 2241 movs r2, #65 @ 0x41 + 8002918: 5c9b ldrb r3, [r3, r2] + 800291a: b2db uxtb r3, r3 + 800291c: 2b21 cmp r3, #33 @ 0x21 + 800291e: d126 bne.n 800296e hi2c->State = HAL_I2C_STATE_READY; - 80028b4: 687b ldr r3, [r7, #4] - 80028b6: 2241 movs r2, #65 @ 0x41 - 80028b8: 2120 movs r1, #32 - 80028ba: 5499 strb r1, [r3, r2] + 8002920: 687b ldr r3, [r7, #4] + 8002922: 2241 movs r2, #65 @ 0x41 + 8002924: 2120 movs r1, #32 + 8002926: 5499 strb r1, [r3, r2] hi2c->PreviousState = I2C_STATE_NONE; - 80028bc: 687b ldr r3, [r7, #4] - 80028be: 2200 movs r2, #0 - 80028c0: 631a str r2, [r3, #48] @ 0x30 - if (hi2c->Mode == HAL_I2C_MODE_MEM) - 80028c2: 687b ldr r3, [r7, #4] - 80028c4: 2242 movs r2, #66 @ 0x42 - 80028c6: 5c9b ldrb r3, [r3, r2] - 80028c8: b2db uxtb r3, r3 - 80028ca: 2b40 cmp r3, #64 @ 0x40 - 80028cc: d10c bne.n 80028e8 - hi2c->Mode = HAL_I2C_MODE_NONE; - 80028ce: 687b ldr r3, [r7, #4] - 80028d0: 2242 movs r2, #66 @ 0x42 - 80028d2: 2100 movs r1, #0 - 80028d4: 5499 strb r1, [r3, r2] - __HAL_UNLOCK(hi2c); - 80028d6: 687b ldr r3, [r7, #4] - 80028d8: 2240 movs r2, #64 @ 0x40 - 80028da: 2100 movs r1, #0 - 80028dc: 5499 strb r1, [r3, r2] - HAL_I2C_MemTxCpltCallback(hi2c); - 80028de: 687b ldr r3, [r7, #4] - 80028e0: 0018 movs r0, r3 - 80028e2: f7ff f9fa bl 8001cda -} - 80028e6: e038 b.n 800295a - hi2c->Mode = HAL_I2C_MODE_NONE; - 80028e8: 687b ldr r3, [r7, #4] - 80028ea: 2242 movs r2, #66 @ 0x42 - 80028ec: 2100 movs r1, #0 - 80028ee: 5499 strb r1, [r3, r2] - __HAL_UNLOCK(hi2c); - 80028f0: 687b ldr r3, [r7, #4] - 80028f2: 2240 movs r2, #64 @ 0x40 - 80028f4: 2100 movs r1, #0 - 80028f6: 5499 strb r1, [r3, r2] - HAL_I2C_MasterTxCpltCallback(hi2c); - 80028f8: 687b ldr r3, [r7, #4] - 80028fa: 0018 movs r0, r3 - 80028fc: f7ff f9dd bl 8001cba -} - 8002900: e02b b.n 800295a - else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) - 8002902: 687b ldr r3, [r7, #4] - 8002904: 2241 movs r2, #65 @ 0x41 - 8002906: 5c9b ldrb r3, [r3, r2] - 8002908: b2db uxtb r3, r3 - 800290a: 2b22 cmp r3, #34 @ 0x22 - 800290c: d125 bne.n 800295a - hi2c->State = HAL_I2C_STATE_READY; - 800290e: 687b ldr r3, [r7, #4] - 8002910: 2241 movs r2, #65 @ 0x41 - 8002912: 2120 movs r1, #32 - 8002914: 5499 strb r1, [r3, r2] - hi2c->PreviousState = I2C_STATE_NONE; - 8002916: 687b ldr r3, [r7, #4] - 8002918: 2200 movs r2, #0 - 800291a: 631a str r2, [r3, #48] @ 0x30 - if (hi2c->Mode == HAL_I2C_MODE_MEM) - 800291c: 687b ldr r3, [r7, #4] - 800291e: 2242 movs r2, #66 @ 0x42 - 8002920: 5c9b ldrb r3, [r3, r2] - 8002922: b2db uxtb r3, r3 - 8002924: 2b40 cmp r3, #64 @ 0x40 - 8002926: d10c bne.n 8002942 - hi2c->Mode = HAL_I2C_MODE_NONE; 8002928: 687b ldr r3, [r7, #4] - 800292a: 2242 movs r2, #66 @ 0x42 - 800292c: 2100 movs r1, #0 - 800292e: 5499 strb r1, [r3, r2] - __HAL_UNLOCK(hi2c); - 8002930: 687b ldr r3, [r7, #4] - 8002932: 2240 movs r2, #64 @ 0x40 - 8002934: 2100 movs r1, #0 - 8002936: 5499 strb r1, [r3, r2] - HAL_I2C_MemRxCpltCallback(hi2c); - 8002938: 687b ldr r3, [r7, #4] - 800293a: 0018 movs r0, r3 - 800293c: f7ff f9d5 bl 8001cea -} - 8002940: e00b b.n 800295a + 800292a: 2200 movs r2, #0 + 800292c: 631a str r2, [r3, #48] @ 0x30 + if (hi2c->Mode == HAL_I2C_MODE_MEM) + 800292e: 687b ldr r3, [r7, #4] + 8002930: 2242 movs r2, #66 @ 0x42 + 8002932: 5c9b ldrb r3, [r3, r2] + 8002934: b2db uxtb r3, r3 + 8002936: 2b40 cmp r3, #64 @ 0x40 + 8002938: d10c bne.n 8002954 hi2c->Mode = HAL_I2C_MODE_NONE; + 800293a: 687b ldr r3, [r7, #4] + 800293c: 2242 movs r2, #66 @ 0x42 + 800293e: 2100 movs r1, #0 + 8002940: 5499 strb r1, [r3, r2] + __HAL_UNLOCK(hi2c); 8002942: 687b ldr r3, [r7, #4] - 8002944: 2242 movs r2, #66 @ 0x42 + 8002944: 2240 movs r2, #64 @ 0x40 8002946: 2100 movs r1, #0 8002948: 5499 strb r1, [r3, r2] - __HAL_UNLOCK(hi2c); + HAL_I2C_MemTxCpltCallback(hi2c); 800294a: 687b ldr r3, [r7, #4] - 800294c: 2240 movs r2, #64 @ 0x40 - 800294e: 2100 movs r1, #0 - 8002950: 5499 strb r1, [r3, r2] - HAL_I2C_MasterRxCpltCallback(hi2c); - 8002952: 687b ldr r3, [r7, #4] - 8002954: 0018 movs r0, r3 - 8002956: f7ff f9b8 bl 8001cca + 800294c: 0018 movs r0, r3 + 800294e: f7ff f9fa bl 8001d46 } - 800295a: 46c0 nop @ (mov r8, r8) - 800295c: 46bd mov sp, r7 - 800295e: b006 add sp, #24 - 8002960: bd80 pop {r7, pc} - 8002962: 46c0 nop @ (mov r8, r8) - 8002964: fe00e800 .word 0xfe00e800 - 8002968: ffff0000 .word 0xffff0000 + 8002952: e038 b.n 80029c6 + hi2c->Mode = HAL_I2C_MODE_NONE; + 8002954: 687b ldr r3, [r7, #4] + 8002956: 2242 movs r2, #66 @ 0x42 + 8002958: 2100 movs r1, #0 + 800295a: 5499 strb r1, [r3, r2] + __HAL_UNLOCK(hi2c); + 800295c: 687b ldr r3, [r7, #4] + 800295e: 2240 movs r2, #64 @ 0x40 + 8002960: 2100 movs r1, #0 + 8002962: 5499 strb r1, [r3, r2] + HAL_I2C_MasterTxCpltCallback(hi2c); + 8002964: 687b ldr r3, [r7, #4] + 8002966: 0018 movs r0, r3 + 8002968: f7ff f9dd bl 8001d26 +} + 800296c: e02b b.n 80029c6 + else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + 800296e: 687b ldr r3, [r7, #4] + 8002970: 2241 movs r2, #65 @ 0x41 + 8002972: 5c9b ldrb r3, [r3, r2] + 8002974: b2db uxtb r3, r3 + 8002976: 2b22 cmp r3, #34 @ 0x22 + 8002978: d125 bne.n 80029c6 + hi2c->State = HAL_I2C_STATE_READY; + 800297a: 687b ldr r3, [r7, #4] + 800297c: 2241 movs r2, #65 @ 0x41 + 800297e: 2120 movs r1, #32 + 8002980: 5499 strb r1, [r3, r2] + hi2c->PreviousState = I2C_STATE_NONE; + 8002982: 687b ldr r3, [r7, #4] + 8002984: 2200 movs r2, #0 + 8002986: 631a str r2, [r3, #48] @ 0x30 + if (hi2c->Mode == HAL_I2C_MODE_MEM) + 8002988: 687b ldr r3, [r7, #4] + 800298a: 2242 movs r2, #66 @ 0x42 + 800298c: 5c9b ldrb r3, [r3, r2] + 800298e: b2db uxtb r3, r3 + 8002990: 2b40 cmp r3, #64 @ 0x40 + 8002992: d10c bne.n 80029ae + hi2c->Mode = HAL_I2C_MODE_NONE; + 8002994: 687b ldr r3, [r7, #4] + 8002996: 2242 movs r2, #66 @ 0x42 + 8002998: 2100 movs r1, #0 + 800299a: 5499 strb r1, [r3, r2] + __HAL_UNLOCK(hi2c); + 800299c: 687b ldr r3, [r7, #4] + 800299e: 2240 movs r2, #64 @ 0x40 + 80029a0: 2100 movs r1, #0 + 80029a2: 5499 strb r1, [r3, r2] + HAL_I2C_MemRxCpltCallback(hi2c); + 80029a4: 687b ldr r3, [r7, #4] + 80029a6: 0018 movs r0, r3 + 80029a8: f7ff f9d5 bl 8001d56 +} + 80029ac: e00b b.n 80029c6 + hi2c->Mode = HAL_I2C_MODE_NONE; + 80029ae: 687b ldr r3, [r7, #4] + 80029b0: 2242 movs r2, #66 @ 0x42 + 80029b2: 2100 movs r1, #0 + 80029b4: 5499 strb r1, [r3, r2] + __HAL_UNLOCK(hi2c); + 80029b6: 687b ldr r3, [r7, #4] + 80029b8: 2240 movs r2, #64 @ 0x40 + 80029ba: 2100 movs r1, #0 + 80029bc: 5499 strb r1, [r3, r2] + HAL_I2C_MasterRxCpltCallback(hi2c); + 80029be: 687b ldr r3, [r7, #4] + 80029c0: 0018 movs r0, r3 + 80029c2: f7ff f9b8 bl 8001d36 +} + 80029c6: 46c0 nop @ (mov r8, r8) + 80029c8: 46bd mov sp, r7 + 80029ca: b006 add sp, #24 + 80029cc: bd80 pop {r7, pc} + 80029ce: 46c0 nop @ (mov r8, r8) + 80029d0: fe00e800 .word 0xfe00e800 + 80029d4: ffff0000 .word 0xffff0000 -0800296c : +080029d8 : * @param hi2c I2C handle. * @param ITFlags Interrupt flags to handle. * @retval None */ static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) { - 800296c: b580 push {r7, lr} - 800296e: b086 sub sp, #24 - 8002970: af00 add r7, sp, #0 - 8002972: 6078 str r0, [r7, #4] - 8002974: 6039 str r1, [r7, #0] + 80029d8: b580 push {r7, lr} + 80029da: b086 sub sp, #24 + 80029dc: af00 add r7, sp, #0 + 80029de: 6078 str r0, [r7, #4] + 80029e0: 6039 str r1, [r7, #0] uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); - 8002976: 687b ldr r3, [r7, #4] - 8002978: 681b ldr r3, [r3, #0] - 800297a: 681b ldr r3, [r3, #0] - 800297c: 613b str r3, [r7, #16] + 80029e2: 687b ldr r3, [r7, #4] + 80029e4: 681b ldr r3, [r3, #0] + 80029e6: 681b ldr r3, [r3, #0] + 80029e8: 613b str r3, [r7, #16] uint32_t tmpITFlags = ITFlags; - 800297e: 683b ldr r3, [r7, #0] - 8002980: 617b str r3, [r7, #20] + 80029ea: 683b ldr r3, [r7, #0] + 80029ec: 617b str r3, [r7, #20] uint32_t tmpoptions = hi2c->XferOptions; - 8002982: 687b ldr r3, [r7, #4] - 8002984: 6adb ldr r3, [r3, #44] @ 0x2c - 8002986: 60fb str r3, [r7, #12] + 80029ee: 687b ldr r3, [r7, #4] + 80029f0: 6adb ldr r3, [r3, #44] @ 0x2c + 80029f2: 60fb str r3, [r7, #12] HAL_I2C_StateTypeDef tmpstate = hi2c->State; - 8002988: 200b movs r0, #11 - 800298a: 183b adds r3, r7, r0 - 800298c: 687a ldr r2, [r7, #4] - 800298e: 2141 movs r1, #65 @ 0x41 - 8002990: 5c52 ldrb r2, [r2, r1] - 8002992: 701a strb r2, [r3, #0] + 80029f4: 200b movs r0, #11 + 80029f6: 183b adds r3, r7, r0 + 80029f8: 687a ldr r2, [r7, #4] + 80029fa: 2141 movs r1, #65 @ 0x41 + 80029fc: 5c52 ldrb r2, [r2, r1] + 80029fe: 701a strb r2, [r3, #0] /* Clear STOP Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); - 8002994: 687b ldr r3, [r7, #4] - 8002996: 681b ldr r3, [r3, #0] - 8002998: 2220 movs r2, #32 - 800299a: 61da str r2, [r3, #28] + 8002a00: 687b ldr r3, [r7, #4] + 8002a02: 681b ldr r3, [r3, #0] + 8002a04: 2220 movs r2, #32 + 8002a06: 61da str r2, [r3, #28] /* Disable Interrupts and Store Previous state */ if ((tmpstate == HAL_I2C_STATE_BUSY_TX) || (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN)) - 800299c: 183b adds r3, r7, r0 - 800299e: 781b ldrb r3, [r3, #0] - 80029a0: 2b21 cmp r3, #33 @ 0x21 - 80029a2: d003 beq.n 80029ac - 80029a4: 183b adds r3, r7, r0 - 80029a6: 781b ldrb r3, [r3, #0] - 80029a8: 2b29 cmp r3, #41 @ 0x29 - 80029aa: d109 bne.n 80029c0 + 8002a08: 183b adds r3, r7, r0 + 8002a0a: 781b ldrb r3, [r3, #0] + 8002a0c: 2b21 cmp r3, #33 @ 0x21 + 8002a0e: d003 beq.n 8002a18 + 8002a10: 183b adds r3, r7, r0 + 8002a12: 781b ldrb r3, [r3, #0] + 8002a14: 2b29 cmp r3, #41 @ 0x29 + 8002a16: d109 bne.n 8002a2c { I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); - 80029ac: 4aac ldr r2, [pc, #688] @ (8002c60 ) - 80029ae: 687b ldr r3, [r7, #4] - 80029b0: 0011 movs r1, r2 - 80029b2: 0018 movs r0, r3 - 80029b4: f000 fbea bl 800318c + 8002a18: 4aac ldr r2, [pc, #688] @ (8002ccc ) + 8002a1a: 687b ldr r3, [r7, #4] + 8002a1c: 0011 movs r1, r2 + 8002a1e: 0018 movs r0, r3 + 8002a20: f000 fbea bl 80031f8 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; - 80029b8: 687b ldr r3, [r7, #4] - 80029ba: 2221 movs r2, #33 @ 0x21 - 80029bc: 631a str r2, [r3, #48] @ 0x30 - 80029be: e020 b.n 8002a02 + 8002a24: 687b ldr r3, [r7, #4] + 8002a26: 2221 movs r2, #33 @ 0x21 + 8002a28: 631a str r2, [r3, #48] @ 0x30 + 8002a2a: e020 b.n 8002a6e } else if ((tmpstate == HAL_I2C_STATE_BUSY_RX) || (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) - 80029c0: 220b movs r2, #11 - 80029c2: 18bb adds r3, r7, r2 - 80029c4: 781b ldrb r3, [r3, #0] - 80029c6: 2b22 cmp r3, #34 @ 0x22 - 80029c8: d003 beq.n 80029d2 - 80029ca: 18bb adds r3, r7, r2 - 80029cc: 781b ldrb r3, [r3, #0] - 80029ce: 2b2a cmp r3, #42 @ 0x2a - 80029d0: d109 bne.n 80029e6 + 8002a2c: 220b movs r2, #11 + 8002a2e: 18bb adds r3, r7, r2 + 8002a30: 781b ldrb r3, [r3, #0] + 8002a32: 2b22 cmp r3, #34 @ 0x22 + 8002a34: d003 beq.n 8002a3e + 8002a36: 18bb adds r3, r7, r2 + 8002a38: 781b ldrb r3, [r3, #0] + 8002a3a: 2b2a cmp r3, #42 @ 0x2a + 8002a3c: d109 bne.n 8002a52 { I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); - 80029d2: 4aa4 ldr r2, [pc, #656] @ (8002c64 ) - 80029d4: 687b ldr r3, [r7, #4] - 80029d6: 0011 movs r1, r2 - 80029d8: 0018 movs r0, r3 - 80029da: f000 fbd7 bl 800318c + 8002a3e: 4aa4 ldr r2, [pc, #656] @ (8002cd0 ) + 8002a40: 687b ldr r3, [r7, #4] + 8002a42: 0011 movs r1, r2 + 8002a44: 0018 movs r0, r3 + 8002a46: f000 fbd7 bl 80031f8 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; - 80029de: 687b ldr r3, [r7, #4] - 80029e0: 2222 movs r2, #34 @ 0x22 - 80029e2: 631a str r2, [r3, #48] @ 0x30 - 80029e4: e00d b.n 8002a02 + 8002a4a: 687b ldr r3, [r7, #4] + 8002a4c: 2222 movs r2, #34 @ 0x22 + 8002a4e: 631a str r2, [r3, #48] @ 0x30 + 8002a50: e00d b.n 8002a6e } else if (tmpstate == HAL_I2C_STATE_LISTEN) - 80029e6: 230b movs r3, #11 - 80029e8: 18fb adds r3, r7, r3 - 80029ea: 781b ldrb r3, [r3, #0] - 80029ec: 2b28 cmp r3, #40 @ 0x28 - 80029ee: d108 bne.n 8002a02 + 8002a52: 230b movs r3, #11 + 8002a54: 18fb adds r3, r7, r3 + 8002a56: 781b ldrb r3, [r3, #0] + 8002a58: 2b28 cmp r3, #40 @ 0x28 + 8002a5a: d108 bne.n 8002a6e { I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT | I2C_XFER_RX_IT); - 80029f0: 4a9d ldr r2, [pc, #628] @ (8002c68 ) - 80029f2: 687b ldr r3, [r7, #4] - 80029f4: 0011 movs r1, r2 - 80029f6: 0018 movs r0, r3 - 80029f8: f000 fbc8 bl 800318c + 8002a5c: 4a9d ldr r2, [pc, #628] @ (8002cd4 ) + 8002a5e: 687b ldr r3, [r7, #4] + 8002a60: 0011 movs r1, r2 + 8002a62: 0018 movs r0, r3 + 8002a64: f000 fbc8 bl 80031f8 hi2c->PreviousState = I2C_STATE_NONE; - 80029fc: 687b ldr r3, [r7, #4] - 80029fe: 2200 movs r2, #0 - 8002a00: 631a str r2, [r3, #48] @ 0x30 + 8002a68: 687b ldr r3, [r7, #4] + 8002a6a: 2200 movs r2, #0 + 8002a6c: 631a str r2, [r3, #48] @ 0x30 { /* Do nothing */ } /* Disable Address Acknowledge */ hi2c->Instance->CR2 |= I2C_CR2_NACK; - 8002a02: 687b ldr r3, [r7, #4] - 8002a04: 681b ldr r3, [r3, #0] - 8002a06: 685a ldr r2, [r3, #4] - 8002a08: 687b ldr r3, [r7, #4] - 8002a0a: 681b ldr r3, [r3, #0] - 8002a0c: 2180 movs r1, #128 @ 0x80 - 8002a0e: 0209 lsls r1, r1, #8 - 8002a10: 430a orrs r2, r1 - 8002a12: 605a str r2, [r3, #4] + 8002a6e: 687b ldr r3, [r7, #4] + 8002a70: 681b ldr r3, [r3, #0] + 8002a72: 685a ldr r2, [r3, #4] + 8002a74: 687b ldr r3, [r7, #4] + 8002a76: 681b ldr r3, [r3, #0] + 8002a78: 2180 movs r1, #128 @ 0x80 + 8002a7a: 0209 lsls r1, r1, #8 + 8002a7c: 430a orrs r2, r1 + 8002a7e: 605a str r2, [r3, #4] /* Clear Configuration Register 2 */ I2C_RESET_CR2(hi2c); - 8002a14: 687b ldr r3, [r7, #4] - 8002a16: 681b ldr r3, [r3, #0] - 8002a18: 685a ldr r2, [r3, #4] - 8002a1a: 687b ldr r3, [r7, #4] - 8002a1c: 681b ldr r3, [r3, #0] - 8002a1e: 4993 ldr r1, [pc, #588] @ (8002c6c ) - 8002a20: 400a ands r2, r1 - 8002a22: 605a str r2, [r3, #4] + 8002a80: 687b ldr r3, [r7, #4] + 8002a82: 681b ldr r3, [r3, #0] + 8002a84: 685a ldr r2, [r3, #4] + 8002a86: 687b ldr r3, [r7, #4] + 8002a88: 681b ldr r3, [r3, #0] + 8002a8a: 4993 ldr r1, [pc, #588] @ (8002cd8 ) + 8002a8c: 400a ands r2, r1 + 8002a8e: 605a str r2, [r3, #4] /* Flush TX register */ I2C_Flush_TXDR(hi2c); - 8002a24: 687b ldr r3, [r7, #4] - 8002a26: 0018 movs r0, r3 - 8002a28: f000 faab bl 8002f82 + 8002a90: 687b ldr r3, [r7, #4] + 8002a92: 0018 movs r0, r3 + 8002a94: f000 faab bl 8002fee /* If a DMA is ongoing, Update handle size context */ if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET) - 8002a2c: 693a ldr r2, [r7, #16] - 8002a2e: 2380 movs r3, #128 @ 0x80 - 8002a30: 01db lsls r3, r3, #7 - 8002a32: 4013 ands r3, r2 - 8002a34: d013 beq.n 8002a5e + 8002a98: 693a ldr r2, [r7, #16] + 8002a9a: 2380 movs r3, #128 @ 0x80 + 8002a9c: 01db lsls r3, r3, #7 + 8002a9e: 4013 ands r3, r2 + 8002aa0: d013 beq.n 8002aca { /* Disable DMA Request */ hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; - 8002a36: 687b ldr r3, [r7, #4] - 8002a38: 681b ldr r3, [r3, #0] - 8002a3a: 681a ldr r2, [r3, #0] - 8002a3c: 687b ldr r3, [r7, #4] - 8002a3e: 681b ldr r3, [r3, #0] - 8002a40: 498b ldr r1, [pc, #556] @ (8002c70 ) - 8002a42: 400a ands r2, r1 - 8002a44: 601a str r2, [r3, #0] + 8002aa2: 687b ldr r3, [r7, #4] + 8002aa4: 681b ldr r3, [r3, #0] + 8002aa6: 681a ldr r2, [r3, #0] + 8002aa8: 687b ldr r3, [r7, #4] + 8002aaa: 681b ldr r3, [r3, #0] + 8002aac: 498b ldr r1, [pc, #556] @ (8002cdc ) + 8002aae: 400a ands r2, r1 + 8002ab0: 601a str r2, [r3, #0] if (hi2c->hdmatx != NULL) - 8002a46: 687b ldr r3, [r7, #4] - 8002a48: 6b9b ldr r3, [r3, #56] @ 0x38 - 8002a4a: 2b00 cmp r3, #0 - 8002a4c: d01f beq.n 8002a8e + 8002ab2: 687b ldr r3, [r7, #4] + 8002ab4: 6b9b ldr r3, [r3, #56] @ 0x38 + 8002ab6: 2b00 cmp r3, #0 + 8002ab8: d01f beq.n 8002afa { hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx); - 8002a4e: 687b ldr r3, [r7, #4] - 8002a50: 6b9b ldr r3, [r3, #56] @ 0x38 - 8002a52: 681b ldr r3, [r3, #0] - 8002a54: 685b ldr r3, [r3, #4] - 8002a56: b29a uxth r2, r3 - 8002a58: 687b ldr r3, [r7, #4] - 8002a5a: 855a strh r2, [r3, #42] @ 0x2a - 8002a5c: e017 b.n 8002a8e + 8002aba: 687b ldr r3, [r7, #4] + 8002abc: 6b9b ldr r3, [r3, #56] @ 0x38 + 8002abe: 681b ldr r3, [r3, #0] + 8002ac0: 685b ldr r3, [r3, #4] + 8002ac2: b29a uxth r2, r3 + 8002ac4: 687b ldr r3, [r7, #4] + 8002ac6: 855a strh r2, [r3, #42] @ 0x2a + 8002ac8: e017 b.n 8002afa } } else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET) - 8002a5e: 693a ldr r2, [r7, #16] - 8002a60: 2380 movs r3, #128 @ 0x80 - 8002a62: 021b lsls r3, r3, #8 - 8002a64: 4013 ands r3, r2 - 8002a66: d012 beq.n 8002a8e + 8002aca: 693a ldr r2, [r7, #16] + 8002acc: 2380 movs r3, #128 @ 0x80 + 8002ace: 021b lsls r3, r3, #8 + 8002ad0: 4013 ands r3, r2 + 8002ad2: d012 beq.n 8002afa { /* Disable DMA Request */ hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; - 8002a68: 687b ldr r3, [r7, #4] - 8002a6a: 681b ldr r3, [r3, #0] - 8002a6c: 681a ldr r2, [r3, #0] - 8002a6e: 687b ldr r3, [r7, #4] - 8002a70: 681b ldr r3, [r3, #0] - 8002a72: 4980 ldr r1, [pc, #512] @ (8002c74 ) - 8002a74: 400a ands r2, r1 - 8002a76: 601a str r2, [r3, #0] + 8002ad4: 687b ldr r3, [r7, #4] + 8002ad6: 681b ldr r3, [r3, #0] + 8002ad8: 681a ldr r2, [r3, #0] + 8002ada: 687b ldr r3, [r7, #4] + 8002adc: 681b ldr r3, [r3, #0] + 8002ade: 4980 ldr r1, [pc, #512] @ (8002ce0 ) + 8002ae0: 400a ands r2, r1 + 8002ae2: 601a str r2, [r3, #0] if (hi2c->hdmarx != NULL) - 8002a78: 687b ldr r3, [r7, #4] - 8002a7a: 6bdb ldr r3, [r3, #60] @ 0x3c - 8002a7c: 2b00 cmp r3, #0 - 8002a7e: d006 beq.n 8002a8e + 8002ae4: 687b ldr r3, [r7, #4] + 8002ae6: 6bdb ldr r3, [r3, #60] @ 0x3c + 8002ae8: 2b00 cmp r3, #0 + 8002aea: d006 beq.n 8002afa { hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx); - 8002a80: 687b ldr r3, [r7, #4] - 8002a82: 6bdb ldr r3, [r3, #60] @ 0x3c - 8002a84: 681b ldr r3, [r3, #0] - 8002a86: 685b ldr r3, [r3, #4] - 8002a88: b29a uxth r2, r3 - 8002a8a: 687b ldr r3, [r7, #4] - 8002a8c: 855a strh r2, [r3, #42] @ 0x2a + 8002aec: 687b ldr r3, [r7, #4] + 8002aee: 6bdb ldr r3, [r3, #60] @ 0x3c + 8002af0: 681b ldr r3, [r3, #0] + 8002af2: 685b ldr r3, [r3, #4] + 8002af4: b29a uxth r2, r3 + 8002af6: 687b ldr r3, [r7, #4] + 8002af8: 855a strh r2, [r3, #42] @ 0x2a { /* Do nothing */ } /* Store Last receive data if any */ if (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) - 8002a8e: 697b ldr r3, [r7, #20] - 8002a90: 2204 movs r2, #4 - 8002a92: 4013 ands r3, r2 - 8002a94: d020 beq.n 8002ad8 + 8002afa: 697b ldr r3, [r7, #20] + 8002afc: 2204 movs r2, #4 + 8002afe: 4013 ands r3, r2 + 8002b00: d020 beq.n 8002b44 { /* Remove RXNE flag on temporary variable as read done */ tmpITFlags &= ~I2C_FLAG_RXNE; - 8002a96: 697b ldr r3, [r7, #20] - 8002a98: 2204 movs r2, #4 - 8002a9a: 4393 bics r3, r2 - 8002a9c: 617b str r3, [r7, #20] + 8002b02: 697b ldr r3, [r7, #20] + 8002b04: 2204 movs r2, #4 + 8002b06: 4393 bics r3, r2 + 8002b08: 617b str r3, [r7, #20] /* Read data from RXDR */ *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; - 8002a9e: 687b ldr r3, [r7, #4] - 8002aa0: 681b ldr r3, [r3, #0] - 8002aa2: 6a5a ldr r2, [r3, #36] @ 0x24 - 8002aa4: 687b ldr r3, [r7, #4] - 8002aa6: 6a5b ldr r3, [r3, #36] @ 0x24 - 8002aa8: b2d2 uxtb r2, r2 - 8002aaa: 701a strb r2, [r3, #0] + 8002b0a: 687b ldr r3, [r7, #4] + 8002b0c: 681b ldr r3, [r3, #0] + 8002b0e: 6a5a ldr r2, [r3, #36] @ 0x24 + 8002b10: 687b ldr r3, [r7, #4] + 8002b12: 6a5b ldr r3, [r3, #36] @ 0x24 + 8002b14: b2d2 uxtb r2, r2 + 8002b16: 701a strb r2, [r3, #0] /* Increment Buffer pointer */ hi2c->pBuffPtr++; - 8002aac: 687b ldr r3, [r7, #4] - 8002aae: 6a5b ldr r3, [r3, #36] @ 0x24 - 8002ab0: 1c5a adds r2, r3, #1 - 8002ab2: 687b ldr r3, [r7, #4] - 8002ab4: 625a str r2, [r3, #36] @ 0x24 + 8002b18: 687b ldr r3, [r7, #4] + 8002b1a: 6a5b ldr r3, [r3, #36] @ 0x24 + 8002b1c: 1c5a adds r2, r3, #1 + 8002b1e: 687b ldr r3, [r7, #4] + 8002b20: 625a str r2, [r3, #36] @ 0x24 if ((hi2c->XferSize > 0U)) - 8002ab6: 687b ldr r3, [r7, #4] - 8002ab8: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8002aba: 2b00 cmp r3, #0 - 8002abc: d00c beq.n 8002ad8 + 8002b22: 687b ldr r3, [r7, #4] + 8002b24: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8002b26: 2b00 cmp r3, #0 + 8002b28: d00c beq.n 8002b44 { hi2c->XferSize--; - 8002abe: 687b ldr r3, [r7, #4] - 8002ac0: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8002ac2: 3b01 subs r3, #1 - 8002ac4: b29a uxth r2, r3 - 8002ac6: 687b ldr r3, [r7, #4] - 8002ac8: 851a strh r2, [r3, #40] @ 0x28 + 8002b2a: 687b ldr r3, [r7, #4] + 8002b2c: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8002b2e: 3b01 subs r3, #1 + 8002b30: b29a uxth r2, r3 + 8002b32: 687b ldr r3, [r7, #4] + 8002b34: 851a strh r2, [r3, #40] @ 0x28 hi2c->XferCount--; - 8002aca: 687b ldr r3, [r7, #4] - 8002acc: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8002ace: b29b uxth r3, r3 - 8002ad0: 3b01 subs r3, #1 - 8002ad2: b29a uxth r2, r3 - 8002ad4: 687b ldr r3, [r7, #4] - 8002ad6: 855a strh r2, [r3, #42] @ 0x2a + 8002b36: 687b ldr r3, [r7, #4] + 8002b38: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8002b3a: b29b uxth r3, r3 + 8002b3c: 3b01 subs r3, #1 + 8002b3e: b29a uxth r2, r3 + 8002b40: 687b ldr r3, [r7, #4] + 8002b42: 855a strh r2, [r3, #42] @ 0x2a } } /* All data are not transferred, so set error code accordingly */ if (hi2c->XferCount != 0U) - 8002ad8: 687b ldr r3, [r7, #4] - 8002ada: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8002adc: b29b uxth r3, r3 - 8002ade: 2b00 cmp r3, #0 - 8002ae0: d005 beq.n 8002aee + 8002b44: 687b ldr r3, [r7, #4] + 8002b46: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8002b48: b29b uxth r3, r3 + 8002b4a: 2b00 cmp r3, #0 + 8002b4c: d005 beq.n 8002b5a { /* Set ErrorCode corresponding to a Non-Acknowledge */ hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 8002ae2: 687b ldr r3, [r7, #4] - 8002ae4: 6c5b ldr r3, [r3, #68] @ 0x44 - 8002ae6: 2204 movs r2, #4 - 8002ae8: 431a orrs r2, r3 - 8002aea: 687b ldr r3, [r7, #4] - 8002aec: 645a str r2, [r3, #68] @ 0x44 + 8002b4e: 687b ldr r3, [r7, #4] + 8002b50: 6c5b ldr r3, [r3, #68] @ 0x44 + 8002b52: 2204 movs r2, #4 + 8002b54: 431a orrs r2, r3 + 8002b56: 687b ldr r3, [r7, #4] + 8002b58: 645a str r2, [r3, #68] @ 0x44 } if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ - 8002aee: 697b ldr r3, [r7, #20] - 8002af0: 2210 movs r2, #16 - 8002af2: 4013 ands r3, r2 - 8002af4: d04f beq.n 8002b96 + 8002b5a: 697b ldr r3, [r7, #20] + 8002b5c: 2210 movs r2, #16 + 8002b5e: 4013 ands r3, r2 + 8002b60: d04f beq.n 8002c02 (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_IT_NACKI) != RESET)) - 8002af6: 693b ldr r3, [r7, #16] - 8002af8: 2210 movs r2, #16 - 8002afa: 4013 ands r3, r2 + 8002b62: 693b ldr r3, [r7, #16] + 8002b64: 2210 movs r2, #16 + 8002b66: 4013 ands r3, r2 if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ - 8002afc: d04b beq.n 8002b96 + 8002b68: d04b beq.n 8002c02 { /* Check that I2C transfer finished */ /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */ /* Mean XferCount == 0*/ /* So clear Flag NACKF only */ if (hi2c->XferCount == 0U) - 8002afe: 687b ldr r3, [r7, #4] - 8002b00: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8002b02: b29b uxth r3, r3 - 8002b04: 2b00 cmp r3, #0 - 8002b06: d12d bne.n 8002b64 + 8002b6a: 687b ldr r3, [r7, #4] + 8002b6c: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8002b6e: b29b uxth r3, r3 + 8002b70: 2b00 cmp r3, #0 + 8002b72: d12d bne.n 8002bd0 { if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) - 8002b08: 687b ldr r3, [r7, #4] - 8002b0a: 2241 movs r2, #65 @ 0x41 - 8002b0c: 5c9b ldrb r3, [r3, r2] - 8002b0e: b2db uxtb r3, r3 - 8002b10: 2b28 cmp r3, #40 @ 0x28 - 8002b12: d10b bne.n 8002b2c - 8002b14: 68fa ldr r2, [r7, #12] - 8002b16: 2380 movs r3, #128 @ 0x80 - 8002b18: 049b lsls r3, r3, #18 - 8002b1a: 429a cmp r2, r3 - 8002b1c: d106 bne.n 8002b2c + 8002b74: 687b ldr r3, [r7, #4] + 8002b76: 2241 movs r2, #65 @ 0x41 + 8002b78: 5c9b ldrb r3, [r3, r2] + 8002b7a: b2db uxtb r3, r3 + 8002b7c: 2b28 cmp r3, #40 @ 0x28 + 8002b7e: d10b bne.n 8002b98 + 8002b80: 68fa ldr r2, [r7, #12] + 8002b82: 2380 movs r3, #128 @ 0x80 + 8002b84: 049b lsls r3, r3, #18 + 8002b86: 429a cmp r2, r3 + 8002b88: d106 bne.n 8002b98 /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for Warning[Pa134]: left and right operands are identical */ { /* Call I2C Listen complete process */ I2C_ITListenCplt(hi2c, tmpITFlags); - 8002b1e: 697a ldr r2, [r7, #20] - 8002b20: 687b ldr r3, [r7, #4] - 8002b22: 0011 movs r1, r2 - 8002b24: 0018 movs r0, r3 - 8002b26: f000 f8a9 bl 8002c7c - 8002b2a: e034 b.n 8002b96 + 8002b8a: 697a ldr r2, [r7, #20] + 8002b8c: 687b ldr r3, [r7, #4] + 8002b8e: 0011 movs r1, r2 + 8002b90: 0018 movs r0, r3 + 8002b92: f000 f8a9 bl 8002ce8 + 8002b96: e034 b.n 8002c02 } else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) - 8002b2c: 687b ldr r3, [r7, #4] - 8002b2e: 2241 movs r2, #65 @ 0x41 - 8002b30: 5c9b ldrb r3, [r3, r2] - 8002b32: b2db uxtb r3, r3 - 8002b34: 2b29 cmp r3, #41 @ 0x29 - 8002b36: d110 bne.n 8002b5a - 8002b38: 68fb ldr r3, [r7, #12] - 8002b3a: 4a4f ldr r2, [pc, #316] @ (8002c78 ) - 8002b3c: 4293 cmp r3, r2 - 8002b3e: d00c beq.n 8002b5a + 8002b98: 687b ldr r3, [r7, #4] + 8002b9a: 2241 movs r2, #65 @ 0x41 + 8002b9c: 5c9b ldrb r3, [r3, r2] + 8002b9e: b2db uxtb r3, r3 + 8002ba0: 2b29 cmp r3, #41 @ 0x29 + 8002ba2: d110 bne.n 8002bc6 + 8002ba4: 68fb ldr r3, [r7, #12] + 8002ba6: 4a4f ldr r2, [pc, #316] @ (8002ce4 ) + 8002ba8: 4293 cmp r3, r2 + 8002baa: d00c beq.n 8002bc6 { /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8002b40: 687b ldr r3, [r7, #4] - 8002b42: 681b ldr r3, [r3, #0] - 8002b44: 2210 movs r2, #16 - 8002b46: 61da str r2, [r3, #28] + 8002bac: 687b ldr r3, [r7, #4] + 8002bae: 681b ldr r3, [r3, #0] + 8002bb0: 2210 movs r2, #16 + 8002bb2: 61da str r2, [r3, #28] /* Flush TX register */ I2C_Flush_TXDR(hi2c); - 8002b48: 687b ldr r3, [r7, #4] - 8002b4a: 0018 movs r0, r3 - 8002b4c: f000 fa19 bl 8002f82 + 8002bb4: 687b ldr r3, [r7, #4] + 8002bb6: 0018 movs r0, r3 + 8002bb8: f000 fa19 bl 8002fee /* Last Byte is Transmitted */ /* Call I2C Slave Sequential complete process */ I2C_ITSlaveSeqCplt(hi2c); - 8002b50: 687b ldr r3, [r7, #4] - 8002b52: 0018 movs r0, r3 - 8002b54: f7ff fdd8 bl 8002708 - 8002b58: e01d b.n 8002b96 + 8002bbc: 687b ldr r3, [r7, #4] + 8002bbe: 0018 movs r0, r3 + 8002bc0: f7ff fdd8 bl 8002774 + 8002bc4: e01d b.n 8002c02 } else { /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8002b5a: 687b ldr r3, [r7, #4] - 8002b5c: 681b ldr r3, [r3, #0] - 8002b5e: 2210 movs r2, #16 - 8002b60: 61da str r2, [r3, #28] - 8002b62: e018 b.n 8002b96 + 8002bc6: 687b ldr r3, [r7, #4] + 8002bc8: 681b ldr r3, [r3, #0] + 8002bca: 2210 movs r2, #16 + 8002bcc: 61da str r2, [r3, #28] + 8002bce: e018 b.n 8002c02 } else { /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/ /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8002b64: 687b ldr r3, [r7, #4] - 8002b66: 681b ldr r3, [r3, #0] - 8002b68: 2210 movs r2, #16 - 8002b6a: 61da str r2, [r3, #28] + 8002bd0: 687b ldr r3, [r7, #4] + 8002bd2: 681b ldr r3, [r3, #0] + 8002bd4: 2210 movs r2, #16 + 8002bd6: 61da str r2, [r3, #28] /* Set ErrorCode corresponding to a Non-Acknowledge */ hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 8002b6c: 687b ldr r3, [r7, #4] - 8002b6e: 6c5b ldr r3, [r3, #68] @ 0x44 - 8002b70: 2204 movs r2, #4 - 8002b72: 431a orrs r2, r3 - 8002b74: 687b ldr r3, [r7, #4] - 8002b76: 645a str r2, [r3, #68] @ 0x44 + 8002bd8: 687b ldr r3, [r7, #4] + 8002bda: 6c5b ldr r3, [r3, #68] @ 0x44 + 8002bdc: 2204 movs r2, #4 + 8002bde: 431a orrs r2, r3 + 8002be0: 687b ldr r3, [r7, #4] + 8002be2: 645a str r2, [r3, #68] @ 0x44 if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME)) - 8002b78: 68fb ldr r3, [r7, #12] - 8002b7a: 2b00 cmp r3, #0 - 8002b7c: d004 beq.n 8002b88 - 8002b7e: 68fa ldr r2, [r7, #12] - 8002b80: 2380 movs r3, #128 @ 0x80 - 8002b82: 045b lsls r3, r3, #17 - 8002b84: 429a cmp r2, r3 - 8002b86: d106 bne.n 8002b96 + 8002be4: 68fb ldr r3, [r7, #12] + 8002be6: 2b00 cmp r3, #0 + 8002be8: d004 beq.n 8002bf4 + 8002bea: 68fa ldr r2, [r7, #12] + 8002bec: 2380 movs r3, #128 @ 0x80 + 8002bee: 045b lsls r3, r3, #17 + 8002bf0: 429a cmp r2, r3 + 8002bf2: d106 bne.n 8002c02 { /* Call the corresponding callback to inform upper layer of End of Transfer */ I2C_ITError(hi2c, hi2c->ErrorCode); - 8002b88: 687b ldr r3, [r7, #4] - 8002b8a: 6c5a ldr r2, [r3, #68] @ 0x44 - 8002b8c: 687b ldr r3, [r7, #4] - 8002b8e: 0011 movs r1, r2 - 8002b90: 0018 movs r0, r3 - 8002b92: f000 f8cb bl 8002d2c + 8002bf4: 687b ldr r3, [r7, #4] + 8002bf6: 6c5a ldr r2, [r3, #68] @ 0x44 + 8002bf8: 687b ldr r3, [r7, #4] + 8002bfa: 0011 movs r1, r2 + 8002bfc: 0018 movs r0, r3 + 8002bfe: f000 f8cb bl 8002d98 } } } hi2c->Mode = HAL_I2C_MODE_NONE; - 8002b96: 687b ldr r3, [r7, #4] - 8002b98: 2242 movs r2, #66 @ 0x42 - 8002b9a: 2100 movs r1, #0 - 8002b9c: 5499 strb r1, [r3, r2] + 8002c02: 687b ldr r3, [r7, #4] + 8002c04: 2242 movs r2, #66 @ 0x42 + 8002c06: 2100 movs r1, #0 + 8002c08: 5499 strb r1, [r3, r2] hi2c->XferISR = NULL; - 8002b9e: 687b ldr r3, [r7, #4] - 8002ba0: 2200 movs r2, #0 - 8002ba2: 635a str r2, [r3, #52] @ 0x34 + 8002c0a: 687b ldr r3, [r7, #4] + 8002c0c: 2200 movs r2, #0 + 8002c0e: 635a str r2, [r3, #52] @ 0x34 if (hi2c->ErrorCode != HAL_I2C_ERROR_NONE) - 8002ba4: 687b ldr r3, [r7, #4] - 8002ba6: 6c5b ldr r3, [r3, #68] @ 0x44 - 8002ba8: 2b00 cmp r3, #0 - 8002baa: d013 beq.n 8002bd4 + 8002c10: 687b ldr r3, [r7, #4] + 8002c12: 6c5b ldr r3, [r3, #68] @ 0x44 + 8002c14: 2b00 cmp r3, #0 + 8002c16: d013 beq.n 8002c40 { /* Call the corresponding callback to inform upper layer of End of Transfer */ I2C_ITError(hi2c, hi2c->ErrorCode); - 8002bac: 687b ldr r3, [r7, #4] - 8002bae: 6c5a ldr r2, [r3, #68] @ 0x44 - 8002bb0: 687b ldr r3, [r7, #4] - 8002bb2: 0011 movs r1, r2 - 8002bb4: 0018 movs r0, r3 - 8002bb6: f000 f8b9 bl 8002d2c + 8002c18: 687b ldr r3, [r7, #4] + 8002c1a: 6c5a ldr r2, [r3, #68] @ 0x44 + 8002c1c: 687b ldr r3, [r7, #4] + 8002c1e: 0011 movs r1, r2 + 8002c20: 0018 movs r0, r3 + 8002c22: f000 f8b9 bl 8002d98 /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ if (hi2c->State == HAL_I2C_STATE_LISTEN) - 8002bba: 687b ldr r3, [r7, #4] - 8002bbc: 2241 movs r2, #65 @ 0x41 - 8002bbe: 5c9b ldrb r3, [r3, r2] - 8002bc0: b2db uxtb r3, r3 - 8002bc2: 2b28 cmp r3, #40 @ 0x28 - 8002bc4: d147 bne.n 8002c56 + 8002c26: 687b ldr r3, [r7, #4] + 8002c28: 2241 movs r2, #65 @ 0x41 + 8002c2a: 5c9b ldrb r3, [r3, r2] + 8002c2c: b2db uxtb r3, r3 + 8002c2e: 2b28 cmp r3, #40 @ 0x28 + 8002c30: d147 bne.n 8002cc2 { /* Call I2C Listen complete process */ I2C_ITListenCplt(hi2c, tmpITFlags); - 8002bc6: 697a ldr r2, [r7, #20] - 8002bc8: 687b ldr r3, [r7, #4] - 8002bca: 0011 movs r1, r2 - 8002bcc: 0018 movs r0, r3 - 8002bce: f000 f855 bl 8002c7c + 8002c32: 697a ldr r2, [r7, #20] + 8002c34: 687b ldr r3, [r7, #4] + 8002c36: 0011 movs r1, r2 + 8002c38: 0018 movs r0, r3 + 8002c3a: f000 f855 bl 8002ce8 hi2c->SlaveTxCpltCallback(hi2c); #else HAL_I2C_SlaveTxCpltCallback(hi2c); #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ } } - 8002bd2: e040 b.n 8002c56 + 8002c3e: e040 b.n 8002cc2 else if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) - 8002bd4: 687b ldr r3, [r7, #4] - 8002bd6: 6adb ldr r3, [r3, #44] @ 0x2c - 8002bd8: 4a27 ldr r2, [pc, #156] @ (8002c78 ) - 8002bda: 4293 cmp r3, r2 - 8002bdc: d016 beq.n 8002c0c - I2C_ITSlaveSeqCplt(hi2c); - 8002bde: 687b ldr r3, [r7, #4] - 8002be0: 0018 movs r0, r3 - 8002be2: f7ff fd91 bl 8002708 - hi2c->XferOptions = I2C_NO_OPTION_FRAME; - 8002be6: 687b ldr r3, [r7, #4] - 8002be8: 4a23 ldr r2, [pc, #140] @ (8002c78 ) - 8002bea: 62da str r2, [r3, #44] @ 0x2c - hi2c->State = HAL_I2C_STATE_READY; - 8002bec: 687b ldr r3, [r7, #4] - 8002bee: 2241 movs r2, #65 @ 0x41 - 8002bf0: 2120 movs r1, #32 - 8002bf2: 5499 strb r1, [r3, r2] - hi2c->PreviousState = I2C_STATE_NONE; - 8002bf4: 687b ldr r3, [r7, #4] - 8002bf6: 2200 movs r2, #0 - 8002bf8: 631a str r2, [r3, #48] @ 0x30 - __HAL_UNLOCK(hi2c); - 8002bfa: 687b ldr r3, [r7, #4] - 8002bfc: 2240 movs r2, #64 @ 0x40 - 8002bfe: 2100 movs r1, #0 - 8002c00: 5499 strb r1, [r3, r2] - HAL_I2C_ListenCpltCallback(hi2c); - 8002c02: 687b ldr r3, [r7, #4] - 8002c04: 0018 movs r0, r3 - 8002c06: f7fd fd77 bl 80006f8 -} - 8002c0a: e024 b.n 8002c56 - else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) - 8002c0c: 687b ldr r3, [r7, #4] - 8002c0e: 2241 movs r2, #65 @ 0x41 - 8002c10: 5c9b ldrb r3, [r3, r2] - 8002c12: b2db uxtb r3, r3 - 8002c14: 2b22 cmp r3, #34 @ 0x22 - 8002c16: d10f bne.n 8002c38 - hi2c->State = HAL_I2C_STATE_READY; - 8002c18: 687b ldr r3, [r7, #4] - 8002c1a: 2241 movs r2, #65 @ 0x41 - 8002c1c: 2120 movs r1, #32 - 8002c1e: 5499 strb r1, [r3, r2] - hi2c->PreviousState = I2C_STATE_NONE; - 8002c20: 687b ldr r3, [r7, #4] - 8002c22: 2200 movs r2, #0 - 8002c24: 631a str r2, [r3, #48] @ 0x30 - __HAL_UNLOCK(hi2c); - 8002c26: 687b ldr r3, [r7, #4] - 8002c28: 2240 movs r2, #64 @ 0x40 - 8002c2a: 2100 movs r1, #0 - 8002c2c: 5499 strb r1, [r3, r2] - HAL_I2C_SlaveRxCpltCallback(hi2c); - 8002c2e: 687b ldr r3, [r7, #4] - 8002c30: 0018 movs r0, r3 - 8002c32: f7fd fe5d bl 80008f0 -} - 8002c36: e00e b.n 8002c56 - hi2c->State = HAL_I2C_STATE_READY; - 8002c38: 687b ldr r3, [r7, #4] - 8002c3a: 2241 movs r2, #65 @ 0x41 - 8002c3c: 2120 movs r1, #32 - 8002c3e: 5499 strb r1, [r3, r2] - hi2c->PreviousState = I2C_STATE_NONE; 8002c40: 687b ldr r3, [r7, #4] - 8002c42: 2200 movs r2, #0 - 8002c44: 631a str r2, [r3, #48] @ 0x30 + 8002c42: 6adb ldr r3, [r3, #44] @ 0x2c + 8002c44: 4a27 ldr r2, [pc, #156] @ (8002ce4 ) + 8002c46: 4293 cmp r3, r2 + 8002c48: d016 beq.n 8002c78 + I2C_ITSlaveSeqCplt(hi2c); + 8002c4a: 687b ldr r3, [r7, #4] + 8002c4c: 0018 movs r0, r3 + 8002c4e: f7ff fd91 bl 8002774 + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 8002c52: 687b ldr r3, [r7, #4] + 8002c54: 4a23 ldr r2, [pc, #140] @ (8002ce4 ) + 8002c56: 62da str r2, [r3, #44] @ 0x2c + hi2c->State = HAL_I2C_STATE_READY; + 8002c58: 687b ldr r3, [r7, #4] + 8002c5a: 2241 movs r2, #65 @ 0x41 + 8002c5c: 2120 movs r1, #32 + 8002c5e: 5499 strb r1, [r3, r2] + hi2c->PreviousState = I2C_STATE_NONE; + 8002c60: 687b ldr r3, [r7, #4] + 8002c62: 2200 movs r2, #0 + 8002c64: 631a str r2, [r3, #48] @ 0x30 __HAL_UNLOCK(hi2c); - 8002c46: 687b ldr r3, [r7, #4] - 8002c48: 2240 movs r2, #64 @ 0x40 - 8002c4a: 2100 movs r1, #0 - 8002c4c: 5499 strb r1, [r3, r2] - HAL_I2C_SlaveTxCpltCallback(hi2c); - 8002c4e: 687b ldr r3, [r7, #4] - 8002c50: 0018 movs r0, r3 - 8002c52: f7fd fe9d bl 8000990 + 8002c66: 687b ldr r3, [r7, #4] + 8002c68: 2240 movs r2, #64 @ 0x40 + 8002c6a: 2100 movs r1, #0 + 8002c6c: 5499 strb r1, [r3, r2] + HAL_I2C_ListenCpltCallback(hi2c); + 8002c6e: 687b ldr r3, [r7, #4] + 8002c70: 0018 movs r0, r3 + 8002c72: f7fd fd69 bl 8000748 } - 8002c56: 46c0 nop @ (mov r8, r8) - 8002c58: 46bd mov sp, r7 - 8002c5a: b006 add sp, #24 - 8002c5c: bd80 pop {r7, pc} - 8002c5e: 46c0 nop @ (mov r8, r8) - 8002c60: 00008001 .word 0x00008001 - 8002c64: 00008002 .word 0x00008002 - 8002c68: 00008003 .word 0x00008003 - 8002c6c: fe00e800 .word 0xfe00e800 - 8002c70: ffffbfff .word 0xffffbfff - 8002c74: ffff7fff .word 0xffff7fff - 8002c78: ffff0000 .word 0xffff0000 + 8002c76: e024 b.n 8002cc2 + else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + 8002c78: 687b ldr r3, [r7, #4] + 8002c7a: 2241 movs r2, #65 @ 0x41 + 8002c7c: 5c9b ldrb r3, [r3, r2] + 8002c7e: b2db uxtb r3, r3 + 8002c80: 2b22 cmp r3, #34 @ 0x22 + 8002c82: d10f bne.n 8002ca4 + hi2c->State = HAL_I2C_STATE_READY; + 8002c84: 687b ldr r3, [r7, #4] + 8002c86: 2241 movs r2, #65 @ 0x41 + 8002c88: 2120 movs r1, #32 + 8002c8a: 5499 strb r1, [r3, r2] + hi2c->PreviousState = I2C_STATE_NONE; + 8002c8c: 687b ldr r3, [r7, #4] + 8002c8e: 2200 movs r2, #0 + 8002c90: 631a str r2, [r3, #48] @ 0x30 + __HAL_UNLOCK(hi2c); + 8002c92: 687b ldr r3, [r7, #4] + 8002c94: 2240 movs r2, #64 @ 0x40 + 8002c96: 2100 movs r1, #0 + 8002c98: 5499 strb r1, [r3, r2] + HAL_I2C_SlaveRxCpltCallback(hi2c); + 8002c9a: 687b ldr r3, [r7, #4] + 8002c9c: 0018 movs r0, r3 + 8002c9e: f7fd fe4f bl 8000940 +} + 8002ca2: e00e b.n 8002cc2 + hi2c->State = HAL_I2C_STATE_READY; + 8002ca4: 687b ldr r3, [r7, #4] + 8002ca6: 2241 movs r2, #65 @ 0x41 + 8002ca8: 2120 movs r1, #32 + 8002caa: 5499 strb r1, [r3, r2] + hi2c->PreviousState = I2C_STATE_NONE; + 8002cac: 687b ldr r3, [r7, #4] + 8002cae: 2200 movs r2, #0 + 8002cb0: 631a str r2, [r3, #48] @ 0x30 + __HAL_UNLOCK(hi2c); + 8002cb2: 687b ldr r3, [r7, #4] + 8002cb4: 2240 movs r2, #64 @ 0x40 + 8002cb6: 2100 movs r1, #0 + 8002cb8: 5499 strb r1, [r3, r2] + HAL_I2C_SlaveTxCpltCallback(hi2c); + 8002cba: 687b ldr r3, [r7, #4] + 8002cbc: 0018 movs r0, r3 + 8002cbe: f7fd fe8f bl 80009e0 +} + 8002cc2: 46c0 nop @ (mov r8, r8) + 8002cc4: 46bd mov sp, r7 + 8002cc6: b006 add sp, #24 + 8002cc8: bd80 pop {r7, pc} + 8002cca: 46c0 nop @ (mov r8, r8) + 8002ccc: 00008001 .word 0x00008001 + 8002cd0: 00008002 .word 0x00008002 + 8002cd4: 00008003 .word 0x00008003 + 8002cd8: fe00e800 .word 0xfe00e800 + 8002cdc: ffffbfff .word 0xffffbfff + 8002ce0: ffff7fff .word 0xffff7fff + 8002ce4: ffff0000 .word 0xffff0000 -08002c7c : +08002ce8 : * @param hi2c I2C handle. * @param ITFlags Interrupt flags to handle. * @retval None */ static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) { - 8002c7c: b580 push {r7, lr} - 8002c7e: b082 sub sp, #8 - 8002c80: af00 add r7, sp, #0 - 8002c82: 6078 str r0, [r7, #4] - 8002c84: 6039 str r1, [r7, #0] + 8002ce8: b580 push {r7, lr} + 8002cea: b082 sub sp, #8 + 8002cec: af00 add r7, sp, #0 + 8002cee: 6078 str r0, [r7, #4] + 8002cf0: 6039 str r1, [r7, #0] /* Reset handle parameters */ hi2c->XferOptions = I2C_NO_OPTION_FRAME; - 8002c86: 687b ldr r3, [r7, #4] - 8002c88: 4a26 ldr r2, [pc, #152] @ (8002d24 ) - 8002c8a: 62da str r2, [r3, #44] @ 0x2c + 8002cf2: 687b ldr r3, [r7, #4] + 8002cf4: 4a26 ldr r2, [pc, #152] @ (8002d90 ) + 8002cf6: 62da str r2, [r3, #44] @ 0x2c hi2c->PreviousState = I2C_STATE_NONE; - 8002c8c: 687b ldr r3, [r7, #4] - 8002c8e: 2200 movs r2, #0 - 8002c90: 631a str r2, [r3, #48] @ 0x30 + 8002cf8: 687b ldr r3, [r7, #4] + 8002cfa: 2200 movs r2, #0 + 8002cfc: 631a str r2, [r3, #48] @ 0x30 hi2c->State = HAL_I2C_STATE_READY; - 8002c92: 687b ldr r3, [r7, #4] - 8002c94: 2241 movs r2, #65 @ 0x41 - 8002c96: 2120 movs r1, #32 - 8002c98: 5499 strb r1, [r3, r2] + 8002cfe: 687b ldr r3, [r7, #4] + 8002d00: 2241 movs r2, #65 @ 0x41 + 8002d02: 2120 movs r1, #32 + 8002d04: 5499 strb r1, [r3, r2] hi2c->Mode = HAL_I2C_MODE_NONE; - 8002c9a: 687b ldr r3, [r7, #4] - 8002c9c: 2242 movs r2, #66 @ 0x42 - 8002c9e: 2100 movs r1, #0 - 8002ca0: 5499 strb r1, [r3, r2] + 8002d06: 687b ldr r3, [r7, #4] + 8002d08: 2242 movs r2, #66 @ 0x42 + 8002d0a: 2100 movs r1, #0 + 8002d0c: 5499 strb r1, [r3, r2] hi2c->XferISR = NULL; - 8002ca2: 687b ldr r3, [r7, #4] - 8002ca4: 2200 movs r2, #0 - 8002ca6: 635a str r2, [r3, #52] @ 0x34 + 8002d0e: 687b ldr r3, [r7, #4] + 8002d10: 2200 movs r2, #0 + 8002d12: 635a str r2, [r3, #52] @ 0x34 /* Store Last receive data if any */ if (I2C_CHECK_FLAG(ITFlags, I2C_FLAG_RXNE) != RESET) - 8002ca8: 683b ldr r3, [r7, #0] - 8002caa: 2204 movs r2, #4 - 8002cac: 4013 ands r3, r2 - 8002cae: d022 beq.n 8002cf6 + 8002d14: 683b ldr r3, [r7, #0] + 8002d16: 2204 movs r2, #4 + 8002d18: 4013 ands r3, r2 + 8002d1a: d022 beq.n 8002d62 { /* Read data from RXDR */ *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; - 8002cb0: 687b ldr r3, [r7, #4] - 8002cb2: 681b ldr r3, [r3, #0] - 8002cb4: 6a5a ldr r2, [r3, #36] @ 0x24 - 8002cb6: 687b ldr r3, [r7, #4] - 8002cb8: 6a5b ldr r3, [r3, #36] @ 0x24 - 8002cba: b2d2 uxtb r2, r2 - 8002cbc: 701a strb r2, [r3, #0] + 8002d1c: 687b ldr r3, [r7, #4] + 8002d1e: 681b ldr r3, [r3, #0] + 8002d20: 6a5a ldr r2, [r3, #36] @ 0x24 + 8002d22: 687b ldr r3, [r7, #4] + 8002d24: 6a5b ldr r3, [r3, #36] @ 0x24 + 8002d26: b2d2 uxtb r2, r2 + 8002d28: 701a strb r2, [r3, #0] /* Increment Buffer pointer */ hi2c->pBuffPtr++; - 8002cbe: 687b ldr r3, [r7, #4] - 8002cc0: 6a5b ldr r3, [r3, #36] @ 0x24 - 8002cc2: 1c5a adds r2, r3, #1 - 8002cc4: 687b ldr r3, [r7, #4] - 8002cc6: 625a str r2, [r3, #36] @ 0x24 + 8002d2a: 687b ldr r3, [r7, #4] + 8002d2c: 6a5b ldr r3, [r3, #36] @ 0x24 + 8002d2e: 1c5a adds r2, r3, #1 + 8002d30: 687b ldr r3, [r7, #4] + 8002d32: 625a str r2, [r3, #36] @ 0x24 if ((hi2c->XferSize > 0U)) - 8002cc8: 687b ldr r3, [r7, #4] - 8002cca: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8002ccc: 2b00 cmp r3, #0 - 8002cce: d012 beq.n 8002cf6 + 8002d34: 687b ldr r3, [r7, #4] + 8002d36: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8002d38: 2b00 cmp r3, #0 + 8002d3a: d012 beq.n 8002d62 { hi2c->XferSize--; - 8002cd0: 687b ldr r3, [r7, #4] - 8002cd2: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8002cd4: 3b01 subs r3, #1 - 8002cd6: b29a uxth r2, r3 - 8002cd8: 687b ldr r3, [r7, #4] - 8002cda: 851a strh r2, [r3, #40] @ 0x28 + 8002d3c: 687b ldr r3, [r7, #4] + 8002d3e: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8002d40: 3b01 subs r3, #1 + 8002d42: b29a uxth r2, r3 + 8002d44: 687b ldr r3, [r7, #4] + 8002d46: 851a strh r2, [r3, #40] @ 0x28 hi2c->XferCount--; - 8002cdc: 687b ldr r3, [r7, #4] - 8002cde: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8002ce0: b29b uxth r3, r3 - 8002ce2: 3b01 subs r3, #1 - 8002ce4: b29a uxth r2, r3 - 8002ce6: 687b ldr r3, [r7, #4] - 8002ce8: 855a strh r2, [r3, #42] @ 0x2a + 8002d48: 687b ldr r3, [r7, #4] + 8002d4a: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8002d4c: b29b uxth r3, r3 + 8002d4e: 3b01 subs r3, #1 + 8002d50: b29a uxth r2, r3 + 8002d52: 687b ldr r3, [r7, #4] + 8002d54: 855a strh r2, [r3, #42] @ 0x2a /* Set ErrorCode corresponding to a Non-Acknowledge */ hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 8002cea: 687b ldr r3, [r7, #4] - 8002cec: 6c5b ldr r3, [r3, #68] @ 0x44 - 8002cee: 2204 movs r2, #4 - 8002cf0: 431a orrs r2, r3 - 8002cf2: 687b ldr r3, [r7, #4] - 8002cf4: 645a str r2, [r3, #68] @ 0x44 + 8002d56: 687b ldr r3, [r7, #4] + 8002d58: 6c5b ldr r3, [r3, #68] @ 0x44 + 8002d5a: 2204 movs r2, #4 + 8002d5c: 431a orrs r2, r3 + 8002d5e: 687b ldr r3, [r7, #4] + 8002d60: 645a str r2, [r3, #68] @ 0x44 } } /* Disable all Interrupts*/ I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); - 8002cf6: 4a0c ldr r2, [pc, #48] @ (8002d28 ) - 8002cf8: 687b ldr r3, [r7, #4] - 8002cfa: 0011 movs r1, r2 - 8002cfc: 0018 movs r0, r3 - 8002cfe: f000 fa45 bl 800318c + 8002d62: 4a0c ldr r2, [pc, #48] @ (8002d94 ) + 8002d64: 687b ldr r3, [r7, #4] + 8002d66: 0011 movs r1, r2 + 8002d68: 0018 movs r0, r3 + 8002d6a: f000 fa45 bl 80031f8 /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8002d02: 687b ldr r3, [r7, #4] - 8002d04: 681b ldr r3, [r3, #0] - 8002d06: 2210 movs r2, #16 - 8002d08: 61da str r2, [r3, #28] + 8002d6e: 687b ldr r3, [r7, #4] + 8002d70: 681b ldr r3, [r3, #0] + 8002d72: 2210 movs r2, #16 + 8002d74: 61da str r2, [r3, #28] /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8002d0a: 687b ldr r3, [r7, #4] - 8002d0c: 2240 movs r2, #64 @ 0x40 - 8002d0e: 2100 movs r1, #0 - 8002d10: 5499 strb r1, [r3, r2] + 8002d76: 687b ldr r3, [r7, #4] + 8002d78: 2240 movs r2, #64 @ 0x40 + 8002d7a: 2100 movs r1, #0 + 8002d7c: 5499 strb r1, [r3, r2] /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) hi2c->ListenCpltCallback(hi2c); #else HAL_I2C_ListenCpltCallback(hi2c); - 8002d12: 687b ldr r3, [r7, #4] - 8002d14: 0018 movs r0, r3 - 8002d16: f7fd fcef bl 80006f8 + 8002d7e: 687b ldr r3, [r7, #4] + 8002d80: 0018 movs r0, r3 + 8002d82: f7fd fce1 bl 8000748 #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ } - 8002d1a: 46c0 nop @ (mov r8, r8) - 8002d1c: 46bd mov sp, r7 - 8002d1e: b002 add sp, #8 - 8002d20: bd80 pop {r7, pc} - 8002d22: 46c0 nop @ (mov r8, r8) - 8002d24: ffff0000 .word 0xffff0000 - 8002d28: 00008003 .word 0x00008003 + 8002d86: 46c0 nop @ (mov r8, r8) + 8002d88: 46bd mov sp, r7 + 8002d8a: b002 add sp, #8 + 8002d8c: bd80 pop {r7, pc} + 8002d8e: 46c0 nop @ (mov r8, r8) + 8002d90: ffff0000 .word 0xffff0000 + 8002d94: 00008003 .word 0x00008003 -08002d2c : +08002d98 : * @param hi2c I2C handle. * @param ErrorCode Error code to handle. * @retval None */ static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode) { - 8002d2c: b580 push {r7, lr} - 8002d2e: b084 sub sp, #16 - 8002d30: af00 add r7, sp, #0 - 8002d32: 6078 str r0, [r7, #4] - 8002d34: 6039 str r1, [r7, #0] + 8002d98: b580 push {r7, lr} + 8002d9a: b084 sub sp, #16 + 8002d9c: af00 add r7, sp, #0 + 8002d9e: 6078 str r0, [r7, #4] + 8002da0: 6039 str r1, [r7, #0] HAL_I2C_StateTypeDef tmpstate = hi2c->State; - 8002d36: 200f movs r0, #15 - 8002d38: 183b adds r3, r7, r0 - 8002d3a: 687a ldr r2, [r7, #4] - 8002d3c: 2141 movs r1, #65 @ 0x41 - 8002d3e: 5c52 ldrb r2, [r2, r1] - 8002d40: 701a strb r2, [r3, #0] + 8002da2: 200f movs r0, #15 + 8002da4: 183b adds r3, r7, r0 + 8002da6: 687a ldr r2, [r7, #4] + 8002da8: 2141 movs r1, #65 @ 0x41 + 8002daa: 5c52 ldrb r2, [r2, r1] + 8002dac: 701a strb r2, [r3, #0] uint32_t tmppreviousstate; /* Reset handle parameters */ hi2c->Mode = HAL_I2C_MODE_NONE; - 8002d42: 687b ldr r3, [r7, #4] - 8002d44: 2242 movs r2, #66 @ 0x42 - 8002d46: 2100 movs r1, #0 - 8002d48: 5499 strb r1, [r3, r2] + 8002dae: 687b ldr r3, [r7, #4] + 8002db0: 2242 movs r2, #66 @ 0x42 + 8002db2: 2100 movs r1, #0 + 8002db4: 5499 strb r1, [r3, r2] hi2c->XferOptions = I2C_NO_OPTION_FRAME; - 8002d4a: 687b ldr r3, [r7, #4] - 8002d4c: 4a72 ldr r2, [pc, #456] @ (8002f18 ) - 8002d4e: 62da str r2, [r3, #44] @ 0x2c + 8002db6: 687b ldr r3, [r7, #4] + 8002db8: 4a72 ldr r2, [pc, #456] @ (8002f84 ) + 8002dba: 62da str r2, [r3, #44] @ 0x2c hi2c->XferCount = 0U; - 8002d50: 687b ldr r3, [r7, #4] - 8002d52: 2200 movs r2, #0 - 8002d54: 855a strh r2, [r3, #42] @ 0x2a + 8002dbc: 687b ldr r3, [r7, #4] + 8002dbe: 2200 movs r2, #0 + 8002dc0: 855a strh r2, [r3, #42] @ 0x2a /* Set new error code */ hi2c->ErrorCode |= ErrorCode; - 8002d56: 687b ldr r3, [r7, #4] - 8002d58: 6c5a ldr r2, [r3, #68] @ 0x44 - 8002d5a: 683b ldr r3, [r7, #0] - 8002d5c: 431a orrs r2, r3 - 8002d5e: 687b ldr r3, [r7, #4] - 8002d60: 645a str r2, [r3, #68] @ 0x44 + 8002dc2: 687b ldr r3, [r7, #4] + 8002dc4: 6c5a ldr r2, [r3, #68] @ 0x44 + 8002dc6: 683b ldr r3, [r7, #0] + 8002dc8: 431a orrs r2, r3 + 8002dca: 687b ldr r3, [r7, #4] + 8002dcc: 645a str r2, [r3, #68] @ 0x44 /* Disable Interrupts */ if ((tmpstate == HAL_I2C_STATE_LISTEN) || - 8002d62: 183b adds r3, r7, r0 - 8002d64: 781b ldrb r3, [r3, #0] - 8002d66: 2b28 cmp r3, #40 @ 0x28 - 8002d68: d007 beq.n 8002d7a - 8002d6a: 183b adds r3, r7, r0 - 8002d6c: 781b ldrb r3, [r3, #0] - 8002d6e: 2b29 cmp r3, #41 @ 0x29 - 8002d70: d003 beq.n 8002d7a + 8002dce: 183b adds r3, r7, r0 + 8002dd0: 781b ldrb r3, [r3, #0] + 8002dd2: 2b28 cmp r3, #40 @ 0x28 + 8002dd4: d007 beq.n 8002de6 + 8002dd6: 183b adds r3, r7, r0 + 8002dd8: 781b ldrb r3, [r3, #0] + 8002dda: 2b29 cmp r3, #41 @ 0x29 + 8002ddc: d003 beq.n 8002de6 (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN) || - 8002d72: 183b adds r3, r7, r0 - 8002d74: 781b ldrb r3, [r3, #0] - 8002d76: 2b2a cmp r3, #42 @ 0x2a - 8002d78: d10c bne.n 8002d94 + 8002dde: 183b adds r3, r7, r0 + 8002de0: 781b ldrb r3, [r3, #0] + 8002de2: 2b2a cmp r3, #42 @ 0x2a + 8002de4: d10c bne.n 8002e00 (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) { /* Disable all interrupts, except interrupts related to LISTEN state */ I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_TX_IT); - 8002d7a: 687b ldr r3, [r7, #4] - 8002d7c: 2103 movs r1, #3 - 8002d7e: 0018 movs r0, r3 - 8002d80: f000 fa04 bl 800318c + 8002de6: 687b ldr r3, [r7, #4] + 8002de8: 2103 movs r1, #3 + 8002dea: 0018 movs r0, r3 + 8002dec: f000 fa04 bl 80031f8 /* keep HAL_I2C_STATE_LISTEN if set */ hi2c->State = HAL_I2C_STATE_LISTEN; - 8002d84: 687b ldr r3, [r7, #4] - 8002d86: 2241 movs r2, #65 @ 0x41 - 8002d88: 2128 movs r1, #40 @ 0x28 - 8002d8a: 5499 strb r1, [r3, r2] + 8002df0: 687b ldr r3, [r7, #4] + 8002df2: 2241 movs r2, #65 @ 0x41 + 8002df4: 2128 movs r1, #40 @ 0x28 + 8002df6: 5499 strb r1, [r3, r2] hi2c->XferISR = I2C_Slave_ISR_IT; - 8002d8c: 687b ldr r3, [r7, #4] - 8002d8e: 4a63 ldr r2, [pc, #396] @ (8002f1c ) - 8002d90: 635a str r2, [r3, #52] @ 0x34 - 8002d92: e032 b.n 8002dfa + 8002df8: 687b ldr r3, [r7, #4] + 8002dfa: 4a63 ldr r2, [pc, #396] @ (8002f88 ) + 8002dfc: 635a str r2, [r3, #52] @ 0x34 + 8002dfe: e032 b.n 8002e66 } else { /* Disable all interrupts */ I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); - 8002d94: 4a62 ldr r2, [pc, #392] @ (8002f20 ) - 8002d96: 687b ldr r3, [r7, #4] - 8002d98: 0011 movs r1, r2 - 8002d9a: 0018 movs r0, r3 - 8002d9c: f000 f9f6 bl 800318c + 8002e00: 4a62 ldr r2, [pc, #392] @ (8002f8c ) + 8002e02: 687b ldr r3, [r7, #4] + 8002e04: 0011 movs r1, r2 + 8002e06: 0018 movs r0, r3 + 8002e08: f000 f9f6 bl 80031f8 /* Flush TX register */ I2C_Flush_TXDR(hi2c); - 8002da0: 687b ldr r3, [r7, #4] - 8002da2: 0018 movs r0, r3 - 8002da4: f000 f8ed bl 8002f82 + 8002e0c: 687b ldr r3, [r7, #4] + 8002e0e: 0018 movs r0, r3 + 8002e10: f000 f8ed bl 8002fee /* If state is an abort treatment on going, don't change state */ /* This change will be do later */ if (hi2c->State != HAL_I2C_STATE_ABORT) - 8002da8: 687b ldr r3, [r7, #4] - 8002daa: 2241 movs r2, #65 @ 0x41 - 8002dac: 5c9b ldrb r3, [r3, r2] - 8002dae: b2db uxtb r3, r3 - 8002db0: 2b60 cmp r3, #96 @ 0x60 - 8002db2: d01f beq.n 8002df4 + 8002e14: 687b ldr r3, [r7, #4] + 8002e16: 2241 movs r2, #65 @ 0x41 + 8002e18: 5c9b ldrb r3, [r3, r2] + 8002e1a: b2db uxtb r3, r3 + 8002e1c: 2b60 cmp r3, #96 @ 0x60 + 8002e1e: d01f beq.n 8002e60 { /* Set HAL_I2C_STATE_READY */ hi2c->State = HAL_I2C_STATE_READY; - 8002db4: 687b ldr r3, [r7, #4] - 8002db6: 2241 movs r2, #65 @ 0x41 - 8002db8: 2120 movs r1, #32 - 8002dba: 5499 strb r1, [r3, r2] + 8002e20: 687b ldr r3, [r7, #4] + 8002e22: 2241 movs r2, #65 @ 0x41 + 8002e24: 2120 movs r1, #32 + 8002e26: 5499 strb r1, [r3, r2] /* Check if a STOPF is detected */ if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) - 8002dbc: 687b ldr r3, [r7, #4] - 8002dbe: 681b ldr r3, [r3, #0] - 8002dc0: 699b ldr r3, [r3, #24] - 8002dc2: 2220 movs r2, #32 - 8002dc4: 4013 ands r3, r2 - 8002dc6: 2b20 cmp r3, #32 - 8002dc8: d114 bne.n 8002df4 + 8002e28: 687b ldr r3, [r7, #4] + 8002e2a: 681b ldr r3, [r3, #0] + 8002e2c: 699b ldr r3, [r3, #24] + 8002e2e: 2220 movs r2, #32 + 8002e30: 4013 ands r3, r2 + 8002e32: 2b20 cmp r3, #32 + 8002e34: d114 bne.n 8002e60 { if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) - 8002dca: 687b ldr r3, [r7, #4] - 8002dcc: 681b ldr r3, [r3, #0] - 8002dce: 699b ldr r3, [r3, #24] - 8002dd0: 2210 movs r2, #16 - 8002dd2: 4013 ands r3, r2 - 8002dd4: 2b10 cmp r3, #16 - 8002dd6: d109 bne.n 8002dec + 8002e36: 687b ldr r3, [r7, #4] + 8002e38: 681b ldr r3, [r3, #0] + 8002e3a: 699b ldr r3, [r3, #24] + 8002e3c: 2210 movs r2, #16 + 8002e3e: 4013 ands r3, r2 + 8002e40: 2b10 cmp r3, #16 + 8002e42: d109 bne.n 8002e58 { __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8002dd8: 687b ldr r3, [r7, #4] - 8002dda: 681b ldr r3, [r3, #0] - 8002ddc: 2210 movs r2, #16 - 8002dde: 61da str r2, [r3, #28] + 8002e44: 687b ldr r3, [r7, #4] + 8002e46: 681b ldr r3, [r3, #0] + 8002e48: 2210 movs r2, #16 + 8002e4a: 61da str r2, [r3, #28] hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 8002de0: 687b ldr r3, [r7, #4] - 8002de2: 6c5b ldr r3, [r3, #68] @ 0x44 - 8002de4: 2204 movs r2, #4 - 8002de6: 431a orrs r2, r3 - 8002de8: 687b ldr r3, [r7, #4] - 8002dea: 645a str r2, [r3, #68] @ 0x44 + 8002e4c: 687b ldr r3, [r7, #4] + 8002e4e: 6c5b ldr r3, [r3, #68] @ 0x44 + 8002e50: 2204 movs r2, #4 + 8002e52: 431a orrs r2, r3 + 8002e54: 687b ldr r3, [r7, #4] + 8002e56: 645a str r2, [r3, #68] @ 0x44 } /* Clear STOP Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); - 8002dec: 687b ldr r3, [r7, #4] - 8002dee: 681b ldr r3, [r3, #0] - 8002df0: 2220 movs r2, #32 - 8002df2: 61da str r2, [r3, #28] + 8002e58: 687b ldr r3, [r7, #4] + 8002e5a: 681b ldr r3, [r3, #0] + 8002e5c: 2220 movs r2, #32 + 8002e5e: 61da str r2, [r3, #28] } } hi2c->XferISR = NULL; - 8002df4: 687b ldr r3, [r7, #4] - 8002df6: 2200 movs r2, #0 - 8002df8: 635a str r2, [r3, #52] @ 0x34 + 8002e60: 687b ldr r3, [r7, #4] + 8002e62: 2200 movs r2, #0 + 8002e64: 635a str r2, [r3, #52] @ 0x34 } /* Abort DMA TX transfer if any */ tmppreviousstate = hi2c->PreviousState; - 8002dfa: 687b ldr r3, [r7, #4] - 8002dfc: 6b1b ldr r3, [r3, #48] @ 0x30 - 8002dfe: 60bb str r3, [r7, #8] + 8002e66: 687b ldr r3, [r7, #4] + 8002e68: 6b1b ldr r3, [r3, #48] @ 0x30 + 8002e6a: 60bb str r3, [r7, #8] if ((hi2c->hdmatx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_TX) || \ - 8002e00: 687b ldr r3, [r7, #4] - 8002e02: 6b9b ldr r3, [r3, #56] @ 0x38 - 8002e04: 2b00 cmp r3, #0 - 8002e06: d03b beq.n 8002e80 - 8002e08: 68bb ldr r3, [r7, #8] - 8002e0a: 2b11 cmp r3, #17 - 8002e0c: d002 beq.n 8002e14 - 8002e0e: 68bb ldr r3, [r7, #8] - 8002e10: 2b21 cmp r3, #33 @ 0x21 - 8002e12: d135 bne.n 8002e80 + 8002e6c: 687b ldr r3, [r7, #4] + 8002e6e: 6b9b ldr r3, [r3, #56] @ 0x38 + 8002e70: 2b00 cmp r3, #0 + 8002e72: d03b beq.n 8002eec + 8002e74: 68bb ldr r3, [r7, #8] + 8002e76: 2b11 cmp r3, #17 + 8002e78: d002 beq.n 8002e80 + 8002e7a: 68bb ldr r3, [r7, #8] + 8002e7c: 2b21 cmp r3, #33 @ 0x21 + 8002e7e: d135 bne.n 8002eec (tmppreviousstate == I2C_STATE_SLAVE_BUSY_TX))) { if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) - 8002e14: 687b ldr r3, [r7, #4] - 8002e16: 681b ldr r3, [r3, #0] - 8002e18: 681a ldr r2, [r3, #0] - 8002e1a: 2380 movs r3, #128 @ 0x80 - 8002e1c: 01db lsls r3, r3, #7 - 8002e1e: 401a ands r2, r3 - 8002e20: 2380 movs r3, #128 @ 0x80 - 8002e22: 01db lsls r3, r3, #7 - 8002e24: 429a cmp r2, r3 - 8002e26: d107 bne.n 8002e38 + 8002e80: 687b ldr r3, [r7, #4] + 8002e82: 681b ldr r3, [r3, #0] + 8002e84: 681a ldr r2, [r3, #0] + 8002e86: 2380 movs r3, #128 @ 0x80 + 8002e88: 01db lsls r3, r3, #7 + 8002e8a: 401a ands r2, r3 + 8002e8c: 2380 movs r3, #128 @ 0x80 + 8002e8e: 01db lsls r3, r3, #7 + 8002e90: 429a cmp r2, r3 + 8002e92: d107 bne.n 8002ea4 { hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; - 8002e28: 687b ldr r3, [r7, #4] - 8002e2a: 681b ldr r3, [r3, #0] - 8002e2c: 681a ldr r2, [r3, #0] - 8002e2e: 687b ldr r3, [r7, #4] - 8002e30: 681b ldr r3, [r3, #0] - 8002e32: 493c ldr r1, [pc, #240] @ (8002f24 ) - 8002e34: 400a ands r2, r1 - 8002e36: 601a str r2, [r3, #0] + 8002e94: 687b ldr r3, [r7, #4] + 8002e96: 681b ldr r3, [r3, #0] + 8002e98: 681a ldr r2, [r3, #0] + 8002e9a: 687b ldr r3, [r7, #4] + 8002e9c: 681b ldr r3, [r3, #0] + 8002e9e: 493c ldr r1, [pc, #240] @ (8002f90 ) + 8002ea0: 400a ands r2, r1 + 8002ea2: 601a str r2, [r3, #0] } if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) - 8002e38: 687b ldr r3, [r7, #4] - 8002e3a: 6b9b ldr r3, [r3, #56] @ 0x38 - 8002e3c: 0018 movs r0, r3 - 8002e3e: f7fe fad5 bl 80013ec - 8002e42: 0003 movs r3, r0 - 8002e44: 2b01 cmp r3, #1 - 8002e46: d016 beq.n 8002e76 + 8002ea4: 687b ldr r3, [r7, #4] + 8002ea6: 6b9b ldr r3, [r3, #56] @ 0x38 + 8002ea8: 0018 movs r0, r3 + 8002eaa: f7fe fad5 bl 8001458 + 8002eae: 0003 movs r3, r0 + 8002eb0: 2b01 cmp r3, #1 + 8002eb2: d016 beq.n 8002ee2 { /* Set the I2C DMA Abort callback : will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; - 8002e48: 687b ldr r3, [r7, #4] - 8002e4a: 6b9b ldr r3, [r3, #56] @ 0x38 - 8002e4c: 4a36 ldr r2, [pc, #216] @ (8002f28 ) - 8002e4e: 639a str r2, [r3, #56] @ 0x38 + 8002eb4: 687b ldr r3, [r7, #4] + 8002eb6: 6b9b ldr r3, [r3, #56] @ 0x38 + 8002eb8: 4a36 ldr r2, [pc, #216] @ (8002f94 ) + 8002eba: 639a str r2, [r3, #56] @ 0x38 /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8002e50: 687b ldr r3, [r7, #4] - 8002e52: 2240 movs r2, #64 @ 0x40 - 8002e54: 2100 movs r1, #0 - 8002e56: 5499 strb r1, [r3, r2] + 8002ebc: 687b ldr r3, [r7, #4] + 8002ebe: 2240 movs r2, #64 @ 0x40 + 8002ec0: 2100 movs r1, #0 + 8002ec2: 5499 strb r1, [r3, r2] /* Abort DMA TX */ if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) - 8002e58: 687b ldr r3, [r7, #4] - 8002e5a: 6b9b ldr r3, [r3, #56] @ 0x38 - 8002e5c: 0018 movs r0, r3 - 8002e5e: f7fe fa5b bl 8001318 - 8002e62: 1e03 subs r3, r0, #0 - 8002e64: d051 beq.n 8002f0a + 8002ec4: 687b ldr r3, [r7, #4] + 8002ec6: 6b9b ldr r3, [r3, #56] @ 0x38 + 8002ec8: 0018 movs r0, r3 + 8002eca: f7fe fa5b bl 8001384 + 8002ece: 1e03 subs r3, r0, #0 + 8002ed0: d051 beq.n 8002f76 { /* Call Directly XferAbortCallback function in case of error */ hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); - 8002e66: 687b ldr r3, [r7, #4] - 8002e68: 6b9b ldr r3, [r3, #56] @ 0x38 - 8002e6a: 6b9a ldr r2, [r3, #56] @ 0x38 - 8002e6c: 687b ldr r3, [r7, #4] - 8002e6e: 6b9b ldr r3, [r3, #56] @ 0x38 - 8002e70: 0018 movs r0, r3 - 8002e72: 4790 blx r2 + 8002ed2: 687b ldr r3, [r7, #4] + 8002ed4: 6b9b ldr r3, [r3, #56] @ 0x38 + 8002ed6: 6b9a ldr r2, [r3, #56] @ 0x38 + 8002ed8: 687b ldr r3, [r7, #4] + 8002eda: 6b9b ldr r3, [r3, #56] @ 0x38 + 8002edc: 0018 movs r0, r3 + 8002ede: 4790 blx r2 if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) - 8002e74: e049 b.n 8002f0a + 8002ee0: e049 b.n 8002f76 } } else { I2C_TreatErrorCallback(hi2c); - 8002e76: 687b ldr r3, [r7, #4] - 8002e78: 0018 movs r0, r3 - 8002e7a: f000 f859 bl 8002f30 + 8002ee2: 687b ldr r3, [r7, #4] + 8002ee4: 0018 movs r0, r3 + 8002ee6: f000 f859 bl 8002f9c if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) - 8002e7e: e044 b.n 8002f0a + 8002eea: e044 b.n 8002f76 } } /* Abort DMA RX transfer if any */ else if ((hi2c->hdmarx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_RX) || \ - 8002e80: 687b ldr r3, [r7, #4] - 8002e82: 6bdb ldr r3, [r3, #60] @ 0x3c - 8002e84: 2b00 cmp r3, #0 - 8002e86: d03b beq.n 8002f00 - 8002e88: 68bb ldr r3, [r7, #8] - 8002e8a: 2b12 cmp r3, #18 - 8002e8c: d002 beq.n 8002e94 - 8002e8e: 68bb ldr r3, [r7, #8] - 8002e90: 2b22 cmp r3, #34 @ 0x22 - 8002e92: d135 bne.n 8002f00 + 8002eec: 687b ldr r3, [r7, #4] + 8002eee: 6bdb ldr r3, [r3, #60] @ 0x3c + 8002ef0: 2b00 cmp r3, #0 + 8002ef2: d03b beq.n 8002f6c + 8002ef4: 68bb ldr r3, [r7, #8] + 8002ef6: 2b12 cmp r3, #18 + 8002ef8: d002 beq.n 8002f00 + 8002efa: 68bb ldr r3, [r7, #8] + 8002efc: 2b22 cmp r3, #34 @ 0x22 + 8002efe: d135 bne.n 8002f6c (tmppreviousstate == I2C_STATE_SLAVE_BUSY_RX))) { if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) - 8002e94: 687b ldr r3, [r7, #4] - 8002e96: 681b ldr r3, [r3, #0] - 8002e98: 681a ldr r2, [r3, #0] - 8002e9a: 2380 movs r3, #128 @ 0x80 - 8002e9c: 021b lsls r3, r3, #8 - 8002e9e: 401a ands r2, r3 - 8002ea0: 2380 movs r3, #128 @ 0x80 - 8002ea2: 021b lsls r3, r3, #8 - 8002ea4: 429a cmp r2, r3 - 8002ea6: d107 bne.n 8002eb8 + 8002f00: 687b ldr r3, [r7, #4] + 8002f02: 681b ldr r3, [r3, #0] + 8002f04: 681a ldr r2, [r3, #0] + 8002f06: 2380 movs r3, #128 @ 0x80 + 8002f08: 021b lsls r3, r3, #8 + 8002f0a: 401a ands r2, r3 + 8002f0c: 2380 movs r3, #128 @ 0x80 + 8002f0e: 021b lsls r3, r3, #8 + 8002f10: 429a cmp r2, r3 + 8002f12: d107 bne.n 8002f24 { hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; - 8002ea8: 687b ldr r3, [r7, #4] - 8002eaa: 681b ldr r3, [r3, #0] - 8002eac: 681a ldr r2, [r3, #0] - 8002eae: 687b ldr r3, [r7, #4] - 8002eb0: 681b ldr r3, [r3, #0] - 8002eb2: 491e ldr r1, [pc, #120] @ (8002f2c ) - 8002eb4: 400a ands r2, r1 - 8002eb6: 601a str r2, [r3, #0] + 8002f14: 687b ldr r3, [r7, #4] + 8002f16: 681b ldr r3, [r3, #0] + 8002f18: 681a ldr r2, [r3, #0] + 8002f1a: 687b ldr r3, [r7, #4] + 8002f1c: 681b ldr r3, [r3, #0] + 8002f1e: 491e ldr r1, [pc, #120] @ (8002f98 ) + 8002f20: 400a ands r2, r1 + 8002f22: 601a str r2, [r3, #0] } if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) - 8002eb8: 687b ldr r3, [r7, #4] - 8002eba: 6bdb ldr r3, [r3, #60] @ 0x3c - 8002ebc: 0018 movs r0, r3 - 8002ebe: f7fe fa95 bl 80013ec - 8002ec2: 0003 movs r3, r0 - 8002ec4: 2b01 cmp r3, #1 - 8002ec6: d016 beq.n 8002ef6 + 8002f24: 687b ldr r3, [r7, #4] + 8002f26: 6bdb ldr r3, [r3, #60] @ 0x3c + 8002f28: 0018 movs r0, r3 + 8002f2a: f7fe fa95 bl 8001458 + 8002f2e: 0003 movs r3, r0 + 8002f30: 2b01 cmp r3, #1 + 8002f32: d016 beq.n 8002f62 { /* Set the I2C DMA Abort callback : will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; - 8002ec8: 687b ldr r3, [r7, #4] - 8002eca: 6bdb ldr r3, [r3, #60] @ 0x3c - 8002ecc: 4a16 ldr r2, [pc, #88] @ (8002f28 ) - 8002ece: 639a str r2, [r3, #56] @ 0x38 + 8002f34: 687b ldr r3, [r7, #4] + 8002f36: 6bdb ldr r3, [r3, #60] @ 0x3c + 8002f38: 4a16 ldr r2, [pc, #88] @ (8002f94 ) + 8002f3a: 639a str r2, [r3, #56] @ 0x38 /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8002ed0: 687b ldr r3, [r7, #4] - 8002ed2: 2240 movs r2, #64 @ 0x40 - 8002ed4: 2100 movs r1, #0 - 8002ed6: 5499 strb r1, [r3, r2] + 8002f3c: 687b ldr r3, [r7, #4] + 8002f3e: 2240 movs r2, #64 @ 0x40 + 8002f40: 2100 movs r1, #0 + 8002f42: 5499 strb r1, [r3, r2] /* Abort DMA RX */ if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) - 8002ed8: 687b ldr r3, [r7, #4] - 8002eda: 6bdb ldr r3, [r3, #60] @ 0x3c - 8002edc: 0018 movs r0, r3 - 8002ede: f7fe fa1b bl 8001318 - 8002ee2: 1e03 subs r3, r0, #0 - 8002ee4: d013 beq.n 8002f0e + 8002f44: 687b ldr r3, [r7, #4] + 8002f46: 6bdb ldr r3, [r3, #60] @ 0x3c + 8002f48: 0018 movs r0, r3 + 8002f4a: f7fe fa1b bl 8001384 + 8002f4e: 1e03 subs r3, r0, #0 + 8002f50: d013 beq.n 8002f7a { /* Call Directly hi2c->hdmarx->XferAbortCallback function in case of error */ hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); - 8002ee6: 687b ldr r3, [r7, #4] - 8002ee8: 6bdb ldr r3, [r3, #60] @ 0x3c - 8002eea: 6b9a ldr r2, [r3, #56] @ 0x38 - 8002eec: 687b ldr r3, [r7, #4] - 8002eee: 6bdb ldr r3, [r3, #60] @ 0x3c - 8002ef0: 0018 movs r0, r3 - 8002ef2: 4790 blx r2 + 8002f52: 687b ldr r3, [r7, #4] + 8002f54: 6bdb ldr r3, [r3, #60] @ 0x3c + 8002f56: 6b9a ldr r2, [r3, #56] @ 0x38 + 8002f58: 687b ldr r3, [r7, #4] + 8002f5a: 6bdb ldr r3, [r3, #60] @ 0x3c + 8002f5c: 0018 movs r0, r3 + 8002f5e: 4790 blx r2 if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) - 8002ef4: e00b b.n 8002f0e + 8002f60: e00b b.n 8002f7a } } else { I2C_TreatErrorCallback(hi2c); - 8002ef6: 687b ldr r3, [r7, #4] - 8002ef8: 0018 movs r0, r3 - 8002efa: f000 f819 bl 8002f30 + 8002f62: 687b ldr r3, [r7, #4] + 8002f64: 0018 movs r0, r3 + 8002f66: f000 f819 bl 8002f9c if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) - 8002efe: e006 b.n 8002f0e + 8002f6a: e006 b.n 8002f7a } } else { I2C_TreatErrorCallback(hi2c); - 8002f00: 687b ldr r3, [r7, #4] - 8002f02: 0018 movs r0, r3 - 8002f04: f000 f814 bl 8002f30 + 8002f6c: 687b ldr r3, [r7, #4] + 8002f6e: 0018 movs r0, r3 + 8002f70: f000 f814 bl 8002f9c } } - 8002f08: e002 b.n 8002f10 + 8002f74: e002 b.n 8002f7c if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) - 8002f0a: 46c0 nop @ (mov r8, r8) - 8002f0c: e000 b.n 8002f10 + 8002f76: 46c0 nop @ (mov r8, r8) + 8002f78: e000 b.n 8002f7c if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) - 8002f0e: 46c0 nop @ (mov r8, r8) + 8002f7a: 46c0 nop @ (mov r8, r8) } - 8002f10: 46c0 nop @ (mov r8, r8) - 8002f12: 46bd mov sp, r7 - 8002f14: b004 add sp, #16 - 8002f16: bd80 pop {r7, pc} - 8002f18: ffff0000 .word 0xffff0000 - 8002f1c: 08001d1d .word 0x08001d1d - 8002f20: 00008003 .word 0x00008003 - 8002f24: ffffbfff .word 0xffffbfff - 8002f28: 08002fc7 .word 0x08002fc7 - 8002f2c: ffff7fff .word 0xffff7fff + 8002f7c: 46c0 nop @ (mov r8, r8) + 8002f7e: 46bd mov sp, r7 + 8002f80: b004 add sp, #16 + 8002f82: bd80 pop {r7, pc} + 8002f84: ffff0000 .word 0xffff0000 + 8002f88: 08001d89 .word 0x08001d89 + 8002f8c: 00008003 .word 0x00008003 + 8002f90: ffffbfff .word 0xffffbfff + 8002f94: 08003033 .word 0x08003033 + 8002f98: ffff7fff .word 0xffff7fff -08002f30 : +08002f9c : * @brief I2C Error callback treatment. * @param hi2c I2C handle. * @retval None */ static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c) { - 8002f30: b580 push {r7, lr} - 8002f32: b082 sub sp, #8 - 8002f34: af00 add r7, sp, #0 - 8002f36: 6078 str r0, [r7, #4] + 8002f9c: b580 push {r7, lr} + 8002f9e: b082 sub sp, #8 + 8002fa0: af00 add r7, sp, #0 + 8002fa2: 6078 str r0, [r7, #4] if (hi2c->State == HAL_I2C_STATE_ABORT) - 8002f38: 687b ldr r3, [r7, #4] - 8002f3a: 2241 movs r2, #65 @ 0x41 - 8002f3c: 5c9b ldrb r3, [r3, r2] - 8002f3e: b2db uxtb r3, r3 - 8002f40: 2b60 cmp r3, #96 @ 0x60 - 8002f42: d10f bne.n 8002f64 + 8002fa4: 687b ldr r3, [r7, #4] + 8002fa6: 2241 movs r2, #65 @ 0x41 + 8002fa8: 5c9b ldrb r3, [r3, r2] + 8002faa: b2db uxtb r3, r3 + 8002fac: 2b60 cmp r3, #96 @ 0x60 + 8002fae: d10f bne.n 8002fd0 { hi2c->State = HAL_I2C_STATE_READY; - 8002f44: 687b ldr r3, [r7, #4] - 8002f46: 2241 movs r2, #65 @ 0x41 - 8002f48: 2120 movs r1, #32 - 8002f4a: 5499 strb r1, [r3, r2] + 8002fb0: 687b ldr r3, [r7, #4] + 8002fb2: 2241 movs r2, #65 @ 0x41 + 8002fb4: 2120 movs r1, #32 + 8002fb6: 5499 strb r1, [r3, r2] hi2c->PreviousState = I2C_STATE_NONE; - 8002f4c: 687b ldr r3, [r7, #4] - 8002f4e: 2200 movs r2, #0 - 8002f50: 631a str r2, [r3, #48] @ 0x30 + 8002fb8: 687b ldr r3, [r7, #4] + 8002fba: 2200 movs r2, #0 + 8002fbc: 631a str r2, [r3, #48] @ 0x30 /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8002f52: 687b ldr r3, [r7, #4] - 8002f54: 2240 movs r2, #64 @ 0x40 - 8002f56: 2100 movs r1, #0 - 8002f58: 5499 strb r1, [r3, r2] + 8002fbe: 687b ldr r3, [r7, #4] + 8002fc0: 2240 movs r2, #64 @ 0x40 + 8002fc2: 2100 movs r1, #0 + 8002fc4: 5499 strb r1, [r3, r2] /* Call the corresponding callback to inform upper layer of End of Transfer */ #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) hi2c->AbortCpltCallback(hi2c); #else HAL_I2C_AbortCpltCallback(hi2c); - 8002f5a: 687b ldr r3, [r7, #4] - 8002f5c: 0018 movs r0, r3 - 8002f5e: f7fe fed4 bl 8001d0a + 8002fc6: 687b ldr r3, [r7, #4] + 8002fc8: 0018 movs r0, r3 + 8002fca: f7fe fed4 bl 8001d76 hi2c->ErrorCallback(hi2c); #else HAL_I2C_ErrorCallback(hi2c); #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ } } - 8002f62: e00a b.n 8002f7a + 8002fce: e00a b.n 8002fe6 hi2c->PreviousState = I2C_STATE_NONE; - 8002f64: 687b ldr r3, [r7, #4] - 8002f66: 2200 movs r2, #0 - 8002f68: 631a str r2, [r3, #48] @ 0x30 + 8002fd0: 687b ldr r3, [r7, #4] + 8002fd2: 2200 movs r2, #0 + 8002fd4: 631a str r2, [r3, #48] @ 0x30 __HAL_UNLOCK(hi2c); - 8002f6a: 687b ldr r3, [r7, #4] - 8002f6c: 2240 movs r2, #64 @ 0x40 - 8002f6e: 2100 movs r1, #0 - 8002f70: 5499 strb r1, [r3, r2] + 8002fd6: 687b ldr r3, [r7, #4] + 8002fd8: 2240 movs r2, #64 @ 0x40 + 8002fda: 2100 movs r1, #0 + 8002fdc: 5499 strb r1, [r3, r2] HAL_I2C_ErrorCallback(hi2c); - 8002f72: 687b ldr r3, [r7, #4] - 8002f74: 0018 movs r0, r3 - 8002f76: f7fe fec0 bl 8001cfa + 8002fde: 687b ldr r3, [r7, #4] + 8002fe0: 0018 movs r0, r3 + 8002fe2: f7fe fec0 bl 8001d66 } - 8002f7a: 46c0 nop @ (mov r8, r8) - 8002f7c: 46bd mov sp, r7 - 8002f7e: b002 add sp, #8 - 8002f80: bd80 pop {r7, pc} + 8002fe6: 46c0 nop @ (mov r8, r8) + 8002fe8: 46bd mov sp, r7 + 8002fea: b002 add sp, #8 + 8002fec: bd80 pop {r7, pc} -08002f82 : +08002fee : * @brief I2C Tx data register flush process. * @param hi2c I2C handle. * @retval None */ static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c) { - 8002f82: b580 push {r7, lr} - 8002f84: b082 sub sp, #8 - 8002f86: af00 add r7, sp, #0 - 8002f88: 6078 str r0, [r7, #4] + 8002fee: b580 push {r7, lr} + 8002ff0: b082 sub sp, #8 + 8002ff2: af00 add r7, sp, #0 + 8002ff4: 6078 str r0, [r7, #4] /* If a pending TXIS flag is set */ /* Write a dummy data in TXDR to clear it */ if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) != RESET) - 8002f8a: 687b ldr r3, [r7, #4] - 8002f8c: 681b ldr r3, [r3, #0] - 8002f8e: 699b ldr r3, [r3, #24] - 8002f90: 2202 movs r2, #2 - 8002f92: 4013 ands r3, r2 - 8002f94: 2b02 cmp r3, #2 - 8002f96: d103 bne.n 8002fa0 + 8002ff6: 687b ldr r3, [r7, #4] + 8002ff8: 681b ldr r3, [r3, #0] + 8002ffa: 699b ldr r3, [r3, #24] + 8002ffc: 2202 movs r2, #2 + 8002ffe: 4013 ands r3, r2 + 8003000: 2b02 cmp r3, #2 + 8003002: d103 bne.n 800300c { hi2c->Instance->TXDR = 0x00U; - 8002f98: 687b ldr r3, [r7, #4] - 8002f9a: 681b ldr r3, [r3, #0] - 8002f9c: 2200 movs r2, #0 - 8002f9e: 629a str r2, [r3, #40] @ 0x28 + 8003004: 687b ldr r3, [r7, #4] + 8003006: 681b ldr r3, [r3, #0] + 8003008: 2200 movs r2, #0 + 800300a: 629a str r2, [r3, #40] @ 0x28 } /* Flush TX register if not empty */ if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET) - 8002fa0: 687b ldr r3, [r7, #4] - 8002fa2: 681b ldr r3, [r3, #0] - 8002fa4: 699b ldr r3, [r3, #24] - 8002fa6: 2201 movs r2, #1 - 8002fa8: 4013 ands r3, r2 - 8002faa: 2b01 cmp r3, #1 - 8002fac: d007 beq.n 8002fbe + 800300c: 687b ldr r3, [r7, #4] + 800300e: 681b ldr r3, [r3, #0] + 8003010: 699b ldr r3, [r3, #24] + 8003012: 2201 movs r2, #1 + 8003014: 4013 ands r3, r2 + 8003016: 2b01 cmp r3, #1 + 8003018: d007 beq.n 800302a { __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_TXE); - 8002fae: 687b ldr r3, [r7, #4] - 8002fb0: 681b ldr r3, [r3, #0] - 8002fb2: 699a ldr r2, [r3, #24] - 8002fb4: 687b ldr r3, [r7, #4] - 8002fb6: 681b ldr r3, [r3, #0] - 8002fb8: 2101 movs r1, #1 - 8002fba: 430a orrs r2, r1 - 8002fbc: 619a str r2, [r3, #24] + 800301a: 687b ldr r3, [r7, #4] + 800301c: 681b ldr r3, [r3, #0] + 800301e: 699a ldr r2, [r3, #24] + 8003020: 687b ldr r3, [r7, #4] + 8003022: 681b ldr r3, [r3, #0] + 8003024: 2101 movs r1, #1 + 8003026: 430a orrs r2, r1 + 8003028: 619a str r2, [r3, #24] } } - 8002fbe: 46c0 nop @ (mov r8, r8) - 8002fc0: 46bd mov sp, r7 - 8002fc2: b002 add sp, #8 - 8002fc4: bd80 pop {r7, pc} + 800302a: 46c0 nop @ (mov r8, r8) + 800302c: 46bd mov sp, r7 + 800302e: b002 add sp, #8 + 8003030: bd80 pop {r7, pc} -08002fc6 : +08003032 : * (To be called at end of DMA Abort procedure). * @param hdma DMA handle. * @retval None */ static void I2C_DMAAbort(DMA_HandleTypeDef *hdma) { - 8002fc6: b580 push {r7, lr} - 8002fc8: b084 sub sp, #16 - 8002fca: af00 add r7, sp, #0 - 8002fcc: 6078 str r0, [r7, #4] + 8003032: b580 push {r7, lr} + 8003034: b084 sub sp, #16 + 8003036: af00 add r7, sp, #0 + 8003038: 6078 str r0, [r7, #4] /* Derogation MISRAC2012-Rule-11.5 */ I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); - 8002fce: 687b ldr r3, [r7, #4] - 8002fd0: 6a9b ldr r3, [r3, #40] @ 0x28 - 8002fd2: 60fb str r3, [r7, #12] + 800303a: 687b ldr r3, [r7, #4] + 800303c: 6a9b ldr r3, [r3, #40] @ 0x28 + 800303e: 60fb str r3, [r7, #12] /* Reset AbortCpltCallback */ if (hi2c->hdmatx != NULL) - 8002fd4: 68fb ldr r3, [r7, #12] - 8002fd6: 6b9b ldr r3, [r3, #56] @ 0x38 - 8002fd8: 2b00 cmp r3, #0 - 8002fda: d003 beq.n 8002fe4 + 8003040: 68fb ldr r3, [r7, #12] + 8003042: 6b9b ldr r3, [r3, #56] @ 0x38 + 8003044: 2b00 cmp r3, #0 + 8003046: d003 beq.n 8003050 { hi2c->hdmatx->XferAbortCallback = NULL; - 8002fdc: 68fb ldr r3, [r7, #12] - 8002fde: 6b9b ldr r3, [r3, #56] @ 0x38 - 8002fe0: 2200 movs r2, #0 - 8002fe2: 639a str r2, [r3, #56] @ 0x38 + 8003048: 68fb ldr r3, [r7, #12] + 800304a: 6b9b ldr r3, [r3, #56] @ 0x38 + 800304c: 2200 movs r2, #0 + 800304e: 639a str r2, [r3, #56] @ 0x38 } if (hi2c->hdmarx != NULL) - 8002fe4: 68fb ldr r3, [r7, #12] - 8002fe6: 6bdb ldr r3, [r3, #60] @ 0x3c - 8002fe8: 2b00 cmp r3, #0 - 8002fea: d003 beq.n 8002ff4 + 8003050: 68fb ldr r3, [r7, #12] + 8003052: 6bdb ldr r3, [r3, #60] @ 0x3c + 8003054: 2b00 cmp r3, #0 + 8003056: d003 beq.n 8003060 { hi2c->hdmarx->XferAbortCallback = NULL; - 8002fec: 68fb ldr r3, [r7, #12] - 8002fee: 6bdb ldr r3, [r3, #60] @ 0x3c - 8002ff0: 2200 movs r2, #0 - 8002ff2: 639a str r2, [r3, #56] @ 0x38 + 8003058: 68fb ldr r3, [r7, #12] + 800305a: 6bdb ldr r3, [r3, #60] @ 0x3c + 800305c: 2200 movs r2, #0 + 800305e: 639a str r2, [r3, #56] @ 0x38 } I2C_TreatErrorCallback(hi2c); - 8002ff4: 68fb ldr r3, [r7, #12] - 8002ff6: 0018 movs r0, r3 - 8002ff8: f7ff ff9a bl 8002f30 + 8003060: 68fb ldr r3, [r7, #12] + 8003062: 0018 movs r0, r3 + 8003064: f7ff ff9a bl 8002f9c } - 8002ffc: 46c0 nop @ (mov r8, r8) - 8002ffe: 46bd mov sp, r7 - 8003000: b004 add sp, #16 - 8003002: bd80 pop {r7, pc} + 8003068: 46c0 nop @ (mov r8, r8) + 800306a: 46bd mov sp, r7 + 800306c: b004 add sp, #16 + 800306e: bd80 pop {r7, pc} -08003004 : +08003070 : * @arg @ref I2C_GENERATE_START_WRITE Generate Restart for write request. * @retval None */ static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t Mode, uint32_t Request) { - 8003004: b590 push {r4, r7, lr} - 8003006: b087 sub sp, #28 - 8003008: af00 add r7, sp, #0 - 800300a: 60f8 str r0, [r7, #12] - 800300c: 0008 movs r0, r1 - 800300e: 0011 movs r1, r2 - 8003010: 607b str r3, [r7, #4] - 8003012: 240a movs r4, #10 - 8003014: 193b adds r3, r7, r4 - 8003016: 1c02 adds r2, r0, #0 - 8003018: 801a strh r2, [r3, #0] - 800301a: 2009 movs r0, #9 - 800301c: 183b adds r3, r7, r0 - 800301e: 1c0a adds r2, r1, #0 - 8003020: 701a strb r2, [r3, #0] + 8003070: b590 push {r4, r7, lr} + 8003072: b087 sub sp, #28 + 8003074: af00 add r7, sp, #0 + 8003076: 60f8 str r0, [r7, #12] + 8003078: 0008 movs r0, r1 + 800307a: 0011 movs r1, r2 + 800307c: 607b str r3, [r7, #4] + 800307e: 240a movs r4, #10 + 8003080: 193b adds r3, r7, r4 + 8003082: 1c02 adds r2, r0, #0 + 8003084: 801a strh r2, [r3, #0] + 8003086: 2009 movs r0, #9 + 8003088: 183b adds r3, r7, r0 + 800308a: 1c0a adds r2, r1, #0 + 800308c: 701a strb r2, [r3, #0] assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); assert_param(IS_TRANSFER_MODE(Mode)); assert_param(IS_TRANSFER_REQUEST(Request)); /* Declaration of tmp to prevent undefined behavior of volatile usage */ uint32_t tmp = ((uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | \ - 8003022: 193b adds r3, r7, r4 - 8003024: 881b ldrh r3, [r3, #0] - 8003026: 059b lsls r3, r3, #22 - 8003028: 0d9a lsrs r2, r3, #22 + 800308e: 193b adds r3, r7, r4 + 8003090: 881b ldrh r3, [r3, #0] + 8003092: 059b lsls r3, r3, #22 + 8003094: 0d9a lsrs r2, r3, #22 (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \ - 800302a: 183b adds r3, r7, r0 - 800302c: 781b ldrb r3, [r3, #0] - 800302e: 0419 lsls r1, r3, #16 - 8003030: 23ff movs r3, #255 @ 0xff - 8003032: 041b lsls r3, r3, #16 - 8003034: 400b ands r3, r1 + 8003096: 183b adds r3, r7, r0 + 8003098: 781b ldrb r3, [r3, #0] + 800309a: 0419 lsls r1, r3, #16 + 800309c: 23ff movs r3, #255 @ 0xff + 800309e: 041b lsls r3, r3, #16 + 80030a0: 400b ands r3, r1 uint32_t tmp = ((uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | \ - 8003036: 431a orrs r2, r3 + 80030a2: 431a orrs r2, r3 (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \ - 8003038: 687b ldr r3, [r7, #4] - 800303a: 431a orrs r2, r3 + 80030a4: 687b ldr r3, [r7, #4] + 80030a6: 431a orrs r2, r3 uint32_t tmp = ((uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | \ - 800303c: 6abb ldr r3, [r7, #40] @ 0x28 - 800303e: 4313 orrs r3, r2 - 8003040: 005b lsls r3, r3, #1 - 8003042: 085b lsrs r3, r3, #1 - 8003044: 617b str r3, [r7, #20] + 80030a8: 6abb ldr r3, [r7, #40] @ 0x28 + 80030aa: 4313 orrs r3, r2 + 80030ac: 005b lsls r3, r3, #1 + 80030ae: 085b lsrs r3, r3, #1 + 80030b0: 617b str r3, [r7, #20] (uint32_t)Mode | (uint32_t)Request) & (~0x80000000U)); /* update CR2 register */ MODIFY_REG(hi2c->Instance->CR2, \ - 8003046: 68fb ldr r3, [r7, #12] - 8003048: 681b ldr r3, [r3, #0] - 800304a: 685b ldr r3, [r3, #4] - 800304c: 6aba ldr r2, [r7, #40] @ 0x28 - 800304e: 0d51 lsrs r1, r2, #21 - 8003050: 2280 movs r2, #128 @ 0x80 - 8003052: 00d2 lsls r2, r2, #3 - 8003054: 400a ands r2, r1 - 8003056: 4907 ldr r1, [pc, #28] @ (8003074 ) - 8003058: 430a orrs r2, r1 - 800305a: 43d2 mvns r2, r2 - 800305c: 401a ands r2, r3 - 800305e: 0011 movs r1, r2 - 8003060: 68fb ldr r3, [r7, #12] - 8003062: 681b ldr r3, [r3, #0] - 8003064: 697a ldr r2, [r7, #20] - 8003066: 430a orrs r2, r1 - 8003068: 605a str r2, [r3, #4] + 80030b2: 68fb ldr r3, [r7, #12] + 80030b4: 681b ldr r3, [r3, #0] + 80030b6: 685b ldr r3, [r3, #4] + 80030b8: 6aba ldr r2, [r7, #40] @ 0x28 + 80030ba: 0d51 lsrs r1, r2, #21 + 80030bc: 2280 movs r2, #128 @ 0x80 + 80030be: 00d2 lsls r2, r2, #3 + 80030c0: 400a ands r2, r1 + 80030c2: 4907 ldr r1, [pc, #28] @ (80030e0 ) + 80030c4: 430a orrs r2, r1 + 80030c6: 43d2 mvns r2, r2 + 80030c8: 401a ands r2, r3 + 80030ca: 0011 movs r1, r2 + 80030cc: 68fb ldr r3, [r7, #12] + 80030ce: 681b ldr r3, [r3, #0] + 80030d0: 697a ldr r2, [r7, #20] + 80030d2: 430a orrs r2, r1 + 80030d4: 605a str r2, [r3, #4] ((I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_AUTOEND | \ (I2C_CR2_RD_WRN & (uint32_t)(Request >> (31U - I2C_CR2_RD_WRN_Pos))) | \ I2C_CR2_START | I2C_CR2_STOP)), tmp); } - 800306a: 46c0 nop @ (mov r8, r8) - 800306c: 46bd mov sp, r7 - 800306e: b007 add sp, #28 - 8003070: bd90 pop {r4, r7, pc} - 8003072: 46c0 nop @ (mov r8, r8) - 8003074: 03ff63ff .word 0x03ff63ff + 80030d6: 46c0 nop @ (mov r8, r8) + 80030d8: 46bd mov sp, r7 + 80030da: b007 add sp, #28 + 80030dc: bd90 pop {r4, r7, pc} + 80030de: 46c0 nop @ (mov r8, r8) + 80030e0: 03ff63ff .word 0x03ff63ff -08003078 : +080030e4 : * the configuration information for the specified I2C. * @param InterruptRequest Value of @ref I2C_Interrupt_configuration_definition. * @retval None */ static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) { - 8003078: b580 push {r7, lr} - 800307a: b084 sub sp, #16 - 800307c: af00 add r7, sp, #0 - 800307e: 6078 str r0, [r7, #4] - 8003080: 000a movs r2, r1 - 8003082: 1cbb adds r3, r7, #2 - 8003084: 801a strh r2, [r3, #0] + 80030e4: b580 push {r7, lr} + 80030e6: b084 sub sp, #16 + 80030e8: af00 add r7, sp, #0 + 80030ea: 6078 str r0, [r7, #4] + 80030ec: 000a movs r2, r1 + 80030ee: 1cbb adds r3, r7, #2 + 80030f0: 801a strh r2, [r3, #0] uint32_t tmpisr = 0U; - 8003086: 2300 movs r3, #0 - 8003088: 60fb str r3, [r7, #12] + 80030f2: 2300 movs r3, #0 + 80030f4: 60fb str r3, [r7, #12] if ((hi2c->XferISR != I2C_Master_ISR_DMA) && \ - 800308a: 687b ldr r3, [r7, #4] - 800308c: 6b5a ldr r2, [r3, #52] @ 0x34 - 800308e: 4b3c ldr r3, [pc, #240] @ (8003180 ) - 8003090: 429a cmp r2, r3 - 8003092: d035 beq.n 8003100 + 80030f6: 687b ldr r3, [r7, #4] + 80030f8: 6b5a ldr r2, [r3, #52] @ 0x34 + 80030fa: 4b3c ldr r3, [pc, #240] @ (80031ec ) + 80030fc: 429a cmp r2, r3 + 80030fe: d035 beq.n 800316c (hi2c->XferISR != I2C_Slave_ISR_DMA) && \ - 8003094: 687b ldr r3, [r7, #4] - 8003096: 6b5a ldr r2, [r3, #52] @ 0x34 + 8003100: 687b ldr r3, [r7, #4] + 8003102: 6b5a ldr r2, [r3, #52] @ 0x34 if ((hi2c->XferISR != I2C_Master_ISR_DMA) && \ - 8003098: 4b3a ldr r3, [pc, #232] @ (8003184 ) - 800309a: 429a cmp r2, r3 - 800309c: d030 beq.n 8003100 + 8003104: 4b3a ldr r3, [pc, #232] @ (80031f0 ) + 8003106: 429a cmp r2, r3 + 8003108: d030 beq.n 800316c (hi2c->XferISR != I2C_Mem_ISR_DMA)) - 800309e: 687b ldr r3, [r7, #4] - 80030a0: 6b5a ldr r2, [r3, #52] @ 0x34 + 800310a: 687b ldr r3, [r7, #4] + 800310c: 6b5a ldr r2, [r3, #52] @ 0x34 (hi2c->XferISR != I2C_Slave_ISR_DMA) && \ - 80030a2: 4b39 ldr r3, [pc, #228] @ (8003188 ) - 80030a4: 429a cmp r2, r3 - 80030a6: d02b beq.n 8003100 + 800310e: 4b39 ldr r3, [pc, #228] @ (80031f4 ) + 8003110: 429a cmp r2, r3 + 8003112: d02b beq.n 800316c { if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) - 80030a8: 1cbb adds r3, r7, #2 - 80030aa: 2200 movs r2, #0 - 80030ac: 5e9b ldrsh r3, [r3, r2] - 80030ae: 2b00 cmp r3, #0 - 80030b0: da03 bge.n 80030ba + 8003114: 1cbb adds r3, r7, #2 + 8003116: 2200 movs r2, #0 + 8003118: 5e9b ldrsh r3, [r3, r2] + 800311a: 2b00 cmp r3, #0 + 800311c: da03 bge.n 8003126 { /* Enable ERR, STOP, NACK and ADDR interrupts */ tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; - 80030b2: 68fb ldr r3, [r7, #12] - 80030b4: 22b8 movs r2, #184 @ 0xb8 - 80030b6: 4313 orrs r3, r2 - 80030b8: 60fb str r3, [r7, #12] + 800311e: 68fb ldr r3, [r7, #12] + 8003120: 22b8 movs r2, #184 @ 0xb8 + 8003122: 4313 orrs r3, r2 + 8003124: 60fb str r3, [r7, #12] } if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) - 80030ba: 1cbb adds r3, r7, #2 - 80030bc: 881b ldrh r3, [r3, #0] - 80030be: 2201 movs r2, #1 - 80030c0: 4013 ands r3, r2 - 80030c2: d003 beq.n 80030cc + 8003126: 1cbb adds r3, r7, #2 + 8003128: 881b ldrh r3, [r3, #0] + 800312a: 2201 movs r2, #1 + 800312c: 4013 ands r3, r2 + 800312e: d003 beq.n 8003138 { /* Enable ERR, TC, STOP, NACK and TXI interrupts */ tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_TXI; - 80030c4: 68fb ldr r3, [r7, #12] - 80030c6: 22f2 movs r2, #242 @ 0xf2 - 80030c8: 4313 orrs r3, r2 - 80030ca: 60fb str r3, [r7, #12] + 8003130: 68fb ldr r3, [r7, #12] + 8003132: 22f2 movs r2, #242 @ 0xf2 + 8003134: 4313 orrs r3, r2 + 8003136: 60fb str r3, [r7, #12] } if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) - 80030cc: 1cbb adds r3, r7, #2 - 80030ce: 881b ldrh r3, [r3, #0] - 80030d0: 2202 movs r2, #2 - 80030d2: 4013 ands r3, r2 - 80030d4: d003 beq.n 80030de + 8003138: 1cbb adds r3, r7, #2 + 800313a: 881b ldrh r3, [r3, #0] + 800313c: 2202 movs r2, #2 + 800313e: 4013 ands r3, r2 + 8003140: d003 beq.n 800314a { /* Enable ERR, TC, STOP, NACK and RXI interrupts */ tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_RXI; - 80030d6: 68fb ldr r3, [r7, #12] - 80030d8: 22f4 movs r2, #244 @ 0xf4 - 80030da: 4313 orrs r3, r2 - 80030dc: 60fb str r3, [r7, #12] + 8003142: 68fb ldr r3, [r7, #12] + 8003144: 22f4 movs r2, #244 @ 0xf4 + 8003146: 4313 orrs r3, r2 + 8003148: 60fb str r3, [r7, #12] } if (InterruptRequest == I2C_XFER_ERROR_IT) - 80030de: 1cbb adds r3, r7, #2 - 80030e0: 881b ldrh r3, [r3, #0] - 80030e2: 2b10 cmp r3, #16 - 80030e4: d103 bne.n 80030ee + 800314a: 1cbb adds r3, r7, #2 + 800314c: 881b ldrh r3, [r3, #0] + 800314e: 2b10 cmp r3, #16 + 8003150: d103 bne.n 800315a { /* Enable ERR and NACK interrupts */ tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; - 80030e6: 68fb ldr r3, [r7, #12] - 80030e8: 2290 movs r2, #144 @ 0x90 - 80030ea: 4313 orrs r3, r2 - 80030ec: 60fb str r3, [r7, #12] + 8003152: 68fb ldr r3, [r7, #12] + 8003154: 2290 movs r2, #144 @ 0x90 + 8003156: 4313 orrs r3, r2 + 8003158: 60fb str r3, [r7, #12] } if (InterruptRequest == I2C_XFER_CPLT_IT) - 80030ee: 1cbb adds r3, r7, #2 - 80030f0: 881b ldrh r3, [r3, #0] - 80030f2: 2b20 cmp r3, #32 - 80030f4: d137 bne.n 8003166 + 800315a: 1cbb adds r3, r7, #2 + 800315c: 881b ldrh r3, [r3, #0] + 800315e: 2b20 cmp r3, #32 + 8003160: d137 bne.n 80031d2 { /* Enable STOP interrupts */ tmpisr |= I2C_IT_STOPI; - 80030f6: 68fb ldr r3, [r7, #12] - 80030f8: 2220 movs r2, #32 - 80030fa: 4313 orrs r3, r2 - 80030fc: 60fb str r3, [r7, #12] + 8003162: 68fb ldr r3, [r7, #12] + 8003164: 2220 movs r2, #32 + 8003166: 4313 orrs r3, r2 + 8003168: 60fb str r3, [r7, #12] if (InterruptRequest == I2C_XFER_CPLT_IT) - 80030fe: e032 b.n 8003166 + 800316a: e032 b.n 80031d2 } } else { if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) - 8003100: 1cbb adds r3, r7, #2 - 8003102: 2200 movs r2, #0 - 8003104: 5e9b ldrsh r3, [r3, r2] - 8003106: 2b00 cmp r3, #0 - 8003108: da03 bge.n 8003112 + 800316c: 1cbb adds r3, r7, #2 + 800316e: 2200 movs r2, #0 + 8003170: 5e9b ldrsh r3, [r3, r2] + 8003172: 2b00 cmp r3, #0 + 8003174: da03 bge.n 800317e { /* Enable ERR, STOP, NACK and ADDR interrupts */ tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; - 800310a: 68fb ldr r3, [r7, #12] - 800310c: 22b8 movs r2, #184 @ 0xb8 - 800310e: 4313 orrs r3, r2 - 8003110: 60fb str r3, [r7, #12] + 8003176: 68fb ldr r3, [r7, #12] + 8003178: 22b8 movs r2, #184 @ 0xb8 + 800317a: 4313 orrs r3, r2 + 800317c: 60fb str r3, [r7, #12] } if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) - 8003112: 1cbb adds r3, r7, #2 - 8003114: 881b ldrh r3, [r3, #0] - 8003116: 2201 movs r2, #1 - 8003118: 4013 ands r3, r2 - 800311a: d003 beq.n 8003124 + 800317e: 1cbb adds r3, r7, #2 + 8003180: 881b ldrh r3, [r3, #0] + 8003182: 2201 movs r2, #1 + 8003184: 4013 ands r3, r2 + 8003186: d003 beq.n 8003190 { /* Enable ERR, TC, STOP, NACK and TXI interrupts */ tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_TXI; - 800311c: 68fb ldr r3, [r7, #12] - 800311e: 22f2 movs r2, #242 @ 0xf2 - 8003120: 4313 orrs r3, r2 - 8003122: 60fb str r3, [r7, #12] + 8003188: 68fb ldr r3, [r7, #12] + 800318a: 22f2 movs r2, #242 @ 0xf2 + 800318c: 4313 orrs r3, r2 + 800318e: 60fb str r3, [r7, #12] } if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) - 8003124: 1cbb adds r3, r7, #2 - 8003126: 881b ldrh r3, [r3, #0] - 8003128: 2202 movs r2, #2 - 800312a: 4013 ands r3, r2 - 800312c: d003 beq.n 8003136 + 8003190: 1cbb adds r3, r7, #2 + 8003192: 881b ldrh r3, [r3, #0] + 8003194: 2202 movs r2, #2 + 8003196: 4013 ands r3, r2 + 8003198: d003 beq.n 80031a2 { /* Enable ERR, TC, STOP, NACK and RXI interrupts */ tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_RXI; - 800312e: 68fb ldr r3, [r7, #12] - 8003130: 22f4 movs r2, #244 @ 0xf4 - 8003132: 4313 orrs r3, r2 - 8003134: 60fb str r3, [r7, #12] + 800319a: 68fb ldr r3, [r7, #12] + 800319c: 22f4 movs r2, #244 @ 0xf4 + 800319e: 4313 orrs r3, r2 + 80031a0: 60fb str r3, [r7, #12] } if (InterruptRequest == I2C_XFER_ERROR_IT) - 8003136: 1cbb adds r3, r7, #2 - 8003138: 881b ldrh r3, [r3, #0] - 800313a: 2b10 cmp r3, #16 - 800313c: d103 bne.n 8003146 + 80031a2: 1cbb adds r3, r7, #2 + 80031a4: 881b ldrh r3, [r3, #0] + 80031a6: 2b10 cmp r3, #16 + 80031a8: d103 bne.n 80031b2 { /* Enable ERR and NACK interrupts */ tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; - 800313e: 68fb ldr r3, [r7, #12] - 8003140: 2290 movs r2, #144 @ 0x90 - 8003142: 4313 orrs r3, r2 - 8003144: 60fb str r3, [r7, #12] + 80031aa: 68fb ldr r3, [r7, #12] + 80031ac: 2290 movs r2, #144 @ 0x90 + 80031ae: 4313 orrs r3, r2 + 80031b0: 60fb str r3, [r7, #12] } if (InterruptRequest == I2C_XFER_CPLT_IT) - 8003146: 1cbb adds r3, r7, #2 - 8003148: 881b ldrh r3, [r3, #0] - 800314a: 2b20 cmp r3, #32 - 800314c: d103 bne.n 8003156 + 80031b2: 1cbb adds r3, r7, #2 + 80031b4: 881b ldrh r3, [r3, #0] + 80031b6: 2b20 cmp r3, #32 + 80031b8: d103 bne.n 80031c2 { /* Enable STOP interrupts */ tmpisr |= (I2C_IT_STOPI | I2C_IT_TCI); - 800314e: 68fb ldr r3, [r7, #12] - 8003150: 2260 movs r2, #96 @ 0x60 - 8003152: 4313 orrs r3, r2 - 8003154: 60fb str r3, [r7, #12] + 80031ba: 68fb ldr r3, [r7, #12] + 80031bc: 2260 movs r2, #96 @ 0x60 + 80031be: 4313 orrs r3, r2 + 80031c0: 60fb str r3, [r7, #12] } if (InterruptRequest == I2C_XFER_RELOAD_IT) - 8003156: 1cbb adds r3, r7, #2 - 8003158: 881b ldrh r3, [r3, #0] - 800315a: 2b40 cmp r3, #64 @ 0x40 - 800315c: d103 bne.n 8003166 + 80031c2: 1cbb adds r3, r7, #2 + 80031c4: 881b ldrh r3, [r3, #0] + 80031c6: 2b40 cmp r3, #64 @ 0x40 + 80031c8: d103 bne.n 80031d2 { /* Enable TC interrupts */ tmpisr |= I2C_IT_TCI; - 800315e: 68fb ldr r3, [r7, #12] - 8003160: 2240 movs r2, #64 @ 0x40 - 8003162: 4313 orrs r3, r2 - 8003164: 60fb str r3, [r7, #12] + 80031ca: 68fb ldr r3, [r7, #12] + 80031cc: 2240 movs r2, #64 @ 0x40 + 80031ce: 4313 orrs r3, r2 + 80031d0: 60fb str r3, [r7, #12] } /* Enable interrupts only at the end */ /* to avoid the risk of I2C interrupt handle execution before */ /* all interrupts requested done */ __HAL_I2C_ENABLE_IT(hi2c, tmpisr); - 8003166: 687b ldr r3, [r7, #4] - 8003168: 681b ldr r3, [r3, #0] - 800316a: 6819 ldr r1, [r3, #0] - 800316c: 687b ldr r3, [r7, #4] - 800316e: 681b ldr r3, [r3, #0] - 8003170: 68fa ldr r2, [r7, #12] - 8003172: 430a orrs r2, r1 - 8003174: 601a str r2, [r3, #0] + 80031d2: 687b ldr r3, [r7, #4] + 80031d4: 681b ldr r3, [r3, #0] + 80031d6: 6819 ldr r1, [r3, #0] + 80031d8: 687b ldr r3, [r7, #4] + 80031da: 681b ldr r3, [r3, #0] + 80031dc: 68fa ldr r2, [r7, #12] + 80031de: 430a orrs r2, r1 + 80031e0: 601a str r2, [r3, #0] } - 8003176: 46c0 nop @ (mov r8, r8) - 8003178: 46bd mov sp, r7 - 800317a: b004 add sp, #16 - 800317c: bd80 pop {r7, pc} - 800317e: 46c0 nop @ (mov r8, r8) - 8003180: 08001f1d .word 0x08001f1d - 8003184: 0800236d .word 0x0800236d - 8003188: 08002115 .word 0x08002115 + 80031e2: 46c0 nop @ (mov r8, r8) + 80031e4: 46bd mov sp, r7 + 80031e6: b004 add sp, #16 + 80031e8: bd80 pop {r7, pc} + 80031ea: 46c0 nop @ (mov r8, r8) + 80031ec: 08001f89 .word 0x08001f89 + 80031f0: 080023d9 .word 0x080023d9 + 80031f4: 08002181 .word 0x08002181 -0800318c : +080031f8 : * the configuration information for the specified I2C. * @param InterruptRequest Value of @ref I2C_Interrupt_configuration_definition. * @retval None */ static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) { - 800318c: b580 push {r7, lr} - 800318e: b084 sub sp, #16 - 8003190: af00 add r7, sp, #0 - 8003192: 6078 str r0, [r7, #4] - 8003194: 000a movs r2, r1 - 8003196: 1cbb adds r3, r7, #2 - 8003198: 801a strh r2, [r3, #0] + 80031f8: b580 push {r7, lr} + 80031fa: b084 sub sp, #16 + 80031fc: af00 add r7, sp, #0 + 80031fe: 6078 str r0, [r7, #4] + 8003200: 000a movs r2, r1 + 8003202: 1cbb adds r3, r7, #2 + 8003204: 801a strh r2, [r3, #0] uint32_t tmpisr = 0U; - 800319a: 2300 movs r3, #0 - 800319c: 60fb str r3, [r7, #12] + 8003206: 2300 movs r3, #0 + 8003208: 60fb str r3, [r7, #12] if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) - 800319e: 1cbb adds r3, r7, #2 - 80031a0: 881b ldrh r3, [r3, #0] - 80031a2: 2201 movs r2, #1 - 80031a4: 4013 ands r3, r2 - 80031a6: d010 beq.n 80031ca + 800320a: 1cbb adds r3, r7, #2 + 800320c: 881b ldrh r3, [r3, #0] + 800320e: 2201 movs r2, #1 + 8003210: 4013 ands r3, r2 + 8003212: d010 beq.n 8003236 { /* Disable TC and TXI interrupts */ tmpisr |= I2C_IT_TCI | I2C_IT_TXI; - 80031a8: 68fb ldr r3, [r7, #12] - 80031aa: 2242 movs r2, #66 @ 0x42 - 80031ac: 4313 orrs r3, r2 - 80031ae: 60fb str r3, [r7, #12] + 8003214: 68fb ldr r3, [r7, #12] + 8003216: 2242 movs r2, #66 @ 0x42 + 8003218: 4313 orrs r3, r2 + 800321a: 60fb str r3, [r7, #12] if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) - 80031b0: 687b ldr r3, [r7, #4] - 80031b2: 2241 movs r2, #65 @ 0x41 - 80031b4: 5c9b ldrb r3, [r3, r2] - 80031b6: b2db uxtb r3, r3 - 80031b8: 001a movs r2, r3 - 80031ba: 2328 movs r3, #40 @ 0x28 - 80031bc: 4013 ands r3, r2 - 80031be: 2b28 cmp r3, #40 @ 0x28 - 80031c0: d003 beq.n 80031ca + 800321c: 687b ldr r3, [r7, #4] + 800321e: 2241 movs r2, #65 @ 0x41 + 8003220: 5c9b ldrb r3, [r3, r2] + 8003222: b2db uxtb r3, r3 + 8003224: 001a movs r2, r3 + 8003226: 2328 movs r3, #40 @ 0x28 + 8003228: 4013 ands r3, r2 + 800322a: 2b28 cmp r3, #40 @ 0x28 + 800322c: d003 beq.n 8003236 { /* Disable NACK and STOP interrupts */ tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; - 80031c2: 68fb ldr r3, [r7, #12] - 80031c4: 22b0 movs r2, #176 @ 0xb0 - 80031c6: 4313 orrs r3, r2 - 80031c8: 60fb str r3, [r7, #12] + 800322e: 68fb ldr r3, [r7, #12] + 8003230: 22b0 movs r2, #176 @ 0xb0 + 8003232: 4313 orrs r3, r2 + 8003234: 60fb str r3, [r7, #12] } } if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) - 80031ca: 1cbb adds r3, r7, #2 - 80031cc: 881b ldrh r3, [r3, #0] - 80031ce: 2202 movs r2, #2 - 80031d0: 4013 ands r3, r2 - 80031d2: d010 beq.n 80031f6 + 8003236: 1cbb adds r3, r7, #2 + 8003238: 881b ldrh r3, [r3, #0] + 800323a: 2202 movs r2, #2 + 800323c: 4013 ands r3, r2 + 800323e: d010 beq.n 8003262 { /* Disable TC and RXI interrupts */ tmpisr |= I2C_IT_TCI | I2C_IT_RXI; - 80031d4: 68fb ldr r3, [r7, #12] - 80031d6: 2244 movs r2, #68 @ 0x44 - 80031d8: 4313 orrs r3, r2 - 80031da: 60fb str r3, [r7, #12] + 8003240: 68fb ldr r3, [r7, #12] + 8003242: 2244 movs r2, #68 @ 0x44 + 8003244: 4313 orrs r3, r2 + 8003246: 60fb str r3, [r7, #12] if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) - 80031dc: 687b ldr r3, [r7, #4] - 80031de: 2241 movs r2, #65 @ 0x41 - 80031e0: 5c9b ldrb r3, [r3, r2] - 80031e2: b2db uxtb r3, r3 - 80031e4: 001a movs r2, r3 - 80031e6: 2328 movs r3, #40 @ 0x28 - 80031e8: 4013 ands r3, r2 - 80031ea: 2b28 cmp r3, #40 @ 0x28 - 80031ec: d003 beq.n 80031f6 + 8003248: 687b ldr r3, [r7, #4] + 800324a: 2241 movs r2, #65 @ 0x41 + 800324c: 5c9b ldrb r3, [r3, r2] + 800324e: b2db uxtb r3, r3 + 8003250: 001a movs r2, r3 + 8003252: 2328 movs r3, #40 @ 0x28 + 8003254: 4013 ands r3, r2 + 8003256: 2b28 cmp r3, #40 @ 0x28 + 8003258: d003 beq.n 8003262 { /* Disable NACK and STOP interrupts */ tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; - 80031ee: 68fb ldr r3, [r7, #12] - 80031f0: 22b0 movs r2, #176 @ 0xb0 - 80031f2: 4313 orrs r3, r2 - 80031f4: 60fb str r3, [r7, #12] + 800325a: 68fb ldr r3, [r7, #12] + 800325c: 22b0 movs r2, #176 @ 0xb0 + 800325e: 4313 orrs r3, r2 + 8003260: 60fb str r3, [r7, #12] } } if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) - 80031f6: 1cbb adds r3, r7, #2 - 80031f8: 2200 movs r2, #0 - 80031fa: 5e9b ldrsh r3, [r3, r2] - 80031fc: 2b00 cmp r3, #0 - 80031fe: da03 bge.n 8003208 + 8003262: 1cbb adds r3, r7, #2 + 8003264: 2200 movs r2, #0 + 8003266: 5e9b ldrsh r3, [r3, r2] + 8003268: 2b00 cmp r3, #0 + 800326a: da03 bge.n 8003274 { /* Disable ADDR, NACK and STOP interrupts */ tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; - 8003200: 68fb ldr r3, [r7, #12] - 8003202: 22b8 movs r2, #184 @ 0xb8 - 8003204: 4313 orrs r3, r2 - 8003206: 60fb str r3, [r7, #12] + 800326c: 68fb ldr r3, [r7, #12] + 800326e: 22b8 movs r2, #184 @ 0xb8 + 8003270: 4313 orrs r3, r2 + 8003272: 60fb str r3, [r7, #12] } if (InterruptRequest == I2C_XFER_ERROR_IT) - 8003208: 1cbb adds r3, r7, #2 - 800320a: 881b ldrh r3, [r3, #0] - 800320c: 2b10 cmp r3, #16 - 800320e: d103 bne.n 8003218 + 8003274: 1cbb adds r3, r7, #2 + 8003276: 881b ldrh r3, [r3, #0] + 8003278: 2b10 cmp r3, #16 + 800327a: d103 bne.n 8003284 { /* Enable ERR and NACK interrupts */ tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; - 8003210: 68fb ldr r3, [r7, #12] - 8003212: 2290 movs r2, #144 @ 0x90 - 8003214: 4313 orrs r3, r2 - 8003216: 60fb str r3, [r7, #12] + 800327c: 68fb ldr r3, [r7, #12] + 800327e: 2290 movs r2, #144 @ 0x90 + 8003280: 4313 orrs r3, r2 + 8003282: 60fb str r3, [r7, #12] } if (InterruptRequest == I2C_XFER_CPLT_IT) - 8003218: 1cbb adds r3, r7, #2 - 800321a: 881b ldrh r3, [r3, #0] - 800321c: 2b20 cmp r3, #32 - 800321e: d103 bne.n 8003228 + 8003284: 1cbb adds r3, r7, #2 + 8003286: 881b ldrh r3, [r3, #0] + 8003288: 2b20 cmp r3, #32 + 800328a: d103 bne.n 8003294 { /* Enable STOP interrupts */ tmpisr |= I2C_IT_STOPI; - 8003220: 68fb ldr r3, [r7, #12] - 8003222: 2220 movs r2, #32 - 8003224: 4313 orrs r3, r2 - 8003226: 60fb str r3, [r7, #12] + 800328c: 68fb ldr r3, [r7, #12] + 800328e: 2220 movs r2, #32 + 8003290: 4313 orrs r3, r2 + 8003292: 60fb str r3, [r7, #12] } if (InterruptRequest == I2C_XFER_RELOAD_IT) - 8003228: 1cbb adds r3, r7, #2 - 800322a: 881b ldrh r3, [r3, #0] - 800322c: 2b40 cmp r3, #64 @ 0x40 - 800322e: d103 bne.n 8003238 + 8003294: 1cbb adds r3, r7, #2 + 8003296: 881b ldrh r3, [r3, #0] + 8003298: 2b40 cmp r3, #64 @ 0x40 + 800329a: d103 bne.n 80032a4 { /* Enable TC interrupts */ tmpisr |= I2C_IT_TCI; - 8003230: 68fb ldr r3, [r7, #12] - 8003232: 2240 movs r2, #64 @ 0x40 - 8003234: 4313 orrs r3, r2 - 8003236: 60fb str r3, [r7, #12] + 800329c: 68fb ldr r3, [r7, #12] + 800329e: 2240 movs r2, #64 @ 0x40 + 80032a0: 4313 orrs r3, r2 + 80032a2: 60fb str r3, [r7, #12] } /* Disable interrupts only at the end */ /* to avoid a breaking situation like at "t" time */ /* all disable interrupts request are not done */ __HAL_I2C_DISABLE_IT(hi2c, tmpisr); - 8003238: 687b ldr r3, [r7, #4] - 800323a: 681b ldr r3, [r3, #0] - 800323c: 681a ldr r2, [r3, #0] - 800323e: 68fb ldr r3, [r7, #12] - 8003240: 43d9 mvns r1, r3 - 8003242: 687b ldr r3, [r7, #4] - 8003244: 681b ldr r3, [r3, #0] - 8003246: 400a ands r2, r1 - 8003248: 601a str r2, [r3, #0] + 80032a4: 687b ldr r3, [r7, #4] + 80032a6: 681b ldr r3, [r3, #0] + 80032a8: 681a ldr r2, [r3, #0] + 80032aa: 68fb ldr r3, [r7, #12] + 80032ac: 43d9 mvns r1, r3 + 80032ae: 687b ldr r3, [r7, #4] + 80032b0: 681b ldr r3, [r3, #0] + 80032b2: 400a ands r2, r1 + 80032b4: 601a str r2, [r3, #0] } - 800324a: 46c0 nop @ (mov r8, r8) - 800324c: 46bd mov sp, r7 - 800324e: b004 add sp, #16 - 8003250: bd80 pop {r7, pc} + 80032b6: 46c0 nop @ (mov r8, r8) + 80032b8: 46bd mov sp, r7 + 80032ba: b004 add sp, #16 + 80032bc: bd80 pop {r7, pc} ... -08003254 : +080032c0 : * the configuration information for the specified I2Cx peripheral. * @param AnalogFilter New state of the Analog filter. * @retval HAL status */ HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter) { - 8003254: b580 push {r7, lr} - 8003256: b082 sub sp, #8 - 8003258: af00 add r7, sp, #0 - 800325a: 6078 str r0, [r7, #4] - 800325c: 6039 str r1, [r7, #0] + 80032c0: b580 push {r7, lr} + 80032c2: b082 sub sp, #8 + 80032c4: af00 add r7, sp, #0 + 80032c6: 6078 str r0, [r7, #4] + 80032c8: 6039 str r1, [r7, #0] /* Check the parameters */ assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); assert_param(IS_I2C_ANALOG_FILTER(AnalogFilter)); if (hi2c->State == HAL_I2C_STATE_READY) - 800325e: 687b ldr r3, [r7, #4] - 8003260: 2241 movs r2, #65 @ 0x41 - 8003262: 5c9b ldrb r3, [r3, r2] - 8003264: b2db uxtb r3, r3 - 8003266: 2b20 cmp r3, #32 - 8003268: d138 bne.n 80032dc + 80032ca: 687b ldr r3, [r7, #4] + 80032cc: 2241 movs r2, #65 @ 0x41 + 80032ce: 5c9b ldrb r3, [r3, r2] + 80032d0: b2db uxtb r3, r3 + 80032d2: 2b20 cmp r3, #32 + 80032d4: d138 bne.n 8003348 { /* Process Locked */ __HAL_LOCK(hi2c); - 800326a: 687b ldr r3, [r7, #4] - 800326c: 2240 movs r2, #64 @ 0x40 - 800326e: 5c9b ldrb r3, [r3, r2] - 8003270: 2b01 cmp r3, #1 - 8003272: d101 bne.n 8003278 - 8003274: 2302 movs r3, #2 - 8003276: e032 b.n 80032de - 8003278: 687b ldr r3, [r7, #4] - 800327a: 2240 movs r2, #64 @ 0x40 - 800327c: 2101 movs r1, #1 - 800327e: 5499 strb r1, [r3, r2] + 80032d6: 687b ldr r3, [r7, #4] + 80032d8: 2240 movs r2, #64 @ 0x40 + 80032da: 5c9b ldrb r3, [r3, r2] + 80032dc: 2b01 cmp r3, #1 + 80032de: d101 bne.n 80032e4 + 80032e0: 2302 movs r3, #2 + 80032e2: e032 b.n 800334a + 80032e4: 687b ldr r3, [r7, #4] + 80032e6: 2240 movs r2, #64 @ 0x40 + 80032e8: 2101 movs r1, #1 + 80032ea: 5499 strb r1, [r3, r2] hi2c->State = HAL_I2C_STATE_BUSY; - 8003280: 687b ldr r3, [r7, #4] - 8003282: 2241 movs r2, #65 @ 0x41 - 8003284: 2124 movs r1, #36 @ 0x24 - 8003286: 5499 strb r1, [r3, r2] + 80032ec: 687b ldr r3, [r7, #4] + 80032ee: 2241 movs r2, #65 @ 0x41 + 80032f0: 2124 movs r1, #36 @ 0x24 + 80032f2: 5499 strb r1, [r3, r2] /* Disable the selected I2C peripheral */ __HAL_I2C_DISABLE(hi2c); - 8003288: 687b ldr r3, [r7, #4] - 800328a: 681b ldr r3, [r3, #0] - 800328c: 681a ldr r2, [r3, #0] - 800328e: 687b ldr r3, [r7, #4] - 8003290: 681b ldr r3, [r3, #0] - 8003292: 2101 movs r1, #1 - 8003294: 438a bics r2, r1 - 8003296: 601a str r2, [r3, #0] + 80032f4: 687b ldr r3, [r7, #4] + 80032f6: 681b ldr r3, [r3, #0] + 80032f8: 681a ldr r2, [r3, #0] + 80032fa: 687b ldr r3, [r7, #4] + 80032fc: 681b ldr r3, [r3, #0] + 80032fe: 2101 movs r1, #1 + 8003300: 438a bics r2, r1 + 8003302: 601a str r2, [r3, #0] /* Reset I2Cx ANOFF bit */ hi2c->Instance->CR1 &= ~(I2C_CR1_ANFOFF); - 8003298: 687b ldr r3, [r7, #4] - 800329a: 681b ldr r3, [r3, #0] - 800329c: 681a ldr r2, [r3, #0] - 800329e: 687b ldr r3, [r7, #4] - 80032a0: 681b ldr r3, [r3, #0] - 80032a2: 4911 ldr r1, [pc, #68] @ (80032e8 ) - 80032a4: 400a ands r2, r1 - 80032a6: 601a str r2, [r3, #0] + 8003304: 687b ldr r3, [r7, #4] + 8003306: 681b ldr r3, [r3, #0] + 8003308: 681a ldr r2, [r3, #0] + 800330a: 687b ldr r3, [r7, #4] + 800330c: 681b ldr r3, [r3, #0] + 800330e: 4911 ldr r1, [pc, #68] @ (8003354 ) + 8003310: 400a ands r2, r1 + 8003312: 601a str r2, [r3, #0] /* Set analog filter bit*/ hi2c->Instance->CR1 |= AnalogFilter; - 80032a8: 687b ldr r3, [r7, #4] - 80032aa: 681b ldr r3, [r3, #0] - 80032ac: 6819 ldr r1, [r3, #0] - 80032ae: 687b ldr r3, [r7, #4] - 80032b0: 681b ldr r3, [r3, #0] - 80032b2: 683a ldr r2, [r7, #0] - 80032b4: 430a orrs r2, r1 - 80032b6: 601a str r2, [r3, #0] + 8003314: 687b ldr r3, [r7, #4] + 8003316: 681b ldr r3, [r3, #0] + 8003318: 6819 ldr r1, [r3, #0] + 800331a: 687b ldr r3, [r7, #4] + 800331c: 681b ldr r3, [r3, #0] + 800331e: 683a ldr r2, [r7, #0] + 8003320: 430a orrs r2, r1 + 8003322: 601a str r2, [r3, #0] __HAL_I2C_ENABLE(hi2c); - 80032b8: 687b ldr r3, [r7, #4] - 80032ba: 681b ldr r3, [r3, #0] - 80032bc: 681a ldr r2, [r3, #0] - 80032be: 687b ldr r3, [r7, #4] - 80032c0: 681b ldr r3, [r3, #0] - 80032c2: 2101 movs r1, #1 - 80032c4: 430a orrs r2, r1 - 80032c6: 601a str r2, [r3, #0] + 8003324: 687b ldr r3, [r7, #4] + 8003326: 681b ldr r3, [r3, #0] + 8003328: 681a ldr r2, [r3, #0] + 800332a: 687b ldr r3, [r7, #4] + 800332c: 681b ldr r3, [r3, #0] + 800332e: 2101 movs r1, #1 + 8003330: 430a orrs r2, r1 + 8003332: 601a str r2, [r3, #0] hi2c->State = HAL_I2C_STATE_READY; - 80032c8: 687b ldr r3, [r7, #4] - 80032ca: 2241 movs r2, #65 @ 0x41 - 80032cc: 2120 movs r1, #32 - 80032ce: 5499 strb r1, [r3, r2] + 8003334: 687b ldr r3, [r7, #4] + 8003336: 2241 movs r2, #65 @ 0x41 + 8003338: 2120 movs r1, #32 + 800333a: 5499 strb r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 80032d0: 687b ldr r3, [r7, #4] - 80032d2: 2240 movs r2, #64 @ 0x40 - 80032d4: 2100 movs r1, #0 - 80032d6: 5499 strb r1, [r3, r2] + 800333c: 687b ldr r3, [r7, #4] + 800333e: 2240 movs r2, #64 @ 0x40 + 8003340: 2100 movs r1, #0 + 8003342: 5499 strb r1, [r3, r2] return HAL_OK; - 80032d8: 2300 movs r3, #0 - 80032da: e000 b.n 80032de + 8003344: 2300 movs r3, #0 + 8003346: e000 b.n 800334a } else { return HAL_BUSY; - 80032dc: 2302 movs r3, #2 + 8003348: 2302 movs r3, #2 } } - 80032de: 0018 movs r0, r3 - 80032e0: 46bd mov sp, r7 - 80032e2: b002 add sp, #8 - 80032e4: bd80 pop {r7, pc} - 80032e6: 46c0 nop @ (mov r8, r8) - 80032e8: ffffefff .word 0xffffefff + 800334a: 0018 movs r0, r3 + 800334c: 46bd mov sp, r7 + 800334e: b002 add sp, #8 + 8003350: bd80 pop {r7, pc} + 8003352: 46c0 nop @ (mov r8, r8) + 8003354: ffffefff .word 0xffffefff -080032ec : +08003358 : * the configuration information for the specified I2Cx peripheral. * @param DigitalFilter Coefficient of digital noise filter between Min_Data=0x00 and Max_Data=0x0F. * @retval HAL status */ HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter) { - 80032ec: b580 push {r7, lr} - 80032ee: b084 sub sp, #16 - 80032f0: af00 add r7, sp, #0 - 80032f2: 6078 str r0, [r7, #4] - 80032f4: 6039 str r1, [r7, #0] + 8003358: b580 push {r7, lr} + 800335a: b084 sub sp, #16 + 800335c: af00 add r7, sp, #0 + 800335e: 6078 str r0, [r7, #4] + 8003360: 6039 str r1, [r7, #0] /* Check the parameters */ assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); assert_param(IS_I2C_DIGITAL_FILTER(DigitalFilter)); if (hi2c->State == HAL_I2C_STATE_READY) - 80032f6: 687b ldr r3, [r7, #4] - 80032f8: 2241 movs r2, #65 @ 0x41 - 80032fa: 5c9b ldrb r3, [r3, r2] - 80032fc: b2db uxtb r3, r3 - 80032fe: 2b20 cmp r3, #32 - 8003300: d139 bne.n 8003376 + 8003362: 687b ldr r3, [r7, #4] + 8003364: 2241 movs r2, #65 @ 0x41 + 8003366: 5c9b ldrb r3, [r3, r2] + 8003368: b2db uxtb r3, r3 + 800336a: 2b20 cmp r3, #32 + 800336c: d139 bne.n 80033e2 { /* Process Locked */ __HAL_LOCK(hi2c); - 8003302: 687b ldr r3, [r7, #4] - 8003304: 2240 movs r2, #64 @ 0x40 - 8003306: 5c9b ldrb r3, [r3, r2] - 8003308: 2b01 cmp r3, #1 - 800330a: d101 bne.n 8003310 - 800330c: 2302 movs r3, #2 - 800330e: e033 b.n 8003378 - 8003310: 687b ldr r3, [r7, #4] - 8003312: 2240 movs r2, #64 @ 0x40 - 8003314: 2101 movs r1, #1 - 8003316: 5499 strb r1, [r3, r2] + 800336e: 687b ldr r3, [r7, #4] + 8003370: 2240 movs r2, #64 @ 0x40 + 8003372: 5c9b ldrb r3, [r3, r2] + 8003374: 2b01 cmp r3, #1 + 8003376: d101 bne.n 800337c + 8003378: 2302 movs r3, #2 + 800337a: e033 b.n 80033e4 + 800337c: 687b ldr r3, [r7, #4] + 800337e: 2240 movs r2, #64 @ 0x40 + 8003380: 2101 movs r1, #1 + 8003382: 5499 strb r1, [r3, r2] hi2c->State = HAL_I2C_STATE_BUSY; - 8003318: 687b ldr r3, [r7, #4] - 800331a: 2241 movs r2, #65 @ 0x41 - 800331c: 2124 movs r1, #36 @ 0x24 - 800331e: 5499 strb r1, [r3, r2] + 8003384: 687b ldr r3, [r7, #4] + 8003386: 2241 movs r2, #65 @ 0x41 + 8003388: 2124 movs r1, #36 @ 0x24 + 800338a: 5499 strb r1, [r3, r2] /* Disable the selected I2C peripheral */ __HAL_I2C_DISABLE(hi2c); - 8003320: 687b ldr r3, [r7, #4] - 8003322: 681b ldr r3, [r3, #0] - 8003324: 681a ldr r2, [r3, #0] - 8003326: 687b ldr r3, [r7, #4] - 8003328: 681b ldr r3, [r3, #0] - 800332a: 2101 movs r1, #1 - 800332c: 438a bics r2, r1 - 800332e: 601a str r2, [r3, #0] + 800338c: 687b ldr r3, [r7, #4] + 800338e: 681b ldr r3, [r3, #0] + 8003390: 681a ldr r2, [r3, #0] + 8003392: 687b ldr r3, [r7, #4] + 8003394: 681b ldr r3, [r3, #0] + 8003396: 2101 movs r1, #1 + 8003398: 438a bics r2, r1 + 800339a: 601a str r2, [r3, #0] /* Get the old register value */ tmpreg = hi2c->Instance->CR1; - 8003330: 687b ldr r3, [r7, #4] - 8003332: 681b ldr r3, [r3, #0] - 8003334: 681b ldr r3, [r3, #0] - 8003336: 60fb str r3, [r7, #12] + 800339c: 687b ldr r3, [r7, #4] + 800339e: 681b ldr r3, [r3, #0] + 80033a0: 681b ldr r3, [r3, #0] + 80033a2: 60fb str r3, [r7, #12] /* Reset I2Cx DNF bits [11:8] */ tmpreg &= ~(I2C_CR1_DNF); - 8003338: 68fb ldr r3, [r7, #12] - 800333a: 4a11 ldr r2, [pc, #68] @ (8003380 ) - 800333c: 4013 ands r3, r2 - 800333e: 60fb str r3, [r7, #12] + 80033a4: 68fb ldr r3, [r7, #12] + 80033a6: 4a11 ldr r2, [pc, #68] @ (80033ec ) + 80033a8: 4013 ands r3, r2 + 80033aa: 60fb str r3, [r7, #12] /* Set I2Cx DNF coefficient */ tmpreg |= DigitalFilter << 8U; - 8003340: 683b ldr r3, [r7, #0] - 8003342: 021b lsls r3, r3, #8 - 8003344: 68fa ldr r2, [r7, #12] - 8003346: 4313 orrs r3, r2 - 8003348: 60fb str r3, [r7, #12] + 80033ac: 683b ldr r3, [r7, #0] + 80033ae: 021b lsls r3, r3, #8 + 80033b0: 68fa ldr r2, [r7, #12] + 80033b2: 4313 orrs r3, r2 + 80033b4: 60fb str r3, [r7, #12] /* Store the new register value */ hi2c->Instance->CR1 = tmpreg; - 800334a: 687b ldr r3, [r7, #4] - 800334c: 681b ldr r3, [r3, #0] - 800334e: 68fa ldr r2, [r7, #12] - 8003350: 601a str r2, [r3, #0] + 80033b6: 687b ldr r3, [r7, #4] + 80033b8: 681b ldr r3, [r3, #0] + 80033ba: 68fa ldr r2, [r7, #12] + 80033bc: 601a str r2, [r3, #0] __HAL_I2C_ENABLE(hi2c); - 8003352: 687b ldr r3, [r7, #4] - 8003354: 681b ldr r3, [r3, #0] - 8003356: 681a ldr r2, [r3, #0] - 8003358: 687b ldr r3, [r7, #4] - 800335a: 681b ldr r3, [r3, #0] - 800335c: 2101 movs r1, #1 - 800335e: 430a orrs r2, r1 - 8003360: 601a str r2, [r3, #0] + 80033be: 687b ldr r3, [r7, #4] + 80033c0: 681b ldr r3, [r3, #0] + 80033c2: 681a ldr r2, [r3, #0] + 80033c4: 687b ldr r3, [r7, #4] + 80033c6: 681b ldr r3, [r3, #0] + 80033c8: 2101 movs r1, #1 + 80033ca: 430a orrs r2, r1 + 80033cc: 601a str r2, [r3, #0] hi2c->State = HAL_I2C_STATE_READY; - 8003362: 687b ldr r3, [r7, #4] - 8003364: 2241 movs r2, #65 @ 0x41 - 8003366: 2120 movs r1, #32 - 8003368: 5499 strb r1, [r3, r2] + 80033ce: 687b ldr r3, [r7, #4] + 80033d0: 2241 movs r2, #65 @ 0x41 + 80033d2: 2120 movs r1, #32 + 80033d4: 5499 strb r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 800336a: 687b ldr r3, [r7, #4] - 800336c: 2240 movs r2, #64 @ 0x40 - 800336e: 2100 movs r1, #0 - 8003370: 5499 strb r1, [r3, r2] + 80033d6: 687b ldr r3, [r7, #4] + 80033d8: 2240 movs r2, #64 @ 0x40 + 80033da: 2100 movs r1, #0 + 80033dc: 5499 strb r1, [r3, r2] return HAL_OK; - 8003372: 2300 movs r3, #0 - 8003374: e000 b.n 8003378 + 80033de: 2300 movs r3, #0 + 80033e0: e000 b.n 80033e4 } else { return HAL_BUSY; - 8003376: 2302 movs r3, #2 + 80033e2: 2302 movs r3, #2 } } - 8003378: 0018 movs r0, r3 - 800337a: 46bd mov sp, r7 - 800337c: b004 add sp, #16 - 800337e: bd80 pop {r7, pc} - 8003380: fffff0ff .word 0xfffff0ff + 80033e4: 0018 movs r0, r3 + 80033e6: 46bd mov sp, r7 + 80033e8: b004 add sp, #16 + 80033ea: bd80 pop {r7, pc} + 80033ec: fffff0ff .word 0xfffff0ff -08003384 : +080033f0 : * cleared before returning the status. If the flag is not cleared within * 6 microseconds, HAL_TIMEOUT status is reported. * @retval HAL Status */ HAL_StatusTypeDef HAL_PWREx_ControlVoltageScaling(uint32_t VoltageScaling) { - 8003384: b580 push {r7, lr} - 8003386: b084 sub sp, #16 - 8003388: af00 add r7, sp, #0 - 800338a: 6078 str r0, [r7, #4] + 80033f0: b580 push {r7, lr} + 80033f2: b084 sub sp, #16 + 80033f4: af00 add r7, sp, #0 + 80033f6: 6078 str r0, [r7, #4] uint32_t wait_loop_index; assert_param(IS_PWR_VOLTAGE_SCALING_RANGE(VoltageScaling)); /* Modify voltage scaling range */ MODIFY_REG(PWR->CR1, PWR_CR1_VOS, VoltageScaling); - 800338c: 4b19 ldr r3, [pc, #100] @ (80033f4 ) - 800338e: 681b ldr r3, [r3, #0] - 8003390: 4a19 ldr r2, [pc, #100] @ (80033f8 ) - 8003392: 4013 ands r3, r2 - 8003394: 0019 movs r1, r3 - 8003396: 4b17 ldr r3, [pc, #92] @ (80033f4 ) - 8003398: 687a ldr r2, [r7, #4] - 800339a: 430a orrs r2, r1 - 800339c: 601a str r2, [r3, #0] + 80033f8: 4b19 ldr r3, [pc, #100] @ (8003460 ) + 80033fa: 681b ldr r3, [r3, #0] + 80033fc: 4a19 ldr r2, [pc, #100] @ (8003464 ) + 80033fe: 4013 ands r3, r2 + 8003400: 0019 movs r1, r3 + 8003402: 4b17 ldr r3, [pc, #92] @ (8003460 ) + 8003404: 687a ldr r2, [r7, #4] + 8003406: 430a orrs r2, r1 + 8003408: 601a str r2, [r3, #0] /* In case of Range 1 selected, we need to ensure that main regulator reaches new value */ if (VoltageScaling == PWR_REGULATOR_VOLTAGE_SCALE1) - 800339e: 687a ldr r2, [r7, #4] - 80033a0: 2380 movs r3, #128 @ 0x80 - 80033a2: 009b lsls r3, r3, #2 - 80033a4: 429a cmp r2, r3 - 80033a6: d11f bne.n 80033e8 + 800340a: 687a ldr r2, [r7, #4] + 800340c: 2380 movs r3, #128 @ 0x80 + 800340e: 009b lsls r3, r3, #2 + 8003410: 429a cmp r2, r3 + 8003412: d11f bne.n 8003454 { /* Set timeout value */ wait_loop_index = ((PWR_VOSF_SETTING_DELAY_6_US * SystemCoreClock) / 1000000U) + 1U; - 80033a8: 4b14 ldr r3, [pc, #80] @ (80033fc ) - 80033aa: 681a ldr r2, [r3, #0] - 80033ac: 0013 movs r3, r2 - 80033ae: 005b lsls r3, r3, #1 - 80033b0: 189b adds r3, r3, r2 - 80033b2: 005b lsls r3, r3, #1 - 80033b4: 4912 ldr r1, [pc, #72] @ (8003400 ) - 80033b6: 0018 movs r0, r3 - 80033b8: f7fc fea2 bl 8000100 <__udivsi3> - 80033bc: 0003 movs r3, r0 - 80033be: 3301 adds r3, #1 - 80033c0: 60fb str r3, [r7, #12] + 8003414: 4b14 ldr r3, [pc, #80] @ (8003468 ) + 8003416: 681a ldr r2, [r3, #0] + 8003418: 0013 movs r3, r2 + 800341a: 005b lsls r3, r3, #1 + 800341c: 189b adds r3, r3, r2 + 800341e: 005b lsls r3, r3, #1 + 8003420: 4912 ldr r1, [pc, #72] @ (800346c ) + 8003422: 0018 movs r0, r3 + 8003424: f7fc fe6c bl 8000100 <__udivsi3> + 8003428: 0003 movs r3, r0 + 800342a: 3301 adds r3, #1 + 800342c: 60fb str r3, [r7, #12] /* Wait until VOSF is reset */ while (HAL_IS_BIT_SET(PWR->SR2, PWR_SR2_VOSF)) - 80033c2: e008 b.n 80033d6 + 800342e: e008 b.n 8003442 { if (wait_loop_index != 0U) - 80033c4: 68fb ldr r3, [r7, #12] - 80033c6: 2b00 cmp r3, #0 - 80033c8: d003 beq.n 80033d2 + 8003430: 68fb ldr r3, [r7, #12] + 8003432: 2b00 cmp r3, #0 + 8003434: d003 beq.n 800343e { wait_loop_index--; - 80033ca: 68fb ldr r3, [r7, #12] - 80033cc: 3b01 subs r3, #1 - 80033ce: 60fb str r3, [r7, #12] - 80033d0: e001 b.n 80033d6 + 8003436: 68fb ldr r3, [r7, #12] + 8003438: 3b01 subs r3, #1 + 800343a: 60fb str r3, [r7, #12] + 800343c: e001 b.n 8003442 } else { return HAL_TIMEOUT; - 80033d2: 2303 movs r3, #3 - 80033d4: e009 b.n 80033ea + 800343e: 2303 movs r3, #3 + 8003440: e009 b.n 8003456 while (HAL_IS_BIT_SET(PWR->SR2, PWR_SR2_VOSF)) - 80033d6: 4b07 ldr r3, [pc, #28] @ (80033f4 ) - 80033d8: 695a ldr r2, [r3, #20] - 80033da: 2380 movs r3, #128 @ 0x80 - 80033dc: 00db lsls r3, r3, #3 - 80033de: 401a ands r2, r3 - 80033e0: 2380 movs r3, #128 @ 0x80 - 80033e2: 00db lsls r3, r3, #3 - 80033e4: 429a cmp r2, r3 - 80033e6: d0ed beq.n 80033c4 + 8003442: 4b07 ldr r3, [pc, #28] @ (8003460 ) + 8003444: 695a ldr r2, [r3, #20] + 8003446: 2380 movs r3, #128 @ 0x80 + 8003448: 00db lsls r3, r3, #3 + 800344a: 401a ands r2, r3 + 800344c: 2380 movs r3, #128 @ 0x80 + 800344e: 00db lsls r3, r3, #3 + 8003450: 429a cmp r2, r3 + 8003452: d0ed beq.n 8003430 } } } return HAL_OK; - 80033e8: 2300 movs r3, #0 + 8003454: 2300 movs r3, #0 } - 80033ea: 0018 movs r0, r3 - 80033ec: 46bd mov sp, r7 - 80033ee: b004 add sp, #16 - 80033f0: bd80 pop {r7, pc} - 80033f2: 46c0 nop @ (mov r8, r8) - 80033f4: 40007000 .word 0x40007000 - 80033f8: fffff9ff .word 0xfffff9ff - 80033fc: 20000004 .word 0x20000004 - 8003400: 000f4240 .word 0x000f4240 + 8003456: 0018 movs r0, r3 + 8003458: 46bd mov sp, r7 + 800345a: b004 add sp, #16 + 800345c: bd80 pop {r7, pc} + 800345e: 46c0 nop @ (mov r8, r8) + 8003460: 40007000 .word 0x40007000 + 8003464: fffff9ff .word 0xfffff9ff + 8003468: 20000004 .word 0x20000004 + 800346c: 000f4240 .word 0x000f4240 -08003404 : +08003470 : * @arg @ref LL_RCC_APB1_DIV_4 * @arg @ref LL_RCC_APB1_DIV_8 * @arg @ref LL_RCC_APB1_DIV_16 */ __STATIC_INLINE uint32_t LL_RCC_GetAPB1Prescaler(void) { - 8003404: b580 push {r7, lr} - 8003406: af00 add r7, sp, #0 + 8003470: b580 push {r7, lr} + 8003472: af00 add r7, sp, #0 return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PPRE)); - 8003408: 4b03 ldr r3, [pc, #12] @ (8003418 ) - 800340a: 689a ldr r2, [r3, #8] - 800340c: 23e0 movs r3, #224 @ 0xe0 - 800340e: 01db lsls r3, r3, #7 - 8003410: 4013 ands r3, r2 + 8003474: 4b03 ldr r3, [pc, #12] @ (8003484 ) + 8003476: 689a ldr r2, [r3, #8] + 8003478: 23e0 movs r3, #224 @ 0xe0 + 800347a: 01db lsls r3, r3, #7 + 800347c: 4013 ands r3, r2 } - 8003412: 0018 movs r0, r3 - 8003414: 46bd mov sp, r7 - 8003416: bd80 pop {r7, pc} - 8003418: 40021000 .word 0x40021000 + 800347e: 0018 movs r0, r3 + 8003480: 46bd mov sp, r7 + 8003482: bd80 pop {r7, pc} + 8003484: 40021000 .word 0x40021000 -0800341c : +08003488 : * supported by this function. User should request a transition to LSE Off * first and then to LSE On or LSE Bypass. * @retval HAL status */ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) { - 800341c: b580 push {r7, lr} - 800341e: b088 sub sp, #32 - 8003420: af00 add r7, sp, #0 - 8003422: 6078 str r0, [r7, #4] + 8003488: b580 push {r7, lr} + 800348a: b088 sub sp, #32 + 800348c: af00 add r7, sp, #0 + 800348e: 6078 str r0, [r7, #4] uint32_t tickstart; uint32_t temp_sysclksrc; uint32_t temp_pllckcfg; /* Check Null pointer */ if (RCC_OscInitStruct == NULL) - 8003424: 687b ldr r3, [r7, #4] - 8003426: 2b00 cmp r3, #0 - 8003428: d101 bne.n 800342e + 8003490: 687b ldr r3, [r7, #4] + 8003492: 2b00 cmp r3, #0 + 8003494: d101 bne.n 800349a { return HAL_ERROR; - 800342a: 2301 movs r3, #1 - 800342c: e2f3 b.n 8003a16 + 8003496: 2301 movs r3, #1 + 8003498: e2f3 b.n 8003a82 /* Check the parameters */ assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); /*------------------------------- HSE Configuration ------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) - 800342e: 687b ldr r3, [r7, #4] - 8003430: 681b ldr r3, [r3, #0] - 8003432: 2201 movs r2, #1 - 8003434: 4013 ands r3, r2 - 8003436: d100 bne.n 800343a - 8003438: e07c b.n 8003534 + 800349a: 687b ldr r3, [r7, #4] + 800349c: 681b ldr r3, [r3, #0] + 800349e: 2201 movs r2, #1 + 80034a0: 4013 ands r3, r2 + 80034a2: d100 bne.n 80034a6 + 80034a4: e07c b.n 80035a0 { /* Check the parameters */ assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); temp_sysclksrc = __HAL_RCC_GET_SYSCLK_SOURCE(); - 800343a: 4bc3 ldr r3, [pc, #780] @ (8003748 ) - 800343c: 689b ldr r3, [r3, #8] - 800343e: 2238 movs r2, #56 @ 0x38 - 8003440: 4013 ands r3, r2 - 8003442: 61bb str r3, [r7, #24] + 80034a6: 4bc3 ldr r3, [pc, #780] @ (80037b4 ) + 80034a8: 689b ldr r3, [r3, #8] + 80034aa: 2238 movs r2, #56 @ 0x38 + 80034ac: 4013 ands r3, r2 + 80034ae: 61bb str r3, [r7, #24] temp_pllckcfg = __HAL_RCC_GET_PLL_OSCSOURCE(); - 8003444: 4bc0 ldr r3, [pc, #768] @ (8003748 ) - 8003446: 68db ldr r3, [r3, #12] - 8003448: 2203 movs r2, #3 - 800344a: 4013 ands r3, r2 - 800344c: 617b str r3, [r7, #20] + 80034b0: 4bc0 ldr r3, [pc, #768] @ (80037b4 ) + 80034b2: 68db ldr r3, [r3, #12] + 80034b4: 2203 movs r2, #3 + 80034b6: 4013 ands r3, r2 + 80034b8: 617b str r3, [r7, #20] /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */ if (((temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (temp_pllckcfg == RCC_PLLSOURCE_HSE)) - 800344e: 69bb ldr r3, [r7, #24] - 8003450: 2b10 cmp r3, #16 - 8003452: d102 bne.n 800345a - 8003454: 697b ldr r3, [r7, #20] - 8003456: 2b03 cmp r3, #3 - 8003458: d002 beq.n 8003460 + 80034ba: 69bb ldr r3, [r7, #24] + 80034bc: 2b10 cmp r3, #16 + 80034be: d102 bne.n 80034c6 + 80034c0: 697b ldr r3, [r7, #20] + 80034c2: 2b03 cmp r3, #3 + 80034c4: d002 beq.n 80034cc || (temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_HSE)) - 800345a: 69bb ldr r3, [r7, #24] - 800345c: 2b08 cmp r3, #8 - 800345e: d10b bne.n 8003478 + 80034c6: 69bb ldr r3, [r7, #24] + 80034c8: 2b08 cmp r3, #8 + 80034ca: d10b bne.n 80034e4 { if ((READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 8003460: 4bb9 ldr r3, [pc, #740] @ (8003748 ) - 8003462: 681a ldr r2, [r3, #0] - 8003464: 2380 movs r3, #128 @ 0x80 - 8003466: 029b lsls r3, r3, #10 - 8003468: 4013 ands r3, r2 - 800346a: d062 beq.n 8003532 - 800346c: 687b ldr r3, [r7, #4] - 800346e: 685b ldr r3, [r3, #4] - 8003470: 2b00 cmp r3, #0 - 8003472: d15e bne.n 8003532 + 80034cc: 4bb9 ldr r3, [pc, #740] @ (80037b4 ) + 80034ce: 681a ldr r2, [r3, #0] + 80034d0: 2380 movs r3, #128 @ 0x80 + 80034d2: 029b lsls r3, r3, #10 + 80034d4: 4013 ands r3, r2 + 80034d6: d062 beq.n 800359e + 80034d8: 687b ldr r3, [r7, #4] + 80034da: 685b ldr r3, [r3, #4] + 80034dc: 2b00 cmp r3, #0 + 80034de: d15e bne.n 800359e { return HAL_ERROR; - 8003474: 2301 movs r3, #1 - 8003476: e2ce b.n 8003a16 + 80034e0: 2301 movs r3, #1 + 80034e2: e2ce b.n 8003a82 } } else { /* Set the new HSE configuration ---------------------------------------*/ __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); - 8003478: 687b ldr r3, [r7, #4] - 800347a: 685a ldr r2, [r3, #4] - 800347c: 2380 movs r3, #128 @ 0x80 - 800347e: 025b lsls r3, r3, #9 - 8003480: 429a cmp r2, r3 - 8003482: d107 bne.n 8003494 - 8003484: 4bb0 ldr r3, [pc, #704] @ (8003748 ) - 8003486: 681a ldr r2, [r3, #0] - 8003488: 4baf ldr r3, [pc, #700] @ (8003748 ) - 800348a: 2180 movs r1, #128 @ 0x80 - 800348c: 0249 lsls r1, r1, #9 - 800348e: 430a orrs r2, r1 - 8003490: 601a str r2, [r3, #0] - 8003492: e020 b.n 80034d6 - 8003494: 687b ldr r3, [r7, #4] - 8003496: 685a ldr r2, [r3, #4] - 8003498: 23a0 movs r3, #160 @ 0xa0 - 800349a: 02db lsls r3, r3, #11 - 800349c: 429a cmp r2, r3 - 800349e: d10e bne.n 80034be - 80034a0: 4ba9 ldr r3, [pc, #676] @ (8003748 ) - 80034a2: 681a ldr r2, [r3, #0] - 80034a4: 4ba8 ldr r3, [pc, #672] @ (8003748 ) - 80034a6: 2180 movs r1, #128 @ 0x80 - 80034a8: 02c9 lsls r1, r1, #11 - 80034aa: 430a orrs r2, r1 - 80034ac: 601a str r2, [r3, #0] - 80034ae: 4ba6 ldr r3, [pc, #664] @ (8003748 ) - 80034b0: 681a ldr r2, [r3, #0] - 80034b2: 4ba5 ldr r3, [pc, #660] @ (8003748 ) - 80034b4: 2180 movs r1, #128 @ 0x80 - 80034b6: 0249 lsls r1, r1, #9 - 80034b8: 430a orrs r2, r1 - 80034ba: 601a str r2, [r3, #0] - 80034bc: e00b b.n 80034d6 - 80034be: 4ba2 ldr r3, [pc, #648] @ (8003748 ) - 80034c0: 681a ldr r2, [r3, #0] - 80034c2: 4ba1 ldr r3, [pc, #644] @ (8003748 ) - 80034c4: 49a1 ldr r1, [pc, #644] @ (800374c ) - 80034c6: 400a ands r2, r1 - 80034c8: 601a str r2, [r3, #0] - 80034ca: 4b9f ldr r3, [pc, #636] @ (8003748 ) - 80034cc: 681a ldr r2, [r3, #0] - 80034ce: 4b9e ldr r3, [pc, #632] @ (8003748 ) - 80034d0: 499f ldr r1, [pc, #636] @ (8003750 ) - 80034d2: 400a ands r2, r1 - 80034d4: 601a str r2, [r3, #0] + 80034e4: 687b ldr r3, [r7, #4] + 80034e6: 685a ldr r2, [r3, #4] + 80034e8: 2380 movs r3, #128 @ 0x80 + 80034ea: 025b lsls r3, r3, #9 + 80034ec: 429a cmp r2, r3 + 80034ee: d107 bne.n 8003500 + 80034f0: 4bb0 ldr r3, [pc, #704] @ (80037b4 ) + 80034f2: 681a ldr r2, [r3, #0] + 80034f4: 4baf ldr r3, [pc, #700] @ (80037b4 ) + 80034f6: 2180 movs r1, #128 @ 0x80 + 80034f8: 0249 lsls r1, r1, #9 + 80034fa: 430a orrs r2, r1 + 80034fc: 601a str r2, [r3, #0] + 80034fe: e020 b.n 8003542 + 8003500: 687b ldr r3, [r7, #4] + 8003502: 685a ldr r2, [r3, #4] + 8003504: 23a0 movs r3, #160 @ 0xa0 + 8003506: 02db lsls r3, r3, #11 + 8003508: 429a cmp r2, r3 + 800350a: d10e bne.n 800352a + 800350c: 4ba9 ldr r3, [pc, #676] @ (80037b4 ) + 800350e: 681a ldr r2, [r3, #0] + 8003510: 4ba8 ldr r3, [pc, #672] @ (80037b4 ) + 8003512: 2180 movs r1, #128 @ 0x80 + 8003514: 02c9 lsls r1, r1, #11 + 8003516: 430a orrs r2, r1 + 8003518: 601a str r2, [r3, #0] + 800351a: 4ba6 ldr r3, [pc, #664] @ (80037b4 ) + 800351c: 681a ldr r2, [r3, #0] + 800351e: 4ba5 ldr r3, [pc, #660] @ (80037b4 ) + 8003520: 2180 movs r1, #128 @ 0x80 + 8003522: 0249 lsls r1, r1, #9 + 8003524: 430a orrs r2, r1 + 8003526: 601a str r2, [r3, #0] + 8003528: e00b b.n 8003542 + 800352a: 4ba2 ldr r3, [pc, #648] @ (80037b4 ) + 800352c: 681a ldr r2, [r3, #0] + 800352e: 4ba1 ldr r3, [pc, #644] @ (80037b4 ) + 8003530: 49a1 ldr r1, [pc, #644] @ (80037b8 ) + 8003532: 400a ands r2, r1 + 8003534: 601a str r2, [r3, #0] + 8003536: 4b9f ldr r3, [pc, #636] @ (80037b4 ) + 8003538: 681a ldr r2, [r3, #0] + 800353a: 4b9e ldr r3, [pc, #632] @ (80037b4 ) + 800353c: 499f ldr r1, [pc, #636] @ (80037bc ) + 800353e: 400a ands r2, r1 + 8003540: 601a str r2, [r3, #0] /* Check the HSE State */ if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF) - 80034d6: 687b ldr r3, [r7, #4] - 80034d8: 685b ldr r3, [r3, #4] - 80034da: 2b00 cmp r3, #0 - 80034dc: d014 beq.n 8003508 + 8003542: 687b ldr r3, [r7, #4] + 8003544: 685b ldr r3, [r3, #4] + 8003546: 2b00 cmp r3, #0 + 8003548: d014 beq.n 8003574 { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80034de: f7fd fe1d bl 800111c - 80034e2: 0003 movs r3, r0 - 80034e4: 613b str r3, [r7, #16] + 800354a: f7fd fe1d bl 8001188 + 800354e: 0003 movs r3, r0 + 8003550: 613b str r3, [r7, #16] /* Wait till HSE is ready */ while (READ_BIT(RCC->CR, RCC_CR_HSERDY) == 0U) - 80034e6: e008 b.n 80034fa + 8003552: e008 b.n 8003566 { if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) - 80034e8: f7fd fe18 bl 800111c - 80034ec: 0002 movs r2, r0 - 80034ee: 693b ldr r3, [r7, #16] - 80034f0: 1ad3 subs r3, r2, r3 - 80034f2: 2b64 cmp r3, #100 @ 0x64 - 80034f4: d901 bls.n 80034fa + 8003554: f7fd fe18 bl 8001188 + 8003558: 0002 movs r2, r0 + 800355a: 693b ldr r3, [r7, #16] + 800355c: 1ad3 subs r3, r2, r3 + 800355e: 2b64 cmp r3, #100 @ 0x64 + 8003560: d901 bls.n 8003566 { return HAL_TIMEOUT; - 80034f6: 2303 movs r3, #3 - 80034f8: e28d b.n 8003a16 + 8003562: 2303 movs r3, #3 + 8003564: e28d b.n 8003a82 while (READ_BIT(RCC->CR, RCC_CR_HSERDY) == 0U) - 80034fa: 4b93 ldr r3, [pc, #588] @ (8003748 ) - 80034fc: 681a ldr r2, [r3, #0] - 80034fe: 2380 movs r3, #128 @ 0x80 - 8003500: 029b lsls r3, r3, #10 - 8003502: 4013 ands r3, r2 - 8003504: d0f0 beq.n 80034e8 - 8003506: e015 b.n 8003534 + 8003566: 4b93 ldr r3, [pc, #588] @ (80037b4 ) + 8003568: 681a ldr r2, [r3, #0] + 800356a: 2380 movs r3, #128 @ 0x80 + 800356c: 029b lsls r3, r3, #10 + 800356e: 4013 ands r3, r2 + 8003570: d0f0 beq.n 8003554 + 8003572: e015 b.n 80035a0 } } else { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003508: f7fd fe08 bl 800111c - 800350c: 0003 movs r3, r0 - 800350e: 613b str r3, [r7, #16] + 8003574: f7fd fe08 bl 8001188 + 8003578: 0003 movs r3, r0 + 800357a: 613b str r3, [r7, #16] /* Wait till HSE is disabled */ while (READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U) - 8003510: e008 b.n 8003524 + 800357c: e008 b.n 8003590 { if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) - 8003512: f7fd fe03 bl 800111c - 8003516: 0002 movs r2, r0 - 8003518: 693b ldr r3, [r7, #16] - 800351a: 1ad3 subs r3, r2, r3 - 800351c: 2b64 cmp r3, #100 @ 0x64 - 800351e: d901 bls.n 8003524 + 800357e: f7fd fe03 bl 8001188 + 8003582: 0002 movs r2, r0 + 8003584: 693b ldr r3, [r7, #16] + 8003586: 1ad3 subs r3, r2, r3 + 8003588: 2b64 cmp r3, #100 @ 0x64 + 800358a: d901 bls.n 8003590 { return HAL_TIMEOUT; - 8003520: 2303 movs r3, #3 - 8003522: e278 b.n 8003a16 + 800358c: 2303 movs r3, #3 + 800358e: e278 b.n 8003a82 while (READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U) - 8003524: 4b88 ldr r3, [pc, #544] @ (8003748 ) - 8003526: 681a ldr r2, [r3, #0] - 8003528: 2380 movs r3, #128 @ 0x80 - 800352a: 029b lsls r3, r3, #10 - 800352c: 4013 ands r3, r2 - 800352e: d1f0 bne.n 8003512 - 8003530: e000 b.n 8003534 + 8003590: 4b88 ldr r3, [pc, #544] @ (80037b4 ) + 8003592: 681a ldr r2, [r3, #0] + 8003594: 2380 movs r3, #128 @ 0x80 + 8003596: 029b lsls r3, r3, #10 + 8003598: 4013 ands r3, r2 + 800359a: d1f0 bne.n 800357e + 800359c: e000 b.n 80035a0 if ((READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 8003532: 46c0 nop @ (mov r8, r8) + 800359e: 46c0 nop @ (mov r8, r8) } } } } /*----------------------------- HSI Configuration --------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) - 8003534: 687b ldr r3, [r7, #4] - 8003536: 681b ldr r3, [r3, #0] - 8003538: 2202 movs r2, #2 - 800353a: 4013 ands r3, r2 - 800353c: d100 bne.n 8003540 - 800353e: e099 b.n 8003674 + 80035a0: 687b ldr r3, [r7, #4] + 80035a2: 681b ldr r3, [r3, #0] + 80035a4: 2202 movs r2, #2 + 80035a6: 4013 ands r3, r2 + 80035a8: d100 bne.n 80035ac + 80035aa: e099 b.n 80036e0 assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); assert_param(IS_RCC_HSI_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); assert_param(IS_RCC_HSIDIV(RCC_OscInitStruct->HSIDiv)); /* Check if HSI16 is used as system clock or as PLL source when PLL is selected as system clock */ temp_sysclksrc = __HAL_RCC_GET_SYSCLK_SOURCE(); - 8003540: 4b81 ldr r3, [pc, #516] @ (8003748 ) - 8003542: 689b ldr r3, [r3, #8] - 8003544: 2238 movs r2, #56 @ 0x38 - 8003546: 4013 ands r3, r2 - 8003548: 61bb str r3, [r7, #24] + 80035ac: 4b81 ldr r3, [pc, #516] @ (80037b4 ) + 80035ae: 689b ldr r3, [r3, #8] + 80035b0: 2238 movs r2, #56 @ 0x38 + 80035b2: 4013 ands r3, r2 + 80035b4: 61bb str r3, [r7, #24] temp_pllckcfg = __HAL_RCC_GET_PLL_OSCSOURCE(); - 800354a: 4b7f ldr r3, [pc, #508] @ (8003748 ) - 800354c: 68db ldr r3, [r3, #12] - 800354e: 2203 movs r2, #3 - 8003550: 4013 ands r3, r2 - 8003552: 617b str r3, [r7, #20] + 80035b6: 4b7f ldr r3, [pc, #508] @ (80037b4 ) + 80035b8: 68db ldr r3, [r3, #12] + 80035ba: 2203 movs r2, #3 + 80035bc: 4013 ands r3, r2 + 80035be: 617b str r3, [r7, #20] if (((temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (temp_pllckcfg == RCC_PLLSOURCE_HSI)) - 8003554: 69bb ldr r3, [r7, #24] - 8003556: 2b10 cmp r3, #16 - 8003558: d102 bne.n 8003560 - 800355a: 697b ldr r3, [r7, #20] - 800355c: 2b02 cmp r3, #2 - 800355e: d002 beq.n 8003566 + 80035c0: 69bb ldr r3, [r7, #24] + 80035c2: 2b10 cmp r3, #16 + 80035c4: d102 bne.n 80035cc + 80035c6: 697b ldr r3, [r7, #20] + 80035c8: 2b02 cmp r3, #2 + 80035ca: d002 beq.n 80035d2 || (temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_HSI)) - 8003560: 69bb ldr r3, [r7, #24] - 8003562: 2b00 cmp r3, #0 - 8003564: d135 bne.n 80035d2 + 80035cc: 69bb ldr r3, [r7, #24] + 80035ce: 2b00 cmp r3, #0 + 80035d0: d135 bne.n 800363e { /* When HSI is used as system clock or as PLL input clock it can not be disabled */ if ((READ_BIT(RCC->CR, RCC_CR_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState == RCC_HSI_OFF)) - 8003566: 4b78 ldr r3, [pc, #480] @ (8003748 ) - 8003568: 681a ldr r2, [r3, #0] - 800356a: 2380 movs r3, #128 @ 0x80 - 800356c: 00db lsls r3, r3, #3 - 800356e: 4013 ands r3, r2 - 8003570: d005 beq.n 800357e - 8003572: 687b ldr r3, [r7, #4] - 8003574: 68db ldr r3, [r3, #12] - 8003576: 2b00 cmp r3, #0 - 8003578: d101 bne.n 800357e + 80035d2: 4b78 ldr r3, [pc, #480] @ (80037b4 ) + 80035d4: 681a ldr r2, [r3, #0] + 80035d6: 2380 movs r3, #128 @ 0x80 + 80035d8: 00db lsls r3, r3, #3 + 80035da: 4013 ands r3, r2 + 80035dc: d005 beq.n 80035ea + 80035de: 687b ldr r3, [r7, #4] + 80035e0: 68db ldr r3, [r3, #12] + 80035e2: 2b00 cmp r3, #0 + 80035e4: d101 bne.n 80035ea { return HAL_ERROR; - 800357a: 2301 movs r3, #1 - 800357c: e24b b.n 8003a16 + 80035e6: 2301 movs r3, #1 + 80035e8: e24b b.n 8003a82 } /* Otherwise, just the calibration is allowed */ else { /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 800357e: 4b72 ldr r3, [pc, #456] @ (8003748 ) - 8003580: 685b ldr r3, [r3, #4] - 8003582: 4a74 ldr r2, [pc, #464] @ (8003754 ) - 8003584: 4013 ands r3, r2 - 8003586: 0019 movs r1, r3 - 8003588: 687b ldr r3, [r7, #4] - 800358a: 695b ldr r3, [r3, #20] - 800358c: 021a lsls r2, r3, #8 - 800358e: 4b6e ldr r3, [pc, #440] @ (8003748 ) - 8003590: 430a orrs r2, r1 - 8003592: 605a str r2, [r3, #4] + 80035ea: 4b72 ldr r3, [pc, #456] @ (80037b4 ) + 80035ec: 685b ldr r3, [r3, #4] + 80035ee: 4a74 ldr r2, [pc, #464] @ (80037c0 ) + 80035f0: 4013 ands r3, r2 + 80035f2: 0019 movs r1, r3 + 80035f4: 687b ldr r3, [r7, #4] + 80035f6: 695b ldr r3, [r3, #20] + 80035f8: 021a lsls r2, r3, #8 + 80035fa: 4b6e ldr r3, [pc, #440] @ (80037b4 ) + 80035fc: 430a orrs r2, r1 + 80035fe: 605a str r2, [r3, #4] if (temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_HSI) - 8003594: 69bb ldr r3, [r7, #24] - 8003596: 2b00 cmp r3, #0 - 8003598: d112 bne.n 80035c0 + 8003600: 69bb ldr r3, [r7, #24] + 8003602: 2b00 cmp r3, #0 + 8003604: d112 bne.n 800362c { /* Adjust the HSI16 division factor */ __HAL_RCC_HSI_CONFIG(RCC_OscInitStruct->HSIDiv); - 800359a: 4b6b ldr r3, [pc, #428] @ (8003748 ) - 800359c: 681b ldr r3, [r3, #0] - 800359e: 4a6e ldr r2, [pc, #440] @ (8003758 ) - 80035a0: 4013 ands r3, r2 - 80035a2: 0019 movs r1, r3 - 80035a4: 687b ldr r3, [r7, #4] - 80035a6: 691a ldr r2, [r3, #16] - 80035a8: 4b67 ldr r3, [pc, #412] @ (8003748 ) - 80035aa: 430a orrs r2, r1 - 80035ac: 601a str r2, [r3, #0] + 8003606: 4b6b ldr r3, [pc, #428] @ (80037b4 ) + 8003608: 681b ldr r3, [r3, #0] + 800360a: 4a6e ldr r2, [pc, #440] @ (80037c4 ) + 800360c: 4013 ands r3, r2 + 800360e: 0019 movs r1, r3 + 8003610: 687b ldr r3, [r7, #4] + 8003612: 691a ldr r2, [r3, #16] + 8003614: 4b67 ldr r3, [pc, #412] @ (80037b4 ) + 8003616: 430a orrs r2, r1 + 8003618: 601a str r2, [r3, #0] /* Update the SystemCoreClock global variable with HSISYS value */ SystemCoreClock = (HSI_VALUE / (1UL << ((READ_BIT(RCC->CR, RCC_CR_HSIDIV)) >> RCC_CR_HSIDIV_Pos))); - 80035ae: 4b66 ldr r3, [pc, #408] @ (8003748 ) - 80035b0: 681b ldr r3, [r3, #0] - 80035b2: 0adb lsrs r3, r3, #11 - 80035b4: 2207 movs r2, #7 - 80035b6: 4013 ands r3, r2 - 80035b8: 4a68 ldr r2, [pc, #416] @ (800375c ) - 80035ba: 40da lsrs r2, r3 - 80035bc: 4b68 ldr r3, [pc, #416] @ (8003760 ) - 80035be: 601a str r2, [r3, #0] + 800361a: 4b66 ldr r3, [pc, #408] @ (80037b4 ) + 800361c: 681b ldr r3, [r3, #0] + 800361e: 0adb lsrs r3, r3, #11 + 8003620: 2207 movs r2, #7 + 8003622: 4013 ands r3, r2 + 8003624: 4a68 ldr r2, [pc, #416] @ (80037c8 ) + 8003626: 40da lsrs r2, r3 + 8003628: 4b68 ldr r3, [pc, #416] @ (80037cc ) + 800362a: 601a str r2, [r3, #0] } /* Adapt Systick interrupt period */ if (HAL_InitTick(uwTickPrio) != HAL_OK) - 80035c0: 4b68 ldr r3, [pc, #416] @ (8003764 ) - 80035c2: 681b ldr r3, [r3, #0] - 80035c4: 0018 movs r0, r3 - 80035c6: f7fd fd4d bl 8001064 - 80035ca: 1e03 subs r3, r0, #0 - 80035cc: d051 beq.n 8003672 + 800362c: 4b68 ldr r3, [pc, #416] @ (80037d0 ) + 800362e: 681b ldr r3, [r3, #0] + 8003630: 0018 movs r0, r3 + 8003632: f7fd fd4d bl 80010d0 + 8003636: 1e03 subs r3, r0, #0 + 8003638: d051 beq.n 80036de { return HAL_ERROR; - 80035ce: 2301 movs r3, #1 - 80035d0: e221 b.n 8003a16 + 800363a: 2301 movs r3, #1 + 800363c: e221 b.n 8003a82 } } else { /* Check the HSI State */ if (RCC_OscInitStruct->HSIState != RCC_HSI_OFF) - 80035d2: 687b ldr r3, [r7, #4] - 80035d4: 68db ldr r3, [r3, #12] - 80035d6: 2b00 cmp r3, #0 - 80035d8: d030 beq.n 800363c + 800363e: 687b ldr r3, [r7, #4] + 8003640: 68db ldr r3, [r3, #12] + 8003642: 2b00 cmp r3, #0 + 8003644: d030 beq.n 80036a8 { /* Configure the HSI16 division factor */ __HAL_RCC_HSI_CONFIG(RCC_OscInitStruct->HSIDiv); - 80035da: 4b5b ldr r3, [pc, #364] @ (8003748 ) - 80035dc: 681b ldr r3, [r3, #0] - 80035de: 4a5e ldr r2, [pc, #376] @ (8003758 ) - 80035e0: 4013 ands r3, r2 - 80035e2: 0019 movs r1, r3 - 80035e4: 687b ldr r3, [r7, #4] - 80035e6: 691a ldr r2, [r3, #16] - 80035e8: 4b57 ldr r3, [pc, #348] @ (8003748 ) - 80035ea: 430a orrs r2, r1 - 80035ec: 601a str r2, [r3, #0] + 8003646: 4b5b ldr r3, [pc, #364] @ (80037b4 ) + 8003648: 681b ldr r3, [r3, #0] + 800364a: 4a5e ldr r2, [pc, #376] @ (80037c4 ) + 800364c: 4013 ands r3, r2 + 800364e: 0019 movs r1, r3 + 8003650: 687b ldr r3, [r7, #4] + 8003652: 691a ldr r2, [r3, #16] + 8003654: 4b57 ldr r3, [pc, #348] @ (80037b4 ) + 8003656: 430a orrs r2, r1 + 8003658: 601a str r2, [r3, #0] /* Enable the Internal High Speed oscillator (HSI16). */ __HAL_RCC_HSI_ENABLE(); - 80035ee: 4b56 ldr r3, [pc, #344] @ (8003748 ) - 80035f0: 681a ldr r2, [r3, #0] - 80035f2: 4b55 ldr r3, [pc, #340] @ (8003748 ) - 80035f4: 2180 movs r1, #128 @ 0x80 - 80035f6: 0049 lsls r1, r1, #1 - 80035f8: 430a orrs r2, r1 - 80035fa: 601a str r2, [r3, #0] + 800365a: 4b56 ldr r3, [pc, #344] @ (80037b4 ) + 800365c: 681a ldr r2, [r3, #0] + 800365e: 4b55 ldr r3, [pc, #340] @ (80037b4 ) + 8003660: 2180 movs r1, #128 @ 0x80 + 8003662: 0049 lsls r1, r1, #1 + 8003664: 430a orrs r2, r1 + 8003666: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80035fc: f7fd fd8e bl 800111c - 8003600: 0003 movs r3, r0 - 8003602: 613b str r3, [r7, #16] + 8003668: f7fd fd8e bl 8001188 + 800366c: 0003 movs r3, r0 + 800366e: 613b str r3, [r7, #16] /* Wait till HSI is ready */ while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == 0U) - 8003604: e008 b.n 8003618 + 8003670: e008 b.n 8003684 { if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) - 8003606: f7fd fd89 bl 800111c - 800360a: 0002 movs r2, r0 - 800360c: 693b ldr r3, [r7, #16] - 800360e: 1ad3 subs r3, r2, r3 - 8003610: 2b02 cmp r3, #2 - 8003612: d901 bls.n 8003618 + 8003672: f7fd fd89 bl 8001188 + 8003676: 0002 movs r2, r0 + 8003678: 693b ldr r3, [r7, #16] + 800367a: 1ad3 subs r3, r2, r3 + 800367c: 2b02 cmp r3, #2 + 800367e: d901 bls.n 8003684 { return HAL_TIMEOUT; - 8003614: 2303 movs r3, #3 - 8003616: e1fe b.n 8003a16 + 8003680: 2303 movs r3, #3 + 8003682: e1fe b.n 8003a82 while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == 0U) - 8003618: 4b4b ldr r3, [pc, #300] @ (8003748 ) - 800361a: 681a ldr r2, [r3, #0] - 800361c: 2380 movs r3, #128 @ 0x80 - 800361e: 00db lsls r3, r3, #3 - 8003620: 4013 ands r3, r2 - 8003622: d0f0 beq.n 8003606 + 8003684: 4b4b ldr r3, [pc, #300] @ (80037b4 ) + 8003686: 681a ldr r2, [r3, #0] + 8003688: 2380 movs r3, #128 @ 0x80 + 800368a: 00db lsls r3, r3, #3 + 800368c: 4013 ands r3, r2 + 800368e: d0f0 beq.n 8003672 } } /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 8003624: 4b48 ldr r3, [pc, #288] @ (8003748 ) - 8003626: 685b ldr r3, [r3, #4] - 8003628: 4a4a ldr r2, [pc, #296] @ (8003754 ) - 800362a: 4013 ands r3, r2 - 800362c: 0019 movs r1, r3 - 800362e: 687b ldr r3, [r7, #4] - 8003630: 695b ldr r3, [r3, #20] - 8003632: 021a lsls r2, r3, #8 - 8003634: 4b44 ldr r3, [pc, #272] @ (8003748 ) - 8003636: 430a orrs r2, r1 - 8003638: 605a str r2, [r3, #4] - 800363a: e01b b.n 8003674 + 8003690: 4b48 ldr r3, [pc, #288] @ (80037b4 ) + 8003692: 685b ldr r3, [r3, #4] + 8003694: 4a4a ldr r2, [pc, #296] @ (80037c0 ) + 8003696: 4013 ands r3, r2 + 8003698: 0019 movs r1, r3 + 800369a: 687b ldr r3, [r7, #4] + 800369c: 695b ldr r3, [r3, #20] + 800369e: 021a lsls r2, r3, #8 + 80036a0: 4b44 ldr r3, [pc, #272] @ (80037b4 ) + 80036a2: 430a orrs r2, r1 + 80036a4: 605a str r2, [r3, #4] + 80036a6: e01b b.n 80036e0 } else { /* Disable the Internal High Speed oscillator (HSI16). */ __HAL_RCC_HSI_DISABLE(); - 800363c: 4b42 ldr r3, [pc, #264] @ (8003748 ) - 800363e: 681a ldr r2, [r3, #0] - 8003640: 4b41 ldr r3, [pc, #260] @ (8003748 ) - 8003642: 4949 ldr r1, [pc, #292] @ (8003768 ) - 8003644: 400a ands r2, r1 - 8003646: 601a str r2, [r3, #0] + 80036a8: 4b42 ldr r3, [pc, #264] @ (80037b4 ) + 80036aa: 681a ldr r2, [r3, #0] + 80036ac: 4b41 ldr r3, [pc, #260] @ (80037b4 ) + 80036ae: 4949 ldr r1, [pc, #292] @ (80037d4 ) + 80036b0: 400a ands r2, r1 + 80036b2: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003648: f7fd fd68 bl 800111c - 800364c: 0003 movs r3, r0 - 800364e: 613b str r3, [r7, #16] + 80036b4: f7fd fd68 bl 8001188 + 80036b8: 0003 movs r3, r0 + 80036ba: 613b str r3, [r7, #16] /* Wait till HSI is disabled */ while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) != 0U) - 8003650: e008 b.n 8003664 + 80036bc: e008 b.n 80036d0 { if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) - 8003652: f7fd fd63 bl 800111c - 8003656: 0002 movs r2, r0 - 8003658: 693b ldr r3, [r7, #16] - 800365a: 1ad3 subs r3, r2, r3 - 800365c: 2b02 cmp r3, #2 - 800365e: d901 bls.n 8003664 + 80036be: f7fd fd63 bl 8001188 + 80036c2: 0002 movs r2, r0 + 80036c4: 693b ldr r3, [r7, #16] + 80036c6: 1ad3 subs r3, r2, r3 + 80036c8: 2b02 cmp r3, #2 + 80036ca: d901 bls.n 80036d0 { return HAL_TIMEOUT; - 8003660: 2303 movs r3, #3 - 8003662: e1d8 b.n 8003a16 + 80036cc: 2303 movs r3, #3 + 80036ce: e1d8 b.n 8003a82 while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) != 0U) - 8003664: 4b38 ldr r3, [pc, #224] @ (8003748 ) - 8003666: 681a ldr r2, [r3, #0] - 8003668: 2380 movs r3, #128 @ 0x80 - 800366a: 00db lsls r3, r3, #3 - 800366c: 4013 ands r3, r2 - 800366e: d1f0 bne.n 8003652 - 8003670: e000 b.n 8003674 + 80036d0: 4b38 ldr r3, [pc, #224] @ (80037b4 ) + 80036d2: 681a ldr r2, [r3, #0] + 80036d4: 2380 movs r3, #128 @ 0x80 + 80036d6: 00db lsls r3, r3, #3 + 80036d8: 4013 ands r3, r2 + 80036da: d1f0 bne.n 80036be + 80036dc: e000 b.n 80036e0 if ((READ_BIT(RCC->CR, RCC_CR_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState == RCC_HSI_OFF)) - 8003672: 46c0 nop @ (mov r8, r8) + 80036de: 46c0 nop @ (mov r8, r8) } } } } /*------------------------------ LSI Configuration -------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) - 8003674: 687b ldr r3, [r7, #4] - 8003676: 681b ldr r3, [r3, #0] - 8003678: 2208 movs r2, #8 - 800367a: 4013 ands r3, r2 - 800367c: d047 beq.n 800370e + 80036e0: 687b ldr r3, [r7, #4] + 80036e2: 681b ldr r3, [r3, #0] + 80036e4: 2208 movs r2, #8 + 80036e6: 4013 ands r3, r2 + 80036e8: d047 beq.n 800377a { /* Check the parameters */ assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); /* Check if LSI is used as system clock */ if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_LSI) - 800367e: 4b32 ldr r3, [pc, #200] @ (8003748 ) - 8003680: 689b ldr r3, [r3, #8] - 8003682: 2238 movs r2, #56 @ 0x38 - 8003684: 4013 ands r3, r2 - 8003686: 2b18 cmp r3, #24 - 8003688: d10a bne.n 80036a0 + 80036ea: 4b32 ldr r3, [pc, #200] @ (80037b4 ) + 80036ec: 689b ldr r3, [r3, #8] + 80036ee: 2238 movs r2, #56 @ 0x38 + 80036f0: 4013 ands r3, r2 + 80036f2: 2b18 cmp r3, #24 + 80036f4: d10a bne.n 800370c { /* When LSI is used as system clock it will not be disabled */ if ((((RCC->CSR) & RCC_CSR_LSIRDY) != 0U) && (RCC_OscInitStruct->LSIState == RCC_LSI_OFF)) - 800368a: 4b2f ldr r3, [pc, #188] @ (8003748 ) - 800368c: 6e1b ldr r3, [r3, #96] @ 0x60 - 800368e: 2202 movs r2, #2 - 8003690: 4013 ands r3, r2 - 8003692: d03c beq.n 800370e - 8003694: 687b ldr r3, [r7, #4] - 8003696: 699b ldr r3, [r3, #24] - 8003698: 2b00 cmp r3, #0 - 800369a: d138 bne.n 800370e + 80036f6: 4b2f ldr r3, [pc, #188] @ (80037b4 ) + 80036f8: 6e1b ldr r3, [r3, #96] @ 0x60 + 80036fa: 2202 movs r2, #2 + 80036fc: 4013 ands r3, r2 + 80036fe: d03c beq.n 800377a + 8003700: 687b ldr r3, [r7, #4] + 8003702: 699b ldr r3, [r3, #24] + 8003704: 2b00 cmp r3, #0 + 8003706: d138 bne.n 800377a { return HAL_ERROR; - 800369c: 2301 movs r3, #1 - 800369e: e1ba b.n 8003a16 + 8003708: 2301 movs r3, #1 + 800370a: e1ba b.n 8003a82 } } else { /* Check the LSI State */ if (RCC_OscInitStruct->LSIState != RCC_LSI_OFF) - 80036a0: 687b ldr r3, [r7, #4] - 80036a2: 699b ldr r3, [r3, #24] - 80036a4: 2b00 cmp r3, #0 - 80036a6: d019 beq.n 80036dc + 800370c: 687b ldr r3, [r7, #4] + 800370e: 699b ldr r3, [r3, #24] + 8003710: 2b00 cmp r3, #0 + 8003712: d019 beq.n 8003748 { /* Enable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_ENABLE(); - 80036a8: 4b27 ldr r3, [pc, #156] @ (8003748 ) - 80036aa: 6e1a ldr r2, [r3, #96] @ 0x60 - 80036ac: 4b26 ldr r3, [pc, #152] @ (8003748 ) - 80036ae: 2101 movs r1, #1 - 80036b0: 430a orrs r2, r1 - 80036b2: 661a str r2, [r3, #96] @ 0x60 + 8003714: 4b27 ldr r3, [pc, #156] @ (80037b4 ) + 8003716: 6e1a ldr r2, [r3, #96] @ 0x60 + 8003718: 4b26 ldr r3, [pc, #152] @ (80037b4 ) + 800371a: 2101 movs r1, #1 + 800371c: 430a orrs r2, r1 + 800371e: 661a str r2, [r3, #96] @ 0x60 /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80036b4: f7fd fd32 bl 800111c - 80036b8: 0003 movs r3, r0 - 80036ba: 613b str r3, [r7, #16] + 8003720: f7fd fd32 bl 8001188 + 8003724: 0003 movs r3, r0 + 8003726: 613b str r3, [r7, #16] /* Wait till LSI is ready */ while (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == 0U) - 80036bc: e008 b.n 80036d0 + 8003728: e008 b.n 800373c { if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 80036be: f7fd fd2d bl 800111c - 80036c2: 0002 movs r2, r0 - 80036c4: 693b ldr r3, [r7, #16] - 80036c6: 1ad3 subs r3, r2, r3 - 80036c8: 2b02 cmp r3, #2 - 80036ca: d901 bls.n 80036d0 + 800372a: f7fd fd2d bl 8001188 + 800372e: 0002 movs r2, r0 + 8003730: 693b ldr r3, [r7, #16] + 8003732: 1ad3 subs r3, r2, r3 + 8003734: 2b02 cmp r3, #2 + 8003736: d901 bls.n 800373c { return HAL_TIMEOUT; - 80036cc: 2303 movs r3, #3 - 80036ce: e1a2 b.n 8003a16 + 8003738: 2303 movs r3, #3 + 800373a: e1a2 b.n 8003a82 while (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == 0U) - 80036d0: 4b1d ldr r3, [pc, #116] @ (8003748 ) - 80036d2: 6e1b ldr r3, [r3, #96] @ 0x60 - 80036d4: 2202 movs r2, #2 - 80036d6: 4013 ands r3, r2 - 80036d8: d0f1 beq.n 80036be - 80036da: e018 b.n 800370e + 800373c: 4b1d ldr r3, [pc, #116] @ (80037b4 ) + 800373e: 6e1b ldr r3, [r3, #96] @ 0x60 + 8003740: 2202 movs r2, #2 + 8003742: 4013 ands r3, r2 + 8003744: d0f1 beq.n 800372a + 8003746: e018 b.n 800377a } } else { /* Disable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_DISABLE(); - 80036dc: 4b1a ldr r3, [pc, #104] @ (8003748 ) - 80036de: 6e1a ldr r2, [r3, #96] @ 0x60 - 80036e0: 4b19 ldr r3, [pc, #100] @ (8003748 ) - 80036e2: 2101 movs r1, #1 - 80036e4: 438a bics r2, r1 - 80036e6: 661a str r2, [r3, #96] @ 0x60 + 8003748: 4b1a ldr r3, [pc, #104] @ (80037b4 ) + 800374a: 6e1a ldr r2, [r3, #96] @ 0x60 + 800374c: 4b19 ldr r3, [pc, #100] @ (80037b4 ) + 800374e: 2101 movs r1, #1 + 8003750: 438a bics r2, r1 + 8003752: 661a str r2, [r3, #96] @ 0x60 /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80036e8: f7fd fd18 bl 800111c - 80036ec: 0003 movs r3, r0 - 80036ee: 613b str r3, [r7, #16] + 8003754: f7fd fd18 bl 8001188 + 8003758: 0003 movs r3, r0 + 800375a: 613b str r3, [r7, #16] /* Wait till LSI is disabled */ while (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) != 0U) - 80036f0: e008 b.n 8003704 + 800375c: e008 b.n 8003770 { if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 80036f2: f7fd fd13 bl 800111c - 80036f6: 0002 movs r2, r0 - 80036f8: 693b ldr r3, [r7, #16] - 80036fa: 1ad3 subs r3, r2, r3 - 80036fc: 2b02 cmp r3, #2 - 80036fe: d901 bls.n 8003704 + 800375e: f7fd fd13 bl 8001188 + 8003762: 0002 movs r2, r0 + 8003764: 693b ldr r3, [r7, #16] + 8003766: 1ad3 subs r3, r2, r3 + 8003768: 2b02 cmp r3, #2 + 800376a: d901 bls.n 8003770 { return HAL_TIMEOUT; - 8003700: 2303 movs r3, #3 - 8003702: e188 b.n 8003a16 + 800376c: 2303 movs r3, #3 + 800376e: e188 b.n 8003a82 while (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) != 0U) - 8003704: 4b10 ldr r3, [pc, #64] @ (8003748 ) - 8003706: 6e1b ldr r3, [r3, #96] @ 0x60 - 8003708: 2202 movs r2, #2 - 800370a: 4013 ands r3, r2 - 800370c: d1f1 bne.n 80036f2 + 8003770: 4b10 ldr r3, [pc, #64] @ (80037b4 ) + 8003772: 6e1b ldr r3, [r3, #96] @ 0x60 + 8003774: 2202 movs r2, #2 + 8003776: 4013 ands r3, r2 + 8003778: d1f1 bne.n 800375e } } } } /*------------------------------ LSE Configuration -------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) - 800370e: 687b ldr r3, [r7, #4] - 8003710: 681b ldr r3, [r3, #0] - 8003712: 2204 movs r2, #4 - 8003714: 4013 ands r3, r2 - 8003716: d100 bne.n 800371a - 8003718: e0c6 b.n 80038a8 + 800377a: 687b ldr r3, [r7, #4] + 800377c: 681b ldr r3, [r3, #0] + 800377e: 2204 movs r2, #4 + 8003780: 4013 ands r3, r2 + 8003782: d100 bne.n 8003786 + 8003784: e0c6 b.n 8003914 { FlagStatus pwrclkchanged = RESET; - 800371a: 231f movs r3, #31 - 800371c: 18fb adds r3, r7, r3 - 800371e: 2200 movs r2, #0 - 8003720: 701a strb r2, [r3, #0] + 8003786: 231f movs r3, #31 + 8003788: 18fb adds r3, r7, r3 + 800378a: 2200 movs r2, #0 + 800378c: 701a strb r2, [r3, #0] /* Check the parameters */ assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState)); /* When the LSE is used as system clock, it is not allowed disable it */ if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_LSE) - 8003722: 4b09 ldr r3, [pc, #36] @ (8003748 ) - 8003724: 689b ldr r3, [r3, #8] - 8003726: 2238 movs r2, #56 @ 0x38 - 8003728: 4013 ands r3, r2 - 800372a: 2b20 cmp r3, #32 - 800372c: d11e bne.n 800376c + 800378e: 4b09 ldr r3, [pc, #36] @ (80037b4 ) + 8003790: 689b ldr r3, [r3, #8] + 8003792: 2238 movs r2, #56 @ 0x38 + 8003794: 4013 ands r3, r2 + 8003796: 2b20 cmp r3, #32 + 8003798: d11e bne.n 80037d8 { if ((((RCC->BDCR) & RCC_BDCR_LSERDY) != 0U) && (RCC_OscInitStruct->LSEState == RCC_LSE_OFF)) - 800372e: 4b06 ldr r3, [pc, #24] @ (8003748 ) - 8003730: 6ddb ldr r3, [r3, #92] @ 0x5c - 8003732: 2202 movs r2, #2 - 8003734: 4013 ands r3, r2 - 8003736: d100 bne.n 800373a - 8003738: e0b6 b.n 80038a8 - 800373a: 687b ldr r3, [r7, #4] - 800373c: 689b ldr r3, [r3, #8] - 800373e: 2b00 cmp r3, #0 - 8003740: d000 beq.n 8003744 - 8003742: e0b1 b.n 80038a8 + 800379a: 4b06 ldr r3, [pc, #24] @ (80037b4 ) + 800379c: 6ddb ldr r3, [r3, #92] @ 0x5c + 800379e: 2202 movs r2, #2 + 80037a0: 4013 ands r3, r2 + 80037a2: d100 bne.n 80037a6 + 80037a4: e0b6 b.n 8003914 + 80037a6: 687b ldr r3, [r7, #4] + 80037a8: 689b ldr r3, [r3, #8] + 80037aa: 2b00 cmp r3, #0 + 80037ac: d000 beq.n 80037b0 + 80037ae: e0b1 b.n 8003914 { return HAL_ERROR; - 8003744: 2301 movs r3, #1 - 8003746: e166 b.n 8003a16 - 8003748: 40021000 .word 0x40021000 - 800374c: fffeffff .word 0xfffeffff - 8003750: fffbffff .word 0xfffbffff - 8003754: ffff80ff .word 0xffff80ff - 8003758: ffffc7ff .word 0xffffc7ff - 800375c: 00f42400 .word 0x00f42400 - 8003760: 20000004 .word 0x20000004 - 8003764: 20000008 .word 0x20000008 - 8003768: fffffeff .word 0xfffffeff + 80037b0: 2301 movs r3, #1 + 80037b2: e166 b.n 8003a82 + 80037b4: 40021000 .word 0x40021000 + 80037b8: fffeffff .word 0xfffeffff + 80037bc: fffbffff .word 0xfffbffff + 80037c0: ffff80ff .word 0xffff80ff + 80037c4: ffffc7ff .word 0xffffc7ff + 80037c8: 00f42400 .word 0x00f42400 + 80037cc: 20000004 .word 0x20000004 + 80037d0: 20000008 .word 0x20000008 + 80037d4: fffffeff .word 0xfffffeff } else { /* Update LSE configuration in Backup Domain control register */ /* Requires to enable write access to Backup Domain of necessary */ if (__HAL_RCC_PWR_IS_CLK_DISABLED() != 0U) - 800376c: 4bac ldr r3, [pc, #688] @ (8003a20 ) - 800376e: 6bda ldr r2, [r3, #60] @ 0x3c - 8003770: 2380 movs r3, #128 @ 0x80 - 8003772: 055b lsls r3, r3, #21 - 8003774: 4013 ands r3, r2 - 8003776: d101 bne.n 800377c - 8003778: 2301 movs r3, #1 - 800377a: e000 b.n 800377e - 800377c: 2300 movs r3, #0 - 800377e: 2b00 cmp r3, #0 - 8003780: d011 beq.n 80037a6 + 80037d8: 4bac ldr r3, [pc, #688] @ (8003a8c ) + 80037da: 6bda ldr r2, [r3, #60] @ 0x3c + 80037dc: 2380 movs r3, #128 @ 0x80 + 80037de: 055b lsls r3, r3, #21 + 80037e0: 4013 ands r3, r2 + 80037e2: d101 bne.n 80037e8 + 80037e4: 2301 movs r3, #1 + 80037e6: e000 b.n 80037ea + 80037e8: 2300 movs r3, #0 + 80037ea: 2b00 cmp r3, #0 + 80037ec: d011 beq.n 8003812 { __HAL_RCC_PWR_CLK_ENABLE(); - 8003782: 4ba7 ldr r3, [pc, #668] @ (8003a20 ) - 8003784: 6bda ldr r2, [r3, #60] @ 0x3c - 8003786: 4ba6 ldr r3, [pc, #664] @ (8003a20 ) - 8003788: 2180 movs r1, #128 @ 0x80 - 800378a: 0549 lsls r1, r1, #21 - 800378c: 430a orrs r2, r1 - 800378e: 63da str r2, [r3, #60] @ 0x3c - 8003790: 4ba3 ldr r3, [pc, #652] @ (8003a20 ) - 8003792: 6bda ldr r2, [r3, #60] @ 0x3c - 8003794: 2380 movs r3, #128 @ 0x80 - 8003796: 055b lsls r3, r3, #21 - 8003798: 4013 ands r3, r2 - 800379a: 60fb str r3, [r7, #12] - 800379c: 68fb ldr r3, [r7, #12] + 80037ee: 4ba7 ldr r3, [pc, #668] @ (8003a8c ) + 80037f0: 6bda ldr r2, [r3, #60] @ 0x3c + 80037f2: 4ba6 ldr r3, [pc, #664] @ (8003a8c ) + 80037f4: 2180 movs r1, #128 @ 0x80 + 80037f6: 0549 lsls r1, r1, #21 + 80037f8: 430a orrs r2, r1 + 80037fa: 63da str r2, [r3, #60] @ 0x3c + 80037fc: 4ba3 ldr r3, [pc, #652] @ (8003a8c ) + 80037fe: 6bda ldr r2, [r3, #60] @ 0x3c + 8003800: 2380 movs r3, #128 @ 0x80 + 8003802: 055b lsls r3, r3, #21 + 8003804: 4013 ands r3, r2 + 8003806: 60fb str r3, [r7, #12] + 8003808: 68fb ldr r3, [r7, #12] pwrclkchanged = SET; - 800379e: 231f movs r3, #31 - 80037a0: 18fb adds r3, r7, r3 - 80037a2: 2201 movs r2, #1 - 80037a4: 701a strb r2, [r3, #0] + 800380a: 231f movs r3, #31 + 800380c: 18fb adds r3, r7, r3 + 800380e: 2201 movs r2, #1 + 8003810: 701a strb r2, [r3, #0] } if (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP)) - 80037a6: 4b9f ldr r3, [pc, #636] @ (8003a24 ) - 80037a8: 681a ldr r2, [r3, #0] - 80037aa: 2380 movs r3, #128 @ 0x80 - 80037ac: 005b lsls r3, r3, #1 - 80037ae: 4013 ands r3, r2 - 80037b0: d11a bne.n 80037e8 + 8003812: 4b9f ldr r3, [pc, #636] @ (8003a90 ) + 8003814: 681a ldr r2, [r3, #0] + 8003816: 2380 movs r3, #128 @ 0x80 + 8003818: 005b lsls r3, r3, #1 + 800381a: 4013 ands r3, r2 + 800381c: d11a bne.n 8003854 { /* Enable write access to Backup domain */ SET_BIT(PWR->CR1, PWR_CR1_DBP); - 80037b2: 4b9c ldr r3, [pc, #624] @ (8003a24 ) - 80037b4: 681a ldr r2, [r3, #0] - 80037b6: 4b9b ldr r3, [pc, #620] @ (8003a24 ) - 80037b8: 2180 movs r1, #128 @ 0x80 - 80037ba: 0049 lsls r1, r1, #1 - 80037bc: 430a orrs r2, r1 - 80037be: 601a str r2, [r3, #0] + 800381e: 4b9c ldr r3, [pc, #624] @ (8003a90 ) + 8003820: 681a ldr r2, [r3, #0] + 8003822: 4b9b ldr r3, [pc, #620] @ (8003a90 ) + 8003824: 2180 movs r1, #128 @ 0x80 + 8003826: 0049 lsls r1, r1, #1 + 8003828: 430a orrs r2, r1 + 800382a: 601a str r2, [r3, #0] /* Wait for Backup domain Write protection disable */ tickstart = HAL_GetTick(); - 80037c0: f7fd fcac bl 800111c - 80037c4: 0003 movs r3, r0 - 80037c6: 613b str r3, [r7, #16] + 800382c: f7fd fcac bl 8001188 + 8003830: 0003 movs r3, r0 + 8003832: 613b str r3, [r7, #16] while (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP)) - 80037c8: e008 b.n 80037dc + 8003834: e008 b.n 8003848 { if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 80037ca: f7fd fca7 bl 800111c - 80037ce: 0002 movs r2, r0 - 80037d0: 693b ldr r3, [r7, #16] - 80037d2: 1ad3 subs r3, r2, r3 - 80037d4: 2b02 cmp r3, #2 - 80037d6: d901 bls.n 80037dc + 8003836: f7fd fca7 bl 8001188 + 800383a: 0002 movs r2, r0 + 800383c: 693b ldr r3, [r7, #16] + 800383e: 1ad3 subs r3, r2, r3 + 8003840: 2b02 cmp r3, #2 + 8003842: d901 bls.n 8003848 { return HAL_TIMEOUT; - 80037d8: 2303 movs r3, #3 - 80037da: e11c b.n 8003a16 + 8003844: 2303 movs r3, #3 + 8003846: e11c b.n 8003a82 while (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP)) - 80037dc: 4b91 ldr r3, [pc, #580] @ (8003a24 ) - 80037de: 681a ldr r2, [r3, #0] - 80037e0: 2380 movs r3, #128 @ 0x80 - 80037e2: 005b lsls r3, r3, #1 - 80037e4: 4013 ands r3, r2 - 80037e6: d0f0 beq.n 80037ca + 8003848: 4b91 ldr r3, [pc, #580] @ (8003a90 ) + 800384a: 681a ldr r2, [r3, #0] + 800384c: 2380 movs r3, #128 @ 0x80 + 800384e: 005b lsls r3, r3, #1 + 8003850: 4013 ands r3, r2 + 8003852: d0f0 beq.n 8003836 } } } /* Set the new LSE configuration -----------------------------------------*/ __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); - 80037e8: 687b ldr r3, [r7, #4] - 80037ea: 689b ldr r3, [r3, #8] - 80037ec: 2b01 cmp r3, #1 - 80037ee: d106 bne.n 80037fe - 80037f0: 4b8b ldr r3, [pc, #556] @ (8003a20 ) - 80037f2: 6dda ldr r2, [r3, #92] @ 0x5c - 80037f4: 4b8a ldr r3, [pc, #552] @ (8003a20 ) - 80037f6: 2101 movs r1, #1 - 80037f8: 430a orrs r2, r1 - 80037fa: 65da str r2, [r3, #92] @ 0x5c - 80037fc: e01c b.n 8003838 - 80037fe: 687b ldr r3, [r7, #4] - 8003800: 689b ldr r3, [r3, #8] - 8003802: 2b05 cmp r3, #5 - 8003804: d10c bne.n 8003820 - 8003806: 4b86 ldr r3, [pc, #536] @ (8003a20 ) - 8003808: 6dda ldr r2, [r3, #92] @ 0x5c - 800380a: 4b85 ldr r3, [pc, #532] @ (8003a20 ) - 800380c: 2104 movs r1, #4 - 800380e: 430a orrs r2, r1 - 8003810: 65da str r2, [r3, #92] @ 0x5c - 8003812: 4b83 ldr r3, [pc, #524] @ (8003a20 ) - 8003814: 6dda ldr r2, [r3, #92] @ 0x5c - 8003816: 4b82 ldr r3, [pc, #520] @ (8003a20 ) - 8003818: 2101 movs r1, #1 - 800381a: 430a orrs r2, r1 - 800381c: 65da str r2, [r3, #92] @ 0x5c - 800381e: e00b b.n 8003838 - 8003820: 4b7f ldr r3, [pc, #508] @ (8003a20 ) - 8003822: 6dda ldr r2, [r3, #92] @ 0x5c - 8003824: 4b7e ldr r3, [pc, #504] @ (8003a20 ) - 8003826: 2101 movs r1, #1 - 8003828: 438a bics r2, r1 - 800382a: 65da str r2, [r3, #92] @ 0x5c - 800382c: 4b7c ldr r3, [pc, #496] @ (8003a20 ) - 800382e: 6dda ldr r2, [r3, #92] @ 0x5c - 8003830: 4b7b ldr r3, [pc, #492] @ (8003a20 ) - 8003832: 2104 movs r1, #4 - 8003834: 438a bics r2, r1 - 8003836: 65da str r2, [r3, #92] @ 0x5c + 8003854: 687b ldr r3, [r7, #4] + 8003856: 689b ldr r3, [r3, #8] + 8003858: 2b01 cmp r3, #1 + 800385a: d106 bne.n 800386a + 800385c: 4b8b ldr r3, [pc, #556] @ (8003a8c ) + 800385e: 6dda ldr r2, [r3, #92] @ 0x5c + 8003860: 4b8a ldr r3, [pc, #552] @ (8003a8c ) + 8003862: 2101 movs r1, #1 + 8003864: 430a orrs r2, r1 + 8003866: 65da str r2, [r3, #92] @ 0x5c + 8003868: e01c b.n 80038a4 + 800386a: 687b ldr r3, [r7, #4] + 800386c: 689b ldr r3, [r3, #8] + 800386e: 2b05 cmp r3, #5 + 8003870: d10c bne.n 800388c + 8003872: 4b86 ldr r3, [pc, #536] @ (8003a8c ) + 8003874: 6dda ldr r2, [r3, #92] @ 0x5c + 8003876: 4b85 ldr r3, [pc, #532] @ (8003a8c ) + 8003878: 2104 movs r1, #4 + 800387a: 430a orrs r2, r1 + 800387c: 65da str r2, [r3, #92] @ 0x5c + 800387e: 4b83 ldr r3, [pc, #524] @ (8003a8c ) + 8003880: 6dda ldr r2, [r3, #92] @ 0x5c + 8003882: 4b82 ldr r3, [pc, #520] @ (8003a8c ) + 8003884: 2101 movs r1, #1 + 8003886: 430a orrs r2, r1 + 8003888: 65da str r2, [r3, #92] @ 0x5c + 800388a: e00b b.n 80038a4 + 800388c: 4b7f ldr r3, [pc, #508] @ (8003a8c ) + 800388e: 6dda ldr r2, [r3, #92] @ 0x5c + 8003890: 4b7e ldr r3, [pc, #504] @ (8003a8c ) + 8003892: 2101 movs r1, #1 + 8003894: 438a bics r2, r1 + 8003896: 65da str r2, [r3, #92] @ 0x5c + 8003898: 4b7c ldr r3, [pc, #496] @ (8003a8c ) + 800389a: 6dda ldr r2, [r3, #92] @ 0x5c + 800389c: 4b7b ldr r3, [pc, #492] @ (8003a8c ) + 800389e: 2104 movs r1, #4 + 80038a0: 438a bics r2, r1 + 80038a2: 65da str r2, [r3, #92] @ 0x5c /* Check the LSE State */ if (RCC_OscInitStruct->LSEState != RCC_LSE_OFF) - 8003838: 687b ldr r3, [r7, #4] - 800383a: 689b ldr r3, [r3, #8] - 800383c: 2b00 cmp r3, #0 - 800383e: d014 beq.n 800386a + 80038a4: 687b ldr r3, [r7, #4] + 80038a6: 689b ldr r3, [r3, #8] + 80038a8: 2b00 cmp r3, #0 + 80038aa: d014 beq.n 80038d6 { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003840: f7fd fc6c bl 800111c - 8003844: 0003 movs r3, r0 - 8003846: 613b str r3, [r7, #16] + 80038ac: f7fd fc6c bl 8001188 + 80038b0: 0003 movs r3, r0 + 80038b2: 613b str r3, [r7, #16] /* Wait till LSE is ready */ while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) - 8003848: e009 b.n 800385e + 80038b4: e009 b.n 80038ca { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 800384a: f7fd fc67 bl 800111c - 800384e: 0002 movs r2, r0 - 8003850: 693b ldr r3, [r7, #16] - 8003852: 1ad3 subs r3, r2, r3 - 8003854: 4a74 ldr r2, [pc, #464] @ (8003a28 ) - 8003856: 4293 cmp r3, r2 - 8003858: d901 bls.n 800385e + 80038b6: f7fd fc67 bl 8001188 + 80038ba: 0002 movs r2, r0 + 80038bc: 693b ldr r3, [r7, #16] + 80038be: 1ad3 subs r3, r2, r3 + 80038c0: 4a74 ldr r2, [pc, #464] @ (8003a94 ) + 80038c2: 4293 cmp r3, r2 + 80038c4: d901 bls.n 80038ca { return HAL_TIMEOUT; - 800385a: 2303 movs r3, #3 - 800385c: e0db b.n 8003a16 + 80038c6: 2303 movs r3, #3 + 80038c8: e0db b.n 8003a82 while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) - 800385e: 4b70 ldr r3, [pc, #448] @ (8003a20 ) - 8003860: 6ddb ldr r3, [r3, #92] @ 0x5c - 8003862: 2202 movs r2, #2 - 8003864: 4013 ands r3, r2 - 8003866: d0f0 beq.n 800384a - 8003868: e013 b.n 8003892 + 80038ca: 4b70 ldr r3, [pc, #448] @ (8003a8c ) + 80038cc: 6ddb ldr r3, [r3, #92] @ 0x5c + 80038ce: 2202 movs r2, #2 + 80038d0: 4013 ands r3, r2 + 80038d2: d0f0 beq.n 80038b6 + 80038d4: e013 b.n 80038fe } } else { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 800386a: f7fd fc57 bl 800111c - 800386e: 0003 movs r3, r0 - 8003870: 613b str r3, [r7, #16] + 80038d6: f7fd fc57 bl 8001188 + 80038da: 0003 movs r3, r0 + 80038dc: 613b str r3, [r7, #16] /* Wait till LSE is disabled */ while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) != 0U) - 8003872: e009 b.n 8003888 + 80038de: e009 b.n 80038f4 { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8003874: f7fd fc52 bl 800111c - 8003878: 0002 movs r2, r0 - 800387a: 693b ldr r3, [r7, #16] - 800387c: 1ad3 subs r3, r2, r3 - 800387e: 4a6a ldr r2, [pc, #424] @ (8003a28 ) - 8003880: 4293 cmp r3, r2 - 8003882: d901 bls.n 8003888 + 80038e0: f7fd fc52 bl 8001188 + 80038e4: 0002 movs r2, r0 + 80038e6: 693b ldr r3, [r7, #16] + 80038e8: 1ad3 subs r3, r2, r3 + 80038ea: 4a6a ldr r2, [pc, #424] @ (8003a94 ) + 80038ec: 4293 cmp r3, r2 + 80038ee: d901 bls.n 80038f4 { return HAL_TIMEOUT; - 8003884: 2303 movs r3, #3 - 8003886: e0c6 b.n 8003a16 + 80038f0: 2303 movs r3, #3 + 80038f2: e0c6 b.n 8003a82 while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) != 0U) - 8003888: 4b65 ldr r3, [pc, #404] @ (8003a20 ) - 800388a: 6ddb ldr r3, [r3, #92] @ 0x5c - 800388c: 2202 movs r2, #2 - 800388e: 4013 ands r3, r2 - 8003890: d1f0 bne.n 8003874 + 80038f4: 4b65 ldr r3, [pc, #404] @ (8003a8c ) + 80038f6: 6ddb ldr r3, [r3, #92] @ 0x5c + 80038f8: 2202 movs r2, #2 + 80038fa: 4013 ands r3, r2 + 80038fc: d1f0 bne.n 80038e0 } } } /* Restore clock configuration if changed */ if (pwrclkchanged == SET) - 8003892: 231f movs r3, #31 - 8003894: 18fb adds r3, r7, r3 - 8003896: 781b ldrb r3, [r3, #0] - 8003898: 2b01 cmp r3, #1 - 800389a: d105 bne.n 80038a8 + 80038fe: 231f movs r3, #31 + 8003900: 18fb adds r3, r7, r3 + 8003902: 781b ldrb r3, [r3, #0] + 8003904: 2b01 cmp r3, #1 + 8003906: d105 bne.n 8003914 { __HAL_RCC_PWR_CLK_DISABLE(); - 800389c: 4b60 ldr r3, [pc, #384] @ (8003a20 ) - 800389e: 6bda ldr r2, [r3, #60] @ 0x3c - 80038a0: 4b5f ldr r3, [pc, #380] @ (8003a20 ) - 80038a2: 4962 ldr r1, [pc, #392] @ (8003a2c ) - 80038a4: 400a ands r2, r1 - 80038a6: 63da str r2, [r3, #60] @ 0x3c + 8003908: 4b60 ldr r3, [pc, #384] @ (8003a8c ) + 800390a: 6bda ldr r2, [r3, #60] @ 0x3c + 800390c: 4b5f ldr r3, [pc, #380] @ (8003a8c ) + 800390e: 4962 ldr r1, [pc, #392] @ (8003a98 ) + 8003910: 400a ands r2, r1 + 8003912: 63da str r2, [r3, #60] @ 0x3c #endif /* RCC_HSI48_SUPPORT */ /*-------------------------------- PLL Configuration -----------------------*/ /* Check the parameters */ assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); if (RCC_OscInitStruct->PLL.PLLState != RCC_PLL_NONE) - 80038a8: 687b ldr r3, [r7, #4] - 80038aa: 69db ldr r3, [r3, #28] - 80038ac: 2b00 cmp r3, #0 - 80038ae: d100 bne.n 80038b2 - 80038b0: e0b0 b.n 8003a14 + 8003914: 687b ldr r3, [r7, #4] + 8003916: 69db ldr r3, [r3, #28] + 8003918: 2b00 cmp r3, #0 + 800391a: d100 bne.n 800391e + 800391c: e0b0 b.n 8003a80 { /* Check if the PLL is used as system clock or not */ if (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) - 80038b2: 4b5b ldr r3, [pc, #364] @ (8003a20 ) - 80038b4: 689b ldr r3, [r3, #8] - 80038b6: 2238 movs r2, #56 @ 0x38 - 80038b8: 4013 ands r3, r2 - 80038ba: 2b10 cmp r3, #16 - 80038bc: d100 bne.n 80038c0 - 80038be: e078 b.n 80039b2 + 800391e: 4b5b ldr r3, [pc, #364] @ (8003a8c ) + 8003920: 689b ldr r3, [r3, #8] + 8003922: 2238 movs r2, #56 @ 0x38 + 8003924: 4013 ands r3, r2 + 8003926: 2b10 cmp r3, #16 + 8003928: d100 bne.n 800392c + 800392a: e078 b.n 8003a1e { if (RCC_OscInitStruct->PLL.PLLState == RCC_PLL_ON) - 80038c0: 687b ldr r3, [r7, #4] - 80038c2: 69db ldr r3, [r3, #28] - 80038c4: 2b02 cmp r3, #2 - 80038c6: d153 bne.n 8003970 + 800392c: 687b ldr r3, [r7, #4] + 800392e: 69db ldr r3, [r3, #28] + 8003930: 2b02 cmp r3, #2 + 8003932: d153 bne.n 80039dc assert_param(IS_RCC_PLLQ_VALUE(RCC_OscInitStruct->PLL.PLLQ)); #endif /* RCC_PLLQ_SUPPORT */ assert_param(IS_RCC_PLLR_VALUE(RCC_OscInitStruct->PLL.PLLR)); /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); - 80038c8: 4b55 ldr r3, [pc, #340] @ (8003a20 ) - 80038ca: 681a ldr r2, [r3, #0] - 80038cc: 4b54 ldr r3, [pc, #336] @ (8003a20 ) - 80038ce: 4958 ldr r1, [pc, #352] @ (8003a30 ) - 80038d0: 400a ands r2, r1 - 80038d2: 601a str r2, [r3, #0] + 8003934: 4b55 ldr r3, [pc, #340] @ (8003a8c ) + 8003936: 681a ldr r2, [r3, #0] + 8003938: 4b54 ldr r3, [pc, #336] @ (8003a8c ) + 800393a: 4958 ldr r1, [pc, #352] @ (8003a9c ) + 800393c: 400a ands r2, r1 + 800393e: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80038d4: f7fd fc22 bl 800111c - 80038d8: 0003 movs r3, r0 - 80038da: 613b str r3, [r7, #16] + 8003940: f7fd fc22 bl 8001188 + 8003944: 0003 movs r3, r0 + 8003946: 613b str r3, [r7, #16] /* Wait till PLL is ready */ while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U) - 80038dc: e008 b.n 80038f0 + 8003948: e008 b.n 800395c { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 80038de: f7fd fc1d bl 800111c - 80038e2: 0002 movs r2, r0 - 80038e4: 693b ldr r3, [r7, #16] - 80038e6: 1ad3 subs r3, r2, r3 - 80038e8: 2b02 cmp r3, #2 - 80038ea: d901 bls.n 80038f0 + 800394a: f7fd fc1d bl 8001188 + 800394e: 0002 movs r2, r0 + 8003950: 693b ldr r3, [r7, #16] + 8003952: 1ad3 subs r3, r2, r3 + 8003954: 2b02 cmp r3, #2 + 8003956: d901 bls.n 800395c { return HAL_TIMEOUT; - 80038ec: 2303 movs r3, #3 - 80038ee: e092 b.n 8003a16 + 8003958: 2303 movs r3, #3 + 800395a: e092 b.n 8003a82 while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U) - 80038f0: 4b4b ldr r3, [pc, #300] @ (8003a20 ) - 80038f2: 681a ldr r2, [r3, #0] - 80038f4: 2380 movs r3, #128 @ 0x80 - 80038f6: 049b lsls r3, r3, #18 - 80038f8: 4013 ands r3, r2 - 80038fa: d1f0 bne.n 80038de + 800395c: 4b4b ldr r3, [pc, #300] @ (8003a8c ) + 800395e: 681a ldr r2, [r3, #0] + 8003960: 2380 movs r3, #128 @ 0x80 + 8003962: 049b lsls r3, r3, #18 + 8003964: 4013 ands r3, r2 + 8003966: d1f0 bne.n 800394a RCC_OscInitStruct->PLL.PLLN, RCC_OscInitStruct->PLL.PLLP, RCC_OscInitStruct->PLL.PLLQ, RCC_OscInitStruct->PLL.PLLR); #else /* !RCC_PLLQ_SUPPORT */ __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, - 80038fc: 4b48 ldr r3, [pc, #288] @ (8003a20 ) - 80038fe: 68db ldr r3, [r3, #12] - 8003900: 4a4c ldr r2, [pc, #304] @ (8003a34 ) - 8003902: 4013 ands r3, r2 - 8003904: 0019 movs r1, r3 - 8003906: 687b ldr r3, [r7, #4] - 8003908: 6a1a ldr r2, [r3, #32] - 800390a: 687b ldr r3, [r7, #4] - 800390c: 6a5b ldr r3, [r3, #36] @ 0x24 - 800390e: 431a orrs r2, r3 - 8003910: 687b ldr r3, [r7, #4] - 8003912: 6a9b ldr r3, [r3, #40] @ 0x28 - 8003914: 021b lsls r3, r3, #8 - 8003916: 431a orrs r2, r3 - 8003918: 687b ldr r3, [r7, #4] - 800391a: 6adb ldr r3, [r3, #44] @ 0x2c - 800391c: 431a orrs r2, r3 - 800391e: 687b ldr r3, [r7, #4] - 8003920: 6b1b ldr r3, [r3, #48] @ 0x30 - 8003922: 431a orrs r2, r3 - 8003924: 4b3e ldr r3, [pc, #248] @ (8003a20 ) - 8003926: 430a orrs r2, r1 - 8003928: 60da str r2, [r3, #12] + 8003968: 4b48 ldr r3, [pc, #288] @ (8003a8c ) + 800396a: 68db ldr r3, [r3, #12] + 800396c: 4a4c ldr r2, [pc, #304] @ (8003aa0 ) + 800396e: 4013 ands r3, r2 + 8003970: 0019 movs r1, r3 + 8003972: 687b ldr r3, [r7, #4] + 8003974: 6a1a ldr r2, [r3, #32] + 8003976: 687b ldr r3, [r7, #4] + 8003978: 6a5b ldr r3, [r3, #36] @ 0x24 + 800397a: 431a orrs r2, r3 + 800397c: 687b ldr r3, [r7, #4] + 800397e: 6a9b ldr r3, [r3, #40] @ 0x28 + 8003980: 021b lsls r3, r3, #8 + 8003982: 431a orrs r2, r3 + 8003984: 687b ldr r3, [r7, #4] + 8003986: 6adb ldr r3, [r3, #44] @ 0x2c + 8003988: 431a orrs r2, r3 + 800398a: 687b ldr r3, [r7, #4] + 800398c: 6b1b ldr r3, [r3, #48] @ 0x30 + 800398e: 431a orrs r2, r3 + 8003990: 4b3e ldr r3, [pc, #248] @ (8003a8c ) + 8003992: 430a orrs r2, r1 + 8003994: 60da str r2, [r3, #12] RCC_OscInitStruct->PLL.PLLP, RCC_OscInitStruct->PLL.PLLR); #endif /* RCC_PLLQ_SUPPORT */ /* Enable the main PLL. */ __HAL_RCC_PLL_ENABLE(); - 800392a: 4b3d ldr r3, [pc, #244] @ (8003a20 ) - 800392c: 681a ldr r2, [r3, #0] - 800392e: 4b3c ldr r3, [pc, #240] @ (8003a20 ) - 8003930: 2180 movs r1, #128 @ 0x80 - 8003932: 0449 lsls r1, r1, #17 - 8003934: 430a orrs r2, r1 - 8003936: 601a str r2, [r3, #0] + 8003996: 4b3d ldr r3, [pc, #244] @ (8003a8c ) + 8003998: 681a ldr r2, [r3, #0] + 800399a: 4b3c ldr r3, [pc, #240] @ (8003a8c ) + 800399c: 2180 movs r1, #128 @ 0x80 + 800399e: 0449 lsls r1, r1, #17 + 80039a0: 430a orrs r2, r1 + 80039a2: 601a str r2, [r3, #0] /* Enable PLLR Clock output. */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLRCLK); - 8003938: 4b39 ldr r3, [pc, #228] @ (8003a20 ) - 800393a: 68da ldr r2, [r3, #12] - 800393c: 4b38 ldr r3, [pc, #224] @ (8003a20 ) - 800393e: 2180 movs r1, #128 @ 0x80 - 8003940: 0549 lsls r1, r1, #21 - 8003942: 430a orrs r2, r1 - 8003944: 60da str r2, [r3, #12] + 80039a4: 4b39 ldr r3, [pc, #228] @ (8003a8c ) + 80039a6: 68da ldr r2, [r3, #12] + 80039a8: 4b38 ldr r3, [pc, #224] @ (8003a8c ) + 80039aa: 2180 movs r1, #128 @ 0x80 + 80039ac: 0549 lsls r1, r1, #21 + 80039ae: 430a orrs r2, r1 + 80039b0: 60da str r2, [r3, #12] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003946: f7fd fbe9 bl 800111c - 800394a: 0003 movs r3, r0 - 800394c: 613b str r3, [r7, #16] + 80039b2: f7fd fbe9 bl 8001188 + 80039b6: 0003 movs r3, r0 + 80039b8: 613b str r3, [r7, #16] /* Wait till PLL is ready */ while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) == 0U) - 800394e: e008 b.n 8003962 + 80039ba: e008 b.n 80039ce { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8003950: f7fd fbe4 bl 800111c - 8003954: 0002 movs r2, r0 - 8003956: 693b ldr r3, [r7, #16] - 8003958: 1ad3 subs r3, r2, r3 - 800395a: 2b02 cmp r3, #2 - 800395c: d901 bls.n 8003962 + 80039bc: f7fd fbe4 bl 8001188 + 80039c0: 0002 movs r2, r0 + 80039c2: 693b ldr r3, [r7, #16] + 80039c4: 1ad3 subs r3, r2, r3 + 80039c6: 2b02 cmp r3, #2 + 80039c8: d901 bls.n 80039ce { return HAL_TIMEOUT; - 800395e: 2303 movs r3, #3 - 8003960: e059 b.n 8003a16 + 80039ca: 2303 movs r3, #3 + 80039cc: e059 b.n 8003a82 while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) == 0U) - 8003962: 4b2f ldr r3, [pc, #188] @ (8003a20 ) - 8003964: 681a ldr r2, [r3, #0] - 8003966: 2380 movs r3, #128 @ 0x80 - 8003968: 049b lsls r3, r3, #18 - 800396a: 4013 ands r3, r2 - 800396c: d0f0 beq.n 8003950 - 800396e: e051 b.n 8003a14 + 80039ce: 4b2f ldr r3, [pc, #188] @ (8003a8c ) + 80039d0: 681a ldr r2, [r3, #0] + 80039d2: 2380 movs r3, #128 @ 0x80 + 80039d4: 049b lsls r3, r3, #18 + 80039d6: 4013 ands r3, r2 + 80039d8: d0f0 beq.n 80039bc + 80039da: e051 b.n 8003a80 } } else { /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); - 8003970: 4b2b ldr r3, [pc, #172] @ (8003a20 ) - 8003972: 681a ldr r2, [r3, #0] - 8003974: 4b2a ldr r3, [pc, #168] @ (8003a20 ) - 8003976: 492e ldr r1, [pc, #184] @ (8003a30 ) - 8003978: 400a ands r2, r1 - 800397a: 601a str r2, [r3, #0] + 80039dc: 4b2b ldr r3, [pc, #172] @ (8003a8c ) + 80039de: 681a ldr r2, [r3, #0] + 80039e0: 4b2a ldr r3, [pc, #168] @ (8003a8c ) + 80039e2: 492e ldr r1, [pc, #184] @ (8003a9c ) + 80039e4: 400a ands r2, r1 + 80039e6: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 800397c: f7fd fbce bl 800111c - 8003980: 0003 movs r3, r0 - 8003982: 613b str r3, [r7, #16] + 80039e8: f7fd fbce bl 8001188 + 80039ec: 0003 movs r3, r0 + 80039ee: 613b str r3, [r7, #16] /* Wait till PLL is disabled */ while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U) - 8003984: e008 b.n 8003998 + 80039f0: e008 b.n 8003a04 { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8003986: f7fd fbc9 bl 800111c - 800398a: 0002 movs r2, r0 - 800398c: 693b ldr r3, [r7, #16] - 800398e: 1ad3 subs r3, r2, r3 - 8003990: 2b02 cmp r3, #2 - 8003992: d901 bls.n 8003998 + 80039f2: f7fd fbc9 bl 8001188 + 80039f6: 0002 movs r2, r0 + 80039f8: 693b ldr r3, [r7, #16] + 80039fa: 1ad3 subs r3, r2, r3 + 80039fc: 2b02 cmp r3, #2 + 80039fe: d901 bls.n 8003a04 { return HAL_TIMEOUT; - 8003994: 2303 movs r3, #3 - 8003996: e03e b.n 8003a16 + 8003a00: 2303 movs r3, #3 + 8003a02: e03e b.n 8003a82 while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U) - 8003998: 4b21 ldr r3, [pc, #132] @ (8003a20 ) - 800399a: 681a ldr r2, [r3, #0] - 800399c: 2380 movs r3, #128 @ 0x80 - 800399e: 049b lsls r3, r3, #18 - 80039a0: 4013 ands r3, r2 - 80039a2: d1f0 bne.n 8003986 + 8003a04: 4b21 ldr r3, [pc, #132] @ (8003a8c ) + 8003a06: 681a ldr r2, [r3, #0] + 8003a08: 2380 movs r3, #128 @ 0x80 + 8003a0a: 049b lsls r3, r3, #18 + 8003a0c: 4013 ands r3, r2 + 8003a0e: d1f0 bne.n 80039f2 } /* Unselect main PLL clock source and disable main PLL outputs to save power */ #if defined(RCC_PLLQ_SUPPORT) RCC->PLLCFGR &= ~(RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLPEN | RCC_PLLCFGR_PLLQEN | RCC_PLLCFGR_PLLREN); #else RCC->PLLCFGR &= ~(RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLPEN | RCC_PLLCFGR_PLLREN); - 80039a4: 4b1e ldr r3, [pc, #120] @ (8003a20 ) - 80039a6: 68da ldr r2, [r3, #12] - 80039a8: 4b1d ldr r3, [pc, #116] @ (8003a20 ) - 80039aa: 4923 ldr r1, [pc, #140] @ (8003a38 ) - 80039ac: 400a ands r2, r1 - 80039ae: 60da str r2, [r3, #12] - 80039b0: e030 b.n 8003a14 + 8003a10: 4b1e ldr r3, [pc, #120] @ (8003a8c ) + 8003a12: 68da ldr r2, [r3, #12] + 8003a14: 4b1d ldr r3, [pc, #116] @ (8003a8c ) + 8003a16: 4923 ldr r1, [pc, #140] @ (8003aa4 ) + 8003a18: 400a ands r2, r1 + 8003a1a: 60da str r2, [r3, #12] + 8003a1c: e030 b.n 8003a80 } } else { /* Check if there is a request to disable the PLL used as System clock source */ if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) - 80039b2: 687b ldr r3, [r7, #4] - 80039b4: 69db ldr r3, [r3, #28] - 80039b6: 2b01 cmp r3, #1 - 80039b8: d101 bne.n 80039be + 8003a1e: 687b ldr r3, [r7, #4] + 8003a20: 69db ldr r3, [r3, #28] + 8003a22: 2b01 cmp r3, #1 + 8003a24: d101 bne.n 8003a2a { return HAL_ERROR; - 80039ba: 2301 movs r3, #1 - 80039bc: e02b b.n 8003a16 + 8003a26: 2301 movs r3, #1 + 8003a28: e02b b.n 8003a82 } else { /* Do not return HAL_ERROR if request repeats the current configuration */ temp_pllckcfg = RCC->PLLCFGR; - 80039be: 4b18 ldr r3, [pc, #96] @ (8003a20 ) - 80039c0: 68db ldr r3, [r3, #12] - 80039c2: 617b str r3, [r7, #20] + 8003a2a: 4b18 ldr r3, [pc, #96] @ (8003a8c ) + 8003a2c: 68db ldr r3, [r3, #12] + 8003a2e: 617b str r3, [r7, #20] if ((READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 80039c4: 697b ldr r3, [r7, #20] - 80039c6: 2203 movs r2, #3 - 80039c8: 401a ands r2, r3 - 80039ca: 687b ldr r3, [r7, #4] - 80039cc: 6a1b ldr r3, [r3, #32] - 80039ce: 429a cmp r2, r3 - 80039d0: d11e bne.n 8003a10 + 8003a30: 697b ldr r3, [r7, #20] + 8003a32: 2203 movs r2, #3 + 8003a34: 401a ands r2, r3 + 8003a36: 687b ldr r3, [r7, #4] + 8003a38: 6a1b ldr r3, [r3, #32] + 8003a3a: 429a cmp r2, r3 + 8003a3c: d11e bne.n 8003a7c (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) || - 80039d2: 697b ldr r3, [r7, #20] - 80039d4: 2270 movs r2, #112 @ 0x70 - 80039d6: 401a ands r2, r3 - 80039d8: 687b ldr r3, [r7, #4] - 80039da: 6a5b ldr r3, [r3, #36] @ 0x24 + 8003a3e: 697b ldr r3, [r7, #20] + 8003a40: 2270 movs r2, #112 @ 0x70 + 8003a42: 401a ands r2, r3 + 8003a44: 687b ldr r3, [r7, #4] + 8003a46: 6a5b ldr r3, [r3, #36] @ 0x24 if ((READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 80039dc: 429a cmp r2, r3 - 80039de: d117 bne.n 8003a10 + 8003a48: 429a cmp r2, r3 + 8003a4a: d117 bne.n 8003a7c (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) || - 80039e0: 697a ldr r2, [r7, #20] - 80039e2: 23fe movs r3, #254 @ 0xfe - 80039e4: 01db lsls r3, r3, #7 - 80039e6: 401a ands r2, r3 - 80039e8: 687b ldr r3, [r7, #4] - 80039ea: 6a9b ldr r3, [r3, #40] @ 0x28 - 80039ec: 021b lsls r3, r3, #8 + 8003a4c: 697a ldr r2, [r7, #20] + 8003a4e: 23fe movs r3, #254 @ 0xfe + 8003a50: 01db lsls r3, r3, #7 + 8003a52: 401a ands r2, r3 + 8003a54: 687b ldr r3, [r7, #4] + 8003a56: 6a9b ldr r3, [r3, #40] @ 0x28 + 8003a58: 021b lsls r3, r3, #8 (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) || - 80039ee: 429a cmp r2, r3 - 80039f0: d10e bne.n 8003a10 + 8003a5a: 429a cmp r2, r3 + 8003a5c: d10e bne.n 8003a7c (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLP) != RCC_OscInitStruct->PLL.PLLP) || - 80039f2: 697a ldr r2, [r7, #20] - 80039f4: 23f8 movs r3, #248 @ 0xf8 - 80039f6: 039b lsls r3, r3, #14 - 80039f8: 401a ands r2, r3 - 80039fa: 687b ldr r3, [r7, #4] - 80039fc: 6adb ldr r3, [r3, #44] @ 0x2c + 8003a5e: 697a ldr r2, [r7, #20] + 8003a60: 23f8 movs r3, #248 @ 0xf8 + 8003a62: 039b lsls r3, r3, #14 + 8003a64: 401a ands r2, r3 + 8003a66: 687b ldr r3, [r7, #4] + 8003a68: 6adb ldr r3, [r3, #44] @ 0x2c (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) || - 80039fe: 429a cmp r2, r3 - 8003a00: d106 bne.n 8003a10 + 8003a6a: 429a cmp r2, r3 + 8003a6c: d106 bne.n 8003a7c #if defined (RCC_PLLQ_SUPPORT) (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLQ) != RCC_OscInitStruct->PLL.PLLQ) || #endif /* RCC_PLLQ_SUPPORT */ (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLR) != RCC_OscInitStruct->PLL.PLLR)) - 8003a02: 697b ldr r3, [r7, #20] - 8003a04: 0f5b lsrs r3, r3, #29 - 8003a06: 075a lsls r2, r3, #29 - 8003a08: 687b ldr r3, [r7, #4] - 8003a0a: 6b1b ldr r3, [r3, #48] @ 0x30 + 8003a6e: 697b ldr r3, [r7, #20] + 8003a70: 0f5b lsrs r3, r3, #29 + 8003a72: 075a lsls r2, r3, #29 + 8003a74: 687b ldr r3, [r7, #4] + 8003a76: 6b1b ldr r3, [r3, #48] @ 0x30 (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLP) != RCC_OscInitStruct->PLL.PLLP) || - 8003a0c: 429a cmp r2, r3 - 8003a0e: d001 beq.n 8003a14 + 8003a78: 429a cmp r2, r3 + 8003a7a: d001 beq.n 8003a80 { return HAL_ERROR; - 8003a10: 2301 movs r3, #1 - 8003a12: e000 b.n 8003a16 + 8003a7c: 2301 movs r3, #1 + 8003a7e: e000 b.n 8003a82 } } } } return HAL_OK; - 8003a14: 2300 movs r3, #0 + 8003a80: 2300 movs r3, #0 } - 8003a16: 0018 movs r0, r3 - 8003a18: 46bd mov sp, r7 - 8003a1a: b008 add sp, #32 - 8003a1c: bd80 pop {r7, pc} - 8003a1e: 46c0 nop @ (mov r8, r8) - 8003a20: 40021000 .word 0x40021000 - 8003a24: 40007000 .word 0x40007000 - 8003a28: 00001388 .word 0x00001388 - 8003a2c: efffffff .word 0xefffffff - 8003a30: feffffff .word 0xfeffffff - 8003a34: 1fc1808c .word 0x1fc1808c - 8003a38: effefffc .word 0xeffefffc + 8003a82: 0018 movs r0, r3 + 8003a84: 46bd mov sp, r7 + 8003a86: b008 add sp, #32 + 8003a88: bd80 pop {r7, pc} + 8003a8a: 46c0 nop @ (mov r8, r8) + 8003a8c: 40021000 .word 0x40021000 + 8003a90: 40007000 .word 0x40007000 + 8003a94: 00001388 .word 0x00001388 + 8003a98: efffffff .word 0xefffffff + 8003a9c: feffffff .word 0xfeffffff + 8003aa0: 1fc1808c .word 0x1fc1808c + 8003aa4: effefffc .word 0xeffefffc -08003a3c : +08003aa8 : * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency * (for more details refer to section above "Initialization/de-initialization functions") * @retval None */ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) { - 8003a3c: b580 push {r7, lr} - 8003a3e: b084 sub sp, #16 - 8003a40: af00 add r7, sp, #0 - 8003a42: 6078 str r0, [r7, #4] - 8003a44: 6039 str r1, [r7, #0] + 8003aa8: b580 push {r7, lr} + 8003aaa: b084 sub sp, #16 + 8003aac: af00 add r7, sp, #0 + 8003aae: 6078 str r0, [r7, #4] + 8003ab0: 6039 str r1, [r7, #0] uint32_t tickstart; /* Check Null pointer */ if (RCC_ClkInitStruct == NULL) - 8003a46: 687b ldr r3, [r7, #4] - 8003a48: 2b00 cmp r3, #0 - 8003a4a: d101 bne.n 8003a50 + 8003ab2: 687b ldr r3, [r7, #4] + 8003ab4: 2b00 cmp r3, #0 + 8003ab6: d101 bne.n 8003abc { return HAL_ERROR; - 8003a4c: 2301 movs r3, #1 - 8003a4e: e0e9 b.n 8003c24 + 8003ab8: 2301 movs r3, #1 + 8003aba: e0e9 b.n 8003c90 /* To correctly read data from FLASH memory, the number of wait states (LATENCY) must be correctly programmed according to the frequency of the FLASH clock (HCLK) and the supply voltage of the device. */ /* Increasing the number of wait states because of higher CPU frequency */ if (FLatency > __HAL_FLASH_GET_LATENCY()) - 8003a50: 4b76 ldr r3, [pc, #472] @ (8003c2c ) - 8003a52: 681b ldr r3, [r3, #0] - 8003a54: 2207 movs r2, #7 - 8003a56: 4013 ands r3, r2 - 8003a58: 683a ldr r2, [r7, #0] - 8003a5a: 429a cmp r2, r3 - 8003a5c: d91e bls.n 8003a9c + 8003abc: 4b76 ldr r3, [pc, #472] @ (8003c98 ) + 8003abe: 681b ldr r3, [r3, #0] + 8003ac0: 2207 movs r2, #7 + 8003ac2: 4013 ands r3, r2 + 8003ac4: 683a ldr r2, [r7, #0] + 8003ac6: 429a cmp r2, r3 + 8003ac8: d91e bls.n 8003b08 { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); - 8003a5e: 4b73 ldr r3, [pc, #460] @ (8003c2c ) - 8003a60: 681b ldr r3, [r3, #0] - 8003a62: 2207 movs r2, #7 - 8003a64: 4393 bics r3, r2 - 8003a66: 0019 movs r1, r3 - 8003a68: 4b70 ldr r3, [pc, #448] @ (8003c2c ) - 8003a6a: 683a ldr r2, [r7, #0] - 8003a6c: 430a orrs r2, r1 - 8003a6e: 601a str r2, [r3, #0] + 8003aca: 4b73 ldr r3, [pc, #460] @ (8003c98 ) + 8003acc: 681b ldr r3, [r3, #0] + 8003ace: 2207 movs r2, #7 + 8003ad0: 4393 bics r3, r2 + 8003ad2: 0019 movs r1, r3 + 8003ad4: 4b70 ldr r3, [pc, #448] @ (8003c98 ) + 8003ad6: 683a ldr r2, [r7, #0] + 8003ad8: 430a orrs r2, r1 + 8003ada: 601a str r2, [r3, #0] /* Check that the new number of wait states is taken into account to access the Flash memory by polling the FLASH_ACR register */ tickstart = HAL_GetTick(); - 8003a70: f7fd fb54 bl 800111c - 8003a74: 0003 movs r3, r0 - 8003a76: 60fb str r3, [r7, #12] + 8003adc: f7fd fb54 bl 8001188 + 8003ae0: 0003 movs r3, r0 + 8003ae2: 60fb str r3, [r7, #12] while ((FLASH->ACR & FLASH_ACR_LATENCY) != FLatency) - 8003a78: e009 b.n 8003a8e + 8003ae4: e009 b.n 8003afa { if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) - 8003a7a: f7fd fb4f bl 800111c - 8003a7e: 0002 movs r2, r0 - 8003a80: 68fb ldr r3, [r7, #12] - 8003a82: 1ad3 subs r3, r2, r3 - 8003a84: 4a6a ldr r2, [pc, #424] @ (8003c30 ) - 8003a86: 4293 cmp r3, r2 - 8003a88: d901 bls.n 8003a8e + 8003ae6: f7fd fb4f bl 8001188 + 8003aea: 0002 movs r2, r0 + 8003aec: 68fb ldr r3, [r7, #12] + 8003aee: 1ad3 subs r3, r2, r3 + 8003af0: 4a6a ldr r2, [pc, #424] @ (8003c9c ) + 8003af2: 4293 cmp r3, r2 + 8003af4: d901 bls.n 8003afa { return HAL_TIMEOUT; - 8003a8a: 2303 movs r3, #3 - 8003a8c: e0ca b.n 8003c24 + 8003af6: 2303 movs r3, #3 + 8003af8: e0ca b.n 8003c90 while ((FLASH->ACR & FLASH_ACR_LATENCY) != FLatency) - 8003a8e: 4b67 ldr r3, [pc, #412] @ (8003c2c ) - 8003a90: 681b ldr r3, [r3, #0] - 8003a92: 2207 movs r2, #7 - 8003a94: 4013 ands r3, r2 - 8003a96: 683a ldr r2, [r7, #0] - 8003a98: 429a cmp r2, r3 - 8003a9a: d1ee bne.n 8003a7a + 8003afa: 4b67 ldr r3, [pc, #412] @ (8003c98 ) + 8003afc: 681b ldr r3, [r3, #0] + 8003afe: 2207 movs r2, #7 + 8003b00: 4013 ands r3, r2 + 8003b02: 683a ldr r2, [r7, #0] + 8003b04: 429a cmp r2, r3 + 8003b06: d1ee bne.n 8003ae6 } } } /*-------------------------- HCLK Configuration --------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) - 8003a9c: 687b ldr r3, [r7, #4] - 8003a9e: 681b ldr r3, [r3, #0] - 8003aa0: 2202 movs r2, #2 - 8003aa2: 4013 ands r3, r2 - 8003aa4: d015 beq.n 8003ad2 + 8003b08: 687b ldr r3, [r7, #4] + 8003b0a: 681b ldr r3, [r3, #0] + 8003b0c: 2202 movs r2, #2 + 8003b0e: 4013 ands r3, r2 + 8003b10: d015 beq.n 8003b3e { /* Set the highest APB divider in order to ensure that we do not go through a non-spec phase whatever we decrease or increase HCLK. */ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) - 8003aa6: 687b ldr r3, [r7, #4] - 8003aa8: 681b ldr r3, [r3, #0] - 8003aaa: 2204 movs r2, #4 - 8003aac: 4013 ands r3, r2 - 8003aae: d006 beq.n 8003abe + 8003b12: 687b ldr r3, [r7, #4] + 8003b14: 681b ldr r3, [r3, #0] + 8003b16: 2204 movs r2, #4 + 8003b18: 4013 ands r3, r2 + 8003b1a: d006 beq.n 8003b2a { MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE, RCC_HCLK_DIV16); - 8003ab0: 4b60 ldr r3, [pc, #384] @ (8003c34 ) - 8003ab2: 689a ldr r2, [r3, #8] - 8003ab4: 4b5f ldr r3, [pc, #380] @ (8003c34 ) - 8003ab6: 21e0 movs r1, #224 @ 0xe0 - 8003ab8: 01c9 lsls r1, r1, #7 - 8003aba: 430a orrs r2, r1 - 8003abc: 609a str r2, [r3, #8] + 8003b1c: 4b60 ldr r3, [pc, #384] @ (8003ca0 ) + 8003b1e: 689a ldr r2, [r3, #8] + 8003b20: 4b5f ldr r3, [pc, #380] @ (8003ca0 ) + 8003b22: 21e0 movs r1, #224 @ 0xe0 + 8003b24: 01c9 lsls r1, r1, #7 + 8003b26: 430a orrs r2, r1 + 8003b28: 609a str r2, [r3, #8] } /* Set the new HCLK clock divider */ assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); - 8003abe: 4b5d ldr r3, [pc, #372] @ (8003c34 ) - 8003ac0: 689b ldr r3, [r3, #8] - 8003ac2: 4a5d ldr r2, [pc, #372] @ (8003c38 ) - 8003ac4: 4013 ands r3, r2 - 8003ac6: 0019 movs r1, r3 - 8003ac8: 687b ldr r3, [r7, #4] - 8003aca: 689a ldr r2, [r3, #8] - 8003acc: 4b59 ldr r3, [pc, #356] @ (8003c34 ) - 8003ace: 430a orrs r2, r1 - 8003ad0: 609a str r2, [r3, #8] + 8003b2a: 4b5d ldr r3, [pc, #372] @ (8003ca0 ) + 8003b2c: 689b ldr r3, [r3, #8] + 8003b2e: 4a5d ldr r2, [pc, #372] @ (8003ca4 ) + 8003b30: 4013 ands r3, r2 + 8003b32: 0019 movs r1, r3 + 8003b34: 687b ldr r3, [r7, #4] + 8003b36: 689a ldr r2, [r3, #8] + 8003b38: 4b59 ldr r3, [pc, #356] @ (8003ca0 ) + 8003b3a: 430a orrs r2, r1 + 8003b3c: 609a str r2, [r3, #8] } /*------------------------- SYSCLK Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) - 8003ad2: 687b ldr r3, [r7, #4] - 8003ad4: 681b ldr r3, [r3, #0] - 8003ad6: 2201 movs r2, #1 - 8003ad8: 4013 ands r3, r2 - 8003ada: d057 beq.n 8003b8c + 8003b3e: 687b ldr r3, [r7, #4] + 8003b40: 681b ldr r3, [r3, #0] + 8003b42: 2201 movs r2, #1 + 8003b44: 4013 ands r3, r2 + 8003b46: d057 beq.n 8003bf8 { assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); /* HSE is selected as System Clock Source */ if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) - 8003adc: 687b ldr r3, [r7, #4] - 8003ade: 685b ldr r3, [r3, #4] - 8003ae0: 2b01 cmp r3, #1 - 8003ae2: d107 bne.n 8003af4 + 8003b48: 687b ldr r3, [r7, #4] + 8003b4a: 685b ldr r3, [r3, #4] + 8003b4c: 2b01 cmp r3, #1 + 8003b4e: d107 bne.n 8003b60 { /* Check the HSE ready flag */ if (READ_BIT(RCC->CR, RCC_CR_HSERDY) == 0U) - 8003ae4: 4b53 ldr r3, [pc, #332] @ (8003c34 ) - 8003ae6: 681a ldr r2, [r3, #0] - 8003ae8: 2380 movs r3, #128 @ 0x80 - 8003aea: 029b lsls r3, r3, #10 - 8003aec: 4013 ands r3, r2 - 8003aee: d12b bne.n 8003b48 + 8003b50: 4b53 ldr r3, [pc, #332] @ (8003ca0 ) + 8003b52: 681a ldr r2, [r3, #0] + 8003b54: 2380 movs r3, #128 @ 0x80 + 8003b56: 029b lsls r3, r3, #10 + 8003b58: 4013 ands r3, r2 + 8003b5a: d12b bne.n 8003bb4 { return HAL_ERROR; - 8003af0: 2301 movs r3, #1 - 8003af2: e097 b.n 8003c24 + 8003b5c: 2301 movs r3, #1 + 8003b5e: e097 b.n 8003c90 } } /* PLL is selected as System Clock Source */ else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) - 8003af4: 687b ldr r3, [r7, #4] - 8003af6: 685b ldr r3, [r3, #4] - 8003af8: 2b02 cmp r3, #2 - 8003afa: d107 bne.n 8003b0c + 8003b60: 687b ldr r3, [r7, #4] + 8003b62: 685b ldr r3, [r3, #4] + 8003b64: 2b02 cmp r3, #2 + 8003b66: d107 bne.n 8003b78 { /* Check the PLL ready flag */ if (READ_BIT(RCC->CR, RCC_CR_PLLRDY) == 0U) - 8003afc: 4b4d ldr r3, [pc, #308] @ (8003c34 ) - 8003afe: 681a ldr r2, [r3, #0] - 8003b00: 2380 movs r3, #128 @ 0x80 - 8003b02: 049b lsls r3, r3, #18 - 8003b04: 4013 ands r3, r2 - 8003b06: d11f bne.n 8003b48 + 8003b68: 4b4d ldr r3, [pc, #308] @ (8003ca0 ) + 8003b6a: 681a ldr r2, [r3, #0] + 8003b6c: 2380 movs r3, #128 @ 0x80 + 8003b6e: 049b lsls r3, r3, #18 + 8003b70: 4013 ands r3, r2 + 8003b72: d11f bne.n 8003bb4 { return HAL_ERROR; - 8003b08: 2301 movs r3, #1 - 8003b0a: e08b b.n 8003c24 + 8003b74: 2301 movs r3, #1 + 8003b76: e08b b.n 8003c90 } } /* HSI is selected as System Clock Source */ else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) - 8003b0c: 687b ldr r3, [r7, #4] - 8003b0e: 685b ldr r3, [r3, #4] - 8003b10: 2b00 cmp r3, #0 - 8003b12: d107 bne.n 8003b24 + 8003b78: 687b ldr r3, [r7, #4] + 8003b7a: 685b ldr r3, [r3, #4] + 8003b7c: 2b00 cmp r3, #0 + 8003b7e: d107 bne.n 8003b90 { /* Check the HSI ready flag */ if (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == 0U) - 8003b14: 4b47 ldr r3, [pc, #284] @ (8003c34 ) - 8003b16: 681a ldr r2, [r3, #0] - 8003b18: 2380 movs r3, #128 @ 0x80 - 8003b1a: 00db lsls r3, r3, #3 - 8003b1c: 4013 ands r3, r2 - 8003b1e: d113 bne.n 8003b48 + 8003b80: 4b47 ldr r3, [pc, #284] @ (8003ca0 ) + 8003b82: 681a ldr r2, [r3, #0] + 8003b84: 2380 movs r3, #128 @ 0x80 + 8003b86: 00db lsls r3, r3, #3 + 8003b88: 4013 ands r3, r2 + 8003b8a: d113 bne.n 8003bb4 { return HAL_ERROR; - 8003b20: 2301 movs r3, #1 - 8003b22: e07f b.n 8003c24 + 8003b8c: 2301 movs r3, #1 + 8003b8e: e07f b.n 8003c90 } } /* LSI is selected as System Clock Source */ else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_LSI) - 8003b24: 687b ldr r3, [r7, #4] - 8003b26: 685b ldr r3, [r3, #4] - 8003b28: 2b03 cmp r3, #3 - 8003b2a: d106 bne.n 8003b3a + 8003b90: 687b ldr r3, [r7, #4] + 8003b92: 685b ldr r3, [r3, #4] + 8003b94: 2b03 cmp r3, #3 + 8003b96: d106 bne.n 8003ba6 { /* Check the LSI ready flag */ if (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == 0U) - 8003b2c: 4b41 ldr r3, [pc, #260] @ (8003c34 ) - 8003b2e: 6e1b ldr r3, [r3, #96] @ 0x60 - 8003b30: 2202 movs r2, #2 - 8003b32: 4013 ands r3, r2 - 8003b34: d108 bne.n 8003b48 + 8003b98: 4b41 ldr r3, [pc, #260] @ (8003ca0 ) + 8003b9a: 6e1b ldr r3, [r3, #96] @ 0x60 + 8003b9c: 2202 movs r2, #2 + 8003b9e: 4013 ands r3, r2 + 8003ba0: d108 bne.n 8003bb4 { return HAL_ERROR; - 8003b36: 2301 movs r3, #1 - 8003b38: e074 b.n 8003c24 + 8003ba2: 2301 movs r3, #1 + 8003ba4: e074 b.n 8003c90 } /* LSE is selected as System Clock Source */ else { /* Check the LSE ready flag */ if (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) - 8003b3a: 4b3e ldr r3, [pc, #248] @ (8003c34 ) - 8003b3c: 6ddb ldr r3, [r3, #92] @ 0x5c - 8003b3e: 2202 movs r2, #2 - 8003b40: 4013 ands r3, r2 - 8003b42: d101 bne.n 8003b48 + 8003ba6: 4b3e ldr r3, [pc, #248] @ (8003ca0 ) + 8003ba8: 6ddb ldr r3, [r3, #92] @ 0x5c + 8003baa: 2202 movs r2, #2 + 8003bac: 4013 ands r3, r2 + 8003bae: d101 bne.n 8003bb4 { return HAL_ERROR; - 8003b44: 2301 movs r3, #1 - 8003b46: e06d b.n 8003c24 + 8003bb0: 2301 movs r3, #1 + 8003bb2: e06d b.n 8003c90 } } MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, RCC_ClkInitStruct->SYSCLKSource); - 8003b48: 4b3a ldr r3, [pc, #232] @ (8003c34 ) - 8003b4a: 689b ldr r3, [r3, #8] - 8003b4c: 2207 movs r2, #7 - 8003b4e: 4393 bics r3, r2 - 8003b50: 0019 movs r1, r3 - 8003b52: 687b ldr r3, [r7, #4] - 8003b54: 685a ldr r2, [r3, #4] - 8003b56: 4b37 ldr r3, [pc, #220] @ (8003c34 ) - 8003b58: 430a orrs r2, r1 - 8003b5a: 609a str r2, [r3, #8] + 8003bb4: 4b3a ldr r3, [pc, #232] @ (8003ca0 ) + 8003bb6: 689b ldr r3, [r3, #8] + 8003bb8: 2207 movs r2, #7 + 8003bba: 4393 bics r3, r2 + 8003bbc: 0019 movs r1, r3 + 8003bbe: 687b ldr r3, [r7, #4] + 8003bc0: 685a ldr r2, [r3, #4] + 8003bc2: 4b37 ldr r3, [pc, #220] @ (8003ca0 ) + 8003bc4: 430a orrs r2, r1 + 8003bc6: 609a str r2, [r3, #8] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003b5c: f7fd fade bl 800111c - 8003b60: 0003 movs r3, r0 - 8003b62: 60fb str r3, [r7, #12] + 8003bc8: f7fd fade bl 8001188 + 8003bcc: 0003 movs r3, r0 + 8003bce: 60fb str r3, [r7, #12] while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 8003b64: e009 b.n 8003b7a + 8003bd0: e009 b.n 8003be6 { if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) - 8003b66: f7fd fad9 bl 800111c - 8003b6a: 0002 movs r2, r0 - 8003b6c: 68fb ldr r3, [r7, #12] - 8003b6e: 1ad3 subs r3, r2, r3 - 8003b70: 4a2f ldr r2, [pc, #188] @ (8003c30 ) - 8003b72: 4293 cmp r3, r2 - 8003b74: d901 bls.n 8003b7a + 8003bd2: f7fd fad9 bl 8001188 + 8003bd6: 0002 movs r2, r0 + 8003bd8: 68fb ldr r3, [r7, #12] + 8003bda: 1ad3 subs r3, r2, r3 + 8003bdc: 4a2f ldr r2, [pc, #188] @ (8003c9c ) + 8003bde: 4293 cmp r3, r2 + 8003be0: d901 bls.n 8003be6 { return HAL_TIMEOUT; - 8003b76: 2303 movs r3, #3 - 8003b78: e054 b.n 8003c24 + 8003be2: 2303 movs r3, #3 + 8003be4: e054 b.n 8003c90 while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 8003b7a: 4b2e ldr r3, [pc, #184] @ (8003c34 ) - 8003b7c: 689b ldr r3, [r3, #8] - 8003b7e: 2238 movs r2, #56 @ 0x38 - 8003b80: 401a ands r2, r3 - 8003b82: 687b ldr r3, [r7, #4] - 8003b84: 685b ldr r3, [r3, #4] - 8003b86: 00db lsls r3, r3, #3 - 8003b88: 429a cmp r2, r3 - 8003b8a: d1ec bne.n 8003b66 + 8003be6: 4b2e ldr r3, [pc, #184] @ (8003ca0 ) + 8003be8: 689b ldr r3, [r3, #8] + 8003bea: 2238 movs r2, #56 @ 0x38 + 8003bec: 401a ands r2, r3 + 8003bee: 687b ldr r3, [r7, #4] + 8003bf0: 685b ldr r3, [r3, #4] + 8003bf2: 00db lsls r3, r3, #3 + 8003bf4: 429a cmp r2, r3 + 8003bf6: d1ec bne.n 8003bd2 } } } /* Decreasing the number of wait states because of lower CPU frequency */ if (FLatency < __HAL_FLASH_GET_LATENCY()) - 8003b8c: 4b27 ldr r3, [pc, #156] @ (8003c2c ) - 8003b8e: 681b ldr r3, [r3, #0] - 8003b90: 2207 movs r2, #7 - 8003b92: 4013 ands r3, r2 - 8003b94: 683a ldr r2, [r7, #0] - 8003b96: 429a cmp r2, r3 - 8003b98: d21e bcs.n 8003bd8 + 8003bf8: 4b27 ldr r3, [pc, #156] @ (8003c98 ) + 8003bfa: 681b ldr r3, [r3, #0] + 8003bfc: 2207 movs r2, #7 + 8003bfe: 4013 ands r3, r2 + 8003c00: 683a ldr r2, [r7, #0] + 8003c02: 429a cmp r2, r3 + 8003c04: d21e bcs.n 8003c44 { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); - 8003b9a: 4b24 ldr r3, [pc, #144] @ (8003c2c ) - 8003b9c: 681b ldr r3, [r3, #0] - 8003b9e: 2207 movs r2, #7 - 8003ba0: 4393 bics r3, r2 - 8003ba2: 0019 movs r1, r3 - 8003ba4: 4b21 ldr r3, [pc, #132] @ (8003c2c ) - 8003ba6: 683a ldr r2, [r7, #0] - 8003ba8: 430a orrs r2, r1 - 8003baa: 601a str r2, [r3, #0] + 8003c06: 4b24 ldr r3, [pc, #144] @ (8003c98 ) + 8003c08: 681b ldr r3, [r3, #0] + 8003c0a: 2207 movs r2, #7 + 8003c0c: 4393 bics r3, r2 + 8003c0e: 0019 movs r1, r3 + 8003c10: 4b21 ldr r3, [pc, #132] @ (8003c98 ) + 8003c12: 683a ldr r2, [r7, #0] + 8003c14: 430a orrs r2, r1 + 8003c16: 601a str r2, [r3, #0] /* Check that the new number of wait states is taken into account to access the Flash memory by polling the FLASH_ACR register */ tickstart = HAL_GetTick(); - 8003bac: f7fd fab6 bl 800111c - 8003bb0: 0003 movs r3, r0 - 8003bb2: 60fb str r3, [r7, #12] + 8003c18: f7fd fab6 bl 8001188 + 8003c1c: 0003 movs r3, r0 + 8003c1e: 60fb str r3, [r7, #12] while ((FLASH->ACR & FLASH_ACR_LATENCY) != FLatency) - 8003bb4: e009 b.n 8003bca + 8003c20: e009 b.n 8003c36 { if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) - 8003bb6: f7fd fab1 bl 800111c - 8003bba: 0002 movs r2, r0 - 8003bbc: 68fb ldr r3, [r7, #12] - 8003bbe: 1ad3 subs r3, r2, r3 - 8003bc0: 4a1b ldr r2, [pc, #108] @ (8003c30 ) - 8003bc2: 4293 cmp r3, r2 - 8003bc4: d901 bls.n 8003bca + 8003c22: f7fd fab1 bl 8001188 + 8003c26: 0002 movs r2, r0 + 8003c28: 68fb ldr r3, [r7, #12] + 8003c2a: 1ad3 subs r3, r2, r3 + 8003c2c: 4a1b ldr r2, [pc, #108] @ (8003c9c ) + 8003c2e: 4293 cmp r3, r2 + 8003c30: d901 bls.n 8003c36 { return HAL_TIMEOUT; - 8003bc6: 2303 movs r3, #3 - 8003bc8: e02c b.n 8003c24 + 8003c32: 2303 movs r3, #3 + 8003c34: e02c b.n 8003c90 while ((FLASH->ACR & FLASH_ACR_LATENCY) != FLatency) - 8003bca: 4b18 ldr r3, [pc, #96] @ (8003c2c ) - 8003bcc: 681b ldr r3, [r3, #0] - 8003bce: 2207 movs r2, #7 - 8003bd0: 4013 ands r3, r2 - 8003bd2: 683a ldr r2, [r7, #0] - 8003bd4: 429a cmp r2, r3 - 8003bd6: d1ee bne.n 8003bb6 + 8003c36: 4b18 ldr r3, [pc, #96] @ (8003c98 ) + 8003c38: 681b ldr r3, [r3, #0] + 8003c3a: 2207 movs r2, #7 + 8003c3c: 4013 ands r3, r2 + 8003c3e: 683a ldr r2, [r7, #0] + 8003c40: 429a cmp r2, r3 + 8003c42: d1ee bne.n 8003c22 } } } /*-------------------------- PCLK1 Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) - 8003bd8: 687b ldr r3, [r7, #4] - 8003bda: 681b ldr r3, [r3, #0] - 8003bdc: 2204 movs r2, #4 - 8003bde: 4013 ands r3, r2 - 8003be0: d009 beq.n 8003bf6 + 8003c44: 687b ldr r3, [r7, #4] + 8003c46: 681b ldr r3, [r3, #0] + 8003c48: 2204 movs r2, #4 + 8003c4a: 4013 ands r3, r2 + 8003c4c: d009 beq.n 8003c62 { assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE, RCC_ClkInitStruct->APB1CLKDivider); - 8003be2: 4b14 ldr r3, [pc, #80] @ (8003c34 ) - 8003be4: 689b ldr r3, [r3, #8] - 8003be6: 4a15 ldr r2, [pc, #84] @ (8003c3c ) - 8003be8: 4013 ands r3, r2 - 8003bea: 0019 movs r1, r3 - 8003bec: 687b ldr r3, [r7, #4] - 8003bee: 68da ldr r2, [r3, #12] - 8003bf0: 4b10 ldr r3, [pc, #64] @ (8003c34 ) - 8003bf2: 430a orrs r2, r1 - 8003bf4: 609a str r2, [r3, #8] + 8003c4e: 4b14 ldr r3, [pc, #80] @ (8003ca0 ) + 8003c50: 689b ldr r3, [r3, #8] + 8003c52: 4a15 ldr r2, [pc, #84] @ (8003ca8 ) + 8003c54: 4013 ands r3, r2 + 8003c56: 0019 movs r1, r3 + 8003c58: 687b ldr r3, [r7, #4] + 8003c5a: 68da ldr r2, [r3, #12] + 8003c5c: 4b10 ldr r3, [pc, #64] @ (8003ca0 ) + 8003c5e: 430a orrs r2, r1 + 8003c60: 609a str r2, [r3, #8] } /* Update the SystemCoreClock global variable */ SystemCoreClock = (HAL_RCC_GetSysClockFreq() >> ((AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos]) & 0x1FU)); - 8003bf6: f000 f829 bl 8003c4c - 8003bfa: 0001 movs r1, r0 - 8003bfc: 4b0d ldr r3, [pc, #52] @ (8003c34 ) - 8003bfe: 689b ldr r3, [r3, #8] - 8003c00: 0a1b lsrs r3, r3, #8 - 8003c02: 220f movs r2, #15 - 8003c04: 401a ands r2, r3 - 8003c06: 4b0e ldr r3, [pc, #56] @ (8003c40 ) - 8003c08: 0092 lsls r2, r2, #2 - 8003c0a: 58d3 ldr r3, [r2, r3] - 8003c0c: 221f movs r2, #31 - 8003c0e: 4013 ands r3, r2 - 8003c10: 000a movs r2, r1 - 8003c12: 40da lsrs r2, r3 - 8003c14: 4b0b ldr r3, [pc, #44] @ (8003c44 ) - 8003c16: 601a str r2, [r3, #0] + 8003c62: f000 f829 bl 8003cb8 + 8003c66: 0001 movs r1, r0 + 8003c68: 4b0d ldr r3, [pc, #52] @ (8003ca0 ) + 8003c6a: 689b ldr r3, [r3, #8] + 8003c6c: 0a1b lsrs r3, r3, #8 + 8003c6e: 220f movs r2, #15 + 8003c70: 401a ands r2, r3 + 8003c72: 4b0e ldr r3, [pc, #56] @ (8003cac ) + 8003c74: 0092 lsls r2, r2, #2 + 8003c76: 58d3 ldr r3, [r2, r3] + 8003c78: 221f movs r2, #31 + 8003c7a: 4013 ands r3, r2 + 8003c7c: 000a movs r2, r1 + 8003c7e: 40da lsrs r2, r3 + 8003c80: 4b0b ldr r3, [pc, #44] @ (8003cb0 ) + 8003c82: 601a str r2, [r3, #0] /* Configure the source of time base considering new system clocks settings*/ return HAL_InitTick(uwTickPrio); - 8003c18: 4b0b ldr r3, [pc, #44] @ (8003c48 ) - 8003c1a: 681b ldr r3, [r3, #0] - 8003c1c: 0018 movs r0, r3 - 8003c1e: f7fd fa21 bl 8001064 - 8003c22: 0003 movs r3, r0 + 8003c84: 4b0b ldr r3, [pc, #44] @ (8003cb4 ) + 8003c86: 681b ldr r3, [r3, #0] + 8003c88: 0018 movs r0, r3 + 8003c8a: f7fd fa21 bl 80010d0 + 8003c8e: 0003 movs r3, r0 } - 8003c24: 0018 movs r0, r3 - 8003c26: 46bd mov sp, r7 - 8003c28: b004 add sp, #16 - 8003c2a: bd80 pop {r7, pc} - 8003c2c: 40022000 .word 0x40022000 - 8003c30: 00001388 .word 0x00001388 - 8003c34: 40021000 .word 0x40021000 - 8003c38: fffff0ff .word 0xfffff0ff - 8003c3c: ffff8fff .word 0xffff8fff - 8003c40: 08004b1c .word 0x08004b1c - 8003c44: 20000004 .word 0x20000004 - 8003c48: 20000008 .word 0x20000008 + 8003c90: 0018 movs r0, r3 + 8003c92: 46bd mov sp, r7 + 8003c94: b004 add sp, #16 + 8003c96: bd80 pop {r7, pc} + 8003c98: 40022000 .word 0x40022000 + 8003c9c: 00001388 .word 0x00001388 + 8003ca0: 40021000 .word 0x40021000 + 8003ca4: fffff0ff .word 0xfffff0ff + 8003ca8: ffff8fff .word 0xffff8fff + 8003cac: 08004b88 .word 0x08004b88 + 8003cb0: 20000004 .word 0x20000004 + 8003cb4: 20000008 .word 0x20000008 -08003c4c : +08003cb8 : * * * @retval SYSCLK frequency */ uint32_t HAL_RCC_GetSysClockFreq(void) { - 8003c4c: b580 push {r7, lr} - 8003c4e: b086 sub sp, #24 - 8003c50: af00 add r7, sp, #0 + 8003cb8: b580 push {r7, lr} + 8003cba: b086 sub sp, #24 + 8003cbc: af00 add r7, sp, #0 uint32_t pllvco, pllsource, pllr, pllm, hsidiv; uint32_t sysclockfreq; if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI) - 8003c52: 4b3c ldr r3, [pc, #240] @ (8003d44 ) - 8003c54: 689b ldr r3, [r3, #8] - 8003c56: 2238 movs r2, #56 @ 0x38 - 8003c58: 4013 ands r3, r2 - 8003c5a: d10f bne.n 8003c7c + 8003cbe: 4b3c ldr r3, [pc, #240] @ (8003db0 ) + 8003cc0: 689b ldr r3, [r3, #8] + 8003cc2: 2238 movs r2, #56 @ 0x38 + 8003cc4: 4013 ands r3, r2 + 8003cc6: d10f bne.n 8003ce8 { /* HSISYS can be derived for HSI16 */ hsidiv = (1UL << ((READ_BIT(RCC->CR, RCC_CR_HSIDIV)) >> RCC_CR_HSIDIV_Pos)); - 8003c5c: 4b39 ldr r3, [pc, #228] @ (8003d44 ) - 8003c5e: 681b ldr r3, [r3, #0] - 8003c60: 0adb lsrs r3, r3, #11 - 8003c62: 2207 movs r2, #7 - 8003c64: 4013 ands r3, r2 - 8003c66: 2201 movs r2, #1 - 8003c68: 409a lsls r2, r3 - 8003c6a: 0013 movs r3, r2 - 8003c6c: 603b str r3, [r7, #0] + 8003cc8: 4b39 ldr r3, [pc, #228] @ (8003db0 ) + 8003cca: 681b ldr r3, [r3, #0] + 8003ccc: 0adb lsrs r3, r3, #11 + 8003cce: 2207 movs r2, #7 + 8003cd0: 4013 ands r3, r2 + 8003cd2: 2201 movs r2, #1 + 8003cd4: 409a lsls r2, r3 + 8003cd6: 0013 movs r3, r2 + 8003cd8: 603b str r3, [r7, #0] /* HSI used as system clock source */ sysclockfreq = (HSI_VALUE / hsidiv); - 8003c6e: 6839 ldr r1, [r7, #0] - 8003c70: 4835 ldr r0, [pc, #212] @ (8003d48 ) - 8003c72: f7fc fa45 bl 8000100 <__udivsi3> - 8003c76: 0003 movs r3, r0 - 8003c78: 613b str r3, [r7, #16] - 8003c7a: e05d b.n 8003d38 + 8003cda: 6839 ldr r1, [r7, #0] + 8003cdc: 4835 ldr r0, [pc, #212] @ (8003db4 ) + 8003cde: f7fc fa0f bl 8000100 <__udivsi3> + 8003ce2: 0003 movs r3, r0 + 8003ce4: 613b str r3, [r7, #16] + 8003ce6: e05d b.n 8003da4 } else if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE) - 8003c7c: 4b31 ldr r3, [pc, #196] @ (8003d44 ) - 8003c7e: 689b ldr r3, [r3, #8] - 8003c80: 2238 movs r2, #56 @ 0x38 - 8003c82: 4013 ands r3, r2 - 8003c84: 2b08 cmp r3, #8 - 8003c86: d102 bne.n 8003c8e + 8003ce8: 4b31 ldr r3, [pc, #196] @ (8003db0 ) + 8003cea: 689b ldr r3, [r3, #8] + 8003cec: 2238 movs r2, #56 @ 0x38 + 8003cee: 4013 ands r3, r2 + 8003cf0: 2b08 cmp r3, #8 + 8003cf2: d102 bne.n 8003cfa { /* HSE used as system clock source */ sysclockfreq = HSE_VALUE; - 8003c88: 4b30 ldr r3, [pc, #192] @ (8003d4c ) - 8003c8a: 613b str r3, [r7, #16] - 8003c8c: e054 b.n 8003d38 + 8003cf4: 4b30 ldr r3, [pc, #192] @ (8003db8 ) + 8003cf6: 613b str r3, [r7, #16] + 8003cf8: e054 b.n 8003da4 } else if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) - 8003c8e: 4b2d ldr r3, [pc, #180] @ (8003d44 ) - 8003c90: 689b ldr r3, [r3, #8] - 8003c92: 2238 movs r2, #56 @ 0x38 - 8003c94: 4013 ands r3, r2 - 8003c96: 2b10 cmp r3, #16 - 8003c98: d138 bne.n 8003d0c + 8003cfa: 4b2d ldr r3, [pc, #180] @ (8003db0 ) + 8003cfc: 689b ldr r3, [r3, #8] + 8003cfe: 2238 movs r2, #56 @ 0x38 + 8003d00: 4013 ands r3, r2 + 8003d02: 2b10 cmp r3, #16 + 8003d04: d138 bne.n 8003d78 /* PLL used as system clock source */ /* PLL_VCO = ((HSE_VALUE or HSI_VALUE)/ PLLM) * PLLN SYSCLK = PLL_VCO / PLLR */ pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC); - 8003c9a: 4b2a ldr r3, [pc, #168] @ (8003d44 ) - 8003c9c: 68db ldr r3, [r3, #12] - 8003c9e: 2203 movs r2, #3 - 8003ca0: 4013 ands r3, r2 - 8003ca2: 60fb str r3, [r7, #12] + 8003d06: 4b2a ldr r3, [pc, #168] @ (8003db0 ) + 8003d08: 68db ldr r3, [r3, #12] + 8003d0a: 2203 movs r2, #3 + 8003d0c: 4013 ands r3, r2 + 8003d0e: 60fb str r3, [r7, #12] pllm = ((RCC->PLLCFGR & RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U ; - 8003ca4: 4b27 ldr r3, [pc, #156] @ (8003d44 ) - 8003ca6: 68db ldr r3, [r3, #12] - 8003ca8: 091b lsrs r3, r3, #4 - 8003caa: 2207 movs r2, #7 - 8003cac: 4013 ands r3, r2 - 8003cae: 3301 adds r3, #1 - 8003cb0: 60bb str r3, [r7, #8] + 8003d10: 4b27 ldr r3, [pc, #156] @ (8003db0 ) + 8003d12: 68db ldr r3, [r3, #12] + 8003d14: 091b lsrs r3, r3, #4 + 8003d16: 2207 movs r2, #7 + 8003d18: 4013 ands r3, r2 + 8003d1a: 3301 adds r3, #1 + 8003d1c: 60bb str r3, [r7, #8] switch (pllsource) - 8003cb2: 68fb ldr r3, [r7, #12] - 8003cb4: 2b03 cmp r3, #3 - 8003cb6: d10d bne.n 8003cd4 + 8003d1e: 68fb ldr r3, [r7, #12] + 8003d20: 2b03 cmp r3, #3 + 8003d22: d10d bne.n 8003d40 { case RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos); - 8003cb8: 68b9 ldr r1, [r7, #8] - 8003cba: 4824 ldr r0, [pc, #144] @ (8003d4c ) - 8003cbc: f7fc fa20 bl 8000100 <__udivsi3> - 8003cc0: 0003 movs r3, r0 - 8003cc2: 0019 movs r1, r3 - 8003cc4: 4b1f ldr r3, [pc, #124] @ (8003d44 ) - 8003cc6: 68db ldr r3, [r3, #12] - 8003cc8: 0a1b lsrs r3, r3, #8 - 8003cca: 227f movs r2, #127 @ 0x7f - 8003ccc: 4013 ands r3, r2 - 8003cce: 434b muls r3, r1 - 8003cd0: 617b str r3, [r7, #20] + 8003d24: 68b9 ldr r1, [r7, #8] + 8003d26: 4824 ldr r0, [pc, #144] @ (8003db8 ) + 8003d28: f7fc f9ea bl 8000100 <__udivsi3> + 8003d2c: 0003 movs r3, r0 + 8003d2e: 0019 movs r1, r3 + 8003d30: 4b1f ldr r3, [pc, #124] @ (8003db0 ) + 8003d32: 68db ldr r3, [r3, #12] + 8003d34: 0a1b lsrs r3, r3, #8 + 8003d36: 227f movs r2, #127 @ 0x7f + 8003d38: 4013 ands r3, r2 + 8003d3a: 434b muls r3, r1 + 8003d3c: 617b str r3, [r7, #20] break; - 8003cd2: e00d b.n 8003cf0 + 8003d3e: e00d b.n 8003d5c case RCC_PLLSOURCE_HSI: /* HSI16 used as PLL clock source */ default: /* HSI16 used as PLL clock source */ pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos) ; - 8003cd4: 68b9 ldr r1, [r7, #8] - 8003cd6: 481c ldr r0, [pc, #112] @ (8003d48 ) - 8003cd8: f7fc fa12 bl 8000100 <__udivsi3> - 8003cdc: 0003 movs r3, r0 - 8003cde: 0019 movs r1, r3 - 8003ce0: 4b18 ldr r3, [pc, #96] @ (8003d44 ) - 8003ce2: 68db ldr r3, [r3, #12] - 8003ce4: 0a1b lsrs r3, r3, #8 - 8003ce6: 227f movs r2, #127 @ 0x7f - 8003ce8: 4013 ands r3, r2 - 8003cea: 434b muls r3, r1 - 8003cec: 617b str r3, [r7, #20] + 8003d40: 68b9 ldr r1, [r7, #8] + 8003d42: 481c ldr r0, [pc, #112] @ (8003db4 ) + 8003d44: f7fc f9dc bl 8000100 <__udivsi3> + 8003d48: 0003 movs r3, r0 + 8003d4a: 0019 movs r1, r3 + 8003d4c: 4b18 ldr r3, [pc, #96] @ (8003db0 ) + 8003d4e: 68db ldr r3, [r3, #12] + 8003d50: 0a1b lsrs r3, r3, #8 + 8003d52: 227f movs r2, #127 @ 0x7f + 8003d54: 4013 ands r3, r2 + 8003d56: 434b muls r3, r1 + 8003d58: 617b str r3, [r7, #20] break; - 8003cee: 46c0 nop @ (mov r8, r8) + 8003d5a: 46c0 nop @ (mov r8, r8) } pllr = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> RCC_PLLCFGR_PLLR_Pos) + 1U); - 8003cf0: 4b14 ldr r3, [pc, #80] @ (8003d44 ) - 8003cf2: 68db ldr r3, [r3, #12] - 8003cf4: 0f5b lsrs r3, r3, #29 - 8003cf6: 2207 movs r2, #7 - 8003cf8: 4013 ands r3, r2 - 8003cfa: 3301 adds r3, #1 - 8003cfc: 607b str r3, [r7, #4] + 8003d5c: 4b14 ldr r3, [pc, #80] @ (8003db0 ) + 8003d5e: 68db ldr r3, [r3, #12] + 8003d60: 0f5b lsrs r3, r3, #29 + 8003d62: 2207 movs r2, #7 + 8003d64: 4013 ands r3, r2 + 8003d66: 3301 adds r3, #1 + 8003d68: 607b str r3, [r7, #4] sysclockfreq = pllvco / pllr; - 8003cfe: 6879 ldr r1, [r7, #4] - 8003d00: 6978 ldr r0, [r7, #20] - 8003d02: f7fc f9fd bl 8000100 <__udivsi3> - 8003d06: 0003 movs r3, r0 - 8003d08: 613b str r3, [r7, #16] - 8003d0a: e015 b.n 8003d38 + 8003d6a: 6879 ldr r1, [r7, #4] + 8003d6c: 6978 ldr r0, [r7, #20] + 8003d6e: f7fc f9c7 bl 8000100 <__udivsi3> + 8003d72: 0003 movs r3, r0 + 8003d74: 613b str r3, [r7, #16] + 8003d76: e015 b.n 8003da4 } else if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_LSE) - 8003d0c: 4b0d ldr r3, [pc, #52] @ (8003d44 ) - 8003d0e: 689b ldr r3, [r3, #8] - 8003d10: 2238 movs r2, #56 @ 0x38 - 8003d12: 4013 ands r3, r2 - 8003d14: 2b20 cmp r3, #32 - 8003d16: d103 bne.n 8003d20 + 8003d78: 4b0d ldr r3, [pc, #52] @ (8003db0 ) + 8003d7a: 689b ldr r3, [r3, #8] + 8003d7c: 2238 movs r2, #56 @ 0x38 + 8003d7e: 4013 ands r3, r2 + 8003d80: 2b20 cmp r3, #32 + 8003d82: d103 bne.n 8003d8c { /* LSE used as system clock source */ sysclockfreq = LSE_VALUE; - 8003d18: 2380 movs r3, #128 @ 0x80 - 8003d1a: 021b lsls r3, r3, #8 - 8003d1c: 613b str r3, [r7, #16] - 8003d1e: e00b b.n 8003d38 + 8003d84: 2380 movs r3, #128 @ 0x80 + 8003d86: 021b lsls r3, r3, #8 + 8003d88: 613b str r3, [r7, #16] + 8003d8a: e00b b.n 8003da4 } else if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_LSI) - 8003d20: 4b08 ldr r3, [pc, #32] @ (8003d44 ) - 8003d22: 689b ldr r3, [r3, #8] - 8003d24: 2238 movs r2, #56 @ 0x38 - 8003d26: 4013 ands r3, r2 - 8003d28: 2b18 cmp r3, #24 - 8003d2a: d103 bne.n 8003d34 + 8003d8c: 4b08 ldr r3, [pc, #32] @ (8003db0 ) + 8003d8e: 689b ldr r3, [r3, #8] + 8003d90: 2238 movs r2, #56 @ 0x38 + 8003d92: 4013 ands r3, r2 + 8003d94: 2b18 cmp r3, #24 + 8003d96: d103 bne.n 8003da0 { /* LSI used as system clock source */ sysclockfreq = LSI_VALUE; - 8003d2c: 23fa movs r3, #250 @ 0xfa - 8003d2e: 01db lsls r3, r3, #7 - 8003d30: 613b str r3, [r7, #16] - 8003d32: e001 b.n 8003d38 + 8003d98: 23fa movs r3, #250 @ 0xfa + 8003d9a: 01db lsls r3, r3, #7 + 8003d9c: 613b str r3, [r7, #16] + 8003d9e: e001 b.n 8003da4 } else { sysclockfreq = 0U; - 8003d34: 2300 movs r3, #0 - 8003d36: 613b str r3, [r7, #16] + 8003da0: 2300 movs r3, #0 + 8003da2: 613b str r3, [r7, #16] } return sysclockfreq; - 8003d38: 693b ldr r3, [r7, #16] + 8003da4: 693b ldr r3, [r7, #16] } - 8003d3a: 0018 movs r0, r3 - 8003d3c: 46bd mov sp, r7 - 8003d3e: b006 add sp, #24 - 8003d40: bd80 pop {r7, pc} - 8003d42: 46c0 nop @ (mov r8, r8) - 8003d44: 40021000 .word 0x40021000 - 8003d48: 00f42400 .word 0x00f42400 - 8003d4c: 007a1200 .word 0x007a1200 + 8003da6: 0018 movs r0, r3 + 8003da8: 46bd mov sp, r7 + 8003daa: b006 add sp, #24 + 8003dac: bd80 pop {r7, pc} + 8003dae: 46c0 nop @ (mov r8, r8) + 8003db0: 40021000 .word 0x40021000 + 8003db4: 00f42400 .word 0x00f42400 + 8003db8: 007a1200 .word 0x007a1200 -08003d50 : +08003dbc : * * @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency. * @retval HCLK frequency in Hz */ uint32_t HAL_RCC_GetHCLKFreq(void) { - 8003d50: b580 push {r7, lr} - 8003d52: af00 add r7, sp, #0 + 8003dbc: b580 push {r7, lr} + 8003dbe: af00 add r7, sp, #0 return SystemCoreClock; - 8003d54: 4b02 ldr r3, [pc, #8] @ (8003d60 ) - 8003d56: 681b ldr r3, [r3, #0] + 8003dc0: 4b02 ldr r3, [pc, #8] @ (8003dcc ) + 8003dc2: 681b ldr r3, [r3, #0] } - 8003d58: 0018 movs r0, r3 - 8003d5a: 46bd mov sp, r7 - 8003d5c: bd80 pop {r7, pc} - 8003d5e: 46c0 nop @ (mov r8, r8) - 8003d60: 20000004 .word 0x20000004 + 8003dc4: 0018 movs r0, r3 + 8003dc6: 46bd mov sp, r7 + 8003dc8: bd80 pop {r7, pc} + 8003dca: 46c0 nop @ (mov r8, r8) + 8003dcc: 20000004 .word 0x20000004 -08003d64 : +08003dd0 : * @note Each time PCLK1 changes, this function must be called to update the * right PCLK1 value. Otherwise, any configuration based on this function will be incorrect. * @retval PCLK1 frequency in Hz */ uint32_t HAL_RCC_GetPCLK1Freq(void) { - 8003d64: b5b0 push {r4, r5, r7, lr} - 8003d66: af00 add r7, sp, #0 + 8003dd0: b5b0 push {r4, r5, r7, lr} + 8003dd2: af00 add r7, sp, #0 /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/ return ((uint32_t)(__LL_RCC_CALC_PCLK1_FREQ(HAL_RCC_GetHCLKFreq(), LL_RCC_GetAPB1Prescaler()))); - 8003d68: f7ff fff2 bl 8003d50 - 8003d6c: 0004 movs r4, r0 - 8003d6e: f7ff fb49 bl 8003404 - 8003d72: 0003 movs r3, r0 - 8003d74: 0b1a lsrs r2, r3, #12 - 8003d76: 4b05 ldr r3, [pc, #20] @ (8003d8c ) - 8003d78: 0092 lsls r2, r2, #2 - 8003d7a: 58d3 ldr r3, [r2, r3] - 8003d7c: 221f movs r2, #31 - 8003d7e: 4013 ands r3, r2 - 8003d80: 40dc lsrs r4, r3 - 8003d82: 0023 movs r3, r4 + 8003dd4: f7ff fff2 bl 8003dbc + 8003dd8: 0004 movs r4, r0 + 8003dda: f7ff fb49 bl 8003470 + 8003dde: 0003 movs r3, r0 + 8003de0: 0b1a lsrs r2, r3, #12 + 8003de2: 4b05 ldr r3, [pc, #20] @ (8003df8 ) + 8003de4: 0092 lsls r2, r2, #2 + 8003de6: 58d3 ldr r3, [r2, r3] + 8003de8: 221f movs r2, #31 + 8003dea: 4013 ands r3, r2 + 8003dec: 40dc lsrs r4, r3 + 8003dee: 0023 movs r3, r4 } - 8003d84: 0018 movs r0, r3 - 8003d86: 46bd mov sp, r7 - 8003d88: bdb0 pop {r4, r5, r7, pc} - 8003d8a: 46c0 nop @ (mov r8, r8) - 8003d8c: 08004b5c .word 0x08004b5c + 8003df0: 0018 movs r0, r3 + 8003df2: 46bd mov sp, r7 + 8003df4: bdb0 pop {r4, r5, r7, pc} + 8003df6: 46c0 nop @ (mov r8, r8) + 8003df8: 08004bc8 .word 0x08004bc8 -08003d90 : +08003dfc : * the RTC clock source: in this case the access to Backup domain is enabled. * * @retval HAL status */ HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) { - 8003d90: b580 push {r7, lr} - 8003d92: b086 sub sp, #24 - 8003d94: af00 add r7, sp, #0 - 8003d96: 6078 str r0, [r7, #4] + 8003dfc: b580 push {r7, lr} + 8003dfe: b086 sub sp, #24 + 8003e00: af00 add r7, sp, #0 + 8003e02: 6078 str r0, [r7, #4] uint32_t tmpregister; uint32_t tickstart; HAL_StatusTypeDef ret = HAL_OK; /* Intermediate status */ - 8003d98: 2313 movs r3, #19 - 8003d9a: 18fb adds r3, r7, r3 - 8003d9c: 2200 movs r2, #0 - 8003d9e: 701a strb r2, [r3, #0] + 8003e04: 2313 movs r3, #19 + 8003e06: 18fb adds r3, r7, r3 + 8003e08: 2200 movs r2, #0 + 8003e0a: 701a strb r2, [r3, #0] HAL_StatusTypeDef status = HAL_OK; /* Final status */ - 8003da0: 2312 movs r3, #18 - 8003da2: 18fb adds r3, r7, r3 - 8003da4: 2200 movs r2, #0 - 8003da6: 701a strb r2, [r3, #0] + 8003e0c: 2312 movs r3, #18 + 8003e0e: 18fb adds r3, r7, r3 + 8003e10: 2200 movs r2, #0 + 8003e12: 701a strb r2, [r3, #0] /* Check the parameters */ assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection)); /*-------------------------- RTC clock source configuration ----------------------*/ if ((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC) - 8003da8: 687b ldr r3, [r7, #4] - 8003daa: 681a ldr r2, [r3, #0] - 8003dac: 2380 movs r3, #128 @ 0x80 - 8003dae: 029b lsls r3, r3, #10 - 8003db0: 4013 ands r3, r2 - 8003db2: d100 bne.n 8003db6 - 8003db4: e0a3 b.n 8003efe + 8003e14: 687b ldr r3, [r7, #4] + 8003e16: 681a ldr r2, [r3, #0] + 8003e18: 2380 movs r3, #128 @ 0x80 + 8003e1a: 029b lsls r3, r3, #10 + 8003e1c: 4013 ands r3, r2 + 8003e1e: d100 bne.n 8003e22 + 8003e20: e0a3 b.n 8003f6a { FlagStatus pwrclkchanged = RESET; - 8003db6: 2011 movs r0, #17 - 8003db8: 183b adds r3, r7, r0 - 8003dba: 2200 movs r2, #0 - 8003dbc: 701a strb r2, [r3, #0] + 8003e22: 2011 movs r0, #17 + 8003e24: 183b adds r3, r7, r0 + 8003e26: 2200 movs r2, #0 + 8003e28: 701a strb r2, [r3, #0] /* Check for RTC Parameters used to output RTCCLK */ assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection)); /* Enable Power Clock */ if (__HAL_RCC_PWR_IS_CLK_DISABLED()) - 8003dbe: 4b86 ldr r3, [pc, #536] @ (8003fd8 ) - 8003dc0: 6bda ldr r2, [r3, #60] @ 0x3c - 8003dc2: 2380 movs r3, #128 @ 0x80 - 8003dc4: 055b lsls r3, r3, #21 - 8003dc6: 4013 ands r3, r2 - 8003dc8: d110 bne.n 8003dec + 8003e2a: 4b86 ldr r3, [pc, #536] @ (8004044 ) + 8003e2c: 6bda ldr r2, [r3, #60] @ 0x3c + 8003e2e: 2380 movs r3, #128 @ 0x80 + 8003e30: 055b lsls r3, r3, #21 + 8003e32: 4013 ands r3, r2 + 8003e34: d110 bne.n 8003e58 { __HAL_RCC_PWR_CLK_ENABLE(); - 8003dca: 4b83 ldr r3, [pc, #524] @ (8003fd8 ) - 8003dcc: 6bda ldr r2, [r3, #60] @ 0x3c - 8003dce: 4b82 ldr r3, [pc, #520] @ (8003fd8 ) - 8003dd0: 2180 movs r1, #128 @ 0x80 - 8003dd2: 0549 lsls r1, r1, #21 - 8003dd4: 430a orrs r2, r1 - 8003dd6: 63da str r2, [r3, #60] @ 0x3c - 8003dd8: 4b7f ldr r3, [pc, #508] @ (8003fd8 ) - 8003dda: 6bda ldr r2, [r3, #60] @ 0x3c - 8003ddc: 2380 movs r3, #128 @ 0x80 - 8003dde: 055b lsls r3, r3, #21 - 8003de0: 4013 ands r3, r2 - 8003de2: 60bb str r3, [r7, #8] - 8003de4: 68bb ldr r3, [r7, #8] + 8003e36: 4b83 ldr r3, [pc, #524] @ (8004044 ) + 8003e38: 6bda ldr r2, [r3, #60] @ 0x3c + 8003e3a: 4b82 ldr r3, [pc, #520] @ (8004044 ) + 8003e3c: 2180 movs r1, #128 @ 0x80 + 8003e3e: 0549 lsls r1, r1, #21 + 8003e40: 430a orrs r2, r1 + 8003e42: 63da str r2, [r3, #60] @ 0x3c + 8003e44: 4b7f ldr r3, [pc, #508] @ (8004044 ) + 8003e46: 6bda ldr r2, [r3, #60] @ 0x3c + 8003e48: 2380 movs r3, #128 @ 0x80 + 8003e4a: 055b lsls r3, r3, #21 + 8003e4c: 4013 ands r3, r2 + 8003e4e: 60bb str r3, [r7, #8] + 8003e50: 68bb ldr r3, [r7, #8] pwrclkchanged = SET; - 8003de6: 183b adds r3, r7, r0 - 8003de8: 2201 movs r2, #1 - 8003dea: 701a strb r2, [r3, #0] + 8003e52: 183b adds r3, r7, r0 + 8003e54: 2201 movs r2, #1 + 8003e56: 701a strb r2, [r3, #0] } /* Enable write access to Backup domain */ SET_BIT(PWR->CR1, PWR_CR1_DBP); - 8003dec: 4b7b ldr r3, [pc, #492] @ (8003fdc ) - 8003dee: 681a ldr r2, [r3, #0] - 8003df0: 4b7a ldr r3, [pc, #488] @ (8003fdc ) - 8003df2: 2180 movs r1, #128 @ 0x80 - 8003df4: 0049 lsls r1, r1, #1 - 8003df6: 430a orrs r2, r1 - 8003df8: 601a str r2, [r3, #0] + 8003e58: 4b7b ldr r3, [pc, #492] @ (8004048 ) + 8003e5a: 681a ldr r2, [r3, #0] + 8003e5c: 4b7a ldr r3, [pc, #488] @ (8004048 ) + 8003e5e: 2180 movs r1, #128 @ 0x80 + 8003e60: 0049 lsls r1, r1, #1 + 8003e62: 430a orrs r2, r1 + 8003e64: 601a str r2, [r3, #0] /* Wait for Backup domain Write protection disable */ tickstart = HAL_GetTick(); - 8003dfa: f7fd f98f bl 800111c - 8003dfe: 0003 movs r3, r0 - 8003e00: 60fb str r3, [r7, #12] + 8003e66: f7fd f98f bl 8001188 + 8003e6a: 0003 movs r3, r0 + 8003e6c: 60fb str r3, [r7, #12] while ((PWR->CR1 & PWR_CR1_DBP) == 0U) - 8003e02: e00b b.n 8003e1c + 8003e6e: e00b b.n 8003e88 { if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 8003e04: f7fd f98a bl 800111c - 8003e08: 0002 movs r2, r0 - 8003e0a: 68fb ldr r3, [r7, #12] - 8003e0c: 1ad3 subs r3, r2, r3 - 8003e0e: 2b02 cmp r3, #2 - 8003e10: d904 bls.n 8003e1c + 8003e70: f7fd f98a bl 8001188 + 8003e74: 0002 movs r2, r0 + 8003e76: 68fb ldr r3, [r7, #12] + 8003e78: 1ad3 subs r3, r2, r3 + 8003e7a: 2b02 cmp r3, #2 + 8003e7c: d904 bls.n 8003e88 { ret = HAL_TIMEOUT; - 8003e12: 2313 movs r3, #19 - 8003e14: 18fb adds r3, r7, r3 - 8003e16: 2203 movs r2, #3 - 8003e18: 701a strb r2, [r3, #0] + 8003e7e: 2313 movs r3, #19 + 8003e80: 18fb adds r3, r7, r3 + 8003e82: 2203 movs r2, #3 + 8003e84: 701a strb r2, [r3, #0] break; - 8003e1a: e005 b.n 8003e28 + 8003e86: e005 b.n 8003e94 while ((PWR->CR1 & PWR_CR1_DBP) == 0U) - 8003e1c: 4b6f ldr r3, [pc, #444] @ (8003fdc ) - 8003e1e: 681a ldr r2, [r3, #0] - 8003e20: 2380 movs r3, #128 @ 0x80 - 8003e22: 005b lsls r3, r3, #1 - 8003e24: 4013 ands r3, r2 - 8003e26: d0ed beq.n 8003e04 + 8003e88: 4b6f ldr r3, [pc, #444] @ (8004048 ) + 8003e8a: 681a ldr r2, [r3, #0] + 8003e8c: 2380 movs r3, #128 @ 0x80 + 8003e8e: 005b lsls r3, r3, #1 + 8003e90: 4013 ands r3, r2 + 8003e92: d0ed beq.n 8003e70 } } if (ret == HAL_OK) - 8003e28: 2313 movs r3, #19 - 8003e2a: 18fb adds r3, r7, r3 - 8003e2c: 781b ldrb r3, [r3, #0] - 8003e2e: 2b00 cmp r3, #0 - 8003e30: d154 bne.n 8003edc + 8003e94: 2313 movs r3, #19 + 8003e96: 18fb adds r3, r7, r3 + 8003e98: 781b ldrb r3, [r3, #0] + 8003e9a: 2b00 cmp r3, #0 + 8003e9c: d154 bne.n 8003f48 { /* Reset the Backup domain only if the RTC Clock source selection is modified from default */ tmpregister = READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL); - 8003e32: 4b69 ldr r3, [pc, #420] @ (8003fd8 ) - 8003e34: 6dda ldr r2, [r3, #92] @ 0x5c - 8003e36: 23c0 movs r3, #192 @ 0xc0 - 8003e38: 009b lsls r3, r3, #2 - 8003e3a: 4013 ands r3, r2 - 8003e3c: 617b str r3, [r7, #20] + 8003e9e: 4b69 ldr r3, [pc, #420] @ (8004044 ) + 8003ea0: 6dda ldr r2, [r3, #92] @ 0x5c + 8003ea2: 23c0 movs r3, #192 @ 0xc0 + 8003ea4: 009b lsls r3, r3, #2 + 8003ea6: 4013 ands r3, r2 + 8003ea8: 617b str r3, [r7, #20] /* Reset the Backup domain only if the RTC Clock source selection is modified */ if ((tmpregister != RCC_RTCCLKSOURCE_NONE) && (tmpregister != PeriphClkInit->RTCClockSelection)) - 8003e3e: 697b ldr r3, [r7, #20] - 8003e40: 2b00 cmp r3, #0 - 8003e42: d019 beq.n 8003e78 - 8003e44: 687b ldr r3, [r7, #4] - 8003e46: 699b ldr r3, [r3, #24] - 8003e48: 697a ldr r2, [r7, #20] - 8003e4a: 429a cmp r2, r3 - 8003e4c: d014 beq.n 8003e78 + 8003eaa: 697b ldr r3, [r7, #20] + 8003eac: 2b00 cmp r3, #0 + 8003eae: d019 beq.n 8003ee4 + 8003eb0: 687b ldr r3, [r7, #4] + 8003eb2: 699b ldr r3, [r3, #24] + 8003eb4: 697a ldr r2, [r7, #20] + 8003eb6: 429a cmp r2, r3 + 8003eb8: d014 beq.n 8003ee4 { /* Store the content of BDCR register before the reset of Backup Domain */ tmpregister = READ_BIT(RCC->BDCR, ~(RCC_BDCR_RTCSEL)); - 8003e4e: 4b62 ldr r3, [pc, #392] @ (8003fd8 ) - 8003e50: 6ddb ldr r3, [r3, #92] @ 0x5c - 8003e52: 4a63 ldr r2, [pc, #396] @ (8003fe0 ) - 8003e54: 4013 ands r3, r2 - 8003e56: 617b str r3, [r7, #20] + 8003eba: 4b62 ldr r3, [pc, #392] @ (8004044 ) + 8003ebc: 6ddb ldr r3, [r3, #92] @ 0x5c + 8003ebe: 4a63 ldr r2, [pc, #396] @ (800404c ) + 8003ec0: 4013 ands r3, r2 + 8003ec2: 617b str r3, [r7, #20] /* RTC Clock selection can be changed only if the Backup Domain is reset */ __HAL_RCC_BACKUPRESET_FORCE(); - 8003e58: 4b5f ldr r3, [pc, #380] @ (8003fd8 ) - 8003e5a: 6dda ldr r2, [r3, #92] @ 0x5c - 8003e5c: 4b5e ldr r3, [pc, #376] @ (8003fd8 ) - 8003e5e: 2180 movs r1, #128 @ 0x80 - 8003e60: 0249 lsls r1, r1, #9 - 8003e62: 430a orrs r2, r1 - 8003e64: 65da str r2, [r3, #92] @ 0x5c + 8003ec4: 4b5f ldr r3, [pc, #380] @ (8004044 ) + 8003ec6: 6dda ldr r2, [r3, #92] @ 0x5c + 8003ec8: 4b5e ldr r3, [pc, #376] @ (8004044 ) + 8003eca: 2180 movs r1, #128 @ 0x80 + 8003ecc: 0249 lsls r1, r1, #9 + 8003ece: 430a orrs r2, r1 + 8003ed0: 65da str r2, [r3, #92] @ 0x5c __HAL_RCC_BACKUPRESET_RELEASE(); - 8003e66: 4b5c ldr r3, [pc, #368] @ (8003fd8 ) - 8003e68: 6dda ldr r2, [r3, #92] @ 0x5c - 8003e6a: 4b5b ldr r3, [pc, #364] @ (8003fd8 ) - 8003e6c: 495d ldr r1, [pc, #372] @ (8003fe4 ) - 8003e6e: 400a ands r2, r1 - 8003e70: 65da str r2, [r3, #92] @ 0x5c + 8003ed2: 4b5c ldr r3, [pc, #368] @ (8004044 ) + 8003ed4: 6dda ldr r2, [r3, #92] @ 0x5c + 8003ed6: 4b5b ldr r3, [pc, #364] @ (8004044 ) + 8003ed8: 495d ldr r1, [pc, #372] @ (8004050 ) + 8003eda: 400a ands r2, r1 + 8003edc: 65da str r2, [r3, #92] @ 0x5c /* Restore the Content of BDCR register */ RCC->BDCR = tmpregister; - 8003e72: 4b59 ldr r3, [pc, #356] @ (8003fd8 ) - 8003e74: 697a ldr r2, [r7, #20] - 8003e76: 65da str r2, [r3, #92] @ 0x5c + 8003ede: 4b59 ldr r3, [pc, #356] @ (8004044 ) + 8003ee0: 697a ldr r2, [r7, #20] + 8003ee2: 65da str r2, [r3, #92] @ 0x5c } /* Wait for LSE reactivation if LSE was enable prior to Backup Domain reset */ if (HAL_IS_BIT_SET(tmpregister, RCC_BDCR_LSEON)) - 8003e78: 697b ldr r3, [r7, #20] - 8003e7a: 2201 movs r2, #1 - 8003e7c: 4013 ands r3, r2 - 8003e7e: d016 beq.n 8003eae + 8003ee4: 697b ldr r3, [r7, #20] + 8003ee6: 2201 movs r2, #1 + 8003ee8: 4013 ands r3, r2 + 8003eea: d016 beq.n 8003f1a { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003e80: f7fd f94c bl 800111c - 8003e84: 0003 movs r3, r0 - 8003e86: 60fb str r3, [r7, #12] + 8003eec: f7fd f94c bl 8001188 + 8003ef0: 0003 movs r3, r0 + 8003ef2: 60fb str r3, [r7, #12] /* Wait till LSE is ready */ while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) - 8003e88: e00c b.n 8003ea4 + 8003ef4: e00c b.n 8003f10 { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8003e8a: f7fd f947 bl 800111c - 8003e8e: 0002 movs r2, r0 - 8003e90: 68fb ldr r3, [r7, #12] - 8003e92: 1ad3 subs r3, r2, r3 - 8003e94: 4a54 ldr r2, [pc, #336] @ (8003fe8 ) - 8003e96: 4293 cmp r3, r2 - 8003e98: d904 bls.n 8003ea4 + 8003ef6: f7fd f947 bl 8001188 + 8003efa: 0002 movs r2, r0 + 8003efc: 68fb ldr r3, [r7, #12] + 8003efe: 1ad3 subs r3, r2, r3 + 8003f00: 4a54 ldr r2, [pc, #336] @ (8004054 ) + 8003f02: 4293 cmp r3, r2 + 8003f04: d904 bls.n 8003f10 { ret = HAL_TIMEOUT; - 8003e9a: 2313 movs r3, #19 - 8003e9c: 18fb adds r3, r7, r3 - 8003e9e: 2203 movs r2, #3 - 8003ea0: 701a strb r2, [r3, #0] + 8003f06: 2313 movs r3, #19 + 8003f08: 18fb adds r3, r7, r3 + 8003f0a: 2203 movs r2, #3 + 8003f0c: 701a strb r2, [r3, #0] break; - 8003ea2: e004 b.n 8003eae + 8003f0e: e004 b.n 8003f1a while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) - 8003ea4: 4b4c ldr r3, [pc, #304] @ (8003fd8 ) - 8003ea6: 6ddb ldr r3, [r3, #92] @ 0x5c - 8003ea8: 2202 movs r2, #2 - 8003eaa: 4013 ands r3, r2 - 8003eac: d0ed beq.n 8003e8a + 8003f10: 4b4c ldr r3, [pc, #304] @ (8004044 ) + 8003f12: 6ddb ldr r3, [r3, #92] @ 0x5c + 8003f14: 2202 movs r2, #2 + 8003f16: 4013 ands r3, r2 + 8003f18: d0ed beq.n 8003ef6 } } } if (ret == HAL_OK) - 8003eae: 2313 movs r3, #19 - 8003eb0: 18fb adds r3, r7, r3 - 8003eb2: 781b ldrb r3, [r3, #0] - 8003eb4: 2b00 cmp r3, #0 - 8003eb6: d10a bne.n 8003ece + 8003f1a: 2313 movs r3, #19 + 8003f1c: 18fb adds r3, r7, r3 + 8003f1e: 781b ldrb r3, [r3, #0] + 8003f20: 2b00 cmp r3, #0 + 8003f22: d10a bne.n 8003f3a { /* Apply new RTC clock source selection */ __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); - 8003eb8: 4b47 ldr r3, [pc, #284] @ (8003fd8 ) - 8003eba: 6ddb ldr r3, [r3, #92] @ 0x5c - 8003ebc: 4a48 ldr r2, [pc, #288] @ (8003fe0 ) - 8003ebe: 4013 ands r3, r2 - 8003ec0: 0019 movs r1, r3 - 8003ec2: 687b ldr r3, [r7, #4] - 8003ec4: 699a ldr r2, [r3, #24] - 8003ec6: 4b44 ldr r3, [pc, #272] @ (8003fd8 ) - 8003ec8: 430a orrs r2, r1 - 8003eca: 65da str r2, [r3, #92] @ 0x5c - 8003ecc: e00c b.n 8003ee8 + 8003f24: 4b47 ldr r3, [pc, #284] @ (8004044 ) + 8003f26: 6ddb ldr r3, [r3, #92] @ 0x5c + 8003f28: 4a48 ldr r2, [pc, #288] @ (800404c ) + 8003f2a: 4013 ands r3, r2 + 8003f2c: 0019 movs r1, r3 + 8003f2e: 687b ldr r3, [r7, #4] + 8003f30: 699a ldr r2, [r3, #24] + 8003f32: 4b44 ldr r3, [pc, #272] @ (8004044 ) + 8003f34: 430a orrs r2, r1 + 8003f36: 65da str r2, [r3, #92] @ 0x5c + 8003f38: e00c b.n 8003f54 } else { /* set overall return value */ status = ret; - 8003ece: 2312 movs r3, #18 - 8003ed0: 18fb adds r3, r7, r3 - 8003ed2: 2213 movs r2, #19 - 8003ed4: 18ba adds r2, r7, r2 - 8003ed6: 7812 ldrb r2, [r2, #0] - 8003ed8: 701a strb r2, [r3, #0] - 8003eda: e005 b.n 8003ee8 + 8003f3a: 2312 movs r3, #18 + 8003f3c: 18fb adds r3, r7, r3 + 8003f3e: 2213 movs r2, #19 + 8003f40: 18ba adds r2, r7, r2 + 8003f42: 7812 ldrb r2, [r2, #0] + 8003f44: 701a strb r2, [r3, #0] + 8003f46: e005 b.n 8003f54 } } else { /* set overall return value */ status = ret; - 8003edc: 2312 movs r3, #18 - 8003ede: 18fb adds r3, r7, r3 - 8003ee0: 2213 movs r2, #19 - 8003ee2: 18ba adds r2, r7, r2 - 8003ee4: 7812 ldrb r2, [r2, #0] - 8003ee6: 701a strb r2, [r3, #0] + 8003f48: 2312 movs r3, #18 + 8003f4a: 18fb adds r3, r7, r3 + 8003f4c: 2213 movs r2, #19 + 8003f4e: 18ba adds r2, r7, r2 + 8003f50: 7812 ldrb r2, [r2, #0] + 8003f52: 701a strb r2, [r3, #0] } /* Restore clock configuration if changed */ if (pwrclkchanged == SET) - 8003ee8: 2311 movs r3, #17 - 8003eea: 18fb adds r3, r7, r3 - 8003eec: 781b ldrb r3, [r3, #0] - 8003eee: 2b01 cmp r3, #1 - 8003ef0: d105 bne.n 8003efe + 8003f54: 2311 movs r3, #17 + 8003f56: 18fb adds r3, r7, r3 + 8003f58: 781b ldrb r3, [r3, #0] + 8003f5a: 2b01 cmp r3, #1 + 8003f5c: d105 bne.n 8003f6a { __HAL_RCC_PWR_CLK_DISABLE(); - 8003ef2: 4b39 ldr r3, [pc, #228] @ (8003fd8 ) - 8003ef4: 6bda ldr r2, [r3, #60] @ 0x3c - 8003ef6: 4b38 ldr r3, [pc, #224] @ (8003fd8 ) - 8003ef8: 493c ldr r1, [pc, #240] @ (8003fec ) - 8003efa: 400a ands r2, r1 - 8003efc: 63da str r2, [r3, #60] @ 0x3c + 8003f5e: 4b39 ldr r3, [pc, #228] @ (8004044 ) + 8003f60: 6bda ldr r2, [r3, #60] @ 0x3c + 8003f62: 4b38 ldr r3, [pc, #224] @ (8004044 ) + 8003f64: 493c ldr r1, [pc, #240] @ (8004058 ) + 8003f66: 400a ands r2, r1 + 8003f68: 63da str r2, [r3, #60] @ 0x3c } } /*-------------------------- USART1 clock source configuration -------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) - 8003efe: 687b ldr r3, [r7, #4] - 8003f00: 681b ldr r3, [r3, #0] - 8003f02: 2201 movs r2, #1 - 8003f04: 4013 ands r3, r2 - 8003f06: d009 beq.n 8003f1c + 8003f6a: 687b ldr r3, [r7, #4] + 8003f6c: 681b ldr r3, [r3, #0] + 8003f6e: 2201 movs r2, #1 + 8003f70: 4013 ands r3, r2 + 8003f72: d009 beq.n 8003f88 { /* Check the parameters */ assert_param(IS_RCC_USART1CLKSOURCE(PeriphClkInit->Usart1ClockSelection)); /* Configure the USART1 clock source */ __HAL_RCC_USART1_CONFIG(PeriphClkInit->Usart1ClockSelection); - 8003f08: 4b33 ldr r3, [pc, #204] @ (8003fd8 ) - 8003f0a: 6d5b ldr r3, [r3, #84] @ 0x54 - 8003f0c: 2203 movs r2, #3 - 8003f0e: 4393 bics r3, r2 - 8003f10: 0019 movs r1, r3 - 8003f12: 687b ldr r3, [r7, #4] - 8003f14: 685a ldr r2, [r3, #4] - 8003f16: 4b30 ldr r3, [pc, #192] @ (8003fd8 ) - 8003f18: 430a orrs r2, r1 - 8003f1a: 655a str r2, [r3, #84] @ 0x54 + 8003f74: 4b33 ldr r3, [pc, #204] @ (8004044 ) + 8003f76: 6d5b ldr r3, [r3, #84] @ 0x54 + 8003f78: 2203 movs r2, #3 + 8003f7a: 4393 bics r3, r2 + 8003f7c: 0019 movs r1, r3 + 8003f7e: 687b ldr r3, [r7, #4] + 8003f80: 685a ldr r2, [r3, #4] + 8003f82: 4b30 ldr r3, [pc, #192] @ (8004044 ) + 8003f84: 430a orrs r2, r1 + 8003f86: 655a str r2, [r3, #84] @ 0x54 } #if defined(RCC_CCIPR_USART2SEL) /*-------------------------- USART2 clock source configuration -------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) - 8003f1c: 687b ldr r3, [r7, #4] - 8003f1e: 681b ldr r3, [r3, #0] - 8003f20: 2202 movs r2, #2 - 8003f22: 4013 ands r3, r2 - 8003f24: d009 beq.n 8003f3a + 8003f88: 687b ldr r3, [r7, #4] + 8003f8a: 681b ldr r3, [r3, #0] + 8003f8c: 2202 movs r2, #2 + 8003f8e: 4013 ands r3, r2 + 8003f90: d009 beq.n 8003fa6 { /* Check the parameters */ assert_param(IS_RCC_USART2CLKSOURCE(PeriphClkInit->Usart2ClockSelection)); /* Configure the USART2 clock source */ __HAL_RCC_USART2_CONFIG(PeriphClkInit->Usart2ClockSelection); - 8003f26: 4b2c ldr r3, [pc, #176] @ (8003fd8 ) - 8003f28: 6d5b ldr r3, [r3, #84] @ 0x54 - 8003f2a: 220c movs r2, #12 - 8003f2c: 4393 bics r3, r2 - 8003f2e: 0019 movs r1, r3 - 8003f30: 687b ldr r3, [r7, #4] - 8003f32: 689a ldr r2, [r3, #8] - 8003f34: 4b28 ldr r3, [pc, #160] @ (8003fd8 ) - 8003f36: 430a orrs r2, r1 - 8003f38: 655a str r2, [r3, #84] @ 0x54 + 8003f92: 4b2c ldr r3, [pc, #176] @ (8004044 ) + 8003f94: 6d5b ldr r3, [r3, #84] @ 0x54 + 8003f96: 220c movs r2, #12 + 8003f98: 4393 bics r3, r2 + 8003f9a: 0019 movs r1, r3 + 8003f9c: 687b ldr r3, [r7, #4] + 8003f9e: 689a ldr r2, [r3, #8] + 8003fa0: 4b28 ldr r3, [pc, #160] @ (8004044 ) + 8003fa2: 430a orrs r2, r1 + 8003fa4: 655a str r2, [r3, #84] @ 0x54 __HAL_RCC_LPTIM2_CONFIG(PeriphClkInit->Lptim2ClockSelection); } #endif /* RCC_CCIPR_LPTIM2SEL */ /*-------------------------- I2C1 clock source configuration ---------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) - 8003f3a: 687b ldr r3, [r7, #4] - 8003f3c: 681b ldr r3, [r3, #0] - 8003f3e: 2220 movs r2, #32 - 8003f40: 4013 ands r3, r2 - 8003f42: d009 beq.n 8003f58 + 8003fa6: 687b ldr r3, [r7, #4] + 8003fa8: 681b ldr r3, [r3, #0] + 8003faa: 2220 movs r2, #32 + 8003fac: 4013 ands r3, r2 + 8003fae: d009 beq.n 8003fc4 { /* Check the parameters */ assert_param(IS_RCC_I2C1CLKSOURCE(PeriphClkInit->I2c1ClockSelection)); /* Configure the I2C1 clock source */ __HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection); - 8003f44: 4b24 ldr r3, [pc, #144] @ (8003fd8 ) - 8003f46: 6d5b ldr r3, [r3, #84] @ 0x54 - 8003f48: 4a29 ldr r2, [pc, #164] @ (8003ff0 ) - 8003f4a: 4013 ands r3, r2 - 8003f4c: 0019 movs r1, r3 - 8003f4e: 687b ldr r3, [r7, #4] - 8003f50: 68da ldr r2, [r3, #12] - 8003f52: 4b21 ldr r3, [pc, #132] @ (8003fd8 ) - 8003f54: 430a orrs r2, r1 - 8003f56: 655a str r2, [r3, #84] @ 0x54 + 8003fb0: 4b24 ldr r3, [pc, #144] @ (8004044 ) + 8003fb2: 6d5b ldr r3, [r3, #84] @ 0x54 + 8003fb4: 4a29 ldr r2, [pc, #164] @ (800405c ) + 8003fb6: 4013 ands r3, r2 + 8003fb8: 0019 movs r1, r3 + 8003fba: 687b ldr r3, [r7, #4] + 8003fbc: 68da ldr r2, [r3, #12] + 8003fbe: 4b21 ldr r3, [pc, #132] @ (8004044 ) + 8003fc0: 430a orrs r2, r1 + 8003fc2: 655a str r2, [r3, #84] @ 0x54 __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLQCLK); } } #endif /* RNG */ /*-------------------------- ADC clock source configuration ----------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) - 8003f58: 687b ldr r3, [r7, #4] - 8003f5a: 681a ldr r2, [r3, #0] - 8003f5c: 2380 movs r3, #128 @ 0x80 - 8003f5e: 01db lsls r3, r3, #7 - 8003f60: 4013 ands r3, r2 - 8003f62: d015 beq.n 8003f90 + 8003fc4: 687b ldr r3, [r7, #4] + 8003fc6: 681a ldr r2, [r3, #0] + 8003fc8: 2380 movs r3, #128 @ 0x80 + 8003fca: 01db lsls r3, r3, #7 + 8003fcc: 4013 ands r3, r2 + 8003fce: d015 beq.n 8003ffc { /* Check the parameters */ assert_param(IS_RCC_ADCCLKSOURCE(PeriphClkInit->AdcClockSelection)); /* Configure the ADC interface clock source */ __HAL_RCC_ADC_CONFIG(PeriphClkInit->AdcClockSelection); - 8003f64: 4b1c ldr r3, [pc, #112] @ (8003fd8 ) - 8003f66: 6d5b ldr r3, [r3, #84] @ 0x54 - 8003f68: 009b lsls r3, r3, #2 - 8003f6a: 0899 lsrs r1, r3, #2 - 8003f6c: 687b ldr r3, [r7, #4] - 8003f6e: 695a ldr r2, [r3, #20] - 8003f70: 4b19 ldr r3, [pc, #100] @ (8003fd8 ) - 8003f72: 430a orrs r2, r1 - 8003f74: 655a str r2, [r3, #84] @ 0x54 + 8003fd0: 4b1c ldr r3, [pc, #112] @ (8004044 ) + 8003fd2: 6d5b ldr r3, [r3, #84] @ 0x54 + 8003fd4: 009b lsls r3, r3, #2 + 8003fd6: 0899 lsrs r1, r3, #2 + 8003fd8: 687b ldr r3, [r7, #4] + 8003fda: 695a ldr r2, [r3, #20] + 8003fdc: 4b19 ldr r3, [pc, #100] @ (8004044 ) + 8003fde: 430a orrs r2, r1 + 8003fe0: 655a str r2, [r3, #84] @ 0x54 if (PeriphClkInit->AdcClockSelection == RCC_ADCCLKSOURCE_PLLADC) - 8003f76: 687b ldr r3, [r7, #4] - 8003f78: 695a ldr r2, [r3, #20] - 8003f7a: 2380 movs r3, #128 @ 0x80 - 8003f7c: 05db lsls r3, r3, #23 - 8003f7e: 429a cmp r2, r3 - 8003f80: d106 bne.n 8003f90 + 8003fe2: 687b ldr r3, [r7, #4] + 8003fe4: 695a ldr r2, [r3, #20] + 8003fe6: 2380 movs r3, #128 @ 0x80 + 8003fe8: 05db lsls r3, r3, #23 + 8003fea: 429a cmp r2, r3 + 8003fec: d106 bne.n 8003ffc { /* Enable PLLPCLK output */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLPCLK); - 8003f82: 4b15 ldr r3, [pc, #84] @ (8003fd8 ) - 8003f84: 68da ldr r2, [r3, #12] - 8003f86: 4b14 ldr r3, [pc, #80] @ (8003fd8 ) - 8003f88: 2180 movs r1, #128 @ 0x80 - 8003f8a: 0249 lsls r1, r1, #9 - 8003f8c: 430a orrs r2, r1 - 8003f8e: 60da str r2, [r3, #12] + 8003fee: 4b15 ldr r3, [pc, #84] @ (8004044 ) + 8003ff0: 68da ldr r2, [r3, #12] + 8003ff2: 4b14 ldr r3, [pc, #80] @ (8004044 ) + 8003ff4: 2180 movs r1, #128 @ 0x80 + 8003ff6: 0249 lsls r1, r1, #9 + 8003ff8: 430a orrs r2, r1 + 8003ffa: 60da str r2, [r3, #12] } } #endif /* RCC_CCIPR_TIM15SEL */ /*-------------------------- I2S1 clock source configuration ---------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S1) == RCC_PERIPHCLK_I2S1) - 8003f90: 687b ldr r3, [r7, #4] - 8003f92: 681a ldr r2, [r3, #0] - 8003f94: 2380 movs r3, #128 @ 0x80 - 8003f96: 011b lsls r3, r3, #4 - 8003f98: 4013 ands r3, r2 - 8003f9a: d016 beq.n 8003fca + 8003ffc: 687b ldr r3, [r7, #4] + 8003ffe: 681a ldr r2, [r3, #0] + 8004000: 2380 movs r3, #128 @ 0x80 + 8004002: 011b lsls r3, r3, #4 + 8004004: 4013 ands r3, r2 + 8004006: d016 beq.n 8004036 { /* Check the parameters */ assert_param(IS_RCC_I2S1CLKSOURCE(PeriphClkInit->I2s1ClockSelection)); /* Configure the I2S1 clock source */ __HAL_RCC_I2S1_CONFIG(PeriphClkInit->I2s1ClockSelection); - 8003f9c: 4b0e ldr r3, [pc, #56] @ (8003fd8 ) - 8003f9e: 6d5b ldr r3, [r3, #84] @ 0x54 - 8003fa0: 4a14 ldr r2, [pc, #80] @ (8003ff4 ) - 8003fa2: 4013 ands r3, r2 - 8003fa4: 0019 movs r1, r3 - 8003fa6: 687b ldr r3, [r7, #4] - 8003fa8: 691a ldr r2, [r3, #16] - 8003faa: 4b0b ldr r3, [pc, #44] @ (8003fd8 ) - 8003fac: 430a orrs r2, r1 - 8003fae: 655a str r2, [r3, #84] @ 0x54 + 8004008: 4b0e ldr r3, [pc, #56] @ (8004044 ) + 800400a: 6d5b ldr r3, [r3, #84] @ 0x54 + 800400c: 4a14 ldr r2, [pc, #80] @ (8004060 ) + 800400e: 4013 ands r3, r2 + 8004010: 0019 movs r1, r3 + 8004012: 687b ldr r3, [r7, #4] + 8004014: 691a ldr r2, [r3, #16] + 8004016: 4b0b ldr r3, [pc, #44] @ (8004044 ) + 8004018: 430a orrs r2, r1 + 800401a: 655a str r2, [r3, #84] @ 0x54 if (PeriphClkInit->I2s1ClockSelection == RCC_I2S1CLKSOURCE_PLL) - 8003fb0: 687b ldr r3, [r7, #4] - 8003fb2: 691a ldr r2, [r3, #16] - 8003fb4: 2380 movs r3, #128 @ 0x80 - 8003fb6: 01db lsls r3, r3, #7 - 8003fb8: 429a cmp r2, r3 - 8003fba: d106 bne.n 8003fca + 800401c: 687b ldr r3, [r7, #4] + 800401e: 691a ldr r2, [r3, #16] + 8004020: 2380 movs r3, #128 @ 0x80 + 8004022: 01db lsls r3, r3, #7 + 8004024: 429a cmp r2, r3 + 8004026: d106 bne.n 8004036 { /* Enable PLLPCLK output */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLPCLK); - 8003fbc: 4b06 ldr r3, [pc, #24] @ (8003fd8 ) - 8003fbe: 68da ldr r2, [r3, #12] - 8003fc0: 4b05 ldr r3, [pc, #20] @ (8003fd8 ) - 8003fc2: 2180 movs r1, #128 @ 0x80 - 8003fc4: 0249 lsls r1, r1, #9 - 8003fc6: 430a orrs r2, r1 - 8003fc8: 60da str r2, [r3, #12] + 8004028: 4b06 ldr r3, [pc, #24] @ (8004044 ) + 800402a: 68da ldr r2, [r3, #12] + 800402c: 4b05 ldr r3, [pc, #20] @ (8004044 ) + 800402e: 2180 movs r1, #128 @ 0x80 + 8004030: 0249 lsls r1, r1, #9 + 8004032: 430a orrs r2, r1 + 8004034: 60da str r2, [r3, #12] __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLQCLK); } } #endif /* FDCAN1 || FDCAN2 */ return status; - 8003fca: 2312 movs r3, #18 - 8003fcc: 18fb adds r3, r7, r3 - 8003fce: 781b ldrb r3, [r3, #0] + 8004036: 2312 movs r3, #18 + 8004038: 18fb adds r3, r7, r3 + 800403a: 781b ldrb r3, [r3, #0] } - 8003fd0: 0018 movs r0, r3 - 8003fd2: 46bd mov sp, r7 - 8003fd4: b006 add sp, #24 - 8003fd6: bd80 pop {r7, pc} - 8003fd8: 40021000 .word 0x40021000 - 8003fdc: 40007000 .word 0x40007000 - 8003fe0: fffffcff .word 0xfffffcff - 8003fe4: fffeffff .word 0xfffeffff - 8003fe8: 00001388 .word 0x00001388 - 8003fec: efffffff .word 0xefffffff - 8003ff0: ffffcfff .word 0xffffcfff - 8003ff4: ffff3fff .word 0xffff3fff + 800403c: 0018 movs r0, r3 + 800403e: 46bd mov sp, r7 + 8004040: b006 add sp, #24 + 8004042: bd80 pop {r7, pc} + 8004044: 40021000 .word 0x40021000 + 8004048: 40007000 .word 0x40007000 + 800404c: fffffcff .word 0xfffffcff + 8004050: fffeffff .word 0xfffeffff + 8004054: 00001388 .word 0x00001388 + 8004058: efffffff .word 0xefffffff + 800405c: ffffcfff .word 0xffffcfff + 8004060: ffff3fff .word 0xffff3fff -08003ff8 : +08004064 : * parameters in the UART_InitTypeDef and initialize the associated handle. * @param huart UART handle. * @retval HAL status */ HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart) { - 8003ff8: b580 push {r7, lr} - 8003ffa: b082 sub sp, #8 - 8003ffc: af00 add r7, sp, #0 - 8003ffe: 6078 str r0, [r7, #4] + 8004064: b580 push {r7, lr} + 8004066: b082 sub sp, #8 + 8004068: af00 add r7, sp, #0 + 800406a: 6078 str r0, [r7, #4] /* Check the UART handle allocation */ if (huart == NULL) - 8004000: 687b ldr r3, [r7, #4] - 8004002: 2b00 cmp r3, #0 - 8004004: d101 bne.n 800400a + 800406c: 687b ldr r3, [r7, #4] + 800406e: 2b00 cmp r3, #0 + 8004070: d101 bne.n 8004076 { return HAL_ERROR; - 8004006: 2301 movs r3, #1 - 8004008: e046 b.n 8004098 + 8004072: 2301 movs r3, #1 + 8004074: e046 b.n 8004104 { /* Check the parameters */ assert_param((IS_UART_INSTANCE(huart->Instance)) || (IS_LPUART_INSTANCE(huart->Instance))); } if (huart->gState == HAL_UART_STATE_RESET) - 800400a: 687b ldr r3, [r7, #4] - 800400c: 2288 movs r2, #136 @ 0x88 - 800400e: 589b ldr r3, [r3, r2] - 8004010: 2b00 cmp r3, #0 - 8004012: d107 bne.n 8004024 + 8004076: 687b ldr r3, [r7, #4] + 8004078: 2288 movs r2, #136 @ 0x88 + 800407a: 589b ldr r3, [r3, r2] + 800407c: 2b00 cmp r3, #0 + 800407e: d107 bne.n 8004090 { /* Allocate lock resource and initialize it */ huart->Lock = HAL_UNLOCKED; - 8004014: 687b ldr r3, [r7, #4] - 8004016: 2284 movs r2, #132 @ 0x84 - 8004018: 2100 movs r1, #0 - 800401a: 5499 strb r1, [r3, r2] + 8004080: 687b ldr r3, [r7, #4] + 8004082: 2284 movs r2, #132 @ 0x84 + 8004084: 2100 movs r1, #0 + 8004086: 5499 strb r1, [r3, r2] /* Init the low level hardware */ huart->MspInitCallback(huart); #else /* Init the low level hardware : GPIO, CLOCK */ HAL_UART_MspInit(huart); - 800401c: 687b ldr r3, [r7, #4] - 800401e: 0018 movs r0, r3 - 8004020: f7fc ff3e bl 8000ea0 + 8004088: 687b ldr r3, [r7, #4] + 800408a: 0018 movs r0, r3 + 800408c: f7fc ff3e bl 8000f0c #endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ } huart->gState = HAL_UART_STATE_BUSY; - 8004024: 687b ldr r3, [r7, #4] - 8004026: 2288 movs r2, #136 @ 0x88 - 8004028: 2124 movs r1, #36 @ 0x24 - 800402a: 5099 str r1, [r3, r2] + 8004090: 687b ldr r3, [r7, #4] + 8004092: 2288 movs r2, #136 @ 0x88 + 8004094: 2124 movs r1, #36 @ 0x24 + 8004096: 5099 str r1, [r3, r2] __HAL_UART_DISABLE(huart); - 800402c: 687b ldr r3, [r7, #4] - 800402e: 681b ldr r3, [r3, #0] - 8004030: 681a ldr r2, [r3, #0] - 8004032: 687b ldr r3, [r7, #4] - 8004034: 681b ldr r3, [r3, #0] - 8004036: 2101 movs r1, #1 - 8004038: 438a bics r2, r1 - 800403a: 601a str r2, [r3, #0] + 8004098: 687b ldr r3, [r7, #4] + 800409a: 681b ldr r3, [r3, #0] + 800409c: 681a ldr r2, [r3, #0] + 800409e: 687b ldr r3, [r7, #4] + 80040a0: 681b ldr r3, [r3, #0] + 80040a2: 2101 movs r1, #1 + 80040a4: 438a bics r2, r1 + 80040a6: 601a str r2, [r3, #0] /* Perform advanced settings configuration */ /* For some items, configuration requires to be done prior TE and RE bits are set */ if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT) - 800403c: 687b ldr r3, [r7, #4] - 800403e: 6a9b ldr r3, [r3, #40] @ 0x28 - 8004040: 2b00 cmp r3, #0 - 8004042: d003 beq.n 800404c + 80040a8: 687b ldr r3, [r7, #4] + 80040aa: 6a9b ldr r3, [r3, #40] @ 0x28 + 80040ac: 2b00 cmp r3, #0 + 80040ae: d003 beq.n 80040b8 { UART_AdvFeatureConfig(huart); - 8004044: 687b ldr r3, [r7, #4] - 8004046: 0018 movs r0, r3 - 8004048: f000 f9d0 bl 80043ec + 80040b0: 687b ldr r3, [r7, #4] + 80040b2: 0018 movs r0, r3 + 80040b4: f000 f9d0 bl 8004458 } /* Set the UART Communication parameters */ if (UART_SetConfig(huart) == HAL_ERROR) - 800404c: 687b ldr r3, [r7, #4] - 800404e: 0018 movs r0, r3 - 8004050: f000 f828 bl 80040a4 - 8004054: 0003 movs r3, r0 - 8004056: 2b01 cmp r3, #1 - 8004058: d101 bne.n 800405e + 80040b8: 687b ldr r3, [r7, #4] + 80040ba: 0018 movs r0, r3 + 80040bc: f000 f828 bl 8004110 + 80040c0: 0003 movs r3, r0 + 80040c2: 2b01 cmp r3, #1 + 80040c4: d101 bne.n 80040ca { return HAL_ERROR; - 800405a: 2301 movs r3, #1 - 800405c: e01c b.n 8004098 + 80040c6: 2301 movs r3, #1 + 80040c8: e01c b.n 8004104 } /* In asynchronous mode, the following bits must be kept cleared: - LINEN and CLKEN bits in the USART_CR2 register, - SCEN, HDSEL and IREN bits in the USART_CR3 register.*/ CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); - 800405e: 687b ldr r3, [r7, #4] - 8004060: 681b ldr r3, [r3, #0] - 8004062: 685a ldr r2, [r3, #4] - 8004064: 687b ldr r3, [r7, #4] - 8004066: 681b ldr r3, [r3, #0] - 8004068: 490d ldr r1, [pc, #52] @ (80040a0 ) - 800406a: 400a ands r2, r1 - 800406c: 605a str r2, [r3, #4] + 80040ca: 687b ldr r3, [r7, #4] + 80040cc: 681b ldr r3, [r3, #0] + 80040ce: 685a ldr r2, [r3, #4] + 80040d0: 687b ldr r3, [r7, #4] + 80040d2: 681b ldr r3, [r3, #0] + 80040d4: 490d ldr r1, [pc, #52] @ (800410c ) + 80040d6: 400a ands r2, r1 + 80040d8: 605a str r2, [r3, #4] CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN)); - 800406e: 687b ldr r3, [r7, #4] - 8004070: 681b ldr r3, [r3, #0] - 8004072: 689a ldr r2, [r3, #8] - 8004074: 687b ldr r3, [r7, #4] - 8004076: 681b ldr r3, [r3, #0] - 8004078: 212a movs r1, #42 @ 0x2a - 800407a: 438a bics r2, r1 - 800407c: 609a str r2, [r3, #8] + 80040da: 687b ldr r3, [r7, #4] + 80040dc: 681b ldr r3, [r3, #0] + 80040de: 689a ldr r2, [r3, #8] + 80040e0: 687b ldr r3, [r7, #4] + 80040e2: 681b ldr r3, [r3, #0] + 80040e4: 212a movs r1, #42 @ 0x2a + 80040e6: 438a bics r2, r1 + 80040e8: 609a str r2, [r3, #8] __HAL_UART_ENABLE(huart); - 800407e: 687b ldr r3, [r7, #4] - 8004080: 681b ldr r3, [r3, #0] - 8004082: 681a ldr r2, [r3, #0] - 8004084: 687b ldr r3, [r7, #4] - 8004086: 681b ldr r3, [r3, #0] - 8004088: 2101 movs r1, #1 - 800408a: 430a orrs r2, r1 - 800408c: 601a str r2, [r3, #0] + 80040ea: 687b ldr r3, [r7, #4] + 80040ec: 681b ldr r3, [r3, #0] + 80040ee: 681a ldr r2, [r3, #0] + 80040f0: 687b ldr r3, [r7, #4] + 80040f2: 681b ldr r3, [r3, #0] + 80040f4: 2101 movs r1, #1 + 80040f6: 430a orrs r2, r1 + 80040f8: 601a str r2, [r3, #0] /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */ return (UART_CheckIdleState(huart)); - 800408e: 687b ldr r3, [r7, #4] - 8004090: 0018 movs r0, r3 - 8004092: f000 fa5f bl 8004554 - 8004096: 0003 movs r3, r0 + 80040fa: 687b ldr r3, [r7, #4] + 80040fc: 0018 movs r0, r3 + 80040fe: f000 fa5f bl 80045c0 + 8004102: 0003 movs r3, r0 } - 8004098: 0018 movs r0, r3 - 800409a: 46bd mov sp, r7 - 800409c: b002 add sp, #8 - 800409e: bd80 pop {r7, pc} - 80040a0: ffffb7ff .word 0xffffb7ff + 8004104: 0018 movs r0, r3 + 8004106: 46bd mov sp, r7 + 8004108: b002 add sp, #8 + 800410a: bd80 pop {r7, pc} + 800410c: ffffb7ff .word 0xffffb7ff -080040a4 : +08004110 : * @brief Configure the UART peripheral. * @param huart UART handle. * @retval HAL status */ HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart) { - 80040a4: b580 push {r7, lr} - 80040a6: b088 sub sp, #32 - 80040a8: af00 add r7, sp, #0 - 80040aa: 6078 str r0, [r7, #4] + 8004110: b580 push {r7, lr} + 8004112: b088 sub sp, #32 + 8004114: af00 add r7, sp, #0 + 8004116: 6078 str r0, [r7, #4] uint32_t tmpreg; uint16_t brrtemp; UART_ClockSourceTypeDef clocksource; uint32_t usartdiv; HAL_StatusTypeDef ret = HAL_OK; - 80040ac: 231a movs r3, #26 - 80040ae: 18fb adds r3, r7, r3 - 80040b0: 2200 movs r2, #0 - 80040b2: 701a strb r2, [r3, #0] + 8004118: 231a movs r3, #26 + 800411a: 18fb adds r3, r7, r3 + 800411c: 2200 movs r2, #0 + 800411e: 701a strb r2, [r3, #0] * the UART Word Length, Parity, Mode and oversampling: * set the M bits according to huart->Init.WordLength value * set PCE and PS bits according to huart->Init.Parity value * set TE and RE bits according to huart->Init.Mode value * set OVER8 bit according to huart->Init.OverSampling value */ tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling ; - 80040b4: 687b ldr r3, [r7, #4] - 80040b6: 689a ldr r2, [r3, #8] - 80040b8: 687b ldr r3, [r7, #4] - 80040ba: 691b ldr r3, [r3, #16] - 80040bc: 431a orrs r2, r3 - 80040be: 687b ldr r3, [r7, #4] - 80040c0: 695b ldr r3, [r3, #20] - 80040c2: 431a orrs r2, r3 - 80040c4: 687b ldr r3, [r7, #4] - 80040c6: 69db ldr r3, [r3, #28] - 80040c8: 4313 orrs r3, r2 - 80040ca: 61fb str r3, [r7, #28] + 8004120: 687b ldr r3, [r7, #4] + 8004122: 689a ldr r2, [r3, #8] + 8004124: 687b ldr r3, [r7, #4] + 8004126: 691b ldr r3, [r3, #16] + 8004128: 431a orrs r2, r3 + 800412a: 687b ldr r3, [r7, #4] + 800412c: 695b ldr r3, [r3, #20] + 800412e: 431a orrs r2, r3 + 8004130: 687b ldr r3, [r7, #4] + 8004132: 69db ldr r3, [r3, #28] + 8004134: 4313 orrs r3, r2 + 8004136: 61fb str r3, [r7, #28] MODIFY_REG(huart->Instance->CR1, USART_CR1_FIELDS, tmpreg); - 80040cc: 687b ldr r3, [r7, #4] - 80040ce: 681b ldr r3, [r3, #0] - 80040d0: 681b ldr r3, [r3, #0] - 80040d2: 4abc ldr r2, [pc, #752] @ (80043c4 ) - 80040d4: 4013 ands r3, r2 - 80040d6: 0019 movs r1, r3 - 80040d8: 687b ldr r3, [r7, #4] - 80040da: 681b ldr r3, [r3, #0] - 80040dc: 69fa ldr r2, [r7, #28] - 80040de: 430a orrs r2, r1 - 80040e0: 601a str r2, [r3, #0] + 8004138: 687b ldr r3, [r7, #4] + 800413a: 681b ldr r3, [r3, #0] + 800413c: 681b ldr r3, [r3, #0] + 800413e: 4abc ldr r2, [pc, #752] @ (8004430 ) + 8004140: 4013 ands r3, r2 + 8004142: 0019 movs r1, r3 + 8004144: 687b ldr r3, [r7, #4] + 8004146: 681b ldr r3, [r3, #0] + 8004148: 69fa ldr r2, [r7, #28] + 800414a: 430a orrs r2, r1 + 800414c: 601a str r2, [r3, #0] /*-------------------------- USART CR2 Configuration -----------------------*/ /* Configure the UART Stop Bits: Set STOP[13:12] bits according * to huart->Init.StopBits value */ MODIFY_REG(huart->Instance->CR2, USART_CR2_STOP, huart->Init.StopBits); - 80040e2: 687b ldr r3, [r7, #4] - 80040e4: 681b ldr r3, [r3, #0] - 80040e6: 685b ldr r3, [r3, #4] - 80040e8: 4ab7 ldr r2, [pc, #732] @ (80043c8 ) - 80040ea: 4013 ands r3, r2 - 80040ec: 0019 movs r1, r3 - 80040ee: 687b ldr r3, [r7, #4] - 80040f0: 68da ldr r2, [r3, #12] - 80040f2: 687b ldr r3, [r7, #4] - 80040f4: 681b ldr r3, [r3, #0] - 80040f6: 430a orrs r2, r1 - 80040f8: 605a str r2, [r3, #4] + 800414e: 687b ldr r3, [r7, #4] + 8004150: 681b ldr r3, [r3, #0] + 8004152: 685b ldr r3, [r3, #4] + 8004154: 4ab7 ldr r2, [pc, #732] @ (8004434 ) + 8004156: 4013 ands r3, r2 + 8004158: 0019 movs r1, r3 + 800415a: 687b ldr r3, [r7, #4] + 800415c: 68da ldr r2, [r3, #12] + 800415e: 687b ldr r3, [r7, #4] + 8004160: 681b ldr r3, [r3, #0] + 8004162: 430a orrs r2, r1 + 8004164: 605a str r2, [r3, #4] /* Configure * - UART HardWare Flow Control: set CTSE and RTSE bits according * to huart->Init.HwFlowCtl value * - one-bit sampling method versus three samples' majority rule according * to huart->Init.OneBitSampling (not applicable to LPUART) */ tmpreg = (uint32_t)huart->Init.HwFlowCtl; - 80040fa: 687b ldr r3, [r7, #4] - 80040fc: 699b ldr r3, [r3, #24] - 80040fe: 61fb str r3, [r7, #28] + 8004166: 687b ldr r3, [r7, #4] + 8004168: 699b ldr r3, [r3, #24] + 800416a: 61fb str r3, [r7, #28] if (!(UART_INSTANCE_LOWPOWER(huart))) { tmpreg |= huart->Init.OneBitSampling; - 8004100: 687b ldr r3, [r7, #4] - 8004102: 6a1b ldr r3, [r3, #32] - 8004104: 69fa ldr r2, [r7, #28] - 8004106: 4313 orrs r3, r2 - 8004108: 61fb str r3, [r7, #28] + 800416c: 687b ldr r3, [r7, #4] + 800416e: 6a1b ldr r3, [r3, #32] + 8004170: 69fa ldr r2, [r7, #28] + 8004172: 4313 orrs r3, r2 + 8004174: 61fb str r3, [r7, #28] } MODIFY_REG(huart->Instance->CR3, USART_CR3_FIELDS, tmpreg); - 800410a: 687b ldr r3, [r7, #4] - 800410c: 681b ldr r3, [r3, #0] - 800410e: 689b ldr r3, [r3, #8] - 8004110: 4aae ldr r2, [pc, #696] @ (80043cc ) - 8004112: 4013 ands r3, r2 - 8004114: 0019 movs r1, r3 - 8004116: 687b ldr r3, [r7, #4] - 8004118: 681b ldr r3, [r3, #0] - 800411a: 69fa ldr r2, [r7, #28] - 800411c: 430a orrs r2, r1 - 800411e: 609a str r2, [r3, #8] + 8004176: 687b ldr r3, [r7, #4] + 8004178: 681b ldr r3, [r3, #0] + 800417a: 689b ldr r3, [r3, #8] + 800417c: 4aae ldr r2, [pc, #696] @ (8004438 ) + 800417e: 4013 ands r3, r2 + 8004180: 0019 movs r1, r3 + 8004182: 687b ldr r3, [r7, #4] + 8004184: 681b ldr r3, [r3, #0] + 8004186: 69fa ldr r2, [r7, #28] + 8004188: 430a orrs r2, r1 + 800418a: 609a str r2, [r3, #8] /*-------------------------- USART PRESC Configuration -----------------------*/ /* Configure * - UART Clock Prescaler : set PRESCALER according to huart->Init.ClockPrescaler value */ MODIFY_REG(huart->Instance->PRESC, USART_PRESC_PRESCALER, huart->Init.ClockPrescaler); - 8004120: 687b ldr r3, [r7, #4] - 8004122: 681b ldr r3, [r3, #0] - 8004124: 6adb ldr r3, [r3, #44] @ 0x2c - 8004126: 220f movs r2, #15 - 8004128: 4393 bics r3, r2 - 800412a: 0019 movs r1, r3 - 800412c: 687b ldr r3, [r7, #4] - 800412e: 6a5a ldr r2, [r3, #36] @ 0x24 - 8004130: 687b ldr r3, [r7, #4] - 8004132: 681b ldr r3, [r3, #0] - 8004134: 430a orrs r2, r1 - 8004136: 62da str r2, [r3, #44] @ 0x2c + 800418c: 687b ldr r3, [r7, #4] + 800418e: 681b ldr r3, [r3, #0] + 8004190: 6adb ldr r3, [r3, #44] @ 0x2c + 8004192: 220f movs r2, #15 + 8004194: 4393 bics r3, r2 + 8004196: 0019 movs r1, r3 + 8004198: 687b ldr r3, [r7, #4] + 800419a: 6a5a ldr r2, [r3, #36] @ 0x24 + 800419c: 687b ldr r3, [r7, #4] + 800419e: 681b ldr r3, [r3, #0] + 80041a0: 430a orrs r2, r1 + 80041a2: 62da str r2, [r3, #44] @ 0x2c /*-------------------------- USART BRR Configuration -----------------------*/ UART_GETCLOCKSOURCE(huart, clocksource); - 8004138: 687b ldr r3, [r7, #4] - 800413a: 681b ldr r3, [r3, #0] - 800413c: 4aa4 ldr r2, [pc, #656] @ (80043d0 ) - 800413e: 4293 cmp r3, r2 - 8004140: d127 bne.n 8004192 - 8004142: 4ba4 ldr r3, [pc, #656] @ (80043d4 ) - 8004144: 6d5b ldr r3, [r3, #84] @ 0x54 - 8004146: 2203 movs r2, #3 - 8004148: 4013 ands r3, r2 - 800414a: 2b03 cmp r3, #3 - 800414c: d017 beq.n 800417e - 800414e: d81b bhi.n 8004188 - 8004150: 2b02 cmp r3, #2 - 8004152: d00a beq.n 800416a - 8004154: d818 bhi.n 8004188 - 8004156: 2b00 cmp r3, #0 - 8004158: d002 beq.n 8004160 - 800415a: 2b01 cmp r3, #1 - 800415c: d00a beq.n 8004174 - 800415e: e013 b.n 8004188 - 8004160: 231b movs r3, #27 - 8004162: 18fb adds r3, r7, r3 - 8004164: 2200 movs r2, #0 - 8004166: 701a strb r2, [r3, #0] - 8004168: e058 b.n 800421c - 800416a: 231b movs r3, #27 - 800416c: 18fb adds r3, r7, r3 - 800416e: 2202 movs r2, #2 - 8004170: 701a strb r2, [r3, #0] - 8004172: e053 b.n 800421c - 8004174: 231b movs r3, #27 - 8004176: 18fb adds r3, r7, r3 - 8004178: 2204 movs r2, #4 - 800417a: 701a strb r2, [r3, #0] - 800417c: e04e b.n 800421c - 800417e: 231b movs r3, #27 - 8004180: 18fb adds r3, r7, r3 - 8004182: 2208 movs r2, #8 - 8004184: 701a strb r2, [r3, #0] - 8004186: e049 b.n 800421c - 8004188: 231b movs r3, #27 - 800418a: 18fb adds r3, r7, r3 - 800418c: 2210 movs r2, #16 - 800418e: 701a strb r2, [r3, #0] - 8004190: e044 b.n 800421c - 8004192: 687b ldr r3, [r7, #4] - 8004194: 681b ldr r3, [r3, #0] - 8004196: 4a90 ldr r2, [pc, #576] @ (80043d8 ) - 8004198: 4293 cmp r3, r2 - 800419a: d127 bne.n 80041ec - 800419c: 4b8d ldr r3, [pc, #564] @ (80043d4 ) - 800419e: 6d5b ldr r3, [r3, #84] @ 0x54 - 80041a0: 220c movs r2, #12 - 80041a2: 4013 ands r3, r2 - 80041a4: 2b0c cmp r3, #12 - 80041a6: d017 beq.n 80041d8 - 80041a8: d81b bhi.n 80041e2 - 80041aa: 2b08 cmp r3, #8 - 80041ac: d00a beq.n 80041c4 - 80041ae: d818 bhi.n 80041e2 - 80041b0: 2b00 cmp r3, #0 - 80041b2: d002 beq.n 80041ba - 80041b4: 2b04 cmp r3, #4 - 80041b6: d00a beq.n 80041ce - 80041b8: e013 b.n 80041e2 - 80041ba: 231b movs r3, #27 - 80041bc: 18fb adds r3, r7, r3 - 80041be: 2200 movs r2, #0 - 80041c0: 701a strb r2, [r3, #0] - 80041c2: e02b b.n 800421c - 80041c4: 231b movs r3, #27 - 80041c6: 18fb adds r3, r7, r3 - 80041c8: 2202 movs r2, #2 - 80041ca: 701a strb r2, [r3, #0] - 80041cc: e026 b.n 800421c - 80041ce: 231b movs r3, #27 - 80041d0: 18fb adds r3, r7, r3 - 80041d2: 2204 movs r2, #4 - 80041d4: 701a strb r2, [r3, #0] - 80041d6: e021 b.n 800421c - 80041d8: 231b movs r3, #27 - 80041da: 18fb adds r3, r7, r3 - 80041dc: 2208 movs r2, #8 - 80041de: 701a strb r2, [r3, #0] - 80041e0: e01c b.n 800421c - 80041e2: 231b movs r3, #27 - 80041e4: 18fb adds r3, r7, r3 - 80041e6: 2210 movs r2, #16 - 80041e8: 701a strb r2, [r3, #0] - 80041ea: e017 b.n 800421c - 80041ec: 687b ldr r3, [r7, #4] - 80041ee: 681b ldr r3, [r3, #0] - 80041f0: 4a7a ldr r2, [pc, #488] @ (80043dc ) - 80041f2: 4293 cmp r3, r2 - 80041f4: d104 bne.n 8004200 - 80041f6: 231b movs r3, #27 - 80041f8: 18fb adds r3, r7, r3 - 80041fa: 2200 movs r2, #0 - 80041fc: 701a strb r2, [r3, #0] - 80041fe: e00d b.n 800421c - 8004200: 687b ldr r3, [r7, #4] - 8004202: 681b ldr r3, [r3, #0] - 8004204: 4a76 ldr r2, [pc, #472] @ (80043e0 ) - 8004206: 4293 cmp r3, r2 - 8004208: d104 bne.n 8004214 - 800420a: 231b movs r3, #27 - 800420c: 18fb adds r3, r7, r3 - 800420e: 2200 movs r2, #0 - 8004210: 701a strb r2, [r3, #0] - 8004212: e003 b.n 800421c - 8004214: 231b movs r3, #27 - 8004216: 18fb adds r3, r7, r3 - 8004218: 2210 movs r2, #16 - 800421a: 701a strb r2, [r3, #0] + 80041a4: 687b ldr r3, [r7, #4] + 80041a6: 681b ldr r3, [r3, #0] + 80041a8: 4aa4 ldr r2, [pc, #656] @ (800443c ) + 80041aa: 4293 cmp r3, r2 + 80041ac: d127 bne.n 80041fe + 80041ae: 4ba4 ldr r3, [pc, #656] @ (8004440 ) + 80041b0: 6d5b ldr r3, [r3, #84] @ 0x54 + 80041b2: 2203 movs r2, #3 + 80041b4: 4013 ands r3, r2 + 80041b6: 2b03 cmp r3, #3 + 80041b8: d017 beq.n 80041ea + 80041ba: d81b bhi.n 80041f4 + 80041bc: 2b02 cmp r3, #2 + 80041be: d00a beq.n 80041d6 + 80041c0: d818 bhi.n 80041f4 + 80041c2: 2b00 cmp r3, #0 + 80041c4: d002 beq.n 80041cc + 80041c6: 2b01 cmp r3, #1 + 80041c8: d00a beq.n 80041e0 + 80041ca: e013 b.n 80041f4 + 80041cc: 231b movs r3, #27 + 80041ce: 18fb adds r3, r7, r3 + 80041d0: 2200 movs r2, #0 + 80041d2: 701a strb r2, [r3, #0] + 80041d4: e058 b.n 8004288 + 80041d6: 231b movs r3, #27 + 80041d8: 18fb adds r3, r7, r3 + 80041da: 2202 movs r2, #2 + 80041dc: 701a strb r2, [r3, #0] + 80041de: e053 b.n 8004288 + 80041e0: 231b movs r3, #27 + 80041e2: 18fb adds r3, r7, r3 + 80041e4: 2204 movs r2, #4 + 80041e6: 701a strb r2, [r3, #0] + 80041e8: e04e b.n 8004288 + 80041ea: 231b movs r3, #27 + 80041ec: 18fb adds r3, r7, r3 + 80041ee: 2208 movs r2, #8 + 80041f0: 701a strb r2, [r3, #0] + 80041f2: e049 b.n 8004288 + 80041f4: 231b movs r3, #27 + 80041f6: 18fb adds r3, r7, r3 + 80041f8: 2210 movs r2, #16 + 80041fa: 701a strb r2, [r3, #0] + 80041fc: e044 b.n 8004288 + 80041fe: 687b ldr r3, [r7, #4] + 8004200: 681b ldr r3, [r3, #0] + 8004202: 4a90 ldr r2, [pc, #576] @ (8004444 ) + 8004204: 4293 cmp r3, r2 + 8004206: d127 bne.n 8004258 + 8004208: 4b8d ldr r3, [pc, #564] @ (8004440 ) + 800420a: 6d5b ldr r3, [r3, #84] @ 0x54 + 800420c: 220c movs r2, #12 + 800420e: 4013 ands r3, r2 + 8004210: 2b0c cmp r3, #12 + 8004212: d017 beq.n 8004244 + 8004214: d81b bhi.n 800424e + 8004216: 2b08 cmp r3, #8 + 8004218: d00a beq.n 8004230 + 800421a: d818 bhi.n 800424e + 800421c: 2b00 cmp r3, #0 + 800421e: d002 beq.n 8004226 + 8004220: 2b04 cmp r3, #4 + 8004222: d00a beq.n 800423a + 8004224: e013 b.n 800424e + 8004226: 231b movs r3, #27 + 8004228: 18fb adds r3, r7, r3 + 800422a: 2200 movs r2, #0 + 800422c: 701a strb r2, [r3, #0] + 800422e: e02b b.n 8004288 + 8004230: 231b movs r3, #27 + 8004232: 18fb adds r3, r7, r3 + 8004234: 2202 movs r2, #2 + 8004236: 701a strb r2, [r3, #0] + 8004238: e026 b.n 8004288 + 800423a: 231b movs r3, #27 + 800423c: 18fb adds r3, r7, r3 + 800423e: 2204 movs r2, #4 + 8004240: 701a strb r2, [r3, #0] + 8004242: e021 b.n 8004288 + 8004244: 231b movs r3, #27 + 8004246: 18fb adds r3, r7, r3 + 8004248: 2208 movs r2, #8 + 800424a: 701a strb r2, [r3, #0] + 800424c: e01c b.n 8004288 + 800424e: 231b movs r3, #27 + 8004250: 18fb adds r3, r7, r3 + 8004252: 2210 movs r2, #16 + 8004254: 701a strb r2, [r3, #0] + 8004256: e017 b.n 8004288 + 8004258: 687b ldr r3, [r7, #4] + 800425a: 681b ldr r3, [r3, #0] + 800425c: 4a7a ldr r2, [pc, #488] @ (8004448 ) + 800425e: 4293 cmp r3, r2 + 8004260: d104 bne.n 800426c + 8004262: 231b movs r3, #27 + 8004264: 18fb adds r3, r7, r3 + 8004266: 2200 movs r2, #0 + 8004268: 701a strb r2, [r3, #0] + 800426a: e00d b.n 8004288 + 800426c: 687b ldr r3, [r7, #4] + 800426e: 681b ldr r3, [r3, #0] + 8004270: 4a76 ldr r2, [pc, #472] @ (800444c ) + 8004272: 4293 cmp r3, r2 + 8004274: d104 bne.n 8004280 + 8004276: 231b movs r3, #27 + 8004278: 18fb adds r3, r7, r3 + 800427a: 2200 movs r2, #0 + 800427c: 701a strb r2, [r3, #0] + 800427e: e003 b.n 8004288 + 8004280: 231b movs r3, #27 + 8004282: 18fb adds r3, r7, r3 + 8004284: 2210 movs r2, #16 + 8004286: 701a strb r2, [r3, #0] } /* if ( (lpuart_ker_ck_pres < (3 * huart->Init.BaudRate) ) || (lpuart_ker_ck_pres > (4096 * huart->Init.BaudRate) )) */ } /* if (pclk != 0) */ } /* Check UART Over Sampling to set Baud Rate Register */ else if (huart->Init.OverSampling == UART_OVERSAMPLING_8) - 800421c: 687b ldr r3, [r7, #4] - 800421e: 69da ldr r2, [r3, #28] - 8004220: 2380 movs r3, #128 @ 0x80 - 8004222: 021b lsls r3, r3, #8 - 8004224: 429a cmp r2, r3 - 8004226: d000 beq.n 800422a - 8004228: e065 b.n 80042f6 + 8004288: 687b ldr r3, [r7, #4] + 800428a: 69da ldr r2, [r3, #28] + 800428c: 2380 movs r3, #128 @ 0x80 + 800428e: 021b lsls r3, r3, #8 + 8004290: 429a cmp r2, r3 + 8004292: d000 beq.n 8004296 + 8004294: e065 b.n 8004362 { switch (clocksource) - 800422a: 231b movs r3, #27 - 800422c: 18fb adds r3, r7, r3 - 800422e: 781b ldrb r3, [r3, #0] - 8004230: 2b08 cmp r3, #8 - 8004232: d015 beq.n 8004260 - 8004234: dc18 bgt.n 8004268 - 8004236: 2b04 cmp r3, #4 - 8004238: d00d beq.n 8004256 - 800423a: dc15 bgt.n 8004268 - 800423c: 2b00 cmp r3, #0 - 800423e: d002 beq.n 8004246 - 8004240: 2b02 cmp r3, #2 - 8004242: d005 beq.n 8004250 - 8004244: e010 b.n 8004268 + 8004296: 231b movs r3, #27 + 8004298: 18fb adds r3, r7, r3 + 800429a: 781b ldrb r3, [r3, #0] + 800429c: 2b08 cmp r3, #8 + 800429e: d015 beq.n 80042cc + 80042a0: dc18 bgt.n 80042d4 + 80042a2: 2b04 cmp r3, #4 + 80042a4: d00d beq.n 80042c2 + 80042a6: dc15 bgt.n 80042d4 + 80042a8: 2b00 cmp r3, #0 + 80042aa: d002 beq.n 80042b2 + 80042ac: 2b02 cmp r3, #2 + 80042ae: d005 beq.n 80042bc + 80042b0: e010 b.n 80042d4 { case UART_CLOCKSOURCE_PCLK1: pclk = HAL_RCC_GetPCLK1Freq(); - 8004246: f7ff fd8d bl 8003d64 - 800424a: 0003 movs r3, r0 - 800424c: 617b str r3, [r7, #20] + 80042b2: f7ff fd8d bl 8003dd0 + 80042b6: 0003 movs r3, r0 + 80042b8: 617b str r3, [r7, #20] break; - 800424e: e012 b.n 8004276 + 80042ba: e012 b.n 80042e2 case UART_CLOCKSOURCE_HSI: pclk = (uint32_t) HSI_VALUE; - 8004250: 4b64 ldr r3, [pc, #400] @ (80043e4 ) - 8004252: 617b str r3, [r7, #20] + 80042bc: 4b64 ldr r3, [pc, #400] @ (8004450 ) + 80042be: 617b str r3, [r7, #20] break; - 8004254: e00f b.n 8004276 + 80042c0: e00f b.n 80042e2 case UART_CLOCKSOURCE_SYSCLK: pclk = HAL_RCC_GetSysClockFreq(); - 8004256: f7ff fcf9 bl 8003c4c - 800425a: 0003 movs r3, r0 - 800425c: 617b str r3, [r7, #20] + 80042c2: f7ff fcf9 bl 8003cb8 + 80042c6: 0003 movs r3, r0 + 80042c8: 617b str r3, [r7, #20] break; - 800425e: e00a b.n 8004276 + 80042ca: e00a b.n 80042e2 case UART_CLOCKSOURCE_LSE: pclk = (uint32_t) LSE_VALUE; - 8004260: 2380 movs r3, #128 @ 0x80 - 8004262: 021b lsls r3, r3, #8 - 8004264: 617b str r3, [r7, #20] + 80042cc: 2380 movs r3, #128 @ 0x80 + 80042ce: 021b lsls r3, r3, #8 + 80042d0: 617b str r3, [r7, #20] break; - 8004266: e006 b.n 8004276 + 80042d2: e006 b.n 80042e2 default: pclk = 0U; - 8004268: 2300 movs r3, #0 - 800426a: 617b str r3, [r7, #20] + 80042d4: 2300 movs r3, #0 + 80042d6: 617b str r3, [r7, #20] ret = HAL_ERROR; - 800426c: 231a movs r3, #26 - 800426e: 18fb adds r3, r7, r3 - 8004270: 2201 movs r2, #1 - 8004272: 701a strb r2, [r3, #0] + 80042d8: 231a movs r3, #26 + 80042da: 18fb adds r3, r7, r3 + 80042dc: 2201 movs r2, #1 + 80042de: 701a strb r2, [r3, #0] break; - 8004274: 46c0 nop @ (mov r8, r8) + 80042e0: 46c0 nop @ (mov r8, r8) } /* USARTDIV must be greater than or equal to 0d16 */ if (pclk != 0U) - 8004276: 697b ldr r3, [r7, #20] - 8004278: 2b00 cmp r3, #0 - 800427a: d100 bne.n 800427e - 800427c: e08d b.n 800439a + 80042e2: 697b ldr r3, [r7, #20] + 80042e4: 2b00 cmp r3, #0 + 80042e6: d100 bne.n 80042ea + 80042e8: e08d b.n 8004406 { usartdiv = (uint32_t)(UART_DIV_SAMPLING8(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler)); - 800427e: 687b ldr r3, [r7, #4] - 8004280: 6a5a ldr r2, [r3, #36] @ 0x24 - 8004282: 4b59 ldr r3, [pc, #356] @ (80043e8 ) - 8004284: 0052 lsls r2, r2, #1 - 8004286: 5ad3 ldrh r3, [r2, r3] - 8004288: 0019 movs r1, r3 - 800428a: 6978 ldr r0, [r7, #20] - 800428c: f7fb ff38 bl 8000100 <__udivsi3> - 8004290: 0003 movs r3, r0 - 8004292: 005a lsls r2, r3, #1 - 8004294: 687b ldr r3, [r7, #4] - 8004296: 685b ldr r3, [r3, #4] - 8004298: 085b lsrs r3, r3, #1 - 800429a: 18d2 adds r2, r2, r3 - 800429c: 687b ldr r3, [r7, #4] - 800429e: 685b ldr r3, [r3, #4] - 80042a0: 0019 movs r1, r3 - 80042a2: 0010 movs r0, r2 - 80042a4: f7fb ff2c bl 8000100 <__udivsi3> - 80042a8: 0003 movs r3, r0 - 80042aa: 613b str r3, [r7, #16] + 80042ea: 687b ldr r3, [r7, #4] + 80042ec: 6a5a ldr r2, [r3, #36] @ 0x24 + 80042ee: 4b59 ldr r3, [pc, #356] @ (8004454 ) + 80042f0: 0052 lsls r2, r2, #1 + 80042f2: 5ad3 ldrh r3, [r2, r3] + 80042f4: 0019 movs r1, r3 + 80042f6: 6978 ldr r0, [r7, #20] + 80042f8: f7fb ff02 bl 8000100 <__udivsi3> + 80042fc: 0003 movs r3, r0 + 80042fe: 005a lsls r2, r3, #1 + 8004300: 687b ldr r3, [r7, #4] + 8004302: 685b ldr r3, [r3, #4] + 8004304: 085b lsrs r3, r3, #1 + 8004306: 18d2 adds r2, r2, r3 + 8004308: 687b ldr r3, [r7, #4] + 800430a: 685b ldr r3, [r3, #4] + 800430c: 0019 movs r1, r3 + 800430e: 0010 movs r0, r2 + 8004310: f7fb fef6 bl 8000100 <__udivsi3> + 8004314: 0003 movs r3, r0 + 8004316: 613b str r3, [r7, #16] if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX)) - 80042ac: 693b ldr r3, [r7, #16] - 80042ae: 2b0f cmp r3, #15 - 80042b0: d91c bls.n 80042ec - 80042b2: 693a ldr r2, [r7, #16] - 80042b4: 2380 movs r3, #128 @ 0x80 - 80042b6: 025b lsls r3, r3, #9 - 80042b8: 429a cmp r2, r3 - 80042ba: d217 bcs.n 80042ec + 8004318: 693b ldr r3, [r7, #16] + 800431a: 2b0f cmp r3, #15 + 800431c: d91c bls.n 8004358 + 800431e: 693a ldr r2, [r7, #16] + 8004320: 2380 movs r3, #128 @ 0x80 + 8004322: 025b lsls r3, r3, #9 + 8004324: 429a cmp r2, r3 + 8004326: d217 bcs.n 8004358 { brrtemp = (uint16_t)(usartdiv & 0xFFF0U); - 80042bc: 693b ldr r3, [r7, #16] - 80042be: b29a uxth r2, r3 - 80042c0: 200e movs r0, #14 - 80042c2: 183b adds r3, r7, r0 - 80042c4: 210f movs r1, #15 - 80042c6: 438a bics r2, r1 - 80042c8: 801a strh r2, [r3, #0] + 8004328: 693b ldr r3, [r7, #16] + 800432a: b29a uxth r2, r3 + 800432c: 200e movs r0, #14 + 800432e: 183b adds r3, r7, r0 + 8004330: 210f movs r1, #15 + 8004332: 438a bics r2, r1 + 8004334: 801a strh r2, [r3, #0] brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U); - 80042ca: 693b ldr r3, [r7, #16] - 80042cc: 085b lsrs r3, r3, #1 - 80042ce: b29b uxth r3, r3 - 80042d0: 2207 movs r2, #7 - 80042d2: 4013 ands r3, r2 - 80042d4: b299 uxth r1, r3 - 80042d6: 183b adds r3, r7, r0 - 80042d8: 183a adds r2, r7, r0 - 80042da: 8812 ldrh r2, [r2, #0] - 80042dc: 430a orrs r2, r1 - 80042de: 801a strh r2, [r3, #0] + 8004336: 693b ldr r3, [r7, #16] + 8004338: 085b lsrs r3, r3, #1 + 800433a: b29b uxth r3, r3 + 800433c: 2207 movs r2, #7 + 800433e: 4013 ands r3, r2 + 8004340: b299 uxth r1, r3 + 8004342: 183b adds r3, r7, r0 + 8004344: 183a adds r2, r7, r0 + 8004346: 8812 ldrh r2, [r2, #0] + 8004348: 430a orrs r2, r1 + 800434a: 801a strh r2, [r3, #0] huart->Instance->BRR = brrtemp; - 80042e0: 687b ldr r3, [r7, #4] - 80042e2: 681b ldr r3, [r3, #0] - 80042e4: 183a adds r2, r7, r0 - 80042e6: 8812 ldrh r2, [r2, #0] - 80042e8: 60da str r2, [r3, #12] - 80042ea: e056 b.n 800439a + 800434c: 687b ldr r3, [r7, #4] + 800434e: 681b ldr r3, [r3, #0] + 8004350: 183a adds r2, r7, r0 + 8004352: 8812 ldrh r2, [r2, #0] + 8004354: 60da str r2, [r3, #12] + 8004356: e056 b.n 8004406 } else { ret = HAL_ERROR; - 80042ec: 231a movs r3, #26 - 80042ee: 18fb adds r3, r7, r3 - 80042f0: 2201 movs r2, #1 - 80042f2: 701a strb r2, [r3, #0] - 80042f4: e051 b.n 800439a + 8004358: 231a movs r3, #26 + 800435a: 18fb adds r3, r7, r3 + 800435c: 2201 movs r2, #1 + 800435e: 701a strb r2, [r3, #0] + 8004360: e051 b.n 8004406 } } } else { switch (clocksource) - 80042f6: 231b movs r3, #27 - 80042f8: 18fb adds r3, r7, r3 - 80042fa: 781b ldrb r3, [r3, #0] - 80042fc: 2b08 cmp r3, #8 - 80042fe: d015 beq.n 800432c - 8004300: dc18 bgt.n 8004334 - 8004302: 2b04 cmp r3, #4 - 8004304: d00d beq.n 8004322 - 8004306: dc15 bgt.n 8004334 - 8004308: 2b00 cmp r3, #0 - 800430a: d002 beq.n 8004312 - 800430c: 2b02 cmp r3, #2 - 800430e: d005 beq.n 800431c - 8004310: e010 b.n 8004334 + 8004362: 231b movs r3, #27 + 8004364: 18fb adds r3, r7, r3 + 8004366: 781b ldrb r3, [r3, #0] + 8004368: 2b08 cmp r3, #8 + 800436a: d015 beq.n 8004398 + 800436c: dc18 bgt.n 80043a0 + 800436e: 2b04 cmp r3, #4 + 8004370: d00d beq.n 800438e + 8004372: dc15 bgt.n 80043a0 + 8004374: 2b00 cmp r3, #0 + 8004376: d002 beq.n 800437e + 8004378: 2b02 cmp r3, #2 + 800437a: d005 beq.n 8004388 + 800437c: e010 b.n 80043a0 { case UART_CLOCKSOURCE_PCLK1: pclk = HAL_RCC_GetPCLK1Freq(); - 8004312: f7ff fd27 bl 8003d64 - 8004316: 0003 movs r3, r0 - 8004318: 617b str r3, [r7, #20] + 800437e: f7ff fd27 bl 8003dd0 + 8004382: 0003 movs r3, r0 + 8004384: 617b str r3, [r7, #20] break; - 800431a: e012 b.n 8004342 + 8004386: e012 b.n 80043ae case UART_CLOCKSOURCE_HSI: pclk = (uint32_t) HSI_VALUE; - 800431c: 4b31 ldr r3, [pc, #196] @ (80043e4 ) - 800431e: 617b str r3, [r7, #20] + 8004388: 4b31 ldr r3, [pc, #196] @ (8004450 ) + 800438a: 617b str r3, [r7, #20] break; - 8004320: e00f b.n 8004342 + 800438c: e00f b.n 80043ae case UART_CLOCKSOURCE_SYSCLK: pclk = HAL_RCC_GetSysClockFreq(); - 8004322: f7ff fc93 bl 8003c4c - 8004326: 0003 movs r3, r0 - 8004328: 617b str r3, [r7, #20] + 800438e: f7ff fc93 bl 8003cb8 + 8004392: 0003 movs r3, r0 + 8004394: 617b str r3, [r7, #20] break; - 800432a: e00a b.n 8004342 + 8004396: e00a b.n 80043ae case UART_CLOCKSOURCE_LSE: pclk = (uint32_t) LSE_VALUE; - 800432c: 2380 movs r3, #128 @ 0x80 - 800432e: 021b lsls r3, r3, #8 - 8004330: 617b str r3, [r7, #20] + 8004398: 2380 movs r3, #128 @ 0x80 + 800439a: 021b lsls r3, r3, #8 + 800439c: 617b str r3, [r7, #20] break; - 8004332: e006 b.n 8004342 + 800439e: e006 b.n 80043ae default: pclk = 0U; - 8004334: 2300 movs r3, #0 - 8004336: 617b str r3, [r7, #20] + 80043a0: 2300 movs r3, #0 + 80043a2: 617b str r3, [r7, #20] ret = HAL_ERROR; - 8004338: 231a movs r3, #26 - 800433a: 18fb adds r3, r7, r3 - 800433c: 2201 movs r2, #1 - 800433e: 701a strb r2, [r3, #0] + 80043a4: 231a movs r3, #26 + 80043a6: 18fb adds r3, r7, r3 + 80043a8: 2201 movs r2, #1 + 80043aa: 701a strb r2, [r3, #0] break; - 8004340: 46c0 nop @ (mov r8, r8) + 80043ac: 46c0 nop @ (mov r8, r8) } if (pclk != 0U) - 8004342: 697b ldr r3, [r7, #20] - 8004344: 2b00 cmp r3, #0 - 8004346: d028 beq.n 800439a + 80043ae: 697b ldr r3, [r7, #20] + 80043b0: 2b00 cmp r3, #0 + 80043b2: d028 beq.n 8004406 { /* USARTDIV must be greater than or equal to 0d16 */ usartdiv = (uint32_t)(UART_DIV_SAMPLING16(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler)); - 8004348: 687b ldr r3, [r7, #4] - 800434a: 6a5a ldr r2, [r3, #36] @ 0x24 - 800434c: 4b26 ldr r3, [pc, #152] @ (80043e8 ) - 800434e: 0052 lsls r2, r2, #1 - 8004350: 5ad3 ldrh r3, [r2, r3] - 8004352: 0019 movs r1, r3 - 8004354: 6978 ldr r0, [r7, #20] - 8004356: f7fb fed3 bl 8000100 <__udivsi3> - 800435a: 0003 movs r3, r0 - 800435c: 001a movs r2, r3 - 800435e: 687b ldr r3, [r7, #4] - 8004360: 685b ldr r3, [r3, #4] - 8004362: 085b lsrs r3, r3, #1 - 8004364: 18d2 adds r2, r2, r3 - 8004366: 687b ldr r3, [r7, #4] - 8004368: 685b ldr r3, [r3, #4] - 800436a: 0019 movs r1, r3 - 800436c: 0010 movs r0, r2 - 800436e: f7fb fec7 bl 8000100 <__udivsi3> - 8004372: 0003 movs r3, r0 - 8004374: 613b str r3, [r7, #16] + 80043b4: 687b ldr r3, [r7, #4] + 80043b6: 6a5a ldr r2, [r3, #36] @ 0x24 + 80043b8: 4b26 ldr r3, [pc, #152] @ (8004454 ) + 80043ba: 0052 lsls r2, r2, #1 + 80043bc: 5ad3 ldrh r3, [r2, r3] + 80043be: 0019 movs r1, r3 + 80043c0: 6978 ldr r0, [r7, #20] + 80043c2: f7fb fe9d bl 8000100 <__udivsi3> + 80043c6: 0003 movs r3, r0 + 80043c8: 001a movs r2, r3 + 80043ca: 687b ldr r3, [r7, #4] + 80043cc: 685b ldr r3, [r3, #4] + 80043ce: 085b lsrs r3, r3, #1 + 80043d0: 18d2 adds r2, r2, r3 + 80043d2: 687b ldr r3, [r7, #4] + 80043d4: 685b ldr r3, [r3, #4] + 80043d6: 0019 movs r1, r3 + 80043d8: 0010 movs r0, r2 + 80043da: f7fb fe91 bl 8000100 <__udivsi3> + 80043de: 0003 movs r3, r0 + 80043e0: 613b str r3, [r7, #16] if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX)) - 8004376: 693b ldr r3, [r7, #16] - 8004378: 2b0f cmp r3, #15 - 800437a: d90a bls.n 8004392 - 800437c: 693a ldr r2, [r7, #16] - 800437e: 2380 movs r3, #128 @ 0x80 - 8004380: 025b lsls r3, r3, #9 - 8004382: 429a cmp r2, r3 - 8004384: d205 bcs.n 8004392 + 80043e2: 693b ldr r3, [r7, #16] + 80043e4: 2b0f cmp r3, #15 + 80043e6: d90a bls.n 80043fe + 80043e8: 693a ldr r2, [r7, #16] + 80043ea: 2380 movs r3, #128 @ 0x80 + 80043ec: 025b lsls r3, r3, #9 + 80043ee: 429a cmp r2, r3 + 80043f0: d205 bcs.n 80043fe { huart->Instance->BRR = (uint16_t)usartdiv; - 8004386: 693b ldr r3, [r7, #16] - 8004388: b29a uxth r2, r3 - 800438a: 687b ldr r3, [r7, #4] - 800438c: 681b ldr r3, [r3, #0] - 800438e: 60da str r2, [r3, #12] - 8004390: e003 b.n 800439a + 80043f2: 693b ldr r3, [r7, #16] + 80043f4: b29a uxth r2, r3 + 80043f6: 687b ldr r3, [r7, #4] + 80043f8: 681b ldr r3, [r3, #0] + 80043fa: 60da str r2, [r3, #12] + 80043fc: e003 b.n 8004406 } else { ret = HAL_ERROR; - 8004392: 231a movs r3, #26 - 8004394: 18fb adds r3, r7, r3 - 8004396: 2201 movs r2, #1 - 8004398: 701a strb r2, [r3, #0] + 80043fe: 231a movs r3, #26 + 8004400: 18fb adds r3, r7, r3 + 8004402: 2201 movs r2, #1 + 8004404: 701a strb r2, [r3, #0] } } } /* Initialize the number of data to process during RX/TX ISR execution */ huart->NbTxDataToProcess = 1; - 800439a: 687b ldr r3, [r7, #4] - 800439c: 226a movs r2, #106 @ 0x6a - 800439e: 2101 movs r1, #1 - 80043a0: 5299 strh r1, [r3, r2] + 8004406: 687b ldr r3, [r7, #4] + 8004408: 226a movs r2, #106 @ 0x6a + 800440a: 2101 movs r1, #1 + 800440c: 5299 strh r1, [r3, r2] huart->NbRxDataToProcess = 1; - 80043a2: 687b ldr r3, [r7, #4] - 80043a4: 2268 movs r2, #104 @ 0x68 - 80043a6: 2101 movs r1, #1 - 80043a8: 5299 strh r1, [r3, r2] + 800440e: 687b ldr r3, [r7, #4] + 8004410: 2268 movs r2, #104 @ 0x68 + 8004412: 2101 movs r1, #1 + 8004414: 5299 strh r1, [r3, r2] /* Clear ISR function pointers */ huart->RxISR = NULL; - 80043aa: 687b ldr r3, [r7, #4] - 80043ac: 2200 movs r2, #0 - 80043ae: 675a str r2, [r3, #116] @ 0x74 + 8004416: 687b ldr r3, [r7, #4] + 8004418: 2200 movs r2, #0 + 800441a: 675a str r2, [r3, #116] @ 0x74 huart->TxISR = NULL; - 80043b0: 687b ldr r3, [r7, #4] - 80043b2: 2200 movs r2, #0 - 80043b4: 679a str r2, [r3, #120] @ 0x78 + 800441c: 687b ldr r3, [r7, #4] + 800441e: 2200 movs r2, #0 + 8004420: 679a str r2, [r3, #120] @ 0x78 return ret; - 80043b6: 231a movs r3, #26 - 80043b8: 18fb adds r3, r7, r3 - 80043ba: 781b ldrb r3, [r3, #0] + 8004422: 231a movs r3, #26 + 8004424: 18fb adds r3, r7, r3 + 8004426: 781b ldrb r3, [r3, #0] } - 80043bc: 0018 movs r0, r3 - 80043be: 46bd mov sp, r7 - 80043c0: b008 add sp, #32 - 80043c2: bd80 pop {r7, pc} - 80043c4: cfff69f3 .word 0xcfff69f3 - 80043c8: ffffcfff .word 0xffffcfff - 80043cc: 11fff4ff .word 0x11fff4ff - 80043d0: 40013800 .word 0x40013800 - 80043d4: 40021000 .word 0x40021000 - 80043d8: 40004400 .word 0x40004400 - 80043dc: 40004800 .word 0x40004800 - 80043e0: 40004c00 .word 0x40004c00 - 80043e4: 00f42400 .word 0x00f42400 - 80043e8: 08004b7c .word 0x08004b7c + 8004428: 0018 movs r0, r3 + 800442a: 46bd mov sp, r7 + 800442c: b008 add sp, #32 + 800442e: bd80 pop {r7, pc} + 8004430: cfff69f3 .word 0xcfff69f3 + 8004434: ffffcfff .word 0xffffcfff + 8004438: 11fff4ff .word 0x11fff4ff + 800443c: 40013800 .word 0x40013800 + 8004440: 40021000 .word 0x40021000 + 8004444: 40004400 .word 0x40004400 + 8004448: 40004800 .word 0x40004800 + 800444c: 40004c00 .word 0x40004c00 + 8004450: 00f42400 .word 0x00f42400 + 8004454: 08004be8 .word 0x08004be8 -080043ec : +08004458 : * @brief Configure the UART peripheral advanced features. * @param huart UART handle. * @retval None */ void UART_AdvFeatureConfig(UART_HandleTypeDef *huart) { - 80043ec: b580 push {r7, lr} - 80043ee: b082 sub sp, #8 - 80043f0: af00 add r7, sp, #0 - 80043f2: 6078 str r0, [r7, #4] + 8004458: b580 push {r7, lr} + 800445a: b082 sub sp, #8 + 800445c: af00 add r7, sp, #0 + 800445e: 6078 str r0, [r7, #4] /* Check whether the set of advanced features to configure is properly set */ assert_param(IS_UART_ADVFEATURE_INIT(huart->AdvancedInit.AdvFeatureInit)); /* if required, configure RX/TX pins swap */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_SWAP_INIT)) - 80043f4: 687b ldr r3, [r7, #4] - 80043f6: 6a9b ldr r3, [r3, #40] @ 0x28 - 80043f8: 2208 movs r2, #8 - 80043fa: 4013 ands r3, r2 - 80043fc: d00b beq.n 8004416 + 8004460: 687b ldr r3, [r7, #4] + 8004462: 6a9b ldr r3, [r3, #40] @ 0x28 + 8004464: 2208 movs r2, #8 + 8004466: 4013 ands r3, r2 + 8004468: d00b beq.n 8004482 { assert_param(IS_UART_ADVFEATURE_SWAP(huart->AdvancedInit.Swap)); MODIFY_REG(huart->Instance->CR2, USART_CR2_SWAP, huart->AdvancedInit.Swap); - 80043fe: 687b ldr r3, [r7, #4] - 8004400: 681b ldr r3, [r3, #0] - 8004402: 685b ldr r3, [r3, #4] - 8004404: 4a4a ldr r2, [pc, #296] @ (8004530 ) - 8004406: 4013 ands r3, r2 - 8004408: 0019 movs r1, r3 - 800440a: 687b ldr r3, [r7, #4] - 800440c: 6b9a ldr r2, [r3, #56] @ 0x38 - 800440e: 687b ldr r3, [r7, #4] - 8004410: 681b ldr r3, [r3, #0] - 8004412: 430a orrs r2, r1 - 8004414: 605a str r2, [r3, #4] + 800446a: 687b ldr r3, [r7, #4] + 800446c: 681b ldr r3, [r3, #0] + 800446e: 685b ldr r3, [r3, #4] + 8004470: 4a4a ldr r2, [pc, #296] @ (800459c ) + 8004472: 4013 ands r3, r2 + 8004474: 0019 movs r1, r3 + 8004476: 687b ldr r3, [r7, #4] + 8004478: 6b9a ldr r2, [r3, #56] @ 0x38 + 800447a: 687b ldr r3, [r7, #4] + 800447c: 681b ldr r3, [r3, #0] + 800447e: 430a orrs r2, r1 + 8004480: 605a str r2, [r3, #4] } /* if required, configure TX pin active level inversion */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_TXINVERT_INIT)) - 8004416: 687b ldr r3, [r7, #4] - 8004418: 6a9b ldr r3, [r3, #40] @ 0x28 - 800441a: 2201 movs r2, #1 - 800441c: 4013 ands r3, r2 - 800441e: d00b beq.n 8004438 + 8004482: 687b ldr r3, [r7, #4] + 8004484: 6a9b ldr r3, [r3, #40] @ 0x28 + 8004486: 2201 movs r2, #1 + 8004488: 4013 ands r3, r2 + 800448a: d00b beq.n 80044a4 { assert_param(IS_UART_ADVFEATURE_TXINV(huart->AdvancedInit.TxPinLevelInvert)); MODIFY_REG(huart->Instance->CR2, USART_CR2_TXINV, huart->AdvancedInit.TxPinLevelInvert); - 8004420: 687b ldr r3, [r7, #4] - 8004422: 681b ldr r3, [r3, #0] - 8004424: 685b ldr r3, [r3, #4] - 8004426: 4a43 ldr r2, [pc, #268] @ (8004534 ) - 8004428: 4013 ands r3, r2 - 800442a: 0019 movs r1, r3 - 800442c: 687b ldr r3, [r7, #4] - 800442e: 6ada ldr r2, [r3, #44] @ 0x2c - 8004430: 687b ldr r3, [r7, #4] - 8004432: 681b ldr r3, [r3, #0] - 8004434: 430a orrs r2, r1 - 8004436: 605a str r2, [r3, #4] + 800448c: 687b ldr r3, [r7, #4] + 800448e: 681b ldr r3, [r3, #0] + 8004490: 685b ldr r3, [r3, #4] + 8004492: 4a43 ldr r2, [pc, #268] @ (80045a0 ) + 8004494: 4013 ands r3, r2 + 8004496: 0019 movs r1, r3 + 8004498: 687b ldr r3, [r7, #4] + 800449a: 6ada ldr r2, [r3, #44] @ 0x2c + 800449c: 687b ldr r3, [r7, #4] + 800449e: 681b ldr r3, [r3, #0] + 80044a0: 430a orrs r2, r1 + 80044a2: 605a str r2, [r3, #4] } /* if required, configure RX pin active level inversion */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXINVERT_INIT)) - 8004438: 687b ldr r3, [r7, #4] - 800443a: 6a9b ldr r3, [r3, #40] @ 0x28 - 800443c: 2202 movs r2, #2 - 800443e: 4013 ands r3, r2 - 8004440: d00b beq.n 800445a + 80044a4: 687b ldr r3, [r7, #4] + 80044a6: 6a9b ldr r3, [r3, #40] @ 0x28 + 80044a8: 2202 movs r2, #2 + 80044aa: 4013 ands r3, r2 + 80044ac: d00b beq.n 80044c6 { assert_param(IS_UART_ADVFEATURE_RXINV(huart->AdvancedInit.RxPinLevelInvert)); MODIFY_REG(huart->Instance->CR2, USART_CR2_RXINV, huart->AdvancedInit.RxPinLevelInvert); - 8004442: 687b ldr r3, [r7, #4] - 8004444: 681b ldr r3, [r3, #0] - 8004446: 685b ldr r3, [r3, #4] - 8004448: 4a3b ldr r2, [pc, #236] @ (8004538 ) - 800444a: 4013 ands r3, r2 - 800444c: 0019 movs r1, r3 - 800444e: 687b ldr r3, [r7, #4] - 8004450: 6b1a ldr r2, [r3, #48] @ 0x30 - 8004452: 687b ldr r3, [r7, #4] - 8004454: 681b ldr r3, [r3, #0] - 8004456: 430a orrs r2, r1 - 8004458: 605a str r2, [r3, #4] + 80044ae: 687b ldr r3, [r7, #4] + 80044b0: 681b ldr r3, [r3, #0] + 80044b2: 685b ldr r3, [r3, #4] + 80044b4: 4a3b ldr r2, [pc, #236] @ (80045a4 ) + 80044b6: 4013 ands r3, r2 + 80044b8: 0019 movs r1, r3 + 80044ba: 687b ldr r3, [r7, #4] + 80044bc: 6b1a ldr r2, [r3, #48] @ 0x30 + 80044be: 687b ldr r3, [r7, #4] + 80044c0: 681b ldr r3, [r3, #0] + 80044c2: 430a orrs r2, r1 + 80044c4: 605a str r2, [r3, #4] } /* if required, configure data inversion */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DATAINVERT_INIT)) - 800445a: 687b ldr r3, [r7, #4] - 800445c: 6a9b ldr r3, [r3, #40] @ 0x28 - 800445e: 2204 movs r2, #4 - 8004460: 4013 ands r3, r2 - 8004462: d00b beq.n 800447c + 80044c6: 687b ldr r3, [r7, #4] + 80044c8: 6a9b ldr r3, [r3, #40] @ 0x28 + 80044ca: 2204 movs r2, #4 + 80044cc: 4013 ands r3, r2 + 80044ce: d00b beq.n 80044e8 { assert_param(IS_UART_ADVFEATURE_DATAINV(huart->AdvancedInit.DataInvert)); MODIFY_REG(huart->Instance->CR2, USART_CR2_DATAINV, huart->AdvancedInit.DataInvert); - 8004464: 687b ldr r3, [r7, #4] - 8004466: 681b ldr r3, [r3, #0] - 8004468: 685b ldr r3, [r3, #4] - 800446a: 4a34 ldr r2, [pc, #208] @ (800453c ) - 800446c: 4013 ands r3, r2 - 800446e: 0019 movs r1, r3 - 8004470: 687b ldr r3, [r7, #4] - 8004472: 6b5a ldr r2, [r3, #52] @ 0x34 - 8004474: 687b ldr r3, [r7, #4] - 8004476: 681b ldr r3, [r3, #0] - 8004478: 430a orrs r2, r1 - 800447a: 605a str r2, [r3, #4] + 80044d0: 687b ldr r3, [r7, #4] + 80044d2: 681b ldr r3, [r3, #0] + 80044d4: 685b ldr r3, [r3, #4] + 80044d6: 4a34 ldr r2, [pc, #208] @ (80045a8 ) + 80044d8: 4013 ands r3, r2 + 80044da: 0019 movs r1, r3 + 80044dc: 687b ldr r3, [r7, #4] + 80044de: 6b5a ldr r2, [r3, #52] @ 0x34 + 80044e0: 687b ldr r3, [r7, #4] + 80044e2: 681b ldr r3, [r3, #0] + 80044e4: 430a orrs r2, r1 + 80044e6: 605a str r2, [r3, #4] } /* if required, configure RX overrun detection disabling */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXOVERRUNDISABLE_INIT)) - 800447c: 687b ldr r3, [r7, #4] - 800447e: 6a9b ldr r3, [r3, #40] @ 0x28 - 8004480: 2210 movs r2, #16 - 8004482: 4013 ands r3, r2 - 8004484: d00b beq.n 800449e + 80044e8: 687b ldr r3, [r7, #4] + 80044ea: 6a9b ldr r3, [r3, #40] @ 0x28 + 80044ec: 2210 movs r2, #16 + 80044ee: 4013 ands r3, r2 + 80044f0: d00b beq.n 800450a { assert_param(IS_UART_OVERRUN(huart->AdvancedInit.OverrunDisable)); MODIFY_REG(huart->Instance->CR3, USART_CR3_OVRDIS, huart->AdvancedInit.OverrunDisable); - 8004486: 687b ldr r3, [r7, #4] - 8004488: 681b ldr r3, [r3, #0] - 800448a: 689b ldr r3, [r3, #8] - 800448c: 4a2c ldr r2, [pc, #176] @ (8004540 ) - 800448e: 4013 ands r3, r2 - 8004490: 0019 movs r1, r3 - 8004492: 687b ldr r3, [r7, #4] - 8004494: 6bda ldr r2, [r3, #60] @ 0x3c - 8004496: 687b ldr r3, [r7, #4] - 8004498: 681b ldr r3, [r3, #0] - 800449a: 430a orrs r2, r1 - 800449c: 609a str r2, [r3, #8] + 80044f2: 687b ldr r3, [r7, #4] + 80044f4: 681b ldr r3, [r3, #0] + 80044f6: 689b ldr r3, [r3, #8] + 80044f8: 4a2c ldr r2, [pc, #176] @ (80045ac ) + 80044fa: 4013 ands r3, r2 + 80044fc: 0019 movs r1, r3 + 80044fe: 687b ldr r3, [r7, #4] + 8004500: 6bda ldr r2, [r3, #60] @ 0x3c + 8004502: 687b ldr r3, [r7, #4] + 8004504: 681b ldr r3, [r3, #0] + 8004506: 430a orrs r2, r1 + 8004508: 609a str r2, [r3, #8] } /* if required, configure DMA disabling on reception error */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DMADISABLEONERROR_INIT)) - 800449e: 687b ldr r3, [r7, #4] - 80044a0: 6a9b ldr r3, [r3, #40] @ 0x28 - 80044a2: 2220 movs r2, #32 - 80044a4: 4013 ands r3, r2 - 80044a6: d00b beq.n 80044c0 + 800450a: 687b ldr r3, [r7, #4] + 800450c: 6a9b ldr r3, [r3, #40] @ 0x28 + 800450e: 2220 movs r2, #32 + 8004510: 4013 ands r3, r2 + 8004512: d00b beq.n 800452c { assert_param(IS_UART_ADVFEATURE_DMAONRXERROR(huart->AdvancedInit.DMADisableonRxError)); MODIFY_REG(huart->Instance->CR3, USART_CR3_DDRE, huart->AdvancedInit.DMADisableonRxError); - 80044a8: 687b ldr r3, [r7, #4] - 80044aa: 681b ldr r3, [r3, #0] - 80044ac: 689b ldr r3, [r3, #8] - 80044ae: 4a25 ldr r2, [pc, #148] @ (8004544 ) - 80044b0: 4013 ands r3, r2 - 80044b2: 0019 movs r1, r3 - 80044b4: 687b ldr r3, [r7, #4] - 80044b6: 6c1a ldr r2, [r3, #64] @ 0x40 - 80044b8: 687b ldr r3, [r7, #4] - 80044ba: 681b ldr r3, [r3, #0] - 80044bc: 430a orrs r2, r1 - 80044be: 609a str r2, [r3, #8] + 8004514: 687b ldr r3, [r7, #4] + 8004516: 681b ldr r3, [r3, #0] + 8004518: 689b ldr r3, [r3, #8] + 800451a: 4a25 ldr r2, [pc, #148] @ (80045b0 ) + 800451c: 4013 ands r3, r2 + 800451e: 0019 movs r1, r3 + 8004520: 687b ldr r3, [r7, #4] + 8004522: 6c1a ldr r2, [r3, #64] @ 0x40 + 8004524: 687b ldr r3, [r7, #4] + 8004526: 681b ldr r3, [r3, #0] + 8004528: 430a orrs r2, r1 + 800452a: 609a str r2, [r3, #8] } /* if required, configure auto Baud rate detection scheme */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_AUTOBAUDRATE_INIT)) - 80044c0: 687b ldr r3, [r7, #4] - 80044c2: 6a9b ldr r3, [r3, #40] @ 0x28 - 80044c4: 2240 movs r2, #64 @ 0x40 - 80044c6: 4013 ands r3, r2 - 80044c8: d01d beq.n 8004506 + 800452c: 687b ldr r3, [r7, #4] + 800452e: 6a9b ldr r3, [r3, #40] @ 0x28 + 8004530: 2240 movs r2, #64 @ 0x40 + 8004532: 4013 ands r3, r2 + 8004534: d01d beq.n 8004572 { assert_param(IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(huart->Instance)); assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATE(huart->AdvancedInit.AutoBaudRateEnable)); MODIFY_REG(huart->Instance->CR2, USART_CR2_ABREN, huart->AdvancedInit.AutoBaudRateEnable); - 80044ca: 687b ldr r3, [r7, #4] - 80044cc: 681b ldr r3, [r3, #0] - 80044ce: 685b ldr r3, [r3, #4] - 80044d0: 4a1d ldr r2, [pc, #116] @ (8004548 ) - 80044d2: 4013 ands r3, r2 - 80044d4: 0019 movs r1, r3 - 80044d6: 687b ldr r3, [r7, #4] - 80044d8: 6c5a ldr r2, [r3, #68] @ 0x44 - 80044da: 687b ldr r3, [r7, #4] - 80044dc: 681b ldr r3, [r3, #0] - 80044de: 430a orrs r2, r1 - 80044e0: 605a str r2, [r3, #4] + 8004536: 687b ldr r3, [r7, #4] + 8004538: 681b ldr r3, [r3, #0] + 800453a: 685b ldr r3, [r3, #4] + 800453c: 4a1d ldr r2, [pc, #116] @ (80045b4 ) + 800453e: 4013 ands r3, r2 + 8004540: 0019 movs r1, r3 + 8004542: 687b ldr r3, [r7, #4] + 8004544: 6c5a ldr r2, [r3, #68] @ 0x44 + 8004546: 687b ldr r3, [r7, #4] + 8004548: 681b ldr r3, [r3, #0] + 800454a: 430a orrs r2, r1 + 800454c: 605a str r2, [r3, #4] /* set auto Baudrate detection parameters if detection is enabled */ if (huart->AdvancedInit.AutoBaudRateEnable == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE) - 80044e2: 687b ldr r3, [r7, #4] - 80044e4: 6c5a ldr r2, [r3, #68] @ 0x44 - 80044e6: 2380 movs r3, #128 @ 0x80 - 80044e8: 035b lsls r3, r3, #13 - 80044ea: 429a cmp r2, r3 - 80044ec: d10b bne.n 8004506 + 800454e: 687b ldr r3, [r7, #4] + 8004550: 6c5a ldr r2, [r3, #68] @ 0x44 + 8004552: 2380 movs r3, #128 @ 0x80 + 8004554: 035b lsls r3, r3, #13 + 8004556: 429a cmp r2, r3 + 8004558: d10b bne.n 8004572 { assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(huart->AdvancedInit.AutoBaudRateMode)); MODIFY_REG(huart->Instance->CR2, USART_CR2_ABRMODE, huart->AdvancedInit.AutoBaudRateMode); - 80044ee: 687b ldr r3, [r7, #4] - 80044f0: 681b ldr r3, [r3, #0] - 80044f2: 685b ldr r3, [r3, #4] - 80044f4: 4a15 ldr r2, [pc, #84] @ (800454c ) - 80044f6: 4013 ands r3, r2 - 80044f8: 0019 movs r1, r3 - 80044fa: 687b ldr r3, [r7, #4] - 80044fc: 6c9a ldr r2, [r3, #72] @ 0x48 - 80044fe: 687b ldr r3, [r7, #4] - 8004500: 681b ldr r3, [r3, #0] - 8004502: 430a orrs r2, r1 - 8004504: 605a str r2, [r3, #4] + 800455a: 687b ldr r3, [r7, #4] + 800455c: 681b ldr r3, [r3, #0] + 800455e: 685b ldr r3, [r3, #4] + 8004560: 4a15 ldr r2, [pc, #84] @ (80045b8 ) + 8004562: 4013 ands r3, r2 + 8004564: 0019 movs r1, r3 + 8004566: 687b ldr r3, [r7, #4] + 8004568: 6c9a ldr r2, [r3, #72] @ 0x48 + 800456a: 687b ldr r3, [r7, #4] + 800456c: 681b ldr r3, [r3, #0] + 800456e: 430a orrs r2, r1 + 8004570: 605a str r2, [r3, #4] } } /* if required, configure MSB first on communication line */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_MSBFIRST_INIT)) - 8004506: 687b ldr r3, [r7, #4] - 8004508: 6a9b ldr r3, [r3, #40] @ 0x28 - 800450a: 2280 movs r2, #128 @ 0x80 - 800450c: 4013 ands r3, r2 - 800450e: d00b beq.n 8004528 + 8004572: 687b ldr r3, [r7, #4] + 8004574: 6a9b ldr r3, [r3, #40] @ 0x28 + 8004576: 2280 movs r2, #128 @ 0x80 + 8004578: 4013 ands r3, r2 + 800457a: d00b beq.n 8004594 { assert_param(IS_UART_ADVFEATURE_MSBFIRST(huart->AdvancedInit.MSBFirst)); MODIFY_REG(huart->Instance->CR2, USART_CR2_MSBFIRST, huart->AdvancedInit.MSBFirst); - 8004510: 687b ldr r3, [r7, #4] - 8004512: 681b ldr r3, [r3, #0] - 8004514: 685b ldr r3, [r3, #4] - 8004516: 4a0e ldr r2, [pc, #56] @ (8004550 ) - 8004518: 4013 ands r3, r2 - 800451a: 0019 movs r1, r3 - 800451c: 687b ldr r3, [r7, #4] - 800451e: 6cda ldr r2, [r3, #76] @ 0x4c - 8004520: 687b ldr r3, [r7, #4] - 8004522: 681b ldr r3, [r3, #0] - 8004524: 430a orrs r2, r1 - 8004526: 605a str r2, [r3, #4] + 800457c: 687b ldr r3, [r7, #4] + 800457e: 681b ldr r3, [r3, #0] + 8004580: 685b ldr r3, [r3, #4] + 8004582: 4a0e ldr r2, [pc, #56] @ (80045bc ) + 8004584: 4013 ands r3, r2 + 8004586: 0019 movs r1, r3 + 8004588: 687b ldr r3, [r7, #4] + 800458a: 6cda ldr r2, [r3, #76] @ 0x4c + 800458c: 687b ldr r3, [r7, #4] + 800458e: 681b ldr r3, [r3, #0] + 8004590: 430a orrs r2, r1 + 8004592: 605a str r2, [r3, #4] } } - 8004528: 46c0 nop @ (mov r8, r8) - 800452a: 46bd mov sp, r7 - 800452c: b002 add sp, #8 - 800452e: bd80 pop {r7, pc} - 8004530: ffff7fff .word 0xffff7fff - 8004534: fffdffff .word 0xfffdffff - 8004538: fffeffff .word 0xfffeffff - 800453c: fffbffff .word 0xfffbffff - 8004540: ffffefff .word 0xffffefff - 8004544: ffffdfff .word 0xffffdfff - 8004548: ffefffff .word 0xffefffff - 800454c: ff9fffff .word 0xff9fffff - 8004550: fff7ffff .word 0xfff7ffff + 8004594: 46c0 nop @ (mov r8, r8) + 8004596: 46bd mov sp, r7 + 8004598: b002 add sp, #8 + 800459a: bd80 pop {r7, pc} + 800459c: ffff7fff .word 0xffff7fff + 80045a0: fffdffff .word 0xfffdffff + 80045a4: fffeffff .word 0xfffeffff + 80045a8: fffbffff .word 0xfffbffff + 80045ac: ffffefff .word 0xffffefff + 80045b0: ffffdfff .word 0xffffdfff + 80045b4: ffefffff .word 0xffefffff + 80045b8: ff9fffff .word 0xff9fffff + 80045bc: fff7ffff .word 0xfff7ffff -08004554 : +080045c0 : * @brief Check the UART Idle State. * @param huart UART handle. * @retval HAL status */ HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart) { - 8004554: b580 push {r7, lr} - 8004556: b092 sub sp, #72 @ 0x48 - 8004558: af02 add r7, sp, #8 - 800455a: 6078 str r0, [r7, #4] + 80045c0: b580 push {r7, lr} + 80045c2: b092 sub sp, #72 @ 0x48 + 80045c4: af02 add r7, sp, #8 + 80045c6: 6078 str r0, [r7, #4] uint32_t tickstart; /* Initialize the UART ErrorCode */ huart->ErrorCode = HAL_UART_ERROR_NONE; - 800455c: 687b ldr r3, [r7, #4] - 800455e: 2290 movs r2, #144 @ 0x90 - 8004560: 2100 movs r1, #0 - 8004562: 5099 str r1, [r3, r2] + 80045c8: 687b ldr r3, [r7, #4] + 80045ca: 2290 movs r2, #144 @ 0x90 + 80045cc: 2100 movs r1, #0 + 80045ce: 5099 str r1, [r3, r2] /* Init tickstart for timeout management */ tickstart = HAL_GetTick(); - 8004564: f7fc fdda bl 800111c - 8004568: 0003 movs r3, r0 - 800456a: 63fb str r3, [r7, #60] @ 0x3c + 80045d0: f7fc fdda bl 8001188 + 80045d4: 0003 movs r3, r0 + 80045d6: 63fb str r3, [r7, #60] @ 0x3c /* Check if the Transmitter is enabled */ if ((huart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) - 800456c: 687b ldr r3, [r7, #4] - 800456e: 681b ldr r3, [r3, #0] - 8004570: 681b ldr r3, [r3, #0] - 8004572: 2208 movs r2, #8 - 8004574: 4013 ands r3, r2 - 8004576: 2b08 cmp r3, #8 - 8004578: d12d bne.n 80045d6 + 80045d8: 687b ldr r3, [r7, #4] + 80045da: 681b ldr r3, [r3, #0] + 80045dc: 681b ldr r3, [r3, #0] + 80045de: 2208 movs r2, #8 + 80045e0: 4013 ands r3, r2 + 80045e2: 2b08 cmp r3, #8 + 80045e4: d12d bne.n 8004642 { /* Wait until TEACK flag is set */ if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_TEACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK) - 800457a: 6bfb ldr r3, [r7, #60] @ 0x3c - 800457c: 2280 movs r2, #128 @ 0x80 - 800457e: 0391 lsls r1, r2, #14 - 8004580: 6878 ldr r0, [r7, #4] - 8004582: 4a47 ldr r2, [pc, #284] @ (80046a0 ) - 8004584: 9200 str r2, [sp, #0] - 8004586: 2200 movs r2, #0 - 8004588: f000 f88e bl 80046a8 - 800458c: 1e03 subs r3, r0, #0 - 800458e: d022 beq.n 80045d6 + 80045e6: 6bfb ldr r3, [r7, #60] @ 0x3c + 80045e8: 2280 movs r2, #128 @ 0x80 + 80045ea: 0391 lsls r1, r2, #14 + 80045ec: 6878 ldr r0, [r7, #4] + 80045ee: 4a47 ldr r2, [pc, #284] @ (800470c ) + 80045f0: 9200 str r2, [sp, #0] + 80045f2: 2200 movs r2, #0 + 80045f4: f000 f88e bl 8004714 + 80045f8: 1e03 subs r3, r0, #0 + 80045fa: d022 beq.n 8004642 */ __STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) { uint32_t result; __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 8004590: f3ef 8310 mrs r3, PRIMASK - 8004594: 627b str r3, [r7, #36] @ 0x24 + 80045fc: f3ef 8310 mrs r3, PRIMASK + 8004600: 627b str r3, [r7, #36] @ 0x24 return(result); - 8004596: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004602: 6a7b ldr r3, [r7, #36] @ 0x24 { /* Disable TXE interrupt for the interrupt process */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE_TXFNFIE)); - 8004598: 63bb str r3, [r7, #56] @ 0x38 - 800459a: 2301 movs r3, #1 - 800459c: 62bb str r3, [r7, #40] @ 0x28 + 8004604: 63bb str r3, [r7, #56] @ 0x38 + 8004606: 2301 movs r3, #1 + 8004608: 62bb str r3, [r7, #40] @ 0x28 \details Assigns the given value to the Priority Mask Register. \param [in] priMask Priority Mask */ __STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) { __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800459e: 6abb ldr r3, [r7, #40] @ 0x28 - 80045a0: f383 8810 msr PRIMASK, r3 + 800460a: 6abb ldr r3, [r7, #40] @ 0x28 + 800460c: f383 8810 msr PRIMASK, r3 } - 80045a4: 46c0 nop @ (mov r8, r8) - 80045a6: 687b ldr r3, [r7, #4] - 80045a8: 681b ldr r3, [r3, #0] - 80045aa: 681a ldr r2, [r3, #0] - 80045ac: 687b ldr r3, [r7, #4] - 80045ae: 681b ldr r3, [r3, #0] - 80045b0: 2180 movs r1, #128 @ 0x80 - 80045b2: 438a bics r2, r1 - 80045b4: 601a str r2, [r3, #0] - 80045b6: 6bbb ldr r3, [r7, #56] @ 0x38 - 80045b8: 62fb str r3, [r7, #44] @ 0x2c + 8004610: 46c0 nop @ (mov r8, r8) + 8004612: 687b ldr r3, [r7, #4] + 8004614: 681b ldr r3, [r3, #0] + 8004616: 681a ldr r2, [r3, #0] + 8004618: 687b ldr r3, [r7, #4] + 800461a: 681b ldr r3, [r3, #0] + 800461c: 2180 movs r1, #128 @ 0x80 + 800461e: 438a bics r2, r1 + 8004620: 601a str r2, [r3, #0] + 8004622: 6bbb ldr r3, [r7, #56] @ 0x38 + 8004624: 62fb str r3, [r7, #44] @ 0x2c __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 80045ba: 6afb ldr r3, [r7, #44] @ 0x2c - 80045bc: f383 8810 msr PRIMASK, r3 + 8004626: 6afb ldr r3, [r7, #44] @ 0x2c + 8004628: f383 8810 msr PRIMASK, r3 } - 80045c0: 46c0 nop @ (mov r8, r8) + 800462c: 46c0 nop @ (mov r8, r8) huart->gState = HAL_UART_STATE_READY; - 80045c2: 687b ldr r3, [r7, #4] - 80045c4: 2288 movs r2, #136 @ 0x88 - 80045c6: 2120 movs r1, #32 - 80045c8: 5099 str r1, [r3, r2] + 800462e: 687b ldr r3, [r7, #4] + 8004630: 2288 movs r2, #136 @ 0x88 + 8004632: 2120 movs r1, #32 + 8004634: 5099 str r1, [r3, r2] __HAL_UNLOCK(huart); - 80045ca: 687b ldr r3, [r7, #4] - 80045cc: 2284 movs r2, #132 @ 0x84 - 80045ce: 2100 movs r1, #0 - 80045d0: 5499 strb r1, [r3, r2] + 8004636: 687b ldr r3, [r7, #4] + 8004638: 2284 movs r2, #132 @ 0x84 + 800463a: 2100 movs r1, #0 + 800463c: 5499 strb r1, [r3, r2] /* Timeout occurred */ return HAL_TIMEOUT; - 80045d2: 2303 movs r3, #3 - 80045d4: e060 b.n 8004698 + 800463e: 2303 movs r3, #3 + 8004640: e060 b.n 8004704 } } /* Check if the Receiver is enabled */ if ((huart->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) - 80045d6: 687b ldr r3, [r7, #4] - 80045d8: 681b ldr r3, [r3, #0] - 80045da: 681b ldr r3, [r3, #0] - 80045dc: 2204 movs r2, #4 - 80045de: 4013 ands r3, r2 - 80045e0: 2b04 cmp r3, #4 - 80045e2: d146 bne.n 8004672 + 8004642: 687b ldr r3, [r7, #4] + 8004644: 681b ldr r3, [r3, #0] + 8004646: 681b ldr r3, [r3, #0] + 8004648: 2204 movs r2, #4 + 800464a: 4013 ands r3, r2 + 800464c: 2b04 cmp r3, #4 + 800464e: d146 bne.n 80046de { /* Wait until REACK flag is set */ if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_REACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK) - 80045e4: 6bfb ldr r3, [r7, #60] @ 0x3c - 80045e6: 2280 movs r2, #128 @ 0x80 - 80045e8: 03d1 lsls r1, r2, #15 - 80045ea: 6878 ldr r0, [r7, #4] - 80045ec: 4a2c ldr r2, [pc, #176] @ (80046a0 ) - 80045ee: 9200 str r2, [sp, #0] - 80045f0: 2200 movs r2, #0 - 80045f2: f000 f859 bl 80046a8 - 80045f6: 1e03 subs r3, r0, #0 - 80045f8: d03b beq.n 8004672 + 8004650: 6bfb ldr r3, [r7, #60] @ 0x3c + 8004652: 2280 movs r2, #128 @ 0x80 + 8004654: 03d1 lsls r1, r2, #15 + 8004656: 6878 ldr r0, [r7, #4] + 8004658: 4a2c ldr r2, [pc, #176] @ (800470c ) + 800465a: 9200 str r2, [sp, #0] + 800465c: 2200 movs r2, #0 + 800465e: f000 f859 bl 8004714 + 8004662: 1e03 subs r3, r0, #0 + 8004664: d03b beq.n 80046de __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 80045fa: f3ef 8310 mrs r3, PRIMASK - 80045fe: 60fb str r3, [r7, #12] + 8004666: f3ef 8310 mrs r3, PRIMASK + 800466a: 60fb str r3, [r7, #12] return(result); - 8004600: 68fb ldr r3, [r7, #12] + 800466c: 68fb ldr r3, [r7, #12] { /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for the interrupt process */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); - 8004602: 637b str r3, [r7, #52] @ 0x34 - 8004604: 2301 movs r3, #1 - 8004606: 613b str r3, [r7, #16] + 800466e: 637b str r3, [r7, #52] @ 0x34 + 8004670: 2301 movs r3, #1 + 8004672: 613b str r3, [r7, #16] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 8004608: 693b ldr r3, [r7, #16] - 800460a: f383 8810 msr PRIMASK, r3 + 8004674: 693b ldr r3, [r7, #16] + 8004676: f383 8810 msr PRIMASK, r3 } - 800460e: 46c0 nop @ (mov r8, r8) - 8004610: 687b ldr r3, [r7, #4] - 8004612: 681b ldr r3, [r3, #0] - 8004614: 681a ldr r2, [r3, #0] - 8004616: 687b ldr r3, [r7, #4] - 8004618: 681b ldr r3, [r3, #0] - 800461a: 4922 ldr r1, [pc, #136] @ (80046a4 ) - 800461c: 400a ands r2, r1 - 800461e: 601a str r2, [r3, #0] - 8004620: 6b7b ldr r3, [r7, #52] @ 0x34 - 8004622: 617b str r3, [r7, #20] + 800467a: 46c0 nop @ (mov r8, r8) + 800467c: 687b ldr r3, [r7, #4] + 800467e: 681b ldr r3, [r3, #0] + 8004680: 681a ldr r2, [r3, #0] + 8004682: 687b ldr r3, [r7, #4] + 8004684: 681b ldr r3, [r3, #0] + 8004686: 4922 ldr r1, [pc, #136] @ (8004710 ) + 8004688: 400a ands r2, r1 + 800468a: 601a str r2, [r3, #0] + 800468c: 6b7b ldr r3, [r7, #52] @ 0x34 + 800468e: 617b str r3, [r7, #20] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 8004624: 697b ldr r3, [r7, #20] - 8004626: f383 8810 msr PRIMASK, r3 + 8004690: 697b ldr r3, [r7, #20] + 8004692: f383 8810 msr PRIMASK, r3 } - 800462a: 46c0 nop @ (mov r8, r8) + 8004696: 46c0 nop @ (mov r8, r8) __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 800462c: f3ef 8310 mrs r3, PRIMASK - 8004630: 61bb str r3, [r7, #24] + 8004698: f3ef 8310 mrs r3, PRIMASK + 800469c: 61bb str r3, [r7, #24] return(result); - 8004632: 69bb ldr r3, [r7, #24] + 800469e: 69bb ldr r3, [r7, #24] ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); - 8004634: 633b str r3, [r7, #48] @ 0x30 - 8004636: 2301 movs r3, #1 - 8004638: 61fb str r3, [r7, #28] + 80046a0: 633b str r3, [r7, #48] @ 0x30 + 80046a2: 2301 movs r3, #1 + 80046a4: 61fb str r3, [r7, #28] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800463a: 69fb ldr r3, [r7, #28] - 800463c: f383 8810 msr PRIMASK, r3 + 80046a6: 69fb ldr r3, [r7, #28] + 80046a8: f383 8810 msr PRIMASK, r3 } - 8004640: 46c0 nop @ (mov r8, r8) - 8004642: 687b ldr r3, [r7, #4] - 8004644: 681b ldr r3, [r3, #0] - 8004646: 689a ldr r2, [r3, #8] - 8004648: 687b ldr r3, [r7, #4] - 800464a: 681b ldr r3, [r3, #0] - 800464c: 2101 movs r1, #1 - 800464e: 438a bics r2, r1 - 8004650: 609a str r2, [r3, #8] - 8004652: 6b3b ldr r3, [r7, #48] @ 0x30 - 8004654: 623b str r3, [r7, #32] + 80046ac: 46c0 nop @ (mov r8, r8) + 80046ae: 687b ldr r3, [r7, #4] + 80046b0: 681b ldr r3, [r3, #0] + 80046b2: 689a ldr r2, [r3, #8] + 80046b4: 687b ldr r3, [r7, #4] + 80046b6: 681b ldr r3, [r3, #0] + 80046b8: 2101 movs r1, #1 + 80046ba: 438a bics r2, r1 + 80046bc: 609a str r2, [r3, #8] + 80046be: 6b3b ldr r3, [r7, #48] @ 0x30 + 80046c0: 623b str r3, [r7, #32] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 8004656: 6a3b ldr r3, [r7, #32] - 8004658: f383 8810 msr PRIMASK, r3 + 80046c2: 6a3b ldr r3, [r7, #32] + 80046c4: f383 8810 msr PRIMASK, r3 } - 800465c: 46c0 nop @ (mov r8, r8) + 80046c8: 46c0 nop @ (mov r8, r8) huart->RxState = HAL_UART_STATE_READY; - 800465e: 687b ldr r3, [r7, #4] - 8004660: 228c movs r2, #140 @ 0x8c - 8004662: 2120 movs r1, #32 - 8004664: 5099 str r1, [r3, r2] + 80046ca: 687b ldr r3, [r7, #4] + 80046cc: 228c movs r2, #140 @ 0x8c + 80046ce: 2120 movs r1, #32 + 80046d0: 5099 str r1, [r3, r2] __HAL_UNLOCK(huart); - 8004666: 687b ldr r3, [r7, #4] - 8004668: 2284 movs r2, #132 @ 0x84 - 800466a: 2100 movs r1, #0 - 800466c: 5499 strb r1, [r3, r2] + 80046d2: 687b ldr r3, [r7, #4] + 80046d4: 2284 movs r2, #132 @ 0x84 + 80046d6: 2100 movs r1, #0 + 80046d8: 5499 strb r1, [r3, r2] /* Timeout occurred */ return HAL_TIMEOUT; - 800466e: 2303 movs r3, #3 - 8004670: e012 b.n 8004698 + 80046da: 2303 movs r3, #3 + 80046dc: e012 b.n 8004704 } } /* Initialize the UART State */ huart->gState = HAL_UART_STATE_READY; - 8004672: 687b ldr r3, [r7, #4] - 8004674: 2288 movs r2, #136 @ 0x88 - 8004676: 2120 movs r1, #32 - 8004678: 5099 str r1, [r3, r2] + 80046de: 687b ldr r3, [r7, #4] + 80046e0: 2288 movs r2, #136 @ 0x88 + 80046e2: 2120 movs r1, #32 + 80046e4: 5099 str r1, [r3, r2] huart->RxState = HAL_UART_STATE_READY; - 800467a: 687b ldr r3, [r7, #4] - 800467c: 228c movs r2, #140 @ 0x8c - 800467e: 2120 movs r1, #32 - 8004680: 5099 str r1, [r3, r2] + 80046e6: 687b ldr r3, [r7, #4] + 80046e8: 228c movs r2, #140 @ 0x8c + 80046ea: 2120 movs r1, #32 + 80046ec: 5099 str r1, [r3, r2] huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 8004682: 687b ldr r3, [r7, #4] - 8004684: 2200 movs r2, #0 - 8004686: 66da str r2, [r3, #108] @ 0x6c + 80046ee: 687b ldr r3, [r7, #4] + 80046f0: 2200 movs r2, #0 + 80046f2: 66da str r2, [r3, #108] @ 0x6c huart->RxEventType = HAL_UART_RXEVENT_TC; - 8004688: 687b ldr r3, [r7, #4] - 800468a: 2200 movs r2, #0 - 800468c: 671a str r2, [r3, #112] @ 0x70 + 80046f4: 687b ldr r3, [r7, #4] + 80046f6: 2200 movs r2, #0 + 80046f8: 671a str r2, [r3, #112] @ 0x70 __HAL_UNLOCK(huart); - 800468e: 687b ldr r3, [r7, #4] - 8004690: 2284 movs r2, #132 @ 0x84 - 8004692: 2100 movs r1, #0 - 8004694: 5499 strb r1, [r3, r2] + 80046fa: 687b ldr r3, [r7, #4] + 80046fc: 2284 movs r2, #132 @ 0x84 + 80046fe: 2100 movs r1, #0 + 8004700: 5499 strb r1, [r3, r2] return HAL_OK; - 8004696: 2300 movs r3, #0 + 8004702: 2300 movs r3, #0 } - 8004698: 0018 movs r0, r3 - 800469a: 46bd mov sp, r7 - 800469c: b010 add sp, #64 @ 0x40 - 800469e: bd80 pop {r7, pc} - 80046a0: 01ffffff .word 0x01ffffff - 80046a4: fffffedf .word 0xfffffedf + 8004704: 0018 movs r0, r3 + 8004706: 46bd mov sp, r7 + 8004708: b010 add sp, #64 @ 0x40 + 800470a: bd80 pop {r7, pc} + 800470c: 01ffffff .word 0x01ffffff + 8004710: fffffedf .word 0xfffffedf -080046a8 : +08004714 : * @param Timeout Timeout duration * @retval HAL status */ HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, uint32_t Tickstart, uint32_t Timeout) { - 80046a8: b580 push {r7, lr} - 80046aa: b084 sub sp, #16 - 80046ac: af00 add r7, sp, #0 - 80046ae: 60f8 str r0, [r7, #12] - 80046b0: 60b9 str r1, [r7, #8] - 80046b2: 603b str r3, [r7, #0] - 80046b4: 1dfb adds r3, r7, #7 - 80046b6: 701a strb r2, [r3, #0] + 8004714: b580 push {r7, lr} + 8004716: b084 sub sp, #16 + 8004718: af00 add r7, sp, #0 + 800471a: 60f8 str r0, [r7, #12] + 800471c: 60b9 str r1, [r7, #8] + 800471e: 603b str r3, [r7, #0] + 8004720: 1dfb adds r3, r7, #7 + 8004722: 701a strb r2, [r3, #0] /* Wait until flag is set */ while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status) - 80046b8: e051 b.n 800475e + 8004724: e051 b.n 80047ca { /* Check for the Timeout */ if (Timeout != HAL_MAX_DELAY) - 80046ba: 69bb ldr r3, [r7, #24] - 80046bc: 3301 adds r3, #1 - 80046be: d04e beq.n 800475e + 8004726: 69bb ldr r3, [r7, #24] + 8004728: 3301 adds r3, #1 + 800472a: d04e beq.n 80047ca { if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) - 80046c0: f7fc fd2c bl 800111c - 80046c4: 0002 movs r2, r0 - 80046c6: 683b ldr r3, [r7, #0] - 80046c8: 1ad3 subs r3, r2, r3 - 80046ca: 69ba ldr r2, [r7, #24] - 80046cc: 429a cmp r2, r3 - 80046ce: d302 bcc.n 80046d6 - 80046d0: 69bb ldr r3, [r7, #24] - 80046d2: 2b00 cmp r3, #0 - 80046d4: d101 bne.n 80046da + 800472c: f7fc fd2c bl 8001188 + 8004730: 0002 movs r2, r0 + 8004732: 683b ldr r3, [r7, #0] + 8004734: 1ad3 subs r3, r2, r3 + 8004736: 69ba ldr r2, [r7, #24] + 8004738: 429a cmp r2, r3 + 800473a: d302 bcc.n 8004742 + 800473c: 69bb ldr r3, [r7, #24] + 800473e: 2b00 cmp r3, #0 + 8004740: d101 bne.n 8004746 { return HAL_TIMEOUT; - 80046d6: 2303 movs r3, #3 - 80046d8: e051 b.n 800477e + 8004742: 2303 movs r3, #3 + 8004744: e051 b.n 80047ea } if ((READ_BIT(huart->Instance->CR1, USART_CR1_RE) != 0U) && (Flag != UART_FLAG_TXE) && (Flag != UART_FLAG_TC)) - 80046da: 68fb ldr r3, [r7, #12] - 80046dc: 681b ldr r3, [r3, #0] - 80046de: 681b ldr r3, [r3, #0] - 80046e0: 2204 movs r2, #4 - 80046e2: 4013 ands r3, r2 - 80046e4: d03b beq.n 800475e - 80046e6: 68bb ldr r3, [r7, #8] - 80046e8: 2b80 cmp r3, #128 @ 0x80 - 80046ea: d038 beq.n 800475e - 80046ec: 68bb ldr r3, [r7, #8] - 80046ee: 2b40 cmp r3, #64 @ 0x40 - 80046f0: d035 beq.n 800475e + 8004746: 68fb ldr r3, [r7, #12] + 8004748: 681b ldr r3, [r3, #0] + 800474a: 681b ldr r3, [r3, #0] + 800474c: 2204 movs r2, #4 + 800474e: 4013 ands r3, r2 + 8004750: d03b beq.n 80047ca + 8004752: 68bb ldr r3, [r7, #8] + 8004754: 2b80 cmp r3, #128 @ 0x80 + 8004756: d038 beq.n 80047ca + 8004758: 68bb ldr r3, [r7, #8] + 800475a: 2b40 cmp r3, #64 @ 0x40 + 800475c: d035 beq.n 80047ca { if (__HAL_UART_GET_FLAG(huart, UART_FLAG_ORE) == SET) - 80046f2: 68fb ldr r3, [r7, #12] - 80046f4: 681b ldr r3, [r3, #0] - 80046f6: 69db ldr r3, [r3, #28] - 80046f8: 2208 movs r2, #8 - 80046fa: 4013 ands r3, r2 - 80046fc: 2b08 cmp r3, #8 - 80046fe: d111 bne.n 8004724 - { - /* Clear Overrun Error flag*/ - __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF); - 8004700: 68fb ldr r3, [r7, #12] - 8004702: 681b ldr r3, [r3, #0] - 8004704: 2208 movs r2, #8 - 8004706: 621a str r2, [r3, #32] - - /* Blocking error : transfer is aborted - Set the UART state ready to be able to start again the process, - Disable Rx Interrupts if ongoing */ - UART_EndRxTransfer(huart); - 8004708: 68fb ldr r3, [r7, #12] - 800470a: 0018 movs r0, r3 - 800470c: f000 f83c bl 8004788 - - huart->ErrorCode = HAL_UART_ERROR_ORE; - 8004710: 68fb ldr r3, [r7, #12] - 8004712: 2290 movs r2, #144 @ 0x90 - 8004714: 2108 movs r1, #8 - 8004716: 5099 str r1, [r3, r2] - - /* Process Unlocked */ - __HAL_UNLOCK(huart); - 8004718: 68fb ldr r3, [r7, #12] - 800471a: 2284 movs r2, #132 @ 0x84 - 800471c: 2100 movs r1, #0 - 800471e: 5499 strb r1, [r3, r2] - - return HAL_ERROR; - 8004720: 2301 movs r3, #1 - 8004722: e02c b.n 800477e - } - if (__HAL_UART_GET_FLAG(huart, UART_FLAG_RTOF) == SET) - 8004724: 68fb ldr r3, [r7, #12] - 8004726: 681b ldr r3, [r3, #0] - 8004728: 69da ldr r2, [r3, #28] - 800472a: 2380 movs r3, #128 @ 0x80 - 800472c: 011b lsls r3, r3, #4 - 800472e: 401a ands r2, r3 - 8004730: 2380 movs r3, #128 @ 0x80 - 8004732: 011b lsls r3, r3, #4 - 8004734: 429a cmp r2, r3 - 8004736: d112 bne.n 800475e - { - /* Clear Receiver Timeout flag*/ - __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF); - 8004738: 68fb ldr r3, [r7, #12] - 800473a: 681b ldr r3, [r3, #0] - 800473c: 2280 movs r2, #128 @ 0x80 - 800473e: 0112 lsls r2, r2, #4 - 8004740: 621a str r2, [r3, #32] - - /* Blocking error : transfer is aborted - Set the UART state ready to be able to start again the process, - Disable Rx Interrupts if ongoing */ - UART_EndRxTransfer(huart); - 8004742: 68fb ldr r3, [r7, #12] - 8004744: 0018 movs r0, r3 - 8004746: f000 f81f bl 8004788 - - huart->ErrorCode = HAL_UART_ERROR_RTO; - 800474a: 68fb ldr r3, [r7, #12] - 800474c: 2290 movs r2, #144 @ 0x90 - 800474e: 2120 movs r1, #32 - 8004750: 5099 str r1, [r3, r2] - - /* Process Unlocked */ - __HAL_UNLOCK(huart); - 8004752: 68fb ldr r3, [r7, #12] - 8004754: 2284 movs r2, #132 @ 0x84 - 8004756: 2100 movs r1, #0 - 8004758: 5499 strb r1, [r3, r2] - - return HAL_TIMEOUT; - 800475a: 2303 movs r3, #3 - 800475c: e00f b.n 800477e - while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status) 800475e: 68fb ldr r3, [r7, #12] 8004760: 681b ldr r3, [r3, #0] 8004762: 69db ldr r3, [r3, #28] - 8004764: 68ba ldr r2, [r7, #8] + 8004764: 2208 movs r2, #8 8004766: 4013 ands r3, r2 - 8004768: 68ba ldr r2, [r7, #8] - 800476a: 1ad3 subs r3, r2, r3 - 800476c: 425a negs r2, r3 - 800476e: 4153 adcs r3, r2 - 8004770: b2db uxtb r3, r3 - 8004772: 001a movs r2, r3 - 8004774: 1dfb adds r3, r7, #7 - 8004776: 781b ldrb r3, [r3, #0] - 8004778: 429a cmp r2, r3 - 800477a: d09e beq.n 80046ba + 8004768: 2b08 cmp r3, #8 + 800476a: d111 bne.n 8004790 + { + /* Clear Overrun Error flag*/ + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF); + 800476c: 68fb ldr r3, [r7, #12] + 800476e: 681b ldr r3, [r3, #0] + 8004770: 2208 movs r2, #8 + 8004772: 621a str r2, [r3, #32] + + /* Blocking error : transfer is aborted + Set the UART state ready to be able to start again the process, + Disable Rx Interrupts if ongoing */ + UART_EndRxTransfer(huart); + 8004774: 68fb ldr r3, [r7, #12] + 8004776: 0018 movs r0, r3 + 8004778: f000 f83c bl 80047f4 + + huart->ErrorCode = HAL_UART_ERROR_ORE; + 800477c: 68fb ldr r3, [r7, #12] + 800477e: 2290 movs r2, #144 @ 0x90 + 8004780: 2108 movs r1, #8 + 8004782: 5099 str r1, [r3, r2] + + /* Process Unlocked */ + __HAL_UNLOCK(huart); + 8004784: 68fb ldr r3, [r7, #12] + 8004786: 2284 movs r2, #132 @ 0x84 + 8004788: 2100 movs r1, #0 + 800478a: 5499 strb r1, [r3, r2] + + return HAL_ERROR; + 800478c: 2301 movs r3, #1 + 800478e: e02c b.n 80047ea + } + if (__HAL_UART_GET_FLAG(huart, UART_FLAG_RTOF) == SET) + 8004790: 68fb ldr r3, [r7, #12] + 8004792: 681b ldr r3, [r3, #0] + 8004794: 69da ldr r2, [r3, #28] + 8004796: 2380 movs r3, #128 @ 0x80 + 8004798: 011b lsls r3, r3, #4 + 800479a: 401a ands r2, r3 + 800479c: 2380 movs r3, #128 @ 0x80 + 800479e: 011b lsls r3, r3, #4 + 80047a0: 429a cmp r2, r3 + 80047a2: d112 bne.n 80047ca + { + /* Clear Receiver Timeout flag*/ + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF); + 80047a4: 68fb ldr r3, [r7, #12] + 80047a6: 681b ldr r3, [r3, #0] + 80047a8: 2280 movs r2, #128 @ 0x80 + 80047aa: 0112 lsls r2, r2, #4 + 80047ac: 621a str r2, [r3, #32] + + /* Blocking error : transfer is aborted + Set the UART state ready to be able to start again the process, + Disable Rx Interrupts if ongoing */ + UART_EndRxTransfer(huart); + 80047ae: 68fb ldr r3, [r7, #12] + 80047b0: 0018 movs r0, r3 + 80047b2: f000 f81f bl 80047f4 + + huart->ErrorCode = HAL_UART_ERROR_RTO; + 80047b6: 68fb ldr r3, [r7, #12] + 80047b8: 2290 movs r2, #144 @ 0x90 + 80047ba: 2120 movs r1, #32 + 80047bc: 5099 str r1, [r3, r2] + + /* Process Unlocked */ + __HAL_UNLOCK(huart); + 80047be: 68fb ldr r3, [r7, #12] + 80047c0: 2284 movs r2, #132 @ 0x84 + 80047c2: 2100 movs r1, #0 + 80047c4: 5499 strb r1, [r3, r2] + + return HAL_TIMEOUT; + 80047c6: 2303 movs r3, #3 + 80047c8: e00f b.n 80047ea + while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status) + 80047ca: 68fb ldr r3, [r7, #12] + 80047cc: 681b ldr r3, [r3, #0] + 80047ce: 69db ldr r3, [r3, #28] + 80047d0: 68ba ldr r2, [r7, #8] + 80047d2: 4013 ands r3, r2 + 80047d4: 68ba ldr r2, [r7, #8] + 80047d6: 1ad3 subs r3, r2, r3 + 80047d8: 425a negs r2, r3 + 80047da: 4153 adcs r3, r2 + 80047dc: b2db uxtb r3, r3 + 80047de: 001a movs r2, r3 + 80047e0: 1dfb adds r3, r7, #7 + 80047e2: 781b ldrb r3, [r3, #0] + 80047e4: 429a cmp r2, r3 + 80047e6: d09e beq.n 8004726 } } } } return HAL_OK; - 800477c: 2300 movs r3, #0 + 80047e8: 2300 movs r3, #0 } - 800477e: 0018 movs r0, r3 - 8004780: 46bd mov sp, r7 - 8004782: b004 add sp, #16 - 8004784: bd80 pop {r7, pc} + 80047ea: 0018 movs r0, r3 + 80047ec: 46bd mov sp, r7 + 80047ee: b004 add sp, #16 + 80047f0: bd80 pop {r7, pc} ... -08004788 : +080047f4 : * @brief End ongoing Rx transfer on UART peripheral (following error detection or Reception completion). * @param huart UART handle. * @retval None */ static void UART_EndRxTransfer(UART_HandleTypeDef *huart) { - 8004788: b580 push {r7, lr} - 800478a: b08e sub sp, #56 @ 0x38 - 800478c: af00 add r7, sp, #0 - 800478e: 6078 str r0, [r7, #4] - __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 8004790: f3ef 8310 mrs r3, PRIMASK - 8004794: 617b str r3, [r7, #20] - return(result); - 8004796: 697b ldr r3, [r7, #20] - /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */ - ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); - 8004798: 637b str r3, [r7, #52] @ 0x34 - 800479a: 2301 movs r3, #1 - 800479c: 61bb str r3, [r7, #24] - __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800479e: 69bb ldr r3, [r7, #24] - 80047a0: f383 8810 msr PRIMASK, r3 -} - 80047a4: 46c0 nop @ (mov r8, r8) - 80047a6: 687b ldr r3, [r7, #4] - 80047a8: 681b ldr r3, [r3, #0] - 80047aa: 681a ldr r2, [r3, #0] - 80047ac: 687b ldr r3, [r7, #4] - 80047ae: 681b ldr r3, [r3, #0] - 80047b0: 4926 ldr r1, [pc, #152] @ (800484c ) - 80047b2: 400a ands r2, r1 - 80047b4: 601a str r2, [r3, #0] - 80047b6: 6b7b ldr r3, [r7, #52] @ 0x34 - 80047b8: 61fb str r3, [r7, #28] - __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 80047ba: 69fb ldr r3, [r7, #28] - 80047bc: f383 8810 msr PRIMASK, r3 -} - 80047c0: 46c0 nop @ (mov r8, r8) - __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 80047c2: f3ef 8310 mrs r3, PRIMASK - 80047c6: 623b str r3, [r7, #32] - return(result); - 80047c8: 6a3b ldr r3, [r7, #32] - ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); - 80047ca: 633b str r3, [r7, #48] @ 0x30 - 80047cc: 2301 movs r3, #1 - 80047ce: 627b str r3, [r7, #36] @ 0x24 - __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 80047d0: 6a7b ldr r3, [r7, #36] @ 0x24 - 80047d2: f383 8810 msr PRIMASK, r3 -} - 80047d6: 46c0 nop @ (mov r8, r8) - 80047d8: 687b ldr r3, [r7, #4] - 80047da: 681b ldr r3, [r3, #0] - 80047dc: 689a ldr r2, [r3, #8] - 80047de: 687b ldr r3, [r7, #4] - 80047e0: 681b ldr r3, [r3, #0] - 80047e2: 491b ldr r1, [pc, #108] @ (8004850 ) - 80047e4: 400a ands r2, r1 - 80047e6: 609a str r2, [r3, #8] - 80047e8: 6b3b ldr r3, [r7, #48] @ 0x30 - 80047ea: 62bb str r3, [r7, #40] @ 0x28 - __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 80047ec: 6abb ldr r3, [r7, #40] @ 0x28 - 80047ee: f383 8810 msr PRIMASK, r3 -} - 80047f2: 46c0 nop @ (mov r8, r8) - - /* In case of reception waiting for IDLE event, disable also the IDLE IE interrupt source */ - if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) - 80047f4: 687b ldr r3, [r7, #4] - 80047f6: 6edb ldr r3, [r3, #108] @ 0x6c - 80047f8: 2b01 cmp r3, #1 - 80047fa: d118 bne.n 800482e + 80047f4: b580 push {r7, lr} + 80047f6: b08e sub sp, #56 @ 0x38 + 80047f8: af00 add r7, sp, #0 + 80047fa: 6078 str r0, [r7, #4] __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); 80047fc: f3ef 8310 mrs r3, PRIMASK - 8004800: 60bb str r3, [r7, #8] + 8004800: 617b str r3, [r7, #20] return(result); - 8004802: 68bb ldr r3, [r7, #8] - { - ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); - 8004804: 62fb str r3, [r7, #44] @ 0x2c + 8004802: 697b ldr r3, [r7, #20] + /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); + 8004804: 637b str r3, [r7, #52] @ 0x34 8004806: 2301 movs r3, #1 - 8004808: 60fb str r3, [r7, #12] + 8004808: 61bb str r3, [r7, #24] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800480a: 68fb ldr r3, [r7, #12] + 800480a: 69bb ldr r3, [r7, #24] 800480c: f383 8810 msr PRIMASK, r3 } 8004810: 46c0 nop @ (mov r8, r8) @@ -13250,521 +13245,587 @@ static void UART_EndRxTransfer(UART_HandleTypeDef *huart) 8004816: 681a ldr r2, [r3, #0] 8004818: 687b ldr r3, [r7, #4] 800481a: 681b ldr r3, [r3, #0] - 800481c: 2110 movs r1, #16 - 800481e: 438a bics r2, r1 + 800481c: 4926 ldr r1, [pc, #152] @ (80048b8 ) + 800481e: 400a ands r2, r1 8004820: 601a str r2, [r3, #0] - 8004822: 6afb ldr r3, [r7, #44] @ 0x2c - 8004824: 613b str r3, [r7, #16] + 8004822: 6b7b ldr r3, [r7, #52] @ 0x34 + 8004824: 61fb str r3, [r7, #28] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 8004826: 693b ldr r3, [r7, #16] + 8004826: 69fb ldr r3, [r7, #28] 8004828: f383 8810 msr PRIMASK, r3 } 800482c: 46c0 nop @ (mov r8, r8) + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 800482e: f3ef 8310 mrs r3, PRIMASK + 8004832: 623b str r3, [r7, #32] + return(result); + 8004834: 6a3b ldr r3, [r7, #32] + ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); + 8004836: 633b str r3, [r7, #48] @ 0x30 + 8004838: 2301 movs r3, #1 + 800483a: 627b str r3, [r7, #36] @ 0x24 + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 800483c: 6a7b ldr r3, [r7, #36] @ 0x24 + 800483e: f383 8810 msr PRIMASK, r3 +} + 8004842: 46c0 nop @ (mov r8, r8) + 8004844: 687b ldr r3, [r7, #4] + 8004846: 681b ldr r3, [r3, #0] + 8004848: 689a ldr r2, [r3, #8] + 800484a: 687b ldr r3, [r7, #4] + 800484c: 681b ldr r3, [r3, #0] + 800484e: 491b ldr r1, [pc, #108] @ (80048bc ) + 8004850: 400a ands r2, r1 + 8004852: 609a str r2, [r3, #8] + 8004854: 6b3b ldr r3, [r7, #48] @ 0x30 + 8004856: 62bb str r3, [r7, #40] @ 0x28 + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8004858: 6abb ldr r3, [r7, #40] @ 0x28 + 800485a: f383 8810 msr PRIMASK, r3 +} + 800485e: 46c0 nop @ (mov r8, r8) + + /* In case of reception waiting for IDLE event, disable also the IDLE IE interrupt source */ + if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) + 8004860: 687b ldr r3, [r7, #4] + 8004862: 6edb ldr r3, [r3, #108] @ 0x6c + 8004864: 2b01 cmp r3, #1 + 8004866: d118 bne.n 800489a + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 8004868: f3ef 8310 mrs r3, PRIMASK + 800486c: 60bb str r3, [r7, #8] + return(result); + 800486e: 68bb ldr r3, [r7, #8] + { + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); + 8004870: 62fb str r3, [r7, #44] @ 0x2c + 8004872: 2301 movs r3, #1 + 8004874: 60fb str r3, [r7, #12] + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8004876: 68fb ldr r3, [r7, #12] + 8004878: f383 8810 msr PRIMASK, r3 +} + 800487c: 46c0 nop @ (mov r8, r8) + 800487e: 687b ldr r3, [r7, #4] + 8004880: 681b ldr r3, [r3, #0] + 8004882: 681a ldr r2, [r3, #0] + 8004884: 687b ldr r3, [r7, #4] + 8004886: 681b ldr r3, [r3, #0] + 8004888: 2110 movs r1, #16 + 800488a: 438a bics r2, r1 + 800488c: 601a str r2, [r3, #0] + 800488e: 6afb ldr r3, [r7, #44] @ 0x2c + 8004890: 613b str r3, [r7, #16] + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8004892: 693b ldr r3, [r7, #16] + 8004894: f383 8810 msr PRIMASK, r3 +} + 8004898: 46c0 nop @ (mov r8, r8) } /* At end of Rx process, restore huart->RxState to Ready */ huart->RxState = HAL_UART_STATE_READY; - 800482e: 687b ldr r3, [r7, #4] - 8004830: 228c movs r2, #140 @ 0x8c - 8004832: 2120 movs r1, #32 - 8004834: 5099 str r1, [r3, r2] + 800489a: 687b ldr r3, [r7, #4] + 800489c: 228c movs r2, #140 @ 0x8c + 800489e: 2120 movs r1, #32 + 80048a0: 5099 str r1, [r3, r2] huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 8004836: 687b ldr r3, [r7, #4] - 8004838: 2200 movs r2, #0 - 800483a: 66da str r2, [r3, #108] @ 0x6c + 80048a2: 687b ldr r3, [r7, #4] + 80048a4: 2200 movs r2, #0 + 80048a6: 66da str r2, [r3, #108] @ 0x6c /* Reset RxIsr function pointer */ huart->RxISR = NULL; - 800483c: 687b ldr r3, [r7, #4] - 800483e: 2200 movs r2, #0 - 8004840: 675a str r2, [r3, #116] @ 0x74 + 80048a8: 687b ldr r3, [r7, #4] + 80048aa: 2200 movs r2, #0 + 80048ac: 675a str r2, [r3, #116] @ 0x74 } - 8004842: 46c0 nop @ (mov r8, r8) - 8004844: 46bd mov sp, r7 - 8004846: b00e add sp, #56 @ 0x38 - 8004848: bd80 pop {r7, pc} - 800484a: 46c0 nop @ (mov r8, r8) - 800484c: fffffedf .word 0xfffffedf - 8004850: effffffe .word 0xeffffffe + 80048ae: 46c0 nop @ (mov r8, r8) + 80048b0: 46bd mov sp, r7 + 80048b2: b00e add sp, #56 @ 0x38 + 80048b4: bd80 pop {r7, pc} + 80048b6: 46c0 nop @ (mov r8, r8) + 80048b8: fffffedf .word 0xfffffedf + 80048bc: effffffe .word 0xeffffffe -08004854 : +080048c0 : * @brief Disable the FIFO mode. * @param huart UART handle. * @retval HAL status */ HAL_StatusTypeDef HAL_UARTEx_DisableFifoMode(UART_HandleTypeDef *huart) { - 8004854: b580 push {r7, lr} - 8004856: b084 sub sp, #16 - 8004858: af00 add r7, sp, #0 - 800485a: 6078 str r0, [r7, #4] + 80048c0: b580 push {r7, lr} + 80048c2: b084 sub sp, #16 + 80048c4: af00 add r7, sp, #0 + 80048c6: 6078 str r0, [r7, #4] /* Check parameters */ assert_param(IS_UART_FIFO_INSTANCE(huart->Instance)); /* Process Locked */ __HAL_LOCK(huart); - 800485c: 687b ldr r3, [r7, #4] - 800485e: 2284 movs r2, #132 @ 0x84 - 8004860: 5c9b ldrb r3, [r3, r2] - 8004862: 2b01 cmp r3, #1 - 8004864: d101 bne.n 800486a - 8004866: 2302 movs r3, #2 - 8004868: e027 b.n 80048ba - 800486a: 687b ldr r3, [r7, #4] - 800486c: 2284 movs r2, #132 @ 0x84 - 800486e: 2101 movs r1, #1 - 8004870: 5499 strb r1, [r3, r2] + 80048c8: 687b ldr r3, [r7, #4] + 80048ca: 2284 movs r2, #132 @ 0x84 + 80048cc: 5c9b ldrb r3, [r3, r2] + 80048ce: 2b01 cmp r3, #1 + 80048d0: d101 bne.n 80048d6 + 80048d2: 2302 movs r3, #2 + 80048d4: e027 b.n 8004926 + 80048d6: 687b ldr r3, [r7, #4] + 80048d8: 2284 movs r2, #132 @ 0x84 + 80048da: 2101 movs r1, #1 + 80048dc: 5499 strb r1, [r3, r2] huart->gState = HAL_UART_STATE_BUSY; - 8004872: 687b ldr r3, [r7, #4] - 8004874: 2288 movs r2, #136 @ 0x88 - 8004876: 2124 movs r1, #36 @ 0x24 - 8004878: 5099 str r1, [r3, r2] + 80048de: 687b ldr r3, [r7, #4] + 80048e0: 2288 movs r2, #136 @ 0x88 + 80048e2: 2124 movs r1, #36 @ 0x24 + 80048e4: 5099 str r1, [r3, r2] /* Save actual UART configuration */ tmpcr1 = READ_REG(huart->Instance->CR1); - 800487a: 687b ldr r3, [r7, #4] - 800487c: 681b ldr r3, [r3, #0] - 800487e: 681b ldr r3, [r3, #0] - 8004880: 60fb str r3, [r7, #12] + 80048e6: 687b ldr r3, [r7, #4] + 80048e8: 681b ldr r3, [r3, #0] + 80048ea: 681b ldr r3, [r3, #0] + 80048ec: 60fb str r3, [r7, #12] /* Disable UART */ __HAL_UART_DISABLE(huart); - 8004882: 687b ldr r3, [r7, #4] - 8004884: 681b ldr r3, [r3, #0] - 8004886: 681a ldr r2, [r3, #0] - 8004888: 687b ldr r3, [r7, #4] - 800488a: 681b ldr r3, [r3, #0] - 800488c: 2101 movs r1, #1 - 800488e: 438a bics r2, r1 - 8004890: 601a str r2, [r3, #0] + 80048ee: 687b ldr r3, [r7, #4] + 80048f0: 681b ldr r3, [r3, #0] + 80048f2: 681a ldr r2, [r3, #0] + 80048f4: 687b ldr r3, [r7, #4] + 80048f6: 681b ldr r3, [r3, #0] + 80048f8: 2101 movs r1, #1 + 80048fa: 438a bics r2, r1 + 80048fc: 601a str r2, [r3, #0] /* Enable FIFO mode */ CLEAR_BIT(tmpcr1, USART_CR1_FIFOEN); - 8004892: 68fb ldr r3, [r7, #12] - 8004894: 4a0b ldr r2, [pc, #44] @ (80048c4 ) - 8004896: 4013 ands r3, r2 - 8004898: 60fb str r3, [r7, #12] + 80048fe: 68fb ldr r3, [r7, #12] + 8004900: 4a0b ldr r2, [pc, #44] @ (8004930 ) + 8004902: 4013 ands r3, r2 + 8004904: 60fb str r3, [r7, #12] huart->FifoMode = UART_FIFOMODE_DISABLE; - 800489a: 687b ldr r3, [r7, #4] - 800489c: 2200 movs r2, #0 - 800489e: 665a str r2, [r3, #100] @ 0x64 + 8004906: 687b ldr r3, [r7, #4] + 8004908: 2200 movs r2, #0 + 800490a: 665a str r2, [r3, #100] @ 0x64 /* Restore UART configuration */ WRITE_REG(huart->Instance->CR1, tmpcr1); - 80048a0: 687b ldr r3, [r7, #4] - 80048a2: 681b ldr r3, [r3, #0] - 80048a4: 68fa ldr r2, [r7, #12] - 80048a6: 601a str r2, [r3, #0] + 800490c: 687b ldr r3, [r7, #4] + 800490e: 681b ldr r3, [r3, #0] + 8004910: 68fa ldr r2, [r7, #12] + 8004912: 601a str r2, [r3, #0] huart->gState = HAL_UART_STATE_READY; - 80048a8: 687b ldr r3, [r7, #4] - 80048aa: 2288 movs r2, #136 @ 0x88 - 80048ac: 2120 movs r1, #32 - 80048ae: 5099 str r1, [r3, r2] + 8004914: 687b ldr r3, [r7, #4] + 8004916: 2288 movs r2, #136 @ 0x88 + 8004918: 2120 movs r1, #32 + 800491a: 5099 str r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(huart); - 80048b0: 687b ldr r3, [r7, #4] - 80048b2: 2284 movs r2, #132 @ 0x84 - 80048b4: 2100 movs r1, #0 - 80048b6: 5499 strb r1, [r3, r2] + 800491c: 687b ldr r3, [r7, #4] + 800491e: 2284 movs r2, #132 @ 0x84 + 8004920: 2100 movs r1, #0 + 8004922: 5499 strb r1, [r3, r2] return HAL_OK; - 80048b8: 2300 movs r3, #0 + 8004924: 2300 movs r3, #0 } - 80048ba: 0018 movs r0, r3 - 80048bc: 46bd mov sp, r7 - 80048be: b004 add sp, #16 - 80048c0: bd80 pop {r7, pc} - 80048c2: 46c0 nop @ (mov r8, r8) - 80048c4: dfffffff .word 0xdfffffff + 8004926: 0018 movs r0, r3 + 8004928: 46bd mov sp, r7 + 800492a: b004 add sp, #16 + 800492c: bd80 pop {r7, pc} + 800492e: 46c0 nop @ (mov r8, r8) + 8004930: dfffffff .word 0xdfffffff -080048c8 : +08004934 : * @arg @ref UART_TXFIFO_THRESHOLD_7_8 * @arg @ref UART_TXFIFO_THRESHOLD_8_8 * @retval HAL status */ HAL_StatusTypeDef HAL_UARTEx_SetTxFifoThreshold(UART_HandleTypeDef *huart, uint32_t Threshold) { - 80048c8: b580 push {r7, lr} - 80048ca: b084 sub sp, #16 - 80048cc: af00 add r7, sp, #0 - 80048ce: 6078 str r0, [r7, #4] - 80048d0: 6039 str r1, [r7, #0] + 8004934: b580 push {r7, lr} + 8004936: b084 sub sp, #16 + 8004938: af00 add r7, sp, #0 + 800493a: 6078 str r0, [r7, #4] + 800493c: 6039 str r1, [r7, #0] /* Check parameters */ assert_param(IS_UART_FIFO_INSTANCE(huart->Instance)); assert_param(IS_UART_TXFIFO_THRESHOLD(Threshold)); /* Process Locked */ __HAL_LOCK(huart); - 80048d2: 687b ldr r3, [r7, #4] - 80048d4: 2284 movs r2, #132 @ 0x84 - 80048d6: 5c9b ldrb r3, [r3, r2] - 80048d8: 2b01 cmp r3, #1 - 80048da: d101 bne.n 80048e0 - 80048dc: 2302 movs r3, #2 - 80048de: e02e b.n 800493e - 80048e0: 687b ldr r3, [r7, #4] - 80048e2: 2284 movs r2, #132 @ 0x84 - 80048e4: 2101 movs r1, #1 - 80048e6: 5499 strb r1, [r3, r2] + 800493e: 687b ldr r3, [r7, #4] + 8004940: 2284 movs r2, #132 @ 0x84 + 8004942: 5c9b ldrb r3, [r3, r2] + 8004944: 2b01 cmp r3, #1 + 8004946: d101 bne.n 800494c + 8004948: 2302 movs r3, #2 + 800494a: e02e b.n 80049aa + 800494c: 687b ldr r3, [r7, #4] + 800494e: 2284 movs r2, #132 @ 0x84 + 8004950: 2101 movs r1, #1 + 8004952: 5499 strb r1, [r3, r2] huart->gState = HAL_UART_STATE_BUSY; - 80048e8: 687b ldr r3, [r7, #4] - 80048ea: 2288 movs r2, #136 @ 0x88 - 80048ec: 2124 movs r1, #36 @ 0x24 - 80048ee: 5099 str r1, [r3, r2] + 8004954: 687b ldr r3, [r7, #4] + 8004956: 2288 movs r2, #136 @ 0x88 + 8004958: 2124 movs r1, #36 @ 0x24 + 800495a: 5099 str r1, [r3, r2] /* Save actual UART configuration */ tmpcr1 = READ_REG(huart->Instance->CR1); - 80048f0: 687b ldr r3, [r7, #4] - 80048f2: 681b ldr r3, [r3, #0] - 80048f4: 681b ldr r3, [r3, #0] - 80048f6: 60fb str r3, [r7, #12] + 800495c: 687b ldr r3, [r7, #4] + 800495e: 681b ldr r3, [r3, #0] + 8004960: 681b ldr r3, [r3, #0] + 8004962: 60fb str r3, [r7, #12] /* Disable UART */ __HAL_UART_DISABLE(huart); - 80048f8: 687b ldr r3, [r7, #4] - 80048fa: 681b ldr r3, [r3, #0] - 80048fc: 681a ldr r2, [r3, #0] - 80048fe: 687b ldr r3, [r7, #4] - 8004900: 681b ldr r3, [r3, #0] - 8004902: 2101 movs r1, #1 - 8004904: 438a bics r2, r1 - 8004906: 601a str r2, [r3, #0] + 8004964: 687b ldr r3, [r7, #4] + 8004966: 681b ldr r3, [r3, #0] + 8004968: 681a ldr r2, [r3, #0] + 800496a: 687b ldr r3, [r7, #4] + 800496c: 681b ldr r3, [r3, #0] + 800496e: 2101 movs r1, #1 + 8004970: 438a bics r2, r1 + 8004972: 601a str r2, [r3, #0] /* Update TX threshold configuration */ MODIFY_REG(huart->Instance->CR3, USART_CR3_TXFTCFG, Threshold); - 8004908: 687b ldr r3, [r7, #4] - 800490a: 681b ldr r3, [r3, #0] - 800490c: 689b ldr r3, [r3, #8] - 800490e: 00db lsls r3, r3, #3 - 8004910: 08d9 lsrs r1, r3, #3 - 8004912: 687b ldr r3, [r7, #4] - 8004914: 681b ldr r3, [r3, #0] - 8004916: 683a ldr r2, [r7, #0] - 8004918: 430a orrs r2, r1 - 800491a: 609a str r2, [r3, #8] + 8004974: 687b ldr r3, [r7, #4] + 8004976: 681b ldr r3, [r3, #0] + 8004978: 689b ldr r3, [r3, #8] + 800497a: 00db lsls r3, r3, #3 + 800497c: 08d9 lsrs r1, r3, #3 + 800497e: 687b ldr r3, [r7, #4] + 8004980: 681b ldr r3, [r3, #0] + 8004982: 683a ldr r2, [r7, #0] + 8004984: 430a orrs r2, r1 + 8004986: 609a str r2, [r3, #8] /* Determine the number of data to process during RX/TX ISR execution */ UARTEx_SetNbDataToProcess(huart); - 800491c: 687b ldr r3, [r7, #4] - 800491e: 0018 movs r0, r3 - 8004920: f000 f854 bl 80049cc + 8004988: 687b ldr r3, [r7, #4] + 800498a: 0018 movs r0, r3 + 800498c: f000 f854 bl 8004a38 /* Restore UART configuration */ WRITE_REG(huart->Instance->CR1, tmpcr1); - 8004924: 687b ldr r3, [r7, #4] - 8004926: 681b ldr r3, [r3, #0] - 8004928: 68fa ldr r2, [r7, #12] - 800492a: 601a str r2, [r3, #0] + 8004990: 687b ldr r3, [r7, #4] + 8004992: 681b ldr r3, [r3, #0] + 8004994: 68fa ldr r2, [r7, #12] + 8004996: 601a str r2, [r3, #0] huart->gState = HAL_UART_STATE_READY; - 800492c: 687b ldr r3, [r7, #4] - 800492e: 2288 movs r2, #136 @ 0x88 - 8004930: 2120 movs r1, #32 - 8004932: 5099 str r1, [r3, r2] + 8004998: 687b ldr r3, [r7, #4] + 800499a: 2288 movs r2, #136 @ 0x88 + 800499c: 2120 movs r1, #32 + 800499e: 5099 str r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(huart); - 8004934: 687b ldr r3, [r7, #4] - 8004936: 2284 movs r2, #132 @ 0x84 - 8004938: 2100 movs r1, #0 - 800493a: 5499 strb r1, [r3, r2] + 80049a0: 687b ldr r3, [r7, #4] + 80049a2: 2284 movs r2, #132 @ 0x84 + 80049a4: 2100 movs r1, #0 + 80049a6: 5499 strb r1, [r3, r2] return HAL_OK; - 800493c: 2300 movs r3, #0 + 80049a8: 2300 movs r3, #0 } - 800493e: 0018 movs r0, r3 - 8004940: 46bd mov sp, r7 - 8004942: b004 add sp, #16 - 8004944: bd80 pop {r7, pc} + 80049aa: 0018 movs r0, r3 + 80049ac: 46bd mov sp, r7 + 80049ae: b004 add sp, #16 + 80049b0: bd80 pop {r7, pc} ... -08004948 : +080049b4 : * @arg @ref UART_RXFIFO_THRESHOLD_7_8 * @arg @ref UART_RXFIFO_THRESHOLD_8_8 * @retval HAL status */ HAL_StatusTypeDef HAL_UARTEx_SetRxFifoThreshold(UART_HandleTypeDef *huart, uint32_t Threshold) { - 8004948: b580 push {r7, lr} - 800494a: b084 sub sp, #16 - 800494c: af00 add r7, sp, #0 - 800494e: 6078 str r0, [r7, #4] - 8004950: 6039 str r1, [r7, #0] + 80049b4: b580 push {r7, lr} + 80049b6: b084 sub sp, #16 + 80049b8: af00 add r7, sp, #0 + 80049ba: 6078 str r0, [r7, #4] + 80049bc: 6039 str r1, [r7, #0] /* Check the parameters */ assert_param(IS_UART_FIFO_INSTANCE(huart->Instance)); assert_param(IS_UART_RXFIFO_THRESHOLD(Threshold)); /* Process Locked */ __HAL_LOCK(huart); - 8004952: 687b ldr r3, [r7, #4] - 8004954: 2284 movs r2, #132 @ 0x84 - 8004956: 5c9b ldrb r3, [r3, r2] - 8004958: 2b01 cmp r3, #1 - 800495a: d101 bne.n 8004960 - 800495c: 2302 movs r3, #2 - 800495e: e02f b.n 80049c0 - 8004960: 687b ldr r3, [r7, #4] - 8004962: 2284 movs r2, #132 @ 0x84 - 8004964: 2101 movs r1, #1 - 8004966: 5499 strb r1, [r3, r2] + 80049be: 687b ldr r3, [r7, #4] + 80049c0: 2284 movs r2, #132 @ 0x84 + 80049c2: 5c9b ldrb r3, [r3, r2] + 80049c4: 2b01 cmp r3, #1 + 80049c6: d101 bne.n 80049cc + 80049c8: 2302 movs r3, #2 + 80049ca: e02f b.n 8004a2c + 80049cc: 687b ldr r3, [r7, #4] + 80049ce: 2284 movs r2, #132 @ 0x84 + 80049d0: 2101 movs r1, #1 + 80049d2: 5499 strb r1, [r3, r2] huart->gState = HAL_UART_STATE_BUSY; - 8004968: 687b ldr r3, [r7, #4] - 800496a: 2288 movs r2, #136 @ 0x88 - 800496c: 2124 movs r1, #36 @ 0x24 - 800496e: 5099 str r1, [r3, r2] + 80049d4: 687b ldr r3, [r7, #4] + 80049d6: 2288 movs r2, #136 @ 0x88 + 80049d8: 2124 movs r1, #36 @ 0x24 + 80049da: 5099 str r1, [r3, r2] /* Save actual UART configuration */ tmpcr1 = READ_REG(huart->Instance->CR1); - 8004970: 687b ldr r3, [r7, #4] - 8004972: 681b ldr r3, [r3, #0] - 8004974: 681b ldr r3, [r3, #0] - 8004976: 60fb str r3, [r7, #12] + 80049dc: 687b ldr r3, [r7, #4] + 80049de: 681b ldr r3, [r3, #0] + 80049e0: 681b ldr r3, [r3, #0] + 80049e2: 60fb str r3, [r7, #12] /* Disable UART */ __HAL_UART_DISABLE(huart); - 8004978: 687b ldr r3, [r7, #4] - 800497a: 681b ldr r3, [r3, #0] - 800497c: 681a ldr r2, [r3, #0] - 800497e: 687b ldr r3, [r7, #4] - 8004980: 681b ldr r3, [r3, #0] - 8004982: 2101 movs r1, #1 - 8004984: 438a bics r2, r1 - 8004986: 601a str r2, [r3, #0] + 80049e4: 687b ldr r3, [r7, #4] + 80049e6: 681b ldr r3, [r3, #0] + 80049e8: 681a ldr r2, [r3, #0] + 80049ea: 687b ldr r3, [r7, #4] + 80049ec: 681b ldr r3, [r3, #0] + 80049ee: 2101 movs r1, #1 + 80049f0: 438a bics r2, r1 + 80049f2: 601a str r2, [r3, #0] /* Update RX threshold configuration */ MODIFY_REG(huart->Instance->CR3, USART_CR3_RXFTCFG, Threshold); - 8004988: 687b ldr r3, [r7, #4] - 800498a: 681b ldr r3, [r3, #0] - 800498c: 689b ldr r3, [r3, #8] - 800498e: 4a0e ldr r2, [pc, #56] @ (80049c8 ) - 8004990: 4013 ands r3, r2 - 8004992: 0019 movs r1, r3 - 8004994: 687b ldr r3, [r7, #4] - 8004996: 681b ldr r3, [r3, #0] - 8004998: 683a ldr r2, [r7, #0] - 800499a: 430a orrs r2, r1 - 800499c: 609a str r2, [r3, #8] + 80049f4: 687b ldr r3, [r7, #4] + 80049f6: 681b ldr r3, [r3, #0] + 80049f8: 689b ldr r3, [r3, #8] + 80049fa: 4a0e ldr r2, [pc, #56] @ (8004a34 ) + 80049fc: 4013 ands r3, r2 + 80049fe: 0019 movs r1, r3 + 8004a00: 687b ldr r3, [r7, #4] + 8004a02: 681b ldr r3, [r3, #0] + 8004a04: 683a ldr r2, [r7, #0] + 8004a06: 430a orrs r2, r1 + 8004a08: 609a str r2, [r3, #8] /* Determine the number of data to process during RX/TX ISR execution */ UARTEx_SetNbDataToProcess(huart); - 800499e: 687b ldr r3, [r7, #4] - 80049a0: 0018 movs r0, r3 - 80049a2: f000 f813 bl 80049cc + 8004a0a: 687b ldr r3, [r7, #4] + 8004a0c: 0018 movs r0, r3 + 8004a0e: f000 f813 bl 8004a38 /* Restore UART configuration */ WRITE_REG(huart->Instance->CR1, tmpcr1); - 80049a6: 687b ldr r3, [r7, #4] - 80049a8: 681b ldr r3, [r3, #0] - 80049aa: 68fa ldr r2, [r7, #12] - 80049ac: 601a str r2, [r3, #0] + 8004a12: 687b ldr r3, [r7, #4] + 8004a14: 681b ldr r3, [r3, #0] + 8004a16: 68fa ldr r2, [r7, #12] + 8004a18: 601a str r2, [r3, #0] huart->gState = HAL_UART_STATE_READY; - 80049ae: 687b ldr r3, [r7, #4] - 80049b0: 2288 movs r2, #136 @ 0x88 - 80049b2: 2120 movs r1, #32 - 80049b4: 5099 str r1, [r3, r2] + 8004a1a: 687b ldr r3, [r7, #4] + 8004a1c: 2288 movs r2, #136 @ 0x88 + 8004a1e: 2120 movs r1, #32 + 8004a20: 5099 str r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(huart); - 80049b6: 687b ldr r3, [r7, #4] - 80049b8: 2284 movs r2, #132 @ 0x84 - 80049ba: 2100 movs r1, #0 - 80049bc: 5499 strb r1, [r3, r2] + 8004a22: 687b ldr r3, [r7, #4] + 8004a24: 2284 movs r2, #132 @ 0x84 + 8004a26: 2100 movs r1, #0 + 8004a28: 5499 strb r1, [r3, r2] return HAL_OK; - 80049be: 2300 movs r3, #0 + 8004a2a: 2300 movs r3, #0 } - 80049c0: 0018 movs r0, r3 - 80049c2: 46bd mov sp, r7 - 80049c4: b004 add sp, #16 - 80049c6: bd80 pop {r7, pc} - 80049c8: f1ffffff .word 0xf1ffffff + 8004a2c: 0018 movs r0, r3 + 8004a2e: 46bd mov sp, r7 + 8004a30: b004 add sp, #16 + 8004a32: bd80 pop {r7, pc} + 8004a34: f1ffffff .word 0xf1ffffff -080049cc : +08004a38 : * the UART configuration registers. * @param huart UART handle. * @retval None */ static void UARTEx_SetNbDataToProcess(UART_HandleTypeDef *huart) { - 80049cc: b5f0 push {r4, r5, r6, r7, lr} - 80049ce: b085 sub sp, #20 - 80049d0: af00 add r7, sp, #0 - 80049d2: 6078 str r0, [r7, #4] + 8004a38: b5f0 push {r4, r5, r6, r7, lr} + 8004a3a: b085 sub sp, #20 + 8004a3c: af00 add r7, sp, #0 + 8004a3e: 6078 str r0, [r7, #4] uint8_t rx_fifo_threshold; uint8_t tx_fifo_threshold; static const uint8_t numerator[] = {1U, 1U, 1U, 3U, 7U, 1U, 0U, 0U}; static const uint8_t denominator[] = {8U, 4U, 2U, 4U, 8U, 1U, 1U, 1U}; if (huart->FifoMode == UART_FIFOMODE_DISABLE) - 80049d4: 687b ldr r3, [r7, #4] - 80049d6: 6e5b ldr r3, [r3, #100] @ 0x64 - 80049d8: 2b00 cmp r3, #0 - 80049da: d108 bne.n 80049ee + 8004a40: 687b ldr r3, [r7, #4] + 8004a42: 6e5b ldr r3, [r3, #100] @ 0x64 + 8004a44: 2b00 cmp r3, #0 + 8004a46: d108 bne.n 8004a5a { huart->NbTxDataToProcess = 1U; - 80049dc: 687b ldr r3, [r7, #4] - 80049de: 226a movs r2, #106 @ 0x6a - 80049e0: 2101 movs r1, #1 - 80049e2: 5299 strh r1, [r3, r2] + 8004a48: 687b ldr r3, [r7, #4] + 8004a4a: 226a movs r2, #106 @ 0x6a + 8004a4c: 2101 movs r1, #1 + 8004a4e: 5299 strh r1, [r3, r2] huart->NbRxDataToProcess = 1U; - 80049e4: 687b ldr r3, [r7, #4] - 80049e6: 2268 movs r2, #104 @ 0x68 - 80049e8: 2101 movs r1, #1 - 80049ea: 5299 strh r1, [r3, r2] + 8004a50: 687b ldr r3, [r7, #4] + 8004a52: 2268 movs r2, #104 @ 0x68 + 8004a54: 2101 movs r1, #1 + 8004a56: 5299 strh r1, [r3, r2] huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) / (uint16_t)denominator[tx_fifo_threshold]; huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) / (uint16_t)denominator[rx_fifo_threshold]; } } - 80049ec: e043 b.n 8004a76 + 8004a58: e043 b.n 8004ae2 rx_fifo_depth = RX_FIFO_DEPTH; - 80049ee: 260f movs r6, #15 - 80049f0: 19bb adds r3, r7, r6 - 80049f2: 2208 movs r2, #8 - 80049f4: 701a strb r2, [r3, #0] + 8004a5a: 260f movs r6, #15 + 8004a5c: 19bb adds r3, r7, r6 + 8004a5e: 2208 movs r2, #8 + 8004a60: 701a strb r2, [r3, #0] tx_fifo_depth = TX_FIFO_DEPTH; - 80049f6: 200e movs r0, #14 - 80049f8: 183b adds r3, r7, r0 - 80049fa: 2208 movs r2, #8 - 80049fc: 701a strb r2, [r3, #0] + 8004a62: 200e movs r0, #14 + 8004a64: 183b adds r3, r7, r0 + 8004a66: 2208 movs r2, #8 + 8004a68: 701a strb r2, [r3, #0] rx_fifo_threshold = (uint8_t)(READ_BIT(huart->Instance->CR3, USART_CR3_RXFTCFG) >> USART_CR3_RXFTCFG_Pos); - 80049fe: 687b ldr r3, [r7, #4] - 8004a00: 681b ldr r3, [r3, #0] - 8004a02: 689b ldr r3, [r3, #8] - 8004a04: 0e5b lsrs r3, r3, #25 - 8004a06: b2da uxtb r2, r3 - 8004a08: 240d movs r4, #13 - 8004a0a: 193b adds r3, r7, r4 - 8004a0c: 2107 movs r1, #7 - 8004a0e: 400a ands r2, r1 - 8004a10: 701a strb r2, [r3, #0] + 8004a6a: 687b ldr r3, [r7, #4] + 8004a6c: 681b ldr r3, [r3, #0] + 8004a6e: 689b ldr r3, [r3, #8] + 8004a70: 0e5b lsrs r3, r3, #25 + 8004a72: b2da uxtb r2, r3 + 8004a74: 240d movs r4, #13 + 8004a76: 193b adds r3, r7, r4 + 8004a78: 2107 movs r1, #7 + 8004a7a: 400a ands r2, r1 + 8004a7c: 701a strb r2, [r3, #0] tx_fifo_threshold = (uint8_t)(READ_BIT(huart->Instance->CR3, USART_CR3_TXFTCFG) >> USART_CR3_TXFTCFG_Pos); - 8004a12: 687b ldr r3, [r7, #4] - 8004a14: 681b ldr r3, [r3, #0] - 8004a16: 689b ldr r3, [r3, #8] - 8004a18: 0f5b lsrs r3, r3, #29 - 8004a1a: b2da uxtb r2, r3 - 8004a1c: 250c movs r5, #12 - 8004a1e: 197b adds r3, r7, r5 - 8004a20: 2107 movs r1, #7 - 8004a22: 400a ands r2, r1 - 8004a24: 701a strb r2, [r3, #0] + 8004a7e: 687b ldr r3, [r7, #4] + 8004a80: 681b ldr r3, [r3, #0] + 8004a82: 689b ldr r3, [r3, #8] + 8004a84: 0f5b lsrs r3, r3, #29 + 8004a86: b2da uxtb r2, r3 + 8004a88: 250c movs r5, #12 + 8004a8a: 197b adds r3, r7, r5 + 8004a8c: 2107 movs r1, #7 + 8004a8e: 400a ands r2, r1 + 8004a90: 701a strb r2, [r3, #0] huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) / - 8004a26: 183b adds r3, r7, r0 - 8004a28: 781b ldrb r3, [r3, #0] - 8004a2a: 197a adds r2, r7, r5 - 8004a2c: 7812 ldrb r2, [r2, #0] - 8004a2e: 4914 ldr r1, [pc, #80] @ (8004a80 ) - 8004a30: 5c8a ldrb r2, [r1, r2] - 8004a32: 435a muls r2, r3 - 8004a34: 0010 movs r0, r2 + 8004a92: 183b adds r3, r7, r0 + 8004a94: 781b ldrb r3, [r3, #0] + 8004a96: 197a adds r2, r7, r5 + 8004a98: 7812 ldrb r2, [r2, #0] + 8004a9a: 4914 ldr r1, [pc, #80] @ (8004aec ) + 8004a9c: 5c8a ldrb r2, [r1, r2] + 8004a9e: 435a muls r2, r3 + 8004aa0: 0010 movs r0, r2 (uint16_t)denominator[tx_fifo_threshold]; - 8004a36: 197b adds r3, r7, r5 - 8004a38: 781b ldrb r3, [r3, #0] - 8004a3a: 4a12 ldr r2, [pc, #72] @ (8004a84 ) - 8004a3c: 5cd3 ldrb r3, [r2, r3] + 8004aa2: 197b adds r3, r7, r5 + 8004aa4: 781b ldrb r3, [r3, #0] + 8004aa6: 4a12 ldr r2, [pc, #72] @ (8004af0 ) + 8004aa8: 5cd3 ldrb r3, [r2, r3] huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) / - 8004a3e: 0019 movs r1, r3 - 8004a40: f7fb fbe8 bl 8000214 <__divsi3> - 8004a44: 0003 movs r3, r0 - 8004a46: b299 uxth r1, r3 - 8004a48: 687b ldr r3, [r7, #4] - 8004a4a: 226a movs r2, #106 @ 0x6a - 8004a4c: 5299 strh r1, [r3, r2] + 8004aaa: 0019 movs r1, r3 + 8004aac: f7fb fbb2 bl 8000214 <__divsi3> + 8004ab0: 0003 movs r3, r0 + 8004ab2: b299 uxth r1, r3 + 8004ab4: 687b ldr r3, [r7, #4] + 8004ab6: 226a movs r2, #106 @ 0x6a + 8004ab8: 5299 strh r1, [r3, r2] huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) / - 8004a4e: 19bb adds r3, r7, r6 - 8004a50: 781b ldrb r3, [r3, #0] - 8004a52: 193a adds r2, r7, r4 - 8004a54: 7812 ldrb r2, [r2, #0] - 8004a56: 490a ldr r1, [pc, #40] @ (8004a80 ) - 8004a58: 5c8a ldrb r2, [r1, r2] - 8004a5a: 435a muls r2, r3 - 8004a5c: 0010 movs r0, r2 + 8004aba: 19bb adds r3, r7, r6 + 8004abc: 781b ldrb r3, [r3, #0] + 8004abe: 193a adds r2, r7, r4 + 8004ac0: 7812 ldrb r2, [r2, #0] + 8004ac2: 490a ldr r1, [pc, #40] @ (8004aec ) + 8004ac4: 5c8a ldrb r2, [r1, r2] + 8004ac6: 435a muls r2, r3 + 8004ac8: 0010 movs r0, r2 (uint16_t)denominator[rx_fifo_threshold]; - 8004a5e: 193b adds r3, r7, r4 - 8004a60: 781b ldrb r3, [r3, #0] - 8004a62: 4a08 ldr r2, [pc, #32] @ (8004a84 ) - 8004a64: 5cd3 ldrb r3, [r2, r3] + 8004aca: 193b adds r3, r7, r4 + 8004acc: 781b ldrb r3, [r3, #0] + 8004ace: 4a08 ldr r2, [pc, #32] @ (8004af0 ) + 8004ad0: 5cd3 ldrb r3, [r2, r3] huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) / - 8004a66: 0019 movs r1, r3 - 8004a68: f7fb fbd4 bl 8000214 <__divsi3> - 8004a6c: 0003 movs r3, r0 - 8004a6e: b299 uxth r1, r3 - 8004a70: 687b ldr r3, [r7, #4] - 8004a72: 2268 movs r2, #104 @ 0x68 - 8004a74: 5299 strh r1, [r3, r2] + 8004ad2: 0019 movs r1, r3 + 8004ad4: f7fb fb9e bl 8000214 <__divsi3> + 8004ad8: 0003 movs r3, r0 + 8004ada: b299 uxth r1, r3 + 8004adc: 687b ldr r3, [r7, #4] + 8004ade: 2268 movs r2, #104 @ 0x68 + 8004ae0: 5299 strh r1, [r3, r2] } - 8004a76: 46c0 nop @ (mov r8, r8) - 8004a78: 46bd mov sp, r7 - 8004a7a: b005 add sp, #20 - 8004a7c: bdf0 pop {r4, r5, r6, r7, pc} - 8004a7e: 46c0 nop @ (mov r8, r8) - 8004a80: 08004b94 .word 0x08004b94 - 8004a84: 08004b9c .word 0x08004b9c - -08004a88 : - 8004a88: 0003 movs r3, r0 - 8004a8a: 1882 adds r2, r0, r2 - 8004a8c: 4293 cmp r3, r2 - 8004a8e: d100 bne.n 8004a92 - 8004a90: 4770 bx lr - 8004a92: 7019 strb r1, [r3, #0] - 8004a94: 3301 adds r3, #1 - 8004a96: e7f9 b.n 8004a8c - -08004a98 <__libc_init_array>: - 8004a98: b570 push {r4, r5, r6, lr} - 8004a9a: 2600 movs r6, #0 - 8004a9c: 4c0c ldr r4, [pc, #48] @ (8004ad0 <__libc_init_array+0x38>) - 8004a9e: 4d0d ldr r5, [pc, #52] @ (8004ad4 <__libc_init_array+0x3c>) - 8004aa0: 1b64 subs r4, r4, r5 - 8004aa2: 10a4 asrs r4, r4, #2 - 8004aa4: 42a6 cmp r6, r4 - 8004aa6: d109 bne.n 8004abc <__libc_init_array+0x24> - 8004aa8: 2600 movs r6, #0 - 8004aaa: f000 f819 bl 8004ae0 <_init> - 8004aae: 4c0a ldr r4, [pc, #40] @ (8004ad8 <__libc_init_array+0x40>) - 8004ab0: 4d0a ldr r5, [pc, #40] @ (8004adc <__libc_init_array+0x44>) - 8004ab2: 1b64 subs r4, r4, r5 - 8004ab4: 10a4 asrs r4, r4, #2 - 8004ab6: 42a6 cmp r6, r4 - 8004ab8: d105 bne.n 8004ac6 <__libc_init_array+0x2e> - 8004aba: bd70 pop {r4, r5, r6, pc} - 8004abc: 00b3 lsls r3, r6, #2 - 8004abe: 58eb ldr r3, [r5, r3] - 8004ac0: 4798 blx r3 - 8004ac2: 3601 adds r6, #1 - 8004ac4: e7ee b.n 8004aa4 <__libc_init_array+0xc> - 8004ac6: 00b3 lsls r3, r6, #2 - 8004ac8: 58eb ldr r3, [r5, r3] - 8004aca: 4798 blx r3 - 8004acc: 3601 adds r6, #1 - 8004ace: e7f2 b.n 8004ab6 <__libc_init_array+0x1e> - 8004ad0: 08004ba4 .word 0x08004ba4 - 8004ad4: 08004ba4 .word 0x08004ba4 - 8004ad8: 08004ba8 .word 0x08004ba8 - 8004adc: 08004ba4 .word 0x08004ba4 - -08004ae0 <_init>: - 8004ae0: b5f8 push {r3, r4, r5, r6, r7, lr} 8004ae2: 46c0 nop @ (mov r8, r8) - 8004ae4: bcf8 pop {r3, r4, r5, r6, r7} - 8004ae6: bc08 pop {r3} - 8004ae8: 469e mov lr, r3 - 8004aea: 4770 bx lr + 8004ae4: 46bd mov sp, r7 + 8004ae6: b005 add sp, #20 + 8004ae8: bdf0 pop {r4, r5, r6, r7, pc} + 8004aea: 46c0 nop @ (mov r8, r8) + 8004aec: 08004c00 .word 0x08004c00 + 8004af0: 08004c08 .word 0x08004c08 -08004aec <_fini>: - 8004aec: b5f8 push {r3, r4, r5, r6, r7, lr} - 8004aee: 46c0 nop @ (mov r8, r8) - 8004af0: bcf8 pop {r3, r4, r5, r6, r7} - 8004af2: bc08 pop {r3} - 8004af4: 469e mov lr, r3 - 8004af6: 4770 bx lr +08004af4 : + 8004af4: 0003 movs r3, r0 + 8004af6: 1882 adds r2, r0, r2 + 8004af8: 4293 cmp r3, r2 + 8004afa: d100 bne.n 8004afe + 8004afc: 4770 bx lr + 8004afe: 7019 strb r1, [r3, #0] + 8004b00: 3301 adds r3, #1 + 8004b02: e7f9 b.n 8004af8 + +08004b04 <__libc_init_array>: + 8004b04: b570 push {r4, r5, r6, lr} + 8004b06: 2600 movs r6, #0 + 8004b08: 4c0c ldr r4, [pc, #48] @ (8004b3c <__libc_init_array+0x38>) + 8004b0a: 4d0d ldr r5, [pc, #52] @ (8004b40 <__libc_init_array+0x3c>) + 8004b0c: 1b64 subs r4, r4, r5 + 8004b0e: 10a4 asrs r4, r4, #2 + 8004b10: 42a6 cmp r6, r4 + 8004b12: d109 bne.n 8004b28 <__libc_init_array+0x24> + 8004b14: 2600 movs r6, #0 + 8004b16: f000 f819 bl 8004b4c <_init> + 8004b1a: 4c0a ldr r4, [pc, #40] @ (8004b44 <__libc_init_array+0x40>) + 8004b1c: 4d0a ldr r5, [pc, #40] @ (8004b48 <__libc_init_array+0x44>) + 8004b1e: 1b64 subs r4, r4, r5 + 8004b20: 10a4 asrs r4, r4, #2 + 8004b22: 42a6 cmp r6, r4 + 8004b24: d105 bne.n 8004b32 <__libc_init_array+0x2e> + 8004b26: bd70 pop {r4, r5, r6, pc} + 8004b28: 00b3 lsls r3, r6, #2 + 8004b2a: 58eb ldr r3, [r5, r3] + 8004b2c: 4798 blx r3 + 8004b2e: 3601 adds r6, #1 + 8004b30: e7ee b.n 8004b10 <__libc_init_array+0xc> + 8004b32: 00b3 lsls r3, r6, #2 + 8004b34: 58eb ldr r3, [r5, r3] + 8004b36: 4798 blx r3 + 8004b38: 3601 adds r6, #1 + 8004b3a: e7f2 b.n 8004b22 <__libc_init_array+0x1e> + 8004b3c: 08004c10 .word 0x08004c10 + 8004b40: 08004c10 .word 0x08004c10 + 8004b44: 08004c14 .word 0x08004c14 + 8004b48: 08004c10 .word 0x08004c10 + +08004b4c <_init>: + 8004b4c: b5f8 push {r3, r4, r5, r6, r7, lr} + 8004b4e: 46c0 nop @ (mov r8, r8) + 8004b50: bcf8 pop {r3, r4, r5, r6, r7} + 8004b52: bc08 pop {r3} + 8004b54: 469e mov lr, r3 + 8004b56: 4770 bx lr + +08004b58 <_fini>: + 8004b58: b5f8 push {r3, r4, r5, r6, r7, lr} + 8004b5a: 46c0 nop @ (mov r8, r8) + 8004b5c: bcf8 pop {r3, r4, r5, r6, r7} + 8004b5e: bc08 pop {r3} + 8004b60: 469e mov lr, r3 + 8004b62: 4770 bx lr diff --git a/Debug/wires.map b/Debug/wires.map index 3768713..d996afd 100644 --- a/Debug/wires.map +++ b/Debug/wires.map @@ -207,7 +207,7 @@ Discarded input sections .debug_macro 0x00000000 0x693 ./Core/Src/stm32g0xx_hal_msp.o .debug_macro 0x00000000 0xa6 ./Core/Src/stm32g0xx_hal_msp.o .debug_macro 0x00000000 0x43d ./Core/Src/stm32g0xx_hal_msp.o - .debug_macro 0x00000000 0xdc ./Core/Src/stm32g0xx_hal_msp.o + .debug_macro 0x00000000 0xe8 ./Core/Src/stm32g0xx_hal_msp.o .group 0x00000000 0xc ./Core/Src/stm32g0xx_it.o .group 0x00000000 0xc ./Core/Src/stm32g0xx_it.o .group 0x00000000 0xc ./Core/Src/stm32g0xx_it.o @@ -300,7 +300,7 @@ Discarded input sections .debug_macro 0x00000000 0x693 ./Core/Src/stm32g0xx_it.o .debug_macro 0x00000000 0xa6 ./Core/Src/stm32g0xx_it.o .debug_macro 0x00000000 0x43d ./Core/Src/stm32g0xx_it.o - .debug_macro 0x00000000 0xdc ./Core/Src/stm32g0xx_it.o + .debug_macro 0x00000000 0xe8 ./Core/Src/stm32g0xx_it.o .group 0x00000000 0xc ./Core/Src/syscalls.o .group 0x00000000 0xc ./Core/Src/syscalls.o .group 0x00000000 0xc ./Core/Src/syscalls.o @@ -3221,7 +3221,7 @@ LOAD C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext 0x08000000 g_pfnVectors 0x080000b8 . = ALIGN (0x4) -.text 0x080000b8 0x4a40 +.text 0x080000b8 0x4aac 0x080000b8 . = ALIGN (0x4) *(.text) .text 0x080000b8 0x48 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o @@ -3247,382 +3247,382 @@ LOAD C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext .text.MX_USART2_UART_Init 0x0800053c 0x9c ./Core/Src/main.o .text.MX_GPIO_Init - 0x080005d8 0x120 ./Core/Src/main.o + 0x080005d8 0x170 ./Core/Src/main.o .text.HAL_I2C_ListenCpltCallback - 0x080006f8 0x2c ./Core/Src/main.o - 0x080006f8 HAL_I2C_ListenCpltCallback + 0x08000748 0x2c ./Core/Src/main.o + 0x08000748 HAL_I2C_ListenCpltCallback .text.HAL_I2C_AddrCallback - 0x08000724 0x40 ./Core/Src/main.o - 0x08000724 HAL_I2C_AddrCallback + 0x08000774 0x40 ./Core/Src/main.o + 0x08000774 HAL_I2C_AddrCallback .text.send_register - 0x08000764 0x108 ./Core/Src/main.o - 0x08000764 send_register + 0x080007b4 0x108 ./Core/Src/main.o + 0x080007b4 send_register .text.recv_register - 0x0800086c 0x84 ./Core/Src/main.o - 0x0800086c recv_register + 0x080008bc 0x84 ./Core/Src/main.o + 0x080008bc recv_register .text.HAL_I2C_SlaveRxCpltCallback - 0x080008f0 0xa0 ./Core/Src/main.o - 0x080008f0 HAL_I2C_SlaveRxCpltCallback + 0x08000940 0xa0 ./Core/Src/main.o + 0x08000940 HAL_I2C_SlaveRxCpltCallback .text.HAL_I2C_SlaveTxCpltCallback - 0x08000990 0x10 ./Core/Src/main.o - 0x08000990 HAL_I2C_SlaveTxCpltCallback + 0x080009e0 0x10 ./Core/Src/main.o + 0x080009e0 HAL_I2C_SlaveTxCpltCallback .text.scan_wires - 0x080009a0 0x178 ./Core/Src/main.o - 0x080009a0 scan_wires + 0x080009f0 0x178 ./Core/Src/main.o + 0x080009f0 scan_wires .text.scan_button - 0x08000b18 0x58 ./Core/Src/main.o - 0x08000b18 scan_button + 0x08000b68 0x58 ./Core/Src/main.o + 0x08000b68 scan_button .text.set_relay_buzz - 0x08000b70 0x5c ./Core/Src/main.o - 0x08000b70 set_relay_buzz + 0x08000bc0 0x74 ./Core/Src/main.o + 0x08000bc0 set_relay_buzz .text.set_leds - 0x08000bcc 0x90 ./Core/Src/main.o - 0x08000bcc set_leds + 0x08000c34 0x94 ./Core/Src/main.o + 0x08000c34 set_leds .text.send_interupt - 0x08000c5c 0x40 ./Core/Src/main.o - 0x08000c5c send_interupt + 0x08000cc8 0x40 ./Core/Src/main.o + 0x08000cc8 send_interupt .text.handle_strike - 0x08000c9c 0xd4 ./Core/Src/main.o - 0x08000c9c handle_strike + 0x08000d08 0xd4 ./Core/Src/main.o + 0x08000d08 handle_strike .text.Error_Handler - 0x08000d70 0xc ./Core/Src/main.o - 0x08000d70 Error_Handler + 0x08000ddc 0xc ./Core/Src/main.o + 0x08000ddc Error_Handler .text.HAL_MspInit - 0x08000d7c 0x50 ./Core/Src/stm32g0xx_hal_msp.o - 0x08000d7c HAL_MspInit + 0x08000de8 0x50 ./Core/Src/stm32g0xx_hal_msp.o + 0x08000de8 HAL_MspInit .text.HAL_I2C_MspInit - 0x08000dcc 0xd4 ./Core/Src/stm32g0xx_hal_msp.o - 0x08000dcc HAL_I2C_MspInit + 0x08000e38 0xd4 ./Core/Src/stm32g0xx_hal_msp.o + 0x08000e38 HAL_I2C_MspInit .text.HAL_UART_MspInit - 0x08000ea0 0xc0 ./Core/Src/stm32g0xx_hal_msp.o - 0x08000ea0 HAL_UART_MspInit + 0x08000f0c 0xc0 ./Core/Src/stm32g0xx_hal_msp.o + 0x08000f0c HAL_UART_MspInit .text.NMI_Handler - 0x08000f60 0x8 ./Core/Src/stm32g0xx_it.o - 0x08000f60 NMI_Handler + 0x08000fcc 0x8 ./Core/Src/stm32g0xx_it.o + 0x08000fcc NMI_Handler .text.HardFault_Handler - 0x08000f68 0x8 ./Core/Src/stm32g0xx_it.o - 0x08000f68 HardFault_Handler + 0x08000fd4 0x8 ./Core/Src/stm32g0xx_it.o + 0x08000fd4 HardFault_Handler .text.SVC_Handler - 0x08000f70 0xa ./Core/Src/stm32g0xx_it.o - 0x08000f70 SVC_Handler + 0x08000fdc 0xa ./Core/Src/stm32g0xx_it.o + 0x08000fdc SVC_Handler .text.PendSV_Handler - 0x08000f7a 0xa ./Core/Src/stm32g0xx_it.o - 0x08000f7a PendSV_Handler + 0x08000fe6 0xa ./Core/Src/stm32g0xx_it.o + 0x08000fe6 PendSV_Handler .text.SysTick_Handler - 0x08000f84 0xe ./Core/Src/stm32g0xx_it.o - 0x08000f84 SysTick_Handler - *fill* 0x08000f92 0x2 + 0x08000ff0 0xe ./Core/Src/stm32g0xx_it.o + 0x08000ff0 SysTick_Handler + *fill* 0x08000ffe 0x2 .text.I2C1_IRQHandler - 0x08000f94 0x30 ./Core/Src/stm32g0xx_it.o - 0x08000f94 I2C1_IRQHandler + 0x08001000 0x30 ./Core/Src/stm32g0xx_it.o + 0x08001000 I2C1_IRQHandler .text.SystemInit - 0x08000fc4 0xa ./Core/Src/system_stm32g0xx.o - 0x08000fc4 SystemInit - *fill* 0x08000fce 0x2 + 0x08001030 0xa ./Core/Src/system_stm32g0xx.o + 0x08001030 SystemInit + *fill* 0x0800103a 0x2 .text.Reset_Handler - 0x08000fd0 0x50 ./Core/Startup/startup_stm32g070cbtx.o - 0x08000fd0 Reset_Handler + 0x0800103c 0x50 ./Core/Startup/startup_stm32g070cbtx.o + 0x0800103c Reset_Handler .text.Default_Handler - 0x08001020 0x2 ./Core/Startup/startup_stm32g070cbtx.o - 0x08001020 TIM1_CC_IRQHandler - 0x08001020 TIM6_IRQHandler - 0x08001020 RTC_TAMP_IRQHandler - 0x08001020 SPI1_IRQHandler - 0x08001020 USART3_4_IRQHandler - 0x08001020 EXTI2_3_IRQHandler - 0x08001020 ADC1_IRQHandler - 0x08001020 I2C2_IRQHandler - 0x08001020 TIM17_IRQHandler - 0x08001020 TIM16_IRQHandler - 0x08001020 TIM3_IRQHandler - 0x08001020 EXTI4_15_IRQHandler - 0x08001020 RCC_IRQHandler - 0x08001020 DMA1_Channel1_IRQHandler - 0x08001020 Default_Handler - 0x08001020 TIM14_IRQHandler - 0x08001020 TIM7_IRQHandler - 0x08001020 TIM15_IRQHandler - 0x08001020 EXTI0_1_IRQHandler - 0x08001020 SPI2_IRQHandler - 0x08001020 WWDG_IRQHandler - 0x08001020 DMA1_Ch4_7_DMAMUX1_OVR_IRQHandler - 0x08001020 DMA1_Channel2_3_IRQHandler - 0x08001020 USART2_IRQHandler - 0x08001020 FLASH_IRQHandler - 0x08001020 USART1_IRQHandler - 0x08001020 TIM1_BRK_UP_TRG_COM_IRQHandler - *fill* 0x08001022 0x2 + 0x0800108c 0x2 ./Core/Startup/startup_stm32g070cbtx.o + 0x0800108c TIM1_CC_IRQHandler + 0x0800108c TIM6_IRQHandler + 0x0800108c RTC_TAMP_IRQHandler + 0x0800108c SPI1_IRQHandler + 0x0800108c USART3_4_IRQHandler + 0x0800108c EXTI2_3_IRQHandler + 0x0800108c ADC1_IRQHandler + 0x0800108c I2C2_IRQHandler + 0x0800108c TIM17_IRQHandler + 0x0800108c TIM16_IRQHandler + 0x0800108c TIM3_IRQHandler + 0x0800108c EXTI4_15_IRQHandler + 0x0800108c RCC_IRQHandler + 0x0800108c DMA1_Channel1_IRQHandler + 0x0800108c Default_Handler + 0x0800108c TIM14_IRQHandler + 0x0800108c TIM7_IRQHandler + 0x0800108c TIM15_IRQHandler + 0x0800108c EXTI0_1_IRQHandler + 0x0800108c SPI2_IRQHandler + 0x0800108c WWDG_IRQHandler + 0x0800108c DMA1_Ch4_7_DMAMUX1_OVR_IRQHandler + 0x0800108c DMA1_Channel2_3_IRQHandler + 0x0800108c USART2_IRQHandler + 0x0800108c FLASH_IRQHandler + 0x0800108c USART1_IRQHandler + 0x0800108c TIM1_BRK_UP_TRG_COM_IRQHandler + *fill* 0x0800108e 0x2 .text.HAL_Init - 0x08001024 0x40 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - 0x08001024 HAL_Init + 0x08001090 0x40 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + 0x08001090 HAL_Init .text.HAL_InitTick - 0x08001064 0x94 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - 0x08001064 HAL_InitTick + 0x080010d0 0x94 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + 0x080010d0 HAL_InitTick .text.HAL_IncTick - 0x080010f8 0x24 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - 0x080010f8 HAL_IncTick + 0x08001164 0x24 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + 0x08001164 HAL_IncTick .text.HAL_GetTick - 0x0800111c 0x14 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - 0x0800111c HAL_GetTick + 0x08001188 0x14 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + 0x08001188 HAL_GetTick .text.HAL_SYSCFG_StrobeDBattpinsConfig - 0x08001130 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - 0x08001130 HAL_SYSCFG_StrobeDBattpinsConfig + 0x0800119c 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + 0x0800119c HAL_SYSCFG_StrobeDBattpinsConfig .text.__NVIC_EnableIRQ - 0x0800115c 0x34 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + 0x080011c8 0x34 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o .text.__NVIC_SetPriority - 0x08001190 0xdc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + 0x080011fc 0xdc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o .text.SysTick_Config - 0x0800126c 0x48 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + 0x080012d8 0x48 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o .text.HAL_NVIC_SetPriority - 0x080012b4 0x2a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o - 0x080012b4 HAL_NVIC_SetPriority + 0x08001320 0x2a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + 0x08001320 HAL_NVIC_SetPriority .text.HAL_NVIC_EnableIRQ - 0x080012de 0x20 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o - 0x080012de HAL_NVIC_EnableIRQ + 0x0800134a 0x20 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + 0x0800134a HAL_NVIC_EnableIRQ .text.HAL_SYSTICK_Config - 0x080012fe 0x1a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o - 0x080012fe HAL_SYSTICK_Config + 0x0800136a 0x1a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + 0x0800136a HAL_SYSTICK_Config .text.HAL_DMA_Abort_IT - 0x08001318 0xd4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o - 0x08001318 HAL_DMA_Abort_IT + 0x08001384 0xd4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o + 0x08001384 HAL_DMA_Abort_IT .text.HAL_DMA_GetState - 0x080013ec 0x18 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o - 0x080013ec HAL_DMA_GetState + 0x08001458 0x18 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o + 0x08001458 HAL_DMA_GetState .text.HAL_GPIO_Init - 0x08001404 0x2c8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o - 0x08001404 HAL_GPIO_Init + 0x08001470 0x2c8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + 0x08001470 HAL_GPIO_Init .text.HAL_GPIO_ReadPin - 0x080016cc 0x3a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o - 0x080016cc HAL_GPIO_ReadPin + 0x08001738 0x3a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + 0x08001738 HAL_GPIO_ReadPin .text.HAL_GPIO_WritePin - 0x08001706 0x3a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o - 0x08001706 HAL_GPIO_WritePin + 0x08001772 0x3a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + 0x08001772 HAL_GPIO_WritePin .text.HAL_I2C_Init - 0x08001740 0x14c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001740 HAL_I2C_Init + 0x080017ac 0x14c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x080017ac HAL_I2C_Init .text.HAL_I2C_Slave_Seq_Transmit_IT - 0x0800188c 0x180 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x0800188c HAL_I2C_Slave_Seq_Transmit_IT + 0x080018f8 0x180 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x080018f8 HAL_I2C_Slave_Seq_Transmit_IT .text.HAL_I2C_Slave_Seq_Receive_IT - 0x08001a0c 0x184 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001a0c HAL_I2C_Slave_Seq_Receive_IT + 0x08001a78 0x184 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08001a78 HAL_I2C_Slave_Seq_Receive_IT .text.HAL_I2C_EnableListen_IT - 0x08001b90 0x44 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001b90 HAL_I2C_EnableListen_IT + 0x08001bfc 0x44 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08001bfc HAL_I2C_EnableListen_IT .text.HAL_I2C_EV_IRQHandler - 0x08001bd4 0x34 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001bd4 HAL_I2C_EV_IRQHandler + 0x08001c40 0x34 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08001c40 HAL_I2C_EV_IRQHandler .text.HAL_I2C_ER_IRQHandler - 0x08001c08 0xb2 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001c08 HAL_I2C_ER_IRQHandler + 0x08001c74 0xb2 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08001c74 HAL_I2C_ER_IRQHandler .text.HAL_I2C_MasterTxCpltCallback - 0x08001cba 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001cba HAL_I2C_MasterTxCpltCallback + 0x08001d26 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08001d26 HAL_I2C_MasterTxCpltCallback .text.HAL_I2C_MasterRxCpltCallback - 0x08001cca 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001cca HAL_I2C_MasterRxCpltCallback + 0x08001d36 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08001d36 HAL_I2C_MasterRxCpltCallback .text.HAL_I2C_MemTxCpltCallback - 0x08001cda 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001cda HAL_I2C_MemTxCpltCallback + 0x08001d46 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08001d46 HAL_I2C_MemTxCpltCallback .text.HAL_I2C_MemRxCpltCallback - 0x08001cea 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001cea HAL_I2C_MemRxCpltCallback + 0x08001d56 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08001d56 HAL_I2C_MemRxCpltCallback .text.HAL_I2C_ErrorCallback - 0x08001cfa 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001cfa HAL_I2C_ErrorCallback + 0x08001d66 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08001d66 HAL_I2C_ErrorCallback .text.HAL_I2C_AbortCpltCallback - 0x08001d0a 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001d0a HAL_I2C_AbortCpltCallback - *fill* 0x08001d1a 0x2 + 0x08001d76 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08001d76 HAL_I2C_AbortCpltCallback + *fill* 0x08001d86 0x2 .text.I2C_Slave_ISR_IT - 0x08001d1c 0x200 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08001d88 0x200 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_Master_ISR_DMA - 0x08001f1c 0x1f8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08001f88 0x1f8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_Mem_ISR_DMA - 0x08002114 0x258 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08002180 0x258 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_Slave_ISR_DMA - 0x0800236c 0x1d0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x080023d8 0x1d0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_ITAddrCplt - 0x0800253c 0x148 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x080025a8 0x148 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_ITMasterSeqCplt - 0x08002684 0x82 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - *fill* 0x08002706 0x2 + 0x080026f0 0x82 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + *fill* 0x08002772 0x2 .text.I2C_ITSlaveSeqCplt - 0x08002708 0xc8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08002774 0xc8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_ITMasterCplt - 0x080027d0 0x19c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x0800283c 0x19c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_ITSlaveCplt - 0x0800296c 0x310 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x080029d8 0x310 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_ITListenCplt - 0x08002c7c 0xb0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08002ce8 0xb0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_ITError - 0x08002d2c 0x204 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08002d98 0x204 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_TreatErrorCallback - 0x08002f30 0x52 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08002f9c 0x52 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_Flush_TXDR - 0x08002f82 0x44 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08002fee 0x44 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_DMAAbort - 0x08002fc6 0x3e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08003032 0x3e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_TransferConfig - 0x08003004 0x74 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08003070 0x74 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_Enable_IRQ - 0x08003078 0x114 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x080030e4 0x114 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_Disable_IRQ - 0x0800318c 0xc6 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - *fill* 0x08003252 0x2 + 0x080031f8 0xc6 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + *fill* 0x080032be 0x2 .text.HAL_I2CEx_ConfigAnalogFilter - 0x08003254 0x98 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o - 0x08003254 HAL_I2CEx_ConfigAnalogFilter + 0x080032c0 0x98 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + 0x080032c0 HAL_I2CEx_ConfigAnalogFilter .text.HAL_I2CEx_ConfigDigitalFilter - 0x080032ec 0x98 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o - 0x080032ec HAL_I2CEx_ConfigDigitalFilter + 0x08003358 0x98 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + 0x08003358 HAL_I2CEx_ConfigDigitalFilter .text.HAL_PWREx_ControlVoltageScaling - 0x08003384 0x80 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o - 0x08003384 HAL_PWREx_ControlVoltageScaling + 0x080033f0 0x80 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + 0x080033f0 HAL_PWREx_ControlVoltageScaling .text.LL_RCC_GetAPB1Prescaler - 0x08003404 0x18 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + 0x08003470 0x18 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o .text.HAL_RCC_OscConfig - 0x0800341c 0x620 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - 0x0800341c HAL_RCC_OscConfig + 0x08003488 0x620 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + 0x08003488 HAL_RCC_OscConfig .text.HAL_RCC_ClockConfig - 0x08003a3c 0x210 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - 0x08003a3c HAL_RCC_ClockConfig + 0x08003aa8 0x210 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + 0x08003aa8 HAL_RCC_ClockConfig .text.HAL_RCC_GetSysClockFreq - 0x08003c4c 0x104 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - 0x08003c4c HAL_RCC_GetSysClockFreq + 0x08003cb8 0x104 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + 0x08003cb8 HAL_RCC_GetSysClockFreq .text.HAL_RCC_GetHCLKFreq - 0x08003d50 0x14 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - 0x08003d50 HAL_RCC_GetHCLKFreq + 0x08003dbc 0x14 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + 0x08003dbc HAL_RCC_GetHCLKFreq .text.HAL_RCC_GetPCLK1Freq - 0x08003d64 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - 0x08003d64 HAL_RCC_GetPCLK1Freq + 0x08003dd0 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + 0x08003dd0 HAL_RCC_GetPCLK1Freq .text.HAL_RCCEx_PeriphCLKConfig - 0x08003d90 0x268 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o - 0x08003d90 HAL_RCCEx_PeriphCLKConfig + 0x08003dfc 0x268 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + 0x08003dfc HAL_RCCEx_PeriphCLKConfig .text.HAL_UART_Init - 0x08003ff8 0xac ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o - 0x08003ff8 HAL_UART_Init + 0x08004064 0xac ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + 0x08004064 HAL_UART_Init .text.UART_SetConfig - 0x080040a4 0x348 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o - 0x080040a4 UART_SetConfig + 0x08004110 0x348 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + 0x08004110 UART_SetConfig .text.UART_AdvFeatureConfig - 0x080043ec 0x168 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o - 0x080043ec UART_AdvFeatureConfig + 0x08004458 0x168 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + 0x08004458 UART_AdvFeatureConfig .text.UART_CheckIdleState - 0x08004554 0x154 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o - 0x08004554 UART_CheckIdleState + 0x080045c0 0x154 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + 0x080045c0 UART_CheckIdleState .text.UART_WaitOnFlagUntilTimeout - 0x080046a8 0xde ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o - 0x080046a8 UART_WaitOnFlagUntilTimeout - *fill* 0x08004786 0x2 + 0x08004714 0xde ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + 0x08004714 UART_WaitOnFlagUntilTimeout + *fill* 0x080047f2 0x2 .text.UART_EndRxTransfer - 0x08004788 0xcc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + 0x080047f4 0xcc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o .text.HAL_UARTEx_DisableFifoMode - 0x08004854 0x74 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o - 0x08004854 HAL_UARTEx_DisableFifoMode + 0x080048c0 0x74 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o + 0x080048c0 HAL_UARTEx_DisableFifoMode .text.HAL_UARTEx_SetTxFifoThreshold - 0x080048c8 0x7e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o - 0x080048c8 HAL_UARTEx_SetTxFifoThreshold - *fill* 0x08004946 0x2 + 0x08004934 0x7e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o + 0x08004934 HAL_UARTEx_SetTxFifoThreshold + *fill* 0x080049b2 0x2 .text.HAL_UARTEx_SetRxFifoThreshold - 0x08004948 0x84 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o - 0x08004948 HAL_UARTEx_SetRxFifoThreshold + 0x080049b4 0x84 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o + 0x080049b4 HAL_UARTEx_SetRxFifoThreshold .text.UARTEx_SetNbDataToProcess - 0x080049cc 0xbc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o - .text.memset 0x08004a88 0x10 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-memset.o) - 0x08004a88 memset + 0x08004a38 0xbc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o + .text.memset 0x08004af4 0x10 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-memset.o) + 0x08004af4 memset .text.__libc_init_array - 0x08004a98 0x48 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-init.o) - 0x08004a98 __libc_init_array + 0x08004b04 0x48 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-init.o) + 0x08004b04 __libc_init_array *(.glue_7) - .glue_7 0x08004ae0 0x0 linker stubs + .glue_7 0x08004b4c 0x0 linker stubs *(.glue_7t) - .glue_7t 0x08004ae0 0x0 linker stubs + .glue_7t 0x08004b4c 0x0 linker stubs *(.eh_frame) - .eh_frame 0x08004ae0 0x0 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o + .eh_frame 0x08004b4c 0x0 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o *(.init) - .init 0x08004ae0 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crti.o - 0x08004ae0 _init - .init 0x08004ae4 0x8 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtn.o + .init 0x08004b4c 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crti.o + 0x08004b4c _init + .init 0x08004b50 0x8 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtn.o *(.fini) - .fini 0x08004aec 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crti.o - 0x08004aec _fini - .fini 0x08004af0 0x8 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtn.o - 0x08004af8 . = ALIGN (0x4) - 0x08004af8 _etext = . + .fini 0x08004b58 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crti.o + 0x08004b58 _fini + .fini 0x08004b5c 0x8 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtn.o + 0x08004b64 . = ALIGN (0x4) + 0x08004b64 _etext = . -.vfp11_veneer 0x08004af8 0x0 - .vfp11_veneer 0x08004af8 0x0 linker stubs +.vfp11_veneer 0x08004b64 0x0 + .vfp11_veneer 0x08004b64 0x0 linker stubs -.v4_bx 0x08004af8 0x0 - .v4_bx 0x08004af8 0x0 linker stubs +.v4_bx 0x08004b64 0x0 + .v4_bx 0x08004b64 0x0 linker stubs -.iplt 0x08004af8 0x0 - .iplt 0x08004af8 0x0 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o +.iplt 0x08004b64 0x0 + .iplt 0x08004b64 0x0 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o -.rodata 0x08004af8 0xac - 0x08004af8 . = ALIGN (0x4) +.rodata 0x08004b64 0xac + 0x08004b64 . = ALIGN (0x4) *(.rodata) *(.rodata*) .rodata.send_register - 0x08004af8 0x24 ./Core/Src/main.o + 0x08004b64 0x24 ./Core/Src/main.o .rodata.AHBPrescTable - 0x08004b1c 0x40 ./Core/Src/system_stm32g0xx.o - 0x08004b1c AHBPrescTable + 0x08004b88 0x40 ./Core/Src/system_stm32g0xx.o + 0x08004b88 AHBPrescTable .rodata.APBPrescTable - 0x08004b5c 0x20 ./Core/Src/system_stm32g0xx.o - 0x08004b5c APBPrescTable + 0x08004bc8 0x20 ./Core/Src/system_stm32g0xx.o + 0x08004bc8 APBPrescTable .rodata.UARTPrescTable - 0x08004b7c 0x18 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o - 0x08004b7c UARTPrescTable + 0x08004be8 0x18 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + 0x08004be8 UARTPrescTable .rodata.numerator.1 - 0x08004b94 0x8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o + 0x08004c00 0x8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o .rodata.denominator.0 - 0x08004b9c 0x8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o - 0x08004ba4 . = ALIGN (0x4) + 0x08004c08 0x8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o + 0x08004c10 . = ALIGN (0x4) -.ARM.extab 0x08004ba4 0x0 - 0x08004ba4 . = ALIGN (0x4) +.ARM.extab 0x08004c10 0x0 + 0x08004c10 . = ALIGN (0x4) *(.ARM.extab* .gnu.linkonce.armextab.*) - 0x08004ba4 . = ALIGN (0x4) + 0x08004c10 . = ALIGN (0x4) -.ARM 0x08004ba4 0x0 - 0x08004ba4 . = ALIGN (0x4) - 0x08004ba4 __exidx_start = . +.ARM 0x08004c10 0x0 + 0x08004c10 . = ALIGN (0x4) + 0x08004c10 __exidx_start = . *(.ARM.exidx*) - 0x08004ba4 __exidx_end = . - 0x08004ba4 . = ALIGN (0x4) + 0x08004c10 __exidx_end = . + 0x08004c10 . = ALIGN (0x4) -.preinit_array 0x08004ba4 0x0 - 0x08004ba4 . = ALIGN (0x4) - 0x08004ba4 PROVIDE (__preinit_array_start = .) +.preinit_array 0x08004c10 0x0 + 0x08004c10 . = ALIGN (0x4) + 0x08004c10 PROVIDE (__preinit_array_start = .) *(.preinit_array*) - 0x08004ba4 PROVIDE (__preinit_array_end = .) - 0x08004ba4 . = ALIGN (0x4) + 0x08004c10 PROVIDE (__preinit_array_end = .) + 0x08004c10 . = ALIGN (0x4) -.init_array 0x08004ba4 0x4 - 0x08004ba4 . = ALIGN (0x4) - 0x08004ba4 PROVIDE (__init_array_start = .) +.init_array 0x08004c10 0x4 + 0x08004c10 . = ALIGN (0x4) + 0x08004c10 PROVIDE (__init_array_start = .) *(SORT_BY_NAME(.init_array.*)) *(.init_array*) - .init_array 0x08004ba4 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o - 0x08004ba8 PROVIDE (__init_array_end = .) - 0x08004ba8 . = ALIGN (0x4) + .init_array 0x08004c10 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o + 0x08004c14 PROVIDE (__init_array_end = .) + 0x08004c14 . = ALIGN (0x4) -.fini_array 0x08004ba8 0x4 - 0x08004ba8 . = ALIGN (0x4) +.fini_array 0x08004c14 0x4 + 0x08004c14 . = ALIGN (0x4) [!provide] PROVIDE (__fini_array_start = .) *(SORT_BY_NAME(.fini_array.*)) *(.fini_array*) - .fini_array 0x08004ba8 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o + .fini_array 0x08004c14 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o [!provide] PROVIDE (__fini_array_end = .) - 0x08004bac . = ALIGN (0x4) - 0x08004bac _sidata = LOADADDR (.data) + 0x08004c18 . = ALIGN (0x4) + 0x08004c18 _sidata = LOADADDR (.data) -.rel.dyn 0x08004bac 0x0 - .rel.iplt 0x08004bac 0x0 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o +.rel.dyn 0x08004c18 0x0 + .rel.iplt 0x08004c18 0x0 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o -.data 0x20000000 0x10 load address 0x08004bac +.data 0x20000000 0x10 load address 0x08004c18 0x20000000 . = ALIGN (0x4) 0x20000000 _sdata = . *(.data) @@ -3648,11 +3648,11 @@ LOAD C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext *fill* 0x2000000d 0x3 0x20000010 _edata = . -.igot.plt 0x20000010 0x0 load address 0x08004bbc +.igot.plt 0x20000010 0x0 load address 0x08004c28 .igot.plt 0x20000010 0x0 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o 0x20000010 . = ALIGN (0x4) -.bss 0x20000010 0x12c load address 0x08004bbc +.bss 0x20000010 0x12c load address 0x08004c28 0x20000010 _sbss = . 0x20000010 __bss_start__ = _sbss *(.bss) @@ -3720,7 +3720,7 @@ LOAD C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext 0x2000013c __bss_end__ = _ebss ._user_heap_stack - 0x2000013c 0x604 load address 0x08004bbc + 0x2000013c 0x604 load address 0x08004c28 0x20000140 . = ALIGN (0x8) *fill* 0x2000013c 0x4 [!provide] PROVIDE (end = .) @@ -3793,23 +3793,23 @@ LOAD C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext LOAD C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libm.a LOAD C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp\libgcc.a -.debug_info 0x00000000 0xe935 - .debug_info 0x00000000 0x1482 ./Core/Src/main.o - .debug_info 0x00001482 0x1040 ./Core/Src/stm32g0xx_hal_msp.o - .debug_info 0x000024c2 0x76e ./Core/Src/stm32g0xx_it.o - .debug_info 0x00002c30 0x316 ./Core/Src/system_stm32g0xx.o - .debug_info 0x00002f46 0x30 ./Core/Startup/startup_stm32g070cbtx.o - .debug_info 0x00002f76 0x8ef ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - .debug_info 0x00003865 0x8c1 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o - .debug_info 0x00004126 0x86b ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o - .debug_info 0x00004991 0x59d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o - .debug_info 0x00004f2e 0x21bc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - .debug_info 0x000070ea 0x9d9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o - .debug_info 0x00007ac3 0x496 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o - .debug_info 0x00007f59 0xad4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - .debug_info 0x00008a2d 0x737 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o - .debug_info 0x00009164 0x483c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o - .debug_info 0x0000d9a0 0xf95 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o +.debug_info 0x00000000 0xe952 + .debug_info 0x00000000 0x149f ./Core/Src/main.o + .debug_info 0x0000149f 0x1040 ./Core/Src/stm32g0xx_hal_msp.o + .debug_info 0x000024df 0x76e ./Core/Src/stm32g0xx_it.o + .debug_info 0x00002c4d 0x316 ./Core/Src/system_stm32g0xx.o + .debug_info 0x00002f63 0x30 ./Core/Startup/startup_stm32g070cbtx.o + .debug_info 0x00002f93 0x8ef ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + .debug_info 0x00003882 0x8c1 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + .debug_info 0x00004143 0x86b ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o + .debug_info 0x000049ae 0x59d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + .debug_info 0x00004f4b 0x21bc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .debug_info 0x00007107 0x9d9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + .debug_info 0x00007ae0 0x496 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + .debug_info 0x00007f76 0xad4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + .debug_info 0x00008a4a 0x737 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + .debug_info 0x00009181 0x483c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + .debug_info 0x0000d9bd 0xf95 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o .debug_abbrev 0x00000000 0x224a .debug_abbrev 0x00000000 0x32e ./Core/Src/main.o @@ -3898,7 +3898,7 @@ LOAD C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext .debug_rnglists 0x000008a4 0x80 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o -.debug_macro 0x00000000 0x15028 +.debug_macro 0x00000000 0x15034 .debug_macro 0x00000000 0x24a ./Core/Src/main.o .debug_macro 0x0000024a 0xa8a ./Core/Src/main.o .debug_macro 0x00000cd4 0x11d ./Core/Src/main.o @@ -3943,73 +3943,73 @@ LOAD C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext .debug_macro 0x00012780 0x693 ./Core/Src/main.o .debug_macro 0x00012e13 0xa6 ./Core/Src/main.o .debug_macro 0x00012eb9 0x43d ./Core/Src/main.o - .debug_macro 0x000132f6 0xdc ./Core/Src/main.o - .debug_macro 0x000133d2 0x22 ./Core/Src/main.o - .debug_macro 0x000133f4 0x1f3 ./Core/Src/stm32g0xx_hal_msp.o - .debug_macro 0x000135e7 0x1fd ./Core/Src/stm32g0xx_it.o - .debug_macro 0x000137e4 0x1e4 ./Core/Src/system_stm32g0xx.o - .debug_macro 0x000139c8 0x202 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - .debug_macro 0x00013bca 0x1e4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o - .debug_macro 0x00013dae 0x1e4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o - .debug_macro 0x00013f92 0x1eb ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o - .debug_macro 0x0001417d 0x2b0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - .debug_macro 0x0001442d 0x1e4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o - .debug_macro 0x00014611 0x1f6 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o - .debug_macro 0x00014807 0x226 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - .debug_macro 0x00014a2d 0x1fc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o - .debug_macro 0x00014c29 0x20f ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o - .debug_macro 0x00014e38 0x1f0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o + .debug_macro 0x000132f6 0xe8 ./Core/Src/main.o + .debug_macro 0x000133de 0x22 ./Core/Src/main.o + .debug_macro 0x00013400 0x1f3 ./Core/Src/stm32g0xx_hal_msp.o + .debug_macro 0x000135f3 0x1fd ./Core/Src/stm32g0xx_it.o + .debug_macro 0x000137f0 0x1e4 ./Core/Src/system_stm32g0xx.o + .debug_macro 0x000139d4 0x202 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + .debug_macro 0x00013bd6 0x1e4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + .debug_macro 0x00013dba 0x1e4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o + .debug_macro 0x00013f9e 0x1eb ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + .debug_macro 0x00014189 0x2b0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .debug_macro 0x00014439 0x1e4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + .debug_macro 0x0001461d 0x1f6 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + .debug_macro 0x00014813 0x226 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + .debug_macro 0x00014a39 0x1fc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + .debug_macro 0x00014c35 0x20f ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + .debug_macro 0x00014e44 0x1f0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o -.debug_line 0x00000000 0x101eb - .debug_line 0x00000000 0xc91 ./Core/Src/main.o - .debug_line 0x00000c91 0x856 ./Core/Src/stm32g0xx_hal_msp.o - .debug_line 0x000014e7 0x820 ./Core/Src/stm32g0xx_it.o - .debug_line 0x00001d07 0x804 ./Core/Src/system_stm32g0xx.o - .debug_line 0x0000250b 0x7b ./Core/Startup/startup_stm32g070cbtx.o - .debug_line 0x00002586 0xaa7 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - .debug_line 0x0000302d 0xbdf ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o - .debug_line 0x00003c0c 0xde1 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o - .debug_line 0x000049ed 0xbc3 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o - .debug_line 0x000055b0 0x3a7c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - .debug_line 0x0000902c 0x9af ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o - .debug_line 0x000099db 0x9d5 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o - .debug_line 0x0000a3b0 0xf4d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - .debug_line 0x0000b2fd 0xb78 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o - .debug_line 0x0000be75 0x3532 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o - .debug_line 0x0000f3a7 0xe44 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o +.debug_line 0x00000000 0x10201 + .debug_line 0x00000000 0xca7 ./Core/Src/main.o + .debug_line 0x00000ca7 0x856 ./Core/Src/stm32g0xx_hal_msp.o + .debug_line 0x000014fd 0x820 ./Core/Src/stm32g0xx_it.o + .debug_line 0x00001d1d 0x804 ./Core/Src/system_stm32g0xx.o + .debug_line 0x00002521 0x7b ./Core/Startup/startup_stm32g070cbtx.o + .debug_line 0x0000259c 0xaa7 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + .debug_line 0x00003043 0xbdf ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + .debug_line 0x00003c22 0xde1 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o + .debug_line 0x00004a03 0xbc3 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + .debug_line 0x000055c6 0x3a7c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .debug_line 0x00009042 0x9af ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + .debug_line 0x000099f1 0x9d5 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + .debug_line 0x0000a3c6 0xf4d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + .debug_line 0x0000b313 0xb78 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + .debug_line 0x0000be8b 0x3532 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + .debug_line 0x0000f3bd 0xe44 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o -.debug_str 0x00000000 0x83ada - .debug_str 0x00000000 0x80931 ./Core/Src/main.o - 0x80f84 (size before relaxing) - .debug_str 0x00080931 0x355 ./Core/Src/stm32g0xx_hal_msp.o - 0x80c3a (size before relaxing) - .debug_str 0x00080c86 0xbe ./Core/Src/stm32g0xx_it.o - 0x805f3 (size before relaxing) - .debug_str 0x00080d44 0x8e ./Core/Src/system_stm32g0xx.o +.debug_str 0x00000000 0x83b0a + .debug_str 0x00000000 0x80961 ./Core/Src/main.o + 0x80fb4 (size before relaxing) + .debug_str 0x00080961 0x355 ./Core/Src/stm32g0xx_hal_msp.o + 0x80c6a (size before relaxing) + .debug_str 0x00080cb6 0xbe ./Core/Src/stm32g0xx_it.o + 0x80623 (size before relaxing) + .debug_str 0x00080d74 0x8e ./Core/Src/system_stm32g0xx.o 0x7fdec (size before relaxing) - .debug_str 0x00080dd2 0x44 ./Core/Startup/startup_stm32g070cbtx.o + .debug_str 0x00080e02 0x44 ./Core/Startup/startup_stm32g070cbtx.o 0x7d (size before relaxing) - .debug_str 0x00080e16 0x43b ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + .debug_str 0x00080e46 0x43b ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o 0x8048e (size before relaxing) - .debug_str 0x00081251 0x297 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + .debug_str 0x00081281 0x297 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o 0x8026b (size before relaxing) - .debug_str 0x000814e8 0x2b7 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o + .debug_str 0x00081518 0x2b7 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o 0x80286 (size before relaxing) - .debug_str 0x0008179f 0x12c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + .debug_str 0x000817cf 0x12c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o 0x7ff21 (size before relaxing) - .debug_str 0x000818cb 0xcf8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .debug_str 0x000818fb 0xcf8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o 0x811af (size before relaxing) - .debug_str 0x000825c3 0xb8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + .debug_str 0x000825f3 0xb8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o 0x8042b (size before relaxing) - .debug_str 0x0008267b 0x221 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + .debug_str 0x000826ab 0x221 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o 0x80040 (size before relaxing) - .debug_str 0x0008289c 0x49c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + .debug_str 0x000828cc 0x49c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o 0x80510 (size before relaxing) - .debug_str 0x00082d38 0x185 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + .debug_str 0x00082d68 0x185 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o 0x8013d (size before relaxing) - .debug_str 0x00082ebd 0x9a9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + .debug_str 0x00082eed 0x9a9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o 0x80db7 (size before relaxing) - .debug_str 0x00083866 0x274 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o + .debug_str 0x00083896 0x274 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o 0x80676 (size before relaxing) .comment 0x00000000 0x43 diff --git a/wires.ioc b/wires.ioc index e774d96..2b8bf9d 100644 --- a/wires.ioc +++ b/wires.ioc @@ -16,33 +16,34 @@ Mcu.IP4=USART2 Mcu.IPNb=5 Mcu.Name=STM32G070CBTx Mcu.Package=LQFP48 -Mcu.Pin0=PF0-OSC_IN (PF0) -Mcu.Pin1=PF1-OSC_OUT (PF1) -Mcu.Pin10=PB1 -Mcu.Pin11=PB2 -Mcu.Pin12=PB10 -Mcu.Pin13=PB13 -Mcu.Pin14=PB14 -Mcu.Pin15=PB15 -Mcu.Pin16=PA8 -Mcu.Pin17=PA10 -Mcu.Pin18=PA13 -Mcu.Pin19=PA14-BOOT0 -Mcu.Pin2=PA0 -Mcu.Pin20=PB6 -Mcu.Pin21=PB7 -Mcu.Pin22=PB8 -Mcu.Pin23=PB9 -Mcu.Pin24=VP_SYS_VS_Systick -Mcu.Pin25=VP_SYS_VS_DBSignals -Mcu.Pin3=PA2 -Mcu.Pin4=PA3 -Mcu.Pin5=PA4 -Mcu.Pin6=PA5 -Mcu.Pin7=PA6 -Mcu.Pin8=PA7 -Mcu.Pin9=PB0 -Mcu.PinsNb=26 +Mcu.Pin0=PC13 +Mcu.Pin1=PF0-OSC_IN (PF0) +Mcu.Pin10=PB0 +Mcu.Pin11=PB1 +Mcu.Pin12=PB2 +Mcu.Pin13=PB10 +Mcu.Pin14=PB13 +Mcu.Pin15=PB14 +Mcu.Pin16=PB15 +Mcu.Pin17=PA8 +Mcu.Pin18=PA10 +Mcu.Pin19=PA13 +Mcu.Pin2=PF1-OSC_OUT (PF1) +Mcu.Pin20=PA14-BOOT0 +Mcu.Pin21=PB6 +Mcu.Pin22=PB7 +Mcu.Pin23=PB8 +Mcu.Pin24=PB9 +Mcu.Pin25=VP_SYS_VS_Systick +Mcu.Pin26=VP_SYS_VS_DBSignals +Mcu.Pin3=PA0 +Mcu.Pin4=PA2 +Mcu.Pin5=PA3 +Mcu.Pin6=PA4 +Mcu.Pin7=PA5 +Mcu.Pin8=PA6 +Mcu.Pin9=PA7 +Mcu.PinsNb=27 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32G070CBTx @@ -118,15 +119,15 @@ PB10.GPIO_PuPd=GPIO_PULLUP PB10.Locked=true PB10.Signal=GPIO_Input PB13.GPIOParameters=GPIO_Label -PB13.GPIO_Label=BUZZ +PB13.GPIO_Label=RELAY1 PB13.Locked=true PB13.Signal=GPIO_Output PB14.GPIOParameters=GPIO_Label -PB14.GPIO_Label=LED4 +PB14.GPIO_Label=RELAY2 PB14.Locked=true PB14.Signal=GPIO_Output PB15.GPIOParameters=GPIO_Label -PB15.GPIO_Label=RELAY +PB15.GPIO_Label=BUZZ PB15.Locked=true PB15.Signal=GPIO_Output PB2.GPIOParameters=GPIO_PuPd,GPIO_Label @@ -141,13 +142,17 @@ PB7.Locked=true PB7.Mode=I2C PB7.Signal=I2C1_SDA PB8.GPIOParameters=GPIO_Label -PB8.GPIO_Label=LED1 +PB8.GPIO_Label=LED4 PB8.Locked=true PB8.Signal=GPIO_Output PB9.GPIOParameters=GPIO_Label -PB9.GPIO_Label=LED2 +PB9.GPIO_Label=LED1 PB9.Locked=true PB9.Signal=GPIO_Output +PC13.GPIOParameters=GPIO_Label +PC13.GPIO_Label=LED2 +PC13.Locked=true +PC13.Signal=GPIO_Output PF0-OSC_IN\ (PF0).Mode=HSE-External-Oscillator PF0-OSC_IN\ (PF0).Signal=RCC_OSC_IN PF1-OSC_OUT\ (PF1).Locked=true