From efefd21d0ee68ada3775e624629bf8d7e111991f Mon Sep 17 00:00:00 2001 From: Elvin Chen <20195216+ElvinC@users.noreply.github.com> Date: Thu, 17 Aug 2023 03:37:02 +0200 Subject: [PATCH] Clean code a bit --- Firmware/.settings/language.settings.xml | 4 +- Firmware/Core/Src/main.c | 482 +- Firmware/Debug/Core/Src/main.o | Bin 926880 -> 928880 bytes Firmware/Debug/Core/Src/main.su | 56 +- Firmware/Debug/rocketbeacon.elf | Bin 1132368 -> 1132420 bytes Firmware/Debug/rocketbeacon.list | 13739 ++++++++++----------- Firmware/Debug/rocketbeacon.map | 1129 +- 7 files changed, 7586 insertions(+), 7824 deletions(-) diff --git a/Firmware/.settings/language.settings.xml b/Firmware/.settings/language.settings.xml index 6499965..d511d5b 100644 --- a/Firmware/.settings/language.settings.xml +++ b/Firmware/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/Firmware/Core/Src/main.c b/Firmware/Core/Src/main.c index bd2cf12..c7b36f5 100644 --- a/Firmware/Core/Src/main.c +++ b/Firmware/Core/Src/main.c @@ -60,216 +60,157 @@ static void MX_USART2_UART_Init(void); static void MX_CRC_Init(void); /* USER CODE BEGIN PFP */ +void SetStandbyXOSC(); +void SetPacketTypeLora(); +void SetPacketTypeFSK(); +uint32_t ComputeRfFreq(double frequencyMhz); +void SetRfFreq(uint32_t rfFreq); +void SetPaLowPower(); +void SetPa22dB(); +void SetTxPower(int8_t powerdBm); +void SetContinuousWave(); +void SetTxInfinitePreamble(); +void SetTx(uint32_t timeout); +void SetRx(uint32_t timeout); +void SetModulationParamsLora(const uint8_t params[4]); +void SetModulationParamsFSK(uint32_t bitrate, uint8_t pulseshape, uint8_t bandwidth, uint32_t freq_dev); +void SetPacketParamsLora(uint16_t preamble_length, bool header_fixed, uint8_t payload_length, bool crc_enabled, bool invert_iq); +void FSKBeep(int8_t powerdBm, uint32_t toneHz, uint32_t lengthMs); +void CWBeep(int8_t powerdBm, uint32_t lengthMs); + /* USER CODE END PFP */ /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ -void SetStandbyXOSC() { - uint8_t txbuf[2] = {0x80, 0x01}; - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); -} - -void SetPacketTypeLora() { - uint8_t txbuf[2] = {0x8A, 0x01}; - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); -} - -void SetPacketTypeFSK() { - uint8_t txbuf[2] = {0x8A, 0x00}; - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); -} - -uint32_t ComputeRfFreq(double frequencyMhz) { - return (uint32_t)(frequencyMhz * 1048576L); //2^25/(32e6) -} - -void SetRfFreq(uint32_t rfFreq) { - uint8_t txbuf[5] = {0x86, (rfFreq & 0xFF000000) >> 24, (rfFreq & 0x00FF0000) >> 16, (rfFreq & 0x0000FF00) >> 8, rfFreq & 0x000000FF}; - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); -} - -void SetPaLowPower() { - // set Pa to 14 dB. - uint8_t txbuf[5] = {0x95, 0x02, 0x02, 0x00, 0x01}; - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); -} - -void SetPa22dB() { - // set Pa to the highest 22 dBm - uint8_t txbuf[5] = {0x95, 0x04, 0x07, 0x00, 0x01}; - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); -} - -void SetTxPower(int8_t powerdBm) { - // Between -9 and 22 - uint8_t txbuf[3] = {0x8E, (uint8_t) powerdBm, 0x02}; - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); -} - -void SetContinuousWave() { - uint8_t txbuf[1] = {0xD1}; - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf, 0); -} - -void SetTxInfinitePreamble() { - uint8_t txbuf[1] = {0xD2}; - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf, 0); -} - -void SetTx(uint32_t timeout) { - // Timeout * 15.625 µs - uint8_t txbuf[4] = {0x83, (timeout & 0x00FF0000) >> 16, (timeout & 0x0000FF00) >> 8, timeout & 0x000000FF}; - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); -} - -void SetRx(uint32_t timeout) { - // Timeout * 15.625 µs - // 0x000000 No timeout. Rx Single mode - // 0xFFFFFF Rx Continuous mode. The device remains in RX mode until the host sends a command to change the operation mode - uint8_t txbuf[4] = {0x82, (timeout & 0x00FF0000) >> 16, (timeout & 0x0000FF00) >> 8, timeout & 0x000000FF}; - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); -} - -void SetModulationParamsLora(const uint8_t params[4]) { - uint8_t txbuf[5] = {0x8B, params[0], params[1], params[2], params[3]}; - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); -} - -void SetModulationParamsFSK(uint32_t bitrate, uint8_t pulseshape, uint8_t bandwidth, uint32_t freq_dev) { - uint32_t BR = 32 * 32e6 / bitrate; - uint32_t fdev = (uint32_t) (freq_dev * 1.048576L); // 2^25/32e6 = 1.048576 - uint8_t txbuf[9] = {0x8B, (BR & 0x00FF0000) >> 16, (BR & 0x0000FF00) >> 8, BR & 0x000000FF, pulseshape, bandwidth, (fdev & 0x00FF0000) >> 16, (fdev & 0x0000FF00) >> 8, fdev & 0x000000FF}; - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); -} - -void SetPacketParamsLora(uint16_t preamble_length, bool header_fixed, uint8_t payload_length, bool crc_enabled, bool invert_iq) { - uint8_t txbuf[7] = {0x8C, (uint8_t)((preamble_length >> 8) & 0xFF), (uint8_t)(preamble_length & 0xFF), - (uint8_t) header_fixed, payload_length, (uint8_t) crc_enabled, (uint8_t) invert_iq}; - - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); -} - +// standard frequencies. Note: zero indexed. +const double LPD433[69] = { + 433.075, 433.100, 433.125, 433.150, 433.175, 433.200, 433.225, 433.250, 433.275, 433.300, // 1-10 + 433.325, 433.350, 433.375, 433.400, 433.425, 433.450, 433.475, 433.500, 433.525, 433.550, // 11-20 + 433.575, 433.600, 433.625, 433.650, 433.675, 433.700, 433.725, 433.750, 433.775, 433.800, // 21-30 + 433.825, 433.850, 433.875, 433.900, 433.925, 433.950, 433.975, 434.000, 434.025, 434.050, // 31-40 + 434.075, 434.100, 434.125, 434.150, 434.175, 434.200, 434.225, 434.250, 434.275, 434.300, // 41-50 + 434.325, 434.350, 434.375, 434.400, 434.425, 434.450, 434.475, 434.500, 434.525, 434.550, // 51-60 + 434.575, 434.600, 434.625, 434.650, 434.675, 434.700, 434.725, 434.750, 434.775 // 61-69 +}; -void FSKBeep(int8_t powerdBm, uint32_t toneHz, uint32_t lengthMs) { - // assume in standbyXOSC already. - HAL_Delay(1); - SetTxPower(powerdBm); - SetModulationParamsFSK(toneHz*2, 0x09, 0x1E, 2500); - HAL_Delay(5); - SetTxInfinitePreamble(); - HAL_Delay(lengthMs); - SetStandbyXOSC(); - HAL_Delay(5); -} +const double PMR446[16] = { + 446.00625, 446.01875, 446.03125, 446.04375, 446.05625, // 1-5 + 446.06875, 446.08125, 446.09375, 446.10625, 446.11875, // 6-10 + 446.13125, 446.14375, 446.15625, 446.16875, 446.18125, // 11-15 + 446.19375 // 16 +}; -void CWBeep(int8_t powerdBm, uint32_t lengthMs) { - HAL_Delay(1); - SetTxPower(powerdBm); - HAL_Delay(5); - SetContinuousWave(); - HAL_Delay(lengthMs); - SetStandbyXOSC(); - HAL_Delay(5); -} +const double FRS[22] = { + 462.5625, 462.5875, 462.6125, 462.6375, 462.6625, 462.6875, 462.7125, 467.5625, 467.5875, 467.6125, // 1-10 + 467.6375, 467.6625, 467.6875, 467.7125, 462.5500, 462.5750, 462.6000, 462.6250, 462.6500, 462.6750, // 11-20 + 462.7000, 462.7250 // 21-22 +}; // letter to morse based on ASCII characters. // right-terminated by a "1". 1 is dah, 0 is dit. const uint8_t morse_chars[] = { - 0b11111111, // Special code for SPACE - 0b10000000, // N/A - 0b10000000, // N/A - 0b10000000, // N/A - 0b10000000, // N/A - 0b10000000, // N/A - 0b10000000, // N/A - 0b10000000, // N/A - 0b10000000, // N/A - 0b10000000, // N/A - 0b10000000, // N/A - 0b10000000, // N/A - 0b10000000, // N/A - 0b11100000, // Minus sign (indicated by "M") - 0b10000000, // N/A - 0b10010100, // "/" Slash - 0b11111100, // "0" - 0b01111100, // "1" - 0b00111100, // "2" - 0b00011100, // "3" - 0b00001100, // "4" - 0b00000100, // "5" - 0b10000100, // "6" - 0b11000100, // "7" - 0b11100100, // "8" - 0b11110100, // "9" - 0b10000000, // N/A - 0b10000000, // N/A - 0b10000000, // N/A - 0b10001100, // "=" BT prosign/Equal sign - 0b10000000, // N/A - 0b00110010, // "?" Question mark - 0b10000000, // N/A - 0b01100000, // "A" - 0b10001000, // "B" - 0b10101000, // "C" - 0b10010000, // "D" - 0b01000000, // "E" - 0b00101000, // "F" - 0b11010000, // "G" - 0b00001000, // "H" - 0b00100000, // "I" - 0b01111000, // "J" - 0b10110000, // "K" - 0b01001000, // "L" - 0b11100000, // "M" - 0b10100000, // "N" - 0b11110000, // "O" - 0b01101000, // "P" - 0b11011000, // "Q" - 0b01010000, // "R" - 0b00010000, // "S" - 0b11000000, // "T" - 0b00110000, // "U" - 0b00011000, // "V" - 0b01110000, // "W" - 0b10011000, // "X" - 0b10111000, // "Y" - 0b11001000, // "Z" - 0b10000000, // N/A - 0b10000000, // N/A - 0b10000000, // N/A - 0b10000000, // N/A - 0b10000000, // N/A - 0b10000000, // N/A - 0b01100000, // "a" - 0b10001000, // "b" - 0b10101000, // "c" - 0b10010000, // "d" - 0b01000000, // "e" - 0b00101000, // "f" - 0b11010000, // "g" - 0b00001000, // "h" - 0b00100000, // "i" - 0b01111000, // "j" - 0b10110000, // "k" - 0b01001000, // "l" - 0b11100000, // "m" - 0b10100000, // "n" - 0b11110000, // "o" - 0b01101000, // "p" - 0b11011000, // "q" - 0b01010000, // "r" - 0b00010000, // "s" - 0b11000000, // "t" - 0b00110000, // "u" - 0b00011000, // "v" - 0b01110000, // "w" - 0b10011000, // "x" - 0b10111000, // "y" - 0b11001000 // "z" + 0b11111111, // Special code for SPACE + 0b10000000, // N/A + 0b10000000, // N/A + 0b10000000, // N/A + 0b10000000, // N/A + 0b10000000, // N/A + 0b10000000, // N/A + 0b10000000, // N/A + 0b10000000, // N/A + 0b10000000, // N/A + 0b10000000, // N/A + 0b10000000, // N/A + 0b10000000, // N/A + 0b10000110, // - Hyphen sign + 0b10000000, // N/A + 0b10010100, // "/" Slash + 0b11111100, // "0" + 0b01111100, // "1" + 0b00111100, // "2" + 0b00011100, // "3" + 0b00001100, // "4" + 0b00000100, // "5" + 0b10000100, // "6" + 0b11000100, // "7" + 0b11100100, // "8" + 0b11110100, // "9" + 0b10000000, // N/A + 0b10000000, // N/A + 0b10000000, // N/A + 0b10001100, // "=" BT prosign/Equal sign + 0b10000000, // N/A + 0b00110010, // "?" Question mark + 0b10000000, // N/A + 0b01100000, // "A" + 0b10001000, // "B" + 0b10101000, // "C" + 0b10010000, // "D" + 0b01000000, // "E" + 0b00101000, // "F" + 0b11010000, // "G" + 0b00001000, // "H" + 0b00100000, // "I" + 0b01111000, // "J" + 0b10110000, // "K" + 0b01001000, // "L" + 0b11100000, // "M" + 0b10100000, // "N" + 0b11110000, // "O" + 0b01101000, // "P" + 0b11011000, // "Q" + 0b01010000, // "R" + 0b00010000, // "S" + 0b11000000, // "T" + 0b00110000, // "U" + 0b00011000, // "V" + 0b01110000, // "W" + 0b10011000, // "X" + 0b10111000, // "Y" + 0b11001000, // "Z" + 0b10000000, // N/A + 0b10000000, // N/A + 0b10000000, // N/A + 0b10000000, // N/A + 0b10000000, // N/A + 0b10000000, // N/A + 0b01100000, // "a" + 0b10001000, // "b" + 0b10101000, // "c" + 0b10010000, // "d" + 0b01000000, // "e" + 0b00101000, // "f" + 0b11010000, // "g" + 0b00001000, // "h" + 0b00100000, // "i" + 0b01111000, // "j" + 0b10110000, // "k" + 0b01001000, // "l" + 0b11100000, // "m" + 0b10100000, // "n" + 0b11110000, // "o" + 0b01101000, // "p" + 0b11011000, // "q" + 0b01010000, // "r" + 0b00010000, // "s" + 0b11000000, // "t" + 0b00110000, // "u" + 0b00011000, // "v" + 0b01110000, // "w" + 0b10011000, // "x" + 0b10111000, // "y" + 0b11001000 // "z" }; +void LED_on() { + HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET); +} +void LED_off() { + HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET); +} + // https://en.wikipedia.org/wiki/Morse_code#/media/File:International_Morse_Code.svg uint32_t morse_unit_ms = 100; int8_t morse_power = 10; @@ -341,7 +282,6 @@ void play_morse_word(uint8_t* letters, uint8_t len, bool use_cw) { } } - /* USER CODE END 0 */ /** @@ -379,34 +319,47 @@ int main(void) /* USER CODE BEGIN 2 */ //EE_Status ee_status = EE_OK; - - HAL_Delay(1000); // initial start + HAL_Delay(6000); // initial start SetStandbyXOSC(); HAL_Delay(1); SetPacketTypeLora(); HAL_Delay(1); - //SetPaLowPower(); - SetPa22dB(); + + //SetPaLowPower(); // For powers up to 14 dBm + SetPa22dB(); // Uncomment for powers up to 22 dBm HAL_Delay(1); SetTxPower(-9); HAL_Delay(1); SetPacketTypeFSK(); - SetModulationParamsFSK(2000, 0x09, 0x1E, 3000); + SetModulationParamsFSK(2000, 0x09, 0x1E, 2500); - double center_freq = 446.14375; + // Frequency setting in MHz + double center_freq = PMR446[13-1] ;//434.700; + //double center_freq = 223.010; + double freq_correction = 0.99999539941; // Try trimming caps - SetRfFreq(ComputeRfFreq(center_freq)); + SetRfFreq(ComputeRfFreq(center_freq * freq_correction)); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ + + /* + while (1) { + // Emulate comspec beacon at 40 mW + LED_on(); + CWBeep(16, 50); + LED_off(); + HAL_Delay(1000); + }*/ + while (1) { - HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET); + LED_on(); FSKBeep(-9, 500, 200); HAL_Delay(50); @@ -415,16 +368,17 @@ int main(void) HAL_Delay(50); - FSKBeep(10, 1000, 200); + FSKBeep(14, 1000, 200); HAL_Delay(50); - HAL_Delay(1000); - uint8_t callsign[] = "CALLSIGN"; - play_morse_word(callsign, sizeof(callsign)-1, false); + //HAL_Delay(1000); + //uint8_t callsign[] = "HI"; + //play_morse_word(callsign, sizeof(callsign)-1, false); - HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET); - HAL_Delay(3000); + LED_off(); + + HAL_Delay(4000); /* USER CODE END WHILE */ @@ -669,7 +623,113 @@ static void MX_GPIO_Init(void) } /* USER CODE BEGIN 4 */ +void SetStandbyXOSC() { + uint8_t txbuf[2] = {0x80, 0x01}; + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); +} +void SetPacketTypeLora() { + uint8_t txbuf[2] = {0x8A, 0x01}; + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); +} + +void SetPacketTypeFSK() { + uint8_t txbuf[2] = {0x8A, 0x00}; + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); +} + +uint32_t ComputeRfFreq(double frequencyMhz) { + return (uint32_t)(frequencyMhz * 1048576L); //2^25/(32e6) +} + +void SetRfFreq(uint32_t rfFreq) { + uint8_t txbuf[5] = {0x86, (rfFreq & 0xFF000000) >> 24, (rfFreq & 0x00FF0000) >> 16, (rfFreq & 0x0000FF00) >> 8, rfFreq & 0x000000FF}; + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); +} + +void SetPaLowPower() { + // set Pa to 14 dB. + uint8_t txbuf[5] = {0x95, 0x02, 0x02, 0x00, 0x01}; + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); +} + +void SetPa22dB() { + // set Pa to the highest 22 dBm + uint8_t txbuf[5] = {0x95, 0x04, 0x07, 0x00, 0x01}; + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); +} + +void SetTxPower(int8_t powerdBm) { + // Between -9 and 22 + uint8_t txbuf[3] = {0x8E, (uint8_t) powerdBm, 0x02}; + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); +} + +void SetContinuousWave() { + uint8_t txbuf[1] = {0xD1}; + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf, 0); +} + +void SetTxInfinitePreamble() { + uint8_t txbuf[1] = {0xD2}; + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf, 0); +} + +void SetTx(uint32_t timeout) { + // Timeout * 15.625 µs + uint8_t txbuf[4] = {0x83, (timeout & 0x00FF0000) >> 16, (timeout & 0x0000FF00) >> 8, timeout & 0x000000FF}; + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); +} + +void SetRx(uint32_t timeout) { + // Timeout * 15.625 µs + // 0x000000 No timeout. Rx Single mode + // 0xFFFFFF Rx Continuous mode. The device remains in RX mode until the host sends a command to change the operation mode + uint8_t txbuf[4] = {0x82, (timeout & 0x00FF0000) >> 16, (timeout & 0x0000FF00) >> 8, timeout & 0x000000FF}; + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); +} + +void SetModulationParamsLora(const uint8_t params[4]) { + uint8_t txbuf[5] = {0x8B, params[0], params[1], params[2], params[3]}; + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); +} + +void SetModulationParamsFSK(uint32_t bitrate, uint8_t pulseshape, uint8_t bandwidth, uint32_t freq_dev) { + uint32_t BR = 32 * 32e6 / bitrate; + uint32_t fdev = (uint32_t) (freq_dev * 1.048576L); // 2^25/32e6 = 1.048576 + uint8_t txbuf[9] = {0x8B, (BR & 0x00FF0000) >> 16, (BR & 0x0000FF00) >> 8, BR & 0x000000FF, pulseshape, bandwidth, (fdev & 0x00FF0000) >> 16, (fdev & 0x0000FF00) >> 8, fdev & 0x000000FF}; + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); +} + +void SetPacketParamsLora(uint16_t preamble_length, bool header_fixed, uint8_t payload_length, bool crc_enabled, bool invert_iq) { + uint8_t txbuf[7] = {0x8C, (uint8_t)((preamble_length >> 8) & 0xFF), (uint8_t)(preamble_length & 0xFF), + (uint8_t) header_fixed, payload_length, (uint8_t) crc_enabled, (uint8_t) invert_iq}; + + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); +} + + +void FSKBeep(int8_t powerdBm, uint32_t toneHz, uint32_t lengthMs) { + // assume in standbyXOSC already. + HAL_Delay(1); + SetTxPower(powerdBm); + SetModulationParamsFSK(toneHz*2, 0x09, 0x1E, 2500); + HAL_Delay(5); + SetTxInfinitePreamble(); + HAL_Delay(lengthMs); + SetStandbyXOSC(); + HAL_Delay(5); +} + +void CWBeep(int8_t powerdBm, uint32_t lengthMs) { + HAL_Delay(1); + SetTxPower(powerdBm); + HAL_Delay(5); + SetContinuousWave(); + HAL_Delay(lengthMs); + SetStandbyXOSC(); + HAL_Delay(5); +} /* USER CODE END 4 */ /** diff --git a/Firmware/Debug/Core/Src/main.o b/Firmware/Debug/Core/Src/main.o index dd08cc30aa1486dce6c740cfd9ee9c74769aed13..231a74c0d5e04cc09796f35fca7d225a5602ddfa 100644 GIT binary patch delta 244754 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%0A4q9t7|RFPQ3ZkMi_XzvRYS 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 EKV5vL1^@s6 delta 242336 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 F{0F{E`qTgb diff --git a/Firmware/Debug/Core/Src/main.su b/Firmware/Debug/Core/Src/main.su index 515c775..eb3f7f7 100644 --- a/Firmware/Debug/Core/Src/main.su +++ b/Firmware/Debug/Core/Src/main.su @@ -1,29 +1,31 @@ ../Drivers/STM32WLxx_HAL_Driver/Inc/stm32wlxx_ll_rcc.h:999:22:LL_RCC_HSE_EnableDiv2 4 static ../Drivers/STM32WLxx_HAL_Driver/Inc/stm32wlxx_ll_bus.h:449:22:LL_AHB2_GRP1_EnableClock 24 static -../Core/Src/main.c:68:6:SetStandbyXOSC 16 static -../Core/Src/main.c:73:6:SetPacketTypeLora 16 static -../Core/Src/main.c:78:6:SetPacketTypeFSK 16 static -../Core/Src/main.c:83:10:ComputeRfFreq 16 static -../Core/Src/main.c:87:6:SetRfFreq 24 static -../Core/Src/main.c:92:6:SetPaLowPower 16 static -../Core/Src/main.c:98:6:SetPa22dB 16 static -../Core/Src/main.c:104:6:SetTxPower 24 static -../Core/Src/main.c:110:6:SetContinuousWave 16 static -../Core/Src/main.c:115:6:SetTxInfinitePreamble 16 static -../Core/Src/main.c:120:6:SetTx 24 static -../Core/Src/main.c:126:6:SetRx 24 static -../Core/Src/main.c:134:6:SetModulationParamsLora 24 static -../Core/Src/main.c:139:6:SetModulationParamsFSK 48 static -../Core/Src/main.c:146:6:SetPacketParamsLora 32 static -../Core/Src/main.c:154:6:FSKBeep 24 static -../Core/Src/main.c:166:6:CWBeep 16 static -../Core/Src/main.c:277:6:play_morse_char 24 static -../Core/Src/main.c:330:6:play_morse_word 24 static -../Core/Src/main.c:351:5:main 32 static -../Core/Src/main.c:440:6:SystemClock_Config 112 static -../Core/Src/main.c:486:13:MX_ADC_Init 8 static -../Core/Src/main.c:533:13:MX_CRC_Init 8 static -../Core/Src/main.c:564:13:MX_SUBGHZ_Init 8 static -../Core/Src/main.c:590:13:MX_USART2_UART_Init 8 static -../Core/Src/main.c:638:13:MX_GPIO_Init 32 static -../Core/Src/main.c:679:6:Error_Handler 4 static,ignoring_inline_asm +../Core/Src/main.c:207:6:LED_on 8 static +../Core/Src/main.c:210:6:LED_off 8 static +../Core/Src/main.c:218:6:play_morse_char 24 static +../Core/Src/main.c:271:6:play_morse_word 24 static +../Core/Src/main.c:291:5:main 24 static +../Core/Src/main.c:394:6:SystemClock_Config 112 static +../Core/Src/main.c:440:13:MX_ADC_Init 8 static +../Core/Src/main.c:487:13:MX_CRC_Init 8 static +../Core/Src/main.c:518:13:MX_SUBGHZ_Init 8 static +../Core/Src/main.c:544:13:MX_USART2_UART_Init 8 static +../Core/Src/main.c:592:13:MX_GPIO_Init 32 static +../Core/Src/main.c:626:6:SetStandbyXOSC 16 static +../Core/Src/main.c:631:6:SetPacketTypeLora 16 static +../Core/Src/main.c:636:6:SetPacketTypeFSK 16 static +../Core/Src/main.c:641:10:ComputeRfFreq 16 static +../Core/Src/main.c:645:6:SetRfFreq 24 static +../Core/Src/main.c:650:6:SetPaLowPower 16 static +../Core/Src/main.c:656:6:SetPa22dB 16 static +../Core/Src/main.c:662:6:SetTxPower 24 static +../Core/Src/main.c:668:6:SetContinuousWave 16 static +../Core/Src/main.c:673:6:SetTxInfinitePreamble 16 static +../Core/Src/main.c:678:6:SetTx 24 static +../Core/Src/main.c:684:6:SetRx 24 static +../Core/Src/main.c:692:6:SetModulationParamsLora 24 static +../Core/Src/main.c:697:6:SetModulationParamsFSK 48 static +../Core/Src/main.c:704:6:SetPacketParamsLora 32 static +../Core/Src/main.c:712:6:FSKBeep 24 static +../Core/Src/main.c:724:6:CWBeep 16 static +../Core/Src/main.c:739:6:Error_Handler 4 static,ignoring_inline_asm diff --git a/Firmware/Debug/rocketbeacon.elf b/Firmware/Debug/rocketbeacon.elf index afba3892166c8dc29990030f036ca39102f860b9..ee356372b114cf8e2653a0f69e0f728dc2fd5785 100644 GIT binary patch delta 177583 zcmeFad3;nw);C^N_xA0+_jWp+bkcP8CJPB6K!5;Y4}uUD0og=0S)w9>1PLG_HYlm%l}Oy;X%j5Rg3F6w)IEo1cYg1{KZKl&5&6$Rbr$B(ff z8boo!3F8xOs=fb;D^A5oUu%3y@oA4w7kql)BPEi)`hhmgrJsfWXX5jh|NT#_g%XPI z|A5jKI)AS(o+d?){r^iv@L|vJqD#6wrVk6&Qui=O09b-=|e`5K= z>^_!6t#hd>cY}Ut=?Qjd;jiq_jYrv`=kR|Q{67Gnl%xHBtgmN>K0)}aM|qST`T)N^ zlE40jUww`d?Tr)j4&f0W8YR*G7y>>yT66f>P=2A=dgRZ?rZE^%aL1cpv!WNi7Df5) zFIMz7Q2zF{;HQr4KQ0E@gMx#y2C+kL9n}U!@c%bQPaV1W)Qd3s*nAbi&SRYs-7P0x zEUfwQyVe4~Zpo% z;ZxuDTmJB7q}=;MRI4pyts{f9L(iUYCZzMB{!311gIGKM8auS)n6oRL7Y08)6{pNN zcIwEnlg`KKe0^w5f-fZVl08-CtO)TgJ>EYVXFqh5vVI*s#!68`kH8ofEXApE4%{~A1J}&amwbSI`9n%jvJ)1$DI`! zykJ!6Ngh3Qr1<1=e78QC{P=hN8Yx;jjTQYFpX1YdD*0MwWkYQ}W(rMhKv!Y(p zDU1pdJ5+hfIh4UOdX$`EPer;vF=+V{>?x+RT9(Udmp^<3vUB9mdl&q9d51aPq3$aF7IyVB|pzeIlBev2S3m1JSaihjl5F2Uig~vk%yS@4MQnG3Hj`3yo8)O za_G3zJB8P#n2-x5v^S>kqO>25H%GV;@5XNDxfEWS@)pR=oOuD>YQ{53oGRL@k%V8T zEuCf$I(~6z(4Q~Ul}&b<*nnEUqp65;P_ob7o%m$%bq zIQh)i_#Zx3{f97;Tk_w8&&}U6HOj~PJ;;=(zUQ$D?s(ka<2v*1TtsS}^<8)e@#tXZ z$u7K5{5shAyZgUU#m5^FG)f4YQN@p&c+}hRxo7a6^SbhE1BqDCi{HVK3nhK{Nc^|3 z51&Ly>jP?_u@Cdzj?c~b+||dqq8}gHIi)Y!tfWs~(r=l4nR{=7!Kc*1$KKOb1wzJ~d_;?oD8G58E{ z|EJ&d8CK)upT>6;{)XS4{>+zxPZ2&L_ka3LpPc^Acc<~4h-c5{0sJD5QIG7oq}B-x z;XMOu@H_rlSL=)i&1o9KbDfN#{6(Sf+w;*-Uik3+yQhd7P0=;hFQ4Jfrazs3^q!CT zJOAcm&Ir{rkaYJ;aHBlvVcMFNjCtC&Y74Tq=tsdk?eK8WdEmaXkYGZ1(iVD|#(Mgg zr$^Qd3K8DuLnaftr~G}$447ds&&aIHC`9*~JI{rX&vVWe=l-iisA}(FdVCqkK%!o|p#=w~tS&a`(y^4m6nyCn$PzB4_{ zdyfPe_UCI&=Dj!VFJOz<-xJs+L9YG$VV!yJlWbA@4-EjjB`CIk+=s5x{SuVfRkOUz z`+x)$_EA#sVA?-9JDpWp14lFOLo%eseg>T<@55=oamEJPC#M5EB13MoXYPZ7JrZoU zORt84N7GW!_u64MOmU(@^cJfgaHa}T-By}+Oq%DnuW9RJ-s4g%XpI^13>0K zIkPm;rSIq0L&G30x@yQ$-CN7eEAT6jaspX1l!qv%8B4wSXJ{VA#RbIW^Pa)YM~Lf5 z=Uq+Yisw_EBbunr>+>vPS{=7-@$*Q_nz(IeIKy?(Hg!j>VBU3#7zv!?tkgxhC_Lco z*2Pt^uO5djzo@`yVCP)OA6BS1@ZA$g_YsB40=p^fSA{A9z9%4eRH4eiBNTQ_p{l_9 z^ze@Jw2zRC>OdWFo={;E0^=_N=Why44t!ottS5Qey{NUO1&%D{%zH`&t_jGe#DsiI z>jK|6A9+N+c%!#-(j$s`w0R!6V+r?}JYymkY=wM*y@dP<`IR*(!lIHH41DfPG(`89 z)Sa$~#Q|Z!sE`sU3oNRD6&VUu1nwTKF>j_ql>u2U!%D6yumvxsx0MR34*Zc&M4{e+ z@2BBuW+_w?xbkM0l&#Rfz$z!`6*;L3*MTKZ5l01{ae8`1+x)#<5qoPzoECVUigBSr zb%D|y&I+%{P95?vY${RI`ar3(6M{W|C_p0GD&q3M$*wS_T%nbLFT)UMr_h=}CsJCW z60t6D*(@i;2c^A;+EG}@3$`h(#_8r01-!`_?-L_ZKYjz+-cjx70O8Z`zlF!S z%~D=%g0IthRFa`~gAK+*;r*PU_BtX^^J%eElbID-8ki74HpO6e=I4;iE>s>YbXU}( z7(Q{fnj$J1wmJJukrlfW?~T>TPtTv(&s_~rC4p{VG6$eq0-wG0X3nf$68P;)ydGxt zl^|%ZZEZ5EzXTcftPvKo21*dIzZnQHM1owV-MmLIYnXO}vX9KO&g9)=7A*VYVzTey zmyiRY*kJ={syl2_ns#hNMB}v}n2hfD%6xZ|k4>}Y2WxCtyM8V-E-0qo%>L#86fP{% z!KK?dZM@7{Ttta4wr9U-Fl$NC0ECp-bz5QWQhN|&%Iq#-E5@v4_Srxc_BHz<6qBIR z&RK}`u8^S0eyagOS4vQApZ^8GRYg<}^|rSR*O|3C=Nu@gv5!th$l4;x%7OOWn_vkfZ>xzkOl%0DA(rGo8%tz2z`|G0!+EB6>V1j+JjkCZO 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 La3QMwwA=p&e$K;< delta 178051 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: 800015c: b508 push {r3, lr} @@ -73,8 +73,8 @@ Disassembly of section .text: 8000166: f3af 8000 nop.w 800016a: bd08 pop {r3, pc} 800016c: 00000000 .word 0x00000000 - 8000170: 20000018 .word 0x20000018 - 8000174: 08004968 .word 0x08004968 + 8000170: 20000010 .word 0x20000010 + 8000174: 08004774 .word 0x08004774 08000178 <__aeabi_drsub>: 8000178: f081 4100 eor.w r1, r1, #2147483648 ; 0x80000000 @@ -1054,10923 +1054,10626 @@ __STATIC_INLINE void LL_AHB2_GRP1_EnableClock(uint32_t Periphs) 8000ca0: bc80 pop {r7} 8000ca2: 4770 bx lr -08000ca4 : -/* USER CODE END PFP */ +08000ca4 : + 0b10011000, // "x" + 0b10111000, // "y" + 0b11001000 // "z" +}; -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ - -void SetStandbyXOSC() { +void LED_on() { 8000ca4: b580 push {r7, lr} - 8000ca6: b082 sub sp, #8 - 8000ca8: af00 add r7, sp, #0 - uint8_t txbuf[2] = {0x80, 0x01}; - 8000caa: f44f 73c0 mov.w r3, #384 ; 0x180 - 8000cae: 80bb strh r3, [r7, #4] - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); - 8000cb0: 7939 ldrb r1, [r7, #4] - 8000cb2: 1d3a adds r2, r7, #4 - 8000cb4: 3201 adds r2, #1 - 8000cb6: 2301 movs r3, #1 - 8000cb8: 4803 ldr r0, [pc, #12] ; (8000cc8 ) - 8000cba: f002 ff63 bl 8003b84 -} - 8000cbe: bf00 nop - 8000cc0: 3708 adds r7, #8 - 8000cc2: 46bd mov sp, r7 - 8000cc4: bd80 pop {r7, pc} - 8000cc6: bf00 nop - 8000cc8: 200000b8 .word 0x200000b8 - -08000ccc : - -void SetPacketTypeLora() { - 8000ccc: b580 push {r7, lr} - 8000cce: b082 sub sp, #8 - 8000cd0: af00 add r7, sp, #0 - uint8_t txbuf[2] = {0x8A, 0x01}; - 8000cd2: f44f 73c5 mov.w r3, #394 ; 0x18a - 8000cd6: 80bb strh r3, [r7, #4] - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); - 8000cd8: 7939 ldrb r1, [r7, #4] - 8000cda: 1d3a adds r2, r7, #4 - 8000cdc: 3201 adds r2, #1 - 8000cde: 2301 movs r3, #1 - 8000ce0: 4803 ldr r0, [pc, #12] ; (8000cf0 ) - 8000ce2: f002 ff4f bl 8003b84 -} - 8000ce6: bf00 nop - 8000ce8: 3708 adds r7, #8 - 8000cea: 46bd mov sp, r7 - 8000cec: bd80 pop {r7, pc} - 8000cee: bf00 nop - 8000cf0: 200000b8 .word 0x200000b8 - -08000cf4 : - -void SetPacketTypeFSK() { - 8000cf4: b580 push {r7, lr} - 8000cf6: b082 sub sp, #8 - 8000cf8: af00 add r7, sp, #0 - uint8_t txbuf[2] = {0x8A, 0x00}; - 8000cfa: 238a movs r3, #138 ; 0x8a - 8000cfc: 80bb strh r3, [r7, #4] - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); - 8000cfe: 7939 ldrb r1, [r7, #4] - 8000d00: 1d3a adds r2, r7, #4 - 8000d02: 3201 adds r2, #1 - 8000d04: 2301 movs r3, #1 - 8000d06: 4803 ldr r0, [pc, #12] ; (8000d14 ) - 8000d08: f002 ff3c bl 8003b84 -} - 8000d0c: bf00 nop - 8000d0e: 3708 adds r7, #8 - 8000d10: 46bd mov sp, r7 - 8000d12: bd80 pop {r7, pc} - 8000d14: 200000b8 .word 0x200000b8 - -08000d18 : - -uint32_t ComputeRfFreq(double frequencyMhz) { - 8000d18: b580 push {r7, lr} - 8000d1a: b082 sub sp, #8 - 8000d1c: af00 add r7, sp, #0 - 8000d1e: e9c7 0100 strd r0, r1, [r7] - return (uint32_t)(frequencyMhz * 1048576L); //2^25/(32e6) - 8000d22: f04f 0200 mov.w r2, #0 - 8000d26: 4b08 ldr r3, [pc, #32] ; (8000d48 ) - 8000d28: e9d7 0100 ldrd r0, r1, [r7] - 8000d2c: f7ff fbe0 bl 80004f0 <__aeabi_dmul> - 8000d30: 4602 mov r2, r0 - 8000d32: 460b mov r3, r1 - 8000d34: 4610 mov r0, r2 - 8000d36: 4619 mov r1, r3 - 8000d38: f7ff fdec bl 8000914 <__aeabi_d2uiz> - 8000d3c: 4603 mov r3, r0 -} - 8000d3e: 4618 mov r0, r3 - 8000d40: 3708 adds r7, #8 - 8000d42: 46bd mov sp, r7 - 8000d44: bd80 pop {r7, pc} - 8000d46: bf00 nop - 8000d48: 41300000 .word 0x41300000 - -08000d4c : - -void SetRfFreq(uint32_t rfFreq) { - 8000d4c: b580 push {r7, lr} - 8000d4e: b084 sub sp, #16 - 8000d50: af00 add r7, sp, #0 - 8000d52: 6078 str r0, [r7, #4] - uint8_t txbuf[5] = {0x86, (rfFreq & 0xFF000000) >> 24, (rfFreq & 0x00FF0000) >> 16, (rfFreq & 0x0000FF00) >> 8, rfFreq & 0x000000FF}; - 8000d54: 2386 movs r3, #134 ; 0x86 - 8000d56: 723b strb r3, [r7, #8] - 8000d58: 687b ldr r3, [r7, #4] - 8000d5a: 0e1b lsrs r3, r3, #24 - 8000d5c: b2db uxtb r3, r3 - 8000d5e: 727b strb r3, [r7, #9] - 8000d60: 687b ldr r3, [r7, #4] - 8000d62: 0c1b lsrs r3, r3, #16 - 8000d64: b2db uxtb r3, r3 - 8000d66: 72bb strb r3, [r7, #10] - 8000d68: 687b ldr r3, [r7, #4] - 8000d6a: 0a1b lsrs r3, r3, #8 - 8000d6c: b2db uxtb r3, r3 - 8000d6e: 72fb strb r3, [r7, #11] - 8000d70: 687b ldr r3, [r7, #4] - 8000d72: b2db uxtb r3, r3 - 8000d74: 733b strb r3, [r7, #12] - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); - 8000d76: 7a39 ldrb r1, [r7, #8] - 8000d78: f107 0208 add.w r2, r7, #8 - 8000d7c: 3201 adds r2, #1 - 8000d7e: 2304 movs r3, #4 - 8000d80: 4803 ldr r0, [pc, #12] ; (8000d90 ) - 8000d82: f002 feff bl 8003b84 -} - 8000d86: bf00 nop - 8000d88: 3710 adds r7, #16 - 8000d8a: 46bd mov sp, r7 - 8000d8c: bd80 pop {r7, pc} - 8000d8e: bf00 nop - 8000d90: 200000b8 .word 0x200000b8 - -08000d94 : - // set Pa to 14 dB. - uint8_t txbuf[5] = {0x95, 0x02, 0x02, 0x00, 0x01}; - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); -} - -void SetPa22dB() { - 8000d94: b580 push {r7, lr} - 8000d96: b082 sub sp, #8 - 8000d98: af00 add r7, sp, #0 - // set Pa to the highest 22 dBm - uint8_t txbuf[5] = {0x95, 0x04, 0x07, 0x00, 0x01}; - 8000d9a: 4a09 ldr r2, [pc, #36] ; (8000dc0 ) - 8000d9c: 463b mov r3, r7 - 8000d9e: e892 0003 ldmia.w r2, {r0, r1} - 8000da2: 6018 str r0, [r3, #0] - 8000da4: 3304 adds r3, #4 - 8000da6: 7019 strb r1, [r3, #0] - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); - 8000da8: 7839 ldrb r1, [r7, #0] - 8000daa: 463a mov r2, r7 - 8000dac: 3201 adds r2, #1 - 8000dae: 2304 movs r3, #4 - 8000db0: 4804 ldr r0, [pc, #16] ; (8000dc4 ) - 8000db2: f002 fee7 bl 8003b84 -} - 8000db6: bf00 nop - 8000db8: 3708 adds r7, #8 - 8000dba: 46bd mov sp, r7 - 8000dbc: bd80 pop {r7, pc} - 8000dbe: bf00 nop - 8000dc0: 08004988 .word 0x08004988 - 8000dc4: 200000b8 .word 0x200000b8 - -08000dc8 : - -void SetTxPower(int8_t powerdBm) { - 8000dc8: b580 push {r7, lr} - 8000dca: b084 sub sp, #16 - 8000dcc: af00 add r7, sp, #0 - 8000dce: 4603 mov r3, r0 - 8000dd0: 71fb strb r3, [r7, #7] - // Between -9 and 22 - uint8_t txbuf[3] = {0x8E, (uint8_t) powerdBm, 0x02}; - 8000dd2: 238e movs r3, #142 ; 0x8e - 8000dd4: 733b strb r3, [r7, #12] - 8000dd6: 79fb ldrb r3, [r7, #7] - 8000dd8: 737b strb r3, [r7, #13] - 8000dda: 2302 movs r3, #2 - 8000ddc: 73bb strb r3, [r7, #14] - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); - 8000dde: 7b39 ldrb r1, [r7, #12] - 8000de0: f107 020c add.w r2, r7, #12 - 8000de4: 3201 adds r2, #1 - 8000de6: 2302 movs r3, #2 - 8000de8: 4803 ldr r0, [pc, #12] ; (8000df8 ) - 8000dea: f002 fecb bl 8003b84 -} - 8000dee: bf00 nop - 8000df0: 3710 adds r7, #16 - 8000df2: 46bd mov sp, r7 - 8000df4: bd80 pop {r7, pc} - 8000df6: bf00 nop - 8000df8: 200000b8 .word 0x200000b8 - -08000dfc : - -void SetContinuousWave() { - 8000dfc: b580 push {r7, lr} - 8000dfe: b082 sub sp, #8 - 8000e00: af00 add r7, sp, #0 - uint8_t txbuf[1] = {0xD1}; - 8000e02: 23d1 movs r3, #209 ; 0xd1 - 8000e04: 713b strb r3, [r7, #4] - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf, 0); - 8000e06: 7939 ldrb r1, [r7, #4] - 8000e08: 1d3a adds r2, r7, #4 - 8000e0a: 2300 movs r3, #0 - 8000e0c: 4803 ldr r0, [pc, #12] ; (8000e1c ) - 8000e0e: f002 feb9 bl 8003b84 -} - 8000e12: bf00 nop - 8000e14: 3708 adds r7, #8 - 8000e16: 46bd mov sp, r7 - 8000e18: bd80 pop {r7, pc} - 8000e1a: bf00 nop - 8000e1c: 200000b8 .word 0x200000b8 - -08000e20 : - -void SetTxInfinitePreamble() { - 8000e20: b580 push {r7, lr} - 8000e22: b082 sub sp, #8 - 8000e24: af00 add r7, sp, #0 - uint8_t txbuf[1] = {0xD2}; - 8000e26: 23d2 movs r3, #210 ; 0xd2 - 8000e28: 713b strb r3, [r7, #4] - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf, 0); - 8000e2a: 7939 ldrb r1, [r7, #4] - 8000e2c: 1d3a adds r2, r7, #4 - 8000e2e: 2300 movs r3, #0 - 8000e30: 4803 ldr r0, [pc, #12] ; (8000e40 ) - 8000e32: f002 fea7 bl 8003b84 -} - 8000e36: bf00 nop - 8000e38: 3708 adds r7, #8 - 8000e3a: 46bd mov sp, r7 - 8000e3c: bd80 pop {r7, pc} - 8000e3e: bf00 nop - 8000e40: 200000b8 .word 0x200000b8 - 8000e44: 00000000 .word 0x00000000 - -08000e48 : -void SetModulationParamsLora(const uint8_t params[4]) { - uint8_t txbuf[5] = {0x8B, params[0], params[1], params[2], params[3]}; - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); -} - -void SetModulationParamsFSK(uint32_t bitrate, uint8_t pulseshape, uint8_t bandwidth, uint32_t freq_dev) { - 8000e48: b580 push {r7, lr} - 8000e4a: b08a sub sp, #40 ; 0x28 - 8000e4c: af00 add r7, sp, #0 - 8000e4e: 60f8 str r0, [r7, #12] - 8000e50: 607b str r3, [r7, #4] - 8000e52: 460b mov r3, r1 - 8000e54: 72fb strb r3, [r7, #11] - 8000e56: 4613 mov r3, r2 - 8000e58: 72bb strb r3, [r7, #10] - uint32_t BR = 32 * 32e6 / bitrate; - 8000e5a: 68f8 ldr r0, [r7, #12] - 8000e5c: f7ff face bl 80003fc <__aeabi_ui2d> - 8000e60: 4602 mov r2, r0 - 8000e62: 460b mov r3, r1 - 8000e64: a122 add r1, pc, #136 ; (adr r1, 8000ef0 ) - 8000e66: e9d1 0100 ldrd r0, r1, [r1] - 8000e6a: f7ff fc6b bl 8000744 <__aeabi_ddiv> - 8000e6e: 4602 mov r2, r0 - 8000e70: 460b mov r3, r1 - 8000e72: 4610 mov r0, r2 - 8000e74: 4619 mov r1, r3 - 8000e76: f7ff fd4d bl 8000914 <__aeabi_d2uiz> - 8000e7a: 4603 mov r3, r0 - 8000e7c: 627b str r3, [r7, #36] ; 0x24 - uint32_t fdev = (uint32_t) (freq_dev * 1.048576L); // 2^25/32e6 = 1.048576 - 8000e7e: 6878 ldr r0, [r7, #4] - 8000e80: f7ff fabc bl 80003fc <__aeabi_ui2d> - 8000e84: a31c add r3, pc, #112 ; (adr r3, 8000ef8 ) - 8000e86: e9d3 2300 ldrd r2, r3, [r3] - 8000e8a: f7ff fb31 bl 80004f0 <__aeabi_dmul> - 8000e8e: 4602 mov r2, r0 - 8000e90: 460b mov r3, r1 - 8000e92: 4610 mov r0, r2 - 8000e94: 4619 mov r1, r3 - 8000e96: f7ff fd3d bl 8000914 <__aeabi_d2uiz> - 8000e9a: 4603 mov r3, r0 - 8000e9c: 623b str r3, [r7, #32] - uint8_t txbuf[9] = {0x8B, (BR & 0x00FF0000) >> 16, (BR & 0x0000FF00) >> 8, BR & 0x000000FF, pulseshape, bandwidth, (fdev & 0x00FF0000) >> 16, (fdev & 0x0000FF00) >> 8, fdev & 0x000000FF}; - 8000e9e: 238b movs r3, #139 ; 0x8b - 8000ea0: 753b strb r3, [r7, #20] - 8000ea2: 6a7b ldr r3, [r7, #36] ; 0x24 - 8000ea4: 0c1b lsrs r3, r3, #16 - 8000ea6: b2db uxtb r3, r3 - 8000ea8: 757b strb r3, [r7, #21] - 8000eaa: 6a7b ldr r3, [r7, #36] ; 0x24 - 8000eac: 0a1b lsrs r3, r3, #8 - 8000eae: b2db uxtb r3, r3 - 8000eb0: 75bb strb r3, [r7, #22] - 8000eb2: 6a7b ldr r3, [r7, #36] ; 0x24 - 8000eb4: b2db uxtb r3, r3 - 8000eb6: 75fb strb r3, [r7, #23] - 8000eb8: 7afb ldrb r3, [r7, #11] - 8000eba: 763b strb r3, [r7, #24] - 8000ebc: 7abb ldrb r3, [r7, #10] - 8000ebe: 767b strb r3, [r7, #25] - 8000ec0: 6a3b ldr r3, [r7, #32] - 8000ec2: 0c1b lsrs r3, r3, #16 - 8000ec4: b2db uxtb r3, r3 - 8000ec6: 76bb strb r3, [r7, #26] - 8000ec8: 6a3b ldr r3, [r7, #32] - 8000eca: 0a1b lsrs r3, r3, #8 - 8000ecc: b2db uxtb r3, r3 - 8000ece: 76fb strb r3, [r7, #27] - 8000ed0: 6a3b ldr r3, [r7, #32] - 8000ed2: b2db uxtb r3, r3 - 8000ed4: 773b strb r3, [r7, #28] - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); - 8000ed6: 7d39 ldrb r1, [r7, #20] - 8000ed8: f107 0214 add.w r2, r7, #20 - 8000edc: 3201 adds r2, #1 - 8000ede: 2308 movs r3, #8 - 8000ee0: 4807 ldr r0, [pc, #28] ; (8000f00 ) - 8000ee2: f002 fe4f bl 8003b84 -} - 8000ee6: bf00 nop - 8000ee8: 3728 adds r7, #40 ; 0x28 - 8000eea: 46bd mov sp, r7 - 8000eec: bd80 pop {r7, pc} - 8000eee: bf00 nop - 8000ef0: 00000000 .word 0x00000000 - 8000ef4: 41ce8480 .word 0x41ce8480 - 8000ef8: a0b5ed8d .word 0xa0b5ed8d - 8000efc: 3ff0c6f7 .word 0x3ff0c6f7 - 8000f00: 200000b8 .word 0x200000b8 - -08000f04 : - - HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); -} - - -void FSKBeep(int8_t powerdBm, uint32_t toneHz, uint32_t lengthMs) { - 8000f04: b580 push {r7, lr} - 8000f06: b084 sub sp, #16 - 8000f08: af00 add r7, sp, #0 - 8000f0a: 4603 mov r3, r0 - 8000f0c: 60b9 str r1, [r7, #8] - 8000f0e: 607a str r2, [r7, #4] - 8000f10: 73fb strb r3, [r7, #15] - // assume in standbyXOSC already. - HAL_Delay(1); - 8000f12: 2001 movs r0, #1 - 8000f14: f000 fccc bl 80018b0 - SetTxPower(powerdBm); - 8000f18: f997 300f ldrsb.w r3, [r7, #15] - 8000f1c: 4618 mov r0, r3 - 8000f1e: f7ff ff53 bl 8000dc8 - SetModulationParamsFSK(toneHz*2, 0x09, 0x1E, 2500); - 8000f22: 68bb ldr r3, [r7, #8] - 8000f24: 0058 lsls r0, r3, #1 - 8000f26: f640 13c4 movw r3, #2500 ; 0x9c4 - 8000f2a: 221e movs r2, #30 - 8000f2c: 2109 movs r1, #9 - 8000f2e: f7ff ff8b bl 8000e48 - HAL_Delay(5); - 8000f32: 2005 movs r0, #5 - 8000f34: f000 fcbc bl 80018b0 - SetTxInfinitePreamble(); - 8000f38: f7ff ff72 bl 8000e20 - HAL_Delay(lengthMs); - 8000f3c: 6878 ldr r0, [r7, #4] - 8000f3e: f000 fcb7 bl 80018b0 - SetStandbyXOSC(); - 8000f42: f7ff feaf bl 8000ca4 - HAL_Delay(5); - 8000f46: 2005 movs r0, #5 - 8000f48: f000 fcb2 bl 80018b0 -} - 8000f4c: bf00 nop - 8000f4e: 3710 adds r7, #16 - 8000f50: 46bd mov sp, r7 - 8000f52: bd80 pop {r7, pc} - -08000f54 : - -void CWBeep(int8_t powerdBm, uint32_t lengthMs) { - 8000f54: b580 push {r7, lr} - 8000f56: b082 sub sp, #8 - 8000f58: af00 add r7, sp, #0 - 8000f5a: 4603 mov r3, r0 - 8000f5c: 6039 str r1, [r7, #0] - 8000f5e: 71fb strb r3, [r7, #7] - HAL_Delay(1); - 8000f60: 2001 movs r0, #1 - 8000f62: f000 fca5 bl 80018b0 - SetTxPower(powerdBm); - 8000f66: f997 3007 ldrsb.w r3, [r7, #7] - 8000f6a: 4618 mov r0, r3 - 8000f6c: f7ff ff2c bl 8000dc8 - HAL_Delay(5); - 8000f70: 2005 movs r0, #5 - 8000f72: f000 fc9d bl 80018b0 - SetContinuousWave(); - 8000f76: f7ff ff41 bl 8000dfc - HAL_Delay(lengthMs); - 8000f7a: 6838 ldr r0, [r7, #0] - 8000f7c: f000 fc98 bl 80018b0 - SetStandbyXOSC(); - 8000f80: f7ff fe90 bl 8000ca4 - HAL_Delay(5); - 8000f84: 2005 movs r0, #5 - 8000f86: f000 fc93 bl 80018b0 -} - 8000f8a: bf00 nop - 8000f8c: 3708 adds r7, #8 - 8000f8e: 46bd mov sp, r7 - 8000f90: bd80 pop {r7, pc} - ... - -08000f94 : - -// https://en.wikipedia.org/wiki/Morse_code#/media/File:International_Morse_Code.svg -uint32_t morse_unit_ms = 100; -int8_t morse_power = 10; - -void play_morse_char(uint8_t ascii_letter, bool use_cw) { - 8000f94: b580 push {r7, lr} - 8000f96: b084 sub sp, #16 - 8000f98: af00 add r7, sp, #0 - 8000f9a: 4603 mov r3, r0 - 8000f9c: 460a mov r2, r1 - 8000f9e: 71fb strb r3, [r7, #7] - 8000fa0: 4613 mov r3, r2 - 8000fa2: 71bb strb r3, [r7, #6] - uint8_t morse_code = 0b11111111; - 8000fa4: 23ff movs r3, #255 ; 0xff - 8000fa6: 73fb strb r3, [r7, #15] - if (ascii_letter > 31 && ascii_letter < 123) { - 8000fa8: 79fb ldrb r3, [r7, #7] - 8000faa: 2b1f cmp r3, #31 - 8000fac: d907 bls.n 8000fbe - 8000fae: 79fb ldrb r3, [r7, #7] - 8000fb0: 2b7a cmp r3, #122 ; 0x7a - 8000fb2: d804 bhi.n 8000fbe - morse_code = morse_chars[ascii_letter - 32]; - 8000fb4: 79fb ldrb r3, [r7, #7] - 8000fb6: 3b20 subs r3, #32 - 8000fb8: 4a40 ldr r2, [pc, #256] ; (80010bc ) - 8000fba: 5cd3 ldrb r3, [r2, r3] - 8000fbc: 73fb strb r3, [r7, #15] - } - - // space - if (morse_code == 0b11111111) { - 8000fbe: 7bfb ldrb r3, [r7, #15] - 8000fc0: 2bff cmp r3, #255 ; 0xff - 8000fc2: d10e bne.n 8000fe2 - if (use_cw) { - 8000fc4: 79bb ldrb r3, [r7, #6] - 8000fc6: 2b00 cmp r3, #0 - 8000fc8: d005 beq.n 8000fd6 - HAL_Delay(morse_unit_ms); - 8000fca: 4b3d ldr r3, [pc, #244] ; (80010c0 ) - 8000fcc: 681b ldr r3, [r3, #0] - 8000fce: 4618 mov r0, r3 - 8000fd0: f000 fc6e bl 80018b0 - } else { - //FSKBeep(morse_power, 750, morse_unit_ms); - HAL_Delay(morse_unit_ms); - } - return; - 8000fd4: e06f b.n 80010b6 - HAL_Delay(morse_unit_ms); - 8000fd6: 4b3a ldr r3, [pc, #232] ; (80010c0 ) - 8000fd8: 681b ldr r3, [r3, #0] - 8000fda: 4618 mov r0, r3 - 8000fdc: f000 fc68 bl 80018b0 - return; - 8000fe0: e069 b.n 80010b6 - } - uint8_t terminatelen = 0; - 8000fe2: 2300 movs r3, #0 - 8000fe4: 73bb strb r3, [r7, #14] - for (uint8_t idx = 0; idx < 8; idx++) { - 8000fe6: 2300 movs r3, #0 - 8000fe8: 737b strb r3, [r7, #13] - 8000fea: e00d b.n 8001008 - if (morse_code & (1 << idx)) { - 8000fec: 7bfa ldrb r2, [r7, #15] - 8000fee: 7b7b ldrb r3, [r7, #13] - 8000ff0: fa42 f303 asr.w r3, r2, r3 - 8000ff4: f003 0301 and.w r3, r3, #1 - 8000ff8: 2b00 cmp r3, #0 - 8000ffa: d002 beq.n 8001002 - terminatelen = idx; - 8000ffc: 7b7b ldrb r3, [r7, #13] - 8000ffe: 73bb strb r3, [r7, #14] - break; - 8001000: e005 b.n 800100e - for (uint8_t idx = 0; idx < 8; idx++) { - 8001002: 7b7b ldrb r3, [r7, #13] - 8001004: 3301 adds r3, #1 - 8001006: 737b strb r3, [r7, #13] - 8001008: 7b7b ldrb r3, [r7, #13] - 800100a: 2b07 cmp r3, #7 - 800100c: d9ee bls.n 8000fec - } - } - - for (uint8_t i = 7; i > terminatelen; i--) { - 800100e: 2307 movs r3, #7 - 8001010: 733b strb r3, [r7, #12] - 8001012: e04c b.n 80010ae - if (morse_code & (1 << i)) { - 8001014: 7bfa ldrb r2, [r7, #15] - 8001016: 7b3b ldrb r3, [r7, #12] - 8001018: fa42 f303 asr.w r3, r2, r3 - 800101c: f003 0301 and.w r3, r3, #1 - 8001020: 2b00 cmp r3, #0 - 8001022: d01c beq.n 800105e - // make dat - //printf("-"); - if (use_cw) { - 8001024: 79bb ldrb r3, [r7, #6] - 8001026: 2b00 cmp r3, #0 - 8001028: d00b beq.n 8001042 - CWBeep(morse_power, morse_unit_ms * 3); - 800102a: 4b26 ldr r3, [pc, #152] ; (80010c4 ) - 800102c: f993 0000 ldrsb.w r0, [r3] - 8001030: 4b23 ldr r3, [pc, #140] ; (80010c0 ) - 8001032: 681a ldr r2, [r3, #0] - 8001034: 4613 mov r3, r2 - 8001036: 005b lsls r3, r3, #1 - 8001038: 4413 add r3, r2 - 800103a: 4619 mov r1, r3 - 800103c: f7ff ff8a bl 8000f54 - 8001040: e024 b.n 800108c - } else { - FSKBeep(morse_power, 750, morse_unit_ms * 3); - 8001042: 4b20 ldr r3, [pc, #128] ; (80010c4 ) - 8001044: f993 0000 ldrsb.w r0, [r3] - 8001048: 4b1d ldr r3, [pc, #116] ; (80010c0 ) - 800104a: 681a ldr r2, [r3, #0] - 800104c: 4613 mov r3, r2 - 800104e: 005b lsls r3, r3, #1 - 8001050: 4413 add r3, r2 - 8001052: 461a mov r2, r3 - 8001054: f240 21ee movw r1, #750 ; 0x2ee - 8001058: f7ff ff54 bl 8000f04 - 800105c: e016 b.n 800108c - } - } else { - // make dit - //printf("."); - if (use_cw) { - 800105e: 79bb ldrb r3, [r7, #6] - 8001060: 2b00 cmp r3, #0 - 8001062: d009 beq.n 8001078 - CWBeep(morse_power, morse_unit_ms); - 8001064: 4b17 ldr r3, [pc, #92] ; (80010c4 ) - 8001066: f993 3000 ldrsb.w r3, [r3] - 800106a: 4a15 ldr r2, [pc, #84] ; (80010c0 ) - 800106c: 6812 ldr r2, [r2, #0] - 800106e: 4611 mov r1, r2 - 8001070: 4618 mov r0, r3 - 8001072: f7ff ff6f bl 8000f54 - 8001076: e009 b.n 800108c - } else { - FSKBeep(morse_power, 750, morse_unit_ms); - 8001078: 4b12 ldr r3, [pc, #72] ; (80010c4 ) - 800107a: f993 3000 ldrsb.w r3, [r3] - 800107e: 4a10 ldr r2, [pc, #64] ; (80010c0 ) - 8001080: 6812 ldr r2, [r2, #0] - 8001082: f240 21ee movw r1, #750 ; 0x2ee - 8001086: 4618 mov r0, r3 - 8001088: f7ff ff3c bl 8000f04 - } - } - - // Make delay. - if (use_cw) { - 800108c: 79bb ldrb r3, [r7, #6] - 800108e: 2b00 cmp r3, #0 - 8001090: d005 beq.n 800109e - HAL_Delay(morse_unit_ms); - 8001092: 4b0b ldr r3, [pc, #44] ; (80010c0 ) - 8001094: 681b ldr r3, [r3, #0] - 8001096: 4618 mov r0, r3 - 8001098: f000 fc0a bl 80018b0 - 800109c: e004 b.n 80010a8 - } else { - HAL_Delay(morse_unit_ms); - 800109e: 4b08 ldr r3, [pc, #32] ; (80010c0 ) - 80010a0: 681b ldr r3, [r3, #0] - 80010a2: 4618 mov r0, r3 - 80010a4: f000 fc04 bl 80018b0 - for (uint8_t i = 7; i > terminatelen; i--) { - 80010a8: 7b3b ldrb r3, [r7, #12] - 80010aa: 3b01 subs r3, #1 - 80010ac: 733b strb r3, [r7, #12] - 80010ae: 7b3a ldrb r2, [r7, #12] - 80010b0: 7bbb ldrb r3, [r7, #14] - 80010b2: 429a cmp r2, r3 - 80010b4: d8ae bhi.n 8001014 - //CWBeep(morse_power, morse_unit_ms); - } - } -} - 80010b6: 3710 adds r7, #16 - 80010b8: 46bd mov sp, r7 - 80010ba: bd80 pop {r7, pc} - 80010bc: 080049b8 .word 0x080049b8 - 80010c0: 20000000 .word 0x20000000 - 80010c4: 20000004 .word 0x20000004 - -080010c8 : - -void play_morse_word(uint8_t* letters, uint8_t len, bool use_cw) { - 80010c8: b580 push {r7, lr} - 80010ca: b084 sub sp, #16 - 80010cc: af00 add r7, sp, #0 - 80010ce: 6078 str r0, [r7, #4] - 80010d0: 460b mov r3, r1 - 80010d2: 70fb strb r3, [r7, #3] - 80010d4: 4613 mov r3, r2 - 80010d6: 70bb strb r3, [r7, #2] - for (uint8_t i = 0; i < len; i++) { - 80010d8: 2300 movs r3, #0 - 80010da: 73fb strb r3, [r7, #15] - 80010dc: e01f b.n 800111e - play_morse_char(letters[i], use_cw); - 80010de: 7bfb ldrb r3, [r7, #15] - 80010e0: 687a ldr r2, [r7, #4] - 80010e2: 4413 add r3, r2 - 80010e4: 781b ldrb r3, [r3, #0] - 80010e6: 78ba ldrb r2, [r7, #2] - 80010e8: 4611 mov r1, r2 - 80010ea: 4618 mov r0, r3 - 80010ec: f7ff ff52 bl 8000f94 - - // Space between letters - if (use_cw) { - 80010f0: 78bb ldrb r3, [r7, #2] - 80010f2: 2b00 cmp r3, #0 - 80010f4: d008 beq.n 8001108 - HAL_Delay(morse_unit_ms * 3); - 80010f6: 4b0e ldr r3, [pc, #56] ; (8001130 ) - 80010f8: 681a ldr r2, [r3, #0] - 80010fa: 4613 mov r3, r2 - 80010fc: 005b lsls r3, r3, #1 - 80010fe: 4413 add r3, r2 - 8001100: 4618 mov r0, r3 - 8001102: f000 fbd5 bl 80018b0 - 8001106: e007 b.n 8001118 - } else { - //CWBeep(morse_power, morse_unit_ms); - HAL_Delay(morse_unit_ms * 3); - 8001108: 4b09 ldr r3, [pc, #36] ; (8001130 ) - 800110a: 681a ldr r2, [r3, #0] - 800110c: 4613 mov r3, r2 - 800110e: 005b lsls r3, r3, #1 - 8001110: 4413 add r3, r2 - 8001112: 4618 mov r0, r3 - 8001114: f000 fbcc bl 80018b0 - for (uint8_t i = 0; i < len; i++) { - 8001118: 7bfb ldrb r3, [r7, #15] - 800111a: 3301 adds r3, #1 - 800111c: 73fb strb r3, [r7, #15] - 800111e: 7bfa ldrb r2, [r7, #15] - 8001120: 78fb ldrb r3, [r7, #3] - 8001122: 429a cmp r2, r3 - 8001124: d3db bcc.n 80010de - } - } -} - 8001126: bf00 nop - 8001128: bf00 nop - 800112a: 3710 adds r7, #16 - 800112c: 46bd mov sp, r7 - 800112e: bd80 pop {r7, pc} - 8001130: 20000000 .word 0x20000000 - 8001134: 00000000 .word 0x00000000 - -08001138

: + 8000ca6: af00 add r7, sp, #0 + HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET); + 8000ca8: 2201 movs r2, #1 + 8000caa: f44f 7100 mov.w r1, #512 ; 0x200 + 8000cae: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8000cb2: f001 fa6f bl 8002194 +} + 8000cb6: bf00 nop + 8000cb8: bd80 pop {r7, pc} + +08000cba : +void LED_off() { + 8000cba: b580 push {r7, lr} + 8000cbc: af00 add r7, sp, #0 + HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET); + 8000cbe: 2200 movs r2, #0 + 8000cc0: f44f 7100 mov.w r1, #512 ; 0x200 + 8000cc4: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8000cc8: f001 fa64 bl 8002194 +} + 8000ccc: bf00 nop + 8000cce: bd80 pop {r7, pc} + +08000cd0
: /** * @brief The application entry point. * @retval int */ int main(void) { - 8001138: b580 push {r7, lr} - 800113a: b086 sub sp, #24 - 800113c: af00 add r7, sp, #0 + 8000cd0: b580 push {r7, lr} + 8000cd2: b084 sub sp, #16 + 8000cd4: af00 add r7, sp, #0 /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); - 800113e: f000 fb41 bl 80017c4 + 8000cd6: f000 fc7b bl 80015d0 /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); - 8001142: f000 f87f bl 8001244 + 8000cda: f000 f875 bl 8000dc8 /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); - 8001146: f000 f99f bl 8001488 + 8000cde: f000 f995 bl 800100c MX_ADC_Init(); - 800114a: f000 f8cf bl 80012ec + 8000ce2: f000 f8c5 bl 8000e70 MX_SUBGHZ_Init(); - 800114e: f000 f93d bl 80013cc + 8000ce6: f000 f933 bl 8000f50 MX_USART2_UART_Init(); - 8001152: f000 f94d bl 80013f0 + 8000cea: f000 f943 bl 8000f74 MX_CRC_Init(); - 8001156: f000 f917 bl 8001388 + 8000cee: f000 f90d bl 8000f0c /* USER CODE BEGIN 2 */ //EE_Status ee_status = EE_OK; - - HAL_Delay(1000); // initial start - 800115a: f44f 707a mov.w r0, #1000 ; 0x3e8 - 800115e: f000 fba7 bl 80018b0 + HAL_Delay(6000); // initial start + 8000cf2: f241 7070 movw r0, #6000 ; 0x1770 + 8000cf6: f000 fce1 bl 80016bc SetStandbyXOSC(); - 8001162: f7ff fd9f bl 8000ca4 + 8000cfa: f000 f9cf bl 800109c HAL_Delay(1); - 8001166: 2001 movs r0, #1 - 8001168: f000 fba2 bl 80018b0 + 8000cfe: 2001 movs r0, #1 + 8000d00: f000 fcdc bl 80016bc SetPacketTypeLora(); - 800116c: f7ff fdae bl 8000ccc + 8000d04: f000 f9de bl 80010c4 HAL_Delay(1); - 8001170: 2001 movs r0, #1 - 8001172: f000 fb9d bl 80018b0 - //SetPaLowPower(); - SetPa22dB(); - 8001176: f7ff fe0d bl 8000d94 + 8000d08: 2001 movs r0, #1 + 8000d0a: f000 fcd7 bl 80016bc + + //SetPaLowPower(); // For powers up to 14 dBm + SetPa22dB(); // Uncomment for powers up to 22 dBm + 8000d0e: f000 fa3d bl 800118c HAL_Delay(1); - 800117a: 2001 movs r0, #1 - 800117c: f000 fb98 bl 80018b0 + 8000d12: 2001 movs r0, #1 + 8000d14: f000 fcd2 bl 80016bc SetTxPower(-9); - 8001180: f06f 0008 mvn.w r0, #8 - 8001184: f7ff fe20 bl 8000dc8 + 8000d18: f06f 0008 mvn.w r0, #8 + 8000d1c: f000 fa50 bl 80011c0 HAL_Delay(1); - 8001188: 2001 movs r0, #1 - 800118a: f000 fb91 bl 80018b0 + 8000d20: 2001 movs r0, #1 + 8000d22: f000 fccb bl 80016bc SetPacketTypeFSK(); - 800118e: f7ff fdb1 bl 8000cf4 - - SetModulationParamsFSK(2000, 0x09, 0x1E, 3000); - 8001192: f640 33b8 movw r3, #3000 ; 0xbb8 - 8001196: 221e movs r2, #30 - 8001198: 2109 movs r1, #9 - 800119a: f44f 60fa mov.w r0, #2000 ; 0x7d0 - 800119e: f7ff fe53 bl 8000e48 - - double center_freq = 446.14375; - 80011a2: a325 add r3, pc, #148 ; (adr r3, 8001238 ) - 80011a4: e9d3 2300 ldrd r2, r3, [r3] - 80011a8: e9c7 2304 strd r2, r3, [r7, #16] - - SetRfFreq(ComputeRfFreq(center_freq)); - 80011ac: e9d7 0104 ldrd r0, r1, [r7, #16] - 80011b0: f7ff fdb2 bl 8000d18 - 80011b4: 4603 mov r3, r0 - 80011b6: 4618 mov r0, r3 - 80011b8: f7ff fdc8 bl 8000d4c - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ + 8000d26: f000 f9e1 bl 80010ec + + SetModulationParamsFSK(2000, 0x09, 0x1E, 2500); + 8000d2a: f640 13c4 movw r3, #2500 ; 0x9c4 + 8000d2e: 221e movs r2, #30 + 8000d30: 2109 movs r1, #9 + 8000d32: f44f 60fa mov.w r0, #2000 ; 0x7d0 + 8000d36: f000 fa6f bl 8001218 + + // Frequency setting in MHz + double center_freq = PMR446[13-1] ;//434.700; + 8000d3a: a31f add r3, pc, #124 ; (adr r3, 8000db8 ) + 8000d3c: e9d3 2300 ldrd r2, r3, [r3] + 8000d40: e9c7 2302 strd r2, r3, [r7, #8] + //double center_freq = 223.010; + double freq_correction = 0.99999539941; // Try trimming caps + 8000d44: a31e add r3, pc, #120 ; (adr r3, 8000dc0 ) + 8000d46: e9d3 2300 ldrd r2, r3, [r3] + 8000d4a: e9c7 2300 strd r2, r3, [r7] + + SetRfFreq(ComputeRfFreq(center_freq * freq_correction)); + 8000d4e: e9d7 2300 ldrd r2, r3, [r7] + 8000d52: e9d7 0102 ldrd r0, r1, [r7, #8] + 8000d56: f7ff fbcb bl 80004f0 <__aeabi_dmul> + 8000d5a: 4602 mov r2, r0 + 8000d5c: 460b mov r3, r1 + 8000d5e: 4610 mov r0, r2 + 8000d60: 4619 mov r1, r3 + 8000d62: f000 f9d5 bl 8001110 + 8000d66: 4603 mov r3, r0 + 8000d68: 4618 mov r0, r3 + 8000d6a: f000 f9eb bl 8001144 + HAL_Delay(1000); + }*/ + while (1) { - HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET); - 80011bc: 2201 movs r2, #1 - 80011be: f44f 7100 mov.w r1, #512 ; 0x200 - 80011c2: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 - 80011c6: f001 f8df bl 8002388 + LED_on(); + 8000d6e: f7ff ff99 bl 8000ca4 FSKBeep(-9, 500, 200); - 80011ca: 22c8 movs r2, #200 ; 0xc8 - 80011cc: f44f 71fa mov.w r1, #500 ; 0x1f4 - 80011d0: f06f 0008 mvn.w r0, #8 - 80011d4: f7ff fe96 bl 8000f04 + 8000d72: 22c8 movs r2, #200 ; 0xc8 + 8000d74: f44f 71fa mov.w r1, #500 ; 0x1f4 + 8000d78: f06f 0008 mvn.w r0, #8 + 8000d7c: f000 faaa bl 80012d4 HAL_Delay(50); - 80011d8: 2032 movs r0, #50 ; 0x32 - 80011da: f000 fb69 bl 80018b0 + 8000d80: 2032 movs r0, #50 ; 0x32 + 8000d82: f000 fc9b bl 80016bc FSKBeep(2, 750, 200); - 80011de: 22c8 movs r2, #200 ; 0xc8 - 80011e0: f240 21ee movw r1, #750 ; 0x2ee - 80011e4: 2002 movs r0, #2 - 80011e6: f7ff fe8d bl 8000f04 + 8000d86: 22c8 movs r2, #200 ; 0xc8 + 8000d88: f240 21ee movw r1, #750 ; 0x2ee + 8000d8c: 2002 movs r0, #2 + 8000d8e: f000 faa1 bl 80012d4 HAL_Delay(50); - 80011ea: 2032 movs r0, #50 ; 0x32 - 80011ec: f000 fb60 bl 80018b0 - - FSKBeep(10, 1000, 200); - 80011f0: 22c8 movs r2, #200 ; 0xc8 - 80011f2: f44f 717a mov.w r1, #1000 ; 0x3e8 - 80011f6: 200a movs r0, #10 - 80011f8: f7ff fe84 bl 8000f04 + 8000d92: 2032 movs r0, #50 ; 0x32 + 8000d94: f000 fc92 bl 80016bc + + FSKBeep(14, 1000, 200); + 8000d98: 22c8 movs r2, #200 ; 0xc8 + 8000d9a: f44f 717a mov.w r1, #1000 ; 0x3e8 + 8000d9e: 200e movs r0, #14 + 8000da0: f000 fa98 bl 80012d4 HAL_Delay(50); - 80011fc: 2032 movs r0, #50 ; 0x32 - 80011fe: f000 fb57 bl 80018b0 - - HAL_Delay(1000); - 8001202: f44f 707a mov.w r0, #1000 ; 0x3e8 - 8001206: f000 fb53 bl 80018b0 - uint8_t callsign[] = "CALLSIGN"; - 800120a: 4a0d ldr r2, [pc, #52] ; (8001240 ) - 800120c: 1d3b adds r3, r7, #4 - 800120e: ca07 ldmia r2, {r0, r1, r2} - 8001210: c303 stmia r3!, {r0, r1} - 8001212: 701a strb r2, [r3, #0] - play_morse_word(callsign, sizeof(callsign)-1, false); - 8001214: 1d3b adds r3, r7, #4 - 8001216: 2200 movs r2, #0 - 8001218: 2108 movs r1, #8 - 800121a: 4618 mov r0, r3 - 800121c: f7ff ff54 bl 80010c8 - - HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET); - 8001220: 2200 movs r2, #0 - 8001222: f44f 7100 mov.w r1, #512 ; 0x200 - 8001226: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 - 800122a: f001 f8ad bl 8002388 - - HAL_Delay(3000); - 800122e: f640 30b8 movw r0, #3000 ; 0xbb8 - 8001232: f000 fb3d bl 80018b0 - { - 8001236: e7c1 b.n 80011bc - 8001238: cccccccd .word 0xcccccccd - 800123c: 407be24c .word 0x407be24c - 8001240: 08004990 .word 0x08004990 - -08001244 : + 8000da4: 2032 movs r0, #50 ; 0x32 + 8000da6: f000 fc89 bl 80016bc + //HAL_Delay(1000); + //uint8_t callsign[] = "HI"; + //play_morse_word(callsign, sizeof(callsign)-1, false); + + + LED_off(); + 8000daa: f7ff ff86 bl 8000cba + + HAL_Delay(4000); + 8000dae: f44f 607a mov.w r0, #4000 ; 0xfa0 + 8000db2: f000 fc83 bl 80016bc + LED_on(); + 8000db6: e7da b.n 8000d6e + 8000db8: 00000000 .word 0x00000000 + 8000dbc: 407be280 .word 0x407be280 + 8000dc0: 5a13b99d .word 0x5a13b99d + 8000dc4: 3feffff6 .word 0x3feffff6 + +08000dc8 : /** * @brief System Clock Configuration * @retval None */ void SystemClock_Config(void) { - 8001244: b580 push {r7, lr} - 8001246: b09a sub sp, #104 ; 0x68 - 8001248: af00 add r7, sp, #0 + 8000dc8: b580 push {r7, lr} + 8000dca: b09a sub sp, #104 ; 0x68 + 8000dcc: af00 add r7, sp, #0 RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - 800124a: f107 0320 add.w r3, r7, #32 - 800124e: 2248 movs r2, #72 ; 0x48 - 8001250: 2100 movs r1, #0 - 8001252: 4618 mov r0, r3 - 8001254: f003 fb80 bl 8004958 + 8000dce: f107 0320 add.w r3, r7, #32 + 8000dd2: 2248 movs r2, #72 ; 0x48 + 8000dd4: 2100 movs r1, #0 + 8000dd6: 4618 mov r0, r3 + 8000dd8: f003 fcc4 bl 8004764 RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - 8001258: f107 0308 add.w r3, r7, #8 - 800125c: 2200 movs r2, #0 - 800125e: 601a str r2, [r3, #0] - 8001260: 605a str r2, [r3, #4] - 8001262: 609a str r2, [r3, #8] - 8001264: 60da str r2, [r3, #12] - 8001266: 611a str r2, [r3, #16] - 8001268: 615a str r2, [r3, #20] + 8000ddc: f107 0308 add.w r3, r7, #8 + 8000de0: 2200 movs r2, #0 + 8000de2: 601a str r2, [r3, #0] + 8000de4: 605a str r2, [r3, #4] + 8000de6: 609a str r2, [r3, #8] + 8000de8: 60da str r2, [r3, #12] + 8000dea: 611a str r2, [r3, #16] + 8000dec: 615a str r2, [r3, #20] /** Configure the main internal regulator output voltage */ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2); - 800126a: 4b1f ldr r3, [pc, #124] ; (80012e8 ) - 800126c: 681b ldr r3, [r3, #0] - 800126e: f423 63c0 bic.w r3, r3, #1536 ; 0x600 - 8001272: 4a1d ldr r2, [pc, #116] ; (80012e8 ) - 8001274: f443 6380 orr.w r3, r3, #1024 ; 0x400 - 8001278: 6013 str r3, [r2, #0] - 800127a: 4b1b ldr r3, [pc, #108] ; (80012e8 ) - 800127c: 681b ldr r3, [r3, #0] - 800127e: f403 63c0 and.w r3, r3, #1536 ; 0x600 - 8001282: 607b str r3, [r7, #4] - 8001284: 687b ldr r3, [r7, #4] + 8000dee: 4b1f ldr r3, [pc, #124] ; (8000e6c ) + 8000df0: 681b ldr r3, [r3, #0] + 8000df2: f423 63c0 bic.w r3, r3, #1536 ; 0x600 + 8000df6: 4a1d ldr r2, [pc, #116] ; (8000e6c ) + 8000df8: f443 6380 orr.w r3, r3, #1024 ; 0x400 + 8000dfc: 6013 str r3, [r2, #0] + 8000dfe: 4b1b ldr r3, [pc, #108] ; (8000e6c ) + 8000e00: 681b ldr r3, [r3, #0] + 8000e02: f403 63c0 and.w r3, r3, #1536 ; 0x600 + 8000e06: 607b str r3, [r7, #4] + 8000e08: 687b ldr r3, [r7, #4] /** Initializes the CPU, AHB and APB buses clocks */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; - 8001286: 2301 movs r3, #1 - 8001288: 623b str r3, [r7, #32] + 8000e0a: 2301 movs r3, #1 + 8000e0c: 623b str r3, [r7, #32] RCC_OscInitStruct.HSEState = RCC_HSE_ON; - 800128a: f44f 3380 mov.w r3, #65536 ; 0x10000 - 800128e: 627b str r3, [r7, #36] ; 0x24 + 8000e0e: f44f 3380 mov.w r3, #65536 ; 0x10000 + 8000e12: 627b str r3, [r7, #36] ; 0x24 RCC_OscInitStruct.HSEDiv = RCC_HSE_DIV2; - 8001290: f44f 1380 mov.w r3, #1048576 ; 0x100000 - 8001294: 62bb str r3, [r7, #40] ; 0x28 + 8000e14: f44f 1380 mov.w r3, #1048576 ; 0x100000 + 8000e18: 62bb str r3, [r7, #40] ; 0x28 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; - 8001296: 2300 movs r3, #0 - 8001298: 64fb str r3, [r7, #76] ; 0x4c + 8000e1a: 2300 movs r3, #0 + 8000e1c: 64fb str r3, [r7, #76] ; 0x4c if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - 800129a: f107 0320 add.w r3, r7, #32 - 800129e: 4618 mov r0, r3 - 80012a0: f001 fb34 bl 800290c - 80012a4: 4603 mov r3, r0 - 80012a6: 2b00 cmp r3, #0 - 80012a8: d001 beq.n 80012ae + 8000e1e: f107 0320 add.w r3, r7, #32 + 8000e22: 4618 mov r0, r3 + 8000e24: f001 fc78 bl 8002718 + 8000e28: 4603 mov r3, r0 + 8000e2a: 2b00 cmp r3, #0 + 8000e2c: d001 beq.n 8000e32 { Error_Handler(); - 80012aa: f000 f935 bl 8001518 + 8000e2e: f000 fa79 bl 8001324 } /** Configure the SYSCLKSource, HCLK, PCLK1 and PCLK2 clocks dividers */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK3|RCC_CLOCKTYPE_HCLK - 80012ae: 234f movs r3, #79 ; 0x4f - 80012b0: 60bb str r3, [r7, #8] + 8000e32: 234f movs r3, #79 ; 0x4f + 8000e34: 60bb str r3, [r7, #8] |RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1 |RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSE; - 80012b2: 2302 movs r3, #2 - 80012b4: 60fb str r3, [r7, #12] + 8000e36: 2302 movs r3, #2 + 8000e38: 60fb str r3, [r7, #12] RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV16; - 80012b6: 23b0 movs r3, #176 ; 0xb0 - 80012b8: 613b str r3, [r7, #16] + 8000e3a: 23b0 movs r3, #176 ; 0xb0 + 8000e3c: 613b str r3, [r7, #16] RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; - 80012ba: 2300 movs r3, #0 - 80012bc: 617b str r3, [r7, #20] + 8000e3e: 2300 movs r3, #0 + 8000e40: 617b str r3, [r7, #20] RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; - 80012be: 2300 movs r3, #0 - 80012c0: 61bb str r3, [r7, #24] + 8000e42: 2300 movs r3, #0 + 8000e44: 61bb str r3, [r7, #24] RCC_ClkInitStruct.AHBCLK3Divider = RCC_SYSCLK_DIV16; - 80012c2: 23b0 movs r3, #176 ; 0xb0 - 80012c4: 61fb str r3, [r7, #28] + 8000e46: 23b0 movs r3, #176 ; 0xb0 + 8000e48: 61fb str r3, [r7, #28] if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) - 80012c6: f107 0308 add.w r3, r7, #8 - 80012ca: 2100 movs r1, #0 - 80012cc: 4618 mov r0, r3 - 80012ce: f001 fe9f bl 8003010 - 80012d2: 4603 mov r3, r0 - 80012d4: 2b00 cmp r3, #0 - 80012d6: d001 beq.n 80012dc + 8000e4a: f107 0308 add.w r3, r7, #8 + 8000e4e: 2100 movs r1, #0 + 8000e50: 4618 mov r0, r3 + 8000e52: f001 ffe3 bl 8002e1c + 8000e56: 4603 mov r3, r0 + 8000e58: 2b00 cmp r3, #0 + 8000e5a: d001 beq.n 8000e60 { Error_Handler(); - 80012d8: f000 f91e bl 8001518 + 8000e5c: f000 fa62 bl 8001324 } /** Enable the HSE Prescaler */ __HAL_RCC_HSE_DIV2_ENABLE(); - 80012dc: f7ff fcbc bl 8000c58 + 8000e60: f7ff fefa bl 8000c58 } - 80012e0: bf00 nop - 80012e2: 3768 adds r7, #104 ; 0x68 - 80012e4: 46bd mov sp, r7 - 80012e6: bd80 pop {r7, pc} - 80012e8: 58000400 .word 0x58000400 + 8000e64: bf00 nop + 8000e66: 3768 adds r7, #104 ; 0x68 + 8000e68: 46bd mov sp, r7 + 8000e6a: bd80 pop {r7, pc} + 8000e6c: 58000400 .word 0x58000400 -080012ec : +08000e70 : * @brief ADC Initialization Function * @param None * @retval None */ static void MX_ADC_Init(void) { - 80012ec: b580 push {r7, lr} - 80012ee: af00 add r7, sp, #0 + 8000e70: b580 push {r7, lr} + 8000e72: af00 add r7, sp, #0 /* USER CODE END ADC_Init 1 */ /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion) */ hadc.Instance = ADC; - 80012f0: 4b23 ldr r3, [pc, #140] ; (8001380 ) - 80012f2: 4a24 ldr r2, [pc, #144] ; (8001384 ) - 80012f4: 601a str r2, [r3, #0] + 8000e74: 4b23 ldr r3, [pc, #140] ; (8000f04 ) + 8000e76: 4a24 ldr r2, [pc, #144] ; (8000f08 ) + 8000e78: 601a str r2, [r3, #0] hadc.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2; - 80012f6: 4b22 ldr r3, [pc, #136] ; (8001380 ) - 80012f8: f04f 4280 mov.w r2, #1073741824 ; 0x40000000 - 80012fc: 605a str r2, [r3, #4] + 8000e7a: 4b22 ldr r3, [pc, #136] ; (8000f04 ) + 8000e7c: f04f 4280 mov.w r2, #1073741824 ; 0x40000000 + 8000e80: 605a str r2, [r3, #4] hadc.Init.Resolution = ADC_RESOLUTION_12B; - 80012fe: 4b20 ldr r3, [pc, #128] ; (8001380 ) - 8001300: 2200 movs r2, #0 - 8001302: 609a str r2, [r3, #8] + 8000e82: 4b20 ldr r3, [pc, #128] ; (8000f04 ) + 8000e84: 2200 movs r2, #0 + 8000e86: 609a str r2, [r3, #8] hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT; - 8001304: 4b1e ldr r3, [pc, #120] ; (8001380 ) - 8001306: 2200 movs r2, #0 - 8001308: 60da str r2, [r3, #12] + 8000e88: 4b1e ldr r3, [pc, #120] ; (8000f04 ) + 8000e8a: 2200 movs r2, #0 + 8000e8c: 60da str r2, [r3, #12] hadc.Init.ScanConvMode = ADC_SCAN_DISABLE; - 800130a: 4b1d ldr r3, [pc, #116] ; (8001380 ) - 800130c: 2200 movs r2, #0 - 800130e: 611a str r2, [r3, #16] + 8000e8e: 4b1d ldr r3, [pc, #116] ; (8000f04 ) + 8000e90: 2200 movs r2, #0 + 8000e92: 611a str r2, [r3, #16] hadc.Init.EOCSelection = ADC_EOC_SINGLE_CONV; - 8001310: 4b1b ldr r3, [pc, #108] ; (8001380 ) - 8001312: 2204 movs r2, #4 - 8001314: 615a str r2, [r3, #20] + 8000e94: 4b1b ldr r3, [pc, #108] ; (8000f04 ) + 8000e96: 2204 movs r2, #4 + 8000e98: 615a str r2, [r3, #20] hadc.Init.LowPowerAutoWait = DISABLE; - 8001316: 4b1a ldr r3, [pc, #104] ; (8001380 ) - 8001318: 2200 movs r2, #0 - 800131a: 761a strb r2, [r3, #24] + 8000e9a: 4b1a ldr r3, [pc, #104] ; (8000f04 ) + 8000e9c: 2200 movs r2, #0 + 8000e9e: 761a strb r2, [r3, #24] hadc.Init.LowPowerAutoPowerOff = DISABLE; - 800131c: 4b18 ldr r3, [pc, #96] ; (8001380 ) - 800131e: 2200 movs r2, #0 - 8001320: 765a strb r2, [r3, #25] + 8000ea0: 4b18 ldr r3, [pc, #96] ; (8000f04 ) + 8000ea2: 2200 movs r2, #0 + 8000ea4: 765a strb r2, [r3, #25] hadc.Init.ContinuousConvMode = DISABLE; - 8001322: 4b17 ldr r3, [pc, #92] ; (8001380 ) - 8001324: 2200 movs r2, #0 - 8001326: 769a strb r2, [r3, #26] + 8000ea6: 4b17 ldr r3, [pc, #92] ; (8000f04 ) + 8000ea8: 2200 movs r2, #0 + 8000eaa: 769a strb r2, [r3, #26] hadc.Init.NbrOfConversion = 1; - 8001328: 4b15 ldr r3, [pc, #84] ; (8001380 ) - 800132a: 2201 movs r2, #1 - 800132c: 61da str r2, [r3, #28] + 8000eac: 4b15 ldr r3, [pc, #84] ; (8000f04 ) + 8000eae: 2201 movs r2, #1 + 8000eb0: 61da str r2, [r3, #28] hadc.Init.DiscontinuousConvMode = DISABLE; - 800132e: 4b14 ldr r3, [pc, #80] ; (8001380 ) - 8001330: 2200 movs r2, #0 - 8001332: f883 2020 strb.w r2, [r3, #32] + 8000eb2: 4b14 ldr r3, [pc, #80] ; (8000f04 ) + 8000eb4: 2200 movs r2, #0 + 8000eb6: f883 2020 strb.w r2, [r3, #32] hadc.Init.ExternalTrigConv = ADC_SOFTWARE_START; - 8001336: 4b12 ldr r3, [pc, #72] ; (8001380 ) - 8001338: 2200 movs r2, #0 - 800133a: 625a str r2, [r3, #36] ; 0x24 + 8000eba: 4b12 ldr r3, [pc, #72] ; (8000f04 ) + 8000ebc: 2200 movs r2, #0 + 8000ebe: 625a str r2, [r3, #36] ; 0x24 hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; - 800133c: 4b10 ldr r3, [pc, #64] ; (8001380 ) - 800133e: 2200 movs r2, #0 - 8001340: 629a str r2, [r3, #40] ; 0x28 + 8000ec0: 4b10 ldr r3, [pc, #64] ; (8000f04 ) + 8000ec2: 2200 movs r2, #0 + 8000ec4: 629a str r2, [r3, #40] ; 0x28 hadc.Init.DMAContinuousRequests = DISABLE; - 8001342: 4b0f ldr r3, [pc, #60] ; (8001380 ) - 8001344: 2200 movs r2, #0 - 8001346: f883 202c strb.w r2, [r3, #44] ; 0x2c + 8000ec6: 4b0f ldr r3, [pc, #60] ; (8000f04 ) + 8000ec8: 2200 movs r2, #0 + 8000eca: f883 202c strb.w r2, [r3, #44] ; 0x2c hadc.Init.Overrun = ADC_OVR_DATA_PRESERVED; - 800134a: 4b0d ldr r3, [pc, #52] ; (8001380 ) - 800134c: 2200 movs r2, #0 - 800134e: 631a str r2, [r3, #48] ; 0x30 + 8000ece: 4b0d ldr r3, [pc, #52] ; (8000f04 ) + 8000ed0: 2200 movs r2, #0 + 8000ed2: 631a str r2, [r3, #48] ; 0x30 hadc.Init.SamplingTimeCommon1 = ADC_SAMPLETIME_1CYCLE_5; - 8001350: 4b0b ldr r3, [pc, #44] ; (8001380 ) - 8001352: 2200 movs r2, #0 - 8001354: 635a str r2, [r3, #52] ; 0x34 + 8000ed4: 4b0b ldr r3, [pc, #44] ; (8000f04 ) + 8000ed6: 2200 movs r2, #0 + 8000ed8: 635a str r2, [r3, #52] ; 0x34 hadc.Init.SamplingTimeCommon2 = ADC_SAMPLETIME_1CYCLE_5; - 8001356: 4b0a ldr r3, [pc, #40] ; (8001380 ) - 8001358: 2200 movs r2, #0 - 800135a: 639a str r2, [r3, #56] ; 0x38 + 8000eda: 4b0a ldr r3, [pc, #40] ; (8000f04 ) + 8000edc: 2200 movs r2, #0 + 8000ede: 639a str r2, [r3, #56] ; 0x38 hadc.Init.OversamplingMode = DISABLE; - 800135c: 4b08 ldr r3, [pc, #32] ; (8001380 ) - 800135e: 2200 movs r2, #0 - 8001360: f883 203c strb.w r2, [r3, #60] ; 0x3c + 8000ee0: 4b08 ldr r3, [pc, #32] ; (8000f04 ) + 8000ee2: 2200 movs r2, #0 + 8000ee4: f883 203c strb.w r2, [r3, #60] ; 0x3c hadc.Init.TriggerFrequencyMode = ADC_TRIGGER_FREQ_HIGH; - 8001364: 4b06 ldr r3, [pc, #24] ; (8001380 ) - 8001366: 2200 movs r2, #0 - 8001368: 64da str r2, [r3, #76] ; 0x4c + 8000ee8: 4b06 ldr r3, [pc, #24] ; (8000f04 ) + 8000eea: 2200 movs r2, #0 + 8000eec: 64da str r2, [r3, #76] ; 0x4c if (HAL_ADC_Init(&hadc) != HAL_OK) - 800136a: 4805 ldr r0, [pc, #20] ; (8001380 ) - 800136c: f000 fb44 bl 80019f8 - 8001370: 4603 mov r3, r0 - 8001372: 2b00 cmp r3, #0 - 8001374: d001 beq.n 800137a + 8000eee: 4805 ldr r0, [pc, #20] ; (8000f04 ) + 8000ef0: f000 fc88 bl 8001804 + 8000ef4: 4603 mov r3, r0 + 8000ef6: 2b00 cmp r3, #0 + 8000ef8: d001 beq.n 8000efe { Error_Handler(); - 8001376: f000 f8cf bl 8001518 + 8000efa: f000 fa13 bl 8001324 } /* USER CODE BEGIN ADC_Init 2 */ /* USER CODE END ADC_Init 2 */ } - 800137a: bf00 nop - 800137c: bd80 pop {r7, pc} - 800137e: bf00 nop - 8001380: 20000030 .word 0x20000030 - 8001384: 40012400 .word 0x40012400 + 8000efe: bf00 nop + 8000f00: bd80 pop {r7, pc} + 8000f02: bf00 nop + 8000f04: 20000028 .word 0x20000028 + 8000f08: 40012400 .word 0x40012400 -08001388 : +08000f0c : * @brief CRC Initialization Function * @param None * @retval None */ static void MX_CRC_Init(void) { - 8001388: b580 push {r7, lr} - 800138a: af00 add r7, sp, #0 + 8000f0c: b580 push {r7, lr} + 8000f0e: af00 add r7, sp, #0 /* USER CODE END CRC_Init 0 */ /* USER CODE BEGIN CRC_Init 1 */ /* USER CODE END CRC_Init 1 */ hcrc.Instance = CRC; - 800138c: 4b0d ldr r3, [pc, #52] ; (80013c4 ) - 800138e: 4a0e ldr r2, [pc, #56] ; (80013c8 ) - 8001390: 601a str r2, [r3, #0] + 8000f10: 4b0d ldr r3, [pc, #52] ; (8000f48 ) + 8000f12: 4a0e ldr r2, [pc, #56] ; (8000f4c ) + 8000f14: 601a str r2, [r3, #0] hcrc.Init.DefaultPolynomialUse = DEFAULT_POLYNOMIAL_ENABLE; - 8001392: 4b0c ldr r3, [pc, #48] ; (80013c4 ) - 8001394: 2200 movs r2, #0 - 8001396: 711a strb r2, [r3, #4] + 8000f16: 4b0c ldr r3, [pc, #48] ; (8000f48 ) + 8000f18: 2200 movs r2, #0 + 8000f1a: 711a strb r2, [r3, #4] hcrc.Init.DefaultInitValueUse = DEFAULT_INIT_VALUE_ENABLE; - 8001398: 4b0a ldr r3, [pc, #40] ; (80013c4 ) - 800139a: 2200 movs r2, #0 - 800139c: 715a strb r2, [r3, #5] + 8000f1c: 4b0a ldr r3, [pc, #40] ; (8000f48 ) + 8000f1e: 2200 movs r2, #0 + 8000f20: 715a strb r2, [r3, #5] hcrc.Init.InputDataInversionMode = CRC_INPUTDATA_INVERSION_NONE; - 800139e: 4b09 ldr r3, [pc, #36] ; (80013c4 ) - 80013a0: 2200 movs r2, #0 - 80013a2: 615a str r2, [r3, #20] + 8000f22: 4b09 ldr r3, [pc, #36] ; (8000f48 ) + 8000f24: 2200 movs r2, #0 + 8000f26: 615a str r2, [r3, #20] hcrc.Init.OutputDataInversionMode = CRC_OUTPUTDATA_INVERSION_DISABLE; - 80013a4: 4b07 ldr r3, [pc, #28] ; (80013c4 ) - 80013a6: 2200 movs r2, #0 - 80013a8: 619a str r2, [r3, #24] + 8000f28: 4b07 ldr r3, [pc, #28] ; (8000f48 ) + 8000f2a: 2200 movs r2, #0 + 8000f2c: 619a str r2, [r3, #24] hcrc.InputDataFormat = CRC_INPUTDATA_FORMAT_BYTES; - 80013aa: 4b06 ldr r3, [pc, #24] ; (80013c4 ) - 80013ac: 2201 movs r2, #1 - 80013ae: 621a str r2, [r3, #32] + 8000f2e: 4b06 ldr r3, [pc, #24] ; (8000f48 ) + 8000f30: 2201 movs r2, #1 + 8000f32: 621a str r2, [r3, #32] if (HAL_CRC_Init(&hcrc) != HAL_OK) - 80013b0: 4804 ldr r0, [pc, #16] ; (80013c4 ) - 80013b2: f000 fd97 bl 8001ee4 - 80013b6: 4603 mov r3, r0 - 80013b8: 2b00 cmp r3, #0 - 80013ba: d001 beq.n 80013c0 + 8000f34: 4804 ldr r0, [pc, #16] ; (8000f48 ) + 8000f36: f000 fedb bl 8001cf0 + 8000f3a: 4603 mov r3, r0 + 8000f3c: 2b00 cmp r3, #0 + 8000f3e: d001 beq.n 8000f44 { Error_Handler(); - 80013bc: f000 f8ac bl 8001518 + 8000f40: f000 f9f0 bl 8001324 } /* USER CODE BEGIN CRC_Init 2 */ /* USER CODE END CRC_Init 2 */ } - 80013c0: bf00 nop - 80013c2: bd80 pop {r7, pc} - 80013c4: 20000094 .word 0x20000094 - 80013c8: 40023000 .word 0x40023000 + 8000f44: bf00 nop + 8000f46: bd80 pop {r7, pc} + 8000f48: 2000008c .word 0x2000008c + 8000f4c: 40023000 .word 0x40023000 -080013cc : +08000f50 : * @brief SUBGHZ Initialization Function * @param None * @retval None */ static void MX_SUBGHZ_Init(void) { - 80013cc: b580 push {r7, lr} - 80013ce: af00 add r7, sp, #0 + 8000f50: b580 push {r7, lr} + 8000f52: af00 add r7, sp, #0 /* USER CODE END SUBGHZ_Init 0 */ /* USER CODE BEGIN SUBGHZ_Init 1 */ /* USER CODE END SUBGHZ_Init 1 */ hsubghz.Init.BaudratePrescaler = SUBGHZSPI_BAUDRATEPRESCALER_8; - 80013d0: 4b06 ldr r3, [pc, #24] ; (80013ec ) - 80013d2: 2210 movs r2, #16 - 80013d4: 601a str r2, [r3, #0] + 8000f54: 4b06 ldr r3, [pc, #24] ; (8000f70 ) + 8000f56: 2210 movs r2, #16 + 8000f58: 601a str r2, [r3, #0] if (HAL_SUBGHZ_Init(&hsubghz) != HAL_OK) - 80013d6: 4805 ldr r0, [pc, #20] ; (80013ec ) - 80013d8: f002 fb70 bl 8003abc - 80013dc: 4603 mov r3, r0 - 80013de: 2b00 cmp r3, #0 - 80013e0: d001 beq.n 80013e6 + 8000f5a: 4805 ldr r0, [pc, #20] ; (8000f70 ) + 8000f5c: f002 fcb4 bl 80038c8 + 8000f60: 4603 mov r3, r0 + 8000f62: 2b00 cmp r3, #0 + 8000f64: d001 beq.n 8000f6a { Error_Handler(); - 80013e2: f000 f899 bl 8001518 + 8000f66: f000 f9dd bl 8001324 } /* USER CODE BEGIN SUBGHZ_Init 2 */ /* USER CODE END SUBGHZ_Init 2 */ } - 80013e6: bf00 nop - 80013e8: bd80 pop {r7, pc} - 80013ea: bf00 nop - 80013ec: 200000b8 .word 0x200000b8 + 8000f6a: bf00 nop + 8000f6c: bd80 pop {r7, pc} + 8000f6e: bf00 nop + 8000f70: 200000b0 .word 0x200000b0 -080013f0 : +08000f74 : * @brief USART2 Initialization Function * @param None * @retval None */ static void MX_USART2_UART_Init(void) { - 80013f0: b580 push {r7, lr} - 80013f2: af00 add r7, sp, #0 + 8000f74: b580 push {r7, lr} + 8000f76: af00 add r7, sp, #0 /* USER CODE END USART2_Init 0 */ /* USER CODE BEGIN USART2_Init 1 */ /* USER CODE END USART2_Init 1 */ huart2.Instance = USART2; - 80013f4: 4b22 ldr r3, [pc, #136] ; (8001480 ) - 80013f6: 4a23 ldr r2, [pc, #140] ; (8001484 ) - 80013f8: 601a str r2, [r3, #0] + 8000f78: 4b22 ldr r3, [pc, #136] ; (8001004 ) + 8000f7a: 4a23 ldr r2, [pc, #140] ; (8001008 ) + 8000f7c: 601a str r2, [r3, #0] huart2.Init.BaudRate = 9600; - 80013fa: 4b21 ldr r3, [pc, #132] ; (8001480 ) - 80013fc: f44f 5216 mov.w r2, #9600 ; 0x2580 - 8001400: 605a str r2, [r3, #4] + 8000f7e: 4b21 ldr r3, [pc, #132] ; (8001004 ) + 8000f80: f44f 5216 mov.w r2, #9600 ; 0x2580 + 8000f84: 605a str r2, [r3, #4] huart2.Init.WordLength = UART_WORDLENGTH_8B; - 8001402: 4b1f ldr r3, [pc, #124] ; (8001480 ) - 8001404: 2200 movs r2, #0 - 8001406: 609a str r2, [r3, #8] + 8000f86: 4b1f ldr r3, [pc, #124] ; (8001004 ) + 8000f88: 2200 movs r2, #0 + 8000f8a: 609a str r2, [r3, #8] huart2.Init.StopBits = UART_STOPBITS_1; - 8001408: 4b1d ldr r3, [pc, #116] ; (8001480 ) - 800140a: 2200 movs r2, #0 - 800140c: 60da str r2, [r3, #12] + 8000f8c: 4b1d ldr r3, [pc, #116] ; (8001004 ) + 8000f8e: 2200 movs r2, #0 + 8000f90: 60da str r2, [r3, #12] huart2.Init.Parity = UART_PARITY_NONE; - 800140e: 4b1c ldr r3, [pc, #112] ; (8001480 ) - 8001410: 2200 movs r2, #0 - 8001412: 611a str r2, [r3, #16] + 8000f92: 4b1c ldr r3, [pc, #112] ; (8001004 ) + 8000f94: 2200 movs r2, #0 + 8000f96: 611a str r2, [r3, #16] huart2.Init.Mode = UART_MODE_TX_RX; - 8001414: 4b1a ldr r3, [pc, #104] ; (8001480 ) - 8001416: 220c movs r2, #12 - 8001418: 615a str r2, [r3, #20] + 8000f98: 4b1a ldr r3, [pc, #104] ; (8001004 ) + 8000f9a: 220c movs r2, #12 + 8000f9c: 615a str r2, [r3, #20] huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; - 800141a: 4b19 ldr r3, [pc, #100] ; (8001480 ) - 800141c: 2200 movs r2, #0 - 800141e: 619a str r2, [r3, #24] + 8000f9e: 4b19 ldr r3, [pc, #100] ; (8001004 ) + 8000fa0: 2200 movs r2, #0 + 8000fa2: 619a str r2, [r3, #24] huart2.Init.OverSampling = UART_OVERSAMPLING_16; - 8001420: 4b17 ldr r3, [pc, #92] ; (8001480 ) - 8001422: 2200 movs r2, #0 - 8001424: 61da str r2, [r3, #28] + 8000fa4: 4b17 ldr r3, [pc, #92] ; (8001004 ) + 8000fa6: 2200 movs r2, #0 + 8000fa8: 61da str r2, [r3, #28] huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; - 8001426: 4b16 ldr r3, [pc, #88] ; (8001480 ) - 8001428: 2200 movs r2, #0 - 800142a: 621a str r2, [r3, #32] + 8000faa: 4b16 ldr r3, [pc, #88] ; (8001004 ) + 8000fac: 2200 movs r2, #0 + 8000fae: 621a str r2, [r3, #32] huart2.Init.ClockPrescaler = UART_PRESCALER_DIV1; - 800142c: 4b14 ldr r3, [pc, #80] ; (8001480 ) - 800142e: 2200 movs r2, #0 - 8001430: 625a str r2, [r3, #36] ; 0x24 + 8000fb0: 4b14 ldr r3, [pc, #80] ; (8001004 ) + 8000fb2: 2200 movs r2, #0 + 8000fb4: 625a str r2, [r3, #36] ; 0x24 huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; - 8001432: 4b13 ldr r3, [pc, #76] ; (8001480 ) - 8001434: 2200 movs r2, #0 - 8001436: 629a str r2, [r3, #40] ; 0x28 + 8000fb6: 4b13 ldr r3, [pc, #76] ; (8001004 ) + 8000fb8: 2200 movs r2, #0 + 8000fba: 629a str r2, [r3, #40] ; 0x28 if (HAL_UART_Init(&huart2) != HAL_OK) - 8001438: 4811 ldr r0, [pc, #68] ; (8001480 ) - 800143a: f002 fcec bl 8003e16 - 800143e: 4603 mov r3, r0 - 8001440: 2b00 cmp r3, #0 - 8001442: d001 beq.n 8001448 + 8000fbc: 4811 ldr r0, [pc, #68] ; (8001004 ) + 8000fbe: f002 fe30 bl 8003c22 + 8000fc2: 4603 mov r3, r0 + 8000fc4: 2b00 cmp r3, #0 + 8000fc6: d001 beq.n 8000fcc { Error_Handler(); - 8001444: f000 f868 bl 8001518 + 8000fc8: f000 f9ac bl 8001324 } if (HAL_UARTEx_SetTxFifoThreshold(&huart2, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) - 8001448: 2100 movs r1, #0 - 800144a: 480d ldr r0, [pc, #52] ; (8001480 ) - 800144c: f003 f997 bl 800477e - 8001450: 4603 mov r3, r0 - 8001452: 2b00 cmp r3, #0 - 8001454: d001 beq.n 800145a + 8000fcc: 2100 movs r1, #0 + 8000fce: 480d ldr r0, [pc, #52] ; (8001004 ) + 8000fd0: f003 fadb bl 800458a + 8000fd4: 4603 mov r3, r0 + 8000fd6: 2b00 cmp r3, #0 + 8000fd8: d001 beq.n 8000fde { Error_Handler(); - 8001456: f000 f85f bl 8001518 + 8000fda: f000 f9a3 bl 8001324 } if (HAL_UARTEx_SetRxFifoThreshold(&huart2, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) - 800145a: 2100 movs r1, #0 - 800145c: 4808 ldr r0, [pc, #32] ; (8001480 ) - 800145e: f003 f9cc bl 80047fa - 8001462: 4603 mov r3, r0 - 8001464: 2b00 cmp r3, #0 - 8001466: d001 beq.n 800146c + 8000fde: 2100 movs r1, #0 + 8000fe0: 4808 ldr r0, [pc, #32] ; (8001004 ) + 8000fe2: f003 fb10 bl 8004606 + 8000fe6: 4603 mov r3, r0 + 8000fe8: 2b00 cmp r3, #0 + 8000fea: d001 beq.n 8000ff0 { Error_Handler(); - 8001468: f000 f856 bl 8001518 + 8000fec: f000 f99a bl 8001324 } if (HAL_UARTEx_DisableFifoMode(&huart2) != HAL_OK) - 800146c: 4804 ldr r0, [pc, #16] ; (8001480 ) - 800146e: f003 f94e bl 800470e - 8001472: 4603 mov r3, r0 - 8001474: 2b00 cmp r3, #0 - 8001476: d001 beq.n 800147c + 8000ff0: 4804 ldr r0, [pc, #16] ; (8001004 ) + 8000ff2: f003 fa92 bl 800451a + 8000ff6: 4603 mov r3, r0 + 8000ff8: 2b00 cmp r3, #0 + 8000ffa: d001 beq.n 8001000 { Error_Handler(); - 8001478: f000 f84e bl 8001518 + 8000ffc: f000 f992 bl 8001324 } /* USER CODE BEGIN USART2_Init 2 */ /* USER CODE END USART2_Init 2 */ } - 800147c: bf00 nop - 800147e: bd80 pop {r7, pc} - 8001480: 200000c4 .word 0x200000c4 - 8001484: 40004400 .word 0x40004400 + 8001000: bf00 nop + 8001002: bd80 pop {r7, pc} + 8001004: 200000bc .word 0x200000bc + 8001008: 40004400 .word 0x40004400 -08001488 : +0800100c : * @brief GPIO Initialization Function * @param None * @retval None */ static void MX_GPIO_Init(void) { - 8001488: b580 push {r7, lr} - 800148a: b086 sub sp, #24 - 800148c: af00 add r7, sp, #0 + 800100c: b580 push {r7, lr} + 800100e: b086 sub sp, #24 + 8001010: af00 add r7, sp, #0 GPIO_InitTypeDef GPIO_InitStruct = {0}; - 800148e: 1d3b adds r3, r7, #4 - 8001490: 2200 movs r2, #0 - 8001492: 601a str r2, [r3, #0] - 8001494: 605a str r2, [r3, #4] - 8001496: 609a str r2, [r3, #8] - 8001498: 60da str r2, [r3, #12] - 800149a: 611a str r2, [r3, #16] + 8001012: 1d3b adds r3, r7, #4 + 8001014: 2200 movs r2, #0 + 8001016: 601a str r2, [r3, #0] + 8001018: 605a str r2, [r3, #4] + 800101a: 609a str r2, [r3, #8] + 800101c: 60da str r2, [r3, #12] + 800101e: 611a str r2, [r3, #16] /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOB_CLK_ENABLE(); - 800149c: 2002 movs r0, #2 - 800149e: f7ff fbe9 bl 8000c74 + 8001020: 2002 movs r0, #2 + 8001022: f7ff fe27 bl 8000c74 __HAL_RCC_GPIOA_CLK_ENABLE(); - 80014a2: 2001 movs r0, #1 - 80014a4: f7ff fbe6 bl 8000c74 + 8001026: 2001 movs r0, #1 + 8001028: f7ff fe24 bl 8000c74 __HAL_RCC_GPIOH_CLK_ENABLE(); - 80014a8: 2080 movs r0, #128 ; 0x80 - 80014aa: f7ff fbe3 bl 8000c74 + 800102c: 2080 movs r0, #128 ; 0x80 + 800102e: f7ff fe21 bl 8000c74 /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET); - 80014ae: 2200 movs r2, #0 - 80014b0: f44f 7100 mov.w r1, #512 ; 0x200 - 80014b4: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 - 80014b8: f000 ff66 bl 8002388 + 8001032: 2200 movs r2, #0 + 8001034: f44f 7100 mov.w r1, #512 ; 0x200 + 8001038: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 800103c: f001 f8aa bl 8002194 /*Configure GPIO pins : CONF_440_Pin CONF_868_Pin */ GPIO_InitStruct.Pin = CONF_440_Pin|CONF_868_Pin; - 80014bc: 2318 movs r3, #24 - 80014be: 607b str r3, [r7, #4] + 8001040: 2318 movs r3, #24 + 8001042: 607b str r3, [r7, #4] GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - 80014c0: 2300 movs r3, #0 - 80014c2: 60bb str r3, [r7, #8] + 8001044: 2300 movs r3, #0 + 8001046: 60bb str r3, [r7, #8] GPIO_InitStruct.Pull = GPIO_NOPULL; - 80014c4: 2300 movs r3, #0 - 80014c6: 60fb str r3, [r7, #12] + 8001048: 2300 movs r3, #0 + 800104a: 60fb str r3, [r7, #12] HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 80014c8: 1d3b adds r3, r7, #4 - 80014ca: 4619 mov r1, r3 - 80014cc: 4810 ldr r0, [pc, #64] ; (8001510 ) - 80014ce: f000 fdfb bl 80020c8 + 800104c: 1d3b adds r3, r7, #4 + 800104e: 4619 mov r1, r3 + 8001050: 4810 ldr r0, [pc, #64] ; (8001094 ) + 8001052: f000 ff3f bl 8001ed4 /*Configure GPIO pin : LED_Pin */ GPIO_InitStruct.Pin = LED_Pin; - 80014d2: f44f 7300 mov.w r3, #512 ; 0x200 - 80014d6: 607b str r3, [r7, #4] + 8001056: f44f 7300 mov.w r3, #512 ; 0x200 + 800105a: 607b str r3, [r7, #4] GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 80014d8: 2301 movs r3, #1 - 80014da: 60bb str r3, [r7, #8] + 800105c: 2301 movs r3, #1 + 800105e: 60bb str r3, [r7, #8] GPIO_InitStruct.Pull = GPIO_NOPULL; - 80014dc: 2300 movs r3, #0 - 80014de: 60fb str r3, [r7, #12] + 8001060: 2300 movs r3, #0 + 8001062: 60fb str r3, [r7, #12] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 80014e0: 2300 movs r3, #0 - 80014e2: 613b str r3, [r7, #16] + 8001064: 2300 movs r3, #0 + 8001066: 613b str r3, [r7, #16] HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct); - 80014e4: 1d3b adds r3, r7, #4 - 80014e6: 4619 mov r1, r3 - 80014e8: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 - 80014ec: f000 fdec bl 80020c8 + 8001068: 1d3b adds r3, r7, #4 + 800106a: 4619 mov r1, r3 + 800106c: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8001070: f000 ff30 bl 8001ed4 /*Configure GPIO pin : BOOT_Pin */ GPIO_InitStruct.Pin = BOOT_Pin; - 80014f0: 2308 movs r3, #8 - 80014f2: 607b str r3, [r7, #4] + 8001074: 2308 movs r3, #8 + 8001076: 607b str r3, [r7, #4] GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - 80014f4: 2300 movs r3, #0 - 80014f6: 60bb str r3, [r7, #8] + 8001078: 2300 movs r3, #0 + 800107a: 60bb str r3, [r7, #8] GPIO_InitStruct.Pull = GPIO_NOPULL; - 80014f8: 2300 movs r3, #0 - 80014fa: 60fb str r3, [r7, #12] + 800107c: 2300 movs r3, #0 + 800107e: 60fb str r3, [r7, #12] HAL_GPIO_Init(BOOT_GPIO_Port, &GPIO_InitStruct); - 80014fc: 1d3b adds r3, r7, #4 - 80014fe: 4619 mov r1, r3 - 8001500: 4804 ldr r0, [pc, #16] ; (8001514 ) - 8001502: f000 fde1 bl 80020c8 + 8001080: 1d3b adds r3, r7, #4 + 8001082: 4619 mov r1, r3 + 8001084: 4804 ldr r0, [pc, #16] ; (8001098 ) + 8001086: f000 ff25 bl 8001ed4 + +} + 800108a: bf00 nop + 800108c: 3718 adds r7, #24 + 800108e: 46bd mov sp, r7 + 8001090: bd80 pop {r7, pc} + 8001092: bf00 nop + 8001094: 48000400 .word 0x48000400 + 8001098: 48001c00 .word 0x48001c00 + +0800109c : + +/* USER CODE BEGIN 4 */ +void SetStandbyXOSC() { + 800109c: b580 push {r7, lr} + 800109e: b082 sub sp, #8 + 80010a0: af00 add r7, sp, #0 + uint8_t txbuf[2] = {0x80, 0x01}; + 80010a2: f44f 73c0 mov.w r3, #384 ; 0x180 + 80010a6: 80bb strh r3, [r7, #4] + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); + 80010a8: 7939 ldrb r1, [r7, #4] + 80010aa: 1d3a adds r2, r7, #4 + 80010ac: 3201 adds r2, #1 + 80010ae: 2301 movs r3, #1 + 80010b0: 4803 ldr r0, [pc, #12] ; (80010c0 ) + 80010b2: f002 fc6d bl 8003990 +} + 80010b6: bf00 nop + 80010b8: 3708 adds r7, #8 + 80010ba: 46bd mov sp, r7 + 80010bc: bd80 pop {r7, pc} + 80010be: bf00 nop + 80010c0: 200000b0 .word 0x200000b0 + +080010c4 : + +void SetPacketTypeLora() { + 80010c4: b580 push {r7, lr} + 80010c6: b082 sub sp, #8 + 80010c8: af00 add r7, sp, #0 + uint8_t txbuf[2] = {0x8A, 0x01}; + 80010ca: f44f 73c5 mov.w r3, #394 ; 0x18a + 80010ce: 80bb strh r3, [r7, #4] + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); + 80010d0: 7939 ldrb r1, [r7, #4] + 80010d2: 1d3a adds r2, r7, #4 + 80010d4: 3201 adds r2, #1 + 80010d6: 2301 movs r3, #1 + 80010d8: 4803 ldr r0, [pc, #12] ; (80010e8 ) + 80010da: f002 fc59 bl 8003990 +} + 80010de: bf00 nop + 80010e0: 3708 adds r7, #8 + 80010e2: 46bd mov sp, r7 + 80010e4: bd80 pop {r7, pc} + 80010e6: bf00 nop + 80010e8: 200000b0 .word 0x200000b0 + +080010ec : + +void SetPacketTypeFSK() { + 80010ec: b580 push {r7, lr} + 80010ee: b082 sub sp, #8 + 80010f0: af00 add r7, sp, #0 + uint8_t txbuf[2] = {0x8A, 0x00}; + 80010f2: 238a movs r3, #138 ; 0x8a + 80010f4: 80bb strh r3, [r7, #4] + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); + 80010f6: 7939 ldrb r1, [r7, #4] + 80010f8: 1d3a adds r2, r7, #4 + 80010fa: 3201 adds r2, #1 + 80010fc: 2301 movs r3, #1 + 80010fe: 4803 ldr r0, [pc, #12] ; (800110c ) + 8001100: f002 fc46 bl 8003990 +} + 8001104: bf00 nop + 8001106: 3708 adds r7, #8 + 8001108: 46bd mov sp, r7 + 800110a: bd80 pop {r7, pc} + 800110c: 200000b0 .word 0x200000b0 + +08001110 : + +uint32_t ComputeRfFreq(double frequencyMhz) { + 8001110: b580 push {r7, lr} + 8001112: b082 sub sp, #8 + 8001114: af00 add r7, sp, #0 + 8001116: e9c7 0100 strd r0, r1, [r7] + return (uint32_t)(frequencyMhz * 1048576L); //2^25/(32e6) + 800111a: f04f 0200 mov.w r2, #0 + 800111e: 4b08 ldr r3, [pc, #32] ; (8001140 ) + 8001120: e9d7 0100 ldrd r0, r1, [r7] + 8001124: f7ff f9e4 bl 80004f0 <__aeabi_dmul> + 8001128: 4602 mov r2, r0 + 800112a: 460b mov r3, r1 + 800112c: 4610 mov r0, r2 + 800112e: 4619 mov r1, r3 + 8001130: f7ff fbf0 bl 8000914 <__aeabi_d2uiz> + 8001134: 4603 mov r3, r0 +} + 8001136: 4618 mov r0, r3 + 8001138: 3708 adds r7, #8 + 800113a: 46bd mov sp, r7 + 800113c: bd80 pop {r7, pc} + 800113e: bf00 nop + 8001140: 41300000 .word 0x41300000 + +08001144 : + +void SetRfFreq(uint32_t rfFreq) { + 8001144: b580 push {r7, lr} + 8001146: b084 sub sp, #16 + 8001148: af00 add r7, sp, #0 + 800114a: 6078 str r0, [r7, #4] + uint8_t txbuf[5] = {0x86, (rfFreq & 0xFF000000) >> 24, (rfFreq & 0x00FF0000) >> 16, (rfFreq & 0x0000FF00) >> 8, rfFreq & 0x000000FF}; + 800114c: 2386 movs r3, #134 ; 0x86 + 800114e: 723b strb r3, [r7, #8] + 8001150: 687b ldr r3, [r7, #4] + 8001152: 0e1b lsrs r3, r3, #24 + 8001154: b2db uxtb r3, r3 + 8001156: 727b strb r3, [r7, #9] + 8001158: 687b ldr r3, [r7, #4] + 800115a: 0c1b lsrs r3, r3, #16 + 800115c: b2db uxtb r3, r3 + 800115e: 72bb strb r3, [r7, #10] + 8001160: 687b ldr r3, [r7, #4] + 8001162: 0a1b lsrs r3, r3, #8 + 8001164: b2db uxtb r3, r3 + 8001166: 72fb strb r3, [r7, #11] + 8001168: 687b ldr r3, [r7, #4] + 800116a: b2db uxtb r3, r3 + 800116c: 733b strb r3, [r7, #12] + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); + 800116e: 7a39 ldrb r1, [r7, #8] + 8001170: f107 0208 add.w r2, r7, #8 + 8001174: 3201 adds r2, #1 + 8001176: 2304 movs r3, #4 + 8001178: 4803 ldr r0, [pc, #12] ; (8001188 ) + 800117a: f002 fc09 bl 8003990 +} + 800117e: bf00 nop + 8001180: 3710 adds r7, #16 + 8001182: 46bd mov sp, r7 + 8001184: bd80 pop {r7, pc} + 8001186: bf00 nop + 8001188: 200000b0 .word 0x200000b0 + +0800118c : + // set Pa to 14 dB. + uint8_t txbuf[5] = {0x95, 0x02, 0x02, 0x00, 0x01}; + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); +} + +void SetPa22dB() { + 800118c: b580 push {r7, lr} + 800118e: b082 sub sp, #8 + 8001190: af00 add r7, sp, #0 + // set Pa to the highest 22 dBm + uint8_t txbuf[5] = {0x95, 0x04, 0x07, 0x00, 0x01}; + 8001192: 4a09 ldr r2, [pc, #36] ; (80011b8 ) + 8001194: 463b mov r3, r7 + 8001196: e892 0003 ldmia.w r2, {r0, r1} + 800119a: 6018 str r0, [r3, #0] + 800119c: 3304 adds r3, #4 + 800119e: 7019 strb r1, [r3, #0] + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); + 80011a0: 7839 ldrb r1, [r7, #0] + 80011a2: 463a mov r2, r7 + 80011a4: 3201 adds r2, #1 + 80011a6: 2304 movs r3, #4 + 80011a8: 4804 ldr r0, [pc, #16] ; (80011bc ) + 80011aa: f002 fbf1 bl 8003990 +} + 80011ae: bf00 nop + 80011b0: 3708 adds r7, #8 + 80011b2: 46bd mov sp, r7 + 80011b4: bd80 pop {r7, pc} + 80011b6: bf00 nop + 80011b8: 08004794 .word 0x08004794 + 80011bc: 200000b0 .word 0x200000b0 + +080011c0 : + +void SetTxPower(int8_t powerdBm) { + 80011c0: b580 push {r7, lr} + 80011c2: b084 sub sp, #16 + 80011c4: af00 add r7, sp, #0 + 80011c6: 4603 mov r3, r0 + 80011c8: 71fb strb r3, [r7, #7] + // Between -9 and 22 + uint8_t txbuf[3] = {0x8E, (uint8_t) powerdBm, 0x02}; + 80011ca: 238e movs r3, #142 ; 0x8e + 80011cc: 733b strb r3, [r7, #12] + 80011ce: 79fb ldrb r3, [r7, #7] + 80011d0: 737b strb r3, [r7, #13] + 80011d2: 2302 movs r3, #2 + 80011d4: 73bb strb r3, [r7, #14] + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); + 80011d6: 7b39 ldrb r1, [r7, #12] + 80011d8: f107 020c add.w r2, r7, #12 + 80011dc: 3201 adds r2, #1 + 80011de: 2302 movs r3, #2 + 80011e0: 4803 ldr r0, [pc, #12] ; (80011f0 ) + 80011e2: f002 fbd5 bl 8003990 +} + 80011e6: bf00 nop + 80011e8: 3710 adds r7, #16 + 80011ea: 46bd mov sp, r7 + 80011ec: bd80 pop {r7, pc} + 80011ee: bf00 nop + 80011f0: 200000b0 .word 0x200000b0 + +080011f4 : +void SetContinuousWave() { + uint8_t txbuf[1] = {0xD1}; + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf, 0); +} + +void SetTxInfinitePreamble() { + 80011f4: b580 push {r7, lr} + 80011f6: b082 sub sp, #8 + 80011f8: af00 add r7, sp, #0 + uint8_t txbuf[1] = {0xD2}; + 80011fa: 23d2 movs r3, #210 ; 0xd2 + 80011fc: 713b strb r3, [r7, #4] + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf, 0); + 80011fe: 7939 ldrb r1, [r7, #4] + 8001200: 1d3a adds r2, r7, #4 + 8001202: 2300 movs r3, #0 + 8001204: 4803 ldr r0, [pc, #12] ; (8001214 ) + 8001206: f002 fbc3 bl 8003990 +} + 800120a: bf00 nop + 800120c: 3708 adds r7, #8 + 800120e: 46bd mov sp, r7 + 8001210: bd80 pop {r7, pc} + 8001212: bf00 nop + 8001214: 200000b0 .word 0x200000b0 + +08001218 : +void SetModulationParamsLora(const uint8_t params[4]) { + uint8_t txbuf[5] = {0x8B, params[0], params[1], params[2], params[3]}; + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); +} +void SetModulationParamsFSK(uint32_t bitrate, uint8_t pulseshape, uint8_t bandwidth, uint32_t freq_dev) { + 8001218: b580 push {r7, lr} + 800121a: b08a sub sp, #40 ; 0x28 + 800121c: af00 add r7, sp, #0 + 800121e: 60f8 str r0, [r7, #12] + 8001220: 607b str r3, [r7, #4] + 8001222: 460b mov r3, r1 + 8001224: 72fb strb r3, [r7, #11] + 8001226: 4613 mov r3, r2 + 8001228: 72bb strb r3, [r7, #10] + uint32_t BR = 32 * 32e6 / bitrate; + 800122a: 68f8 ldr r0, [r7, #12] + 800122c: f7ff f8e6 bl 80003fc <__aeabi_ui2d> + 8001230: 4602 mov r2, r0 + 8001232: 460b mov r3, r1 + 8001234: a122 add r1, pc, #136 ; (adr r1, 80012c0 ) + 8001236: e9d1 0100 ldrd r0, r1, [r1] + 800123a: f7ff fa83 bl 8000744 <__aeabi_ddiv> + 800123e: 4602 mov r2, r0 + 8001240: 460b mov r3, r1 + 8001242: 4610 mov r0, r2 + 8001244: 4619 mov r1, r3 + 8001246: f7ff fb65 bl 8000914 <__aeabi_d2uiz> + 800124a: 4603 mov r3, r0 + 800124c: 627b str r3, [r7, #36] ; 0x24 + uint32_t fdev = (uint32_t) (freq_dev * 1.048576L); // 2^25/32e6 = 1.048576 + 800124e: 6878 ldr r0, [r7, #4] + 8001250: f7ff f8d4 bl 80003fc <__aeabi_ui2d> + 8001254: a31c add r3, pc, #112 ; (adr r3, 80012c8 ) + 8001256: e9d3 2300 ldrd r2, r3, [r3] + 800125a: f7ff f949 bl 80004f0 <__aeabi_dmul> + 800125e: 4602 mov r2, r0 + 8001260: 460b mov r3, r1 + 8001262: 4610 mov r0, r2 + 8001264: 4619 mov r1, r3 + 8001266: f7ff fb55 bl 8000914 <__aeabi_d2uiz> + 800126a: 4603 mov r3, r0 + 800126c: 623b str r3, [r7, #32] + uint8_t txbuf[9] = {0x8B, (BR & 0x00FF0000) >> 16, (BR & 0x0000FF00) >> 8, BR & 0x000000FF, pulseshape, bandwidth, (fdev & 0x00FF0000) >> 16, (fdev & 0x0000FF00) >> 8, fdev & 0x000000FF}; + 800126e: 238b movs r3, #139 ; 0x8b + 8001270: 753b strb r3, [r7, #20] + 8001272: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001274: 0c1b lsrs r3, r3, #16 + 8001276: b2db uxtb r3, r3 + 8001278: 757b strb r3, [r7, #21] + 800127a: 6a7b ldr r3, [r7, #36] ; 0x24 + 800127c: 0a1b lsrs r3, r3, #8 + 800127e: b2db uxtb r3, r3 + 8001280: 75bb strb r3, [r7, #22] + 8001282: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001284: b2db uxtb r3, r3 + 8001286: 75fb strb r3, [r7, #23] + 8001288: 7afb ldrb r3, [r7, #11] + 800128a: 763b strb r3, [r7, #24] + 800128c: 7abb ldrb r3, [r7, #10] + 800128e: 767b strb r3, [r7, #25] + 8001290: 6a3b ldr r3, [r7, #32] + 8001292: 0c1b lsrs r3, r3, #16 + 8001294: b2db uxtb r3, r3 + 8001296: 76bb strb r3, [r7, #26] + 8001298: 6a3b ldr r3, [r7, #32] + 800129a: 0a1b lsrs r3, r3, #8 + 800129c: b2db uxtb r3, r3 + 800129e: 76fb strb r3, [r7, #27] + 80012a0: 6a3b ldr r3, [r7, #32] + 80012a2: b2db uxtb r3, r3 + 80012a4: 773b strb r3, [r7, #28] + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); + 80012a6: 7d39 ldrb r1, [r7, #20] + 80012a8: f107 0214 add.w r2, r7, #20 + 80012ac: 3201 adds r2, #1 + 80012ae: 2308 movs r3, #8 + 80012b0: 4807 ldr r0, [pc, #28] ; (80012d0 ) + 80012b2: f002 fb6d bl 8003990 +} + 80012b6: bf00 nop + 80012b8: 3728 adds r7, #40 ; 0x28 + 80012ba: 46bd mov sp, r7 + 80012bc: bd80 pop {r7, pc} + 80012be: bf00 nop + 80012c0: 00000000 .word 0x00000000 + 80012c4: 41ce8480 .word 0x41ce8480 + 80012c8: a0b5ed8d .word 0xa0b5ed8d + 80012cc: 3ff0c6f7 .word 0x3ff0c6f7 + 80012d0: 200000b0 .word 0x200000b0 + +080012d4 : + + HAL_SUBGHZ_ExecSetCmd(&hsubghz, txbuf[0], txbuf+1, sizeof(txbuf)-1); } - 8001506: bf00 nop - 8001508: 3718 adds r7, #24 - 800150a: 46bd mov sp, r7 - 800150c: bd80 pop {r7, pc} - 800150e: bf00 nop - 8001510: 48000400 .word 0x48000400 - 8001514: 48001c00 .word 0x48001c00 -08001518 : + +void FSKBeep(int8_t powerdBm, uint32_t toneHz, uint32_t lengthMs) { + 80012d4: b580 push {r7, lr} + 80012d6: b084 sub sp, #16 + 80012d8: af00 add r7, sp, #0 + 80012da: 4603 mov r3, r0 + 80012dc: 60b9 str r1, [r7, #8] + 80012de: 607a str r2, [r7, #4] + 80012e0: 73fb strb r3, [r7, #15] + // assume in standbyXOSC already. + HAL_Delay(1); + 80012e2: 2001 movs r0, #1 + 80012e4: f000 f9ea bl 80016bc + SetTxPower(powerdBm); + 80012e8: f997 300f ldrsb.w r3, [r7, #15] + 80012ec: 4618 mov r0, r3 + 80012ee: f7ff ff67 bl 80011c0 + SetModulationParamsFSK(toneHz*2, 0x09, 0x1E, 2500); + 80012f2: 68bb ldr r3, [r7, #8] + 80012f4: 0058 lsls r0, r3, #1 + 80012f6: f640 13c4 movw r3, #2500 ; 0x9c4 + 80012fa: 221e movs r2, #30 + 80012fc: 2109 movs r1, #9 + 80012fe: f7ff ff8b bl 8001218 + HAL_Delay(5); + 8001302: 2005 movs r0, #5 + 8001304: f000 f9da bl 80016bc + SetTxInfinitePreamble(); + 8001308: f7ff ff74 bl 80011f4 + HAL_Delay(lengthMs); + 800130c: 6878 ldr r0, [r7, #4] + 800130e: f000 f9d5 bl 80016bc + SetStandbyXOSC(); + 8001312: f7ff fec3 bl 800109c + HAL_Delay(5); + 8001316: 2005 movs r0, #5 + 8001318: f000 f9d0 bl 80016bc +} + 800131c: bf00 nop + 800131e: 3710 adds r7, #16 + 8001320: 46bd mov sp, r7 + 8001322: bd80 pop {r7, pc} + +08001324 : /** * @brief This function is executed in case of error occurrence. * @retval None */ void Error_Handler(void) { - 8001518: b480 push {r7} - 800151a: af00 add r7, sp, #0 + 8001324: b480 push {r7} + 8001326: 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"); - 800151c: b672 cpsid i + 8001328: b672 cpsid i } - 800151e: bf00 nop + 800132a: bf00 nop /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ __disable_irq(); while (1) - 8001520: e7fe b.n 8001520 + 800132c: e7fe b.n 800132c -08001522 : +0800132e : { - 8001522: b480 push {r7} - 8001524: b085 sub sp, #20 - 8001526: af00 add r7, sp, #0 - 8001528: 6078 str r0, [r7, #4] + 800132e: b480 push {r7} + 8001330: b085 sub sp, #20 + 8001332: af00 add r7, sp, #0 + 8001334: 6078 str r0, [r7, #4] SET_BIT(RCC->AHB1ENR, Periphs); - 800152a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800152e: 6c9a ldr r2, [r3, #72] ; 0x48 - 8001530: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 8001534: 687b ldr r3, [r7, #4] - 8001536: 4313 orrs r3, r2 - 8001538: 648b str r3, [r1, #72] ; 0x48 + 8001336: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800133a: 6c9a ldr r2, [r3, #72] ; 0x48 + 800133c: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 8001340: 687b ldr r3, [r7, #4] + 8001342: 4313 orrs r3, r2 + 8001344: 648b str r3, [r1, #72] ; 0x48 tmpreg = READ_BIT(RCC->AHB1ENR, Periphs); - 800153a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800153e: 6c9a ldr r2, [r3, #72] ; 0x48 - 8001540: 687b ldr r3, [r7, #4] - 8001542: 4013 ands r3, r2 - 8001544: 60fb str r3, [r7, #12] + 8001346: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800134a: 6c9a ldr r2, [r3, #72] ; 0x48 + 800134c: 687b ldr r3, [r7, #4] + 800134e: 4013 ands r3, r2 + 8001350: 60fb str r3, [r7, #12] (void)tmpreg; - 8001546: 68fb ldr r3, [r7, #12] + 8001352: 68fb ldr r3, [r7, #12] } - 8001548: bf00 nop - 800154a: 3714 adds r7, #20 - 800154c: 46bd mov sp, r7 - 800154e: bc80 pop {r7} - 8001550: 4770 bx lr + 8001354: bf00 nop + 8001356: 3714 adds r7, #20 + 8001358: 46bd mov sp, r7 + 800135a: bc80 pop {r7} + 800135c: 4770 bx lr -08001552 : +0800135e : { - 8001552: b480 push {r7} - 8001554: b085 sub sp, #20 - 8001556: af00 add r7, sp, #0 - 8001558: 6078 str r0, [r7, #4] + 800135e: b480 push {r7} + 8001360: b085 sub sp, #20 + 8001362: af00 add r7, sp, #0 + 8001364: 6078 str r0, [r7, #4] SET_BIT(RCC->AHB2ENR, Periphs); - 800155a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800155e: 6cda ldr r2, [r3, #76] ; 0x4c - 8001560: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 8001564: 687b ldr r3, [r7, #4] - 8001566: 4313 orrs r3, r2 - 8001568: 64cb str r3, [r1, #76] ; 0x4c + 8001366: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800136a: 6cda ldr r2, [r3, #76] ; 0x4c + 800136c: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 8001370: 687b ldr r3, [r7, #4] + 8001372: 4313 orrs r3, r2 + 8001374: 64cb str r3, [r1, #76] ; 0x4c tmpreg = READ_BIT(RCC->AHB2ENR, Periphs); - 800156a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800156e: 6cda ldr r2, [r3, #76] ; 0x4c - 8001570: 687b ldr r3, [r7, #4] - 8001572: 4013 ands r3, r2 - 8001574: 60fb str r3, [r7, #12] + 8001376: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800137a: 6cda ldr r2, [r3, #76] ; 0x4c + 800137c: 687b ldr r3, [r7, #4] + 800137e: 4013 ands r3, r2 + 8001380: 60fb str r3, [r7, #12] (void)tmpreg; - 8001576: 68fb ldr r3, [r7, #12] + 8001382: 68fb ldr r3, [r7, #12] } - 8001578: bf00 nop - 800157a: 3714 adds r7, #20 - 800157c: 46bd mov sp, r7 - 800157e: bc80 pop {r7} - 8001580: 4770 bx lr + 8001384: bf00 nop + 8001386: 3714 adds r7, #20 + 8001388: 46bd mov sp, r7 + 800138a: bc80 pop {r7} + 800138c: 4770 bx lr -08001582 : +0800138e : * @arg @ref LL_APB1_GRP1_PERIPH_DAC * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 * @retval None */ __STATIC_INLINE void LL_APB1_GRP1_EnableClock(uint32_t Periphs) { - 8001582: b480 push {r7} - 8001584: b085 sub sp, #20 - 8001586: af00 add r7, sp, #0 - 8001588: 6078 str r0, [r7, #4] + 800138e: b480 push {r7} + 8001390: b085 sub sp, #20 + 8001392: af00 add r7, sp, #0 + 8001394: 6078 str r0, [r7, #4] __IO uint32_t tmpreg; SET_BIT(RCC->APB1ENR1, Periphs); - 800158a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800158e: 6d9a ldr r2, [r3, #88] ; 0x58 - 8001590: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 8001594: 687b ldr r3, [r7, #4] - 8001596: 4313 orrs r3, r2 - 8001598: 658b str r3, [r1, #88] ; 0x58 + 8001396: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800139a: 6d9a ldr r2, [r3, #88] ; 0x58 + 800139c: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 80013a0: 687b ldr r3, [r7, #4] + 80013a2: 4313 orrs r3, r2 + 80013a4: 658b str r3, [r1, #88] ; 0x58 /* Delay after an RCC peripheral clock enabling */ tmpreg = READ_BIT(RCC->APB1ENR1, Periphs); - 800159a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800159e: 6d9a ldr r2, [r3, #88] ; 0x58 - 80015a0: 687b ldr r3, [r7, #4] - 80015a2: 4013 ands r3, r2 - 80015a4: 60fb str r3, [r7, #12] + 80013a6: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80013aa: 6d9a ldr r2, [r3, #88] ; 0x58 + 80013ac: 687b ldr r3, [r7, #4] + 80013ae: 4013 ands r3, r2 + 80013b0: 60fb str r3, [r7, #12] (void)tmpreg; - 80015a6: 68fb ldr r3, [r7, #12] + 80013b2: 68fb ldr r3, [r7, #12] } - 80015a8: bf00 nop - 80015aa: 3714 adds r7, #20 - 80015ac: 46bd mov sp, r7 - 80015ae: bc80 pop {r7} - 80015b0: 4770 bx lr + 80013b4: bf00 nop + 80013b6: 3714 adds r7, #20 + 80013b8: 46bd mov sp, r7 + 80013ba: bc80 pop {r7} + 80013bc: 4770 bx lr -080015b2 : +080013be : * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 * @retval None */ __STATIC_INLINE void LL_APB2_GRP1_EnableClock(uint32_t Periphs) { - 80015b2: b480 push {r7} - 80015b4: b085 sub sp, #20 - 80015b6: af00 add r7, sp, #0 - 80015b8: 6078 str r0, [r7, #4] + 80013be: b480 push {r7} + 80013c0: b085 sub sp, #20 + 80013c2: af00 add r7, sp, #0 + 80013c4: 6078 str r0, [r7, #4] __IO uint32_t tmpreg; SET_BIT(RCC->APB2ENR, Periphs); - 80015ba: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80015be: 6e1a ldr r2, [r3, #96] ; 0x60 - 80015c0: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 80015c4: 687b ldr r3, [r7, #4] - 80015c6: 4313 orrs r3, r2 - 80015c8: 660b str r3, [r1, #96] ; 0x60 + 80013c6: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80013ca: 6e1a ldr r2, [r3, #96] ; 0x60 + 80013cc: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 80013d0: 687b ldr r3, [r7, #4] + 80013d2: 4313 orrs r3, r2 + 80013d4: 660b str r3, [r1, #96] ; 0x60 /* Delay after an RCC peripheral clock enabling */ tmpreg = READ_BIT(RCC->APB2ENR, Periphs); - 80015ca: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80015ce: 6e1a ldr r2, [r3, #96] ; 0x60 - 80015d0: 687b ldr r3, [r7, #4] - 80015d2: 4013 ands r3, r2 - 80015d4: 60fb str r3, [r7, #12] + 80013d6: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80013da: 6e1a ldr r2, [r3, #96] ; 0x60 + 80013dc: 687b ldr r3, [r7, #4] + 80013de: 4013 ands r3, r2 + 80013e0: 60fb str r3, [r7, #12] (void)tmpreg; - 80015d6: 68fb ldr r3, [r7, #12] + 80013e2: 68fb ldr r3, [r7, #12] } - 80015d8: bf00 nop - 80015da: 3714 adds r7, #20 - 80015dc: 46bd mov sp, r7 - 80015de: bc80 pop {r7} - 80015e0: 4770 bx lr + 80013e4: bf00 nop + 80013e6: 3714 adds r7, #20 + 80013e8: 46bd mov sp, r7 + 80013ea: bc80 pop {r7} + 80013ec: 4770 bx lr -080015e2 : +080013ee : * @param Periphs This parameter can be a combination of the following values: * @arg @ref LL_APB3_GRP1_PERIPH_SUBGHZSPI * @retval None */ __STATIC_INLINE void LL_APB3_GRP1_EnableClock(uint32_t Periphs) { - 80015e2: b480 push {r7} - 80015e4: b085 sub sp, #20 - 80015e6: af00 add r7, sp, #0 - 80015e8: 6078 str r0, [r7, #4] + 80013ee: b480 push {r7} + 80013f0: b085 sub sp, #20 + 80013f2: af00 add r7, sp, #0 + 80013f4: 6078 str r0, [r7, #4] __IO uint32_t tmpreg; SET_BIT(RCC->APB3ENR, Periphs); - 80015ea: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80015ee: 6e5a ldr r2, [r3, #100] ; 0x64 - 80015f0: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 80015f4: 687b ldr r3, [r7, #4] - 80015f6: 4313 orrs r3, r2 - 80015f8: 664b str r3, [r1, #100] ; 0x64 + 80013f6: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80013fa: 6e5a ldr r2, [r3, #100] ; 0x64 + 80013fc: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 8001400: 687b ldr r3, [r7, #4] + 8001402: 4313 orrs r3, r2 + 8001404: 664b str r3, [r1, #100] ; 0x64 /* Delay after an RCC peripheral clock enabling */ tmpreg = READ_BIT(RCC->APB3ENR, Periphs); - 80015fa: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80015fe: 6e5a ldr r2, [r3, #100] ; 0x64 - 8001600: 687b ldr r3, [r7, #4] - 8001602: 4013 ands r3, r2 - 8001604: 60fb str r3, [r7, #12] + 8001406: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800140a: 6e5a ldr r2, [r3, #100] ; 0x64 + 800140c: 687b ldr r3, [r7, #4] + 800140e: 4013 ands r3, r2 + 8001410: 60fb str r3, [r7, #12] (void)tmpreg; - 8001606: 68fb ldr r3, [r7, #12] + 8001412: 68fb ldr r3, [r7, #12] } - 8001608: bf00 nop - 800160a: 3714 adds r7, #20 - 800160c: 46bd mov sp, r7 - 800160e: bc80 pop {r7} - 8001610: 4770 bx lr + 8001414: bf00 nop + 8001416: 3714 adds r7, #20 + 8001418: 46bd mov sp, r7 + 800141a: bc80 pop {r7} + 800141c: 4770 bx lr -08001612 : +0800141e : /* USER CODE END 0 */ /** * Initializes the Global MSP. */ void HAL_MspInit(void) { - 8001612: b480 push {r7} - 8001614: af00 add r7, sp, #0 + 800141e: b480 push {r7} + 8001420: af00 add r7, sp, #0 /* System interrupt init*/ /* USER CODE BEGIN MspInit 1 */ /* USER CODE END MspInit 1 */ } - 8001616: bf00 nop - 8001618: 46bd mov sp, r7 - 800161a: bc80 pop {r7} - 800161c: 4770 bx lr + 8001422: bf00 nop + 8001424: 46bd mov sp, r7 + 8001426: bc80 pop {r7} + 8001428: 4770 bx lr ... -08001620 : +0800142c : * This function configures the hardware resources used in this example * @param hadc: ADC handle pointer * @retval None */ void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc) { - 8001620: b580 push {r7, lr} - 8001622: b082 sub sp, #8 - 8001624: af00 add r7, sp, #0 - 8001626: 6078 str r0, [r7, #4] + 800142c: b580 push {r7, lr} + 800142e: b082 sub sp, #8 + 8001430: af00 add r7, sp, #0 + 8001432: 6078 str r0, [r7, #4] if(hadc->Instance==ADC) - 8001628: 687b ldr r3, [r7, #4] - 800162a: 681b ldr r3, [r3, #0] - 800162c: 4a05 ldr r2, [pc, #20] ; (8001644 ) - 800162e: 4293 cmp r3, r2 - 8001630: d103 bne.n 800163a + 8001434: 687b ldr r3, [r7, #4] + 8001436: 681b ldr r3, [r3, #0] + 8001438: 4a05 ldr r2, [pc, #20] ; (8001450 ) + 800143a: 4293 cmp r3, r2 + 800143c: d103 bne.n 8001446 { /* USER CODE BEGIN ADC_MspInit 0 */ /* USER CODE END ADC_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_ADC_CLK_ENABLE(); - 8001632: f44f 7000 mov.w r0, #512 ; 0x200 - 8001636: f7ff ffbc bl 80015b2 + 800143e: f44f 7000 mov.w r0, #512 ; 0x200 + 8001442: f7ff ffbc bl 80013be /* USER CODE BEGIN ADC_MspInit 1 */ /* USER CODE END ADC_MspInit 1 */ } } - 800163a: bf00 nop - 800163c: 3708 adds r7, #8 - 800163e: 46bd mov sp, r7 - 8001640: bd80 pop {r7, pc} - 8001642: bf00 nop - 8001644: 40012400 .word 0x40012400 + 8001446: bf00 nop + 8001448: 3708 adds r7, #8 + 800144a: 46bd mov sp, r7 + 800144c: bd80 pop {r7, pc} + 800144e: bf00 nop + 8001450: 40012400 .word 0x40012400 -08001648 : +08001454 : * This function configures the hardware resources used in this example * @param hcrc: CRC handle pointer * @retval None */ void HAL_CRC_MspInit(CRC_HandleTypeDef* hcrc) { - 8001648: b580 push {r7, lr} - 800164a: b082 sub sp, #8 - 800164c: af00 add r7, sp, #0 - 800164e: 6078 str r0, [r7, #4] + 8001454: b580 push {r7, lr} + 8001456: b082 sub sp, #8 + 8001458: af00 add r7, sp, #0 + 800145a: 6078 str r0, [r7, #4] if(hcrc->Instance==CRC) - 8001650: 687b ldr r3, [r7, #4] - 8001652: 681b ldr r3, [r3, #0] - 8001654: 4a05 ldr r2, [pc, #20] ; (800166c ) - 8001656: 4293 cmp r3, r2 - 8001658: d103 bne.n 8001662 + 800145c: 687b ldr r3, [r7, #4] + 800145e: 681b ldr r3, [r3, #0] + 8001460: 4a05 ldr r2, [pc, #20] ; (8001478 ) + 8001462: 4293 cmp r3, r2 + 8001464: d103 bne.n 800146e { /* USER CODE BEGIN CRC_MspInit 0 */ /* USER CODE END CRC_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_CRC_CLK_ENABLE(); - 800165a: f44f 5080 mov.w r0, #4096 ; 0x1000 - 800165e: f7ff ff60 bl 8001522 + 8001466: f44f 5080 mov.w r0, #4096 ; 0x1000 + 800146a: f7ff ff60 bl 800132e /* USER CODE BEGIN CRC_MspInit 1 */ /* USER CODE END CRC_MspInit 1 */ } } - 8001662: bf00 nop - 8001664: 3708 adds r7, #8 - 8001666: 46bd mov sp, r7 - 8001668: bd80 pop {r7, pc} - 800166a: bf00 nop - 800166c: 40023000 .word 0x40023000 + 800146e: bf00 nop + 8001470: 3708 adds r7, #8 + 8001472: 46bd mov sp, r7 + 8001474: bd80 pop {r7, pc} + 8001476: bf00 nop + 8001478: 40023000 .word 0x40023000 -08001670 : +0800147c : * This function configures the hardware resources used in this example * @param hsubghz: SUBGHZ handle pointer * @retval None */ void HAL_SUBGHZ_MspInit(SUBGHZ_HandleTypeDef* hsubghz) { - 8001670: b580 push {r7, lr} - 8001672: b082 sub sp, #8 - 8001674: af00 add r7, sp, #0 - 8001676: 6078 str r0, [r7, #4] + 800147c: b580 push {r7, lr} + 800147e: b082 sub sp, #8 + 8001480: af00 add r7, sp, #0 + 8001482: 6078 str r0, [r7, #4] /* USER CODE BEGIN SUBGHZ_MspInit 0 */ /* USER CODE END SUBGHZ_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_SUBGHZSPI_CLK_ENABLE(); - 8001678: 2001 movs r0, #1 - 800167a: f7ff ffb2 bl 80015e2 + 8001484: 2001 movs r0, #1 + 8001486: f7ff ffb2 bl 80013ee /* USER CODE BEGIN SUBGHZ_MspInit 1 */ /* USER CODE END SUBGHZ_MspInit 1 */ } - 800167e: bf00 nop - 8001680: 3708 adds r7, #8 - 8001682: 46bd mov sp, r7 - 8001684: bd80 pop {r7, pc} + 800148a: bf00 nop + 800148c: 3708 adds r7, #8 + 800148e: 46bd mov sp, r7 + 8001490: bd80 pop {r7, pc} ... -08001688 : +08001494 : * This function configures the hardware resources used in this example * @param huart: UART handle pointer * @retval None */ void HAL_UART_MspInit(UART_HandleTypeDef* huart) { - 8001688: b580 push {r7, lr} - 800168a: b096 sub sp, #88 ; 0x58 - 800168c: af00 add r7, sp, #0 - 800168e: 6078 str r0, [r7, #4] + 8001494: b580 push {r7, lr} + 8001496: b096 sub sp, #88 ; 0x58 + 8001498: af00 add r7, sp, #0 + 800149a: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8001690: f107 0344 add.w r3, r7, #68 ; 0x44 - 8001694: 2200 movs r2, #0 - 8001696: 601a str r2, [r3, #0] - 8001698: 605a str r2, [r3, #4] - 800169a: 609a str r2, [r3, #8] - 800169c: 60da str r2, [r3, #12] - 800169e: 611a str r2, [r3, #16] + 800149c: f107 0344 add.w r3, r7, #68 ; 0x44 + 80014a0: 2200 movs r2, #0 + 80014a2: 601a str r2, [r3, #0] + 80014a4: 605a str r2, [r3, #4] + 80014a6: 609a str r2, [r3, #8] + 80014a8: 60da str r2, [r3, #12] + 80014aa: 611a str r2, [r3, #16] RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; - 80016a0: f107 030c add.w r3, r7, #12 - 80016a4: 2238 movs r2, #56 ; 0x38 - 80016a6: 2100 movs r1, #0 - 80016a8: 4618 mov r0, r3 - 80016aa: f003 f955 bl 8004958 + 80014ac: f107 030c add.w r3, r7, #12 + 80014b0: 2238 movs r2, #56 ; 0x38 + 80014b2: 2100 movs r1, #0 + 80014b4: 4618 mov r0, r3 + 80014b6: f003 f955 bl 8004764 if(huart->Instance==USART2) - 80016ae: 687b ldr r3, [r7, #4] - 80016b0: 681b ldr r3, [r3, #0] - 80016b2: 4a17 ldr r2, [pc, #92] ; (8001710 ) - 80016b4: 4293 cmp r3, r2 - 80016b6: d126 bne.n 8001706 + 80014ba: 687b ldr r3, [r7, #4] + 80014bc: 681b ldr r3, [r3, #0] + 80014be: 4a17 ldr r2, [pc, #92] ; (800151c ) + 80014c0: 4293 cmp r3, r2 + 80014c2: d126 bne.n 8001512 /* USER CODE END USART2_MspInit 0 */ /** Initializes the peripherals clocks */ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART2; - 80016b8: 2302 movs r3, #2 - 80016ba: 60fb str r3, [r7, #12] + 80014c4: 2302 movs r3, #2 + 80014c6: 60fb str r3, [r7, #12] PeriphClkInitStruct.Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1; - 80016bc: f44f 2340 mov.w r3, #786432 ; 0xc0000 - 80016c0: 617b str r3, [r7, #20] + 80014c8: f44f 2340 mov.w r3, #786432 ; 0xc0000 + 80014cc: 617b str r3, [r7, #20] if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) - 80016c2: f107 030c add.w r3, r7, #12 - 80016c6: 4618 mov r0, r3 - 80016c8: f002 f844 bl 8003754 - 80016cc: 4603 mov r3, r0 - 80016ce: 2b00 cmp r3, #0 - 80016d0: d001 beq.n 80016d6 + 80014ce: f107 030c add.w r3, r7, #12 + 80014d2: 4618 mov r0, r3 + 80014d4: f002 f844 bl 8003560 + 80014d8: 4603 mov r3, r0 + 80014da: 2b00 cmp r3, #0 + 80014dc: d001 beq.n 80014e2 { Error_Handler(); - 80016d2: f7ff ff21 bl 8001518 + 80014de: f7ff ff21 bl 8001324 } /* Peripheral clock enable */ __HAL_RCC_USART2_CLK_ENABLE(); - 80016d6: f44f 3000 mov.w r0, #131072 ; 0x20000 - 80016da: f7ff ff52 bl 8001582 + 80014e2: f44f 3000 mov.w r0, #131072 ; 0x20000 + 80014e6: f7ff ff52 bl 800138e __HAL_RCC_GPIOA_CLK_ENABLE(); - 80016de: 2001 movs r0, #1 - 80016e0: f7ff ff37 bl 8001552 + 80014ea: 2001 movs r0, #1 + 80014ec: f7ff ff37 bl 800135e /**USART2 GPIO Configuration PA2 ------> USART2_TX PA3 ------> USART2_RX */ GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3; - 80016e4: 230c movs r3, #12 - 80016e6: 647b str r3, [r7, #68] ; 0x44 + 80014f0: 230c movs r3, #12 + 80014f2: 647b str r3, [r7, #68] ; 0x44 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 80016e8: 2302 movs r3, #2 - 80016ea: 64bb str r3, [r7, #72] ; 0x48 + 80014f4: 2302 movs r3, #2 + 80014f6: 64bb str r3, [r7, #72] ; 0x48 GPIO_InitStruct.Pull = GPIO_NOPULL; - 80016ec: 2300 movs r3, #0 - 80016ee: 64fb str r3, [r7, #76] ; 0x4c + 80014f8: 2300 movs r3, #0 + 80014fa: 64fb str r3, [r7, #76] ; 0x4c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 80016f0: 2300 movs r3, #0 - 80016f2: 653b str r3, [r7, #80] ; 0x50 + 80014fc: 2300 movs r3, #0 + 80014fe: 653b str r3, [r7, #80] ; 0x50 GPIO_InitStruct.Alternate = GPIO_AF7_USART2; - 80016f4: 2307 movs r3, #7 - 80016f6: 657b str r3, [r7, #84] ; 0x54 + 8001500: 2307 movs r3, #7 + 8001502: 657b str r3, [r7, #84] ; 0x54 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 80016f8: f107 0344 add.w r3, r7, #68 ; 0x44 - 80016fc: 4619 mov r1, r3 - 80016fe: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 - 8001702: f000 fce1 bl 80020c8 + 8001504: f107 0344 add.w r3, r7, #68 ; 0x44 + 8001508: 4619 mov r1, r3 + 800150a: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 800150e: f000 fce1 bl 8001ed4 /* USER CODE BEGIN USART2_MspInit 1 */ /* USER CODE END USART2_MspInit 1 */ } } - 8001706: bf00 nop - 8001708: 3758 adds r7, #88 ; 0x58 - 800170a: 46bd mov sp, r7 - 800170c: bd80 pop {r7, pc} - 800170e: bf00 nop - 8001710: 40004400 .word 0x40004400 + 8001512: bf00 nop + 8001514: 3758 adds r7, #88 ; 0x58 + 8001516: 46bd mov sp, r7 + 8001518: bd80 pop {r7, pc} + 800151a: bf00 nop + 800151c: 40004400 .word 0x40004400 -08001714 : +08001520 : /******************************************************************************/ /** * @brief This function handles Non maskable interrupt. */ void NMI_Handler(void) { - 8001714: b480 push {r7} - 8001716: af00 add r7, sp, #0 + 8001520: b480 push {r7} + 8001522: 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) - 8001718: e7fe b.n 8001718 + 8001524: e7fe b.n 8001524 -0800171a : +08001526 : /** * @brief This function handles Hard fault interrupt. */ void HardFault_Handler(void) { - 800171a: b480 push {r7} - 800171c: af00 add r7, sp, #0 + 8001526: b480 push {r7} + 8001528: af00 add r7, sp, #0 /* USER CODE BEGIN HardFault_IRQn 0 */ /* USER CODE END HardFault_IRQn 0 */ while (1) - 800171e: e7fe b.n 800171e + 800152a: e7fe b.n 800152a -08001720 : +0800152c : /** * @brief This function handles Memory management fault. */ void MemManage_Handler(void) { - 8001720: b480 push {r7} - 8001722: af00 add r7, sp, #0 + 800152c: b480 push {r7} + 800152e: af00 add r7, sp, #0 /* USER CODE BEGIN MemoryManagement_IRQn 0 */ /* USER CODE END MemoryManagement_IRQn 0 */ while (1) - 8001724: e7fe b.n 8001724 + 8001530: e7fe b.n 8001530 -08001726 : +08001532 : /** * @brief This function handles Prefetch fault, memory access fault. */ void BusFault_Handler(void) { - 8001726: b480 push {r7} - 8001728: af00 add r7, sp, #0 + 8001532: b480 push {r7} + 8001534: af00 add r7, sp, #0 /* USER CODE BEGIN BusFault_IRQn 0 */ /* USER CODE END BusFault_IRQn 0 */ while (1) - 800172a: e7fe b.n 800172a + 8001536: e7fe b.n 8001536 -0800172c : +08001538 : /** * @brief This function handles Undefined instruction or illegal state. */ void UsageFault_Handler(void) { - 800172c: b480 push {r7} - 800172e: af00 add r7, sp, #0 + 8001538: b480 push {r7} + 800153a: af00 add r7, sp, #0 /* USER CODE BEGIN UsageFault_IRQn 0 */ /* USER CODE END UsageFault_IRQn 0 */ while (1) - 8001730: e7fe b.n 8001730 + 800153c: e7fe b.n 800153c -08001732 : +0800153e : /** * @brief This function handles System service call via SWI instruction. */ void SVC_Handler(void) { - 8001732: b480 push {r7} - 8001734: af00 add r7, sp, #0 + 800153e: b480 push {r7} + 8001540: af00 add r7, sp, #0 /* USER CODE END SVCall_IRQn 0 */ /* USER CODE BEGIN SVCall_IRQn 1 */ /* USER CODE END SVCall_IRQn 1 */ } - 8001736: bf00 nop - 8001738: 46bd mov sp, r7 - 800173a: bc80 pop {r7} - 800173c: 4770 bx lr + 8001542: bf00 nop + 8001544: 46bd mov sp, r7 + 8001546: bc80 pop {r7} + 8001548: 4770 bx lr -0800173e : +0800154a : /** * @brief This function handles Debug monitor. */ void DebugMon_Handler(void) { - 800173e: b480 push {r7} - 8001740: af00 add r7, sp, #0 + 800154a: b480 push {r7} + 800154c: af00 add r7, sp, #0 /* USER CODE END DebugMonitor_IRQn 0 */ /* USER CODE BEGIN DebugMonitor_IRQn 1 */ /* USER CODE END DebugMonitor_IRQn 1 */ } - 8001742: bf00 nop - 8001744: 46bd mov sp, r7 - 8001746: bc80 pop {r7} - 8001748: 4770 bx lr + 800154e: bf00 nop + 8001550: 46bd mov sp, r7 + 8001552: bc80 pop {r7} + 8001554: 4770 bx lr -0800174a : +08001556 : /** * @brief This function handles Pendable request for system service. */ void PendSV_Handler(void) { - 800174a: b480 push {r7} - 800174c: af00 add r7, sp, #0 + 8001556: b480 push {r7} + 8001558: af00 add r7, sp, #0 /* USER CODE END PendSV_IRQn 0 */ /* USER CODE BEGIN PendSV_IRQn 1 */ /* USER CODE END PendSV_IRQn 1 */ } - 800174e: bf00 nop - 8001750: 46bd mov sp, r7 - 8001752: bc80 pop {r7} - 8001754: 4770 bx lr + 800155a: bf00 nop + 800155c: 46bd mov sp, r7 + 800155e: bc80 pop {r7} + 8001560: 4770 bx lr -08001756 : +08001562 : /** * @brief This function handles System tick timer. */ void SysTick_Handler(void) { - 8001756: b580 push {r7, lr} - 8001758: af00 add r7, sp, #0 + 8001562: b580 push {r7, lr} + 8001564: af00 add r7, sp, #0 /* USER CODE BEGIN SysTick_IRQn 0 */ /* USER CODE END SysTick_IRQn 0 */ HAL_IncTick(); - 800175a: f000 f88d bl 8001878 + 8001566: f000 f88d bl 8001684 /* USER CODE BEGIN SysTick_IRQn 1 */ /* USER CODE END SysTick_IRQn 1 */ } - 800175e: bf00 nop - 8001760: bd80 pop {r7, pc} + 800156a: bf00 nop + 800156c: bd80 pop {r7, pc} -08001762 : +0800156e : * @brief Setup the microcontroller system. * @param None * @retval None */ void SystemInit(void) { - 8001762: b480 push {r7} - 8001764: af00 add r7, sp, #0 + 800156e: b480 push {r7} + 8001570: af00 add r7, sp, #0 /* FPU settings ------------------------------------------------------------*/ #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) SCB->CPACR |= ((3UL << (10UL*2UL))|(3UL << (11UL*2UL))); /* set CP10 and CP11 Full Access */ #endif } - 8001766: bf00 nop - 8001768: 46bd mov sp, r7 - 800176a: bc80 pop {r7} - 800176c: 4770 bx lr + 8001572: bf00 nop + 8001574: 46bd mov sp, r7 + 8001576: bc80 pop {r7} + 8001578: 4770 bx lr ... -08001770 : +0800157c : .section .text.Reset_Handler .weak Reset_Handler .type Reset_Handler, %function Reset_Handler: ldr r0, =_estack - 8001770: 480d ldr r0, [pc, #52] ; (80017a8 ) + 800157c: 480d ldr r0, [pc, #52] ; (80015b4 ) mov sp, r0 /* set stack pointer */ - 8001772: 4685 mov sp, r0 + 800157e: 4685 mov sp, r0 /* Call the clock system initialization function.*/ bl SystemInit - 8001774: f7ff fff5 bl 8001762 + 8001580: f7ff fff5 bl 800156e /* Copy the data segment initializers from flash to SRAM */ ldr r0, =_sdata - 8001778: 480c ldr r0, [pc, #48] ; (80017ac ) + 8001584: 480c ldr r0, [pc, #48] ; (80015b8 ) ldr r1, =_edata - 800177a: 490d ldr r1, [pc, #52] ; (80017b0 ) + 8001586: 490d ldr r1, [pc, #52] ; (80015bc ) ldr r2, =_sidata - 800177c: 4a0d ldr r2, [pc, #52] ; (80017b4 ) + 8001588: 4a0d ldr r2, [pc, #52] ; (80015c0 ) movs r3, #0 - 800177e: 2300 movs r3, #0 + 800158a: 2300 movs r3, #0 b LoopCopyDataInit - 8001780: e002 b.n 8001788 + 800158c: e002 b.n 8001594 -08001782 : +0800158e : CopyDataInit: ldr r4, [r2, r3] - 8001782: 58d4 ldr r4, [r2, r3] + 800158e: 58d4 ldr r4, [r2, r3] str r4, [r0, r3] - 8001784: 50c4 str r4, [r0, r3] + 8001590: 50c4 str r4, [r0, r3] adds r3, r3, #4 - 8001786: 3304 adds r3, #4 + 8001592: 3304 adds r3, #4 -08001788 : +08001594 : LoopCopyDataInit: adds r4, r0, r3 - 8001788: 18c4 adds r4, r0, r3 + 8001594: 18c4 adds r4, r0, r3 cmp r4, r1 - 800178a: 428c cmp r4, r1 + 8001596: 428c cmp r4, r1 bcc CopyDataInit - 800178c: d3f9 bcc.n 8001782 + 8001598: d3f9 bcc.n 800158e /* Zero fill the bss segment. */ ldr r2, =_sbss - 800178e: 4a0a ldr r2, [pc, #40] ; (80017b8 ) + 800159a: 4a0a ldr r2, [pc, #40] ; (80015c4 ) ldr r4, =_ebss - 8001790: 4c0a ldr r4, [pc, #40] ; (80017bc ) + 800159c: 4c0a ldr r4, [pc, #40] ; (80015c8 ) movs r3, #0 - 8001792: 2300 movs r3, #0 + 800159e: 2300 movs r3, #0 b LoopFillZerobss - 8001794: e001 b.n 800179a + 80015a0: e001 b.n 80015a6 -08001796 : +080015a2 : FillZerobss: str r3, [r2] - 8001796: 6013 str r3, [r2, #0] + 80015a2: 6013 str r3, [r2, #0] adds r2, r2, #4 - 8001798: 3204 adds r2, #4 + 80015a4: 3204 adds r2, #4 -0800179a : +080015a6 : LoopFillZerobss: cmp r2, r4 - 800179a: 42a2 cmp r2, r4 + 80015a6: 42a2 cmp r2, r4 bcc FillZerobss - 800179c: d3fb bcc.n 8001796 + 80015a8: d3fb bcc.n 80015a2 /* Call static constructors */ bl __libc_init_array - 800179e: f003 f8b7 bl 8004910 <__libc_init_array> + 80015aa: f003 f8b7 bl 800471c <__libc_init_array> /* Call the application's entry point.*/ bl main - 80017a2: f7ff fcc9 bl 8001138
+ 80015ae: f7ff fb8f bl 8000cd0
-080017a6 : +080015b2 : LoopForever: b LoopForever - 80017a6: e7fe b.n 80017a6 + 80015b2: e7fe b.n 80015b2 ldr r0, =_estack - 80017a8: 20004000 .word 0x20004000 + 80015b4: 20004000 .word 0x20004000 ldr r0, =_sdata - 80017ac: 20000000 .word 0x20000000 + 80015b8: 20000000 .word 0x20000000 ldr r1, =_edata - 80017b0: 20000014 .word 0x20000014 + 80015bc: 2000000c .word 0x2000000c ldr r2, =_sidata - 80017b4: 08004aec .word 0x08004aec + 80015c0: 08004890 .word 0x08004890 ldr r2, =_sbss - 80017b8: 20000014 .word 0x20000014 + 80015c4: 2000000c .word 0x2000000c ldr r4, =_ebss - 80017bc: 2000015c .word 0x2000015c + 80015c8: 20000154 .word 0x20000154 -080017c0 : +080015cc : * @retval : None */ .section .text.Default_Handler,"ax",%progbits Default_Handler: Infinite_Loop: b Infinite_Loop - 80017c0: e7fe b.n 80017c0 + 80015cc: e7fe b.n 80015cc ... -080017c4 : +080015d0 : * need to ensure that the SysTick time base is always set to 1 millisecond * to have correct HAL operation. * @retval HAL status */ HAL_StatusTypeDef HAL_Init(void) { - 80017c4: b580 push {r7, lr} - 80017c6: b082 sub sp, #8 - 80017c8: af00 add r7, sp, #0 + 80015d0: b580 push {r7, lr} + 80015d2: b082 sub sp, #8 + 80015d4: af00 add r7, sp, #0 HAL_StatusTypeDef status = HAL_OK; - 80017ca: 2300 movs r3, #0 - 80017cc: 71fb strb r3, [r7, #7] + 80015d6: 2300 movs r3, #0 + 80015d8: 71fb strb r3, [r7, #7] #endif /* PREFETCH_ENABLE */ #ifdef CORE_CM0PLUS #else /* Set Interrupt Group Priority */ HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); - 80017ce: 2003 movs r0, #3 - 80017d0: f000 fb56 bl 8001e80 + 80015da: 2003 movs r0, #3 + 80015dc: f000 fb56 bl 8001c8c /* Update the SystemCoreClock global variable */ #if defined(DUAL_CORE) && defined(CORE_CM0PLUS) SystemCoreClock = HAL_RCC_GetHCLK2Freq(); #else SystemCoreClock = HAL_RCC_GetHCLKFreq(); - 80017d4: f001 fde0 bl 8003398 - 80017d8: 4603 mov r3, r0 - 80017da: 4a09 ldr r2, [pc, #36] ; (8001800 ) - 80017dc: 6013 str r3, [r2, #0] + 80015e0: f001 fde0 bl 80031a4 + 80015e4: 4603 mov r3, r0 + 80015e6: 4a09 ldr r2, [pc, #36] ; (800160c ) + 80015e8: 6013 str r3, [r2, #0] #endif /* Use SysTick as time base source and configure 1ms tick (default clock after Reset is MSI) */ if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK) - 80017de: 200f movs r0, #15 - 80017e0: f000 f810 bl 8001804 - 80017e4: 4603 mov r3, r0 - 80017e6: 2b00 cmp r3, #0 - 80017e8: d002 beq.n 80017f0 + 80015ea: 200f movs r0, #15 + 80015ec: f000 f810 bl 8001610 + 80015f0: 4603 mov r3, r0 + 80015f2: 2b00 cmp r3, #0 + 80015f4: d002 beq.n 80015fc { status = HAL_ERROR; - 80017ea: 2301 movs r3, #1 - 80017ec: 71fb strb r3, [r7, #7] - 80017ee: e001 b.n 80017f4 + 80015f6: 2301 movs r3, #1 + 80015f8: 71fb strb r3, [r7, #7] + 80015fa: e001 b.n 8001600 } else { /* Init the low level hardware */ HAL_MspInit(); - 80017f0: f7ff ff0f bl 8001612 + 80015fc: f7ff ff0f bl 800141e } /* Return function status */ return status; - 80017f4: 79fb ldrb r3, [r7, #7] + 8001600: 79fb ldrb r3, [r7, #7] } - 80017f6: 4618 mov r0, r3 - 80017f8: 3708 adds r7, #8 - 80017fa: 46bd mov sp, r7 - 80017fc: bd80 pop {r7, pc} - 80017fe: bf00 nop - 8001800: 20000008 .word 0x20000008 + 8001602: 4618 mov r0, r3 + 8001604: 3708 adds r7, #8 + 8001606: 46bd mov sp, r7 + 8001608: bd80 pop {r7, pc} + 800160a: bf00 nop + 800160c: 20000000 .word 0x20000000 -08001804 : +08001610 : * implementation in user file. * @param TickPriority Tick interrupt priority. * @retval HAL status */ __weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) { - 8001804: b580 push {r7, lr} - 8001806: b084 sub sp, #16 - 8001808: af00 add r7, sp, #0 - 800180a: 6078 str r0, [r7, #4] + 8001610: b580 push {r7, lr} + 8001612: b084 sub sp, #16 + 8001614: af00 add r7, sp, #0 + 8001616: 6078 str r0, [r7, #4] HAL_StatusTypeDef status = HAL_OK; - 800180c: 2300 movs r3, #0 - 800180e: 73fb strb r3, [r7, #15] + 8001618: 2300 movs r3, #0 + 800161a: 73fb strb r3, [r7, #15] /* Check uwTickFreq for MisraC 2012 (even if uwTickFreq is a enum type that don't take the value zero)*/ if ((uint32_t)uwTickFreq != 0U) - 8001810: 4b17 ldr r3, [pc, #92] ; (8001870 ) - 8001812: 781b ldrb r3, [r3, #0] - 8001814: 2b00 cmp r3, #0 - 8001816: d024 beq.n 8001862 + 800161c: 4b17 ldr r3, [pc, #92] ; (800167c ) + 800161e: 781b ldrb r3, [r3, #0] + 8001620: 2b00 cmp r3, #0 + 8001622: d024 beq.n 800166e { /*Configure the SysTick to have interrupt in 1ms time basis*/ #ifdef CORE_CM0PLUS if (HAL_SYSTICK_Config(HAL_RCC_GetHCLK2Freq() / (1000U / (uint32_t)uwTickFreq)) == 0U) #else if (HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq() / (1000U / (uint32_t)uwTickFreq)) == 0U) - 8001818: f001 fdbe bl 8003398 - 800181c: 4602 mov r2, r0 - 800181e: 4b14 ldr r3, [pc, #80] ; (8001870 ) - 8001820: 781b ldrb r3, [r3, #0] - 8001822: 4619 mov r1, r3 - 8001824: f44f 737a mov.w r3, #1000 ; 0x3e8 - 8001828: fbb3 f3f1 udiv r3, r3, r1 - 800182c: fbb2 f3f3 udiv r3, r2, r3 - 8001830: 4618 mov r0, r3 - 8001832: f000 fb4a bl 8001eca - 8001836: 4603 mov r3, r0 - 8001838: 2b00 cmp r3, #0 - 800183a: d10f bne.n 800185c + 8001624: f001 fdbe bl 80031a4 + 8001628: 4602 mov r2, r0 + 800162a: 4b14 ldr r3, [pc, #80] ; (800167c ) + 800162c: 781b ldrb r3, [r3, #0] + 800162e: 4619 mov r1, r3 + 8001630: f44f 737a mov.w r3, #1000 ; 0x3e8 + 8001634: fbb3 f3f1 udiv r3, r3, r1 + 8001638: fbb2 f3f3 udiv r3, r2, r3 + 800163c: 4618 mov r0, r3 + 800163e: f000 fb4a bl 8001cd6 + 8001642: 4603 mov r3, r0 + 8001644: 2b00 cmp r3, #0 + 8001646: d10f bne.n 8001668 #endif { /* Configure the SysTick IRQ priority */ if (TickPriority < (1UL << __NVIC_PRIO_BITS)) - 800183c: 687b ldr r3, [r7, #4] - 800183e: 2b0f cmp r3, #15 - 8001840: d809 bhi.n 8001856 + 8001648: 687b ldr r3, [r7, #4] + 800164a: 2b0f cmp r3, #15 + 800164c: d809 bhi.n 8001662 { HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); - 8001842: 2200 movs r2, #0 - 8001844: 6879 ldr r1, [r7, #4] - 8001846: f04f 30ff mov.w r0, #4294967295 - 800184a: f000 fb24 bl 8001e96 + 800164e: 2200 movs r2, #0 + 8001650: 6879 ldr r1, [r7, #4] + 8001652: f04f 30ff mov.w r0, #4294967295 + 8001656: f000 fb24 bl 8001ca2 uwTickPrio = TickPriority; - 800184e: 4a09 ldr r2, [pc, #36] ; (8001874 ) - 8001850: 687b ldr r3, [r7, #4] - 8001852: 6013 str r3, [r2, #0] - 8001854: e007 b.n 8001866 + 800165a: 4a09 ldr r2, [pc, #36] ; (8001680 ) + 800165c: 687b ldr r3, [r7, #4] + 800165e: 6013 str r3, [r2, #0] + 8001660: e007 b.n 8001672 } else { status = HAL_ERROR; - 8001856: 2301 movs r3, #1 - 8001858: 73fb strb r3, [r7, #15] - 800185a: e004 b.n 8001866 + 8001662: 2301 movs r3, #1 + 8001664: 73fb strb r3, [r7, #15] + 8001666: e004 b.n 8001672 } } else { status = HAL_ERROR; - 800185c: 2301 movs r3, #1 - 800185e: 73fb strb r3, [r7, #15] - 8001860: e001 b.n 8001866 + 8001668: 2301 movs r3, #1 + 800166a: 73fb strb r3, [r7, #15] + 800166c: e001 b.n 8001672 } } else { status = HAL_ERROR; - 8001862: 2301 movs r3, #1 - 8001864: 73fb strb r3, [r7, #15] + 800166e: 2301 movs r3, #1 + 8001670: 73fb strb r3, [r7, #15] } /* Return function status */ return status; - 8001866: 7bfb ldrb r3, [r7, #15] + 8001672: 7bfb ldrb r3, [r7, #15] } - 8001868: 4618 mov r0, r3 - 800186a: 3710 adds r7, #16 - 800186c: 46bd mov sp, r7 - 800186e: bd80 pop {r7, pc} - 8001870: 20000010 .word 0x20000010 - 8001874: 2000000c .word 0x2000000c + 8001674: 4618 mov r0, r3 + 8001676: 3710 adds r7, #16 + 8001678: 46bd mov sp, r7 + 800167a: bd80 pop {r7, pc} + 800167c: 20000008 .word 0x20000008 + 8001680: 20000004 .word 0x20000004 -08001878 : +08001684 : * @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) { - 8001878: b480 push {r7} - 800187a: af00 add r7, sp, #0 + 8001684: b480 push {r7} + 8001686: af00 add r7, sp, #0 uwTick += (uint32_t)uwTickFreq; - 800187c: 4b05 ldr r3, [pc, #20] ; (8001894 ) - 800187e: 781b ldrb r3, [r3, #0] - 8001880: 461a mov r2, r3 - 8001882: 4b05 ldr r3, [pc, #20] ; (8001898 ) - 8001884: 681b ldr r3, [r3, #0] - 8001886: 4413 add r3, r2 - 8001888: 4a03 ldr r2, [pc, #12] ; (8001898 ) - 800188a: 6013 str r3, [r2, #0] -} - 800188c: bf00 nop - 800188e: 46bd mov sp, r7 - 8001890: bc80 pop {r7} - 8001892: 4770 bx lr - 8001894: 20000010 .word 0x20000010 - 8001898: 20000158 .word 0x20000158 - -0800189c : + 8001688: 4b05 ldr r3, [pc, #20] ; (80016a0 ) + 800168a: 781b ldrb r3, [r3, #0] + 800168c: 461a mov r2, r3 + 800168e: 4b05 ldr r3, [pc, #20] ; (80016a4 ) + 8001690: 681b ldr r3, [r3, #0] + 8001692: 4413 add r3, r2 + 8001694: 4a03 ldr r2, [pc, #12] ; (80016a4 ) + 8001696: 6013 str r3, [r2, #0] +} + 8001698: bf00 nop + 800169a: 46bd mov sp, r7 + 800169c: bc80 pop {r7} + 800169e: 4770 bx lr + 80016a0: 20000008 .word 0x20000008 + 80016a4: 20000150 .word 0x20000150 + +080016a8 : * @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) { - 800189c: b480 push {r7} - 800189e: af00 add r7, sp, #0 + 80016a8: b480 push {r7} + 80016aa: af00 add r7, sp, #0 return uwTick; - 80018a0: 4b02 ldr r3, [pc, #8] ; (80018ac ) - 80018a2: 681b ldr r3, [r3, #0] + 80016ac: 4b02 ldr r3, [pc, #8] ; (80016b8 ) + 80016ae: 681b ldr r3, [r3, #0] } - 80018a4: 4618 mov r0, r3 - 80018a6: 46bd mov sp, r7 - 80018a8: bc80 pop {r7} - 80018aa: 4770 bx lr - 80018ac: 20000158 .word 0x20000158 + 80016b0: 4618 mov r0, r3 + 80016b2: 46bd mov sp, r7 + 80016b4: bc80 pop {r7} + 80016b6: 4770 bx lr + 80016b8: 20000150 .word 0x20000150 -080018b0 : +080016bc : * implementations in user file. * @param Delay specifies the delay time length, in milliseconds. * @retval None */ __weak void HAL_Delay(uint32_t Delay) { - 80018b0: b580 push {r7, lr} - 80018b2: b084 sub sp, #16 - 80018b4: af00 add r7, sp, #0 - 80018b6: 6078 str r0, [r7, #4] + 80016bc: b580 push {r7, lr} + 80016be: b084 sub sp, #16 + 80016c0: af00 add r7, sp, #0 + 80016c2: 6078 str r0, [r7, #4] uint32_t tickstart = HAL_GetTick(); - 80018b8: f7ff fff0 bl 800189c - 80018bc: 60b8 str r0, [r7, #8] + 80016c4: f7ff fff0 bl 80016a8 + 80016c8: 60b8 str r0, [r7, #8] uint32_t wait = Delay; - 80018be: 687b ldr r3, [r7, #4] - 80018c0: 60fb str r3, [r7, #12] + 80016ca: 687b ldr r3, [r7, #4] + 80016cc: 60fb str r3, [r7, #12] /* Add a freq to guarantee minimum wait */ if (wait < HAL_MAX_DELAY) - 80018c2: 68fb ldr r3, [r7, #12] - 80018c4: f1b3 3fff cmp.w r3, #4294967295 - 80018c8: d005 beq.n 80018d6 + 80016ce: 68fb ldr r3, [r7, #12] + 80016d0: f1b3 3fff cmp.w r3, #4294967295 + 80016d4: d005 beq.n 80016e2 { wait += (uint32_t)(uwTickFreq); - 80018ca: 4b0a ldr r3, [pc, #40] ; (80018f4 ) - 80018cc: 781b ldrb r3, [r3, #0] - 80018ce: 461a mov r2, r3 - 80018d0: 68fb ldr r3, [r7, #12] - 80018d2: 4413 add r3, r2 - 80018d4: 60fb str r3, [r7, #12] + 80016d6: 4b0a ldr r3, [pc, #40] ; (8001700 ) + 80016d8: 781b ldrb r3, [r3, #0] + 80016da: 461a mov r2, r3 + 80016dc: 68fb ldr r3, [r7, #12] + 80016de: 4413 add r3, r2 + 80016e0: 60fb str r3, [r7, #12] } while ((HAL_GetTick() - tickstart) < wait) - 80018d6: bf00 nop - 80018d8: f7ff ffe0 bl 800189c - 80018dc: 4602 mov r2, r0 - 80018de: 68bb ldr r3, [r7, #8] - 80018e0: 1ad3 subs r3, r2, r3 - 80018e2: 68fa ldr r2, [r7, #12] - 80018e4: 429a cmp r2, r3 - 80018e6: d8f7 bhi.n 80018d8 + 80016e2: bf00 nop + 80016e4: f7ff ffe0 bl 80016a8 + 80016e8: 4602 mov r2, r0 + 80016ea: 68bb ldr r3, [r7, #8] + 80016ec: 1ad3 subs r3, r2, r3 + 80016ee: 68fa ldr r2, [r7, #12] + 80016f0: 429a cmp r2, r3 + 80016f2: d8f7 bhi.n 80016e4 { } } - 80018e8: bf00 nop - 80018ea: bf00 nop - 80018ec: 3710 adds r7, #16 - 80018ee: 46bd mov sp, r7 - 80018f0: bd80 pop {r7, pc} - 80018f2: bf00 nop - 80018f4: 20000010 .word 0x20000010 + 80016f4: bf00 nop + 80016f6: bf00 nop + 80016f8: 3710 adds r7, #16 + 80016fa: 46bd mov sp, r7 + 80016fc: bd80 pop {r7, pc} + 80016fe: bf00 nop + 8001700: 20000008 .word 0x20000008 -080018f8 : +08001704 : * @arg @ref LL_ADC_SAMPLINGTIME_160CYCLES_5 * @retval None */ __STATIC_INLINE void LL_ADC_SetSamplingTimeCommonChannels(ADC_TypeDef *ADCx, uint32_t SamplingTimeY, uint32_t SamplingTime) { - 80018f8: b480 push {r7} - 80018fa: b085 sub sp, #20 - 80018fc: af00 add r7, sp, #0 - 80018fe: 60f8 str r0, [r7, #12] - 8001900: 60b9 str r1, [r7, #8] - 8001902: 607a str r2, [r7, #4] + 8001704: b480 push {r7} + 8001706: b085 sub sp, #20 + 8001708: af00 add r7, sp, #0 + 800170a: 60f8 str r0, [r7, #12] + 800170c: 60b9 str r1, [r7, #8] + 800170e: 607a str r2, [r7, #4] MODIFY_REG(ADCx->SMPR, - 8001904: 68fb ldr r3, [r7, #12] - 8001906: 695a ldr r2, [r3, #20] - 8001908: 68bb ldr r3, [r7, #8] - 800190a: f003 0304 and.w r3, r3, #4 - 800190e: 2107 movs r1, #7 - 8001910: fa01 f303 lsl.w r3, r1, r3 - 8001914: 43db mvns r3, r3 - 8001916: 401a ands r2, r3 - 8001918: 68bb ldr r3, [r7, #8] - 800191a: f003 0304 and.w r3, r3, #4 - 800191e: 6879 ldr r1, [r7, #4] - 8001920: fa01 f303 lsl.w r3, r1, r3 - 8001924: 431a orrs r2, r3 - 8001926: 68fb ldr r3, [r7, #12] - 8001928: 615a str r2, [r3, #20] + 8001710: 68fb ldr r3, [r7, #12] + 8001712: 695a ldr r2, [r3, #20] + 8001714: 68bb ldr r3, [r7, #8] + 8001716: f003 0304 and.w r3, r3, #4 + 800171a: 2107 movs r1, #7 + 800171c: fa01 f303 lsl.w r3, r1, r3 + 8001720: 43db mvns r3, r3 + 8001722: 401a ands r2, r3 + 8001724: 68bb ldr r3, [r7, #8] + 8001726: f003 0304 and.w r3, r3, #4 + 800172a: 6879 ldr r1, [r7, #4] + 800172c: fa01 f303 lsl.w r3, r1, r3 + 8001730: 431a orrs r2, r3 + 8001732: 68fb ldr r3, [r7, #12] + 8001734: 615a str r2, [r3, #20] ADC_SMPR_SMP1 << (SamplingTimeY & ADC_SAMPLING_TIME_SMP_SHIFT_MASK), SamplingTime << (SamplingTimeY & ADC_SAMPLING_TIME_SMP_SHIFT_MASK)); } - 800192a: bf00 nop - 800192c: 3714 adds r7, #20 - 800192e: 46bd mov sp, r7 - 8001930: bc80 pop {r7} - 8001932: 4770 bx lr + 8001736: bf00 nop + 8001738: 3714 adds r7, #20 + 800173a: 46bd mov sp, r7 + 800173c: bc80 pop {r7} + 800173e: 4770 bx lr -08001934 : +08001740 : * @arg @ref LL_ADC_SAMPLINGTIME_39CYCLES_5 * @arg @ref LL_ADC_SAMPLINGTIME_79CYCLES_5 * @arg @ref LL_ADC_SAMPLINGTIME_160CYCLES_5 */ __STATIC_INLINE uint32_t LL_ADC_GetSamplingTimeCommonChannels(ADC_TypeDef *ADCx, uint32_t SamplingTimeY) { - 8001934: b480 push {r7} - 8001936: b083 sub sp, #12 - 8001938: af00 add r7, sp, #0 - 800193a: 6078 str r0, [r7, #4] - 800193c: 6039 str r1, [r7, #0] + 8001740: b480 push {r7} + 8001742: b083 sub sp, #12 + 8001744: af00 add r7, sp, #0 + 8001746: 6078 str r0, [r7, #4] + 8001748: 6039 str r1, [r7, #0] return (uint32_t)((READ_BIT(ADCx->SMPR, ADC_SMPR_SMP1 << (SamplingTimeY & ADC_SAMPLING_TIME_SMP_SHIFT_MASK))) - 800193e: 687b ldr r3, [r7, #4] - 8001940: 695a ldr r2, [r3, #20] - 8001942: 683b ldr r3, [r7, #0] - 8001944: f003 0304 and.w r3, r3, #4 - 8001948: 2107 movs r1, #7 - 800194a: fa01 f303 lsl.w r3, r1, r3 - 800194e: 401a ands r2, r3 + 800174a: 687b ldr r3, [r7, #4] + 800174c: 695a ldr r2, [r3, #20] + 800174e: 683b ldr r3, [r7, #0] + 8001750: f003 0304 and.w r3, r3, #4 + 8001754: 2107 movs r1, #7 + 8001756: fa01 f303 lsl.w r3, r1, r3 + 800175a: 401a ands r2, r3 >> (SamplingTimeY & ADC_SAMPLING_TIME_SMP_SHIFT_MASK)); - 8001950: 683b ldr r3, [r7, #0] - 8001952: f003 0304 and.w r3, r3, #4 + 800175c: 683b ldr r3, [r7, #0] + 800175e: f003 0304 and.w r3, r3, #4 return (uint32_t)((READ_BIT(ADCx->SMPR, ADC_SMPR_SMP1 << (SamplingTimeY & ADC_SAMPLING_TIME_SMP_SHIFT_MASK))) - 8001956: fa22 f303 lsr.w r3, r2, r3 + 8001762: fa22 f303 lsr.w r3, r2, r3 } - 800195a: 4618 mov r0, r3 - 800195c: 370c adds r7, #12 - 800195e: 46bd mov sp, r7 - 8001960: bc80 pop {r7} - 8001962: 4770 bx lr + 8001766: 4618 mov r0, r3 + 8001768: 370c adds r7, #12 + 800176a: 46bd mov sp, r7 + 800176c: bc80 pop {r7} + 800176e: 4770 bx lr -08001964 : +08001770 : * @rmtoll CR ADVREGEN LL_ADC_EnableInternalRegulator * @param ADCx ADC instance * @retval None */ __STATIC_INLINE void LL_ADC_EnableInternalRegulator(ADC_TypeDef *ADCx) { - 8001964: b480 push {r7} - 8001966: b083 sub sp, #12 - 8001968: af00 add r7, sp, #0 - 800196a: 6078 str r0, [r7, #4] + 8001770: b480 push {r7} + 8001772: b083 sub sp, #12 + 8001774: af00 add r7, sp, #0 + 8001776: 6078 str r0, [r7, #4] /* Note: Write register with some additional bits forced to state reset */ /* instead of modifying only the selected bit for this function, */ /* to not interfere with bits with HW property "rs". */ MODIFY_REG(ADCx->CR, - 800196c: 687b ldr r3, [r7, #4] - 800196e: 689b ldr r3, [r3, #8] - 8001970: f023 4310 bic.w r3, r3, #2415919104 ; 0x90000000 - 8001974: f023 0317 bic.w r3, r3, #23 - 8001978: f043 5280 orr.w r2, r3, #268435456 ; 0x10000000 - 800197c: 687b ldr r3, [r7, #4] - 800197e: 609a str r2, [r3, #8] + 8001778: 687b ldr r3, [r7, #4] + 800177a: 689b ldr r3, [r3, #8] + 800177c: f023 4310 bic.w r3, r3, #2415919104 ; 0x90000000 + 8001780: f023 0317 bic.w r3, r3, #23 + 8001784: f043 5280 orr.w r2, r3, #268435456 ; 0x10000000 + 8001788: 687b ldr r3, [r7, #4] + 800178a: 609a str r2, [r3, #8] ADC_CR_BITS_PROPERTY_RS, ADC_CR_ADVREGEN); } - 8001980: bf00 nop - 8001982: 370c adds r7, #12 - 8001984: 46bd mov sp, r7 - 8001986: bc80 pop {r7} - 8001988: 4770 bx lr + 800178c: bf00 nop + 800178e: 370c adds r7, #12 + 8001790: 46bd mov sp, r7 + 8001792: bc80 pop {r7} + 8001794: 4770 bx lr -0800198a : +08001796 : * @rmtoll CR ADVREGEN LL_ADC_IsInternalRegulatorEnabled * @param ADCx ADC instance * @retval 0: internal regulator is disabled, 1: internal regulator is enabled. */ __STATIC_INLINE uint32_t LL_ADC_IsInternalRegulatorEnabled(ADC_TypeDef *ADCx) { - 800198a: b480 push {r7} - 800198c: b083 sub sp, #12 - 800198e: af00 add r7, sp, #0 - 8001990: 6078 str r0, [r7, #4] + 8001796: b480 push {r7} + 8001798: b083 sub sp, #12 + 800179a: af00 add r7, sp, #0 + 800179c: 6078 str r0, [r7, #4] return ((READ_BIT(ADCx->CR, ADC_CR_ADVREGEN) == (ADC_CR_ADVREGEN)) ? 1UL : 0UL); - 8001992: 687b ldr r3, [r7, #4] - 8001994: 689b ldr r3, [r3, #8] - 8001996: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 - 800199a: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 - 800199e: d101 bne.n 80019a4 - 80019a0: 2301 movs r3, #1 - 80019a2: e000 b.n 80019a6 - 80019a4: 2300 movs r3, #0 -} - 80019a6: 4618 mov r0, r3 - 80019a8: 370c adds r7, #12 - 80019aa: 46bd mov sp, r7 - 80019ac: bc80 pop {r7} - 80019ae: 4770 bx lr - -080019b0 : + 800179e: 687b ldr r3, [r7, #4] + 80017a0: 689b ldr r3, [r3, #8] + 80017a2: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 + 80017a6: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 + 80017aa: d101 bne.n 80017b0 + 80017ac: 2301 movs r3, #1 + 80017ae: e000 b.n 80017b2 + 80017b0: 2300 movs r3, #0 +} + 80017b2: 4618 mov r0, r3 + 80017b4: 370c adds r7, #12 + 80017b6: 46bd mov sp, r7 + 80017b8: bc80 pop {r7} + 80017ba: 4770 bx lr + +080017bc : * @rmtoll CR ADEN LL_ADC_IsEnabled * @param ADCx ADC instance * @retval 0: ADC is disabled, 1: ADC is enabled. */ __STATIC_INLINE uint32_t LL_ADC_IsEnabled(ADC_TypeDef *ADCx) { - 80019b0: b480 push {r7} - 80019b2: b083 sub sp, #12 - 80019b4: af00 add r7, sp, #0 - 80019b6: 6078 str r0, [r7, #4] + 80017bc: b480 push {r7} + 80017be: b083 sub sp, #12 + 80017c0: af00 add r7, sp, #0 + 80017c2: 6078 str r0, [r7, #4] return ((READ_BIT(ADCx->CR, ADC_CR_ADEN) == (ADC_CR_ADEN)) ? 1UL : 0UL); - 80019b8: 687b ldr r3, [r7, #4] - 80019ba: 689b ldr r3, [r3, #8] - 80019bc: f003 0301 and.w r3, r3, #1 - 80019c0: 2b01 cmp r3, #1 - 80019c2: d101 bne.n 80019c8 - 80019c4: 2301 movs r3, #1 - 80019c6: e000 b.n 80019ca - 80019c8: 2300 movs r3, #0 -} - 80019ca: 4618 mov r0, r3 - 80019cc: 370c adds r7, #12 - 80019ce: 46bd mov sp, r7 - 80019d0: bc80 pop {r7} - 80019d2: 4770 bx lr - -080019d4 : + 80017c4: 687b ldr r3, [r7, #4] + 80017c6: 689b ldr r3, [r3, #8] + 80017c8: f003 0301 and.w r3, r3, #1 + 80017cc: 2b01 cmp r3, #1 + 80017ce: d101 bne.n 80017d4 + 80017d0: 2301 movs r3, #1 + 80017d2: e000 b.n 80017d6 + 80017d4: 2300 movs r3, #0 +} + 80017d6: 4618 mov r0, r3 + 80017d8: 370c adds r7, #12 + 80017da: 46bd mov sp, r7 + 80017dc: bc80 pop {r7} + 80017de: 4770 bx lr + +080017e0 : * @rmtoll CR ADSTART LL_ADC_REG_IsConversionOngoing * @param ADCx ADC instance * @retval 0: no conversion is on going on ADC group regular. */ __STATIC_INLINE uint32_t LL_ADC_REG_IsConversionOngoing(ADC_TypeDef *ADCx) { - 80019d4: b480 push {r7} - 80019d6: b083 sub sp, #12 - 80019d8: af00 add r7, sp, #0 - 80019da: 6078 str r0, [r7, #4] + 80017e0: b480 push {r7} + 80017e2: b083 sub sp, #12 + 80017e4: af00 add r7, sp, #0 + 80017e6: 6078 str r0, [r7, #4] return ((READ_BIT(ADCx->CR, ADC_CR_ADSTART) == (ADC_CR_ADSTART)) ? 1UL : 0UL); - 80019dc: 687b ldr r3, [r7, #4] - 80019de: 689b ldr r3, [r3, #8] - 80019e0: f003 0304 and.w r3, r3, #4 - 80019e4: 2b04 cmp r3, #4 - 80019e6: d101 bne.n 80019ec - 80019e8: 2301 movs r3, #1 - 80019ea: e000 b.n 80019ee - 80019ec: 2300 movs r3, #0 -} - 80019ee: 4618 mov r0, r3 - 80019f0: 370c adds r7, #12 - 80019f2: 46bd mov sp, r7 - 80019f4: bc80 pop {r7} - 80019f6: 4770 bx lr - -080019f8 : + 80017e8: 687b ldr r3, [r7, #4] + 80017ea: 689b ldr r3, [r3, #8] + 80017ec: f003 0304 and.w r3, r3, #4 + 80017f0: 2b04 cmp r3, #4 + 80017f2: d101 bne.n 80017f8 + 80017f4: 2301 movs r3, #1 + 80017f6: e000 b.n 80017fa + 80017f8: 2300 movs r3, #0 +} + 80017fa: 4618 mov r0, r3 + 80017fc: 370c adds r7, #12 + 80017fe: 46bd mov sp, r7 + 8001800: bc80 pop {r7} + 8001802: 4770 bx lr + +08001804 : * of structure "ADC_InitTypeDef". * @param hadc ADC handle * @retval HAL status */ HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef *hadc) { - 80019f8: b580 push {r7, lr} - 80019fa: b088 sub sp, #32 - 80019fc: af00 add r7, sp, #0 - 80019fe: 6078 str r0, [r7, #4] + 8001804: b580 push {r7, lr} + 8001806: b088 sub sp, #32 + 8001808: af00 add r7, sp, #0 + 800180a: 6078 str r0, [r7, #4] HAL_StatusTypeDef tmp_hal_status = HAL_OK; - 8001a00: 2300 movs r3, #0 - 8001a02: 77fb strb r3, [r7, #31] + 800180c: 2300 movs r3, #0 + 800180e: 77fb strb r3, [r7, #31] uint32_t tmpCFGR1 = 0UL; - 8001a04: 2300 movs r3, #0 - 8001a06: 61bb str r3, [r7, #24] + 8001810: 2300 movs r3, #0 + 8001812: 61bb str r3, [r7, #24] uint32_t tmpCFGR2 = 0UL; - 8001a08: 2300 movs r3, #0 - 8001a0a: 617b str r3, [r7, #20] + 8001814: 2300 movs r3, #0 + 8001816: 617b str r3, [r7, #20] uint32_t tmp_adc_reg_is_conversion_on_going; __IO uint32_t wait_loop_index = 0UL; - 8001a0c: 2300 movs r3, #0 - 8001a0e: 60fb str r3, [r7, #12] + 8001818: 2300 movs r3, #0 + 800181a: 60fb str r3, [r7, #12] /* Check ADC handle */ if (hadc == NULL) - 8001a10: 687b ldr r3, [r7, #4] - 8001a12: 2b00 cmp r3, #0 - 8001a14: d101 bne.n 8001a1a + 800181c: 687b ldr r3, [r7, #4] + 800181e: 2b00 cmp r3, #0 + 8001820: d101 bne.n 8001826 { return HAL_ERROR; - 8001a16: 2301 movs r3, #1 - 8001a18: e17e b.n 8001d18 + 8001822: 2301 movs r3, #1 + 8001824: e17e b.n 8001b24 assert_param(IS_ADC_RIGHT_BIT_SHIFT(hadc->Init.Oversampling.RightBitShift)); assert_param(IS_ADC_TRIGGERED_OVERSAMPLING_MODE(hadc->Init.Oversampling.TriggeredMode)); } assert_param(IS_ADC_TRIGGER_FREQ(hadc->Init.TriggerFrequencyMode)); if (hadc->Init.ScanConvMode != ADC_SCAN_DISABLE) - 8001a1a: 687b ldr r3, [r7, #4] - 8001a1c: 691b ldr r3, [r3, #16] - 8001a1e: 2b00 cmp r3, #0 + 8001826: 687b ldr r3, [r7, #4] + 8001828: 691b ldr r3, [r3, #16] + 800182a: 2b00 cmp r3, #0 /* continuous mode is disabled. */ assert_param(!((hadc->Init.DiscontinuousConvMode == ENABLE) && (hadc->Init.ContinuousConvMode == ENABLE))); /* Actions performed only if ADC is coming from state reset: */ /* - Initialization of ADC MSP */ if (hadc->State == HAL_ADC_STATE_RESET) - 8001a20: 687b ldr r3, [r7, #4] - 8001a22: 6d9b ldr r3, [r3, #88] ; 0x58 - 8001a24: 2b00 cmp r3, #0 - 8001a26: d109 bne.n 8001a3c + 800182c: 687b ldr r3, [r7, #4] + 800182e: 6d9b ldr r3, [r3, #88] ; 0x58 + 8001830: 2b00 cmp r3, #0 + 8001832: d109 bne.n 8001848 /* Init the low level hardware */ hadc->MspInitCallback(hadc); #else /* Init the low level hardware */ HAL_ADC_MspInit(hadc); - 8001a28: 6878 ldr r0, [r7, #4] - 8001a2a: f7ff fdf9 bl 8001620 + 8001834: 6878 ldr r0, [r7, #4] + 8001836: f7ff fdf9 bl 800142c #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ /* Set ADC error code to none */ ADC_CLEAR_ERRORCODE(hadc); - 8001a2e: 687b ldr r3, [r7, #4] - 8001a30: 2200 movs r2, #0 - 8001a32: 65da str r2, [r3, #92] ; 0x5c + 800183a: 687b ldr r3, [r7, #4] + 800183c: 2200 movs r2, #0 + 800183e: 65da str r2, [r3, #92] ; 0x5c /* Initialize Lock */ hadc->Lock = HAL_UNLOCKED; - 8001a34: 687b ldr r3, [r7, #4] - 8001a36: 2200 movs r2, #0 - 8001a38: f883 2054 strb.w r2, [r3, #84] ; 0x54 + 8001840: 687b ldr r3, [r7, #4] + 8001842: 2200 movs r2, #0 + 8001844: f883 2054 strb.w r2, [r3, #84] ; 0x54 } if (LL_ADC_IsInternalRegulatorEnabled(hadc->Instance) == 0UL) - 8001a3c: 687b ldr r3, [r7, #4] - 8001a3e: 681b ldr r3, [r3, #0] - 8001a40: 4618 mov r0, r3 - 8001a42: f7ff ffa2 bl 800198a - 8001a46: 4603 mov r3, r0 - 8001a48: 2b00 cmp r3, #0 - 8001a4a: d115 bne.n 8001a78 + 8001848: 687b ldr r3, [r7, #4] + 800184a: 681b ldr r3, [r3, #0] + 800184c: 4618 mov r0, r3 + 800184e: f7ff ffa2 bl 8001796 + 8001852: 4603 mov r3, r0 + 8001854: 2b00 cmp r3, #0 + 8001856: d115 bne.n 8001884 { /* Enable ADC internal voltage regulator */ LL_ADC_EnableInternalRegulator(hadc->Instance); - 8001a4c: 687b ldr r3, [r7, #4] - 8001a4e: 681b ldr r3, [r3, #0] - 8001a50: 4618 mov r0, r3 - 8001a52: f7ff ff87 bl 8001964 + 8001858: 687b ldr r3, [r7, #4] + 800185a: 681b ldr r3, [r3, #0] + 800185c: 4618 mov r0, r3 + 800185e: f7ff ff87 bl 8001770 /* Delay for ADC stabilization time */ /* Wait loop initialization and execution */ /* Note: Variable divided by 2 to compensate partially */ /* CPU processing cycles, scaling in us split to not */ /* exceed 32 bits register capacity and handle low frequency. */ wait_loop_index = ((LL_ADC_DELAY_INTERNAL_REGUL_STAB_US / 10UL) * ((SystemCoreClock / (100000UL * 2UL)) + 1UL)); - 8001a56: 4b9e ldr r3, [pc, #632] ; (8001cd0 ) - 8001a58: 681b ldr r3, [r3, #0] - 8001a5a: 099b lsrs r3, r3, #6 - 8001a5c: 4a9d ldr r2, [pc, #628] ; (8001cd4 ) - 8001a5e: fba2 2303 umull r2, r3, r2, r3 - 8001a62: 099b lsrs r3, r3, #6 - 8001a64: 3301 adds r3, #1 - 8001a66: 005b lsls r3, r3, #1 - 8001a68: 60fb str r3, [r7, #12] + 8001862: 4b9e ldr r3, [pc, #632] ; (8001adc ) + 8001864: 681b ldr r3, [r3, #0] + 8001866: 099b lsrs r3, r3, #6 + 8001868: 4a9d ldr r2, [pc, #628] ; (8001ae0 ) + 800186a: fba2 2303 umull r2, r3, r2, r3 + 800186e: 099b lsrs r3, r3, #6 + 8001870: 3301 adds r3, #1 + 8001872: 005b lsls r3, r3, #1 + 8001874: 60fb str r3, [r7, #12] while (wait_loop_index != 0UL) - 8001a6a: e002 b.n 8001a72 + 8001876: e002 b.n 800187e { wait_loop_index--; - 8001a6c: 68fb ldr r3, [r7, #12] - 8001a6e: 3b01 subs r3, #1 - 8001a70: 60fb str r3, [r7, #12] + 8001878: 68fb ldr r3, [r7, #12] + 800187a: 3b01 subs r3, #1 + 800187c: 60fb str r3, [r7, #12] while (wait_loop_index != 0UL) - 8001a72: 68fb ldr r3, [r7, #12] - 8001a74: 2b00 cmp r3, #0 - 8001a76: d1f9 bne.n 8001a6c + 800187e: 68fb ldr r3, [r7, #12] + 8001880: 2b00 cmp r3, #0 + 8001882: d1f9 bne.n 8001878 } /* Verification that ADC voltage regulator is correctly enabled, whether */ /* or not ADC is coming from state reset (if any potential problem of */ /* clocking, voltage regulator would not be enabled). */ if (LL_ADC_IsInternalRegulatorEnabled(hadc->Instance) == 0UL) - 8001a78: 687b ldr r3, [r7, #4] - 8001a7a: 681b ldr r3, [r3, #0] - 8001a7c: 4618 mov r0, r3 - 8001a7e: f7ff ff84 bl 800198a - 8001a82: 4603 mov r3, r0 - 8001a84: 2b00 cmp r3, #0 - 8001a86: d10d bne.n 8001aa4 + 8001884: 687b ldr r3, [r7, #4] + 8001886: 681b ldr r3, [r3, #0] + 8001888: 4618 mov r0, r3 + 800188a: f7ff ff84 bl 8001796 + 800188e: 4603 mov r3, r0 + 8001890: 2b00 cmp r3, #0 + 8001892: d10d bne.n 80018b0 { /* Update ADC state machine to error */ SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); - 8001a88: 687b ldr r3, [r7, #4] - 8001a8a: 6d9b ldr r3, [r3, #88] ; 0x58 - 8001a8c: f043 0210 orr.w r2, r3, #16 - 8001a90: 687b ldr r3, [r7, #4] - 8001a92: 659a str r2, [r3, #88] ; 0x58 + 8001894: 687b ldr r3, [r7, #4] + 8001896: 6d9b ldr r3, [r3, #88] ; 0x58 + 8001898: f043 0210 orr.w r2, r3, #16 + 800189c: 687b ldr r3, [r7, #4] + 800189e: 659a str r2, [r3, #88] ; 0x58 /* Set ADC error code to ADC peripheral internal error */ SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); - 8001a94: 687b ldr r3, [r7, #4] - 8001a96: 6ddb ldr r3, [r3, #92] ; 0x5c - 8001a98: f043 0201 orr.w r2, r3, #1 - 8001a9c: 687b ldr r3, [r7, #4] - 8001a9e: 65da str r2, [r3, #92] ; 0x5c + 80018a0: 687b ldr r3, [r7, #4] + 80018a2: 6ddb ldr r3, [r3, #92] ; 0x5c + 80018a4: f043 0201 orr.w r2, r3, #1 + 80018a8: 687b ldr r3, [r7, #4] + 80018aa: 65da str r2, [r3, #92] ; 0x5c tmp_hal_status = HAL_ERROR; - 8001aa0: 2301 movs r3, #1 - 8001aa2: 77fb strb r3, [r7, #31] + 80018ac: 2301 movs r3, #1 + 80018ae: 77fb strb r3, [r7, #31] /* Configuration of ADC parameters if previous preliminary actions are */ /* correctly completed and if there is no conversion on going on regular */ /* group (ADC may already be enabled at this point if HAL_ADC_Init() is */ /* called to update a parameter on the fly). */ tmp_adc_reg_is_conversion_on_going = LL_ADC_REG_IsConversionOngoing(hadc->Instance); - 8001aa4: 687b ldr r3, [r7, #4] - 8001aa6: 681b ldr r3, [r3, #0] - 8001aa8: 4618 mov r0, r3 - 8001aaa: f7ff ff93 bl 80019d4 - 8001aae: 6138 str r0, [r7, #16] + 80018b0: 687b ldr r3, [r7, #4] + 80018b2: 681b ldr r3, [r3, #0] + 80018b4: 4618 mov r0, r3 + 80018b6: f7ff ff93 bl 80017e0 + 80018ba: 6138 str r0, [r7, #16] if (((hadc->State & HAL_ADC_STATE_ERROR_INTERNAL) == 0UL) - 8001ab0: 687b ldr r3, [r7, #4] - 8001ab2: 6d9b ldr r3, [r3, #88] ; 0x58 - 8001ab4: f003 0310 and.w r3, r3, #16 - 8001ab8: 2b00 cmp r3, #0 - 8001aba: f040 8124 bne.w 8001d06 + 80018bc: 687b ldr r3, [r7, #4] + 80018be: 6d9b ldr r3, [r3, #88] ; 0x58 + 80018c0: f003 0310 and.w r3, r3, #16 + 80018c4: 2b00 cmp r3, #0 + 80018c6: f040 8124 bne.w 8001b12 && (tmp_adc_reg_is_conversion_on_going == 0UL) - 8001abe: 693b ldr r3, [r7, #16] - 8001ac0: 2b00 cmp r3, #0 - 8001ac2: f040 8120 bne.w 8001d06 + 80018ca: 693b ldr r3, [r7, #16] + 80018cc: 2b00 cmp r3, #0 + 80018ce: f040 8120 bne.w 8001b12 ) { /* Set ADC state */ ADC_STATE_CLR_SET(hadc->State, - 8001ac6: 687b ldr r3, [r7, #4] - 8001ac8: 6d9b ldr r3, [r3, #88] ; 0x58 - 8001aca: f423 7381 bic.w r3, r3, #258 ; 0x102 - 8001ace: f043 0202 orr.w r2, r3, #2 - 8001ad2: 687b ldr r3, [r7, #4] - 8001ad4: 659a str r2, [r3, #88] ; 0x58 + 80018d2: 687b ldr r3, [r7, #4] + 80018d4: 6d9b ldr r3, [r3, #88] ; 0x58 + 80018d6: f423 7381 bic.w r3, r3, #258 ; 0x102 + 80018da: f043 0202 orr.w r2, r3, #2 + 80018de: 687b ldr r3, [r7, #4] + 80018e0: 659a str r2, [r3, #88] ; 0x58 /* - DMA continuous request */ /* - Trigger frequency mode */ /* Note: If low power mode AutoPowerOff is enabled, ADC enable */ /* and disable phases are performed automatically by hardware */ /* (in this case, flag ADC_FLAG_RDY is not set). */ if (LL_ADC_IsEnabled(hadc->Instance) == 0UL) - 8001ad6: 687b ldr r3, [r7, #4] - 8001ad8: 681b ldr r3, [r3, #0] - 8001ada: 4618 mov r0, r3 - 8001adc: f7ff ff68 bl 80019b0 - 8001ae0: 4603 mov r3, r0 - 8001ae2: 2b00 cmp r3, #0 - 8001ae4: f040 80a7 bne.w 8001c36 + 80018e2: 687b ldr r3, [r7, #4] + 80018e4: 681b ldr r3, [r3, #0] + 80018e6: 4618 mov r0, r3 + 80018e8: f7ff ff68 bl 80017bc + 80018ec: 4603 mov r3, r0 + 80018ee: 2b00 cmp r3, #0 + 80018f0: f040 80a7 bne.w 8001a42 /* without needing to reconfigure all other ADC groups/channels */ /* parameters): */ /* - internal measurement paths (VrefInt, ...) */ /* (set into HAL_ADC_ConfigChannel() ) */ tmpCFGR1 |= (hadc->Init.Resolution | - 8001ae8: 687b ldr r3, [r7, #4] - 8001aea: 689a ldr r2, [r3, #8] + 80018f4: 687b ldr r3, [r7, #4] + 80018f6: 689a ldr r2, [r3, #8] ADC_CFGR1_AUTOWAIT((uint32_t)hadc->Init.LowPowerAutoWait) | - 8001aec: 687b ldr r3, [r7, #4] - 8001aee: 7e1b ldrb r3, [r3, #24] - 8001af0: 039b lsls r3, r3, #14 + 80018f8: 687b ldr r3, [r7, #4] + 80018fa: 7e1b ldrb r3, [r3, #24] + 80018fc: 039b lsls r3, r3, #14 tmpCFGR1 |= (hadc->Init.Resolution | - 8001af2: 431a orrs r2, r3 + 80018fe: 431a orrs r2, r3 ADC_CFGR1_AUTOOFF((uint32_t)hadc->Init.LowPowerAutoPowerOff) | - 8001af4: 687b ldr r3, [r7, #4] - 8001af6: 7e5b ldrb r3, [r3, #25] - 8001af8: 03db lsls r3, r3, #15 + 8001900: 687b ldr r3, [r7, #4] + 8001902: 7e5b ldrb r3, [r3, #25] + 8001904: 03db lsls r3, r3, #15 ADC_CFGR1_AUTOWAIT((uint32_t)hadc->Init.LowPowerAutoWait) | - 8001afa: 431a orrs r2, r3 + 8001906: 431a orrs r2, r3 ADC_CFGR1_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode) | - 8001afc: 687b ldr r3, [r7, #4] - 8001afe: 7e9b ldrb r3, [r3, #26] - 8001b00: 035b lsls r3, r3, #13 + 8001908: 687b ldr r3, [r7, #4] + 800190a: 7e9b ldrb r3, [r3, #26] + 800190c: 035b lsls r3, r3, #13 ADC_CFGR1_AUTOOFF((uint32_t)hadc->Init.LowPowerAutoPowerOff) | - 8001b02: 4313 orrs r3, r2 + 800190e: 4313 orrs r3, r2 ADC_CFGR1_OVERRUN(hadc->Init.Overrun) | - 8001b04: 687a ldr r2, [r7, #4] - 8001b06: 6b12 ldr r2, [r2, #48] ; 0x30 - 8001b08: 2a00 cmp r2, #0 - 8001b0a: d002 beq.n 8001b12 - 8001b0c: f44f 5280 mov.w r2, #4096 ; 0x1000 - 8001b10: e000 b.n 8001b14 - 8001b12: 2200 movs r2, #0 + 8001910: 687a ldr r2, [r7, #4] + 8001912: 6b12 ldr r2, [r2, #48] ; 0x30 + 8001914: 2a00 cmp r2, #0 + 8001916: d002 beq.n 800191e + 8001918: f44f 5280 mov.w r2, #4096 ; 0x1000 + 800191c: e000 b.n 8001920 + 800191e: 2200 movs r2, #0 ADC_CFGR1_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode) | - 8001b14: 431a orrs r2, r3 + 8001920: 431a orrs r2, r3 hadc->Init.DataAlign | - 8001b16: 687b ldr r3, [r7, #4] - 8001b18: 68db ldr r3, [r3, #12] + 8001922: 687b ldr r3, [r7, #4] + 8001924: 68db ldr r3, [r3, #12] ADC_CFGR1_OVERRUN(hadc->Init.Overrun) | - 8001b1a: 431a orrs r2, r3 + 8001926: 431a orrs r2, r3 ADC_SCAN_SEQ_MODE(hadc->Init.ScanConvMode) | - 8001b1c: 687b ldr r3, [r7, #4] - 8001b1e: 691b ldr r3, [r3, #16] - 8001b20: 2b00 cmp r3, #0 - 8001b22: da04 bge.n 8001b2e - 8001b24: 687b ldr r3, [r7, #4] - 8001b26: 691b ldr r3, [r3, #16] - 8001b28: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 - 8001b2c: e001 b.n 8001b32 - 8001b2e: f44f 1300 mov.w r3, #2097152 ; 0x200000 + 8001928: 687b ldr r3, [r7, #4] + 800192a: 691b ldr r3, [r3, #16] + 800192c: 2b00 cmp r3, #0 + 800192e: da04 bge.n 800193a + 8001930: 687b ldr r3, [r7, #4] + 8001932: 691b ldr r3, [r3, #16] + 8001934: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 + 8001938: e001 b.n 800193e + 800193a: f44f 1300 mov.w r3, #2097152 ; 0x200000 hadc->Init.DataAlign | - 8001b32: 431a orrs r2, r3 + 800193e: 431a orrs r2, r3 ADC_CFGR1_DMACONTREQ((uint32_t)hadc->Init.DMAContinuousRequests)); - 8001b34: 687b ldr r3, [r7, #4] - 8001b36: f893 302c ldrb.w r3, [r3, #44] ; 0x2c - 8001b3a: 005b lsls r3, r3, #1 + 8001940: 687b ldr r3, [r7, #4] + 8001942: f893 302c ldrb.w r3, [r3, #44] ; 0x2c + 8001946: 005b lsls r3, r3, #1 ADC_SCAN_SEQ_MODE(hadc->Init.ScanConvMode) | - 8001b3c: 4313 orrs r3, r2 + 8001948: 4313 orrs r3, r2 tmpCFGR1 |= (hadc->Init.Resolution | - 8001b3e: 69ba ldr r2, [r7, #24] - 8001b40: 4313 orrs r3, r2 - 8001b42: 61bb str r3, [r7, #24] + 800194a: 69ba ldr r2, [r7, #24] + 800194c: 4313 orrs r3, r2 + 800194e: 61bb str r3, [r7, #24] /* Update setting of discontinuous mode only if continuous mode is disabled */ if (hadc->Init.DiscontinuousConvMode == ENABLE) - 8001b44: 687b ldr r3, [r7, #4] - 8001b46: f893 3020 ldrb.w r3, [r3, #32] - 8001b4a: 2b01 cmp r3, #1 - 8001b4c: d114 bne.n 8001b78 + 8001950: 687b ldr r3, [r7, #4] + 8001952: f893 3020 ldrb.w r3, [r3, #32] + 8001956: 2b01 cmp r3, #1 + 8001958: d114 bne.n 8001984 { if (hadc->Init.ContinuousConvMode == DISABLE) - 8001b4e: 687b ldr r3, [r7, #4] - 8001b50: 7e9b ldrb r3, [r3, #26] - 8001b52: 2b00 cmp r3, #0 - 8001b54: d104 bne.n 8001b60 + 800195a: 687b ldr r3, [r7, #4] + 800195c: 7e9b ldrb r3, [r3, #26] + 800195e: 2b00 cmp r3, #0 + 8001960: d104 bne.n 800196c { /* Enable the selected ADC group regular discontinuous mode */ tmpCFGR1 |= ADC_CFGR1_DISCEN; - 8001b56: 69bb ldr r3, [r7, #24] - 8001b58: f443 3380 orr.w r3, r3, #65536 ; 0x10000 - 8001b5c: 61bb str r3, [r7, #24] - 8001b5e: e00b b.n 8001b78 + 8001962: 69bb ldr r3, [r7, #24] + 8001964: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 8001968: 61bb str r3, [r7, #24] + 800196a: e00b b.n 8001984 /* ADC regular group discontinuous was intended to be enabled, */ /* but ADC regular group modes continuous and sequencer discontinuous */ /* cannot be enabled simultaneously. */ /* Update ADC state machine to error */ SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); - 8001b60: 687b ldr r3, [r7, #4] - 8001b62: 6d9b ldr r3, [r3, #88] ; 0x58 - 8001b64: f043 0220 orr.w r2, r3, #32 - 8001b68: 687b ldr r3, [r7, #4] - 8001b6a: 659a str r2, [r3, #88] ; 0x58 + 800196c: 687b ldr r3, [r7, #4] + 800196e: 6d9b ldr r3, [r3, #88] ; 0x58 + 8001970: f043 0220 orr.w r2, r3, #32 + 8001974: 687b ldr r3, [r7, #4] + 8001976: 659a str r2, [r3, #88] ; 0x58 /* Set ADC error code to ADC peripheral internal error */ SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); - 8001b6c: 687b ldr r3, [r7, #4] - 8001b6e: 6ddb ldr r3, [r3, #92] ; 0x5c - 8001b70: f043 0201 orr.w r2, r3, #1 - 8001b74: 687b ldr r3, [r7, #4] - 8001b76: 65da str r2, [r3, #92] ; 0x5c + 8001978: 687b ldr r3, [r7, #4] + 800197a: 6ddb ldr r3, [r3, #92] ; 0x5c + 800197c: f043 0201 orr.w r2, r3, #1 + 8001980: 687b ldr r3, [r7, #4] + 8001982: 65da str r2, [r3, #92] ; 0x5c /* Enable external trigger if trigger selection is different of software */ /* start. */ /* Note: This configuration keeps the hardware feature of parameter */ /* ExternalTrigConvEdge "trigger edge none" equivalent to */ /* software start. */ if (hadc->Init.ExternalTrigConv != ADC_SOFTWARE_START) - 8001b78: 687b ldr r3, [r7, #4] - 8001b7a: 6a5b ldr r3, [r3, #36] ; 0x24 - 8001b7c: 2b00 cmp r3, #0 - 8001b7e: d009 beq.n 8001b94 + 8001984: 687b ldr r3, [r7, #4] + 8001986: 6a5b ldr r3, [r3, #36] ; 0x24 + 8001988: 2b00 cmp r3, #0 + 800198a: d009 beq.n 80019a0 { tmpCFGR1 |= ((hadc->Init.ExternalTrigConv & ADC_CFGR1_EXTSEL) | - 8001b80: 687b ldr r3, [r7, #4] - 8001b82: 6a5b ldr r3, [r3, #36] ; 0x24 - 8001b84: f403 72e0 and.w r2, r3, #448 ; 0x1c0 + 800198c: 687b ldr r3, [r7, #4] + 800198e: 6a5b ldr r3, [r3, #36] ; 0x24 + 8001990: f403 72e0 and.w r2, r3, #448 ; 0x1c0 hadc->Init.ExternalTrigConvEdge); - 8001b88: 687b ldr r3, [r7, #4] - 8001b8a: 6a9b ldr r3, [r3, #40] ; 0x28 + 8001994: 687b ldr r3, [r7, #4] + 8001996: 6a9b ldr r3, [r3, #40] ; 0x28 tmpCFGR1 |= ((hadc->Init.ExternalTrigConv & ADC_CFGR1_EXTSEL) | - 8001b8c: 4313 orrs r3, r2 - 8001b8e: 69ba ldr r2, [r7, #24] - 8001b90: 4313 orrs r3, r2 - 8001b92: 61bb str r3, [r7, #24] + 8001998: 4313 orrs r3, r2 + 800199a: 69ba ldr r2, [r7, #24] + 800199c: 4313 orrs r3, r2 + 800199e: 61bb str r3, [r7, #24] } /* Update ADC configuration register with previous settings */ MODIFY_REG(hadc->Instance->CFGR1, - 8001b94: 687b ldr r3, [r7, #4] - 8001b96: 681b ldr r3, [r3, #0] - 8001b98: 68db ldr r3, [r3, #12] - 8001b9a: f423 33fe bic.w r3, r3, #130048 ; 0x1fc00 - 8001b9e: f423 73ff bic.w r3, r3, #510 ; 0x1fe - 8001ba2: 687a ldr r2, [r7, #4] - 8001ba4: 6812 ldr r2, [r2, #0] - 8001ba6: 69b9 ldr r1, [r7, #24] - 8001ba8: 430b orrs r3, r1 - 8001baa: 60d3 str r3, [r2, #12] + 80019a0: 687b ldr r3, [r7, #4] + 80019a2: 681b ldr r3, [r3, #0] + 80019a4: 68db ldr r3, [r3, #12] + 80019a6: f423 33fe bic.w r3, r3, #130048 ; 0x1fc00 + 80019aa: f423 73ff bic.w r3, r3, #510 ; 0x1fe + 80019ae: 687a ldr r2, [r7, #4] + 80019b0: 6812 ldr r2, [r2, #0] + 80019b2: 69b9 ldr r1, [r7, #24] + 80019b4: 430b orrs r3, r1 + 80019b6: 60d3 str r3, [r2, #12] ADC_CFGR1_ALIGN | ADC_CFGR1_SCANDIR | ADC_CFGR1_DMACFG, tmpCFGR1); tmpCFGR2 |= ((hadc->Init.ClockPrescaler & ADC_CFGR2_CKMODE) | - 8001bac: 687b ldr r3, [r7, #4] - 8001bae: 685b ldr r3, [r3, #4] - 8001bb0: f003 4240 and.w r2, r3, #3221225472 ; 0xc0000000 + 80019b8: 687b ldr r3, [r7, #4] + 80019ba: 685b ldr r3, [r3, #4] + 80019bc: f003 4240 and.w r2, r3, #3221225472 ; 0xc0000000 hadc->Init.TriggerFrequencyMode - 8001bb4: 687b ldr r3, [r7, #4] - 8001bb6: 6cdb ldr r3, [r3, #76] ; 0x4c + 80019c0: 687b ldr r3, [r7, #4] + 80019c2: 6cdb ldr r3, [r3, #76] ; 0x4c tmpCFGR2 |= ((hadc->Init.ClockPrescaler & ADC_CFGR2_CKMODE) | - 8001bb8: 4313 orrs r3, r2 - 8001bba: 697a ldr r2, [r7, #20] - 8001bbc: 4313 orrs r3, r2 - 8001bbe: 617b str r3, [r7, #20] + 80019c4: 4313 orrs r3, r2 + 80019c6: 697a ldr r2, [r7, #20] + 80019c8: 4313 orrs r3, r2 + 80019ca: 617b str r3, [r7, #20] ); if (hadc->Init.OversamplingMode == ENABLE) - 8001bc0: 687b ldr r3, [r7, #4] - 8001bc2: f893 303c ldrb.w r3, [r3, #60] ; 0x3c - 8001bc6: 2b01 cmp r3, #1 - 8001bc8: d111 bne.n 8001bee + 80019cc: 687b ldr r3, [r7, #4] + 80019ce: f893 303c ldrb.w r3, [r3, #60] ; 0x3c + 80019d2: 2b01 cmp r3, #1 + 80019d4: d111 bne.n 80019fa { tmpCFGR2 |= (ADC_CFGR2_OVSE | (hadc->Init.ClockPrescaler & ADC_CFGR2_CKMODE) | - 8001bca: 687b ldr r3, [r7, #4] - 8001bcc: 685b ldr r3, [r3, #4] - 8001bce: f003 4240 and.w r2, r3, #3221225472 ; 0xc0000000 + 80019d6: 687b ldr r3, [r7, #4] + 80019d8: 685b ldr r3, [r3, #4] + 80019da: f003 4240 and.w r2, r3, #3221225472 ; 0xc0000000 hadc->Init.Oversampling.Ratio | - 8001bd2: 687b ldr r3, [r7, #4] - 8001bd4: 6c1b ldr r3, [r3, #64] ; 0x40 + 80019de: 687b ldr r3, [r7, #4] + 80019e0: 6c1b ldr r3, [r3, #64] ; 0x40 (hadc->Init.ClockPrescaler & ADC_CFGR2_CKMODE) | - 8001bd6: 431a orrs r2, r3 + 80019e2: 431a orrs r2, r3 hadc->Init.Oversampling.RightBitShift | - 8001bd8: 687b ldr r3, [r7, #4] - 8001bda: 6c5b ldr r3, [r3, #68] ; 0x44 + 80019e4: 687b ldr r3, [r7, #4] + 80019e6: 6c5b ldr r3, [r3, #68] ; 0x44 hadc->Init.Oversampling.Ratio | - 8001bdc: 431a orrs r2, r3 + 80019e8: 431a orrs r2, r3 hadc->Init.Oversampling.TriggeredMode - 8001bde: 687b ldr r3, [r7, #4] - 8001be0: 6c9b ldr r3, [r3, #72] ; 0x48 + 80019ea: 687b ldr r3, [r7, #4] + 80019ec: 6c9b ldr r3, [r3, #72] ; 0x48 hadc->Init.Oversampling.RightBitShift | - 8001be2: 431a orrs r2, r3 + 80019ee: 431a orrs r2, r3 tmpCFGR2 |= (ADC_CFGR2_OVSE | - 8001be4: 697b ldr r3, [r7, #20] - 8001be6: 4313 orrs r3, r2 - 8001be8: f043 0301 orr.w r3, r3, #1 - 8001bec: 617b str r3, [r7, #20] + 80019f0: 697b ldr r3, [r7, #20] + 80019f2: 4313 orrs r3, r2 + 80019f4: f043 0301 orr.w r3, r3, #1 + 80019f8: 617b str r3, [r7, #20] ); } MODIFY_REG(hadc->Instance->CFGR2, - 8001bee: 687b ldr r3, [r7, #4] - 8001bf0: 681b ldr r3, [r3, #0] - 8001bf2: 691a ldr r2, [r3, #16] - 8001bf4: 4b38 ldr r3, [pc, #224] ; (8001cd8 ) - 8001bf6: 4013 ands r3, r2 - 8001bf8: 687a ldr r2, [r7, #4] - 8001bfa: 6812 ldr r2, [r2, #0] - 8001bfc: 6979 ldr r1, [r7, #20] - 8001bfe: 430b orrs r3, r1 - 8001c00: 6113 str r3, [r2, #16] + 80019fa: 687b ldr r3, [r7, #4] + 80019fc: 681b ldr r3, [r3, #0] + 80019fe: 691a ldr r2, [r3, #16] + 8001a00: 4b38 ldr r3, [pc, #224] ; (8001ae4 ) + 8001a02: 4013 ands r3, r2 + 8001a04: 687a ldr r2, [r7, #4] + 8001a06: 6812 ldr r2, [r2, #0] + 8001a08: 6979 ldr r1, [r7, #20] + 8001a0a: 430b orrs r3, r1 + 8001a0c: 6113 str r3, [r2, #16] ADC_CFGR2_TOVS, tmpCFGR2); /* Configuration of ADC clock mode: asynchronous clock source */ /* with selectable prescaler. */ if (((hadc->Init.ClockPrescaler) != ADC_CLOCK_SYNC_PCLK_DIV1) && - 8001c02: 687b ldr r3, [r7, #4] - 8001c04: 685b ldr r3, [r3, #4] - 8001c06: f1b3 4f40 cmp.w r3, #3221225472 ; 0xc0000000 - 8001c0a: d014 beq.n 8001c36 + 8001a0e: 687b ldr r3, [r7, #4] + 8001a10: 685b ldr r3, [r3, #4] + 8001a12: f1b3 4f40 cmp.w r3, #3221225472 ; 0xc0000000 + 8001a16: d014 beq.n 8001a42 ((hadc->Init.ClockPrescaler) != ADC_CLOCK_SYNC_PCLK_DIV2) && - 8001c0c: 687b ldr r3, [r7, #4] - 8001c0e: 685b ldr r3, [r3, #4] + 8001a18: 687b ldr r3, [r7, #4] + 8001a1a: 685b ldr r3, [r3, #4] if (((hadc->Init.ClockPrescaler) != ADC_CLOCK_SYNC_PCLK_DIV1) && - 8001c10: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 - 8001c14: d00f beq.n 8001c36 + 8001a1c: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 + 8001a20: d00f beq.n 8001a42 ((hadc->Init.ClockPrescaler) != ADC_CLOCK_SYNC_PCLK_DIV4)) - 8001c16: 687b ldr r3, [r7, #4] - 8001c18: 685b ldr r3, [r3, #4] + 8001a22: 687b ldr r3, [r7, #4] + 8001a24: 685b ldr r3, [r3, #4] ((hadc->Init.ClockPrescaler) != ADC_CLOCK_SYNC_PCLK_DIV2) && - 8001c1a: f1b3 4f00 cmp.w r3, #2147483648 ; 0x80000000 - 8001c1e: d00a beq.n 8001c36 + 8001a26: f1b3 4f00 cmp.w r3, #2147483648 ; 0x80000000 + 8001a2a: d00a beq.n 8001a42 { MODIFY_REG(ADC_COMMON->CCR, - 8001c20: 4b2e ldr r3, [pc, #184] ; (8001cdc ) - 8001c22: 681b ldr r3, [r3, #0] - 8001c24: f423 1270 bic.w r2, r3, #3932160 ; 0x3c0000 - 8001c28: 687b ldr r3, [r7, #4] - 8001c2a: 685b ldr r3, [r3, #4] - 8001c2c: f403 1370 and.w r3, r3, #3932160 ; 0x3c0000 - 8001c30: 492a ldr r1, [pc, #168] ; (8001cdc ) - 8001c32: 4313 orrs r3, r2 - 8001c34: 600b str r3, [r1, #0] + 8001a2c: 4b2e ldr r3, [pc, #184] ; (8001ae8 ) + 8001a2e: 681b ldr r3, [r3, #0] + 8001a30: f423 1270 bic.w r2, r3, #3932160 ; 0x3c0000 + 8001a34: 687b ldr r3, [r7, #4] + 8001a36: 685b ldr r3, [r3, #4] + 8001a38: f403 1370 and.w r3, r3, #3932160 ; 0x3c0000 + 8001a3c: 492a ldr r1, [pc, #168] ; (8001ae8 ) + 8001a3e: 4313 orrs r3, r2 + 8001a40: 600b str r3, [r1, #0] hadc->Init.ClockPrescaler & ADC_CCR_PRESC); } } /* Channel sampling time configuration */ LL_ADC_SetSamplingTimeCommonChannels(hadc->Instance, LL_ADC_SAMPLINGTIME_COMMON_1, hadc->Init.SamplingTimeCommon1); - 8001c36: 687b ldr r3, [r7, #4] - 8001c38: 6818 ldr r0, [r3, #0] - 8001c3a: 687b ldr r3, [r7, #4] - 8001c3c: 6b5b ldr r3, [r3, #52] ; 0x34 - 8001c3e: 461a mov r2, r3 - 8001c40: 2100 movs r1, #0 - 8001c42: f7ff fe59 bl 80018f8 + 8001a42: 687b ldr r3, [r7, #4] + 8001a44: 6818 ldr r0, [r3, #0] + 8001a46: 687b ldr r3, [r7, #4] + 8001a48: 6b5b ldr r3, [r3, #52] ; 0x34 + 8001a4a: 461a mov r2, r3 + 8001a4c: 2100 movs r1, #0 + 8001a4e: f7ff fe59 bl 8001704 LL_ADC_SetSamplingTimeCommonChannels(hadc->Instance, LL_ADC_SAMPLINGTIME_COMMON_2, hadc->Init.SamplingTimeCommon2); - 8001c46: 687b ldr r3, [r7, #4] - 8001c48: 6818 ldr r0, [r3, #0] - 8001c4a: 687b ldr r3, [r7, #4] - 8001c4c: 6b9b ldr r3, [r3, #56] ; 0x38 - 8001c4e: 461a mov r2, r3 - 8001c50: 4923 ldr r1, [pc, #140] ; (8001ce0 ) - 8001c52: f7ff fe51 bl 80018f8 + 8001a52: 687b ldr r3, [r7, #4] + 8001a54: 6818 ldr r0, [r3, #0] + 8001a56: 687b ldr r3, [r7, #4] + 8001a58: 6b9b ldr r3, [r3, #56] ; 0x38 + 8001a5a: 461a mov r2, r3 + 8001a5c: 4923 ldr r1, [pc, #140] ; (8001aec ) + 8001a5e: f7ff fe51 bl 8001704 /* emulated by software for alignment over all STM32 devices. */ /* - if scan mode is enabled, regular channels sequence length is set to */ /* parameter "NbrOfConversion". */ /* Channels must be configured into each rank using function */ /* "HAL_ADC_ConfigChannel()". */ if (hadc->Init.ScanConvMode == ADC_SCAN_DISABLE) - 8001c56: 687b ldr r3, [r7, #4] - 8001c58: 691b ldr r3, [r3, #16] - 8001c5a: 2b00 cmp r3, #0 - 8001c5c: d108 bne.n 8001c70 + 8001a62: 687b ldr r3, [r7, #4] + 8001a64: 691b ldr r3, [r3, #16] + 8001a66: 2b00 cmp r3, #0 + 8001a68: d108 bne.n 8001a7c { /* Set sequencer scan length by clearing ranks above rank 1 */ /* and do not modify rank 1 value. */ SET_BIT(hadc->Instance->CHSELR, - 8001c5e: 687b ldr r3, [r7, #4] - 8001c60: 681b ldr r3, [r3, #0] - 8001c62: 6a9a ldr r2, [r3, #40] ; 0x28 - 8001c64: 687b ldr r3, [r7, #4] - 8001c66: 681b ldr r3, [r3, #0] - 8001c68: f062 020f orn r2, r2, #15 - 8001c6c: 629a str r2, [r3, #40] ; 0x28 - 8001c6e: e017 b.n 8001ca0 + 8001a6a: 687b ldr r3, [r7, #4] + 8001a6c: 681b ldr r3, [r3, #0] + 8001a6e: 6a9a ldr r2, [r3, #40] ; 0x28 + 8001a70: 687b ldr r3, [r7, #4] + 8001a72: 681b ldr r3, [r3, #0] + 8001a74: f062 020f orn r2, r2, #15 + 8001a78: 629a str r2, [r3, #40] ; 0x28 + 8001a7a: e017 b.n 8001aac ADC_CHSELR_SQ2_TO_SQ8); } else if (hadc->Init.ScanConvMode == ADC_SCAN_ENABLE) - 8001c70: 687b ldr r3, [r7, #4] - 8001c72: 691b ldr r3, [r3, #16] - 8001c74: f5b3 1f00 cmp.w r3, #2097152 ; 0x200000 - 8001c78: d112 bne.n 8001ca0 + 8001a7c: 687b ldr r3, [r7, #4] + 8001a7e: 691b ldr r3, [r3, #16] + 8001a80: f5b3 1f00 cmp.w r3, #2097152 ; 0x200000 + 8001a84: d112 bne.n 8001aac /* therefore after the first call of "HAL_ADC_Init()", */ /* each rank corresponding to parameter "NbrOfConversion" */ /* must be set using "HAL_ADC_ConfigChannel()". */ /* - Set sequencer scan length by clearing ranks above maximum rank */ /* and do not modify other ranks value. */ MODIFY_REG(hadc->Instance->CHSELR, - 8001c7a: 687b ldr r3, [r7, #4] - 8001c7c: 681b ldr r3, [r3, #0] - 8001c7e: 6a9b ldr r3, [r3, #40] ; 0x28 - 8001c80: 687b ldr r3, [r7, #4] - 8001c82: 69db ldr r3, [r3, #28] - 8001c84: 3b01 subs r3, #1 - 8001c86: 009b lsls r3, r3, #2 - 8001c88: f003 031c and.w r3, r3, #28 - 8001c8c: f06f 020f mvn.w r2, #15 - 8001c90: fa02 f103 lsl.w r1, r2, r3 - 8001c94: 687b ldr r3, [r7, #4] - 8001c96: 6e1a ldr r2, [r3, #96] ; 0x60 - 8001c98: 687b ldr r3, [r7, #4] - 8001c9a: 681b ldr r3, [r3, #0] - 8001c9c: 430a orrs r2, r1 - 8001c9e: 629a str r2, [r3, #40] ; 0x28 + 8001a86: 687b ldr r3, [r7, #4] + 8001a88: 681b ldr r3, [r3, #0] + 8001a8a: 6a9b ldr r3, [r3, #40] ; 0x28 + 8001a8c: 687b ldr r3, [r7, #4] + 8001a8e: 69db ldr r3, [r3, #28] + 8001a90: 3b01 subs r3, #1 + 8001a92: 009b lsls r3, r3, #2 + 8001a94: f003 031c and.w r3, r3, #28 + 8001a98: f06f 020f mvn.w r2, #15 + 8001a9c: fa02 f103 lsl.w r1, r2, r3 + 8001aa0: 687b ldr r3, [r7, #4] + 8001aa2: 6e1a ldr r2, [r3, #96] ; 0x60 + 8001aa4: 687b ldr r3, [r7, #4] + 8001aa6: 681b ldr r3, [r3, #0] + 8001aa8: 430a orrs r2, r1 + 8001aaa: 629a str r2, [r3, #40] ; 0x28 ); } /* Check back that ADC registers have effectively been configured to */ /* ensure of no potential problem of ADC core peripheral clocking. */ if(LL_ADC_GetSamplingTimeCommonChannels(hadc->Instance, LL_ADC_SAMPLINGTIME_COMMON_1) - 8001ca0: 687b ldr r3, [r7, #4] - 8001ca2: 681b ldr r3, [r3, #0] - 8001ca4: 2100 movs r1, #0 - 8001ca6: 4618 mov r0, r3 - 8001ca8: f7ff fe44 bl 8001934 - 8001cac: 4602 mov r2, r0 + 8001aac: 687b ldr r3, [r7, #4] + 8001aae: 681b ldr r3, [r3, #0] + 8001ab0: 2100 movs r1, #0 + 8001ab2: 4618 mov r0, r3 + 8001ab4: f7ff fe44 bl 8001740 + 8001ab8: 4602 mov r2, r0 == hadc->Init.SamplingTimeCommon1) - 8001cae: 687b ldr r3, [r7, #4] - 8001cb0: 6b5b ldr r3, [r3, #52] ; 0x34 + 8001aba: 687b ldr r3, [r7, #4] + 8001abc: 6b5b ldr r3, [r3, #52] ; 0x34 if(LL_ADC_GetSamplingTimeCommonChannels(hadc->Instance, LL_ADC_SAMPLINGTIME_COMMON_1) - 8001cb2: 429a cmp r2, r3 - 8001cb4: d116 bne.n 8001ce4 + 8001abe: 429a cmp r2, r3 + 8001ac0: d116 bne.n 8001af0 { /* Set ADC error code to none */ ADC_CLEAR_ERRORCODE(hadc); - 8001cb6: 687b ldr r3, [r7, #4] - 8001cb8: 2200 movs r2, #0 - 8001cba: 65da str r2, [r3, #92] ; 0x5c + 8001ac2: 687b ldr r3, [r7, #4] + 8001ac4: 2200 movs r2, #0 + 8001ac6: 65da str r2, [r3, #92] ; 0x5c /* Set the ADC state */ ADC_STATE_CLR_SET(hadc->State, - 8001cbc: 687b ldr r3, [r7, #4] - 8001cbe: 6d9b ldr r3, [r3, #88] ; 0x58 - 8001cc0: f023 0303 bic.w r3, r3, #3 - 8001cc4: f043 0201 orr.w r2, r3, #1 - 8001cc8: 687b ldr r3, [r7, #4] - 8001cca: 659a str r2, [r3, #88] ; 0x58 + 8001ac8: 687b ldr r3, [r7, #4] + 8001aca: 6d9b ldr r3, [r3, #88] ; 0x58 + 8001acc: f023 0303 bic.w r3, r3, #3 + 8001ad0: f043 0201 orr.w r2, r3, #1 + 8001ad4: 687b ldr r3, [r7, #4] + 8001ad6: 659a str r2, [r3, #88] ; 0x58 if(LL_ADC_GetSamplingTimeCommonChannels(hadc->Instance, LL_ADC_SAMPLINGTIME_COMMON_1) - 8001ccc: e023 b.n 8001d16 - 8001cce: bf00 nop - 8001cd0: 20000008 .word 0x20000008 - 8001cd4: 053e2d63 .word 0x053e2d63 - 8001cd8: 1ffffc02 .word 0x1ffffc02 - 8001cdc: 40012708 .word 0x40012708 - 8001ce0: 03ffff04 .word 0x03ffff04 + 8001ad8: e023 b.n 8001b22 + 8001ada: bf00 nop + 8001adc: 20000000 .word 0x20000000 + 8001ae0: 053e2d63 .word 0x053e2d63 + 8001ae4: 1ffffc02 .word 0x1ffffc02 + 8001ae8: 40012708 .word 0x40012708 + 8001aec: 03ffff04 .word 0x03ffff04 HAL_ADC_STATE_READY); } else { /* Update ADC state machine to error */ ADC_STATE_CLR_SET(hadc->State, - 8001ce4: 687b ldr r3, [r7, #4] - 8001ce6: 6d9b ldr r3, [r3, #88] ; 0x58 - 8001ce8: f023 0312 bic.w r3, r3, #18 - 8001cec: f043 0210 orr.w r2, r3, #16 - 8001cf0: 687b ldr r3, [r7, #4] - 8001cf2: 659a str r2, [r3, #88] ; 0x58 + 8001af0: 687b ldr r3, [r7, #4] + 8001af2: 6d9b ldr r3, [r3, #88] ; 0x58 + 8001af4: f023 0312 bic.w r3, r3, #18 + 8001af8: f043 0210 orr.w r2, r3, #16 + 8001afc: 687b ldr r3, [r7, #4] + 8001afe: 659a str r2, [r3, #88] ; 0x58 HAL_ADC_STATE_BUSY_INTERNAL, HAL_ADC_STATE_ERROR_INTERNAL); /* Set ADC error code to ADC peripheral internal error */ SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); - 8001cf4: 687b ldr r3, [r7, #4] - 8001cf6: 6ddb ldr r3, [r3, #92] ; 0x5c - 8001cf8: f043 0201 orr.w r2, r3, #1 - 8001cfc: 687b ldr r3, [r7, #4] - 8001cfe: 65da str r2, [r3, #92] ; 0x5c + 8001b00: 687b ldr r3, [r7, #4] + 8001b02: 6ddb ldr r3, [r3, #92] ; 0x5c + 8001b04: f043 0201 orr.w r2, r3, #1 + 8001b08: 687b ldr r3, [r7, #4] + 8001b0a: 65da str r2, [r3, #92] ; 0x5c tmp_hal_status = HAL_ERROR; - 8001d00: 2301 movs r3, #1 - 8001d02: 77fb strb r3, [r7, #31] + 8001b0c: 2301 movs r3, #1 + 8001b0e: 77fb strb r3, [r7, #31] if(LL_ADC_GetSamplingTimeCommonChannels(hadc->Instance, LL_ADC_SAMPLINGTIME_COMMON_1) - 8001d04: e007 b.n 8001d16 + 8001b10: e007 b.n 8001b22 } else { /* Update ADC state machine to error */ SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); - 8001d06: 687b ldr r3, [r7, #4] - 8001d08: 6d9b ldr r3, [r3, #88] ; 0x58 - 8001d0a: f043 0210 orr.w r2, r3, #16 - 8001d0e: 687b ldr r3, [r7, #4] - 8001d10: 659a str r2, [r3, #88] ; 0x58 + 8001b12: 687b ldr r3, [r7, #4] + 8001b14: 6d9b ldr r3, [r3, #88] ; 0x58 + 8001b16: f043 0210 orr.w r2, r3, #16 + 8001b1a: 687b ldr r3, [r7, #4] + 8001b1c: 659a str r2, [r3, #88] ; 0x58 tmp_hal_status = HAL_ERROR; - 8001d12: 2301 movs r3, #1 - 8001d14: 77fb strb r3, [r7, #31] + 8001b1e: 2301 movs r3, #1 + 8001b20: 77fb strb r3, [r7, #31] } return tmp_hal_status; - 8001d16: 7ffb ldrb r3, [r7, #31] + 8001b22: 7ffb ldrb r3, [r7, #31] } - 8001d18: 4618 mov r0, r3 - 8001d1a: 3720 adds r7, #32 - 8001d1c: 46bd mov sp, r7 - 8001d1e: bd80 pop {r7, pc} + 8001b24: 4618 mov r0, r3 + 8001b26: 3720 adds r7, #32 + 8001b28: 46bd mov sp, r7 + 8001b2a: bd80 pop {r7, pc} -08001d20 <__NVIC_SetPriorityGrouping>: +08001b2c <__NVIC_SetPriorityGrouping>: In case of a conflict between priority grouping and available priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. \param [in] PriorityGroup Priority grouping field. */ __STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) { - 8001d20: b480 push {r7} - 8001d22: b085 sub sp, #20 - 8001d24: af00 add r7, sp, #0 - 8001d26: 6078 str r0, [r7, #4] + 8001b2c: b480 push {r7} + 8001b2e: b085 sub sp, #20 + 8001b30: af00 add r7, sp, #0 + 8001b32: 6078 str r0, [r7, #4] uint32_t reg_value; uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ - 8001d28: 687b ldr r3, [r7, #4] - 8001d2a: f003 0307 and.w r3, r3, #7 - 8001d2e: 60fb str r3, [r7, #12] + 8001b34: 687b ldr r3, [r7, #4] + 8001b36: f003 0307 and.w r3, r3, #7 + 8001b3a: 60fb str r3, [r7, #12] reg_value = SCB->AIRCR; /* read old register configuration */ - 8001d30: 4b0c ldr r3, [pc, #48] ; (8001d64 <__NVIC_SetPriorityGrouping+0x44>) - 8001d32: 68db ldr r3, [r3, #12] - 8001d34: 60bb str r3, [r7, #8] + 8001b3c: 4b0c ldr r3, [pc, #48] ; (8001b70 <__NVIC_SetPriorityGrouping+0x44>) + 8001b3e: 68db ldr r3, [r3, #12] + 8001b40: 60bb str r3, [r7, #8] reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ - 8001d36: 68ba ldr r2, [r7, #8] - 8001d38: f64f 03ff movw r3, #63743 ; 0xf8ff - 8001d3c: 4013 ands r3, r2 - 8001d3e: 60bb str r3, [r7, #8] + 8001b42: 68ba ldr r2, [r7, #8] + 8001b44: f64f 03ff movw r3, #63743 ; 0xf8ff + 8001b48: 4013 ands r3, r2 + 8001b4a: 60bb str r3, [r7, #8] reg_value = (reg_value | ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ - 8001d40: 68fb ldr r3, [r7, #12] - 8001d42: 021a lsls r2, r3, #8 + 8001b4c: 68fb ldr r3, [r7, #12] + 8001b4e: 021a lsls r2, r3, #8 ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | - 8001d44: 68bb ldr r3, [r7, #8] - 8001d46: 4313 orrs r3, r2 + 8001b50: 68bb ldr r3, [r7, #8] + 8001b52: 4313 orrs r3, r2 reg_value = (reg_value | - 8001d48: f043 63bf orr.w r3, r3, #100139008 ; 0x5f80000 - 8001d4c: f443 3300 orr.w r3, r3, #131072 ; 0x20000 - 8001d50: 60bb str r3, [r7, #8] + 8001b54: f043 63bf orr.w r3, r3, #100139008 ; 0x5f80000 + 8001b58: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 8001b5c: 60bb str r3, [r7, #8] SCB->AIRCR = reg_value; - 8001d52: 4a04 ldr r2, [pc, #16] ; (8001d64 <__NVIC_SetPriorityGrouping+0x44>) - 8001d54: 68bb ldr r3, [r7, #8] - 8001d56: 60d3 str r3, [r2, #12] -} - 8001d58: bf00 nop - 8001d5a: 3714 adds r7, #20 - 8001d5c: 46bd mov sp, r7 - 8001d5e: bc80 pop {r7} - 8001d60: 4770 bx lr - 8001d62: bf00 nop - 8001d64: e000ed00 .word 0xe000ed00 - -08001d68 <__NVIC_GetPriorityGrouping>: + 8001b5e: 4a04 ldr r2, [pc, #16] ; (8001b70 <__NVIC_SetPriorityGrouping+0x44>) + 8001b60: 68bb ldr r3, [r7, #8] + 8001b62: 60d3 str r3, [r2, #12] +} + 8001b64: bf00 nop + 8001b66: 3714 adds r7, #20 + 8001b68: 46bd mov sp, r7 + 8001b6a: bc80 pop {r7} + 8001b6c: 4770 bx lr + 8001b6e: bf00 nop + 8001b70: e000ed00 .word 0xe000ed00 + +08001b74 <__NVIC_GetPriorityGrouping>: \brief Get Priority Grouping \details Reads the priority grouping field from the NVIC Interrupt Controller. \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). */ __STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) { - 8001d68: b480 push {r7} - 8001d6a: af00 add r7, sp, #0 + 8001b74: b480 push {r7} + 8001b76: af00 add r7, sp, #0 return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); - 8001d6c: 4b04 ldr r3, [pc, #16] ; (8001d80 <__NVIC_GetPriorityGrouping+0x18>) - 8001d6e: 68db ldr r3, [r3, #12] - 8001d70: 0a1b lsrs r3, r3, #8 - 8001d72: f003 0307 and.w r3, r3, #7 -} - 8001d76: 4618 mov r0, r3 - 8001d78: 46bd mov sp, r7 - 8001d7a: bc80 pop {r7} - 8001d7c: 4770 bx lr - 8001d7e: bf00 nop - 8001d80: e000ed00 .word 0xe000ed00 - -08001d84 <__NVIC_SetPriority>: + 8001b78: 4b04 ldr r3, [pc, #16] ; (8001b8c <__NVIC_GetPriorityGrouping+0x18>) + 8001b7a: 68db ldr r3, [r3, #12] + 8001b7c: 0a1b lsrs r3, r3, #8 + 8001b7e: f003 0307 and.w r3, r3, #7 +} + 8001b82: 4618 mov r0, r3 + 8001b84: 46bd mov sp, r7 + 8001b86: bc80 pop {r7} + 8001b88: 4770 bx lr + 8001b8a: bf00 nop + 8001b8c: e000ed00 .word 0xe000ed00 + +08001b90 <__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) { - 8001d84: b480 push {r7} - 8001d86: b083 sub sp, #12 - 8001d88: af00 add r7, sp, #0 - 8001d8a: 4603 mov r3, r0 - 8001d8c: 6039 str r1, [r7, #0] - 8001d8e: 71fb strb r3, [r7, #7] + 8001b90: b480 push {r7} + 8001b92: b083 sub sp, #12 + 8001b94: af00 add r7, sp, #0 + 8001b96: 4603 mov r3, r0 + 8001b98: 6039 str r1, [r7, #0] + 8001b9a: 71fb strb r3, [r7, #7] if ((int32_t)(IRQn) >= 0) - 8001d90: f997 3007 ldrsb.w r3, [r7, #7] - 8001d94: 2b00 cmp r3, #0 - 8001d96: db0a blt.n 8001dae <__NVIC_SetPriority+0x2a> + 8001b9c: f997 3007 ldrsb.w r3, [r7, #7] + 8001ba0: 2b00 cmp r3, #0 + 8001ba2: db0a blt.n 8001bba <__NVIC_SetPriority+0x2a> { NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); - 8001d98: 683b ldr r3, [r7, #0] - 8001d9a: b2da uxtb r2, r3 - 8001d9c: 490c ldr r1, [pc, #48] ; (8001dd0 <__NVIC_SetPriority+0x4c>) - 8001d9e: f997 3007 ldrsb.w r3, [r7, #7] - 8001da2: 0112 lsls r2, r2, #4 - 8001da4: b2d2 uxtb r2, r2 - 8001da6: 440b add r3, r1 - 8001da8: f883 2300 strb.w r2, [r3, #768] ; 0x300 + 8001ba4: 683b ldr r3, [r7, #0] + 8001ba6: b2da uxtb r2, r3 + 8001ba8: 490c ldr r1, [pc, #48] ; (8001bdc <__NVIC_SetPriority+0x4c>) + 8001baa: f997 3007 ldrsb.w r3, [r7, #7] + 8001bae: 0112 lsls r2, r2, #4 + 8001bb0: b2d2 uxtb r2, r2 + 8001bb2: 440b add r3, r1 + 8001bb4: f883 2300 strb.w r2, [r3, #768] ; 0x300 } else { SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); } } - 8001dac: e00a b.n 8001dc4 <__NVIC_SetPriority+0x40> + 8001bb8: e00a b.n 8001bd0 <__NVIC_SetPriority+0x40> SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); - 8001dae: 683b ldr r3, [r7, #0] - 8001db0: b2da uxtb r2, r3 - 8001db2: 4908 ldr r1, [pc, #32] ; (8001dd4 <__NVIC_SetPriority+0x50>) - 8001db4: 79fb ldrb r3, [r7, #7] - 8001db6: f003 030f and.w r3, r3, #15 - 8001dba: 3b04 subs r3, #4 - 8001dbc: 0112 lsls r2, r2, #4 - 8001dbe: b2d2 uxtb r2, r2 - 8001dc0: 440b add r3, r1 - 8001dc2: 761a strb r2, [r3, #24] -} - 8001dc4: bf00 nop - 8001dc6: 370c adds r7, #12 - 8001dc8: 46bd mov sp, r7 - 8001dca: bc80 pop {r7} - 8001dcc: 4770 bx lr - 8001dce: bf00 nop - 8001dd0: e000e100 .word 0xe000e100 - 8001dd4: e000ed00 .word 0xe000ed00 - -08001dd8 : + 8001bba: 683b ldr r3, [r7, #0] + 8001bbc: b2da uxtb r2, r3 + 8001bbe: 4908 ldr r1, [pc, #32] ; (8001be0 <__NVIC_SetPriority+0x50>) + 8001bc0: 79fb ldrb r3, [r7, #7] + 8001bc2: f003 030f and.w r3, r3, #15 + 8001bc6: 3b04 subs r3, #4 + 8001bc8: 0112 lsls r2, r2, #4 + 8001bca: b2d2 uxtb r2, r2 + 8001bcc: 440b add r3, r1 + 8001bce: 761a strb r2, [r3, #24] +} + 8001bd0: bf00 nop + 8001bd2: 370c adds r7, #12 + 8001bd4: 46bd mov sp, r7 + 8001bd6: bc80 pop {r7} + 8001bd8: 4770 bx lr + 8001bda: bf00 nop + 8001bdc: e000e100 .word 0xe000e100 + 8001be0: e000ed00 .word 0xe000ed00 + +08001be4 : \param [in] PreemptPriority Preemptive priority value (starting from 0). \param [in] SubPriority Subpriority value (starting from 0). \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). */ __STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) { - 8001dd8: b480 push {r7} - 8001dda: b089 sub sp, #36 ; 0x24 - 8001ddc: af00 add r7, sp, #0 - 8001dde: 60f8 str r0, [r7, #12] - 8001de0: 60b9 str r1, [r7, #8] - 8001de2: 607a str r2, [r7, #4] + 8001be4: b480 push {r7} + 8001be6: b089 sub sp, #36 ; 0x24 + 8001be8: af00 add r7, sp, #0 + 8001bea: 60f8 str r0, [r7, #12] + 8001bec: 60b9 str r1, [r7, #8] + 8001bee: 607a str r2, [r7, #4] uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ - 8001de4: 68fb ldr r3, [r7, #12] - 8001de6: f003 0307 and.w r3, r3, #7 - 8001dea: 61fb str r3, [r7, #28] + 8001bf0: 68fb ldr r3, [r7, #12] + 8001bf2: f003 0307 and.w r3, r3, #7 + 8001bf6: 61fb str r3, [r7, #28] uint32_t PreemptPriorityBits; uint32_t SubPriorityBits; PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); - 8001dec: 69fb ldr r3, [r7, #28] - 8001dee: f1c3 0307 rsb r3, r3, #7 - 8001df2: 2b04 cmp r3, #4 - 8001df4: bf28 it cs - 8001df6: 2304 movcs r3, #4 - 8001df8: 61bb str r3, [r7, #24] + 8001bf8: 69fb ldr r3, [r7, #28] + 8001bfa: f1c3 0307 rsb r3, r3, #7 + 8001bfe: 2b04 cmp r3, #4 + 8001c00: bf28 it cs + 8001c02: 2304 movcs r3, #4 + 8001c04: 61bb str r3, [r7, #24] SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); - 8001dfa: 69fb ldr r3, [r7, #28] - 8001dfc: 3304 adds r3, #4 - 8001dfe: 2b06 cmp r3, #6 - 8001e00: d902 bls.n 8001e08 - 8001e02: 69fb ldr r3, [r7, #28] - 8001e04: 3b03 subs r3, #3 - 8001e06: e000 b.n 8001e0a - 8001e08: 2300 movs r3, #0 - 8001e0a: 617b str r3, [r7, #20] + 8001c06: 69fb ldr r3, [r7, #28] + 8001c08: 3304 adds r3, #4 + 8001c0a: 2b06 cmp r3, #6 + 8001c0c: d902 bls.n 8001c14 + 8001c0e: 69fb ldr r3, [r7, #28] + 8001c10: 3b03 subs r3, #3 + 8001c12: e000 b.n 8001c16 + 8001c14: 2300 movs r3, #0 + 8001c16: 617b str r3, [r7, #20] return ( ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | - 8001e0c: f04f 32ff mov.w r2, #4294967295 - 8001e10: 69bb ldr r3, [r7, #24] - 8001e12: fa02 f303 lsl.w r3, r2, r3 - 8001e16: 43da mvns r2, r3 - 8001e18: 68bb ldr r3, [r7, #8] - 8001e1a: 401a ands r2, r3 - 8001e1c: 697b ldr r3, [r7, #20] - 8001e1e: 409a lsls r2, r3 + 8001c18: f04f 32ff mov.w r2, #4294967295 + 8001c1c: 69bb ldr r3, [r7, #24] + 8001c1e: fa02 f303 lsl.w r3, r2, r3 + 8001c22: 43da mvns r2, r3 + 8001c24: 68bb ldr r3, [r7, #8] + 8001c26: 401a ands r2, r3 + 8001c28: 697b ldr r3, [r7, #20] + 8001c2a: 409a lsls r2, r3 ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) - 8001e20: f04f 31ff mov.w r1, #4294967295 - 8001e24: 697b ldr r3, [r7, #20] - 8001e26: fa01 f303 lsl.w r3, r1, r3 - 8001e2a: 43d9 mvns r1, r3 - 8001e2c: 687b ldr r3, [r7, #4] - 8001e2e: 400b ands r3, r1 + 8001c2c: f04f 31ff mov.w r1, #4294967295 + 8001c30: 697b ldr r3, [r7, #20] + 8001c32: fa01 f303 lsl.w r3, r1, r3 + 8001c36: 43d9 mvns r1, r3 + 8001c38: 687b ldr r3, [r7, #4] + 8001c3a: 400b ands r3, r1 ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | - 8001e30: 4313 orrs r3, r2 + 8001c3c: 4313 orrs r3, r2 ); } - 8001e32: 4618 mov r0, r3 - 8001e34: 3724 adds r7, #36 ; 0x24 - 8001e36: 46bd mov sp, r7 - 8001e38: bc80 pop {r7} - 8001e3a: 4770 bx lr + 8001c3e: 4618 mov r0, r3 + 8001c40: 3724 adds r7, #36 ; 0x24 + 8001c42: 46bd mov sp, r7 + 8001c44: bc80 pop {r7} + 8001c46: 4770 bx lr -08001e3c : +08001c48 : \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) { - 8001e3c: b580 push {r7, lr} - 8001e3e: b082 sub sp, #8 - 8001e40: af00 add r7, sp, #0 - 8001e42: 6078 str r0, [r7, #4] + 8001c48: b580 push {r7, lr} + 8001c4a: b082 sub sp, #8 + 8001c4c: af00 add r7, sp, #0 + 8001c4e: 6078 str r0, [r7, #4] if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) - 8001e44: 687b ldr r3, [r7, #4] - 8001e46: 3b01 subs r3, #1 - 8001e48: f1b3 7f80 cmp.w r3, #16777216 ; 0x1000000 - 8001e4c: d301 bcc.n 8001e52 + 8001c50: 687b ldr r3, [r7, #4] + 8001c52: 3b01 subs r3, #1 + 8001c54: f1b3 7f80 cmp.w r3, #16777216 ; 0x1000000 + 8001c58: d301 bcc.n 8001c5e { return (1UL); /* Reload value impossible */ - 8001e4e: 2301 movs r3, #1 - 8001e50: e00f b.n 8001e72 + 8001c5a: 2301 movs r3, #1 + 8001c5c: e00f b.n 8001c7e } SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ - 8001e52: 4a0a ldr r2, [pc, #40] ; (8001e7c ) - 8001e54: 687b ldr r3, [r7, #4] - 8001e56: 3b01 subs r3, #1 - 8001e58: 6053 str r3, [r2, #4] + 8001c5e: 4a0a ldr r2, [pc, #40] ; (8001c88 ) + 8001c60: 687b ldr r3, [r7, #4] + 8001c62: 3b01 subs r3, #1 + 8001c64: 6053 str r3, [r2, #4] NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ - 8001e5a: 210f movs r1, #15 - 8001e5c: f04f 30ff mov.w r0, #4294967295 - 8001e60: f7ff ff90 bl 8001d84 <__NVIC_SetPriority> + 8001c66: 210f movs r1, #15 + 8001c68: f04f 30ff mov.w r0, #4294967295 + 8001c6c: f7ff ff90 bl 8001b90 <__NVIC_SetPriority> SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ - 8001e64: 4b05 ldr r3, [pc, #20] ; (8001e7c ) - 8001e66: 2200 movs r2, #0 - 8001e68: 609a str r2, [r3, #8] + 8001c70: 4b05 ldr r3, [pc, #20] ; (8001c88 ) + 8001c72: 2200 movs r2, #0 + 8001c74: 609a str r2, [r3, #8] SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - 8001e6a: 4b04 ldr r3, [pc, #16] ; (8001e7c ) - 8001e6c: 2207 movs r2, #7 - 8001e6e: 601a str r2, [r3, #0] + 8001c76: 4b04 ldr r3, [pc, #16] ; (8001c88 ) + 8001c78: 2207 movs r2, #7 + 8001c7a: 601a str r2, [r3, #0] SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ return (0UL); /* Function successful */ - 8001e70: 2300 movs r3, #0 + 8001c7c: 2300 movs r3, #0 } - 8001e72: 4618 mov r0, r3 - 8001e74: 3708 adds r7, #8 - 8001e76: 46bd mov sp, r7 - 8001e78: bd80 pop {r7, pc} - 8001e7a: bf00 nop - 8001e7c: e000e010 .word 0xe000e010 + 8001c7e: 4618 mov r0, r3 + 8001c80: 3708 adds r7, #8 + 8001c82: 46bd mov sp, r7 + 8001c84: bd80 pop {r7, pc} + 8001c86: bf00 nop + 8001c88: e000e010 .word 0xe000e010 -08001e80 : +08001c8c : * @note When the NVIC_PriorityGroup_0 is selected, IRQ pre-emption is no more possible. * The pending IRQ priority will be managed only by the subpriority. * @retval None */ void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup) { - 8001e80: b580 push {r7, lr} - 8001e82: b082 sub sp, #8 - 8001e84: af00 add r7, sp, #0 - 8001e86: 6078 str r0, [r7, #4] + 8001c8c: b580 push {r7, lr} + 8001c8e: b082 sub sp, #8 + 8001c90: af00 add r7, sp, #0 + 8001c92: 6078 str r0, [r7, #4] /* Check the parameters */ assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */ NVIC_SetPriorityGrouping(PriorityGroup); - 8001e88: 6878 ldr r0, [r7, #4] - 8001e8a: f7ff ff49 bl 8001d20 <__NVIC_SetPriorityGrouping> + 8001c94: 6878 ldr r0, [r7, #4] + 8001c96: f7ff ff49 bl 8001b2c <__NVIC_SetPriorityGrouping> } - 8001e8e: bf00 nop - 8001e90: 3708 adds r7, #8 - 8001e92: 46bd mov sp, r7 - 8001e94: bd80 pop {r7, pc} + 8001c9a: bf00 nop + 8001c9c: 3708 adds r7, #8 + 8001c9e: 46bd mov sp, r7 + 8001ca0: bd80 pop {r7, pc} -08001e96 : +08001ca2 : * This parameter can be a value between 0 and 15 * A lower priority value indicates a higher priority. * @retval None */ void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) { - 8001e96: b580 push {r7, lr} - 8001e98: b086 sub sp, #24 - 8001e9a: af00 add r7, sp, #0 - 8001e9c: 4603 mov r3, r0 - 8001e9e: 60b9 str r1, [r7, #8] - 8001ea0: 607a str r2, [r7, #4] - 8001ea2: 73fb strb r3, [r7, #15] + 8001ca2: b580 push {r7, lr} + 8001ca4: b086 sub sp, #24 + 8001ca6: af00 add r7, sp, #0 + 8001ca8: 4603 mov r3, r0 + 8001caa: 60b9 str r1, [r7, #8] + 8001cac: 607a str r2, [r7, #4] + 8001cae: 73fb strb r3, [r7, #15] /* Check the parameters */ assert_param(IS_NVIC_SUB_PRIORITY(SubPriority)); assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); prioritygroup = NVIC_GetPriorityGrouping(); - 8001ea4: f7ff ff60 bl 8001d68 <__NVIC_GetPriorityGrouping> - 8001ea8: 6178 str r0, [r7, #20] + 8001cb0: f7ff ff60 bl 8001b74 <__NVIC_GetPriorityGrouping> + 8001cb4: 6178 str r0, [r7, #20] NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); - 8001eaa: 687a ldr r2, [r7, #4] - 8001eac: 68b9 ldr r1, [r7, #8] - 8001eae: 6978 ldr r0, [r7, #20] - 8001eb0: f7ff ff92 bl 8001dd8 - 8001eb4: 4602 mov r2, r0 - 8001eb6: f997 300f ldrsb.w r3, [r7, #15] - 8001eba: 4611 mov r1, r2 - 8001ebc: 4618 mov r0, r3 - 8001ebe: f7ff ff61 bl 8001d84 <__NVIC_SetPriority> -} - 8001ec2: bf00 nop - 8001ec4: 3718 adds r7, #24 - 8001ec6: 46bd mov sp, r7 - 8001ec8: bd80 pop {r7, pc} - -08001eca : + 8001cb6: 687a ldr r2, [r7, #4] + 8001cb8: 68b9 ldr r1, [r7, #8] + 8001cba: 6978 ldr r0, [r7, #20] + 8001cbc: f7ff ff92 bl 8001be4 + 8001cc0: 4602 mov r2, r0 + 8001cc2: f997 300f ldrsb.w r3, [r7, #15] + 8001cc6: 4611 mov r1, r2 + 8001cc8: 4618 mov r0, r3 + 8001cca: f7ff ff61 bl 8001b90 <__NVIC_SetPriority> +} + 8001cce: bf00 nop + 8001cd0: 3718 adds r7, #24 + 8001cd2: 46bd mov sp, r7 + 8001cd4: bd80 pop {r7, pc} + +08001cd6 : * @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) { - 8001eca: b580 push {r7, lr} - 8001ecc: b082 sub sp, #8 - 8001ece: af00 add r7, sp, #0 - 8001ed0: 6078 str r0, [r7, #4] + 8001cd6: b580 push {r7, lr} + 8001cd8: b082 sub sp, #8 + 8001cda: af00 add r7, sp, #0 + 8001cdc: 6078 str r0, [r7, #4] return SysTick_Config(TicksNumb); - 8001ed2: 6878 ldr r0, [r7, #4] - 8001ed4: f7ff ffb2 bl 8001e3c - 8001ed8: 4603 mov r3, r0 -} - 8001eda: 4618 mov r0, r3 - 8001edc: 3708 adds r7, #8 - 8001ede: 46bd mov sp, r7 - 8001ee0: bd80 pop {r7, pc} + 8001cde: 6878 ldr r0, [r7, #4] + 8001ce0: f7ff ffb2 bl 8001c48 + 8001ce4: 4603 mov r3, r0 +} + 8001ce6: 4618 mov r0, r3 + 8001ce8: 3708 adds r7, #8 + 8001cea: 46bd mov sp, r7 + 8001cec: bd80 pop {r7, pc} ... -08001ee4 : +08001cf0 : * parameters in the CRC_InitTypeDef and create the associated handle. * @param hcrc CRC handle * @retval HAL status */ HAL_StatusTypeDef HAL_CRC_Init(CRC_HandleTypeDef *hcrc) { - 8001ee4: b580 push {r7, lr} - 8001ee6: b082 sub sp, #8 - 8001ee8: af00 add r7, sp, #0 - 8001eea: 6078 str r0, [r7, #4] + 8001cf0: b580 push {r7, lr} + 8001cf2: b082 sub sp, #8 + 8001cf4: af00 add r7, sp, #0 + 8001cf6: 6078 str r0, [r7, #4] /* Check the CRC handle allocation */ if (hcrc == NULL) - 8001eec: 687b ldr r3, [r7, #4] - 8001eee: 2b00 cmp r3, #0 - 8001ef0: d101 bne.n 8001ef6 + 8001cf8: 687b ldr r3, [r7, #4] + 8001cfa: 2b00 cmp r3, #0 + 8001cfc: d101 bne.n 8001d02 { return HAL_ERROR; - 8001ef2: 2301 movs r3, #1 - 8001ef4: e054 b.n 8001fa0 + 8001cfe: 2301 movs r3, #1 + 8001d00: e054 b.n 8001dac } /* Check the parameters */ assert_param(IS_CRC_ALL_INSTANCE(hcrc->Instance)); if (hcrc->State == HAL_CRC_STATE_RESET) - 8001ef6: 687b ldr r3, [r7, #4] - 8001ef8: 7f5b ldrb r3, [r3, #29] - 8001efa: b2db uxtb r3, r3 - 8001efc: 2b00 cmp r3, #0 - 8001efe: d105 bne.n 8001f0c + 8001d02: 687b ldr r3, [r7, #4] + 8001d04: 7f5b ldrb r3, [r3, #29] + 8001d06: b2db uxtb r3, r3 + 8001d08: 2b00 cmp r3, #0 + 8001d0a: d105 bne.n 8001d18 { /* Allocate lock resource and initialize it */ hcrc->Lock = HAL_UNLOCKED; - 8001f00: 687b ldr r3, [r7, #4] - 8001f02: 2200 movs r2, #0 - 8001f04: 771a strb r2, [r3, #28] + 8001d0c: 687b ldr r3, [r7, #4] + 8001d0e: 2200 movs r2, #0 + 8001d10: 771a strb r2, [r3, #28] /* Init the low level hardware */ HAL_CRC_MspInit(hcrc); - 8001f06: 6878 ldr r0, [r7, #4] - 8001f08: f7ff fb9e bl 8001648 + 8001d12: 6878 ldr r0, [r7, #4] + 8001d14: f7ff fb9e bl 8001454 } hcrc->State = HAL_CRC_STATE_BUSY; - 8001f0c: 687b ldr r3, [r7, #4] - 8001f0e: 2202 movs r2, #2 - 8001f10: 775a strb r2, [r3, #29] + 8001d18: 687b ldr r3, [r7, #4] + 8001d1a: 2202 movs r2, #2 + 8001d1c: 775a strb r2, [r3, #29] /* check whether or not non-default generating polynomial has been * picked up by user */ assert_param(IS_DEFAULT_POLYNOMIAL(hcrc->Init.DefaultPolynomialUse)); if (hcrc->Init.DefaultPolynomialUse == DEFAULT_POLYNOMIAL_ENABLE) - 8001f12: 687b ldr r3, [r7, #4] - 8001f14: 791b ldrb r3, [r3, #4] - 8001f16: 2b00 cmp r3, #0 - 8001f18: d10c bne.n 8001f34 + 8001d1e: 687b ldr r3, [r7, #4] + 8001d20: 791b ldrb r3, [r3, #4] + 8001d22: 2b00 cmp r3, #0 + 8001d24: d10c bne.n 8001d40 { /* initialize peripheral with default generating polynomial */ WRITE_REG(hcrc->Instance->POL, DEFAULT_CRC32_POLY); - 8001f1a: 687b ldr r3, [r7, #4] - 8001f1c: 681b ldr r3, [r3, #0] - 8001f1e: 4a22 ldr r2, [pc, #136] ; (8001fa8 ) - 8001f20: 615a str r2, [r3, #20] + 8001d26: 687b ldr r3, [r7, #4] + 8001d28: 681b ldr r3, [r3, #0] + 8001d2a: 4a22 ldr r2, [pc, #136] ; (8001db4 ) + 8001d2c: 615a str r2, [r3, #20] MODIFY_REG(hcrc->Instance->CR, CRC_CR_POLYSIZE, CRC_POLYLENGTH_32B); - 8001f22: 687b ldr r3, [r7, #4] - 8001f24: 681b ldr r3, [r3, #0] - 8001f26: 689a ldr r2, [r3, #8] - 8001f28: 687b ldr r3, [r7, #4] - 8001f2a: 681b ldr r3, [r3, #0] - 8001f2c: f022 0218 bic.w r2, r2, #24 - 8001f30: 609a str r2, [r3, #8] - 8001f32: e00c b.n 8001f4e + 8001d2e: 687b ldr r3, [r7, #4] + 8001d30: 681b ldr r3, [r3, #0] + 8001d32: 689a ldr r2, [r3, #8] + 8001d34: 687b ldr r3, [r7, #4] + 8001d36: 681b ldr r3, [r3, #0] + 8001d38: f022 0218 bic.w r2, r2, #24 + 8001d3c: 609a str r2, [r3, #8] + 8001d3e: e00c b.n 8001d5a } else { /* initialize CRC peripheral with generating polynomial defined by user */ if (HAL_CRCEx_Polynomial_Set(hcrc, hcrc->Init.GeneratingPolynomial, hcrc->Init.CRCLength) != HAL_OK) - 8001f34: 687b ldr r3, [r7, #4] - 8001f36: 6899 ldr r1, [r3, #8] - 8001f38: 687b ldr r3, [r7, #4] - 8001f3a: 68db ldr r3, [r3, #12] - 8001f3c: 461a mov r2, r3 - 8001f3e: 6878 ldr r0, [r7, #4] - 8001f40: f000 f834 bl 8001fac - 8001f44: 4603 mov r3, r0 - 8001f46: 2b00 cmp r3, #0 - 8001f48: d001 beq.n 8001f4e + 8001d40: 687b ldr r3, [r7, #4] + 8001d42: 6899 ldr r1, [r3, #8] + 8001d44: 687b ldr r3, [r7, #4] + 8001d46: 68db ldr r3, [r3, #12] + 8001d48: 461a mov r2, r3 + 8001d4a: 6878 ldr r0, [r7, #4] + 8001d4c: f000 f834 bl 8001db8 + 8001d50: 4603 mov r3, r0 + 8001d52: 2b00 cmp r3, #0 + 8001d54: d001 beq.n 8001d5a { return HAL_ERROR; - 8001f4a: 2301 movs r3, #1 - 8001f4c: e028 b.n 8001fa0 + 8001d56: 2301 movs r3, #1 + 8001d58: e028 b.n 8001dac } /* check whether or not non-default CRC initial value has been * picked up by user */ assert_param(IS_DEFAULT_INIT_VALUE(hcrc->Init.DefaultInitValueUse)); if (hcrc->Init.DefaultInitValueUse == DEFAULT_INIT_VALUE_ENABLE) - 8001f4e: 687b ldr r3, [r7, #4] - 8001f50: 795b ldrb r3, [r3, #5] - 8001f52: 2b00 cmp r3, #0 - 8001f54: d105 bne.n 8001f62 + 8001d5a: 687b ldr r3, [r7, #4] + 8001d5c: 795b ldrb r3, [r3, #5] + 8001d5e: 2b00 cmp r3, #0 + 8001d60: d105 bne.n 8001d6e { WRITE_REG(hcrc->Instance->INIT, DEFAULT_CRC_INITVALUE); - 8001f56: 687b ldr r3, [r7, #4] - 8001f58: 681b ldr r3, [r3, #0] - 8001f5a: f04f 32ff mov.w r2, #4294967295 - 8001f5e: 611a str r2, [r3, #16] - 8001f60: e004 b.n 8001f6c + 8001d62: 687b ldr r3, [r7, #4] + 8001d64: 681b ldr r3, [r3, #0] + 8001d66: f04f 32ff mov.w r2, #4294967295 + 8001d6a: 611a str r2, [r3, #16] + 8001d6c: e004 b.n 8001d78 } else { WRITE_REG(hcrc->Instance->INIT, hcrc->Init.InitValue); - 8001f62: 687b ldr r3, [r7, #4] - 8001f64: 681b ldr r3, [r3, #0] - 8001f66: 687a ldr r2, [r7, #4] - 8001f68: 6912 ldr r2, [r2, #16] - 8001f6a: 611a str r2, [r3, #16] + 8001d6e: 687b ldr r3, [r7, #4] + 8001d70: 681b ldr r3, [r3, #0] + 8001d72: 687a ldr r2, [r7, #4] + 8001d74: 6912 ldr r2, [r2, #16] + 8001d76: 611a str r2, [r3, #16] } /* set input data inversion mode */ assert_param(IS_CRC_INPUTDATA_INVERSION_MODE(hcrc->Init.InputDataInversionMode)); MODIFY_REG(hcrc->Instance->CR, CRC_CR_REV_IN, hcrc->Init.InputDataInversionMode); - 8001f6c: 687b ldr r3, [r7, #4] - 8001f6e: 681b ldr r3, [r3, #0] - 8001f70: 689b ldr r3, [r3, #8] - 8001f72: f023 0160 bic.w r1, r3, #96 ; 0x60 - 8001f76: 687b ldr r3, [r7, #4] - 8001f78: 695a ldr r2, [r3, #20] - 8001f7a: 687b ldr r3, [r7, #4] - 8001f7c: 681b ldr r3, [r3, #0] - 8001f7e: 430a orrs r2, r1 - 8001f80: 609a str r2, [r3, #8] + 8001d78: 687b ldr r3, [r7, #4] + 8001d7a: 681b ldr r3, [r3, #0] + 8001d7c: 689b ldr r3, [r3, #8] + 8001d7e: f023 0160 bic.w r1, r3, #96 ; 0x60 + 8001d82: 687b ldr r3, [r7, #4] + 8001d84: 695a ldr r2, [r3, #20] + 8001d86: 687b ldr r3, [r7, #4] + 8001d88: 681b ldr r3, [r3, #0] + 8001d8a: 430a orrs r2, r1 + 8001d8c: 609a str r2, [r3, #8] /* set output data inversion mode */ assert_param(IS_CRC_OUTPUTDATA_INVERSION_MODE(hcrc->Init.OutputDataInversionMode)); MODIFY_REG(hcrc->Instance->CR, CRC_CR_REV_OUT, hcrc->Init.OutputDataInversionMode); - 8001f82: 687b ldr r3, [r7, #4] - 8001f84: 681b ldr r3, [r3, #0] - 8001f86: 689b ldr r3, [r3, #8] - 8001f88: f023 0180 bic.w r1, r3, #128 ; 0x80 - 8001f8c: 687b ldr r3, [r7, #4] - 8001f8e: 699a ldr r2, [r3, #24] - 8001f90: 687b ldr r3, [r7, #4] - 8001f92: 681b ldr r3, [r3, #0] - 8001f94: 430a orrs r2, r1 - 8001f96: 609a str r2, [r3, #8] + 8001d8e: 687b ldr r3, [r7, #4] + 8001d90: 681b ldr r3, [r3, #0] + 8001d92: 689b ldr r3, [r3, #8] + 8001d94: f023 0180 bic.w r1, r3, #128 ; 0x80 + 8001d98: 687b ldr r3, [r7, #4] + 8001d9a: 699a ldr r2, [r3, #24] + 8001d9c: 687b ldr r3, [r7, #4] + 8001d9e: 681b ldr r3, [r3, #0] + 8001da0: 430a orrs r2, r1 + 8001da2: 609a str r2, [r3, #8] /* makes sure the input data format (bytes, halfwords or words stream) * is properly specified by user */ assert_param(IS_CRC_INPUTDATA_FORMAT(hcrc->InputDataFormat)); /* Change CRC peripheral state */ hcrc->State = HAL_CRC_STATE_READY; - 8001f98: 687b ldr r3, [r7, #4] - 8001f9a: 2201 movs r2, #1 - 8001f9c: 775a strb r2, [r3, #29] + 8001da4: 687b ldr r3, [r7, #4] + 8001da6: 2201 movs r2, #1 + 8001da8: 775a strb r2, [r3, #29] /* Return function status */ return HAL_OK; - 8001f9e: 2300 movs r3, #0 + 8001daa: 2300 movs r3, #0 } - 8001fa0: 4618 mov r0, r3 - 8001fa2: 3708 adds r7, #8 - 8001fa4: 46bd mov sp, r7 - 8001fa6: bd80 pop {r7, pc} - 8001fa8: 04c11db7 .word 0x04c11db7 + 8001dac: 4618 mov r0, r3 + 8001dae: 3708 adds r7, #8 + 8001db0: 46bd mov sp, r7 + 8001db2: bd80 pop {r7, pc} + 8001db4: 04c11db7 .word 0x04c11db7 -08001fac : +08001db8 : * @arg @ref CRC_POLYLENGTH_16B 16-bit long CRC (generating polynomial of degree 16) * @arg @ref CRC_POLYLENGTH_32B 32-bit long CRC (generating polynomial of degree 32) * @retval HAL status */ HAL_StatusTypeDef HAL_CRCEx_Polynomial_Set(CRC_HandleTypeDef *hcrc, uint32_t Pol, uint32_t PolyLength) { - 8001fac: b480 push {r7} - 8001fae: b087 sub sp, #28 - 8001fb0: af00 add r7, sp, #0 - 8001fb2: 60f8 str r0, [r7, #12] - 8001fb4: 60b9 str r1, [r7, #8] - 8001fb6: 607a str r2, [r7, #4] + 8001db8: b480 push {r7} + 8001dba: b087 sub sp, #28 + 8001dbc: af00 add r7, sp, #0 + 8001dbe: 60f8 str r0, [r7, #12] + 8001dc0: 60b9 str r1, [r7, #8] + 8001dc2: 607a str r2, [r7, #4] HAL_StatusTypeDef status = HAL_OK; - 8001fb8: 2300 movs r3, #0 - 8001fba: 75fb strb r3, [r7, #23] + 8001dc4: 2300 movs r3, #0 + 8001dc6: 75fb strb r3, [r7, #23] uint32_t msb = 31U; /* polynomial degree is 32 at most, so msb is initialized to max value */ - 8001fbc: 231f movs r3, #31 - 8001fbe: 613b str r3, [r7, #16] + 8001dc8: 231f movs r3, #31 + 8001dca: 613b str r3, [r7, #16] /* Check the parameters */ assert_param(IS_CRC_POL_LENGTH(PolyLength)); /* Ensure that the generating polynomial is odd */ if ((Pol & (uint32_t)(0x1U)) == 0U) - 8001fc0: 68bb ldr r3, [r7, #8] - 8001fc2: f003 0301 and.w r3, r3, #1 - 8001fc6: 2b00 cmp r3, #0 - 8001fc8: d102 bne.n 8001fd0 + 8001dcc: 68bb ldr r3, [r7, #8] + 8001dce: f003 0301 and.w r3, r3, #1 + 8001dd2: 2b00 cmp r3, #0 + 8001dd4: d102 bne.n 8001ddc { status = HAL_ERROR; - 8001fca: 2301 movs r3, #1 - 8001fcc: 75fb strb r3, [r7, #23] - 8001fce: e063 b.n 8002098 + 8001dd6: 2301 movs r3, #1 + 8001dd8: 75fb strb r3, [r7, #23] + 8001dda: e063 b.n 8001ea4 * definition. HAL_ERROR is reported if Pol degree is * larger than that indicated by PolyLength. * Look for MSB position: msb will contain the degree of * the second to the largest polynomial member. E.g., for * X^7 + X^6 + X^5 + X^2 + 1, msb = 6. */ while ((msb-- > 0U) && ((Pol & ((uint32_t)(0x1U) << (msb & 0x1FU))) == 0U)) - 8001fd0: bf00 nop - 8001fd2: 693b ldr r3, [r7, #16] - 8001fd4: 1e5a subs r2, r3, #1 - 8001fd6: 613a str r2, [r7, #16] - 8001fd8: 2b00 cmp r3, #0 - 8001fda: d009 beq.n 8001ff0 - 8001fdc: 693b ldr r3, [r7, #16] - 8001fde: f003 031f and.w r3, r3, #31 - 8001fe2: 68ba ldr r2, [r7, #8] - 8001fe4: fa22 f303 lsr.w r3, r2, r3 - 8001fe8: f003 0301 and.w r3, r3, #1 - 8001fec: 2b00 cmp r3, #0 - 8001fee: d0f0 beq.n 8001fd2 + 8001ddc: bf00 nop + 8001dde: 693b ldr r3, [r7, #16] + 8001de0: 1e5a subs r2, r3, #1 + 8001de2: 613a str r2, [r7, #16] + 8001de4: 2b00 cmp r3, #0 + 8001de6: d009 beq.n 8001dfc + 8001de8: 693b ldr r3, [r7, #16] + 8001dea: f003 031f and.w r3, r3, #31 + 8001dee: 68ba ldr r2, [r7, #8] + 8001df0: fa22 f303 lsr.w r3, r2, r3 + 8001df4: f003 0301 and.w r3, r3, #1 + 8001df8: 2b00 cmp r3, #0 + 8001dfa: d0f0 beq.n 8001dde { } switch (PolyLength) - 8001ff0: 687b ldr r3, [r7, #4] - 8001ff2: 2b18 cmp r3, #24 - 8001ff4: d846 bhi.n 8002084 - 8001ff6: a201 add r2, pc, #4 ; (adr r2, 8001ffc ) - 8001ff8: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8001ffc: 0800208b .word 0x0800208b - 8002000: 08002085 .word 0x08002085 - 8002004: 08002085 .word 0x08002085 - 8002008: 08002085 .word 0x08002085 - 800200c: 08002085 .word 0x08002085 - 8002010: 08002085 .word 0x08002085 - 8002014: 08002085 .word 0x08002085 - 8002018: 08002085 .word 0x08002085 - 800201c: 08002079 .word 0x08002079 - 8002020: 08002085 .word 0x08002085 - 8002024: 08002085 .word 0x08002085 - 8002028: 08002085 .word 0x08002085 - 800202c: 08002085 .word 0x08002085 - 8002030: 08002085 .word 0x08002085 - 8002034: 08002085 .word 0x08002085 - 8002038: 08002085 .word 0x08002085 - 800203c: 0800206d .word 0x0800206d - 8002040: 08002085 .word 0x08002085 - 8002044: 08002085 .word 0x08002085 - 8002048: 08002085 .word 0x08002085 - 800204c: 08002085 .word 0x08002085 - 8002050: 08002085 .word 0x08002085 - 8002054: 08002085 .word 0x08002085 - 8002058: 08002085 .word 0x08002085 - 800205c: 08002061 .word 0x08002061 + 8001dfc: 687b ldr r3, [r7, #4] + 8001dfe: 2b18 cmp r3, #24 + 8001e00: d846 bhi.n 8001e90 + 8001e02: a201 add r2, pc, #4 ; (adr r2, 8001e08 ) + 8001e04: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8001e08: 08001e97 .word 0x08001e97 + 8001e0c: 08001e91 .word 0x08001e91 + 8001e10: 08001e91 .word 0x08001e91 + 8001e14: 08001e91 .word 0x08001e91 + 8001e18: 08001e91 .word 0x08001e91 + 8001e1c: 08001e91 .word 0x08001e91 + 8001e20: 08001e91 .word 0x08001e91 + 8001e24: 08001e91 .word 0x08001e91 + 8001e28: 08001e85 .word 0x08001e85 + 8001e2c: 08001e91 .word 0x08001e91 + 8001e30: 08001e91 .word 0x08001e91 + 8001e34: 08001e91 .word 0x08001e91 + 8001e38: 08001e91 .word 0x08001e91 + 8001e3c: 08001e91 .word 0x08001e91 + 8001e40: 08001e91 .word 0x08001e91 + 8001e44: 08001e91 .word 0x08001e91 + 8001e48: 08001e79 .word 0x08001e79 + 8001e4c: 08001e91 .word 0x08001e91 + 8001e50: 08001e91 .word 0x08001e91 + 8001e54: 08001e91 .word 0x08001e91 + 8001e58: 08001e91 .word 0x08001e91 + 8001e5c: 08001e91 .word 0x08001e91 + 8001e60: 08001e91 .word 0x08001e91 + 8001e64: 08001e91 .word 0x08001e91 + 8001e68: 08001e6d .word 0x08001e6d { case CRC_POLYLENGTH_7B: if (msb >= HAL_CRC_LENGTH_7B) - 8002060: 693b ldr r3, [r7, #16] - 8002062: 2b06 cmp r3, #6 - 8002064: d913 bls.n 800208e + 8001e6c: 693b ldr r3, [r7, #16] + 8001e6e: 2b06 cmp r3, #6 + 8001e70: d913 bls.n 8001e9a { status = HAL_ERROR; - 8002066: 2301 movs r3, #1 - 8002068: 75fb strb r3, [r7, #23] + 8001e72: 2301 movs r3, #1 + 8001e74: 75fb strb r3, [r7, #23] } break; - 800206a: e010 b.n 800208e + 8001e76: e010 b.n 8001e9a case CRC_POLYLENGTH_8B: if (msb >= HAL_CRC_LENGTH_8B) - 800206c: 693b ldr r3, [r7, #16] - 800206e: 2b07 cmp r3, #7 - 8002070: d90f bls.n 8002092 + 8001e78: 693b ldr r3, [r7, #16] + 8001e7a: 2b07 cmp r3, #7 + 8001e7c: d90f bls.n 8001e9e { status = HAL_ERROR; - 8002072: 2301 movs r3, #1 - 8002074: 75fb strb r3, [r7, #23] + 8001e7e: 2301 movs r3, #1 + 8001e80: 75fb strb r3, [r7, #23] } break; - 8002076: e00c b.n 8002092 + 8001e82: e00c b.n 8001e9e case CRC_POLYLENGTH_16B: if (msb >= HAL_CRC_LENGTH_16B) - 8002078: 693b ldr r3, [r7, #16] - 800207a: 2b0f cmp r3, #15 - 800207c: d90b bls.n 8002096 + 8001e84: 693b ldr r3, [r7, #16] + 8001e86: 2b0f cmp r3, #15 + 8001e88: d90b bls.n 8001ea2 { status = HAL_ERROR; - 800207e: 2301 movs r3, #1 - 8002080: 75fb strb r3, [r7, #23] + 8001e8a: 2301 movs r3, #1 + 8001e8c: 75fb strb r3, [r7, #23] } break; - 8002082: e008 b.n 8002096 + 8001e8e: e008 b.n 8001ea2 case CRC_POLYLENGTH_32B: /* no polynomial definition vs. polynomial length issue possible */ break; default: status = HAL_ERROR; - 8002084: 2301 movs r3, #1 - 8002086: 75fb strb r3, [r7, #23] + 8001e90: 2301 movs r3, #1 + 8001e92: 75fb strb r3, [r7, #23] break; - 8002088: e006 b.n 8002098 + 8001e94: e006 b.n 8001ea4 break; - 800208a: bf00 nop - 800208c: e004 b.n 8002098 + 8001e96: bf00 nop + 8001e98: e004 b.n 8001ea4 break; - 800208e: bf00 nop - 8002090: e002 b.n 8002098 + 8001e9a: bf00 nop + 8001e9c: e002 b.n 8001ea4 break; - 8002092: bf00 nop - 8002094: e000 b.n 8002098 + 8001e9e: bf00 nop + 8001ea0: e000 b.n 8001ea4 break; - 8002096: bf00 nop + 8001ea2: bf00 nop } } if (status == HAL_OK) - 8002098: 7dfb ldrb r3, [r7, #23] - 800209a: 2b00 cmp r3, #0 - 800209c: d10d bne.n 80020ba + 8001ea4: 7dfb ldrb r3, [r7, #23] + 8001ea6: 2b00 cmp r3, #0 + 8001ea8: d10d bne.n 8001ec6 { /* set generating polynomial */ WRITE_REG(hcrc->Instance->POL, Pol); - 800209e: 68fb ldr r3, [r7, #12] - 80020a0: 681b ldr r3, [r3, #0] - 80020a2: 68ba ldr r2, [r7, #8] - 80020a4: 615a str r2, [r3, #20] + 8001eaa: 68fb ldr r3, [r7, #12] + 8001eac: 681b ldr r3, [r3, #0] + 8001eae: 68ba ldr r2, [r7, #8] + 8001eb0: 615a str r2, [r3, #20] /* set generating polynomial size */ MODIFY_REG(hcrc->Instance->CR, CRC_CR_POLYSIZE, PolyLength); - 80020a6: 68fb ldr r3, [r7, #12] - 80020a8: 681b ldr r3, [r3, #0] - 80020aa: 689b ldr r3, [r3, #8] - 80020ac: f023 0118 bic.w r1, r3, #24 - 80020b0: 68fb ldr r3, [r7, #12] - 80020b2: 681b ldr r3, [r3, #0] - 80020b4: 687a ldr r2, [r7, #4] - 80020b6: 430a orrs r2, r1 - 80020b8: 609a str r2, [r3, #8] + 8001eb2: 68fb ldr r3, [r7, #12] + 8001eb4: 681b ldr r3, [r3, #0] + 8001eb6: 689b ldr r3, [r3, #8] + 8001eb8: f023 0118 bic.w r1, r3, #24 + 8001ebc: 68fb ldr r3, [r7, #12] + 8001ebe: 681b ldr r3, [r3, #0] + 8001ec0: 687a ldr r2, [r7, #4] + 8001ec2: 430a orrs r2, r1 + 8001ec4: 609a str r2, [r3, #8] } /* Return function status */ return status; - 80020ba: 7dfb ldrb r3, [r7, #23] + 8001ec6: 7dfb ldrb r3, [r7, #23] } - 80020bc: 4618 mov r0, r3 - 80020be: 371c adds r7, #28 - 80020c0: 46bd mov sp, r7 - 80020c2: bc80 pop {r7} - 80020c4: 4770 bx lr - 80020c6: bf00 nop + 8001ec8: 4618 mov r0, r3 + 8001eca: 371c adds r7, #28 + 8001ecc: 46bd mov sp, r7 + 8001ece: bc80 pop {r7} + 8001ed0: 4770 bx lr + 8001ed2: bf00 nop -080020c8 : +08001ed4 : * @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) { - 80020c8: b480 push {r7} - 80020ca: b087 sub sp, #28 - 80020cc: af00 add r7, sp, #0 - 80020ce: 6078 str r0, [r7, #4] - 80020d0: 6039 str r1, [r7, #0] + 8001ed4: b480 push {r7} + 8001ed6: b087 sub sp, #28 + 8001ed8: af00 add r7, sp, #0 + 8001eda: 6078 str r0, [r7, #4] + 8001edc: 6039 str r1, [r7, #0] uint32_t position = 0x00u; - 80020d2: 2300 movs r3, #0 - 80020d4: 617b str r3, [r7, #20] + 8001ede: 2300 movs r3, #0 + 8001ee0: 617b str r3, [r7, #20] assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); /* Configure the port pins */ while (((GPIO_Init->Pin) >> position) != 0x00u) - 80020d6: e140 b.n 800235a + 8001ee2: e140 b.n 8002166 { /* Get current io position */ iocurrent = (GPIO_Init->Pin) & (1uL << position); - 80020d8: 683b ldr r3, [r7, #0] - 80020da: 681a ldr r2, [r3, #0] - 80020dc: 2101 movs r1, #1 - 80020de: 697b ldr r3, [r7, #20] - 80020e0: fa01 f303 lsl.w r3, r1, r3 - 80020e4: 4013 ands r3, r2 - 80020e6: 60fb str r3, [r7, #12] + 8001ee4: 683b ldr r3, [r7, #0] + 8001ee6: 681a ldr r2, [r3, #0] + 8001ee8: 2101 movs r1, #1 + 8001eea: 697b ldr r3, [r7, #20] + 8001eec: fa01 f303 lsl.w r3, r1, r3 + 8001ef0: 4013 ands r3, r2 + 8001ef2: 60fb str r3, [r7, #12] if (iocurrent != 0x00u) - 80020e8: 68fb ldr r3, [r7, #12] - 80020ea: 2b00 cmp r3, #0 - 80020ec: f000 8132 beq.w 8002354 + 8001ef4: 68fb ldr r3, [r7, #12] + 8001ef6: 2b00 cmp r3, #0 + 8001ef8: f000 8132 beq.w 8002160 { /*--------------------- 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)) - 80020f0: 683b ldr r3, [r7, #0] - 80020f2: 685b ldr r3, [r3, #4] - 80020f4: f003 0303 and.w r3, r3, #3 - 80020f8: 2b01 cmp r3, #1 - 80020fa: d005 beq.n 8002108 - 80020fc: 683b ldr r3, [r7, #0] - 80020fe: 685b ldr r3, [r3, #4] - 8002100: f003 0303 and.w r3, r3, #3 - 8002104: 2b02 cmp r3, #2 - 8002106: d130 bne.n 800216a + 8001efc: 683b ldr r3, [r7, #0] + 8001efe: 685b ldr r3, [r3, #4] + 8001f00: f003 0303 and.w r3, r3, #3 + 8001f04: 2b01 cmp r3, #1 + 8001f06: d005 beq.n 8001f14 + 8001f08: 683b ldr r3, [r7, #0] + 8001f0a: 685b ldr r3, [r3, #4] + 8001f0c: f003 0303 and.w r3, r3, #3 + 8001f10: 2b02 cmp r3, #2 + 8001f12: d130 bne.n 8001f76 { /* Check the Speed parameter */ assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); /* Configure the IO Speed */ temp = GPIOx->OSPEEDR; - 8002108: 687b ldr r3, [r7, #4] - 800210a: 689b ldr r3, [r3, #8] - 800210c: 613b str r3, [r7, #16] + 8001f14: 687b ldr r3, [r7, #4] + 8001f16: 689b ldr r3, [r3, #8] + 8001f18: 613b str r3, [r7, #16] temp &= ~(GPIO_OSPEEDR_OSPEED0 << (position * 2U)); - 800210e: 697b ldr r3, [r7, #20] - 8002110: 005b lsls r3, r3, #1 - 8002112: 2203 movs r2, #3 - 8002114: fa02 f303 lsl.w r3, r2, r3 - 8002118: 43db mvns r3, r3 - 800211a: 693a ldr r2, [r7, #16] - 800211c: 4013 ands r3, r2 - 800211e: 613b str r3, [r7, #16] + 8001f1a: 697b ldr r3, [r7, #20] + 8001f1c: 005b lsls r3, r3, #1 + 8001f1e: 2203 movs r2, #3 + 8001f20: fa02 f303 lsl.w r3, r2, r3 + 8001f24: 43db mvns r3, r3 + 8001f26: 693a ldr r2, [r7, #16] + 8001f28: 4013 ands r3, r2 + 8001f2a: 613b str r3, [r7, #16] temp |= (GPIO_Init->Speed << (position * 2U)); - 8002120: 683b ldr r3, [r7, #0] - 8002122: 68da ldr r2, [r3, #12] - 8002124: 697b ldr r3, [r7, #20] - 8002126: 005b lsls r3, r3, #1 - 8002128: fa02 f303 lsl.w r3, r2, r3 - 800212c: 693a ldr r2, [r7, #16] - 800212e: 4313 orrs r3, r2 - 8002130: 613b str r3, [r7, #16] + 8001f2c: 683b ldr r3, [r7, #0] + 8001f2e: 68da ldr r2, [r3, #12] + 8001f30: 697b ldr r3, [r7, #20] + 8001f32: 005b lsls r3, r3, #1 + 8001f34: fa02 f303 lsl.w r3, r2, r3 + 8001f38: 693a ldr r2, [r7, #16] + 8001f3a: 4313 orrs r3, r2 + 8001f3c: 613b str r3, [r7, #16] GPIOx->OSPEEDR = temp; - 8002132: 687b ldr r3, [r7, #4] - 8002134: 693a ldr r2, [r7, #16] - 8002136: 609a str r2, [r3, #8] + 8001f3e: 687b ldr r3, [r7, #4] + 8001f40: 693a ldr r2, [r7, #16] + 8001f42: 609a str r2, [r3, #8] /* Configure the IO Output Type */ temp = GPIOx->OTYPER; - 8002138: 687b ldr r3, [r7, #4] - 800213a: 685b ldr r3, [r3, #4] - 800213c: 613b str r3, [r7, #16] + 8001f44: 687b ldr r3, [r7, #4] + 8001f46: 685b ldr r3, [r3, #4] + 8001f48: 613b str r3, [r7, #16] temp &= ~(GPIO_OTYPER_OT0 << position) ; - 800213e: 2201 movs r2, #1 - 8002140: 697b ldr r3, [r7, #20] - 8002142: fa02 f303 lsl.w r3, r2, r3 - 8002146: 43db mvns r3, r3 - 8002148: 693a ldr r2, [r7, #16] - 800214a: 4013 ands r3, r2 - 800214c: 613b str r3, [r7, #16] + 8001f4a: 2201 movs r2, #1 + 8001f4c: 697b ldr r3, [r7, #20] + 8001f4e: fa02 f303 lsl.w r3, r2, r3 + 8001f52: 43db mvns r3, r3 + 8001f54: 693a ldr r2, [r7, #16] + 8001f56: 4013 ands r3, r2 + 8001f58: 613b str r3, [r7, #16] temp |= (((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); - 800214e: 683b ldr r3, [r7, #0] - 8002150: 685b ldr r3, [r3, #4] - 8002152: 091b lsrs r3, r3, #4 - 8002154: f003 0201 and.w r2, r3, #1 - 8002158: 697b ldr r3, [r7, #20] - 800215a: fa02 f303 lsl.w r3, r2, r3 - 800215e: 693a ldr r2, [r7, #16] - 8002160: 4313 orrs r3, r2 - 8002162: 613b str r3, [r7, #16] + 8001f5a: 683b ldr r3, [r7, #0] + 8001f5c: 685b ldr r3, [r3, #4] + 8001f5e: 091b lsrs r3, r3, #4 + 8001f60: f003 0201 and.w r2, r3, #1 + 8001f64: 697b ldr r3, [r7, #20] + 8001f66: fa02 f303 lsl.w r3, r2, r3 + 8001f6a: 693a ldr r2, [r7, #16] + 8001f6c: 4313 orrs r3, r2 + 8001f6e: 613b str r3, [r7, #16] GPIOx->OTYPER = temp; - 8002164: 687b ldr r3, [r7, #4] - 8002166: 693a ldr r2, [r7, #16] - 8002168: 605a str r2, [r3, #4] + 8001f70: 687b ldr r3, [r7, #4] + 8001f72: 693a ldr r2, [r7, #16] + 8001f74: 605a str r2, [r3, #4] } /* Activate the Pull-up or Pull down resistor for the current IO */ if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) - 800216a: 683b ldr r3, [r7, #0] - 800216c: 685b ldr r3, [r3, #4] - 800216e: f003 0303 and.w r3, r3, #3 - 8002172: 2b03 cmp r3, #3 - 8002174: d017 beq.n 80021a6 + 8001f76: 683b ldr r3, [r7, #0] + 8001f78: 685b ldr r3, [r3, #4] + 8001f7a: f003 0303 and.w r3, r3, #3 + 8001f7e: 2b03 cmp r3, #3 + 8001f80: d017 beq.n 8001fb2 { temp = GPIOx->PUPDR; - 8002176: 687b ldr r3, [r7, #4] - 8002178: 68db ldr r3, [r3, #12] - 800217a: 613b str r3, [r7, #16] + 8001f82: 687b ldr r3, [r7, #4] + 8001f84: 68db ldr r3, [r3, #12] + 8001f86: 613b str r3, [r7, #16] temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2U)); - 800217c: 697b ldr r3, [r7, #20] - 800217e: 005b lsls r3, r3, #1 - 8002180: 2203 movs r2, #3 - 8002182: fa02 f303 lsl.w r3, r2, r3 - 8002186: 43db mvns r3, r3 - 8002188: 693a ldr r2, [r7, #16] - 800218a: 4013 ands r3, r2 - 800218c: 613b str r3, [r7, #16] + 8001f88: 697b ldr r3, [r7, #20] + 8001f8a: 005b lsls r3, r3, #1 + 8001f8c: 2203 movs r2, #3 + 8001f8e: fa02 f303 lsl.w r3, r2, r3 + 8001f92: 43db mvns r3, r3 + 8001f94: 693a ldr r2, [r7, #16] + 8001f96: 4013 ands r3, r2 + 8001f98: 613b str r3, [r7, #16] temp |= ((GPIO_Init->Pull) << (position * 2U)); - 800218e: 683b ldr r3, [r7, #0] - 8002190: 689a ldr r2, [r3, #8] - 8002192: 697b ldr r3, [r7, #20] - 8002194: 005b lsls r3, r3, #1 - 8002196: fa02 f303 lsl.w r3, r2, r3 - 800219a: 693a ldr r2, [r7, #16] - 800219c: 4313 orrs r3, r2 - 800219e: 613b str r3, [r7, #16] + 8001f9a: 683b ldr r3, [r7, #0] + 8001f9c: 689a ldr r2, [r3, #8] + 8001f9e: 697b ldr r3, [r7, #20] + 8001fa0: 005b lsls r3, r3, #1 + 8001fa2: fa02 f303 lsl.w r3, r2, r3 + 8001fa6: 693a ldr r2, [r7, #16] + 8001fa8: 4313 orrs r3, r2 + 8001faa: 613b str r3, [r7, #16] GPIOx->PUPDR = temp; - 80021a0: 687b ldr r3, [r7, #4] - 80021a2: 693a ldr r2, [r7, #16] - 80021a4: 60da str r2, [r3, #12] + 8001fac: 687b ldr r3, [r7, #4] + 8001fae: 693a ldr r2, [r7, #16] + 8001fb0: 60da str r2, [r3, #12] } /* In case of Alternate function mode selection */ if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) - 80021a6: 683b ldr r3, [r7, #0] - 80021a8: 685b ldr r3, [r3, #4] - 80021aa: f003 0303 and.w r3, r3, #3 - 80021ae: 2b02 cmp r3, #2 - 80021b0: d123 bne.n 80021fa + 8001fb2: 683b ldr r3, [r7, #0] + 8001fb4: 685b ldr r3, [r3, #4] + 8001fb6: f003 0303 and.w r3, r3, #3 + 8001fba: 2b02 cmp r3, #2 + 8001fbc: d123 bne.n 8002006 /* 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]; - 80021b2: 697b ldr r3, [r7, #20] - 80021b4: 08da lsrs r2, r3, #3 - 80021b6: 687b ldr r3, [r7, #4] - 80021b8: 3208 adds r2, #8 - 80021ba: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 80021be: 613b str r3, [r7, #16] + 8001fbe: 697b ldr r3, [r7, #20] + 8001fc0: 08da lsrs r2, r3, #3 + 8001fc2: 687b ldr r3, [r7, #4] + 8001fc4: 3208 adds r2, #8 + 8001fc6: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 8001fca: 613b str r3, [r7, #16] temp &= ~(0xFU << ((position & 0x07U) * 4U)); - 80021c0: 697b ldr r3, [r7, #20] - 80021c2: f003 0307 and.w r3, r3, #7 - 80021c6: 009b lsls r3, r3, #2 - 80021c8: 220f movs r2, #15 - 80021ca: fa02 f303 lsl.w r3, r2, r3 - 80021ce: 43db mvns r3, r3 - 80021d0: 693a ldr r2, [r7, #16] - 80021d2: 4013 ands r3, r2 - 80021d4: 613b str r3, [r7, #16] + 8001fcc: 697b ldr r3, [r7, #20] + 8001fce: f003 0307 and.w r3, r3, #7 + 8001fd2: 009b lsls r3, r3, #2 + 8001fd4: 220f movs r2, #15 + 8001fd6: fa02 f303 lsl.w r3, r2, r3 + 8001fda: 43db mvns r3, r3 + 8001fdc: 693a ldr r2, [r7, #16] + 8001fde: 4013 ands r3, r2 + 8001fe0: 613b str r3, [r7, #16] temp |= ((GPIO_Init->Alternate) << ((position & 0x07U) * 4U)); - 80021d6: 683b ldr r3, [r7, #0] - 80021d8: 691a ldr r2, [r3, #16] - 80021da: 697b ldr r3, [r7, #20] - 80021dc: f003 0307 and.w r3, r3, #7 - 80021e0: 009b lsls r3, r3, #2 - 80021e2: fa02 f303 lsl.w r3, r2, r3 - 80021e6: 693a ldr r2, [r7, #16] - 80021e8: 4313 orrs r3, r2 - 80021ea: 613b str r3, [r7, #16] + 8001fe2: 683b ldr r3, [r7, #0] + 8001fe4: 691a ldr r2, [r3, #16] + 8001fe6: 697b ldr r3, [r7, #20] + 8001fe8: f003 0307 and.w r3, r3, #7 + 8001fec: 009b lsls r3, r3, #2 + 8001fee: fa02 f303 lsl.w r3, r2, r3 + 8001ff2: 693a ldr r2, [r7, #16] + 8001ff4: 4313 orrs r3, r2 + 8001ff6: 613b str r3, [r7, #16] GPIOx->AFR[position >> 3u] = temp; - 80021ec: 697b ldr r3, [r7, #20] - 80021ee: 08da lsrs r2, r3, #3 - 80021f0: 687b ldr r3, [r7, #4] - 80021f2: 3208 adds r2, #8 - 80021f4: 6939 ldr r1, [r7, #16] - 80021f6: f843 1022 str.w r1, [r3, r2, lsl #2] + 8001ff8: 697b ldr r3, [r7, #20] + 8001ffa: 08da lsrs r2, r3, #3 + 8001ffc: 687b ldr r3, [r7, #4] + 8001ffe: 3208 adds r2, #8 + 8002000: 6939 ldr r1, [r7, #16] + 8002002: f843 1022 str.w r1, [r3, r2, lsl #2] } /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ temp = GPIOx->MODER; - 80021fa: 687b ldr r3, [r7, #4] - 80021fc: 681b ldr r3, [r3, #0] - 80021fe: 613b str r3, [r7, #16] + 8002006: 687b ldr r3, [r7, #4] + 8002008: 681b ldr r3, [r3, #0] + 800200a: 613b str r3, [r7, #16] temp &= ~(GPIO_MODER_MODE0 << (position * 2U)); - 8002200: 697b ldr r3, [r7, #20] - 8002202: 005b lsls r3, r3, #1 - 8002204: 2203 movs r2, #3 - 8002206: fa02 f303 lsl.w r3, r2, r3 - 800220a: 43db mvns r3, r3 - 800220c: 693a ldr r2, [r7, #16] - 800220e: 4013 ands r3, r2 - 8002210: 613b str r3, [r7, #16] + 800200c: 697b ldr r3, [r7, #20] + 800200e: 005b lsls r3, r3, #1 + 8002010: 2203 movs r2, #3 + 8002012: fa02 f303 lsl.w r3, r2, r3 + 8002016: 43db mvns r3, r3 + 8002018: 693a ldr r2, [r7, #16] + 800201a: 4013 ands r3, r2 + 800201c: 613b str r3, [r7, #16] temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U)); - 8002212: 683b ldr r3, [r7, #0] - 8002214: 685b ldr r3, [r3, #4] - 8002216: f003 0203 and.w r2, r3, #3 - 800221a: 697b ldr r3, [r7, #20] - 800221c: 005b lsls r3, r3, #1 - 800221e: fa02 f303 lsl.w r3, r2, r3 - 8002222: 693a ldr r2, [r7, #16] - 8002224: 4313 orrs r3, r2 - 8002226: 613b str r3, [r7, #16] + 800201e: 683b ldr r3, [r7, #0] + 8002020: 685b ldr r3, [r3, #4] + 8002022: f003 0203 and.w r2, r3, #3 + 8002026: 697b ldr r3, [r7, #20] + 8002028: 005b lsls r3, r3, #1 + 800202a: fa02 f303 lsl.w r3, r2, r3 + 800202e: 693a ldr r2, [r7, #16] + 8002030: 4313 orrs r3, r2 + 8002032: 613b str r3, [r7, #16] GPIOx->MODER = temp; - 8002228: 687b ldr r3, [r7, #4] - 800222a: 693a ldr r2, [r7, #16] - 800222c: 601a str r2, [r3, #0] + 8002034: 687b ldr r3, [r7, #4] + 8002036: 693a ldr r2, [r7, #16] + 8002038: 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) - 800222e: 683b ldr r3, [r7, #0] - 8002230: 685b ldr r3, [r3, #4] - 8002232: f403 3340 and.w r3, r3, #196608 ; 0x30000 - 8002236: 2b00 cmp r3, #0 - 8002238: f000 808c beq.w 8002354 + 800203a: 683b ldr r3, [r7, #0] + 800203c: 685b ldr r3, [r3, #4] + 800203e: f403 3340 and.w r3, r3, #196608 ; 0x30000 + 8002042: 2b00 cmp r3, #0 + 8002044: f000 808c beq.w 8002160 { temp = SYSCFG->EXTICR[position >> 2u]; - 800223c: 4a4e ldr r2, [pc, #312] ; (8002378 ) - 800223e: 697b ldr r3, [r7, #20] - 8002240: 089b lsrs r3, r3, #2 - 8002242: 3302 adds r3, #2 - 8002244: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 8002248: 613b str r3, [r7, #16] + 8002048: 4a4e ldr r2, [pc, #312] ; (8002184 ) + 800204a: 697b ldr r3, [r7, #20] + 800204c: 089b lsrs r3, r3, #2 + 800204e: 3302 adds r3, #2 + 8002050: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8002054: 613b str r3, [r7, #16] temp &= ~(0x07uL << (4U * (position & 0x03U))); - 800224a: 697b ldr r3, [r7, #20] - 800224c: f003 0303 and.w r3, r3, #3 - 8002250: 009b lsls r3, r3, #2 - 8002252: 2207 movs r2, #7 - 8002254: fa02 f303 lsl.w r3, r2, r3 - 8002258: 43db mvns r3, r3 - 800225a: 693a ldr r2, [r7, #16] - 800225c: 4013 ands r3, r2 - 800225e: 613b str r3, [r7, #16] + 8002056: 697b ldr r3, [r7, #20] + 8002058: f003 0303 and.w r3, r3, #3 + 800205c: 009b lsls r3, r3, #2 + 800205e: 2207 movs r2, #7 + 8002060: fa02 f303 lsl.w r3, r2, r3 + 8002064: 43db mvns r3, r3 + 8002066: 693a ldr r2, [r7, #16] + 8002068: 4013 ands r3, r2 + 800206a: 613b str r3, [r7, #16] temp |= (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U))); - 8002260: 687b ldr r3, [r7, #4] - 8002262: f1b3 4f90 cmp.w r3, #1207959552 ; 0x48000000 - 8002266: d00d beq.n 8002284 - 8002268: 687b ldr r3, [r7, #4] - 800226a: 4a44 ldr r2, [pc, #272] ; (800237c ) - 800226c: 4293 cmp r3, r2 - 800226e: d007 beq.n 8002280 - 8002270: 687b ldr r3, [r7, #4] - 8002272: 4a43 ldr r2, [pc, #268] ; (8002380 ) - 8002274: 4293 cmp r3, r2 - 8002276: d101 bne.n 800227c - 8002278: 2302 movs r3, #2 - 800227a: e004 b.n 8002286 - 800227c: 2307 movs r3, #7 - 800227e: e002 b.n 8002286 - 8002280: 2301 movs r3, #1 - 8002282: e000 b.n 8002286 - 8002284: 2300 movs r3, #0 - 8002286: 697a ldr r2, [r7, #20] - 8002288: f002 0203 and.w r2, r2, #3 - 800228c: 0092 lsls r2, r2, #2 - 800228e: 4093 lsls r3, r2 - 8002290: 693a ldr r2, [r7, #16] - 8002292: 4313 orrs r3, r2 - 8002294: 613b str r3, [r7, #16] + 800206c: 687b ldr r3, [r7, #4] + 800206e: f1b3 4f90 cmp.w r3, #1207959552 ; 0x48000000 + 8002072: d00d beq.n 8002090 + 8002074: 687b ldr r3, [r7, #4] + 8002076: 4a44 ldr r2, [pc, #272] ; (8002188 ) + 8002078: 4293 cmp r3, r2 + 800207a: d007 beq.n 800208c + 800207c: 687b ldr r3, [r7, #4] + 800207e: 4a43 ldr r2, [pc, #268] ; (800218c ) + 8002080: 4293 cmp r3, r2 + 8002082: d101 bne.n 8002088 + 8002084: 2302 movs r3, #2 + 8002086: e004 b.n 8002092 + 8002088: 2307 movs r3, #7 + 800208a: e002 b.n 8002092 + 800208c: 2301 movs r3, #1 + 800208e: e000 b.n 8002092 + 8002090: 2300 movs r3, #0 + 8002092: 697a ldr r2, [r7, #20] + 8002094: f002 0203 and.w r2, r2, #3 + 8002098: 0092 lsls r2, r2, #2 + 800209a: 4093 lsls r3, r2 + 800209c: 693a ldr r2, [r7, #16] + 800209e: 4313 orrs r3, r2 + 80020a0: 613b str r3, [r7, #16] SYSCFG->EXTICR[position >> 2u] = temp; - 8002296: 4938 ldr r1, [pc, #224] ; (8002378 ) - 8002298: 697b ldr r3, [r7, #20] - 800229a: 089b lsrs r3, r3, #2 - 800229c: 3302 adds r3, #2 - 800229e: 693a ldr r2, [r7, #16] - 80022a0: f841 2023 str.w r2, [r1, r3, lsl #2] + 80020a2: 4938 ldr r1, [pc, #224] ; (8002184 ) + 80020a4: 697b ldr r3, [r7, #20] + 80020a6: 089b lsrs r3, r3, #2 + 80020a8: 3302 adds r3, #2 + 80020aa: 693a ldr r2, [r7, #16] + 80020ac: f841 2023 str.w r2, [r1, r3, lsl #2] /* Clear Rising Falling edge configuration */ temp = EXTI->RTSR1; - 80022a4: 4b37 ldr r3, [pc, #220] ; (8002384 ) - 80022a6: 681b ldr r3, [r3, #0] - 80022a8: 613b str r3, [r7, #16] + 80020b0: 4b37 ldr r3, [pc, #220] ; (8002190 ) + 80020b2: 681b ldr r3, [r3, #0] + 80020b4: 613b str r3, [r7, #16] temp &= ~(iocurrent); - 80022aa: 68fb ldr r3, [r7, #12] - 80022ac: 43db mvns r3, r3 - 80022ae: 693a ldr r2, [r7, #16] - 80022b0: 4013 ands r3, r2 - 80022b2: 613b str r3, [r7, #16] + 80020b6: 68fb ldr r3, [r7, #12] + 80020b8: 43db mvns r3, r3 + 80020ba: 693a ldr r2, [r7, #16] + 80020bc: 4013 ands r3, r2 + 80020be: 613b str r3, [r7, #16] if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00u) - 80022b4: 683b ldr r3, [r7, #0] - 80022b6: 685b ldr r3, [r3, #4] - 80022b8: f403 1380 and.w r3, r3, #1048576 ; 0x100000 - 80022bc: 2b00 cmp r3, #0 - 80022be: d003 beq.n 80022c8 + 80020c0: 683b ldr r3, [r7, #0] + 80020c2: 685b ldr r3, [r3, #4] + 80020c4: f403 1380 and.w r3, r3, #1048576 ; 0x100000 + 80020c8: 2b00 cmp r3, #0 + 80020ca: d003 beq.n 80020d4 { temp |= iocurrent; - 80022c0: 693a ldr r2, [r7, #16] - 80022c2: 68fb ldr r3, [r7, #12] - 80022c4: 4313 orrs r3, r2 - 80022c6: 613b str r3, [r7, #16] + 80020cc: 693a ldr r2, [r7, #16] + 80020ce: 68fb ldr r3, [r7, #12] + 80020d0: 4313 orrs r3, r2 + 80020d2: 613b str r3, [r7, #16] } EXTI->RTSR1 = temp; - 80022c8: 4a2e ldr r2, [pc, #184] ; (8002384 ) - 80022ca: 693b ldr r3, [r7, #16] - 80022cc: 6013 str r3, [r2, #0] + 80020d4: 4a2e ldr r2, [pc, #184] ; (8002190 ) + 80020d6: 693b ldr r3, [r7, #16] + 80020d8: 6013 str r3, [r2, #0] temp = EXTI->FTSR1; - 80022ce: 4b2d ldr r3, [pc, #180] ; (8002384 ) - 80022d0: 685b ldr r3, [r3, #4] - 80022d2: 613b str r3, [r7, #16] + 80020da: 4b2d ldr r3, [pc, #180] ; (8002190 ) + 80020dc: 685b ldr r3, [r3, #4] + 80020de: 613b str r3, [r7, #16] temp &= ~(iocurrent); - 80022d4: 68fb ldr r3, [r7, #12] - 80022d6: 43db mvns r3, r3 - 80022d8: 693a ldr r2, [r7, #16] - 80022da: 4013 ands r3, r2 - 80022dc: 613b str r3, [r7, #16] + 80020e0: 68fb ldr r3, [r7, #12] + 80020e2: 43db mvns r3, r3 + 80020e4: 693a ldr r2, [r7, #16] + 80020e6: 4013 ands r3, r2 + 80020e8: 613b str r3, [r7, #16] if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00u) - 80022de: 683b ldr r3, [r7, #0] - 80022e0: 685b ldr r3, [r3, #4] - 80022e2: f403 1300 and.w r3, r3, #2097152 ; 0x200000 - 80022e6: 2b00 cmp r3, #0 - 80022e8: d003 beq.n 80022f2 + 80020ea: 683b ldr r3, [r7, #0] + 80020ec: 685b ldr r3, [r3, #4] + 80020ee: f403 1300 and.w r3, r3, #2097152 ; 0x200000 + 80020f2: 2b00 cmp r3, #0 + 80020f4: d003 beq.n 80020fe { temp |= iocurrent; - 80022ea: 693a ldr r2, [r7, #16] - 80022ec: 68fb ldr r3, [r7, #12] - 80022ee: 4313 orrs r3, r2 - 80022f0: 613b str r3, [r7, #16] + 80020f6: 693a ldr r2, [r7, #16] + 80020f8: 68fb ldr r3, [r7, #12] + 80020fa: 4313 orrs r3, r2 + 80020fc: 613b str r3, [r7, #16] } EXTI->FTSR1 = temp; - 80022f2: 4a24 ldr r2, [pc, #144] ; (8002384 ) - 80022f4: 693b ldr r3, [r7, #16] - 80022f6: 6053 str r3, [r2, #4] + 80020fe: 4a24 ldr r2, [pc, #144] ; (8002190 ) + 8002100: 693b ldr r3, [r7, #16] + 8002102: 6053 str r3, [r2, #4] /* Clear EXTI line configuration */ #ifdef CORE_CM0PLUS temp = EXTI->C2IMR1; #else temp = EXTI->IMR1; - 80022f8: 4b22 ldr r3, [pc, #136] ; (8002384 ) - 80022fa: f8d3 3080 ldr.w r3, [r3, #128] ; 0x80 - 80022fe: 613b str r3, [r7, #16] + 8002104: 4b22 ldr r3, [pc, #136] ; (8002190 ) + 8002106: f8d3 3080 ldr.w r3, [r3, #128] ; 0x80 + 800210a: 613b str r3, [r7, #16] #endif /* CORE_CM0PLUS */ temp &= ~(iocurrent); - 8002300: 68fb ldr r3, [r7, #12] - 8002302: 43db mvns r3, r3 - 8002304: 693a ldr r2, [r7, #16] - 8002306: 4013 ands r3, r2 - 8002308: 613b str r3, [r7, #16] + 800210c: 68fb ldr r3, [r7, #12] + 800210e: 43db mvns r3, r3 + 8002110: 693a ldr r2, [r7, #16] + 8002112: 4013 ands r3, r2 + 8002114: 613b str r3, [r7, #16] if ((GPIO_Init->Mode & EXTI_IT) != 0x00u) - 800230a: 683b ldr r3, [r7, #0] - 800230c: 685b ldr r3, [r3, #4] - 800230e: f403 3380 and.w r3, r3, #65536 ; 0x10000 - 8002312: 2b00 cmp r3, #0 - 8002314: d003 beq.n 800231e + 8002116: 683b ldr r3, [r7, #0] + 8002118: 685b ldr r3, [r3, #4] + 800211a: f403 3380 and.w r3, r3, #65536 ; 0x10000 + 800211e: 2b00 cmp r3, #0 + 8002120: d003 beq.n 800212a { temp |= iocurrent; - 8002316: 693a ldr r2, [r7, #16] - 8002318: 68fb ldr r3, [r7, #12] - 800231a: 4313 orrs r3, r2 - 800231c: 613b str r3, [r7, #16] + 8002122: 693a ldr r2, [r7, #16] + 8002124: 68fb ldr r3, [r7, #12] + 8002126: 4313 orrs r3, r2 + 8002128: 613b str r3, [r7, #16] } #ifdef CORE_CM0PLUS EXTI->C2IMR1 = temp; #else EXTI->IMR1 = temp; - 800231e: 4a19 ldr r2, [pc, #100] ; (8002384 ) - 8002320: 693b ldr r3, [r7, #16] - 8002322: f8c2 3080 str.w r3, [r2, #128] ; 0x80 + 800212a: 4a19 ldr r2, [pc, #100] ; (8002190 ) + 800212c: 693b ldr r3, [r7, #16] + 800212e: f8c2 3080 str.w r3, [r2, #128] ; 0x80 #endif /* CORE_CM0PLUS */ #ifdef CORE_CM0PLUS temp = EXTI->C2EMR1; #else temp = EXTI->EMR1; - 8002326: 4b17 ldr r3, [pc, #92] ; (8002384 ) - 8002328: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 - 800232c: 613b str r3, [r7, #16] + 8002132: 4b17 ldr r3, [pc, #92] ; (8002190 ) + 8002134: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 + 8002138: 613b str r3, [r7, #16] #endif /* CORE_CM0PLUS */ temp &= ~(iocurrent); - 800232e: 68fb ldr r3, [r7, #12] - 8002330: 43db mvns r3, r3 - 8002332: 693a ldr r2, [r7, #16] - 8002334: 4013 ands r3, r2 - 8002336: 613b str r3, [r7, #16] + 800213a: 68fb ldr r3, [r7, #12] + 800213c: 43db mvns r3, r3 + 800213e: 693a ldr r2, [r7, #16] + 8002140: 4013 ands r3, r2 + 8002142: 613b str r3, [r7, #16] if ((GPIO_Init->Mode & EXTI_EVT) != 0x00u) - 8002338: 683b ldr r3, [r7, #0] - 800233a: 685b ldr r3, [r3, #4] - 800233c: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 8002340: 2b00 cmp r3, #0 - 8002342: d003 beq.n 800234c + 8002144: 683b ldr r3, [r7, #0] + 8002146: 685b ldr r3, [r3, #4] + 8002148: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 800214c: 2b00 cmp r3, #0 + 800214e: d003 beq.n 8002158 { temp |= iocurrent; - 8002344: 693a ldr r2, [r7, #16] - 8002346: 68fb ldr r3, [r7, #12] - 8002348: 4313 orrs r3, r2 - 800234a: 613b str r3, [r7, #16] + 8002150: 693a ldr r2, [r7, #16] + 8002152: 68fb ldr r3, [r7, #12] + 8002154: 4313 orrs r3, r2 + 8002156: 613b str r3, [r7, #16] } #ifdef CORE_CM0PLUS EXTI->C2EMR1 = temp; #else EXTI->EMR1 = temp; - 800234c: 4a0d ldr r2, [pc, #52] ; (8002384 ) - 800234e: 693b ldr r3, [r7, #16] - 8002350: f8c2 3084 str.w r3, [r2, #132] ; 0x84 + 8002158: 4a0d ldr r2, [pc, #52] ; (8002190 ) + 800215a: 693b ldr r3, [r7, #16] + 800215c: f8c2 3084 str.w r3, [r2, #132] ; 0x84 #endif /* CORE_CM0PLUS */ } } position++; - 8002354: 697b ldr r3, [r7, #20] - 8002356: 3301 adds r3, #1 - 8002358: 617b str r3, [r7, #20] + 8002160: 697b ldr r3, [r7, #20] + 8002162: 3301 adds r3, #1 + 8002164: 617b str r3, [r7, #20] while (((GPIO_Init->Pin) >> position) != 0x00u) - 800235a: 683b ldr r3, [r7, #0] - 800235c: 681a ldr r2, [r3, #0] - 800235e: 697b ldr r3, [r7, #20] - 8002360: fa22 f303 lsr.w r3, r2, r3 - 8002364: 2b00 cmp r3, #0 - 8002366: f47f aeb7 bne.w 80020d8 + 8002166: 683b ldr r3, [r7, #0] + 8002168: 681a ldr r2, [r3, #0] + 800216a: 697b ldr r3, [r7, #20] + 800216c: fa22 f303 lsr.w r3, r2, r3 + 8002170: 2b00 cmp r3, #0 + 8002172: f47f aeb7 bne.w 8001ee4 } } - 800236a: bf00 nop - 800236c: bf00 nop - 800236e: 371c adds r7, #28 - 8002370: 46bd mov sp, r7 - 8002372: bc80 pop {r7} - 8002374: 4770 bx lr - 8002376: bf00 nop - 8002378: 40010000 .word 0x40010000 - 800237c: 48000400 .word 0x48000400 - 8002380: 48000800 .word 0x48000800 - 8002384: 58000800 .word 0x58000800 - -08002388 : + 8002176: bf00 nop + 8002178: bf00 nop + 800217a: 371c adds r7, #28 + 800217c: 46bd mov sp, r7 + 800217e: bc80 pop {r7} + 8002180: 4770 bx lr + 8002182: bf00 nop + 8002184: 40010000 .word 0x40010000 + 8002188: 48000400 .word 0x48000400 + 800218c: 48000800 .word 0x48000800 + 8002190: 58000800 .word 0x58000800 + +08002194 : * @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) { - 8002388: b480 push {r7} - 800238a: b083 sub sp, #12 - 800238c: af00 add r7, sp, #0 - 800238e: 6078 str r0, [r7, #4] - 8002390: 460b mov r3, r1 - 8002392: 807b strh r3, [r7, #2] - 8002394: 4613 mov r3, r2 - 8002396: 707b strb r3, [r7, #1] + 8002194: b480 push {r7} + 8002196: b083 sub sp, #12 + 8002198: af00 add r7, sp, #0 + 800219a: 6078 str r0, [r7, #4] + 800219c: 460b mov r3, r1 + 800219e: 807b strh r3, [r7, #2] + 80021a0: 4613 mov r3, r2 + 80021a2: 707b strb r3, [r7, #1] /* Check the parameters */ assert_param(IS_GPIO_PIN(GPIO_Pin)); assert_param(IS_GPIO_PIN_ACTION(PinState)); if (PinState != GPIO_PIN_RESET) - 8002398: 787b ldrb r3, [r7, #1] - 800239a: 2b00 cmp r3, #0 - 800239c: d003 beq.n 80023a6 + 80021a4: 787b ldrb r3, [r7, #1] + 80021a6: 2b00 cmp r3, #0 + 80021a8: d003 beq.n 80021b2 { GPIOx->BSRR = (uint32_t)GPIO_Pin; - 800239e: 887a ldrh r2, [r7, #2] - 80023a0: 687b ldr r3, [r7, #4] - 80023a2: 619a str r2, [r3, #24] + 80021aa: 887a ldrh r2, [r7, #2] + 80021ac: 687b ldr r3, [r7, #4] + 80021ae: 619a str r2, [r3, #24] } else { GPIOx->BRR = (uint32_t)GPIO_Pin; } } - 80023a4: e002 b.n 80023ac + 80021b0: e002 b.n 80021b8 GPIOx->BRR = (uint32_t)GPIO_Pin; - 80023a6: 887a ldrh r2, [r7, #2] - 80023a8: 687b ldr r3, [r7, #4] - 80023aa: 629a str r2, [r3, #40] ; 0x28 -} - 80023ac: bf00 nop - 80023ae: 370c adds r7, #12 - 80023b0: 46bd mov sp, r7 - 80023b2: bc80 pop {r7} - 80023b4: 4770 bx lr + 80021b2: 887a ldrh r2, [r7, #2] + 80021b4: 687b ldr r3, [r7, #4] + 80021b6: 629a str r2, [r3, #40] ; 0x28 +} + 80021b8: bf00 nop + 80021ba: 370c adds r7, #12 + 80021bc: 46bd mov sp, r7 + 80021be: bc80 pop {r7} + 80021c0: 4770 bx lr ... -080023b8 : +080021c4 : * @note LSEON bit that switches on and off the LSE crystal belongs as well to the * backup domain. * @retval None */ void HAL_PWR_EnableBkUpAccess(void) { - 80023b8: b480 push {r7} - 80023ba: af00 add r7, sp, #0 + 80021c4: b480 push {r7} + 80021c6: af00 add r7, sp, #0 SET_BIT(PWR->CR1, PWR_CR1_DBP); - 80023bc: 4b04 ldr r3, [pc, #16] ; (80023d0 ) - 80023be: 681b ldr r3, [r3, #0] - 80023c0: 4a03 ldr r2, [pc, #12] ; (80023d0 ) - 80023c2: f443 7380 orr.w r3, r3, #256 ; 0x100 - 80023c6: 6013 str r3, [r2, #0] -} - 80023c8: bf00 nop - 80023ca: 46bd mov sp, r7 - 80023cc: bc80 pop {r7} - 80023ce: 4770 bx lr - 80023d0: 58000400 .word 0x58000400 - -080023d4 : + 80021c8: 4b04 ldr r3, [pc, #16] ; (80021dc ) + 80021ca: 681b ldr r3, [r3, #0] + 80021cc: 4a03 ldr r2, [pc, #12] ; (80021dc ) + 80021ce: f443 7380 orr.w r3, r3, #256 ; 0x100 + 80021d2: 6013 str r3, [r2, #0] +} + 80021d4: bf00 nop + 80021d6: 46bd mov sp, r7 + 80021d8: bc80 pop {r7} + 80021da: 4770 bx lr + 80021dc: 58000400 .word 0x58000400 + +080021e0 : /** * @brief Return Voltage Scaling Range. * @retval VOS bit field (PWR_REGULATOR_VOLTAGE_SCALE1 or PWPWR_REGULATOR_VOLTAGE_SCALE2) */ uint32_t HAL_PWREx_GetVoltageRange(void) { - 80023d4: b480 push {r7} - 80023d6: af00 add r7, sp, #0 + 80021e0: b480 push {r7} + 80021e2: af00 add r7, sp, #0 return (PWR->CR1 & PWR_CR1_VOS); - 80023d8: 4b03 ldr r3, [pc, #12] ; (80023e8 ) - 80023da: 681b ldr r3, [r3, #0] - 80023dc: f403 63c0 and.w r3, r3, #1536 ; 0x600 + 80021e4: 4b03 ldr r3, [pc, #12] ; (80021f4 ) + 80021e6: 681b ldr r3, [r3, #0] + 80021e8: f403 63c0 and.w r3, r3, #1536 ; 0x600 } - 80023e0: 4618 mov r0, r3 - 80023e2: 46bd mov sp, r7 - 80023e4: bc80 pop {r7} - 80023e6: 4770 bx lr - 80023e8: 58000400 .word 0x58000400 + 80021ec: 4618 mov r0, r3 + 80021ee: 46bd mov sp, r7 + 80021f0: bc80 pop {r7} + 80021f2: 4770 bx lr + 80021f4: 58000400 .word 0x58000400 -080023ec : +080021f8 : * @brief Check if the backup domain is enabled * @rmtoll CR1 DBP LL_PWR_IsEnabledBkUpAccess * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t LL_PWR_IsEnabledBkUpAccess(void) { - 80023ec: b480 push {r7} - 80023ee: af00 add r7, sp, #0 + 80021f8: b480 push {r7} + 80021fa: af00 add r7, sp, #0 return ((READ_BIT(PWR->CR1, PWR_CR1_DBP) == (PWR_CR1_DBP)) ? 1UL : 0UL); - 80023f0: 4b06 ldr r3, [pc, #24] ; (800240c ) - 80023f2: 681b ldr r3, [r3, #0] - 80023f4: f403 7380 and.w r3, r3, #256 ; 0x100 - 80023f8: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 80023fc: d101 bne.n 8002402 - 80023fe: 2301 movs r3, #1 - 8002400: e000 b.n 8002404 - 8002402: 2300 movs r3, #0 -} - 8002404: 4618 mov r0, r3 - 8002406: 46bd mov sp, r7 - 8002408: bc80 pop {r7} - 800240a: 4770 bx lr - 800240c: 58000400 .word 0x58000400 - -08002410 : -{ - 8002410: b480 push {r7} - 8002412: af00 add r7, sp, #0 + 80021fc: 4b06 ldr r3, [pc, #24] ; (8002218 ) + 80021fe: 681b ldr r3, [r3, #0] + 8002200: f403 7380 and.w r3, r3, #256 ; 0x100 + 8002204: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 8002208: d101 bne.n 800220e + 800220a: 2301 movs r3, #1 + 800220c: e000 b.n 8002210 + 800220e: 2300 movs r3, #0 +} + 8002210: 4618 mov r0, r3 + 8002212: 46bd mov sp, r7 + 8002214: bc80 pop {r7} + 8002216: 4770 bx lr + 8002218: 58000400 .word 0x58000400 + +0800221c : +{ + 800221c: b480 push {r7} + 800221e: af00 add r7, sp, #0 SET_BIT(RCC->CR, RCC_CR_HSEBYPPWR); - 8002414: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002418: 681b ldr r3, [r3, #0] - 800241a: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 800241e: f443 1300 orr.w r3, r3, #2097152 ; 0x200000 - 8002422: 6013 str r3, [r2, #0] + 8002220: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002224: 681b ldr r3, [r3, #0] + 8002226: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800222a: f443 1300 orr.w r3, r3, #2097152 ; 0x200000 + 800222e: 6013 str r3, [r2, #0] } - 8002424: bf00 nop - 8002426: 46bd mov sp, r7 - 8002428: bc80 pop {r7} - 800242a: 4770 bx lr + 8002230: bf00 nop + 8002232: 46bd mov sp, r7 + 8002234: bc80 pop {r7} + 8002236: 4770 bx lr -0800242c : +08002238 : { - 800242c: b480 push {r7} - 800242e: af00 add r7, sp, #0 + 8002238: b480 push {r7} + 800223a: af00 add r7, sp, #0 CLEAR_BIT(RCC->CR, RCC_CR_HSEBYPPWR); - 8002430: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002434: 681b ldr r3, [r3, #0] - 8002436: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 800243a: f423 1300 bic.w r3, r3, #2097152 ; 0x200000 - 800243e: 6013 str r3, [r2, #0] -} - 8002440: bf00 nop - 8002442: 46bd mov sp, r7 - 8002444: bc80 pop {r7} - 8002446: 4770 bx lr - -08002448 : + 800223c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002240: 681b ldr r3, [r3, #0] + 8002242: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8002246: f423 1300 bic.w r3, r3, #2097152 ; 0x200000 + 800224a: 6013 str r3, [r2, #0] +} + 800224c: bf00 nop + 800224e: 46bd mov sp, r7 + 8002250: bc80 pop {r7} + 8002252: 4770 bx lr + +08002254 : * @brief Get HSE sysclk and pll prescaler division by 2 * @rmtoll CR HSEPRE LL_RCC_HSE_IsEnabledDiv2 * @retval None */ __STATIC_INLINE uint32_t LL_RCC_HSE_IsEnabledDiv2(void) { - 8002448: b480 push {r7} - 800244a: af00 add r7, sp, #0 + 8002254: b480 push {r7} + 8002256: af00 add r7, sp, #0 return ((READ_BIT(RCC->CR, RCC_CR_HSEPRE) == (RCC_CR_HSEPRE)) ? 1UL : 0UL); - 800244c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002450: 681b ldr r3, [r3, #0] - 8002452: f403 1380 and.w r3, r3, #1048576 ; 0x100000 - 8002456: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 - 800245a: d101 bne.n 8002460 - 800245c: 2301 movs r3, #1 - 800245e: e000 b.n 8002462 - 8002460: 2300 movs r3, #0 -} - 8002462: 4618 mov r0, r3 - 8002464: 46bd mov sp, r7 - 8002466: bc80 pop {r7} - 8002468: 4770 bx lr - -0800246a : + 8002258: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800225c: 681b ldr r3, [r3, #0] + 800225e: f403 1380 and.w r3, r3, #1048576 ; 0x100000 + 8002262: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 + 8002266: d101 bne.n 800226c + 8002268: 2301 movs r3, #1 + 800226a: e000 b.n 800226e + 800226c: 2300 movs r3, #0 +} + 800226e: 4618 mov r0, r3 + 8002270: 46bd mov sp, r7 + 8002272: bc80 pop {r7} + 8002274: 4770 bx lr + +08002276 : * @brief Enable HSE crystal oscillator (HSE ON) * @rmtoll CR HSEON LL_RCC_HSE_Enable * @retval None */ __STATIC_INLINE void LL_RCC_HSE_Enable(void) { - 800246a: b480 push {r7} - 800246c: af00 add r7, sp, #0 + 8002276: b480 push {r7} + 8002278: af00 add r7, sp, #0 SET_BIT(RCC->CR, RCC_CR_HSEON); - 800246e: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002472: 681b ldr r3, [r3, #0] - 8002474: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 8002478: f443 3380 orr.w r3, r3, #65536 ; 0x10000 - 800247c: 6013 str r3, [r2, #0] -} - 800247e: bf00 nop - 8002480: 46bd mov sp, r7 - 8002482: bc80 pop {r7} - 8002484: 4770 bx lr - -08002486 : + 800227a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800227e: 681b ldr r3, [r3, #0] + 8002280: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8002284: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 8002288: 6013 str r3, [r2, #0] +} + 800228a: bf00 nop + 800228c: 46bd mov sp, r7 + 800228e: bc80 pop {r7} + 8002290: 4770 bx lr + +08002292 : * @brief Disable HSE crystal oscillator (HSE ON) * @rmtoll CR HSEON LL_RCC_HSE_Disable * @retval None */ __STATIC_INLINE void LL_RCC_HSE_Disable(void) { - 8002486: b480 push {r7} - 8002488: af00 add r7, sp, #0 + 8002292: b480 push {r7} + 8002294: af00 add r7, sp, #0 CLEAR_BIT(RCC->CR, RCC_CR_HSEON); - 800248a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800248e: 681b ldr r3, [r3, #0] - 8002490: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 8002494: f423 3380 bic.w r3, r3, #65536 ; 0x10000 - 8002498: 6013 str r3, [r2, #0] -} - 800249a: bf00 nop - 800249c: 46bd mov sp, r7 - 800249e: bc80 pop {r7} - 80024a0: 4770 bx lr - -080024a2 : + 8002296: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800229a: 681b ldr r3, [r3, #0] + 800229c: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 80022a0: f423 3380 bic.w r3, r3, #65536 ; 0x10000 + 80022a4: 6013 str r3, [r2, #0] +} + 80022a6: bf00 nop + 80022a8: 46bd mov sp, r7 + 80022aa: bc80 pop {r7} + 80022ac: 4770 bx lr + +080022ae : * @brief Check if HSE oscillator Ready * @rmtoll CR HSERDY LL_RCC_HSE_IsReady * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t LL_RCC_HSE_IsReady(void) { - 80024a2: b480 push {r7} - 80024a4: af00 add r7, sp, #0 + 80022ae: b480 push {r7} + 80022b0: af00 add r7, sp, #0 return ((READ_BIT(RCC->CR, RCC_CR_HSERDY) == (RCC_CR_HSERDY)) ? 1UL : 0UL); - 80024a6: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80024aa: 681b ldr r3, [r3, #0] - 80024ac: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 80024b0: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 - 80024b4: d101 bne.n 80024ba - 80024b6: 2301 movs r3, #1 - 80024b8: e000 b.n 80024bc - 80024ba: 2300 movs r3, #0 -} - 80024bc: 4618 mov r0, r3 - 80024be: 46bd mov sp, r7 - 80024c0: bc80 pop {r7} - 80024c2: 4770 bx lr - -080024c4 : + 80022b2: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80022b6: 681b ldr r3, [r3, #0] + 80022b8: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 80022bc: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 + 80022c0: d101 bne.n 80022c6 + 80022c2: 2301 movs r3, #1 + 80022c4: e000 b.n 80022c8 + 80022c6: 2300 movs r3, #0 +} + 80022c8: 4618 mov r0, r3 + 80022ca: 46bd mov sp, r7 + 80022cc: bc80 pop {r7} + 80022ce: 4770 bx lr + +080022d0 : * @brief Enable HSI oscillator * @rmtoll CR HSION LL_RCC_HSI_Enable * @retval None */ __STATIC_INLINE void LL_RCC_HSI_Enable(void) { - 80024c4: b480 push {r7} - 80024c6: af00 add r7, sp, #0 + 80022d0: b480 push {r7} + 80022d2: af00 add r7, sp, #0 SET_BIT(RCC->CR, RCC_CR_HSION); - 80024c8: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80024cc: 681b ldr r3, [r3, #0] - 80024ce: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 80024d2: f443 7380 orr.w r3, r3, #256 ; 0x100 - 80024d6: 6013 str r3, [r2, #0] -} - 80024d8: bf00 nop - 80024da: 46bd mov sp, r7 - 80024dc: bc80 pop {r7} - 80024de: 4770 bx lr - -080024e0 : + 80022d4: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80022d8: 681b ldr r3, [r3, #0] + 80022da: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 80022de: f443 7380 orr.w r3, r3, #256 ; 0x100 + 80022e2: 6013 str r3, [r2, #0] +} + 80022e4: bf00 nop + 80022e6: 46bd mov sp, r7 + 80022e8: bc80 pop {r7} + 80022ea: 4770 bx lr + +080022ec : * @brief Disable HSI oscillator * @rmtoll CR HSION LL_RCC_HSI_Disable * @retval None */ __STATIC_INLINE void LL_RCC_HSI_Disable(void) { - 80024e0: b480 push {r7} - 80024e2: af00 add r7, sp, #0 + 80022ec: b480 push {r7} + 80022ee: af00 add r7, sp, #0 CLEAR_BIT(RCC->CR, RCC_CR_HSION); - 80024e4: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80024e8: 681b ldr r3, [r3, #0] - 80024ea: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 80024ee: f423 7380 bic.w r3, r3, #256 ; 0x100 - 80024f2: 6013 str r3, [r2, #0] -} - 80024f4: bf00 nop - 80024f6: 46bd mov sp, r7 - 80024f8: bc80 pop {r7} - 80024fa: 4770 bx lr - -080024fc : + 80022f0: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80022f4: 681b ldr r3, [r3, #0] + 80022f6: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 80022fa: f423 7380 bic.w r3, r3, #256 ; 0x100 + 80022fe: 6013 str r3, [r2, #0] +} + 8002300: bf00 nop + 8002302: 46bd mov sp, r7 + 8002304: bc80 pop {r7} + 8002306: 4770 bx lr + +08002308 : * @brief Check if HSI clock is ready * @rmtoll CR HSIRDY LL_RCC_HSI_IsReady * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t LL_RCC_HSI_IsReady(void) { - 80024fc: b480 push {r7} - 80024fe: af00 add r7, sp, #0 + 8002308: b480 push {r7} + 800230a: af00 add r7, sp, #0 return ((READ_BIT(RCC->CR, RCC_CR_HSIRDY) == (RCC_CR_HSIRDY)) ? 1UL : 0UL); - 8002500: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002504: 681b ldr r3, [r3, #0] - 8002506: f403 6380 and.w r3, r3, #1024 ; 0x400 - 800250a: f5b3 6f80 cmp.w r3, #1024 ; 0x400 - 800250e: d101 bne.n 8002514 - 8002510: 2301 movs r3, #1 - 8002512: e000 b.n 8002516 - 8002514: 2300 movs r3, #0 -} - 8002516: 4618 mov r0, r3 - 8002518: 46bd mov sp, r7 - 800251a: bc80 pop {r7} - 800251c: 4770 bx lr - -0800251e : + 800230c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002310: 681b ldr r3, [r3, #0] + 8002312: f403 6380 and.w r3, r3, #1024 ; 0x400 + 8002316: f5b3 6f80 cmp.w r3, #1024 ; 0x400 + 800231a: d101 bne.n 8002320 + 800231c: 2301 movs r3, #1 + 800231e: e000 b.n 8002322 + 8002320: 2300 movs r3, #0 +} + 8002322: 4618 mov r0, r3 + 8002324: 46bd mov sp, r7 + 8002326: bc80 pop {r7} + 8002328: 4770 bx lr + +0800232a : * @rmtoll ICSCR HSITRIM LL_RCC_HSI_SetCalibTrimming * @param Value Between Min_Data = 0 and Max_Data = 127 * @retval None */ __STATIC_INLINE void LL_RCC_HSI_SetCalibTrimming(uint32_t Value) { - 800251e: b480 push {r7} - 8002520: b083 sub sp, #12 - 8002522: af00 add r7, sp, #0 - 8002524: 6078 str r0, [r7, #4] + 800232a: b480 push {r7} + 800232c: b083 sub sp, #12 + 800232e: af00 add r7, sp, #0 + 8002330: 6078 str r0, [r7, #4] MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSITRIM, Value << RCC_ICSCR_HSITRIM_Pos); - 8002526: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800252a: 685b ldr r3, [r3, #4] - 800252c: f023 42fe bic.w r2, r3, #2130706432 ; 0x7f000000 - 8002530: 687b ldr r3, [r7, #4] - 8002532: 061b lsls r3, r3, #24 - 8002534: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 8002538: 4313 orrs r3, r2 - 800253a: 604b str r3, [r1, #4] -} - 800253c: bf00 nop - 800253e: 370c adds r7, #12 - 8002540: 46bd mov sp, r7 - 8002542: bc80 pop {r7} - 8002544: 4770 bx lr - -08002546 : + 8002332: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002336: 685b ldr r3, [r3, #4] + 8002338: f023 42fe bic.w r2, r3, #2130706432 ; 0x7f000000 + 800233c: 687b ldr r3, [r7, #4] + 800233e: 061b lsls r3, r3, #24 + 8002340: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 8002344: 4313 orrs r3, r2 + 8002346: 604b str r3, [r1, #4] +} + 8002348: bf00 nop + 800234a: 370c adds r7, #12 + 800234c: 46bd mov sp, r7 + 800234e: bc80 pop {r7} + 8002350: 4770 bx lr + +08002352 : * @brief Check if LSE oscillator Ready * @rmtoll BDCR LSERDY LL_RCC_LSE_IsReady * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t LL_RCC_LSE_IsReady(void) { - 8002546: b480 push {r7} - 8002548: af00 add r7, sp, #0 + 8002352: b480 push {r7} + 8002354: af00 add r7, sp, #0 return ((READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == (RCC_BDCR_LSERDY)) ? 1UL : 0UL); - 800254a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800254e: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8002552: f003 0302 and.w r3, r3, #2 - 8002556: 2b02 cmp r3, #2 - 8002558: d101 bne.n 800255e - 800255a: 2301 movs r3, #1 - 800255c: e000 b.n 8002560 - 800255e: 2300 movs r3, #0 -} - 8002560: 4618 mov r0, r3 - 8002562: 46bd mov sp, r7 - 8002564: bc80 pop {r7} - 8002566: 4770 bx lr - -08002568 : + 8002356: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800235a: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 800235e: f003 0302 and.w r3, r3, #2 + 8002362: 2b02 cmp r3, #2 + 8002364: d101 bne.n 800236a + 8002366: 2301 movs r3, #1 + 8002368: e000 b.n 800236c + 800236a: 2300 movs r3, #0 +} + 800236c: 4618 mov r0, r3 + 800236e: 46bd mov sp, r7 + 8002370: bc80 pop {r7} + 8002372: 4770 bx lr + +08002374 : * @brief Enable LSI Oscillator * @rmtoll CSR LSION LL_RCC_LSI_Enable * @retval None */ __STATIC_INLINE void LL_RCC_LSI_Enable(void) { - 8002568: b480 push {r7} - 800256a: af00 add r7, sp, #0 + 8002374: b480 push {r7} + 8002376: af00 add r7, sp, #0 SET_BIT(RCC->CSR, RCC_CSR_LSION); - 800256c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002570: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 - 8002574: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 8002578: f043 0301 orr.w r3, r3, #1 - 800257c: f8c2 3094 str.w r3, [r2, #148] ; 0x94 -} - 8002580: bf00 nop - 8002582: 46bd mov sp, r7 - 8002584: bc80 pop {r7} - 8002586: 4770 bx lr - -08002588 : + 8002378: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800237c: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 + 8002380: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8002384: f043 0301 orr.w r3, r3, #1 + 8002388: f8c2 3094 str.w r3, [r2, #148] ; 0x94 +} + 800238c: bf00 nop + 800238e: 46bd mov sp, r7 + 8002390: bc80 pop {r7} + 8002392: 4770 bx lr + +08002394 : * @brief Disable LSI Oscillator * @rmtoll CSR LSION LL_RCC_LSI_Disable * @retval None */ __STATIC_INLINE void LL_RCC_LSI_Disable(void) { - 8002588: b480 push {r7} - 800258a: af00 add r7, sp, #0 + 8002394: b480 push {r7} + 8002396: af00 add r7, sp, #0 CLEAR_BIT(RCC->CSR, RCC_CSR_LSION); - 800258c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002590: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 - 8002594: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 8002598: f023 0301 bic.w r3, r3, #1 - 800259c: f8c2 3094 str.w r3, [r2, #148] ; 0x94 -} - 80025a0: bf00 nop - 80025a2: 46bd mov sp, r7 - 80025a4: bc80 pop {r7} - 80025a6: 4770 bx lr - -080025a8 : + 8002398: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800239c: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 + 80023a0: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 80023a4: f023 0301 bic.w r3, r3, #1 + 80023a8: f8c2 3094 str.w r3, [r2, #148] ; 0x94 +} + 80023ac: bf00 nop + 80023ae: 46bd mov sp, r7 + 80023b0: bc80 pop {r7} + 80023b2: 4770 bx lr + +080023b4 : * @brief Check if LSI is Ready * @rmtoll CSR LSIRDY LL_RCC_LSI_IsReady * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t LL_RCC_LSI_IsReady(void) { - 80025a8: b480 push {r7} - 80025aa: af00 add r7, sp, #0 + 80023b4: b480 push {r7} + 80023b6: af00 add r7, sp, #0 return ((READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == (RCC_CSR_LSIRDY)) ? 1UL : 0UL); - 80025ac: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80025b0: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 - 80025b4: f003 0302 and.w r3, r3, #2 - 80025b8: 2b02 cmp r3, #2 - 80025ba: d101 bne.n 80025c0 - 80025bc: 2301 movs r3, #1 - 80025be: e000 b.n 80025c2 - 80025c0: 2300 movs r3, #0 -} - 80025c2: 4618 mov r0, r3 - 80025c4: 46bd mov sp, r7 - 80025c6: bc80 pop {r7} - 80025c8: 4770 bx lr - -080025ca : + 80023b8: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80023bc: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 + 80023c0: f003 0302 and.w r3, r3, #2 + 80023c4: 2b02 cmp r3, #2 + 80023c6: d101 bne.n 80023cc + 80023c8: 2301 movs r3, #1 + 80023ca: e000 b.n 80023ce + 80023cc: 2300 movs r3, #0 +} + 80023ce: 4618 mov r0, r3 + 80023d0: 46bd mov sp, r7 + 80023d2: bc80 pop {r7} + 80023d4: 4770 bx lr + +080023d6 : * @brief Enable MSI oscillator * @rmtoll CR MSION LL_RCC_MSI_Enable * @retval None */ __STATIC_INLINE void LL_RCC_MSI_Enable(void) { - 80025ca: b480 push {r7} - 80025cc: af00 add r7, sp, #0 + 80023d6: b480 push {r7} + 80023d8: af00 add r7, sp, #0 SET_BIT(RCC->CR, RCC_CR_MSION); - 80025ce: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80025d2: 681b ldr r3, [r3, #0] - 80025d4: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 80025d8: f043 0301 orr.w r3, r3, #1 - 80025dc: 6013 str r3, [r2, #0] -} - 80025de: bf00 nop - 80025e0: 46bd mov sp, r7 - 80025e2: bc80 pop {r7} - 80025e4: 4770 bx lr - -080025e6 : + 80023da: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80023de: 681b ldr r3, [r3, #0] + 80023e0: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 80023e4: f043 0301 orr.w r3, r3, #1 + 80023e8: 6013 str r3, [r2, #0] +} + 80023ea: bf00 nop + 80023ec: 46bd mov sp, r7 + 80023ee: bc80 pop {r7} + 80023f0: 4770 bx lr + +080023f2 : * @brief Disable MSI oscillator * @rmtoll CR MSION LL_RCC_MSI_Disable * @retval None */ __STATIC_INLINE void LL_RCC_MSI_Disable(void) { - 80025e6: b480 push {r7} - 80025e8: af00 add r7, sp, #0 + 80023f2: b480 push {r7} + 80023f4: af00 add r7, sp, #0 CLEAR_BIT(RCC->CR, RCC_CR_MSION); - 80025ea: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80025ee: 681b ldr r3, [r3, #0] - 80025f0: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 80025f4: f023 0301 bic.w r3, r3, #1 - 80025f8: 6013 str r3, [r2, #0] -} - 80025fa: bf00 nop - 80025fc: 46bd mov sp, r7 - 80025fe: bc80 pop {r7} - 8002600: 4770 bx lr - -08002602 : + 80023f6: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80023fa: 681b ldr r3, [r3, #0] + 80023fc: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8002400: f023 0301 bic.w r3, r3, #1 + 8002404: 6013 str r3, [r2, #0] +} + 8002406: bf00 nop + 8002408: 46bd mov sp, r7 + 800240a: bc80 pop {r7} + 800240c: 4770 bx lr + +0800240e : * @brief Check if MSI oscillator Ready * @rmtoll CR MSIRDY LL_RCC_MSI_IsReady * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t LL_RCC_MSI_IsReady(void) { - 8002602: b480 push {r7} - 8002604: af00 add r7, sp, #0 + 800240e: b480 push {r7} + 8002410: af00 add r7, sp, #0 return ((READ_BIT(RCC->CR, RCC_CR_MSIRDY) == (RCC_CR_MSIRDY)) ? 1UL : 0UL); - 8002606: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800260a: 681b ldr r3, [r3, #0] - 800260c: f003 0302 and.w r3, r3, #2 - 8002610: 2b02 cmp r3, #2 - 8002612: d101 bne.n 8002618 - 8002614: 2301 movs r3, #1 - 8002616: e000 b.n 800261a - 8002618: 2300 movs r3, #0 -} - 800261a: 4618 mov r0, r3 - 800261c: 46bd mov sp, r7 - 800261e: bc80 pop {r7} - 8002620: 4770 bx lr - -08002622 : + 8002412: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002416: 681b ldr r3, [r3, #0] + 8002418: f003 0302 and.w r3, r3, #2 + 800241c: 2b02 cmp r3, #2 + 800241e: d101 bne.n 8002424 + 8002420: 2301 movs r3, #1 + 8002422: e000 b.n 8002426 + 8002424: 2300 movs r3, #0 +} + 8002426: 4618 mov r0, r3 + 8002428: 46bd mov sp, r7 + 800242a: bc80 pop {r7} + 800242c: 4770 bx lr + +0800242e : * @brief Check if MSI clock range is selected with MSIRANGE register * @rmtoll CR MSIRGSEL LL_RCC_MSI_IsEnabledRangeSelect * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t LL_RCC_MSI_IsEnabledRangeSelect(void) { - 8002622: b480 push {r7} - 8002624: af00 add r7, sp, #0 + 800242e: b480 push {r7} + 8002430: af00 add r7, sp, #0 return ((READ_BIT(RCC->CR, RCC_CR_MSIRGSEL) == (RCC_CR_MSIRGSEL)) ? 1UL : 0UL); - 8002626: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800262a: 681b ldr r3, [r3, #0] - 800262c: f003 0308 and.w r3, r3, #8 - 8002630: 2b08 cmp r3, #8 - 8002632: d101 bne.n 8002638 - 8002634: 2301 movs r3, #1 - 8002636: e000 b.n 800263a - 8002638: 2300 movs r3, #0 -} - 800263a: 4618 mov r0, r3 - 800263c: 46bd mov sp, r7 - 800263e: bc80 pop {r7} - 8002640: 4770 bx lr - -08002642 : + 8002432: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002436: 681b ldr r3, [r3, #0] + 8002438: f003 0308 and.w r3, r3, #8 + 800243c: 2b08 cmp r3, #8 + 800243e: d101 bne.n 8002444 + 8002440: 2301 movs r3, #1 + 8002442: e000 b.n 8002446 + 8002444: 2300 movs r3, #0 +} + 8002446: 4618 mov r0, r3 + 8002448: 46bd mov sp, r7 + 800244a: bc80 pop {r7} + 800244c: 4770 bx lr + +0800244e : * @arg @ref LL_RCC_MSIRANGE_9 * @arg @ref LL_RCC_MSIRANGE_10 * @arg @ref LL_RCC_MSIRANGE_11 */ __STATIC_INLINE uint32_t LL_RCC_MSI_GetRange(void) { - 8002642: b480 push {r7} - 8002644: af00 add r7, sp, #0 + 800244e: b480 push {r7} + 8002450: af00 add r7, sp, #0 return (uint32_t)(READ_BIT(RCC->CR, RCC_CR_MSIRANGE)); - 8002646: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800264a: 681b ldr r3, [r3, #0] - 800264c: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 8002452: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002456: 681b ldr r3, [r3, #0] + 8002458: f003 03f0 and.w r3, r3, #240 ; 0xf0 } - 8002650: 4618 mov r0, r3 - 8002652: 46bd mov sp, r7 - 8002654: bc80 pop {r7} - 8002656: 4770 bx lr + 800245c: 4618 mov r0, r3 + 800245e: 46bd mov sp, r7 + 8002460: bc80 pop {r7} + 8002462: 4770 bx lr -08002658 : +08002464 : * @arg @ref LL_RCC_MSISRANGE_5 * @arg @ref LL_RCC_MSISRANGE_6 * @arg @ref LL_RCC_MSISRANGE_7 */ __STATIC_INLINE uint32_t LL_RCC_MSI_GetRangeAfterStandby(void) { - 8002658: b480 push {r7} - 800265a: af00 add r7, sp, #0 + 8002464: b480 push {r7} + 8002466: af00 add r7, sp, #0 return (uint32_t)(READ_BIT(RCC->CSR, RCC_CSR_MSISRANGE)); - 800265c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002660: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 - 8002664: f403 6370 and.w r3, r3, #3840 ; 0xf00 + 8002468: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800246c: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 + 8002470: f403 6370 and.w r3, r3, #3840 ; 0xf00 } - 8002668: 4618 mov r0, r3 - 800266a: 46bd mov sp, r7 - 800266c: bc80 pop {r7} - 800266e: 4770 bx lr + 8002474: 4618 mov r0, r3 + 8002476: 46bd mov sp, r7 + 8002478: bc80 pop {r7} + 800247a: 4770 bx lr -08002670 : +0800247c : * @rmtoll ICSCR MSITRIM LL_RCC_MSI_SetCalibTrimming * @param Value Between Min_Data = 0 and Max_Data = 255 * @retval None */ __STATIC_INLINE void LL_RCC_MSI_SetCalibTrimming(uint32_t Value) { - 8002670: b480 push {r7} - 8002672: b083 sub sp, #12 - 8002674: af00 add r7, sp, #0 - 8002676: 6078 str r0, [r7, #4] + 800247c: b480 push {r7} + 800247e: b083 sub sp, #12 + 8002480: af00 add r7, sp, #0 + 8002482: 6078 str r0, [r7, #4] MODIFY_REG(RCC->ICSCR, RCC_ICSCR_MSITRIM, Value << RCC_ICSCR_MSITRIM_Pos); - 8002678: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800267c: 685b ldr r3, [r3, #4] - 800267e: f423 427f bic.w r2, r3, #65280 ; 0xff00 - 8002682: 687b ldr r3, [r7, #4] - 8002684: 021b lsls r3, r3, #8 - 8002686: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 800268a: 4313 orrs r3, r2 - 800268c: 604b str r3, [r1, #4] -} - 800268e: bf00 nop - 8002690: 370c adds r7, #12 - 8002692: 46bd mov sp, r7 - 8002694: bc80 pop {r7} - 8002696: 4770 bx lr - -08002698 : + 8002484: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002488: 685b ldr r3, [r3, #4] + 800248a: f423 427f bic.w r2, r3, #65280 ; 0xff00 + 800248e: 687b ldr r3, [r7, #4] + 8002490: 021b lsls r3, r3, #8 + 8002492: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 8002496: 4313 orrs r3, r2 + 8002498: 604b str r3, [r1, #4] +} + 800249a: bf00 nop + 800249c: 370c adds r7, #12 + 800249e: 46bd mov sp, r7 + 80024a0: bc80 pop {r7} + 80024a2: 4770 bx lr + +080024a4 : * @arg @ref LL_RCC_SYS_CLKSOURCE_HSE * @arg @ref LL_RCC_SYS_CLKSOURCE_PLL * @retval None */ __STATIC_INLINE void LL_RCC_SetSysClkSource(uint32_t Source) { - 8002698: b480 push {r7} - 800269a: b083 sub sp, #12 - 800269c: af00 add r7, sp, #0 - 800269e: 6078 str r0, [r7, #4] + 80024a4: b480 push {r7} + 80024a6: b083 sub sp, #12 + 80024a8: af00 add r7, sp, #0 + 80024aa: 6078 str r0, [r7, #4] MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, Source); - 80026a0: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80026a4: 689b ldr r3, [r3, #8] - 80026a6: f023 0203 bic.w r2, r3, #3 - 80026aa: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 80026ae: 687b ldr r3, [r7, #4] - 80026b0: 4313 orrs r3, r2 - 80026b2: 608b str r3, [r1, #8] -} - 80026b4: bf00 nop - 80026b6: 370c adds r7, #12 - 80026b8: 46bd mov sp, r7 - 80026ba: bc80 pop {r7} - 80026bc: 4770 bx lr - -080026be : + 80024ac: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80024b0: 689b ldr r3, [r3, #8] + 80024b2: f023 0203 bic.w r2, r3, #3 + 80024b6: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 80024ba: 687b ldr r3, [r7, #4] + 80024bc: 4313 orrs r3, r2 + 80024be: 608b str r3, [r1, #8] +} + 80024c0: bf00 nop + 80024c2: 370c adds r7, #12 + 80024c4: 46bd mov sp, r7 + 80024c6: bc80 pop {r7} + 80024c8: 4770 bx lr + +080024ca : * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_HSI * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_HSE * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_PLL */ __STATIC_INLINE uint32_t LL_RCC_GetSysClkSource(void) { - 80026be: b480 push {r7} - 80026c0: af00 add r7, sp, #0 + 80024ca: b480 push {r7} + 80024cc: af00 add r7, sp, #0 return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_SWS)); - 80026c2: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80026c6: 689b ldr r3, [r3, #8] - 80026c8: f003 030c and.w r3, r3, #12 + 80024ce: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80024d2: 689b ldr r3, [r3, #8] + 80024d4: f003 030c and.w r3, r3, #12 } - 80026cc: 4618 mov r0, r3 - 80026ce: 46bd mov sp, r7 - 80026d0: bc80 pop {r7} - 80026d2: 4770 bx lr + 80024d8: 4618 mov r0, r3 + 80024da: 46bd mov sp, r7 + 80024dc: bc80 pop {r7} + 80024de: 4770 bx lr -080026d4 : +080024e0 : * @arg @ref LL_RCC_SYSCLK_DIV_256 * @arg @ref LL_RCC_SYSCLK_DIV_512 * @retval None */ __STATIC_INLINE void LL_RCC_SetAHBPrescaler(uint32_t Prescaler) { - 80026d4: b480 push {r7} - 80026d6: b083 sub sp, #12 - 80026d8: af00 add r7, sp, #0 - 80026da: 6078 str r0, [r7, #4] + 80024e0: b480 push {r7} + 80024e2: b083 sub sp, #12 + 80024e4: af00 add r7, sp, #0 + 80024e6: 6078 str r0, [r7, #4] MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, Prescaler); - 80026dc: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80026e0: 689b ldr r3, [r3, #8] - 80026e2: f023 02f0 bic.w r2, r3, #240 ; 0xf0 - 80026e6: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 80026ea: 687b ldr r3, [r7, #4] - 80026ec: 4313 orrs r3, r2 - 80026ee: 608b str r3, [r1, #8] -} - 80026f0: bf00 nop - 80026f2: 370c adds r7, #12 - 80026f4: 46bd mov sp, r7 - 80026f6: bc80 pop {r7} - 80026f8: 4770 bx lr - -080026fa : + 80024e8: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80024ec: 689b ldr r3, [r3, #8] + 80024ee: f023 02f0 bic.w r2, r3, #240 ; 0xf0 + 80024f2: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 80024f6: 687b ldr r3, [r7, #4] + 80024f8: 4313 orrs r3, r2 + 80024fa: 608b str r3, [r1, #8] +} + 80024fc: bf00 nop + 80024fe: 370c adds r7, #12 + 8002500: 46bd mov sp, r7 + 8002502: bc80 pop {r7} + 8002504: 4770 bx lr + +08002506 : * @arg @ref LL_RCC_SYSCLK_DIV_256 * @arg @ref LL_RCC_SYSCLK_DIV_512 * @retval None */ __STATIC_INLINE void LL_RCC_SetAHB3Prescaler(uint32_t Prescaler) { - 80026fa: b480 push {r7} - 80026fc: b083 sub sp, #12 - 80026fe: af00 add r7, sp, #0 - 8002700: 6078 str r0, [r7, #4] + 8002506: b480 push {r7} + 8002508: b083 sub sp, #12 + 800250a: af00 add r7, sp, #0 + 800250c: 6078 str r0, [r7, #4] MODIFY_REG(RCC->EXTCFGR, RCC_EXTCFGR_SHDHPRE, Prescaler >> 4); - 8002702: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002706: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 800270a: f023 020f bic.w r2, r3, #15 - 800270e: 687b ldr r3, [r7, #4] - 8002710: 091b lsrs r3, r3, #4 - 8002712: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 8002716: 4313 orrs r3, r2 - 8002718: f8c1 3108 str.w r3, [r1, #264] ; 0x108 -} - 800271c: bf00 nop - 800271e: 370c adds r7, #12 - 8002720: 46bd mov sp, r7 - 8002722: bc80 pop {r7} - 8002724: 4770 bx lr - -08002726 : + 800250e: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002512: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 8002516: f023 020f bic.w r2, r3, #15 + 800251a: 687b ldr r3, [r7, #4] + 800251c: 091b lsrs r3, r3, #4 + 800251e: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 8002522: 4313 orrs r3, r2 + 8002524: f8c1 3108 str.w r3, [r1, #264] ; 0x108 +} + 8002528: bf00 nop + 800252a: 370c adds r7, #12 + 800252c: 46bd mov sp, r7 + 800252e: bc80 pop {r7} + 8002530: 4770 bx lr + +08002532 : * @arg @ref LL_RCC_APB1_DIV_8 * @arg @ref LL_RCC_APB1_DIV_16 * @retval None */ __STATIC_INLINE void LL_RCC_SetAPB1Prescaler(uint32_t Prescaler) { - 8002726: b480 push {r7} - 8002728: b083 sub sp, #12 - 800272a: af00 add r7, sp, #0 - 800272c: 6078 str r0, [r7, #4] + 8002532: b480 push {r7} + 8002534: b083 sub sp, #12 + 8002536: af00 add r7, sp, #0 + 8002538: 6078 str r0, [r7, #4] MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, Prescaler); - 800272e: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002732: 689b ldr r3, [r3, #8] - 8002734: f423 62e0 bic.w r2, r3, #1792 ; 0x700 - 8002738: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 800273c: 687b ldr r3, [r7, #4] - 800273e: 4313 orrs r3, r2 - 8002740: 608b str r3, [r1, #8] -} - 8002742: bf00 nop - 8002744: 370c adds r7, #12 - 8002746: 46bd mov sp, r7 - 8002748: bc80 pop {r7} - 800274a: 4770 bx lr - -0800274c : + 800253a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800253e: 689b ldr r3, [r3, #8] + 8002540: f423 62e0 bic.w r2, r3, #1792 ; 0x700 + 8002544: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 8002548: 687b ldr r3, [r7, #4] + 800254a: 4313 orrs r3, r2 + 800254c: 608b str r3, [r1, #8] +} + 800254e: bf00 nop + 8002550: 370c adds r7, #12 + 8002552: 46bd mov sp, r7 + 8002554: bc80 pop {r7} + 8002556: 4770 bx lr + +08002558 : * @arg @ref LL_RCC_APB2_DIV_8 * @arg @ref LL_RCC_APB2_DIV_16 * @retval None */ __STATIC_INLINE void LL_RCC_SetAPB2Prescaler(uint32_t Prescaler) { - 800274c: b480 push {r7} - 800274e: b083 sub sp, #12 - 8002750: af00 add r7, sp, #0 - 8002752: 6078 str r0, [r7, #4] + 8002558: b480 push {r7} + 800255a: b083 sub sp, #12 + 800255c: af00 add r7, sp, #0 + 800255e: 6078 str r0, [r7, #4] MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, Prescaler); - 8002754: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002758: 689b ldr r3, [r3, #8] - 800275a: f423 5260 bic.w r2, r3, #14336 ; 0x3800 - 800275e: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 8002762: 687b ldr r3, [r7, #4] - 8002764: 4313 orrs r3, r2 - 8002766: 608b str r3, [r1, #8] -} - 8002768: bf00 nop - 800276a: 370c adds r7, #12 - 800276c: 46bd mov sp, r7 - 800276e: bc80 pop {r7} - 8002770: 4770 bx lr - -08002772 : + 8002560: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002564: 689b ldr r3, [r3, #8] + 8002566: f423 5260 bic.w r2, r3, #14336 ; 0x3800 + 800256a: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 800256e: 687b ldr r3, [r7, #4] + 8002570: 4313 orrs r3, r2 + 8002572: 608b str r3, [r1, #8] +} + 8002574: bf00 nop + 8002576: 370c adds r7, #12 + 8002578: 46bd mov sp, r7 + 800257a: bc80 pop {r7} + 800257c: 4770 bx lr + +0800257e : * @arg @ref LL_RCC_SYSCLK_DIV_128 * @arg @ref LL_RCC_SYSCLK_DIV_256 * @arg @ref LL_RCC_SYSCLK_DIV_512 */ __STATIC_INLINE uint32_t LL_RCC_GetAHBPrescaler(void) { - 8002772: b480 push {r7} - 8002774: af00 add r7, sp, #0 + 800257e: b480 push {r7} + 8002580: af00 add r7, sp, #0 return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_HPRE)); - 8002776: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800277a: 689b ldr r3, [r3, #8] - 800277c: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 8002582: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002586: 689b ldr r3, [r3, #8] + 8002588: f003 03f0 and.w r3, r3, #240 ; 0xf0 } - 8002780: 4618 mov r0, r3 - 8002782: 46bd mov sp, r7 - 8002784: bc80 pop {r7} - 8002786: 4770 bx lr + 800258c: 4618 mov r0, r3 + 800258e: 46bd mov sp, r7 + 8002590: bc80 pop {r7} + 8002592: 4770 bx lr -08002788 : +08002594 : * @arg @ref LL_RCC_SYSCLK_DIV_128 * @arg @ref LL_RCC_SYSCLK_DIV_256 * @arg @ref LL_RCC_SYSCLK_DIV_512 */ __STATIC_INLINE uint32_t LL_RCC_GetAHB3Prescaler(void) { - 8002788: b480 push {r7} - 800278a: af00 add r7, sp, #0 + 8002594: b480 push {r7} + 8002596: af00 add r7, sp, #0 return (uint32_t)(READ_BIT(RCC->EXTCFGR, RCC_EXTCFGR_SHDHPRE) << 4); - 800278c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002790: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 8002794: 011b lsls r3, r3, #4 - 8002796: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 8002598: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800259c: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 80025a0: 011b lsls r3, r3, #4 + 80025a2: f003 03f0 and.w r3, r3, #240 ; 0xf0 } - 800279a: 4618 mov r0, r3 - 800279c: 46bd mov sp, r7 - 800279e: bc80 pop {r7} - 80027a0: 4770 bx lr + 80025a6: 4618 mov r0, r3 + 80025a8: 46bd mov sp, r7 + 80025aa: bc80 pop {r7} + 80025ac: 4770 bx lr -080027a2 : +080025ae : * @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) { - 80027a2: b480 push {r7} - 80027a4: af00 add r7, sp, #0 + 80025ae: b480 push {r7} + 80025b0: af00 add r7, sp, #0 return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PPRE1)); - 80027a6: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80027aa: 689b ldr r3, [r3, #8] - 80027ac: f403 63e0 and.w r3, r3, #1792 ; 0x700 + 80025b2: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80025b6: 689b ldr r3, [r3, #8] + 80025b8: f403 63e0 and.w r3, r3, #1792 ; 0x700 } - 80027b0: 4618 mov r0, r3 - 80027b2: 46bd mov sp, r7 - 80027b4: bc80 pop {r7} - 80027b6: 4770 bx lr + 80025bc: 4618 mov r0, r3 + 80025be: 46bd mov sp, r7 + 80025c0: bc80 pop {r7} + 80025c2: 4770 bx lr -080027b8 : +080025c4 : * @arg @ref LL_RCC_APB2_DIV_4 * @arg @ref LL_RCC_APB2_DIV_8 * @arg @ref LL_RCC_APB2_DIV_16 */ __STATIC_INLINE uint32_t LL_RCC_GetAPB2Prescaler(void) { - 80027b8: b480 push {r7} - 80027ba: af00 add r7, sp, #0 + 80025c4: b480 push {r7} + 80025c6: af00 add r7, sp, #0 return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PPRE2)); - 80027bc: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80027c0: 689b ldr r3, [r3, #8] - 80027c2: f403 5360 and.w r3, r3, #14336 ; 0x3800 + 80025c8: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80025cc: 689b ldr r3, [r3, #8] + 80025ce: f403 5360 and.w r3, r3, #14336 ; 0x3800 } - 80027c6: 4618 mov r0, r3 - 80027c8: 46bd mov sp, r7 - 80027ca: bc80 pop {r7} - 80027cc: 4770 bx lr + 80025d2: 4618 mov r0, r3 + 80025d4: 46bd mov sp, r7 + 80025d6: bc80 pop {r7} + 80025d8: 4770 bx lr -080027ce : +080025da : * @brief Enable PLL * @rmtoll CR PLLON LL_RCC_PLL_Enable * @retval None */ __STATIC_INLINE void LL_RCC_PLL_Enable(void) { - 80027ce: b480 push {r7} - 80027d0: af00 add r7, sp, #0 + 80025da: b480 push {r7} + 80025dc: af00 add r7, sp, #0 SET_BIT(RCC->CR, RCC_CR_PLLON); - 80027d2: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80027d6: 681b ldr r3, [r3, #0] - 80027d8: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 80027dc: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 - 80027e0: 6013 str r3, [r2, #0] -} - 80027e2: bf00 nop - 80027e4: 46bd mov sp, r7 - 80027e6: bc80 pop {r7} - 80027e8: 4770 bx lr - -080027ea : + 80025de: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80025e2: 681b ldr r3, [r3, #0] + 80025e4: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 80025e8: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 + 80025ec: 6013 str r3, [r2, #0] +} + 80025ee: bf00 nop + 80025f0: 46bd mov sp, r7 + 80025f2: bc80 pop {r7} + 80025f4: 4770 bx lr + +080025f6 : * @note Cannot be disabled if the PLL clock is used as the system clock * @rmtoll CR PLLON LL_RCC_PLL_Disable * @retval None */ __STATIC_INLINE void LL_RCC_PLL_Disable(void) { - 80027ea: b480 push {r7} - 80027ec: af00 add r7, sp, #0 + 80025f6: b480 push {r7} + 80025f8: af00 add r7, sp, #0 CLEAR_BIT(RCC->CR, RCC_CR_PLLON); - 80027ee: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80027f2: 681b ldr r3, [r3, #0] - 80027f4: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 80027f8: f023 7380 bic.w r3, r3, #16777216 ; 0x1000000 - 80027fc: 6013 str r3, [r2, #0] -} - 80027fe: bf00 nop - 8002800: 46bd mov sp, r7 - 8002802: bc80 pop {r7} - 8002804: 4770 bx lr - -08002806 : + 80025fa: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80025fe: 681b ldr r3, [r3, #0] + 8002600: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8002604: f023 7380 bic.w r3, r3, #16777216 ; 0x1000000 + 8002608: 6013 str r3, [r2, #0] +} + 800260a: bf00 nop + 800260c: 46bd mov sp, r7 + 800260e: bc80 pop {r7} + 8002610: 4770 bx lr + +08002612 : * @brief Check if PLL Ready * @rmtoll CR PLLRDY LL_RCC_PLL_IsReady * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t LL_RCC_PLL_IsReady(void) { - 8002806: b480 push {r7} - 8002808: af00 add r7, sp, #0 + 8002612: b480 push {r7} + 8002614: af00 add r7, sp, #0 return ((READ_BIT(RCC->CR, RCC_CR_PLLRDY) == (RCC_CR_PLLRDY)) ? 1UL : 0UL); - 800280a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800280e: 681b ldr r3, [r3, #0] - 8002810: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 - 8002814: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 - 8002818: d101 bne.n 800281e - 800281a: 2301 movs r3, #1 - 800281c: e000 b.n 8002820 - 800281e: 2300 movs r3, #0 -} - 8002820: 4618 mov r0, r3 - 8002822: 46bd mov sp, r7 - 8002824: bc80 pop {r7} - 8002826: 4770 bx lr - -08002828 : + 8002616: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800261a: 681b ldr r3, [r3, #0] + 800261c: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 + 8002620: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 + 8002624: d101 bne.n 800262a + 8002626: 2301 movs r3, #1 + 8002628: e000 b.n 800262c + 800262a: 2300 movs r3, #0 +} + 800262c: 4618 mov r0, r3 + 800262e: 46bd mov sp, r7 + 8002630: bc80 pop {r7} + 8002632: 4770 bx lr + +08002634 : * @brief Get Main PLL multiplication factor for VCO * @rmtoll PLLCFGR PLLN LL_RCC_PLL_GetN * @retval Between 6 and 127 */ __STATIC_INLINE uint32_t LL_RCC_PLL_GetN(void) { - 8002828: b480 push {r7} - 800282a: af00 add r7, sp, #0 + 8002634: b480 push {r7} + 8002636: af00 add r7, sp, #0 return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos); - 800282c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002830: 68db ldr r3, [r3, #12] - 8002832: 0a1b lsrs r3, r3, #8 - 8002834: f003 037f and.w r3, r3, #127 ; 0x7f + 8002638: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800263c: 68db ldr r3, [r3, #12] + 800263e: 0a1b lsrs r3, r3, #8 + 8002640: f003 037f and.w r3, r3, #127 ; 0x7f } - 8002838: 4618 mov r0, r3 - 800283a: 46bd mov sp, r7 - 800283c: bc80 pop {r7} - 800283e: 4770 bx lr + 8002644: 4618 mov r0, r3 + 8002646: 46bd mov sp, r7 + 8002648: bc80 pop {r7} + 800264a: 4770 bx lr -08002840 : +0800264c : * @arg @ref LL_RCC_PLLR_DIV_6 * @arg @ref LL_RCC_PLLR_DIV_7 * @arg @ref LL_RCC_PLLR_DIV_8 */ __STATIC_INLINE uint32_t LL_RCC_PLL_GetR(void) { - 8002840: b480 push {r7} - 8002842: af00 add r7, sp, #0 + 800264c: b480 push {r7} + 800264e: af00 add r7, sp, #0 return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLR)); - 8002844: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002848: 68db ldr r3, [r3, #12] - 800284a: f003 4360 and.w r3, r3, #3758096384 ; 0xe0000000 + 8002650: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002654: 68db ldr r3, [r3, #12] + 8002656: f003 4360 and.w r3, r3, #3758096384 ; 0xe0000000 } - 800284e: 4618 mov r0, r3 - 8002850: 46bd mov sp, r7 - 8002852: bc80 pop {r7} - 8002854: 4770 bx lr + 800265a: 4618 mov r0, r3 + 800265c: 46bd mov sp, r7 + 800265e: bc80 pop {r7} + 8002660: 4770 bx lr -08002856 : +08002662 : * @arg @ref LL_RCC_PLLM_DIV_6 * @arg @ref LL_RCC_PLLM_DIV_7 * @arg @ref LL_RCC_PLLM_DIV_8 */ __STATIC_INLINE uint32_t LL_RCC_PLL_GetDivider(void) { - 8002856: b480 push {r7} - 8002858: af00 add r7, sp, #0 + 8002662: b480 push {r7} + 8002664: af00 add r7, sp, #0 return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM)); - 800285a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800285e: 68db ldr r3, [r3, #12] - 8002860: f003 0370 and.w r3, r3, #112 ; 0x70 + 8002666: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800266a: 68db ldr r3, [r3, #12] + 800266c: f003 0370 and.w r3, r3, #112 ; 0x70 } - 8002864: 4618 mov r0, r3 - 8002866: 46bd mov sp, r7 - 8002868: bc80 pop {r7} - 800286a: 4770 bx lr + 8002670: 4618 mov r0, r3 + 8002672: 46bd mov sp, r7 + 8002674: bc80 pop {r7} + 8002676: 4770 bx lr -0800286c : +08002678 : * @arg @ref LL_RCC_PLLSOURCE_MSI * @arg @ref LL_RCC_PLLSOURCE_HSI * @arg @ref LL_RCC_PLLSOURCE_HSE */ __STATIC_INLINE uint32_t LL_RCC_PLL_GetMainSource(void) { - 800286c: b480 push {r7} - 800286e: af00 add r7, sp, #0 + 8002678: b480 push {r7} + 800267a: af00 add r7, sp, #0 return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC)); - 8002870: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002874: 68db ldr r3, [r3, #12] - 8002876: f003 0303 and.w r3, r3, #3 + 800267c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002680: 68db ldr r3, [r3, #12] + 8002682: f003 0303 and.w r3, r3, #3 } - 800287a: 4618 mov r0, r3 - 800287c: 46bd mov sp, r7 - 800287e: bc80 pop {r7} - 8002880: 4770 bx lr + 8002686: 4618 mov r0, r3 + 8002688: 46bd mov sp, r7 + 800268a: bc80 pop {r7} + 800268c: 4770 bx lr -08002882 : +0800268e : * @brief Check if HCLK1 prescaler flag value has been applied or not * @rmtoll CFGR HPREF LL_RCC_IsActiveFlag_HPRE * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HPRE(void) { - 8002882: b480 push {r7} - 8002884: af00 add r7, sp, #0 + 800268e: b480 push {r7} + 8002690: af00 add r7, sp, #0 return ((READ_BIT(RCC->CFGR, RCC_CFGR_HPREF) == (RCC_CFGR_HPREF)) ? 1UL : 0UL); - 8002886: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800288a: 689b ldr r3, [r3, #8] - 800288c: f403 3380 and.w r3, r3, #65536 ; 0x10000 - 8002890: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 8002894: d101 bne.n 800289a - 8002896: 2301 movs r3, #1 - 8002898: e000 b.n 800289c - 800289a: 2300 movs r3, #0 -} - 800289c: 4618 mov r0, r3 - 800289e: 46bd mov sp, r7 - 80028a0: bc80 pop {r7} - 80028a2: 4770 bx lr - -080028a4 : + 8002692: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002696: 689b ldr r3, [r3, #8] + 8002698: f403 3380 and.w r3, r3, #65536 ; 0x10000 + 800269c: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 80026a0: d101 bne.n 80026a6 + 80026a2: 2301 movs r3, #1 + 80026a4: e000 b.n 80026a8 + 80026a6: 2300 movs r3, #0 +} + 80026a8: 4618 mov r0, r3 + 80026aa: 46bd mov sp, r7 + 80026ac: bc80 pop {r7} + 80026ae: 4770 bx lr + +080026b0 : * @brief Check if HCLK3 prescaler flag value has been applied or not * @rmtoll EXTCFGR SHDHPREF LL_RCC_IsActiveFlag_SHDHPRE * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_SHDHPRE(void) { - 80028a4: b480 push {r7} - 80028a6: af00 add r7, sp, #0 + 80026b0: b480 push {r7} + 80026b2: af00 add r7, sp, #0 return ((READ_BIT(RCC->EXTCFGR, RCC_EXTCFGR_SHDHPREF) == (RCC_EXTCFGR_SHDHPREF)) ? 1UL : 0UL); - 80028a8: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80028ac: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 80028b0: f403 3380 and.w r3, r3, #65536 ; 0x10000 - 80028b4: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 80028b8: d101 bne.n 80028be - 80028ba: 2301 movs r3, #1 - 80028bc: e000 b.n 80028c0 - 80028be: 2300 movs r3, #0 -} - 80028c0: 4618 mov r0, r3 - 80028c2: 46bd mov sp, r7 - 80028c4: bc80 pop {r7} - 80028c6: 4770 bx lr - -080028c8 : + 80026b4: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80026b8: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 80026bc: f403 3380 and.w r3, r3, #65536 ; 0x10000 + 80026c0: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 80026c4: d101 bne.n 80026ca + 80026c6: 2301 movs r3, #1 + 80026c8: e000 b.n 80026cc + 80026ca: 2300 movs r3, #0 +} + 80026cc: 4618 mov r0, r3 + 80026ce: 46bd mov sp, r7 + 80026d0: bc80 pop {r7} + 80026d2: 4770 bx lr + +080026d4 : * @brief Check if PLCK1 prescaler flag value has been applied or not * @rmtoll CFGR PPRE1F LL_RCC_IsActiveFlag_PPRE1 * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PPRE1(void) { - 80028c8: b480 push {r7} - 80028ca: af00 add r7, sp, #0 + 80026d4: b480 push {r7} + 80026d6: af00 add r7, sp, #0 return ((READ_BIT(RCC->CFGR, RCC_CFGR_PPRE1F) == (RCC_CFGR_PPRE1F)) ? 1UL : 0UL); - 80028cc: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80028d0: 689b ldr r3, [r3, #8] - 80028d2: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 80028d6: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 - 80028da: d101 bne.n 80028e0 - 80028dc: 2301 movs r3, #1 - 80028de: e000 b.n 80028e2 - 80028e0: 2300 movs r3, #0 -} - 80028e2: 4618 mov r0, r3 - 80028e4: 46bd mov sp, r7 - 80028e6: bc80 pop {r7} - 80028e8: 4770 bx lr - -080028ea : + 80026d8: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80026dc: 689b ldr r3, [r3, #8] + 80026de: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 80026e2: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 + 80026e6: d101 bne.n 80026ec + 80026e8: 2301 movs r3, #1 + 80026ea: e000 b.n 80026ee + 80026ec: 2300 movs r3, #0 +} + 80026ee: 4618 mov r0, r3 + 80026f0: 46bd mov sp, r7 + 80026f2: bc80 pop {r7} + 80026f4: 4770 bx lr + +080026f6 : * @brief Check if PLCK2 prescaler flag value has been applied or not * @rmtoll CFGR PPRE2F LL_RCC_IsActiveFlag_PPRE2 * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PPRE2(void) { - 80028ea: b480 push {r7} - 80028ec: af00 add r7, sp, #0 + 80026f6: b480 push {r7} + 80026f8: af00 add r7, sp, #0 return ((READ_BIT(RCC->CFGR, RCC_CFGR_PPRE2F) == (RCC_CFGR_PPRE2F)) ? 1UL : 0UL); - 80028ee: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80028f2: 689b ldr r3, [r3, #8] - 80028f4: f403 2380 and.w r3, r3, #262144 ; 0x40000 - 80028f8: f5b3 2f80 cmp.w r3, #262144 ; 0x40000 - 80028fc: d101 bne.n 8002902 - 80028fe: 2301 movs r3, #1 - 8002900: e000 b.n 8002904 - 8002902: 2300 movs r3, #0 -} - 8002904: 4618 mov r0, r3 - 8002906: 46bd mov sp, r7 - 8002908: bc80 pop {r7} - 800290a: 4770 bx lr - -0800290c : + 80026fa: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80026fe: 689b ldr r3, [r3, #8] + 8002700: f403 2380 and.w r3, r3, #262144 ; 0x40000 + 8002704: f5b3 2f80 cmp.w r3, #262144 ; 0x40000 + 8002708: d101 bne.n 800270e + 800270a: 2301 movs r3, #1 + 800270c: e000 b.n 8002710 + 800270e: 2300 movs r3, #0 +} + 8002710: 4618 mov r0, r3 + 8002712: 46bd mov sp, r7 + 8002714: bc80 pop {r7} + 8002716: 4770 bx lr + +08002718 : * contains the configuration information for the RCC Oscillators. * @note The PLL is not disabled when used as system clock. * @retval HAL status */ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) { - 800290c: b580 push {r7, lr} - 800290e: b088 sub sp, #32 - 8002910: af00 add r7, sp, #0 - 8002912: 6078 str r0, [r7, #4] + 8002718: b580 push {r7, lr} + 800271a: b088 sub sp, #32 + 800271c: af00 add r7, sp, #0 + 800271e: 6078 str r0, [r7, #4] uint32_t sysclk_source; uint32_t pll_config; HAL_StatusTypeDef status; /* Check Null pointer */ if (RCC_OscInitStruct == NULL) - 8002914: 687b ldr r3, [r7, #4] - 8002916: 2b00 cmp r3, #0 - 8002918: d101 bne.n 800291e + 8002720: 687b ldr r3, [r7, #4] + 8002722: 2b00 cmp r3, #0 + 8002724: d101 bne.n 800272a { return HAL_ERROR; - 800291a: 2301 movs r3, #1 - 800291c: e36f b.n 8002ffe + 8002726: 2301 movs r3, #1 + 8002728: e36f b.n 8002e0a } /* Check the parameters */ assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); sysclk_source = __HAL_RCC_GET_SYSCLK_SOURCE(); - 800291e: f7ff fece bl 80026be - 8002922: 61f8 str r0, [r7, #28] + 800272a: f7ff fece bl 80024ca + 800272e: 61f8 str r0, [r7, #28] pll_config = __HAL_RCC_GET_PLL_OSCSOURCE(); - 8002924: f7ff ffa2 bl 800286c - 8002928: 61b8 str r0, [r7, #24] + 8002730: f7ff ffa2 bl 8002678 + 8002734: 61b8 str r0, [r7, #24] /*----------------------------- MSI Configuration --------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI) - 800292a: 687b ldr r3, [r7, #4] - 800292c: 681b ldr r3, [r3, #0] - 800292e: f003 0320 and.w r3, r3, #32 - 8002932: 2b00 cmp r3, #0 - 8002934: f000 80c4 beq.w 8002ac0 + 8002736: 687b ldr r3, [r7, #4] + 8002738: 681b ldr r3, [r3, #0] + 800273a: f003 0320 and.w r3, r3, #32 + 800273e: 2b00 cmp r3, #0 + 8002740: f000 80c4 beq.w 80028cc assert_param(IS_RCC_MSI(RCC_OscInitStruct->MSIState)); assert_param(IS_RCC_MSI_CALIBRATION_VALUE(RCC_OscInitStruct->MSICalibrationValue)); assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); /* When the MSI is used as system clock it will not be disabled */ if ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_MSI) || - 8002938: 69fb ldr r3, [r7, #28] - 800293a: 2b00 cmp r3, #0 - 800293c: d005 beq.n 800294a - 800293e: 69fb ldr r3, [r7, #28] - 8002940: 2b0c cmp r3, #12 - 8002942: d176 bne.n 8002a32 + 8002744: 69fb ldr r3, [r7, #28] + 8002746: 2b00 cmp r3, #0 + 8002748: d005 beq.n 8002756 + 800274a: 69fb ldr r3, [r7, #28] + 800274c: 2b0c cmp r3, #12 + 800274e: d176 bne.n 800283e ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_MSI))) - 8002944: 69bb ldr r3, [r7, #24] - 8002946: 2b01 cmp r3, #1 - 8002948: d173 bne.n 8002a32 + 8002750: 69bb ldr r3, [r7, #24] + 8002752: 2b01 cmp r3, #1 + 8002754: d173 bne.n 800283e { if (RCC_OscInitStruct->MSIState == RCC_MSI_OFF) - 800294a: 687b ldr r3, [r7, #4] - 800294c: 6a1b ldr r3, [r3, #32] - 800294e: 2b00 cmp r3, #0 - 8002950: d101 bne.n 8002956 + 8002756: 687b ldr r3, [r7, #4] + 8002758: 6a1b ldr r3, [r3, #32] + 800275a: 2b00 cmp r3, #0 + 800275c: d101 bne.n 8002762 { return HAL_ERROR; - 8002952: 2301 movs r3, #1 - 8002954: e353 b.n 8002ffe + 800275e: 2301 movs r3, #1 + 8002760: e353 b.n 8002e0a else { /* To correctly read data from FLASH memory, the number of wait states (LATENCY) must be correctly programmed according to the frequency of the AHB3 clock and the supply voltage of the device. */ if (RCC_OscInitStruct->MSIClockRange > __HAL_RCC_GET_MSI_RANGE()) - 8002956: 687b ldr r3, [r7, #4] - 8002958: 6a9a ldr r2, [r3, #40] ; 0x28 - 800295a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800295e: 681b ldr r3, [r3, #0] - 8002960: f003 0308 and.w r3, r3, #8 - 8002964: 2b00 cmp r3, #0 - 8002966: d005 beq.n 8002974 - 8002968: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800296c: 681b ldr r3, [r3, #0] - 800296e: f003 03f0 and.w r3, r3, #240 ; 0xf0 - 8002972: e006 b.n 8002982 - 8002974: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002978: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 - 800297c: 091b lsrs r3, r3, #4 - 800297e: f003 03f0 and.w r3, r3, #240 ; 0xf0 - 8002982: 4293 cmp r3, r2 - 8002984: d222 bcs.n 80029cc + 8002762: 687b ldr r3, [r7, #4] + 8002764: 6a9a ldr r2, [r3, #40] ; 0x28 + 8002766: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800276a: 681b ldr r3, [r3, #0] + 800276c: f003 0308 and.w r3, r3, #8 + 8002770: 2b00 cmp r3, #0 + 8002772: d005 beq.n 8002780 + 8002774: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002778: 681b ldr r3, [r3, #0] + 800277a: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 800277e: e006 b.n 800278e + 8002780: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002784: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 + 8002788: 091b lsrs r3, r3, #4 + 800278a: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 800278e: 4293 cmp r3, r2 + 8002790: d222 bcs.n 80027d8 { /* First increase number of wait states update if necessary */ if (RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) - 8002986: 687b ldr r3, [r7, #4] - 8002988: 6a9b ldr r3, [r3, #40] ; 0x28 - 800298a: 4618 mov r0, r3 - 800298c: f000 fd3c bl 8003408 - 8002990: 4603 mov r3, r0 - 8002992: 2b00 cmp r3, #0 - 8002994: d001 beq.n 800299a + 8002792: 687b ldr r3, [r7, #4] + 8002794: 6a9b ldr r3, [r3, #40] ; 0x28 + 8002796: 4618 mov r0, r3 + 8002798: f000 fd3c bl 8003214 + 800279c: 4603 mov r3, r0 + 800279e: 2b00 cmp r3, #0 + 80027a0: d001 beq.n 80027a6 { return HAL_ERROR; - 8002996: 2301 movs r3, #1 - 8002998: e331 b.n 8002ffe + 80027a2: 2301 movs r3, #1 + 80027a4: e331 b.n 8002e0a } /* Selects the Multiple Speed oscillator (MSI) clock range .*/ __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); - 800299a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800299e: 681b ldr r3, [r3, #0] - 80029a0: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 80029a4: f043 0308 orr.w r3, r3, #8 - 80029a8: 6013 str r3, [r2, #0] - 80029aa: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80029ae: 681b ldr r3, [r3, #0] - 80029b0: f023 02f0 bic.w r2, r3, #240 ; 0xf0 - 80029b4: 687b ldr r3, [r7, #4] - 80029b6: 6a9b ldr r3, [r3, #40] ; 0x28 - 80029b8: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 80029bc: 4313 orrs r3, r2 - 80029be: 600b str r3, [r1, #0] + 80027a6: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80027aa: 681b ldr r3, [r3, #0] + 80027ac: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 80027b0: f043 0308 orr.w r3, r3, #8 + 80027b4: 6013 str r3, [r2, #0] + 80027b6: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80027ba: 681b ldr r3, [r3, #0] + 80027bc: f023 02f0 bic.w r2, r3, #240 ; 0xf0 + 80027c0: 687b ldr r3, [r7, #4] + 80027c2: 6a9b ldr r3, [r3, #40] ; 0x28 + 80027c4: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 80027c8: 4313 orrs r3, r2 + 80027ca: 600b str r3, [r1, #0] /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); - 80029c0: 687b ldr r3, [r7, #4] - 80029c2: 6a5b ldr r3, [r3, #36] ; 0x24 - 80029c4: 4618 mov r0, r3 - 80029c6: f7ff fe53 bl 8002670 - 80029ca: e021 b.n 8002a10 + 80027cc: 687b ldr r3, [r7, #4] + 80027ce: 6a5b ldr r3, [r3, #36] ; 0x24 + 80027d0: 4618 mov r0, r3 + 80027d2: f7ff fe53 bl 800247c + 80027d6: e021 b.n 800281c } else { /* Else, keep current flash latency while decreasing applies */ /* Selects the Multiple Speed oscillator (MSI) clock range. */ __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); - 80029cc: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80029d0: 681b ldr r3, [r3, #0] - 80029d2: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 80029d6: f043 0308 orr.w r3, r3, #8 - 80029da: 6013 str r3, [r2, #0] - 80029dc: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80029e0: 681b ldr r3, [r3, #0] - 80029e2: f023 02f0 bic.w r2, r3, #240 ; 0xf0 - 80029e6: 687b ldr r3, [r7, #4] - 80029e8: 6a9b ldr r3, [r3, #40] ; 0x28 - 80029ea: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 80029ee: 4313 orrs r3, r2 - 80029f0: 600b str r3, [r1, #0] + 80027d8: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80027dc: 681b ldr r3, [r3, #0] + 80027de: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 80027e2: f043 0308 orr.w r3, r3, #8 + 80027e6: 6013 str r3, [r2, #0] + 80027e8: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80027ec: 681b ldr r3, [r3, #0] + 80027ee: f023 02f0 bic.w r2, r3, #240 ; 0xf0 + 80027f2: 687b ldr r3, [r7, #4] + 80027f4: 6a9b ldr r3, [r3, #40] ; 0x28 + 80027f6: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 80027fa: 4313 orrs r3, r2 + 80027fc: 600b str r3, [r1, #0] /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); - 80029f2: 687b ldr r3, [r7, #4] - 80029f4: 6a5b ldr r3, [r3, #36] ; 0x24 - 80029f6: 4618 mov r0, r3 - 80029f8: f7ff fe3a bl 8002670 + 80027fe: 687b ldr r3, [r7, #4] + 8002800: 6a5b ldr r3, [r3, #36] ; 0x24 + 8002802: 4618 mov r0, r3 + 8002804: f7ff fe3a bl 800247c /* Decrease number of wait states update if necessary */ if (RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) - 80029fc: 687b ldr r3, [r7, #4] - 80029fe: 6a9b ldr r3, [r3, #40] ; 0x28 - 8002a00: 4618 mov r0, r3 - 8002a02: f000 fd01 bl 8003408 - 8002a06: 4603 mov r3, r0 - 8002a08: 2b00 cmp r3, #0 - 8002a0a: d001 beq.n 8002a10 + 8002808: 687b ldr r3, [r7, #4] + 800280a: 6a9b ldr r3, [r3, #40] ; 0x28 + 800280c: 4618 mov r0, r3 + 800280e: f000 fd01 bl 8003214 + 8002812: 4603 mov r3, r0 + 8002814: 2b00 cmp r3, #0 + 8002816: d001 beq.n 800281c { return HAL_ERROR; - 8002a0c: 2301 movs r3, #1 - 8002a0e: e2f6 b.n 8002ffe + 8002818: 2301 movs r3, #1 + 800281a: e2f6 b.n 8002e0a } } /* Update the SystemCoreClock global variable */ SystemCoreClock = HAL_RCC_GetHCLKFreq(); - 8002a10: f000 fcc2 bl 8003398 - 8002a14: 4603 mov r3, r0 - 8002a16: 4aa7 ldr r2, [pc, #668] ; (8002cb4 ) - 8002a18: 6013 str r3, [r2, #0] + 800281c: f000 fcc2 bl 80031a4 + 8002820: 4603 mov r3, r0 + 8002822: 4aa7 ldr r2, [pc, #668] ; (8002ac0 ) + 8002824: 6013 str r3, [r2, #0] /* Configure the source of time base considering new system clocks settings */ status = HAL_InitTick(uwTickPrio); - 8002a1a: 4ba7 ldr r3, [pc, #668] ; (8002cb8 ) - 8002a1c: 681b ldr r3, [r3, #0] - 8002a1e: 4618 mov r0, r3 - 8002a20: f7fe fef0 bl 8001804 - 8002a24: 4603 mov r3, r0 - 8002a26: 74fb strb r3, [r7, #19] + 8002826: 4ba7 ldr r3, [pc, #668] ; (8002ac4 ) + 8002828: 681b ldr r3, [r3, #0] + 800282a: 4618 mov r0, r3 + 800282c: f7fe fef0 bl 8001610 + 8002830: 4603 mov r3, r0 + 8002832: 74fb strb r3, [r7, #19] if (status != HAL_OK) - 8002a28: 7cfb ldrb r3, [r7, #19] - 8002a2a: 2b00 cmp r3, #0 - 8002a2c: d047 beq.n 8002abe + 8002834: 7cfb ldrb r3, [r7, #19] + 8002836: 2b00 cmp r3, #0 + 8002838: d047 beq.n 80028ca { return status; - 8002a2e: 7cfb ldrb r3, [r7, #19] - 8002a30: e2e5 b.n 8002ffe + 800283a: 7cfb ldrb r3, [r7, #19] + 800283c: e2e5 b.n 8002e0a } } else { /* Check the MSI State */ if (RCC_OscInitStruct->MSIState != RCC_MSI_OFF) - 8002a32: 687b ldr r3, [r7, #4] - 8002a34: 6a1b ldr r3, [r3, #32] - 8002a36: 2b00 cmp r3, #0 - 8002a38: d02c beq.n 8002a94 + 800283e: 687b ldr r3, [r7, #4] + 8002840: 6a1b ldr r3, [r3, #32] + 8002842: 2b00 cmp r3, #0 + 8002844: d02c beq.n 80028a0 { /* Enable the Internal High Speed oscillator (MSI). */ __HAL_RCC_MSI_ENABLE(); - 8002a3a: f7ff fdc6 bl 80025ca + 8002846: f7ff fdc6 bl 80023d6 /* Get timeout */ tickstart = HAL_GetTick(); - 8002a3e: f7fe ff2d bl 800189c - 8002a42: 6178 str r0, [r7, #20] + 800284a: f7fe ff2d bl 80016a8 + 800284e: 6178 str r0, [r7, #20] /* Wait till MSI is ready */ while (LL_RCC_MSI_IsReady() == 0U) - 8002a44: e008 b.n 8002a58 + 8002850: e008 b.n 8002864 { if ((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) - 8002a46: f7fe ff29 bl 800189c - 8002a4a: 4602 mov r2, r0 - 8002a4c: 697b ldr r3, [r7, #20] - 8002a4e: 1ad3 subs r3, r2, r3 - 8002a50: 2b02 cmp r3, #2 - 8002a52: d901 bls.n 8002a58 + 8002852: f7fe ff29 bl 80016a8 + 8002856: 4602 mov r2, r0 + 8002858: 697b ldr r3, [r7, #20] + 800285a: 1ad3 subs r3, r2, r3 + 800285c: 2b02 cmp r3, #2 + 800285e: d901 bls.n 8002864 { return HAL_TIMEOUT; - 8002a54: 2303 movs r3, #3 - 8002a56: e2d2 b.n 8002ffe + 8002860: 2303 movs r3, #3 + 8002862: e2d2 b.n 8002e0a while (LL_RCC_MSI_IsReady() == 0U) - 8002a58: f7ff fdd3 bl 8002602 - 8002a5c: 4603 mov r3, r0 - 8002a5e: 2b00 cmp r3, #0 - 8002a60: d0f1 beq.n 8002a46 + 8002864: f7ff fdd3 bl 800240e + 8002868: 4603 mov r3, r0 + 800286a: 2b00 cmp r3, #0 + 800286c: d0f1 beq.n 8002852 } } /* Selects the Multiple Speed oscillator (MSI) clock range. */ __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); - 8002a62: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002a66: 681b ldr r3, [r3, #0] - 8002a68: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 8002a6c: f043 0308 orr.w r3, r3, #8 - 8002a70: 6013 str r3, [r2, #0] - 8002a72: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002a76: 681b ldr r3, [r3, #0] - 8002a78: f023 02f0 bic.w r2, r3, #240 ; 0xf0 - 8002a7c: 687b ldr r3, [r7, #4] - 8002a7e: 6a9b ldr r3, [r3, #40] ; 0x28 - 8002a80: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 8002a84: 4313 orrs r3, r2 - 8002a86: 600b str r3, [r1, #0] + 800286e: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002872: 681b ldr r3, [r3, #0] + 8002874: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8002878: f043 0308 orr.w r3, r3, #8 + 800287c: 6013 str r3, [r2, #0] + 800287e: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002882: 681b ldr r3, [r3, #0] + 8002884: f023 02f0 bic.w r2, r3, #240 ; 0xf0 + 8002888: 687b ldr r3, [r7, #4] + 800288a: 6a9b ldr r3, [r3, #40] ; 0x28 + 800288c: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 8002890: 4313 orrs r3, r2 + 8002892: 600b str r3, [r1, #0] /* Adjusts the Multiple Speed oscillator (MSI) calibration value. */ __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); - 8002a88: 687b ldr r3, [r7, #4] - 8002a8a: 6a5b ldr r3, [r3, #36] ; 0x24 - 8002a8c: 4618 mov r0, r3 - 8002a8e: f7ff fdef bl 8002670 - 8002a92: e015 b.n 8002ac0 + 8002894: 687b ldr r3, [r7, #4] + 8002896: 6a5b ldr r3, [r3, #36] ; 0x24 + 8002898: 4618 mov r0, r3 + 800289a: f7ff fdef bl 800247c + 800289e: e015 b.n 80028cc } else { /* Disable the Internal High Speed oscillator (MSI). */ __HAL_RCC_MSI_DISABLE(); - 8002a94: f7ff fda7 bl 80025e6 + 80028a0: f7ff fda7 bl 80023f2 /* Get timeout */ tickstart = HAL_GetTick(); - 8002a98: f7fe ff00 bl 800189c - 8002a9c: 6178 str r0, [r7, #20] + 80028a4: f7fe ff00 bl 80016a8 + 80028a8: 6178 str r0, [r7, #20] /* Wait till MSI is disabled */ while (LL_RCC_MSI_IsReady() != 0U) - 8002a9e: e008 b.n 8002ab2 + 80028aa: e008 b.n 80028be { if ((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) - 8002aa0: f7fe fefc bl 800189c - 8002aa4: 4602 mov r2, r0 - 8002aa6: 697b ldr r3, [r7, #20] - 8002aa8: 1ad3 subs r3, r2, r3 - 8002aaa: 2b02 cmp r3, #2 - 8002aac: d901 bls.n 8002ab2 + 80028ac: f7fe fefc bl 80016a8 + 80028b0: 4602 mov r2, r0 + 80028b2: 697b ldr r3, [r7, #20] + 80028b4: 1ad3 subs r3, r2, r3 + 80028b6: 2b02 cmp r3, #2 + 80028b8: d901 bls.n 80028be { return HAL_TIMEOUT; - 8002aae: 2303 movs r3, #3 - 8002ab0: e2a5 b.n 8002ffe + 80028ba: 2303 movs r3, #3 + 80028bc: e2a5 b.n 8002e0a while (LL_RCC_MSI_IsReady() != 0U) - 8002ab2: f7ff fda6 bl 8002602 - 8002ab6: 4603 mov r3, r0 - 8002ab8: 2b00 cmp r3, #0 - 8002aba: d1f1 bne.n 8002aa0 - 8002abc: e000 b.n 8002ac0 + 80028be: f7ff fda6 bl 800240e + 80028c2: 4603 mov r3, r0 + 80028c4: 2b00 cmp r3, #0 + 80028c6: d1f1 bne.n 80028ac + 80028c8: e000 b.n 80028cc if (RCC_OscInitStruct->MSIState == RCC_MSI_OFF) - 8002abe: bf00 nop + 80028ca: bf00 nop } } } /*------------------------------- HSE Configuration ------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) - 8002ac0: 687b ldr r3, [r7, #4] - 8002ac2: 681b ldr r3, [r3, #0] - 8002ac4: f003 0301 and.w r3, r3, #1 - 8002ac8: 2b00 cmp r3, #0 - 8002aca: d058 beq.n 8002b7e + 80028cc: 687b ldr r3, [r7, #4] + 80028ce: 681b ldr r3, [r3, #0] + 80028d0: f003 0301 and.w r3, r3, #1 + 80028d4: 2b00 cmp r3, #0 + 80028d6: d058 beq.n 800298a { /* Check the parameters */ assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */ if ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSE) || - 8002acc: 69fb ldr r3, [r7, #28] - 8002ace: 2b08 cmp r3, #8 - 8002ad0: d005 beq.n 8002ade - 8002ad2: 69fb ldr r3, [r7, #28] - 8002ad4: 2b0c cmp r3, #12 - 8002ad6: d108 bne.n 8002aea + 80028d8: 69fb ldr r3, [r7, #28] + 80028da: 2b08 cmp r3, #8 + 80028dc: d005 beq.n 80028ea + 80028de: 69fb ldr r3, [r7, #28] + 80028e0: 2b0c cmp r3, #12 + 80028e2: d108 bne.n 80028f6 ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSE))) - 8002ad8: 69bb ldr r3, [r7, #24] - 8002ada: 2b03 cmp r3, #3 - 8002adc: d105 bne.n 8002aea + 80028e4: 69bb ldr r3, [r7, #24] + 80028e6: 2b03 cmp r3, #3 + 80028e8: d105 bne.n 80028f6 { if (RCC_OscInitStruct->HSEState == RCC_HSE_OFF) - 8002ade: 687b ldr r3, [r7, #4] - 8002ae0: 685b ldr r3, [r3, #4] - 8002ae2: 2b00 cmp r3, #0 - 8002ae4: d14b bne.n 8002b7e + 80028ea: 687b ldr r3, [r7, #4] + 80028ec: 685b ldr r3, [r3, #4] + 80028ee: 2b00 cmp r3, #0 + 80028f0: d14b bne.n 800298a { return HAL_ERROR; - 8002ae6: 2301 movs r3, #1 - 8002ae8: e289 b.n 8002ffe + 80028f2: 2301 movs r3, #1 + 80028f4: e289 b.n 8002e0a /* Set the new HSE configuration ---------------------------------------*/ /* Check HSE division factor */ assert_param(IS_RCC_HSEDIV(RCC_OscInitStruct->HSEDiv)); /* Set HSE division factor */ MODIFY_REG(RCC->CR, RCC_CR_HSEPRE, RCC_OscInitStruct->HSEDiv); - 8002aea: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002aee: 681b ldr r3, [r3, #0] - 8002af0: f423 1280 bic.w r2, r3, #1048576 ; 0x100000 - 8002af4: 687b ldr r3, [r7, #4] - 8002af6: 689b ldr r3, [r3, #8] - 8002af8: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 8002afc: 4313 orrs r3, r2 - 8002afe: 600b str r3, [r1, #0] + 80028f6: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80028fa: 681b ldr r3, [r3, #0] + 80028fc: f423 1280 bic.w r2, r3, #1048576 ; 0x100000 + 8002900: 687b ldr r3, [r7, #4] + 8002902: 689b ldr r3, [r3, #8] + 8002904: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 8002908: 4313 orrs r3, r2 + 800290a: 600b str r3, [r1, #0] __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); - 8002b00: 687b ldr r3, [r7, #4] - 8002b02: 685b ldr r3, [r3, #4] - 8002b04: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 8002b08: d102 bne.n 8002b10 - 8002b0a: f7ff fcae bl 800246a - 8002b0e: e00d b.n 8002b2c - 8002b10: 687b ldr r3, [r7, #4] - 8002b12: 685b ldr r3, [r3, #4] - 8002b14: f5b3 1f04 cmp.w r3, #2162688 ; 0x210000 - 8002b18: d104 bne.n 8002b24 - 8002b1a: f7ff fc79 bl 8002410 - 8002b1e: f7ff fca4 bl 800246a - 8002b22: e003 b.n 8002b2c - 8002b24: f7ff fcaf bl 8002486 - 8002b28: f7ff fc80 bl 800242c + 800290c: 687b ldr r3, [r7, #4] + 800290e: 685b ldr r3, [r3, #4] + 8002910: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 8002914: d102 bne.n 800291c + 8002916: f7ff fcae bl 8002276 + 800291a: e00d b.n 8002938 + 800291c: 687b ldr r3, [r7, #4] + 800291e: 685b ldr r3, [r3, #4] + 8002920: f5b3 1f04 cmp.w r3, #2162688 ; 0x210000 + 8002924: d104 bne.n 8002930 + 8002926: f7ff fc79 bl 800221c + 800292a: f7ff fca4 bl 8002276 + 800292e: e003 b.n 8002938 + 8002930: f7ff fcaf bl 8002292 + 8002934: f7ff fc80 bl 8002238 /* Check the HSE State */ if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF) - 8002b2c: 687b ldr r3, [r7, #4] - 8002b2e: 685b ldr r3, [r3, #4] - 8002b30: 2b00 cmp r3, #0 - 8002b32: d012 beq.n 8002b5a + 8002938: 687b ldr r3, [r7, #4] + 800293a: 685b ldr r3, [r3, #4] + 800293c: 2b00 cmp r3, #0 + 800293e: d012 beq.n 8002966 { /* Get Start Tick */ tickstart = HAL_GetTick(); - 8002b34: f7fe feb2 bl 800189c - 8002b38: 6178 str r0, [r7, #20] + 8002940: f7fe feb2 bl 80016a8 + 8002944: 6178 str r0, [r7, #20] /* Wait till HSE is ready */ while (LL_RCC_HSE_IsReady() == 0U) - 8002b3a: e008 b.n 8002b4e + 8002946: e008 b.n 800295a { if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) - 8002b3c: f7fe feae bl 800189c - 8002b40: 4602 mov r2, r0 - 8002b42: 697b ldr r3, [r7, #20] - 8002b44: 1ad3 subs r3, r2, r3 - 8002b46: 2b64 cmp r3, #100 ; 0x64 - 8002b48: d901 bls.n 8002b4e + 8002948: f7fe feae bl 80016a8 + 800294c: 4602 mov r2, r0 + 800294e: 697b ldr r3, [r7, #20] + 8002950: 1ad3 subs r3, r2, r3 + 8002952: 2b64 cmp r3, #100 ; 0x64 + 8002954: d901 bls.n 800295a { return HAL_TIMEOUT; - 8002b4a: 2303 movs r3, #3 - 8002b4c: e257 b.n 8002ffe + 8002956: 2303 movs r3, #3 + 8002958: e257 b.n 8002e0a while (LL_RCC_HSE_IsReady() == 0U) - 8002b4e: f7ff fca8 bl 80024a2 - 8002b52: 4603 mov r3, r0 - 8002b54: 2b00 cmp r3, #0 - 8002b56: d0f1 beq.n 8002b3c - 8002b58: e011 b.n 8002b7e + 800295a: f7ff fca8 bl 80022ae + 800295e: 4603 mov r3, r0 + 8002960: 2b00 cmp r3, #0 + 8002962: d0f1 beq.n 8002948 + 8002964: e011 b.n 800298a } } else { /* Get Start Tick */ tickstart = HAL_GetTick(); - 8002b5a: f7fe fe9f bl 800189c - 8002b5e: 6178 str r0, [r7, #20] + 8002966: f7fe fe9f bl 80016a8 + 800296a: 6178 str r0, [r7, #20] /* Wait till HSE is disabled */ while (LL_RCC_HSE_IsReady() != 0U) - 8002b60: e008 b.n 8002b74 + 800296c: e008 b.n 8002980 { if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) - 8002b62: f7fe fe9b bl 800189c - 8002b66: 4602 mov r2, r0 - 8002b68: 697b ldr r3, [r7, #20] - 8002b6a: 1ad3 subs r3, r2, r3 - 8002b6c: 2b64 cmp r3, #100 ; 0x64 - 8002b6e: d901 bls.n 8002b74 + 800296e: f7fe fe9b bl 80016a8 + 8002972: 4602 mov r2, r0 + 8002974: 697b ldr r3, [r7, #20] + 8002976: 1ad3 subs r3, r2, r3 + 8002978: 2b64 cmp r3, #100 ; 0x64 + 800297a: d901 bls.n 8002980 { return HAL_TIMEOUT; - 8002b70: 2303 movs r3, #3 - 8002b72: e244 b.n 8002ffe + 800297c: 2303 movs r3, #3 + 800297e: e244 b.n 8002e0a while (LL_RCC_HSE_IsReady() != 0U) - 8002b74: f7ff fc95 bl 80024a2 - 8002b78: 4603 mov r3, r0 - 8002b7a: 2b00 cmp r3, #0 - 8002b7c: d1f1 bne.n 8002b62 + 8002980: f7ff fc95 bl 80022ae + 8002984: 4603 mov r3, r0 + 8002986: 2b00 cmp r3, #0 + 8002988: d1f1 bne.n 800296e } } } /*----------------------------- HSI Configuration --------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) - 8002b7e: 687b ldr r3, [r7, #4] - 8002b80: 681b ldr r3, [r3, #0] - 8002b82: f003 0302 and.w r3, r3, #2 - 8002b86: 2b00 cmp r3, #0 - 8002b88: d046 beq.n 8002c18 + 800298a: 687b ldr r3, [r7, #4] + 800298c: 681b ldr r3, [r3, #0] + 800298e: f003 0302 and.w r3, r3, #2 + 8002992: 2b00 cmp r3, #0 + 8002994: d046 beq.n 8002a24 /* Check the parameters */ assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); assert_param(IS_RCC_HSI_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */ if ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSI) || - 8002b8a: 69fb ldr r3, [r7, #28] - 8002b8c: 2b04 cmp r3, #4 - 8002b8e: d005 beq.n 8002b9c - 8002b90: 69fb ldr r3, [r7, #28] - 8002b92: 2b0c cmp r3, #12 - 8002b94: d10e bne.n 8002bb4 + 8002996: 69fb ldr r3, [r7, #28] + 8002998: 2b04 cmp r3, #4 + 800299a: d005 beq.n 80029a8 + 800299c: 69fb ldr r3, [r7, #28] + 800299e: 2b0c cmp r3, #12 + 80029a0: d10e bne.n 80029c0 ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSI))) - 8002b96: 69bb ldr r3, [r7, #24] - 8002b98: 2b02 cmp r3, #2 - 8002b9a: d10b bne.n 8002bb4 + 80029a2: 69bb ldr r3, [r7, #24] + 80029a4: 2b02 cmp r3, #2 + 80029a6: d10b bne.n 80029c0 { /* When HSI is used as system clock it will not be disabled */ if (RCC_OscInitStruct->HSIState == RCC_HSI_OFF) - 8002b9c: 687b ldr r3, [r7, #4] - 8002b9e: 691b ldr r3, [r3, #16] - 8002ba0: 2b00 cmp r3, #0 - 8002ba2: d101 bne.n 8002ba8 + 80029a8: 687b ldr r3, [r7, #4] + 80029aa: 691b ldr r3, [r3, #16] + 80029ac: 2b00 cmp r3, #0 + 80029ae: d101 bne.n 80029b4 { return HAL_ERROR; - 8002ba4: 2301 movs r3, #1 - 8002ba6: e22a b.n 8002ffe + 80029b0: 2301 movs r3, #1 + 80029b2: e22a b.n 8002e0a } /* Otherwise, just the calibration is allowed */ else { /* Adjusts the Internal High Speed oscillator (HSI) calibration value. */ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 8002ba8: 687b ldr r3, [r7, #4] - 8002baa: 695b ldr r3, [r3, #20] - 8002bac: 4618 mov r0, r3 - 8002bae: f7ff fcb6 bl 800251e + 80029b4: 687b ldr r3, [r7, #4] + 80029b6: 695b ldr r3, [r3, #20] + 80029b8: 4618 mov r0, r3 + 80029ba: f7ff fcb6 bl 800232a if (RCC_OscInitStruct->HSIState == RCC_HSI_OFF) - 8002bb2: e031 b.n 8002c18 + 80029be: e031 b.n 8002a24 } } else { /* Check the HSI State */ if (RCC_OscInitStruct->HSIState != RCC_HSI_OFF) - 8002bb4: 687b ldr r3, [r7, #4] - 8002bb6: 691b ldr r3, [r3, #16] - 8002bb8: 2b00 cmp r3, #0 - 8002bba: d019 beq.n 8002bf0 + 80029c0: 687b ldr r3, [r7, #4] + 80029c2: 691b ldr r3, [r3, #16] + 80029c4: 2b00 cmp r3, #0 + 80029c6: d019 beq.n 80029fc { /* Enable the Internal High Speed oscillator (HSI). */ __HAL_RCC_HSI_ENABLE(); - 8002bbc: f7ff fc82 bl 80024c4 + 80029c8: f7ff fc82 bl 80022d0 /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8002bc0: f7fe fe6c bl 800189c - 8002bc4: 6178 str r0, [r7, #20] + 80029cc: f7fe fe6c bl 80016a8 + 80029d0: 6178 str r0, [r7, #20] /* Wait till HSI is ready */ while (LL_RCC_HSI_IsReady() == 0U) - 8002bc6: e008 b.n 8002bda + 80029d2: e008 b.n 80029e6 { if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) - 8002bc8: f7fe fe68 bl 800189c - 8002bcc: 4602 mov r2, r0 - 8002bce: 697b ldr r3, [r7, #20] - 8002bd0: 1ad3 subs r3, r2, r3 - 8002bd2: 2b02 cmp r3, #2 - 8002bd4: d901 bls.n 8002bda + 80029d4: f7fe fe68 bl 80016a8 + 80029d8: 4602 mov r2, r0 + 80029da: 697b ldr r3, [r7, #20] + 80029dc: 1ad3 subs r3, r2, r3 + 80029de: 2b02 cmp r3, #2 + 80029e0: d901 bls.n 80029e6 { return HAL_TIMEOUT; - 8002bd6: 2303 movs r3, #3 - 8002bd8: e211 b.n 8002ffe + 80029e2: 2303 movs r3, #3 + 80029e4: e211 b.n 8002e0a while (LL_RCC_HSI_IsReady() == 0U) - 8002bda: f7ff fc8f bl 80024fc - 8002bde: 4603 mov r3, r0 - 8002be0: 2b00 cmp r3, #0 - 8002be2: d0f1 beq.n 8002bc8 + 80029e6: f7ff fc8f bl 8002308 + 80029ea: 4603 mov r3, r0 + 80029ec: 2b00 cmp r3, #0 + 80029ee: d0f1 beq.n 80029d4 } } /* Adjusts the Internal High Speed oscillator (HSI) calibration value. */ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 8002be4: 687b ldr r3, [r7, #4] - 8002be6: 695b ldr r3, [r3, #20] - 8002be8: 4618 mov r0, r3 - 8002bea: f7ff fc98 bl 800251e - 8002bee: e013 b.n 8002c18 + 80029f0: 687b ldr r3, [r7, #4] + 80029f2: 695b ldr r3, [r3, #20] + 80029f4: 4618 mov r0, r3 + 80029f6: f7ff fc98 bl 800232a + 80029fa: e013 b.n 8002a24 } else { /* Disable the Internal High Speed oscillator (HSI). */ __HAL_RCC_HSI_DISABLE(); - 8002bf0: f7ff fc76 bl 80024e0 + 80029fc: f7ff fc76 bl 80022ec /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8002bf4: f7fe fe52 bl 800189c - 8002bf8: 6178 str r0, [r7, #20] + 8002a00: f7fe fe52 bl 80016a8 + 8002a04: 6178 str r0, [r7, #20] /* Wait till HSI is disabled */ while (LL_RCC_HSI_IsReady() != 0U) - 8002bfa: e008 b.n 8002c0e + 8002a06: e008 b.n 8002a1a { if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) - 8002bfc: f7fe fe4e bl 800189c - 8002c00: 4602 mov r2, r0 - 8002c02: 697b ldr r3, [r7, #20] - 8002c04: 1ad3 subs r3, r2, r3 - 8002c06: 2b02 cmp r3, #2 - 8002c08: d901 bls.n 8002c0e + 8002a08: f7fe fe4e bl 80016a8 + 8002a0c: 4602 mov r2, r0 + 8002a0e: 697b ldr r3, [r7, #20] + 8002a10: 1ad3 subs r3, r2, r3 + 8002a12: 2b02 cmp r3, #2 + 8002a14: d901 bls.n 8002a1a { return HAL_TIMEOUT; - 8002c0a: 2303 movs r3, #3 - 8002c0c: e1f7 b.n 8002ffe + 8002a16: 2303 movs r3, #3 + 8002a18: e1f7 b.n 8002e0a while (LL_RCC_HSI_IsReady() != 0U) - 8002c0e: f7ff fc75 bl 80024fc - 8002c12: 4603 mov r3, r0 - 8002c14: 2b00 cmp r3, #0 - 8002c16: d1f1 bne.n 8002bfc + 8002a1a: f7ff fc75 bl 8002308 + 8002a1e: 4603 mov r3, r0 + 8002a20: 2b00 cmp r3, #0 + 8002a22: d1f1 bne.n 8002a08 } } } /*------------------------------ LSI Configuration -------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) - 8002c18: 687b ldr r3, [r7, #4] - 8002c1a: 681b ldr r3, [r3, #0] - 8002c1c: f003 0308 and.w r3, r3, #8 - 8002c20: 2b00 cmp r3, #0 - 8002c22: d06e beq.n 8002d02 + 8002a24: 687b ldr r3, [r7, #4] + 8002a26: 681b ldr r3, [r3, #0] + 8002a28: f003 0308 and.w r3, r3, #8 + 8002a2c: 2b00 cmp r3, #0 + 8002a2e: d06e beq.n 8002b0e { /* Check the parameters */ assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); /* Check the LSI State */ if (RCC_OscInitStruct->LSIState != RCC_LSI_OFF) - 8002c24: 687b ldr r3, [r7, #4] - 8002c26: 699b ldr r3, [r3, #24] - 8002c28: 2b00 cmp r3, #0 - 8002c2a: d056 beq.n 8002cda + 8002a30: 687b ldr r3, [r7, #4] + 8002a32: 699b ldr r3, [r3, #24] + 8002a34: 2b00 cmp r3, #0 + 8002a36: d056 beq.n 8002ae6 { uint32_t csr_temp = RCC->CSR; - 8002c2c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002c30: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 - 8002c34: 60fb str r3, [r7, #12] + 8002a38: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002a3c: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 + 8002a40: 60fb str r3, [r7, #12] /* Check LSI division factor */ assert_param(IS_RCC_LSIDIV(RCC_OscInitStruct->LSIDiv)); if (RCC_OscInitStruct->LSIDiv != (csr_temp & RCC_CSR_LSIPRE)) - 8002c36: 687b ldr r3, [r7, #4] - 8002c38: 69da ldr r2, [r3, #28] - 8002c3a: 68fb ldr r3, [r7, #12] - 8002c3c: f003 0310 and.w r3, r3, #16 - 8002c40: 429a cmp r2, r3 - 8002c42: d031 beq.n 8002ca8 + 8002a42: 687b ldr r3, [r7, #4] + 8002a44: 69da ldr r2, [r3, #28] + 8002a46: 68fb ldr r3, [r7, #12] + 8002a48: f003 0310 and.w r3, r3, #16 + 8002a4c: 429a cmp r2, r3 + 8002a4e: d031 beq.n 8002ab4 { if (((csr_temp & RCC_CSR_LSIRDY) == RCC_CSR_LSIRDY) && \ - 8002c44: 68fb ldr r3, [r7, #12] - 8002c46: f003 0302 and.w r3, r3, #2 - 8002c4a: 2b00 cmp r3, #0 - 8002c4c: d006 beq.n 8002c5c + 8002a50: 68fb ldr r3, [r7, #12] + 8002a52: f003 0302 and.w r3, r3, #2 + 8002a56: 2b00 cmp r3, #0 + 8002a58: d006 beq.n 8002a68 ((csr_temp & RCC_CSR_LSION) != RCC_CSR_LSION)) - 8002c4e: 68fb ldr r3, [r7, #12] - 8002c50: f003 0301 and.w r3, r3, #1 + 8002a5a: 68fb ldr r3, [r7, #12] + 8002a5c: f003 0301 and.w r3, r3, #1 if (((csr_temp & RCC_CSR_LSIRDY) == RCC_CSR_LSIRDY) && \ - 8002c54: 2b00 cmp r3, #0 - 8002c56: d101 bne.n 8002c5c + 8002a60: 2b00 cmp r3, #0 + 8002a62: d101 bne.n 8002a68 { /* If LSIRDY is set while LSION is not enabled, LSIPRE can't be updated */ return HAL_ERROR; - 8002c58: 2301 movs r3, #1 - 8002c5a: e1d0 b.n 8002ffe + 8002a64: 2301 movs r3, #1 + 8002a66: e1d0 b.n 8002e0a } /* Turn off LSI before changing RCC_CSR_LSIPRE */ if ((csr_temp & RCC_CSR_LSION) == RCC_CSR_LSION) - 8002c5c: 68fb ldr r3, [r7, #12] - 8002c5e: f003 0301 and.w r3, r3, #1 - 8002c62: 2b00 cmp r3, #0 - 8002c64: d013 beq.n 8002c8e + 8002a68: 68fb ldr r3, [r7, #12] + 8002a6a: f003 0301 and.w r3, r3, #1 + 8002a6e: 2b00 cmp r3, #0 + 8002a70: d013 beq.n 8002a9a { __HAL_RCC_LSI_DISABLE(); - 8002c66: f7ff fc8f bl 8002588 + 8002a72: f7ff fc8f bl 8002394 /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8002c6a: f7fe fe17 bl 800189c - 8002c6e: 6178 str r0, [r7, #20] + 8002a76: f7fe fe17 bl 80016a8 + 8002a7a: 6178 str r0, [r7, #20] /* Wait till LSI is disabled */ while (LL_RCC_LSI_IsReady() != 0U) - 8002c70: e008 b.n 8002c84 + 8002a7c: e008 b.n 8002a90 { if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 8002c72: f7fe fe13 bl 800189c - 8002c76: 4602 mov r2, r0 - 8002c78: 697b ldr r3, [r7, #20] - 8002c7a: 1ad3 subs r3, r2, r3 - 8002c7c: 2b11 cmp r3, #17 - 8002c7e: d901 bls.n 8002c84 + 8002a7e: f7fe fe13 bl 80016a8 + 8002a82: 4602 mov r2, r0 + 8002a84: 697b ldr r3, [r7, #20] + 8002a86: 1ad3 subs r3, r2, r3 + 8002a88: 2b11 cmp r3, #17 + 8002a8a: d901 bls.n 8002a90 { return HAL_TIMEOUT; - 8002c80: 2303 movs r3, #3 - 8002c82: e1bc b.n 8002ffe + 8002a8c: 2303 movs r3, #3 + 8002a8e: e1bc b.n 8002e0a while (LL_RCC_LSI_IsReady() != 0U) - 8002c84: f7ff fc90 bl 80025a8 - 8002c88: 4603 mov r3, r0 - 8002c8a: 2b00 cmp r3, #0 - 8002c8c: d1f1 bne.n 8002c72 + 8002a90: f7ff fc90 bl 80023b4 + 8002a94: 4603 mov r3, r0 + 8002a96: 2b00 cmp r3, #0 + 8002a98: d1f1 bne.n 8002a7e } } } /* Set LSI division factor */ MODIFY_REG(RCC->CSR, RCC_CSR_LSIPRE, RCC_OscInitStruct->LSIDiv); - 8002c8e: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002c92: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 - 8002c96: f023 0210 bic.w r2, r3, #16 - 8002c9a: 687b ldr r3, [r7, #4] - 8002c9c: 69db ldr r3, [r3, #28] - 8002c9e: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 8002ca2: 4313 orrs r3, r2 - 8002ca4: f8c1 3094 str.w r3, [r1, #148] ; 0x94 + 8002a9a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002a9e: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 + 8002aa2: f023 0210 bic.w r2, r3, #16 + 8002aa6: 687b ldr r3, [r7, #4] + 8002aa8: 69db ldr r3, [r3, #28] + 8002aaa: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 8002aae: 4313 orrs r3, r2 + 8002ab0: f8c1 3094 str.w r3, [r1, #148] ; 0x94 } /* Enable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_ENABLE(); - 8002ca8: f7ff fc5e bl 8002568 + 8002ab4: f7ff fc5e bl 8002374 /* Get Start Tick */ tickstart = HAL_GetTick(); - 8002cac: f7fe fdf6 bl 800189c - 8002cb0: 6178 str r0, [r7, #20] + 8002ab8: f7fe fdf6 bl 80016a8 + 8002abc: 6178 str r0, [r7, #20] /* Wait till LSI is ready */ while (LL_RCC_LSI_IsReady() == 0U) - 8002cb2: e00c b.n 8002cce - 8002cb4: 20000008 .word 0x20000008 - 8002cb8: 2000000c .word 0x2000000c + 8002abe: e00c b.n 8002ada + 8002ac0: 20000000 .word 0x20000000 + 8002ac4: 20000004 .word 0x20000004 { if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 8002cbc: f7fe fdee bl 800189c - 8002cc0: 4602 mov r2, r0 - 8002cc2: 697b ldr r3, [r7, #20] - 8002cc4: 1ad3 subs r3, r2, r3 - 8002cc6: 2b11 cmp r3, #17 - 8002cc8: d901 bls.n 8002cce + 8002ac8: f7fe fdee bl 80016a8 + 8002acc: 4602 mov r2, r0 + 8002ace: 697b ldr r3, [r7, #20] + 8002ad0: 1ad3 subs r3, r2, r3 + 8002ad2: 2b11 cmp r3, #17 + 8002ad4: d901 bls.n 8002ada { return HAL_TIMEOUT; - 8002cca: 2303 movs r3, #3 - 8002ccc: e197 b.n 8002ffe + 8002ad6: 2303 movs r3, #3 + 8002ad8: e197 b.n 8002e0a while (LL_RCC_LSI_IsReady() == 0U) - 8002cce: f7ff fc6b bl 80025a8 - 8002cd2: 4603 mov r3, r0 - 8002cd4: 2b00 cmp r3, #0 - 8002cd6: d0f1 beq.n 8002cbc - 8002cd8: e013 b.n 8002d02 + 8002ada: f7ff fc6b bl 80023b4 + 8002ade: 4603 mov r3, r0 + 8002ae0: 2b00 cmp r3, #0 + 8002ae2: d0f1 beq.n 8002ac8 + 8002ae4: e013 b.n 8002b0e } } else { /* Disable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_DISABLE(); - 8002cda: f7ff fc55 bl 8002588 + 8002ae6: f7ff fc55 bl 8002394 /* Get Start Tick */ tickstart = HAL_GetTick(); - 8002cde: f7fe fddd bl 800189c - 8002ce2: 6178 str r0, [r7, #20] + 8002aea: f7fe fddd bl 80016a8 + 8002aee: 6178 str r0, [r7, #20] /* Wait till LSI is disabled */ while (LL_RCC_LSI_IsReady() != 0U) - 8002ce4: e008 b.n 8002cf8 + 8002af0: e008 b.n 8002b04 { if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 8002ce6: f7fe fdd9 bl 800189c - 8002cea: 4602 mov r2, r0 - 8002cec: 697b ldr r3, [r7, #20] - 8002cee: 1ad3 subs r3, r2, r3 - 8002cf0: 2b11 cmp r3, #17 - 8002cf2: d901 bls.n 8002cf8 + 8002af2: f7fe fdd9 bl 80016a8 + 8002af6: 4602 mov r2, r0 + 8002af8: 697b ldr r3, [r7, #20] + 8002afa: 1ad3 subs r3, r2, r3 + 8002afc: 2b11 cmp r3, #17 + 8002afe: d901 bls.n 8002b04 { return HAL_TIMEOUT; - 8002cf4: 2303 movs r3, #3 - 8002cf6: e182 b.n 8002ffe + 8002b00: 2303 movs r3, #3 + 8002b02: e182 b.n 8002e0a while (LL_RCC_LSI_IsReady() != 0U) - 8002cf8: f7ff fc56 bl 80025a8 - 8002cfc: 4603 mov r3, r0 - 8002cfe: 2b00 cmp r3, #0 - 8002d00: d1f1 bne.n 8002ce6 + 8002b04: f7ff fc56 bl 80023b4 + 8002b08: 4603 mov r3, r0 + 8002b0a: 2b00 cmp r3, #0 + 8002b0c: d1f1 bne.n 8002af2 } } } /*------------------------------ LSE Configuration -------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) - 8002d02: 687b ldr r3, [r7, #4] - 8002d04: 681b ldr r3, [r3, #0] - 8002d06: f003 0304 and.w r3, r3, #4 - 8002d0a: 2b00 cmp r3, #0 - 8002d0c: f000 80d8 beq.w 8002ec0 + 8002b0e: 687b ldr r3, [r7, #4] + 8002b10: 681b ldr r3, [r3, #0] + 8002b12: f003 0304 and.w r3, r3, #4 + 8002b16: 2b00 cmp r3, #0 + 8002b18: f000 80d8 beq.w 8002ccc assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState)); /* Update LSE configuration in Backup Domain control register */ /* Requires to enable write access to Backup Domain of necessary */ if (LL_PWR_IsEnabledBkUpAccess() == 0U) - 8002d10: f7ff fb6c bl 80023ec - 8002d14: 4603 mov r3, r0 - 8002d16: 2b00 cmp r3, #0 - 8002d18: d113 bne.n 8002d42 + 8002b1c: f7ff fb6c bl 80021f8 + 8002b20: 4603 mov r3, r0 + 8002b22: 2b00 cmp r3, #0 + 8002b24: d113 bne.n 8002b4e { /* Enable write access to Backup domain */ HAL_PWR_EnableBkUpAccess(); - 8002d1a: f7ff fb4d bl 80023b8 + 8002b26: f7ff fb4d bl 80021c4 /* Wait for Backup domain Write protection disable */ tickstart = HAL_GetTick(); - 8002d1e: f7fe fdbd bl 800189c - 8002d22: 6178 str r0, [r7, #20] + 8002b2a: f7fe fdbd bl 80016a8 + 8002b2e: 6178 str r0, [r7, #20] while (LL_PWR_IsEnabledBkUpAccess() == 0U) - 8002d24: e008 b.n 8002d38 + 8002b30: e008 b.n 8002b44 { if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 8002d26: f7fe fdb9 bl 800189c - 8002d2a: 4602 mov r2, r0 - 8002d2c: 697b ldr r3, [r7, #20] - 8002d2e: 1ad3 subs r3, r2, r3 - 8002d30: 2b02 cmp r3, #2 - 8002d32: d901 bls.n 8002d38 + 8002b32: f7fe fdb9 bl 80016a8 + 8002b36: 4602 mov r2, r0 + 8002b38: 697b ldr r3, [r7, #20] + 8002b3a: 1ad3 subs r3, r2, r3 + 8002b3c: 2b02 cmp r3, #2 + 8002b3e: d901 bls.n 8002b44 { return HAL_TIMEOUT; - 8002d34: 2303 movs r3, #3 - 8002d36: e162 b.n 8002ffe + 8002b40: 2303 movs r3, #3 + 8002b42: e162 b.n 8002e0a while (LL_PWR_IsEnabledBkUpAccess() == 0U) - 8002d38: f7ff fb58 bl 80023ec - 8002d3c: 4603 mov r3, r0 - 8002d3e: 2b00 cmp r3, #0 - 8002d40: d0f1 beq.n 8002d26 + 8002b44: f7ff fb58 bl 80021f8 + 8002b48: 4603 mov r3, r0 + 8002b4a: 2b00 cmp r3, #0 + 8002b4c: d0f1 beq.n 8002b32 } } } /* Set the new LSE configuration -----------------------------------------*/ if (RCC_OscInitStruct->LSEState != RCC_LSE_OFF) - 8002d42: 687b ldr r3, [r7, #4] - 8002d44: 68db ldr r3, [r3, #12] - 8002d46: 2b00 cmp r3, #0 - 8002d48: d07b beq.n 8002e42 + 8002b4e: 687b ldr r3, [r7, #4] + 8002b50: 68db ldr r3, [r3, #12] + 8002b52: 2b00 cmp r3, #0 + 8002b54: d07b beq.n 8002c4e { /* Enable LSE bypasss (if requested) */ if ((RCC_OscInitStruct->LSEState == RCC_LSE_BYPASS) - 8002d4a: 687b ldr r3, [r7, #4] - 8002d4c: 68db ldr r3, [r3, #12] - 8002d4e: 2b85 cmp r3, #133 ; 0x85 - 8002d50: d003 beq.n 8002d5a + 8002b56: 687b ldr r3, [r7, #4] + 8002b58: 68db ldr r3, [r3, #12] + 8002b5a: 2b85 cmp r3, #133 ; 0x85 + 8002b5c: d003 beq.n 8002b66 || (RCC_OscInitStruct->LSEState == RCC_LSE_BYPASS_RTC_ONLY)) - 8002d52: 687b ldr r3, [r7, #4] - 8002d54: 68db ldr r3, [r3, #12] - 8002d56: 2b05 cmp r3, #5 - 8002d58: d109 bne.n 8002d6e + 8002b5e: 687b ldr r3, [r7, #4] + 8002b60: 68db ldr r3, [r3, #12] + 8002b62: 2b05 cmp r3, #5 + 8002b64: d109 bne.n 8002b7a { /* LSE oscillator bypass enable */ SET_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); - 8002d5a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002d5e: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8002d62: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 8002d66: f043 0304 orr.w r3, r3, #4 - 8002d6a: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + 8002b66: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002b6a: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8002b6e: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8002b72: f043 0304 orr.w r3, r3, #4 + 8002b76: f8c2 3090 str.w r3, [r2, #144] ; 0x90 } /* Get Start Tick */ tickstart = HAL_GetTick(); - 8002d6e: f7fe fd95 bl 800189c - 8002d72: 6178 str r0, [r7, #20] + 8002b7a: f7fe fd95 bl 80016a8 + 8002b7e: 6178 str r0, [r7, #20] /* LSE oscillator enable */ SET_BIT(RCC->BDCR, RCC_BDCR_LSEON); - 8002d74: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002d78: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8002d7c: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 8002d80: f043 0301 orr.w r3, r3, #1 - 8002d84: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + 8002b80: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002b84: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8002b88: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8002b8c: f043 0301 orr.w r3, r3, #1 + 8002b90: f8c2 3090 str.w r3, [r2, #144] ; 0x90 /* Wait till LSE is ready */ while (LL_RCC_LSE_IsReady() == 0U) - 8002d88: e00a b.n 8002da0 + 8002b94: e00a b.n 8002bac { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8002d8a: f7fe fd87 bl 800189c - 8002d8e: 4602 mov r2, r0 - 8002d90: 697b ldr r3, [r7, #20] - 8002d92: 1ad3 subs r3, r2, r3 - 8002d94: f241 3288 movw r2, #5000 ; 0x1388 - 8002d98: 4293 cmp r3, r2 - 8002d9a: d901 bls.n 8002da0 + 8002b96: f7fe fd87 bl 80016a8 + 8002b9a: 4602 mov r2, r0 + 8002b9c: 697b ldr r3, [r7, #20] + 8002b9e: 1ad3 subs r3, r2, r3 + 8002ba0: f241 3288 movw r2, #5000 ; 0x1388 + 8002ba4: 4293 cmp r3, r2 + 8002ba6: d901 bls.n 8002bac { return HAL_TIMEOUT; - 8002d9c: 2303 movs r3, #3 - 8002d9e: e12e b.n 8002ffe + 8002ba8: 2303 movs r3, #3 + 8002baa: e12e b.n 8002e0a while (LL_RCC_LSE_IsReady() == 0U) - 8002da0: f7ff fbd1 bl 8002546 - 8002da4: 4603 mov r3, r0 - 8002da6: 2b00 cmp r3, #0 - 8002da8: d0ef beq.n 8002d8a + 8002bac: f7ff fbd1 bl 8002352 + 8002bb0: 4603 mov r3, r0 + 8002bb2: 2b00 cmp r3, #0 + 8002bb4: d0ef beq.n 8002b96 } } /* Enable LSE system clock (if requested) */ if ((RCC_OscInitStruct->LSEState == RCC_LSE_ON) - 8002daa: 687b ldr r3, [r7, #4] - 8002dac: 68db ldr r3, [r3, #12] - 8002dae: 2b81 cmp r3, #129 ; 0x81 - 8002db0: d003 beq.n 8002dba + 8002bb6: 687b ldr r3, [r7, #4] + 8002bb8: 68db ldr r3, [r3, #12] + 8002bba: 2b81 cmp r3, #129 ; 0x81 + 8002bbc: d003 beq.n 8002bc6 || (RCC_OscInitStruct->LSEState == RCC_LSE_BYPASS)) - 8002db2: 687b ldr r3, [r7, #4] - 8002db4: 68db ldr r3, [r3, #12] - 8002db6: 2b85 cmp r3, #133 ; 0x85 - 8002db8: d121 bne.n 8002dfe + 8002bbe: 687b ldr r3, [r7, #4] + 8002bc0: 68db ldr r3, [r3, #12] + 8002bc2: 2b85 cmp r3, #133 ; 0x85 + 8002bc4: d121 bne.n 8002c0a { /* Get Start Tick */ tickstart = HAL_GetTick(); - 8002dba: f7fe fd6f bl 800189c - 8002dbe: 6178 str r0, [r7, #20] + 8002bc6: f7fe fd6f bl 80016a8 + 8002bca: 6178 str r0, [r7, #20] SET_BIT(RCC->BDCR, RCC_BDCR_LSESYSEN); - 8002dc0: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002dc4: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8002dc8: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 8002dcc: f043 0380 orr.w r3, r3, #128 ; 0x80 - 8002dd0: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + 8002bcc: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002bd0: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8002bd4: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8002bd8: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8002bdc: f8c2 3090 str.w r3, [r2, #144] ; 0x90 /* Wait till LSESYS is ready */ while (READ_BIT(RCC->BDCR, RCC_BDCR_LSESYSRDY) == 0U) - 8002dd4: e00a b.n 8002dec + 8002be0: e00a b.n 8002bf8 { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8002dd6: f7fe fd61 bl 800189c - 8002dda: 4602 mov r2, r0 - 8002ddc: 697b ldr r3, [r7, #20] - 8002dde: 1ad3 subs r3, r2, r3 - 8002de0: f241 3288 movw r2, #5000 ; 0x1388 - 8002de4: 4293 cmp r3, r2 - 8002de6: d901 bls.n 8002dec + 8002be2: f7fe fd61 bl 80016a8 + 8002be6: 4602 mov r2, r0 + 8002be8: 697b ldr r3, [r7, #20] + 8002bea: 1ad3 subs r3, r2, r3 + 8002bec: f241 3288 movw r2, #5000 ; 0x1388 + 8002bf0: 4293 cmp r3, r2 + 8002bf2: d901 bls.n 8002bf8 { return HAL_TIMEOUT; - 8002de8: 2303 movs r3, #3 - 8002dea: e108 b.n 8002ffe + 8002bf4: 2303 movs r3, #3 + 8002bf6: e108 b.n 8002e0a while (READ_BIT(RCC->BDCR, RCC_BDCR_LSESYSRDY) == 0U) - 8002dec: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002df0: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8002df4: f403 6300 and.w r3, r3, #2048 ; 0x800 - 8002df8: 2b00 cmp r3, #0 - 8002dfa: d0ec beq.n 8002dd6 + 8002bf8: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002bfc: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8002c00: f403 6300 and.w r3, r3, #2048 ; 0x800 + 8002c04: 2b00 cmp r3, #0 + 8002c06: d0ec beq.n 8002be2 if ((RCC_OscInitStruct->LSEState == RCC_LSE_ON) - 8002dfc: e060 b.n 8002ec0 + 8002c08: e060 b.n 8002ccc } } else { /* Get Start Tick */ tickstart = HAL_GetTick(); - 8002dfe: f7fe fd4d bl 800189c - 8002e02: 6178 str r0, [r7, #20] + 8002c0a: f7fe fd4d bl 80016a8 + 8002c0e: 6178 str r0, [r7, #20] CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSESYSEN); - 8002e04: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002e08: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8002e0c: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 8002e10: f023 0380 bic.w r3, r3, #128 ; 0x80 - 8002e14: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + 8002c10: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002c14: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8002c18: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8002c1c: f023 0380 bic.w r3, r3, #128 ; 0x80 + 8002c20: f8c2 3090 str.w r3, [r2, #144] ; 0x90 /* Wait till LSESYSRDY is cleared */ while (READ_BIT(RCC->BDCR, RCC_BDCR_LSESYSRDY) != 0U) - 8002e18: e00a b.n 8002e30 + 8002c24: e00a b.n 8002c3c { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8002e1a: f7fe fd3f bl 800189c - 8002e1e: 4602 mov r2, r0 - 8002e20: 697b ldr r3, [r7, #20] - 8002e22: 1ad3 subs r3, r2, r3 - 8002e24: f241 3288 movw r2, #5000 ; 0x1388 - 8002e28: 4293 cmp r3, r2 - 8002e2a: d901 bls.n 8002e30 + 8002c26: f7fe fd3f bl 80016a8 + 8002c2a: 4602 mov r2, r0 + 8002c2c: 697b ldr r3, [r7, #20] + 8002c2e: 1ad3 subs r3, r2, r3 + 8002c30: f241 3288 movw r2, #5000 ; 0x1388 + 8002c34: 4293 cmp r3, r2 + 8002c36: d901 bls.n 8002c3c { return HAL_TIMEOUT; - 8002e2c: 2303 movs r3, #3 - 8002e2e: e0e6 b.n 8002ffe + 8002c38: 2303 movs r3, #3 + 8002c3a: e0e6 b.n 8002e0a while (READ_BIT(RCC->BDCR, RCC_BDCR_LSESYSRDY) != 0U) - 8002e30: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002e34: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8002e38: f403 6300 and.w r3, r3, #2048 ; 0x800 - 8002e3c: 2b00 cmp r3, #0 - 8002e3e: d1ec bne.n 8002e1a - 8002e40: e03e b.n 8002ec0 + 8002c3c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002c40: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8002c44: f403 6300 and.w r3, r3, #2048 ; 0x800 + 8002c48: 2b00 cmp r3, #0 + 8002c4a: d1ec bne.n 8002c26 + 8002c4c: e03e b.n 8002ccc } } else { /* Get Start Tick */ tickstart = HAL_GetTick(); - 8002e42: f7fe fd2b bl 800189c - 8002e46: 6178 str r0, [r7, #20] + 8002c4e: f7fe fd2b bl 80016a8 + 8002c52: 6178 str r0, [r7, #20] CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSESYSEN); - 8002e48: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002e4c: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8002e50: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 8002e54: f023 0380 bic.w r3, r3, #128 ; 0x80 - 8002e58: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + 8002c54: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002c58: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8002c5c: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8002c60: f023 0380 bic.w r3, r3, #128 ; 0x80 + 8002c64: f8c2 3090 str.w r3, [r2, #144] ; 0x90 /* Wait till LSESYSRDY is cleared */ while (READ_BIT(RCC->BDCR, RCC_BDCR_LSESYSRDY) != 0U) - 8002e5c: e00a b.n 8002e74 + 8002c68: e00a b.n 8002c80 { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8002e5e: f7fe fd1d bl 800189c - 8002e62: 4602 mov r2, r0 - 8002e64: 697b ldr r3, [r7, #20] - 8002e66: 1ad3 subs r3, r2, r3 - 8002e68: f241 3288 movw r2, #5000 ; 0x1388 - 8002e6c: 4293 cmp r3, r2 - 8002e6e: d901 bls.n 8002e74 + 8002c6a: f7fe fd1d bl 80016a8 + 8002c6e: 4602 mov r2, r0 + 8002c70: 697b ldr r3, [r7, #20] + 8002c72: 1ad3 subs r3, r2, r3 + 8002c74: f241 3288 movw r2, #5000 ; 0x1388 + 8002c78: 4293 cmp r3, r2 + 8002c7a: d901 bls.n 8002c80 { return HAL_TIMEOUT; - 8002e70: 2303 movs r3, #3 - 8002e72: e0c4 b.n 8002ffe + 8002c7c: 2303 movs r3, #3 + 8002c7e: e0c4 b.n 8002e0a while (READ_BIT(RCC->BDCR, RCC_BDCR_LSESYSRDY) != 0U) - 8002e74: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002e78: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8002e7c: f403 6300 and.w r3, r3, #2048 ; 0x800 - 8002e80: 2b00 cmp r3, #0 - 8002e82: d1ec bne.n 8002e5e + 8002c80: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002c84: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8002c88: f403 6300 and.w r3, r3, #2048 ; 0x800 + 8002c8c: 2b00 cmp r3, #0 + 8002c8e: d1ec bne.n 8002c6a } } /* Get Start Tick */ tickstart = HAL_GetTick(); - 8002e84: f7fe fd0a bl 800189c - 8002e88: 6178 str r0, [r7, #20] + 8002c90: f7fe fd0a bl 80016a8 + 8002c94: 6178 str r0, [r7, #20] /* LSE oscillator disable */ CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON); - 8002e8a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002e8e: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8002e92: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 8002e96: f023 0301 bic.w r3, r3, #1 - 8002e9a: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + 8002c96: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002c9a: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8002c9e: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8002ca2: f023 0301 bic.w r3, r3, #1 + 8002ca6: f8c2 3090 str.w r3, [r2, #144] ; 0x90 /* Wait till LSE is disabled */ while (LL_RCC_LSE_IsReady() != 0U) - 8002e9e: e00a b.n 8002eb6 + 8002caa: e00a b.n 8002cc2 { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8002ea0: f7fe fcfc bl 800189c - 8002ea4: 4602 mov r2, r0 - 8002ea6: 697b ldr r3, [r7, #20] - 8002ea8: 1ad3 subs r3, r2, r3 - 8002eaa: f241 3288 movw r2, #5000 ; 0x1388 - 8002eae: 4293 cmp r3, r2 - 8002eb0: d901 bls.n 8002eb6 + 8002cac: f7fe fcfc bl 80016a8 + 8002cb0: 4602 mov r2, r0 + 8002cb2: 697b ldr r3, [r7, #20] + 8002cb4: 1ad3 subs r3, r2, r3 + 8002cb6: f241 3288 movw r2, #5000 ; 0x1388 + 8002cba: 4293 cmp r3, r2 + 8002cbc: d901 bls.n 8002cc2 { return HAL_TIMEOUT; - 8002eb2: 2303 movs r3, #3 - 8002eb4: e0a3 b.n 8002ffe + 8002cbe: 2303 movs r3, #3 + 8002cc0: e0a3 b.n 8002e0a while (LL_RCC_LSE_IsReady() != 0U) - 8002eb6: f7ff fb46 bl 8002546 - 8002eba: 4603 mov r3, r0 - 8002ebc: 2b00 cmp r3, #0 - 8002ebe: d1ef bne.n 8002ea0 + 8002cc2: f7ff fb46 bl 8002352 + 8002cc6: 4603 mov r3, r0 + 8002cc8: 2b00 cmp r3, #0 + 8002cca: d1ef bne.n 8002cac /*-------------------------------- PLL Configuration -----------------------*/ /* Check the parameters */ assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); if (RCC_OscInitStruct->PLL.PLLState != RCC_PLL_NONE) - 8002ec0: 687b ldr r3, [r7, #4] - 8002ec2: 6adb ldr r3, [r3, #44] ; 0x2c - 8002ec4: 2b00 cmp r3, #0 - 8002ec6: f000 8099 beq.w 8002ffc + 8002ccc: 687b ldr r3, [r7, #4] + 8002cce: 6adb ldr r3, [r3, #44] ; 0x2c + 8002cd0: 2b00 cmp r3, #0 + 8002cd2: f000 8099 beq.w 8002e08 { /* Check if the PLL is used as system clock or not */ if (sysclk_source != RCC_SYSCLKSOURCE_STATUS_PLLCLK) - 8002eca: 69fb ldr r3, [r7, #28] - 8002ecc: 2b0c cmp r3, #12 - 8002ece: d06c beq.n 8002faa + 8002cd6: 69fb ldr r3, [r7, #28] + 8002cd8: 2b0c cmp r3, #12 + 8002cda: d06c beq.n 8002db6 { if (RCC_OscInitStruct->PLL.PLLState == RCC_PLL_ON) - 8002ed0: 687b ldr r3, [r7, #4] - 8002ed2: 6adb ldr r3, [r3, #44] ; 0x2c - 8002ed4: 2b02 cmp r3, #2 - 8002ed6: d14b bne.n 8002f70 + 8002cdc: 687b ldr r3, [r7, #4] + 8002cde: 6adb ldr r3, [r3, #44] ; 0x2c + 8002ce0: 2b02 cmp r3, #2 + 8002ce2: d14b bne.n 8002d7c assert_param(IS_RCC_PLLP_VALUE(RCC_OscInitStruct->PLL.PLLP)); assert_param(IS_RCC_PLLQ_VALUE(RCC_OscInitStruct->PLL.PLLQ)); assert_param(IS_RCC_PLLR_VALUE(RCC_OscInitStruct->PLL.PLLR)); /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); - 8002ed8: f7ff fc87 bl 80027ea + 8002ce4: f7ff fc87 bl 80025f6 /* Get Start Tick */ tickstart = HAL_GetTick(); - 8002edc: f7fe fcde bl 800189c - 8002ee0: 6178 str r0, [r7, #20] + 8002ce8: f7fe fcde bl 80016a8 + 8002cec: 6178 str r0, [r7, #20] /* Wait till PLL is ready */ while (LL_RCC_PLL_IsReady() != 0U) - 8002ee2: e008 b.n 8002ef6 + 8002cee: e008 b.n 8002d02 { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8002ee4: f7fe fcda bl 800189c - 8002ee8: 4602 mov r2, r0 - 8002eea: 697b ldr r3, [r7, #20] - 8002eec: 1ad3 subs r3, r2, r3 - 8002eee: 2b0a cmp r3, #10 - 8002ef0: d901 bls.n 8002ef6 + 8002cf0: f7fe fcda bl 80016a8 + 8002cf4: 4602 mov r2, r0 + 8002cf6: 697b ldr r3, [r7, #20] + 8002cf8: 1ad3 subs r3, r2, r3 + 8002cfa: 2b0a cmp r3, #10 + 8002cfc: d901 bls.n 8002d02 { return HAL_TIMEOUT; - 8002ef2: 2303 movs r3, #3 - 8002ef4: e083 b.n 8002ffe + 8002cfe: 2303 movs r3, #3 + 8002d00: e083 b.n 8002e0a while (LL_RCC_PLL_IsReady() != 0U) - 8002ef6: f7ff fc86 bl 8002806 - 8002efa: 4603 mov r3, r0 - 8002efc: 2b00 cmp r3, #0 - 8002efe: d1f1 bne.n 8002ee4 + 8002d02: f7ff fc86 bl 8002612 + 8002d06: 4603 mov r3, r0 + 8002d08: 2b00 cmp r3, #0 + 8002d0a: d1f1 bne.n 8002cf0 } } /* Configure the main PLL clock source, multiplication and division factors. */ __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, - 8002f00: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002f04: 68da ldr r2, [r3, #12] - 8002f06: 4b40 ldr r3, [pc, #256] ; (8003008 ) - 8002f08: 4013 ands r3, r2 - 8002f0a: 687a ldr r2, [r7, #4] - 8002f0c: 6b11 ldr r1, [r2, #48] ; 0x30 - 8002f0e: 687a ldr r2, [r7, #4] - 8002f10: 6b52 ldr r2, [r2, #52] ; 0x34 - 8002f12: 4311 orrs r1, r2 - 8002f14: 687a ldr r2, [r7, #4] - 8002f16: 6b92 ldr r2, [r2, #56] ; 0x38 - 8002f18: 0212 lsls r2, r2, #8 - 8002f1a: 4311 orrs r1, r2 - 8002f1c: 687a ldr r2, [r7, #4] - 8002f1e: 6bd2 ldr r2, [r2, #60] ; 0x3c - 8002f20: 4311 orrs r1, r2 - 8002f22: 687a ldr r2, [r7, #4] - 8002f24: 6c12 ldr r2, [r2, #64] ; 0x40 - 8002f26: 4311 orrs r1, r2 - 8002f28: 687a ldr r2, [r7, #4] - 8002f2a: 6c52 ldr r2, [r2, #68] ; 0x44 - 8002f2c: 430a orrs r2, r1 - 8002f2e: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 8002f32: 4313 orrs r3, r2 - 8002f34: 60cb str r3, [r1, #12] + 8002d0c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002d10: 68da ldr r2, [r3, #12] + 8002d12: 4b40 ldr r3, [pc, #256] ; (8002e14 ) + 8002d14: 4013 ands r3, r2 + 8002d16: 687a ldr r2, [r7, #4] + 8002d18: 6b11 ldr r1, [r2, #48] ; 0x30 + 8002d1a: 687a ldr r2, [r7, #4] + 8002d1c: 6b52 ldr r2, [r2, #52] ; 0x34 + 8002d1e: 4311 orrs r1, r2 + 8002d20: 687a ldr r2, [r7, #4] + 8002d22: 6b92 ldr r2, [r2, #56] ; 0x38 + 8002d24: 0212 lsls r2, r2, #8 + 8002d26: 4311 orrs r1, r2 + 8002d28: 687a ldr r2, [r7, #4] + 8002d2a: 6bd2 ldr r2, [r2, #60] ; 0x3c + 8002d2c: 4311 orrs r1, r2 + 8002d2e: 687a ldr r2, [r7, #4] + 8002d30: 6c12 ldr r2, [r2, #64] ; 0x40 + 8002d32: 4311 orrs r1, r2 + 8002d34: 687a ldr r2, [r7, #4] + 8002d36: 6c52 ldr r2, [r2, #68] ; 0x44 + 8002d38: 430a orrs r2, r1 + 8002d3a: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 8002d3e: 4313 orrs r3, r2 + 8002d40: 60cb str r3, [r1, #12] RCC_OscInitStruct->PLL.PLLP, RCC_OscInitStruct->PLL.PLLQ, RCC_OscInitStruct->PLL.PLLR); /* Enable the main PLL. */ __HAL_RCC_PLL_ENABLE(); - 8002f36: f7ff fc4a bl 80027ce + 8002d42: f7ff fc4a bl 80025da /* Enable PLL System Clock output. */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_SYSCLK); - 8002f3a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002f3e: 68db ldr r3, [r3, #12] - 8002f40: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 8002f44: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000 - 8002f48: 60d3 str r3, [r2, #12] + 8002d46: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002d4a: 68db ldr r3, [r3, #12] + 8002d4c: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8002d50: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000 + 8002d54: 60d3 str r3, [r2, #12] /* Get Start Tick */ tickstart = HAL_GetTick(); - 8002f4a: f7fe fca7 bl 800189c - 8002f4e: 6178 str r0, [r7, #20] + 8002d56: f7fe fca7 bl 80016a8 + 8002d5a: 6178 str r0, [r7, #20] /* Wait till PLL is ready */ while (LL_RCC_PLL_IsReady() == 0U) - 8002f50: e008 b.n 8002f64 + 8002d5c: e008 b.n 8002d70 { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8002f52: f7fe fca3 bl 800189c - 8002f56: 4602 mov r2, r0 - 8002f58: 697b ldr r3, [r7, #20] - 8002f5a: 1ad3 subs r3, r2, r3 - 8002f5c: 2b0a cmp r3, #10 - 8002f5e: d901 bls.n 8002f64 + 8002d5e: f7fe fca3 bl 80016a8 + 8002d62: 4602 mov r2, r0 + 8002d64: 697b ldr r3, [r7, #20] + 8002d66: 1ad3 subs r3, r2, r3 + 8002d68: 2b0a cmp r3, #10 + 8002d6a: d901 bls.n 8002d70 { return HAL_TIMEOUT; - 8002f60: 2303 movs r3, #3 - 8002f62: e04c b.n 8002ffe + 8002d6c: 2303 movs r3, #3 + 8002d6e: e04c b.n 8002e0a while (LL_RCC_PLL_IsReady() == 0U) - 8002f64: f7ff fc4f bl 8002806 - 8002f68: 4603 mov r3, r0 - 8002f6a: 2b00 cmp r3, #0 - 8002f6c: d0f1 beq.n 8002f52 - 8002f6e: e045 b.n 8002ffc + 8002d70: f7ff fc4f bl 8002612 + 8002d74: 4603 mov r3, r0 + 8002d76: 2b00 cmp r3, #0 + 8002d78: d0f1 beq.n 8002d5e + 8002d7a: e045 b.n 8002e08 } } else { /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); - 8002f70: f7ff fc3b bl 80027ea + 8002d7c: f7ff fc3b bl 80025f6 /* Get Start Tick */ tickstart = HAL_GetTick(); - 8002f74: f7fe fc92 bl 800189c - 8002f78: 6178 str r0, [r7, #20] + 8002d80: f7fe fc92 bl 80016a8 + 8002d84: 6178 str r0, [r7, #20] /* Wait till PLL is disabled */ while (LL_RCC_PLL_IsReady() != 0U) - 8002f7a: e008 b.n 8002f8e + 8002d86: e008 b.n 8002d9a { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8002f7c: f7fe fc8e bl 800189c - 8002f80: 4602 mov r2, r0 - 8002f82: 697b ldr r3, [r7, #20] - 8002f84: 1ad3 subs r3, r2, r3 - 8002f86: 2b0a cmp r3, #10 - 8002f88: d901 bls.n 8002f8e + 8002d88: f7fe fc8e bl 80016a8 + 8002d8c: 4602 mov r2, r0 + 8002d8e: 697b ldr r3, [r7, #20] + 8002d90: 1ad3 subs r3, r2, r3 + 8002d92: 2b0a cmp r3, #10 + 8002d94: d901 bls.n 8002d9a { return HAL_TIMEOUT; - 8002f8a: 2303 movs r3, #3 - 8002f8c: e037 b.n 8002ffe + 8002d96: 2303 movs r3, #3 + 8002d98: e037 b.n 8002e0a while (LL_RCC_PLL_IsReady() != 0U) - 8002f8e: f7ff fc3a bl 8002806 - 8002f92: 4603 mov r3, r0 - 8002f94: 2b00 cmp r3, #0 - 8002f96: d1f1 bne.n 8002f7c + 8002d9a: f7ff fc3a bl 8002612 + 8002d9e: 4603 mov r3, r0 + 8002da0: 2b00 cmp r3, #0 + 8002da2: d1f1 bne.n 8002d88 } } /* Disable the PLL source and outputs to save power when PLL is off */ CLEAR_BIT(RCC->PLLCFGR, (RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLPEN | RCC_PLLCFGR_PLLQEN | RCC_PLLCFGR_PLLREN)); - 8002f98: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002f9c: 68da ldr r2, [r3, #12] - 8002f9e: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 8002fa2: 4b1a ldr r3, [pc, #104] ; (800300c ) - 8002fa4: 4013 ands r3, r2 - 8002fa6: 60cb str r3, [r1, #12] - 8002fa8: e028 b.n 8002ffc + 8002da4: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002da8: 68da ldr r2, [r3, #12] + 8002daa: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 8002dae: 4b1a ldr r3, [pc, #104] ; (8002e18 ) + 8002db0: 4013 ands r3, r2 + 8002db2: 60cb str r3, [r1, #12] + 8002db4: e028 b.n 8002e08 } } else { /* Check if there is a request to disable the PLL used as System clock source */ if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) - 8002faa: 687b ldr r3, [r7, #4] - 8002fac: 6adb ldr r3, [r3, #44] ; 0x2c - 8002fae: 2b01 cmp r3, #1 - 8002fb0: d101 bne.n 8002fb6 + 8002db6: 687b ldr r3, [r7, #4] + 8002db8: 6adb ldr r3, [r3, #44] ; 0x2c + 8002dba: 2b01 cmp r3, #1 + 8002dbc: d101 bne.n 8002dc2 { return HAL_ERROR; - 8002fb2: 2301 movs r3, #1 - 8002fb4: e023 b.n 8002ffe + 8002dbe: 2301 movs r3, #1 + 8002dc0: e023 b.n 8002e0a } else { /* Do not return HAL_ERROR if request repeats the current configuration */ pll_config = RCC->PLLCFGR; - 8002fb6: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8002fba: 68db ldr r3, [r3, #12] - 8002fbc: 61bb str r3, [r7, #24] + 8002dc2: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002dc6: 68db ldr r3, [r3, #12] + 8002dc8: 61bb str r3, [r7, #24] if ((READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) - 8002fbe: 69bb ldr r3, [r7, #24] - 8002fc0: f003 0203 and.w r2, r3, #3 - 8002fc4: 687b ldr r3, [r7, #4] - 8002fc6: 6b1b ldr r3, [r3, #48] ; 0x30 - 8002fc8: 429a cmp r2, r3 - 8002fca: d115 bne.n 8002ff8 + 8002dca: 69bb ldr r3, [r7, #24] + 8002dcc: f003 0203 and.w r2, r3, #3 + 8002dd0: 687b ldr r3, [r7, #4] + 8002dd2: 6b1b ldr r3, [r3, #48] ; 0x30 + 8002dd4: 429a cmp r2, r3 + 8002dd6: d115 bne.n 8002e04 || (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) - 8002fcc: 69bb ldr r3, [r7, #24] - 8002fce: f003 0270 and.w r2, r3, #112 ; 0x70 - 8002fd2: 687b ldr r3, [r7, #4] - 8002fd4: 6b5b ldr r3, [r3, #52] ; 0x34 - 8002fd6: 429a cmp r2, r3 - 8002fd8: d10e bne.n 8002ff8 + 8002dd8: 69bb ldr r3, [r7, #24] + 8002dda: f003 0270 and.w r2, r3, #112 ; 0x70 + 8002dde: 687b ldr r3, [r7, #4] + 8002de0: 6b5b ldr r3, [r3, #52] ; 0x34 + 8002de2: 429a cmp r2, r3 + 8002de4: d10e bne.n 8002e04 || (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) - 8002fda: 69bb ldr r3, [r7, #24] - 8002fdc: f403 42fe and.w r2, r3, #32512 ; 0x7f00 - 8002fe0: 687b ldr r3, [r7, #4] - 8002fe2: 6b9b ldr r3, [r3, #56] ; 0x38 - 8002fe4: 021b lsls r3, r3, #8 - 8002fe6: 429a cmp r2, r3 - 8002fe8: d106 bne.n 8002ff8 + 8002de6: 69bb ldr r3, [r7, #24] + 8002de8: f403 42fe and.w r2, r3, #32512 ; 0x7f00 + 8002dec: 687b ldr r3, [r7, #4] + 8002dee: 6b9b ldr r3, [r3, #56] ; 0x38 + 8002df0: 021b lsls r3, r3, #8 + 8002df2: 429a cmp r2, r3 + 8002df4: d106 bne.n 8002e04 || (READ_BIT(pll_config, RCC_PLLCFGR_PLLR) != RCC_OscInitStruct->PLL.PLLR)) - 8002fea: 69bb ldr r3, [r7, #24] - 8002fec: f003 4260 and.w r2, r3, #3758096384 ; 0xe0000000 - 8002ff0: 687b ldr r3, [r7, #4] - 8002ff2: 6c5b ldr r3, [r3, #68] ; 0x44 - 8002ff4: 429a cmp r2, r3 - 8002ff6: d001 beq.n 8002ffc + 8002df6: 69bb ldr r3, [r7, #24] + 8002df8: f003 4260 and.w r2, r3, #3758096384 ; 0xe0000000 + 8002dfc: 687b ldr r3, [r7, #4] + 8002dfe: 6c5b ldr r3, [r3, #68] ; 0x44 + 8002e00: 429a cmp r2, r3 + 8002e02: d001 beq.n 8002e08 { return HAL_ERROR; - 8002ff8: 2301 movs r3, #1 - 8002ffa: e000 b.n 8002ffe + 8002e04: 2301 movs r3, #1 + 8002e06: e000 b.n 8002e0a } } } } return HAL_OK; - 8002ffc: 2300 movs r3, #0 + 8002e08: 2300 movs r3, #0 } - 8002ffe: 4618 mov r0, r3 - 8003000: 3720 adds r7, #32 - 8003002: 46bd mov sp, r7 - 8003004: bd80 pop {r7, pc} - 8003006: bf00 nop - 8003008: 11c1808c .word 0x11c1808c - 800300c: eefefffc .word 0xeefefffc + 8002e0a: 4618 mov r0, r3 + 8002e0c: 3720 adds r7, #32 + 8002e0e: 46bd mov sp, r7 + 8002e10: bd80 pop {r7, pc} + 8002e12: bf00 nop + 8002e14: 11c1808c .word 0x11c1808c + 8002e18: eefefffc .word 0xeefefffc -08003010 : +08002e1c : * HPRE[3:0] bits to ensure that HCLK1 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) { - 8003010: b580 push {r7, lr} - 8003012: b084 sub sp, #16 - 8003014: af00 add r7, sp, #0 - 8003016: 6078 str r0, [r7, #4] - 8003018: 6039 str r1, [r7, #0] + 8002e1c: b580 push {r7, lr} + 8002e1e: b084 sub sp, #16 + 8002e20: af00 add r7, sp, #0 + 8002e22: 6078 str r0, [r7, #4] + 8002e24: 6039 str r1, [r7, #0] uint32_t tickstart; /* Check Null pointer */ if (RCC_ClkInitStruct == NULL) - 800301a: 687b ldr r3, [r7, #4] - 800301c: 2b00 cmp r3, #0 - 800301e: d101 bne.n 8003024 + 8002e26: 687b ldr r3, [r7, #4] + 8002e28: 2b00 cmp r3, #0 + 8002e2a: d101 bne.n 8002e30 { return HAL_ERROR; - 8003020: 2301 movs r3, #1 - 8003022: e10f b.n 8003244 + 8002e2c: 2301 movs r3, #1 + 8002e2e: e10f b.n 8003050 /* 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 (HCLK3) and the supply voltage of the device. */ /* Increasing the number of wait states because of higher CPU frequency */ if (FLatency > __HAL_FLASH_GET_LATENCY()) - 8003024: 4b89 ldr r3, [pc, #548] ; (800324c ) - 8003026: 681b ldr r3, [r3, #0] - 8003028: f003 0307 and.w r3, r3, #7 - 800302c: 683a ldr r2, [r7, #0] - 800302e: 429a cmp r2, r3 - 8003030: d91b bls.n 800306a + 8002e30: 4b89 ldr r3, [pc, #548] ; (8003058 ) + 8002e32: 681b ldr r3, [r3, #0] + 8002e34: f003 0307 and.w r3, r3, #7 + 8002e38: 683a ldr r2, [r7, #0] + 8002e3a: 429a cmp r2, r3 + 8002e3c: d91b bls.n 8002e76 { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); - 8003032: 4b86 ldr r3, [pc, #536] ; (800324c ) - 8003034: 681b ldr r3, [r3, #0] - 8003036: f023 0207 bic.w r2, r3, #7 - 800303a: 4984 ldr r1, [pc, #528] ; (800324c ) - 800303c: 683b ldr r3, [r7, #0] - 800303e: 4313 orrs r3, r2 - 8003040: 600b str r3, [r1, #0] + 8002e3e: 4b86 ldr r3, [pc, #536] ; (8003058 ) + 8002e40: 681b ldr r3, [r3, #0] + 8002e42: f023 0207 bic.w r2, r3, #7 + 8002e46: 4984 ldr r1, [pc, #528] ; (8003058 ) + 8002e48: 683b ldr r3, [r7, #0] + 8002e4a: 4313 orrs r3, r2 + 8002e4c: 600b str r3, [r1, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 8003042: f7fe fc2b bl 800189c - 8003046: 60f8 str r0, [r7, #12] + 8002e4e: f7fe fc2b bl 80016a8 + 8002e52: 60f8 str r0, [r7, #12] /* Check that the new number of wait states is taken into account to access the Flash memory by reading the FLASH_ACR register */ while (__HAL_FLASH_GET_LATENCY() != FLatency) - 8003048: e008 b.n 800305c + 8002e54: e008 b.n 8002e68 { if ((HAL_GetTick() - tickstart) > LATENCY_TIMEOUT_VALUE) - 800304a: f7fe fc27 bl 800189c - 800304e: 4602 mov r2, r0 - 8003050: 68fb ldr r3, [r7, #12] - 8003052: 1ad3 subs r3, r2, r3 - 8003054: 2b02 cmp r3, #2 - 8003056: d901 bls.n 800305c + 8002e56: f7fe fc27 bl 80016a8 + 8002e5a: 4602 mov r2, r0 + 8002e5c: 68fb ldr r3, [r7, #12] + 8002e5e: 1ad3 subs r3, r2, r3 + 8002e60: 2b02 cmp r3, #2 + 8002e62: d901 bls.n 8002e68 { return HAL_TIMEOUT; - 8003058: 2303 movs r3, #3 - 800305a: e0f3 b.n 8003244 + 8002e64: 2303 movs r3, #3 + 8002e66: e0f3 b.n 8003050 while (__HAL_FLASH_GET_LATENCY() != FLatency) - 800305c: 4b7b ldr r3, [pc, #492] ; (800324c ) - 800305e: 681b ldr r3, [r3, #0] - 8003060: f003 0307 and.w r3, r3, #7 - 8003064: 683a ldr r2, [r7, #0] - 8003066: 429a cmp r2, r3 - 8003068: d1ef bne.n 800304a + 8002e68: 4b7b ldr r3, [pc, #492] ; (8003058 ) + 8002e6a: 681b ldr r3, [r3, #0] + 8002e6c: f003 0307 and.w r3, r3, #7 + 8002e70: 683a ldr r2, [r7, #0] + 8002e72: 429a cmp r2, r3 + 8002e74: d1ef bne.n 8002e56 } } } /*-------------------------- HCLK1 Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) - 800306a: 687b ldr r3, [r7, #4] - 800306c: 681b ldr r3, [r3, #0] - 800306e: f003 0302 and.w r3, r3, #2 - 8003072: 2b00 cmp r3, #0 - 8003074: d016 beq.n 80030a4 + 8002e76: 687b ldr r3, [r7, #4] + 8002e78: 681b ldr r3, [r3, #0] + 8002e7a: f003 0302 and.w r3, r3, #2 + 8002e7e: 2b00 cmp r3, #0 + 8002e80: d016 beq.n 8002eb0 { assert_param(IS_RCC_HCLKx(RCC_ClkInitStruct->AHBCLKDivider)); LL_RCC_SetAHBPrescaler(RCC_ClkInitStruct->AHBCLKDivider); - 8003076: 687b ldr r3, [r7, #4] - 8003078: 689b ldr r3, [r3, #8] - 800307a: 4618 mov r0, r3 - 800307c: f7ff fb2a bl 80026d4 + 8002e82: 687b ldr r3, [r7, #4] + 8002e84: 689b ldr r3, [r3, #8] + 8002e86: 4618 mov r0, r3 + 8002e88: f7ff fb2a bl 80024e0 /* HCLK1 prescaler flag when value applied */ tickstart = HAL_GetTick(); - 8003080: f7fe fc0c bl 800189c - 8003084: 60f8 str r0, [r7, #12] + 8002e8c: f7fe fc0c bl 80016a8 + 8002e90: 60f8 str r0, [r7, #12] while (LL_RCC_IsActiveFlag_HPRE() == 0U) - 8003086: e008 b.n 800309a + 8002e92: e008 b.n 8002ea6 { if ((HAL_GetTick() - tickstart) > PRESCALER_TIMEOUT_VALUE) - 8003088: f7fe fc08 bl 800189c - 800308c: 4602 mov r2, r0 - 800308e: 68fb ldr r3, [r7, #12] - 8003090: 1ad3 subs r3, r2, r3 - 8003092: 2b02 cmp r3, #2 - 8003094: d901 bls.n 800309a + 8002e94: f7fe fc08 bl 80016a8 + 8002e98: 4602 mov r2, r0 + 8002e9a: 68fb ldr r3, [r7, #12] + 8002e9c: 1ad3 subs r3, r2, r3 + 8002e9e: 2b02 cmp r3, #2 + 8002ea0: d901 bls.n 8002ea6 { return HAL_TIMEOUT; - 8003096: 2303 movs r3, #3 - 8003098: e0d4 b.n 8003244 + 8002ea2: 2303 movs r3, #3 + 8002ea4: e0d4 b.n 8003050 while (LL_RCC_IsActiveFlag_HPRE() == 0U) - 800309a: f7ff fbf2 bl 8002882 - 800309e: 4603 mov r3, r0 - 80030a0: 2b00 cmp r3, #0 - 80030a2: d0f1 beq.n 8003088 + 8002ea6: f7ff fbf2 bl 800268e + 8002eaa: 4603 mov r3, r0 + 8002eac: 2b00 cmp r3, #0 + 8002eae: d0f1 beq.n 8002e94 } } #endif /* DUAL_CORE */ /*-------------------------- HCLK3 Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK3) == RCC_CLOCKTYPE_HCLK3) - 80030a4: 687b ldr r3, [r7, #4] - 80030a6: 681b ldr r3, [r3, #0] - 80030a8: f003 0340 and.w r3, r3, #64 ; 0x40 - 80030ac: 2b00 cmp r3, #0 - 80030ae: d016 beq.n 80030de + 8002eb0: 687b ldr r3, [r7, #4] + 8002eb2: 681b ldr r3, [r3, #0] + 8002eb4: f003 0340 and.w r3, r3, #64 ; 0x40 + 8002eb8: 2b00 cmp r3, #0 + 8002eba: d016 beq.n 8002eea { assert_param(IS_RCC_HCLKx(RCC_ClkInitStruct->AHBCLK3Divider)); LL_RCC_SetAHB3Prescaler(RCC_ClkInitStruct->AHBCLK3Divider); - 80030b0: 687b ldr r3, [r7, #4] - 80030b2: 695b ldr r3, [r3, #20] - 80030b4: 4618 mov r0, r3 - 80030b6: f7ff fb20 bl 80026fa + 8002ebc: 687b ldr r3, [r7, #4] + 8002ebe: 695b ldr r3, [r3, #20] + 8002ec0: 4618 mov r0, r3 + 8002ec2: f7ff fb20 bl 8002506 /* AHB shared prescaler flag when value applied */ tickstart = HAL_GetTick(); - 80030ba: f7fe fbef bl 800189c - 80030be: 60f8 str r0, [r7, #12] + 8002ec6: f7fe fbef bl 80016a8 + 8002eca: 60f8 str r0, [r7, #12] while (LL_RCC_IsActiveFlag_SHDHPRE() == 0U) - 80030c0: e008 b.n 80030d4 + 8002ecc: e008 b.n 8002ee0 { if ((HAL_GetTick() - tickstart) > PRESCALER_TIMEOUT_VALUE) - 80030c2: f7fe fbeb bl 800189c - 80030c6: 4602 mov r2, r0 - 80030c8: 68fb ldr r3, [r7, #12] - 80030ca: 1ad3 subs r3, r2, r3 - 80030cc: 2b02 cmp r3, #2 - 80030ce: d901 bls.n 80030d4 + 8002ece: f7fe fbeb bl 80016a8 + 8002ed2: 4602 mov r2, r0 + 8002ed4: 68fb ldr r3, [r7, #12] + 8002ed6: 1ad3 subs r3, r2, r3 + 8002ed8: 2b02 cmp r3, #2 + 8002eda: d901 bls.n 8002ee0 { return HAL_TIMEOUT; - 80030d0: 2303 movs r3, #3 - 80030d2: e0b7 b.n 8003244 + 8002edc: 2303 movs r3, #3 + 8002ede: e0b7 b.n 8003050 while (LL_RCC_IsActiveFlag_SHDHPRE() == 0U) - 80030d4: f7ff fbe6 bl 80028a4 - 80030d8: 4603 mov r3, r0 - 80030da: 2b00 cmp r3, #0 - 80030dc: d0f1 beq.n 80030c2 + 8002ee0: f7ff fbe6 bl 80026b0 + 8002ee4: 4603 mov r3, r0 + 8002ee6: 2b00 cmp r3, #0 + 8002ee8: d0f1 beq.n 8002ece } } } /*-------------------------- PCLK1 Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) - 80030de: 687b ldr r3, [r7, #4] - 80030e0: 681b ldr r3, [r3, #0] - 80030e2: f003 0304 and.w r3, r3, #4 - 80030e6: 2b00 cmp r3, #0 - 80030e8: d016 beq.n 8003118 + 8002eea: 687b ldr r3, [r7, #4] + 8002eec: 681b ldr r3, [r3, #0] + 8002eee: f003 0304 and.w r3, r3, #4 + 8002ef2: 2b00 cmp r3, #0 + 8002ef4: d016 beq.n 8002f24 { assert_param(IS_RCC_PCLKx(RCC_ClkInitStruct->APB1CLKDivider)); LL_RCC_SetAPB1Prescaler(RCC_ClkInitStruct->APB1CLKDivider); - 80030ea: 687b ldr r3, [r7, #4] - 80030ec: 68db ldr r3, [r3, #12] - 80030ee: 4618 mov r0, r3 - 80030f0: f7ff fb19 bl 8002726 + 8002ef6: 687b ldr r3, [r7, #4] + 8002ef8: 68db ldr r3, [r3, #12] + 8002efa: 4618 mov r0, r3 + 8002efc: f7ff fb19 bl 8002532 /* APB1 prescaler flag when value applied */ tickstart = HAL_GetTick(); - 80030f4: f7fe fbd2 bl 800189c - 80030f8: 60f8 str r0, [r7, #12] + 8002f00: f7fe fbd2 bl 80016a8 + 8002f04: 60f8 str r0, [r7, #12] while (LL_RCC_IsActiveFlag_PPRE1() == 0U) - 80030fa: e008 b.n 800310e + 8002f06: e008 b.n 8002f1a { if ((HAL_GetTick() - tickstart) > PRESCALER_TIMEOUT_VALUE) - 80030fc: f7fe fbce bl 800189c - 8003100: 4602 mov r2, r0 - 8003102: 68fb ldr r3, [r7, #12] - 8003104: 1ad3 subs r3, r2, r3 - 8003106: 2b02 cmp r3, #2 - 8003108: d901 bls.n 800310e + 8002f08: f7fe fbce bl 80016a8 + 8002f0c: 4602 mov r2, r0 + 8002f0e: 68fb ldr r3, [r7, #12] + 8002f10: 1ad3 subs r3, r2, r3 + 8002f12: 2b02 cmp r3, #2 + 8002f14: d901 bls.n 8002f1a { return HAL_TIMEOUT; - 800310a: 2303 movs r3, #3 - 800310c: e09a b.n 8003244 + 8002f16: 2303 movs r3, #3 + 8002f18: e09a b.n 8003050 while (LL_RCC_IsActiveFlag_PPRE1() == 0U) - 800310e: f7ff fbdb bl 80028c8 - 8003112: 4603 mov r3, r0 - 8003114: 2b00 cmp r3, #0 - 8003116: d0f1 beq.n 80030fc + 8002f1a: f7ff fbdb bl 80026d4 + 8002f1e: 4603 mov r3, r0 + 8002f20: 2b00 cmp r3, #0 + 8002f22: d0f1 beq.n 8002f08 } } } /*-------------------------- PCLK2 Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) - 8003118: 687b ldr r3, [r7, #4] - 800311a: 681b ldr r3, [r3, #0] - 800311c: f003 0308 and.w r3, r3, #8 - 8003120: 2b00 cmp r3, #0 - 8003122: d017 beq.n 8003154 + 8002f24: 687b ldr r3, [r7, #4] + 8002f26: 681b ldr r3, [r3, #0] + 8002f28: f003 0308 and.w r3, r3, #8 + 8002f2c: 2b00 cmp r3, #0 + 8002f2e: d017 beq.n 8002f60 { assert_param(IS_RCC_PCLKx(RCC_ClkInitStruct->APB2CLKDivider)); LL_RCC_SetAPB2Prescaler((RCC_ClkInitStruct->APB2CLKDivider) << 3U); - 8003124: 687b ldr r3, [r7, #4] - 8003126: 691b ldr r3, [r3, #16] - 8003128: 00db lsls r3, r3, #3 - 800312a: 4618 mov r0, r3 - 800312c: f7ff fb0e bl 800274c + 8002f30: 687b ldr r3, [r7, #4] + 8002f32: 691b ldr r3, [r3, #16] + 8002f34: 00db lsls r3, r3, #3 + 8002f36: 4618 mov r0, r3 + 8002f38: f7ff fb0e bl 8002558 /* APB2 prescaler flag when value applied */ tickstart = HAL_GetTick(); - 8003130: f7fe fbb4 bl 800189c - 8003134: 60f8 str r0, [r7, #12] + 8002f3c: f7fe fbb4 bl 80016a8 + 8002f40: 60f8 str r0, [r7, #12] while (LL_RCC_IsActiveFlag_PPRE2() == 0U) - 8003136: e008 b.n 800314a + 8002f42: e008 b.n 8002f56 { if ((HAL_GetTick() - tickstart) > PRESCALER_TIMEOUT_VALUE) - 8003138: f7fe fbb0 bl 800189c - 800313c: 4602 mov r2, r0 - 800313e: 68fb ldr r3, [r7, #12] - 8003140: 1ad3 subs r3, r2, r3 - 8003142: 2b02 cmp r3, #2 - 8003144: d901 bls.n 800314a + 8002f44: f7fe fbb0 bl 80016a8 + 8002f48: 4602 mov r2, r0 + 8002f4a: 68fb ldr r3, [r7, #12] + 8002f4c: 1ad3 subs r3, r2, r3 + 8002f4e: 2b02 cmp r3, #2 + 8002f50: d901 bls.n 8002f56 { return HAL_TIMEOUT; - 8003146: 2303 movs r3, #3 - 8003148: e07c b.n 8003244 + 8002f52: 2303 movs r3, #3 + 8002f54: e07c b.n 8003050 while (LL_RCC_IsActiveFlag_PPRE2() == 0U) - 800314a: f7ff fbce bl 80028ea - 800314e: 4603 mov r3, r0 - 8003150: 2b00 cmp r3, #0 - 8003152: d0f1 beq.n 8003138 + 8002f56: f7ff fbce bl 80026f6 + 8002f5a: 4603 mov r3, r0 + 8002f5c: 2b00 cmp r3, #0 + 8002f5e: d0f1 beq.n 8002f44 } } } /*------------------------- SYSCLK Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) - 8003154: 687b ldr r3, [r7, #4] - 8003156: 681b ldr r3, [r3, #0] - 8003158: f003 0301 and.w r3, r3, #1 - 800315c: 2b00 cmp r3, #0 - 800315e: d043 beq.n 80031e8 + 8002f60: 687b ldr r3, [r7, #4] + 8002f62: 681b ldr r3, [r3, #0] + 8002f64: f003 0301 and.w r3, r3, #1 + 8002f68: 2b00 cmp r3, #0 + 8002f6a: d043 beq.n 8002ff4 { assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); /* HSE is selected as System Clock Source */ if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) - 8003160: 687b ldr r3, [r7, #4] - 8003162: 685b ldr r3, [r3, #4] - 8003164: 2b02 cmp r3, #2 - 8003166: d106 bne.n 8003176 + 8002f6c: 687b ldr r3, [r7, #4] + 8002f6e: 685b ldr r3, [r3, #4] + 8002f70: 2b02 cmp r3, #2 + 8002f72: d106 bne.n 8002f82 { /* Check the HSE ready flag */ if (LL_RCC_HSE_IsReady() == 0U) - 8003168: f7ff f99b bl 80024a2 - 800316c: 4603 mov r3, r0 - 800316e: 2b00 cmp r3, #0 - 8003170: d11e bne.n 80031b0 + 8002f74: f7ff f99b bl 80022ae + 8002f78: 4603 mov r3, r0 + 8002f7a: 2b00 cmp r3, #0 + 8002f7c: d11e bne.n 8002fbc { return HAL_ERROR; - 8003172: 2301 movs r3, #1 - 8003174: e066 b.n 8003244 + 8002f7e: 2301 movs r3, #1 + 8002f80: e066 b.n 8003050 } } /* PLL is selected as System Clock Source */ else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) - 8003176: 687b ldr r3, [r7, #4] - 8003178: 685b ldr r3, [r3, #4] - 800317a: 2b03 cmp r3, #3 - 800317c: d106 bne.n 800318c + 8002f82: 687b ldr r3, [r7, #4] + 8002f84: 685b ldr r3, [r3, #4] + 8002f86: 2b03 cmp r3, #3 + 8002f88: d106 bne.n 8002f98 { /* Check the PLL ready flag */ if (LL_RCC_PLL_IsReady() == 0U) - 800317e: f7ff fb42 bl 8002806 - 8003182: 4603 mov r3, r0 - 8003184: 2b00 cmp r3, #0 - 8003186: d113 bne.n 80031b0 + 8002f8a: f7ff fb42 bl 8002612 + 8002f8e: 4603 mov r3, r0 + 8002f90: 2b00 cmp r3, #0 + 8002f92: d113 bne.n 8002fbc { return HAL_ERROR; - 8003188: 2301 movs r3, #1 - 800318a: e05b b.n 8003244 + 8002f94: 2301 movs r3, #1 + 8002f96: e05b b.n 8003050 } } /* MSI is selected as System Clock Source */ else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_MSI) - 800318c: 687b ldr r3, [r7, #4] - 800318e: 685b ldr r3, [r3, #4] - 8003190: 2b00 cmp r3, #0 - 8003192: d106 bne.n 80031a2 + 8002f98: 687b ldr r3, [r7, #4] + 8002f9a: 685b ldr r3, [r3, #4] + 8002f9c: 2b00 cmp r3, #0 + 8002f9e: d106 bne.n 8002fae { /* Check the MSI ready flag */ if (LL_RCC_MSI_IsReady() == 0U) - 8003194: f7ff fa35 bl 8002602 - 8003198: 4603 mov r3, r0 - 800319a: 2b00 cmp r3, #0 - 800319c: d108 bne.n 80031b0 + 8002fa0: f7ff fa35 bl 800240e + 8002fa4: 4603 mov r3, r0 + 8002fa6: 2b00 cmp r3, #0 + 8002fa8: d108 bne.n 8002fbc { return HAL_ERROR; - 800319e: 2301 movs r3, #1 - 80031a0: e050 b.n 8003244 + 8002faa: 2301 movs r3, #1 + 8002fac: e050 b.n 8003050 } /* HSI is selected as System Clock Source */ else { /* Check the HSI ready flag */ if (LL_RCC_HSI_IsReady() == 0U) - 80031a2: f7ff f9ab bl 80024fc - 80031a6: 4603 mov r3, r0 - 80031a8: 2b00 cmp r3, #0 - 80031aa: d101 bne.n 80031b0 + 8002fae: f7ff f9ab bl 8002308 + 8002fb2: 4603 mov r3, r0 + 8002fb4: 2b00 cmp r3, #0 + 8002fb6: d101 bne.n 8002fbc { return HAL_ERROR; - 80031ac: 2301 movs r3, #1 - 80031ae: e049 b.n 8003244 + 8002fb8: 2301 movs r3, #1 + 8002fba: e049 b.n 8003050 } } /* apply system clock switch */ LL_RCC_SetSysClkSource(RCC_ClkInitStruct->SYSCLKSource); - 80031b0: 687b ldr r3, [r7, #4] - 80031b2: 685b ldr r3, [r3, #4] - 80031b4: 4618 mov r0, r3 - 80031b6: f7ff fa6f bl 8002698 + 8002fbc: 687b ldr r3, [r7, #4] + 8002fbe: 685b ldr r3, [r3, #4] + 8002fc0: 4618 mov r0, r3 + 8002fc2: f7ff fa6f bl 80024a4 /* Get Start Tick */ tickstart = HAL_GetTick(); - 80031ba: f7fe fb6f bl 800189c - 80031be: 60f8 str r0, [r7, #12] + 8002fc6: f7fe fb6f bl 80016a8 + 8002fca: 60f8 str r0, [r7, #12] /* check system clock source switch status */ while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 80031c0: e00a b.n 80031d8 + 8002fcc: e00a b.n 8002fe4 { if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) - 80031c2: f7fe fb6b bl 800189c - 80031c6: 4602 mov r2, r0 - 80031c8: 68fb ldr r3, [r7, #12] - 80031ca: 1ad3 subs r3, r2, r3 - 80031cc: f241 3288 movw r2, #5000 ; 0x1388 - 80031d0: 4293 cmp r3, r2 - 80031d2: d901 bls.n 80031d8 + 8002fce: f7fe fb6b bl 80016a8 + 8002fd2: 4602 mov r2, r0 + 8002fd4: 68fb ldr r3, [r7, #12] + 8002fd6: 1ad3 subs r3, r2, r3 + 8002fd8: f241 3288 movw r2, #5000 ; 0x1388 + 8002fdc: 4293 cmp r3, r2 + 8002fde: d901 bls.n 8002fe4 { return HAL_TIMEOUT; - 80031d4: 2303 movs r3, #3 - 80031d6: e035 b.n 8003244 + 8002fe0: 2303 movs r3, #3 + 8002fe2: e035 b.n 8003050 while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 80031d8: f7ff fa71 bl 80026be - 80031dc: 4602 mov r2, r0 - 80031de: 687b ldr r3, [r7, #4] - 80031e0: 685b ldr r3, [r3, #4] - 80031e2: 009b lsls r3, r3, #2 - 80031e4: 429a cmp r2, r3 - 80031e6: d1ec bne.n 80031c2 + 8002fe4: f7ff fa71 bl 80024ca + 8002fe8: 4602 mov r2, r0 + 8002fea: 687b ldr r3, [r7, #4] + 8002fec: 685b ldr r3, [r3, #4] + 8002fee: 009b lsls r3, r3, #2 + 8002ff0: 429a cmp r2, r3 + 8002ff2: d1ec bne.n 8002fce } } } /* Decreasing the number of wait states because of lower CPU frequency */ if (FLatency < __HAL_FLASH_GET_LATENCY()) - 80031e8: 4b18 ldr r3, [pc, #96] ; (800324c ) - 80031ea: 681b ldr r3, [r3, #0] - 80031ec: f003 0307 and.w r3, r3, #7 - 80031f0: 683a ldr r2, [r7, #0] - 80031f2: 429a cmp r2, r3 - 80031f4: d21b bcs.n 800322e + 8002ff4: 4b18 ldr r3, [pc, #96] ; (8003058 ) + 8002ff6: 681b ldr r3, [r3, #0] + 8002ff8: f003 0307 and.w r3, r3, #7 + 8002ffc: 683a ldr r2, [r7, #0] + 8002ffe: 429a cmp r2, r3 + 8003000: d21b bcs.n 800303a { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); - 80031f6: 4b15 ldr r3, [pc, #84] ; (800324c ) - 80031f8: 681b ldr r3, [r3, #0] - 80031fa: f023 0207 bic.w r2, r3, #7 - 80031fe: 4913 ldr r1, [pc, #76] ; (800324c ) - 8003200: 683b ldr r3, [r7, #0] - 8003202: 4313 orrs r3, r2 - 8003204: 600b str r3, [r1, #0] + 8003002: 4b15 ldr r3, [pc, #84] ; (8003058 ) + 8003004: 681b ldr r3, [r3, #0] + 8003006: f023 0207 bic.w r2, r3, #7 + 800300a: 4913 ldr r1, [pc, #76] ; (8003058 ) + 800300c: 683b ldr r3, [r7, #0] + 800300e: 4313 orrs r3, r2 + 8003010: 600b str r3, [r1, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 8003206: f7fe fb49 bl 800189c - 800320a: 60f8 str r0, [r7, #12] + 8003012: f7fe fb49 bl 80016a8 + 8003016: 60f8 str r0, [r7, #12] /* Check that the new number of wait states is taken into account to access the Flash memory by reading the FLASH_ACR register */ while (__HAL_FLASH_GET_LATENCY() != FLatency) - 800320c: e008 b.n 8003220 + 8003018: e008 b.n 800302c { if ((HAL_GetTick() - tickstart) > LATENCY_TIMEOUT_VALUE) - 800320e: f7fe fb45 bl 800189c - 8003212: 4602 mov r2, r0 - 8003214: 68fb ldr r3, [r7, #12] - 8003216: 1ad3 subs r3, r2, r3 - 8003218: 2b02 cmp r3, #2 - 800321a: d901 bls.n 8003220 + 800301a: f7fe fb45 bl 80016a8 + 800301e: 4602 mov r2, r0 + 8003020: 68fb ldr r3, [r7, #12] + 8003022: 1ad3 subs r3, r2, r3 + 8003024: 2b02 cmp r3, #2 + 8003026: d901 bls.n 800302c { return HAL_TIMEOUT; - 800321c: 2303 movs r3, #3 - 800321e: e011 b.n 8003244 + 8003028: 2303 movs r3, #3 + 800302a: e011 b.n 8003050 while (__HAL_FLASH_GET_LATENCY() != FLatency) - 8003220: 4b0a ldr r3, [pc, #40] ; (800324c ) - 8003222: 681b ldr r3, [r3, #0] - 8003224: f003 0307 and.w r3, r3, #7 - 8003228: 683a ldr r2, [r7, #0] - 800322a: 429a cmp r2, r3 - 800322c: d1ef bne.n 800320e + 800302c: 4b0a ldr r3, [pc, #40] ; (8003058 ) + 800302e: 681b ldr r3, [r3, #0] + 8003030: f003 0307 and.w r3, r3, #7 + 8003034: 683a ldr r2, [r7, #0] + 8003036: 429a cmp r2, r3 + 8003038: d1ef bne.n 800301a } /*--------------------------------------------------------------------------*/ /* Update the SystemCoreClock global variable */ SystemCoreClock = HAL_RCC_GetHCLKFreq(); - 800322e: f000 f8b3 bl 8003398 - 8003232: 4603 mov r3, r0 - 8003234: 4a06 ldr r2, [pc, #24] ; (8003250 ) - 8003236: 6013 str r3, [r2, #0] + 800303a: f000 f8b3 bl 80031a4 + 800303e: 4603 mov r3, r0 + 8003040: 4a06 ldr r2, [pc, #24] ; (800305c ) + 8003042: 6013 str r3, [r2, #0] /* Configure the source of time base considering new system clocks settings */ return HAL_InitTick(uwTickPrio); - 8003238: 4b06 ldr r3, [pc, #24] ; (8003254 ) - 800323a: 681b ldr r3, [r3, #0] - 800323c: 4618 mov r0, r3 - 800323e: f7fe fae1 bl 8001804 - 8003242: 4603 mov r3, r0 -} - 8003244: 4618 mov r0, r3 - 8003246: 3710 adds r7, #16 - 8003248: 46bd mov sp, r7 - 800324a: bd80 pop {r7, pc} - 800324c: 58004000 .word 0x58004000 - 8003250: 20000008 .word 0x20000008 - 8003254: 2000000c .word 0x2000000c - -08003258 : + 8003044: 4b06 ldr r3, [pc, #24] ; (8003060 ) + 8003046: 681b ldr r3, [r3, #0] + 8003048: 4618 mov r0, r3 + 800304a: f7fe fae1 bl 8001610 + 800304e: 4603 mov r3, r0 +} + 8003050: 4618 mov r0, r3 + 8003052: 3710 adds r7, #16 + 8003054: 46bd mov sp, r7 + 8003056: bd80 pop {r7, pc} + 8003058: 58004000 .word 0x58004000 + 800305c: 20000000 .word 0x20000000 + 8003060: 20000004 .word 0x20000004 + +08003064 : * * * @retval SYSCLK frequency */ uint32_t HAL_RCC_GetSysClockFreq(void) { - 8003258: b590 push {r4, r7, lr} - 800325a: b087 sub sp, #28 - 800325c: af00 add r7, sp, #0 + 8003064: b590 push {r4, r7, lr} + 8003066: b087 sub sp, #28 + 8003068: af00 add r7, sp, #0 uint32_t sysclk_source; uint32_t pllsource; uint32_t sysclockfreq = 0U; - 800325e: 2300 movs r3, #0 - 8003260: 617b str r3, [r7, #20] + 800306a: 2300 movs r3, #0 + 800306c: 617b str r3, [r7, #20] uint32_t msifreq = 0U; - 8003262: 2300 movs r3, #0 - 8003264: 613b str r3, [r7, #16] + 800306e: 2300 movs r3, #0 + 8003070: 613b str r3, [r7, #16] uint32_t pllinputfreq; sysclk_source = __HAL_RCC_GET_SYSCLK_SOURCE(); - 8003266: f7ff fa2a bl 80026be - 800326a: 60b8 str r0, [r7, #8] + 8003072: f7ff fa2a bl 80024ca + 8003076: 60b8 str r0, [r7, #8] pllsource = __HAL_RCC_GET_PLL_OSCSOURCE(); - 800326c: f7ff fafe bl 800286c - 8003270: 6078 str r0, [r7, #4] + 8003078: f7ff fafe bl 8002678 + 800307c: 6078 str r0, [r7, #4] if ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_MSI) || - 8003272: 68bb ldr r3, [r7, #8] - 8003274: 2b00 cmp r3, #0 - 8003276: d005 beq.n 8003284 - 8003278: 68bb ldr r3, [r7, #8] - 800327a: 2b0c cmp r3, #12 - 800327c: d139 bne.n 80032f2 + 800307e: 68bb ldr r3, [r7, #8] + 8003080: 2b00 cmp r3, #0 + 8003082: d005 beq.n 8003090 + 8003084: 68bb ldr r3, [r7, #8] + 8003086: 2b0c cmp r3, #12 + 8003088: d139 bne.n 80030fe ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pllsource == RCC_PLLSOURCE_MSI))) - 800327e: 687b ldr r3, [r7, #4] - 8003280: 2b01 cmp r3, #1 - 8003282: d136 bne.n 80032f2 + 800308a: 687b ldr r3, [r7, #4] + 800308c: 2b01 cmp r3, #1 + 800308e: d136 bne.n 80030fe { /* MSI or PLL with MSI source used as system clock source */ /* Retrieve MSI frequency range in Hz */ msifreq = __LL_RCC_CALC_MSI_FREQ(LL_RCC_MSI_IsEnabledRangeSelect(), - 8003284: f7ff f9cd bl 8002622 - 8003288: 4603 mov r3, r0 - 800328a: 2b00 cmp r3, #0 - 800328c: d115 bne.n 80032ba - 800328e: f7ff f9c8 bl 8002622 - 8003292: 4603 mov r3, r0 - 8003294: 2b01 cmp r3, #1 - 8003296: d106 bne.n 80032a6 - 8003298: f7ff f9d3 bl 8002642 - 800329c: 4603 mov r3, r0 - 800329e: 0a1b lsrs r3, r3, #8 - 80032a0: f003 030f and.w r3, r3, #15 - 80032a4: e005 b.n 80032b2 - 80032a6: f7ff f9d7 bl 8002658 - 80032aa: 4603 mov r3, r0 - 80032ac: 0a1b lsrs r3, r3, #8 - 80032ae: f003 030f and.w r3, r3, #15 - 80032b2: 4a36 ldr r2, [pc, #216] ; (800338c ) - 80032b4: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 80032b8: e014 b.n 80032e4 - 80032ba: f7ff f9b2 bl 8002622 - 80032be: 4603 mov r3, r0 - 80032c0: 2b01 cmp r3, #1 - 80032c2: d106 bne.n 80032d2 - 80032c4: f7ff f9bd bl 8002642 - 80032c8: 4603 mov r3, r0 - 80032ca: 091b lsrs r3, r3, #4 - 80032cc: f003 030f and.w r3, r3, #15 - 80032d0: e005 b.n 80032de - 80032d2: f7ff f9c1 bl 8002658 - 80032d6: 4603 mov r3, r0 - 80032d8: 091b lsrs r3, r3, #4 - 80032da: f003 030f and.w r3, r3, #15 - 80032de: 4a2b ldr r2, [pc, #172] ; (800338c ) - 80032e0: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 80032e4: 613b str r3, [r7, #16] + 8003090: f7ff f9cd bl 800242e + 8003094: 4603 mov r3, r0 + 8003096: 2b00 cmp r3, #0 + 8003098: d115 bne.n 80030c6 + 800309a: f7ff f9c8 bl 800242e + 800309e: 4603 mov r3, r0 + 80030a0: 2b01 cmp r3, #1 + 80030a2: d106 bne.n 80030b2 + 80030a4: f7ff f9d3 bl 800244e + 80030a8: 4603 mov r3, r0 + 80030aa: 0a1b lsrs r3, r3, #8 + 80030ac: f003 030f and.w r3, r3, #15 + 80030b0: e005 b.n 80030be + 80030b2: f7ff f9d7 bl 8002464 + 80030b6: 4603 mov r3, r0 + 80030b8: 0a1b lsrs r3, r3, #8 + 80030ba: f003 030f and.w r3, r3, #15 + 80030be: 4a36 ldr r2, [pc, #216] ; (8003198 ) + 80030c0: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 80030c4: e014 b.n 80030f0 + 80030c6: f7ff f9b2 bl 800242e + 80030ca: 4603 mov r3, r0 + 80030cc: 2b01 cmp r3, #1 + 80030ce: d106 bne.n 80030de + 80030d0: f7ff f9bd bl 800244e + 80030d4: 4603 mov r3, r0 + 80030d6: 091b lsrs r3, r3, #4 + 80030d8: f003 030f and.w r3, r3, #15 + 80030dc: e005 b.n 80030ea + 80030de: f7ff f9c1 bl 8002464 + 80030e2: 4603 mov r3, r0 + 80030e4: 091b lsrs r3, r3, #4 + 80030e6: f003 030f and.w r3, r3, #15 + 80030ea: 4a2b ldr r2, [pc, #172] ; (8003198 ) + 80030ec: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 80030f0: 613b str r3, [r7, #16] ((LL_RCC_MSI_IsEnabledRangeSelect() == 1U) ? LL_RCC_MSI_GetRange() : LL_RCC_MSI_GetRangeAfterStandby())); /* Get SYSCLK source */ if (sysclk_source == RCC_SYSCLKSOURCE_STATUS_MSI) - 80032e6: 68bb ldr r3, [r7, #8] - 80032e8: 2b00 cmp r3, #0 - 80032ea: d115 bne.n 8003318 + 80030f2: 68bb ldr r3, [r7, #8] + 80030f4: 2b00 cmp r3, #0 + 80030f6: d115 bne.n 8003124 { /* MSI used as system clock source */ sysclockfreq = msifreq; - 80032ec: 693b ldr r3, [r7, #16] - 80032ee: 617b str r3, [r7, #20] + 80030f8: 693b ldr r3, [r7, #16] + 80030fa: 617b str r3, [r7, #20] if (sysclk_source == RCC_SYSCLKSOURCE_STATUS_MSI) - 80032f0: e012 b.n 8003318 + 80030fc: e012 b.n 8003124 } } else if (sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSI) - 80032f2: 68bb ldr r3, [r7, #8] - 80032f4: 2b04 cmp r3, #4 - 80032f6: d102 bne.n 80032fe + 80030fe: 68bb ldr r3, [r7, #8] + 8003100: 2b04 cmp r3, #4 + 8003102: d102 bne.n 800310a { /* HSI used as system clock source */ sysclockfreq = HSI_VALUE; - 80032f8: 4b25 ldr r3, [pc, #148] ; (8003390 ) - 80032fa: 617b str r3, [r7, #20] - 80032fc: e00c b.n 8003318 + 8003104: 4b25 ldr r3, [pc, #148] ; (800319c ) + 8003106: 617b str r3, [r7, #20] + 8003108: e00c b.n 8003124 } else if (sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSE) - 80032fe: 68bb ldr r3, [r7, #8] - 8003300: 2b08 cmp r3, #8 - 8003302: d109 bne.n 8003318 + 800310a: 68bb ldr r3, [r7, #8] + 800310c: 2b08 cmp r3, #8 + 800310e: d109 bne.n 8003124 { /* HSE used as system clock source */ if (LL_RCC_HSE_IsEnabledDiv2() == 1U) - 8003304: f7ff f8a0 bl 8002448 - 8003308: 4603 mov r3, r0 - 800330a: 2b01 cmp r3, #1 - 800330c: d102 bne.n 8003314 + 8003110: f7ff f8a0 bl 8002254 + 8003114: 4603 mov r3, r0 + 8003116: 2b01 cmp r3, #1 + 8003118: d102 bne.n 8003120 { sysclockfreq = HSE_VALUE / 2U; - 800330e: 4b20 ldr r3, [pc, #128] ; (8003390 ) - 8003310: 617b str r3, [r7, #20] - 8003312: e001 b.n 8003318 + 800311a: 4b20 ldr r3, [pc, #128] ; (800319c ) + 800311c: 617b str r3, [r7, #20] + 800311e: e001 b.n 8003124 } else { sysclockfreq = HSE_VALUE; - 8003314: 4b1f ldr r3, [pc, #124] ; (8003394 ) - 8003316: 617b str r3, [r7, #20] + 8003120: 4b1f ldr r3, [pc, #124] ; (80031a0 ) + 8003122: 617b str r3, [r7, #20] else { /* Nothing to do */ } if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) - 8003318: f7ff f9d1 bl 80026be - 800331c: 4603 mov r3, r0 - 800331e: 2b0c cmp r3, #12 - 8003320: d12f bne.n 8003382 + 8003124: f7ff f9d1 bl 80024ca + 8003128: 4603 mov r3, r0 + 800312a: 2b0c cmp r3, #12 + 800312c: d12f bne.n 800318e { /* PLL used as system clock source */ pllsource = LL_RCC_PLL_GetMainSource(); - 8003322: f7ff faa3 bl 800286c - 8003326: 6078 str r0, [r7, #4] + 800312e: f7ff faa3 bl 8002678 + 8003132: 6078 str r0, [r7, #4] switch (pllsource) - 8003328: 687b ldr r3, [r7, #4] - 800332a: 2b02 cmp r3, #2 - 800332c: d003 beq.n 8003336 - 800332e: 687b ldr r3, [r7, #4] - 8003330: 2b03 cmp r3, #3 - 8003332: d003 beq.n 800333c - 8003334: e00d b.n 8003352 + 8003134: 687b ldr r3, [r7, #4] + 8003136: 2b02 cmp r3, #2 + 8003138: d003 beq.n 8003142 + 800313a: 687b ldr r3, [r7, #4] + 800313c: 2b03 cmp r3, #3 + 800313e: d003 beq.n 8003148 + 8003140: e00d b.n 800315e { case RCC_PLLSOURCE_HSI: /* HSI used as PLL clock source */ pllinputfreq = HSI_VALUE; - 8003336: 4b16 ldr r3, [pc, #88] ; (8003390 ) - 8003338: 60fb str r3, [r7, #12] + 8003142: 4b16 ldr r3, [pc, #88] ; (800319c ) + 8003144: 60fb str r3, [r7, #12] break; - 800333a: e00d b.n 8003358 + 8003146: e00d b.n 8003164 case RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ if (LL_RCC_HSE_IsEnabledDiv2() == 1U) - 800333c: f7ff f884 bl 8002448 - 8003340: 4603 mov r3, r0 - 8003342: 2b01 cmp r3, #1 - 8003344: d102 bne.n 800334c + 8003148: f7ff f884 bl 8002254 + 800314c: 4603 mov r3, r0 + 800314e: 2b01 cmp r3, #1 + 8003150: d102 bne.n 8003158 { pllinputfreq = HSE_VALUE / 2U; - 8003346: 4b12 ldr r3, [pc, #72] ; (8003390 ) - 8003348: 60fb str r3, [r7, #12] + 8003152: 4b12 ldr r3, [pc, #72] ; (800319c ) + 8003154: 60fb str r3, [r7, #12] } else { pllinputfreq = HSE_VALUE; } break; - 800334a: e005 b.n 8003358 + 8003156: e005 b.n 8003164 pllinputfreq = HSE_VALUE; - 800334c: 4b11 ldr r3, [pc, #68] ; (8003394 ) - 800334e: 60fb str r3, [r7, #12] + 8003158: 4b11 ldr r3, [pc, #68] ; (80031a0 ) + 800315a: 60fb str r3, [r7, #12] break; - 8003350: e002 b.n 8003358 + 800315c: e002 b.n 8003164 case RCC_PLLSOURCE_MSI: /* MSI used as PLL clock source */ default: pllinputfreq = msifreq; - 8003352: 693b ldr r3, [r7, #16] - 8003354: 60fb str r3, [r7, #12] + 800315e: 693b ldr r3, [r7, #16] + 8003160: 60fb str r3, [r7, #12] break; - 8003356: bf00 nop + 8003162: bf00 nop } sysclockfreq = __LL_RCC_CALC_PLLCLK_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), - 8003358: f7ff fa66 bl 8002828 - 800335c: 4602 mov r2, r0 - 800335e: 68fb ldr r3, [r7, #12] - 8003360: fb03 f402 mul.w r4, r3, r2 - 8003364: f7ff fa77 bl 8002856 - 8003368: 4603 mov r3, r0 - 800336a: 091b lsrs r3, r3, #4 - 800336c: 3301 adds r3, #1 - 800336e: fbb4 f4f3 udiv r4, r4, r3 - 8003372: f7ff fa65 bl 8002840 - 8003376: 4603 mov r3, r0 - 8003378: 0f5b lsrs r3, r3, #29 - 800337a: 3301 adds r3, #1 - 800337c: fbb4 f3f3 udiv r3, r4, r3 - 8003380: 617b str r3, [r7, #20] + 8003164: f7ff fa66 bl 8002634 + 8003168: 4602 mov r2, r0 + 800316a: 68fb ldr r3, [r7, #12] + 800316c: fb03 f402 mul.w r4, r3, r2 + 8003170: f7ff fa77 bl 8002662 + 8003174: 4603 mov r3, r0 + 8003176: 091b lsrs r3, r3, #4 + 8003178: 3301 adds r3, #1 + 800317a: fbb4 f4f3 udiv r4, r4, r3 + 800317e: f7ff fa65 bl 800264c + 8003182: 4603 mov r3, r0 + 8003184: 0f5b lsrs r3, r3, #29 + 8003186: 3301 adds r3, #1 + 8003188: fbb4 f3f3 udiv r3, r4, r3 + 800318c: 617b str r3, [r7, #20] LL_RCC_PLL_GetN(), LL_RCC_PLL_GetR()); } return sysclockfreq; - 8003382: 697b ldr r3, [r7, #20] + 800318e: 697b ldr r3, [r7, #20] } - 8003384: 4618 mov r0, r3 - 8003386: 371c adds r7, #28 - 8003388: 46bd mov sp, r7 - 800338a: bd90 pop {r4, r7, pc} - 800338c: 08004a74 .word 0x08004a74 - 8003390: 00f42400 .word 0x00f42400 - 8003394: 01e84800 .word 0x01e84800 + 8003190: 4618 mov r0, r3 + 8003192: 371c adds r7, #28 + 8003194: 46bd mov sp, r7 + 8003196: bd90 pop {r4, r7, pc} + 8003198: 08004818 .word 0x08004818 + 800319c: 00f42400 .word 0x00f42400 + 80031a0: 01e84800 .word 0x01e84800 -08003398 : +080031a4 : /** * @brief Return the HCLK frequency. * @retval HCLK frequency in Hz */ uint32_t HAL_RCC_GetHCLKFreq(void) { - 8003398: b598 push {r3, r4, r7, lr} - 800339a: af00 add r7, sp, #0 + 80031a4: b598 push {r3, r4, r7, lr} + 80031a6: af00 add r7, sp, #0 /* Get SysClock and Compute HCLK1 frequency --------------------------------*/ return ((uint32_t)(__LL_RCC_CALC_HCLK1_FREQ(HAL_RCC_GetSysClockFreq(), LL_RCC_GetAHBPrescaler()))); - 800339c: f7ff ff5c bl 8003258 - 80033a0: 4604 mov r4, r0 - 80033a2: f7ff f9e6 bl 8002772 - 80033a6: 4603 mov r3, r0 - 80033a8: 091b lsrs r3, r3, #4 - 80033aa: f003 030f and.w r3, r3, #15 - 80033ae: 4a03 ldr r2, [pc, #12] ; (80033bc ) - 80033b0: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 80033b4: fbb4 f3f3 udiv r3, r4, r3 -} - 80033b8: 4618 mov r0, r3 - 80033ba: bd98 pop {r3, r4, r7, pc} - 80033bc: 08004a14 .word 0x08004a14 - -080033c0 : + 80031a8: f7ff ff5c bl 8003064 + 80031ac: 4604 mov r4, r0 + 80031ae: f7ff f9e6 bl 800257e + 80031b2: 4603 mov r3, r0 + 80031b4: 091b lsrs r3, r3, #4 + 80031b6: f003 030f and.w r3, r3, #15 + 80031ba: 4a03 ldr r2, [pc, #12] ; (80031c8 ) + 80031bc: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 80031c0: fbb4 f3f3 udiv r3, r4, r3 +} + 80031c4: 4618 mov r0, r3 + 80031c6: bd98 pop {r3, r4, r7, pc} + 80031c8: 080047b8 .word 0x080047b8 + +080031cc : /** * @brief Return the PCLK1 frequency. * @retval PCLK1 frequency in Hz */ uint32_t HAL_RCC_GetPCLK1Freq(void) { - 80033c0: b598 push {r3, r4, r7, lr} - 80033c2: af00 add r7, sp, #0 + 80031cc: b598 push {r3, r4, r7, lr} + 80031ce: 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()))); - 80033c4: f7ff ffe8 bl 8003398 - 80033c8: 4604 mov r4, r0 - 80033ca: f7ff f9ea bl 80027a2 - 80033ce: 4603 mov r3, r0 - 80033d0: 0a1b lsrs r3, r3, #8 - 80033d2: 4a03 ldr r2, [pc, #12] ; (80033e0 ) - 80033d4: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 80033d8: fa24 f303 lsr.w r3, r4, r3 -} - 80033dc: 4618 mov r0, r3 - 80033de: bd98 pop {r3, r4, r7, pc} - 80033e0: 08004a54 .word 0x08004a54 - -080033e4 : + 80031d0: f7ff ffe8 bl 80031a4 + 80031d4: 4604 mov r4, r0 + 80031d6: f7ff f9ea bl 80025ae + 80031da: 4603 mov r3, r0 + 80031dc: 0a1b lsrs r3, r3, #8 + 80031de: 4a03 ldr r2, [pc, #12] ; (80031ec ) + 80031e0: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 80031e4: fa24 f303 lsr.w r3, r4, r3 +} + 80031e8: 4618 mov r0, r3 + 80031ea: bd98 pop {r3, r4, r7, pc} + 80031ec: 080047f8 .word 0x080047f8 + +080031f0 : /** * @brief Return the PCLK2 frequency. * @retval PCLK2 frequency in Hz */ uint32_t HAL_RCC_GetPCLK2Freq(void) { - 80033e4: b598 push {r3, r4, r7, lr} - 80033e6: af00 add r7, sp, #0 + 80031f0: b598 push {r3, r4, r7, lr} + 80031f2: af00 add r7, sp, #0 /* Get HCLK source and Compute PCLK2 frequency -----------------------------*/ return ((uint32_t)(__LL_RCC_CALC_PCLK2_FREQ(HAL_RCC_GetHCLKFreq(), LL_RCC_GetAPB2Prescaler()))); - 80033e8: f7ff ffd6 bl 8003398 - 80033ec: 4604 mov r4, r0 - 80033ee: f7ff f9e3 bl 80027b8 - 80033f2: 4603 mov r3, r0 - 80033f4: 0adb lsrs r3, r3, #11 - 80033f6: 4a03 ldr r2, [pc, #12] ; (8003404 ) - 80033f8: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 80033fc: fa24 f303 lsr.w r3, r4, r3 -} - 8003400: 4618 mov r0, r3 - 8003402: bd98 pop {r3, r4, r7, pc} - 8003404: 08004a54 .word 0x08004a54 - -08003408 : + 80031f4: f7ff ffd6 bl 80031a4 + 80031f8: 4604 mov r4, r0 + 80031fa: f7ff f9e3 bl 80025c4 + 80031fe: 4603 mov r3, r0 + 8003200: 0adb lsrs r3, r3, #11 + 8003202: 4a03 ldr r2, [pc, #12] ; (8003210 ) + 8003204: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8003208: fa24 f303 lsr.w r3, r4, r3 +} + 800320c: 4618 mov r0, r3 + 800320e: bd98 pop {r3, r4, r7, pc} + 8003210: 080047f8 .word 0x080047f8 + +08003214 : voltage range. * @param MSI_Range MSI range value from @ref RCC_MSIRANGE_0 to @ref RCC_MSIRANGE_11 * @retval HAL status */ static HAL_StatusTypeDef RCC_SetFlashLatencyFromMSIRange(uint32_t MSI_Range) { - 8003408: b590 push {r4, r7, lr} - 800340a: b085 sub sp, #20 - 800340c: af00 add r7, sp, #0 - 800340e: 6078 str r0, [r7, #4] + 8003214: b590 push {r4, r7, lr} + 8003216: b085 sub sp, #20 + 8003218: af00 add r7, sp, #0 + 800321a: 6078 str r0, [r7, #4] uint32_t flash_clksrcfreq; uint32_t msifreq; /* MSI frequency range in Hz */ msifreq = __LL_RCC_CALC_MSI_FREQ(LL_RCC_MSIRANGESEL_RUN, MSI_Range); - 8003410: 687b ldr r3, [r7, #4] - 8003412: 091b lsrs r3, r3, #4 - 8003414: f003 030f and.w r3, r3, #15 - 8003418: 4a10 ldr r2, [pc, #64] ; (800345c ) - 800341a: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 800341e: 60fb str r3, [r7, #12] + 800321c: 687b ldr r3, [r7, #4] + 800321e: 091b lsrs r3, r3, #4 + 8003220: f003 030f and.w r3, r3, #15 + 8003224: 4a10 ldr r2, [pc, #64] ; (8003268 ) + 8003226: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 800322a: 60fb str r3, [r7, #12] flash_clksrcfreq = __LL_RCC_CALC_HCLK3_FREQ(msifreq, LL_RCC_GetAHB3Prescaler()); - 8003420: f7ff f9b2 bl 8002788 - 8003424: 4603 mov r3, r0 - 8003426: 091b lsrs r3, r3, #4 - 8003428: f003 030f and.w r3, r3, #15 - 800342c: 4a0c ldr r2, [pc, #48] ; (8003460 ) - 800342e: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 8003432: 68fa ldr r2, [r7, #12] - 8003434: fbb2 f3f3 udiv r3, r2, r3 - 8003438: 60bb str r3, [r7, #8] + 800322c: f7ff f9b2 bl 8002594 + 8003230: 4603 mov r3, r0 + 8003232: 091b lsrs r3, r3, #4 + 8003234: f003 030f and.w r3, r3, #15 + 8003238: 4a0c ldr r2, [pc, #48] ; (800326c ) + 800323a: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 800323e: 68fa ldr r2, [r7, #12] + 8003240: fbb2 f3f3 udiv r3, r2, r3 + 8003244: 60bb str r3, [r7, #8] return RCC_SetFlashLatency((flash_clksrcfreq / MEGA_HZ), HAL_PWREx_GetVoltageRange()); - 800343a: 68bb ldr r3, [r7, #8] - 800343c: 4a09 ldr r2, [pc, #36] ; (8003464 ) - 800343e: fba2 2303 umull r2, r3, r2, r3 - 8003442: 0c9c lsrs r4, r3, #18 - 8003444: f7fe ffc6 bl 80023d4 - 8003448: 4603 mov r3, r0 - 800344a: 4619 mov r1, r3 - 800344c: 4620 mov r0, r4 - 800344e: f000 f80b bl 8003468 - 8003452: 4603 mov r3, r0 -} - 8003454: 4618 mov r0, r3 - 8003456: 3714 adds r7, #20 - 8003458: 46bd mov sp, r7 - 800345a: bd90 pop {r4, r7, pc} - 800345c: 08004a74 .word 0x08004a74 - 8003460: 08004a14 .word 0x08004a14 - 8003464: 431bde83 .word 0x431bde83 - -08003468 : + 8003246: 68bb ldr r3, [r7, #8] + 8003248: 4a09 ldr r2, [pc, #36] ; (8003270 ) + 800324a: fba2 2303 umull r2, r3, r2, r3 + 800324e: 0c9c lsrs r4, r3, #18 + 8003250: f7fe ffc6 bl 80021e0 + 8003254: 4603 mov r3, r0 + 8003256: 4619 mov r1, r3 + 8003258: 4620 mov r0, r4 + 800325a: f000 f80b bl 8003274 + 800325e: 4603 mov r3, r0 +} + 8003260: 4618 mov r0, r3 + 8003262: 3714 adds r7, #20 + 8003264: 46bd mov sp, r7 + 8003266: bd90 pop {r4, r7, pc} + 8003268: 08004818 .word 0x08004818 + 800326c: 080047b8 .word 0x080047b8 + 8003270: 431bde83 .word 0x431bde83 + +08003274 : * @arg PWR_REGULATOR_VOLTAGE_SCALE1 Regulator voltage output range 1 mode * @arg PWR_REGULATOR_VOLTAGE_SCALE2 Regulator voltage output range 2 mode * @retval HAL status */ static HAL_StatusTypeDef RCC_SetFlashLatency(uint32_t Flash_ClkSrcFreq, uint32_t VCORE_Voltage) { - 8003468: b580 push {r7, lr} - 800346a: b08e sub sp, #56 ; 0x38 - 800346c: af00 add r7, sp, #0 - 800346e: 6078 str r0, [r7, #4] - 8003470: 6039 str r1, [r7, #0] + 8003274: b580 push {r7, lr} + 8003276: b08e sub sp, #56 ; 0x38 + 8003278: af00 add r7, sp, #0 + 800327a: 6078 str r0, [r7, #4] + 800327c: 6039 str r1, [r7, #0] /* Flash Clock source (HCLK3) range in MHz for VCORE range1 */ const uint16_t FLASH_CLK_SRC_RANGE_VOS1[] = {18, 36, 48}; - 8003472: 4a3a ldr r2, [pc, #232] ; (800355c ) - 8003474: f107 0320 add.w r3, r7, #32 - 8003478: e892 0003 ldmia.w r2, {r0, r1} - 800347c: 6018 str r0, [r3, #0] - 800347e: 3304 adds r3, #4 - 8003480: 8019 strh r1, [r3, #0] + 800327e: 4a3a ldr r2, [pc, #232] ; (8003368 ) + 8003280: f107 0320 add.w r3, r7, #32 + 8003284: e892 0003 ldmia.w r2, {r0, r1} + 8003288: 6018 str r0, [r3, #0] + 800328a: 3304 adds r3, #4 + 800328c: 8019 strh r1, [r3, #0] /* Flash Clock source (HCLK3) range in MHz for VCORE range2 */ const uint16_t FLASH_CLK_SRC_RANGE_VOS2[] = {6, 12, 16}; - 8003482: 4a37 ldr r2, [pc, #220] ; (8003560 ) - 8003484: f107 0318 add.w r3, r7, #24 - 8003488: e892 0003 ldmia.w r2, {r0, r1} - 800348c: 6018 str r0, [r3, #0] - 800348e: 3304 adds r3, #4 - 8003490: 8019 strh r1, [r3, #0] + 800328e: 4a37 ldr r2, [pc, #220] ; (800336c ) + 8003290: f107 0318 add.w r3, r7, #24 + 8003294: e892 0003 ldmia.w r2, {r0, r1} + 8003298: 6018 str r0, [r3, #0] + 800329a: 3304 adds r3, #4 + 800329c: 8019 strh r1, [r3, #0] /* Flash Latency range */ const uint32_t FLASH_LATENCY_RANGE[] = {FLASH_LATENCY_0, FLASH_LATENCY_1, FLASH_LATENCY_2}; - 8003492: 4a34 ldr r2, [pc, #208] ; (8003564 ) - 8003494: f107 030c add.w r3, r7, #12 - 8003498: ca07 ldmia r2, {r0, r1, r2} - 800349a: e883 0007 stmia.w r3, {r0, r1, r2} + 800329e: 4a34 ldr r2, [pc, #208] ; (8003370 ) + 80032a0: f107 030c add.w r3, r7, #12 + 80032a4: ca07 ldmia r2, {r0, r1, r2} + 80032a6: e883 0007 stmia.w r3, {r0, r1, r2} uint32_t latency = FLASH_LATENCY_0; /* default value 0WS */ - 800349e: 2300 movs r3, #0 - 80034a0: 637b str r3, [r7, #52] ; 0x34 + 80032aa: 2300 movs r3, #0 + 80032ac: 637b str r3, [r7, #52] ; 0x34 uint32_t tickstart; if (VCORE_Voltage == PWR_REGULATOR_VOLTAGE_SCALE1) - 80034a2: 683b ldr r3, [r7, #0] - 80034a4: f5b3 7f00 cmp.w r3, #512 ; 0x200 - 80034a8: d11b bne.n 80034e2 + 80032ae: 683b ldr r3, [r7, #0] + 80032b0: f5b3 7f00 cmp.w r3, #512 ; 0x200 + 80032b4: d11b bne.n 80032ee { for (uint32_t index = 0; index < __COUNTOF(FLASH_CLK_SRC_RANGE_VOS1); index++) - 80034aa: 2300 movs r3, #0 - 80034ac: 633b str r3, [r7, #48] ; 0x30 - 80034ae: e014 b.n 80034da + 80032b6: 2300 movs r3, #0 + 80032b8: 633b str r3, [r7, #48] ; 0x30 + 80032ba: e014 b.n 80032e6 { if (Flash_ClkSrcFreq <= FLASH_CLK_SRC_RANGE_VOS1[index]) - 80034b0: 6b3b ldr r3, [r7, #48] ; 0x30 - 80034b2: 005b lsls r3, r3, #1 - 80034b4: 3338 adds r3, #56 ; 0x38 - 80034b6: 443b add r3, r7 - 80034b8: f833 3c18 ldrh.w r3, [r3, #-24] - 80034bc: 461a mov r2, r3 - 80034be: 687b ldr r3, [r7, #4] - 80034c0: 4293 cmp r3, r2 - 80034c2: d807 bhi.n 80034d4 + 80032bc: 6b3b ldr r3, [r7, #48] ; 0x30 + 80032be: 005b lsls r3, r3, #1 + 80032c0: 3338 adds r3, #56 ; 0x38 + 80032c2: 443b add r3, r7 + 80032c4: f833 3c18 ldrh.w r3, [r3, #-24] + 80032c8: 461a mov r2, r3 + 80032ca: 687b ldr r3, [r7, #4] + 80032cc: 4293 cmp r3, r2 + 80032ce: d807 bhi.n 80032e0 { latency = FLASH_LATENCY_RANGE[index]; - 80034c4: 6b3b ldr r3, [r7, #48] ; 0x30 - 80034c6: 009b lsls r3, r3, #2 - 80034c8: 3338 adds r3, #56 ; 0x38 - 80034ca: 443b add r3, r7 - 80034cc: f853 3c2c ldr.w r3, [r3, #-44] - 80034d0: 637b str r3, [r7, #52] ; 0x34 + 80032d0: 6b3b ldr r3, [r7, #48] ; 0x30 + 80032d2: 009b lsls r3, r3, #2 + 80032d4: 3338 adds r3, #56 ; 0x38 + 80032d6: 443b add r3, r7 + 80032d8: f853 3c2c ldr.w r3, [r3, #-44] + 80032dc: 637b str r3, [r7, #52] ; 0x34 break; - 80034d2: e021 b.n 8003518 + 80032de: e021 b.n 8003324 for (uint32_t index = 0; index < __COUNTOF(FLASH_CLK_SRC_RANGE_VOS1); index++) - 80034d4: 6b3b ldr r3, [r7, #48] ; 0x30 - 80034d6: 3301 adds r3, #1 - 80034d8: 633b str r3, [r7, #48] ; 0x30 - 80034da: 6b3b ldr r3, [r7, #48] ; 0x30 - 80034dc: 2b02 cmp r3, #2 - 80034de: d9e7 bls.n 80034b0 - 80034e0: e01a b.n 8003518 + 80032e0: 6b3b ldr r3, [r7, #48] ; 0x30 + 80032e2: 3301 adds r3, #1 + 80032e4: 633b str r3, [r7, #48] ; 0x30 + 80032e6: 6b3b ldr r3, [r7, #48] ; 0x30 + 80032e8: 2b02 cmp r3, #2 + 80032ea: d9e7 bls.n 80032bc + 80032ec: e01a b.n 8003324 } } } else /* PWR_REGULATOR_VOLTAGE_SCALE2 */ { for (uint32_t index = 0; index < __COUNTOF(FLASH_CLK_SRC_RANGE_VOS2); index++) - 80034e2: 2300 movs r3, #0 - 80034e4: 62fb str r3, [r7, #44] ; 0x2c - 80034e6: e014 b.n 8003512 + 80032ee: 2300 movs r3, #0 + 80032f0: 62fb str r3, [r7, #44] ; 0x2c + 80032f2: e014 b.n 800331e { if (Flash_ClkSrcFreq <= FLASH_CLK_SRC_RANGE_VOS2[index]) - 80034e8: 6afb ldr r3, [r7, #44] ; 0x2c - 80034ea: 005b lsls r3, r3, #1 - 80034ec: 3338 adds r3, #56 ; 0x38 - 80034ee: 443b add r3, r7 - 80034f0: f833 3c20 ldrh.w r3, [r3, #-32] - 80034f4: 461a mov r2, r3 - 80034f6: 687b ldr r3, [r7, #4] - 80034f8: 4293 cmp r3, r2 - 80034fa: d807 bhi.n 800350c + 80032f4: 6afb ldr r3, [r7, #44] ; 0x2c + 80032f6: 005b lsls r3, r3, #1 + 80032f8: 3338 adds r3, #56 ; 0x38 + 80032fa: 443b add r3, r7 + 80032fc: f833 3c20 ldrh.w r3, [r3, #-32] + 8003300: 461a mov r2, r3 + 8003302: 687b ldr r3, [r7, #4] + 8003304: 4293 cmp r3, r2 + 8003306: d807 bhi.n 8003318 { latency = FLASH_LATENCY_RANGE[index]; - 80034fc: 6afb ldr r3, [r7, #44] ; 0x2c - 80034fe: 009b lsls r3, r3, #2 - 8003500: 3338 adds r3, #56 ; 0x38 - 8003502: 443b add r3, r7 - 8003504: f853 3c2c ldr.w r3, [r3, #-44] - 8003508: 637b str r3, [r7, #52] ; 0x34 + 8003308: 6afb ldr r3, [r7, #44] ; 0x2c + 800330a: 009b lsls r3, r3, #2 + 800330c: 3338 adds r3, #56 ; 0x38 + 800330e: 443b add r3, r7 + 8003310: f853 3c2c ldr.w r3, [r3, #-44] + 8003314: 637b str r3, [r7, #52] ; 0x34 break; - 800350a: e005 b.n 8003518 + 8003316: e005 b.n 8003324 for (uint32_t index = 0; index < __COUNTOF(FLASH_CLK_SRC_RANGE_VOS2); index++) - 800350c: 6afb ldr r3, [r7, #44] ; 0x2c - 800350e: 3301 adds r3, #1 - 8003510: 62fb str r3, [r7, #44] ; 0x2c - 8003512: 6afb ldr r3, [r7, #44] ; 0x2c - 8003514: 2b02 cmp r3, #2 - 8003516: d9e7 bls.n 80034e8 + 8003318: 6afb ldr r3, [r7, #44] ; 0x2c + 800331a: 3301 adds r3, #1 + 800331c: 62fb str r3, [r7, #44] ; 0x2c + 800331e: 6afb ldr r3, [r7, #44] ; 0x2c + 8003320: 2b02 cmp r3, #2 + 8003322: d9e7 bls.n 80032f4 } } } __HAL_FLASH_SET_LATENCY(latency); - 8003518: 4b13 ldr r3, [pc, #76] ; (8003568 ) - 800351a: 681b ldr r3, [r3, #0] - 800351c: f023 0207 bic.w r2, r3, #7 - 8003520: 4911 ldr r1, [pc, #68] ; (8003568 ) - 8003522: 6b7b ldr r3, [r7, #52] ; 0x34 - 8003524: 4313 orrs r3, r2 - 8003526: 600b str r3, [r1, #0] + 8003324: 4b13 ldr r3, [pc, #76] ; (8003374 ) + 8003326: 681b ldr r3, [r3, #0] + 8003328: f023 0207 bic.w r2, r3, #7 + 800332c: 4911 ldr r1, [pc, #68] ; (8003374 ) + 800332e: 6b7b ldr r3, [r7, #52] ; 0x34 + 8003330: 4313 orrs r3, r2 + 8003332: 600b str r3, [r1, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003528: f7fe f9b8 bl 800189c - 800352c: 62b8 str r0, [r7, #40] ; 0x28 + 8003334: f7fe f9b8 bl 80016a8 + 8003338: 62b8 str r0, [r7, #40] ; 0x28 /* Check that the new number of wait states is taken into account to access the Flash memory by reading the FLASH_ACR register */ while (__HAL_FLASH_GET_LATENCY() != latency) - 800352e: e008 b.n 8003542 + 800333a: e008 b.n 800334e { if ((HAL_GetTick() - tickstart) > LATENCY_TIMEOUT_VALUE) - 8003530: f7fe f9b4 bl 800189c - 8003534: 4602 mov r2, r0 - 8003536: 6abb ldr r3, [r7, #40] ; 0x28 - 8003538: 1ad3 subs r3, r2, r3 - 800353a: 2b02 cmp r3, #2 - 800353c: d901 bls.n 8003542 + 800333c: f7fe f9b4 bl 80016a8 + 8003340: 4602 mov r2, r0 + 8003342: 6abb ldr r3, [r7, #40] ; 0x28 + 8003344: 1ad3 subs r3, r2, r3 + 8003346: 2b02 cmp r3, #2 + 8003348: d901 bls.n 800334e { return HAL_TIMEOUT; - 800353e: 2303 movs r3, #3 - 8003540: e007 b.n 8003552 + 800334a: 2303 movs r3, #3 + 800334c: e007 b.n 800335e while (__HAL_FLASH_GET_LATENCY() != latency) - 8003542: 4b09 ldr r3, [pc, #36] ; (8003568 ) - 8003544: 681b ldr r3, [r3, #0] - 8003546: f003 0307 and.w r3, r3, #7 - 800354a: 6b7a ldr r2, [r7, #52] ; 0x34 - 800354c: 429a cmp r2, r3 - 800354e: d1ef bne.n 8003530 + 800334e: 4b09 ldr r3, [pc, #36] ; (8003374 ) + 8003350: 681b ldr r3, [r3, #0] + 8003352: f003 0307 and.w r3, r3, #7 + 8003356: 6b7a ldr r2, [r7, #52] ; 0x34 + 8003358: 429a cmp r2, r3 + 800335a: d1ef bne.n 800333c } } return HAL_OK; - 8003550: 2300 movs r3, #0 -} - 8003552: 4618 mov r0, r3 - 8003554: 3738 adds r7, #56 ; 0x38 - 8003556: 46bd mov sp, r7 - 8003558: bd80 pop {r7, pc} - 800355a: bf00 nop - 800355c: 0800499c .word 0x0800499c - 8003560: 080049a4 .word 0x080049a4 - 8003564: 080049ac .word 0x080049ac - 8003568: 58004000 .word 0x58004000 - -0800356c : -{ - 800356c: b480 push {r7} - 800356e: af00 add r7, sp, #0 + 800335c: 2300 movs r3, #0 +} + 800335e: 4618 mov r0, r3 + 8003360: 3738 adds r7, #56 ; 0x38 + 8003362: 46bd mov sp, r7 + 8003364: bd80 pop {r7, pc} + 8003366: bf00 nop + 8003368: 0800479c .word 0x0800479c + 800336c: 080047a4 .word 0x080047a4 + 8003370: 080047ac .word 0x080047ac + 8003374: 58004000 .word 0x58004000 + +08003378 : +{ + 8003378: b480 push {r7} + 800337a: af00 add r7, sp, #0 return ((READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == (RCC_BDCR_LSERDY)) ? 1UL : 0UL); - 8003570: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8003574: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8003578: f003 0302 and.w r3, r3, #2 - 800357c: 2b02 cmp r3, #2 - 800357e: d101 bne.n 8003584 - 8003580: 2301 movs r3, #1 - 8003582: e000 b.n 8003586 - 8003584: 2300 movs r3, #0 -} - 8003586: 4618 mov r0, r3 - 8003588: 46bd mov sp, r7 - 800358a: bc80 pop {r7} - 800358c: 4770 bx lr - -0800358e : -{ - 800358e: b480 push {r7} - 8003590: b083 sub sp, #12 - 8003592: af00 add r7, sp, #0 - 8003594: 6078 str r0, [r7, #4] + 800337c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8003380: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8003384: f003 0302 and.w r3, r3, #2 + 8003388: 2b02 cmp r3, #2 + 800338a: d101 bne.n 8003390 + 800338c: 2301 movs r3, #1 + 800338e: e000 b.n 8003392 + 8003390: 2300 movs r3, #0 +} + 8003392: 4618 mov r0, r3 + 8003394: 46bd mov sp, r7 + 8003396: bc80 pop {r7} + 8003398: 4770 bx lr + +0800339a : +{ + 800339a: b480 push {r7} + 800339c: b083 sub sp, #12 + 800339e: af00 add r7, sp, #0 + 80033a0: 6078 str r0, [r7, #4] MODIFY_REG(RCC->CCIPR, (USARTxSource >> 16), (USARTxSource & 0x0000FFFFU)); - 8003596: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800359a: f8d3 2088 ldr.w r2, [r3, #136] ; 0x88 - 800359e: 687b ldr r3, [r7, #4] - 80035a0: 0c1b lsrs r3, r3, #16 - 80035a2: 43db mvns r3, r3 - 80035a4: 401a ands r2, r3 - 80035a6: 687b ldr r3, [r7, #4] - 80035a8: b29b uxth r3, r3 - 80035aa: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 80035ae: 4313 orrs r3, r2 - 80035b0: f8c1 3088 str.w r3, [r1, #136] ; 0x88 -} - 80035b4: bf00 nop - 80035b6: 370c adds r7, #12 - 80035b8: 46bd mov sp, r7 - 80035ba: bc80 pop {r7} - 80035bc: 4770 bx lr - -080035be : -{ - 80035be: b480 push {r7} - 80035c0: b083 sub sp, #12 - 80035c2: af00 add r7, sp, #0 - 80035c4: 6078 str r0, [r7, #4] + 80033a2: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80033a6: f8d3 2088 ldr.w r2, [r3, #136] ; 0x88 + 80033aa: 687b ldr r3, [r7, #4] + 80033ac: 0c1b lsrs r3, r3, #16 + 80033ae: 43db mvns r3, r3 + 80033b0: 401a ands r2, r3 + 80033b2: 687b ldr r3, [r7, #4] + 80033b4: b29b uxth r3, r3 + 80033b6: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 80033ba: 4313 orrs r3, r2 + 80033bc: f8c1 3088 str.w r3, [r1, #136] ; 0x88 +} + 80033c0: bf00 nop + 80033c2: 370c adds r7, #12 + 80033c4: 46bd mov sp, r7 + 80033c6: bc80 pop {r7} + 80033c8: 4770 bx lr + +080033ca : +{ + 80033ca: b480 push {r7} + 80033cc: b083 sub sp, #12 + 80033ce: af00 add r7, sp, #0 + 80033d0: 6078 str r0, [r7, #4] MODIFY_REG(RCC->CCIPR, RCC_CCIPR_I2S2SEL, I2SxSource); - 80035c6: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80035ca: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 80035ce: f423 7240 bic.w r2, r3, #768 ; 0x300 - 80035d2: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 80035d6: 687b ldr r3, [r7, #4] - 80035d8: 4313 orrs r3, r2 - 80035da: f8c1 3088 str.w r3, [r1, #136] ; 0x88 -} - 80035de: bf00 nop - 80035e0: 370c adds r7, #12 - 80035e2: 46bd mov sp, r7 - 80035e4: bc80 pop {r7} - 80035e6: 4770 bx lr - -080035e8 : -{ - 80035e8: b480 push {r7} - 80035ea: b083 sub sp, #12 - 80035ec: af00 add r7, sp, #0 - 80035ee: 6078 str r0, [r7, #4] + 80033d2: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80033d6: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 80033da: f423 7240 bic.w r2, r3, #768 ; 0x300 + 80033de: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 80033e2: 687b ldr r3, [r7, #4] + 80033e4: 4313 orrs r3, r2 + 80033e6: f8c1 3088 str.w r3, [r1, #136] ; 0x88 +} + 80033ea: bf00 nop + 80033ec: 370c adds r7, #12 + 80033ee: 46bd mov sp, r7 + 80033f0: bc80 pop {r7} + 80033f2: 4770 bx lr + +080033f4 : +{ + 80033f4: b480 push {r7} + 80033f6: b083 sub sp, #12 + 80033f8: af00 add r7, sp, #0 + 80033fa: 6078 str r0, [r7, #4] MODIFY_REG(RCC->CCIPR, RCC_CCIPR_LPUART1SEL, LPUARTxSource); - 80035f0: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80035f4: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 80035f8: f423 6240 bic.w r2, r3, #3072 ; 0xc00 - 80035fc: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 8003600: 687b ldr r3, [r7, #4] - 8003602: 4313 orrs r3, r2 - 8003604: f8c1 3088 str.w r3, [r1, #136] ; 0x88 -} - 8003608: bf00 nop - 800360a: 370c adds r7, #12 - 800360c: 46bd mov sp, r7 - 800360e: bc80 pop {r7} - 8003610: 4770 bx lr - -08003612 : -{ - 8003612: b480 push {r7} - 8003614: b083 sub sp, #12 - 8003616: af00 add r7, sp, #0 - 8003618: 6078 str r0, [r7, #4] + 80033fc: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8003400: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 8003404: f423 6240 bic.w r2, r3, #3072 ; 0xc00 + 8003408: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 800340c: 687b ldr r3, [r7, #4] + 800340e: 4313 orrs r3, r2 + 8003410: f8c1 3088 str.w r3, [r1, #136] ; 0x88 +} + 8003414: bf00 nop + 8003416: 370c adds r7, #12 + 8003418: 46bd mov sp, r7 + 800341a: bc80 pop {r7} + 800341c: 4770 bx lr + +0800341e : +{ + 800341e: b480 push {r7} + 8003420: b083 sub sp, #12 + 8003422: af00 add r7, sp, #0 + 8003424: 6078 str r0, [r7, #4] MODIFY_REG(RCC->CCIPR, ((I2CxSource >> 4) & 0x000FF000U), ((I2CxSource << 4) & 0x000FF000U)); - 800361a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800361e: f8d3 2088 ldr.w r2, [r3, #136] ; 0x88 - 8003622: 687b ldr r3, [r7, #4] - 8003624: 091b lsrs r3, r3, #4 - 8003626: f403 237f and.w r3, r3, #1044480 ; 0xff000 - 800362a: 43db mvns r3, r3 - 800362c: 401a ands r2, r3 - 800362e: 687b ldr r3, [r7, #4] - 8003630: 011b lsls r3, r3, #4 - 8003632: f403 237f and.w r3, r3, #1044480 ; 0xff000 - 8003636: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 800363a: 4313 orrs r3, r2 - 800363c: f8c1 3088 str.w r3, [r1, #136] ; 0x88 -} - 8003640: bf00 nop - 8003642: 370c adds r7, #12 - 8003644: 46bd mov sp, r7 - 8003646: bc80 pop {r7} - 8003648: 4770 bx lr - -0800364a : -{ - 800364a: b480 push {r7} - 800364c: b083 sub sp, #12 - 800364e: af00 add r7, sp, #0 - 8003650: 6078 str r0, [r7, #4] + 8003426: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800342a: f8d3 2088 ldr.w r2, [r3, #136] ; 0x88 + 800342e: 687b ldr r3, [r7, #4] + 8003430: 091b lsrs r3, r3, #4 + 8003432: f403 237f and.w r3, r3, #1044480 ; 0xff000 + 8003436: 43db mvns r3, r3 + 8003438: 401a ands r2, r3 + 800343a: 687b ldr r3, [r7, #4] + 800343c: 011b lsls r3, r3, #4 + 800343e: f403 237f and.w r3, r3, #1044480 ; 0xff000 + 8003442: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 8003446: 4313 orrs r3, r2 + 8003448: f8c1 3088 str.w r3, [r1, #136] ; 0x88 +} + 800344c: bf00 nop + 800344e: 370c adds r7, #12 + 8003450: 46bd mov sp, r7 + 8003452: bc80 pop {r7} + 8003454: 4770 bx lr + +08003456 : +{ + 8003456: b480 push {r7} + 8003458: b083 sub sp, #12 + 800345a: af00 add r7, sp, #0 + 800345c: 6078 str r0, [r7, #4] MODIFY_REG(RCC->CCIPR, (LPTIMxSource & 0xFFFF0000U), (LPTIMxSource << 16)); - 8003652: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8003656: f8d3 2088 ldr.w r2, [r3, #136] ; 0x88 - 800365a: 687b ldr r3, [r7, #4] - 800365c: 0c1b lsrs r3, r3, #16 - 800365e: 041b lsls r3, r3, #16 - 8003660: 43db mvns r3, r3 - 8003662: 401a ands r2, r3 - 8003664: 687b ldr r3, [r7, #4] - 8003666: 041b lsls r3, r3, #16 - 8003668: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 800366c: 4313 orrs r3, r2 - 800366e: f8c1 3088 str.w r3, [r1, #136] ; 0x88 -} - 8003672: bf00 nop - 8003674: 370c adds r7, #12 - 8003676: 46bd mov sp, r7 - 8003678: bc80 pop {r7} - 800367a: 4770 bx lr - -0800367c : -{ - 800367c: b480 push {r7} - 800367e: b083 sub sp, #12 - 8003680: af00 add r7, sp, #0 - 8003682: 6078 str r0, [r7, #4] + 800345e: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8003462: f8d3 2088 ldr.w r2, [r3, #136] ; 0x88 + 8003466: 687b ldr r3, [r7, #4] + 8003468: 0c1b lsrs r3, r3, #16 + 800346a: 041b lsls r3, r3, #16 + 800346c: 43db mvns r3, r3 + 800346e: 401a ands r2, r3 + 8003470: 687b ldr r3, [r7, #4] + 8003472: 041b lsls r3, r3, #16 + 8003474: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 8003478: 4313 orrs r3, r2 + 800347a: f8c1 3088 str.w r3, [r1, #136] ; 0x88 +} + 800347e: bf00 nop + 8003480: 370c adds r7, #12 + 8003482: 46bd mov sp, r7 + 8003484: bc80 pop {r7} + 8003486: 4770 bx lr + +08003488 : +{ + 8003488: b480 push {r7} + 800348a: b083 sub sp, #12 + 800348c: af00 add r7, sp, #0 + 800348e: 6078 str r0, [r7, #4] MODIFY_REG(RCC->CCIPR, RCC_CCIPR_RNGSEL, RNGxSource); - 8003684: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8003688: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 800368c: f023 4240 bic.w r2, r3, #3221225472 ; 0xc0000000 - 8003690: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 8003694: 687b ldr r3, [r7, #4] - 8003696: 4313 orrs r3, r2 - 8003698: f8c1 3088 str.w r3, [r1, #136] ; 0x88 -} - 800369c: bf00 nop - 800369e: 370c adds r7, #12 - 80036a0: 46bd mov sp, r7 - 80036a2: bc80 pop {r7} - 80036a4: 4770 bx lr - -080036a6 : -{ - 80036a6: b480 push {r7} - 80036a8: b083 sub sp, #12 - 80036aa: af00 add r7, sp, #0 - 80036ac: 6078 str r0, [r7, #4] + 8003490: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8003494: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 8003498: f023 4240 bic.w r2, r3, #3221225472 ; 0xc0000000 + 800349c: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 80034a0: 687b ldr r3, [r7, #4] + 80034a2: 4313 orrs r3, r2 + 80034a4: f8c1 3088 str.w r3, [r1, #136] ; 0x88 +} + 80034a8: bf00 nop + 80034aa: 370c adds r7, #12 + 80034ac: 46bd mov sp, r7 + 80034ae: bc80 pop {r7} + 80034b0: 4770 bx lr + +080034b2 : +{ + 80034b2: b480 push {r7} + 80034b4: b083 sub sp, #12 + 80034b6: af00 add r7, sp, #0 + 80034b8: 6078 str r0, [r7, #4] MODIFY_REG(RCC->CCIPR, RCC_CCIPR_ADCSEL, ADCxSource); - 80036ae: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80036b2: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 80036b6: f023 5240 bic.w r2, r3, #805306368 ; 0x30000000 - 80036ba: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 80036be: 687b ldr r3, [r7, #4] - 80036c0: 4313 orrs r3, r2 - 80036c2: f8c1 3088 str.w r3, [r1, #136] ; 0x88 -} - 80036c6: bf00 nop - 80036c8: 370c adds r7, #12 - 80036ca: 46bd mov sp, r7 - 80036cc: bc80 pop {r7} - 80036ce: 4770 bx lr - -080036d0 : -{ - 80036d0: b480 push {r7} - 80036d2: b083 sub sp, #12 - 80036d4: af00 add r7, sp, #0 - 80036d6: 6078 str r0, [r7, #4] + 80034ba: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80034be: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 80034c2: f023 5240 bic.w r2, r3, #805306368 ; 0x30000000 + 80034c6: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 80034ca: 687b ldr r3, [r7, #4] + 80034cc: 4313 orrs r3, r2 + 80034ce: f8c1 3088 str.w r3, [r1, #136] ; 0x88 +} + 80034d2: bf00 nop + 80034d4: 370c adds r7, #12 + 80034d6: 46bd mov sp, r7 + 80034d8: bc80 pop {r7} + 80034da: 4770 bx lr + +080034dc : +{ + 80034dc: b480 push {r7} + 80034de: b083 sub sp, #12 + 80034e0: af00 add r7, sp, #0 + 80034e2: 6078 str r0, [r7, #4] MODIFY_REG(RCC->BDCR, RCC_BDCR_RTCSEL, Source); - 80036d8: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80036dc: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 80036e0: f423 7240 bic.w r2, r3, #768 ; 0x300 - 80036e4: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 - 80036e8: 687b ldr r3, [r7, #4] - 80036ea: 4313 orrs r3, r2 - 80036ec: f8c1 3090 str.w r3, [r1, #144] ; 0x90 -} - 80036f0: bf00 nop - 80036f2: 370c adds r7, #12 - 80036f4: 46bd mov sp, r7 - 80036f6: bc80 pop {r7} - 80036f8: 4770 bx lr - -080036fa : -{ - 80036fa: b480 push {r7} - 80036fc: af00 add r7, sp, #0 + 80034e4: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80034e8: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 80034ec: f423 7240 bic.w r2, r3, #768 ; 0x300 + 80034f0: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 80034f4: 687b ldr r3, [r7, #4] + 80034f6: 4313 orrs r3, r2 + 80034f8: f8c1 3090 str.w r3, [r1, #144] ; 0x90 +} + 80034fc: bf00 nop + 80034fe: 370c adds r7, #12 + 8003500: 46bd mov sp, r7 + 8003502: bc80 pop {r7} + 8003504: 4770 bx lr + +08003506 : +{ + 8003506: b480 push {r7} + 8003508: af00 add r7, sp, #0 return (uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL)); - 80036fe: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8003702: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8003706: f403 7340 and.w r3, r3, #768 ; 0x300 + 800350a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800350e: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8003512: f403 7340 and.w r3, r3, #768 ; 0x300 } - 800370a: 4618 mov r0, r3 - 800370c: 46bd mov sp, r7 - 800370e: bc80 pop {r7} - 8003710: 4770 bx lr + 8003516: 4618 mov r0, r3 + 8003518: 46bd mov sp, r7 + 800351a: bc80 pop {r7} + 800351c: 4770 bx lr -08003712 : +0800351e : { - 8003712: b480 push {r7} - 8003714: af00 add r7, sp, #0 + 800351e: b480 push {r7} + 8003520: af00 add r7, sp, #0 SET_BIT(RCC->BDCR, RCC_BDCR_BDRST); - 8003716: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800371a: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 800371e: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 8003722: f443 3380 orr.w r3, r3, #65536 ; 0x10000 - 8003726: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + 8003522: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8003526: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 800352a: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800352e: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 8003532: f8c2 3090 str.w r3, [r2, #144] ; 0x90 } - 800372a: bf00 nop - 800372c: 46bd mov sp, r7 - 800372e: bc80 pop {r7} - 8003730: 4770 bx lr + 8003536: bf00 nop + 8003538: 46bd mov sp, r7 + 800353a: bc80 pop {r7} + 800353c: 4770 bx lr -08003732 : +0800353e : { - 8003732: b480 push {r7} - 8003734: af00 add r7, sp, #0 + 800353e: b480 push {r7} + 8003540: af00 add r7, sp, #0 CLEAR_BIT(RCC->BDCR, RCC_BDCR_BDRST); - 8003736: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800373a: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 800373e: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 8003742: f423 3380 bic.w r3, r3, #65536 ; 0x10000 - 8003746: f8c2 3090 str.w r3, [r2, #144] ; 0x90 -} - 800374a: bf00 nop - 800374c: 46bd mov sp, r7 - 800374e: bc80 pop {r7} - 8003750: 4770 bx lr + 8003542: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8003546: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 800354a: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800354e: f423 3380 bic.w r3, r3, #65536 ; 0x10000 + 8003552: f8c2 3090 str.w r3, [r2, #144] ; 0x90 +} + 8003556: bf00 nop + 8003558: 46bd mov sp, r7 + 800355a: bc80 pop {r7} + 800355c: 4770 bx lr ... -08003754 : +08003560 : * 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) { - 8003754: b580 push {r7, lr} - 8003756: b086 sub sp, #24 - 8003758: af00 add r7, sp, #0 - 800375a: 6078 str r0, [r7, #4] + 8003560: b580 push {r7, lr} + 8003562: b086 sub sp, #24 + 8003564: af00 add r7, sp, #0 + 8003566: 6078 str r0, [r7, #4] uint32_t tmpregister = 0; - 800375c: 2300 movs r3, #0 - 800375e: 617b str r3, [r7, #20] + 8003568: 2300 movs r3, #0 + 800356a: 617b str r3, [r7, #20] uint32_t tickstart; HAL_StatusTypeDef ret = HAL_OK; /* Intermediate status */ - 8003760: 2300 movs r3, #0 - 8003762: 74fb strb r3, [r7, #19] + 800356c: 2300 movs r3, #0 + 800356e: 74fb strb r3, [r7, #19] HAL_StatusTypeDef status = HAL_OK; /* Final status */ - 8003764: 2300 movs r3, #0 - 8003766: 74bb strb r3, [r7, #18] + 8003570: 2300 movs r3, #0 + 8003572: 74bb strb r3, [r7, #18] /* Check the parameters */ assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection)); /*-------------------------- RTC clock source configuration ----------------------*/ if ((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC) - 8003768: 687b ldr r3, [r7, #4] - 800376a: 681b ldr r3, [r3, #0] - 800376c: f403 3380 and.w r3, r3, #65536 ; 0x10000 - 8003770: 2b00 cmp r3, #0 - 8003772: d058 beq.n 8003826 + 8003574: 687b ldr r3, [r7, #4] + 8003576: 681b ldr r3, [r3, #0] + 8003578: f403 3380 and.w r3, r3, #65536 ; 0x10000 + 800357c: 2b00 cmp r3, #0 + 800357e: d058 beq.n 8003632 /* Check for RTC Parameters used to output RTCCLK */ assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection)); /* Enable write access to Backup domain */ HAL_PWR_EnableBkUpAccess(); - 8003774: f7fe fe20 bl 80023b8 + 8003580: f7fe fe20 bl 80021c4 /* Wait for Backup domain Write protection disable */ tickstart = HAL_GetTick(); - 8003778: f7fe f890 bl 800189c - 800377c: 60f8 str r0, [r7, #12] + 8003584: f7fe f890 bl 80016a8 + 8003588: 60f8 str r0, [r7, #12] while (!(READ_BIT(PWR->CR1, PWR_CR1_DBP) == (PWR_CR1_DBP))) - 800377e: e009 b.n 8003794 + 800358a: e009 b.n 80035a0 { if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 8003780: f7fe f88c bl 800189c - 8003784: 4602 mov r2, r0 - 8003786: 68fb ldr r3, [r7, #12] - 8003788: 1ad3 subs r3, r2, r3 - 800378a: 2b02 cmp r3, #2 - 800378c: d902 bls.n 8003794 + 800358c: f7fe f88c bl 80016a8 + 8003590: 4602 mov r2, r0 + 8003592: 68fb ldr r3, [r7, #12] + 8003594: 1ad3 subs r3, r2, r3 + 8003596: 2b02 cmp r3, #2 + 8003598: d902 bls.n 80035a0 { ret = HAL_TIMEOUT; - 800378e: 2303 movs r3, #3 - 8003790: 74fb strb r3, [r7, #19] + 800359a: 2303 movs r3, #3 + 800359c: 74fb strb r3, [r7, #19] break; - 8003792: e006 b.n 80037a2 + 800359e: e006 b.n 80035ae while (!(READ_BIT(PWR->CR1, PWR_CR1_DBP) == (PWR_CR1_DBP))) - 8003794: 4b7b ldr r3, [pc, #492] ; (8003984 ) - 8003796: 681b ldr r3, [r3, #0] - 8003798: f403 7380 and.w r3, r3, #256 ; 0x100 - 800379c: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 80037a0: d1ee bne.n 8003780 + 80035a0: 4b7b ldr r3, [pc, #492] ; (8003790 ) + 80035a2: 681b ldr r3, [r3, #0] + 80035a4: f403 7380 and.w r3, r3, #256 ; 0x100 + 80035a8: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 80035ac: d1ee bne.n 800358c } } if (ret == HAL_OK) - 80037a2: 7cfb ldrb r3, [r7, #19] - 80037a4: 2b00 cmp r3, #0 - 80037a6: d13c bne.n 8003822 + 80035ae: 7cfb ldrb r3, [r7, #19] + 80035b0: 2b00 cmp r3, #0 + 80035b2: d13c bne.n 800362e { /* Reset the Backup domain only if the RTC Clock source selection is modified */ if (LL_RCC_GetRTCClockSource() != PeriphClkInit->RTCClockSelection) - 80037a8: f7ff ffa7 bl 80036fa - 80037ac: 4602 mov r2, r0 - 80037ae: 687b ldr r3, [r7, #4] - 80037b0: 6b5b ldr r3, [r3, #52] ; 0x34 - 80037b2: 429a cmp r2, r3 - 80037b4: d00f beq.n 80037d6 + 80035b4: f7ff ffa7 bl 8003506 + 80035b8: 4602 mov r2, r0 + 80035ba: 687b ldr r3, [r7, #4] + 80035bc: 6b5b ldr r3, [r3, #52] ; 0x34 + 80035be: 429a cmp r2, r3 + 80035c0: d00f beq.n 80035e2 { /* Store the content of BDCR register before the reset of Backup Domain */ tmpregister = READ_BIT(RCC->BDCR, ~(RCC_BDCR_RTCSEL)); - 80037b6: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 80037ba: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 80037be: f423 7340 bic.w r3, r3, #768 ; 0x300 - 80037c2: 617b str r3, [r7, #20] + 80035c2: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80035c6: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 80035ca: f423 7340 bic.w r3, r3, #768 ; 0x300 + 80035ce: 617b str r3, [r7, #20] /* RTC Clock selection can be changed only if the Backup Domain is reset */ __HAL_RCC_BACKUPRESET_FORCE(); - 80037c4: f7ff ffa5 bl 8003712 + 80035d0: f7ff ffa5 bl 800351e __HAL_RCC_BACKUPRESET_RELEASE(); - 80037c8: f7ff ffb3 bl 8003732 + 80035d4: f7ff ffb3 bl 800353e /* Restore the Content of BDCR register */ RCC->BDCR = tmpregister; - 80037cc: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 80037d0: 697b ldr r3, [r7, #20] - 80037d2: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + 80035d8: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 80035dc: 697b ldr r3, [r7, #20] + 80035de: f8c2 3090 str.w r3, [r2, #144] ; 0x90 } /* Wait for LSE reactivation if LSE was enable prior to Backup Domain reset */ if (HAL_IS_BIT_SET(tmpregister, RCC_BDCR_LSERDY)) - 80037d6: 697b ldr r3, [r7, #20] - 80037d8: f003 0302 and.w r3, r3, #2 - 80037dc: 2b00 cmp r3, #0 - 80037de: d014 beq.n 800380a + 80035e2: 697b ldr r3, [r7, #20] + 80035e4: f003 0302 and.w r3, r3, #2 + 80035e8: 2b00 cmp r3, #0 + 80035ea: d014 beq.n 8003616 { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80037e0: f7fe f85c bl 800189c - 80037e4: 60f8 str r0, [r7, #12] + 80035ec: f7fe f85c bl 80016a8 + 80035f0: 60f8 str r0, [r7, #12] /* Wait till LSE is ready */ while (LL_RCC_LSE_IsReady() != 1U) - 80037e6: e00b b.n 8003800 + 80035f2: e00b b.n 800360c { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 80037e8: f7fe f858 bl 800189c - 80037ec: 4602 mov r2, r0 - 80037ee: 68fb ldr r3, [r7, #12] - 80037f0: 1ad3 subs r3, r2, r3 - 80037f2: f241 3288 movw r2, #5000 ; 0x1388 - 80037f6: 4293 cmp r3, r2 - 80037f8: d902 bls.n 8003800 + 80035f4: f7fe f858 bl 80016a8 + 80035f8: 4602 mov r2, r0 + 80035fa: 68fb ldr r3, [r7, #12] + 80035fc: 1ad3 subs r3, r2, r3 + 80035fe: f241 3288 movw r2, #5000 ; 0x1388 + 8003602: 4293 cmp r3, r2 + 8003604: d902 bls.n 800360c { ret = HAL_TIMEOUT; - 80037fa: 2303 movs r3, #3 - 80037fc: 74fb strb r3, [r7, #19] + 8003606: 2303 movs r3, #3 + 8003608: 74fb strb r3, [r7, #19] break; - 80037fe: e004 b.n 800380a + 800360a: e004 b.n 8003616 while (LL_RCC_LSE_IsReady() != 1U) - 8003800: f7ff feb4 bl 800356c - 8003804: 4603 mov r3, r0 - 8003806: 2b01 cmp r3, #1 - 8003808: d1ee bne.n 80037e8 + 800360c: f7ff feb4 bl 8003378 + 8003610: 4603 mov r3, r0 + 8003612: 2b01 cmp r3, #1 + 8003614: d1ee bne.n 80035f4 } } } if (ret == HAL_OK) - 800380a: 7cfb ldrb r3, [r7, #19] - 800380c: 2b00 cmp r3, #0 - 800380e: d105 bne.n 800381c + 8003616: 7cfb ldrb r3, [r7, #19] + 8003618: 2b00 cmp r3, #0 + 800361a: d105 bne.n 8003628 { /* Apply new RTC clock source selection */ __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); - 8003810: 687b ldr r3, [r7, #4] - 8003812: 6b5b ldr r3, [r3, #52] ; 0x34 - 8003814: 4618 mov r0, r3 - 8003816: f7ff ff5b bl 80036d0 - 800381a: e004 b.n 8003826 + 800361c: 687b ldr r3, [r7, #4] + 800361e: 6b5b ldr r3, [r3, #52] ; 0x34 + 8003620: 4618 mov r0, r3 + 8003622: f7ff ff5b bl 80034dc + 8003626: e004 b.n 8003632 } else { /* set overall return value */ status = ret; - 800381c: 7cfb ldrb r3, [r7, #19] - 800381e: 74bb strb r3, [r7, #18] - 8003820: e001 b.n 8003826 + 8003628: 7cfb ldrb r3, [r7, #19] + 800362a: 74bb strb r3, [r7, #18] + 800362c: e001 b.n 8003632 } } else { /* set overall return value */ status = ret; - 8003822: 7cfb ldrb r3, [r7, #19] - 8003824: 74bb strb r3, [r7, #18] + 800362e: 7cfb ldrb r3, [r7, #19] + 8003630: 74bb strb r3, [r7, #18] } } /*-------------------- USART1 clock source configuration -------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) - 8003826: 687b ldr r3, [r7, #4] - 8003828: 681b ldr r3, [r3, #0] - 800382a: f003 0301 and.w r3, r3, #1 - 800382e: 2b00 cmp r3, #0 - 8003830: d004 beq.n 800383c + 8003632: 687b ldr r3, [r7, #4] + 8003634: 681b ldr r3, [r3, #0] + 8003636: f003 0301 and.w r3, r3, #1 + 800363a: 2b00 cmp r3, #0 + 800363c: d004 beq.n 8003648 { /* Check the parameters */ assert_param(IS_RCC_USART1CLKSOURCE(PeriphClkInit->Usart1ClockSelection)); /* Configure the USART1 clock source */ __HAL_RCC_USART1_CONFIG(PeriphClkInit->Usart1ClockSelection); - 8003832: 687b ldr r3, [r7, #4] - 8003834: 685b ldr r3, [r3, #4] - 8003836: 4618 mov r0, r3 - 8003838: f7ff fea9 bl 800358e + 800363e: 687b ldr r3, [r7, #4] + 8003640: 685b ldr r3, [r3, #4] + 8003642: 4618 mov r0, r3 + 8003644: f7ff fea9 bl 800339a } /*-------------------- USART2 clock source configuration -------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) - 800383c: 687b ldr r3, [r7, #4] - 800383e: 681b ldr r3, [r3, #0] - 8003840: f003 0302 and.w r3, r3, #2 - 8003844: 2b00 cmp r3, #0 - 8003846: d004 beq.n 8003852 + 8003648: 687b ldr r3, [r7, #4] + 800364a: 681b ldr r3, [r3, #0] + 800364c: f003 0302 and.w r3, r3, #2 + 8003650: 2b00 cmp r3, #0 + 8003652: d004 beq.n 800365e { /* Check the parameters */ assert_param(IS_RCC_USART2CLKSOURCE(PeriphClkInit->Usart2ClockSelection)); /* Configure the USART2 clock source */ __HAL_RCC_USART2_CONFIG(PeriphClkInit->Usart2ClockSelection); - 8003848: 687b ldr r3, [r7, #4] - 800384a: 689b ldr r3, [r3, #8] - 800384c: 4618 mov r0, r3 - 800384e: f7ff fe9e bl 800358e + 8003654: 687b ldr r3, [r7, #4] + 8003656: 689b ldr r3, [r3, #8] + 8003658: 4618 mov r0, r3 + 800365a: f7ff fe9e bl 800339a } /*-------------------- LPUART1 clock source configuration ------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPUART1) == RCC_PERIPHCLK_LPUART1) - 8003852: 687b ldr r3, [r7, #4] - 8003854: 681b ldr r3, [r3, #0] - 8003856: f003 0320 and.w r3, r3, #32 - 800385a: 2b00 cmp r3, #0 - 800385c: d004 beq.n 8003868 + 800365e: 687b ldr r3, [r7, #4] + 8003660: 681b ldr r3, [r3, #0] + 8003662: f003 0320 and.w r3, r3, #32 + 8003666: 2b00 cmp r3, #0 + 8003668: d004 beq.n 8003674 { /* Check the parameters */ assert_param(IS_RCC_LPUART1CLKSOURCE(PeriphClkInit->Lpuart1ClockSelection)); /* Configure the LPUAR1 clock source */ __HAL_RCC_LPUART1_CONFIG(PeriphClkInit->Lpuart1ClockSelection); - 800385e: 687b ldr r3, [r7, #4] - 8003860: 691b ldr r3, [r3, #16] - 8003862: 4618 mov r0, r3 - 8003864: f7ff fec0 bl 80035e8 + 800366a: 687b ldr r3, [r7, #4] + 800366c: 691b ldr r3, [r3, #16] + 800366e: 4618 mov r0, r3 + 8003670: f7ff fec0 bl 80033f4 } /*-------------------- LPTIM1 clock source configuration -------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM1) == (RCC_PERIPHCLK_LPTIM1)) - 8003868: 687b ldr r3, [r7, #4] - 800386a: 681b ldr r3, [r3, #0] - 800386c: f403 7300 and.w r3, r3, #512 ; 0x200 - 8003870: 2b00 cmp r3, #0 - 8003872: d004 beq.n 800387e + 8003674: 687b ldr r3, [r7, #4] + 8003676: 681b ldr r3, [r3, #0] + 8003678: f403 7300 and.w r3, r3, #512 ; 0x200 + 800367c: 2b00 cmp r3, #0 + 800367e: d004 beq.n 800368a { /* Check the parameters */ assert_param(IS_RCC_LPTIM1CLKSOURCE(PeriphClkInit->Lptim1ClockSelection)); /* Configure the LPTIM1 clock source */ __HAL_RCC_LPTIM1_CONFIG(PeriphClkInit->Lptim1ClockSelection); - 8003874: 687b ldr r3, [r7, #4] - 8003876: 6a1b ldr r3, [r3, #32] - 8003878: 4618 mov r0, r3 - 800387a: f7ff fee6 bl 800364a + 8003680: 687b ldr r3, [r7, #4] + 8003682: 6a1b ldr r3, [r3, #32] + 8003684: 4618 mov r0, r3 + 8003686: f7ff fee6 bl 8003456 } /*-------------------- LPTIM2 clock source configuration -------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM2) == (RCC_PERIPHCLK_LPTIM2)) - 800387e: 687b ldr r3, [r7, #4] - 8003880: 681b ldr r3, [r3, #0] - 8003882: f403 6380 and.w r3, r3, #1024 ; 0x400 - 8003886: 2b00 cmp r3, #0 - 8003888: d004 beq.n 8003894 + 800368a: 687b ldr r3, [r7, #4] + 800368c: 681b ldr r3, [r3, #0] + 800368e: f403 6380 and.w r3, r3, #1024 ; 0x400 + 8003692: 2b00 cmp r3, #0 + 8003694: d004 beq.n 80036a0 { /* Check the parameters */ assert_param(IS_RCC_LPTIM2CLKSOURCE(PeriphClkInit->Lptim2ClockSelection)); /* Configure the LPTIM2 clock source */ __HAL_RCC_LPTIM2_CONFIG(PeriphClkInit->Lptim2ClockSelection); - 800388a: 687b ldr r3, [r7, #4] - 800388c: 6a5b ldr r3, [r3, #36] ; 0x24 - 800388e: 4618 mov r0, r3 - 8003890: f7ff fedb bl 800364a + 8003696: 687b ldr r3, [r7, #4] + 8003698: 6a5b ldr r3, [r3, #36] ; 0x24 + 800369a: 4618 mov r0, r3 + 800369c: f7ff fedb bl 8003456 } /*-------------------- LPTIM3 clock source configuration -------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM3) == (RCC_PERIPHCLK_LPTIM3)) - 8003894: 687b ldr r3, [r7, #4] - 8003896: 681b ldr r3, [r3, #0] - 8003898: f403 6300 and.w r3, r3, #2048 ; 0x800 - 800389c: 2b00 cmp r3, #0 - 800389e: d004 beq.n 80038aa + 80036a0: 687b ldr r3, [r7, #4] + 80036a2: 681b ldr r3, [r3, #0] + 80036a4: f403 6300 and.w r3, r3, #2048 ; 0x800 + 80036a8: 2b00 cmp r3, #0 + 80036aa: d004 beq.n 80036b6 { /* Check the parameters */ assert_param(IS_RCC_LPTIM3CLKSOURCE(PeriphClkInit->Lptim3ClockSelection)); /* Configure the LPTIM3 clock source */ __HAL_RCC_LPTIM3_CONFIG(PeriphClkInit->Lptim3ClockSelection); - 80038a0: 687b ldr r3, [r7, #4] - 80038a2: 6a9b ldr r3, [r3, #40] ; 0x28 - 80038a4: 4618 mov r0, r3 - 80038a6: f7ff fed0 bl 800364a + 80036ac: 687b ldr r3, [r7, #4] + 80036ae: 6a9b ldr r3, [r3, #40] ; 0x28 + 80036b0: 4618 mov r0, r3 + 80036b2: f7ff fed0 bl 8003456 } /*-------------------- I2C1 clock source configuration ---------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) - 80038aa: 687b ldr r3, [r7, #4] - 80038ac: 681b ldr r3, [r3, #0] - 80038ae: f003 0340 and.w r3, r3, #64 ; 0x40 - 80038b2: 2b00 cmp r3, #0 - 80038b4: d004 beq.n 80038c0 + 80036b6: 687b ldr r3, [r7, #4] + 80036b8: 681b ldr r3, [r3, #0] + 80036ba: f003 0340 and.w r3, r3, #64 ; 0x40 + 80036be: 2b00 cmp r3, #0 + 80036c0: d004 beq.n 80036cc { /* Check the parameters */ assert_param(IS_RCC_I2C1CLKSOURCE(PeriphClkInit->I2c1ClockSelection)); /* Configure the I2C1 clock source */ __HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection); - 80038b6: 687b ldr r3, [r7, #4] - 80038b8: 695b ldr r3, [r3, #20] - 80038ba: 4618 mov r0, r3 - 80038bc: f7ff fea9 bl 8003612 + 80036c2: 687b ldr r3, [r7, #4] + 80036c4: 695b ldr r3, [r3, #20] + 80036c6: 4618 mov r0, r3 + 80036c8: f7ff fea9 bl 800341e } /*-------------------- I2C2 clock source configuration ---------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2) - 80038c0: 687b ldr r3, [r7, #4] - 80038c2: 681b ldr r3, [r3, #0] - 80038c4: f003 0380 and.w r3, r3, #128 ; 0x80 - 80038c8: 2b00 cmp r3, #0 - 80038ca: d004 beq.n 80038d6 + 80036cc: 687b ldr r3, [r7, #4] + 80036ce: 681b ldr r3, [r3, #0] + 80036d0: f003 0380 and.w r3, r3, #128 ; 0x80 + 80036d4: 2b00 cmp r3, #0 + 80036d6: d004 beq.n 80036e2 { /* Check the parameters */ assert_param(IS_RCC_I2C2CLKSOURCE(PeriphClkInit->I2c2ClockSelection)); /* Configure the I2C2 clock source */ __HAL_RCC_I2C2_CONFIG(PeriphClkInit->I2c2ClockSelection); - 80038cc: 687b ldr r3, [r7, #4] - 80038ce: 699b ldr r3, [r3, #24] - 80038d0: 4618 mov r0, r3 - 80038d2: f7ff fe9e bl 8003612 + 80036d8: 687b ldr r3, [r7, #4] + 80036da: 699b ldr r3, [r3, #24] + 80036dc: 4618 mov r0, r3 + 80036de: f7ff fe9e bl 800341e } /*-------------------- I2C3 clock source configuration ---------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3) - 80038d6: 687b ldr r3, [r7, #4] - 80038d8: 681b ldr r3, [r3, #0] - 80038da: f403 7380 and.w r3, r3, #256 ; 0x100 - 80038de: 2b00 cmp r3, #0 - 80038e0: d004 beq.n 80038ec + 80036e2: 687b ldr r3, [r7, #4] + 80036e4: 681b ldr r3, [r3, #0] + 80036e6: f403 7380 and.w r3, r3, #256 ; 0x100 + 80036ea: 2b00 cmp r3, #0 + 80036ec: d004 beq.n 80036f8 { /* Check the parameters */ assert_param(IS_RCC_I2C3CLKSOURCE(PeriphClkInit->I2c3ClockSelection)); /* Configure the I2C3 clock source */ __HAL_RCC_I2C3_CONFIG(PeriphClkInit->I2c3ClockSelection); - 80038e2: 687b ldr r3, [r7, #4] - 80038e4: 69db ldr r3, [r3, #28] - 80038e6: 4618 mov r0, r3 - 80038e8: f7ff fe93 bl 8003612 + 80036ee: 687b ldr r3, [r7, #4] + 80036f0: 69db ldr r3, [r3, #28] + 80036f2: 4618 mov r0, r3 + 80036f4: f7ff fe93 bl 800341e } /*-------------------- I2S2 clock source configuration ---------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S2) == (RCC_PERIPHCLK_I2S2)) - 80038ec: 687b ldr r3, [r7, #4] - 80038ee: 681b ldr r3, [r3, #0] - 80038f0: f003 0310 and.w r3, r3, #16 - 80038f4: 2b00 cmp r3, #0 - 80038f6: d011 beq.n 800391c + 80036f8: 687b ldr r3, [r7, #4] + 80036fa: 681b ldr r3, [r3, #0] + 80036fc: f003 0310 and.w r3, r3, #16 + 8003700: 2b00 cmp r3, #0 + 8003702: d011 beq.n 8003728 { /* Check the parameters */ assert_param(IS_RCC_I2S2CLKSOURCE(PeriphClkInit->I2s2ClockSelection)); /* Configure the I2S2 clock source */ __HAL_RCC_I2S2_CONFIG(PeriphClkInit->I2s2ClockSelection); - 80038f8: 687b ldr r3, [r7, #4] - 80038fa: 68db ldr r3, [r3, #12] - 80038fc: 4618 mov r0, r3 - 80038fe: f7ff fe5e bl 80035be + 8003704: 687b ldr r3, [r7, #4] + 8003706: 68db ldr r3, [r3, #12] + 8003708: 4618 mov r0, r3 + 800370a: f7ff fe5e bl 80033ca if (PeriphClkInit->I2s2ClockSelection == RCC_I2S2CLKSOURCE_PLL) - 8003902: 687b ldr r3, [r7, #4] - 8003904: 68db ldr r3, [r3, #12] - 8003906: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 800390a: d107 bne.n 800391c + 800370e: 687b ldr r3, [r7, #4] + 8003710: 68db ldr r3, [r3, #12] + 8003712: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 8003716: d107 bne.n 8003728 { /* Enable RCC_PLL_I2S2CLK output */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_I2S2CLK); - 800390c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8003910: 68db ldr r3, [r3, #12] - 8003912: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 8003916: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 - 800391a: 60d3 str r3, [r2, #12] + 8003718: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800371c: 68db ldr r3, [r3, #12] + 800371e: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8003722: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 + 8003726: 60d3 str r3, [r2, #12] } } /*-------------------- RNG clock source configuration ----------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RNG) == (RCC_PERIPHCLK_RNG)) - 800391c: 687b ldr r3, [r7, #4] - 800391e: 681b ldr r3, [r3, #0] - 8003920: f403 4300 and.w r3, r3, #32768 ; 0x8000 - 8003924: 2b00 cmp r3, #0 - 8003926: d010 beq.n 800394a + 8003728: 687b ldr r3, [r7, #4] + 800372a: 681b ldr r3, [r3, #0] + 800372c: f403 4300 and.w r3, r3, #32768 ; 0x8000 + 8003730: 2b00 cmp r3, #0 + 8003732: d010 beq.n 8003756 { assert_param(IS_RCC_RNGCLKSOURCE(PeriphClkInit->RngClockSelection)); __HAL_RCC_RNG_CONFIG(PeriphClkInit->RngClockSelection); - 8003928: 687b ldr r3, [r7, #4] - 800392a: 6b1b ldr r3, [r3, #48] ; 0x30 - 800392c: 4618 mov r0, r3 - 800392e: f7ff fea5 bl 800367c + 8003734: 687b ldr r3, [r7, #4] + 8003736: 6b1b ldr r3, [r3, #48] ; 0x30 + 8003738: 4618 mov r0, r3 + 800373a: f7ff fea5 bl 8003488 if (PeriphClkInit->RngClockSelection == RCC_RNGCLKSOURCE_PLL) - 8003932: 687b ldr r3, [r7, #4] - 8003934: 6b1b ldr r3, [r3, #48] ; 0x30 - 8003936: 2b00 cmp r3, #0 - 8003938: d107 bne.n 800394a + 800373e: 687b ldr r3, [r7, #4] + 8003740: 6b1b ldr r3, [r3, #48] ; 0x30 + 8003742: 2b00 cmp r3, #0 + 8003744: d107 bne.n 8003756 { /* Enable RCC_PLL_RNGCLK output */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_RNGCLK); - 800393a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800393e: 68db ldr r3, [r3, #12] - 8003940: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 8003944: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 - 8003948: 60d3 str r3, [r2, #12] + 8003746: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800374a: 68db ldr r3, [r3, #12] + 800374c: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8003750: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 + 8003754: 60d3 str r3, [r2, #12] } } /*-------------------- ADC clock source configuration ----------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) - 800394a: 687b ldr r3, [r7, #4] - 800394c: 681b ldr r3, [r3, #0] - 800394e: f403 4380 and.w r3, r3, #16384 ; 0x4000 - 8003952: 2b00 cmp r3, #0 - 8003954: d011 beq.n 800397a + 8003756: 687b ldr r3, [r7, #4] + 8003758: 681b ldr r3, [r3, #0] + 800375a: f403 4380 and.w r3, r3, #16384 ; 0x4000 + 800375e: 2b00 cmp r3, #0 + 8003760: d011 beq.n 8003786 { /* Check the parameters */ assert_param(IS_RCC_ADCCLKSOURCE(PeriphClkInit->AdcClockSelection)); /* Configure the ADC interface clock source */ __HAL_RCC_ADC_CONFIG(PeriphClkInit->AdcClockSelection); - 8003956: 687b ldr r3, [r7, #4] - 8003958: 6adb ldr r3, [r3, #44] ; 0x2c - 800395a: 4618 mov r0, r3 - 800395c: f7ff fea3 bl 80036a6 + 8003762: 687b ldr r3, [r7, #4] + 8003764: 6adb ldr r3, [r3, #44] ; 0x2c + 8003766: 4618 mov r0, r3 + 8003768: f7ff fea3 bl 80034b2 if (PeriphClkInit->AdcClockSelection == RCC_ADCCLKSOURCE_PLL) - 8003960: 687b ldr r3, [r7, #4] - 8003962: 6adb ldr r3, [r3, #44] ; 0x2c - 8003964: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 8003968: d107 bne.n 800397a + 800376c: 687b ldr r3, [r7, #4] + 800376e: 6adb ldr r3, [r3, #44] ; 0x2c + 8003770: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 8003774: d107 bne.n 8003786 { /* Enable RCC_PLL_RNGCLK output */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_ADCCLK); - 800396a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 800396e: 68db ldr r3, [r3, #12] - 8003970: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 8003974: f443 3380 orr.w r3, r3, #65536 ; 0x10000 - 8003978: 60d3 str r3, [r2, #12] + 8003776: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800377a: 68db ldr r3, [r3, #12] + 800377c: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8003780: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 8003784: 60d3 str r3, [r2, #12] } } return status; - 800397a: 7cbb ldrb r3, [r7, #18] + 8003786: 7cbb ldrb r3, [r7, #18] } - 800397c: 4618 mov r0, r3 - 800397e: 3718 adds r7, #24 - 8003980: 46bd mov sp, r7 - 8003982: bd80 pop {r7, pc} - 8003984: 58000400 .word 0x58000400 + 8003788: 4618 mov r0, r3 + 800378a: 3718 adds r7, #24 + 800378c: 46bd mov sp, r7 + 800378e: bd80 pop {r7, pc} + 8003790: 58000400 .word 0x58000400 -08003988 : +08003794 : * @arg @ref LL_PWR_RADIO_BUSY_TRIGGER_NONE * @arg @ref LL_PWR_RADIO_BUSY_TRIGGER_WU_IT * @retval None */ __STATIC_INLINE void LL_PWR_SetRadioBusyTrigger(uint32_t RadioBusyTrigger) { - 8003988: b480 push {r7} - 800398a: b083 sub sp, #12 - 800398c: af00 add r7, sp, #0 - 800398e: 6078 str r0, [r7, #4] + 8003794: b480 push {r7} + 8003796: b083 sub sp, #12 + 8003798: af00 add r7, sp, #0 + 800379a: 6078 str r0, [r7, #4] MODIFY_REG(PWR->CR3, PWR_CR3_EWRFBUSY, RadioBusyTrigger); - 8003990: 4b06 ldr r3, [pc, #24] ; (80039ac ) - 8003992: 689b ldr r3, [r3, #8] - 8003994: f423 6200 bic.w r2, r3, #2048 ; 0x800 - 8003998: 4904 ldr r1, [pc, #16] ; (80039ac ) - 800399a: 687b ldr r3, [r7, #4] - 800399c: 4313 orrs r3, r2 - 800399e: 608b str r3, [r1, #8] -} - 80039a0: bf00 nop - 80039a2: 370c adds r7, #12 - 80039a4: 46bd mov sp, r7 - 80039a6: bc80 pop {r7} - 80039a8: 4770 bx lr - 80039aa: bf00 nop - 80039ac: 58000400 .word 0x58000400 - -080039b0 : + 800379c: 4b06 ldr r3, [pc, #24] ; (80037b8 ) + 800379e: 689b ldr r3, [r3, #8] + 80037a0: f423 6200 bic.w r2, r3, #2048 ; 0x800 + 80037a4: 4904 ldr r1, [pc, #16] ; (80037b8 ) + 80037a6: 687b ldr r3, [r7, #4] + 80037a8: 4313 orrs r3, r2 + 80037aa: 608b str r3, [r1, #8] +} + 80037ac: bf00 nop + 80037ae: 370c adds r7, #12 + 80037b0: 46bd mov sp, r7 + 80037b2: bc80 pop {r7} + 80037b4: 4770 bx lr + 80037b6: bf00 nop + 80037b8: 58000400 .word 0x58000400 + +080037bc : * @brief Set sub-GHz radio SPI NSS at logical level high. * @rmtoll SUBGHZSPICR NSS LL_PWR_UnselectSUBGHZSPI_NSS * @retval None */ __STATIC_INLINE void LL_PWR_UnselectSUBGHZSPI_NSS(void) { - 80039b0: b480 push {r7} - 80039b2: af00 add r7, sp, #0 + 80037bc: b480 push {r7} + 80037be: af00 add r7, sp, #0 SET_BIT(PWR->SUBGHZSPICR, PWR_SUBGHZSPICR_NSS); - 80039b4: 4b05 ldr r3, [pc, #20] ; (80039cc ) - 80039b6: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 80039ba: 4a04 ldr r2, [pc, #16] ; (80039cc ) - 80039bc: f443 4300 orr.w r3, r3, #32768 ; 0x8000 - 80039c0: f8c2 3090 str.w r3, [r2, #144] ; 0x90 -} - 80039c4: bf00 nop - 80039c6: 46bd mov sp, r7 - 80039c8: bc80 pop {r7} - 80039ca: 4770 bx lr - 80039cc: 58000400 .word 0x58000400 - -080039d0 : + 80037c0: 4b05 ldr r3, [pc, #20] ; (80037d8 ) + 80037c2: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 80037c6: 4a04 ldr r2, [pc, #16] ; (80037d8 ) + 80037c8: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 80037cc: f8c2 3090 str.w r3, [r2, #144] ; 0x90 +} + 80037d0: bf00 nop + 80037d2: 46bd mov sp, r7 + 80037d4: bc80 pop {r7} + 80037d6: 4770 bx lr + 80037d8: 58000400 .word 0x58000400 + +080037dc : * @brief Set sub-GHz radio SPI NSS at logical level low. * @rmtoll SUBGHZSPICR NSS LL_PWR_SelectSUBGHZSPI_NSS * @retval None */ __STATIC_INLINE void LL_PWR_SelectSUBGHZSPI_NSS(void) { - 80039d0: b480 push {r7} - 80039d2: af00 add r7, sp, #0 + 80037dc: b480 push {r7} + 80037de: af00 add r7, sp, #0 CLEAR_BIT(PWR->SUBGHZSPICR, PWR_SUBGHZSPICR_NSS); - 80039d4: 4b05 ldr r3, [pc, #20] ; (80039ec ) - 80039d6: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 80039da: 4a04 ldr r2, [pc, #16] ; (80039ec ) - 80039dc: f423 4300 bic.w r3, r3, #32768 ; 0x8000 - 80039e0: f8c2 3090 str.w r3, [r2, #144] ; 0x90 -} - 80039e4: bf00 nop - 80039e6: 46bd mov sp, r7 - 80039e8: bc80 pop {r7} - 80039ea: 4770 bx lr - 80039ec: 58000400 .word 0x58000400 - -080039f0 : + 80037e0: 4b05 ldr r3, [pc, #20] ; (80037f8 ) + 80037e2: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 80037e6: 4a04 ldr r2, [pc, #16] ; (80037f8 ) + 80037e8: f423 4300 bic.w r3, r3, #32768 ; 0x8000 + 80037ec: f8c2 3090 str.w r3, [r2, #144] ; 0x90 +} + 80037f0: bf00 nop + 80037f2: 46bd mov sp, r7 + 80037f4: bc80 pop {r7} + 80037f6: 4770 bx lr + 80037f8: 58000400 .word 0x58000400 + +080037fc : * @brief Clear radio busy flag * @rmtoll SCR CRFBUSYF LL_PWR_ClearFlag_RFBUSY * @retval None */ __STATIC_INLINE void LL_PWR_ClearFlag_RFBUSY(void) { - 80039f0: b480 push {r7} - 80039f2: af00 add r7, sp, #0 + 80037fc: b480 push {r7} + 80037fe: af00 add r7, sp, #0 WRITE_REG(PWR->SCR, PWR_SCR_CWRFBUSYF); - 80039f4: 4b03 ldr r3, [pc, #12] ; (8003a04 ) - 80039f6: f44f 6200 mov.w r2, #2048 ; 0x800 - 80039fa: 619a str r2, [r3, #24] + 8003800: 4b03 ldr r3, [pc, #12] ; (8003810 ) + 8003802: f44f 6200 mov.w r2, #2048 ; 0x800 + 8003806: 619a str r2, [r3, #24] } - 80039fc: bf00 nop - 80039fe: 46bd mov sp, r7 - 8003a00: bc80 pop {r7} - 8003a02: 4770 bx lr - 8003a04: 58000400 .word 0x58000400 + 8003808: bf00 nop + 800380a: 46bd mov sp, r7 + 800380c: bc80 pop {r7} + 800380e: 4770 bx lr + 8003810: 58000400 .word 0x58000400 -08003a08 : +08003814 : * @ref LL_PWR_IsActiveFlag_RFBUSY() * @rmtoll SR2 RFBUSYS LL_PWR_IsActiveFlag_RFBUSYS * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_RFBUSYS(void) { - 8003a08: b480 push {r7} - 8003a0a: af00 add r7, sp, #0 + 8003814: b480 push {r7} + 8003816: af00 add r7, sp, #0 return ((READ_BIT(PWR->SR2, PWR_SR2_RFBUSYS) == (PWR_SR2_RFBUSYS)) ? 1UL : 0UL); - 8003a0c: 4b06 ldr r3, [pc, #24] ; (8003a28 ) - 8003a0e: 695b ldr r3, [r3, #20] - 8003a10: f003 0302 and.w r3, r3, #2 - 8003a14: 2b02 cmp r3, #2 - 8003a16: d101 bne.n 8003a1c - 8003a18: 2301 movs r3, #1 - 8003a1a: e000 b.n 8003a1e - 8003a1c: 2300 movs r3, #0 -} - 8003a1e: 4618 mov r0, r3 - 8003a20: 46bd mov sp, r7 - 8003a22: bc80 pop {r7} - 8003a24: 4770 bx lr - 8003a26: bf00 nop - 8003a28: 58000400 .word 0x58000400 - -08003a2c : + 8003818: 4b06 ldr r3, [pc, #24] ; (8003834 ) + 800381a: 695b ldr r3, [r3, #20] + 800381c: f003 0302 and.w r3, r3, #2 + 8003820: 2b02 cmp r3, #2 + 8003822: d101 bne.n 8003828 + 8003824: 2301 movs r3, #1 + 8003826: e000 b.n 800382a + 8003828: 2300 movs r3, #0 +} + 800382a: 4618 mov r0, r3 + 800382c: 46bd mov sp, r7 + 800382e: bc80 pop {r7} + 8003830: 4770 bx lr + 8003832: bf00 nop + 8003834: 58000400 .word 0x58000400 + +08003838 : * @ref LL_PWR_IsActiveFlag_RFBUSY() * @rmtoll SR2 RFBUSYMS LL_PWR_IsActiveFlag_RFBUSYMS * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_RFBUSYMS(void) { - 8003a2c: b480 push {r7} - 8003a2e: af00 add r7, sp, #0 + 8003838: b480 push {r7} + 800383a: af00 add r7, sp, #0 return ((READ_BIT(PWR->SR2, PWR_SR2_RFBUSYMS) == (PWR_SR2_RFBUSYMS)) ? 1UL : 0UL); - 8003a30: 4b06 ldr r3, [pc, #24] ; (8003a4c ) - 8003a32: 695b ldr r3, [r3, #20] - 8003a34: f003 0304 and.w r3, r3, #4 - 8003a38: 2b04 cmp r3, #4 - 8003a3a: d101 bne.n 8003a40 - 8003a3c: 2301 movs r3, #1 - 8003a3e: e000 b.n 8003a42 - 8003a40: 2300 movs r3, #0 -} - 8003a42: 4618 mov r0, r3 - 8003a44: 46bd mov sp, r7 - 8003a46: bc80 pop {r7} - 8003a48: 4770 bx lr - 8003a4a: bf00 nop - 8003a4c: 58000400 .word 0x58000400 - -08003a50 : -{ - 8003a50: b480 push {r7} - 8003a52: af00 add r7, sp, #0 + 800383c: 4b06 ldr r3, [pc, #24] ; (8003858 ) + 800383e: 695b ldr r3, [r3, #20] + 8003840: f003 0304 and.w r3, r3, #4 + 8003844: 2b04 cmp r3, #4 + 8003846: d101 bne.n 800384c + 8003848: 2301 movs r3, #1 + 800384a: e000 b.n 800384e + 800384c: 2300 movs r3, #0 +} + 800384e: 4618 mov r0, r3 + 8003850: 46bd mov sp, r7 + 8003852: bc80 pop {r7} + 8003854: 4770 bx lr + 8003856: bf00 nop + 8003858: 58000400 .word 0x58000400 + +0800385c : +{ + 800385c: b480 push {r7} + 800385e: af00 add r7, sp, #0 CLEAR_BIT(RCC->CSR, RCC_CSR_RFRST); - 8003a54: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8003a58: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 - 8003a5c: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 8003a60: f423 4300 bic.w r3, r3, #32768 ; 0x8000 - 8003a64: f8c2 3094 str.w r3, [r2, #148] ; 0x94 + 8003860: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8003864: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 + 8003868: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800386c: f423 4300 bic.w r3, r3, #32768 ; 0x8000 + 8003870: f8c2 3094 str.w r3, [r2, #148] ; 0x94 } - 8003a68: bf00 nop - 8003a6a: 46bd mov sp, r7 - 8003a6c: bc80 pop {r7} - 8003a6e: 4770 bx lr + 8003874: bf00 nop + 8003876: 46bd mov sp, r7 + 8003878: bc80 pop {r7} + 800387a: 4770 bx lr -08003a70 : +0800387c : { - 8003a70: b480 push {r7} - 8003a72: af00 add r7, sp, #0 + 800387c: b480 push {r7} + 800387e: af00 add r7, sp, #0 return ((READ_BIT(RCC->CSR, RCC_CSR_RFRSTF) == (RCC_CSR_RFRSTF)) ? 1UL : 0UL); - 8003a74: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8003a78: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 - 8003a7c: f403 4380 and.w r3, r3, #16384 ; 0x4000 - 8003a80: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 - 8003a84: d101 bne.n 8003a8a - 8003a86: 2301 movs r3, #1 - 8003a88: e000 b.n 8003a8c - 8003a8a: 2300 movs r3, #0 -} - 8003a8c: 4618 mov r0, r3 - 8003a8e: 46bd mov sp, r7 - 8003a90: bc80 pop {r7} - 8003a92: 4770 bx lr - -08003a94 : + 8003880: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8003884: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 + 8003888: f403 4380 and.w r3, r3, #16384 ; 0x4000 + 800388c: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 + 8003890: d101 bne.n 8003896 + 8003892: 2301 movs r3, #1 + 8003894: e000 b.n 8003898 + 8003896: 2300 movs r3, #0 +} + 8003898: 4618 mov r0, r3 + 800389a: 46bd mov sp, r7 + 800389c: bc80 pop {r7} + 800389e: 4770 bx lr + +080038a0 : * @arg @ref LL_EXTI_LINE_ALL_32_63 * (*) value not defined in all devices * @retval None */ __STATIC_INLINE void LL_EXTI_EnableIT_32_63(uint32_t ExtiLine) { - 8003a94: b480 push {r7} - 8003a96: b083 sub sp, #12 - 8003a98: af00 add r7, sp, #0 - 8003a9a: 6078 str r0, [r7, #4] + 80038a0: b480 push {r7} + 80038a2: b083 sub sp, #12 + 80038a4: af00 add r7, sp, #0 + 80038a6: 6078 str r0, [r7, #4] SET_BIT(EXTI->IMR2, ExtiLine); - 8003a9c: 4b06 ldr r3, [pc, #24] ; (8003ab8 ) - 8003a9e: f8d3 2090 ldr.w r2, [r3, #144] ; 0x90 - 8003aa2: 4905 ldr r1, [pc, #20] ; (8003ab8 ) - 8003aa4: 687b ldr r3, [r7, #4] - 8003aa6: 4313 orrs r3, r2 - 8003aa8: f8c1 3090 str.w r3, [r1, #144] ; 0x90 -} - 8003aac: bf00 nop - 8003aae: 370c adds r7, #12 - 8003ab0: 46bd mov sp, r7 - 8003ab2: bc80 pop {r7} - 8003ab4: 4770 bx lr - 8003ab6: bf00 nop - 8003ab8: 58000800 .word 0x58000800 - -08003abc : + 80038a8: 4b06 ldr r3, [pc, #24] ; (80038c4 ) + 80038aa: f8d3 2090 ldr.w r2, [r3, #144] ; 0x90 + 80038ae: 4905 ldr r1, [pc, #20] ; (80038c4 ) + 80038b0: 687b ldr r3, [r7, #4] + 80038b2: 4313 orrs r3, r2 + 80038b4: f8c1 3090 str.w r3, [r1, #144] ; 0x90 +} + 80038b8: bf00 nop + 80038ba: 370c adds r7, #12 + 80038bc: 46bd mov sp, r7 + 80038be: bc80 pop {r7} + 80038c0: 4770 bx lr + 80038c2: bf00 nop + 80038c4: 58000800 .word 0x58000800 + +080038c8 : * set the state to HAL_SUBGHZ_STATE_RESET_RF_READY with __HAL_SUBGHZ_RESET_HANDLE_STATE_RF_READY * to avoid the reset of Radio peripheral. * @retval HAL status */ HAL_StatusTypeDef HAL_SUBGHZ_Init(SUBGHZ_HandleTypeDef *hsubghz) { - 8003abc: b580 push {r7, lr} - 8003abe: b084 sub sp, #16 - 8003ac0: af00 add r7, sp, #0 - 8003ac2: 6078 str r0, [r7, #4] + 80038c8: b580 push {r7, lr} + 80038ca: b084 sub sp, #16 + 80038cc: af00 add r7, sp, #0 + 80038ce: 6078 str r0, [r7, #4] HAL_StatusTypeDef status; __IO uint32_t count; HAL_SUBGHZ_StateTypeDef subghz_state; /* Check the hsubghz handle allocation */ if (hsubghz == NULL) - 8003ac4: 687b ldr r3, [r7, #4] - 8003ac6: 2b00 cmp r3, #0 - 8003ac8: d103 bne.n 8003ad2 + 80038d0: 687b ldr r3, [r7, #4] + 80038d2: 2b00 cmp r3, #0 + 80038d4: d103 bne.n 80038de { status = HAL_ERROR; - 8003aca: 2301 movs r3, #1 - 8003acc: 73fb strb r3, [r7, #15] + 80038d6: 2301 movs r3, #1 + 80038d8: 73fb strb r3, [r7, #15] return status; - 8003ace: 7bfb ldrb r3, [r7, #15] - 8003ad0: e052 b.n 8003b78 + 80038da: 7bfb ldrb r3, [r7, #15] + 80038dc: e052 b.n 8003984 } else { status = HAL_OK; - 8003ad2: 2300 movs r3, #0 - 8003ad4: 73fb strb r3, [r7, #15] + 80038de: 2300 movs r3, #0 + 80038e0: 73fb strb r3, [r7, #15] } assert_param(IS_SUBGHZSPI_BAUDRATE_PRESCALER(hsubghz->Init.BaudratePrescaler)); subghz_state = hsubghz->State; - 8003ad6: 687b ldr r3, [r7, #4] - 8003ad8: 799b ldrb r3, [r3, #6] - 8003ada: 73bb strb r3, [r7, #14] + 80038e2: 687b ldr r3, [r7, #4] + 80038e4: 799b ldrb r3, [r3, #6] + 80038e6: 73bb strb r3, [r7, #14] if ((subghz_state == HAL_SUBGHZ_STATE_RESET) || - 8003adc: 7bbb ldrb r3, [r7, #14] - 8003ade: 2b00 cmp r3, #0 - 8003ae0: d002 beq.n 8003ae8 - 8003ae2: 7bbb ldrb r3, [r7, #14] - 8003ae4: 2b03 cmp r3, #3 - 8003ae6: d109 bne.n 8003afc + 80038e8: 7bbb ldrb r3, [r7, #14] + 80038ea: 2b00 cmp r3, #0 + 80038ec: d002 beq.n 80038f4 + 80038ee: 7bbb ldrb r3, [r7, #14] + 80038f0: 2b03 cmp r3, #3 + 80038f2: d109 bne.n 8003908 (subghz_state == HAL_SUBGHZ_STATE_RESET_RF_READY)) { /* Allocate lock resource and initialize it */ hsubghz->Lock = HAL_UNLOCKED; - 8003ae8: 687b ldr r3, [r7, #4] - 8003aea: 2200 movs r2, #0 - 8003aec: 715a strb r2, [r3, #5] + 80038f4: 687b ldr r3, [r7, #4] + 80038f6: 2200 movs r2, #0 + 80038f8: 715a strb r2, [r3, #5] /* Init the low level hardware : GPIO, CLOCK, NVIC... */ hsubghz->MspInitCallback(hsubghz); #else /* Init the low level hardware : GPIO, CLOCK, NVIC... */ HAL_SUBGHZ_MspInit(hsubghz); - 8003aee: 6878 ldr r0, [r7, #4] - 8003af0: f7fd fdbe bl 8001670 + 80038fa: 6878 ldr r0, [r7, #4] + 80038fc: f7fd fdbe bl 800147c #if defined(CM0PLUS) /* Enable EXTI 44 : Radio IRQ ITs for CPU2 */ LL_C2_EXTI_EnableIT_32_63(LL_EXTI_LINE_44); #else /* Enable EXTI 44 : Radio IRQ ITs for CPU1 */ LL_EXTI_EnableIT_32_63(LL_EXTI_LINE_44); - 8003af4: f44f 5080 mov.w r0, #4096 ; 0x1000 - 8003af8: f7ff ffcc bl 8003a94 + 8003900: f44f 5080 mov.w r0, #4096 ; 0x1000 + 8003904: f7ff ffcc bl 80038a0 #endif /* CM0PLUS */ } if (subghz_state == HAL_SUBGHZ_STATE_RESET) - 8003afc: 7bbb ldrb r3, [r7, #14] - 8003afe: 2b00 cmp r3, #0 - 8003b00: d126 bne.n 8003b50 + 8003908: 7bbb ldrb r3, [r7, #14] + 800390a: 2b00 cmp r3, #0 + 800390c: d126 bne.n 800395c { /* Reinitialize Radio peripheral only if SUBGHZ is in full RESET state */ hsubghz->State = HAL_SUBGHZ_STATE_BUSY; - 8003b02: 687b ldr r3, [r7, #4] - 8003b04: 2202 movs r2, #2 - 8003b06: 719a strb r2, [r3, #6] + 800390e: 687b ldr r3, [r7, #4] + 8003910: 2202 movs r2, #2 + 8003912: 719a strb r2, [r3, #6] /* De-asserts the reset signal of the Radio peripheral */ LL_RCC_RF_DisableReset(); - 8003b08: f7ff ffa2 bl 8003a50 + 8003914: f7ff ffa2 bl 800385c /* Verify that Radio in reset status flag is set */ count = SUBGHZ_DEFAULT_TIMEOUT * SUBGHZ_DEFAULT_LOOP_TIME; - 8003b0c: 4b1c ldr r3, [pc, #112] ; (8003b80 ) - 8003b0e: 681a ldr r2, [r3, #0] - 8003b10: 4613 mov r3, r2 - 8003b12: 00db lsls r3, r3, #3 - 8003b14: 1a9b subs r3, r3, r2 - 8003b16: 009b lsls r3, r3, #2 - 8003b18: 0cdb lsrs r3, r3, #19 - 8003b1a: 2264 movs r2, #100 ; 0x64 - 8003b1c: fb02 f303 mul.w r3, r2, r3 - 8003b20: 60bb str r3, [r7, #8] + 8003918: 4b1c ldr r3, [pc, #112] ; (800398c ) + 800391a: 681a ldr r2, [r3, #0] + 800391c: 4613 mov r3, r2 + 800391e: 00db lsls r3, r3, #3 + 8003920: 1a9b subs r3, r3, r2 + 8003922: 009b lsls r3, r3, #2 + 8003924: 0cdb lsrs r3, r3, #19 + 8003926: 2264 movs r2, #100 ; 0x64 + 8003928: fb02 f303 mul.w r3, r2, r3 + 800392c: 60bb str r3, [r7, #8] do { if (count == 0U) - 8003b22: 68bb ldr r3, [r7, #8] - 8003b24: 2b00 cmp r3, #0 - 8003b26: d105 bne.n 8003b34 + 800392e: 68bb ldr r3, [r7, #8] + 8003930: 2b00 cmp r3, #0 + 8003932: d105 bne.n 8003940 { status = HAL_ERROR; - 8003b28: 2301 movs r3, #1 - 8003b2a: 73fb strb r3, [r7, #15] + 8003934: 2301 movs r3, #1 + 8003936: 73fb strb r3, [r7, #15] hsubghz->ErrorCode = HAL_SUBGHZ_ERROR_TIMEOUT; - 8003b2c: 687b ldr r3, [r7, #4] - 8003b2e: 2201 movs r2, #1 - 8003b30: 609a str r2, [r3, #8] + 8003938: 687b ldr r3, [r7, #4] + 800393a: 2201 movs r2, #1 + 800393c: 609a str r2, [r3, #8] break; - 8003b32: e007 b.n 8003b44 + 800393e: e007 b.n 8003950 } count--; - 8003b34: 68bb ldr r3, [r7, #8] - 8003b36: 3b01 subs r3, #1 - 8003b38: 60bb str r3, [r7, #8] + 8003940: 68bb ldr r3, [r7, #8] + 8003942: 3b01 subs r3, #1 + 8003944: 60bb str r3, [r7, #8] } while (LL_RCC_IsRFUnderReset() != 0UL); - 8003b3a: f7ff ff99 bl 8003a70 - 8003b3e: 4603 mov r3, r0 - 8003b40: 2b00 cmp r3, #0 - 8003b42: d1ee bne.n 8003b22 + 8003946: f7ff ff99 bl 800387c + 800394a: 4603 mov r3, r0 + 800394c: 2b00 cmp r3, #0 + 800394e: d1ee bne.n 800392e /* Asserts the reset signal of the Radio peripheral */ LL_PWR_UnselectSUBGHZSPI_NSS(); - 8003b44: f7ff ff34 bl 80039b0 + 8003950: f7ff ff34 bl 80037bc #if defined(CM0PLUS) /* Enable wakeup signal of the Radio peripheral */ LL_C2_PWR_SetRadioBusyTrigger(LL_PWR_RADIO_BUSY_TRIGGER_WU_IT); #else /* Enable wakeup signal of the Radio peripheral */ LL_PWR_SetRadioBusyTrigger(LL_PWR_RADIO_BUSY_TRIGGER_WU_IT); - 8003b48: f44f 6000 mov.w r0, #2048 ; 0x800 - 8003b4c: f7ff ff1c bl 8003988 + 8003954: f44f 6000 mov.w r0, #2048 ; 0x800 + 8003958: f7ff ff1c bl 8003794 #endif /* CM0PLUS */ } /* Clear Pending Flag */ LL_PWR_ClearFlag_RFBUSY(); - 8003b50: f7ff ff4e bl 80039f0 + 800395c: f7ff ff4e bl 80037fc if (status == HAL_OK) - 8003b54: 7bfb ldrb r3, [r7, #15] - 8003b56: 2b00 cmp r3, #0 - 8003b58: d10a bne.n 8003b70 + 8003960: 7bfb ldrb r3, [r7, #15] + 8003962: 2b00 cmp r3, #0 + 8003964: d10a bne.n 800397c { /* Initialize SUBGHZSPI Peripheral */ SUBGHZSPI_Init(hsubghz->Init.BaudratePrescaler); - 8003b5a: 687b ldr r3, [r7, #4] - 8003b5c: 681b ldr r3, [r3, #0] - 8003b5e: 4618 mov r0, r3 - 8003b60: f000 f870 bl 8003c44 + 8003966: 687b ldr r3, [r7, #4] + 8003968: 681b ldr r3, [r3, #0] + 800396a: 4618 mov r0, r3 + 800396c: f000 f870 bl 8003a50 hsubghz->DeepSleep = SUBGHZ_DEEP_SLEEP_ENABLE; - 8003b64: 687b ldr r3, [r7, #4] - 8003b66: 2201 movs r2, #1 - 8003b68: 711a strb r2, [r3, #4] + 8003970: 687b ldr r3, [r7, #4] + 8003972: 2201 movs r2, #1 + 8003974: 711a strb r2, [r3, #4] hsubghz->ErrorCode = HAL_SUBGHZ_ERROR_NONE; - 8003b6a: 687b ldr r3, [r7, #4] - 8003b6c: 2200 movs r2, #0 - 8003b6e: 609a str r2, [r3, #8] + 8003976: 687b ldr r3, [r7, #4] + 8003978: 2200 movs r2, #0 + 800397a: 609a str r2, [r3, #8] } hsubghz->State = HAL_SUBGHZ_STATE_READY; - 8003b70: 687b ldr r3, [r7, #4] - 8003b72: 2201 movs r2, #1 - 8003b74: 719a strb r2, [r3, #6] + 800397c: 687b ldr r3, [r7, #4] + 800397e: 2201 movs r2, #1 + 8003980: 719a strb r2, [r3, #6] return status; - 8003b76: 7bfb ldrb r3, [r7, #15] + 8003982: 7bfb ldrb r3, [r7, #15] } - 8003b78: 4618 mov r0, r3 - 8003b7a: 3710 adds r7, #16 - 8003b7c: 46bd mov sp, r7 - 8003b7e: bd80 pop {r7, pc} - 8003b80: 20000008 .word 0x20000008 + 8003984: 4618 mov r0, r3 + 8003986: 3710 adds r7, #16 + 8003988: 46bd mov sp, r7 + 800398a: bd80 pop {r7, pc} + 800398c: 20000000 .word 0x20000000 -08003b84 : +08003990 : */ HAL_StatusTypeDef HAL_SUBGHZ_ExecSetCmd(SUBGHZ_HandleTypeDef *hsubghz, SUBGHZ_RadioSetCmd_t Command, uint8_t *pBuffer, uint16_t Size) { - 8003b84: b580 push {r7, lr} - 8003b86: b086 sub sp, #24 - 8003b88: af00 add r7, sp, #0 - 8003b8a: 60f8 str r0, [r7, #12] - 8003b8c: 607a str r2, [r7, #4] - 8003b8e: 461a mov r2, r3 - 8003b90: 460b mov r3, r1 - 8003b92: 72fb strb r3, [r7, #11] - 8003b94: 4613 mov r3, r2 - 8003b96: 813b strh r3, [r7, #8] + 8003990: b580 push {r7, lr} + 8003992: b086 sub sp, #24 + 8003994: af00 add r7, sp, #0 + 8003996: 60f8 str r0, [r7, #12] + 8003998: 607a str r2, [r7, #4] + 800399a: 461a mov r2, r3 + 800399c: 460b mov r3, r1 + 800399e: 72fb strb r3, [r7, #11] + 80039a0: 4613 mov r3, r2 + 80039a2: 813b strh r3, [r7, #8] HAL_StatusTypeDef status; /* LORA Modulation not available on STM32WLx4xx devices */ assert_param(IS_SUBGHZ_MODULATION_SUPPORTED(Command, pBuffer[0U])); if (hsubghz->State == HAL_SUBGHZ_STATE_READY) - 8003b98: 68fb ldr r3, [r7, #12] - 8003b9a: 799b ldrb r3, [r3, #6] - 8003b9c: b2db uxtb r3, r3 - 8003b9e: 2b01 cmp r3, #1 - 8003ba0: d14a bne.n 8003c38 + 80039a4: 68fb ldr r3, [r7, #12] + 80039a6: 799b ldrb r3, [r3, #6] + 80039a8: b2db uxtb r3, r3 + 80039aa: 2b01 cmp r3, #1 + 80039ac: d14a bne.n 8003a44 { /* Process Locked */ __HAL_LOCK(hsubghz); - 8003ba2: 68fb ldr r3, [r7, #12] - 8003ba4: 795b ldrb r3, [r3, #5] - 8003ba6: 2b01 cmp r3, #1 - 8003ba8: d101 bne.n 8003bae - 8003baa: 2302 movs r3, #2 - 8003bac: e045 b.n 8003c3a - 8003bae: 68fb ldr r3, [r7, #12] - 8003bb0: 2201 movs r2, #1 - 8003bb2: 715a strb r2, [r3, #5] + 80039ae: 68fb ldr r3, [r7, #12] + 80039b0: 795b ldrb r3, [r3, #5] + 80039b2: 2b01 cmp r3, #1 + 80039b4: d101 bne.n 80039ba + 80039b6: 2302 movs r3, #2 + 80039b8: e045 b.n 8003a46 + 80039ba: 68fb ldr r3, [r7, #12] + 80039bc: 2201 movs r2, #1 + 80039be: 715a strb r2, [r3, #5] /* Need to wakeup Radio if already in Sleep at startup */ (void)SUBGHZ_CheckDeviceReady(hsubghz); - 8003bb4: 68f8 ldr r0, [r7, #12] - 8003bb6: f000 f8bb bl 8003d30 + 80039c0: 68f8 ldr r0, [r7, #12] + 80039c2: f000 f8bb bl 8003b3c if ((Command == RADIO_SET_SLEEP) || (Command == RADIO_SET_RXDUTYCYCLE)) - 8003bba: 7afb ldrb r3, [r7, #11] - 8003bbc: 2b84 cmp r3, #132 ; 0x84 - 8003bbe: d002 beq.n 8003bc6 - 8003bc0: 7afb ldrb r3, [r7, #11] - 8003bc2: 2b94 cmp r3, #148 ; 0x94 - 8003bc4: d103 bne.n 8003bce + 80039c6: 7afb ldrb r3, [r7, #11] + 80039c8: 2b84 cmp r3, #132 ; 0x84 + 80039ca: d002 beq.n 80039d2 + 80039cc: 7afb ldrb r3, [r7, #11] + 80039ce: 2b94 cmp r3, #148 ; 0x94 + 80039d0: d103 bne.n 80039da { hsubghz->DeepSleep = SUBGHZ_DEEP_SLEEP_ENABLE; - 8003bc6: 68fb ldr r3, [r7, #12] - 8003bc8: 2201 movs r2, #1 - 8003bca: 711a strb r2, [r3, #4] - 8003bcc: e002 b.n 8003bd4 + 80039d2: 68fb ldr r3, [r7, #12] + 80039d4: 2201 movs r2, #1 + 80039d6: 711a strb r2, [r3, #4] + 80039d8: e002 b.n 80039e0 } else { hsubghz->DeepSleep = SUBGHZ_DEEP_SLEEP_DISABLE; - 8003bce: 68fb ldr r3, [r7, #12] - 8003bd0: 2200 movs r2, #0 - 8003bd2: 711a strb r2, [r3, #4] + 80039da: 68fb ldr r3, [r7, #12] + 80039dc: 2200 movs r2, #0 + 80039de: 711a strb r2, [r3, #4] } /* NSS = 0 */ LL_PWR_SelectSUBGHZSPI_NSS(); - 8003bd4: f7ff fefc bl 80039d0 + 80039e0: f7ff fefc bl 80037dc (void)SUBGHZSPI_Transmit(hsubghz, (uint8_t)Command); - 8003bd8: 7afb ldrb r3, [r7, #11] - 8003bda: 4619 mov r1, r3 - 8003bdc: 68f8 ldr r0, [r7, #12] - 8003bde: f000 f851 bl 8003c84 + 80039e4: 7afb ldrb r3, [r7, #11] + 80039e6: 4619 mov r1, r3 + 80039e8: 68f8 ldr r0, [r7, #12] + 80039ea: f000 f851 bl 8003a90 for (uint16_t i = 0U; i < Size; i++) - 8003be2: 2300 movs r3, #0 - 8003be4: 82bb strh r3, [r7, #20] - 8003be6: e00a b.n 8003bfe + 80039ee: 2300 movs r3, #0 + 80039f0: 82bb strh r3, [r7, #20] + 80039f2: e00a b.n 8003a0a { (void)SUBGHZSPI_Transmit(hsubghz, pBuffer[i]); - 8003be8: 8abb ldrh r3, [r7, #20] - 8003bea: 687a ldr r2, [r7, #4] - 8003bec: 4413 add r3, r2 - 8003bee: 781b ldrb r3, [r3, #0] - 8003bf0: 4619 mov r1, r3 - 8003bf2: 68f8 ldr r0, [r7, #12] - 8003bf4: f000 f846 bl 8003c84 + 80039f4: 8abb ldrh r3, [r7, #20] + 80039f6: 687a ldr r2, [r7, #4] + 80039f8: 4413 add r3, r2 + 80039fa: 781b ldrb r3, [r3, #0] + 80039fc: 4619 mov r1, r3 + 80039fe: 68f8 ldr r0, [r7, #12] + 8003a00: f000 f846 bl 8003a90 for (uint16_t i = 0U; i < Size; i++) - 8003bf8: 8abb ldrh r3, [r7, #20] - 8003bfa: 3301 adds r3, #1 - 8003bfc: 82bb strh r3, [r7, #20] - 8003bfe: 8aba ldrh r2, [r7, #20] - 8003c00: 893b ldrh r3, [r7, #8] - 8003c02: 429a cmp r2, r3 - 8003c04: d3f0 bcc.n 8003be8 + 8003a04: 8abb ldrh r3, [r7, #20] + 8003a06: 3301 adds r3, #1 + 8003a08: 82bb strh r3, [r7, #20] + 8003a0a: 8aba ldrh r2, [r7, #20] + 8003a0c: 893b ldrh r3, [r7, #8] + 8003a0e: 429a cmp r2, r3 + 8003a10: d3f0 bcc.n 80039f4 } /* NSS = 1 */ LL_PWR_UnselectSUBGHZSPI_NSS(); - 8003c06: f7ff fed3 bl 80039b0 + 8003a12: f7ff fed3 bl 80037bc if (Command != RADIO_SET_SLEEP) - 8003c0a: 7afb ldrb r3, [r7, #11] - 8003c0c: 2b84 cmp r3, #132 ; 0x84 - 8003c0e: d002 beq.n 8003c16 + 8003a16: 7afb ldrb r3, [r7, #11] + 8003a18: 2b84 cmp r3, #132 ; 0x84 + 8003a1a: d002 beq.n 8003a22 { (void)SUBGHZ_WaitOnBusy(hsubghz); - 8003c10: 68f8 ldr r0, [r7, #12] - 8003c12: f000 f8b1 bl 8003d78 + 8003a1c: 68f8 ldr r0, [r7, #12] + 8003a1e: f000 f8b1 bl 8003b84 } if (hsubghz->ErrorCode != HAL_SUBGHZ_ERROR_NONE) - 8003c16: 68fb ldr r3, [r7, #12] - 8003c18: 689b ldr r3, [r3, #8] - 8003c1a: 2b00 cmp r3, #0 - 8003c1c: d002 beq.n 8003c24 + 8003a22: 68fb ldr r3, [r7, #12] + 8003a24: 689b ldr r3, [r3, #8] + 8003a26: 2b00 cmp r3, #0 + 8003a28: d002 beq.n 8003a30 { status = HAL_ERROR; - 8003c1e: 2301 movs r3, #1 - 8003c20: 75fb strb r3, [r7, #23] - 8003c22: e001 b.n 8003c28 + 8003a2a: 2301 movs r3, #1 + 8003a2c: 75fb strb r3, [r7, #23] + 8003a2e: e001 b.n 8003a34 } else { status = HAL_OK; - 8003c24: 2300 movs r3, #0 - 8003c26: 75fb strb r3, [r7, #23] + 8003a30: 2300 movs r3, #0 + 8003a32: 75fb strb r3, [r7, #23] } hsubghz->State = HAL_SUBGHZ_STATE_READY; - 8003c28: 68fb ldr r3, [r7, #12] - 8003c2a: 2201 movs r2, #1 - 8003c2c: 719a strb r2, [r3, #6] + 8003a34: 68fb ldr r3, [r7, #12] + 8003a36: 2201 movs r2, #1 + 8003a38: 719a strb r2, [r3, #6] /* Process Unlocked */ __HAL_UNLOCK(hsubghz); - 8003c2e: 68fb ldr r3, [r7, #12] - 8003c30: 2200 movs r2, #0 - 8003c32: 715a strb r2, [r3, #5] + 8003a3a: 68fb ldr r3, [r7, #12] + 8003a3c: 2200 movs r2, #0 + 8003a3e: 715a strb r2, [r3, #5] return status; - 8003c34: 7dfb ldrb r3, [r7, #23] - 8003c36: e000 b.n 8003c3a + 8003a40: 7dfb ldrb r3, [r7, #23] + 8003a42: e000 b.n 8003a46 } else { return HAL_BUSY; - 8003c38: 2302 movs r3, #2 + 8003a44: 2302 movs r3, #2 } } - 8003c3a: 4618 mov r0, r3 - 8003c3c: 3718 adds r7, #24 - 8003c3e: 46bd mov sp, r7 - 8003c40: bd80 pop {r7, pc} + 8003a46: 4618 mov r0, r3 + 8003a48: 3718 adds r7, #24 + 8003a4a: 46bd mov sp, r7 + 8003a4c: bd80 pop {r7, pc} ... -08003c44 : +08003a50 : * @brief Initializes the SUBGHZSPI peripheral * @param BaudratePrescaler SPI Baudrate prescaler * @retval None */ void SUBGHZSPI_Init(uint32_t BaudratePrescaler) { - 8003c44: b480 push {r7} - 8003c46: b083 sub sp, #12 - 8003c48: af00 add r7, sp, #0 - 8003c4a: 6078 str r0, [r7, #4] + 8003a50: b480 push {r7} + 8003a52: b083 sub sp, #12 + 8003a54: af00 add r7, sp, #0 + 8003a56: 6078 str r0, [r7, #4] /* Check the parameters */ assert_param(IS_SUBGHZ_ALL_INSTANCE(SUBGHZSPI)); /* Disable SUBGHZSPI Peripheral */ CLEAR_BIT(SUBGHZSPI->CR1, SPI_CR1_SPE); - 8003c4c: 4b0c ldr r3, [pc, #48] ; (8003c80 ) - 8003c4e: 681b ldr r3, [r3, #0] - 8003c50: 4a0b ldr r2, [pc, #44] ; (8003c80 ) - 8003c52: f023 0340 bic.w r3, r3, #64 ; 0x40 - 8003c56: 6013 str r3, [r2, #0] + 8003a58: 4b0c ldr r3, [pc, #48] ; (8003a8c ) + 8003a5a: 681b ldr r3, [r3, #0] + 8003a5c: 4a0b ldr r2, [pc, #44] ; (8003a8c ) + 8003a5e: f023 0340 bic.w r3, r3, #64 ; 0x40 + 8003a62: 6013 str r3, [r2, #0] * NSS management: Internal (Done with External bit inside PWR * * Communication speed: BaudratePrescaler * * First bit: MSB * * CRC calculation: Disable * *--------------------------------------------------------------------------*/ WRITE_REG(SUBGHZSPI->CR1, (SPI_CR1_MSTR | SPI_CR1_SSI | BaudratePrescaler | SPI_CR1_SSM)); - 8003c58: 4a09 ldr r2, [pc, #36] ; (8003c80 ) - 8003c5a: 687b ldr r3, [r7, #4] - 8003c5c: f443 7341 orr.w r3, r3, #772 ; 0x304 - 8003c60: 6013 str r3, [r2, #0] + 8003a64: 4a09 ldr r2, [pc, #36] ; (8003a8c ) + 8003a66: 687b ldr r3, [r7, #4] + 8003a68: f443 7341 orr.w r3, r3, #772 ; 0x304 + 8003a6c: 6013 str r3, [r2, #0] * Data Size: 8bits * * TI Mode: Disable * * NSS Pulse: Disable * * Rx FIFO Threshold: 8bits * *--------------------------------------------------------------------------*/ WRITE_REG(SUBGHZSPI->CR2, (SPI_CR2_FRXTH | SPI_CR2_DS_0 | SPI_CR2_DS_1 | SPI_CR2_DS_2)); - 8003c62: 4b07 ldr r3, [pc, #28] ; (8003c80 ) - 8003c64: f44f 52b8 mov.w r2, #5888 ; 0x1700 - 8003c68: 605a str r2, [r3, #4] + 8003a6e: 4b07 ldr r3, [pc, #28] ; (8003a8c ) + 8003a70: f44f 52b8 mov.w r2, #5888 ; 0x1700 + 8003a74: 605a str r2, [r3, #4] /* Enable SUBGHZSPI Peripheral */ SET_BIT(SUBGHZSPI->CR1, SPI_CR1_SPE); - 8003c6a: 4b05 ldr r3, [pc, #20] ; (8003c80 ) - 8003c6c: 681b ldr r3, [r3, #0] - 8003c6e: 4a04 ldr r2, [pc, #16] ; (8003c80 ) - 8003c70: f043 0340 orr.w r3, r3, #64 ; 0x40 - 8003c74: 6013 str r3, [r2, #0] -} - 8003c76: bf00 nop - 8003c78: 370c adds r7, #12 - 8003c7a: 46bd mov sp, r7 - 8003c7c: bc80 pop {r7} - 8003c7e: 4770 bx lr - 8003c80: 58010000 .word 0x58010000 - -08003c84 : + 8003a76: 4b05 ldr r3, [pc, #20] ; (8003a8c ) + 8003a78: 681b ldr r3, [r3, #0] + 8003a7a: 4a04 ldr r2, [pc, #16] ; (8003a8c ) + 8003a7c: f043 0340 orr.w r3, r3, #64 ; 0x40 + 8003a80: 6013 str r3, [r2, #0] +} + 8003a82: bf00 nop + 8003a84: 370c adds r7, #12 + 8003a86: 46bd mov sp, r7 + 8003a88: bc80 pop {r7} + 8003a8a: 4770 bx lr + 8003a8c: 58010000 .word 0x58010000 + +08003a90 : * @param Data data to transmit * @retval HAL status */ HAL_StatusTypeDef SUBGHZSPI_Transmit(SUBGHZ_HandleTypeDef *hsubghz, uint8_t Data) { - 8003c84: b480 push {r7} - 8003c86: b087 sub sp, #28 - 8003c88: af00 add r7, sp, #0 - 8003c8a: 6078 str r0, [r7, #4] - 8003c8c: 460b mov r3, r1 - 8003c8e: 70fb strb r3, [r7, #3] + 8003a90: b480 push {r7} + 8003a92: b087 sub sp, #28 + 8003a94: af00 add r7, sp, #0 + 8003a96: 6078 str r0, [r7, #4] + 8003a98: 460b mov r3, r1 + 8003a9a: 70fb strb r3, [r7, #3] HAL_StatusTypeDef status = HAL_OK; - 8003c90: 2300 movs r3, #0 - 8003c92: 75fb strb r3, [r7, #23] + 8003a9c: 2300 movs r3, #0 + 8003a9e: 75fb strb r3, [r7, #23] __IO uint32_t count; /* Handle Tx transmission from SUBGHZSPI peripheral to Radio ****************/ /* Initialize Timeout */ count = SUBGHZ_DEFAULT_TIMEOUT * SUBGHZ_DEFAULT_LOOP_TIME; - 8003c94: 4b23 ldr r3, [pc, #140] ; (8003d24 ) - 8003c96: 681a ldr r2, [r3, #0] - 8003c98: 4613 mov r3, r2 - 8003c9a: 00db lsls r3, r3, #3 - 8003c9c: 1a9b subs r3, r3, r2 - 8003c9e: 009b lsls r3, r3, #2 - 8003ca0: 0cdb lsrs r3, r3, #19 - 8003ca2: 2264 movs r2, #100 ; 0x64 - 8003ca4: fb02 f303 mul.w r3, r2, r3 - 8003ca8: 60fb str r3, [r7, #12] + 8003aa0: 4b23 ldr r3, [pc, #140] ; (8003b30 ) + 8003aa2: 681a ldr r2, [r3, #0] + 8003aa4: 4613 mov r3, r2 + 8003aa6: 00db lsls r3, r3, #3 + 8003aa8: 1a9b subs r3, r3, r2 + 8003aaa: 009b lsls r3, r3, #2 + 8003aac: 0cdb lsrs r3, r3, #19 + 8003aae: 2264 movs r2, #100 ; 0x64 + 8003ab0: fb02 f303 mul.w r3, r2, r3 + 8003ab4: 60fb str r3, [r7, #12] /* Wait until TXE flag is set */ do { if (count == 0U) - 8003caa: 68fb ldr r3, [r7, #12] - 8003cac: 2b00 cmp r3, #0 - 8003cae: d105 bne.n 8003cbc + 8003ab6: 68fb ldr r3, [r7, #12] + 8003ab8: 2b00 cmp r3, #0 + 8003aba: d105 bne.n 8003ac8 { status = HAL_ERROR; - 8003cb0: 2301 movs r3, #1 - 8003cb2: 75fb strb r3, [r7, #23] + 8003abc: 2301 movs r3, #1 + 8003abe: 75fb strb r3, [r7, #23] hsubghz->ErrorCode = HAL_SUBGHZ_ERROR_TIMEOUT; - 8003cb4: 687b ldr r3, [r7, #4] - 8003cb6: 2201 movs r2, #1 - 8003cb8: 609a str r2, [r3, #8] + 8003ac0: 687b ldr r3, [r7, #4] + 8003ac2: 2201 movs r2, #1 + 8003ac4: 609a str r2, [r3, #8] break; - 8003cba: e008 b.n 8003cce + 8003ac6: e008 b.n 8003ada } count--; - 8003cbc: 68fb ldr r3, [r7, #12] - 8003cbe: 3b01 subs r3, #1 - 8003cc0: 60fb str r3, [r7, #12] + 8003ac8: 68fb ldr r3, [r7, #12] + 8003aca: 3b01 subs r3, #1 + 8003acc: 60fb str r3, [r7, #12] } while (READ_BIT(SUBGHZSPI->SR, SPI_SR_TXE) != (SPI_SR_TXE)); - 8003cc2: 4b19 ldr r3, [pc, #100] ; (8003d28 ) - 8003cc4: 689b ldr r3, [r3, #8] - 8003cc6: f003 0302 and.w r3, r3, #2 - 8003cca: 2b02 cmp r3, #2 - 8003ccc: d1ed bne.n 8003caa + 8003ace: 4b19 ldr r3, [pc, #100] ; (8003b34 ) + 8003ad0: 689b ldr r3, [r3, #8] + 8003ad2: f003 0302 and.w r3, r3, #2 + 8003ad6: 2b02 cmp r3, #2 + 8003ad8: d1ed bne.n 8003ab6 /* Transmit Data*/ #if defined (__GNUC__) __IO uint8_t *spidr = ((__IO uint8_t *)&SUBGHZSPI->DR); - 8003cce: 4b17 ldr r3, [pc, #92] ; (8003d2c ) - 8003cd0: 613b str r3, [r7, #16] + 8003ada: 4b17 ldr r3, [pc, #92] ; (8003b38 ) + 8003adc: 613b str r3, [r7, #16] *spidr = Data; - 8003cd2: 693b ldr r3, [r7, #16] - 8003cd4: 78fa ldrb r2, [r7, #3] - 8003cd6: 701a strb r2, [r3, #0] + 8003ade: 693b ldr r3, [r7, #16] + 8003ae0: 78fa ldrb r2, [r7, #3] + 8003ae2: 701a strb r2, [r3, #0] *((__IO uint8_t *)&SUBGHZSPI->DR) = Data; #endif /* __GNUC__ */ /* Handle Rx transmission from SUBGHZSPI peripheral to Radio ****************/ /* Initialize Timeout */ count = SUBGHZ_DEFAULT_TIMEOUT * SUBGHZ_DEFAULT_LOOP_TIME; - 8003cd8: 4b12 ldr r3, [pc, #72] ; (8003d24 ) - 8003cda: 681a ldr r2, [r3, #0] - 8003cdc: 4613 mov r3, r2 - 8003cde: 00db lsls r3, r3, #3 - 8003ce0: 1a9b subs r3, r3, r2 - 8003ce2: 009b lsls r3, r3, #2 - 8003ce4: 0cdb lsrs r3, r3, #19 - 8003ce6: 2264 movs r2, #100 ; 0x64 - 8003ce8: fb02 f303 mul.w r3, r2, r3 - 8003cec: 60fb str r3, [r7, #12] + 8003ae4: 4b12 ldr r3, [pc, #72] ; (8003b30 ) + 8003ae6: 681a ldr r2, [r3, #0] + 8003ae8: 4613 mov r3, r2 + 8003aea: 00db lsls r3, r3, #3 + 8003aec: 1a9b subs r3, r3, r2 + 8003aee: 009b lsls r3, r3, #2 + 8003af0: 0cdb lsrs r3, r3, #19 + 8003af2: 2264 movs r2, #100 ; 0x64 + 8003af4: fb02 f303 mul.w r3, r2, r3 + 8003af8: 60fb str r3, [r7, #12] /* Wait until RXNE flag is set */ do { if (count == 0U) - 8003cee: 68fb ldr r3, [r7, #12] - 8003cf0: 2b00 cmp r3, #0 - 8003cf2: d105 bne.n 8003d00 + 8003afa: 68fb ldr r3, [r7, #12] + 8003afc: 2b00 cmp r3, #0 + 8003afe: d105 bne.n 8003b0c { status = HAL_ERROR; - 8003cf4: 2301 movs r3, #1 - 8003cf6: 75fb strb r3, [r7, #23] + 8003b00: 2301 movs r3, #1 + 8003b02: 75fb strb r3, [r7, #23] hsubghz->ErrorCode = HAL_SUBGHZ_ERROR_TIMEOUT; - 8003cf8: 687b ldr r3, [r7, #4] - 8003cfa: 2201 movs r2, #1 - 8003cfc: 609a str r2, [r3, #8] + 8003b04: 687b ldr r3, [r7, #4] + 8003b06: 2201 movs r2, #1 + 8003b08: 609a str r2, [r3, #8] break; - 8003cfe: e008 b.n 8003d12 + 8003b0a: e008 b.n 8003b1e } count--; - 8003d00: 68fb ldr r3, [r7, #12] - 8003d02: 3b01 subs r3, #1 - 8003d04: 60fb str r3, [r7, #12] + 8003b0c: 68fb ldr r3, [r7, #12] + 8003b0e: 3b01 subs r3, #1 + 8003b10: 60fb str r3, [r7, #12] } while (READ_BIT(SUBGHZSPI->SR, SPI_SR_RXNE) != (SPI_SR_RXNE)); - 8003d06: 4b08 ldr r3, [pc, #32] ; (8003d28 ) - 8003d08: 689b ldr r3, [r3, #8] - 8003d0a: f003 0301 and.w r3, r3, #1 - 8003d0e: 2b01 cmp r3, #1 - 8003d10: d1ed bne.n 8003cee + 8003b12: 4b08 ldr r3, [pc, #32] ; (8003b34 ) + 8003b14: 689b ldr r3, [r3, #8] + 8003b16: f003 0301 and.w r3, r3, #1 + 8003b1a: 2b01 cmp r3, #1 + 8003b1c: d1ed bne.n 8003afa /* Flush Rx data */ READ_REG(SUBGHZSPI->DR); - 8003d12: 4b05 ldr r3, [pc, #20] ; (8003d28 ) - 8003d14: 68db ldr r3, [r3, #12] + 8003b1e: 4b05 ldr r3, [pc, #20] ; (8003b34 ) + 8003b20: 68db ldr r3, [r3, #12] return status; - 8003d16: 7dfb ldrb r3, [r7, #23] -} - 8003d18: 4618 mov r0, r3 - 8003d1a: 371c adds r7, #28 - 8003d1c: 46bd mov sp, r7 - 8003d1e: bc80 pop {r7} - 8003d20: 4770 bx lr - 8003d22: bf00 nop - 8003d24: 20000008 .word 0x20000008 - 8003d28: 58010000 .word 0x58010000 - 8003d2c: 5801000c .word 0x5801000c - -08003d30 : + 8003b22: 7dfb ldrb r3, [r7, #23] +} + 8003b24: 4618 mov r0, r3 + 8003b26: 371c adds r7, #28 + 8003b28: 46bd mov sp, r7 + 8003b2a: bc80 pop {r7} + 8003b2c: 4770 bx lr + 8003b2e: bf00 nop + 8003b30: 20000000 .word 0x20000000 + 8003b34: 58010000 .word 0x58010000 + 8003b38: 5801000c .word 0x5801000c + +08003b3c : * @param hsubghz pointer to a SUBGHZ_HandleTypeDef structure that contains * the handle information for SUBGHZ module. * @retval HAL status */ HAL_StatusTypeDef SUBGHZ_CheckDeviceReady(SUBGHZ_HandleTypeDef *hsubghz) { - 8003d30: b580 push {r7, lr} - 8003d32: b084 sub sp, #16 - 8003d34: af00 add r7, sp, #0 - 8003d36: 6078 str r0, [r7, #4] + 8003b3c: b580 push {r7, lr} + 8003b3e: b084 sub sp, #16 + 8003b40: af00 add r7, sp, #0 + 8003b42: 6078 str r0, [r7, #4] __IO uint32_t count; /* Wakeup radio in case of sleep mode: Select-Unselect radio */ if (hsubghz->DeepSleep == SUBGHZ_DEEP_SLEEP_ENABLE) - 8003d38: 687b ldr r3, [r7, #4] - 8003d3a: 791b ldrb r3, [r3, #4] - 8003d3c: 2b01 cmp r3, #1 - 8003d3e: d111 bne.n 8003d64 + 8003b44: 687b ldr r3, [r7, #4] + 8003b46: 791b ldrb r3, [r3, #4] + 8003b48: 2b01 cmp r3, #1 + 8003b4a: d111 bne.n 8003b70 { /* Initialize NSS switch Delay */ count = SUBGHZ_NSS_LOOP_TIME; - 8003d40: 4b0c ldr r3, [pc, #48] ; (8003d74 ) - 8003d42: 681a ldr r2, [r3, #0] - 8003d44: 4613 mov r3, r2 - 8003d46: 005b lsls r3, r3, #1 - 8003d48: 4413 add r3, r2 - 8003d4a: 00db lsls r3, r3, #3 - 8003d4c: 0c1b lsrs r3, r3, #16 - 8003d4e: 60fb str r3, [r7, #12] + 8003b4c: 4b0c ldr r3, [pc, #48] ; (8003b80 ) + 8003b4e: 681a ldr r2, [r3, #0] + 8003b50: 4613 mov r3, r2 + 8003b52: 005b lsls r3, r3, #1 + 8003b54: 4413 add r3, r2 + 8003b56: 00db lsls r3, r3, #3 + 8003b58: 0c1b lsrs r3, r3, #16 + 8003b5a: 60fb str r3, [r7, #12] /* NSS = 0; */ LL_PWR_SelectSUBGHZSPI_NSS(); - 8003d50: f7ff fe3e bl 80039d0 + 8003b5c: f7ff fe3e bl 80037dc /* Wait Radio wakeup */ do { count--; - 8003d54: 68fb ldr r3, [r7, #12] - 8003d56: 3b01 subs r3, #1 - 8003d58: 60fb str r3, [r7, #12] + 8003b60: 68fb ldr r3, [r7, #12] + 8003b62: 3b01 subs r3, #1 + 8003b64: 60fb str r3, [r7, #12] } while (count != 0UL); - 8003d5a: 68fb ldr r3, [r7, #12] - 8003d5c: 2b00 cmp r3, #0 - 8003d5e: d1f9 bne.n 8003d54 + 8003b66: 68fb ldr r3, [r7, #12] + 8003b68: 2b00 cmp r3, #0 + 8003b6a: d1f9 bne.n 8003b60 /* NSS = 1 */ LL_PWR_UnselectSUBGHZSPI_NSS(); - 8003d60: f7ff fe26 bl 80039b0 + 8003b6c: f7ff fe26 bl 80037bc } return (SUBGHZ_WaitOnBusy(hsubghz)); - 8003d64: 6878 ldr r0, [r7, #4] - 8003d66: f000 f807 bl 8003d78 - 8003d6a: 4603 mov r3, r0 + 8003b70: 6878 ldr r0, [r7, #4] + 8003b72: f000 f807 bl 8003b84 + 8003b76: 4603 mov r3, r0 } - 8003d6c: 4618 mov r0, r3 - 8003d6e: 3710 adds r7, #16 - 8003d70: 46bd mov sp, r7 - 8003d72: bd80 pop {r7, pc} - 8003d74: 20000008 .word 0x20000008 + 8003b78: 4618 mov r0, r3 + 8003b7a: 3710 adds r7, #16 + 8003b7c: 46bd mov sp, r7 + 8003b7e: bd80 pop {r7, pc} + 8003b80: 20000000 .word 0x20000000 -08003d78 : +08003b84 : * @param hsubghz pointer to a SUBGHZ_HandleTypeDef structure that contains * the handle information for SUBGHZ module. * @retval HAL status */ HAL_StatusTypeDef SUBGHZ_WaitOnBusy(SUBGHZ_HandleTypeDef *hsubghz) { - 8003d78: b580 push {r7, lr} - 8003d7a: b086 sub sp, #24 - 8003d7c: af00 add r7, sp, #0 - 8003d7e: 6078 str r0, [r7, #4] + 8003b84: b580 push {r7, lr} + 8003b86: b086 sub sp, #24 + 8003b88: af00 add r7, sp, #0 + 8003b8a: 6078 str r0, [r7, #4] HAL_StatusTypeDef status; __IO uint32_t count; uint32_t mask; status = HAL_OK; - 8003d80: 2300 movs r3, #0 - 8003d82: 75fb strb r3, [r7, #23] + 8003b8c: 2300 movs r3, #0 + 8003b8e: 75fb strb r3, [r7, #23] count = SUBGHZ_DEFAULT_TIMEOUT * SUBGHZ_RFBUSY_LOOP_TIME; - 8003d84: 4b12 ldr r3, [pc, #72] ; (8003dd0 ) - 8003d86: 681a ldr r2, [r3, #0] - 8003d88: 4613 mov r3, r2 - 8003d8a: 005b lsls r3, r3, #1 - 8003d8c: 4413 add r3, r2 - 8003d8e: 00db lsls r3, r3, #3 - 8003d90: 0d1b lsrs r3, r3, #20 - 8003d92: 2264 movs r2, #100 ; 0x64 - 8003d94: fb02 f303 mul.w r3, r2, r3 - 8003d98: 60fb str r3, [r7, #12] + 8003b90: 4b12 ldr r3, [pc, #72] ; (8003bdc ) + 8003b92: 681a ldr r2, [r3, #0] + 8003b94: 4613 mov r3, r2 + 8003b96: 005b lsls r3, r3, #1 + 8003b98: 4413 add r3, r2 + 8003b9a: 00db lsls r3, r3, #3 + 8003b9c: 0d1b lsrs r3, r3, #20 + 8003b9e: 2264 movs r2, #100 ; 0x64 + 8003ba0: fb02 f303 mul.w r3, r2, r3 + 8003ba4: 60fb str r3, [r7, #12] /* Wait until Busy signal is set */ do { mask = LL_PWR_IsActiveFlag_RFBUSYMS(); - 8003d9a: f7ff fe47 bl 8003a2c - 8003d9e: 6138 str r0, [r7, #16] + 8003ba6: f7ff fe47 bl 8003838 + 8003baa: 6138 str r0, [r7, #16] if (count == 0U) - 8003da0: 68fb ldr r3, [r7, #12] - 8003da2: 2b00 cmp r3, #0 - 8003da4: d105 bne.n 8003db2 + 8003bac: 68fb ldr r3, [r7, #12] + 8003bae: 2b00 cmp r3, #0 + 8003bb0: d105 bne.n 8003bbe { status = HAL_ERROR; - 8003da6: 2301 movs r3, #1 - 8003da8: 75fb strb r3, [r7, #23] + 8003bb2: 2301 movs r3, #1 + 8003bb4: 75fb strb r3, [r7, #23] hsubghz->ErrorCode = HAL_SUBGHZ_ERROR_RF_BUSY; - 8003daa: 687b ldr r3, [r7, #4] - 8003dac: 2202 movs r2, #2 - 8003dae: 609a str r2, [r3, #8] + 8003bb6: 687b ldr r3, [r7, #4] + 8003bb8: 2202 movs r2, #2 + 8003bba: 609a str r2, [r3, #8] break; - 8003db0: e009 b.n 8003dc6 + 8003bbc: e009 b.n 8003bd2 } count--; - 8003db2: 68fb ldr r3, [r7, #12] - 8003db4: 3b01 subs r3, #1 - 8003db6: 60fb str r3, [r7, #12] + 8003bbe: 68fb ldr r3, [r7, #12] + 8003bc0: 3b01 subs r3, #1 + 8003bc2: 60fb str r3, [r7, #12] } while ((LL_PWR_IsActiveFlag_RFBUSYS()& mask) == 1UL); - 8003db8: f7ff fe26 bl 8003a08 - 8003dbc: 4602 mov r2, r0 - 8003dbe: 693b ldr r3, [r7, #16] - 8003dc0: 4013 ands r3, r2 - 8003dc2: 2b01 cmp r3, #1 - 8003dc4: d0e9 beq.n 8003d9a + 8003bc4: f7ff fe26 bl 8003814 + 8003bc8: 4602 mov r2, r0 + 8003bca: 693b ldr r3, [r7, #16] + 8003bcc: 4013 ands r3, r2 + 8003bce: 2b01 cmp r3, #1 + 8003bd0: d0e9 beq.n 8003ba6 return status; - 8003dc6: 7dfb ldrb r3, [r7, #23] + 8003bd2: 7dfb ldrb r3, [r7, #23] } - 8003dc8: 4618 mov r0, r3 - 8003dca: 3718 adds r7, #24 - 8003dcc: 46bd mov sp, r7 - 8003dce: bd80 pop {r7, pc} - 8003dd0: 20000008 .word 0x20000008 + 8003bd4: 4618 mov r0, r3 + 8003bd6: 3718 adds r7, #24 + 8003bd8: 46bd mov sp, r7 + 8003bda: bd80 pop {r7, pc} + 8003bdc: 20000000 .word 0x20000000 -08003dd4 : +08003be0 : { - 8003dd4: b480 push {r7} - 8003dd6: b083 sub sp, #12 - 8003dd8: af00 add r7, sp, #0 - 8003dda: 6078 str r0, [r7, #4] + 8003be0: b480 push {r7} + 8003be2: b083 sub sp, #12 + 8003be4: af00 add r7, sp, #0 + 8003be6: 6078 str r0, [r7, #4] return (uint32_t)(READ_BIT(RCC->CCIPR, USARTx) | (USARTx << 16)); - 8003ddc: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8003de0: f8d3 2088 ldr.w r2, [r3, #136] ; 0x88 - 8003de4: 687b ldr r3, [r7, #4] - 8003de6: 401a ands r2, r3 - 8003de8: 687b ldr r3, [r7, #4] - 8003dea: 041b lsls r3, r3, #16 - 8003dec: 4313 orrs r3, r2 -} - 8003dee: 4618 mov r0, r3 - 8003df0: 370c adds r7, #12 - 8003df2: 46bd mov sp, r7 - 8003df4: bc80 pop {r7} - 8003df6: 4770 bx lr - -08003df8 : -{ - 8003df8: b480 push {r7} - 8003dfa: b083 sub sp, #12 - 8003dfc: af00 add r7, sp, #0 - 8003dfe: 6078 str r0, [r7, #4] + 8003be8: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8003bec: f8d3 2088 ldr.w r2, [r3, #136] ; 0x88 + 8003bf0: 687b ldr r3, [r7, #4] + 8003bf2: 401a ands r2, r3 + 8003bf4: 687b ldr r3, [r7, #4] + 8003bf6: 041b lsls r3, r3, #16 + 8003bf8: 4313 orrs r3, r2 +} + 8003bfa: 4618 mov r0, r3 + 8003bfc: 370c adds r7, #12 + 8003bfe: 46bd mov sp, r7 + 8003c00: bc80 pop {r7} + 8003c02: 4770 bx lr + +08003c04 : +{ + 8003c04: b480 push {r7} + 8003c06: b083 sub sp, #12 + 8003c08: af00 add r7, sp, #0 + 8003c0a: 6078 str r0, [r7, #4] return (uint32_t)(READ_BIT(RCC->CCIPR, LPUARTx)); - 8003e00: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8003e04: f8d3 2088 ldr.w r2, [r3, #136] ; 0x88 - 8003e08: 687b ldr r3, [r7, #4] - 8003e0a: 4013 ands r3, r2 -} - 8003e0c: 4618 mov r0, r3 - 8003e0e: 370c adds r7, #12 - 8003e10: 46bd mov sp, r7 - 8003e12: bc80 pop {r7} - 8003e14: 4770 bx lr - -08003e16 : + 8003c0c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8003c10: f8d3 2088 ldr.w r2, [r3, #136] ; 0x88 + 8003c14: 687b ldr r3, [r7, #4] + 8003c16: 4013 ands r3, r2 +} + 8003c18: 4618 mov r0, r3 + 8003c1a: 370c adds r7, #12 + 8003c1c: 46bd mov sp, r7 + 8003c1e: bc80 pop {r7} + 8003c20: 4770 bx lr + +08003c22 : * 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) { - 8003e16: b580 push {r7, lr} - 8003e18: b082 sub sp, #8 - 8003e1a: af00 add r7, sp, #0 - 8003e1c: 6078 str r0, [r7, #4] + 8003c22: b580 push {r7, lr} + 8003c24: b082 sub sp, #8 + 8003c26: af00 add r7, sp, #0 + 8003c28: 6078 str r0, [r7, #4] /* Check the UART handle allocation */ if (huart == NULL) - 8003e1e: 687b ldr r3, [r7, #4] - 8003e20: 2b00 cmp r3, #0 - 8003e22: d101 bne.n 8003e28 + 8003c2a: 687b ldr r3, [r7, #4] + 8003c2c: 2b00 cmp r3, #0 + 8003c2e: d101 bne.n 8003c34 { return HAL_ERROR; - 8003e24: 2301 movs r3, #1 - 8003e26: e042 b.n 8003eae + 8003c30: 2301 movs r3, #1 + 8003c32: e042 b.n 8003cba { /* Check the parameters */ assert_param((IS_UART_INSTANCE(huart->Instance)) || (IS_LPUART_INSTANCE(huart->Instance))); } if (huart->gState == HAL_UART_STATE_RESET) - 8003e28: 687b ldr r3, [r7, #4] - 8003e2a: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 8003e2e: 2b00 cmp r3, #0 - 8003e30: d106 bne.n 8003e40 + 8003c34: 687b ldr r3, [r7, #4] + 8003c36: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 8003c3a: 2b00 cmp r3, #0 + 8003c3c: d106 bne.n 8003c4c { /* Allocate lock resource and initialize it */ huart->Lock = HAL_UNLOCKED; - 8003e32: 687b ldr r3, [r7, #4] - 8003e34: 2200 movs r2, #0 - 8003e36: f883 2084 strb.w r2, [r3, #132] ; 0x84 + 8003c3e: 687b ldr r3, [r7, #4] + 8003c40: 2200 movs r2, #0 + 8003c42: f883 2084 strb.w r2, [r3, #132] ; 0x84 /* Init the low level hardware */ huart->MspInitCallback(huart); #else /* Init the low level hardware : GPIO, CLOCK */ HAL_UART_MspInit(huart); - 8003e3a: 6878 ldr r0, [r7, #4] - 8003e3c: f7fd fc24 bl 8001688 + 8003c46: 6878 ldr r0, [r7, #4] + 8003c48: f7fd fc24 bl 8001494 #endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ } huart->gState = HAL_UART_STATE_BUSY; - 8003e40: 687b ldr r3, [r7, #4] - 8003e42: 2224 movs r2, #36 ; 0x24 - 8003e44: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 8003c4c: 687b ldr r3, [r7, #4] + 8003c4e: 2224 movs r2, #36 ; 0x24 + 8003c50: f8c3 2088 str.w r2, [r3, #136] ; 0x88 __HAL_UART_DISABLE(huart); - 8003e48: 687b ldr r3, [r7, #4] - 8003e4a: 681b ldr r3, [r3, #0] - 8003e4c: 681a ldr r2, [r3, #0] - 8003e4e: 687b ldr r3, [r7, #4] - 8003e50: 681b ldr r3, [r3, #0] - 8003e52: f022 0201 bic.w r2, r2, #1 - 8003e56: 601a str r2, [r3, #0] + 8003c54: 687b ldr r3, [r7, #4] + 8003c56: 681b ldr r3, [r3, #0] + 8003c58: 681a ldr r2, [r3, #0] + 8003c5a: 687b ldr r3, [r7, #4] + 8003c5c: 681b ldr r3, [r3, #0] + 8003c5e: f022 0201 bic.w r2, r2, #1 + 8003c62: 601a str r2, [r3, #0] /* Set the UART Communication parameters */ if (UART_SetConfig(huart) == HAL_ERROR) - 8003e58: 6878 ldr r0, [r7, #4] - 8003e5a: f000 f82d bl 8003eb8 - 8003e5e: 4603 mov r3, r0 - 8003e60: 2b01 cmp r3, #1 - 8003e62: d101 bne.n 8003e68 + 8003c64: 6878 ldr r0, [r7, #4] + 8003c66: f000 f82d bl 8003cc4 + 8003c6a: 4603 mov r3, r0 + 8003c6c: 2b01 cmp r3, #1 + 8003c6e: d101 bne.n 8003c74 { return HAL_ERROR; - 8003e64: 2301 movs r3, #1 - 8003e66: e022 b.n 8003eae + 8003c70: 2301 movs r3, #1 + 8003c72: e022 b.n 8003cba } if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT) - 8003e68: 687b ldr r3, [r7, #4] - 8003e6a: 6a9b ldr r3, [r3, #40] ; 0x28 - 8003e6c: 2b00 cmp r3, #0 - 8003e6e: d002 beq.n 8003e76 + 8003c74: 687b ldr r3, [r7, #4] + 8003c76: 6a9b ldr r3, [r3, #40] ; 0x28 + 8003c78: 2b00 cmp r3, #0 + 8003c7a: d002 beq.n 8003c82 { UART_AdvFeatureConfig(huart); - 8003e70: 6878 ldr r0, [r7, #4] - 8003e72: f000 fa95 bl 80043a0 + 8003c7c: 6878 ldr r0, [r7, #4] + 8003c7e: f000 fa95 bl 80041ac } /* 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)); - 8003e76: 687b ldr r3, [r7, #4] - 8003e78: 681b ldr r3, [r3, #0] - 8003e7a: 685a ldr r2, [r3, #4] - 8003e7c: 687b ldr r3, [r7, #4] - 8003e7e: 681b ldr r3, [r3, #0] - 8003e80: f422 4290 bic.w r2, r2, #18432 ; 0x4800 - 8003e84: 605a str r2, [r3, #4] + 8003c82: 687b ldr r3, [r7, #4] + 8003c84: 681b ldr r3, [r3, #0] + 8003c86: 685a ldr r2, [r3, #4] + 8003c88: 687b ldr r3, [r7, #4] + 8003c8a: 681b ldr r3, [r3, #0] + 8003c8c: f422 4290 bic.w r2, r2, #18432 ; 0x4800 + 8003c90: 605a str r2, [r3, #4] CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN)); - 8003e86: 687b ldr r3, [r7, #4] - 8003e88: 681b ldr r3, [r3, #0] - 8003e8a: 689a ldr r2, [r3, #8] - 8003e8c: 687b ldr r3, [r7, #4] - 8003e8e: 681b ldr r3, [r3, #0] - 8003e90: f022 022a bic.w r2, r2, #42 ; 0x2a - 8003e94: 609a str r2, [r3, #8] + 8003c92: 687b ldr r3, [r7, #4] + 8003c94: 681b ldr r3, [r3, #0] + 8003c96: 689a ldr r2, [r3, #8] + 8003c98: 687b ldr r3, [r7, #4] + 8003c9a: 681b ldr r3, [r3, #0] + 8003c9c: f022 022a bic.w r2, r2, #42 ; 0x2a + 8003ca0: 609a str r2, [r3, #8] __HAL_UART_ENABLE(huart); - 8003e96: 687b ldr r3, [r7, #4] - 8003e98: 681b ldr r3, [r3, #0] - 8003e9a: 681a ldr r2, [r3, #0] - 8003e9c: 687b ldr r3, [r7, #4] - 8003e9e: 681b ldr r3, [r3, #0] - 8003ea0: f042 0201 orr.w r2, r2, #1 - 8003ea4: 601a str r2, [r3, #0] + 8003ca2: 687b ldr r3, [r7, #4] + 8003ca4: 681b ldr r3, [r3, #0] + 8003ca6: 681a ldr r2, [r3, #0] + 8003ca8: 687b ldr r3, [r7, #4] + 8003caa: 681b ldr r3, [r3, #0] + 8003cac: f042 0201 orr.w r2, r2, #1 + 8003cb0: 601a str r2, [r3, #0] /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */ return (UART_CheckIdleState(huart)); - 8003ea6: 6878 ldr r0, [r7, #4] - 8003ea8: f000 fb1b bl 80044e2 - 8003eac: 4603 mov r3, r0 -} - 8003eae: 4618 mov r0, r3 - 8003eb0: 3708 adds r7, #8 - 8003eb2: 46bd mov sp, r7 - 8003eb4: bd80 pop {r7, pc} + 8003cb2: 6878 ldr r0, [r7, #4] + 8003cb4: f000 fb1b bl 80042ee + 8003cb8: 4603 mov r3, r0 +} + 8003cba: 4618 mov r0, r3 + 8003cbc: 3708 adds r7, #8 + 8003cbe: 46bd mov sp, r7 + 8003cc0: bd80 pop {r7, pc} ... -08003eb8 : +08003cc4 : * @brief Configure the UART peripheral. * @param huart UART handle. * @retval HAL status */ HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart) { - 8003eb8: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} - 8003ebc: b08c sub sp, #48 ; 0x30 - 8003ebe: af00 add r7, sp, #0 - 8003ec0: 6178 str r0, [r7, #20] + 8003cc4: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} + 8003cc8: b08c sub sp, #48 ; 0x30 + 8003cca: af00 add r7, sp, #0 + 8003ccc: 6178 str r0, [r7, #20] uint32_t tmpreg; uint16_t brrtemp; UART_ClockSourceTypeDef clocksource; uint32_t usartdiv; HAL_StatusTypeDef ret = HAL_OK; - 8003ec2: 2300 movs r3, #0 - 8003ec4: f887 302a strb.w r3, [r7, #42] ; 0x2a + 8003cce: 2300 movs r3, #0 + 8003cd0: f887 302a strb.w r3, [r7, #42] ; 0x2a * 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 ; - 8003ec8: 697b ldr r3, [r7, #20] - 8003eca: 689a ldr r2, [r3, #8] - 8003ecc: 697b ldr r3, [r7, #20] - 8003ece: 691b ldr r3, [r3, #16] - 8003ed0: 431a orrs r2, r3 - 8003ed2: 697b ldr r3, [r7, #20] - 8003ed4: 695b ldr r3, [r3, #20] - 8003ed6: 431a orrs r2, r3 - 8003ed8: 697b ldr r3, [r7, #20] - 8003eda: 69db ldr r3, [r3, #28] - 8003edc: 4313 orrs r3, r2 - 8003ede: 62fb str r3, [r7, #44] ; 0x2c + 8003cd4: 697b ldr r3, [r7, #20] + 8003cd6: 689a ldr r2, [r3, #8] + 8003cd8: 697b ldr r3, [r7, #20] + 8003cda: 691b ldr r3, [r3, #16] + 8003cdc: 431a orrs r2, r3 + 8003cde: 697b ldr r3, [r7, #20] + 8003ce0: 695b ldr r3, [r3, #20] + 8003ce2: 431a orrs r2, r3 + 8003ce4: 697b ldr r3, [r7, #20] + 8003ce6: 69db ldr r3, [r3, #28] + 8003ce8: 4313 orrs r3, r2 + 8003cea: 62fb str r3, [r7, #44] ; 0x2c MODIFY_REG(huart->Instance->CR1, USART_CR1_FIELDS, tmpreg); - 8003ee0: 697b ldr r3, [r7, #20] - 8003ee2: 681b ldr r3, [r3, #0] - 8003ee4: 681a ldr r2, [r3, #0] - 8003ee6: 4b94 ldr r3, [pc, #592] ; (8004138 ) - 8003ee8: 4013 ands r3, r2 - 8003eea: 697a ldr r2, [r7, #20] - 8003eec: 6812 ldr r2, [r2, #0] - 8003eee: 6af9 ldr r1, [r7, #44] ; 0x2c - 8003ef0: 430b orrs r3, r1 - 8003ef2: 6013 str r3, [r2, #0] + 8003cec: 697b ldr r3, [r7, #20] + 8003cee: 681b ldr r3, [r3, #0] + 8003cf0: 681a ldr r2, [r3, #0] + 8003cf2: 4b94 ldr r3, [pc, #592] ; (8003f44 ) + 8003cf4: 4013 ands r3, r2 + 8003cf6: 697a ldr r2, [r7, #20] + 8003cf8: 6812 ldr r2, [r2, #0] + 8003cfa: 6af9 ldr r1, [r7, #44] ; 0x2c + 8003cfc: 430b orrs r3, r1 + 8003cfe: 6013 str r3, [r2, #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); - 8003ef4: 697b ldr r3, [r7, #20] - 8003ef6: 681b ldr r3, [r3, #0] - 8003ef8: 685b ldr r3, [r3, #4] - 8003efa: f423 5140 bic.w r1, r3, #12288 ; 0x3000 - 8003efe: 697b ldr r3, [r7, #20] - 8003f00: 68da ldr r2, [r3, #12] - 8003f02: 697b ldr r3, [r7, #20] - 8003f04: 681b ldr r3, [r3, #0] - 8003f06: 430a orrs r2, r1 - 8003f08: 605a str r2, [r3, #4] + 8003d00: 697b ldr r3, [r7, #20] + 8003d02: 681b ldr r3, [r3, #0] + 8003d04: 685b ldr r3, [r3, #4] + 8003d06: f423 5140 bic.w r1, r3, #12288 ; 0x3000 + 8003d0a: 697b ldr r3, [r7, #20] + 8003d0c: 68da ldr r2, [r3, #12] + 8003d0e: 697b ldr r3, [r7, #20] + 8003d10: 681b ldr r3, [r3, #0] + 8003d12: 430a orrs r2, r1 + 8003d14: 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; - 8003f0a: 697b ldr r3, [r7, #20] - 8003f0c: 699b ldr r3, [r3, #24] - 8003f0e: 62fb str r3, [r7, #44] ; 0x2c + 8003d16: 697b ldr r3, [r7, #20] + 8003d18: 699b ldr r3, [r3, #24] + 8003d1a: 62fb str r3, [r7, #44] ; 0x2c if (!(UART_INSTANCE_LOWPOWER(huart))) - 8003f10: 697b ldr r3, [r7, #20] - 8003f12: 681b ldr r3, [r3, #0] - 8003f14: 4a89 ldr r2, [pc, #548] ; (800413c ) - 8003f16: 4293 cmp r3, r2 - 8003f18: d004 beq.n 8003f24 + 8003d1c: 697b ldr r3, [r7, #20] + 8003d1e: 681b ldr r3, [r3, #0] + 8003d20: 4a89 ldr r2, [pc, #548] ; (8003f48 ) + 8003d22: 4293 cmp r3, r2 + 8003d24: d004 beq.n 8003d30 { tmpreg |= huart->Init.OneBitSampling; - 8003f1a: 697b ldr r3, [r7, #20] - 8003f1c: 6a1b ldr r3, [r3, #32] - 8003f1e: 6afa ldr r2, [r7, #44] ; 0x2c - 8003f20: 4313 orrs r3, r2 - 8003f22: 62fb str r3, [r7, #44] ; 0x2c + 8003d26: 697b ldr r3, [r7, #20] + 8003d28: 6a1b ldr r3, [r3, #32] + 8003d2a: 6afa ldr r2, [r7, #44] ; 0x2c + 8003d2c: 4313 orrs r3, r2 + 8003d2e: 62fb str r3, [r7, #44] ; 0x2c } MODIFY_REG(huart->Instance->CR3, USART_CR3_FIELDS, tmpreg); - 8003f24: 697b ldr r3, [r7, #20] - 8003f26: 681b ldr r3, [r3, #0] - 8003f28: 689b ldr r3, [r3, #8] - 8003f2a: f023 436e bic.w r3, r3, #3992977408 ; 0xee000000 - 8003f2e: f423 6330 bic.w r3, r3, #2816 ; 0xb00 - 8003f32: 697a ldr r2, [r7, #20] - 8003f34: 6812 ldr r2, [r2, #0] - 8003f36: 6af9 ldr r1, [r7, #44] ; 0x2c - 8003f38: 430b orrs r3, r1 - 8003f3a: 6093 str r3, [r2, #8] + 8003d30: 697b ldr r3, [r7, #20] + 8003d32: 681b ldr r3, [r3, #0] + 8003d34: 689b ldr r3, [r3, #8] + 8003d36: f023 436e bic.w r3, r3, #3992977408 ; 0xee000000 + 8003d3a: f423 6330 bic.w r3, r3, #2816 ; 0xb00 + 8003d3e: 697a ldr r2, [r7, #20] + 8003d40: 6812 ldr r2, [r2, #0] + 8003d42: 6af9 ldr r1, [r7, #44] ; 0x2c + 8003d44: 430b orrs r3, r1 + 8003d46: 6093 str r3, [r2, #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); - 8003f3c: 697b ldr r3, [r7, #20] - 8003f3e: 681b ldr r3, [r3, #0] - 8003f40: 6adb ldr r3, [r3, #44] ; 0x2c - 8003f42: f023 010f bic.w r1, r3, #15 - 8003f46: 697b ldr r3, [r7, #20] - 8003f48: 6a5a ldr r2, [r3, #36] ; 0x24 - 8003f4a: 697b ldr r3, [r7, #20] - 8003f4c: 681b ldr r3, [r3, #0] - 8003f4e: 430a orrs r2, r1 - 8003f50: 62da str r2, [r3, #44] ; 0x2c + 8003d48: 697b ldr r3, [r7, #20] + 8003d4a: 681b ldr r3, [r3, #0] + 8003d4c: 6adb ldr r3, [r3, #44] ; 0x2c + 8003d4e: f023 010f bic.w r1, r3, #15 + 8003d52: 697b ldr r3, [r7, #20] + 8003d54: 6a5a ldr r2, [r3, #36] ; 0x24 + 8003d56: 697b ldr r3, [r7, #20] + 8003d58: 681b ldr r3, [r3, #0] + 8003d5a: 430a orrs r2, r1 + 8003d5c: 62da str r2, [r3, #44] ; 0x2c /*-------------------------- USART BRR Configuration -----------------------*/ UART_GETCLOCKSOURCE(huart, clocksource); - 8003f52: 697b ldr r3, [r7, #20] - 8003f54: 681b ldr r3, [r3, #0] - 8003f56: 4a7a ldr r2, [pc, #488] ; (8004140 ) - 8003f58: 4293 cmp r3, r2 - 8003f5a: d127 bne.n 8003fac - 8003f5c: 2003 movs r0, #3 - 8003f5e: f7ff ff39 bl 8003dd4 - 8003f62: 4603 mov r3, r0 - 8003f64: f5a3 3340 sub.w r3, r3, #196608 ; 0x30000 - 8003f68: 2b03 cmp r3, #3 - 8003f6a: d81b bhi.n 8003fa4 - 8003f6c: a201 add r2, pc, #4 ; (adr r2, 8003f74 ) - 8003f6e: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8003f72: bf00 nop - 8003f74: 08003f85 .word 0x08003f85 - 8003f78: 08003f95 .word 0x08003f95 - 8003f7c: 08003f8d .word 0x08003f8d - 8003f80: 08003f9d .word 0x08003f9d - 8003f84: 2301 movs r3, #1 - 8003f86: f887 302b strb.w r3, [r7, #43] ; 0x2b - 8003f8a: e080 b.n 800408e - 8003f8c: 2302 movs r3, #2 - 8003f8e: f887 302b strb.w r3, [r7, #43] ; 0x2b - 8003f92: e07c b.n 800408e - 8003f94: 2304 movs r3, #4 - 8003f96: f887 302b strb.w r3, [r7, #43] ; 0x2b - 8003f9a: e078 b.n 800408e - 8003f9c: 2308 movs r3, #8 - 8003f9e: f887 302b strb.w r3, [r7, #43] ; 0x2b - 8003fa2: e074 b.n 800408e - 8003fa4: 2310 movs r3, #16 - 8003fa6: f887 302b strb.w r3, [r7, #43] ; 0x2b - 8003faa: e070 b.n 800408e - 8003fac: 697b ldr r3, [r7, #20] - 8003fae: 681b ldr r3, [r3, #0] - 8003fb0: 4a64 ldr r2, [pc, #400] ; (8004144 ) - 8003fb2: 4293 cmp r3, r2 - 8003fb4: d138 bne.n 8004028 - 8003fb6: 200c movs r0, #12 - 8003fb8: f7ff ff0c bl 8003dd4 - 8003fbc: 4603 mov r3, r0 - 8003fbe: f5a3 2340 sub.w r3, r3, #786432 ; 0xc0000 - 8003fc2: 2b0c cmp r3, #12 - 8003fc4: d82c bhi.n 8004020 - 8003fc6: a201 add r2, pc, #4 ; (adr r2, 8003fcc ) - 8003fc8: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8003fcc: 08004001 .word 0x08004001 - 8003fd0: 08004021 .word 0x08004021 - 8003fd4: 08004021 .word 0x08004021 - 8003fd8: 08004021 .word 0x08004021 - 8003fdc: 08004011 .word 0x08004011 - 8003fe0: 08004021 .word 0x08004021 - 8003fe4: 08004021 .word 0x08004021 - 8003fe8: 08004021 .word 0x08004021 - 8003fec: 08004009 .word 0x08004009 - 8003ff0: 08004021 .word 0x08004021 - 8003ff4: 08004021 .word 0x08004021 - 8003ff8: 08004021 .word 0x08004021 - 8003ffc: 08004019 .word 0x08004019 - 8004000: 2300 movs r3, #0 - 8004002: f887 302b strb.w r3, [r7, #43] ; 0x2b - 8004006: e042 b.n 800408e - 8004008: 2302 movs r3, #2 - 800400a: f887 302b strb.w r3, [r7, #43] ; 0x2b - 800400e: e03e b.n 800408e - 8004010: 2304 movs r3, #4 - 8004012: f887 302b strb.w r3, [r7, #43] ; 0x2b - 8004016: e03a b.n 800408e - 8004018: 2308 movs r3, #8 - 800401a: f887 302b strb.w r3, [r7, #43] ; 0x2b - 800401e: e036 b.n 800408e - 8004020: 2310 movs r3, #16 - 8004022: f887 302b strb.w r3, [r7, #43] ; 0x2b - 8004026: e032 b.n 800408e - 8004028: 697b ldr r3, [r7, #20] - 800402a: 681b ldr r3, [r3, #0] - 800402c: 4a43 ldr r2, [pc, #268] ; (800413c ) - 800402e: 4293 cmp r3, r2 - 8004030: d12a bne.n 8004088 - 8004032: f44f 6040 mov.w r0, #3072 ; 0xc00 - 8004036: f7ff fedf bl 8003df8 - 800403a: 4603 mov r3, r0 - 800403c: f5b3 6f40 cmp.w r3, #3072 ; 0xc00 - 8004040: d01a beq.n 8004078 - 8004042: f5b3 6f40 cmp.w r3, #3072 ; 0xc00 - 8004046: d81b bhi.n 8004080 - 8004048: f5b3 6f00 cmp.w r3, #2048 ; 0x800 - 800404c: d00c beq.n 8004068 - 800404e: f5b3 6f00 cmp.w r3, #2048 ; 0x800 - 8004052: d815 bhi.n 8004080 - 8004054: 2b00 cmp r3, #0 - 8004056: d003 beq.n 8004060 - 8004058: f5b3 6f80 cmp.w r3, #1024 ; 0x400 - 800405c: d008 beq.n 8004070 - 800405e: e00f b.n 8004080 - 8004060: 2300 movs r3, #0 - 8004062: f887 302b strb.w r3, [r7, #43] ; 0x2b - 8004066: e012 b.n 800408e - 8004068: 2302 movs r3, #2 - 800406a: f887 302b strb.w r3, [r7, #43] ; 0x2b - 800406e: e00e b.n 800408e - 8004070: 2304 movs r3, #4 - 8004072: f887 302b strb.w r3, [r7, #43] ; 0x2b - 8004076: e00a b.n 800408e - 8004078: 2308 movs r3, #8 - 800407a: f887 302b strb.w r3, [r7, #43] ; 0x2b - 800407e: e006 b.n 800408e - 8004080: 2310 movs r3, #16 - 8004082: f887 302b strb.w r3, [r7, #43] ; 0x2b - 8004086: e002 b.n 800408e - 8004088: 2310 movs r3, #16 - 800408a: f887 302b strb.w r3, [r7, #43] ; 0x2b + 8003d5e: 697b ldr r3, [r7, #20] + 8003d60: 681b ldr r3, [r3, #0] + 8003d62: 4a7a ldr r2, [pc, #488] ; (8003f4c ) + 8003d64: 4293 cmp r3, r2 + 8003d66: d127 bne.n 8003db8 + 8003d68: 2003 movs r0, #3 + 8003d6a: f7ff ff39 bl 8003be0 + 8003d6e: 4603 mov r3, r0 + 8003d70: f5a3 3340 sub.w r3, r3, #196608 ; 0x30000 + 8003d74: 2b03 cmp r3, #3 + 8003d76: d81b bhi.n 8003db0 + 8003d78: a201 add r2, pc, #4 ; (adr r2, 8003d80 ) + 8003d7a: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8003d7e: bf00 nop + 8003d80: 08003d91 .word 0x08003d91 + 8003d84: 08003da1 .word 0x08003da1 + 8003d88: 08003d99 .word 0x08003d99 + 8003d8c: 08003da9 .word 0x08003da9 + 8003d90: 2301 movs r3, #1 + 8003d92: f887 302b strb.w r3, [r7, #43] ; 0x2b + 8003d96: e080 b.n 8003e9a + 8003d98: 2302 movs r3, #2 + 8003d9a: f887 302b strb.w r3, [r7, #43] ; 0x2b + 8003d9e: e07c b.n 8003e9a + 8003da0: 2304 movs r3, #4 + 8003da2: f887 302b strb.w r3, [r7, #43] ; 0x2b + 8003da6: e078 b.n 8003e9a + 8003da8: 2308 movs r3, #8 + 8003daa: f887 302b strb.w r3, [r7, #43] ; 0x2b + 8003dae: e074 b.n 8003e9a + 8003db0: 2310 movs r3, #16 + 8003db2: f887 302b strb.w r3, [r7, #43] ; 0x2b + 8003db6: e070 b.n 8003e9a + 8003db8: 697b ldr r3, [r7, #20] + 8003dba: 681b ldr r3, [r3, #0] + 8003dbc: 4a64 ldr r2, [pc, #400] ; (8003f50 ) + 8003dbe: 4293 cmp r3, r2 + 8003dc0: d138 bne.n 8003e34 + 8003dc2: 200c movs r0, #12 + 8003dc4: f7ff ff0c bl 8003be0 + 8003dc8: 4603 mov r3, r0 + 8003dca: f5a3 2340 sub.w r3, r3, #786432 ; 0xc0000 + 8003dce: 2b0c cmp r3, #12 + 8003dd0: d82c bhi.n 8003e2c + 8003dd2: a201 add r2, pc, #4 ; (adr r2, 8003dd8 ) + 8003dd4: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8003dd8: 08003e0d .word 0x08003e0d + 8003ddc: 08003e2d .word 0x08003e2d + 8003de0: 08003e2d .word 0x08003e2d + 8003de4: 08003e2d .word 0x08003e2d + 8003de8: 08003e1d .word 0x08003e1d + 8003dec: 08003e2d .word 0x08003e2d + 8003df0: 08003e2d .word 0x08003e2d + 8003df4: 08003e2d .word 0x08003e2d + 8003df8: 08003e15 .word 0x08003e15 + 8003dfc: 08003e2d .word 0x08003e2d + 8003e00: 08003e2d .word 0x08003e2d + 8003e04: 08003e2d .word 0x08003e2d + 8003e08: 08003e25 .word 0x08003e25 + 8003e0c: 2300 movs r3, #0 + 8003e0e: f887 302b strb.w r3, [r7, #43] ; 0x2b + 8003e12: e042 b.n 8003e9a + 8003e14: 2302 movs r3, #2 + 8003e16: f887 302b strb.w r3, [r7, #43] ; 0x2b + 8003e1a: e03e b.n 8003e9a + 8003e1c: 2304 movs r3, #4 + 8003e1e: f887 302b strb.w r3, [r7, #43] ; 0x2b + 8003e22: e03a b.n 8003e9a + 8003e24: 2308 movs r3, #8 + 8003e26: f887 302b strb.w r3, [r7, #43] ; 0x2b + 8003e2a: e036 b.n 8003e9a + 8003e2c: 2310 movs r3, #16 + 8003e2e: f887 302b strb.w r3, [r7, #43] ; 0x2b + 8003e32: e032 b.n 8003e9a + 8003e34: 697b ldr r3, [r7, #20] + 8003e36: 681b ldr r3, [r3, #0] + 8003e38: 4a43 ldr r2, [pc, #268] ; (8003f48 ) + 8003e3a: 4293 cmp r3, r2 + 8003e3c: d12a bne.n 8003e94 + 8003e3e: f44f 6040 mov.w r0, #3072 ; 0xc00 + 8003e42: f7ff fedf bl 8003c04 + 8003e46: 4603 mov r3, r0 + 8003e48: f5b3 6f40 cmp.w r3, #3072 ; 0xc00 + 8003e4c: d01a beq.n 8003e84 + 8003e4e: f5b3 6f40 cmp.w r3, #3072 ; 0xc00 + 8003e52: d81b bhi.n 8003e8c + 8003e54: f5b3 6f00 cmp.w r3, #2048 ; 0x800 + 8003e58: d00c beq.n 8003e74 + 8003e5a: f5b3 6f00 cmp.w r3, #2048 ; 0x800 + 8003e5e: d815 bhi.n 8003e8c + 8003e60: 2b00 cmp r3, #0 + 8003e62: d003 beq.n 8003e6c + 8003e64: f5b3 6f80 cmp.w r3, #1024 ; 0x400 + 8003e68: d008 beq.n 8003e7c + 8003e6a: e00f b.n 8003e8c + 8003e6c: 2300 movs r3, #0 + 8003e6e: f887 302b strb.w r3, [r7, #43] ; 0x2b + 8003e72: e012 b.n 8003e9a + 8003e74: 2302 movs r3, #2 + 8003e76: f887 302b strb.w r3, [r7, #43] ; 0x2b + 8003e7a: e00e b.n 8003e9a + 8003e7c: 2304 movs r3, #4 + 8003e7e: f887 302b strb.w r3, [r7, #43] ; 0x2b + 8003e82: e00a b.n 8003e9a + 8003e84: 2308 movs r3, #8 + 8003e86: f887 302b strb.w r3, [r7, #43] ; 0x2b + 8003e8a: e006 b.n 8003e9a + 8003e8c: 2310 movs r3, #16 + 8003e8e: f887 302b strb.w r3, [r7, #43] ; 0x2b + 8003e92: e002 b.n 8003e9a + 8003e94: 2310 movs r3, #16 + 8003e96: f887 302b strb.w r3, [r7, #43] ; 0x2b /* Check LPUART instance */ if (UART_INSTANCE_LOWPOWER(huart)) - 800408e: 697b ldr r3, [r7, #20] - 8004090: 681b ldr r3, [r3, #0] - 8004092: 4a2a ldr r2, [pc, #168] ; (800413c ) - 8004094: 4293 cmp r3, r2 - 8004096: f040 80a4 bne.w 80041e2 + 8003e9a: 697b ldr r3, [r7, #20] + 8003e9c: 681b ldr r3, [r3, #0] + 8003e9e: 4a2a ldr r2, [pc, #168] ; (8003f48 ) + 8003ea0: 4293 cmp r3, r2 + 8003ea2: f040 80a4 bne.w 8003fee { /* Retrieve frequency clock */ switch (clocksource) - 800409a: f897 302b ldrb.w r3, [r7, #43] ; 0x2b - 800409e: 2b08 cmp r3, #8 - 80040a0: d823 bhi.n 80040ea - 80040a2: a201 add r2, pc, #4 ; (adr r2, 80040a8 ) - 80040a4: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 80040a8: 080040cd .word 0x080040cd - 80040ac: 080040eb .word 0x080040eb - 80040b0: 080040d5 .word 0x080040d5 - 80040b4: 080040eb .word 0x080040eb - 80040b8: 080040db .word 0x080040db - 80040bc: 080040eb .word 0x080040eb - 80040c0: 080040eb .word 0x080040eb - 80040c4: 080040eb .word 0x080040eb - 80040c8: 080040e3 .word 0x080040e3 + 8003ea6: f897 302b ldrb.w r3, [r7, #43] ; 0x2b + 8003eaa: 2b08 cmp r3, #8 + 8003eac: d823 bhi.n 8003ef6 + 8003eae: a201 add r2, pc, #4 ; (adr r2, 8003eb4 ) + 8003eb0: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8003eb4: 08003ed9 .word 0x08003ed9 + 8003eb8: 08003ef7 .word 0x08003ef7 + 8003ebc: 08003ee1 .word 0x08003ee1 + 8003ec0: 08003ef7 .word 0x08003ef7 + 8003ec4: 08003ee7 .word 0x08003ee7 + 8003ec8: 08003ef7 .word 0x08003ef7 + 8003ecc: 08003ef7 .word 0x08003ef7 + 8003ed0: 08003ef7 .word 0x08003ef7 + 8003ed4: 08003eef .word 0x08003eef { case UART_CLOCKSOURCE_PCLK1: pclk = HAL_RCC_GetPCLK1Freq(); - 80040cc: f7ff f978 bl 80033c0 - 80040d0: 6278 str r0, [r7, #36] ; 0x24 + 8003ed8: f7ff f978 bl 80031cc + 8003edc: 6278 str r0, [r7, #36] ; 0x24 break; - 80040d2: e010 b.n 80040f6 + 8003ede: e010 b.n 8003f02 case UART_CLOCKSOURCE_HSI: pclk = (uint32_t) HSI_VALUE; - 80040d4: 4b1c ldr r3, [pc, #112] ; (8004148 ) - 80040d6: 627b str r3, [r7, #36] ; 0x24 + 8003ee0: 4b1c ldr r3, [pc, #112] ; (8003f54 ) + 8003ee2: 627b str r3, [r7, #36] ; 0x24 break; - 80040d8: e00d b.n 80040f6 + 8003ee4: e00d b.n 8003f02 case UART_CLOCKSOURCE_SYSCLK: pclk = HAL_RCC_GetSysClockFreq(); - 80040da: f7ff f8bd bl 8003258 - 80040de: 6278 str r0, [r7, #36] ; 0x24 + 8003ee6: f7ff f8bd bl 8003064 + 8003eea: 6278 str r0, [r7, #36] ; 0x24 break; - 80040e0: e009 b.n 80040f6 + 8003eec: e009 b.n 8003f02 case UART_CLOCKSOURCE_LSE: pclk = (uint32_t) LSE_VALUE; - 80040e2: f44f 4300 mov.w r3, #32768 ; 0x8000 - 80040e6: 627b str r3, [r7, #36] ; 0x24 + 8003eee: f44f 4300 mov.w r3, #32768 ; 0x8000 + 8003ef2: 627b str r3, [r7, #36] ; 0x24 break; - 80040e8: e005 b.n 80040f6 + 8003ef4: e005 b.n 8003f02 default: pclk = 0U; - 80040ea: 2300 movs r3, #0 - 80040ec: 627b str r3, [r7, #36] ; 0x24 + 8003ef6: 2300 movs r3, #0 + 8003ef8: 627b str r3, [r7, #36] ; 0x24 ret = HAL_ERROR; - 80040ee: 2301 movs r3, #1 - 80040f0: f887 302a strb.w r3, [r7, #42] ; 0x2a + 8003efa: 2301 movs r3, #1 + 8003efc: f887 302a strb.w r3, [r7, #42] ; 0x2a break; - 80040f4: bf00 nop + 8003f00: bf00 nop } /* If proper clock source reported */ if (pclk != 0U) - 80040f6: 6a7b ldr r3, [r7, #36] ; 0x24 - 80040f8: 2b00 cmp r3, #0 - 80040fa: f000 8137 beq.w 800436c + 8003f02: 6a7b ldr r3, [r7, #36] ; 0x24 + 8003f04: 2b00 cmp r3, #0 + 8003f06: f000 8137 beq.w 8004178 { /* Compute clock after Prescaler */ lpuart_ker_ck_pres = (pclk / UARTPrescTable[huart->Init.ClockPrescaler]); - 80040fe: 697b ldr r3, [r7, #20] - 8004100: 6a5b ldr r3, [r3, #36] ; 0x24 - 8004102: 4a12 ldr r2, [pc, #72] ; (800414c ) - 8004104: f832 3013 ldrh.w r3, [r2, r3, lsl #1] - 8004108: 461a mov r2, r3 - 800410a: 6a7b ldr r3, [r7, #36] ; 0x24 - 800410c: fbb3 f3f2 udiv r3, r3, r2 - 8004110: 61bb str r3, [r7, #24] + 8003f0a: 697b ldr r3, [r7, #20] + 8003f0c: 6a5b ldr r3, [r3, #36] ; 0x24 + 8003f0e: 4a12 ldr r2, [pc, #72] ; (8003f58 ) + 8003f10: f832 3013 ldrh.w r3, [r2, r3, lsl #1] + 8003f14: 461a mov r2, r3 + 8003f16: 6a7b ldr r3, [r7, #36] ; 0x24 + 8003f18: fbb3 f3f2 udiv r3, r3, r2 + 8003f1c: 61bb str r3, [r7, #24] /* Ensure that Frequency clock is in the range [3 * baudrate, 4096 * baudrate] */ if ((lpuart_ker_ck_pres < (3U * huart->Init.BaudRate)) || - 8004112: 697b ldr r3, [r7, #20] - 8004114: 685a ldr r2, [r3, #4] - 8004116: 4613 mov r3, r2 - 8004118: 005b lsls r3, r3, #1 - 800411a: 4413 add r3, r2 - 800411c: 69ba ldr r2, [r7, #24] - 800411e: 429a cmp r2, r3 - 8004120: d305 bcc.n 800412e + 8003f1e: 697b ldr r3, [r7, #20] + 8003f20: 685a ldr r2, [r3, #4] + 8003f22: 4613 mov r3, r2 + 8003f24: 005b lsls r3, r3, #1 + 8003f26: 4413 add r3, r2 + 8003f28: 69ba ldr r2, [r7, #24] + 8003f2a: 429a cmp r2, r3 + 8003f2c: d305 bcc.n 8003f3a (lpuart_ker_ck_pres > (4096U * huart->Init.BaudRate))) - 8004122: 697b ldr r3, [r7, #20] - 8004124: 685b ldr r3, [r3, #4] - 8004126: 031b lsls r3, r3, #12 + 8003f2e: 697b ldr r3, [r7, #20] + 8003f30: 685b ldr r3, [r3, #4] + 8003f32: 031b lsls r3, r3, #12 if ((lpuart_ker_ck_pres < (3U * huart->Init.BaudRate)) || - 8004128: 69ba ldr r2, [r7, #24] - 800412a: 429a cmp r2, r3 - 800412c: d910 bls.n 8004150 + 8003f34: 69ba ldr r2, [r7, #24] + 8003f36: 429a cmp r2, r3 + 8003f38: d910 bls.n 8003f5c { ret = HAL_ERROR; - 800412e: 2301 movs r3, #1 - 8004130: f887 302a strb.w r3, [r7, #42] ; 0x2a - 8004134: e11a b.n 800436c - 8004136: bf00 nop - 8004138: cfff69f3 .word 0xcfff69f3 - 800413c: 40008000 .word 0x40008000 - 8004140: 40013800 .word 0x40013800 - 8004144: 40004400 .word 0x40004400 - 8004148: 00f42400 .word 0x00f42400 - 800414c: 08004ab4 .word 0x08004ab4 + 8003f3a: 2301 movs r3, #1 + 8003f3c: f887 302a strb.w r3, [r7, #42] ; 0x2a + 8003f40: e11a b.n 8004178 + 8003f42: bf00 nop + 8003f44: cfff69f3 .word 0xcfff69f3 + 8003f48: 40008000 .word 0x40008000 + 8003f4c: 40013800 .word 0x40013800 + 8003f50: 40004400 .word 0x40004400 + 8003f54: 00f42400 .word 0x00f42400 + 8003f58: 08004858 .word 0x08004858 } else { /* Check computed UsartDiv value is in allocated range (it is forbidden to write values lower than 0x300 in the LPUART_BRR register) */ usartdiv = (uint32_t)(UART_DIV_LPUART(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler)); - 8004150: 6a7b ldr r3, [r7, #36] ; 0x24 - 8004152: 2200 movs r2, #0 - 8004154: 60bb str r3, [r7, #8] - 8004156: 60fa str r2, [r7, #12] - 8004158: 697b ldr r3, [r7, #20] - 800415a: 6a5b ldr r3, [r3, #36] ; 0x24 - 800415c: 4a8e ldr r2, [pc, #568] ; (8004398 ) - 800415e: f832 3013 ldrh.w r3, [r2, r3, lsl #1] - 8004162: b29b uxth r3, r3 - 8004164: 2200 movs r2, #0 - 8004166: 603b str r3, [r7, #0] - 8004168: 607a str r2, [r7, #4] - 800416a: e9d7 2300 ldrd r2, r3, [r7] - 800416e: e9d7 0102 ldrd r0, r1, [r7, #8] - 8004172: f7fc fbef bl 8000954 <__aeabi_uldivmod> - 8004176: 4602 mov r2, r0 - 8004178: 460b mov r3, r1 - 800417a: 4610 mov r0, r2 - 800417c: 4619 mov r1, r3 - 800417e: f04f 0200 mov.w r2, #0 - 8004182: f04f 0300 mov.w r3, #0 - 8004186: 020b lsls r3, r1, #8 - 8004188: ea43 6310 orr.w r3, r3, r0, lsr #24 - 800418c: 0202 lsls r2, r0, #8 - 800418e: 6979 ldr r1, [r7, #20] - 8004190: 6849 ldr r1, [r1, #4] - 8004192: 0849 lsrs r1, r1, #1 - 8004194: 2000 movs r0, #0 - 8004196: 460c mov r4, r1 - 8004198: 4605 mov r5, r0 - 800419a: eb12 0804 adds.w r8, r2, r4 - 800419e: eb43 0905 adc.w r9, r3, r5 - 80041a2: 697b ldr r3, [r7, #20] - 80041a4: 685b ldr r3, [r3, #4] - 80041a6: 2200 movs r2, #0 - 80041a8: 469a mov sl, r3 - 80041aa: 4693 mov fp, r2 - 80041ac: 4652 mov r2, sl - 80041ae: 465b mov r3, fp - 80041b0: 4640 mov r0, r8 - 80041b2: 4649 mov r1, r9 - 80041b4: f7fc fbce bl 8000954 <__aeabi_uldivmod> - 80041b8: 4602 mov r2, r0 - 80041ba: 460b mov r3, r1 - 80041bc: 4613 mov r3, r2 - 80041be: 623b str r3, [r7, #32] + 8003f5c: 6a7b ldr r3, [r7, #36] ; 0x24 + 8003f5e: 2200 movs r2, #0 + 8003f60: 60bb str r3, [r7, #8] + 8003f62: 60fa str r2, [r7, #12] + 8003f64: 697b ldr r3, [r7, #20] + 8003f66: 6a5b ldr r3, [r3, #36] ; 0x24 + 8003f68: 4a8e ldr r2, [pc, #568] ; (80041a4 ) + 8003f6a: f832 3013 ldrh.w r3, [r2, r3, lsl #1] + 8003f6e: b29b uxth r3, r3 + 8003f70: 2200 movs r2, #0 + 8003f72: 603b str r3, [r7, #0] + 8003f74: 607a str r2, [r7, #4] + 8003f76: e9d7 2300 ldrd r2, r3, [r7] + 8003f7a: e9d7 0102 ldrd r0, r1, [r7, #8] + 8003f7e: f7fc fce9 bl 8000954 <__aeabi_uldivmod> + 8003f82: 4602 mov r2, r0 + 8003f84: 460b mov r3, r1 + 8003f86: 4610 mov r0, r2 + 8003f88: 4619 mov r1, r3 + 8003f8a: f04f 0200 mov.w r2, #0 + 8003f8e: f04f 0300 mov.w r3, #0 + 8003f92: 020b lsls r3, r1, #8 + 8003f94: ea43 6310 orr.w r3, r3, r0, lsr #24 + 8003f98: 0202 lsls r2, r0, #8 + 8003f9a: 6979 ldr r1, [r7, #20] + 8003f9c: 6849 ldr r1, [r1, #4] + 8003f9e: 0849 lsrs r1, r1, #1 + 8003fa0: 2000 movs r0, #0 + 8003fa2: 460c mov r4, r1 + 8003fa4: 4605 mov r5, r0 + 8003fa6: eb12 0804 adds.w r8, r2, r4 + 8003faa: eb43 0905 adc.w r9, r3, r5 + 8003fae: 697b ldr r3, [r7, #20] + 8003fb0: 685b ldr r3, [r3, #4] + 8003fb2: 2200 movs r2, #0 + 8003fb4: 469a mov sl, r3 + 8003fb6: 4693 mov fp, r2 + 8003fb8: 4652 mov r2, sl + 8003fba: 465b mov r3, fp + 8003fbc: 4640 mov r0, r8 + 8003fbe: 4649 mov r1, r9 + 8003fc0: f7fc fcc8 bl 8000954 <__aeabi_uldivmod> + 8003fc4: 4602 mov r2, r0 + 8003fc6: 460b mov r3, r1 + 8003fc8: 4613 mov r3, r2 + 8003fca: 623b str r3, [r7, #32] if ((usartdiv >= LPUART_BRR_MIN) && (usartdiv <= LPUART_BRR_MAX)) - 80041c0: 6a3b ldr r3, [r7, #32] - 80041c2: f5b3 7f40 cmp.w r3, #768 ; 0x300 - 80041c6: d308 bcc.n 80041da - 80041c8: 6a3b ldr r3, [r7, #32] - 80041ca: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 - 80041ce: d204 bcs.n 80041da + 8003fcc: 6a3b ldr r3, [r7, #32] + 8003fce: f5b3 7f40 cmp.w r3, #768 ; 0x300 + 8003fd2: d308 bcc.n 8003fe6 + 8003fd4: 6a3b ldr r3, [r7, #32] + 8003fd6: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 + 8003fda: d204 bcs.n 8003fe6 { huart->Instance->BRR = usartdiv; - 80041d0: 697b ldr r3, [r7, #20] - 80041d2: 681b ldr r3, [r3, #0] - 80041d4: 6a3a ldr r2, [r7, #32] - 80041d6: 60da str r2, [r3, #12] - 80041d8: e0c8 b.n 800436c + 8003fdc: 697b ldr r3, [r7, #20] + 8003fde: 681b ldr r3, [r3, #0] + 8003fe0: 6a3a ldr r2, [r7, #32] + 8003fe2: 60da str r2, [r3, #12] + 8003fe4: e0c8 b.n 8004178 } else { ret = HAL_ERROR; - 80041da: 2301 movs r3, #1 - 80041dc: f887 302a strb.w r3, [r7, #42] ; 0x2a - 80041e0: e0c4 b.n 800436c + 8003fe6: 2301 movs r3, #1 + 8003fe8: f887 302a strb.w r3, [r7, #42] ; 0x2a + 8003fec: e0c4 b.n 8004178 } /* 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) - 80041e2: 697b ldr r3, [r7, #20] - 80041e4: 69db ldr r3, [r3, #28] - 80041e6: f5b3 4f00 cmp.w r3, #32768 ; 0x8000 - 80041ea: d167 bne.n 80042bc + 8003fee: 697b ldr r3, [r7, #20] + 8003ff0: 69db ldr r3, [r3, #28] + 8003ff2: f5b3 4f00 cmp.w r3, #32768 ; 0x8000 + 8003ff6: d167 bne.n 80040c8 { switch (clocksource) - 80041ec: f897 302b ldrb.w r3, [r7, #43] ; 0x2b - 80041f0: 2b08 cmp r3, #8 - 80041f2: d828 bhi.n 8004246 - 80041f4: a201 add r2, pc, #4 ; (adr r2, 80041fc ) - 80041f6: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 80041fa: bf00 nop - 80041fc: 08004221 .word 0x08004221 - 8004200: 08004229 .word 0x08004229 - 8004204: 08004231 .word 0x08004231 - 8004208: 08004247 .word 0x08004247 - 800420c: 08004237 .word 0x08004237 - 8004210: 08004247 .word 0x08004247 - 8004214: 08004247 .word 0x08004247 - 8004218: 08004247 .word 0x08004247 - 800421c: 0800423f .word 0x0800423f + 8003ff8: f897 302b ldrb.w r3, [r7, #43] ; 0x2b + 8003ffc: 2b08 cmp r3, #8 + 8003ffe: d828 bhi.n 8004052 + 8004000: a201 add r2, pc, #4 ; (adr r2, 8004008 ) + 8004002: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8004006: bf00 nop + 8004008: 0800402d .word 0x0800402d + 800400c: 08004035 .word 0x08004035 + 8004010: 0800403d .word 0x0800403d + 8004014: 08004053 .word 0x08004053 + 8004018: 08004043 .word 0x08004043 + 800401c: 08004053 .word 0x08004053 + 8004020: 08004053 .word 0x08004053 + 8004024: 08004053 .word 0x08004053 + 8004028: 0800404b .word 0x0800404b { case UART_CLOCKSOURCE_PCLK1: pclk = HAL_RCC_GetPCLK1Freq(); - 8004220: f7ff f8ce bl 80033c0 - 8004224: 6278 str r0, [r7, #36] ; 0x24 + 800402c: f7ff f8ce bl 80031cc + 8004030: 6278 str r0, [r7, #36] ; 0x24 break; - 8004226: e014 b.n 8004252 + 8004032: e014 b.n 800405e case UART_CLOCKSOURCE_PCLK2: pclk = HAL_RCC_GetPCLK2Freq(); - 8004228: f7ff f8dc bl 80033e4 - 800422c: 6278 str r0, [r7, #36] ; 0x24 + 8004034: f7ff f8dc bl 80031f0 + 8004038: 6278 str r0, [r7, #36] ; 0x24 break; - 800422e: e010 b.n 8004252 + 800403a: e010 b.n 800405e case UART_CLOCKSOURCE_HSI: pclk = (uint32_t) HSI_VALUE; - 8004230: 4b5a ldr r3, [pc, #360] ; (800439c ) - 8004232: 627b str r3, [r7, #36] ; 0x24 + 800403c: 4b5a ldr r3, [pc, #360] ; (80041a8 ) + 800403e: 627b str r3, [r7, #36] ; 0x24 break; - 8004234: e00d b.n 8004252 + 8004040: e00d b.n 800405e case UART_CLOCKSOURCE_SYSCLK: pclk = HAL_RCC_GetSysClockFreq(); - 8004236: f7ff f80f bl 8003258 - 800423a: 6278 str r0, [r7, #36] ; 0x24 + 8004042: f7ff f80f bl 8003064 + 8004046: 6278 str r0, [r7, #36] ; 0x24 break; - 800423c: e009 b.n 8004252 + 8004048: e009 b.n 800405e case UART_CLOCKSOURCE_LSE: pclk = (uint32_t) LSE_VALUE; - 800423e: f44f 4300 mov.w r3, #32768 ; 0x8000 - 8004242: 627b str r3, [r7, #36] ; 0x24 + 800404a: f44f 4300 mov.w r3, #32768 ; 0x8000 + 800404e: 627b str r3, [r7, #36] ; 0x24 break; - 8004244: e005 b.n 8004252 + 8004050: e005 b.n 800405e default: pclk = 0U; - 8004246: 2300 movs r3, #0 - 8004248: 627b str r3, [r7, #36] ; 0x24 + 8004052: 2300 movs r3, #0 + 8004054: 627b str r3, [r7, #36] ; 0x24 ret = HAL_ERROR; - 800424a: 2301 movs r3, #1 - 800424c: f887 302a strb.w r3, [r7, #42] ; 0x2a + 8004056: 2301 movs r3, #1 + 8004058: f887 302a strb.w r3, [r7, #42] ; 0x2a break; - 8004250: bf00 nop + 800405c: bf00 nop } /* USARTDIV must be greater than or equal to 0d16 */ if (pclk != 0U) - 8004252: 6a7b ldr r3, [r7, #36] ; 0x24 - 8004254: 2b00 cmp r3, #0 - 8004256: f000 8089 beq.w 800436c + 800405e: 6a7b ldr r3, [r7, #36] ; 0x24 + 8004060: 2b00 cmp r3, #0 + 8004062: f000 8089 beq.w 8004178 { usartdiv = (uint32_t)(UART_DIV_SAMPLING8(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler)); - 800425a: 697b ldr r3, [r7, #20] - 800425c: 6a5b ldr r3, [r3, #36] ; 0x24 - 800425e: 4a4e ldr r2, [pc, #312] ; (8004398 ) - 8004260: f832 3013 ldrh.w r3, [r2, r3, lsl #1] - 8004264: 461a mov r2, r3 - 8004266: 6a7b ldr r3, [r7, #36] ; 0x24 - 8004268: fbb3 f3f2 udiv r3, r3, r2 - 800426c: 005a lsls r2, r3, #1 - 800426e: 697b ldr r3, [r7, #20] - 8004270: 685b ldr r3, [r3, #4] - 8004272: 085b lsrs r3, r3, #1 - 8004274: 441a add r2, r3 - 8004276: 697b ldr r3, [r7, #20] - 8004278: 685b ldr r3, [r3, #4] - 800427a: fbb2 f3f3 udiv r3, r2, r3 - 800427e: 623b str r3, [r7, #32] + 8004066: 697b ldr r3, [r7, #20] + 8004068: 6a5b ldr r3, [r3, #36] ; 0x24 + 800406a: 4a4e ldr r2, [pc, #312] ; (80041a4 ) + 800406c: f832 3013 ldrh.w r3, [r2, r3, lsl #1] + 8004070: 461a mov r2, r3 + 8004072: 6a7b ldr r3, [r7, #36] ; 0x24 + 8004074: fbb3 f3f2 udiv r3, r3, r2 + 8004078: 005a lsls r2, r3, #1 + 800407a: 697b ldr r3, [r7, #20] + 800407c: 685b ldr r3, [r3, #4] + 800407e: 085b lsrs r3, r3, #1 + 8004080: 441a add r2, r3 + 8004082: 697b ldr r3, [r7, #20] + 8004084: 685b ldr r3, [r3, #4] + 8004086: fbb2 f3f3 udiv r3, r2, r3 + 800408a: 623b str r3, [r7, #32] if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX)) - 8004280: 6a3b ldr r3, [r7, #32] - 8004282: 2b0f cmp r3, #15 - 8004284: d916 bls.n 80042b4 - 8004286: 6a3b ldr r3, [r7, #32] - 8004288: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 800428c: d212 bcs.n 80042b4 + 800408c: 6a3b ldr r3, [r7, #32] + 800408e: 2b0f cmp r3, #15 + 8004090: d916 bls.n 80040c0 + 8004092: 6a3b ldr r3, [r7, #32] + 8004094: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 8004098: d212 bcs.n 80040c0 { brrtemp = (uint16_t)(usartdiv & 0xFFF0U); - 800428e: 6a3b ldr r3, [r7, #32] - 8004290: b29b uxth r3, r3 - 8004292: f023 030f bic.w r3, r3, #15 - 8004296: 83fb strh r3, [r7, #30] + 800409a: 6a3b ldr r3, [r7, #32] + 800409c: b29b uxth r3, r3 + 800409e: f023 030f bic.w r3, r3, #15 + 80040a2: 83fb strh r3, [r7, #30] brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U); - 8004298: 6a3b ldr r3, [r7, #32] - 800429a: 085b lsrs r3, r3, #1 - 800429c: b29b uxth r3, r3 - 800429e: f003 0307 and.w r3, r3, #7 - 80042a2: b29a uxth r2, r3 - 80042a4: 8bfb ldrh r3, [r7, #30] - 80042a6: 4313 orrs r3, r2 - 80042a8: 83fb strh r3, [r7, #30] + 80040a4: 6a3b ldr r3, [r7, #32] + 80040a6: 085b lsrs r3, r3, #1 + 80040a8: b29b uxth r3, r3 + 80040aa: f003 0307 and.w r3, r3, #7 + 80040ae: b29a uxth r2, r3 + 80040b0: 8bfb ldrh r3, [r7, #30] + 80040b2: 4313 orrs r3, r2 + 80040b4: 83fb strh r3, [r7, #30] huart->Instance->BRR = brrtemp; - 80042aa: 697b ldr r3, [r7, #20] - 80042ac: 681b ldr r3, [r3, #0] - 80042ae: 8bfa ldrh r2, [r7, #30] - 80042b0: 60da str r2, [r3, #12] - 80042b2: e05b b.n 800436c + 80040b6: 697b ldr r3, [r7, #20] + 80040b8: 681b ldr r3, [r3, #0] + 80040ba: 8bfa ldrh r2, [r7, #30] + 80040bc: 60da str r2, [r3, #12] + 80040be: e05b b.n 8004178 } else { ret = HAL_ERROR; - 80042b4: 2301 movs r3, #1 - 80042b6: f887 302a strb.w r3, [r7, #42] ; 0x2a - 80042ba: e057 b.n 800436c + 80040c0: 2301 movs r3, #1 + 80040c2: f887 302a strb.w r3, [r7, #42] ; 0x2a + 80040c6: e057 b.n 8004178 } } } else { switch (clocksource) - 80042bc: f897 302b ldrb.w r3, [r7, #43] ; 0x2b - 80042c0: 2b08 cmp r3, #8 - 80042c2: d828 bhi.n 8004316 - 80042c4: a201 add r2, pc, #4 ; (adr r2, 80042cc ) - 80042c6: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 80042ca: bf00 nop - 80042cc: 080042f1 .word 0x080042f1 - 80042d0: 080042f9 .word 0x080042f9 - 80042d4: 08004301 .word 0x08004301 - 80042d8: 08004317 .word 0x08004317 - 80042dc: 08004307 .word 0x08004307 - 80042e0: 08004317 .word 0x08004317 - 80042e4: 08004317 .word 0x08004317 - 80042e8: 08004317 .word 0x08004317 - 80042ec: 0800430f .word 0x0800430f + 80040c8: f897 302b ldrb.w r3, [r7, #43] ; 0x2b + 80040cc: 2b08 cmp r3, #8 + 80040ce: d828 bhi.n 8004122 + 80040d0: a201 add r2, pc, #4 ; (adr r2, 80040d8 ) + 80040d2: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 80040d6: bf00 nop + 80040d8: 080040fd .word 0x080040fd + 80040dc: 08004105 .word 0x08004105 + 80040e0: 0800410d .word 0x0800410d + 80040e4: 08004123 .word 0x08004123 + 80040e8: 08004113 .word 0x08004113 + 80040ec: 08004123 .word 0x08004123 + 80040f0: 08004123 .word 0x08004123 + 80040f4: 08004123 .word 0x08004123 + 80040f8: 0800411b .word 0x0800411b { case UART_CLOCKSOURCE_PCLK1: pclk = HAL_RCC_GetPCLK1Freq(); - 80042f0: f7ff f866 bl 80033c0 - 80042f4: 6278 str r0, [r7, #36] ; 0x24 + 80040fc: f7ff f866 bl 80031cc + 8004100: 6278 str r0, [r7, #36] ; 0x24 break; - 80042f6: e014 b.n 8004322 + 8004102: e014 b.n 800412e case UART_CLOCKSOURCE_PCLK2: pclk = HAL_RCC_GetPCLK2Freq(); - 80042f8: f7ff f874 bl 80033e4 - 80042fc: 6278 str r0, [r7, #36] ; 0x24 + 8004104: f7ff f874 bl 80031f0 + 8004108: 6278 str r0, [r7, #36] ; 0x24 break; - 80042fe: e010 b.n 8004322 + 800410a: e010 b.n 800412e case UART_CLOCKSOURCE_HSI: pclk = (uint32_t) HSI_VALUE; - 8004300: 4b26 ldr r3, [pc, #152] ; (800439c ) - 8004302: 627b str r3, [r7, #36] ; 0x24 + 800410c: 4b26 ldr r3, [pc, #152] ; (80041a8 ) + 800410e: 627b str r3, [r7, #36] ; 0x24 break; - 8004304: e00d b.n 8004322 + 8004110: e00d b.n 800412e case UART_CLOCKSOURCE_SYSCLK: pclk = HAL_RCC_GetSysClockFreq(); - 8004306: f7fe ffa7 bl 8003258 - 800430a: 6278 str r0, [r7, #36] ; 0x24 + 8004112: f7fe ffa7 bl 8003064 + 8004116: 6278 str r0, [r7, #36] ; 0x24 break; - 800430c: e009 b.n 8004322 + 8004118: e009 b.n 800412e case UART_CLOCKSOURCE_LSE: pclk = (uint32_t) LSE_VALUE; - 800430e: f44f 4300 mov.w r3, #32768 ; 0x8000 - 8004312: 627b str r3, [r7, #36] ; 0x24 + 800411a: f44f 4300 mov.w r3, #32768 ; 0x8000 + 800411e: 627b str r3, [r7, #36] ; 0x24 break; - 8004314: e005 b.n 8004322 + 8004120: e005 b.n 800412e default: pclk = 0U; - 8004316: 2300 movs r3, #0 - 8004318: 627b str r3, [r7, #36] ; 0x24 + 8004122: 2300 movs r3, #0 + 8004124: 627b str r3, [r7, #36] ; 0x24 ret = HAL_ERROR; - 800431a: 2301 movs r3, #1 - 800431c: f887 302a strb.w r3, [r7, #42] ; 0x2a + 8004126: 2301 movs r3, #1 + 8004128: f887 302a strb.w r3, [r7, #42] ; 0x2a break; - 8004320: bf00 nop + 800412c: bf00 nop } if (pclk != 0U) - 8004322: 6a7b ldr r3, [r7, #36] ; 0x24 - 8004324: 2b00 cmp r3, #0 - 8004326: d021 beq.n 800436c + 800412e: 6a7b ldr r3, [r7, #36] ; 0x24 + 8004130: 2b00 cmp r3, #0 + 8004132: d021 beq.n 8004178 { /* USARTDIV must be greater than or equal to 0d16 */ usartdiv = (uint32_t)(UART_DIV_SAMPLING16(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler)); - 8004328: 697b ldr r3, [r7, #20] - 800432a: 6a5b ldr r3, [r3, #36] ; 0x24 - 800432c: 4a1a ldr r2, [pc, #104] ; (8004398 ) - 800432e: f832 3013 ldrh.w r3, [r2, r3, lsl #1] - 8004332: 461a mov r2, r3 - 8004334: 6a7b ldr r3, [r7, #36] ; 0x24 - 8004336: fbb3 f2f2 udiv r2, r3, r2 - 800433a: 697b ldr r3, [r7, #20] - 800433c: 685b ldr r3, [r3, #4] - 800433e: 085b lsrs r3, r3, #1 - 8004340: 441a add r2, r3 - 8004342: 697b ldr r3, [r7, #20] - 8004344: 685b ldr r3, [r3, #4] - 8004346: fbb2 f3f3 udiv r3, r2, r3 - 800434a: 623b str r3, [r7, #32] + 8004134: 697b ldr r3, [r7, #20] + 8004136: 6a5b ldr r3, [r3, #36] ; 0x24 + 8004138: 4a1a ldr r2, [pc, #104] ; (80041a4 ) + 800413a: f832 3013 ldrh.w r3, [r2, r3, lsl #1] + 800413e: 461a mov r2, r3 + 8004140: 6a7b ldr r3, [r7, #36] ; 0x24 + 8004142: fbb3 f2f2 udiv r2, r3, r2 + 8004146: 697b ldr r3, [r7, #20] + 8004148: 685b ldr r3, [r3, #4] + 800414a: 085b lsrs r3, r3, #1 + 800414c: 441a add r2, r3 + 800414e: 697b ldr r3, [r7, #20] + 8004150: 685b ldr r3, [r3, #4] + 8004152: fbb2 f3f3 udiv r3, r2, r3 + 8004156: 623b str r3, [r7, #32] if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX)) - 800434c: 6a3b ldr r3, [r7, #32] - 800434e: 2b0f cmp r3, #15 - 8004350: d909 bls.n 8004366 - 8004352: 6a3b ldr r3, [r7, #32] - 8004354: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 8004358: d205 bcs.n 8004366 + 8004158: 6a3b ldr r3, [r7, #32] + 800415a: 2b0f cmp r3, #15 + 800415c: d909 bls.n 8004172 + 800415e: 6a3b ldr r3, [r7, #32] + 8004160: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 8004164: d205 bcs.n 8004172 { huart->Instance->BRR = (uint16_t)usartdiv; - 800435a: 6a3b ldr r3, [r7, #32] - 800435c: b29a uxth r2, r3 - 800435e: 697b ldr r3, [r7, #20] - 8004360: 681b ldr r3, [r3, #0] - 8004362: 60da str r2, [r3, #12] - 8004364: e002 b.n 800436c + 8004166: 6a3b ldr r3, [r7, #32] + 8004168: b29a uxth r2, r3 + 800416a: 697b ldr r3, [r7, #20] + 800416c: 681b ldr r3, [r3, #0] + 800416e: 60da str r2, [r3, #12] + 8004170: e002 b.n 8004178 } else { ret = HAL_ERROR; - 8004366: 2301 movs r3, #1 - 8004368: f887 302a strb.w r3, [r7, #42] ; 0x2a + 8004172: 2301 movs r3, #1 + 8004174: f887 302a strb.w r3, [r7, #42] ; 0x2a } } } /* Initialize the number of data to process during RX/TX ISR execution */ huart->NbTxDataToProcess = 1; - 800436c: 697b ldr r3, [r7, #20] - 800436e: 2201 movs r2, #1 - 8004370: f8a3 206a strh.w r2, [r3, #106] ; 0x6a + 8004178: 697b ldr r3, [r7, #20] + 800417a: 2201 movs r2, #1 + 800417c: f8a3 206a strh.w r2, [r3, #106] ; 0x6a huart->NbRxDataToProcess = 1; - 8004374: 697b ldr r3, [r7, #20] - 8004376: 2201 movs r2, #1 - 8004378: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 + 8004180: 697b ldr r3, [r7, #20] + 8004182: 2201 movs r2, #1 + 8004184: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 /* Clear ISR function pointers */ huart->RxISR = NULL; - 800437c: 697b ldr r3, [r7, #20] - 800437e: 2200 movs r2, #0 - 8004380: 675a str r2, [r3, #116] ; 0x74 + 8004188: 697b ldr r3, [r7, #20] + 800418a: 2200 movs r2, #0 + 800418c: 675a str r2, [r3, #116] ; 0x74 huart->TxISR = NULL; - 8004382: 697b ldr r3, [r7, #20] - 8004384: 2200 movs r2, #0 - 8004386: 679a str r2, [r3, #120] ; 0x78 + 800418e: 697b ldr r3, [r7, #20] + 8004190: 2200 movs r2, #0 + 8004192: 679a str r2, [r3, #120] ; 0x78 return ret; - 8004388: f897 302a ldrb.w r3, [r7, #42] ; 0x2a + 8004194: f897 302a ldrb.w r3, [r7, #42] ; 0x2a } - 800438c: 4618 mov r0, r3 - 800438e: 3730 adds r7, #48 ; 0x30 - 8004390: 46bd mov sp, r7 - 8004392: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} - 8004396: bf00 nop - 8004398: 08004ab4 .word 0x08004ab4 - 800439c: 00f42400 .word 0x00f42400 + 8004198: 4618 mov r0, r3 + 800419a: 3730 adds r7, #48 ; 0x30 + 800419c: 46bd mov sp, r7 + 800419e: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} + 80041a2: bf00 nop + 80041a4: 08004858 .word 0x08004858 + 80041a8: 00f42400 .word 0x00f42400 -080043a0 : +080041ac : * @brief Configure the UART peripheral advanced features. * @param huart UART handle. * @retval None */ void UART_AdvFeatureConfig(UART_HandleTypeDef *huart) { - 80043a0: b480 push {r7} - 80043a2: b083 sub sp, #12 - 80043a4: af00 add r7, sp, #0 - 80043a6: 6078 str r0, [r7, #4] + 80041ac: b480 push {r7} + 80041ae: b083 sub sp, #12 + 80041b0: af00 add r7, sp, #0 + 80041b2: 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 TX pin active level inversion */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_TXINVERT_INIT)) - 80043a8: 687b ldr r3, [r7, #4] - 80043aa: 6a9b ldr r3, [r3, #40] ; 0x28 - 80043ac: f003 0301 and.w r3, r3, #1 - 80043b0: 2b00 cmp r3, #0 - 80043b2: d00a beq.n 80043ca + 80041b4: 687b ldr r3, [r7, #4] + 80041b6: 6a9b ldr r3, [r3, #40] ; 0x28 + 80041b8: f003 0301 and.w r3, r3, #1 + 80041bc: 2b00 cmp r3, #0 + 80041be: d00a beq.n 80041d6 { assert_param(IS_UART_ADVFEATURE_TXINV(huart->AdvancedInit.TxPinLevelInvert)); MODIFY_REG(huart->Instance->CR2, USART_CR2_TXINV, huart->AdvancedInit.TxPinLevelInvert); - 80043b4: 687b ldr r3, [r7, #4] - 80043b6: 681b ldr r3, [r3, #0] - 80043b8: 685b ldr r3, [r3, #4] - 80043ba: f423 3100 bic.w r1, r3, #131072 ; 0x20000 - 80043be: 687b ldr r3, [r7, #4] - 80043c0: 6ada ldr r2, [r3, #44] ; 0x2c - 80043c2: 687b ldr r3, [r7, #4] - 80043c4: 681b ldr r3, [r3, #0] - 80043c6: 430a orrs r2, r1 - 80043c8: 605a str r2, [r3, #4] + 80041c0: 687b ldr r3, [r7, #4] + 80041c2: 681b ldr r3, [r3, #0] + 80041c4: 685b ldr r3, [r3, #4] + 80041c6: f423 3100 bic.w r1, r3, #131072 ; 0x20000 + 80041ca: 687b ldr r3, [r7, #4] + 80041cc: 6ada ldr r2, [r3, #44] ; 0x2c + 80041ce: 687b ldr r3, [r7, #4] + 80041d0: 681b ldr r3, [r3, #0] + 80041d2: 430a orrs r2, r1 + 80041d4: 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)) - 80043ca: 687b ldr r3, [r7, #4] - 80043cc: 6a9b ldr r3, [r3, #40] ; 0x28 - 80043ce: f003 0302 and.w r3, r3, #2 - 80043d2: 2b00 cmp r3, #0 - 80043d4: d00a beq.n 80043ec + 80041d6: 687b ldr r3, [r7, #4] + 80041d8: 6a9b ldr r3, [r3, #40] ; 0x28 + 80041da: f003 0302 and.w r3, r3, #2 + 80041de: 2b00 cmp r3, #0 + 80041e0: d00a beq.n 80041f8 { assert_param(IS_UART_ADVFEATURE_RXINV(huart->AdvancedInit.RxPinLevelInvert)); MODIFY_REG(huart->Instance->CR2, USART_CR2_RXINV, huart->AdvancedInit.RxPinLevelInvert); - 80043d6: 687b ldr r3, [r7, #4] - 80043d8: 681b ldr r3, [r3, #0] - 80043da: 685b ldr r3, [r3, #4] - 80043dc: f423 3180 bic.w r1, r3, #65536 ; 0x10000 - 80043e0: 687b ldr r3, [r7, #4] - 80043e2: 6b1a ldr r2, [r3, #48] ; 0x30 - 80043e4: 687b ldr r3, [r7, #4] - 80043e6: 681b ldr r3, [r3, #0] - 80043e8: 430a orrs r2, r1 - 80043ea: 605a str r2, [r3, #4] + 80041e2: 687b ldr r3, [r7, #4] + 80041e4: 681b ldr r3, [r3, #0] + 80041e6: 685b ldr r3, [r3, #4] + 80041e8: f423 3180 bic.w r1, r3, #65536 ; 0x10000 + 80041ec: 687b ldr r3, [r7, #4] + 80041ee: 6b1a ldr r2, [r3, #48] ; 0x30 + 80041f0: 687b ldr r3, [r7, #4] + 80041f2: 681b ldr r3, [r3, #0] + 80041f4: 430a orrs r2, r1 + 80041f6: 605a str r2, [r3, #4] } /* if required, configure data inversion */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DATAINVERT_INIT)) - 80043ec: 687b ldr r3, [r7, #4] - 80043ee: 6a9b ldr r3, [r3, #40] ; 0x28 - 80043f0: f003 0304 and.w r3, r3, #4 - 80043f4: 2b00 cmp r3, #0 - 80043f6: d00a beq.n 800440e + 80041f8: 687b ldr r3, [r7, #4] + 80041fa: 6a9b ldr r3, [r3, #40] ; 0x28 + 80041fc: f003 0304 and.w r3, r3, #4 + 8004200: 2b00 cmp r3, #0 + 8004202: d00a beq.n 800421a { assert_param(IS_UART_ADVFEATURE_DATAINV(huart->AdvancedInit.DataInvert)); MODIFY_REG(huart->Instance->CR2, USART_CR2_DATAINV, huart->AdvancedInit.DataInvert); - 80043f8: 687b ldr r3, [r7, #4] - 80043fa: 681b ldr r3, [r3, #0] - 80043fc: 685b ldr r3, [r3, #4] - 80043fe: f423 2180 bic.w r1, r3, #262144 ; 0x40000 - 8004402: 687b ldr r3, [r7, #4] - 8004404: 6b5a ldr r2, [r3, #52] ; 0x34 - 8004406: 687b ldr r3, [r7, #4] - 8004408: 681b ldr r3, [r3, #0] - 800440a: 430a orrs r2, r1 - 800440c: 605a str r2, [r3, #4] + 8004204: 687b ldr r3, [r7, #4] + 8004206: 681b ldr r3, [r3, #0] + 8004208: 685b ldr r3, [r3, #4] + 800420a: f423 2180 bic.w r1, r3, #262144 ; 0x40000 + 800420e: 687b ldr r3, [r7, #4] + 8004210: 6b5a ldr r2, [r3, #52] ; 0x34 + 8004212: 687b ldr r3, [r7, #4] + 8004214: 681b ldr r3, [r3, #0] + 8004216: 430a orrs r2, r1 + 8004218: 605a str r2, [r3, #4] } /* if required, configure RX/TX pins swap */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_SWAP_INIT)) - 800440e: 687b ldr r3, [r7, #4] - 8004410: 6a9b ldr r3, [r3, #40] ; 0x28 - 8004412: f003 0308 and.w r3, r3, #8 - 8004416: 2b00 cmp r3, #0 - 8004418: d00a beq.n 8004430 + 800421a: 687b ldr r3, [r7, #4] + 800421c: 6a9b ldr r3, [r3, #40] ; 0x28 + 800421e: f003 0308 and.w r3, r3, #8 + 8004222: 2b00 cmp r3, #0 + 8004224: d00a beq.n 800423c { assert_param(IS_UART_ADVFEATURE_SWAP(huart->AdvancedInit.Swap)); MODIFY_REG(huart->Instance->CR2, USART_CR2_SWAP, huart->AdvancedInit.Swap); - 800441a: 687b ldr r3, [r7, #4] - 800441c: 681b ldr r3, [r3, #0] - 800441e: 685b ldr r3, [r3, #4] - 8004420: f423 4100 bic.w r1, r3, #32768 ; 0x8000 - 8004424: 687b ldr r3, [r7, #4] - 8004426: 6b9a ldr r2, [r3, #56] ; 0x38 - 8004428: 687b ldr r3, [r7, #4] - 800442a: 681b ldr r3, [r3, #0] - 800442c: 430a orrs r2, r1 - 800442e: 605a str r2, [r3, #4] + 8004226: 687b ldr r3, [r7, #4] + 8004228: 681b ldr r3, [r3, #0] + 800422a: 685b ldr r3, [r3, #4] + 800422c: f423 4100 bic.w r1, r3, #32768 ; 0x8000 + 8004230: 687b ldr r3, [r7, #4] + 8004232: 6b9a ldr r2, [r3, #56] ; 0x38 + 8004234: 687b ldr r3, [r7, #4] + 8004236: 681b ldr r3, [r3, #0] + 8004238: 430a orrs r2, r1 + 800423a: 605a str r2, [r3, #4] } /* if required, configure RX overrun detection disabling */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXOVERRUNDISABLE_INIT)) - 8004430: 687b ldr r3, [r7, #4] - 8004432: 6a9b ldr r3, [r3, #40] ; 0x28 - 8004434: f003 0310 and.w r3, r3, #16 - 8004438: 2b00 cmp r3, #0 - 800443a: d00a beq.n 8004452 + 800423c: 687b ldr r3, [r7, #4] + 800423e: 6a9b ldr r3, [r3, #40] ; 0x28 + 8004240: f003 0310 and.w r3, r3, #16 + 8004244: 2b00 cmp r3, #0 + 8004246: d00a beq.n 800425e { assert_param(IS_UART_OVERRUN(huart->AdvancedInit.OverrunDisable)); MODIFY_REG(huart->Instance->CR3, USART_CR3_OVRDIS, huart->AdvancedInit.OverrunDisable); - 800443c: 687b ldr r3, [r7, #4] - 800443e: 681b ldr r3, [r3, #0] - 8004440: 689b ldr r3, [r3, #8] - 8004442: f423 5180 bic.w r1, r3, #4096 ; 0x1000 - 8004446: 687b ldr r3, [r7, #4] - 8004448: 6bda ldr r2, [r3, #60] ; 0x3c - 800444a: 687b ldr r3, [r7, #4] - 800444c: 681b ldr r3, [r3, #0] - 800444e: 430a orrs r2, r1 - 8004450: 609a str r2, [r3, #8] + 8004248: 687b ldr r3, [r7, #4] + 800424a: 681b ldr r3, [r3, #0] + 800424c: 689b ldr r3, [r3, #8] + 800424e: f423 5180 bic.w r1, r3, #4096 ; 0x1000 + 8004252: 687b ldr r3, [r7, #4] + 8004254: 6bda ldr r2, [r3, #60] ; 0x3c + 8004256: 687b ldr r3, [r7, #4] + 8004258: 681b ldr r3, [r3, #0] + 800425a: 430a orrs r2, r1 + 800425c: 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)) - 8004452: 687b ldr r3, [r7, #4] - 8004454: 6a9b ldr r3, [r3, #40] ; 0x28 - 8004456: f003 0320 and.w r3, r3, #32 - 800445a: 2b00 cmp r3, #0 - 800445c: d00a beq.n 8004474 + 800425e: 687b ldr r3, [r7, #4] + 8004260: 6a9b ldr r3, [r3, #40] ; 0x28 + 8004262: f003 0320 and.w r3, r3, #32 + 8004266: 2b00 cmp r3, #0 + 8004268: d00a beq.n 8004280 { assert_param(IS_UART_ADVFEATURE_DMAONRXERROR(huart->AdvancedInit.DMADisableonRxError)); MODIFY_REG(huart->Instance->CR3, USART_CR3_DDRE, huart->AdvancedInit.DMADisableonRxError); - 800445e: 687b ldr r3, [r7, #4] - 8004460: 681b ldr r3, [r3, #0] - 8004462: 689b ldr r3, [r3, #8] - 8004464: f423 5100 bic.w r1, r3, #8192 ; 0x2000 - 8004468: 687b ldr r3, [r7, #4] - 800446a: 6c1a ldr r2, [r3, #64] ; 0x40 - 800446c: 687b ldr r3, [r7, #4] - 800446e: 681b ldr r3, [r3, #0] - 8004470: 430a orrs r2, r1 - 8004472: 609a str r2, [r3, #8] + 800426a: 687b ldr r3, [r7, #4] + 800426c: 681b ldr r3, [r3, #0] + 800426e: 689b ldr r3, [r3, #8] + 8004270: f423 5100 bic.w r1, r3, #8192 ; 0x2000 + 8004274: 687b ldr r3, [r7, #4] + 8004276: 6c1a ldr r2, [r3, #64] ; 0x40 + 8004278: 687b ldr r3, [r7, #4] + 800427a: 681b ldr r3, [r3, #0] + 800427c: 430a orrs r2, r1 + 800427e: 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)) - 8004474: 687b ldr r3, [r7, #4] - 8004476: 6a9b ldr r3, [r3, #40] ; 0x28 - 8004478: f003 0340 and.w r3, r3, #64 ; 0x40 - 800447c: 2b00 cmp r3, #0 - 800447e: d01a beq.n 80044b6 + 8004280: 687b ldr r3, [r7, #4] + 8004282: 6a9b ldr r3, [r3, #40] ; 0x28 + 8004284: f003 0340 and.w r3, r3, #64 ; 0x40 + 8004288: 2b00 cmp r3, #0 + 800428a: d01a beq.n 80042c2 { 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); - 8004480: 687b ldr r3, [r7, #4] - 8004482: 681b ldr r3, [r3, #0] - 8004484: 685b ldr r3, [r3, #4] - 8004486: f423 1180 bic.w r1, r3, #1048576 ; 0x100000 - 800448a: 687b ldr r3, [r7, #4] - 800448c: 6c5a ldr r2, [r3, #68] ; 0x44 - 800448e: 687b ldr r3, [r7, #4] - 8004490: 681b ldr r3, [r3, #0] - 8004492: 430a orrs r2, r1 - 8004494: 605a str r2, [r3, #4] + 800428c: 687b ldr r3, [r7, #4] + 800428e: 681b ldr r3, [r3, #0] + 8004290: 685b ldr r3, [r3, #4] + 8004292: f423 1180 bic.w r1, r3, #1048576 ; 0x100000 + 8004296: 687b ldr r3, [r7, #4] + 8004298: 6c5a ldr r2, [r3, #68] ; 0x44 + 800429a: 687b ldr r3, [r7, #4] + 800429c: 681b ldr r3, [r3, #0] + 800429e: 430a orrs r2, r1 + 80042a0: 605a str r2, [r3, #4] /* set auto Baudrate detection parameters if detection is enabled */ if (huart->AdvancedInit.AutoBaudRateEnable == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE) - 8004496: 687b ldr r3, [r7, #4] - 8004498: 6c5b ldr r3, [r3, #68] ; 0x44 - 800449a: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 - 800449e: d10a bne.n 80044b6 + 80042a2: 687b ldr r3, [r7, #4] + 80042a4: 6c5b ldr r3, [r3, #68] ; 0x44 + 80042a6: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 + 80042aa: d10a bne.n 80042c2 { assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(huart->AdvancedInit.AutoBaudRateMode)); MODIFY_REG(huart->Instance->CR2, USART_CR2_ABRMODE, huart->AdvancedInit.AutoBaudRateMode); - 80044a0: 687b ldr r3, [r7, #4] - 80044a2: 681b ldr r3, [r3, #0] - 80044a4: 685b ldr r3, [r3, #4] - 80044a6: f423 01c0 bic.w r1, r3, #6291456 ; 0x600000 - 80044aa: 687b ldr r3, [r7, #4] - 80044ac: 6c9a ldr r2, [r3, #72] ; 0x48 - 80044ae: 687b ldr r3, [r7, #4] - 80044b0: 681b ldr r3, [r3, #0] - 80044b2: 430a orrs r2, r1 - 80044b4: 605a str r2, [r3, #4] + 80042ac: 687b ldr r3, [r7, #4] + 80042ae: 681b ldr r3, [r3, #0] + 80042b0: 685b ldr r3, [r3, #4] + 80042b2: f423 01c0 bic.w r1, r3, #6291456 ; 0x600000 + 80042b6: 687b ldr r3, [r7, #4] + 80042b8: 6c9a ldr r2, [r3, #72] ; 0x48 + 80042ba: 687b ldr r3, [r7, #4] + 80042bc: 681b ldr r3, [r3, #0] + 80042be: 430a orrs r2, r1 + 80042c0: 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)) - 80044b6: 687b ldr r3, [r7, #4] - 80044b8: 6a9b ldr r3, [r3, #40] ; 0x28 - 80044ba: f003 0380 and.w r3, r3, #128 ; 0x80 - 80044be: 2b00 cmp r3, #0 - 80044c0: d00a beq.n 80044d8 + 80042c2: 687b ldr r3, [r7, #4] + 80042c4: 6a9b ldr r3, [r3, #40] ; 0x28 + 80042c6: f003 0380 and.w r3, r3, #128 ; 0x80 + 80042ca: 2b00 cmp r3, #0 + 80042cc: d00a beq.n 80042e4 { assert_param(IS_UART_ADVFEATURE_MSBFIRST(huart->AdvancedInit.MSBFirst)); MODIFY_REG(huart->Instance->CR2, USART_CR2_MSBFIRST, huart->AdvancedInit.MSBFirst); - 80044c2: 687b ldr r3, [r7, #4] - 80044c4: 681b ldr r3, [r3, #0] - 80044c6: 685b ldr r3, [r3, #4] - 80044c8: f423 2100 bic.w r1, r3, #524288 ; 0x80000 - 80044cc: 687b ldr r3, [r7, #4] - 80044ce: 6cda ldr r2, [r3, #76] ; 0x4c - 80044d0: 687b ldr r3, [r7, #4] - 80044d2: 681b ldr r3, [r3, #0] - 80044d4: 430a orrs r2, r1 - 80044d6: 605a str r2, [r3, #4] + 80042ce: 687b ldr r3, [r7, #4] + 80042d0: 681b ldr r3, [r3, #0] + 80042d2: 685b ldr r3, [r3, #4] + 80042d4: f423 2100 bic.w r1, r3, #524288 ; 0x80000 + 80042d8: 687b ldr r3, [r7, #4] + 80042da: 6cda ldr r2, [r3, #76] ; 0x4c + 80042dc: 687b ldr r3, [r7, #4] + 80042de: 681b ldr r3, [r3, #0] + 80042e0: 430a orrs r2, r1 + 80042e2: 605a str r2, [r3, #4] } } - 80044d8: bf00 nop - 80044da: 370c adds r7, #12 - 80044dc: 46bd mov sp, r7 - 80044de: bc80 pop {r7} - 80044e0: 4770 bx lr + 80042e4: bf00 nop + 80042e6: 370c adds r7, #12 + 80042e8: 46bd mov sp, r7 + 80042ea: bc80 pop {r7} + 80042ec: 4770 bx lr -080044e2 : +080042ee : * @brief Check the UART Idle State. * @param huart UART handle. * @retval HAL status */ HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart) { - 80044e2: b580 push {r7, lr} - 80044e4: b086 sub sp, #24 - 80044e6: af02 add r7, sp, #8 - 80044e8: 6078 str r0, [r7, #4] + 80042ee: b580 push {r7, lr} + 80042f0: b086 sub sp, #24 + 80042f2: af02 add r7, sp, #8 + 80042f4: 6078 str r0, [r7, #4] uint32_t tickstart; /* Initialize the UART ErrorCode */ huart->ErrorCode = HAL_UART_ERROR_NONE; - 80044ea: 687b ldr r3, [r7, #4] - 80044ec: 2200 movs r2, #0 - 80044ee: f8c3 2090 str.w r2, [r3, #144] ; 0x90 + 80042f6: 687b ldr r3, [r7, #4] + 80042f8: 2200 movs r2, #0 + 80042fa: f8c3 2090 str.w r2, [r3, #144] ; 0x90 /* Init tickstart for timeout management */ tickstart = HAL_GetTick(); - 80044f2: f7fd f9d3 bl 800189c - 80044f6: 60f8 str r0, [r7, #12] + 80042fe: f7fd f9d3 bl 80016a8 + 8004302: 60f8 str r0, [r7, #12] /* Check if the Transmitter is enabled */ if ((huart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) - 80044f8: 687b ldr r3, [r7, #4] - 80044fa: 681b ldr r3, [r3, #0] - 80044fc: 681b ldr r3, [r3, #0] - 80044fe: f003 0308 and.w r3, r3, #8 - 8004502: 2b08 cmp r3, #8 - 8004504: d10e bne.n 8004524 + 8004304: 687b ldr r3, [r7, #4] + 8004306: 681b ldr r3, [r3, #0] + 8004308: 681b ldr r3, [r3, #0] + 800430a: f003 0308 and.w r3, r3, #8 + 800430e: 2b08 cmp r3, #8 + 8004310: d10e bne.n 8004330 { /* Wait until TEACK flag is set */ if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_TEACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK) - 8004506: f06f 437e mvn.w r3, #4261412864 ; 0xfe000000 - 800450a: 9300 str r3, [sp, #0] - 800450c: 68fb ldr r3, [r7, #12] - 800450e: 2200 movs r2, #0 - 8004510: f44f 1100 mov.w r1, #2097152 ; 0x200000 - 8004514: 6878 ldr r0, [r7, #4] - 8004516: f000 f832 bl 800457e - 800451a: 4603 mov r3, r0 - 800451c: 2b00 cmp r3, #0 - 800451e: d001 beq.n 8004524 + 8004312: f06f 437e mvn.w r3, #4261412864 ; 0xfe000000 + 8004316: 9300 str r3, [sp, #0] + 8004318: 68fb ldr r3, [r7, #12] + 800431a: 2200 movs r2, #0 + 800431c: f44f 1100 mov.w r1, #2097152 ; 0x200000 + 8004320: 6878 ldr r0, [r7, #4] + 8004322: f000 f832 bl 800438a + 8004326: 4603 mov r3, r0 + 8004328: 2b00 cmp r3, #0 + 800432a: d001 beq.n 8004330 { /* Timeout occurred */ return HAL_TIMEOUT; - 8004520: 2303 movs r3, #3 - 8004522: e028 b.n 8004576 + 800432c: 2303 movs r3, #3 + 800432e: e028 b.n 8004382 } } /* Check if the Receiver is enabled */ if ((huart->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) - 8004524: 687b ldr r3, [r7, #4] - 8004526: 681b ldr r3, [r3, #0] - 8004528: 681b ldr r3, [r3, #0] - 800452a: f003 0304 and.w r3, r3, #4 - 800452e: 2b04 cmp r3, #4 - 8004530: d10e bne.n 8004550 + 8004330: 687b ldr r3, [r7, #4] + 8004332: 681b ldr r3, [r3, #0] + 8004334: 681b ldr r3, [r3, #0] + 8004336: f003 0304 and.w r3, r3, #4 + 800433a: 2b04 cmp r3, #4 + 800433c: d10e bne.n 800435c { /* Wait until REACK flag is set */ if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_REACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK) - 8004532: f06f 437e mvn.w r3, #4261412864 ; 0xfe000000 - 8004536: 9300 str r3, [sp, #0] - 8004538: 68fb ldr r3, [r7, #12] - 800453a: 2200 movs r2, #0 - 800453c: f44f 0180 mov.w r1, #4194304 ; 0x400000 - 8004540: 6878 ldr r0, [r7, #4] - 8004542: f000 f81c bl 800457e - 8004546: 4603 mov r3, r0 - 8004548: 2b00 cmp r3, #0 - 800454a: d001 beq.n 8004550 + 800433e: f06f 437e mvn.w r3, #4261412864 ; 0xfe000000 + 8004342: 9300 str r3, [sp, #0] + 8004344: 68fb ldr r3, [r7, #12] + 8004346: 2200 movs r2, #0 + 8004348: f44f 0180 mov.w r1, #4194304 ; 0x400000 + 800434c: 6878 ldr r0, [r7, #4] + 800434e: f000 f81c bl 800438a + 8004352: 4603 mov r3, r0 + 8004354: 2b00 cmp r3, #0 + 8004356: d001 beq.n 800435c { /* Timeout occurred */ return HAL_TIMEOUT; - 800454c: 2303 movs r3, #3 - 800454e: e012 b.n 8004576 + 8004358: 2303 movs r3, #3 + 800435a: e012 b.n 8004382 } } /* Initialize the UART State */ huart->gState = HAL_UART_STATE_READY; - 8004550: 687b ldr r3, [r7, #4] - 8004552: 2220 movs r2, #32 - 8004554: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 800435c: 687b ldr r3, [r7, #4] + 800435e: 2220 movs r2, #32 + 8004360: f8c3 2088 str.w r2, [r3, #136] ; 0x88 huart->RxState = HAL_UART_STATE_READY; - 8004558: 687b ldr r3, [r7, #4] - 800455a: 2220 movs r2, #32 - 800455c: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 8004364: 687b ldr r3, [r7, #4] + 8004366: 2220 movs r2, #32 + 8004368: f8c3 208c str.w r2, [r3, #140] ; 0x8c huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 8004560: 687b ldr r3, [r7, #4] - 8004562: 2200 movs r2, #0 - 8004564: 66da str r2, [r3, #108] ; 0x6c + 800436c: 687b ldr r3, [r7, #4] + 800436e: 2200 movs r2, #0 + 8004370: 66da str r2, [r3, #108] ; 0x6c huart->RxEventType = HAL_UART_RXEVENT_TC; - 8004566: 687b ldr r3, [r7, #4] - 8004568: 2200 movs r2, #0 - 800456a: 671a str r2, [r3, #112] ; 0x70 + 8004372: 687b ldr r3, [r7, #4] + 8004374: 2200 movs r2, #0 + 8004376: 671a str r2, [r3, #112] ; 0x70 __HAL_UNLOCK(huart); - 800456c: 687b ldr r3, [r7, #4] - 800456e: 2200 movs r2, #0 - 8004570: f883 2084 strb.w r2, [r3, #132] ; 0x84 + 8004378: 687b ldr r3, [r7, #4] + 800437a: 2200 movs r2, #0 + 800437c: f883 2084 strb.w r2, [r3, #132] ; 0x84 return HAL_OK; - 8004574: 2300 movs r3, #0 + 8004380: 2300 movs r3, #0 } - 8004576: 4618 mov r0, r3 - 8004578: 3710 adds r7, #16 - 800457a: 46bd mov sp, r7 - 800457c: bd80 pop {r7, pc} + 8004382: 4618 mov r0, r3 + 8004384: 3710 adds r7, #16 + 8004386: 46bd mov sp, r7 + 8004388: bd80 pop {r7, pc} -0800457e : +0800438a : * @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) { - 800457e: b580 push {r7, lr} - 8004580: b09c sub sp, #112 ; 0x70 - 8004582: af00 add r7, sp, #0 - 8004584: 60f8 str r0, [r7, #12] - 8004586: 60b9 str r1, [r7, #8] - 8004588: 603b str r3, [r7, #0] - 800458a: 4613 mov r3, r2 - 800458c: 71fb strb r3, [r7, #7] + 800438a: b580 push {r7, lr} + 800438c: b09c sub sp, #112 ; 0x70 + 800438e: af00 add r7, sp, #0 + 8004390: 60f8 str r0, [r7, #12] + 8004392: 60b9 str r1, [r7, #8] + 8004394: 603b str r3, [r7, #0] + 8004396: 4613 mov r3, r2 + 8004398: 71fb strb r3, [r7, #7] /* Wait until flag is set */ while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status) - 800458e: e0a9 b.n 80046e4 + 800439a: e0a9 b.n 80044f0 { /* Check for the Timeout */ if (Timeout != HAL_MAX_DELAY) - 8004590: 6fbb ldr r3, [r7, #120] ; 0x78 - 8004592: f1b3 3fff cmp.w r3, #4294967295 - 8004596: f000 80a5 beq.w 80046e4 + 800439c: 6fbb ldr r3, [r7, #120] ; 0x78 + 800439e: f1b3 3fff cmp.w r3, #4294967295 + 80043a2: f000 80a5 beq.w 80044f0 { if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) - 800459a: f7fd f97f bl 800189c - 800459e: 4602 mov r2, r0 - 80045a0: 683b ldr r3, [r7, #0] - 80045a2: 1ad3 subs r3, r2, r3 - 80045a4: 6fba ldr r2, [r7, #120] ; 0x78 - 80045a6: 429a cmp r2, r3 - 80045a8: d302 bcc.n 80045b0 - 80045aa: 6fbb ldr r3, [r7, #120] ; 0x78 - 80045ac: 2b00 cmp r3, #0 - 80045ae: d140 bne.n 8004632 + 80043a6: f7fd f97f bl 80016a8 + 80043aa: 4602 mov r2, r0 + 80043ac: 683b ldr r3, [r7, #0] + 80043ae: 1ad3 subs r3, r2, r3 + 80043b0: 6fba ldr r2, [r7, #120] ; 0x78 + 80043b2: 429a cmp r2, r3 + 80043b4: d302 bcc.n 80043bc + 80043b6: 6fbb ldr r3, [r7, #120] ; 0x78 + 80043b8: 2b00 cmp r3, #0 + 80043ba: d140 bne.n 800443e { /* Disable TXE, 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 | - 80045b0: 68fb ldr r3, [r7, #12] - 80045b2: 681b ldr r3, [r3, #0] - 80045b4: 653b str r3, [r7, #80] ; 0x50 + 80043bc: 68fb ldr r3, [r7, #12] + 80043be: 681b ldr r3, [r3, #0] + 80043c0: 653b str r3, [r7, #80] ; 0x50 */ __STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr) { uint32_t result; __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 80045b6: 6d3b ldr r3, [r7, #80] ; 0x50 - 80045b8: e853 3f00 ldrex r3, [r3] - 80045bc: 64fb str r3, [r7, #76] ; 0x4c + 80043c2: 6d3b ldr r3, [r7, #80] ; 0x50 + 80043c4: e853 3f00 ldrex r3, [r3] + 80043c8: 64fb str r3, [r7, #76] ; 0x4c return(result); - 80045be: 6cfb ldr r3, [r7, #76] ; 0x4c - 80045c0: f423 73d0 bic.w r3, r3, #416 ; 0x1a0 - 80045c4: 667b str r3, [r7, #100] ; 0x64 - 80045c6: 68fb ldr r3, [r7, #12] - 80045c8: 681b ldr r3, [r3, #0] - 80045ca: 461a mov r2, r3 - 80045cc: 6e7b ldr r3, [r7, #100] ; 0x64 - 80045ce: 65fb str r3, [r7, #92] ; 0x5c - 80045d0: 65ba str r2, [r7, #88] ; 0x58 + 80043ca: 6cfb ldr r3, [r7, #76] ; 0x4c + 80043cc: f423 73d0 bic.w r3, r3, #416 ; 0x1a0 + 80043d0: 667b str r3, [r7, #100] ; 0x64 + 80043d2: 68fb ldr r3, [r7, #12] + 80043d4: 681b ldr r3, [r3, #0] + 80043d6: 461a mov r2, r3 + 80043d8: 6e7b ldr r3, [r7, #100] ; 0x64 + 80043da: 65fb str r3, [r7, #92] ; 0x5c + 80043dc: 65ba str r2, [r7, #88] ; 0x58 */ __STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) { uint32_t result; __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 80045d2: 6db9 ldr r1, [r7, #88] ; 0x58 - 80045d4: 6dfa ldr r2, [r7, #92] ; 0x5c - 80045d6: e841 2300 strex r3, r2, [r1] - 80045da: 657b str r3, [r7, #84] ; 0x54 + 80043de: 6db9 ldr r1, [r7, #88] ; 0x58 + 80043e0: 6dfa ldr r2, [r7, #92] ; 0x5c + 80043e2: e841 2300 strex r3, r2, [r1] + 80043e6: 657b str r3, [r7, #84] ; 0x54 return(result); - 80045dc: 6d7b ldr r3, [r7, #84] ; 0x54 - 80045de: 2b00 cmp r3, #0 - 80045e0: d1e6 bne.n 80045b0 + 80043e8: 6d7b ldr r3, [r7, #84] ; 0x54 + 80043ea: 2b00 cmp r3, #0 + 80043ec: d1e6 bne.n 80043bc USART_CR1_TXEIE_TXFNFIE)); ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); - 80045e2: 68fb ldr r3, [r7, #12] - 80045e4: 681b ldr r3, [r3, #0] - 80045e6: 3308 adds r3, #8 - 80045e8: 63fb str r3, [r7, #60] ; 0x3c + 80043ee: 68fb ldr r3, [r7, #12] + 80043f0: 681b ldr r3, [r3, #0] + 80043f2: 3308 adds r3, #8 + 80043f4: 63fb str r3, [r7, #60] ; 0x3c __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 80045ea: 6bfb ldr r3, [r7, #60] ; 0x3c - 80045ec: e853 3f00 ldrex r3, [r3] - 80045f0: 63bb str r3, [r7, #56] ; 0x38 + 80043f6: 6bfb ldr r3, [r7, #60] ; 0x3c + 80043f8: e853 3f00 ldrex r3, [r3] + 80043fc: 63bb str r3, [r7, #56] ; 0x38 return(result); - 80045f2: 6bbb ldr r3, [r7, #56] ; 0x38 - 80045f4: f023 0301 bic.w r3, r3, #1 - 80045f8: 663b str r3, [r7, #96] ; 0x60 - 80045fa: 68fb ldr r3, [r7, #12] - 80045fc: 681b ldr r3, [r3, #0] - 80045fe: 3308 adds r3, #8 - 8004600: 6e3a ldr r2, [r7, #96] ; 0x60 - 8004602: 64ba str r2, [r7, #72] ; 0x48 - 8004604: 647b str r3, [r7, #68] ; 0x44 + 80043fe: 6bbb ldr r3, [r7, #56] ; 0x38 + 8004400: f023 0301 bic.w r3, r3, #1 + 8004404: 663b str r3, [r7, #96] ; 0x60 + 8004406: 68fb ldr r3, [r7, #12] + 8004408: 681b ldr r3, [r3, #0] + 800440a: 3308 adds r3, #8 + 800440c: 6e3a ldr r2, [r7, #96] ; 0x60 + 800440e: 64ba str r2, [r7, #72] ; 0x48 + 8004410: 647b str r3, [r7, #68] ; 0x44 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 8004606: 6c79 ldr r1, [r7, #68] ; 0x44 - 8004608: 6cba ldr r2, [r7, #72] ; 0x48 - 800460a: e841 2300 strex r3, r2, [r1] - 800460e: 643b str r3, [r7, #64] ; 0x40 + 8004412: 6c79 ldr r1, [r7, #68] ; 0x44 + 8004414: 6cba ldr r2, [r7, #72] ; 0x48 + 8004416: e841 2300 strex r3, r2, [r1] + 800441a: 643b str r3, [r7, #64] ; 0x40 return(result); - 8004610: 6c3b ldr r3, [r7, #64] ; 0x40 - 8004612: 2b00 cmp r3, #0 - 8004614: d1e5 bne.n 80045e2 + 800441c: 6c3b ldr r3, [r7, #64] ; 0x40 + 800441e: 2b00 cmp r3, #0 + 8004420: d1e5 bne.n 80043ee huart->gState = HAL_UART_STATE_READY; - 8004616: 68fb ldr r3, [r7, #12] - 8004618: 2220 movs r2, #32 - 800461a: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 8004422: 68fb ldr r3, [r7, #12] + 8004424: 2220 movs r2, #32 + 8004426: f8c3 2088 str.w r2, [r3, #136] ; 0x88 huart->RxState = HAL_UART_STATE_READY; - 800461e: 68fb ldr r3, [r7, #12] - 8004620: 2220 movs r2, #32 - 8004622: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 800442a: 68fb ldr r3, [r7, #12] + 800442c: 2220 movs r2, #32 + 800442e: f8c3 208c str.w r2, [r3, #140] ; 0x8c __HAL_UNLOCK(huart); - 8004626: 68fb ldr r3, [r7, #12] - 8004628: 2200 movs r2, #0 - 800462a: f883 2084 strb.w r2, [r3, #132] ; 0x84 + 8004432: 68fb ldr r3, [r7, #12] + 8004434: 2200 movs r2, #0 + 8004436: f883 2084 strb.w r2, [r3, #132] ; 0x84 return HAL_TIMEOUT; - 800462e: 2303 movs r3, #3 - 8004630: e069 b.n 8004706 + 800443a: 2303 movs r3, #3 + 800443c: e069 b.n 8004512 } if (READ_BIT(huart->Instance->CR1, USART_CR1_RE) != 0U) - 8004632: 68fb ldr r3, [r7, #12] - 8004634: 681b ldr r3, [r3, #0] - 8004636: 681b ldr r3, [r3, #0] - 8004638: f003 0304 and.w r3, r3, #4 - 800463c: 2b00 cmp r3, #0 - 800463e: d051 beq.n 80046e4 + 800443e: 68fb ldr r3, [r7, #12] + 8004440: 681b ldr r3, [r3, #0] + 8004442: 681b ldr r3, [r3, #0] + 8004444: f003 0304 and.w r3, r3, #4 + 8004448: 2b00 cmp r3, #0 + 800444a: d051 beq.n 80044f0 { if (__HAL_UART_GET_FLAG(huart, UART_FLAG_RTOF) == SET) - 8004640: 68fb ldr r3, [r7, #12] - 8004642: 681b ldr r3, [r3, #0] - 8004644: 69db ldr r3, [r3, #28] - 8004646: f403 6300 and.w r3, r3, #2048 ; 0x800 - 800464a: f5b3 6f00 cmp.w r3, #2048 ; 0x800 - 800464e: d149 bne.n 80046e4 + 800444c: 68fb ldr r3, [r7, #12] + 800444e: 681b ldr r3, [r3, #0] + 8004450: 69db ldr r3, [r3, #28] + 8004452: f403 6300 and.w r3, r3, #2048 ; 0x800 + 8004456: f5b3 6f00 cmp.w r3, #2048 ; 0x800 + 800445a: d149 bne.n 80044f0 { /* Clear Receiver Timeout flag*/ __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF); - 8004650: 68fb ldr r3, [r7, #12] - 8004652: 681b ldr r3, [r3, #0] - 8004654: f44f 6200 mov.w r2, #2048 ; 0x800 - 8004658: 621a str r2, [r3, #32] + 800445c: 68fb ldr r3, [r7, #12] + 800445e: 681b ldr r3, [r3, #0] + 8004460: f44f 6200 mov.w r2, #2048 ; 0x800 + 8004464: 621a str r2, [r3, #32] /* Disable TXE, 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 | - 800465a: 68fb ldr r3, [r7, #12] - 800465c: 681b ldr r3, [r3, #0] - 800465e: 62bb str r3, [r7, #40] ; 0x28 + 8004466: 68fb ldr r3, [r7, #12] + 8004468: 681b ldr r3, [r3, #0] + 800446a: 62bb str r3, [r7, #40] ; 0x28 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 8004660: 6abb ldr r3, [r7, #40] ; 0x28 - 8004662: e853 3f00 ldrex r3, [r3] - 8004666: 627b str r3, [r7, #36] ; 0x24 + 800446c: 6abb ldr r3, [r7, #40] ; 0x28 + 800446e: e853 3f00 ldrex r3, [r3] + 8004472: 627b str r3, [r7, #36] ; 0x24 return(result); - 8004668: 6a7b ldr r3, [r7, #36] ; 0x24 - 800466a: f423 73d0 bic.w r3, r3, #416 ; 0x1a0 - 800466e: 66fb str r3, [r7, #108] ; 0x6c - 8004670: 68fb ldr r3, [r7, #12] - 8004672: 681b ldr r3, [r3, #0] - 8004674: 461a mov r2, r3 - 8004676: 6efb ldr r3, [r7, #108] ; 0x6c - 8004678: 637b str r3, [r7, #52] ; 0x34 - 800467a: 633a str r2, [r7, #48] ; 0x30 + 8004474: 6a7b ldr r3, [r7, #36] ; 0x24 + 8004476: f423 73d0 bic.w r3, r3, #416 ; 0x1a0 + 800447a: 66fb str r3, [r7, #108] ; 0x6c + 800447c: 68fb ldr r3, [r7, #12] + 800447e: 681b ldr r3, [r3, #0] + 8004480: 461a mov r2, r3 + 8004482: 6efb ldr r3, [r7, #108] ; 0x6c + 8004484: 637b str r3, [r7, #52] ; 0x34 + 8004486: 633a str r2, [r7, #48] ; 0x30 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800467c: 6b39 ldr r1, [r7, #48] ; 0x30 - 800467e: 6b7a ldr r2, [r7, #52] ; 0x34 - 8004680: e841 2300 strex r3, r2, [r1] - 8004684: 62fb str r3, [r7, #44] ; 0x2c + 8004488: 6b39 ldr r1, [r7, #48] ; 0x30 + 800448a: 6b7a ldr r2, [r7, #52] ; 0x34 + 800448c: e841 2300 strex r3, r2, [r1] + 8004490: 62fb str r3, [r7, #44] ; 0x2c return(result); - 8004686: 6afb ldr r3, [r7, #44] ; 0x2c - 8004688: 2b00 cmp r3, #0 - 800468a: d1e6 bne.n 800465a + 8004492: 6afb ldr r3, [r7, #44] ; 0x2c + 8004494: 2b00 cmp r3, #0 + 8004496: d1e6 bne.n 8004466 USART_CR1_TXEIE_TXFNFIE)); ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); - 800468c: 68fb ldr r3, [r7, #12] - 800468e: 681b ldr r3, [r3, #0] - 8004690: 3308 adds r3, #8 - 8004692: 617b str r3, [r7, #20] + 8004498: 68fb ldr r3, [r7, #12] + 800449a: 681b ldr r3, [r3, #0] + 800449c: 3308 adds r3, #8 + 800449e: 617b str r3, [r7, #20] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 8004694: 697b ldr r3, [r7, #20] - 8004696: e853 3f00 ldrex r3, [r3] - 800469a: 613b str r3, [r7, #16] + 80044a0: 697b ldr r3, [r7, #20] + 80044a2: e853 3f00 ldrex r3, [r3] + 80044a6: 613b str r3, [r7, #16] return(result); - 800469c: 693b ldr r3, [r7, #16] - 800469e: f023 0301 bic.w r3, r3, #1 - 80046a2: 66bb str r3, [r7, #104] ; 0x68 - 80046a4: 68fb ldr r3, [r7, #12] - 80046a6: 681b ldr r3, [r3, #0] - 80046a8: 3308 adds r3, #8 - 80046aa: 6eba ldr r2, [r7, #104] ; 0x68 - 80046ac: 623a str r2, [r7, #32] - 80046ae: 61fb str r3, [r7, #28] + 80044a8: 693b ldr r3, [r7, #16] + 80044aa: f023 0301 bic.w r3, r3, #1 + 80044ae: 66bb str r3, [r7, #104] ; 0x68 + 80044b0: 68fb ldr r3, [r7, #12] + 80044b2: 681b ldr r3, [r3, #0] + 80044b4: 3308 adds r3, #8 + 80044b6: 6eba ldr r2, [r7, #104] ; 0x68 + 80044b8: 623a str r2, [r7, #32] + 80044ba: 61fb str r3, [r7, #28] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 80046b0: 69f9 ldr r1, [r7, #28] - 80046b2: 6a3a ldr r2, [r7, #32] - 80046b4: e841 2300 strex r3, r2, [r1] - 80046b8: 61bb str r3, [r7, #24] + 80044bc: 69f9 ldr r1, [r7, #28] + 80044be: 6a3a ldr r2, [r7, #32] + 80044c0: e841 2300 strex r3, r2, [r1] + 80044c4: 61bb str r3, [r7, #24] return(result); - 80046ba: 69bb ldr r3, [r7, #24] - 80046bc: 2b00 cmp r3, #0 - 80046be: d1e5 bne.n 800468c + 80044c6: 69bb ldr r3, [r7, #24] + 80044c8: 2b00 cmp r3, #0 + 80044ca: d1e5 bne.n 8004498 huart->gState = HAL_UART_STATE_READY; - 80046c0: 68fb ldr r3, [r7, #12] - 80046c2: 2220 movs r2, #32 - 80046c4: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 80044cc: 68fb ldr r3, [r7, #12] + 80044ce: 2220 movs r2, #32 + 80044d0: f8c3 2088 str.w r2, [r3, #136] ; 0x88 huart->RxState = HAL_UART_STATE_READY; - 80046c8: 68fb ldr r3, [r7, #12] - 80046ca: 2220 movs r2, #32 - 80046cc: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 80044d4: 68fb ldr r3, [r7, #12] + 80044d6: 2220 movs r2, #32 + 80044d8: f8c3 208c str.w r2, [r3, #140] ; 0x8c huart->ErrorCode = HAL_UART_ERROR_RTO; - 80046d0: 68fb ldr r3, [r7, #12] - 80046d2: 2220 movs r2, #32 - 80046d4: f8c3 2090 str.w r2, [r3, #144] ; 0x90 + 80044dc: 68fb ldr r3, [r7, #12] + 80044de: 2220 movs r2, #32 + 80044e0: f8c3 2090 str.w r2, [r3, #144] ; 0x90 /* Process Unlocked */ __HAL_UNLOCK(huart); - 80046d8: 68fb ldr r3, [r7, #12] - 80046da: 2200 movs r2, #0 - 80046dc: f883 2084 strb.w r2, [r3, #132] ; 0x84 + 80044e4: 68fb ldr r3, [r7, #12] + 80044e6: 2200 movs r2, #0 + 80044e8: f883 2084 strb.w r2, [r3, #132] ; 0x84 return HAL_TIMEOUT; - 80046e0: 2303 movs r3, #3 - 80046e2: e010 b.n 8004706 + 80044ec: 2303 movs r3, #3 + 80044ee: e010 b.n 8004512 while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status) - 80046e4: 68fb ldr r3, [r7, #12] - 80046e6: 681b ldr r3, [r3, #0] - 80046e8: 69da ldr r2, [r3, #28] - 80046ea: 68bb ldr r3, [r7, #8] - 80046ec: 4013 ands r3, r2 - 80046ee: 68ba ldr r2, [r7, #8] - 80046f0: 429a cmp r2, r3 - 80046f2: bf0c ite eq - 80046f4: 2301 moveq r3, #1 - 80046f6: 2300 movne r3, #0 - 80046f8: b2db uxtb r3, r3 - 80046fa: 461a mov r2, r3 - 80046fc: 79fb ldrb r3, [r7, #7] - 80046fe: 429a cmp r2, r3 - 8004700: f43f af46 beq.w 8004590 + 80044f0: 68fb ldr r3, [r7, #12] + 80044f2: 681b ldr r3, [r3, #0] + 80044f4: 69da ldr r2, [r3, #28] + 80044f6: 68bb ldr r3, [r7, #8] + 80044f8: 4013 ands r3, r2 + 80044fa: 68ba ldr r2, [r7, #8] + 80044fc: 429a cmp r2, r3 + 80044fe: bf0c ite eq + 8004500: 2301 moveq r3, #1 + 8004502: 2300 movne r3, #0 + 8004504: b2db uxtb r3, r3 + 8004506: 461a mov r2, r3 + 8004508: 79fb ldrb r3, [r7, #7] + 800450a: 429a cmp r2, r3 + 800450c: f43f af46 beq.w 800439c } } } } return HAL_OK; - 8004704: 2300 movs r3, #0 + 8004510: 2300 movs r3, #0 } - 8004706: 4618 mov r0, r3 - 8004708: 3770 adds r7, #112 ; 0x70 - 800470a: 46bd mov sp, r7 - 800470c: bd80 pop {r7, pc} + 8004512: 4618 mov r0, r3 + 8004514: 3770 adds r7, #112 ; 0x70 + 8004516: 46bd mov sp, r7 + 8004518: bd80 pop {r7, pc} -0800470e : +0800451a : * @brief Disable the FIFO mode. * @param huart UART handle. * @retval HAL status */ HAL_StatusTypeDef HAL_UARTEx_DisableFifoMode(UART_HandleTypeDef *huart) { - 800470e: b480 push {r7} - 8004710: b085 sub sp, #20 - 8004712: af00 add r7, sp, #0 - 8004714: 6078 str r0, [r7, #4] + 800451a: b480 push {r7} + 800451c: b085 sub sp, #20 + 800451e: af00 add r7, sp, #0 + 8004520: 6078 str r0, [r7, #4] /* Check parameters */ assert_param(IS_UART_FIFO_INSTANCE(huart->Instance)); /* Process Locked */ __HAL_LOCK(huart); - 8004716: 687b ldr r3, [r7, #4] - 8004718: f893 3084 ldrb.w r3, [r3, #132] ; 0x84 - 800471c: 2b01 cmp r3, #1 - 800471e: d101 bne.n 8004724 - 8004720: 2302 movs r3, #2 - 8004722: e027 b.n 8004774 - 8004724: 687b ldr r3, [r7, #4] - 8004726: 2201 movs r2, #1 - 8004728: f883 2084 strb.w r2, [r3, #132] ; 0x84 + 8004522: 687b ldr r3, [r7, #4] + 8004524: f893 3084 ldrb.w r3, [r3, #132] ; 0x84 + 8004528: 2b01 cmp r3, #1 + 800452a: d101 bne.n 8004530 + 800452c: 2302 movs r3, #2 + 800452e: e027 b.n 8004580 + 8004530: 687b ldr r3, [r7, #4] + 8004532: 2201 movs r2, #1 + 8004534: f883 2084 strb.w r2, [r3, #132] ; 0x84 huart->gState = HAL_UART_STATE_BUSY; - 800472c: 687b ldr r3, [r7, #4] - 800472e: 2224 movs r2, #36 ; 0x24 - 8004730: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 8004538: 687b ldr r3, [r7, #4] + 800453a: 2224 movs r2, #36 ; 0x24 + 800453c: f8c3 2088 str.w r2, [r3, #136] ; 0x88 /* Save actual UART configuration */ tmpcr1 = READ_REG(huart->Instance->CR1); - 8004734: 687b ldr r3, [r7, #4] - 8004736: 681b ldr r3, [r3, #0] - 8004738: 681b ldr r3, [r3, #0] - 800473a: 60fb str r3, [r7, #12] + 8004540: 687b ldr r3, [r7, #4] + 8004542: 681b ldr r3, [r3, #0] + 8004544: 681b ldr r3, [r3, #0] + 8004546: 60fb str r3, [r7, #12] /* Disable UART */ __HAL_UART_DISABLE(huart); - 800473c: 687b ldr r3, [r7, #4] - 800473e: 681b ldr r3, [r3, #0] - 8004740: 681a ldr r2, [r3, #0] - 8004742: 687b ldr r3, [r7, #4] - 8004744: 681b ldr r3, [r3, #0] - 8004746: f022 0201 bic.w r2, r2, #1 - 800474a: 601a str r2, [r3, #0] + 8004548: 687b ldr r3, [r7, #4] + 800454a: 681b ldr r3, [r3, #0] + 800454c: 681a ldr r2, [r3, #0] + 800454e: 687b ldr r3, [r7, #4] + 8004550: 681b ldr r3, [r3, #0] + 8004552: f022 0201 bic.w r2, r2, #1 + 8004556: 601a str r2, [r3, #0] /* Enable FIFO mode */ CLEAR_BIT(tmpcr1, USART_CR1_FIFOEN); - 800474c: 68fb ldr r3, [r7, #12] - 800474e: f023 5300 bic.w r3, r3, #536870912 ; 0x20000000 - 8004752: 60fb str r3, [r7, #12] + 8004558: 68fb ldr r3, [r7, #12] + 800455a: f023 5300 bic.w r3, r3, #536870912 ; 0x20000000 + 800455e: 60fb str r3, [r7, #12] huart->FifoMode = UART_FIFOMODE_DISABLE; - 8004754: 687b ldr r3, [r7, #4] - 8004756: 2200 movs r2, #0 - 8004758: 665a str r2, [r3, #100] ; 0x64 + 8004560: 687b ldr r3, [r7, #4] + 8004562: 2200 movs r2, #0 + 8004564: 665a str r2, [r3, #100] ; 0x64 /* Restore UART configuration */ WRITE_REG(huart->Instance->CR1, tmpcr1); - 800475a: 687b ldr r3, [r7, #4] - 800475c: 681b ldr r3, [r3, #0] - 800475e: 68fa ldr r2, [r7, #12] - 8004760: 601a str r2, [r3, #0] + 8004566: 687b ldr r3, [r7, #4] + 8004568: 681b ldr r3, [r3, #0] + 800456a: 68fa ldr r2, [r7, #12] + 800456c: 601a str r2, [r3, #0] huart->gState = HAL_UART_STATE_READY; - 8004762: 687b ldr r3, [r7, #4] - 8004764: 2220 movs r2, #32 - 8004766: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 800456e: 687b ldr r3, [r7, #4] + 8004570: 2220 movs r2, #32 + 8004572: f8c3 2088 str.w r2, [r3, #136] ; 0x88 /* Process Unlocked */ __HAL_UNLOCK(huart); - 800476a: 687b ldr r3, [r7, #4] - 800476c: 2200 movs r2, #0 - 800476e: f883 2084 strb.w r2, [r3, #132] ; 0x84 + 8004576: 687b ldr r3, [r7, #4] + 8004578: 2200 movs r2, #0 + 800457a: f883 2084 strb.w r2, [r3, #132] ; 0x84 return HAL_OK; - 8004772: 2300 movs r3, #0 + 800457e: 2300 movs r3, #0 } - 8004774: 4618 mov r0, r3 - 8004776: 3714 adds r7, #20 - 8004778: 46bd mov sp, r7 - 800477a: bc80 pop {r7} - 800477c: 4770 bx lr + 8004580: 4618 mov r0, r3 + 8004582: 3714 adds r7, #20 + 8004584: 46bd mov sp, r7 + 8004586: bc80 pop {r7} + 8004588: 4770 bx lr -0800477e : +0800458a : * @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) { - 800477e: b580 push {r7, lr} - 8004780: b084 sub sp, #16 - 8004782: af00 add r7, sp, #0 - 8004784: 6078 str r0, [r7, #4] - 8004786: 6039 str r1, [r7, #0] + 800458a: b580 push {r7, lr} + 800458c: b084 sub sp, #16 + 800458e: af00 add r7, sp, #0 + 8004590: 6078 str r0, [r7, #4] + 8004592: 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); - 8004788: 687b ldr r3, [r7, #4] - 800478a: f893 3084 ldrb.w r3, [r3, #132] ; 0x84 - 800478e: 2b01 cmp r3, #1 - 8004790: d101 bne.n 8004796 - 8004792: 2302 movs r3, #2 - 8004794: e02d b.n 80047f2 - 8004796: 687b ldr r3, [r7, #4] - 8004798: 2201 movs r2, #1 - 800479a: f883 2084 strb.w r2, [r3, #132] ; 0x84 + 8004594: 687b ldr r3, [r7, #4] + 8004596: f893 3084 ldrb.w r3, [r3, #132] ; 0x84 + 800459a: 2b01 cmp r3, #1 + 800459c: d101 bne.n 80045a2 + 800459e: 2302 movs r3, #2 + 80045a0: e02d b.n 80045fe + 80045a2: 687b ldr r3, [r7, #4] + 80045a4: 2201 movs r2, #1 + 80045a6: f883 2084 strb.w r2, [r3, #132] ; 0x84 huart->gState = HAL_UART_STATE_BUSY; - 800479e: 687b ldr r3, [r7, #4] - 80047a0: 2224 movs r2, #36 ; 0x24 - 80047a2: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 80045aa: 687b ldr r3, [r7, #4] + 80045ac: 2224 movs r2, #36 ; 0x24 + 80045ae: f8c3 2088 str.w r2, [r3, #136] ; 0x88 /* Save actual UART configuration */ tmpcr1 = READ_REG(huart->Instance->CR1); - 80047a6: 687b ldr r3, [r7, #4] - 80047a8: 681b ldr r3, [r3, #0] - 80047aa: 681b ldr r3, [r3, #0] - 80047ac: 60fb str r3, [r7, #12] + 80045b2: 687b ldr r3, [r7, #4] + 80045b4: 681b ldr r3, [r3, #0] + 80045b6: 681b ldr r3, [r3, #0] + 80045b8: 60fb str r3, [r7, #12] /* Disable UART */ __HAL_UART_DISABLE(huart); - 80047ae: 687b ldr r3, [r7, #4] - 80047b0: 681b ldr r3, [r3, #0] - 80047b2: 681a ldr r2, [r3, #0] - 80047b4: 687b ldr r3, [r7, #4] - 80047b6: 681b ldr r3, [r3, #0] - 80047b8: f022 0201 bic.w r2, r2, #1 - 80047bc: 601a str r2, [r3, #0] + 80045ba: 687b ldr r3, [r7, #4] + 80045bc: 681b ldr r3, [r3, #0] + 80045be: 681a ldr r2, [r3, #0] + 80045c0: 687b ldr r3, [r7, #4] + 80045c2: 681b ldr r3, [r3, #0] + 80045c4: f022 0201 bic.w r2, r2, #1 + 80045c8: 601a str r2, [r3, #0] /* Update TX threshold configuration */ MODIFY_REG(huart->Instance->CR3, USART_CR3_TXFTCFG, Threshold); - 80047be: 687b ldr r3, [r7, #4] - 80047c0: 681b ldr r3, [r3, #0] - 80047c2: 689b ldr r3, [r3, #8] - 80047c4: f023 4160 bic.w r1, r3, #3758096384 ; 0xe0000000 - 80047c8: 687b ldr r3, [r7, #4] - 80047ca: 681b ldr r3, [r3, #0] - 80047cc: 683a ldr r2, [r7, #0] - 80047ce: 430a orrs r2, r1 - 80047d0: 609a str r2, [r3, #8] + 80045ca: 687b ldr r3, [r7, #4] + 80045cc: 681b ldr r3, [r3, #0] + 80045ce: 689b ldr r3, [r3, #8] + 80045d0: f023 4160 bic.w r1, r3, #3758096384 ; 0xe0000000 + 80045d4: 687b ldr r3, [r7, #4] + 80045d6: 681b ldr r3, [r3, #0] + 80045d8: 683a ldr r2, [r7, #0] + 80045da: 430a orrs r2, r1 + 80045dc: 609a str r2, [r3, #8] /* Determine the number of data to process during RX/TX ISR execution */ UARTEx_SetNbDataToProcess(huart); - 80047d2: 6878 ldr r0, [r7, #4] - 80047d4: f000 f850 bl 8004878 + 80045de: 6878 ldr r0, [r7, #4] + 80045e0: f000 f850 bl 8004684 /* Restore UART configuration */ WRITE_REG(huart->Instance->CR1, tmpcr1); - 80047d8: 687b ldr r3, [r7, #4] - 80047da: 681b ldr r3, [r3, #0] - 80047dc: 68fa ldr r2, [r7, #12] - 80047de: 601a str r2, [r3, #0] + 80045e4: 687b ldr r3, [r7, #4] + 80045e6: 681b ldr r3, [r3, #0] + 80045e8: 68fa ldr r2, [r7, #12] + 80045ea: 601a str r2, [r3, #0] huart->gState = HAL_UART_STATE_READY; - 80047e0: 687b ldr r3, [r7, #4] - 80047e2: 2220 movs r2, #32 - 80047e4: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 80045ec: 687b ldr r3, [r7, #4] + 80045ee: 2220 movs r2, #32 + 80045f0: f8c3 2088 str.w r2, [r3, #136] ; 0x88 /* Process Unlocked */ __HAL_UNLOCK(huart); - 80047e8: 687b ldr r3, [r7, #4] - 80047ea: 2200 movs r2, #0 - 80047ec: f883 2084 strb.w r2, [r3, #132] ; 0x84 + 80045f4: 687b ldr r3, [r7, #4] + 80045f6: 2200 movs r2, #0 + 80045f8: f883 2084 strb.w r2, [r3, #132] ; 0x84 return HAL_OK; - 80047f0: 2300 movs r3, #0 + 80045fc: 2300 movs r3, #0 } - 80047f2: 4618 mov r0, r3 - 80047f4: 3710 adds r7, #16 - 80047f6: 46bd mov sp, r7 - 80047f8: bd80 pop {r7, pc} + 80045fe: 4618 mov r0, r3 + 8004600: 3710 adds r7, #16 + 8004602: 46bd mov sp, r7 + 8004604: bd80 pop {r7, pc} -080047fa : +08004606 : * @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) { - 80047fa: b580 push {r7, lr} - 80047fc: b084 sub sp, #16 - 80047fe: af00 add r7, sp, #0 - 8004800: 6078 str r0, [r7, #4] - 8004802: 6039 str r1, [r7, #0] + 8004606: b580 push {r7, lr} + 8004608: b084 sub sp, #16 + 800460a: af00 add r7, sp, #0 + 800460c: 6078 str r0, [r7, #4] + 800460e: 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); - 8004804: 687b ldr r3, [r7, #4] - 8004806: f893 3084 ldrb.w r3, [r3, #132] ; 0x84 - 800480a: 2b01 cmp r3, #1 - 800480c: d101 bne.n 8004812 - 800480e: 2302 movs r3, #2 - 8004810: e02d b.n 800486e - 8004812: 687b ldr r3, [r7, #4] - 8004814: 2201 movs r2, #1 - 8004816: f883 2084 strb.w r2, [r3, #132] ; 0x84 + 8004610: 687b ldr r3, [r7, #4] + 8004612: f893 3084 ldrb.w r3, [r3, #132] ; 0x84 + 8004616: 2b01 cmp r3, #1 + 8004618: d101 bne.n 800461e + 800461a: 2302 movs r3, #2 + 800461c: e02d b.n 800467a + 800461e: 687b ldr r3, [r7, #4] + 8004620: 2201 movs r2, #1 + 8004622: f883 2084 strb.w r2, [r3, #132] ; 0x84 huart->gState = HAL_UART_STATE_BUSY; - 800481a: 687b ldr r3, [r7, #4] - 800481c: 2224 movs r2, #36 ; 0x24 - 800481e: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 8004626: 687b ldr r3, [r7, #4] + 8004628: 2224 movs r2, #36 ; 0x24 + 800462a: f8c3 2088 str.w r2, [r3, #136] ; 0x88 /* Save actual UART configuration */ tmpcr1 = READ_REG(huart->Instance->CR1); - 8004822: 687b ldr r3, [r7, #4] - 8004824: 681b ldr r3, [r3, #0] - 8004826: 681b ldr r3, [r3, #0] - 8004828: 60fb str r3, [r7, #12] + 800462e: 687b ldr r3, [r7, #4] + 8004630: 681b ldr r3, [r3, #0] + 8004632: 681b ldr r3, [r3, #0] + 8004634: 60fb str r3, [r7, #12] /* Disable UART */ __HAL_UART_DISABLE(huart); - 800482a: 687b ldr r3, [r7, #4] - 800482c: 681b ldr r3, [r3, #0] - 800482e: 681a ldr r2, [r3, #0] - 8004830: 687b ldr r3, [r7, #4] - 8004832: 681b ldr r3, [r3, #0] - 8004834: f022 0201 bic.w r2, r2, #1 - 8004838: 601a str r2, [r3, #0] + 8004636: 687b ldr r3, [r7, #4] + 8004638: 681b ldr r3, [r3, #0] + 800463a: 681a ldr r2, [r3, #0] + 800463c: 687b ldr r3, [r7, #4] + 800463e: 681b ldr r3, [r3, #0] + 8004640: f022 0201 bic.w r2, r2, #1 + 8004644: 601a str r2, [r3, #0] /* Update RX threshold configuration */ MODIFY_REG(huart->Instance->CR3, USART_CR3_RXFTCFG, Threshold); - 800483a: 687b ldr r3, [r7, #4] - 800483c: 681b ldr r3, [r3, #0] - 800483e: 689b ldr r3, [r3, #8] - 8004840: f023 6160 bic.w r1, r3, #234881024 ; 0xe000000 - 8004844: 687b ldr r3, [r7, #4] - 8004846: 681b ldr r3, [r3, #0] - 8004848: 683a ldr r2, [r7, #0] - 800484a: 430a orrs r2, r1 - 800484c: 609a str r2, [r3, #8] + 8004646: 687b ldr r3, [r7, #4] + 8004648: 681b ldr r3, [r3, #0] + 800464a: 689b ldr r3, [r3, #8] + 800464c: f023 6160 bic.w r1, r3, #234881024 ; 0xe000000 + 8004650: 687b ldr r3, [r7, #4] + 8004652: 681b ldr r3, [r3, #0] + 8004654: 683a ldr r2, [r7, #0] + 8004656: 430a orrs r2, r1 + 8004658: 609a str r2, [r3, #8] /* Determine the number of data to process during RX/TX ISR execution */ UARTEx_SetNbDataToProcess(huart); - 800484e: 6878 ldr r0, [r7, #4] - 8004850: f000 f812 bl 8004878 + 800465a: 6878 ldr r0, [r7, #4] + 800465c: f000 f812 bl 8004684 /* Restore UART configuration */ WRITE_REG(huart->Instance->CR1, tmpcr1); - 8004854: 687b ldr r3, [r7, #4] - 8004856: 681b ldr r3, [r3, #0] - 8004858: 68fa ldr r2, [r7, #12] - 800485a: 601a str r2, [r3, #0] + 8004660: 687b ldr r3, [r7, #4] + 8004662: 681b ldr r3, [r3, #0] + 8004664: 68fa ldr r2, [r7, #12] + 8004666: 601a str r2, [r3, #0] huart->gState = HAL_UART_STATE_READY; - 800485c: 687b ldr r3, [r7, #4] - 800485e: 2220 movs r2, #32 - 8004860: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 8004668: 687b ldr r3, [r7, #4] + 800466a: 2220 movs r2, #32 + 800466c: f8c3 2088 str.w r2, [r3, #136] ; 0x88 /* Process Unlocked */ __HAL_UNLOCK(huart); - 8004864: 687b ldr r3, [r7, #4] - 8004866: 2200 movs r2, #0 - 8004868: f883 2084 strb.w r2, [r3, #132] ; 0x84 + 8004670: 687b ldr r3, [r7, #4] + 8004672: 2200 movs r2, #0 + 8004674: f883 2084 strb.w r2, [r3, #132] ; 0x84 return HAL_OK; - 800486c: 2300 movs r3, #0 + 8004678: 2300 movs r3, #0 } - 800486e: 4618 mov r0, r3 - 8004870: 3710 adds r7, #16 - 8004872: 46bd mov sp, r7 - 8004874: bd80 pop {r7, pc} + 800467a: 4618 mov r0, r3 + 800467c: 3710 adds r7, #16 + 800467e: 46bd mov sp, r7 + 8004680: bd80 pop {r7, pc} ... -08004878 : +08004684 : * the UART configuration registers. * @param huart UART handle. * @retval None */ static void UARTEx_SetNbDataToProcess(UART_HandleTypeDef *huart) { - 8004878: b480 push {r7} - 800487a: b085 sub sp, #20 - 800487c: af00 add r7, sp, #0 - 800487e: 6078 str r0, [r7, #4] + 8004684: b480 push {r7} + 8004686: b085 sub sp, #20 + 8004688: af00 add r7, sp, #0 + 800468a: 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) - 8004880: 687b ldr r3, [r7, #4] - 8004882: 6e5b ldr r3, [r3, #100] ; 0x64 - 8004884: 2b00 cmp r3, #0 - 8004886: d108 bne.n 800489a + 800468c: 687b ldr r3, [r7, #4] + 800468e: 6e5b ldr r3, [r3, #100] ; 0x64 + 8004690: 2b00 cmp r3, #0 + 8004692: d108 bne.n 80046a6 { huart->NbTxDataToProcess = 1U; - 8004888: 687b ldr r3, [r7, #4] - 800488a: 2201 movs r2, #1 - 800488c: f8a3 206a strh.w r2, [r3, #106] ; 0x6a + 8004694: 687b ldr r3, [r7, #4] + 8004696: 2201 movs r2, #1 + 8004698: f8a3 206a strh.w r2, [r3, #106] ; 0x6a huart->NbRxDataToProcess = 1U; - 8004890: 687b ldr r3, [r7, #4] - 8004892: 2201 movs r2, #1 - 8004894: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 + 800469c: 687b ldr r3, [r7, #4] + 800469e: 2201 movs r2, #1 + 80046a0: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 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]; } } - 8004898: e031 b.n 80048fe + 80046a4: e031 b.n 800470a rx_fifo_depth = RX_FIFO_DEPTH; - 800489a: 2308 movs r3, #8 - 800489c: 73fb strb r3, [r7, #15] + 80046a6: 2308 movs r3, #8 + 80046a8: 73fb strb r3, [r7, #15] tx_fifo_depth = TX_FIFO_DEPTH; - 800489e: 2308 movs r3, #8 - 80048a0: 73bb strb r3, [r7, #14] + 80046aa: 2308 movs r3, #8 + 80046ac: 73bb strb r3, [r7, #14] rx_fifo_threshold = (uint8_t)(READ_BIT(huart->Instance->CR3, USART_CR3_RXFTCFG) >> USART_CR3_RXFTCFG_Pos); - 80048a2: 687b ldr r3, [r7, #4] - 80048a4: 681b ldr r3, [r3, #0] - 80048a6: 689b ldr r3, [r3, #8] - 80048a8: 0e5b lsrs r3, r3, #25 - 80048aa: b2db uxtb r3, r3 - 80048ac: f003 0307 and.w r3, r3, #7 - 80048b0: 737b strb r3, [r7, #13] + 80046ae: 687b ldr r3, [r7, #4] + 80046b0: 681b ldr r3, [r3, #0] + 80046b2: 689b ldr r3, [r3, #8] + 80046b4: 0e5b lsrs r3, r3, #25 + 80046b6: b2db uxtb r3, r3 + 80046b8: f003 0307 and.w r3, r3, #7 + 80046bc: 737b strb r3, [r7, #13] tx_fifo_threshold = (uint8_t)(READ_BIT(huart->Instance->CR3, USART_CR3_TXFTCFG) >> USART_CR3_TXFTCFG_Pos); - 80048b2: 687b ldr r3, [r7, #4] - 80048b4: 681b ldr r3, [r3, #0] - 80048b6: 689b ldr r3, [r3, #8] - 80048b8: 0f5b lsrs r3, r3, #29 - 80048ba: b2db uxtb r3, r3 - 80048bc: f003 0307 and.w r3, r3, #7 - 80048c0: 733b strb r3, [r7, #12] + 80046be: 687b ldr r3, [r7, #4] + 80046c0: 681b ldr r3, [r3, #0] + 80046c2: 689b ldr r3, [r3, #8] + 80046c4: 0f5b lsrs r3, r3, #29 + 80046c6: b2db uxtb r3, r3 + 80046c8: f003 0307 and.w r3, r3, #7 + 80046cc: 733b strb r3, [r7, #12] huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) / - 80048c2: 7bbb ldrb r3, [r7, #14] - 80048c4: 7b3a ldrb r2, [r7, #12] - 80048c6: 4910 ldr r1, [pc, #64] ; (8004908 ) - 80048c8: 5c8a ldrb r2, [r1, r2] - 80048ca: fb02 f303 mul.w r3, r2, r3 + 80046ce: 7bbb ldrb r3, [r7, #14] + 80046d0: 7b3a ldrb r2, [r7, #12] + 80046d2: 4910 ldr r1, [pc, #64] ; (8004714 ) + 80046d4: 5c8a ldrb r2, [r1, r2] + 80046d6: fb02 f303 mul.w r3, r2, r3 (uint16_t)denominator[tx_fifo_threshold]; - 80048ce: 7b3a ldrb r2, [r7, #12] - 80048d0: 490e ldr r1, [pc, #56] ; (800490c ) - 80048d2: 5c8a ldrb r2, [r1, r2] + 80046da: 7b3a ldrb r2, [r7, #12] + 80046dc: 490e ldr r1, [pc, #56] ; (8004718 ) + 80046de: 5c8a ldrb r2, [r1, r2] huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) / - 80048d4: fb93 f3f2 sdiv r3, r3, r2 - 80048d8: b29a uxth r2, r3 - 80048da: 687b ldr r3, [r7, #4] - 80048dc: f8a3 206a strh.w r2, [r3, #106] ; 0x6a + 80046e0: fb93 f3f2 sdiv r3, r3, r2 + 80046e4: b29a uxth r2, r3 + 80046e6: 687b ldr r3, [r7, #4] + 80046e8: f8a3 206a strh.w r2, [r3, #106] ; 0x6a huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) / - 80048e0: 7bfb ldrb r3, [r7, #15] - 80048e2: 7b7a ldrb r2, [r7, #13] - 80048e4: 4908 ldr r1, [pc, #32] ; (8004908 ) - 80048e6: 5c8a ldrb r2, [r1, r2] - 80048e8: fb02 f303 mul.w r3, r2, r3 + 80046ec: 7bfb ldrb r3, [r7, #15] + 80046ee: 7b7a ldrb r2, [r7, #13] + 80046f0: 4908 ldr r1, [pc, #32] ; (8004714 ) + 80046f2: 5c8a ldrb r2, [r1, r2] + 80046f4: fb02 f303 mul.w r3, r2, r3 (uint16_t)denominator[rx_fifo_threshold]; - 80048ec: 7b7a ldrb r2, [r7, #13] - 80048ee: 4907 ldr r1, [pc, #28] ; (800490c ) - 80048f0: 5c8a ldrb r2, [r1, r2] + 80046f8: 7b7a ldrb r2, [r7, #13] + 80046fa: 4907 ldr r1, [pc, #28] ; (8004718 ) + 80046fc: 5c8a ldrb r2, [r1, r2] huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) / - 80048f2: fb93 f3f2 sdiv r3, r3, r2 - 80048f6: b29a uxth r2, r3 - 80048f8: 687b ldr r3, [r7, #4] - 80048fa: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 -} - 80048fe: bf00 nop - 8004900: 3714 adds r7, #20 - 8004902: 46bd mov sp, r7 - 8004904: bc80 pop {r7} - 8004906: 4770 bx lr - 8004908: 08004acc .word 0x08004acc - 800490c: 08004ad4 .word 0x08004ad4 - -08004910 <__libc_init_array>: - 8004910: b570 push {r4, r5, r6, lr} - 8004912: 4d0d ldr r5, [pc, #52] ; (8004948 <__libc_init_array+0x38>) - 8004914: 4c0d ldr r4, [pc, #52] ; (800494c <__libc_init_array+0x3c>) - 8004916: 1b64 subs r4, r4, r5 - 8004918: 10a4 asrs r4, r4, #2 - 800491a: 2600 movs r6, #0 - 800491c: 42a6 cmp r6, r4 - 800491e: d109 bne.n 8004934 <__libc_init_array+0x24> - 8004920: 4d0b ldr r5, [pc, #44] ; (8004950 <__libc_init_array+0x40>) - 8004922: 4c0c ldr r4, [pc, #48] ; (8004954 <__libc_init_array+0x44>) - 8004924: f000 f820 bl 8004968 <_init> - 8004928: 1b64 subs r4, r4, r5 - 800492a: 10a4 asrs r4, r4, #2 - 800492c: 2600 movs r6, #0 - 800492e: 42a6 cmp r6, r4 - 8004930: d105 bne.n 800493e <__libc_init_array+0x2e> - 8004932: bd70 pop {r4, r5, r6, pc} - 8004934: f855 3b04 ldr.w r3, [r5], #4 - 8004938: 4798 blx r3 - 800493a: 3601 adds r6, #1 - 800493c: e7ee b.n 800491c <__libc_init_array+0xc> - 800493e: f855 3b04 ldr.w r3, [r5], #4 - 8004942: 4798 blx r3 - 8004944: 3601 adds r6, #1 - 8004946: e7f2 b.n 800492e <__libc_init_array+0x1e> - 8004948: 08004ae4 .word 0x08004ae4 - 800494c: 08004ae4 .word 0x08004ae4 - 8004950: 08004ae4 .word 0x08004ae4 - 8004954: 08004ae8 .word 0x08004ae8 - -08004958 : - 8004958: 4402 add r2, r0 - 800495a: 4603 mov r3, r0 - 800495c: 4293 cmp r3, r2 - 800495e: d100 bne.n 8004962 - 8004960: 4770 bx lr - 8004962: f803 1b01 strb.w r1, [r3], #1 - 8004966: e7f9 b.n 800495c - -08004968 <_init>: - 8004968: b5f8 push {r3, r4, r5, r6, r7, lr} - 800496a: bf00 nop - 800496c: bcf8 pop {r3, r4, r5, r6, r7} - 800496e: bc08 pop {r3} - 8004970: 469e mov lr, r3 - 8004972: 4770 bx lr - -08004974 <_fini>: - 8004974: b5f8 push {r3, r4, r5, r6, r7, lr} - 8004976: bf00 nop - 8004978: bcf8 pop {r3, r4, r5, r6, r7} - 800497a: bc08 pop {r3} - 800497c: 469e mov lr, r3 - 800497e: 4770 bx lr + 80046fe: fb93 f3f2 sdiv r3, r3, r2 + 8004702: b29a uxth r2, r3 + 8004704: 687b ldr r3, [r7, #4] + 8004706: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 +} + 800470a: bf00 nop + 800470c: 3714 adds r7, #20 + 800470e: 46bd mov sp, r7 + 8004710: bc80 pop {r7} + 8004712: 4770 bx lr + 8004714: 08004870 .word 0x08004870 + 8004718: 08004878 .word 0x08004878 + +0800471c <__libc_init_array>: + 800471c: b570 push {r4, r5, r6, lr} + 800471e: 4d0d ldr r5, [pc, #52] ; (8004754 <__libc_init_array+0x38>) + 8004720: 4c0d ldr r4, [pc, #52] ; (8004758 <__libc_init_array+0x3c>) + 8004722: 1b64 subs r4, r4, r5 + 8004724: 10a4 asrs r4, r4, #2 + 8004726: 2600 movs r6, #0 + 8004728: 42a6 cmp r6, r4 + 800472a: d109 bne.n 8004740 <__libc_init_array+0x24> + 800472c: 4d0b ldr r5, [pc, #44] ; (800475c <__libc_init_array+0x40>) + 800472e: 4c0c ldr r4, [pc, #48] ; (8004760 <__libc_init_array+0x44>) + 8004730: f000 f820 bl 8004774 <_init> + 8004734: 1b64 subs r4, r4, r5 + 8004736: 10a4 asrs r4, r4, #2 + 8004738: 2600 movs r6, #0 + 800473a: 42a6 cmp r6, r4 + 800473c: d105 bne.n 800474a <__libc_init_array+0x2e> + 800473e: bd70 pop {r4, r5, r6, pc} + 8004740: f855 3b04 ldr.w r3, [r5], #4 + 8004744: 4798 blx r3 + 8004746: 3601 adds r6, #1 + 8004748: e7ee b.n 8004728 <__libc_init_array+0xc> + 800474a: f855 3b04 ldr.w r3, [r5], #4 + 800474e: 4798 blx r3 + 8004750: 3601 adds r6, #1 + 8004752: e7f2 b.n 800473a <__libc_init_array+0x1e> + 8004754: 08004888 .word 0x08004888 + 8004758: 08004888 .word 0x08004888 + 800475c: 08004888 .word 0x08004888 + 8004760: 0800488c .word 0x0800488c + +08004764 : + 8004764: 4402 add r2, r0 + 8004766: 4603 mov r3, r0 + 8004768: 4293 cmp r3, r2 + 800476a: d100 bne.n 800476e + 800476c: 4770 bx lr + 800476e: f803 1b01 strb.w r1, [r3], #1 + 8004772: e7f9 b.n 8004768 + +08004774 <_init>: + 8004774: b5f8 push {r3, r4, r5, r6, r7, lr} + 8004776: bf00 nop + 8004778: bcf8 pop {r3, r4, r5, r6, r7} + 800477a: bc08 pop {r3} + 800477c: 469e mov lr, r3 + 800477e: 4770 bx lr + +08004780 <_fini>: + 8004780: b5f8 push {r3, r4, r5, r6, r7, lr} + 8004782: bf00 nop + 8004784: bcf8 pop {r3, r4, r5, r6, r7} + 8004786: bc08 pop {r3} + 8004788: 469e mov lr, r3 + 800478a: 4770 bx lr diff --git a/Firmware/Debug/rocketbeacon.map b/Firmware/Debug/rocketbeacon.map index e8899f3..46bf58d 100644 --- a/Firmware/Debug/rocketbeacon.map +++ b/Firmware/Debug/rocketbeacon.map @@ -102,14 +102,32 @@ Discarded input sections .bss 0x0000000000000000 0x0 ./Core/Src/main.o .rodata.CHANNEL_OFFSET_TAB 0x0000000000000000 0x7 ./Core/Src/main.o + .rodata.LPD433 + 0x0000000000000000 0x228 ./Core/Src/main.o + .rodata.PMR446 + 0x0000000000000000 0x80 ./Core/Src/main.o + .rodata.FRS 0x0000000000000000 0xb0 ./Core/Src/main.o + .rodata.morse_chars + 0x0000000000000000 0x5b ./Core/Src/main.o + .data.morse_unit_ms + 0x0000000000000000 0x4 ./Core/Src/main.o + .data.morse_power + 0x0000000000000000 0x1 ./Core/Src/main.o + .text.play_morse_char + 0x0000000000000000 0x134 ./Core/Src/main.o + .text.play_morse_word + 0x0000000000000000 0x6c ./Core/Src/main.o .text.SetPaLowPower 0x0000000000000000 0x34 ./Core/Src/main.o + .text.SetContinuousWave + 0x0000000000000000 0x24 ./Core/Src/main.o .text.SetTx 0x0000000000000000 0x40 ./Core/Src/main.o .text.SetRx 0x0000000000000000 0x40 ./Core/Src/main.o .text.SetModulationParamsLora 0x0000000000000000 0x40 ./Core/Src/main.o .text.SetPacketParamsLora 0x0000000000000000 0x60 ./Core/Src/main.o + .text.CWBeep 0x0000000000000000 0x3e ./Core/Src/main.o .group 0x0000000000000000 0xc ./Core/Src/stm32wlxx_hal_msp.o .group 0x0000000000000000 0xc ./Core/Src/stm32wlxx_hal_msp.o .group 0x0000000000000000 0xc ./Core/Src/stm32wlxx_hal_msp.o @@ -3866,7 +3884,7 @@ LOAD c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.ext 0x0000000008000000 g_pfnVectors 0x0000000008000138 . = ALIGN (0x4) -.text 0x0000000008000138 0x4848 +.text 0x0000000008000138 0x4654 0x0000000008000138 . = ALIGN (0x4) *(.text) .text 0x0000000008000138 0x40 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crtbegin.o @@ -3906,630 +3924,609 @@ LOAD c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.ext 0x0000000008000c58 0x1c ./Core/Src/main.o .text.LL_AHB2_GRP1_EnableClock 0x0000000008000c74 0x30 ./Core/Src/main.o + .text.LED_on 0x0000000008000ca4 0x16 ./Core/Src/main.o + 0x0000000008000ca4 LED_on + .text.LED_off 0x0000000008000cba 0x16 ./Core/Src/main.o + 0x0000000008000cba LED_off + .text.main 0x0000000008000cd0 0xf8 ./Core/Src/main.o + 0x0000000008000cd0 main + .text.SystemClock_Config + 0x0000000008000dc8 0xa8 ./Core/Src/main.o + 0x0000000008000dc8 SystemClock_Config + .text.MX_ADC_Init + 0x0000000008000e70 0x9c ./Core/Src/main.o + .text.MX_CRC_Init + 0x0000000008000f0c 0x44 ./Core/Src/main.o + .text.MX_SUBGHZ_Init + 0x0000000008000f50 0x24 ./Core/Src/main.o + .text.MX_USART2_UART_Init + 0x0000000008000f74 0x98 ./Core/Src/main.o + .text.MX_GPIO_Init + 0x000000000800100c 0x90 ./Core/Src/main.o .text.SetStandbyXOSC - 0x0000000008000ca4 0x28 ./Core/Src/main.o - 0x0000000008000ca4 SetStandbyXOSC + 0x000000000800109c 0x28 ./Core/Src/main.o + 0x000000000800109c SetStandbyXOSC .text.SetPacketTypeLora - 0x0000000008000ccc 0x28 ./Core/Src/main.o - 0x0000000008000ccc SetPacketTypeLora + 0x00000000080010c4 0x28 ./Core/Src/main.o + 0x00000000080010c4 SetPacketTypeLora .text.SetPacketTypeFSK - 0x0000000008000cf4 0x24 ./Core/Src/main.o - 0x0000000008000cf4 SetPacketTypeFSK + 0x00000000080010ec 0x24 ./Core/Src/main.o + 0x00000000080010ec SetPacketTypeFSK .text.ComputeRfFreq - 0x0000000008000d18 0x34 ./Core/Src/main.o - 0x0000000008000d18 ComputeRfFreq + 0x0000000008001110 0x34 ./Core/Src/main.o + 0x0000000008001110 ComputeRfFreq .text.SetRfFreq - 0x0000000008000d4c 0x48 ./Core/Src/main.o - 0x0000000008000d4c SetRfFreq + 0x0000000008001144 0x48 ./Core/Src/main.o + 0x0000000008001144 SetRfFreq .text.SetPa22dB - 0x0000000008000d94 0x34 ./Core/Src/main.o - 0x0000000008000d94 SetPa22dB + 0x000000000800118c 0x34 ./Core/Src/main.o + 0x000000000800118c SetPa22dB .text.SetTxPower - 0x0000000008000dc8 0x34 ./Core/Src/main.o - 0x0000000008000dc8 SetTxPower - .text.SetContinuousWave - 0x0000000008000dfc 0x24 ./Core/Src/main.o - 0x0000000008000dfc SetContinuousWave + 0x00000000080011c0 0x34 ./Core/Src/main.o + 0x00000000080011c0 SetTxPower .text.SetTxInfinitePreamble - 0x0000000008000e20 0x24 ./Core/Src/main.o - 0x0000000008000e20 SetTxInfinitePreamble - *fill* 0x0000000008000e44 0x4 + 0x00000000080011f4 0x24 ./Core/Src/main.o + 0x00000000080011f4 SetTxInfinitePreamble .text.SetModulationParamsFSK - 0x0000000008000e48 0xbc ./Core/Src/main.o - 0x0000000008000e48 SetModulationParamsFSK - .text.FSKBeep 0x0000000008000f04 0x50 ./Core/Src/main.o - 0x0000000008000f04 FSKBeep - .text.CWBeep 0x0000000008000f54 0x3e ./Core/Src/main.o - 0x0000000008000f54 CWBeep - *fill* 0x0000000008000f92 0x2 - .text.play_morse_char - 0x0000000008000f94 0x134 ./Core/Src/main.o - 0x0000000008000f94 play_morse_char - .text.play_morse_word - 0x00000000080010c8 0x6c ./Core/Src/main.o - 0x00000000080010c8 play_morse_word - *fill* 0x0000000008001134 0x4 - .text.main 0x0000000008001138 0x10c ./Core/Src/main.o - 0x0000000008001138 main - .text.SystemClock_Config - 0x0000000008001244 0xa8 ./Core/Src/main.o - 0x0000000008001244 SystemClock_Config - .text.MX_ADC_Init - 0x00000000080012ec 0x9c ./Core/Src/main.o - .text.MX_CRC_Init - 0x0000000008001388 0x44 ./Core/Src/main.o - .text.MX_SUBGHZ_Init - 0x00000000080013cc 0x24 ./Core/Src/main.o - .text.MX_USART2_UART_Init - 0x00000000080013f0 0x98 ./Core/Src/main.o - .text.MX_GPIO_Init - 0x0000000008001488 0x90 ./Core/Src/main.o + 0x0000000008001218 0xbc ./Core/Src/main.o + 0x0000000008001218 SetModulationParamsFSK + .text.FSKBeep 0x00000000080012d4 0x50 ./Core/Src/main.o + 0x00000000080012d4 FSKBeep .text.Error_Handler - 0x0000000008001518 0xa ./Core/Src/main.o - 0x0000000008001518 Error_Handler + 0x0000000008001324 0xa ./Core/Src/main.o + 0x0000000008001324 Error_Handler .text.LL_AHB1_GRP1_EnableClock - 0x0000000008001522 0x30 ./Core/Src/stm32wlxx_hal_msp.o + 0x000000000800132e 0x30 ./Core/Src/stm32wlxx_hal_msp.o .text.LL_AHB2_GRP1_EnableClock - 0x0000000008001552 0x30 ./Core/Src/stm32wlxx_hal_msp.o + 0x000000000800135e 0x30 ./Core/Src/stm32wlxx_hal_msp.o .text.LL_APB1_GRP1_EnableClock - 0x0000000008001582 0x30 ./Core/Src/stm32wlxx_hal_msp.o + 0x000000000800138e 0x30 ./Core/Src/stm32wlxx_hal_msp.o .text.LL_APB2_GRP1_EnableClock - 0x00000000080015b2 0x30 ./Core/Src/stm32wlxx_hal_msp.o + 0x00000000080013be 0x30 ./Core/Src/stm32wlxx_hal_msp.o .text.LL_APB3_GRP1_EnableClock - 0x00000000080015e2 0x30 ./Core/Src/stm32wlxx_hal_msp.o + 0x00000000080013ee 0x30 ./Core/Src/stm32wlxx_hal_msp.o .text.HAL_MspInit - 0x0000000008001612 0xc ./Core/Src/stm32wlxx_hal_msp.o - 0x0000000008001612 HAL_MspInit - *fill* 0x000000000800161e 0x2 + 0x000000000800141e 0xc ./Core/Src/stm32wlxx_hal_msp.o + 0x000000000800141e HAL_MspInit + *fill* 0x000000000800142a 0x2 .text.HAL_ADC_MspInit - 0x0000000008001620 0x28 ./Core/Src/stm32wlxx_hal_msp.o - 0x0000000008001620 HAL_ADC_MspInit + 0x000000000800142c 0x28 ./Core/Src/stm32wlxx_hal_msp.o + 0x000000000800142c HAL_ADC_MspInit .text.HAL_CRC_MspInit - 0x0000000008001648 0x28 ./Core/Src/stm32wlxx_hal_msp.o - 0x0000000008001648 HAL_CRC_MspInit + 0x0000000008001454 0x28 ./Core/Src/stm32wlxx_hal_msp.o + 0x0000000008001454 HAL_CRC_MspInit .text.HAL_SUBGHZ_MspInit - 0x0000000008001670 0x16 ./Core/Src/stm32wlxx_hal_msp.o - 0x0000000008001670 HAL_SUBGHZ_MspInit - *fill* 0x0000000008001686 0x2 + 0x000000000800147c 0x16 ./Core/Src/stm32wlxx_hal_msp.o + 0x000000000800147c HAL_SUBGHZ_MspInit + *fill* 0x0000000008001492 0x2 .text.HAL_UART_MspInit - 0x0000000008001688 0x8c ./Core/Src/stm32wlxx_hal_msp.o - 0x0000000008001688 HAL_UART_MspInit + 0x0000000008001494 0x8c ./Core/Src/stm32wlxx_hal_msp.o + 0x0000000008001494 HAL_UART_MspInit .text.NMI_Handler - 0x0000000008001714 0x6 ./Core/Src/stm32wlxx_it.o - 0x0000000008001714 NMI_Handler + 0x0000000008001520 0x6 ./Core/Src/stm32wlxx_it.o + 0x0000000008001520 NMI_Handler .text.HardFault_Handler - 0x000000000800171a 0x6 ./Core/Src/stm32wlxx_it.o - 0x000000000800171a HardFault_Handler + 0x0000000008001526 0x6 ./Core/Src/stm32wlxx_it.o + 0x0000000008001526 HardFault_Handler .text.MemManage_Handler - 0x0000000008001720 0x6 ./Core/Src/stm32wlxx_it.o - 0x0000000008001720 MemManage_Handler + 0x000000000800152c 0x6 ./Core/Src/stm32wlxx_it.o + 0x000000000800152c MemManage_Handler .text.BusFault_Handler - 0x0000000008001726 0x6 ./Core/Src/stm32wlxx_it.o - 0x0000000008001726 BusFault_Handler + 0x0000000008001532 0x6 ./Core/Src/stm32wlxx_it.o + 0x0000000008001532 BusFault_Handler .text.UsageFault_Handler - 0x000000000800172c 0x6 ./Core/Src/stm32wlxx_it.o - 0x000000000800172c UsageFault_Handler + 0x0000000008001538 0x6 ./Core/Src/stm32wlxx_it.o + 0x0000000008001538 UsageFault_Handler .text.SVC_Handler - 0x0000000008001732 0xc ./Core/Src/stm32wlxx_it.o - 0x0000000008001732 SVC_Handler + 0x000000000800153e 0xc ./Core/Src/stm32wlxx_it.o + 0x000000000800153e SVC_Handler .text.DebugMon_Handler - 0x000000000800173e 0xc ./Core/Src/stm32wlxx_it.o - 0x000000000800173e DebugMon_Handler + 0x000000000800154a 0xc ./Core/Src/stm32wlxx_it.o + 0x000000000800154a DebugMon_Handler .text.PendSV_Handler - 0x000000000800174a 0xc ./Core/Src/stm32wlxx_it.o - 0x000000000800174a PendSV_Handler + 0x0000000008001556 0xc ./Core/Src/stm32wlxx_it.o + 0x0000000008001556 PendSV_Handler .text.SysTick_Handler - 0x0000000008001756 0xc ./Core/Src/stm32wlxx_it.o - 0x0000000008001756 SysTick_Handler + 0x0000000008001562 0xc ./Core/Src/stm32wlxx_it.o + 0x0000000008001562 SysTick_Handler .text.SystemInit - 0x0000000008001762 0xc ./Core/Src/system_stm32wlxx.o - 0x0000000008001762 SystemInit - *fill* 0x000000000800176e 0x2 + 0x000000000800156e 0xc ./Core/Src/system_stm32wlxx.o + 0x000000000800156e SystemInit + *fill* 0x000000000800157a 0x2 .text.Reset_Handler - 0x0000000008001770 0x50 ./Core/Startup/startup_stm32wle5cbux.o - 0x0000000008001770 Reset_Handler + 0x000000000800157c 0x50 ./Core/Startup/startup_stm32wle5cbux.o + 0x000000000800157c Reset_Handler .text.Default_Handler - 0x00000000080017c0 0x2 ./Core/Startup/startup_stm32wle5cbux.o - 0x00000000080017c0 RTC_Alarm_IRQHandler - 0x00000000080017c0 EXTI2_IRQHandler - 0x00000000080017c0 TIM1_CC_IRQHandler - 0x00000000080017c0 EXTI3_IRQHandler - 0x00000000080017c0 LPTIM2_IRQHandler - 0x00000000080017c0 I2C3_ER_IRQHandler - 0x00000000080017c0 LPTIM3_IRQHandler - 0x00000000080017c0 EXTI0_IRQHandler - 0x00000000080017c0 I2C2_EV_IRQHandler - 0x00000000080017c0 TAMP_STAMP_LSECSS_SSRU_IRQHandler - 0x00000000080017c0 SPI1_IRQHandler - 0x00000000080017c0 DMA2_Channel2_IRQHandler - 0x00000000080017c0 DMA1_Channel4_IRQHandler - 0x00000000080017c0 PKA_IRQHandler - 0x00000000080017c0 TIM17_IRQHandler - 0x00000000080017c0 DMA1_Channel7_IRQHandler - 0x00000000080017c0 SUBGHZSPI_IRQHandler - 0x00000000080017c0 DMA2_Channel1_IRQHandler - 0x00000000080017c0 I2C1_EV_IRQHandler - 0x00000000080017c0 SUBGHZ_Radio_IRQHandler - 0x00000000080017c0 DMAMUX1_OVR_IRQHandler - 0x00000000080017c0 DMA1_Channel6_IRQHandler - 0x00000000080017c0 TIM16_IRQHandler - 0x00000000080017c0 DMA2_Channel4_IRQHandler - 0x00000000080017c0 RCC_IRQHandler - 0x00000000080017c0 TIM1_TRG_COM_IRQHandler - 0x00000000080017c0 DMA1_Channel1_IRQHandler - 0x00000000080017c0 Default_Handler - 0x00000000080017c0 DMA2_Channel7_IRQHandler - 0x00000000080017c0 EXTI15_10_IRQHandler - 0x00000000080017c0 ADC_IRQHandler - 0x00000000080017c0 I2C3_EV_IRQHandler - 0x00000000080017c0 EXTI9_5_IRQHandler - 0x00000000080017c0 RTC_WKUP_IRQHandler - 0x00000000080017c0 PVD_PVM_IRQHandler - 0x00000000080017c0 SPI2_IRQHandler - 0x00000000080017c0 DMA2_Channel5_IRQHandler - 0x00000000080017c0 DMA1_Channel5_IRQHandler - 0x00000000080017c0 EXTI4_IRQHandler - 0x00000000080017c0 RNG_IRQHandler - 0x00000000080017c0 DMA1_Channel3_IRQHandler - 0x00000000080017c0 COMP_IRQHandler - 0x00000000080017c0 HSEM_IRQHandler - 0x00000000080017c0 TIM1_UP_IRQHandler - 0x00000000080017c0 WWDG_IRQHandler - 0x00000000080017c0 LPUART1_IRQHandler - 0x00000000080017c0 DMA2_Channel6_IRQHandler - 0x00000000080017c0 TIM2_IRQHandler - 0x00000000080017c0 TIM1_BRK_IRQHandler - 0x00000000080017c0 DAC_IRQHandler - 0x00000000080017c0 EXTI1_IRQHandler - 0x00000000080017c0 AES_IRQHandler - 0x00000000080017c0 USART2_IRQHandler - 0x00000000080017c0 I2C2_ER_IRQHandler - 0x00000000080017c0 DMA1_Channel2_IRQHandler - 0x00000000080017c0 FLASH_IRQHandler - 0x00000000080017c0 USART1_IRQHandler - 0x00000000080017c0 I2C1_ER_IRQHandler - 0x00000000080017c0 LPTIM1_IRQHandler - 0x00000000080017c0 DMA2_Channel3_IRQHandler - *fill* 0x00000000080017c2 0x2 + 0x00000000080015cc 0x2 ./Core/Startup/startup_stm32wle5cbux.o + 0x00000000080015cc RTC_Alarm_IRQHandler + 0x00000000080015cc EXTI2_IRQHandler + 0x00000000080015cc TIM1_CC_IRQHandler + 0x00000000080015cc EXTI3_IRQHandler + 0x00000000080015cc LPTIM2_IRQHandler + 0x00000000080015cc I2C3_ER_IRQHandler + 0x00000000080015cc LPTIM3_IRQHandler + 0x00000000080015cc EXTI0_IRQHandler + 0x00000000080015cc I2C2_EV_IRQHandler + 0x00000000080015cc TAMP_STAMP_LSECSS_SSRU_IRQHandler + 0x00000000080015cc SPI1_IRQHandler + 0x00000000080015cc DMA2_Channel2_IRQHandler + 0x00000000080015cc DMA1_Channel4_IRQHandler + 0x00000000080015cc PKA_IRQHandler + 0x00000000080015cc TIM17_IRQHandler + 0x00000000080015cc DMA1_Channel7_IRQHandler + 0x00000000080015cc SUBGHZSPI_IRQHandler + 0x00000000080015cc DMA2_Channel1_IRQHandler + 0x00000000080015cc I2C1_EV_IRQHandler + 0x00000000080015cc SUBGHZ_Radio_IRQHandler + 0x00000000080015cc DMAMUX1_OVR_IRQHandler + 0x00000000080015cc DMA1_Channel6_IRQHandler + 0x00000000080015cc TIM16_IRQHandler + 0x00000000080015cc DMA2_Channel4_IRQHandler + 0x00000000080015cc RCC_IRQHandler + 0x00000000080015cc TIM1_TRG_COM_IRQHandler + 0x00000000080015cc DMA1_Channel1_IRQHandler + 0x00000000080015cc Default_Handler + 0x00000000080015cc DMA2_Channel7_IRQHandler + 0x00000000080015cc EXTI15_10_IRQHandler + 0x00000000080015cc ADC_IRQHandler + 0x00000000080015cc I2C3_EV_IRQHandler + 0x00000000080015cc EXTI9_5_IRQHandler + 0x00000000080015cc RTC_WKUP_IRQHandler + 0x00000000080015cc PVD_PVM_IRQHandler + 0x00000000080015cc SPI2_IRQHandler + 0x00000000080015cc DMA2_Channel5_IRQHandler + 0x00000000080015cc DMA1_Channel5_IRQHandler + 0x00000000080015cc EXTI4_IRQHandler + 0x00000000080015cc RNG_IRQHandler + 0x00000000080015cc DMA1_Channel3_IRQHandler + 0x00000000080015cc COMP_IRQHandler + 0x00000000080015cc HSEM_IRQHandler + 0x00000000080015cc TIM1_UP_IRQHandler + 0x00000000080015cc WWDG_IRQHandler + 0x00000000080015cc LPUART1_IRQHandler + 0x00000000080015cc DMA2_Channel6_IRQHandler + 0x00000000080015cc TIM2_IRQHandler + 0x00000000080015cc TIM1_BRK_IRQHandler + 0x00000000080015cc DAC_IRQHandler + 0x00000000080015cc EXTI1_IRQHandler + 0x00000000080015cc AES_IRQHandler + 0x00000000080015cc USART2_IRQHandler + 0x00000000080015cc I2C2_ER_IRQHandler + 0x00000000080015cc DMA1_Channel2_IRQHandler + 0x00000000080015cc FLASH_IRQHandler + 0x00000000080015cc USART1_IRQHandler + 0x00000000080015cc I2C1_ER_IRQHandler + 0x00000000080015cc LPTIM1_IRQHandler + 0x00000000080015cc DMA2_Channel3_IRQHandler + *fill* 0x00000000080015ce 0x2 .text.HAL_Init - 0x00000000080017c4 0x40 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o - 0x00000000080017c4 HAL_Init + 0x00000000080015d0 0x40 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o + 0x00000000080015d0 HAL_Init .text.HAL_InitTick - 0x0000000008001804 0x74 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o - 0x0000000008001804 HAL_InitTick + 0x0000000008001610 0x74 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o + 0x0000000008001610 HAL_InitTick .text.HAL_IncTick - 0x0000000008001878 0x24 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o - 0x0000000008001878 HAL_IncTick + 0x0000000008001684 0x24 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o + 0x0000000008001684 HAL_IncTick .text.HAL_GetTick - 0x000000000800189c 0x14 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o - 0x000000000800189c HAL_GetTick + 0x00000000080016a8 0x14 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o + 0x00000000080016a8 HAL_GetTick .text.HAL_Delay - 0x00000000080018b0 0x48 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o - 0x00000000080018b0 HAL_Delay + 0x00000000080016bc 0x48 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o + 0x00000000080016bc HAL_Delay .text.LL_ADC_SetSamplingTimeCommonChannels - 0x00000000080018f8 0x3c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o + 0x0000000008001704 0x3c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o .text.LL_ADC_GetSamplingTimeCommonChannels - 0x0000000008001934 0x30 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o + 0x0000000008001740 0x30 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o .text.LL_ADC_EnableInternalRegulator - 0x0000000008001964 0x26 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o + 0x0000000008001770 0x26 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o .text.LL_ADC_IsInternalRegulatorEnabled - 0x000000000800198a 0x26 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o + 0x0000000008001796 0x26 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o .text.LL_ADC_IsEnabled - 0x00000000080019b0 0x24 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o + 0x00000000080017bc 0x24 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o .text.LL_ADC_REG_IsConversionOngoing - 0x00000000080019d4 0x24 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o + 0x00000000080017e0 0x24 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o .text.HAL_ADC_Init - 0x00000000080019f8 0x328 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o - 0x00000000080019f8 HAL_ADC_Init + 0x0000000008001804 0x328 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o + 0x0000000008001804 HAL_ADC_Init .text.__NVIC_SetPriorityGrouping - 0x0000000008001d20 0x48 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o + 0x0000000008001b2c 0x48 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o .text.__NVIC_GetPriorityGrouping - 0x0000000008001d68 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o + 0x0000000008001b74 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o .text.__NVIC_SetPriority - 0x0000000008001d84 0x54 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o + 0x0000000008001b90 0x54 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o .text.NVIC_EncodePriority - 0x0000000008001dd8 0x64 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o + 0x0000000008001be4 0x64 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o .text.SysTick_Config - 0x0000000008001e3c 0x44 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o + 0x0000000008001c48 0x44 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o .text.HAL_NVIC_SetPriorityGrouping - 0x0000000008001e80 0x16 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o - 0x0000000008001e80 HAL_NVIC_SetPriorityGrouping + 0x0000000008001c8c 0x16 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o + 0x0000000008001c8c HAL_NVIC_SetPriorityGrouping .text.HAL_NVIC_SetPriority - 0x0000000008001e96 0x34 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o - 0x0000000008001e96 HAL_NVIC_SetPriority + 0x0000000008001ca2 0x34 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o + 0x0000000008001ca2 HAL_NVIC_SetPriority .text.HAL_SYSTICK_Config - 0x0000000008001eca 0x18 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o - 0x0000000008001eca HAL_SYSTICK_Config - *fill* 0x0000000008001ee2 0x2 + 0x0000000008001cd6 0x18 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o + 0x0000000008001cd6 HAL_SYSTICK_Config + *fill* 0x0000000008001cee 0x2 .text.HAL_CRC_Init - 0x0000000008001ee4 0xc8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc.o - 0x0000000008001ee4 HAL_CRC_Init + 0x0000000008001cf0 0xc8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc.o + 0x0000000008001cf0 HAL_CRC_Init .text.HAL_CRCEx_Polynomial_Set - 0x0000000008001fac 0x11c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc_ex.o - 0x0000000008001fac HAL_CRCEx_Polynomial_Set + 0x0000000008001db8 0x11c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc_ex.o + 0x0000000008001db8 HAL_CRCEx_Polynomial_Set .text.HAL_GPIO_Init - 0x00000000080020c8 0x2c0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_gpio.o - 0x00000000080020c8 HAL_GPIO_Init + 0x0000000008001ed4 0x2c0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_gpio.o + 0x0000000008001ed4 HAL_GPIO_Init .text.HAL_GPIO_WritePin - 0x0000000008002388 0x2e ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_gpio.o - 0x0000000008002388 HAL_GPIO_WritePin - *fill* 0x00000000080023b6 0x2 + 0x0000000008002194 0x2e ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_gpio.o + 0x0000000008002194 HAL_GPIO_WritePin + *fill* 0x00000000080021c2 0x2 .text.HAL_PWR_EnableBkUpAccess - 0x00000000080023b8 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr.o - 0x00000000080023b8 HAL_PWR_EnableBkUpAccess + 0x00000000080021c4 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr.o + 0x00000000080021c4 HAL_PWR_EnableBkUpAccess .text.HAL_PWREx_GetVoltageRange - 0x00000000080023d4 0x18 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr_ex.o - 0x00000000080023d4 HAL_PWREx_GetVoltageRange + 0x00000000080021e0 0x18 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr_ex.o + 0x00000000080021e0 HAL_PWREx_GetVoltageRange .text.LL_PWR_IsEnabledBkUpAccess - 0x00000000080023ec 0x24 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x00000000080021f8 0x24 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_HSE_EnableTcxo - 0x0000000008002410 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x000000000800221c 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_HSE_DisableTcxo - 0x000000000800242c 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000008002238 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_HSE_IsEnabledDiv2 - 0x0000000008002448 0x22 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000008002254 0x22 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_HSE_Enable - 0x000000000800246a 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000008002276 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_HSE_Disable - 0x0000000008002486 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000008002292 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_HSE_IsReady - 0x00000000080024a2 0x22 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x00000000080022ae 0x22 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_HSI_Enable - 0x00000000080024c4 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x00000000080022d0 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_HSI_Disable - 0x00000000080024e0 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x00000000080022ec 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_HSI_IsReady - 0x00000000080024fc 0x22 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000008002308 0x22 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_HSI_SetCalibTrimming - 0x000000000800251e 0x28 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x000000000800232a 0x28 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_LSE_IsReady - 0x0000000008002546 0x22 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000008002352 0x22 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_LSI_Enable - 0x0000000008002568 0x20 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000008002374 0x20 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_LSI_Disable - 0x0000000008002588 0x20 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000008002394 0x20 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_LSI_IsReady - 0x00000000080025a8 0x22 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x00000000080023b4 0x22 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_MSI_Enable - 0x00000000080025ca 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x00000000080023d6 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_MSI_Disable - 0x00000000080025e6 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x00000000080023f2 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_MSI_IsReady - 0x0000000008002602 0x20 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x000000000800240e 0x20 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_MSI_IsEnabledRangeSelect - 0x0000000008002622 0x20 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x000000000800242e 0x20 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_MSI_GetRange - 0x0000000008002642 0x16 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x000000000800244e 0x16 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_MSI_GetRangeAfterStandby - 0x0000000008002658 0x18 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000008002464 0x18 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_MSI_SetCalibTrimming - 0x0000000008002670 0x28 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x000000000800247c 0x28 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_SetSysClkSource - 0x0000000008002698 0x26 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x00000000080024a4 0x26 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_GetSysClkSource - 0x00000000080026be 0x16 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x00000000080024ca 0x16 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_SetAHBPrescaler - 0x00000000080026d4 0x26 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x00000000080024e0 0x26 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_SetAHB3Prescaler - 0x00000000080026fa 0x2c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000008002506 0x2c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_SetAPB1Prescaler - 0x0000000008002726 0x26 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000008002532 0x26 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_SetAPB2Prescaler - 0x000000000800274c 0x26 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000008002558 0x26 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_GetAHBPrescaler - 0x0000000008002772 0x16 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x000000000800257e 0x16 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_GetAHB3Prescaler - 0x0000000008002788 0x1a ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000008002594 0x1a ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_GetAPB1Prescaler - 0x00000000080027a2 0x16 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x00000000080025ae 0x16 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_GetAPB2Prescaler - 0x00000000080027b8 0x16 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x00000000080025c4 0x16 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_PLL_Enable - 0x00000000080027ce 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x00000000080025da 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_PLL_Disable - 0x00000000080027ea 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x00000000080025f6 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_PLL_IsReady - 0x0000000008002806 0x22 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000008002612 0x22 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_PLL_GetN - 0x0000000008002828 0x18 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000008002634 0x18 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_PLL_GetR - 0x0000000008002840 0x16 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x000000000800264c 0x16 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_PLL_GetDivider - 0x0000000008002856 0x16 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000008002662 0x16 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_PLL_GetMainSource - 0x000000000800286c 0x16 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000008002678 0x16 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_IsActiveFlag_HPRE - 0x0000000008002882 0x22 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x000000000800268e 0x22 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_IsActiveFlag_SHDHPRE - 0x00000000080028a4 0x24 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x00000000080026b0 0x24 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_IsActiveFlag_PPRE1 - 0x00000000080028c8 0x22 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x00000000080026d4 0x22 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_IsActiveFlag_PPRE2 - 0x00000000080028ea 0x22 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x00000000080026f6 0x22 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.HAL_RCC_OscConfig - 0x000000000800290c 0x704 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o - 0x000000000800290c HAL_RCC_OscConfig + 0x0000000008002718 0x704 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000008002718 HAL_RCC_OscConfig .text.HAL_RCC_ClockConfig - 0x0000000008003010 0x248 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o - 0x0000000008003010 HAL_RCC_ClockConfig + 0x0000000008002e1c 0x248 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000008002e1c HAL_RCC_ClockConfig .text.HAL_RCC_GetSysClockFreq - 0x0000000008003258 0x140 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o - 0x0000000008003258 HAL_RCC_GetSysClockFreq + 0x0000000008003064 0x140 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000008003064 HAL_RCC_GetSysClockFreq .text.HAL_RCC_GetHCLKFreq - 0x0000000008003398 0x28 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o - 0x0000000008003398 HAL_RCC_GetHCLKFreq + 0x00000000080031a4 0x28 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x00000000080031a4 HAL_RCC_GetHCLKFreq .text.HAL_RCC_GetPCLK1Freq - 0x00000000080033c0 0x24 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o - 0x00000000080033c0 HAL_RCC_GetPCLK1Freq + 0x00000000080031cc 0x24 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x00000000080031cc HAL_RCC_GetPCLK1Freq .text.HAL_RCC_GetPCLK2Freq - 0x00000000080033e4 0x24 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o - 0x00000000080033e4 HAL_RCC_GetPCLK2Freq + 0x00000000080031f0 0x24 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x00000000080031f0 HAL_RCC_GetPCLK2Freq .text.RCC_SetFlashLatencyFromMSIRange - 0x0000000008003408 0x60 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000008003214 0x60 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.RCC_SetFlashLatency - 0x0000000008003468 0x104 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000008003274 0x104 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .text.LL_RCC_LSE_IsReady - 0x000000000800356c 0x22 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o + 0x0000000008003378 0x22 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o .text.LL_RCC_SetUSARTClockSource - 0x000000000800358e 0x30 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o + 0x000000000800339a 0x30 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o .text.LL_RCC_SetI2SClockSource - 0x00000000080035be 0x2a ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o + 0x00000000080033ca 0x2a ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o .text.LL_RCC_SetLPUARTClockSource - 0x00000000080035e8 0x2a ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o + 0x00000000080033f4 0x2a ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o .text.LL_RCC_SetI2CClockSource - 0x0000000008003612 0x38 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o + 0x000000000800341e 0x38 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o .text.LL_RCC_SetLPTIMClockSource - 0x000000000800364a 0x32 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o + 0x0000000008003456 0x32 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o .text.LL_RCC_SetRNGClockSource - 0x000000000800367c 0x2a ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o + 0x0000000008003488 0x2a ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o .text.LL_RCC_SetADCClockSource - 0x00000000080036a6 0x2a ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o + 0x00000000080034b2 0x2a ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o .text.LL_RCC_SetRTCClockSource - 0x00000000080036d0 0x2a ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o + 0x00000000080034dc 0x2a ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o .text.LL_RCC_GetRTCClockSource - 0x00000000080036fa 0x18 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o + 0x0000000008003506 0x18 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o .text.LL_RCC_ForceBackupDomainReset - 0x0000000008003712 0x20 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o + 0x000000000800351e 0x20 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o .text.LL_RCC_ReleaseBackupDomainReset - 0x0000000008003732 0x20 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o - *fill* 0x0000000008003752 0x2 + 0x000000000800353e 0x20 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o + *fill* 0x000000000800355e 0x2 .text.HAL_RCCEx_PeriphCLKConfig - 0x0000000008003754 0x234 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o - 0x0000000008003754 HAL_RCCEx_PeriphCLKConfig + 0x0000000008003560 0x234 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o + 0x0000000008003560 HAL_RCCEx_PeriphCLKConfig .text.LL_PWR_SetRadioBusyTrigger - 0x0000000008003988 0x28 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + 0x0000000008003794 0x28 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o .text.LL_PWR_UnselectSUBGHZSPI_NSS - 0x00000000080039b0 0x20 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + 0x00000000080037bc 0x20 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o .text.LL_PWR_SelectSUBGHZSPI_NSS - 0x00000000080039d0 0x20 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + 0x00000000080037dc 0x20 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o .text.LL_PWR_ClearFlag_RFBUSY - 0x00000000080039f0 0x18 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + 0x00000000080037fc 0x18 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o .text.LL_PWR_IsActiveFlag_RFBUSYS - 0x0000000008003a08 0x24 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + 0x0000000008003814 0x24 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o .text.LL_PWR_IsActiveFlag_RFBUSYMS - 0x0000000008003a2c 0x24 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + 0x0000000008003838 0x24 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o .text.LL_RCC_RF_DisableReset - 0x0000000008003a50 0x20 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + 0x000000000800385c 0x20 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o .text.LL_RCC_IsRFUnderReset - 0x0000000008003a70 0x24 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + 0x000000000800387c 0x24 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o .text.LL_EXTI_EnableIT_32_63 - 0x0000000008003a94 0x28 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + 0x00000000080038a0 0x28 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o .text.HAL_SUBGHZ_Init - 0x0000000008003abc 0xc8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o - 0x0000000008003abc HAL_SUBGHZ_Init + 0x00000000080038c8 0xc8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + 0x00000000080038c8 HAL_SUBGHZ_Init .text.HAL_SUBGHZ_ExecSetCmd - 0x0000000008003b84 0xbe ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o - 0x0000000008003b84 HAL_SUBGHZ_ExecSetCmd - *fill* 0x0000000008003c42 0x2 + 0x0000000008003990 0xbe ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + 0x0000000008003990 HAL_SUBGHZ_ExecSetCmd + *fill* 0x0000000008003a4e 0x2 .text.SUBGHZSPI_Init - 0x0000000008003c44 0x40 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o - 0x0000000008003c44 SUBGHZSPI_Init + 0x0000000008003a50 0x40 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + 0x0000000008003a50 SUBGHZSPI_Init .text.SUBGHZSPI_Transmit - 0x0000000008003c84 0xac ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o - 0x0000000008003c84 SUBGHZSPI_Transmit + 0x0000000008003a90 0xac ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + 0x0000000008003a90 SUBGHZSPI_Transmit .text.SUBGHZ_CheckDeviceReady - 0x0000000008003d30 0x48 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o - 0x0000000008003d30 SUBGHZ_CheckDeviceReady + 0x0000000008003b3c 0x48 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + 0x0000000008003b3c SUBGHZ_CheckDeviceReady .text.SUBGHZ_WaitOnBusy - 0x0000000008003d78 0x5c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o - 0x0000000008003d78 SUBGHZ_WaitOnBusy + 0x0000000008003b84 0x5c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + 0x0000000008003b84 SUBGHZ_WaitOnBusy .text.LL_RCC_GetUSARTClockSource - 0x0000000008003dd4 0x24 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o + 0x0000000008003be0 0x24 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o .text.LL_RCC_GetLPUARTClockSource - 0x0000000008003df8 0x1e ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o + 0x0000000008003c04 0x1e ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o .text.HAL_UART_Init - 0x0000000008003e16 0xa0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o - 0x0000000008003e16 HAL_UART_Init - *fill* 0x0000000008003eb6 0x2 + 0x0000000008003c22 0xa0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o + 0x0000000008003c22 HAL_UART_Init + *fill* 0x0000000008003cc2 0x2 .text.UART_SetConfig - 0x0000000008003eb8 0x4e8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o - 0x0000000008003eb8 UART_SetConfig + 0x0000000008003cc4 0x4e8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o + 0x0000000008003cc4 UART_SetConfig .text.UART_AdvFeatureConfig - 0x00000000080043a0 0x142 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o - 0x00000000080043a0 UART_AdvFeatureConfig + 0x00000000080041ac 0x142 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o + 0x00000000080041ac UART_AdvFeatureConfig .text.UART_CheckIdleState - 0x00000000080044e2 0x9c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o - 0x00000000080044e2 UART_CheckIdleState + 0x00000000080042ee 0x9c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o + 0x00000000080042ee UART_CheckIdleState .text.UART_WaitOnFlagUntilTimeout - 0x000000000800457e 0x190 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o - 0x000000000800457e UART_WaitOnFlagUntilTimeout + 0x000000000800438a 0x190 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o + 0x000000000800438a UART_WaitOnFlagUntilTimeout .text.HAL_UARTEx_DisableFifoMode - 0x000000000800470e 0x70 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o - 0x000000000800470e HAL_UARTEx_DisableFifoMode + 0x000000000800451a 0x70 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o + 0x000000000800451a HAL_UARTEx_DisableFifoMode .text.HAL_UARTEx_SetTxFifoThreshold - 0x000000000800477e 0x7c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o - 0x000000000800477e HAL_UARTEx_SetTxFifoThreshold + 0x000000000800458a 0x7c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o + 0x000000000800458a HAL_UARTEx_SetTxFifoThreshold .text.HAL_UARTEx_SetRxFifoThreshold - 0x00000000080047fa 0x7c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o - 0x00000000080047fa HAL_UARTEx_SetRxFifoThreshold - *fill* 0x0000000008004876 0x2 + 0x0000000008004606 0x7c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o + 0x0000000008004606 HAL_UARTEx_SetRxFifoThreshold + *fill* 0x0000000008004682 0x2 .text.UARTEx_SetNbDataToProcess - 0x0000000008004878 0x98 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o + 0x0000000008004684 0x98 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o .text.__libc_init_array - 0x0000000008004910 0x48 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp\libc_nano.a(lib_a-init.o) - 0x0000000008004910 __libc_init_array - .text.memset 0x0000000008004958 0x10 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp\libc_nano.a(lib_a-memset.o) - 0x0000000008004958 memset + 0x000000000800471c 0x48 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp\libc_nano.a(lib_a-init.o) + 0x000000000800471c __libc_init_array + .text.memset 0x0000000008004764 0x10 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp\libc_nano.a(lib_a-memset.o) + 0x0000000008004764 memset *(.glue_7) - .glue_7 0x0000000008004968 0x0 linker stubs + .glue_7 0x0000000008004774 0x0 linker stubs *(.glue_7t) - .glue_7t 0x0000000008004968 0x0 linker stubs + .glue_7t 0x0000000008004774 0x0 linker stubs *(.eh_frame) - .eh_frame 0x0000000008004968 0x0 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crtbegin.o + .eh_frame 0x0000000008004774 0x0 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crtbegin.o *(.init) - .init 0x0000000008004968 0x4 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crti.o - 0x0000000008004968 _init - .init 0x000000000800496c 0x8 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crtn.o + .init 0x0000000008004774 0x4 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crti.o + 0x0000000008004774 _init + .init 0x0000000008004778 0x8 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crtn.o *(.fini) - .fini 0x0000000008004974 0x4 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crti.o - 0x0000000008004974 _fini - .fini 0x0000000008004978 0x8 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crtn.o - 0x0000000008004980 . = ALIGN (0x4) - 0x0000000008004980 _etext = . + .fini 0x0000000008004780 0x4 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crti.o + 0x0000000008004780 _fini + .fini 0x0000000008004784 0x8 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crtn.o + 0x000000000800478c . = ALIGN (0x4) + 0x000000000800478c _etext = . -.vfp11_veneer 0x0000000008004980 0x0 - .vfp11_veneer 0x0000000008004980 0x0 linker stubs +.vfp11_veneer 0x000000000800478c 0x0 + .vfp11_veneer 0x000000000800478c 0x0 linker stubs -.v4_bx 0x0000000008004980 0x0 - .v4_bx 0x0000000008004980 0x0 linker stubs +.v4_bx 0x000000000800478c 0x0 + .v4_bx 0x000000000800478c 0x0 linker stubs -.iplt 0x0000000008004980 0x0 - .iplt 0x0000000008004980 0x0 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crtbegin.o +.iplt 0x000000000800478c 0x0 + .iplt 0x000000000800478c 0x0 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crtbegin.o -.rodata 0x0000000008004980 0x15c - 0x0000000008004980 . = ALIGN (0x4) +.rodata 0x000000000800478c 0xf4 + 0x000000000800478c . = ALIGN (0x4) *(.rodata) - .rodata 0x0000000008004980 0x19 ./Core/Src/main.o - *fill* 0x0000000008004999 0x3 - .rodata 0x000000000800499c 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + .rodata 0x000000000800478c 0xd ./Core/Src/main.o + *fill* 0x0000000008004799 0x3 + .rodata 0x000000000800479c 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o *(.rodata*) - .rodata.morse_chars - 0x00000000080049b8 0x5b ./Core/Src/main.o - 0x00000000080049b8 morse_chars - *fill* 0x0000000008004a13 0x1 .rodata.AHBPrescTable - 0x0000000008004a14 0x40 ./Core/Src/system_stm32wlxx.o - 0x0000000008004a14 AHBPrescTable + 0x00000000080047b8 0x40 ./Core/Src/system_stm32wlxx.o + 0x00000000080047b8 AHBPrescTable .rodata.APBPrescTable - 0x0000000008004a54 0x20 ./Core/Src/system_stm32wlxx.o - 0x0000000008004a54 APBPrescTable + 0x00000000080047f8 0x20 ./Core/Src/system_stm32wlxx.o + 0x00000000080047f8 APBPrescTable .rodata.MSIRangeTable - 0x0000000008004a74 0x40 ./Core/Src/system_stm32wlxx.o - 0x0000000008004a74 MSIRangeTable + 0x0000000008004818 0x40 ./Core/Src/system_stm32wlxx.o + 0x0000000008004818 MSIRangeTable .rodata.UARTPrescTable - 0x0000000008004ab4 0x18 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o - 0x0000000008004ab4 UARTPrescTable + 0x0000000008004858 0x18 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o + 0x0000000008004858 UARTPrescTable .rodata.numerator.1 - 0x0000000008004acc 0x8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o + 0x0000000008004870 0x8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o .rodata.denominator.0 - 0x0000000008004ad4 0x8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o - 0x0000000008004adc . = ALIGN (0x4) + 0x0000000008004878 0x8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o + 0x0000000008004880 . = ALIGN (0x4) -.ARM.extab 0x0000000008004adc 0x0 - 0x0000000008004adc . = ALIGN (0x4) +.ARM.extab 0x0000000008004880 0x0 + 0x0000000008004880 . = ALIGN (0x4) *(.ARM.extab* .gnu.linkonce.armextab.*) - 0x0000000008004adc . = ALIGN (0x4) + 0x0000000008004880 . = ALIGN (0x4) -.ARM 0x0000000008004adc 0x8 - 0x0000000008004adc . = ALIGN (0x4) - 0x0000000008004adc __exidx_start = . +.ARM 0x0000000008004880 0x8 + 0x0000000008004880 . = ALIGN (0x4) + 0x0000000008004880 __exidx_start = . *(.ARM.exidx*) - .ARM.exidx 0x0000000008004adc 0x8 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp\libgcc.a(_udivmoddi4.o) - 0x0000000008004ae4 __exidx_end = . - 0x0000000008004ae4 . = ALIGN (0x4) + .ARM.exidx 0x0000000008004880 0x8 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp\libgcc.a(_udivmoddi4.o) + 0x0000000008004888 __exidx_end = . + 0x0000000008004888 . = ALIGN (0x4) -.rel.dyn 0x0000000008004ae4 0x0 - .rel.iplt 0x0000000008004ae4 0x0 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crtbegin.o +.rel.dyn 0x0000000008004888 0x0 + .rel.iplt 0x0000000008004888 0x0 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crtbegin.o -.preinit_array 0x0000000008004ae4 0x0 - 0x0000000008004ae4 . = ALIGN (0x4) - 0x0000000008004ae4 PROVIDE (__preinit_array_start = .) +.preinit_array 0x0000000008004888 0x0 + 0x0000000008004888 . = ALIGN (0x4) + 0x0000000008004888 PROVIDE (__preinit_array_start = .) *(.preinit_array*) - 0x0000000008004ae4 PROVIDE (__preinit_array_end = .) - 0x0000000008004ae4 . = ALIGN (0x4) + 0x0000000008004888 PROVIDE (__preinit_array_end = .) + 0x0000000008004888 . = ALIGN (0x4) -.init_array 0x0000000008004ae4 0x4 - 0x0000000008004ae4 . = ALIGN (0x4) - 0x0000000008004ae4 PROVIDE (__init_array_start = .) +.init_array 0x0000000008004888 0x4 + 0x0000000008004888 . = ALIGN (0x4) + 0x0000000008004888 PROVIDE (__init_array_start = .) *(SORT_BY_NAME(.init_array.*)) *(.init_array*) - .init_array 0x0000000008004ae4 0x4 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crtbegin.o - 0x0000000008004ae8 PROVIDE (__init_array_end = .) - 0x0000000008004ae8 . = ALIGN (0x4) + .init_array 0x0000000008004888 0x4 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crtbegin.o + 0x000000000800488c PROVIDE (__init_array_end = .) + 0x000000000800488c . = ALIGN (0x4) -.fini_array 0x0000000008004ae8 0x4 - 0x0000000008004ae8 . = ALIGN (0x4) +.fini_array 0x000000000800488c 0x4 + 0x000000000800488c . = ALIGN (0x4) [!provide] PROVIDE (__fini_array_start = .) *(SORT_BY_NAME(.fini_array.*)) *(.fini_array*) - .fini_array 0x0000000008004ae8 0x4 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crtbegin.o + .fini_array 0x000000000800488c 0x4 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crtbegin.o [!provide] PROVIDE (__fini_array_end = .) - 0x0000000008004aec . = ALIGN (0x4) - 0x0000000008004aec _sidata = LOADADDR (.data) + 0x0000000008004890 . = ALIGN (0x4) + 0x0000000008004890 _sidata = LOADADDR (.data) -.data 0x0000000020000000 0x14 load address 0x0000000008004aec +.data 0x0000000020000000 0xc load address 0x0000000008004890 0x0000000020000000 . = ALIGN (0x4) 0x0000000020000000 _sdata = . *(.data) *(.data*) - .data.morse_unit_ms - 0x0000000020000000 0x4 ./Core/Src/main.o - 0x0000000020000000 morse_unit_ms - .data.morse_power - 0x0000000020000004 0x1 ./Core/Src/main.o - 0x0000000020000004 morse_power - *fill* 0x0000000020000005 0x3 .data.SystemCoreClock - 0x0000000020000008 0x4 ./Core/Src/system_stm32wlxx.o - 0x0000000020000008 SystemCoreClock + 0x0000000020000000 0x4 ./Core/Src/system_stm32wlxx.o + 0x0000000020000000 SystemCoreClock .data.uwTickPrio - 0x000000002000000c 0x4 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o - 0x000000002000000c uwTickPrio + 0x0000000020000004 0x4 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o + 0x0000000020000004 uwTickPrio .data.uwTickFreq - 0x0000000020000010 0x1 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o - 0x0000000020000010 uwTickFreq + 0x0000000020000008 0x1 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o + 0x0000000020000008 uwTickFreq *(.RamFunc) *(.RamFunc*) - 0x0000000020000014 . = ALIGN (0x4) - *fill* 0x0000000020000011 0x3 - 0x0000000020000014 _edata = . + 0x000000002000000c . = ALIGN (0x4) + *fill* 0x0000000020000009 0x3 + 0x000000002000000c _edata = . -.igot.plt 0x0000000020000014 0x0 load address 0x0000000008004b00 - .igot.plt 0x0000000020000014 0x0 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crtbegin.o - 0x0000000020000014 . = ALIGN (0x4) +.igot.plt 0x000000002000000c 0x0 load address 0x000000000800489c + .igot.plt 0x000000002000000c 0x0 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crtbegin.o + 0x000000002000000c . = ALIGN (0x4) -.bss 0x0000000020000014 0x148 load address 0x0000000008004b00 - 0x0000000020000014 _sbss = . - 0x0000000020000014 __bss_start__ = _sbss +.bss 0x000000002000000c 0x148 load address 0x000000000800489c + 0x000000002000000c _sbss = . + 0x000000002000000c __bss_start__ = _sbss *(.bss) - .bss 0x0000000020000014 0x1c c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crtbegin.o + .bss 0x000000002000000c 0x1c c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp/crtbegin.o *(.bss*) - .bss.hadc 0x0000000020000030 0x64 ./Core/Src/main.o - 0x0000000020000030 hadc - .bss.hcrc 0x0000000020000094 0x24 ./Core/Src/main.o - 0x0000000020000094 hcrc - .bss.hsubghz 0x00000000200000b8 0xc ./Core/Src/main.o - 0x00000000200000b8 hsubghz - .bss.huart2 0x00000000200000c4 0x94 ./Core/Src/main.o - 0x00000000200000c4 huart2 - .bss.uwTick 0x0000000020000158 0x4 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o - 0x0000000020000158 uwTick + .bss.hadc 0x0000000020000028 0x64 ./Core/Src/main.o + 0x0000000020000028 hadc + .bss.hcrc 0x000000002000008c 0x24 ./Core/Src/main.o + 0x000000002000008c hcrc + .bss.hsubghz 0x00000000200000b0 0xc ./Core/Src/main.o + 0x00000000200000b0 hsubghz + .bss.huart2 0x00000000200000bc 0x94 ./Core/Src/main.o + 0x00000000200000bc huart2 + .bss.uwTick 0x0000000020000150 0x4 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o + 0x0000000020000150 uwTick *(COMMON) - 0x000000002000015c . = ALIGN (0x4) - 0x000000002000015c _ebss = . - 0x000000002000015c __bss_end__ = _ebss + 0x0000000020000154 . = ALIGN (0x4) + 0x0000000020000154 _ebss = . + 0x0000000020000154 __bss_end__ = _ebss ._user_heap_stack - 0x000000002000015c 0x604 load address 0x0000000008004b00 - 0x0000000020000160 . = ALIGN (0x8) - *fill* 0x000000002000015c 0x4 + 0x0000000020000154 0x604 load address 0x000000000800489c + 0x0000000020000158 . = ALIGN (0x8) + *fill* 0x0000000020000154 0x4 [!provide] PROVIDE (end = .) - 0x0000000020000160 PROVIDE (_end = .) - 0x0000000020000360 . = (. + _Min_Heap_Size) - *fill* 0x0000000020000160 0x200 - 0x0000000020000760 . = (. + _Min_Stack_Size) - *fill* 0x0000000020000360 0x400 - 0x0000000020000760 . = ALIGN (0x8) + 0x0000000020000158 PROVIDE (_end = .) + 0x0000000020000358 . = (. + _Min_Heap_Size) + *fill* 0x0000000020000158 0x200 + 0x0000000020000758 . = (. + _Min_Stack_Size) + *fill* 0x0000000020000358 0x400 + 0x0000000020000758 . = ALIGN (0x8) /DISCARD/ libc.a(*) @@ -4603,103 +4600,103 @@ LOAD c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.ext LOAD c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp\libm.a LOAD c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp\libgcc.a -.debug_info 0x0000000000000000 0x12268 - .debug_info 0x0000000000000000 0x1d83 ./Core/Src/main.o - .debug_info 0x0000000000001d83 0x1523 ./Core/Src/stm32wlxx_hal_msp.o - .debug_info 0x00000000000032a6 0x166 ./Core/Src/stm32wlxx_it.o - .debug_info 0x000000000000340c 0x452 ./Core/Src/system_stm32wlxx.o - .debug_info 0x000000000000385e 0x22 ./Core/Startup/startup_stm32wle5cbux.o - .debug_info 0x0000000000003880 0xf14 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o - .debug_info 0x0000000000004794 0x176c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o - .debug_info 0x0000000000005f00 0xdb1 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o - .debug_info 0x0000000000006cb1 0x57f ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc.o - .debug_info 0x0000000000007230 0x37a ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc_ex.o - .debug_info 0x00000000000075aa 0x6d8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_gpio.o - .debug_info 0x0000000000007c82 0x881 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr.o - .debug_info 0x0000000000008503 0xd26 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr_ex.o - .debug_info 0x0000000000009229 0x1261 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o - .debug_info 0x000000000000a48a 0xe87 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o - .debug_info 0x000000000000b311 0x12eb ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o - .debug_info 0x000000000000c5fc 0x4bc5 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o - .debug_info 0x00000000000111c1 0x10a7 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o +.debug_info 0x0000000000000000 0x12328 + .debug_info 0x0000000000000000 0x1e43 ./Core/Src/main.o + .debug_info 0x0000000000001e43 0x1523 ./Core/Src/stm32wlxx_hal_msp.o + .debug_info 0x0000000000003366 0x166 ./Core/Src/stm32wlxx_it.o + .debug_info 0x00000000000034cc 0x452 ./Core/Src/system_stm32wlxx.o + .debug_info 0x000000000000391e 0x22 ./Core/Startup/startup_stm32wle5cbux.o + .debug_info 0x0000000000003940 0xf14 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o + .debug_info 0x0000000000004854 0x176c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o + .debug_info 0x0000000000005fc0 0xdb1 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o + .debug_info 0x0000000000006d71 0x57f ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc.o + .debug_info 0x00000000000072f0 0x37a ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc_ex.o + .debug_info 0x000000000000766a 0x6d8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_gpio.o + .debug_info 0x0000000000007d42 0x881 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr.o + .debug_info 0x00000000000085c3 0xd26 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr_ex.o + .debug_info 0x00000000000092e9 0x1261 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + .debug_info 0x000000000000a54a 0xe87 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o + .debug_info 0x000000000000b3d1 0x12eb ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + .debug_info 0x000000000000c6bc 0x4bc5 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o + .debug_info 0x0000000000011281 0x10a7 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o -.debug_abbrev 0x0000000000000000 0x2862 - .debug_abbrev 0x0000000000000000 0x373 ./Core/Src/main.o - .debug_abbrev 0x0000000000000373 0x225 ./Core/Src/stm32wlxx_hal_msp.o - .debug_abbrev 0x0000000000000598 0xad ./Core/Src/stm32wlxx_it.o - .debug_abbrev 0x0000000000000645 0x138 ./Core/Src/system_stm32wlxx.o - .debug_abbrev 0x000000000000077d 0x12 ./Core/Startup/startup_stm32wle5cbux.o - .debug_abbrev 0x000000000000078f 0x30b ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o - .debug_abbrev 0x0000000000000a9a 0x2e1 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o - .debug_abbrev 0x0000000000000d7b 0x2d5 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o - .debug_abbrev 0x0000000000001050 0x1d3 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc.o - .debug_abbrev 0x0000000000001223 0x130 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc_ex.o - .debug_abbrev 0x0000000000001353 0x1d9 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_gpio.o - .debug_abbrev 0x000000000000152c 0x203 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr.o - .debug_abbrev 0x000000000000172f 0x2cd ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr_ex.o - .debug_abbrev 0x00000000000019fc 0x324 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o - .debug_abbrev 0x0000000000001d20 0x2bd ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o - .debug_abbrev 0x0000000000001fdd 0x28b ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o - .debug_abbrev 0x0000000000002268 0x33d ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o - .debug_abbrev 0x00000000000025a5 0x2bd ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o +.debug_abbrev 0x0000000000000000 0x285c + .debug_abbrev 0x0000000000000000 0x36d ./Core/Src/main.o + .debug_abbrev 0x000000000000036d 0x225 ./Core/Src/stm32wlxx_hal_msp.o + .debug_abbrev 0x0000000000000592 0xad ./Core/Src/stm32wlxx_it.o + .debug_abbrev 0x000000000000063f 0x138 ./Core/Src/system_stm32wlxx.o + .debug_abbrev 0x0000000000000777 0x12 ./Core/Startup/startup_stm32wle5cbux.o + .debug_abbrev 0x0000000000000789 0x30b ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o + .debug_abbrev 0x0000000000000a94 0x2e1 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o + .debug_abbrev 0x0000000000000d75 0x2d5 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o + .debug_abbrev 0x000000000000104a 0x1d3 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc.o + .debug_abbrev 0x000000000000121d 0x130 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc_ex.o + .debug_abbrev 0x000000000000134d 0x1d9 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_gpio.o + .debug_abbrev 0x0000000000001526 0x203 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr.o + .debug_abbrev 0x0000000000001729 0x2cd ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr_ex.o + .debug_abbrev 0x00000000000019f6 0x324 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + .debug_abbrev 0x0000000000001d1a 0x2bd ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o + .debug_abbrev 0x0000000000001fd7 0x28b ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + .debug_abbrev 0x0000000000002262 0x33d ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o + .debug_abbrev 0x000000000000259f 0x2bd ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o -.debug_aranges 0x0000000000000000 0x1358 +.debug_aranges 0x0000000000000000 0x1368 .debug_aranges - 0x0000000000000000 0x100 ./Core/Src/main.o + 0x0000000000000000 0x110 ./Core/Src/main.o .debug_aranges - 0x0000000000000100 0xa8 ./Core/Src/stm32wlxx_hal_msp.o + 0x0000000000000110 0xa8 ./Core/Src/stm32wlxx_hal_msp.o .debug_aranges - 0x00000000000001a8 0x60 ./Core/Src/stm32wlxx_it.o + 0x00000000000001b8 0x60 ./Core/Src/stm32wlxx_it.o .debug_aranges - 0x0000000000000208 0x28 ./Core/Src/system_stm32wlxx.o + 0x0000000000000218 0x28 ./Core/Src/system_stm32wlxx.o .debug_aranges - 0x0000000000000230 0x28 ./Core/Startup/startup_stm32wle5cbux.o + 0x0000000000000240 0x28 ./Core/Startup/startup_stm32wle5cbux.o .debug_aranges - 0x0000000000000258 0x210 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o + 0x0000000000000268 0x210 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o .debug_aranges - 0x0000000000000468 0x1f0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o + 0x0000000000000478 0x1f0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o .debug_aranges - 0x0000000000000658 0x118 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o + 0x0000000000000668 0x118 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o .debug_aranges - 0x0000000000000770 0x60 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc.o + 0x0000000000000780 0x60 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc.o .debug_aranges - 0x00000000000007d0 0x30 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc_ex.o + 0x00000000000007e0 0x30 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc_ex.o .debug_aranges - 0x0000000000000800 0x60 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_gpio.o + 0x0000000000000810 0x60 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_gpio.o .debug_aranges - 0x0000000000000860 0xc8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr.o + 0x0000000000000870 0xc8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr.o .debug_aranges - 0x0000000000000928 0x1d0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr_ex.o + 0x0000000000000938 0x1d0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr_ex.o .debug_aranges - 0x0000000000000af8 0x210 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + 0x0000000000000b08 0x210 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o .debug_aranges - 0x0000000000000d08 0x1e8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o + 0x0000000000000d18 0x1e8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o .debug_aranges - 0x0000000000000ef0 0x168 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + 0x0000000000000f00 0x168 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o .debug_aranges - 0x0000000000001058 0x258 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o + 0x0000000000001068 0x258 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o .debug_aranges - 0x00000000000012b0 0xa8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o + 0x00000000000012c0 0xa8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o -.debug_ranges 0x0000000000000000 0x1270 - .debug_ranges 0x0000000000000000 0xf0 ./Core/Src/main.o - .debug_ranges 0x00000000000000f0 0x98 ./Core/Src/stm32wlxx_hal_msp.o - .debug_ranges 0x0000000000000188 0x50 ./Core/Src/stm32wlxx_it.o - .debug_ranges 0x00000000000001d8 0x18 ./Core/Src/system_stm32wlxx.o - .debug_ranges 0x00000000000001f0 0x20 ./Core/Startup/startup_stm32wle5cbux.o - .debug_ranges 0x0000000000000210 0x200 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o - .debug_ranges 0x0000000000000410 0x1e0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o - .debug_ranges 0x00000000000005f0 0x108 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o - .debug_ranges 0x00000000000006f8 0x50 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc.o - .debug_ranges 0x0000000000000748 0x20 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc_ex.o - .debug_ranges 0x0000000000000768 0x50 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_gpio.o - .debug_ranges 0x00000000000007b8 0xb8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr.o - .debug_ranges 0x0000000000000870 0x1c0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr_ex.o - .debug_ranges 0x0000000000000a30 0x200 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o - .debug_ranges 0x0000000000000c30 0x1d8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o - .debug_ranges 0x0000000000000e08 0x158 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o - .debug_ranges 0x0000000000000f60 0x278 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o - .debug_ranges 0x00000000000011d8 0x98 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o +.debug_ranges 0x0000000000000000 0x1280 + .debug_ranges 0x0000000000000000 0x100 ./Core/Src/main.o + .debug_ranges 0x0000000000000100 0x98 ./Core/Src/stm32wlxx_hal_msp.o + .debug_ranges 0x0000000000000198 0x50 ./Core/Src/stm32wlxx_it.o + .debug_ranges 0x00000000000001e8 0x18 ./Core/Src/system_stm32wlxx.o + .debug_ranges 0x0000000000000200 0x20 ./Core/Startup/startup_stm32wle5cbux.o + .debug_ranges 0x0000000000000220 0x200 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o + .debug_ranges 0x0000000000000420 0x1e0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o + .debug_ranges 0x0000000000000600 0x108 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o + .debug_ranges 0x0000000000000708 0x50 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc.o + .debug_ranges 0x0000000000000758 0x20 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc_ex.o + .debug_ranges 0x0000000000000778 0x50 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_gpio.o + .debug_ranges 0x00000000000007c8 0xb8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr.o + .debug_ranges 0x0000000000000880 0x1c0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr_ex.o + .debug_ranges 0x0000000000000a40 0x200 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + .debug_ranges 0x0000000000000c40 0x1d8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o + .debug_ranges 0x0000000000000e18 0x158 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + .debug_ranges 0x0000000000000f70 0x278 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o + .debug_ranges 0x00000000000011e8 0x98 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o .debug_macro 0x0000000000000000 0x1ab62 .debug_macro 0x0000000000000000 0x2ae ./Core/Src/main.o @@ -4778,62 +4775,62 @@ LOAD c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.ext .debug_macro 0x000000000001a681 0x280 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o .debug_macro 0x000000000001a901 0x261 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o -.debug_line 0x0000000000000000 0x11d8a - .debug_line 0x0000000000000000 0xe2b ./Core/Src/main.o - .debug_line 0x0000000000000e2b 0xa73 ./Core/Src/stm32wlxx_hal_msp.o - .debug_line 0x000000000000189e 0x924 ./Core/Src/stm32wlxx_it.o - .debug_line 0x00000000000021c2 0x869 ./Core/Src/system_stm32wlxx.o - .debug_line 0x0000000000002a2b 0x89 ./Core/Startup/startup_stm32wle5cbux.o - .debug_line 0x0000000000002ab4 0xece ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o - .debug_line 0x0000000000003982 0x1787 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o - .debug_line 0x0000000000005109 0xd69 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o - .debug_line 0x0000000000005e72 0xb16 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc.o - .debug_line 0x0000000000006988 0x892 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc_ex.o - .debug_line 0x000000000000721a 0xbde ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_gpio.o - .debug_line 0x0000000000007df8 0xa68 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr.o - .debug_line 0x0000000000008860 0xea8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr_ex.o - .debug_line 0x0000000000009708 0x16ea ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o - .debug_line 0x000000000000adf2 0x13da ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o - .debug_line 0x000000000000c1cc 0x10d4 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o - .debug_line 0x000000000000d2a0 0x3cc3 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o - .debug_line 0x0000000000010f63 0xe27 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o +.debug_line 0x0000000000000000 0x11daa + .debug_line 0x0000000000000000 0xe4b ./Core/Src/main.o + .debug_line 0x0000000000000e4b 0xa73 ./Core/Src/stm32wlxx_hal_msp.o + .debug_line 0x00000000000018be 0x924 ./Core/Src/stm32wlxx_it.o + .debug_line 0x00000000000021e2 0x869 ./Core/Src/system_stm32wlxx.o + .debug_line 0x0000000000002a4b 0x89 ./Core/Startup/startup_stm32wle5cbux.o + .debug_line 0x0000000000002ad4 0xece ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o + .debug_line 0x00000000000039a2 0x1787 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o + .debug_line 0x0000000000005129 0xd69 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o + .debug_line 0x0000000000005e92 0xb16 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc.o + .debug_line 0x00000000000069a8 0x892 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc_ex.o + .debug_line 0x000000000000723a 0xbde ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_gpio.o + .debug_line 0x0000000000007e18 0xa68 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr.o + .debug_line 0x0000000000008880 0xea8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr_ex.o + .debug_line 0x0000000000009728 0x16ea ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + .debug_line 0x000000000000ae12 0x13da ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o + .debug_line 0x000000000000c1ec 0x10d4 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + .debug_line 0x000000000000d2c0 0x3cc3 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o + .debug_line 0x0000000000010f83 0xe27 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o -.debug_str 0x0000000000000000 0xa7721 - .debug_str 0x0000000000000000 0xa2a8e ./Core/Src/main.o - 0xa32de (size before relaxing) - .debug_str 0x00000000000a2a8e 0x2fb ./Core/Src/stm32wlxx_hal_msp.o +.debug_str 0x0000000000000000 0xa7745 + .debug_str 0x0000000000000000 0xa2ab2 ./Core/Src/main.o + 0xa3302 (size before relaxing) + .debug_str 0x00000000000a2ab2 0x2fb ./Core/Src/stm32wlxx_hal_msp.o 0xa2d73 (size before relaxing) - .debug_str 0x00000000000a2d89 0xc9 ./Core/Src/stm32wlxx_it.o + .debug_str 0x00000000000a2dad 0xc9 ./Core/Src/stm32wlxx_it.o 0xa1f6c (size before relaxing) - .debug_str 0x00000000000a2e52 0x9e ./Core/Src/system_stm32wlxx.o + .debug_str 0x00000000000a2e76 0x9e ./Core/Src/system_stm32wlxx.o 0xa1405 (size before relaxing) - .debug_str 0x00000000000a2ef0 0x36 ./Core/Startup/startup_stm32wle5cbux.o + .debug_str 0x00000000000a2f14 0x36 ./Core/Startup/startup_stm32wle5cbux.o 0x64 (size before relaxing) - .debug_str 0x00000000000a2f26 0xbd5 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o + .debug_str 0x00000000000a2f4a 0xbd5 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o 0xa20b7 (size before relaxing) - .debug_str 0x00000000000a3afb 0x921 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o + .debug_str 0x00000000000a3b1f 0x921 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o 0xa2151 (size before relaxing) - .debug_str 0x00000000000a441c 0x393 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o + .debug_str 0x00000000000a4440 0x393 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o 0xa1b75 (size before relaxing) - .debug_str 0x00000000000a47af 0xc6 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc.o + .debug_str 0x00000000000a47d3 0xc6 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc.o 0xa14f7 (size before relaxing) - .debug_str 0x00000000000a4875 0x69 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc_ex.o + .debug_str 0x00000000000a4899 0x69 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc_ex.o 0xa149d (size before relaxing) - .debug_str 0x00000000000a48de 0x152 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_gpio.o + .debug_str 0x00000000000a4902 0x152 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_gpio.o 0xa14eb (size before relaxing) - .debug_str 0x00000000000a4a30 0x4ca ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr.o + .debug_str 0x00000000000a4a54 0x4ca ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr.o 0xa185c (size before relaxing) - .debug_str 0x00000000000a4efa 0x625 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr_ex.o + .debug_str 0x00000000000a4f1e 0x625 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr_ex.o 0xa1ba9 (size before relaxing) - .debug_str 0x00000000000a551f 0xa2d ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + .debug_str 0x00000000000a5543 0xa2d ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o 0xa2120 (size before relaxing) - .debug_str 0x00000000000a5f4c 0x564 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o + .debug_str 0x00000000000a5f70 0x564 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o 0xa1cf4 (size before relaxing) - .debug_str 0x00000000000a64b0 0x614 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + .debug_str 0x00000000000a64d4 0x614 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o 0xa1ed2 (size before relaxing) - .debug_str 0x00000000000a6ac4 0x9f2 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o + .debug_str 0x00000000000a6ae8 0x9f2 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o 0xa2443 (size before relaxing) - .debug_str 0x00000000000a74b6 0x26b ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o + .debug_str 0x00000000000a74da 0x26b ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o 0xa1bf9 (size before relaxing) .comment 0x0000000000000000 0x50 @@ -4856,28 +4853,28 @@ LOAD c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.ext .comment 0x0000000000000050 0x51 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o .comment 0x0000000000000050 0x51 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o -.debug_frame 0x0000000000000000 0x5250 - .debug_frame 0x0000000000000000 0x3f8 ./Core/Src/main.o - .debug_frame 0x00000000000003f8 0x2b8 ./Core/Src/stm32wlxx_hal_msp.o - .debug_frame 0x00000000000006b0 0x104 ./Core/Src/stm32wlxx_it.o - .debug_frame 0x00000000000007b4 0x58 ./Core/Src/system_stm32wlxx.o - .debug_frame 0x000000000000080c 0x860 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o - .debug_frame 0x000000000000106c 0x90c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o - .debug_frame 0x0000000000001978 0x498 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o - .debug_frame 0x0000000000001e10 0x168 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc.o - .debug_frame 0x0000000000001f78 0x88 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc_ex.o - .debug_frame 0x0000000000002000 0x174 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_gpio.o - .debug_frame 0x0000000000002174 0x31c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr.o - .debug_frame 0x0000000000002490 0x7cc ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr_ex.o - .debug_frame 0x0000000000002c5c 0x874 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o - .debug_frame 0x00000000000034d0 0x7ec ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o - .debug_frame 0x0000000000003cbc 0x624 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o - .debug_frame 0x00000000000042e0 0xae4 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o - .debug_frame 0x0000000000004dc4 0x2c0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o - .debug_frame 0x0000000000005084 0x2c c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp\libc_nano.a(lib_a-init.o) - .debug_frame 0x00000000000050b0 0x20 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp\libc_nano.a(lib_a-memset.o) - .debug_frame 0x00000000000050d0 0xac c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp\libgcc.a(_arm_addsubdf3.o) - .debug_frame 0x000000000000517c 0x50 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp\libgcc.a(_arm_muldivdf3.o) - .debug_frame 0x00000000000051cc 0x24 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp\libgcc.a(_arm_fixunsdfsi.o) - .debug_frame 0x00000000000051f0 0x2c c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp\libgcc.a(_aeabi_uldivmod.o) - .debug_frame 0x000000000000521c 0x34 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp\libgcc.a(_udivmoddi4.o) +.debug_frame 0x0000000000000000 0x5288 + .debug_frame 0x0000000000000000 0x430 ./Core/Src/main.o + .debug_frame 0x0000000000000430 0x2b8 ./Core/Src/stm32wlxx_hal_msp.o + .debug_frame 0x00000000000006e8 0x104 ./Core/Src/stm32wlxx_it.o + .debug_frame 0x00000000000007ec 0x58 ./Core/Src/system_stm32wlxx.o + .debug_frame 0x0000000000000844 0x860 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o + .debug_frame 0x00000000000010a4 0x90c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_adc.o + .debug_frame 0x00000000000019b0 0x498 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o + .debug_frame 0x0000000000001e48 0x168 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc.o + .debug_frame 0x0000000000001fb0 0x88 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_crc_ex.o + .debug_frame 0x0000000000002038 0x174 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_gpio.o + .debug_frame 0x00000000000021ac 0x31c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr.o + .debug_frame 0x00000000000024c8 0x7cc ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr_ex.o + .debug_frame 0x0000000000002c94 0x874 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + .debug_frame 0x0000000000003508 0x7ec ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o + .debug_frame 0x0000000000003cf4 0x624 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + .debug_frame 0x0000000000004318 0xae4 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o + .debug_frame 0x0000000000004dfc 0x2c0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o + .debug_frame 0x00000000000050bc 0x2c c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp\libc_nano.a(lib_a-init.o) + .debug_frame 0x00000000000050e8 0x20 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp\libc_nano.a(lib_a-memset.o) + .debug_frame 0x0000000000005108 0xac c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp\libgcc.a(_arm_addsubdf3.o) + .debug_frame 0x00000000000051b4 0x50 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp\libgcc.a(_arm_muldivdf3.o) + .debug_frame 0x0000000000005204 0x24 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp\libgcc.a(_arm_fixunsdfsi.o) + .debug_frame 0x0000000000005228 0x2c c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp\libgcc.a(_aeabi_uldivmod.o) + .debug_frame 0x0000000000005254 0x34 c:/st/stm32cubeide_1.11.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.100.202210260954/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m/nofp\libgcc.a(_udivmoddi4.o)