From c90139bd57111260c3289a6d063231adbb50cb75 Mon Sep 17 00:00:00 2001 From: hardware Date: Wed, 29 Jul 2026 17:55:04 +0100 Subject: [PATCH] Fertirrega_v6 Scaled to 4096 --- Fertirrega_v6/Core/Inc/ad5934_driver.h | 100 +- Fertirrega_v6/Core/Inc/ads1015_driver.h | 6 +- Fertirrega_v6/Core/Src/ad5934_driver.c | 83 +- Fertirrega_v6/Core/Src/ads1015_driver.c | 13 +- Fertirrega_v6/Core/Src/main.c | 218 +- .../Debug/Core/Src/ad5934_driver.cyclo | 54 +- Fertirrega_v6/Debug/Core/Src/ad5934_driver.o | Bin 837664 -> 841268 bytes Fertirrega_v6/Debug/Core/Src/ad5934_driver.su | 54 +- .../Debug/Core/Src/ads1015_driver.cyclo | 38 +- Fertirrega_v6/Debug/Core/Src/ads1015_driver.o | Bin 827060 -> 827152 bytes .../Debug/Core/Src/ads1015_driver.su | 38 +- Fertirrega_v6/Debug/Core/Src/main.cyclo | 12 +- Fertirrega_v6/Debug/Core/Src/main.o | Bin 838960 -> 838628 bytes Fertirrega_v6/Debug/Core/Src/main.su | 12 +- Fertirrega_v6/Debug/Fertirrega_v6.elf | Bin 1002872 -> 1003728 bytes Fertirrega_v6/Debug/Fertirrega_v6.list | 20830 ++++++++-------- Fertirrega_v6/Debug/Fertirrega_v6.map | 1461 +- 17 files changed, 11748 insertions(+), 11171 deletions(-) diff --git a/Fertirrega_v6/Core/Inc/ad5934_driver.h b/Fertirrega_v6/Core/Inc/ad5934_driver.h index 24604c8..24e72b9 100644 --- a/Fertirrega_v6/Core/Inc/ad5934_driver.h +++ b/Fertirrega_v6/Core/Inc/ad5934_driver.h @@ -194,10 +194,26 @@ extern "C" { #define AD5934_TIME_PER_SWEEP 60 // 60 ms entre o início de cada sweep #define AD5934_TIME_MUX_SETTLING 10 // 10 ms de espera após trocar o MUX -#define AD5934_BURST_SIZE 7 +#define AD5934_BURST_SIZE 5 #define AD5934_TRIM_COUNT 1 -#define AD5934_HISTORY_SIZE 8 -#define AD5934_IIR_ALPHA 0.25f +#define AD5934_HISTORY_SIZE 6 +#define AD5934_IIR_ALPHA 0.4f + + +#define AD5934_EC_FLOAT_SCALE_MIN 0.0f +#define AD5934_EC_FLOAT_SCALE_MAX 15000.0f +#define AD5934_EC_OUT_SCALE_MIN 0 +#define AD5934_EC_OUT_SCALE_MAX 4096 + +#define AD5934_REF_FLOAT_SCALE_MIN 1850.0f +#define AD5934_REF_FLOAT_SCALE_MAX 2450.0f +#define AD5934_REF_OUT_SCALE_MIN 0 +#define AD5934_REF_OUT_SCALE_MAX 4096 + +#define AD5934_RTD_FLOAT_SCALE_MIN 1850.0f +#define AD5934_RTD_FLOAT_SCALE_MAX 2450.0f +#define AD5934_RTD_OUT_SCALE_MIN 0 +#define AD5934_RTD_OUT_SCALE_MAX 4096 @@ -256,6 +272,7 @@ typedef enum { } AD5934_State_t; + typedef struct { float burst[AD5934_BURST_SIZE]; uint8_t burst_index; @@ -290,6 +307,79 @@ static const uint8_t ADG715_Channel_Map[AD5934_CH_MAX] = { [AD5934_CH_EC_HIGH_GAIN] = (ADG715_SW3 | ADG715_SW8) }; +static const float AD5934_Scale_Float_Min[AD5934_CH_MAX] = { + AD5934_REF_FLOAT_SCALE_MIN, + AD5934_REF_FLOAT_SCALE_MIN, + AD5934_REF_FLOAT_SCALE_MIN, + AD5934_REF_FLOAT_SCALE_MIN, + AD5934_REF_FLOAT_SCALE_MIN, + AD5934_REF_FLOAT_SCALE_MIN, + AD5934_REF_FLOAT_SCALE_MIN, + AD5934_REF_FLOAT_SCALE_MIN, + AD5934_REF_FLOAT_SCALE_MIN, + AD5934_RTD_FLOAT_SCALE_MIN, + AD5934_RTD_FLOAT_SCALE_MIN, + AD5934_RTD_FLOAT_SCALE_MIN, + AD5934_EC_FLOAT_SCALE_MIN, + AD5934_EC_FLOAT_SCALE_MIN, + AD5934_EC_FLOAT_SCALE_MIN +}; + +static const float AD5934_Scale_Float_Max[AD5934_CH_MAX] = { + AD5934_REF_FLOAT_SCALE_MAX, + AD5934_REF_FLOAT_SCALE_MAX, + AD5934_REF_FLOAT_SCALE_MAX, + AD5934_REF_FLOAT_SCALE_MAX, + AD5934_REF_FLOAT_SCALE_MAX, + AD5934_REF_FLOAT_SCALE_MAX, + AD5934_REF_FLOAT_SCALE_MAX, + AD5934_REF_FLOAT_SCALE_MAX, + AD5934_REF_FLOAT_SCALE_MAX, + AD5934_RTD_FLOAT_SCALE_MAX, + AD5934_RTD_FLOAT_SCALE_MAX, + AD5934_RTD_FLOAT_SCALE_MAX, + AD5934_EC_FLOAT_SCALE_MAX, + AD5934_EC_FLOAT_SCALE_MAX, + AD5934_EC_FLOAT_SCALE_MAX +}; + +static const uint16_t AD5934_Scale_Out_Min[AD5934_CH_MAX] = { + AD5934_REF_OUT_SCALE_MIN, + AD5934_REF_OUT_SCALE_MIN, + AD5934_REF_OUT_SCALE_MIN, + AD5934_REF_OUT_SCALE_MIN, + AD5934_REF_OUT_SCALE_MIN, + AD5934_REF_OUT_SCALE_MIN, + AD5934_REF_OUT_SCALE_MIN, + AD5934_REF_OUT_SCALE_MIN, + AD5934_REF_OUT_SCALE_MIN, + AD5934_RTD_OUT_SCALE_MIN, + AD5934_RTD_OUT_SCALE_MIN, + AD5934_RTD_OUT_SCALE_MIN, + AD5934_EC_OUT_SCALE_MIN, + AD5934_EC_OUT_SCALE_MIN, + AD5934_EC_OUT_SCALE_MIN +}; + +static const uint16_t AD5934_Scale_Out_Max[AD5934_CH_MAX] = { +AD5934_REF_OUT_SCALE_MAX, +AD5934_REF_OUT_SCALE_MAX, +AD5934_REF_OUT_SCALE_MAX, +AD5934_REF_OUT_SCALE_MAX, +AD5934_REF_OUT_SCALE_MAX, +AD5934_REF_OUT_SCALE_MAX, +AD5934_REF_OUT_SCALE_MAX, +AD5934_REF_OUT_SCALE_MAX, +AD5934_REF_OUT_SCALE_MAX, +AD5934_RTD_OUT_SCALE_MAX, +AD5934_RTD_OUT_SCALE_MAX, +AD5934_RTD_OUT_SCALE_MAX, +AD5934_EC_OUT_SCALE_MAX, +AD5934_EC_OUT_SCALE_MAX, +AD5934_EC_OUT_SCALE_MAX +}; + + extern int16_t temperature_dut_samples[2][AD5934_TEMP_AVERAGES]; extern int16_t temperature_ref_samples[2][AD5934_TEMP_AVERAGES]; extern float temperature_display[AD5934_TEMP_AVERAGES]; @@ -335,12 +425,16 @@ float AD5934_Get_Ref_Resistance(void); float AD5934_GetTemperature(float mag_ref); +float AD5934_Calculate_Temperature(float mag_ref, float mag_dut); + float AD5934_GetImpedance(float temperature_dut); float AD5934_GetMagnitude(void); void AD5934_Wait_For_Data_Valid(void); +uint16_t AD5934_Compress_To_IntScale(float value, uint8_t scale); + float AD5934_Round_Float_Precision(float value, uint8_t number_of_decimals); float AD5934_Linear_Correction(float raw_value); diff --git a/Fertirrega_v6/Core/Inc/ads1015_driver.h b/Fertirrega_v6/Core/Inc/ads1015_driver.h index 2fbbce2..6385dfd 100644 --- a/Fertirrega_v6/Core/Inc/ads1015_driver.h +++ b/Fertirrega_v6/Core/Inc/ads1015_driver.h @@ -130,8 +130,8 @@ extern "C" { #define ADS1015_BURST_SIZE 5 #define ADS1015_TRIM_COUNT 1 -#define ADS1015_HISTORY_SIZE 8 -#define ADS1015_IIR_ALPHA 0.3f +#define ADS1015_HISTORY_SIZE 6 +#define ADS1015_IIR_ALPHA 0.4f @@ -186,7 +186,7 @@ typedef struct { extern ADS1015_filter_t g_ph_filter; extern volatile uint32_t g_ms_counter; // Increment each 1ms Timer -void ADS1015(ADS1015_I2C* i2c, I2C_HandleTypeDef* hi2c, uint8_t i2cAddress); +void ADS1015_Init(void); uint16_t ADSreadADC_SingleEnded(ADS1015_I2C* i2c, uint8_t channel); int16_t ADSreadADC_Differential_0_1(ADS1015_I2C* i2c); int16_t ADSreadADC_Differential_2_3(ADS1015_I2C* i2c); diff --git a/Fertirrega_v6/Core/Src/ad5934_driver.c b/Fertirrega_v6/Core/Src/ad5934_driver.c index bcb53be..b95c128 100644 --- a/Fertirrega_v6/Core/Src/ad5934_driver.c +++ b/Fertirrega_v6/Core/Src/ad5934_driver.c @@ -150,6 +150,9 @@ uint32_t AD5934_ReadRegister(uint8_t regAddr, uint8_t numberOfBytes) ******************************************************************************/ void AD5934_Init(void) { + + ADG715_ResetChannels(); // Disconnects Analog Switch on the CE / RTD / Ref Resistor + /************ Config Sweep******************/ // Place AD5934 in reset @@ -396,6 +399,49 @@ float AD5934_GetTemperature(float mag_ref) } +/****************************************************************************** +* @brief Check if PT100 or PT1000 to Calculate Temperature. +* +* @param mag_ref - Magnitude of the Reference Resistor. +* +* @param mag_dut - Magnitude of the device under test. +* +* @return Temperature in Celsius. +******************************************************************************/ +float AD5934_Calculate_Temperature(float mag_ref, float mag_dut) +{ + uint8_t ch_ref; + float gain_factor, impedance_dut, ratio, discriminant; + + if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_7) == GPIO_PIN_SET) // OFF = PT1000, ON = PT100, PA7 has internal pull-up and switch connects to GND + { + ch_ref = AD5934_CH_RTD_LOW_GAIN; //PT100 + gain_factor = AD5934_GAIN_FACTOR_100R; + } + else + { + ch_ref = AD5934_CH_RTD_MID_GAIN; //PT1000 + gain_factor = AD5934_GAIN_FACTOR_1K; + } + + float ratio_mag = mag_ref / mag_dut; + + if(ch_ref==AD5934_CH_REF100R_LOW_GAIN) // only for PT100 + impedance_dut = AD5934_Linear_Correction(gain_factor * ratio_mag); + else + impedance_dut = gain_factor * ratio_mag; + + // Calculate impedance ratio with the Reference Resistor + ratio = impedance_dut / gain_factor; + + // Calculate impedance discriminant with the ratio + discriminant = (AD5934_RTD_A*AD5934_RTD_A)-(4.0f * AD5934_RTD_B * (1.0f - ratio)); + + return ((-AD5934_RTD_A + sqrtf(discriminant))/(2.0f * AD5934_RTD_B)); + +} + + /** * @brief Calculates impedance and converts it to conductivity using a 2-point * temperature-compensated model. @@ -469,6 +515,9 @@ float AD5934_GetImpedance(float temperature_dut) } + + + /****************************************************************************** * @brief Get Real and Imaginary values and calculate Magnitude. * @@ -524,6 +573,36 @@ void AD5934_Wait_For_Data_Valid(void) } +/** + * @brief Converte um valor float em uma escala de FLOAT_MIN a FLOAT_MAX para uint16_t em escala de UINT16_MIN a UINT16_MAX + * + * @param value Valor float entre FLOAT_MIN e FLOAT_MAX + * @param scale Escala de Ref Res, EC e RTD + * + * @return uint16_t Valor convertido na escala de UINT16_MIN a UINT16_MAX + */ +uint16_t AD5934_Compress_To_IntScale(float value, uint8_t scale) +{ + // Proteção contra índice inválido para evitar HardFault + if (scale >= AD5934_CH_MAX) + return 0; + + // Verifica limites do valor de entrada + if (value < AD5934_Scale_Float_Min[scale]) + return AD5934_Scale_Out_Min[scale]; + else if (value > AD5934_Scale_Float_Max[scale]) + return AD5934_Scale_Out_Max[scale]; + + // Converte o valor usando a fórmula: ((value - FLOAT_MIN) / (FLOAT_MAX - FLOAT_MIN)) * (UINT16_MAX - UINT16_MIN) + UINT16_MIN + uint16_t result = (uint16_t)(((value - AD5934_Scale_Float_Min[scale]) / (AD5934_Scale_Float_Max[scale] - AD5934_Scale_Float_Min[scale])) * ((float)AD5934_Scale_Out_Max[scale] - (float)AD5934_Scale_Out_Min[scale]) + (float)AD5934_Scale_Out_Min[scale]); + + // Garante que o resultado não exceda o limite superior + if (result > AD5934_Scale_Out_Max[scale]) + return (AD5934_Scale_Out_Max[scale]); + + return result; +} + /** * @brief Reduz a precisão decimal de um float através de truncamento. @@ -955,11 +1034,11 @@ void ADG715_Update(AD5934_Channel_t channel) ADG715_SetRegisterValue(ADG715_Channel_Map[channel]); // Gestão inteligente do delay de acomodação - if (channel >= AD5934_CH_EC_LOW_GAIN) + /* if (channel >= AD5934_CH_EC_LOW_GAIN) HAL_Delay(20); // Canais de Condutividade Elétrica (CE) necessitam de maior estabilização química else HAL_Delay(10); // Resistores puros e RTD estabilizam mais rapidamente - + */ } diff --git a/Fertirrega_v6/Core/Src/ads1015_driver.c b/Fertirrega_v6/Core/Src/ads1015_driver.c index 36fe02d..a26aff9 100644 --- a/Fertirrega_v6/Core/Src/ads1015_driver.c +++ b/Fertirrega_v6/Core/Src/ads1015_driver.c @@ -39,12 +39,13 @@ static void ADSbegin(ADS1015_I2C *i2c) { } // Declare an ADS1015 structure -void ADS1015(ADS1015_I2C *i2c, I2C_HandleTypeDef *hi2c, uint8_t i2cAddress) { - i2c->hi2c = hi2c; - i2c->m_i2cAddress = i2cAddress; // << 1; // It's Important to shift the address << 1 - i2c->m_conversionDelay = ADS1015_CONVERSIONDELAY; - i2c->m_bitShift = 4; - i2c->m_gain = GAIN_SIXTEEN; /* +/- 6.144V range (limited to VDD +0.3V max!) */ +void ADS1015_Init(void) +{ + i2c_ads1015.hi2c = &hi2c1; + i2c_ads1015.m_i2cAddress = ADS1015_ADDR_GND; // It's Important to shift the address << 1 + i2c_ads1015.m_conversionDelay = ADS1015_CONVERSIONDELAY; + i2c_ads1015.m_bitShift = 4; + i2c_ads1015.m_gain = GAIN_SIXTEEN; /* +/- 6.144V range (limited to VDD +0.3V max!) */ //ADSbegin(i2c); //Ready is not used } diff --git a/Fertirrega_v6/Core/Src/main.c b/Fertirrega_v6/Core/Src/main.c index 2b8974f..58308f2 100644 --- a/Fertirrega_v6/Core/Src/main.c +++ b/Fertirrega_v6/Core/Src/main.c @@ -69,7 +69,7 @@ uint8_t imag_text[6]; uint8_t rs485_text[6]; -uint8_t newline[]={'\n','\0'}; +uint8_t newline[]={'\r','\n'}; uint8_t doubleSpace[]={'_','_','\0'}; uint8_t newline_ph[]={'_','p','H','\n','\0'}; uint8_t newline_admi[]={'_','u','S','\n','\0'}; @@ -95,8 +95,8 @@ float Temp_Samples[STM32_TEMPERATURE_AVERAGES]={0}; /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); /* USER CODE BEGIN PFP */ -void intToStr(int N, char *str); -void FloatToString(char * buf, double val); +void intToStr(int16_t N, uint8_t *str); +void FloatToString(uint8_t * buf, double val); /* USER CODE END PFP */ @@ -121,6 +121,8 @@ int main(void) uint8_t previous_green_state = 0; uint8_t previous_red_state = 0; + uint8_t mux_connection = 0; + // Variables for timing uint32_t previous_millis_green = 0; uint32_t previous_millis_red = 0; @@ -132,7 +134,7 @@ int main(void) /*! Temporary variables */ - uint8_t tempString[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + uint8_t tempString[15] = {0}; uint8_t i; @@ -182,20 +184,13 @@ int main(void) digital_outputs_init(); - // Initialize RS-485 driver + rs485_init(); - - ADS1015(&i2c_ads1015, &hi2c1, ADS1015_ADDR_GND); - //ADSsetGain(&i2c_ads1015, GAIN_FOUR); + ADS1015_Init(); // Initializes pH Measurement - - - - ADG715_ResetChannels(); - // Start CE and RTD Measurement - AD5934_Init(); + AD5934_Init(); // Initializes CE and RTD Measurement @@ -290,33 +285,74 @@ int main(void) current_millis = g_ms_counter; + if((current_millis % 100) == 0) // Send data each 50ms + { + + + if (g_ref_filter.value_valid) // Reference Resistor on Board: 100 Ohms or 1000 Ohms + { + if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_7) == GPIO_PIN_SET) // OFF = PT1000, ON = PT100, PA7 has internal pull-up and switch connects to GND + mux_connection = AD5934_CH_REF100R_LOW_GAIN; // 100 Ohms Reference Resistor + else + mux_connection = AD5934_CH_REF1K_MID_GAIN; // 1K Reference Resistor + + uint16_t reference_final = AD5934_REF_OUT_SCALE_MAX - AD5934_Compress_To_IntScale(g_ref_filter.filtered_value, mux_connection); + intToStr(reference_final, tempString); + // float ref_final = g_ref_filter.filtered_value; + //FloatToString(tempString, ref_final); + rs485_send_broadcast(tempString, (strlen((uint8_t*)tempString))); + rs485_send_broadcast(newline, (strlen((uint8_t*)newline))); + } + + if (g_ec_filter.value_valid) // EC + { + if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_6) == GPIO_PIN_SET) // Hardware Setup: Gain Selection (PA6) + mux_connection = AD5934_CH_EC_HIGH_GAIN; + else + mux_connection = AD5934_CH_EC_MID_GAIN; + + uint16_t ec_final = AD5934_Compress_To_IntScale(g_ec_filter.filtered_value, mux_connection); + intToStr(ec_final, tempString); + /* float ec_final = g_ec_filter.filtered_value; + FloatToString(tempString, ec_final);*/ + rs485_send_broadcast(tempString, (strlen((uint8_t*)tempString))); + rs485_send_broadcast(newline, (strlen((uint8_t*)newline))); + } + + if (g_rtd_filter.value_valid) // PT100 or PT1000 in °C + { + if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_7) == GPIO_PIN_SET) // OFF = PT1000, ON = PT100, PA7 has internal pull-up and switch connects to GND + mux_connection = AD5934_CH_RTD_LOW_GAIN; //PT100 + else + mux_connection = AD5934_CH_RTD_MID_GAIN; //PT1000 + + uint16_t rtd_final = AD5934_RTD_OUT_SCALE_MAX - AD5934_Compress_To_IntScale(g_rtd_filter.filtered_value, mux_connection); + intToStr(rtd_final, tempString); + // float rtd_final = g_rtd_filter.filtered_value; + // FloatToString(tempString, rtd_final); + rs485_send_broadcast(tempString, (strlen((uint8_t*)tempString))); + rs485_send_broadcast(newline, (strlen((uint8_t*)newline))); + } + + if (g_ph_filter.value_valid) // pH + { + float ph_final = g_ph_filter.filtered_value; + FloatToString(tempString, ph_final); + rs485_send_broadcast(tempString, (strlen((uint8_t*)tempString))); + rs485_send_broadcast(newline, (strlen((uint8_t*)newline))); + } + + rs485_send_broadcast(newline, (strlen((uint8_t*)newline))); + + } + + // Piscar LED verde em PB5 a cada 0,5 segundos if ((current_millis - previous_millis_green) >= 500) { previous_millis_green = current_millis; HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5); - // Check if state changed and send via RS485 - uint8_t current_green_state = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_5); - if (current_green_state != previous_green_state) - { - previous_green_state = current_green_state; - uint8_t led_data[2] = {0x01, current_green_state}; // Command 0x01 for green LED - - } -/* - status1 = rs485_send_broadcast(ph_t, strlen((char*)ph_t)); - - - ph_compensated = ADSCalculate_ph_mV() ; - - - FloatToString(tempString, ph_compensated); - status0 = rs485_send_broadcast(tempString, (strlen((char*)tempString)-1)); - status1 = rs485_send_broadcast(newline_ph, strlen((char*)newline_ph)); - -*/ - } // Piscar LED vermelho em PB4 a cada 1 segundo @@ -325,54 +361,6 @@ int main(void) previous_millis_red = current_millis; HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_4); - // Check if state changed and send via RS485 - uint8_t current_red_state = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_4); - if (current_red_state != previous_red_state) - { - previous_red_state = current_red_state; - uint8_t led_data[2] = {0x02, current_red_state}; // Command 0x02 for red LED - - } - - - if (g_rtd_filter.value_valid) - { - float rtd_final = g_rtd_filter.filtered_value; - - status1 = rs485_send_broadcast(tm_t, strlen((char*)tm_t)); - //temperature_RTD = AD5934_GetTemperature(refResistance); - FloatToString(tempString, rtd_final); - status0 = rs485_send_broadcast(tempString, (strlen((char*)tempString)-1)); - status1 = rs485_send_broadcast(newline_temp, strlen((char*)newline_temp)); - } - - if (g_ec_filter.value_valid) - { - float ec_final = g_ec_filter.filtered_value; - status1 = rs485_send_broadcast(ad_t, strlen((char*)ad_t)); - //admittance_EC = AD5934_GetImpedance(temperature_RTD); - FloatToString(tempString, ec_final); - status0 = rs485_send_broadcast(tempString, (strlen((char*)tempString)-1)); - status1 = rs485_send_broadcast(newline_admi, strlen((char*)newline_admi)); - } - - if (g_ref_filter.value_valid) - { - //float reference_final = g_ref_filter.filtered_value; - status1 = rs485_send_broadcast(ph_t, strlen((char*)ph_t)); - ph_compensated = g_ph_filter.filtered_value; - FloatToString(tempString, ph_compensated); - - status0 = rs485_send_broadcast(tempString, (strlen((char*)tempString)-1)); - status1 = rs485_send_broadcast(newline_ph, strlen((char*)newline_ph)); - - status1 = rs485_send_broadcast(newline, strlen((char*)newline)); - } - - - - - } @@ -469,7 +457,7 @@ void SystemClock_Config(void) * * @return None. *******************************************************************************/ -void FloatToString(char *buf, double val) +void FloatToString(uint8_t *buf, double val) { char temp[20]; // Buffer auxiliar para construção segura int i = 0; @@ -531,38 +519,58 @@ void FloatToString(char *buf, double val) -void intToStr(int N, char *str) { - int i = 0; +void intToStr(int16_t N, uint8_t *str) +{ + int16_t i = 0; + int16_t sign = N; + uint8_t max_len = 15; // Tamanho máximo do buffer + uint8_t width = 4; // mínimo 4 caracteres - // Save the copy of the number for sign - int sign = N; + // Trata o caso do número zero isoladamente + if (N == 0) + { + // Preenche com zeros à esquerda até atingir a largura desejada + while (width > 1 && i < (max_len - 1)) + { + str[i++] = '0'; + width--; + } + str[i++] = '0'; + str[i] = '\0'; + return; + } - // If the number is negative, make it positive if (N < 0) N = -N; - // Extract digits from the number and add them to the - // string - while (N > 0) { - - // Convert integer digit to character and store - // it in the str - str[i++] = N % 10 + '0'; - N /= 10; + // Extração dos dígitos + while (N > 0) + { + if (i >= (max_len - 1)) + break; // Proteção de estouro + str[i++] = (N % 10) + '0'; + N /= 10; } - // If the number was negative, add a minus sign to the - // string - if (sign < 0) { - str[i++] = '-'; + // Adiciona o sinal de menos se necessário + if (sign < 0) + { + if (i < (max_len - 1)) + str[i++] = '-'; + } + + // Preenche com zeros à esquerda (considerando o espaço ocupado pelos dígitos e sinal) + while (i < width && i < (max_len - 1)) + { + str[i++] = '0'; } - // Null-terminate the string str[i] = '\0'; - // Reverse the string to get the correct order - for (int j = 0, k = i - 1; j < k; j++, k--) { - char temp = str[j]; + // Inverte a string para colocar na ordem correta + for (uint8_t j = 0, k = i - 1; j < k; j++, k--) + { + uint8_t temp = str[j]; str[j] = str[k]; str[k] = temp; } diff --git a/Fertirrega_v6/Debug/Core/Src/ad5934_driver.cyclo b/Fertirrega_v6/Debug/Core/Src/ad5934_driver.cyclo index 9fa3c71..0760971 100644 --- a/Fertirrega_v6/Debug/Core/Src/ad5934_driver.cyclo +++ b/Fertirrega_v6/Debug/Core/Src/ad5934_driver.cyclo @@ -2,29 +2,31 @@ ../Core/Src/ad5934_driver.c:75:10:AD5934_GetRegisterValue 3 ../Core/Src/ad5934_driver.c:114:10:AD5934_ReadRegister 3 ../Core/Src/ad5934_driver.c:151:6:AD5934_Init 1 -../Core/Src/ad5934_driver.c:179:6:AD5934_RestartSweep 1 -../Core/Src/ad5934_driver.c:211:6:AD5934_Repeat_Sweep 1 -../Core/Src/ad5934_driver.c:224:6:AD5934_StopSweep 1 -../Core/Src/ad5934_driver.c:241:10:AD5934_Sweep 1 -../Core/Src/ad5934_driver.c:267:7:AD5934_Get_Ref_Resistance 4 -../Core/Src/ad5934_driver.c:318:7:AD5934_GetTemperature 5 -../Core/Src/ad5934_driver.c:406:7:AD5934_GetImpedance 10 -../Core/Src/ad5934_driver.c:479:7:AD5934_GetMagnitude 1 -../Core/Src/ad5934_driver.c:500:6:AD5934_Wait_For_Data_Valid 3 -../Core/Src/ad5934_driver.c:535:7:AD5934_Round_Float_Precision 2 -../Core/Src/ad5934_driver.c:560:7:AD5934_Linear_Correction 1 -../Core/Src/ad5934_driver.c:577:7:AD5934_EC_Compensate_To_25C 2 -../Core/Src/ad5934_driver.c:593:7:AD5934_EC_Calibrate_Temperature 5 -../Core/Src/ad5934_driver.c:642:7:AD5934_Calibrate 1 -../Core/Src/ad5934_driver.c:658:6:AD5934_Process_System 24 -../Core/Src/ad5934_driver.c:783:6:AD5934_Sort_Array 4 -../Core/Src/ad5934_driver.c:805:7:AD5934_Trimmed_Mean 3 -../Core/Src/ad5934_driver.c:831:7:AD5934_History_Average 2 -../Core/Src/ad5934_driver.c:845:6:AD5934_Process_Sample 4 -../Core/Src/ad5934_driver.c:891:6:AD5934_RTD_NewSample 1 -../Core/Src/ad5934_driver.c:898:6:AD5934_EC_NewSample 1 -../Core/Src/ad5934_driver.c:905:6:AD5934_Reference_NewSample 1 -../Core/Src/ad5934_driver.c:921:6:ADG715_SetRegisterValue 1 -../Core/Src/ad5934_driver.c:931:6:ADG715_SetChannels 1 -../Core/Src/ad5934_driver.c:936:6:ADG715_ResetChannels 1 -../Core/Src/ad5934_driver.c:948:6:ADG715_Update 3 +../Core/Src/ad5934_driver.c:182:6:AD5934_RestartSweep 1 +../Core/Src/ad5934_driver.c:214:6:AD5934_Repeat_Sweep 1 +../Core/Src/ad5934_driver.c:227:6:AD5934_StopSweep 1 +../Core/Src/ad5934_driver.c:244:10:AD5934_Sweep 1 +../Core/Src/ad5934_driver.c:270:7:AD5934_Get_Ref_Resistance 4 +../Core/Src/ad5934_driver.c:321:7:AD5934_GetTemperature 5 +../Core/Src/ad5934_driver.c:411:7:AD5934_Calculate_Temperature 3 +../Core/Src/ad5934_driver.c:452:7:AD5934_GetImpedance 10 +../Core/Src/ad5934_driver.c:528:7:AD5934_GetMagnitude 1 +../Core/Src/ad5934_driver.c:549:6:AD5934_Wait_For_Data_Valid 3 +../Core/Src/ad5934_driver.c:584:10:AD5934_Compress_To_IntScale 5 +../Core/Src/ad5934_driver.c:614:7:AD5934_Round_Float_Precision 2 +../Core/Src/ad5934_driver.c:639:7:AD5934_Linear_Correction 1 +../Core/Src/ad5934_driver.c:656:7:AD5934_EC_Compensate_To_25C 2 +../Core/Src/ad5934_driver.c:672:7:AD5934_EC_Calibrate_Temperature 5 +../Core/Src/ad5934_driver.c:721:7:AD5934_Calibrate 1 +../Core/Src/ad5934_driver.c:737:6:AD5934_Process_System 24 +../Core/Src/ad5934_driver.c:862:6:AD5934_Sort_Array 4 +../Core/Src/ad5934_driver.c:884:7:AD5934_Trimmed_Mean 3 +../Core/Src/ad5934_driver.c:910:7:AD5934_History_Average 2 +../Core/Src/ad5934_driver.c:924:6:AD5934_Process_Sample 4 +../Core/Src/ad5934_driver.c:970:6:AD5934_RTD_NewSample 1 +../Core/Src/ad5934_driver.c:977:6:AD5934_EC_NewSample 1 +../Core/Src/ad5934_driver.c:984:6:AD5934_Reference_NewSample 1 +../Core/Src/ad5934_driver.c:1000:6:ADG715_SetRegisterValue 1 +../Core/Src/ad5934_driver.c:1010:6:ADG715_SetChannels 1 +../Core/Src/ad5934_driver.c:1015:6:ADG715_ResetChannels 1 +../Core/Src/ad5934_driver.c:1027:6:ADG715_Update 2 diff --git a/Fertirrega_v6/Debug/Core/Src/ad5934_driver.o b/Fertirrega_v6/Debug/Core/Src/ad5934_driver.o index bd4d2a105b2f886792c9234a0d0891389f999b48..e0b07730017664b4bad66aaf2bb17452c136cc89 100644 GIT binary patch delta 236537 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↦N;-GTkM+u83Woy8W|TsBUWr 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%0D|j0p;mbtS|Mw)mp&m_E7m*jnz<8JxQ)4E~ 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 delta 231522 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 Kf5K9!pZ^c%RL%zg diff --git a/Fertirrega_v6/Debug/Core/Src/ad5934_driver.su b/Fertirrega_v6/Debug/Core/Src/ad5934_driver.su index 72c1764..f2d9d37 100644 --- a/Fertirrega_v6/Debug/Core/Src/ad5934_driver.su +++ b/Fertirrega_v6/Debug/Core/Src/ad5934_driver.su @@ -2,29 +2,31 @@ ../Core/Src/ad5934_driver.c:75:10:AD5934_GetRegisterValue 40 static ../Core/Src/ad5934_driver.c:114:10:AD5934_ReadRegister 48 static ../Core/Src/ad5934_driver.c:151:6:AD5934_Init 8 static -../Core/Src/ad5934_driver.c:179:6:AD5934_RestartSweep 8 static -../Core/Src/ad5934_driver.c:211:6:AD5934_Repeat_Sweep 8 static -../Core/Src/ad5934_driver.c:224:6:AD5934_StopSweep 8 static -../Core/Src/ad5934_driver.c:241:10:AD5934_Sweep 16 static -../Core/Src/ad5934_driver.c:267:7:AD5934_Get_Ref_Resistance 48 static -../Core/Src/ad5934_driver.c:318:7:AD5934_GetTemperature 72 static -../Core/Src/ad5934_driver.c:406:7:AD5934_GetImpedance 56 static -../Core/Src/ad5934_driver.c:479:7:AD5934_GetMagnitude 24 static -../Core/Src/ad5934_driver.c:500:6:AD5934_Wait_For_Data_Valid 24 static -../Core/Src/ad5934_driver.c:535:7:AD5934_Round_Float_Precision 24 static -../Core/Src/ad5934_driver.c:560:7:AD5934_Linear_Correction 24 static -../Core/Src/ad5934_driver.c:577:7:AD5934_EC_Compensate_To_25C 24 static -../Core/Src/ad5934_driver.c:593:7:AD5934_EC_Calibrate_Temperature 152 static -../Core/Src/ad5934_driver.c:642:7:AD5934_Calibrate 48 static -../Core/Src/ad5934_driver.c:658:6:AD5934_Process_System 16 static -../Core/Src/ad5934_driver.c:783:6:AD5934_Sort_Array 24 static -../Core/Src/ad5934_driver.c:805:7:AD5934_Trimmed_Mean 32 static -../Core/Src/ad5934_driver.c:831:7:AD5934_History_Average 24 static -../Core/Src/ad5934_driver.c:845:6:AD5934_Process_Sample 32 static -../Core/Src/ad5934_driver.c:891:6:AD5934_RTD_NewSample 16 static -../Core/Src/ad5934_driver.c:898:6:AD5934_EC_NewSample 16 static -../Core/Src/ad5934_driver.c:905:6:AD5934_Reference_NewSample 16 static -../Core/Src/ad5934_driver.c:921:6:ADG715_SetRegisterValue 32 static -../Core/Src/ad5934_driver.c:931:6:ADG715_SetChannels 16 static -../Core/Src/ad5934_driver.c:936:6:ADG715_ResetChannels 8 static -../Core/Src/ad5934_driver.c:948:6:ADG715_Update 16 static +../Core/Src/ad5934_driver.c:182:6:AD5934_RestartSweep 8 static +../Core/Src/ad5934_driver.c:214:6:AD5934_Repeat_Sweep 8 static +../Core/Src/ad5934_driver.c:227:6:AD5934_StopSweep 8 static +../Core/Src/ad5934_driver.c:244:10:AD5934_Sweep 16 static +../Core/Src/ad5934_driver.c:270:7:AD5934_Get_Ref_Resistance 48 static +../Core/Src/ad5934_driver.c:321:7:AD5934_GetTemperature 72 static +../Core/Src/ad5934_driver.c:411:7:AD5934_Calculate_Temperature 40 static +../Core/Src/ad5934_driver.c:452:7:AD5934_GetImpedance 56 static +../Core/Src/ad5934_driver.c:528:7:AD5934_GetMagnitude 24 static +../Core/Src/ad5934_driver.c:549:6:AD5934_Wait_For_Data_Valid 24 static +../Core/Src/ad5934_driver.c:584:10:AD5934_Compress_To_IntScale 32 static +../Core/Src/ad5934_driver.c:614:7:AD5934_Round_Float_Precision 24 static +../Core/Src/ad5934_driver.c:639:7:AD5934_Linear_Correction 24 static +../Core/Src/ad5934_driver.c:656:7:AD5934_EC_Compensate_To_25C 24 static +../Core/Src/ad5934_driver.c:672:7:AD5934_EC_Calibrate_Temperature 152 static +../Core/Src/ad5934_driver.c:721:7:AD5934_Calibrate 48 static +../Core/Src/ad5934_driver.c:737:6:AD5934_Process_System 16 static +../Core/Src/ad5934_driver.c:862:6:AD5934_Sort_Array 24 static +../Core/Src/ad5934_driver.c:884:7:AD5934_Trimmed_Mean 32 static +../Core/Src/ad5934_driver.c:910:7:AD5934_History_Average 24 static +../Core/Src/ad5934_driver.c:924:6:AD5934_Process_Sample 32 static +../Core/Src/ad5934_driver.c:970:6:AD5934_RTD_NewSample 16 static +../Core/Src/ad5934_driver.c:977:6:AD5934_EC_NewSample 16 static +../Core/Src/ad5934_driver.c:984:6:AD5934_Reference_NewSample 16 static +../Core/Src/ad5934_driver.c:1000:6:ADG715_SetRegisterValue 32 static +../Core/Src/ad5934_driver.c:1010:6:ADG715_SetChannels 16 static +../Core/Src/ad5934_driver.c:1015:6:ADG715_ResetChannels 8 static +../Core/Src/ad5934_driver.c:1027:6:ADG715_Update 16 static diff --git a/Fertirrega_v6/Debug/Core/Src/ads1015_driver.cyclo b/Fertirrega_v6/Debug/Core/Src/ads1015_driver.cyclo index 7ee3e47..2ae6f9b 100644 --- a/Fertirrega_v6/Debug/Core/Src/ads1015_driver.cyclo +++ b/Fertirrega_v6/Debug/Core/Src/ads1015_driver.cyclo @@ -1,22 +1,22 @@ ../Core/Src/ads1015_driver.c:21:13:writeRegister 1 ../Core/Src/ads1015_driver.c:27:17:readRegister 1 ../Core/Src/ads1015_driver.c:35:13:ADSbegin 2 -../Core/Src/ads1015_driver.c:42:6:ADS1015 1 -../Core/Src/ads1015_driver.c:66:6:ADSsetGain 1 -../Core/Src/ads1015_driver.c:71:11:ADSgetGain 1 -../Core/Src/ads1015_driver.c:76:10:ADSreadADC_SingleEnded 6 -../Core/Src/ads1015_driver.c:128:9:ADSreadADC_Differential_0_1 3 -../Core/Src/ads1015_driver.c:173:9:ADSreadADC_Differential_2_3 3 -../Core/Src/ads1015_driver.c:219:6:ADSstartComparator_SingleEnded 5 -../Core/Src/ads1015_driver.c:261:9:ADSgetLastConversionResults 3 -../Core/Src/ads1015_driver.c:283:6:ADS1015_Process_System 10 -../Core/Src/ads1015_driver.c:366:6:ADS1015_Sort_Array 4 -../Core/Src/ads1015_driver.c:388:7:ADS1015_Trimmed_Mean 3 -../Core/Src/ads1015_driver.c:414:7:ADS1015_History_Average 2 -../Core/Src/ads1015_driver.c:428:6:ADS1015_Process_Sample 4 -../Core/Src/ads1015_driver.c:473:6:ADS1015_pH_NewSample 1 -../Core/Src/ads1015_driver.c:481:7:ADSCalculate_ph_mV 3 -../Core/Src/ads1015_driver.c:510:7:ADSCalculate_ph_Compensated 1 -../Core/Src/ads1015_driver.c:536:7:ADSCalculate_ph_Uncompensated 4 -../Core/Src/ads1015_driver.c:588:7:ADSinterpolate_ph 5 -../Core/Src/ads1015_driver.c:626:7:ADSRound_Float_Precision 2 +../Core/Src/ads1015_driver.c:42:6:ADS1015_Init 1 +../Core/Src/ads1015_driver.c:67:6:ADSsetGain 1 +../Core/Src/ads1015_driver.c:72:11:ADSgetGain 1 +../Core/Src/ads1015_driver.c:77:10:ADSreadADC_SingleEnded 6 +../Core/Src/ads1015_driver.c:129:9:ADSreadADC_Differential_0_1 3 +../Core/Src/ads1015_driver.c:174:9:ADSreadADC_Differential_2_3 3 +../Core/Src/ads1015_driver.c:220:6:ADSstartComparator_SingleEnded 5 +../Core/Src/ads1015_driver.c:262:9:ADSgetLastConversionResults 3 +../Core/Src/ads1015_driver.c:284:6:ADS1015_Process_System 10 +../Core/Src/ads1015_driver.c:367:6:ADS1015_Sort_Array 4 +../Core/Src/ads1015_driver.c:389:7:ADS1015_Trimmed_Mean 3 +../Core/Src/ads1015_driver.c:415:7:ADS1015_History_Average 2 +../Core/Src/ads1015_driver.c:429:6:ADS1015_Process_Sample 4 +../Core/Src/ads1015_driver.c:474:6:ADS1015_pH_NewSample 1 +../Core/Src/ads1015_driver.c:482:7:ADSCalculate_ph_mV 3 +../Core/Src/ads1015_driver.c:511:7:ADSCalculate_ph_Compensated 1 +../Core/Src/ads1015_driver.c:537:7:ADSCalculate_ph_Uncompensated 4 +../Core/Src/ads1015_driver.c:589:7:ADSinterpolate_ph 5 +../Core/Src/ads1015_driver.c:627:7:ADSRound_Float_Precision 2 diff --git a/Fertirrega_v6/Debug/Core/Src/ads1015_driver.o b/Fertirrega_v6/Debug/Core/Src/ads1015_driver.o index 6804fdbddf5ac3f453289948bee0d5283826f47a..6dcd097aff6a66fe386c729d0b1023911abe0c0b 100644 GIT binary patch delta 221733 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 I#C^m62jN1e;Q#;t delta 221518 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�#9aP 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%0Dv&agsNd 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 clMO?wP+{_)^6E@oa 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 W@4eTYt&NH9MKy?Sq7x{wiu*schB`?A delta 235459 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 TTV->}Zll&!he@`Cbr<^|ZL+(S diff --git a/Fertirrega_v6/Debug/Core/Src/main.su b/Fertirrega_v6/Debug/Core/Src/main.su index 6d54d7f..12e46b2 100644 --- a/Fertirrega_v6/Debug/Core/Src/main.su +++ b/Fertirrega_v6/Debug/Core/Src/main.su @@ -1,6 +1,6 @@ -../Core/Src/main.c:113:5:main 64 static -../Core/Src/main.c:421:6:SystemClock_Config 88 static -../Core/Src/main.c:472:6:FloatToString 104 static -../Core/Src/main.c:534:6:intToStr 40 static -../Core/Src/main.c:572:6:HAL_TIM_PeriodElapsedCallback 16 static -../Core/Src/main.c:596:6:Error_Handler 4 static,ignoring_inline_asm +../Core/Src/main.c:113:5:main 56 static +../Core/Src/main.c:409:6:SystemClock_Config 88 static +../Core/Src/main.c:460:6:FloatToString 104 static +../Core/Src/main.c:522:6:intToStr 32 static +../Core/Src/main.c:580:6:HAL_TIM_PeriodElapsedCallback 16 static +../Core/Src/main.c:604:6:Error_Handler 4 static,ignoring_inline_asm diff --git a/Fertirrega_v6/Debug/Fertirrega_v6.elf b/Fertirrega_v6/Debug/Fertirrega_v6.elf index a083113dfe0ca730d92831aa4528030e89038eed..a23796a04939af31ca14a62e5ad39e3b39f3b8ce 100644 GIT binary patch delta 203377 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

5@ZrrCWX4{Tv868{hIGg*hj34G4NV|w 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 delta 202322 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

q=L+42!d@j}vzYX(CbaQD&T&f!|3yv<+ZKexR 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: 8000130: b508 push {r3, lr} @@ -75,8 +75,8 @@ Disassembly of section .text: 800013a: f3af 8000 nop.w 800013e: bd08 pop {r3, pc} 8000140: 00000000 .word 0x00000000 - 8000144: 20000098 .word 0x20000098 - 8000148: 080066a8 .word 0x080066a8 + 8000144: 20000068 .word 0x20000068 + 8000148: 08006948 .word 0x08006948 0800014c : 800014c: 4603 mov r3, r0 @@ -1251,8284 +1251,8180 @@ Disassembly of section .text: 8000e56: f04f 0001 mov.w r0, #1 8000e5a: 4770 bx lr -08000e5c : +08000e5c <__aeabi_f2uiz>: + 8000e5c: 0042 lsls r2, r0, #1 + 8000e5e: d20e bcs.n 8000e7e <__aeabi_f2uiz+0x22> + 8000e60: f1b2 4ffe cmp.w r2, #2130706432 @ 0x7f000000 + 8000e64: d30b bcc.n 8000e7e <__aeabi_f2uiz+0x22> + 8000e66: f04f 039e mov.w r3, #158 @ 0x9e + 8000e6a: ebb3 6212 subs.w r2, r3, r2, lsr #24 + 8000e6e: d409 bmi.n 8000e84 <__aeabi_f2uiz+0x28> + 8000e70: ea4f 2300 mov.w r3, r0, lsl #8 + 8000e74: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 8000e78: fa23 f002 lsr.w r0, r3, r2 + 8000e7c: 4770 bx lr + 8000e7e: f04f 0000 mov.w r0, #0 + 8000e82: 4770 bx lr + 8000e84: f112 0f61 cmn.w r2, #97 @ 0x61 + 8000e88: d101 bne.n 8000e8e <__aeabi_f2uiz+0x32> + 8000e8a: 0242 lsls r2, r0, #9 + 8000e8c: d102 bne.n 8000e94 <__aeabi_f2uiz+0x38> + 8000e8e: f04f 30ff mov.w r0, #4294967295 + 8000e92: 4770 bx lr + 8000e94: f04f 0000 mov.w r0, #0 + 8000e98: 4770 bx lr + 8000e9a: bf00 nop + +08000e9c : * @param numberOfBytes - Number of bytes to be written in the register * * @return None. ******************************************************************************/ void AD5934_SetRegisterValue(uint8_t registerAddress, uint32_t registerValue, uint8_t numberOfBytes) { - 8000e5c: b580 push {r7, lr} - 8000e5e: b086 sub sp, #24 - 8000e60: af02 add r7, sp, #8 - 8000e62: 4603 mov r3, r0 - 8000e64: 6039 str r1, [r7, #0] - 8000e66: 71fb strb r3, [r7, #7] - 8000e68: 4613 mov r3, r2 - 8000e6a: 71bb strb r3, [r7, #6] + 8000e9c: b580 push {r7, lr} + 8000e9e: b086 sub sp, #24 + 8000ea0: af02 add r7, sp, #8 + 8000ea2: 4603 mov r3, r0 + 8000ea4: 6039 str r1, [r7, #0] + 8000ea6: 71fb strb r3, [r7, #7] + 8000ea8: 4613 mov r3, r2 + 8000eaa: 71bb strb r3, [r7, #6] uint8_t writeData[2] = {0, 0}; - 8000e6c: 2300 movs r3, #0 - 8000e6e: 81bb strh r3, [r7, #12] + 8000eac: 2300 movs r3, #0 + 8000eae: 81bb strh r3, [r7, #12] HAL_StatusTypeDef status; union Bytes2Long AD5934_reg; AD5934_reg.number = registerValue; - 8000e70: 683b ldr r3, [r7, #0] - 8000e72: 60bb str r3, [r7, #8] + 8000eb0: 683b ldr r3, [r7, #0] + 8000eb2: 60bb str r3, [r7, #8] for (uint8_t i = 0; i < numberOfBytes; i++) - 8000e74: 2300 movs r3, #0 - 8000e76: 73fb strb r3, [r7, #15] - 8000e78: e018 b.n 8000eac + 8000eb4: 2300 movs r3, #0 + 8000eb6: 73fb strb r3, [r7, #15] + 8000eb8: e018 b.n 8000eec { writeData[0] = registerAddress - i; - 8000e7a: 79fa ldrb r2, [r7, #7] - 8000e7c: 7bfb ldrb r3, [r7, #15] - 8000e7e: 1ad3 subs r3, r2, r3 - 8000e80: b2db uxtb r3, r3 - 8000e82: 733b strb r3, [r7, #12] + 8000eba: 79fa ldrb r2, [r7, #7] + 8000ebc: 7bfb ldrb r3, [r7, #15] + 8000ebe: 1ad3 subs r3, r2, r3 + 8000ec0: b2db uxtb r3, r3 + 8000ec2: 733b strb r3, [r7, #12] writeData[1] = AD5934_reg.bytes[i]; - 8000e84: 7bfb ldrb r3, [r7, #15] - 8000e86: 3310 adds r3, #16 - 8000e88: 443b add r3, r7 - 8000e8a: f813 3c08 ldrb.w r3, [r3, #-8] - 8000e8e: 737b strb r3, [r7, #13] + 8000ec4: 7bfb ldrb r3, [r7, #15] + 8000ec6: 3310 adds r3, #16 + 8000ec8: 443b add r3, r7 + 8000eca: f813 3c08 ldrb.w r3, [r3, #-8] + 8000ece: 737b strb r3, [r7, #13] status = HAL_I2C_Master_Transmit(&hi2c2, AD5934_I2C_ADDRESS, writeData, 2, 5); - 8000e90: f107 020c add.w r2, r7, #12 - 8000e94: 2305 movs r3, #5 - 8000e96: 9300 str r3, [sp, #0] - 8000e98: 2302 movs r3, #2 - 8000e9a: 211a movs r1, #26 - 8000e9c: 4807 ldr r0, [pc, #28] @ (8000ebc ) - 8000e9e: f002 fd73 bl 8003988 - 8000ea2: 4603 mov r3, r0 - 8000ea4: 73bb strb r3, [r7, #14] + 8000ed0: f107 020c add.w r2, r7, #12 + 8000ed4: 2305 movs r3, #5 + 8000ed6: 9300 str r3, [sp, #0] + 8000ed8: 2302 movs r3, #2 + 8000eda: 211a movs r1, #26 + 8000edc: 4807 ldr r0, [pc, #28] @ (8000efc ) + 8000ede: f002 fea3 bl 8003c28 + 8000ee2: 4603 mov r3, r0 + 8000ee4: 73bb strb r3, [r7, #14] for (uint8_t i = 0; i < numberOfBytes; i++) - 8000ea6: 7bfb ldrb r3, [r7, #15] - 8000ea8: 3301 adds r3, #1 - 8000eaa: 73fb strb r3, [r7, #15] - 8000eac: 7bfa ldrb r2, [r7, #15] - 8000eae: 79bb ldrb r3, [r7, #6] - 8000eb0: 429a cmp r2, r3 - 8000eb2: d3e2 bcc.n 8000e7a + 8000ee6: 7bfb ldrb r3, [r7, #15] + 8000ee8: 3301 adds r3, #1 + 8000eea: 73fb strb r3, [r7, #15] + 8000eec: 7bfa ldrb r2, [r7, #15] + 8000eee: 79bb ldrb r3, [r7, #6] + 8000ef0: 429a cmp r2, r3 + 8000ef2: d3e2 bcc.n 8000eba } return; - 8000eb4: bf00 nop + 8000ef4: bf00 nop } - 8000eb6: 3710 adds r7, #16 - 8000eb8: 46bd mov sp, r7 - 8000eba: bd80 pop {r7, pc} - 8000ebc: 200006e0 .word 0x200006e0 + 8000ef6: 3710 adds r7, #16 + 8000ef8: 46bd mov sp, r7 + 8000efa: bd80 pop {r7, pc} + 8000efc: 20000678 .word 0x20000678 -08000ec0 : +08000f00 : * @param numberOfBytes - Number of bytes to be read from the register. * * @return Register value. ******************************************************************************/ uint32_t AD5934_GetRegisterValue(uint8_t registerAddress, uint8_t numberOfBytes) { - 8000ec0: b580 push {r7, lr} - 8000ec2: b088 sub sp, #32 - 8000ec4: af02 add r7, sp, #8 - 8000ec6: 4603 mov r3, r0 - 8000ec8: 460a mov r2, r1 - 8000eca: 71fb strb r3, [r7, #7] - 8000ecc: 4613 mov r3, r2 - 8000ece: 71bb strb r3, [r7, #6] + 8000f00: b580 push {r7, lr} + 8000f02: b088 sub sp, #32 + 8000f04: af02 add r7, sp, #8 + 8000f06: 4603 mov r3, r0 + 8000f08: 460a mov r2, r1 + 8000f0a: 71fb strb r3, [r7, #7] + 8000f0c: 4613 mov r3, r2 + 8000f0e: 71bb strb r3, [r7, #6] uint8_t readData[1] = {0}; - 8000ed0: 2300 movs r3, #0 - 8000ed2: 753b strb r3, [r7, #20] + 8000f10: 2300 movs r3, #0 + 8000f12: 753b strb r3, [r7, #20] uint8_t writeData[2]; //= {AD5934_ADDR_POINTER, registerAddress}; union Bytes2Long AD5934_reg; HAL_StatusTypeDef status; if(numberOfBytes > 4) - 8000ed4: 79bb ldrb r3, [r7, #6] - 8000ed6: 2b04 cmp r3, #4 - 8000ed8: d902 bls.n 8000ee0 + 8000f14: 79bb ldrb r3, [r7, #6] + 8000f16: 2b04 cmp r3, #4 + 8000f18: d902 bls.n 8000f20 return 0xFFFFFFFF; //Overflow - 8000eda: f04f 33ff mov.w r3, #4294967295 - 8000ede: e031 b.n 8000f44 + 8000f1a: f04f 33ff mov.w r3, #4294967295 + 8000f1e: e031 b.n 8000f84 AD5934_reg.number = 0; - 8000ee0: 2300 movs r3, #0 - 8000ee2: 60fb str r3, [r7, #12] + 8000f20: 2300 movs r3, #0 + 8000f22: 60fb str r3, [r7, #12] for (uint8_t i = 0; i < numberOfBytes; i++) - 8000ee4: 2300 movs r3, #0 - 8000ee6: 75fb strb r3, [r7, #23] - 8000ee8: e027 b.n 8000f3a + 8000f24: 2300 movs r3, #0 + 8000f26: 75fb strb r3, [r7, #23] + 8000f28: e027 b.n 8000f7a { writeData[0] = AD5934_ADDR_POINTER; - 8000eea: 23b0 movs r3, #176 @ 0xb0 - 8000eec: 743b strb r3, [r7, #16] + 8000f2a: 23b0 movs r3, #176 @ 0xb0 + 8000f2c: 743b strb r3, [r7, #16] writeData[1] = registerAddress - i; - 8000eee: 79fa ldrb r2, [r7, #7] - 8000ef0: 7dfb ldrb r3, [r7, #23] - 8000ef2: 1ad3 subs r3, r2, r3 - 8000ef4: b2db uxtb r3, r3 - 8000ef6: 747b strb r3, [r7, #17] + 8000f2e: 79fa ldrb r2, [r7, #7] + 8000f30: 7dfb ldrb r3, [r7, #23] + 8000f32: 1ad3 subs r3, r2, r3 + 8000f34: b2db uxtb r3, r3 + 8000f36: 747b strb r3, [r7, #17] status = HAL_I2C_Master_Transmit(&hi2c2, AD5934_I2C_ADDRESS, writeData, 2, 5); - 8000ef8: f107 0210 add.w r2, r7, #16 - 8000efc: 2305 movs r3, #5 - 8000efe: 9300 str r3, [sp, #0] - 8000f00: 2302 movs r3, #2 - 8000f02: 211a movs r1, #26 - 8000f04: 4811 ldr r0, [pc, #68] @ (8000f4c ) - 8000f06: f002 fd3f bl 8003988 - 8000f0a: 4603 mov r3, r0 - 8000f0c: 75bb strb r3, [r7, #22] + 8000f38: f107 0210 add.w r2, r7, #16 + 8000f3c: 2305 movs r3, #5 + 8000f3e: 9300 str r3, [sp, #0] + 8000f40: 2302 movs r3, #2 + 8000f42: 211a movs r1, #26 + 8000f44: 4811 ldr r0, [pc, #68] @ (8000f8c ) + 8000f46: f002 fe6f bl 8003c28 + 8000f4a: 4603 mov r3, r0 + 8000f4c: 75bb strb r3, [r7, #22] //HAL_Delay(1); readData[0] = 0; - 8000f0e: 2300 movs r3, #0 - 8000f10: 753b strb r3, [r7, #20] + 8000f4e: 2300 movs r3, #0 + 8000f50: 753b strb r3, [r7, #20] status = HAL_I2C_Master_Receive(&hi2c2, AD5934_I2C_ADDRESS, readData, 1, 5); - 8000f12: f107 0214 add.w r2, r7, #20 - 8000f16: 2305 movs r3, #5 - 8000f18: 9300 str r3, [sp, #0] - 8000f1a: 2301 movs r3, #1 - 8000f1c: 211a movs r1, #26 - 8000f1e: 480b ldr r0, [pc, #44] @ (8000f4c ) - 8000f20: f002 fe30 bl 8003b84 - 8000f24: 4603 mov r3, r0 - 8000f26: 75bb strb r3, [r7, #22] + 8000f52: f107 0214 add.w r2, r7, #20 + 8000f56: 2305 movs r3, #5 + 8000f58: 9300 str r3, [sp, #0] + 8000f5a: 2301 movs r3, #1 + 8000f5c: 211a movs r1, #26 + 8000f5e: 480b ldr r0, [pc, #44] @ (8000f8c ) + 8000f60: f002 ff60 bl 8003e24 + 8000f64: 4603 mov r3, r0 + 8000f66: 75bb strb r3, [r7, #22] AD5934_reg.bytes[i]=readData[0]; - 8000f28: 7dfb ldrb r3, [r7, #23] - 8000f2a: 7d3a ldrb r2, [r7, #20] - 8000f2c: 3318 adds r3, #24 - 8000f2e: 443b add r3, r7 - 8000f30: f803 2c0c strb.w r2, [r3, #-12] + 8000f68: 7dfb ldrb r3, [r7, #23] + 8000f6a: 7d3a ldrb r2, [r7, #20] + 8000f6c: 3318 adds r3, #24 + 8000f6e: 443b add r3, r7 + 8000f70: f803 2c0c strb.w r2, [r3, #-12] for (uint8_t i = 0; i < numberOfBytes; i++) - 8000f34: 7dfb ldrb r3, [r7, #23] - 8000f36: 3301 adds r3, #1 - 8000f38: 75fb strb r3, [r7, #23] - 8000f3a: 7dfa ldrb r2, [r7, #23] - 8000f3c: 79bb ldrb r3, [r7, #6] - 8000f3e: 429a cmp r2, r3 - 8000f40: d3d3 bcc.n 8000eea + 8000f74: 7dfb ldrb r3, [r7, #23] + 8000f76: 3301 adds r3, #1 + 8000f78: 75fb strb r3, [r7, #23] + 8000f7a: 7dfa ldrb r2, [r7, #23] + 8000f7c: 79bb ldrb r3, [r7, #6] + 8000f7e: 429a cmp r2, r3 + 8000f80: d3d3 bcc.n 8000f2a /* AD5934_value.byte[0] = (uint16_t)(AD5934_reg.number & 0x0000FFFF) + 2048; AD5934_value.ints[1] = (uint16_t)((AD5934_reg.number & 0xFFFF0000)>>16) + 2048; */ return AD5934_reg.number; - 8000f42: 68fb ldr r3, [r7, #12] + 8000f82: 68fb ldr r3, [r7, #12] } - 8000f44: 4618 mov r0, r3 - 8000f46: 3718 adds r7, #24 - 8000f48: 46bd mov sp, r7 - 8000f4a: bd80 pop {r7, pc} - 8000f4c: 200006e0 .word 0x200006e0 + 8000f84: 4618 mov r0, r3 + 8000f86: 3718 adds r7, #24 + 8000f88: 46bd mov sp, r7 + 8000f8a: bd80 pop {r7, pc} + 8000f8c: 20000678 .word 0x20000678 -08000f50 : +08000f90 : * @param None. * * @return None. ******************************************************************************/ void AD5934_Init(void) { - 8000f50: b580 push {r7, lr} - 8000f52: af00 add r7, sp, #0 + 8000f90: b580 push {r7, lr} + 8000f92: af00 add r7, sp, #0 + + ADG715_ResetChannels(); // Disconnects Analog Switch on the CE / RTD / Ref Resistor + 8000f94: f000 fbbc bl 8001710 + /************ Config Sweep******************/ // Place AD5934 in reset AD5934_SetRegisterValue(AD5934_CONTROL_REG_LB, (AD5934_CONTROL_FUNCTION(AD5934_RESET)), 1); - 8000f54: 2201 movs r2, #1 - 8000f56: f44f 7180 mov.w r1, #256 @ 0x100 - 8000f5a: 2081 movs r0, #129 @ 0x81 - 8000f5c: f7ff ff7e bl 8000e5c + 8000f98: 2201 movs r2, #1 + 8000f9a: f44f 7180 mov.w r1, #256 @ 0x100 + 8000f9e: 2081 movs r0, #129 @ 0x81 + 8000fa0: f7ff ff7c bl 8000e9c // Configure starting frequency AD5934_SetRegisterValue(AD5934_START_FREQ_REG_LB, AD5934_FREQ_2K5HZ, 3); - 8000f60: 2203 movs r2, #3 - 8000f62: 490a ldr r1, [pc, #40] @ (8000f8c ) - 8000f64: 2084 movs r0, #132 @ 0x84 - 8000f66: f7ff ff79 bl 8000e5c + 8000fa4: 2203 movs r2, #3 + 8000fa6: 490a ldr r1, [pc, #40] @ (8000fd0 ) + 8000fa8: 2084 movs r0, #132 @ 0x84 + 8000faa: f7ff ff77 bl 8000e9c // Configure frequency increment step AD5934_SetRegisterValue(AD5934_FREQ_INCR_REG_LB, AD5934_FREQ_0HZ, 3); - 8000f6a: 2203 movs r2, #3 - 8000f6c: 2100 movs r1, #0 - 8000f6e: 2087 movs r0, #135 @ 0x87 - 8000f70: f7ff ff74 bl 8000e5c + 8000fae: 2203 movs r2, #3 + 8000fb0: 2100 movs r1, #0 + 8000fb2: 2087 movs r0, #135 @ 0x87 + 8000fb4: f7ff ff72 bl 8000e9c // Configure number of steps AD5934_SetRegisterValue(AD5934_NR_INCR_REG_LB, AD5934_STEP_FREQ_0, 2); - 8000f74: 2202 movs r2, #2 - 8000f76: 2100 movs r1, #0 - 8000f78: 2089 movs r0, #137 @ 0x89 - 8000f7a: f7ff ff6f bl 8000e5c + 8000fb8: 2202 movs r2, #2 + 8000fba: 2100 movs r1, #0 + 8000fbc: 2089 movs r0, #137 @ 0x89 + 8000fbe: f7ff ff6d bl 8000e9c // Set 128 Settling Time AD5934_SetRegisterValue(AD5934_NR_SETTLE_REG_LB, AD5934_SETTLING_TIME_64, 2); - 8000f7e: 2202 movs r2, #2 - 8000f80: 2140 movs r1, #64 @ 0x40 - 8000f82: 208b movs r0, #139 @ 0x8b - 8000f84: f7ff ff6a bl 8000e5c + 8000fc2: 2202 movs r2, #2 + 8000fc4: 2140 movs r1, #64 @ 0x40 + 8000fc6: 208b movs r0, #139 @ 0x8b + 8000fc8: f7ff ff68 bl 8000e9c } - 8000f88: bf00 nop - 8000f8a: bd80 pop {r7, pc} - 8000f8c: 0051eb86 .word 0x0051eb86 + 8000fcc: bf00 nop + 8000fce: bd80 pop {r7, pc} + 8000fd0: 0051eb86 .word 0x0051eb86 -08000f90 : +08000fd4 : * @param None. * * @return None. ******************************************************************************/ void AD5934_RestartSweep(void) { - 8000f90: b580 push {r7, lr} - 8000f92: af00 add r7, sp, #0 + 8000fd4: b580 push {r7, lr} + 8000fd6: af00 add r7, sp, #0 // Place AD5934 in standby AD5934_SetRegisterValue(AD5934_CONTROL_REG_HB, (AD5934_CONTROL_FUNCTION(AD5934_STANDBY) | AD5934_CONTROL_RANGE(AD5934_400mVpp_RANGE) | AD5934_PGA_GAIN(AD5934_PGA_GAIN_X1)), 1); - 8000f94: 2201 movs r2, #1 - 8000f96: 21b5 movs r1, #181 @ 0xb5 - 8000f98: 2080 movs r0, #128 @ 0x80 - 8000f9a: f7ff ff5f bl 8000e5c + 8000fd8: 2201 movs r2, #1 + 8000fda: 21b5 movs r1, #181 @ 0xb5 + 8000fdc: 2080 movs r0, #128 @ 0x80 + 8000fde: f7ff ff5d bl 8000e9c // Initialize starting frequency, Start frequency sweep, standby AD5934_SetRegisterValue(AD5934_CONTROL_REG_HB, ((AD5934_CONTROL_FUNCTION(AD5934_INIT_START_FREQ)) | AD5934_CONTROL_RANGE(AD5934_400mVpp_RANGE) | AD5934_PGA_GAIN(AD5934_PGA_GAIN_X1)), 1); - 8000f9e: 2201 movs r2, #1 - 8000fa0: 2115 movs r1, #21 - 8000fa2: 2080 movs r0, #128 @ 0x80 - 8000fa4: f7ff ff5a bl 8000e5c + 8000fe2: 2201 movs r2, #1 + 8000fe4: 2115 movs r1, #21 + 8000fe6: 2080 movs r0, #128 @ 0x80 + 8000fe8: f7ff ff58 bl 8000e9c // Disable Internal Reset State AD5934_SetRegisterValue(AD5934_CONTROL_REG_LB, AD5934_CONTROL_FUNCTION(AD5934_RESERVED), 1); - 8000fa8: 2201 movs r2, #1 - 8000faa: 2180 movs r1, #128 @ 0x80 - 8000fac: 2081 movs r0, #129 @ 0x81 - 8000fae: f7ff ff55 bl 8000e5c + 8000fec: 2201 movs r2, #1 + 8000fee: 2180 movs r1, #128 @ 0x80 + 8000ff0: 2081 movs r0, #129 @ 0x81 + 8000ff2: f7ff ff53 bl 8000e9c // Configure Range Output, PGA gain andPlace AD5934 in sweep AD5934_SetRegisterValue(AD5934_CONTROL_REG_HB, (AD5934_CONTROL_FUNCTION(AD5934_START_FREQ_SWEEP) | AD5934_CONTROL_RANGE(AD5934_400mVpp_RANGE) | AD5934_PGA_GAIN(AD5934_PGA_GAIN_X1)), 1); - 8000fb2: 2201 movs r2, #1 - 8000fb4: 2125 movs r1, #37 @ 0x25 - 8000fb6: 2080 movs r0, #128 @ 0x80 - 8000fb8: f7ff ff50 bl 8000e5c + 8000ff6: 2201 movs r2, #1 + 8000ff8: 2125 movs r1, #37 @ 0x25 + 8000ffa: 2080 movs r0, #128 @ 0x80 + 8000ffc: f7ff ff4e bl 8000e9c //AD5934_SetRegisterValue(AD5934_CONTROL_REG_HB, (AD5934_CONTROL_FUNCTION(AD5934_POWER_DOWN) | AD5934_CONTROL_RANGE(AD5934_400mVpp_RANGE) | AD5934_PGA_GAIN(AD5934_PGA_GAIN_X1)), 1); // Place AD5934 in standby (instead of power down) //AD5934_SetRegisterValue(AD5934_CONTROL_REG_HB, (AD5934_CONTROL_FUNCTION(AD5934_STANDBY) | AD5934_CONTROL_RANGE(AD5934_400mVpp_RANGE) | AD5934_PGA_GAIN(AD5934_PGA_GAIN_X1)), 1); } - 8000fbc: bf00 nop - 8000fbe: bd80 pop {r7, pc} + 8001000: bf00 nop + 8001002: bd80 pop {r7, pc} -08000fc0 : +08001004 : * @param None. * * @return none. ******************************************************************************/ void AD5934_Repeat_Sweep(void) { - 8000fc0: b580 push {r7, lr} - 8000fc2: af00 add r7, sp, #0 + 8001004: b580 push {r7, lr} + 8001006: af00 add r7, sp, #0 // Repeat AD5934 Sweep AD5934_SetRegisterValue(AD5934_CONTROL_REG_HB, (AD5934_CONTROL_FUNCTION(AD5934_REPEAT_FREQ) | AD5934_CONTROL_RANGE(AD5934_400mVpp_RANGE) | AD5934_PGA_GAIN(AD5934_PGA_GAIN_X1)), 1); - 8000fc4: 2201 movs r2, #1 - 8000fc6: 2145 movs r1, #69 @ 0x45 - 8000fc8: 2080 movs r0, #128 @ 0x80 - 8000fca: f7ff ff47 bl 8000e5c + 8001008: 2201 movs r2, #1 + 800100a: 2145 movs r1, #69 @ 0x45 + 800100c: 2080 movs r0, #128 @ 0x80 + 800100e: f7ff ff45 bl 8000e9c } - 8000fce: bf00 nop - 8000fd0: bd80 pop {r7, pc} + 8001012: bf00 nop + 8001014: bd80 pop {r7, pc} -08000fd2 : +08001016 : * @param None. * * @return None. ******************************************************************************/ void AD5934_StopSweep(void) { - 8000fd2: b580 push {r7, lr} - 8000fd4: af00 add r7, sp, #0 + 8001016: b580 push {r7, lr} + 8001018: af00 add r7, sp, #0 // Power Down //AD5934_SetRegisterValue(AD5934_CONTROL_REG_HB, (AD5934_CONTROL_FUNCTION(AD5934_POWER_DOWN) | AD5934_CONTROL_RANGE(AD5934_400mVpp_RANGE) | AD5934_PGA_GAIN(AD5934_PGA_GAIN_X1)), 1); // Place AD5934 in standby (instead of power down to save startup time) AD5934_SetRegisterValue(AD5934_CONTROL_REG_HB, (AD5934_CONTROL_FUNCTION(AD5934_STANDBY) | AD5934_CONTROL_RANGE(AD5934_400mVpp_RANGE) | AD5934_PGA_GAIN(AD5934_PGA_GAIN_X1)), 1); - 8000fd6: 2201 movs r2, #1 - 8000fd8: 21b5 movs r1, #181 @ 0xb5 - 8000fda: 2080 movs r0, #128 @ 0x80 - 8000fdc: f7ff ff3e bl 8000e5c + 800101a: 2201 movs r2, #1 + 800101c: 21b5 movs r1, #181 @ 0xb5 + 800101e: 2080 movs r0, #128 @ 0x80 + 8001020: f7ff ff3c bl 8000e9c } - 8000fe0: bf00 nop - 8000fe2: bd80 pop {r7, pc} + 8001024: bf00 nop + 8001026: bd80 pop {r7, pc} -08000fe4 : +08001028 : * @param: none * * @return Magnitude (float). ******************************************************************************/ float AD5934_GetMagnitude(void) { - 8000fe4: b5b0 push {r4, r5, r7, lr} - 8000fe6: b082 sub sp, #8 - 8000fe8: af00 add r7, sp, #0 + 8001028: b5b0 push {r4, r5, r7, lr} + 800102a: b082 sub sp, #8 + 800102c: af00 add r7, sp, #0 // Get Real Data register int16_t real_value = ((AD5934_GetRegisterValue(AD5934_REAL_REG_LB,2))); - 8000fea: 2102 movs r1, #2 - 8000fec: 2095 movs r0, #149 @ 0x95 - 8000fee: f7ff ff67 bl 8000ec0 - 8000ff2: 4603 mov r3, r0 - 8000ff4: 80fb strh r3, [r7, #6] + 800102e: 2102 movs r1, #2 + 8001030: 2095 movs r0, #149 @ 0x95 + 8001032: f7ff ff65 bl 8000f00 + 8001036: 4603 mov r3, r0 + 8001038: 80fb strh r3, [r7, #6] // Get Imaginary Data register int16_t imag_value = ((AD5934_GetRegisterValue(AD5934_IMG_REG_LB,2))); - 8000ff6: 2102 movs r1, #2 - 8000ff8: 2097 movs r0, #151 @ 0x97 - 8000ffa: f7ff ff61 bl 8000ec0 - 8000ffe: 4603 mov r3, r0 - 8001000: 80bb strh r3, [r7, #4] + 800103a: 2102 movs r1, #2 + 800103c: 2097 movs r0, #151 @ 0x97 + 800103e: f7ff ff5f bl 8000f00 + 8001042: 4603 mov r3, r0 + 8001044: 80bb strh r3, [r7, #4] // Calculate Magnitude using float function sqrtf float magnitude = sqrtf(((float)real_value * (float)real_value) + ((float)imag_value * (float)imag_value)); - 8001002: f9b7 3006 ldrsh.w r3, [r7, #6] - 8001006: 4618 mov r0, r3 - 8001008: f7ff fcf8 bl 80009fc <__aeabi_i2f> - 800100c: 4604 mov r4, r0 - 800100e: f9b7 3006 ldrsh.w r3, [r7, #6] - 8001012: 4618 mov r0, r3 - 8001014: f7ff fcf2 bl 80009fc <__aeabi_i2f> - 8001018: 4603 mov r3, r0 - 800101a: 4619 mov r1, r3 - 800101c: 4620 mov r0, r4 - 800101e: f7ff fd41 bl 8000aa4 <__aeabi_fmul> - 8001022: 4603 mov r3, r0 - 8001024: 461d mov r5, r3 - 8001026: f9b7 3004 ldrsh.w r3, [r7, #4] - 800102a: 4618 mov r0, r3 - 800102c: f7ff fce6 bl 80009fc <__aeabi_i2f> - 8001030: 4604 mov r4, r0 - 8001032: f9b7 3004 ldrsh.w r3, [r7, #4] - 8001036: 4618 mov r0, r3 - 8001038: f7ff fce0 bl 80009fc <__aeabi_i2f> - 800103c: 4603 mov r3, r0 - 800103e: 4619 mov r1, r3 - 8001040: 4620 mov r0, r4 - 8001042: f7ff fd2f bl 8000aa4 <__aeabi_fmul> - 8001046: 4603 mov r3, r0 - 8001048: 4619 mov r1, r3 - 800104a: 4628 mov r0, r5 - 800104c: f7ff fc22 bl 8000894 <__addsf3> - 8001050: 4603 mov r3, r0 - 8001052: 4618 mov r0, r3 - 8001054: f005 fa98 bl 8006588 - 8001058: 6038 str r0, [r7, #0] + 8001046: f9b7 3006 ldrsh.w r3, [r7, #6] + 800104a: 4618 mov r0, r3 + 800104c: f7ff fcd6 bl 80009fc <__aeabi_i2f> + 8001050: 4604 mov r4, r0 + 8001052: f9b7 3006 ldrsh.w r3, [r7, #6] + 8001056: 4618 mov r0, r3 + 8001058: f7ff fcd0 bl 80009fc <__aeabi_i2f> + 800105c: 4603 mov r3, r0 + 800105e: 4619 mov r1, r3 + 8001060: 4620 mov r0, r4 + 8001062: f7ff fd1f bl 8000aa4 <__aeabi_fmul> + 8001066: 4603 mov r3, r0 + 8001068: 461d mov r5, r3 + 800106a: f9b7 3004 ldrsh.w r3, [r7, #4] + 800106e: 4618 mov r0, r3 + 8001070: f7ff fcc4 bl 80009fc <__aeabi_i2f> + 8001074: 4604 mov r4, r0 + 8001076: f9b7 3004 ldrsh.w r3, [r7, #4] + 800107a: 4618 mov r0, r3 + 800107c: f7ff fcbe bl 80009fc <__aeabi_i2f> + 8001080: 4603 mov r3, r0 + 8001082: 4619 mov r1, r3 + 8001084: 4620 mov r0, r4 + 8001086: f7ff fd0d bl 8000aa4 <__aeabi_fmul> + 800108a: 4603 mov r3, r0 + 800108c: 4619 mov r1, r3 + 800108e: 4628 mov r0, r5 + 8001090: f7ff fc00 bl 8000894 <__addsf3> + 8001094: 4603 mov r3, r0 + 8001096: 4618 mov r0, r3 + 8001098: f005 fbc6 bl 8006828 + 800109c: 6038 str r0, [r7, #0] // Return magnitude value return (magnitude); - 800105a: 683b ldr r3, [r7, #0] + 800109e: 683b ldr r3, [r7, #0] } - 800105c: 4618 mov r0, r3 - 800105e: 3708 adds r7, #8 - 8001060: 46bd mov sp, r7 - 8001062: bdb0 pop {r4, r5, r7, pc} + 80010a0: 4618 mov r0, r3 + 80010a2: 3708 adds r7, #8 + 80010a4: 46bd mov sp, r7 + 80010a6: bdb0 pop {r4, r5, r7, pc} -08001064 : +080010a8 : + * @param scale Escala de Ref Res, EC e RTD + * + * @return uint16_t Valor convertido na escala de UINT16_MIN a UINT16_MAX + */ +uint16_t AD5934_Compress_To_IntScale(float value, uint8_t scale) +{ + 80010a8: b5b0 push {r4, r5, r7, lr} + 80010aa: b084 sub sp, #16 + 80010ac: af00 add r7, sp, #0 + 80010ae: 6078 str r0, [r7, #4] + 80010b0: 460b mov r3, r1 + 80010b2: 70fb strb r3, [r7, #3] + // Proteção contra índice inválido para evitar HardFault + if (scale >= AD5934_CH_MAX) + 80010b4: 78fb ldrb r3, [r7, #3] + 80010b6: 2b0e cmp r3, #14 + 80010b8: d901 bls.n 80010be + return 0; + 80010ba: 2300 movs r3, #0 + 80010bc: e076 b.n 80011ac + + // Verifica limites do valor de entrada + if (value < AD5934_Scale_Float_Min[scale]) + 80010be: 78fb ldrb r3, [r7, #3] + 80010c0: 4a3c ldr r2, [pc, #240] @ (80011b4 ) + 80010c2: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 80010c6: 4619 mov r1, r3 + 80010c8: 6878 ldr r0, [r7, #4] + 80010ca: f7ff fe89 bl 8000de0 <__aeabi_fcmplt> + 80010ce: 4603 mov r3, r0 + 80010d0: 2b00 cmp r3, #0 + 80010d2: d004 beq.n 80010de + return AD5934_Scale_Out_Min[scale]; + 80010d4: 78fb ldrb r3, [r7, #3] + 80010d6: 4a38 ldr r2, [pc, #224] @ (80011b8 ) + 80010d8: f832 3013 ldrh.w r3, [r2, r3, lsl #1] + 80010dc: e066 b.n 80011ac + else if (value > AD5934_Scale_Float_Max[scale]) + 80010de: 78fb ldrb r3, [r7, #3] + 80010e0: 4a36 ldr r2, [pc, #216] @ (80011bc ) + 80010e2: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 80010e6: 4619 mov r1, r3 + 80010e8: 6878 ldr r0, [r7, #4] + 80010ea: f7ff fe97 bl 8000e1c <__aeabi_fcmpgt> + 80010ee: 4603 mov r3, r0 + 80010f0: 2b00 cmp r3, #0 + 80010f2: d004 beq.n 80010fe + return AD5934_Scale_Out_Max[scale]; + 80010f4: 78fb ldrb r3, [r7, #3] + 80010f6: 4a32 ldr r2, [pc, #200] @ (80011c0 ) + 80010f8: f832 3013 ldrh.w r3, [r2, r3, lsl #1] + 80010fc: e056 b.n 80011ac + + // Converte o valor usando a fórmula: ((value - FLOAT_MIN) / (FLOAT_MAX - FLOAT_MIN)) * (UINT16_MAX - UINT16_MIN) + UINT16_MIN + uint16_t result = (uint16_t)(((value - AD5934_Scale_Float_Min[scale]) / (AD5934_Scale_Float_Max[scale] - AD5934_Scale_Float_Min[scale])) * ((float)AD5934_Scale_Out_Max[scale] - (float)AD5934_Scale_Out_Min[scale]) + (float)AD5934_Scale_Out_Min[scale]); + 80010fe: 78fb ldrb r3, [r7, #3] + 8001100: 4a2c ldr r2, [pc, #176] @ (80011b4 ) + 8001102: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8001106: 4619 mov r1, r3 + 8001108: 6878 ldr r0, [r7, #4] + 800110a: f7ff fbc1 bl 8000890 <__aeabi_fsub> + 800110e: 4603 mov r3, r0 + 8001110: 461c mov r4, r3 + 8001112: 78fb ldrb r3, [r7, #3] + 8001114: 4a29 ldr r2, [pc, #164] @ (80011bc ) + 8001116: f852 2023 ldr.w r2, [r2, r3, lsl #2] + 800111a: 78fb ldrb r3, [r7, #3] + 800111c: 4925 ldr r1, [pc, #148] @ (80011b4 ) + 800111e: f851 3023 ldr.w r3, [r1, r3, lsl #2] + 8001122: 4619 mov r1, r3 + 8001124: 4610 mov r0, r2 + 8001126: f7ff fbb3 bl 8000890 <__aeabi_fsub> + 800112a: 4603 mov r3, r0 + 800112c: 4619 mov r1, r3 + 800112e: 4620 mov r0, r4 + 8001130: f7ff fd6c bl 8000c0c <__aeabi_fdiv> + 8001134: 4603 mov r3, r0 + 8001136: 461d mov r5, r3 + 8001138: 78fb ldrb r3, [r7, #3] + 800113a: 4a21 ldr r2, [pc, #132] @ (80011c0 ) + 800113c: f832 3013 ldrh.w r3, [r2, r3, lsl #1] + 8001140: 4618 mov r0, r3 + 8001142: f7ff fc57 bl 80009f4 <__aeabi_ui2f> + 8001146: 4604 mov r4, r0 + 8001148: 78fb ldrb r3, [r7, #3] + 800114a: 4a1b ldr r2, [pc, #108] @ (80011b8 ) + 800114c: f832 3013 ldrh.w r3, [r2, r3, lsl #1] + 8001150: 4618 mov r0, r3 + 8001152: f7ff fc4f bl 80009f4 <__aeabi_ui2f> + 8001156: 4603 mov r3, r0 + 8001158: 4619 mov r1, r3 + 800115a: 4620 mov r0, r4 + 800115c: f7ff fb98 bl 8000890 <__aeabi_fsub> + 8001160: 4603 mov r3, r0 + 8001162: 4619 mov r1, r3 + 8001164: 4628 mov r0, r5 + 8001166: f7ff fc9d bl 8000aa4 <__aeabi_fmul> + 800116a: 4603 mov r3, r0 + 800116c: 461c mov r4, r3 + 800116e: 78fb ldrb r3, [r7, #3] + 8001170: 4a11 ldr r2, [pc, #68] @ (80011b8 ) + 8001172: f832 3013 ldrh.w r3, [r2, r3, lsl #1] + 8001176: 4618 mov r0, r3 + 8001178: f7ff fc3c bl 80009f4 <__aeabi_ui2f> + 800117c: 4603 mov r3, r0 + 800117e: 4619 mov r1, r3 + 8001180: 4620 mov r0, r4 + 8001182: f7ff fb87 bl 8000894 <__addsf3> + 8001186: 4603 mov r3, r0 + 8001188: 4618 mov r0, r3 + 800118a: f7ff fe67 bl 8000e5c <__aeabi_f2uiz> + 800118e: 4603 mov r3, r0 + 8001190: 81fb strh r3, [r7, #14] + + // Garante que o resultado não exceda o limite superior + if (result > AD5934_Scale_Out_Max[scale]) + 8001192: 78fb ldrb r3, [r7, #3] + 8001194: 4a0a ldr r2, [pc, #40] @ (80011c0 ) + 8001196: f832 3013 ldrh.w r3, [r2, r3, lsl #1] + 800119a: 89fa ldrh r2, [r7, #14] + 800119c: 429a cmp r2, r3 + 800119e: d904 bls.n 80011aa + return (AD5934_Scale_Out_Max[scale]); + 80011a0: 78fb ldrb r3, [r7, #3] + 80011a2: 4a07 ldr r2, [pc, #28] @ (80011c0 ) + 80011a4: f832 3013 ldrh.w r3, [r2, r3, lsl #1] + 80011a8: e000 b.n 80011ac + + return result; + 80011aa: 89fb ldrh r3, [r7, #14] +} + 80011ac: 4618 mov r0, r3 + 80011ae: 3710 adds r7, #16 + 80011b0: 46bd mov sp, r7 + 80011b2: bdb0 pop {r4, r5, r7, pc} + 80011b4: 08006970 .word 0x08006970 + 80011b8: 080069e8 .word 0x080069e8 + 80011bc: 080069ac .word 0x080069ac + 80011c0: 08006a08 .word 0x08006a08 + +080011c4 : return calibration_factor; } void AD5934_Process_System(void) { - 8001064: b580 push {r7, lr} - 8001066: b082 sub sp, #8 - 8001068: af00 add r7, sp, #0 + 80011c4: b580 push {r7, lr} + 80011c6: b082 sub sp, #8 + 80011c8: af00 add r7, sp, #0 static uint32_t state_timer = 0; uint8_t status = 0; - 800106a: 2300 movs r3, #0 - 800106c: 71fb strb r3, [r7, #7] + 80011ca: 2300 movs r3, #0 + 80011cc: 71fb strb r3, [r7, #7] switch (ad5934_state) - 800106e: 4b79 ldr r3, [pc, #484] @ (8001254 ) - 8001070: 781b ldrb r3, [r3, #0] - 8001072: b2db uxtb r3, r3 - 8001074: 2b06 cmp r3, #6 - 8001076: f200 80e9 bhi.w 800124c - 800107a: a201 add r2, pc, #4 @ (adr r2, 8001080 ) - 800107c: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8001080: 0800109d .word 0x0800109d - 8001084: 080010db .word 0x080010db - 8001088: 08001103 .word 0x08001103 - 800108c: 08001123 .word 0x08001123 - 8001090: 0800117b .word 0x0800117b - 8001094: 08001191 .word 0x08001191 - 8001098: 080010bd .word 0x080010bd + 80011ce: 4b79 ldr r3, [pc, #484] @ (80013b4 ) + 80011d0: 781b ldrb r3, [r3, #0] + 80011d2: b2db uxtb r3, r3 + 80011d4: 2b06 cmp r3, #6 + 80011d6: f200 80e9 bhi.w 80013ac + 80011da: a201 add r2, pc, #4 @ (adr r2, 80011e0 ) + 80011dc: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 80011e0: 080011fd .word 0x080011fd + 80011e4: 0800123b .word 0x0800123b + 80011e8: 08001263 .word 0x08001263 + 80011ec: 08001283 .word 0x08001283 + 80011f0: 080012db .word 0x080012db + 80011f4: 080012f1 .word 0x080012f1 + 80011f8: 0800121d .word 0x0800121d { case AD5934_IDLE: ADG715_Update(current_mux_channel); // Starts changing the mux channel - 800109c: 4b6e ldr r3, [pc, #440] @ (8001258 ) - 800109e: 781b ldrb r3, [r3, #0] - 80010a0: 4618 mov r0, r3 - 80010a2: f000 fa85 bl 80015b0 + 80011fc: 4b6e ldr r3, [pc, #440] @ (80013b8 ) + 80011fe: 781b ldrb r3, [r3, #0] + 8001200: 4618 mov r0, r3 + 8001202: f000 fa8d bl 8001720 is_new_channel = 1; // Forces first channel - 80010a6: 4b6d ldr r3, [pc, #436] @ (800125c ) - 80010a8: 2201 movs r2, #1 - 80010aa: 701a strb r2, [r3, #0] + 8001206: 4b6d ldr r3, [pc, #436] @ (80013bc ) + 8001208: 2201 movs r2, #1 + 800120a: 701a strb r2, [r3, #0] state_timer = g_ms_counter; - 80010ac: 4b6c ldr r3, [pc, #432] @ (8001260 ) - 80010ae: 681b ldr r3, [r3, #0] - 80010b0: 4a6c ldr r2, [pc, #432] @ (8001264 ) - 80010b2: 6013 str r3, [r2, #0] + 800120c: 4b6c ldr r3, [pc, #432] @ (80013c0 ) + 800120e: 681b ldr r3, [r3, #0] + 8001210: 4a6c ldr r2, [pc, #432] @ (80013c4 ) + 8001212: 6013 str r3, [r2, #0] ad5934_state = AD5934_WAIT_MUX; - 80010b4: 4b67 ldr r3, [pc, #412] @ (8001254 ) - 80010b6: 2206 movs r2, #6 - 80010b8: 701a strb r2, [r3, #0] + 8001214: 4b67 ldr r3, [pc, #412] @ (80013b4 ) + 8001216: 2206 movs r2, #6 + 8001218: 701a strb r2, [r3, #0] break; - 80010ba: e0c7 b.n 800124c + 800121a: e0c7 b.n 80013ac case AD5934_WAIT_MUX: if ((g_ms_counter - state_timer) >= AD5934_SYNC_MUX_SETTLING) // Wait until AD715 Mux switch stability - 80010bc: 4b68 ldr r3, [pc, #416] @ (8001260 ) - 80010be: 681a ldr r2, [r3, #0] - 80010c0: 4b68 ldr r3, [pc, #416] @ (8001264 ) - 80010c2: 681b ldr r3, [r3, #0] - 80010c4: 1ad3 subs r3, r2, r3 - 80010c6: 2b04 cmp r3, #4 - 80010c8: f240 80bb bls.w 8001242 + 800121c: 4b68 ldr r3, [pc, #416] @ (80013c0 ) + 800121e: 681a ldr r2, [r3, #0] + 8001220: 4b68 ldr r3, [pc, #416] @ (80013c4 ) + 8001222: 681b ldr r3, [r3, #0] + 8001224: 1ad3 subs r3, r2, r3 + 8001226: 2b04 cmp r3, #4 + 8001228: f240 80bb bls.w 80013a2 { sweep_count = 0; - 80010cc: 4b66 ldr r3, [pc, #408] @ (8001268 ) - 80010ce: 2200 movs r2, #0 - 80010d0: 701a strb r2, [r3, #0] + 800122c: 4b66 ldr r3, [pc, #408] @ (80013c8 ) + 800122e: 2200 movs r2, #0 + 8001230: 701a strb r2, [r3, #0] ad5934_state = AD5934_START_CONVERSION; - 80010d2: 4b60 ldr r3, [pc, #384] @ (8001254 ) - 80010d4: 2201 movs r2, #1 - 80010d6: 701a strb r2, [r3, #0] + 8001232: 4b60 ldr r3, [pc, #384] @ (80013b4 ) + 8001234: 2201 movs r2, #1 + 8001236: 701a strb r2, [r3, #0] } break; - 80010d8: e0b3 b.n 8001242 + 8001238: e0b3 b.n 80013a2 case AD5934_START_CONVERSION: state_timer = g_ms_counter; // Starts to count the Burst period for the sweeps - 80010da: 4b61 ldr r3, [pc, #388] @ (8001260 ) - 80010dc: 681b ldr r3, [r3, #0] - 80010de: 4a61 ldr r2, [pc, #388] @ (8001264 ) - 80010e0: 6013 str r3, [r2, #0] + 800123a: 4b61 ldr r3, [pc, #388] @ (80013c0 ) + 800123c: 681b ldr r3, [r3, #0] + 800123e: 4a61 ldr r2, [pc, #388] @ (80013c4 ) + 8001240: 6013 str r3, [r2, #0] /* DECISÃO DE COMANDO: Novo canal vs Leituras sucessivas */ if (is_new_channel) // Decision: Channel Switched or Next Sample in the Burst ? - 80010e2: 4b5e ldr r3, [pc, #376] @ (800125c ) - 80010e4: 781b ldrb r3, [r3, #0] - 80010e6: 2b00 cmp r3, #0 - 80010e8: d005 beq.n 80010f6 + 8001242: 4b5e ldr r3, [pc, #376] @ (80013bc ) + 8001244: 781b ldrb r3, [r3, #0] + 8001246: 2b00 cmp r3, #0 + 8001248: d005 beq.n 8001256 { AD5934_RestartSweep(); // Clean some AD5934 internal registers to Re-Start Sweep - 80010ea: f7ff ff51 bl 8000f90 + 800124a: f7ff fec3 bl 8000fd4 is_new_channel = 0; // Resets the flag to read the next Sample Burst - 80010ee: 4b5b ldr r3, [pc, #364] @ (800125c ) - 80010f0: 2200 movs r2, #0 - 80010f2: 701a strb r2, [r3, #0] - 80010f4: e001 b.n 80010fa + 800124e: 4b5b ldr r3, [pc, #364] @ (80013bc ) + 8001250: 2200 movs r2, #0 + 8001252: 701a strb r2, [r3, #0] + 8001254: e001 b.n 800125a } else { AD5934_Repeat_Sweep(); // Get Sample and just repeat reading - 80010f6: f7ff ff63 bl 8000fc0 + 8001256: f7ff fed5 bl 8001004 } ad5934_state = AD5934_WAIT_CONVERSION; // Next State - 80010fa: 4b56 ldr r3, [pc, #344] @ (8001254 ) - 80010fc: 2202 movs r2, #2 - 80010fe: 701a strb r2, [r3, #0] + 800125a: 4b56 ldr r3, [pc, #344] @ (80013b4 ) + 800125c: 2202 movs r2, #2 + 800125e: 701a strb r2, [r3, #0] break; - 8001100: e0a4 b.n 800124c + 8001260: e0a4 b.n 80013ac case AD5934_WAIT_CONVERSION: status = (uint8_t)AD5934_GetRegisterValue(AD5934_STATUS_REG, 1); // Check if the current converion is ready in the AD5934 - 8001102: 2101 movs r1, #1 - 8001104: 208f movs r0, #143 @ 0x8f - 8001106: f7ff fedb bl 8000ec0 - 800110a: 4603 mov r3, r0 - 800110c: 71fb strb r3, [r7, #7] + 8001262: 2101 movs r1, #1 + 8001264: 208f movs r0, #143 @ 0x8f + 8001266: f7ff fe4b bl 8000f00 + 800126a: 4603 mov r3, r0 + 800126c: 71fb strb r3, [r7, #7] if ((status & AD5934_STATUS_DATA_VALID) != 0) - 800110e: 79fb ldrb r3, [r7, #7] - 8001110: f003 0302 and.w r3, r3, #2 - 8001114: 2b00 cmp r3, #0 - 8001116: f000 8096 beq.w 8001246 + 800126e: 79fb ldrb r3, [r7, #7] + 8001270: f003 0302 and.w r3, r3, #2 + 8001274: 2b00 cmp r3, #0 + 8001276: f000 8096 beq.w 80013a6 { ad5934_state = AD5934_READ_DATA; - 800111a: 4b4e ldr r3, [pc, #312] @ (8001254 ) - 800111c: 2203 movs r2, #3 - 800111e: 701a strb r2, [r3, #0] + 800127a: 4b4e ldr r3, [pc, #312] @ (80013b4 ) + 800127c: 2203 movs r2, #3 + 800127e: 701a strb r2, [r3, #0] } break; - 8001120: e091 b.n 8001246 + 8001280: e091 b.n 80013a6 case AD5934_READ_DATA: { float magnitude = AD5934_GetMagnitude(); - 8001122: f7ff ff5f bl 8000fe4 - 8001126: 6038 str r0, [r7, #0] + 8001282: f7ff fed1 bl 8001028 + 8001286: 6038 str r0, [r7, #0] switch (current_mux_channel) - 8001128: 4b4b ldr r3, [pc, #300] @ (8001258 ) - 800112a: 781b ldrb r3, [r3, #0] - 800112c: 2b02 cmp r3, #2 - 800112e: d00e beq.n 800114e - 8001130: 2b02 cmp r3, #2 - 8001132: dc10 bgt.n 8001156 - 8001134: 2b00 cmp r3, #0 - 8001136: d002 beq.n 800113e - 8001138: 2b01 cmp r3, #1 - 800113a: d004 beq.n 8001146 - 800113c: e00b b.n 8001156 + 8001288: 4b4b ldr r3, [pc, #300] @ (80013b8 ) + 800128a: 781b ldrb r3, [r3, #0] + 800128c: 2b02 cmp r3, #2 + 800128e: d00e beq.n 80012ae + 8001290: 2b02 cmp r3, #2 + 8001292: dc10 bgt.n 80012b6 + 8001294: 2b00 cmp r3, #0 + 8001296: d002 beq.n 800129e + 8001298: 2b01 cmp r3, #1 + 800129a: d004 beq.n 80012a6 + 800129c: e00b b.n 80012b6 { case AD5934_ID_RTD: AD5934_RTD_NewSample(magnitude); - 800113e: 6838 ldr r0, [r7, #0] - 8001140: f000 f9ec bl 800151c + 800129e: 6838 ldr r0, [r7, #0] + 80012a0: f000 f9f4 bl 800168c break; - 8001144: e007 b.n 8001156 + 80012a4: e007 b.n 80012b6 case AD5934_ID_EC: AD5934_EC_NewSample(magnitude); - 8001146: 6838 ldr r0, [r7, #0] - 8001148: f000 f9f6 bl 8001538 + 80012a6: 6838 ldr r0, [r7, #0] + 80012a8: f000 f9fe bl 80016a8 break; - 800114c: e003 b.n 8001156 + 80012ac: e003 b.n 80012b6 case AD5934_ID_REF: AD5934_Reference_NewSample(magnitude); - 800114e: 6838 ldr r0, [r7, #0] - 8001150: f000 fa00 bl 8001554 + 80012ae: 6838 ldr r0, [r7, #0] + 80012b0: f000 fa08 bl 80016c4 break; - 8001154: bf00 nop + 80012b4: bf00 nop } sweep_count++; - 8001156: 4b44 ldr r3, [pc, #272] @ (8001268 ) - 8001158: 781b ldrb r3, [r3, #0] - 800115a: 3301 adds r3, #1 - 800115c: b2da uxtb r2, r3 - 800115e: 4b42 ldr r3, [pc, #264] @ (8001268 ) - 8001160: 701a strb r2, [r3, #0] + 80012b6: 4b44 ldr r3, [pc, #272] @ (80013c8 ) + 80012b8: 781b ldrb r3, [r3, #0] + 80012ba: 3301 adds r3, #1 + 80012bc: b2da uxtb r2, r3 + 80012be: 4b42 ldr r3, [pc, #264] @ (80013c8 ) + 80012c0: 701a strb r2, [r3, #0] if (sweep_count >= AD5934_BURST_SIZE) // Check if number of samples for the burst is complete - 8001162: 4b41 ldr r3, [pc, #260] @ (8001268 ) - 8001164: 781b ldrb r3, [r3, #0] - 8001166: 2b06 cmp r3, #6 - 8001168: d903 bls.n 8001172 + 80012c2: 4b41 ldr r3, [pc, #260] @ (80013c8 ) + 80012c4: 781b ldrb r3, [r3, #0] + 80012c6: 2b04 cmp r3, #4 + 80012c8: d903 bls.n 80012d2 { ad5934_state = AD5934_SWITCH_MUX; // Next Re-Start Sweep - 800116a: 4b3a ldr r3, [pc, #232] @ (8001254 ) - 800116c: 2205 movs r2, #5 - 800116e: 701a strb r2, [r3, #0] + 80012ca: 4b3a ldr r3, [pc, #232] @ (80013b4 ) + 80012cc: 2205 movs r2, #5 + 80012ce: 701a strb r2, [r3, #0] else { ad5934_state = AD5934_WAIT_NEXT_SWEEP; // Next Repeat Sweep } } break; - 8001170: e06c b.n 800124c + 80012d0: e06c b.n 80013ac ad5934_state = AD5934_WAIT_NEXT_SWEEP; // Next Repeat Sweep - 8001172: 4b38 ldr r3, [pc, #224] @ (8001254 ) - 8001174: 2204 movs r2, #4 - 8001176: 701a strb r2, [r3, #0] + 80012d2: 4b38 ldr r3, [pc, #224] @ (80013b4 ) + 80012d4: 2204 movs r2, #4 + 80012d6: 701a strb r2, [r3, #0] break; - 8001178: e068 b.n 800124c + 80012d8: e068 b.n 80013ac case AD5934_WAIT_NEXT_SWEEP: if ((g_ms_counter - state_timer) >= AD5934_TIME_PER_SWEEP) - 800117a: 4b39 ldr r3, [pc, #228] @ (8001260 ) - 800117c: 681a ldr r2, [r3, #0] - 800117e: 4b39 ldr r3, [pc, #228] @ (8001264 ) - 8001180: 681b ldr r3, [r3, #0] - 8001182: 1ad3 subs r3, r2, r3 - 8001184: 2b3b cmp r3, #59 @ 0x3b - 8001186: d960 bls.n 800124a + 80012da: 4b39 ldr r3, [pc, #228] @ (80013c0 ) + 80012dc: 681a ldr r2, [r3, #0] + 80012de: 4b39 ldr r3, [pc, #228] @ (80013c4 ) + 80012e0: 681b ldr r3, [r3, #0] + 80012e2: 1ad3 subs r3, r2, r3 + 80012e4: 2b3b cmp r3, #59 @ 0x3b + 80012e6: d960 bls.n 80013aa { ad5934_state = AD5934_START_CONVERSION; - 8001188: 4b32 ldr r3, [pc, #200] @ (8001254 ) - 800118a: 2201 movs r2, #1 - 800118c: 701a strb r2, [r3, #0] + 80012e8: 4b32 ldr r3, [pc, #200] @ (80013b4 ) + 80012ea: 2201 movs r2, #1 + 80012ec: 701a strb r2, [r3, #0] } break; - 800118e: e05c b.n 800124a + 80012ee: e05c b.n 80013aa case AD5934_SWITCH_MUX: AD5934_StopSweep(); // Put AD5934 in Standby - 8001190: f7ff ff1f bl 8000fd2 + 80012f0: f7ff fe91 bl 8001016 current_mux_channel = (uint8_t)((current_mux_channel + 1) % 3); // Pointer to the next channel (Circular Buffer 0 to 2) - 8001194: 4b30 ldr r3, [pc, #192] @ (8001258 ) - 8001196: 781b ldrb r3, [r3, #0] - 8001198: 1c5a adds r2, r3, #1 - 800119a: 4b34 ldr r3, [pc, #208] @ (800126c ) - 800119c: fb83 3102 smull r3, r1, r3, r2 - 80011a0: 17d3 asrs r3, r2, #31 - 80011a2: 1ac9 subs r1, r1, r3 - 80011a4: 460b mov r3, r1 - 80011a6: 005b lsls r3, r3, #1 - 80011a8: 440b add r3, r1 - 80011aa: 1ad1 subs r1, r2, r3 - 80011ac: b2ca uxtb r2, r1 - 80011ae: 4b2a ldr r3, [pc, #168] @ (8001258 ) - 80011b0: 701a strb r2, [r3, #0] + 80012f4: 4b30 ldr r3, [pc, #192] @ (80013b8 ) + 80012f6: 781b ldrb r3, [r3, #0] + 80012f8: 1c5a adds r2, r3, #1 + 80012fa: 4b34 ldr r3, [pc, #208] @ (80013cc ) + 80012fc: fb83 3102 smull r3, r1, r3, r2 + 8001300: 17d3 asrs r3, r2, #31 + 8001302: 1ac9 subs r1, r1, r3 + 8001304: 460b mov r3, r1 + 8001306: 005b lsls r3, r3, #1 + 8001308: 440b add r3, r1 + 800130a: 1ad1 subs r1, r2, r3 + 800130c: b2ca uxtb r2, r1 + 800130e: 4b2a ldr r3, [pc, #168] @ (80013b8 ) + 8001310: 701a strb r2, [r3, #0] switch (current_mux_channel) - 80011b2: 4b29 ldr r3, [pc, #164] @ (8001258 ) - 80011b4: 781b ldrb r3, [r3, #0] - 80011b6: 2b02 cmp r3, #2 - 80011b8: d024 beq.n 8001204 - 80011ba: 2b02 cmp r3, #2 - 80011bc: dc31 bgt.n 8001222 - 80011be: 2b00 cmp r3, #0 - 80011c0: d002 beq.n 80011c8 - 80011c2: 2b01 cmp r3, #1 - 80011c4: d00f beq.n 80011e6 - 80011c6: e02c b.n 8001222 + 8001312: 4b29 ldr r3, [pc, #164] @ (80013b8 ) + 8001314: 781b ldrb r3, [r3, #0] + 8001316: 2b02 cmp r3, #2 + 8001318: d024 beq.n 8001364 + 800131a: 2b02 cmp r3, #2 + 800131c: dc31 bgt.n 8001382 + 800131e: 2b00 cmp r3, #0 + 8001320: d002 beq.n 8001328 + 8001322: 2b01 cmp r3, #1 + 8001324: d00f beq.n 8001346 + 8001326: e02c b.n 8001382 { case AD5934_ID_RTD: if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_7) == GPIO_PIN_SET) // OFF = PT1000, ON = PT100, PA7 has internal pull-up and switch connects to GND - 80011c8: 2180 movs r1, #128 @ 0x80 - 80011ca: 4829 ldr r0, [pc, #164] @ (8001270 ) - 80011cc: f002 fa50 bl 8003670 - 80011d0: 4603 mov r3, r0 - 80011d2: 2b01 cmp r3, #1 - 80011d4: d103 bne.n 80011de + 8001328: 2180 movs r1, #128 @ 0x80 + 800132a: 4829 ldr r0, [pc, #164] @ (80013d0 ) + 800132c: f002 faf0 bl 8003910 + 8001330: 4603 mov r3, r0 + 8001332: 2b01 cmp r3, #1 + 8001334: d103 bne.n 800133e current_hw_mux_connection = AD5934_CH_RTD_LOW_GAIN; //PT100 - 80011d6: 4b27 ldr r3, [pc, #156] @ (8001274 ) - 80011d8: 2209 movs r2, #9 - 80011da: 701a strb r2, [r3, #0] + 8001336: 4b27 ldr r3, [pc, #156] @ (80013d4 ) + 8001338: 2209 movs r2, #9 + 800133a: 701a strb r2, [r3, #0] else current_hw_mux_connection = AD5934_CH_RTD_MID_GAIN; //PT1000 break; - 80011dc: e021 b.n 8001222 + 800133c: e021 b.n 8001382 current_hw_mux_connection = AD5934_CH_RTD_MID_GAIN; //PT1000 - 80011de: 4b25 ldr r3, [pc, #148] @ (8001274 ) - 80011e0: 220a movs r2, #10 - 80011e2: 701a strb r2, [r3, #0] + 800133e: 4b25 ldr r3, [pc, #148] @ (80013d4 ) + 8001340: 220a movs r2, #10 + 8001342: 701a strb r2, [r3, #0] break; - 80011e4: e01d b.n 8001222 + 8001344: e01d b.n 8001382 case AD5934_ID_EC: if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_6) == GPIO_PIN_SET) // Hardware Setup: Gain Selection (PA6) - 80011e6: 2140 movs r1, #64 @ 0x40 - 80011e8: 4821 ldr r0, [pc, #132] @ (8001270 ) - 80011ea: f002 fa41 bl 8003670 - 80011ee: 4603 mov r3, r0 - 80011f0: 2b01 cmp r3, #1 - 80011f2: d103 bne.n 80011fc + 8001346: 2140 movs r1, #64 @ 0x40 + 8001348: 4821 ldr r0, [pc, #132] @ (80013d0 ) + 800134a: f002 fae1 bl 8003910 + 800134e: 4603 mov r3, r0 + 8001350: 2b01 cmp r3, #1 + 8001352: d103 bne.n 800135c current_hw_mux_connection = AD5934_CH_EC_HIGH_GAIN; - 80011f4: 4b1f ldr r3, [pc, #124] @ (8001274 ) - 80011f6: 220e movs r2, #14 - 80011f8: 701a strb r2, [r3, #0] + 8001354: 4b1f ldr r3, [pc, #124] @ (80013d4 ) + 8001356: 220e movs r2, #14 + 8001358: 701a strb r2, [r3, #0] else current_hw_mux_connection = AD5934_CH_EC_MID_GAIN; break; - 80011fa: e012 b.n 8001222 + 800135a: e012 b.n 8001382 current_hw_mux_connection = AD5934_CH_EC_MID_GAIN; - 80011fc: 4b1d ldr r3, [pc, #116] @ (8001274 ) - 80011fe: 220d movs r2, #13 - 8001200: 701a strb r2, [r3, #0] + 800135c: 4b1d ldr r3, [pc, #116] @ (80013d4 ) + 800135e: 220d movs r2, #13 + 8001360: 701a strb r2, [r3, #0] break; - 8001202: e00e b.n 8001222 + 8001362: e00e b.n 8001382 case AD5934_ID_REF: if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_7) == GPIO_PIN_SET) // OFF = PT1000, ON = PT100, PA7 has internal pull-up and switch connects to GND - 8001204: 2180 movs r1, #128 @ 0x80 - 8001206: 481a ldr r0, [pc, #104] @ (8001270 ) - 8001208: f002 fa32 bl 8003670 - 800120c: 4603 mov r3, r0 - 800120e: 2b01 cmp r3, #1 - 8001210: d103 bne.n 800121a + 8001364: 2180 movs r1, #128 @ 0x80 + 8001366: 481a ldr r0, [pc, #104] @ (80013d0 ) + 8001368: f002 fad2 bl 8003910 + 800136c: 4603 mov r3, r0 + 800136e: 2b01 cmp r3, #1 + 8001370: d103 bne.n 800137a current_hw_mux_connection = AD5934_CH_REF100R_LOW_GAIN; // 100 Ohms Reference Resistor - 8001212: 4b18 ldr r3, [pc, #96] @ (8001274 ) - 8001214: 2200 movs r2, #0 - 8001216: 701a strb r2, [r3, #0] + 8001372: 4b18 ldr r3, [pc, #96] @ (80013d4 ) + 8001374: 2200 movs r2, #0 + 8001376: 701a strb r2, [r3, #0] else current_hw_mux_connection = AD5934_CH_REF1K_MID_GAIN; // 1K Reference Resistor break; - 8001218: e002 b.n 8001220 + 8001378: e002 b.n 8001380 current_hw_mux_connection = AD5934_CH_REF1K_MID_GAIN; // 1K Reference Resistor - 800121a: 4b16 ldr r3, [pc, #88] @ (8001274 ) - 800121c: 2204 movs r2, #4 - 800121e: 701a strb r2, [r3, #0] + 800137a: 4b16 ldr r3, [pc, #88] @ (80013d4 ) + 800137c: 2204 movs r2, #4 + 800137e: 701a strb r2, [r3, #0] break; - 8001220: bf00 nop + 8001380: bf00 nop } ADG715_Update(current_hw_mux_connection); // Change the analog mux - 8001222: 4b14 ldr r3, [pc, #80] @ (8001274 ) - 8001224: 781b ldrb r3, [r3, #0] - 8001226: 4618 mov r0, r3 - 8001228: f000 f9c2 bl 80015b0 + 8001382: 4b14 ldr r3, [pc, #80] @ (80013d4 ) + 8001384: 781b ldrb r3, [r3, #0] + 8001386: 4618 mov r0, r3 + 8001388: f000 f9ca bl 8001720 is_new_channel = 1; // Channel Switched - 800122c: 4b0b ldr r3, [pc, #44] @ (800125c ) - 800122e: 2201 movs r2, #1 - 8001230: 701a strb r2, [r3, #0] + 800138c: 4b0b ldr r3, [pc, #44] @ (80013bc ) + 800138e: 2201 movs r2, #1 + 8001390: 701a strb r2, [r3, #0] state_timer = g_ms_counter; // Reload timer to wait for stability - 8001232: 4b0b ldr r3, [pc, #44] @ (8001260 ) - 8001234: 681b ldr r3, [r3, #0] - 8001236: 4a0b ldr r2, [pc, #44] @ (8001264 ) - 8001238: 6013 str r3, [r2, #0] + 8001392: 4b0b ldr r3, [pc, #44] @ (80013c0 ) + 8001394: 681b ldr r3, [r3, #0] + 8001396: 4a0b ldr r2, [pc, #44] @ (80013c4 ) + 8001398: 6013 str r3, [r2, #0] ad5934_state = AD5934_WAIT_MUX; // Next State - 800123a: 4b06 ldr r3, [pc, #24] @ (8001254 ) - 800123c: 2206 movs r2, #6 - 800123e: 701a strb r2, [r3, #0] + 800139a: 4b06 ldr r3, [pc, #24] @ (80013b4 ) + 800139c: 2206 movs r2, #6 + 800139e: 701a strb r2, [r3, #0] break; - 8001240: e004 b.n 800124c + 80013a0: e004 b.n 80013ac break; - 8001242: bf00 nop - 8001244: e002 b.n 800124c + 80013a2: bf00 nop + 80013a4: e002 b.n 80013ac break; - 8001246: bf00 nop - 8001248: e000 b.n 800124c + 80013a6: bf00 nop + 80013a8: e000 b.n 80013ac break; - 800124a: bf00 nop + 80013aa: bf00 nop } } - 800124c: bf00 nop - 800124e: 3708 adds r7, #8 - 8001250: 46bd mov sp, r7 - 8001252: bd80 pop {r7, pc} - 8001254: 200000b0 .word 0x200000b0 - 8001258: 200000b8 .word 0x200000b8 - 800125c: 20000001 .word 0x20000001 - 8001260: 200000b4 .word 0x200000b4 - 8001264: 200001b8 .word 0x200001b8 - 8001268: 200000b9 .word 0x200000b9 - 800126c: 55555556 .word 0x55555556 - 8001270: 40010800 .word 0x40010800 - 8001274: 20000000 .word 0x20000000 + 80013ac: bf00 nop + 80013ae: 3708 adds r7, #8 + 80013b0: 46bd mov sp, r7 + 80013b2: bd80 pop {r7, pc} + 80013b4: 20000080 .word 0x20000080 + 80013b8: 20000088 .word 0x20000088 + 80013bc: 20000001 .word 0x20000001 + 80013c0: 20000084 .word 0x20000084 + 80013c4: 20000158 .word 0x20000158 + 80013c8: 20000089 .word 0x20000089 + 80013cc: 55555556 .word 0x55555556 + 80013d0: 40010800 .word 0x40010800 + 80013d4: 20000000 .word 0x20000000 -08001278 : +080013d8 : /** * Simple insertion sort - BURST_SIZE is small, so the cost is negligible * and it avoids depending on qsort/heap allocation. **/ void AD5934_Sort_Array(float *v, uint8_t n) { - 8001278: b580 push {r7, lr} - 800127a: b084 sub sp, #16 - 800127c: af00 add r7, sp, #0 - 800127e: 6078 str r0, [r7, #4] - 8001280: 460b mov r3, r1 - 8001282: 70fb strb r3, [r7, #3] + 80013d8: b580 push {r7, lr} + 80013da: b084 sub sp, #16 + 80013dc: af00 add r7, sp, #0 + 80013de: 6078 str r0, [r7, #4] + 80013e0: 460b mov r3, r1 + 80013e2: 70fb strb r3, [r7, #3] for (uint8_t i = 1; i < n; i++) - 8001284: 2301 movs r3, #1 - 8001286: 73fb strb r3, [r7, #15] - 8001288: e039 b.n 80012fe + 80013e4: 2301 movs r3, #1 + 80013e6: 73fb strb r3, [r7, #15] + 80013e8: e039 b.n 800145e { float key = v[i]; - 800128a: 7bfb ldrb r3, [r7, #15] - 800128c: 009b lsls r3, r3, #2 - 800128e: 687a ldr r2, [r7, #4] - 8001290: 4413 add r3, r2 - 8001292: 681b ldr r3, [r3, #0] - 8001294: 60bb str r3, [r7, #8] + 80013ea: 7bfb ldrb r3, [r7, #15] + 80013ec: 009b lsls r3, r3, #2 + 80013ee: 687a ldr r2, [r7, #4] + 80013f0: 4413 add r3, r2 + 80013f2: 681b ldr r3, [r3, #0] + 80013f4: 60bb str r3, [r7, #8] int8_t j = (int8_t)i - 1; - 8001296: 7bfb ldrb r3, [r7, #15] - 8001298: 3b01 subs r3, #1 - 800129a: b2db uxtb r3, r3 - 800129c: 73bb strb r3, [r7, #14] + 80013f6: 7bfb ldrb r3, [r7, #15] + 80013f8: 3b01 subs r3, #1 + 80013fa: b2db uxtb r3, r3 + 80013fc: 73bb strb r3, [r7, #14] while (j >= 0 && v[j] > key) - 800129e: e012 b.n 80012c6 + 80013fe: e012 b.n 8001426 { v[j + 1] = v[j]; - 80012a0: f997 300e ldrsb.w r3, [r7, #14] - 80012a4: 009b lsls r3, r3, #2 - 80012a6: 687a ldr r2, [r7, #4] - 80012a8: 441a add r2, r3 - 80012aa: f997 300e ldrsb.w r3, [r7, #14] - 80012ae: 3301 adds r3, #1 - 80012b0: 009b lsls r3, r3, #2 - 80012b2: 6879 ldr r1, [r7, #4] - 80012b4: 440b add r3, r1 - 80012b6: 6812 ldr r2, [r2, #0] - 80012b8: 601a str r2, [r3, #0] + 8001400: f997 300e ldrsb.w r3, [r7, #14] + 8001404: 009b lsls r3, r3, #2 + 8001406: 687a ldr r2, [r7, #4] + 8001408: 441a add r2, r3 + 800140a: f997 300e ldrsb.w r3, [r7, #14] + 800140e: 3301 adds r3, #1 + 8001410: 009b lsls r3, r3, #2 + 8001412: 6879 ldr r1, [r7, #4] + 8001414: 440b add r3, r1 + 8001416: 6812 ldr r2, [r2, #0] + 8001418: 601a str r2, [r3, #0] j--; - 80012ba: f997 300e ldrsb.w r3, [r7, #14] - 80012be: b2db uxtb r3, r3 - 80012c0: 3b01 subs r3, #1 - 80012c2: b2db uxtb r3, r3 - 80012c4: 73bb strb r3, [r7, #14] + 800141a: f997 300e ldrsb.w r3, [r7, #14] + 800141e: b2db uxtb r3, r3 + 8001420: 3b01 subs r3, #1 + 8001422: b2db uxtb r3, r3 + 8001424: 73bb strb r3, [r7, #14] while (j >= 0 && v[j] > key) - 80012c6: f997 300e ldrsb.w r3, [r7, #14] - 80012ca: 2b00 cmp r3, #0 - 80012cc: db0c blt.n 80012e8 - 80012ce: f997 300e ldrsb.w r3, [r7, #14] - 80012d2: 009b lsls r3, r3, #2 - 80012d4: 687a ldr r2, [r7, #4] - 80012d6: 4413 add r3, r2 - 80012d8: 681b ldr r3, [r3, #0] - 80012da: 4619 mov r1, r3 - 80012dc: 68b8 ldr r0, [r7, #8] - 80012de: f7ff fd7f bl 8000de0 <__aeabi_fcmplt> - 80012e2: 4603 mov r3, r0 - 80012e4: 2b00 cmp r3, #0 - 80012e6: d1db bne.n 80012a0 + 8001426: f997 300e ldrsb.w r3, [r7, #14] + 800142a: 2b00 cmp r3, #0 + 800142c: db0c blt.n 8001448 + 800142e: f997 300e ldrsb.w r3, [r7, #14] + 8001432: 009b lsls r3, r3, #2 + 8001434: 687a ldr r2, [r7, #4] + 8001436: 4413 add r3, r2 + 8001438: 681b ldr r3, [r3, #0] + 800143a: 4619 mov r1, r3 + 800143c: 68b8 ldr r0, [r7, #8] + 800143e: f7ff fccf bl 8000de0 <__aeabi_fcmplt> + 8001442: 4603 mov r3, r0 + 8001444: 2b00 cmp r3, #0 + 8001446: d1db bne.n 8001400 } v[j + 1] = key; - 80012e8: f997 300e ldrsb.w r3, [r7, #14] - 80012ec: 3301 adds r3, #1 - 80012ee: 009b lsls r3, r3, #2 - 80012f0: 687a ldr r2, [r7, #4] - 80012f2: 4413 add r3, r2 - 80012f4: 68ba ldr r2, [r7, #8] - 80012f6: 601a str r2, [r3, #0] + 8001448: f997 300e ldrsb.w r3, [r7, #14] + 800144c: 3301 adds r3, #1 + 800144e: 009b lsls r3, r3, #2 + 8001450: 687a ldr r2, [r7, #4] + 8001452: 4413 add r3, r2 + 8001454: 68ba ldr r2, [r7, #8] + 8001456: 601a str r2, [r3, #0] for (uint8_t i = 1; i < n; i++) - 80012f8: 7bfb ldrb r3, [r7, #15] - 80012fa: 3301 adds r3, #1 - 80012fc: 73fb strb r3, [r7, #15] - 80012fe: 7bfa ldrb r2, [r7, #15] - 8001300: 78fb ldrb r3, [r7, #3] - 8001302: 429a cmp r2, r3 - 8001304: d3c1 bcc.n 800128a + 8001458: 7bfb ldrb r3, [r7, #15] + 800145a: 3301 adds r3, #1 + 800145c: 73fb strb r3, [r7, #15] + 800145e: 7bfa ldrb r2, [r7, #15] + 8001460: 78fb ldrb r3, [r7, #3] + 8001462: 429a cmp r2, r3 + 8001464: d3c1 bcc.n 80013ea } } - 8001306: bf00 nop - 8001308: bf00 nop - 800130a: 3710 adds r7, #16 - 800130c: 46bd mov sp, r7 - 800130e: bd80 pop {r7, pc} + 8001466: bf00 nop + 8001468: bf00 nop + 800146a: 3710 adds r7, #16 + 800146c: 46bd mov sp, r7 + 800146e: bd80 pop {r7, pc} -08001310 : +08001470 : * original order is not needed), discards TRIM_COUNT values from each * end, and averages the remainder. Sorting in place avoids a temporary * array and removes the need for memcpy()/string.h entirely. **/ float AD5934_Trimmed_Mean(float *buffer, uint8_t n, uint8_t trim) { - 8001310: b580 push {r7, lr} - 8001312: b086 sub sp, #24 - 8001314: af00 add r7, sp, #0 - 8001316: 6078 str r0, [r7, #4] - 8001318: 460b mov r3, r1 - 800131a: 70fb strb r3, [r7, #3] - 800131c: 4613 mov r3, r2 - 800131e: 70bb strb r3, [r7, #2] + 8001470: b580 push {r7, lr} + 8001472: b086 sub sp, #24 + 8001474: af00 add r7, sp, #0 + 8001476: 6078 str r0, [r7, #4] + 8001478: 460b mov r3, r1 + 800147a: 70fb strb r3, [r7, #3] + 800147c: 4613 mov r3, r2 + 800147e: 70bb strb r3, [r7, #2] AD5934_Sort_Array(buffer, n); - 8001320: 78fb ldrb r3, [r7, #3] - 8001322: 4619 mov r1, r3 - 8001324: 6878 ldr r0, [r7, #4] - 8001326: f7ff ffa7 bl 8001278 + 8001480: 78fb ldrb r3, [r7, #3] + 8001482: 4619 mov r1, r3 + 8001484: 6878 ldr r0, [r7, #4] + 8001486: f7ff ffa7 bl 80013d8 uint8_t start = trim; - 800132a: 78bb ldrb r3, [r7, #2] - 800132c: 75fb strb r3, [r7, #23] + 800148a: 78bb ldrb r3, [r7, #2] + 800148c: 75fb strb r3, [r7, #23] uint8_t end = n - trim; /* exclusive */ - 800132e: 78fa ldrb r2, [r7, #3] - 8001330: 78bb ldrb r3, [r7, #2] - 8001332: 1ad3 subs r3, r2, r3 - 8001334: 75bb strb r3, [r7, #22] + 800148e: 78fa ldrb r2, [r7, #3] + 8001490: 78bb ldrb r3, [r7, #2] + 8001492: 1ad3 subs r3, r2, r3 + 8001494: 75bb strb r3, [r7, #22] if (end <= start) /* guard against a misconfigured trim value */ - 8001336: 7dba ldrb r2, [r7, #22] - 8001338: 7dfb ldrb r3, [r7, #23] - 800133a: 429a cmp r2, r3 - 800133c: d803 bhi.n 8001346 + 8001496: 7dba ldrb r2, [r7, #22] + 8001498: 7dfb ldrb r3, [r7, #23] + 800149a: 429a cmp r2, r3 + 800149c: d803 bhi.n 80014a6 { start = 0; - 800133e: 2300 movs r3, #0 - 8001340: 75fb strb r3, [r7, #23] + 800149e: 2300 movs r3, #0 + 80014a0: 75fb strb r3, [r7, #23] end = n; - 8001342: 78fb ldrb r3, [r7, #3] - 8001344: 75bb strb r3, [r7, #22] + 80014a2: 78fb ldrb r3, [r7, #3] + 80014a4: 75bb strb r3, [r7, #22] } float sum = 0.0f; - 8001346: f04f 0300 mov.w r3, #0 - 800134a: 613b str r3, [r7, #16] + 80014a6: f04f 0300 mov.w r3, #0 + 80014aa: 613b str r3, [r7, #16] uint8_t count = 0; - 800134c: 2300 movs r3, #0 - 800134e: 73fb strb r3, [r7, #15] + 80014ac: 2300 movs r3, #0 + 80014ae: 73fb strb r3, [r7, #15] for (uint8_t i = start; i < end; i++) - 8001350: 7dfb ldrb r3, [r7, #23] - 8001352: 73bb strb r3, [r7, #14] - 8001354: e010 b.n 8001378 + 80014b0: 7dfb ldrb r3, [r7, #23] + 80014b2: 73bb strb r3, [r7, #14] + 80014b4: e010 b.n 80014d8 { sum += buffer[i]; - 8001356: 7bbb ldrb r3, [r7, #14] - 8001358: 009b lsls r3, r3, #2 - 800135a: 687a ldr r2, [r7, #4] - 800135c: 4413 add r3, r2 - 800135e: 681b ldr r3, [r3, #0] - 8001360: 4619 mov r1, r3 - 8001362: 6938 ldr r0, [r7, #16] - 8001364: f7ff fa96 bl 8000894 <__addsf3> - 8001368: 4603 mov r3, r0 - 800136a: 613b str r3, [r7, #16] + 80014b6: 7bbb ldrb r3, [r7, #14] + 80014b8: 009b lsls r3, r3, #2 + 80014ba: 687a ldr r2, [r7, #4] + 80014bc: 4413 add r3, r2 + 80014be: 681b ldr r3, [r3, #0] + 80014c0: 4619 mov r1, r3 + 80014c2: 6938 ldr r0, [r7, #16] + 80014c4: f7ff f9e6 bl 8000894 <__addsf3> + 80014c8: 4603 mov r3, r0 + 80014ca: 613b str r3, [r7, #16] count++; - 800136c: 7bfb ldrb r3, [r7, #15] - 800136e: 3301 adds r3, #1 - 8001370: 73fb strb r3, [r7, #15] + 80014cc: 7bfb ldrb r3, [r7, #15] + 80014ce: 3301 adds r3, #1 + 80014d0: 73fb strb r3, [r7, #15] for (uint8_t i = start; i < end; i++) - 8001372: 7bbb ldrb r3, [r7, #14] - 8001374: 3301 adds r3, #1 - 8001376: 73bb strb r3, [r7, #14] - 8001378: 7bba ldrb r2, [r7, #14] - 800137a: 7dbb ldrb r3, [r7, #22] - 800137c: 429a cmp r2, r3 - 800137e: d3ea bcc.n 8001356 + 80014d2: 7bbb ldrb r3, [r7, #14] + 80014d4: 3301 adds r3, #1 + 80014d6: 73bb strb r3, [r7, #14] + 80014d8: 7bba ldrb r2, [r7, #14] + 80014da: 7dbb ldrb r3, [r7, #22] + 80014dc: 429a cmp r2, r3 + 80014de: d3ea bcc.n 80014b6 } return sum / (float)count; - 8001380: 7bfb ldrb r3, [r7, #15] - 8001382: 4618 mov r0, r3 - 8001384: f7ff fb36 bl 80009f4 <__aeabi_ui2f> - 8001388: 4603 mov r3, r0 - 800138a: 4619 mov r1, r3 - 800138c: 6938 ldr r0, [r7, #16] - 800138e: f7ff fc3d bl 8000c0c <__aeabi_fdiv> - 8001392: 4603 mov r3, r0 + 80014e0: 7bfb ldrb r3, [r7, #15] + 80014e2: 4618 mov r0, r3 + 80014e4: f7ff fa86 bl 80009f4 <__aeabi_ui2f> + 80014e8: 4603 mov r3, r0 + 80014ea: 4619 mov r1, r3 + 80014ec: 6938 ldr r0, [r7, #16] + 80014ee: f7ff fb8d bl 8000c0c <__aeabi_fdiv> + 80014f2: 4603 mov r3, r0 } - 8001394: 4618 mov r0, r3 - 8001396: 3718 adds r7, #24 - 8001398: 46bd mov sp, r7 - 800139a: bd80 pop {r7, pc} + 80014f4: 4618 mov r0, r3 + 80014f6: 3718 adds r7, #24 + 80014f8: 46bd mov sp, r7 + 80014fa: bd80 pop {r7, pc} -0800139c : +080014fc : /* * Simple average of the history buffer (stage-2 sliding window) */ float AD5934_History_Average(const float *hist, uint8_t n) { - 800139c: b580 push {r7, lr} - 800139e: b084 sub sp, #16 - 80013a0: af00 add r7, sp, #0 - 80013a2: 6078 str r0, [r7, #4] - 80013a4: 460b mov r3, r1 - 80013a6: 70fb strb r3, [r7, #3] + 80014fc: b580 push {r7, lr} + 80014fe: b084 sub sp, #16 + 8001500: af00 add r7, sp, #0 + 8001502: 6078 str r0, [r7, #4] + 8001504: 460b mov r3, r1 + 8001506: 70fb strb r3, [r7, #3] float sum = 0.0f; - 80013a8: f04f 0300 mov.w r3, #0 - 80013ac: 60fb str r3, [r7, #12] + 8001508: f04f 0300 mov.w r3, #0 + 800150c: 60fb str r3, [r7, #12] for (uint8_t i = 0; i < n; i++) - 80013ae: 2300 movs r3, #0 - 80013b0: 72fb strb r3, [r7, #11] - 80013b2: e00d b.n 80013d0 + 800150e: 2300 movs r3, #0 + 8001510: 72fb strb r3, [r7, #11] + 8001512: e00d b.n 8001530 sum += hist[i]; - 80013b4: 7afb ldrb r3, [r7, #11] - 80013b6: 009b lsls r3, r3, #2 - 80013b8: 687a ldr r2, [r7, #4] - 80013ba: 4413 add r3, r2 - 80013bc: 681b ldr r3, [r3, #0] - 80013be: 4619 mov r1, r3 - 80013c0: 68f8 ldr r0, [r7, #12] - 80013c2: f7ff fa67 bl 8000894 <__addsf3> - 80013c6: 4603 mov r3, r0 - 80013c8: 60fb str r3, [r7, #12] + 8001514: 7afb ldrb r3, [r7, #11] + 8001516: 009b lsls r3, r3, #2 + 8001518: 687a ldr r2, [r7, #4] + 800151a: 4413 add r3, r2 + 800151c: 681b ldr r3, [r3, #0] + 800151e: 4619 mov r1, r3 + 8001520: 68f8 ldr r0, [r7, #12] + 8001522: f7ff f9b7 bl 8000894 <__addsf3> + 8001526: 4603 mov r3, r0 + 8001528: 60fb str r3, [r7, #12] for (uint8_t i = 0; i < n; i++) - 80013ca: 7afb ldrb r3, [r7, #11] - 80013cc: 3301 adds r3, #1 - 80013ce: 72fb strb r3, [r7, #11] - 80013d0: 7afa ldrb r2, [r7, #11] - 80013d2: 78fb ldrb r3, [r7, #3] - 80013d4: 429a cmp r2, r3 - 80013d6: d3ed bcc.n 80013b4 + 800152a: 7afb ldrb r3, [r7, #11] + 800152c: 3301 adds r3, #1 + 800152e: 72fb strb r3, [r7, #11] + 8001530: 7afa ldrb r2, [r7, #11] + 8001532: 78fb ldrb r3, [r7, #3] + 8001534: 429a cmp r2, r3 + 8001536: d3ed bcc.n 8001514 return sum / (float)n; - 80013d8: 78fb ldrb r3, [r7, #3] - 80013da: 4618 mov r0, r3 - 80013dc: f7ff fb0a bl 80009f4 <__aeabi_ui2f> - 80013e0: 4603 mov r3, r0 - 80013e2: 4619 mov r1, r3 - 80013e4: 68f8 ldr r0, [r7, #12] - 80013e6: f7ff fc11 bl 8000c0c <__aeabi_fdiv> - 80013ea: 4603 mov r3, r0 + 8001538: 78fb ldrb r3, [r7, #3] + 800153a: 4618 mov r0, r3 + 800153c: f7ff fa5a bl 80009f4 <__aeabi_ui2f> + 8001540: 4603 mov r3, r0 + 8001542: 4619 mov r1, r3 + 8001544: 68f8 ldr r0, [r7, #12] + 8001546: f7ff fb61 bl 8000c0c <__aeabi_fdiv> + 800154a: 4603 mov r3, r0 } - 80013ec: 4618 mov r0, r3 - 80013ee: 3710 adds r7, #16 - 80013f0: 46bd mov sp, r7 - 80013f2: bd80 pop {r7, pc} + 800154c: 4618 mov r0, r3 + 800154e: 3710 adds r7, #16 + 8001550: 46bd mov sp, r7 + 8001552: bd80 pop {r7, pc} -080013f4 : +08001554 : * Common processing core: applied identically to all 3 channels. * Receives the current raw reading and the channel's state (global * arrays/struct). **/ void AD5934_Process_Sample(AD5934_filter_t *ch, float raw) { - 80013f4: b590 push {r4, r7, lr} - 80013f6: b085 sub sp, #20 - 80013f8: af00 add r7, sp, #0 - 80013fa: 6078 str r0, [r7, #4] - 80013fc: 6039 str r1, [r7, #0] + 8001554: b590 push {r4, r7, lr} + 8001556: b085 sub sp, #20 + 8001558: af00 add r7, sp, #0 + 800155a: 6078 str r0, [r7, #4] + 800155c: 6039 str r1, [r7, #0] /* --- Stage 1: accumulate into the current burst --- */ ch->burst[ch->burst_index] = raw; - 80013fe: 687b ldr r3, [r7, #4] - 8001400: 7f1b ldrb r3, [r3, #28] - 8001402: 4619 mov r1, r3 - 8001404: 687b ldr r3, [r7, #4] - 8001406: 683a ldr r2, [r7, #0] - 8001408: f843 2021 str.w r2, [r3, r1, lsl #2] + 800155e: 687b ldr r3, [r7, #4] + 8001560: 7d1b ldrb r3, [r3, #20] + 8001562: 4619 mov r1, r3 + 8001564: 687b ldr r3, [r7, #4] + 8001566: 683a ldr r2, [r7, #0] + 8001568: f843 2021 str.w r2, [r3, r1, lsl #2] ch->burst_index++; - 800140c: 687b ldr r3, [r7, #4] - 800140e: 7f1b ldrb r3, [r3, #28] - 8001410: 3301 adds r3, #1 - 8001412: b2da uxtb r2, r3 - 8001414: 687b ldr r3, [r7, #4] - 8001416: 771a strb r2, [r3, #28] + 800156c: 687b ldr r3, [r7, #4] + 800156e: 7d1b ldrb r3, [r3, #20] + 8001570: 3301 adds r3, #1 + 8001572: b2da uxtb r2, r3 + 8001574: 687b ldr r3, [r7, #4] + 8001576: 751a strb r2, [r3, #20] if (ch->burst_index < AD5934_BURST_SIZE) - 8001418: 687b ldr r3, [r7, #4] - 800141a: 7f1b ldrb r3, [r3, #28] - 800141c: 2b06 cmp r3, #6 - 800141e: d979 bls.n 8001514 + 8001578: 687b ldr r3, [r7, #4] + 800157a: 7d1b ldrb r3, [r3, #20] + 800157c: 2b04 cmp r3, #4 + 800157e: d97a bls.n 8001676 return; /* still collecting the burst, nothing else to do */ /* Burst complete: compute the trimmed mean */ float burst_result = AD5934_Trimmed_Mean(ch->burst, AD5934_BURST_SIZE, AD5934_TRIM_COUNT); - 8001420: 687b ldr r3, [r7, #4] - 8001422: 2201 movs r2, #1 - 8001424: 2107 movs r1, #7 - 8001426: 4618 mov r0, r3 - 8001428: f7ff ff72 bl 8001310 - 800142c: 60f8 str r0, [r7, #12] + 8001580: 687b ldr r3, [r7, #4] + 8001582: 2201 movs r2, #1 + 8001584: 2105 movs r1, #5 + 8001586: 4618 mov r0, r3 + 8001588: f7ff ff72 bl 8001470 + 800158c: 60f8 str r0, [r7, #12] ch->burst_index = 0; /* reset for the next burst */ - 800142e: 687b ldr r3, [r7, #4] - 8001430: 2200 movs r2, #0 - 8001432: 771a strb r2, [r3, #28] + 800158e: 687b ldr r3, [r7, #4] + 8001590: 2200 movs r2, #0 + 8001592: 751a strb r2, [r3, #20] /* --- Stage 2a: rolling history / sliding window --- */ ch->history[ch->history_index] = burst_result; - 8001434: 687b ldr r3, [r7, #4] - 8001436: f893 3040 ldrb.w r3, [r3, #64] @ 0x40 - 800143a: 461a mov r2, r3 - 800143c: 687b ldr r3, [r7, #4] - 800143e: 3208 adds r2, #8 - 8001440: 68f9 ldr r1, [r7, #12] - 8001442: f843 1022 str.w r1, [r3, r2, lsl #2] + 8001594: 687b ldr r3, [r7, #4] + 8001596: f893 3030 ldrb.w r3, [r3, #48] @ 0x30 + 800159a: 461a mov r2, r3 + 800159c: 687b ldr r3, [r7, #4] + 800159e: 3206 adds r2, #6 + 80015a0: 68f9 ldr r1, [r7, #12] + 80015a2: f843 1022 str.w r1, [r3, r2, lsl #2] ch->history_index = (uint8_t)((ch->history_index + 1) % AD5934_HISTORY_SIZE); - 8001446: 687b ldr r3, [r7, #4] - 8001448: f893 3040 ldrb.w r3, [r3, #64] @ 0x40 - 800144c: 3301 adds r3, #1 - 800144e: 425a negs r2, r3 - 8001450: f003 0307 and.w r3, r3, #7 - 8001454: f002 0207 and.w r2, r2, #7 - 8001458: bf58 it pl - 800145a: 4253 negpl r3, r2 - 800145c: b2da uxtb r2, r3 - 800145e: 687b ldr r3, [r7, #4] - 8001460: f883 2040 strb.w r2, [r3, #64] @ 0x40 + 80015a6: 687b ldr r3, [r7, #4] + 80015a8: f893 3030 ldrb.w r3, [r3, #48] @ 0x30 + 80015ac: 1c5a adds r2, r3, #1 + 80015ae: 4b34 ldr r3, [pc, #208] @ (8001680 ) + 80015b0: fb83 3102 smull r3, r1, r3, r2 + 80015b4: 17d3 asrs r3, r2, #31 + 80015b6: 1ac9 subs r1, r1, r3 + 80015b8: 460b mov r3, r1 + 80015ba: 005b lsls r3, r3, #1 + 80015bc: 440b add r3, r1 + 80015be: 005b lsls r3, r3, #1 + 80015c0: 1ad1 subs r1, r2, r3 + 80015c2: b2ca uxtb r2, r1 + 80015c4: 687b ldr r3, [r7, #4] + 80015c6: f883 2030 strb.w r2, [r3, #48] @ 0x30 if (ch->history_count < AD5934_HISTORY_SIZE) - 8001464: 687b ldr r3, [r7, #4] - 8001466: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 - 800146a: 2b07 cmp r3, #7 - 800146c: d807 bhi.n 800147e + 80015ca: 687b ldr r3, [r7, #4] + 80015cc: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 + 80015d0: 2b05 cmp r3, #5 + 80015d2: d807 bhi.n 80015e4 ch->history_count++; - 800146e: 687b ldr r3, [r7, #4] - 8001470: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 - 8001474: 3301 adds r3, #1 - 8001476: b2da uxtb r2, r3 - 8001478: 687b ldr r3, [r7, #4] - 800147a: f883 2041 strb.w r2, [r3, #65] @ 0x41 + 80015d4: 687b ldr r3, [r7, #4] + 80015d6: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 + 80015da: 3301 adds r3, #1 + 80015dc: b2da uxtb r2, r3 + 80015de: 687b ldr r3, [r7, #4] + 80015e0: f883 2031 strb.w r2, [r3, #49] @ 0x31 float window_average = AD5934_History_Average(ch->history, ch->history_count); - 800147e: 687b ldr r3, [r7, #4] - 8001480: f103 0220 add.w r2, r3, #32 - 8001484: 687b ldr r3, [r7, #4] - 8001486: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 - 800148a: 4619 mov r1, r3 - 800148c: 4610 mov r0, r2 - 800148e: f7ff ff85 bl 800139c - 8001492: 60b8 str r0, [r7, #8] + 80015e4: 687b ldr r3, [r7, #4] + 80015e6: f103 0218 add.w r2, r3, #24 + 80015ea: 687b ldr r3, [r7, #4] + 80015ec: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 + 80015f0: 4619 mov r1, r3 + 80015f2: 4610 mov r0, r2 + 80015f4: f7ff ff82 bl 80014fc + 80015f8: 60b8 str r0, [r7, #8] /* --- Stage 2b: first-order IIR low-pass filter on the burst result --- */ if (!ch->iir_initialized) - 8001494: 687b ldr r3, [r7, #4] - 8001496: f893 3048 ldrb.w r3, [r3, #72] @ 0x48 - 800149a: 2b00 cmp r3, #0 - 800149c: d107 bne.n 80014ae + 80015fa: 687b ldr r3, [r7, #4] + 80015fc: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 + 8001600: 2b00 cmp r3, #0 + 8001602: d107 bne.n 8001614 { ch->iir_state = burst_result; - 800149e: 687b ldr r3, [r7, #4] - 80014a0: 68fa ldr r2, [r7, #12] - 80014a2: 645a str r2, [r3, #68] @ 0x44 + 8001604: 687b ldr r3, [r7, #4] + 8001606: 68fa ldr r2, [r7, #12] + 8001608: 635a str r2, [r3, #52] @ 0x34 ch->iir_initialized = 1; - 80014a4: 687b ldr r3, [r7, #4] - 80014a6: 2201 movs r2, #1 - 80014a8: f883 2048 strb.w r2, [r3, #72] @ 0x48 - 80014ac: e016 b.n 80014dc + 800160a: 687b ldr r3, [r7, #4] + 800160c: 2201 movs r2, #1 + 800160e: f883 2038 strb.w r2, [r3, #56] @ 0x38 + 8001612: e014 b.n 800163e } else { ch->iir_state = AD5934_IIR_ALPHA * burst_result + (1.0f - AD5934_IIR_ALPHA) * ch->iir_state; - 80014ae: f04f 517a mov.w r1, #1048576000 @ 0x3e800000 - 80014b2: 68f8 ldr r0, [r7, #12] - 80014b4: f7ff faf6 bl 8000aa4 <__aeabi_fmul> - 80014b8: 4603 mov r3, r0 - 80014ba: 461c mov r4, r3 - 80014bc: 687b ldr r3, [r7, #4] - 80014be: 6c5b ldr r3, [r3, #68] @ 0x44 - 80014c0: f04f 517d mov.w r1, #1061158912 @ 0x3f400000 - 80014c4: 4618 mov r0, r3 - 80014c6: f7ff faed bl 8000aa4 <__aeabi_fmul> - 80014ca: 4603 mov r3, r0 - 80014cc: 4619 mov r1, r3 - 80014ce: 4620 mov r0, r4 - 80014d0: f7ff f9e0 bl 8000894 <__addsf3> - 80014d4: 4603 mov r3, r0 - 80014d6: 461a mov r2, r3 - 80014d8: 687b ldr r3, [r7, #4] - 80014da: 645a str r2, [r3, #68] @ 0x44 + 8001614: 491b ldr r1, [pc, #108] @ (8001684 ) + 8001616: 68f8 ldr r0, [r7, #12] + 8001618: f7ff fa44 bl 8000aa4 <__aeabi_fmul> + 800161c: 4603 mov r3, r0 + 800161e: 461c mov r4, r3 + 8001620: 687b ldr r3, [r7, #4] + 8001622: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001624: 4918 ldr r1, [pc, #96] @ (8001688 ) + 8001626: 4618 mov r0, r3 + 8001628: f7ff fa3c bl 8000aa4 <__aeabi_fmul> + 800162c: 4603 mov r3, r0 + 800162e: 4619 mov r1, r3 + 8001630: 4620 mov r0, r4 + 8001632: f7ff f92f bl 8000894 <__addsf3> + 8001636: 4603 mov r3, r0 + 8001638: 461a mov r2, r3 + 800163a: 687b ldr r3, [r7, #4] + 800163c: 635a str r2, [r3, #52] @ 0x34 } /* Final output: combines the IIR state (fast response to real drift) * with the window average (more stable, slower response). Adjust * the weighting per channel if needed. */ ch->filtered_value = 0.5f * ch->iir_state + 0.5f * window_average; - 80014dc: 687b ldr r3, [r7, #4] - 80014de: 6c5b ldr r3, [r3, #68] @ 0x44 - 80014e0: f04f 517c mov.w r1, #1056964608 @ 0x3f000000 - 80014e4: 4618 mov r0, r3 - 80014e6: f7ff fadd bl 8000aa4 <__aeabi_fmul> - 80014ea: 4603 mov r3, r0 - 80014ec: 461c mov r4, r3 - 80014ee: f04f 517c mov.w r1, #1056964608 @ 0x3f000000 - 80014f2: 68b8 ldr r0, [r7, #8] - 80014f4: f7ff fad6 bl 8000aa4 <__aeabi_fmul> - 80014f8: 4603 mov r3, r0 - 80014fa: 4619 mov r1, r3 - 80014fc: 4620 mov r0, r4 - 80014fe: f7ff f9c9 bl 8000894 <__addsf3> - 8001502: 4603 mov r3, r0 - 8001504: 461a mov r2, r3 - 8001506: 687b ldr r3, [r7, #4] - 8001508: 64da str r2, [r3, #76] @ 0x4c + 800163e: 687b ldr r3, [r7, #4] + 8001640: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001642: f04f 517c mov.w r1, #1056964608 @ 0x3f000000 + 8001646: 4618 mov r0, r3 + 8001648: f7ff fa2c bl 8000aa4 <__aeabi_fmul> + 800164c: 4603 mov r3, r0 + 800164e: 461c mov r4, r3 + 8001650: f04f 517c mov.w r1, #1056964608 @ 0x3f000000 + 8001654: 68b8 ldr r0, [r7, #8] + 8001656: f7ff fa25 bl 8000aa4 <__aeabi_fmul> + 800165a: 4603 mov r3, r0 + 800165c: 4619 mov r1, r3 + 800165e: 4620 mov r0, r4 + 8001660: f7ff f918 bl 8000894 <__addsf3> + 8001664: 4603 mov r3, r0 + 8001666: 461a mov r2, r3 + 8001668: 687b ldr r3, [r7, #4] + 800166a: 63da str r2, [r3, #60] @ 0x3c ch->value_valid = 1; - 800150a: 687b ldr r3, [r7, #4] - 800150c: 2201 movs r2, #1 - 800150e: f883 2050 strb.w r2, [r3, #80] @ 0x50 - 8001512: e000 b.n 8001516 + 800166c: 687b ldr r3, [r7, #4] + 800166e: 2201 movs r2, #1 + 8001670: f883 2040 strb.w r2, [r3, #64] @ 0x40 + 8001674: e000 b.n 8001678 return; /* still collecting the burst, nothing else to do */ - 8001514: bf00 nop + 8001676: bf00 nop } - 8001516: 3714 adds r7, #20 - 8001518: 46bd mov sp, r7 - 800151a: bd90 pop {r4, r7, pc} + 8001678: 3714 adds r7, #20 + 800167a: 46bd mov sp, r7 + 800167c: bd90 pop {r4, r7, pc} + 800167e: bf00 nop + 8001680: 2aaaaaab .word 0x2aaaaaab + 8001684: 3ecccccd .word 0x3ecccccd + 8001688: 3f19999a .word 0x3f19999a -0800151c : +0800168c : /* ---------------------------------------------------------------------- */ /* Call this every time a sweep completes with the mux on the RTD * (PT100/PT1000) channel */ void AD5934_RTD_NewSample(float raw) { - 800151c: b580 push {r7, lr} - 800151e: b082 sub sp, #8 - 8001520: af00 add r7, sp, #0 - 8001522: 6078 str r0, [r7, #4] + 800168c: b580 push {r7, lr} + 800168e: b082 sub sp, #8 + 8001690: af00 add r7, sp, #0 + 8001692: 6078 str r0, [r7, #4] AD5934_Process_Sample(&g_rtd_filter, raw); - 8001524: 6879 ldr r1, [r7, #4] - 8001526: 4803 ldr r0, [pc, #12] @ (8001534 ) - 8001528: f7ff ff64 bl 80013f4 + 8001694: 6879 ldr r1, [r7, #4] + 8001696: 4803 ldr r0, [pc, #12] @ (80016a4 ) + 8001698: f7ff ff5c bl 8001554 } - 800152c: bf00 nop - 800152e: 3708 adds r7, #8 - 8001530: 46bd mov sp, r7 - 8001532: bd80 pop {r7, pc} - 8001534: 200000bc .word 0x200000bc + 800169c: bf00 nop + 800169e: 3708 adds r7, #8 + 80016a0: 46bd mov sp, r7 + 80016a2: bd80 pop {r7, pc} + 80016a4: 2000008c .word 0x2000008c -08001538 : +080016a8 : /* Call this every time a sweep completes with the mux on the EC * (conductivity probe) channel */ void AD5934_EC_NewSample(float raw) { - 8001538: b580 push {r7, lr} - 800153a: b082 sub sp, #8 - 800153c: af00 add r7, sp, #0 - 800153e: 6078 str r0, [r7, #4] + 80016a8: b580 push {r7, lr} + 80016aa: b082 sub sp, #8 + 80016ac: af00 add r7, sp, #0 + 80016ae: 6078 str r0, [r7, #4] AD5934_Process_Sample(&g_ec_filter, raw); - 8001540: 6879 ldr r1, [r7, #4] - 8001542: 4803 ldr r0, [pc, #12] @ (8001550 ) - 8001544: f7ff ff56 bl 80013f4 + 80016b0: 6879 ldr r1, [r7, #4] + 80016b2: 4803 ldr r0, [pc, #12] @ (80016c0 ) + 80016b4: f7ff ff4e bl 8001554 } - 8001548: bf00 nop - 800154a: 3708 adds r7, #8 - 800154c: 46bd mov sp, r7 - 800154e: bd80 pop {r7, pc} - 8001550: 20000110 .word 0x20000110 + 80016b8: bf00 nop + 80016ba: 3708 adds r7, #8 + 80016bc: 46bd mov sp, r7 + 80016be: bd80 pop {r7, pc} + 80016c0: 200000d0 .word 0x200000d0 -08001554 : +080016c4 : /* Call this every time a sweep completes with the mux on the on-board * precision reference resistor channel */ void AD5934_Reference_NewSample(float raw) { - 8001554: b580 push {r7, lr} - 8001556: b082 sub sp, #8 - 8001558: af00 add r7, sp, #0 - 800155a: 6078 str r0, [r7, #4] + 80016c4: b580 push {r7, lr} + 80016c6: b082 sub sp, #8 + 80016c8: af00 add r7, sp, #0 + 80016ca: 6078 str r0, [r7, #4] AD5934_Process_Sample(&g_ref_filter, raw); - 800155c: 6879 ldr r1, [r7, #4] - 800155e: 4803 ldr r0, [pc, #12] @ (800156c ) - 8001560: f7ff ff48 bl 80013f4 + 80016cc: 6879 ldr r1, [r7, #4] + 80016ce: 4803 ldr r0, [pc, #12] @ (80016dc ) + 80016d0: f7ff ff40 bl 8001554 } - 8001564: bf00 nop - 8001566: 3708 adds r7, #8 - 8001568: 46bd mov sp, r7 - 800156a: bd80 pop {r7, pc} - 800156c: 20000164 .word 0x20000164 + 80016d4: bf00 nop + 80016d6: 3708 adds r7, #8 + 80016d8: 46bd mov sp, r7 + 80016da: bd80 pop {r7, pc} + 80016dc: 20000114 .word 0x20000114 -08001570 : +080016e0 : * * @return None. *******************************************************************************/ void ADG715_SetRegisterValue(char value) { - 8001570: b580 push {r7, lr} - 8001572: b086 sub sp, #24 - 8001574: af02 add r7, sp, #8 - 8001576: 4603 mov r3, r0 - 8001578: 71fb strb r3, [r7, #7] + 80016e0: b580 push {r7, lr} + 80016e2: b086 sub sp, #24 + 80016e4: af02 add r7, sp, #8 + 80016e6: 4603 mov r3, r0 + 80016e8: 71fb strb r3, [r7, #7] uint8_t writeData[1] = {value}; - 800157a: 79fb ldrb r3, [r7, #7] - 800157c: 733b strb r3, [r7, #12] + 80016ea: 79fb ldrb r3, [r7, #7] + 80016ec: 733b strb r3, [r7, #12] HAL_StatusTypeDef status; status = HAL_I2C_Master_Transmit(&hi2c2, ADG715_I2C_ADDRESS, writeData, 1, 1); - 800157e: f107 020c add.w r2, r7, #12 - 8001582: 2301 movs r3, #1 - 8001584: 9300 str r3, [sp, #0] - 8001586: 2301 movs r3, #1 - 8001588: 2190 movs r1, #144 @ 0x90 - 800158a: 4804 ldr r0, [pc, #16] @ (800159c ) - 800158c: f002 f9fc bl 8003988 - 8001590: 4603 mov r3, r0 - 8001592: 73fb strb r3, [r7, #15] + 80016ee: f107 020c add.w r2, r7, #12 + 80016f2: 2301 movs r3, #1 + 80016f4: 9300 str r3, [sp, #0] + 80016f6: 2301 movs r3, #1 + 80016f8: 2190 movs r1, #144 @ 0x90 + 80016fa: 4804 ldr r0, [pc, #16] @ (800170c ) + 80016fc: f002 fa94 bl 8003c28 + 8001700: 4603 mov r3, r0 + 8001702: 73fb strb r3, [r7, #15] return; - 8001594: bf00 nop + 8001704: bf00 nop } - 8001596: 3710 adds r7, #16 - 8001598: 46bd mov sp, r7 - 800159a: bd80 pop {r7, pc} - 800159c: 200006e0 .word 0x200006e0 + 8001706: 3710 adds r7, #16 + 8001708: 46bd mov sp, r7 + 800170a: bd80 pop {r7, pc} + 800170c: 20000678 .word 0x20000678 -080015a0 : +08001710 : { ADG715_SetRegisterValue(ch1+ch2); } void ADG715_ResetChannels(void) { - 80015a0: b580 push {r7, lr} - 80015a2: af00 add r7, sp, #0 + 8001710: b580 push {r7, lr} + 8001712: af00 add r7, sp, #0 ADG715_SetRegisterValue(0); - 80015a4: 2000 movs r0, #0 - 80015a6: f7ff ffe3 bl 8001570 + 8001714: 2000 movs r0, #0 + 8001716: f7ff ffe3 bl 80016e0 } - 80015aa: bf00 nop - 80015ac: bd80 pop {r7, pc} + 800171a: bf00 nop + 800171c: bd80 pop {r7, pc} ... -080015b0 : +08001720 : * @param: channel = AD5934_CH_REF_100R, AD5934_CH_REF_1K, AD5934_CH_REF_10K, AD5934_CH_PT100, AD5934_CH_PT1000, AD5934_CH_EC, ... * * @return none. ******************************************************************************/ void ADG715_Update(AD5934_Channel_t channel) { - 80015b0: b580 push {r7, lr} - 80015b2: b082 sub sp, #8 - 80015b4: af00 add r7, sp, #0 - 80015b6: 4603 mov r3, r0 - 80015b8: 71fb strb r3, [r7, #7] + 8001720: b580 push {r7, lr} + 8001722: b082 sub sp, #8 + 8001724: af00 add r7, sp, #0 + 8001726: 4603 mov r3, r0 + 8001728: 71fb strb r3, [r7, #7] // Garante que o índice recebido não ultrapassa os limites do vetor if (channel >= AD5934_CH_MAX) - 80015ba: 79fb ldrb r3, [r7, #7] - 80015bc: 2b0e cmp r3, #14 - 80015be: d810 bhi.n 80015e2 + 800172a: 79fb ldrb r3, [r7, #7] + 800172c: 2b0e cmp r3, #14 + 800172e: d806 bhi.n 800173e return; // Envia o byte combinado via I2C (Make-before-break nativo por barramento) ADG715_SetRegisterValue(ADG715_Channel_Map[channel]); - 80015c0: 79fb ldrb r3, [r7, #7] - 80015c2: 4a0a ldr r2, [pc, #40] @ (80015ec ) - 80015c4: 5cd3 ldrb r3, [r2, r3] - 80015c6: 4618 mov r0, r3 - 80015c8: f7ff ffd2 bl 8001570 - - // Gestão inteligente do delay de acomodação - if (channel >= AD5934_CH_EC_LOW_GAIN) - 80015cc: 79fb ldrb r3, [r7, #7] - 80015ce: 2b0b cmp r3, #11 - 80015d0: d903 bls.n 80015da + 8001730: 79fb ldrb r3, [r7, #7] + 8001732: 4a05 ldr r2, [pc, #20] @ (8001748 ) + 8001734: 5cd3 ldrb r3, [r2, r3] + 8001736: 4618 mov r0, r3 + 8001738: f7ff ffd2 bl 80016e0 + 800173c: e000 b.n 8001740 + return; + 800173e: bf00 nop + /* if (channel >= AD5934_CH_EC_LOW_GAIN) HAL_Delay(20); // Canais de Condutividade Elétrica (CE) necessitam de maior estabilização química - 80015d2: 2014 movs r0, #20 - 80015d4: f001 fad2 bl 8002b7c - 80015d8: e004 b.n 80015e4 else HAL_Delay(10); // Resistores puros e RTD estabilizam mais rapidamente - 80015da: 200a movs r0, #10 - 80015dc: f001 face bl 8002b7c - 80015e0: e000 b.n 80015e4 - return; - 80015e2: bf00 nop - + */ } - 80015e4: 3708 adds r7, #8 - 80015e6: 46bd mov sp, r7 - 80015e8: bd80 pop {r7, pc} - 80015ea: bf00 nop - 80015ec: 080066c0 .word 0x080066c0 + 8001740: 3708 adds r7, #8 + 8001742: 46bd mov sp, r7 + 8001744: bd80 pop {r7, pc} + 8001746: bf00 nop + 8001748: 08006960 .word 0x08006960 -080015f0 : +0800174c : ADC_HandleTypeDef hadc1; ADC_HandleTypeDef hadc2; /* ADC1 init function */ void MX_ADC1_Init(void) { - 80015f0: b580 push {r7, lr} - 80015f2: b084 sub sp, #16 - 80015f4: af00 add r7, sp, #0 + 800174c: b580 push {r7, lr} + 800174e: b084 sub sp, #16 + 8001750: af00 add r7, sp, #0 /* USER CODE BEGIN ADC1_Init 0 */ /* USER CODE END ADC1_Init 0 */ ADC_ChannelConfTypeDef sConfig = {0}; - 80015f6: 1d3b adds r3, r7, #4 - 80015f8: 2200 movs r2, #0 - 80015fa: 601a str r2, [r3, #0] - 80015fc: 605a str r2, [r3, #4] - 80015fe: 609a str r2, [r3, #8] + 8001752: 1d3b adds r3, r7, #4 + 8001754: 2200 movs r2, #0 + 8001756: 601a str r2, [r3, #0] + 8001758: 605a str r2, [r3, #4] + 800175a: 609a str r2, [r3, #8] /* USER CODE END ADC1_Init 1 */ /** Common config */ hadc1.Instance = ADC1; - 8001600: 4b18 ldr r3, [pc, #96] @ (8001664 ) - 8001602: 4a19 ldr r2, [pc, #100] @ (8001668 ) - 8001604: 601a str r2, [r3, #0] + 800175c: 4b18 ldr r3, [pc, #96] @ (80017c0 ) + 800175e: 4a19 ldr r2, [pc, #100] @ (80017c4 ) + 8001760: 601a str r2, [r3, #0] hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; - 8001606: 4b17 ldr r3, [pc, #92] @ (8001664 ) - 8001608: 2200 movs r2, #0 - 800160a: 609a str r2, [r3, #8] + 8001762: 4b17 ldr r3, [pc, #92] @ (80017c0 ) + 8001764: 2200 movs r2, #0 + 8001766: 609a str r2, [r3, #8] hadc1.Init.ContinuousConvMode = ENABLE; - 800160c: 4b15 ldr r3, [pc, #84] @ (8001664 ) - 800160e: 2201 movs r2, #1 - 8001610: 731a strb r2, [r3, #12] + 8001768: 4b15 ldr r3, [pc, #84] @ (80017c0 ) + 800176a: 2201 movs r2, #1 + 800176c: 731a strb r2, [r3, #12] hadc1.Init.DiscontinuousConvMode = DISABLE; - 8001612: 4b14 ldr r3, [pc, #80] @ (8001664 ) - 8001614: 2200 movs r2, #0 - 8001616: 751a strb r2, [r3, #20] + 800176e: 4b14 ldr r3, [pc, #80] @ (80017c0 ) + 8001770: 2200 movs r2, #0 + 8001772: 751a strb r2, [r3, #20] hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; - 8001618: 4b12 ldr r3, [pc, #72] @ (8001664 ) - 800161a: f44f 2260 mov.w r2, #917504 @ 0xe0000 - 800161e: 61da str r2, [r3, #28] + 8001774: 4b12 ldr r3, [pc, #72] @ (80017c0 ) + 8001776: f44f 2260 mov.w r2, #917504 @ 0xe0000 + 800177a: 61da str r2, [r3, #28] hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; - 8001620: 4b10 ldr r3, [pc, #64] @ (8001664 ) - 8001622: 2200 movs r2, #0 - 8001624: 605a str r2, [r3, #4] + 800177c: 4b10 ldr r3, [pc, #64] @ (80017c0 ) + 800177e: 2200 movs r2, #0 + 8001780: 605a str r2, [r3, #4] hadc1.Init.NbrOfConversion = 1; - 8001626: 4b0f ldr r3, [pc, #60] @ (8001664 ) - 8001628: 2201 movs r2, #1 - 800162a: 611a str r2, [r3, #16] + 8001782: 4b0f ldr r3, [pc, #60] @ (80017c0 ) + 8001784: 2201 movs r2, #1 + 8001786: 611a str r2, [r3, #16] if (HAL_ADC_Init(&hadc1) != HAL_OK) - 800162c: 480d ldr r0, [pc, #52] @ (8001664 ) - 800162e: f001 fac9 bl 8002bc4 - 8001632: 4603 mov r3, r0 - 8001634: 2b00 cmp r3, #0 - 8001636: d001 beq.n 800163c + 8001788: 480d ldr r0, [pc, #52] @ (80017c0 ) + 800178a: f001 fb6b bl 8002e64 + 800178e: 4603 mov r3, r0 + 8001790: 2b00 cmp r3, #0 + 8001792: d001 beq.n 8001798 { Error_Handler(); - 8001638: f000 ffb4 bl 80025a4 + 8001794: f001 f87a bl 800288c } /** Configure Regular Channel */ sConfig.Channel = ADC_CHANNEL_0; - 800163c: 2300 movs r3, #0 - 800163e: 607b str r3, [r7, #4] + 8001798: 2300 movs r3, #0 + 800179a: 607b str r3, [r7, #4] sConfig.Rank = ADC_REGULAR_RANK_1; - 8001640: 2301 movs r3, #1 - 8001642: 60bb str r3, [r7, #8] + 800179c: 2301 movs r3, #1 + 800179e: 60bb str r3, [r7, #8] sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; - 8001644: 2300 movs r3, #0 - 8001646: 60fb str r3, [r7, #12] + 80017a0: 2300 movs r3, #0 + 80017a2: 60fb str r3, [r7, #12] if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - 8001648: 1d3b adds r3, r7, #4 - 800164a: 4619 mov r1, r3 - 800164c: 4805 ldr r0, [pc, #20] @ (8001664 ) - 800164e: f001 fb91 bl 8002d74 - 8001652: 4603 mov r3, r0 - 8001654: 2b00 cmp r3, #0 - 8001656: d001 beq.n 800165c + 80017a4: 1d3b adds r3, r7, #4 + 80017a6: 4619 mov r1, r3 + 80017a8: 4805 ldr r0, [pc, #20] @ (80017c0 ) + 80017aa: f001 fc33 bl 8003014 + 80017ae: 4603 mov r3, r0 + 80017b0: 2b00 cmp r3, #0 + 80017b2: d001 beq.n 80017b8 { Error_Handler(); - 8001658: f000 ffa4 bl 80025a4 + 80017b4: f001 f86a bl 800288c } /* USER CODE BEGIN ADC1_Init 2 */ /* USER CODE END ADC1_Init 2 */ } - 800165c: bf00 nop - 800165e: 3710 adds r7, #16 - 8001660: 46bd mov sp, r7 - 8001662: bd80 pop {r7, pc} - 8001664: 200001bc .word 0x200001bc - 8001668: 40012400 .word 0x40012400 + 80017b8: bf00 nop + 80017ba: 3710 adds r7, #16 + 80017bc: 46bd mov sp, r7 + 80017be: bd80 pop {r7, pc} + 80017c0: 2000015c .word 0x2000015c + 80017c4: 40012400 .word 0x40012400 -0800166c : +080017c8 : /* ADC2 init function */ void MX_ADC2_Init(void) { - 800166c: b580 push {r7, lr} - 800166e: b084 sub sp, #16 - 8001670: af00 add r7, sp, #0 + 80017c8: b580 push {r7, lr} + 80017ca: b084 sub sp, #16 + 80017cc: af00 add r7, sp, #0 /* USER CODE BEGIN ADC2_Init 0 */ /* USER CODE END ADC2_Init 0 */ ADC_ChannelConfTypeDef sConfig = {0}; - 8001672: 1d3b adds r3, r7, #4 - 8001674: 2200 movs r2, #0 - 8001676: 601a str r2, [r3, #0] - 8001678: 605a str r2, [r3, #4] - 800167a: 609a str r2, [r3, #8] + 80017ce: 1d3b adds r3, r7, #4 + 80017d0: 2200 movs r2, #0 + 80017d2: 601a str r2, [r3, #0] + 80017d4: 605a str r2, [r3, #4] + 80017d6: 609a str r2, [r3, #8] /* USER CODE END ADC2_Init 1 */ /** Common config */ hadc2.Instance = ADC2; - 800167c: 4b18 ldr r3, [pc, #96] @ (80016e0 ) - 800167e: 4a19 ldr r2, [pc, #100] @ (80016e4 ) - 8001680: 601a str r2, [r3, #0] + 80017d8: 4b18 ldr r3, [pc, #96] @ (800183c ) + 80017da: 4a19 ldr r2, [pc, #100] @ (8001840 ) + 80017dc: 601a str r2, [r3, #0] hadc2.Init.ScanConvMode = ADC_SCAN_DISABLE; - 8001682: 4b17 ldr r3, [pc, #92] @ (80016e0 ) - 8001684: 2200 movs r2, #0 - 8001686: 609a str r2, [r3, #8] + 80017de: 4b17 ldr r3, [pc, #92] @ (800183c ) + 80017e0: 2200 movs r2, #0 + 80017e2: 609a str r2, [r3, #8] hadc2.Init.ContinuousConvMode = ENABLE; - 8001688: 4b15 ldr r3, [pc, #84] @ (80016e0 ) - 800168a: 2201 movs r2, #1 - 800168c: 731a strb r2, [r3, #12] + 80017e4: 4b15 ldr r3, [pc, #84] @ (800183c ) + 80017e6: 2201 movs r2, #1 + 80017e8: 731a strb r2, [r3, #12] hadc2.Init.DiscontinuousConvMode = DISABLE; - 800168e: 4b14 ldr r3, [pc, #80] @ (80016e0 ) - 8001690: 2200 movs r2, #0 - 8001692: 751a strb r2, [r3, #20] + 80017ea: 4b14 ldr r3, [pc, #80] @ (800183c ) + 80017ec: 2200 movs r2, #0 + 80017ee: 751a strb r2, [r3, #20] hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START; - 8001694: 4b12 ldr r3, [pc, #72] @ (80016e0 ) - 8001696: f44f 2260 mov.w r2, #917504 @ 0xe0000 - 800169a: 61da str r2, [r3, #28] + 80017f0: 4b12 ldr r3, [pc, #72] @ (800183c ) + 80017f2: f44f 2260 mov.w r2, #917504 @ 0xe0000 + 80017f6: 61da str r2, [r3, #28] hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT; - 800169c: 4b10 ldr r3, [pc, #64] @ (80016e0 ) - 800169e: 2200 movs r2, #0 - 80016a0: 605a str r2, [r3, #4] + 80017f8: 4b10 ldr r3, [pc, #64] @ (800183c ) + 80017fa: 2200 movs r2, #0 + 80017fc: 605a str r2, [r3, #4] hadc2.Init.NbrOfConversion = 1; - 80016a2: 4b0f ldr r3, [pc, #60] @ (80016e0 ) - 80016a4: 2201 movs r2, #1 - 80016a6: 611a str r2, [r3, #16] + 80017fe: 4b0f ldr r3, [pc, #60] @ (800183c ) + 8001800: 2201 movs r2, #1 + 8001802: 611a str r2, [r3, #16] if (HAL_ADC_Init(&hadc2) != HAL_OK) - 80016a8: 480d ldr r0, [pc, #52] @ (80016e0 ) - 80016aa: f001 fa8b bl 8002bc4 - 80016ae: 4603 mov r3, r0 - 80016b0: 2b00 cmp r3, #0 - 80016b2: d001 beq.n 80016b8 + 8001804: 480d ldr r0, [pc, #52] @ (800183c ) + 8001806: f001 fb2d bl 8002e64 + 800180a: 4603 mov r3, r0 + 800180c: 2b00 cmp r3, #0 + 800180e: d001 beq.n 8001814 { Error_Handler(); - 80016b4: f000 ff76 bl 80025a4 + 8001810: f001 f83c bl 800288c } /** Configure Regular Channel */ sConfig.Channel = ADC_CHANNEL_1; - 80016b8: 2301 movs r3, #1 - 80016ba: 607b str r3, [r7, #4] + 8001814: 2301 movs r3, #1 + 8001816: 607b str r3, [r7, #4] sConfig.Rank = ADC_REGULAR_RANK_1; - 80016bc: 2301 movs r3, #1 - 80016be: 60bb str r3, [r7, #8] + 8001818: 2301 movs r3, #1 + 800181a: 60bb str r3, [r7, #8] sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; - 80016c0: 2300 movs r3, #0 - 80016c2: 60fb str r3, [r7, #12] + 800181c: 2300 movs r3, #0 + 800181e: 60fb str r3, [r7, #12] if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK) - 80016c4: 1d3b adds r3, r7, #4 - 80016c6: 4619 mov r1, r3 - 80016c8: 4805 ldr r0, [pc, #20] @ (80016e0 ) - 80016ca: f001 fb53 bl 8002d74 - 80016ce: 4603 mov r3, r0 - 80016d0: 2b00 cmp r3, #0 - 80016d2: d001 beq.n 80016d8 + 8001820: 1d3b adds r3, r7, #4 + 8001822: 4619 mov r1, r3 + 8001824: 4805 ldr r0, [pc, #20] @ (800183c ) + 8001826: f001 fbf5 bl 8003014 + 800182a: 4603 mov r3, r0 + 800182c: 2b00 cmp r3, #0 + 800182e: d001 beq.n 8001834 { Error_Handler(); - 80016d4: f000 ff66 bl 80025a4 + 8001830: f001 f82c bl 800288c } /* USER CODE BEGIN ADC2_Init 2 */ /* USER CODE END ADC2_Init 2 */ } - 80016d8: bf00 nop - 80016da: 3710 adds r7, #16 - 80016dc: 46bd mov sp, r7 - 80016de: bd80 pop {r7, pc} - 80016e0: 200001ec .word 0x200001ec - 80016e4: 40012800 .word 0x40012800 + 8001834: bf00 nop + 8001836: 3710 adds r7, #16 + 8001838: 46bd mov sp, r7 + 800183a: bd80 pop {r7, pc} + 800183c: 2000018c .word 0x2000018c + 8001840: 40012800 .word 0x40012800 -080016e8 : +08001844 : void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle) { - 80016e8: b580 push {r7, lr} - 80016ea: b08a sub sp, #40 @ 0x28 - 80016ec: af00 add r7, sp, #0 - 80016ee: 6078 str r0, [r7, #4] + 8001844: b580 push {r7, lr} + 8001846: b08a sub sp, #40 @ 0x28 + 8001848: af00 add r7, sp, #0 + 800184a: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 80016f0: f107 0318 add.w r3, r7, #24 - 80016f4: 2200 movs r2, #0 - 80016f6: 601a str r2, [r3, #0] - 80016f8: 605a str r2, [r3, #4] - 80016fa: 609a str r2, [r3, #8] - 80016fc: 60da str r2, [r3, #12] + 800184c: f107 0318 add.w r3, r7, #24 + 8001850: 2200 movs r2, #0 + 8001852: 601a str r2, [r3, #0] + 8001854: 605a str r2, [r3, #4] + 8001856: 609a str r2, [r3, #8] + 8001858: 60da str r2, [r3, #12] if(adcHandle->Instance==ADC1) - 80016fe: 687b ldr r3, [r7, #4] - 8001700: 681b ldr r3, [r3, #0] - 8001702: 4a28 ldr r2, [pc, #160] @ (80017a4 ) - 8001704: 4293 cmp r3, r2 - 8001706: d122 bne.n 800174e + 800185a: 687b ldr r3, [r7, #4] + 800185c: 681b ldr r3, [r3, #0] + 800185e: 4a28 ldr r2, [pc, #160] @ (8001900 ) + 8001860: 4293 cmp r3, r2 + 8001862: d122 bne.n 80018aa { /* USER CODE BEGIN ADC1_MspInit 0 */ /* USER CODE END ADC1_MspInit 0 */ /* ADC1 clock enable */ __HAL_RCC_ADC1_CLK_ENABLE(); - 8001708: 4b27 ldr r3, [pc, #156] @ (80017a8 ) - 800170a: 699b ldr r3, [r3, #24] - 800170c: 4a26 ldr r2, [pc, #152] @ (80017a8 ) - 800170e: f443 7300 orr.w r3, r3, #512 @ 0x200 - 8001712: 6193 str r3, [r2, #24] - 8001714: 4b24 ldr r3, [pc, #144] @ (80017a8 ) - 8001716: 699b ldr r3, [r3, #24] - 8001718: f403 7300 and.w r3, r3, #512 @ 0x200 - 800171c: 617b str r3, [r7, #20] - 800171e: 697b ldr r3, [r7, #20] + 8001864: 4b27 ldr r3, [pc, #156] @ (8001904 ) + 8001866: 699b ldr r3, [r3, #24] + 8001868: 4a26 ldr r2, [pc, #152] @ (8001904 ) + 800186a: f443 7300 orr.w r3, r3, #512 @ 0x200 + 800186e: 6193 str r3, [r2, #24] + 8001870: 4b24 ldr r3, [pc, #144] @ (8001904 ) + 8001872: 699b ldr r3, [r3, #24] + 8001874: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001878: 617b str r3, [r7, #20] + 800187a: 697b ldr r3, [r7, #20] __HAL_RCC_GPIOA_CLK_ENABLE(); - 8001720: 4b21 ldr r3, [pc, #132] @ (80017a8 ) - 8001722: 699b ldr r3, [r3, #24] - 8001724: 4a20 ldr r2, [pc, #128] @ (80017a8 ) - 8001726: f043 0304 orr.w r3, r3, #4 - 800172a: 6193 str r3, [r2, #24] - 800172c: 4b1e ldr r3, [pc, #120] @ (80017a8 ) - 800172e: 699b ldr r3, [r3, #24] - 8001730: f003 0304 and.w r3, r3, #4 - 8001734: 613b str r3, [r7, #16] - 8001736: 693b ldr r3, [r7, #16] + 800187c: 4b21 ldr r3, [pc, #132] @ (8001904 ) + 800187e: 699b ldr r3, [r3, #24] + 8001880: 4a20 ldr r2, [pc, #128] @ (8001904 ) + 8001882: f043 0304 orr.w r3, r3, #4 + 8001886: 6193 str r3, [r2, #24] + 8001888: 4b1e ldr r3, [pc, #120] @ (8001904 ) + 800188a: 699b ldr r3, [r3, #24] + 800188c: f003 0304 and.w r3, r3, #4 + 8001890: 613b str r3, [r7, #16] + 8001892: 693b ldr r3, [r7, #16] /**ADC1 GPIO Configuration PA0-WKUP ------> ADC1_IN0 PA1 ------> ADC1_IN1 */ GPIO_InitStruct.Pin = AIN1_Pin|AIN2_Pin; - 8001738: 2303 movs r3, #3 - 800173a: 61bb str r3, [r7, #24] + 8001894: 2303 movs r3, #3 + 8001896: 61bb str r3, [r7, #24] GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; - 800173c: 2303 movs r3, #3 - 800173e: 61fb str r3, [r7, #28] + 8001898: 2303 movs r3, #3 + 800189a: 61fb str r3, [r7, #28] HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 8001740: f107 0318 add.w r3, r7, #24 - 8001744: 4619 mov r1, r3 - 8001746: 4819 ldr r0, [pc, #100] @ (80017ac ) - 8001748: f001 fe0e bl 8003368 + 800189c: f107 0318 add.w r3, r7, #24 + 80018a0: 4619 mov r1, r3 + 80018a2: 4819 ldr r0, [pc, #100] @ (8001908 ) + 80018a4: f001 feb0 bl 8003608 /* USER CODE BEGIN ADC2_MspInit 1 */ /* USER CODE END ADC2_MspInit 1 */ } } - 800174c: e026 b.n 800179c + 80018a8: e026 b.n 80018f8 else if(adcHandle->Instance==ADC2) - 800174e: 687b ldr r3, [r7, #4] - 8001750: 681b ldr r3, [r3, #0] - 8001752: 4a17 ldr r2, [pc, #92] @ (80017b0 ) - 8001754: 4293 cmp r3, r2 - 8001756: d121 bne.n 800179c + 80018aa: 687b ldr r3, [r7, #4] + 80018ac: 681b ldr r3, [r3, #0] + 80018ae: 4a17 ldr r2, [pc, #92] @ (800190c ) + 80018b0: 4293 cmp r3, r2 + 80018b2: d121 bne.n 80018f8 __HAL_RCC_ADC2_CLK_ENABLE(); - 8001758: 4b13 ldr r3, [pc, #76] @ (80017a8 ) - 800175a: 699b ldr r3, [r3, #24] - 800175c: 4a12 ldr r2, [pc, #72] @ (80017a8 ) - 800175e: f443 6380 orr.w r3, r3, #1024 @ 0x400 - 8001762: 6193 str r3, [r2, #24] - 8001764: 4b10 ldr r3, [pc, #64] @ (80017a8 ) - 8001766: 699b ldr r3, [r3, #24] - 8001768: f403 6380 and.w r3, r3, #1024 @ 0x400 - 800176c: 60fb str r3, [r7, #12] - 800176e: 68fb ldr r3, [r7, #12] + 80018b4: 4b13 ldr r3, [pc, #76] @ (8001904 ) + 80018b6: 699b ldr r3, [r3, #24] + 80018b8: 4a12 ldr r2, [pc, #72] @ (8001904 ) + 80018ba: f443 6380 orr.w r3, r3, #1024 @ 0x400 + 80018be: 6193 str r3, [r2, #24] + 80018c0: 4b10 ldr r3, [pc, #64] @ (8001904 ) + 80018c2: 699b ldr r3, [r3, #24] + 80018c4: f403 6380 and.w r3, r3, #1024 @ 0x400 + 80018c8: 60fb str r3, [r7, #12] + 80018ca: 68fb ldr r3, [r7, #12] __HAL_RCC_GPIOA_CLK_ENABLE(); - 8001770: 4b0d ldr r3, [pc, #52] @ (80017a8 ) - 8001772: 699b ldr r3, [r3, #24] - 8001774: 4a0c ldr r2, [pc, #48] @ (80017a8 ) - 8001776: f043 0304 orr.w r3, r3, #4 - 800177a: 6193 str r3, [r2, #24] - 800177c: 4b0a ldr r3, [pc, #40] @ (80017a8 ) - 800177e: 699b ldr r3, [r3, #24] - 8001780: f003 0304 and.w r3, r3, #4 - 8001784: 60bb str r3, [r7, #8] - 8001786: 68bb ldr r3, [r7, #8] + 80018cc: 4b0d ldr r3, [pc, #52] @ (8001904 ) + 80018ce: 699b ldr r3, [r3, #24] + 80018d0: 4a0c ldr r2, [pc, #48] @ (8001904 ) + 80018d2: f043 0304 orr.w r3, r3, #4 + 80018d6: 6193 str r3, [r2, #24] + 80018d8: 4b0a ldr r3, [pc, #40] @ (8001904 ) + 80018da: 699b ldr r3, [r3, #24] + 80018dc: f003 0304 and.w r3, r3, #4 + 80018e0: 60bb str r3, [r7, #8] + 80018e2: 68bb ldr r3, [r7, #8] GPIO_InitStruct.Pin = AIN1_Pin|AIN2_Pin; - 8001788: 2303 movs r3, #3 - 800178a: 61bb str r3, [r7, #24] + 80018e4: 2303 movs r3, #3 + 80018e6: 61bb str r3, [r7, #24] GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; - 800178c: 2303 movs r3, #3 - 800178e: 61fb str r3, [r7, #28] + 80018e8: 2303 movs r3, #3 + 80018ea: 61fb str r3, [r7, #28] HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 8001790: f107 0318 add.w r3, r7, #24 - 8001794: 4619 mov r1, r3 - 8001796: 4805 ldr r0, [pc, #20] @ (80017ac ) - 8001798: f001 fde6 bl 8003368 + 80018ec: f107 0318 add.w r3, r7, #24 + 80018f0: 4619 mov r1, r3 + 80018f2: 4805 ldr r0, [pc, #20] @ (8001908 ) + 80018f4: f001 fe88 bl 8003608 } - 800179c: bf00 nop - 800179e: 3728 adds r7, #40 @ 0x28 - 80017a0: 46bd mov sp, r7 - 80017a2: bd80 pop {r7, pc} - 80017a4: 40012400 .word 0x40012400 - 80017a8: 40021000 .word 0x40021000 - 80017ac: 40010800 .word 0x40010800 - 80017b0: 40012800 .word 0x40012800 + 80018f8: bf00 nop + 80018fa: 3728 adds r7, #40 @ 0x28 + 80018fc: 46bd mov sp, r7 + 80018fe: bd80 pop {r7, pc} + 8001900: 40012400 .word 0x40012400 + 8001904: 40021000 .word 0x40021000 + 8001908: 40010800 .word 0x40010800 + 800190c: 40012800 .word 0x40012800 -080017b4 : +08001910 : ADS1015_filter_t g_ph_filter = {0}; volatile ADS1015_State_t ads1015_state = ADS1015_IDLE; // Write the register static void writeRegister(ADS1015_I2C *i2c, uint8_t reg, uint16_t value) { - 80017b4: b580 push {r7, lr} - 80017b6: b086 sub sp, #24 - 80017b8: af02 add r7, sp, #8 - 80017ba: 6078 str r0, [r7, #4] - 80017bc: 460b mov r3, r1 - 80017be: 70fb strb r3, [r7, #3] - 80017c0: 4613 mov r3, r2 - 80017c2: 803b strh r3, [r7, #0] + 8001910: b580 push {r7, lr} + 8001912: b086 sub sp, #24 + 8001914: af02 add r7, sp, #8 + 8001916: 6078 str r0, [r7, #4] + 8001918: 460b mov r3, r1 + 800191a: 70fb strb r3, [r7, #3] + 800191c: 4613 mov r3, r2 + 800191e: 803b strh r3, [r7, #0] uint8_t pData[3] = { reg, (uint8_t) (value >> 8), (uint8_t) (value & 0xFF) }; - 80017c4: 78fb ldrb r3, [r7, #3] - 80017c6: 733b strb r3, [r7, #12] - 80017c8: 883b ldrh r3, [r7, #0] - 80017ca: 0a1b lsrs r3, r3, #8 - 80017cc: b29b uxth r3, r3 - 80017ce: b2db uxtb r3, r3 - 80017d0: 737b strb r3, [r7, #13] - 80017d2: 883b ldrh r3, [r7, #0] - 80017d4: b2db uxtb r3, r3 - 80017d6: 73bb strb r3, [r7, #14] + 8001920: 78fb ldrb r3, [r7, #3] + 8001922: 733b strb r3, [r7, #12] + 8001924: 883b ldrh r3, [r7, #0] + 8001926: 0a1b lsrs r3, r3, #8 + 8001928: b29b uxth r3, r3 + 800192a: b2db uxtb r3, r3 + 800192c: 737b strb r3, [r7, #13] + 800192e: 883b ldrh r3, [r7, #0] + 8001930: b2db uxtb r3, r3 + 8001932: 73bb strb r3, [r7, #14] HAL_I2C_Master_Transmit(i2c->hi2c, i2c->m_i2cAddress, pData, 3, 10); - 80017d8: 687b ldr r3, [r7, #4] - 80017da: 68d8 ldr r0, [r3, #12] - 80017dc: 687b ldr r3, [r7, #4] - 80017de: 8819 ldrh r1, [r3, #0] - 80017e0: f107 020c add.w r2, r7, #12 - 80017e4: 230a movs r3, #10 - 80017e6: 9300 str r3, [sp, #0] - 80017e8: 2303 movs r3, #3 - 80017ea: f002 f8cd bl 8003988 + 8001934: 687b ldr r3, [r7, #4] + 8001936: 68d8 ldr r0, [r3, #12] + 8001938: 687b ldr r3, [r7, #4] + 800193a: 8819 ldrh r1, [r3, #0] + 800193c: f107 020c add.w r2, r7, #12 + 8001940: 230a movs r3, #10 + 8001942: 9300 str r3, [sp, #0] + 8001944: 2303 movs r3, #3 + 8001946: f002 f96f bl 8003c28 } - 80017ee: bf00 nop - 80017f0: 3710 adds r7, #16 - 80017f2: 46bd mov sp, r7 - 80017f4: bd80 pop {r7, pc} + 800194a: bf00 nop + 800194c: 3710 adds r7, #16 + 800194e: 46bd mov sp, r7 + 8001950: bd80 pop {r7, pc} -080017f6 : +08001952 : // Read the register static uint16_t readRegister(ADS1015_I2C *i2c, uint8_t reg) { - 80017f6: b580 push {r7, lr} - 80017f8: b086 sub sp, #24 - 80017fa: af02 add r7, sp, #8 - 80017fc: 6078 str r0, [r7, #4] - 80017fe: 460b mov r3, r1 - 8001800: 70fb strb r3, [r7, #3] + 8001952: b580 push {r7, lr} + 8001954: b086 sub sp, #24 + 8001956: af02 add r7, sp, #8 + 8001958: 6078 str r0, [r7, #4] + 800195a: 460b mov r3, r1 + 800195c: 70fb strb r3, [r7, #3] HAL_I2C_Master_Transmit(i2c->hi2c, i2c->m_i2cAddress, ®, 1, 10); - 8001802: 687b ldr r3, [r7, #4] - 8001804: 68d8 ldr r0, [r3, #12] - 8001806: 687b ldr r3, [r7, #4] - 8001808: 8819 ldrh r1, [r3, #0] - 800180a: 1cfa adds r2, r7, #3 - 800180c: 230a movs r3, #10 - 800180e: 9300 str r3, [sp, #0] - 8001810: 2301 movs r3, #1 - 8001812: f002 f8b9 bl 8003988 + 800195e: 687b ldr r3, [r7, #4] + 8001960: 68d8 ldr r0, [r3, #12] + 8001962: 687b ldr r3, [r7, #4] + 8001964: 8819 ldrh r1, [r3, #0] + 8001966: 1cfa adds r2, r7, #3 + 8001968: 230a movs r3, #10 + 800196a: 9300 str r3, [sp, #0] + 800196c: 2301 movs r3, #1 + 800196e: f002 f95b bl 8003c28 uint8_t pData[2] = { 0, 0 }; - 8001816: 2300 movs r3, #0 - 8001818: 81bb strh r3, [r7, #12] + 8001972: 2300 movs r3, #0 + 8001974: 81bb strh r3, [r7, #12] HAL_I2C_Master_Receive(i2c->hi2c, i2c->m_i2cAddress, pData, 2, 10); - 800181a: 687b ldr r3, [r7, #4] - 800181c: 68d8 ldr r0, [r3, #12] - 800181e: 687b ldr r3, [r7, #4] - 8001820: 8819 ldrh r1, [r3, #0] - 8001822: f107 020c add.w r2, r7, #12 - 8001826: 230a movs r3, #10 - 8001828: 9300 str r3, [sp, #0] - 800182a: 2302 movs r3, #2 - 800182c: f002 f9aa bl 8003b84 + 8001976: 687b ldr r3, [r7, #4] + 8001978: 68d8 ldr r0, [r3, #12] + 800197a: 687b ldr r3, [r7, #4] + 800197c: 8819 ldrh r1, [r3, #0] + 800197e: f107 020c add.w r2, r7, #12 + 8001982: 230a movs r3, #10 + 8001984: 9300 str r3, [sp, #0] + 8001986: 2302 movs r3, #2 + 8001988: f002 fa4c bl 8003e24 return ((pData[0] << 8) | pData[1]); - 8001830: 7b3b ldrb r3, [r7, #12] - 8001832: b21b sxth r3, r3 - 8001834: 021b lsls r3, r3, #8 - 8001836: b21a sxth r2, r3 - 8001838: 7b7b ldrb r3, [r7, #13] - 800183a: b21b sxth r3, r3 - 800183c: 4313 orrs r3, r2 - 800183e: b21b sxth r3, r3 - 8001840: b29b uxth r3, r3 + 800198c: 7b3b ldrb r3, [r7, #12] + 800198e: b21b sxth r3, r3 + 8001990: 021b lsls r3, r3, #8 + 8001992: b21a sxth r2, r3 + 8001994: 7b7b ldrb r3, [r7, #13] + 8001996: b21b sxth r3, r3 + 8001998: 4313 orrs r3, r2 + 800199a: b21b sxth r3, r3 + 800199c: b29b uxth r3, r3 } - 8001842: 4618 mov r0, r3 - 8001844: 3710 adds r7, #16 - 8001846: 46bd mov sp, r7 - 8001848: bd80 pop {r7, pc} + 800199e: 4618 mov r0, r3 + 80019a0: 3710 adds r7, #16 + 80019a2: 46bd mov sp, r7 + 80019a4: bd80 pop {r7, pc} + ... -0800184a : - HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); // This MUST have GPIO PA5 ready to use - ERROR I2C - Wrong address +080019a8 : } // Declare an ADS1015 structure -void ADS1015(ADS1015_I2C *i2c, I2C_HandleTypeDef *hi2c, uint8_t i2cAddress) { - 800184a: b480 push {r7} - 800184c: b085 sub sp, #20 - 800184e: af00 add r7, sp, #0 - 8001850: 60f8 str r0, [r7, #12] - 8001852: 60b9 str r1, [r7, #8] - 8001854: 4613 mov r3, r2 - 8001856: 71fb strb r3, [r7, #7] - i2c->hi2c = hi2c; - 8001858: 68fb ldr r3, [r7, #12] - 800185a: 68ba ldr r2, [r7, #8] - 800185c: 60da str r2, [r3, #12] - i2c->m_i2cAddress = i2cAddress; // << 1; // It's Important to shift the address << 1 - 800185e: 79fb ldrb r3, [r7, #7] - 8001860: b29a uxth r2, r3 - 8001862: 68fb ldr r3, [r7, #12] - 8001864: 801a strh r2, [r3, #0] - i2c->m_conversionDelay = ADS1015_CONVERSIONDELAY; - 8001866: 68fb ldr r3, [r7, #12] - 8001868: 2204 movs r2, #4 - 800186a: 605a str r2, [r3, #4] - i2c->m_bitShift = 4; - 800186c: 68fb ldr r3, [r7, #12] - 800186e: 2204 movs r2, #4 - 8001870: 721a strb r2, [r3, #8] - i2c->m_gain = GAIN_SIXTEEN; /* +/- 6.144V range (limited to VDD +0.3V max!) */ - 8001872: 68fb ldr r3, [r7, #12] - 8001874: f44f 6220 mov.w r2, #2560 @ 0xa00 - 8001878: 815a strh r2, [r3, #10] +void ADS1015_Init(void) +{ + 80019a8: b480 push {r7} + 80019aa: af00 add r7, sp, #0 + i2c_ads1015.hi2c = &hi2c1; + 80019ac: 4b09 ldr r3, [pc, #36] @ (80019d4 ) + 80019ae: 4a0a ldr r2, [pc, #40] @ (80019d8 ) + 80019b0: 60da str r2, [r3, #12] + i2c_ads1015.m_i2cAddress = ADS1015_ADDR_GND; // It's Important to shift the address << 1 + 80019b2: 4b08 ldr r3, [pc, #32] @ (80019d4 ) + 80019b4: 2290 movs r2, #144 @ 0x90 + 80019b6: 801a strh r2, [r3, #0] + i2c_ads1015.m_conversionDelay = ADS1015_CONVERSIONDELAY; + 80019b8: 4b06 ldr r3, [pc, #24] @ (80019d4 ) + 80019ba: 2204 movs r2, #4 + 80019bc: 605a str r2, [r3, #4] + i2c_ads1015.m_bitShift = 4; + 80019be: 4b05 ldr r3, [pc, #20] @ (80019d4 ) + 80019c0: 2204 movs r2, #4 + 80019c2: 721a strb r2, [r3, #8] + i2c_ads1015.m_gain = GAIN_SIXTEEN; /* +/- 6.144V range (limited to VDD +0.3V max!) */ + 80019c4: 4b03 ldr r3, [pc, #12] @ (80019d4 ) + 80019c6: f44f 6220 mov.w r2, #2560 @ 0xa00 + 80019ca: 815a strh r2, [r3, #10] //ADSbegin(i2c); //Ready is not used } - 800187a: bf00 nop - 800187c: 3714 adds r7, #20 - 800187e: 46bd mov sp, r7 - 8001880: bc80 pop {r7} - 8001882: 4770 bx lr + 80019cc: bf00 nop + 80019ce: 46bd mov sp, r7 + 80019d0: bc80 pop {r7} + 80019d2: 4770 bx lr + 80019d4: 200001bc .word 0x200001bc + 80019d8: 20000624 .word 0x20000624 -08001884 : +080019dc : void ADS1015_Process_System(void) { - 8001884: b580 push {r7, lr} - 8001886: b082 sub sp, #8 - 8001888: af00 add r7, sp, #0 + 80019dc: b580 push {r7, lr} + 80019de: b082 sub sp, #8 + 80019e0: af00 add r7, sp, #0 static uint32_t state_timer = 0; static uint32_t sample_count = 0; uint16_t config_reg = 0; - 800188a: 2300 movs r3, #0 - 800188c: 80fb strh r3, [r7, #6] + 80019e2: 2300 movs r3, #0 + 80019e4: 80fb strh r3, [r7, #6] switch (ads1015_state) - 800188e: 4b3d ldr r3, [pc, #244] @ (8001984 ) - 8001890: 781b ldrb r3, [r3, #0] - 8001892: b2db uxtb r3, r3 - 8001894: 2b04 cmp r3, #4 - 8001896: d870 bhi.n 800197a - 8001898: a201 add r2, pc, #4 @ (adr r2, 80018a0 ) - 800189a: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 800189e: bf00 nop - 80018a0: 080018b5 .word 0x080018b5 - 80018a4: 080018c3 .word 0x080018c3 - 80018a8: 080018df .word 0x080018df - 80018ac: 08001909 .word 0x08001909 - 80018b0: 0800195f .word 0x0800195f + 80019e6: 4b3d ldr r3, [pc, #244] @ (8001adc ) + 80019e8: 781b ldrb r3, [r3, #0] + 80019ea: b2db uxtb r3, r3 + 80019ec: 2b04 cmp r3, #4 + 80019ee: d870 bhi.n 8001ad2 + 80019f0: a201 add r2, pc, #4 @ (adr r2, 80019f8 ) + 80019f2: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 80019f6: bf00 nop + 80019f8: 08001a0d .word 0x08001a0d + 80019fc: 08001a1b .word 0x08001a1b + 8001a00: 08001a37 .word 0x08001a37 + 8001a04: 08001a61 .word 0x08001a61 + 8001a08: 08001ab7 .word 0x08001ab7 { case ADS1015_IDLE: sample_count = 0; - 80018b4: 4b34 ldr r3, [pc, #208] @ (8001988 ) - 80018b6: 2200 movs r2, #0 - 80018b8: 601a str r2, [r3, #0] + 8001a0c: 4b34 ldr r3, [pc, #208] @ (8001ae0 ) + 8001a0e: 2200 movs r2, #0 + 8001a10: 601a str r2, [r3, #0] ads1015_state = ADS1015_START_CONVERSION; - 80018ba: 4b32 ldr r3, [pc, #200] @ (8001984 ) - 80018bc: 2201 movs r2, #1 - 80018be: 701a strb r2, [r3, #0] + 8001a12: 4b32 ldr r3, [pc, #200] @ (8001adc ) + 8001a14: 2201 movs r2, #1 + 8001a16: 701a strb r2, [r3, #0] break; - 80018c0: e05b b.n 800197a + 8001a18: e05b b.n 8001ad2 case ADS1015_START_CONVERSION: state_timer = g_ms_counter; - 80018c2: 4b32 ldr r3, [pc, #200] @ (800198c ) - 80018c4: 681b ldr r3, [r3, #0] - 80018c6: 4a32 ldr r2, [pc, #200] @ (8001990 ) - 80018c8: 6013 str r3, [r2, #0] + 8001a1a: 4b32 ldr r3, [pc, #200] @ (8001ae4 ) + 8001a1c: 681b ldr r3, [r3, #0] + 8001a1e: 4a32 ldr r2, [pc, #200] @ (8001ae8 ) + 8001a20: 6013 str r3, [r2, #0] /* Escreve no Config Register (P[1:0]=01b) com OS=1 para * iniciar a conversão single-shot. O bit OS só tem efeito * quando o dispositivo está em power-down (seção 7.4.2.1) */ // Write config register to the ADC writeRegister(&i2c_ads1015, ADS1015_REG_POINTER_CONFIG, ADS1015_CONFIG_START_SINGLE); - 80018ca: f648 3203 movw r2, #35587 @ 0x8b03 - 80018ce: 2101 movs r1, #1 - 80018d0: 4830 ldr r0, [pc, #192] @ (8001994 ) - 80018d2: f7ff ff6f bl 80017b4 + 8001a22: f648 3203 movw r2, #35587 @ 0x8b03 + 8001a26: 2101 movs r1, #1 + 8001a28: 4830 ldr r0, [pc, #192] @ (8001aec ) + 8001a2a: f7ff ff71 bl 8001910 ads1015_state = ADS1015_WAIT_CONVERSION; - 80018d6: 4b2b ldr r3, [pc, #172] @ (8001984 ) - 80018d8: 2202 movs r2, #2 - 80018da: 701a strb r2, [r3, #0] + 8001a2e: 4b2b ldr r3, [pc, #172] @ (8001adc ) + 8001a30: 2202 movs r2, #2 + 8001a32: 701a strb r2, [r3, #0] break; - 80018dc: e04d b.n 800197a + 8001a34: e04d b.n 8001ad2 * 0b = dispositivo ainda convertendo * 1b = conversão concluída, dado pronto no Conversion Register * (Tabela 8-4, descrição do bit OS) */ config_reg = readRegister(&i2c_ads1015, ADS1015_REG_POINTER_CONFIG); - 80018de: 2101 movs r1, #1 - 80018e0: 482c ldr r0, [pc, #176] @ (8001994 ) - 80018e2: f7ff ff88 bl 80017f6 - 80018e6: 4603 mov r3, r0 - 80018e8: 80fb strh r3, [r7, #6] + 8001a36: 2101 movs r1, #1 + 8001a38: 482c ldr r0, [pc, #176] @ (8001aec ) + 8001a3a: f7ff ff8a bl 8001952 + 8001a3e: 4603 mov r3, r0 + 8001a40: 80fb strh r3, [r7, #6] if (((config_reg & ADS1015_REG_CONFIG_OS_SINGLE) != 0) && (g_ms_counter - state_timer)>ADS1015_TIME_PER_SAMPLE) - 80018ea: f9b7 3006 ldrsh.w r3, [r7, #6] - 80018ee: 2b00 cmp r3, #0 - 80018f0: da40 bge.n 8001974 - 80018f2: 4b26 ldr r3, [pc, #152] @ (800198c ) - 80018f4: 681a ldr r2, [r3, #0] - 80018f6: 4b26 ldr r3, [pc, #152] @ (8001990 ) - 80018f8: 681b ldr r3, [r3, #0] - 80018fa: 1ad3 subs r3, r2, r3 - 80018fc: 2b09 cmp r3, #9 - 80018fe: d939 bls.n 8001974 + 8001a42: f9b7 3006 ldrsh.w r3, [r7, #6] + 8001a46: 2b00 cmp r3, #0 + 8001a48: da40 bge.n 8001acc + 8001a4a: 4b26 ldr r3, [pc, #152] @ (8001ae4 ) + 8001a4c: 681a ldr r2, [r3, #0] + 8001a4e: 4b26 ldr r3, [pc, #152] @ (8001ae8 ) + 8001a50: 681b ldr r3, [r3, #0] + 8001a52: 1ad3 subs r3, r2, r3 + 8001a54: 2b09 cmp r3, #9 + 8001a56: d939 bls.n 8001acc { ads1015_state = ADS1015_READ_DATA; - 8001900: 4b20 ldr r3, [pc, #128] @ (8001984 ) - 8001902: 2203 movs r2, #3 - 8001904: 701a strb r2, [r3, #0] + 8001a58: 4b20 ldr r3, [pc, #128] @ (8001adc ) + 8001a5a: 2203 movs r2, #3 + 8001a5c: 701a strb r2, [r3, #0] } // (opcional) tratar timeout comparando g_ms_counter - state_timer // Datasheet: conversão single-cycle, tempo = 1/DR (ex: 1600SPS ≈ 625µs) break; - 8001906: e035 b.n 8001974 + 8001a5e: e035 b.n 8001acc case ADS1015_READ_DATA: { /* Muda o Address Pointer para o Conversion Register (P[1:0]=00b) * e lê os 16 bits. Dado é 12 bits em complemento de 2, * left-justified em D[15:4]; D[3:0] sempre lê 0h (Tabela 8-3) */ int16_t raw = (int16_t)readRegister(&i2c_ads1015, ADS1015_REG_POINTER_CONVERT); - 8001908: 2100 movs r1, #0 - 800190a: 4822 ldr r0, [pc, #136] @ (8001994 ) - 800190c: f7ff ff73 bl 80017f6 - 8001910: 4603 mov r3, r0 - 8001912: 80bb strh r3, [r7, #4] + 8001a60: 2100 movs r1, #0 + 8001a62: 4822 ldr r0, [pc, #136] @ (8001aec ) + 8001a64: f7ff ff75 bl 8001952 + 8001a68: 4603 mov r3, r0 + 8001a6a: 80bb strh r3, [r7, #4] raw >>= 4; // remove os 4 bits reservados (D[3:0]), resultado = 12 bits signed - 8001914: f9b7 3004 ldrsh.w r3, [r7, #4] - 8001918: 111b asrs r3, r3, #4 - 800191a: 80bb strh r3, [r7, #4] + 8001a6c: f9b7 3004 ldrsh.w r3, [r7, #4] + 8001a70: 111b asrs r3, r3, #4 + 8001a72: 80bb strh r3, [r7, #4] float value = (float)(4096 - raw); // ((float)raw * ADS1015_ADC_VREF) / ADS1015_ADC_MAX; // usa FSR configurado no PGA - 800191c: f9b7 3004 ldrsh.w r3, [r7, #4] - 8001920: f5c3 5380 rsb r3, r3, #4096 @ 0x1000 - 8001924: 4618 mov r0, r3 - 8001926: f7ff f869 bl 80009fc <__aeabi_i2f> - 800192a: 4603 mov r3, r0 - 800192c: 603b str r3, [r7, #0] + 8001a74: f9b7 3004 ldrsh.w r3, [r7, #4] + 8001a78: f5c3 5380 rsb r3, r3, #4096 @ 0x1000 + 8001a7c: 4618 mov r0, r3 + 8001a7e: f7fe ffbd bl 80009fc <__aeabi_i2f> + 8001a82: 4603 mov r3, r0 + 8001a84: 603b str r3, [r7, #0] ADS1015_pH_NewSample(value); - 800192e: 6838 ldr r0, [r7, #0] - 8001930: f000 f986 bl 8001c40 + 8001a86: 6838 ldr r0, [r7, #0] + 8001a88: f000 f98c bl 8001da4 sample_count++; - 8001934: 4b14 ldr r3, [pc, #80] @ (8001988 ) - 8001936: 681b ldr r3, [r3, #0] - 8001938: 3301 adds r3, #1 - 800193a: 4a13 ldr r2, [pc, #76] @ (8001988 ) - 800193c: 6013 str r3, [r2, #0] + 8001a8c: 4b14 ldr r3, [pc, #80] @ (8001ae0 ) + 8001a8e: 681b ldr r3, [r3, #0] + 8001a90: 3301 adds r3, #1 + 8001a92: 4a13 ldr r2, [pc, #76] @ (8001ae0 ) + 8001a94: 6013 str r3, [r2, #0] if (sample_count >= ADS1015_BURST_SIZE) - 800193e: 4b12 ldr r3, [pc, #72] @ (8001988 ) - 8001940: 681b ldr r3, [r3, #0] - 8001942: 2b04 cmp r3, #4 - 8001944: d903 bls.n 800194e + 8001a96: 4b12 ldr r3, [pc, #72] @ (8001ae0 ) + 8001a98: 681b ldr r3, [r3, #0] + 8001a9a: 2b04 cmp r3, #4 + 8001a9c: d903 bls.n 8001aa6 { ads1015_state = ADS1015_IDLE; - 8001946: 4b0f ldr r3, [pc, #60] @ (8001984 ) - 8001948: 2200 movs r2, #0 - 800194a: 701a strb r2, [r3, #0] + 8001a9e: 4b0f ldr r3, [pc, #60] @ (8001adc ) + 8001aa0: 2200 movs r2, #0 + 8001aa2: 701a strb r2, [r3, #0] { state_timer = g_ms_counter; ads1015_state = ADS1015_WAIT_NEXT_SAMPLE; } } break; - 800194c: e015 b.n 800197a + 8001aa4: e015 b.n 8001ad2 state_timer = g_ms_counter; - 800194e: 4b0f ldr r3, [pc, #60] @ (800198c ) - 8001950: 681b ldr r3, [r3, #0] - 8001952: 4a0f ldr r2, [pc, #60] @ (8001990 ) - 8001954: 6013 str r3, [r2, #0] + 8001aa6: 4b0f ldr r3, [pc, #60] @ (8001ae4 ) + 8001aa8: 681b ldr r3, [r3, #0] + 8001aaa: 4a0f ldr r2, [pc, #60] @ (8001ae8 ) + 8001aac: 6013 str r3, [r2, #0] ads1015_state = ADS1015_WAIT_NEXT_SAMPLE; - 8001956: 4b0b ldr r3, [pc, #44] @ (8001984 ) - 8001958: 2204 movs r2, #4 - 800195a: 701a strb r2, [r3, #0] + 8001aae: 4b0b ldr r3, [pc, #44] @ (8001adc ) + 8001ab0: 2204 movs r2, #4 + 8001ab2: 701a strb r2, [r3, #0] break; - 800195c: e00d b.n 800197a + 8001ab4: e00d b.n 8001ad2 case ADS1015_WAIT_NEXT_SAMPLE: if ((g_ms_counter - state_timer) >= ADS1015_TIME_PER_SAMPLE) - 800195e: 4b0b ldr r3, [pc, #44] @ (800198c ) - 8001960: 681a ldr r2, [r3, #0] - 8001962: 4b0b ldr r3, [pc, #44] @ (8001990 ) - 8001964: 681b ldr r3, [r3, #0] - 8001966: 1ad3 subs r3, r2, r3 - 8001968: 2b08 cmp r3, #8 - 800196a: d905 bls.n 8001978 + 8001ab6: 4b0b ldr r3, [pc, #44] @ (8001ae4 ) + 8001ab8: 681a ldr r2, [r3, #0] + 8001aba: 4b0b ldr r3, [pc, #44] @ (8001ae8 ) + 8001abc: 681b ldr r3, [r3, #0] + 8001abe: 1ad3 subs r3, r2, r3 + 8001ac0: 2b08 cmp r3, #8 + 8001ac2: d905 bls.n 8001ad0 { ads1015_state = ADS1015_START_CONVERSION; - 800196c: 4b05 ldr r3, [pc, #20] @ (8001984 ) - 800196e: 2201 movs r2, #1 - 8001970: 701a strb r2, [r3, #0] + 8001ac4: 4b05 ldr r3, [pc, #20] @ (8001adc ) + 8001ac6: 2201 movs r2, #1 + 8001ac8: 701a strb r2, [r3, #0] } break; - 8001972: e001 b.n 8001978 + 8001aca: e001 b.n 8001ad0 break; - 8001974: bf00 nop - 8001976: e000 b.n 800197a + 8001acc: bf00 nop + 8001ace: e000 b.n 8001ad2 break; - 8001978: bf00 nop + 8001ad0: bf00 nop } } - 800197a: bf00 nop - 800197c: 3708 adds r7, #8 - 800197e: 46bd mov sp, r7 - 8001980: bd80 pop {r7, pc} - 8001982: bf00 nop - 8001984: 20000278 .word 0x20000278 - 8001988: 2000027c .word 0x2000027c - 800198c: 200000b4 .word 0x200000b4 - 8001990: 20000280 .word 0x20000280 - 8001994: 2000021c .word 0x2000021c + 8001ad2: bf00 nop + 8001ad4: 3708 adds r7, #8 + 8001ad6: 46bd mov sp, r7 + 8001ad8: bd80 pop {r7, pc} + 8001ada: bf00 nop + 8001adc: 20000210 .word 0x20000210 + 8001ae0: 20000214 .word 0x20000214 + 8001ae4: 20000084 .word 0x20000084 + 8001ae8: 20000218 .word 0x20000218 + 8001aec: 200001bc .word 0x200001bc -08001998 : +08001af0 : /** * Simple insertion sort - BURST_SIZE is small, so the cost is negligible * and it avoids depending on qsort/heap allocation. **/ void ADS1015_Sort_Array(float *v, uint8_t n) { - 8001998: b580 push {r7, lr} - 800199a: b084 sub sp, #16 - 800199c: af00 add r7, sp, #0 - 800199e: 6078 str r0, [r7, #4] - 80019a0: 460b mov r3, r1 - 80019a2: 70fb strb r3, [r7, #3] + 8001af0: b580 push {r7, lr} + 8001af2: b084 sub sp, #16 + 8001af4: af00 add r7, sp, #0 + 8001af6: 6078 str r0, [r7, #4] + 8001af8: 460b mov r3, r1 + 8001afa: 70fb strb r3, [r7, #3] for (uint8_t i = 1; i < n; i++) - 80019a4: 2301 movs r3, #1 - 80019a6: 73fb strb r3, [r7, #15] - 80019a8: e039 b.n 8001a1e + 8001afc: 2301 movs r3, #1 + 8001afe: 73fb strb r3, [r7, #15] + 8001b00: e039 b.n 8001b76 { float key = v[i]; - 80019aa: 7bfb ldrb r3, [r7, #15] - 80019ac: 009b lsls r3, r3, #2 - 80019ae: 687a ldr r2, [r7, #4] - 80019b0: 4413 add r3, r2 - 80019b2: 681b ldr r3, [r3, #0] - 80019b4: 60bb str r3, [r7, #8] + 8001b02: 7bfb ldrb r3, [r7, #15] + 8001b04: 009b lsls r3, r3, #2 + 8001b06: 687a ldr r2, [r7, #4] + 8001b08: 4413 add r3, r2 + 8001b0a: 681b ldr r3, [r3, #0] + 8001b0c: 60bb str r3, [r7, #8] int8_t j = (int8_t)i - 1; - 80019b6: 7bfb ldrb r3, [r7, #15] - 80019b8: 3b01 subs r3, #1 - 80019ba: b2db uxtb r3, r3 - 80019bc: 73bb strb r3, [r7, #14] + 8001b0e: 7bfb ldrb r3, [r7, #15] + 8001b10: 3b01 subs r3, #1 + 8001b12: b2db uxtb r3, r3 + 8001b14: 73bb strb r3, [r7, #14] while (j >= 0 && v[j] > key) - 80019be: e012 b.n 80019e6 + 8001b16: e012 b.n 8001b3e { v[j + 1] = v[j]; - 80019c0: f997 300e ldrsb.w r3, [r7, #14] - 80019c4: 009b lsls r3, r3, #2 - 80019c6: 687a ldr r2, [r7, #4] - 80019c8: 441a add r2, r3 - 80019ca: f997 300e ldrsb.w r3, [r7, #14] - 80019ce: 3301 adds r3, #1 - 80019d0: 009b lsls r3, r3, #2 - 80019d2: 6879 ldr r1, [r7, #4] - 80019d4: 440b add r3, r1 - 80019d6: 6812 ldr r2, [r2, #0] - 80019d8: 601a str r2, [r3, #0] + 8001b18: f997 300e ldrsb.w r3, [r7, #14] + 8001b1c: 009b lsls r3, r3, #2 + 8001b1e: 687a ldr r2, [r7, #4] + 8001b20: 441a add r2, r3 + 8001b22: f997 300e ldrsb.w r3, [r7, #14] + 8001b26: 3301 adds r3, #1 + 8001b28: 009b lsls r3, r3, #2 + 8001b2a: 6879 ldr r1, [r7, #4] + 8001b2c: 440b add r3, r1 + 8001b2e: 6812 ldr r2, [r2, #0] + 8001b30: 601a str r2, [r3, #0] j--; - 80019da: f997 300e ldrsb.w r3, [r7, #14] - 80019de: b2db uxtb r3, r3 - 80019e0: 3b01 subs r3, #1 - 80019e2: b2db uxtb r3, r3 - 80019e4: 73bb strb r3, [r7, #14] + 8001b32: f997 300e ldrsb.w r3, [r7, #14] + 8001b36: b2db uxtb r3, r3 + 8001b38: 3b01 subs r3, #1 + 8001b3a: b2db uxtb r3, r3 + 8001b3c: 73bb strb r3, [r7, #14] while (j >= 0 && v[j] > key) - 80019e6: f997 300e ldrsb.w r3, [r7, #14] - 80019ea: 2b00 cmp r3, #0 - 80019ec: db0c blt.n 8001a08 - 80019ee: f997 300e ldrsb.w r3, [r7, #14] - 80019f2: 009b lsls r3, r3, #2 - 80019f4: 687a ldr r2, [r7, #4] - 80019f6: 4413 add r3, r2 - 80019f8: 681b ldr r3, [r3, #0] - 80019fa: 4619 mov r1, r3 - 80019fc: 68b8 ldr r0, [r7, #8] - 80019fe: f7ff f9ef bl 8000de0 <__aeabi_fcmplt> - 8001a02: 4603 mov r3, r0 - 8001a04: 2b00 cmp r3, #0 - 8001a06: d1db bne.n 80019c0 + 8001b3e: f997 300e ldrsb.w r3, [r7, #14] + 8001b42: 2b00 cmp r3, #0 + 8001b44: db0c blt.n 8001b60 + 8001b46: f997 300e ldrsb.w r3, [r7, #14] + 8001b4a: 009b lsls r3, r3, #2 + 8001b4c: 687a ldr r2, [r7, #4] + 8001b4e: 4413 add r3, r2 + 8001b50: 681b ldr r3, [r3, #0] + 8001b52: 4619 mov r1, r3 + 8001b54: 68b8 ldr r0, [r7, #8] + 8001b56: f7ff f943 bl 8000de0 <__aeabi_fcmplt> + 8001b5a: 4603 mov r3, r0 + 8001b5c: 2b00 cmp r3, #0 + 8001b5e: d1db bne.n 8001b18 } v[j + 1] = key; - 8001a08: f997 300e ldrsb.w r3, [r7, #14] - 8001a0c: 3301 adds r3, #1 - 8001a0e: 009b lsls r3, r3, #2 - 8001a10: 687a ldr r2, [r7, #4] - 8001a12: 4413 add r3, r2 - 8001a14: 68ba ldr r2, [r7, #8] - 8001a16: 601a str r2, [r3, #0] + 8001b60: f997 300e ldrsb.w r3, [r7, #14] + 8001b64: 3301 adds r3, #1 + 8001b66: 009b lsls r3, r3, #2 + 8001b68: 687a ldr r2, [r7, #4] + 8001b6a: 4413 add r3, r2 + 8001b6c: 68ba ldr r2, [r7, #8] + 8001b6e: 601a str r2, [r3, #0] for (uint8_t i = 1; i < n; i++) - 8001a18: 7bfb ldrb r3, [r7, #15] - 8001a1a: 3301 adds r3, #1 - 8001a1c: 73fb strb r3, [r7, #15] - 8001a1e: 7bfa ldrb r2, [r7, #15] - 8001a20: 78fb ldrb r3, [r7, #3] - 8001a22: 429a cmp r2, r3 - 8001a24: d3c1 bcc.n 80019aa + 8001b70: 7bfb ldrb r3, [r7, #15] + 8001b72: 3301 adds r3, #1 + 8001b74: 73fb strb r3, [r7, #15] + 8001b76: 7bfa ldrb r2, [r7, #15] + 8001b78: 78fb ldrb r3, [r7, #3] + 8001b7a: 429a cmp r2, r3 + 8001b7c: d3c1 bcc.n 8001b02 } } - 8001a26: bf00 nop - 8001a28: bf00 nop - 8001a2a: 3710 adds r7, #16 - 8001a2c: 46bd mov sp, r7 - 8001a2e: bd80 pop {r7, pc} + 8001b7e: bf00 nop + 8001b80: bf00 nop + 8001b82: 3710 adds r7, #16 + 8001b84: 46bd mov sp, r7 + 8001b86: bd80 pop {r7, pc} -08001a30 : +08001b88 : * original order is not needed), discards TRIM_COUNT values from each * end, and averages the remainder. Sorting in place avoids a temporary * array and removes the need for memcpy()/string.h entirely. **/ float ADS1015_Trimmed_Mean(float *buffer, uint8_t n, uint8_t trim) { - 8001a30: b580 push {r7, lr} - 8001a32: b086 sub sp, #24 - 8001a34: af00 add r7, sp, #0 - 8001a36: 6078 str r0, [r7, #4] - 8001a38: 460b mov r3, r1 - 8001a3a: 70fb strb r3, [r7, #3] - 8001a3c: 4613 mov r3, r2 - 8001a3e: 70bb strb r3, [r7, #2] + 8001b88: b580 push {r7, lr} + 8001b8a: b086 sub sp, #24 + 8001b8c: af00 add r7, sp, #0 + 8001b8e: 6078 str r0, [r7, #4] + 8001b90: 460b mov r3, r1 + 8001b92: 70fb strb r3, [r7, #3] + 8001b94: 4613 mov r3, r2 + 8001b96: 70bb strb r3, [r7, #2] ADS1015_Sort_Array(buffer, n); - 8001a40: 78fb ldrb r3, [r7, #3] - 8001a42: 4619 mov r1, r3 - 8001a44: 6878 ldr r0, [r7, #4] - 8001a46: f7ff ffa7 bl 8001998 + 8001b98: 78fb ldrb r3, [r7, #3] + 8001b9a: 4619 mov r1, r3 + 8001b9c: 6878 ldr r0, [r7, #4] + 8001b9e: f7ff ffa7 bl 8001af0 uint8_t start = trim; - 8001a4a: 78bb ldrb r3, [r7, #2] - 8001a4c: 75fb strb r3, [r7, #23] + 8001ba2: 78bb ldrb r3, [r7, #2] + 8001ba4: 75fb strb r3, [r7, #23] uint8_t end = n - trim; /* exclusive */ - 8001a4e: 78fa ldrb r2, [r7, #3] - 8001a50: 78bb ldrb r3, [r7, #2] - 8001a52: 1ad3 subs r3, r2, r3 - 8001a54: 75bb strb r3, [r7, #22] + 8001ba6: 78fa ldrb r2, [r7, #3] + 8001ba8: 78bb ldrb r3, [r7, #2] + 8001baa: 1ad3 subs r3, r2, r3 + 8001bac: 75bb strb r3, [r7, #22] if (end <= start) /* guard against a misconfigured trim value */ - 8001a56: 7dba ldrb r2, [r7, #22] - 8001a58: 7dfb ldrb r3, [r7, #23] - 8001a5a: 429a cmp r2, r3 - 8001a5c: d803 bhi.n 8001a66 + 8001bae: 7dba ldrb r2, [r7, #22] + 8001bb0: 7dfb ldrb r3, [r7, #23] + 8001bb2: 429a cmp r2, r3 + 8001bb4: d803 bhi.n 8001bbe { start = 0; - 8001a5e: 2300 movs r3, #0 - 8001a60: 75fb strb r3, [r7, #23] + 8001bb6: 2300 movs r3, #0 + 8001bb8: 75fb strb r3, [r7, #23] end = n; - 8001a62: 78fb ldrb r3, [r7, #3] - 8001a64: 75bb strb r3, [r7, #22] + 8001bba: 78fb ldrb r3, [r7, #3] + 8001bbc: 75bb strb r3, [r7, #22] } float sum = 0.0f; - 8001a66: f04f 0300 mov.w r3, #0 - 8001a6a: 613b str r3, [r7, #16] + 8001bbe: f04f 0300 mov.w r3, #0 + 8001bc2: 613b str r3, [r7, #16] uint8_t count = 0; - 8001a6c: 2300 movs r3, #0 - 8001a6e: 73fb strb r3, [r7, #15] + 8001bc4: 2300 movs r3, #0 + 8001bc6: 73fb strb r3, [r7, #15] for (uint8_t i = start; i < end; i++) - 8001a70: 7dfb ldrb r3, [r7, #23] - 8001a72: 73bb strb r3, [r7, #14] - 8001a74: e010 b.n 8001a98 + 8001bc8: 7dfb ldrb r3, [r7, #23] + 8001bca: 73bb strb r3, [r7, #14] + 8001bcc: e010 b.n 8001bf0 { sum += buffer[i]; - 8001a76: 7bbb ldrb r3, [r7, #14] - 8001a78: 009b lsls r3, r3, #2 - 8001a7a: 687a ldr r2, [r7, #4] - 8001a7c: 4413 add r3, r2 - 8001a7e: 681b ldr r3, [r3, #0] - 8001a80: 4619 mov r1, r3 - 8001a82: 6938 ldr r0, [r7, #16] - 8001a84: f7fe ff06 bl 8000894 <__addsf3> - 8001a88: 4603 mov r3, r0 - 8001a8a: 613b str r3, [r7, #16] + 8001bce: 7bbb ldrb r3, [r7, #14] + 8001bd0: 009b lsls r3, r3, #2 + 8001bd2: 687a ldr r2, [r7, #4] + 8001bd4: 4413 add r3, r2 + 8001bd6: 681b ldr r3, [r3, #0] + 8001bd8: 4619 mov r1, r3 + 8001bda: 6938 ldr r0, [r7, #16] + 8001bdc: f7fe fe5a bl 8000894 <__addsf3> + 8001be0: 4603 mov r3, r0 + 8001be2: 613b str r3, [r7, #16] count++; - 8001a8c: 7bfb ldrb r3, [r7, #15] - 8001a8e: 3301 adds r3, #1 - 8001a90: 73fb strb r3, [r7, #15] + 8001be4: 7bfb ldrb r3, [r7, #15] + 8001be6: 3301 adds r3, #1 + 8001be8: 73fb strb r3, [r7, #15] for (uint8_t i = start; i < end; i++) - 8001a92: 7bbb ldrb r3, [r7, #14] - 8001a94: 3301 adds r3, #1 - 8001a96: 73bb strb r3, [r7, #14] - 8001a98: 7bba ldrb r2, [r7, #14] - 8001a9a: 7dbb ldrb r3, [r7, #22] - 8001a9c: 429a cmp r2, r3 - 8001a9e: d3ea bcc.n 8001a76 + 8001bea: 7bbb ldrb r3, [r7, #14] + 8001bec: 3301 adds r3, #1 + 8001bee: 73bb strb r3, [r7, #14] + 8001bf0: 7bba ldrb r2, [r7, #14] + 8001bf2: 7dbb ldrb r3, [r7, #22] + 8001bf4: 429a cmp r2, r3 + 8001bf6: d3ea bcc.n 8001bce } return sum / (float)count; - 8001aa0: 7bfb ldrb r3, [r7, #15] - 8001aa2: 4618 mov r0, r3 - 8001aa4: f7fe ffa6 bl 80009f4 <__aeabi_ui2f> - 8001aa8: 4603 mov r3, r0 - 8001aaa: 4619 mov r1, r3 - 8001aac: 6938 ldr r0, [r7, #16] - 8001aae: f7ff f8ad bl 8000c0c <__aeabi_fdiv> - 8001ab2: 4603 mov r3, r0 + 8001bf8: 7bfb ldrb r3, [r7, #15] + 8001bfa: 4618 mov r0, r3 + 8001bfc: f7fe fefa bl 80009f4 <__aeabi_ui2f> + 8001c00: 4603 mov r3, r0 + 8001c02: 4619 mov r1, r3 + 8001c04: 6938 ldr r0, [r7, #16] + 8001c06: f7ff f801 bl 8000c0c <__aeabi_fdiv> + 8001c0a: 4603 mov r3, r0 } - 8001ab4: 4618 mov r0, r3 - 8001ab6: 3718 adds r7, #24 - 8001ab8: 46bd mov sp, r7 - 8001aba: bd80 pop {r7, pc} + 8001c0c: 4618 mov r0, r3 + 8001c0e: 3718 adds r7, #24 + 8001c10: 46bd mov sp, r7 + 8001c12: bd80 pop {r7, pc} -08001abc : +08001c14 : /* * Simple average of the history buffer (stage-2 sliding window) */ float ADS1015_History_Average(const float *hist, uint8_t n) { - 8001abc: b580 push {r7, lr} - 8001abe: b084 sub sp, #16 - 8001ac0: af00 add r7, sp, #0 - 8001ac2: 6078 str r0, [r7, #4] - 8001ac4: 460b mov r3, r1 - 8001ac6: 70fb strb r3, [r7, #3] + 8001c14: b580 push {r7, lr} + 8001c16: b084 sub sp, #16 + 8001c18: af00 add r7, sp, #0 + 8001c1a: 6078 str r0, [r7, #4] + 8001c1c: 460b mov r3, r1 + 8001c1e: 70fb strb r3, [r7, #3] float sum = 0.0f; - 8001ac8: f04f 0300 mov.w r3, #0 - 8001acc: 60fb str r3, [r7, #12] + 8001c20: f04f 0300 mov.w r3, #0 + 8001c24: 60fb str r3, [r7, #12] for (uint8_t i = 0; i < n; i++) - 8001ace: 2300 movs r3, #0 - 8001ad0: 72fb strb r3, [r7, #11] - 8001ad2: e00d b.n 8001af0 + 8001c26: 2300 movs r3, #0 + 8001c28: 72fb strb r3, [r7, #11] + 8001c2a: e00d b.n 8001c48 sum += hist[i]; - 8001ad4: 7afb ldrb r3, [r7, #11] - 8001ad6: 009b lsls r3, r3, #2 - 8001ad8: 687a ldr r2, [r7, #4] - 8001ada: 4413 add r3, r2 - 8001adc: 681b ldr r3, [r3, #0] - 8001ade: 4619 mov r1, r3 - 8001ae0: 68f8 ldr r0, [r7, #12] - 8001ae2: f7fe fed7 bl 8000894 <__addsf3> - 8001ae6: 4603 mov r3, r0 - 8001ae8: 60fb str r3, [r7, #12] + 8001c2c: 7afb ldrb r3, [r7, #11] + 8001c2e: 009b lsls r3, r3, #2 + 8001c30: 687a ldr r2, [r7, #4] + 8001c32: 4413 add r3, r2 + 8001c34: 681b ldr r3, [r3, #0] + 8001c36: 4619 mov r1, r3 + 8001c38: 68f8 ldr r0, [r7, #12] + 8001c3a: f7fe fe2b bl 8000894 <__addsf3> + 8001c3e: 4603 mov r3, r0 + 8001c40: 60fb str r3, [r7, #12] for (uint8_t i = 0; i < n; i++) - 8001aea: 7afb ldrb r3, [r7, #11] - 8001aec: 3301 adds r3, #1 - 8001aee: 72fb strb r3, [r7, #11] - 8001af0: 7afa ldrb r2, [r7, #11] - 8001af2: 78fb ldrb r3, [r7, #3] - 8001af4: 429a cmp r2, r3 - 8001af6: d3ed bcc.n 8001ad4 + 8001c42: 7afb ldrb r3, [r7, #11] + 8001c44: 3301 adds r3, #1 + 8001c46: 72fb strb r3, [r7, #11] + 8001c48: 7afa ldrb r2, [r7, #11] + 8001c4a: 78fb ldrb r3, [r7, #3] + 8001c4c: 429a cmp r2, r3 + 8001c4e: d3ed bcc.n 8001c2c return sum / (float)n; - 8001af8: 78fb ldrb r3, [r7, #3] - 8001afa: 4618 mov r0, r3 - 8001afc: f7fe ff7a bl 80009f4 <__aeabi_ui2f> - 8001b00: 4603 mov r3, r0 - 8001b02: 4619 mov r1, r3 - 8001b04: 68f8 ldr r0, [r7, #12] - 8001b06: f7ff f881 bl 8000c0c <__aeabi_fdiv> - 8001b0a: 4603 mov r3, r0 + 8001c50: 78fb ldrb r3, [r7, #3] + 8001c52: 4618 mov r0, r3 + 8001c54: f7fe fece bl 80009f4 <__aeabi_ui2f> + 8001c58: 4603 mov r3, r0 + 8001c5a: 4619 mov r1, r3 + 8001c5c: 68f8 ldr r0, [r7, #12] + 8001c5e: f7fe ffd5 bl 8000c0c <__aeabi_fdiv> + 8001c62: 4603 mov r3, r0 } - 8001b0c: 4618 mov r0, r3 - 8001b0e: 3710 adds r7, #16 - 8001b10: 46bd mov sp, r7 - 8001b12: bd80 pop {r7, pc} + 8001c64: 4618 mov r0, r3 + 8001c66: 3710 adds r7, #16 + 8001c68: 46bd mov sp, r7 + 8001c6a: bd80 pop {r7, pc} -08001b14 : +08001c6c : * Common processing core: applied identically to all 3 channels. * Receives the current raw reading and the channel's state (global * arrays/struct). **/ void ADS1015_Process_Sample(ADS1015_filter_t *ch, float raw) { - 8001b14: b590 push {r4, r7, lr} - 8001b16: b085 sub sp, #20 - 8001b18: af00 add r7, sp, #0 - 8001b1a: 6078 str r0, [r7, #4] - 8001b1c: 6039 str r1, [r7, #0] + 8001c6c: b590 push {r4, r7, lr} + 8001c6e: b085 sub sp, #20 + 8001c70: af00 add r7, sp, #0 + 8001c72: 6078 str r0, [r7, #4] + 8001c74: 6039 str r1, [r7, #0] /* --- Stage 1: accumulate into the current burst --- */ ch->burst[ch->burst_index] = raw; - 8001b1e: 687b ldr r3, [r7, #4] - 8001b20: 7d1b ldrb r3, [r3, #20] - 8001b22: 4619 mov r1, r3 - 8001b24: 687b ldr r3, [r7, #4] - 8001b26: 683a ldr r2, [r7, #0] - 8001b28: f843 2021 str.w r2, [r3, r1, lsl #2] + 8001c76: 687b ldr r3, [r7, #4] + 8001c78: 7d1b ldrb r3, [r3, #20] + 8001c7a: 4619 mov r1, r3 + 8001c7c: 687b ldr r3, [r7, #4] + 8001c7e: 683a ldr r2, [r7, #0] + 8001c80: f843 2021 str.w r2, [r3, r1, lsl #2] ch->burst_index++; - 8001b2c: 687b ldr r3, [r7, #4] - 8001b2e: 7d1b ldrb r3, [r3, #20] - 8001b30: 3301 adds r3, #1 - 8001b32: b2da uxtb r2, r3 - 8001b34: 687b ldr r3, [r7, #4] - 8001b36: 751a strb r2, [r3, #20] + 8001c84: 687b ldr r3, [r7, #4] + 8001c86: 7d1b ldrb r3, [r3, #20] + 8001c88: 3301 adds r3, #1 + 8001c8a: b2da uxtb r2, r3 + 8001c8c: 687b ldr r3, [r7, #4] + 8001c8e: 751a strb r2, [r3, #20] if (ch->burst_index < ADS1015_BURST_SIZE) - 8001b38: 687b ldr r3, [r7, #4] - 8001b3a: 7d1b ldrb r3, [r3, #20] - 8001b3c: 2b04 cmp r3, #4 - 8001b3e: d977 bls.n 8001c30 + 8001c90: 687b ldr r3, [r7, #4] + 8001c92: 7d1b ldrb r3, [r3, #20] + 8001c94: 2b04 cmp r3, #4 + 8001c96: d97a bls.n 8001d8e return; /* still collecting the burst, nothing else to do */ /* Burst complete: compute the trimmed mean */ float burst_result = ADS1015_Trimmed_Mean(ch->burst, ADS1015_BURST_SIZE, ADS1015_TRIM_COUNT); - 8001b40: 687b ldr r3, [r7, #4] - 8001b42: 2201 movs r2, #1 - 8001b44: 2105 movs r1, #5 - 8001b46: 4618 mov r0, r3 - 8001b48: f7ff ff72 bl 8001a30 - 8001b4c: 60f8 str r0, [r7, #12] + 8001c98: 687b ldr r3, [r7, #4] + 8001c9a: 2201 movs r2, #1 + 8001c9c: 2105 movs r1, #5 + 8001c9e: 4618 mov r0, r3 + 8001ca0: f7ff ff72 bl 8001b88 + 8001ca4: 60f8 str r0, [r7, #12] ch->burst_index = 0; /* reset for the next burst */ - 8001b4e: 687b ldr r3, [r7, #4] - 8001b50: 2200 movs r2, #0 - 8001b52: 751a strb r2, [r3, #20] + 8001ca6: 687b ldr r3, [r7, #4] + 8001ca8: 2200 movs r2, #0 + 8001caa: 751a strb r2, [r3, #20] /* --- Stage 2a: rolling history / sliding window --- */ ch->history[ch->history_index] = burst_result; - 8001b54: 687b ldr r3, [r7, #4] - 8001b56: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 - 8001b5a: 461a mov r2, r3 - 8001b5c: 687b ldr r3, [r7, #4] - 8001b5e: 3206 adds r2, #6 - 8001b60: 68f9 ldr r1, [r7, #12] - 8001b62: f843 1022 str.w r1, [r3, r2, lsl #2] + 8001cac: 687b ldr r3, [r7, #4] + 8001cae: f893 3030 ldrb.w r3, [r3, #48] @ 0x30 + 8001cb2: 461a mov r2, r3 + 8001cb4: 687b ldr r3, [r7, #4] + 8001cb6: 3206 adds r2, #6 + 8001cb8: 68f9 ldr r1, [r7, #12] + 8001cba: f843 1022 str.w r1, [r3, r2, lsl #2] ch->history_index = (uint8_t)((ch->history_index + 1) % ADS1015_HISTORY_SIZE); - 8001b66: 687b ldr r3, [r7, #4] - 8001b68: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 - 8001b6c: 3301 adds r3, #1 - 8001b6e: 425a negs r2, r3 - 8001b70: f003 0307 and.w r3, r3, #7 - 8001b74: f002 0207 and.w r2, r2, #7 - 8001b78: bf58 it pl - 8001b7a: 4253 negpl r3, r2 - 8001b7c: b2da uxtb r2, r3 - 8001b7e: 687b ldr r3, [r7, #4] - 8001b80: f883 2038 strb.w r2, [r3, #56] @ 0x38 + 8001cbe: 687b ldr r3, [r7, #4] + 8001cc0: f893 3030 ldrb.w r3, [r3, #48] @ 0x30 + 8001cc4: 1c5a adds r2, r3, #1 + 8001cc6: 4b34 ldr r3, [pc, #208] @ (8001d98 ) + 8001cc8: fb83 3102 smull r3, r1, r3, r2 + 8001ccc: 17d3 asrs r3, r2, #31 + 8001cce: 1ac9 subs r1, r1, r3 + 8001cd0: 460b mov r3, r1 + 8001cd2: 005b lsls r3, r3, #1 + 8001cd4: 440b add r3, r1 + 8001cd6: 005b lsls r3, r3, #1 + 8001cd8: 1ad1 subs r1, r2, r3 + 8001cda: b2ca uxtb r2, r1 + 8001cdc: 687b ldr r3, [r7, #4] + 8001cde: f883 2030 strb.w r2, [r3, #48] @ 0x30 if (ch->history_count < ADS1015_HISTORY_SIZE) - 8001b84: 687b ldr r3, [r7, #4] - 8001b86: f893 3039 ldrb.w r3, [r3, #57] @ 0x39 - 8001b8a: 2b07 cmp r3, #7 - 8001b8c: d807 bhi.n 8001b9e + 8001ce2: 687b ldr r3, [r7, #4] + 8001ce4: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 + 8001ce8: 2b05 cmp r3, #5 + 8001cea: d807 bhi.n 8001cfc ch->history_count++; - 8001b8e: 687b ldr r3, [r7, #4] - 8001b90: f893 3039 ldrb.w r3, [r3, #57] @ 0x39 - 8001b94: 3301 adds r3, #1 - 8001b96: b2da uxtb r2, r3 - 8001b98: 687b ldr r3, [r7, #4] - 8001b9a: f883 2039 strb.w r2, [r3, #57] @ 0x39 + 8001cec: 687b ldr r3, [r7, #4] + 8001cee: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 + 8001cf2: 3301 adds r3, #1 + 8001cf4: b2da uxtb r2, r3 + 8001cf6: 687b ldr r3, [r7, #4] + 8001cf8: f883 2031 strb.w r2, [r3, #49] @ 0x31 float window_average = ADS1015_History_Average(ch->history, ch->history_count); - 8001b9e: 687b ldr r3, [r7, #4] - 8001ba0: f103 0218 add.w r2, r3, #24 - 8001ba4: 687b ldr r3, [r7, #4] - 8001ba6: f893 3039 ldrb.w r3, [r3, #57] @ 0x39 - 8001baa: 4619 mov r1, r3 - 8001bac: 4610 mov r0, r2 - 8001bae: f7ff ff85 bl 8001abc - 8001bb2: 60b8 str r0, [r7, #8] + 8001cfc: 687b ldr r3, [r7, #4] + 8001cfe: f103 0218 add.w r2, r3, #24 + 8001d02: 687b ldr r3, [r7, #4] + 8001d04: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 + 8001d08: 4619 mov r1, r3 + 8001d0a: 4610 mov r0, r2 + 8001d0c: f7ff ff82 bl 8001c14 + 8001d10: 60b8 str r0, [r7, #8] /* --- Stage 2b: first-order IIR low-pass filter on the burst result --- */ if (!ch->iir_initialized) - 8001bb4: 687b ldr r3, [r7, #4] - 8001bb6: f893 3040 ldrb.w r3, [r3, #64] @ 0x40 - 8001bba: 2b00 cmp r3, #0 - 8001bbc: d107 bne.n 8001bce + 8001d12: 687b ldr r3, [r7, #4] + 8001d14: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 + 8001d18: 2b00 cmp r3, #0 + 8001d1a: d107 bne.n 8001d2c { ch->iir_state = burst_result; - 8001bbe: 687b ldr r3, [r7, #4] - 8001bc0: 68fa ldr r2, [r7, #12] - 8001bc2: 63da str r2, [r3, #60] @ 0x3c + 8001d1c: 687b ldr r3, [r7, #4] + 8001d1e: 68fa ldr r2, [r7, #12] + 8001d20: 635a str r2, [r3, #52] @ 0x34 ch->iir_initialized = 1; - 8001bc4: 687b ldr r3, [r7, #4] - 8001bc6: 2201 movs r2, #1 - 8001bc8: f883 2040 strb.w r2, [r3, #64] @ 0x40 - 8001bcc: e014 b.n 8001bf8 + 8001d22: 687b ldr r3, [r7, #4] + 8001d24: 2201 movs r2, #1 + 8001d26: f883 2038 strb.w r2, [r3, #56] @ 0x38 + 8001d2a: e014 b.n 8001d56 } else { ch->iir_state = ADS1015_IIR_ALPHA * burst_result + (1.0f - ADS1015_IIR_ALPHA) * ch->iir_state; - 8001bce: 491a ldr r1, [pc, #104] @ (8001c38 ) - 8001bd0: 68f8 ldr r0, [r7, #12] - 8001bd2: f7fe ff67 bl 8000aa4 <__aeabi_fmul> - 8001bd6: 4603 mov r3, r0 - 8001bd8: 461c mov r4, r3 - 8001bda: 687b ldr r3, [r7, #4] - 8001bdc: 6bdb ldr r3, [r3, #60] @ 0x3c - 8001bde: 4917 ldr r1, [pc, #92] @ (8001c3c ) - 8001be0: 4618 mov r0, r3 - 8001be2: f7fe ff5f bl 8000aa4 <__aeabi_fmul> - 8001be6: 4603 mov r3, r0 - 8001be8: 4619 mov r1, r3 - 8001bea: 4620 mov r0, r4 - 8001bec: f7fe fe52 bl 8000894 <__addsf3> - 8001bf0: 4603 mov r3, r0 - 8001bf2: 461a mov r2, r3 - 8001bf4: 687b ldr r3, [r7, #4] - 8001bf6: 63da str r2, [r3, #60] @ 0x3c + 8001d2c: 491b ldr r1, [pc, #108] @ (8001d9c ) + 8001d2e: 68f8 ldr r0, [r7, #12] + 8001d30: f7fe feb8 bl 8000aa4 <__aeabi_fmul> + 8001d34: 4603 mov r3, r0 + 8001d36: 461c mov r4, r3 + 8001d38: 687b ldr r3, [r7, #4] + 8001d3a: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001d3c: 4918 ldr r1, [pc, #96] @ (8001da0 ) + 8001d3e: 4618 mov r0, r3 + 8001d40: f7fe feb0 bl 8000aa4 <__aeabi_fmul> + 8001d44: 4603 mov r3, r0 + 8001d46: 4619 mov r1, r3 + 8001d48: 4620 mov r0, r4 + 8001d4a: f7fe fda3 bl 8000894 <__addsf3> + 8001d4e: 4603 mov r3, r0 + 8001d50: 461a mov r2, r3 + 8001d52: 687b ldr r3, [r7, #4] + 8001d54: 635a str r2, [r3, #52] @ 0x34 } /* Final output: combines the IIR state (fast response to real drift) * with the window average (more stable, slower response). Adjust * the weighting per channel if needed. */ ch->filtered_value = 0.5f * ch->iir_state + 0.5f * window_average; - 8001bf8: 687b ldr r3, [r7, #4] - 8001bfa: 6bdb ldr r3, [r3, #60] @ 0x3c - 8001bfc: f04f 517c mov.w r1, #1056964608 @ 0x3f000000 - 8001c00: 4618 mov r0, r3 - 8001c02: f7fe ff4f bl 8000aa4 <__aeabi_fmul> - 8001c06: 4603 mov r3, r0 - 8001c08: 461c mov r4, r3 - 8001c0a: f04f 517c mov.w r1, #1056964608 @ 0x3f000000 - 8001c0e: 68b8 ldr r0, [r7, #8] - 8001c10: f7fe ff48 bl 8000aa4 <__aeabi_fmul> - 8001c14: 4603 mov r3, r0 - 8001c16: 4619 mov r1, r3 - 8001c18: 4620 mov r0, r4 - 8001c1a: f7fe fe3b bl 8000894 <__addsf3> - 8001c1e: 4603 mov r3, r0 - 8001c20: 461a mov r2, r3 - 8001c22: 687b ldr r3, [r7, #4] - 8001c24: 645a str r2, [r3, #68] @ 0x44 + 8001d56: 687b ldr r3, [r7, #4] + 8001d58: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001d5a: f04f 517c mov.w r1, #1056964608 @ 0x3f000000 + 8001d5e: 4618 mov r0, r3 + 8001d60: f7fe fea0 bl 8000aa4 <__aeabi_fmul> + 8001d64: 4603 mov r3, r0 + 8001d66: 461c mov r4, r3 + 8001d68: f04f 517c mov.w r1, #1056964608 @ 0x3f000000 + 8001d6c: 68b8 ldr r0, [r7, #8] + 8001d6e: f7fe fe99 bl 8000aa4 <__aeabi_fmul> + 8001d72: 4603 mov r3, r0 + 8001d74: 4619 mov r1, r3 + 8001d76: 4620 mov r0, r4 + 8001d78: f7fe fd8c bl 8000894 <__addsf3> + 8001d7c: 4603 mov r3, r0 + 8001d7e: 461a mov r2, r3 + 8001d80: 687b ldr r3, [r7, #4] + 8001d82: 63da str r2, [r3, #60] @ 0x3c ch->value_valid = 1; - 8001c26: 687b ldr r3, [r7, #4] - 8001c28: 2201 movs r2, #1 - 8001c2a: f883 2048 strb.w r2, [r3, #72] @ 0x48 - 8001c2e: e000 b.n 8001c32 + 8001d84: 687b ldr r3, [r7, #4] + 8001d86: 2201 movs r2, #1 + 8001d88: f883 2040 strb.w r2, [r3, #64] @ 0x40 + 8001d8c: e000 b.n 8001d90 return; /* still collecting the burst, nothing else to do */ - 8001c30: bf00 nop + 8001d8e: bf00 nop } - 8001c32: 3714 adds r7, #20 - 8001c34: 46bd mov sp, r7 - 8001c36: bd90 pop {r4, r7, pc} - 8001c38: 3e99999a .word 0x3e99999a - 8001c3c: 3f333333 .word 0x3f333333 + 8001d90: 3714 adds r7, #20 + 8001d92: 46bd mov sp, r7 + 8001d94: bd90 pop {r4, r7, pc} + 8001d96: bf00 nop + 8001d98: 2aaaaaab .word 0x2aaaaaab + 8001d9c: 3ecccccd .word 0x3ecccccd + 8001da0: 3f19999a .word 0x3f19999a -08001c40 : +08001da4 : /* PUBLIC FUNCTIONS - ONE PER CHANNEL */ /* ---------------------------------------------------------------------- */ void ADS1015_pH_NewSample(float raw) { - 8001c40: b580 push {r7, lr} - 8001c42: b082 sub sp, #8 - 8001c44: af00 add r7, sp, #0 - 8001c46: 6078 str r0, [r7, #4] + 8001da4: b580 push {r7, lr} + 8001da6: b082 sub sp, #8 + 8001da8: af00 add r7, sp, #0 + 8001daa: 6078 str r0, [r7, #4] ADS1015_Process_Sample(&g_ph_filter, raw); - 8001c48: 6879 ldr r1, [r7, #4] - 8001c4a: 4803 ldr r0, [pc, #12] @ (8001c58 ) - 8001c4c: f7ff ff62 bl 8001b14 + 8001dac: 6879 ldr r1, [r7, #4] + 8001dae: 4803 ldr r0, [pc, #12] @ (8001dbc ) + 8001db0: f7ff ff5c bl 8001c6c } - 8001c50: bf00 nop - 8001c52: 3708 adds r7, #8 - 8001c54: 46bd mov sp, r7 - 8001c56: bd80 pop {r7, pc} - 8001c58: 2000022c .word 0x2000022c + 8001db4: bf00 nop + 8001db6: 3708 adds r7, #8 + 8001db8: 46bd mov sp, r7 + 8001dba: bd80 pop {r7, pc} + 8001dbc: 200001cc .word 0x200001cc -08001c5c : +08001dc0 : * @brief Initializes the GPIO hardware and sets initial states. * @note This function replaces the handle-based init. * @retval None */ void digital_outputs_init(void) { - 8001c5c: b580 push {r7, lr} - 8001c5e: b086 sub sp, #24 - 8001c60: af00 add r7, sp, #0 + 8001dc0: b580 push {r7, lr} + 8001dc2: b086 sub sp, #24 + 8001dc4: af00 add r7, sp, #0 GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8001c62: 1d3b adds r3, r7, #4 - 8001c64: 2200 movs r2, #0 - 8001c66: 601a str r2, [r3, #0] - 8001c68: 605a str r2, [r3, #4] - 8001c6a: 609a str r2, [r3, #8] - 8001c6c: 60da str r2, [r3, #12] + 8001dc6: 1d3b adds r3, r7, #4 + 8001dc8: 2200 movs r2, #0 + 8001dca: 601a str r2, [r3, #0] + 8001dcc: 605a str r2, [r3, #4] + 8001dce: 609a str r2, [r3, #8] + 8001dd0: 60da str r2, [r3, #12] for (int i = 0; i < OUTPUT_PINS_COUNT; i++) { - 8001c6e: 2300 movs r3, #0 - 8001c70: 617b str r3, [r7, #20] - 8001c72: e029 b.n 8001cc8 + 8001dd2: 2300 movs r3, #0 + 8001dd4: 617b str r3, [r7, #20] + 8001dd6: e029 b.n 8001e2c GPIO_InitStruct.Pin = output_pins[i].pin; - 8001c74: 4a18 ldr r2, [pc, #96] @ (8001cd8 ) - 8001c76: 697b ldr r3, [r7, #20] - 8001c78: 00db lsls r3, r3, #3 - 8001c7a: 4413 add r3, r2 - 8001c7c: 889b ldrh r3, [r3, #4] - 8001c7e: 607b str r3, [r7, #4] + 8001dd8: 4a18 ldr r2, [pc, #96] @ (8001e3c ) + 8001dda: 697b ldr r3, [r7, #20] + 8001ddc: 00db lsls r3, r3, #3 + 8001dde: 4413 add r3, r2 + 8001de0: 889b ldrh r3, [r3, #4] + 8001de2: 607b str r3, [r7, #4] GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD; // Open-drain - 8001c80: 2311 movs r3, #17 - 8001c82: 60bb str r3, [r7, #8] + 8001de4: 2311 movs r3, #17 + 8001de6: 60bb str r3, [r7, #8] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001c84: 2300 movs r3, #0 - 8001c86: 60fb str r3, [r7, #12] + 8001de8: 2300 movs r3, #0 + 8001dea: 60fb str r3, [r7, #12] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8001c88: 2302 movs r3, #2 - 8001c8a: 613b str r3, [r7, #16] + 8001dec: 2302 movs r3, #2 + 8001dee: 613b str r3, [r7, #16] HAL_GPIO_Init(output_pins[i].port, &GPIO_InitStruct); - 8001c8c: 4a12 ldr r2, [pc, #72] @ (8001cd8 ) - 8001c8e: 697b ldr r3, [r7, #20] - 8001c90: f852 3033 ldr.w r3, [r2, r3, lsl #3] - 8001c94: 1d3a adds r2, r7, #4 - 8001c96: 4611 mov r1, r2 - 8001c98: 4618 mov r0, r3 - 8001c9a: f001 fb65 bl 8003368 + 8001df0: 4a12 ldr r2, [pc, #72] @ (8001e3c ) + 8001df2: 697b ldr r3, [r7, #20] + 8001df4: f852 3033 ldr.w r3, [r2, r3, lsl #3] + 8001df8: 1d3a adds r2, r7, #4 + 8001dfa: 4611 mov r1, r2 + 8001dfc: 4618 mov r0, r3 + 8001dfe: f001 fc03 bl 8003608 // Force initial state to LOW (Reset) HAL_GPIO_WritePin(output_pins[i].port, output_pins[i].pin, GPIO_PIN_RESET); - 8001c9e: 4a0e ldr r2, [pc, #56] @ (8001cd8 ) - 8001ca0: 697b ldr r3, [r7, #20] - 8001ca2: f852 0033 ldr.w r0, [r2, r3, lsl #3] - 8001ca6: 4a0c ldr r2, [pc, #48] @ (8001cd8 ) - 8001ca8: 697b ldr r3, [r7, #20] - 8001caa: 00db lsls r3, r3, #3 - 8001cac: 4413 add r3, r2 - 8001cae: 889b ldrh r3, [r3, #4] - 8001cb0: 2200 movs r2, #0 - 8001cb2: 4619 mov r1, r3 - 8001cb4: f001 fcf3 bl 800369e + 8001e02: 4a0e ldr r2, [pc, #56] @ (8001e3c ) + 8001e04: 697b ldr r3, [r7, #20] + 8001e06: f852 0033 ldr.w r0, [r2, r3, lsl #3] + 8001e0a: 4a0c ldr r2, [pc, #48] @ (8001e3c ) + 8001e0c: 697b ldr r3, [r7, #20] + 8001e0e: 00db lsls r3, r3, #3 + 8001e10: 4413 add r3, r2 + 8001e12: 889b ldrh r3, [r3, #4] + 8001e14: 2200 movs r2, #0 + 8001e16: 4619 mov r1, r3 + 8001e18: f001 fd91 bl 800393e pin_states[i] = 0; - 8001cb8: 4a08 ldr r2, [pc, #32] @ (8001cdc ) - 8001cba: 697b ldr r3, [r7, #20] - 8001cbc: 4413 add r3, r2 - 8001cbe: 2200 movs r2, #0 - 8001cc0: 701a strb r2, [r3, #0] + 8001e1c: 4a08 ldr r2, [pc, #32] @ (8001e40 ) + 8001e1e: 697b ldr r3, [r7, #20] + 8001e20: 4413 add r3, r2 + 8001e22: 2200 movs r2, #0 + 8001e24: 701a strb r2, [r3, #0] for (int i = 0; i < OUTPUT_PINS_COUNT; i++) { - 8001cc2: 697b ldr r3, [r7, #20] - 8001cc4: 3301 adds r3, #1 - 8001cc6: 617b str r3, [r7, #20] - 8001cc8: 697b ldr r3, [r7, #20] - 8001cca: 2b07 cmp r3, #7 - 8001ccc: ddd2 ble.n 8001c74 + 8001e26: 697b ldr r3, [r7, #20] + 8001e28: 3301 adds r3, #1 + 8001e2a: 617b str r3, [r7, #20] + 8001e2c: 697b ldr r3, [r7, #20] + 8001e2e: 2b07 cmp r3, #7 + 8001e30: ddd2 ble.n 8001dd8 } } - 8001cce: bf00 nop - 8001cd0: bf00 nop - 8001cd2: 3718 adds r7, #24 - 8001cd4: 46bd mov sp, r7 - 8001cd6: bd80 pop {r7, pc} - 8001cd8: 080066d0 .word 0x080066d0 - 8001cdc: 20000284 .word 0x20000284 + 8001e32: bf00 nop + 8001e34: bf00 nop + 8001e36: 3718 adds r7, #24 + 8001e38: 46bd mov sp, r7 + 8001e3a: bd80 pop {r7, pc} + 8001e3c: 08006a28 .word 0x08006a28 + 8001e40: 2000021c .word 0x2000021c -08001ce0 : +08001e44 : } /** * @brief Lê a página da Flash para a RAM. */ HAL_StatusTypeDef Flash_Load_Page(FlashPage_t *pDest) { - 8001ce0: b580 push {r7, lr} - 8001ce2: b082 sub sp, #8 - 8001ce4: af00 add r7, sp, #0 - 8001ce6: 6078 str r0, [r7, #4] + 8001e44: b580 push {r7, lr} + 8001e46: b082 sub sp, #8 + 8001e48: af00 add r7, sp, #0 + 8001e4a: 6078 str r0, [r7, #4] if (pDest == NULL) return HAL_ERROR; - 8001ce8: 687b ldr r3, [r7, #4] - 8001cea: 2b00 cmp r3, #0 - 8001cec: d101 bne.n 8001cf2 - 8001cee: 2301 movs r3, #1 - 8001cf0: e00d b.n 8001d0e + 8001e4c: 687b ldr r3, [r7, #4] + 8001e4e: 2b00 cmp r3, #0 + 8001e50: d101 bne.n 8001e56 + 8001e52: 2301 movs r3, #1 + 8001e54: e00d b.n 8001e72 // Leitura direta por memcpy (A Flash é mapeada no espaço de endereçamento comum) memcpy(pDest, (void *)FLASH_PAGE_ADDR, FLASH_PAGE_SIZE); - 8001cf2: f44f 6280 mov.w r2, #1024 @ 0x400 - 8001cf6: 4908 ldr r1, [pc, #32] @ (8001d18 ) - 8001cf8: 6878 ldr r0, [r7, #4] - 8001cfa: f004 fc37 bl 800656c + 8001e56: f44f 6280 mov.w r2, #1024 @ 0x400 + 8001e5a: 4908 ldr r1, [pc, #32] @ (8001e7c ) + 8001e5c: 6878 ldr r0, [r7, #4] + 8001e5e: f004 fcd5 bl 800680c // Validação da integridade através do Magic Number if (pDest->magic_number != 0xDEADBEEF) { - 8001cfe: 687b ldr r3, [r7, #4] - 8001d00: 681b ldr r3, [r3, #0] - 8001d02: 4a06 ldr r2, [pc, #24] @ (8001d1c ) - 8001d04: 4293 cmp r3, r2 - 8001d06: d001 beq.n 8001d0c + 8001e62: 687b ldr r3, [r7, #4] + 8001e64: 681b ldr r3, [r3, #0] + 8001e66: 4a06 ldr r2, [pc, #24] @ (8001e80 ) + 8001e68: 4293 cmp r3, r2 + 8001e6a: d001 beq.n 8001e70 return HAL_ERROR; - 8001d08: 2301 movs r3, #1 - 8001d0a: e000 b.n 8001d0e + 8001e6c: 2301 movs r3, #1 + 8001e6e: e000 b.n 8001e72 } return HAL_OK; - 8001d0c: 2300 movs r3, #0 + 8001e70: 2300 movs r3, #0 } - 8001d0e: 4618 mov r0, r3 - 8001d10: 3708 adds r7, #8 - 8001d12: 46bd mov sp, r7 - 8001d14: bd80 pop {r7, pc} - 8001d16: bf00 nop - 8001d18: 0800fc00 .word 0x0800fc00 - 8001d1c: deadbeef .word 0xdeadbeef + 8001e72: 4618 mov r0, r3 + 8001e74: 3708 adds r7, #8 + 8001e76: 46bd mov sp, r7 + 8001e78: bd80 pop {r7, pc} + 8001e7a: bf00 nop + 8001e7c: 0800fc00 .word 0x0800fc00 + 8001e80: deadbeef .word 0xdeadbeef -08001d20 : +08001e84 : * EXTI * Free pins are configured automatically as Analog (this feature is enabled through * the Code Generation settings) */ void MX_GPIO_Init(void) { - 8001d20: b580 push {r7, lr} - 8001d22: b088 sub sp, #32 - 8001d24: af00 add r7, sp, #0 + 8001e84: b580 push {r7, lr} + 8001e86: b088 sub sp, #32 + 8001e88: af00 add r7, sp, #0 GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8001d26: f107 0310 add.w r3, r7, #16 - 8001d2a: 2200 movs r2, #0 - 8001d2c: 601a str r2, [r3, #0] - 8001d2e: 605a str r2, [r3, #4] - 8001d30: 609a str r2, [r3, #8] - 8001d32: 60da str r2, [r3, #12] + 8001e8a: f107 0310 add.w r3, r7, #16 + 8001e8e: 2200 movs r2, #0 + 8001e90: 601a str r2, [r3, #0] + 8001e92: 605a str r2, [r3, #4] + 8001e94: 609a str r2, [r3, #8] + 8001e96: 60da str r2, [r3, #12] /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOC_CLK_ENABLE(); - 8001d34: 4b46 ldr r3, [pc, #280] @ (8001e50 ) - 8001d36: 699b ldr r3, [r3, #24] - 8001d38: 4a45 ldr r2, [pc, #276] @ (8001e50 ) - 8001d3a: f043 0310 orr.w r3, r3, #16 - 8001d3e: 6193 str r3, [r2, #24] - 8001d40: 4b43 ldr r3, [pc, #268] @ (8001e50 ) - 8001d42: 699b ldr r3, [r3, #24] - 8001d44: f003 0310 and.w r3, r3, #16 - 8001d48: 60fb str r3, [r7, #12] - 8001d4a: 68fb ldr r3, [r7, #12] + 8001e98: 4b46 ldr r3, [pc, #280] @ (8001fb4 ) + 8001e9a: 699b ldr r3, [r3, #24] + 8001e9c: 4a45 ldr r2, [pc, #276] @ (8001fb4 ) + 8001e9e: f043 0310 orr.w r3, r3, #16 + 8001ea2: 6193 str r3, [r2, #24] + 8001ea4: 4b43 ldr r3, [pc, #268] @ (8001fb4 ) + 8001ea6: 699b ldr r3, [r3, #24] + 8001ea8: f003 0310 and.w r3, r3, #16 + 8001eac: 60fb str r3, [r7, #12] + 8001eae: 68fb ldr r3, [r7, #12] __HAL_RCC_GPIOD_CLK_ENABLE(); - 8001d4c: 4b40 ldr r3, [pc, #256] @ (8001e50 ) - 8001d4e: 699b ldr r3, [r3, #24] - 8001d50: 4a3f ldr r2, [pc, #252] @ (8001e50 ) - 8001d52: f043 0320 orr.w r3, r3, #32 - 8001d56: 6193 str r3, [r2, #24] - 8001d58: 4b3d ldr r3, [pc, #244] @ (8001e50 ) - 8001d5a: 699b ldr r3, [r3, #24] - 8001d5c: f003 0320 and.w r3, r3, #32 - 8001d60: 60bb str r3, [r7, #8] - 8001d62: 68bb ldr r3, [r7, #8] + 8001eb0: 4b40 ldr r3, [pc, #256] @ (8001fb4 ) + 8001eb2: 699b ldr r3, [r3, #24] + 8001eb4: 4a3f ldr r2, [pc, #252] @ (8001fb4 ) + 8001eb6: f043 0320 orr.w r3, r3, #32 + 8001eba: 6193 str r3, [r2, #24] + 8001ebc: 4b3d ldr r3, [pc, #244] @ (8001fb4 ) + 8001ebe: 699b ldr r3, [r3, #24] + 8001ec0: f003 0320 and.w r3, r3, #32 + 8001ec4: 60bb str r3, [r7, #8] + 8001ec6: 68bb ldr r3, [r7, #8] __HAL_RCC_GPIOA_CLK_ENABLE(); - 8001d64: 4b3a ldr r3, [pc, #232] @ (8001e50 ) - 8001d66: 699b ldr r3, [r3, #24] - 8001d68: 4a39 ldr r2, [pc, #228] @ (8001e50 ) - 8001d6a: f043 0304 orr.w r3, r3, #4 - 8001d6e: 6193 str r3, [r2, #24] - 8001d70: 4b37 ldr r3, [pc, #220] @ (8001e50 ) - 8001d72: 699b ldr r3, [r3, #24] - 8001d74: f003 0304 and.w r3, r3, #4 - 8001d78: 607b str r3, [r7, #4] - 8001d7a: 687b ldr r3, [r7, #4] + 8001ec8: 4b3a ldr r3, [pc, #232] @ (8001fb4 ) + 8001eca: 699b ldr r3, [r3, #24] + 8001ecc: 4a39 ldr r2, [pc, #228] @ (8001fb4 ) + 8001ece: f043 0304 orr.w r3, r3, #4 + 8001ed2: 6193 str r3, [r2, #24] + 8001ed4: 4b37 ldr r3, [pc, #220] @ (8001fb4 ) + 8001ed6: 699b ldr r3, [r3, #24] + 8001ed8: f003 0304 and.w r3, r3, #4 + 8001edc: 607b str r3, [r7, #4] + 8001ede: 687b ldr r3, [r7, #4] __HAL_RCC_GPIOB_CLK_ENABLE(); - 8001d7c: 4b34 ldr r3, [pc, #208] @ (8001e50 ) - 8001d7e: 699b ldr r3, [r3, #24] - 8001d80: 4a33 ldr r2, [pc, #204] @ (8001e50 ) - 8001d82: f043 0308 orr.w r3, r3, #8 - 8001d86: 6193 str r3, [r2, #24] - 8001d88: 4b31 ldr r3, [pc, #196] @ (8001e50 ) - 8001d8a: 699b ldr r3, [r3, #24] - 8001d8c: f003 0308 and.w r3, r3, #8 - 8001d90: 603b str r3, [r7, #0] - 8001d92: 683b ldr r3, [r7, #0] + 8001ee0: 4b34 ldr r3, [pc, #208] @ (8001fb4 ) + 8001ee2: 699b ldr r3, [r3, #24] + 8001ee4: 4a33 ldr r2, [pc, #204] @ (8001fb4 ) + 8001ee6: f043 0308 orr.w r3, r3, #8 + 8001eea: 6193 str r3, [r2, #24] + 8001eec: 4b31 ldr r3, [pc, #196] @ (8001fb4 ) + 8001eee: 699b ldr r3, [r3, #24] + 8001ef0: f003 0308 and.w r3, r3, #8 + 8001ef4: 603b str r3, [r7, #0] + 8001ef6: 683b ldr r3, [r7, #0] /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOC, DIGI_OUT5_Pin|DIGI_OUT6_Pin|DIGI_OUT7_Pin, GPIO_PIN_RESET); - 8001d94: 2200 movs r2, #0 - 8001d96: f44f 4160 mov.w r1, #57344 @ 0xe000 - 8001d9a: 482e ldr r0, [pc, #184] @ (8001e54 ) - 8001d9c: f001 fc7f bl 800369e + 8001ef8: 2200 movs r2, #0 + 8001efa: f44f 4160 mov.w r1, #57344 @ 0xe000 + 8001efe: 482e ldr r0, [pc, #184] @ (8001fb8 ) + 8001f00: f001 fd1d bl 800393e /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOB, DIGI_OUT0_Pin|DIGI_OUT1_Pin|DIGI_OUT2_Pin|LED_Red_Pin - 8001da0: 2200 movs r2, #0 - 8001da2: f240 3137 movw r1, #823 @ 0x337 - 8001da6: 482c ldr r0, [pc, #176] @ (8001e58 ) - 8001da8: f001 fc79 bl 800369e + 8001f04: 2200 movs r2, #0 + 8001f06: f240 3137 movw r1, #823 @ 0x337 + 8001f0a: 482c ldr r0, [pc, #176] @ (8001fbc ) + 8001f0c: f001 fd17 bl 800393e |LED_Green_Pin|DIGI_OUT3_Pin|DIGI_OUT4_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(TX_EN_RS485_GPIO_Port, TX_EN_RS485_Pin, GPIO_PIN_RESET); - 8001dac: 2200 movs r2, #0 - 8001dae: f44f 5180 mov.w r1, #4096 @ 0x1000 - 8001db2: 482a ldr r0, [pc, #168] @ (8001e5c ) - 8001db4: f001 fc73 bl 800369e + 8001f10: 2200 movs r2, #0 + 8001f12: f44f 5180 mov.w r1, #4096 @ 0x1000 + 8001f16: 482a ldr r0, [pc, #168] @ (8001fc0 ) + 8001f18: f001 fd11 bl 800393e /*Configure GPIO pins : DIGI_OUT5_Pin DIGI_OUT6_Pin DIGI_OUT7_Pin */ GPIO_InitStruct.Pin = DIGI_OUT5_Pin|DIGI_OUT6_Pin|DIGI_OUT7_Pin; - 8001db8: f44f 4360 mov.w r3, #57344 @ 0xe000 - 8001dbc: 613b str r3, [r7, #16] + 8001f1c: f44f 4360 mov.w r3, #57344 @ 0xe000 + 8001f20: 613b str r3, [r7, #16] GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD; - 8001dbe: 2311 movs r3, #17 - 8001dc0: 617b str r3, [r7, #20] + 8001f22: 2311 movs r3, #17 + 8001f24: 617b str r3, [r7, #20] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001dc2: 2300 movs r3, #0 - 8001dc4: 61bb str r3, [r7, #24] + 8001f26: 2300 movs r3, #0 + 8001f28: 61bb str r3, [r7, #24] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8001dc6: 2302 movs r3, #2 - 8001dc8: 61fb str r3, [r7, #28] + 8001f2a: 2302 movs r3, #2 + 8001f2c: 61fb str r3, [r7, #28] HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - 8001dca: f107 0310 add.w r3, r7, #16 - 8001dce: 4619 mov r1, r3 - 8001dd0: 4820 ldr r0, [pc, #128] @ (8001e54 ) - 8001dd2: f001 fac9 bl 8003368 + 8001f2e: f107 0310 add.w r3, r7, #16 + 8001f32: 4619 mov r1, r3 + 8001f34: 4820 ldr r0, [pc, #128] @ (8001fb8 ) + 8001f36: f001 fb67 bl 8003608 /*Configure GPIO pins : RS485_Addr0_Pin RS485_Addr1_Pin RS485_Addr2_Pin RS485_Addr3_Pin SYS_CFG0_Pin SYS_CFG1_Pin PG_RS485_Pin PG_CE_Pin PG_PH_Pin */ GPIO_InitStruct.Pin = RS485_Addr0_Pin|RS485_Addr1_Pin|RS485_Addr2_Pin|RS485_Addr3_Pin - 8001dd6: f648 13fc movw r3, #35324 @ 0x89fc - 8001dda: 613b str r3, [r7, #16] + 8001f3a: f648 13fc movw r3, #35324 @ 0x89fc + 8001f3e: 613b str r3, [r7, #16] |SYS_CFG0_Pin|SYS_CFG1_Pin|PG_RS485_Pin|PG_CE_Pin |PG_PH_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - 8001ddc: 2300 movs r3, #0 - 8001dde: 617b str r3, [r7, #20] + 8001f40: 2300 movs r3, #0 + 8001f42: 617b str r3, [r7, #20] GPIO_InitStruct.Pull = GPIO_PULLUP; - 8001de0: 2301 movs r3, #1 - 8001de2: 61bb str r3, [r7, #24] + 8001f44: 2301 movs r3, #1 + 8001f46: 61bb str r3, [r7, #24] HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 8001de4: f107 0310 add.w r3, r7, #16 - 8001de8: 4619 mov r1, r3 - 8001dea: 481c ldr r0, [pc, #112] @ (8001e5c ) - 8001dec: f001 fabc bl 8003368 + 8001f48: f107 0310 add.w r3, r7, #16 + 8001f4c: 4619 mov r1, r3 + 8001f4e: 481c ldr r0, [pc, #112] @ (8001fc0 ) + 8001f50: f001 fb5a bl 8003608 /*Configure GPIO pins : DIGI_OUT0_Pin DIGI_OUT1_Pin DIGI_OUT2_Pin LED_Red_Pin LED_Green_Pin DIGI_OUT3_Pin DIGI_OUT4_Pin */ GPIO_InitStruct.Pin = DIGI_OUT0_Pin|DIGI_OUT1_Pin|DIGI_OUT2_Pin|LED_Red_Pin - 8001df0: f240 3337 movw r3, #823 @ 0x337 - 8001df4: 613b str r3, [r7, #16] + 8001f54: f240 3337 movw r3, #823 @ 0x337 + 8001f58: 613b str r3, [r7, #16] |LED_Green_Pin|DIGI_OUT3_Pin|DIGI_OUT4_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD; - 8001df6: 2311 movs r3, #17 - 8001df8: 617b str r3, [r7, #20] + 8001f5a: 2311 movs r3, #17 + 8001f5c: 617b str r3, [r7, #20] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001dfa: 2300 movs r3, #0 - 8001dfc: 61bb str r3, [r7, #24] + 8001f5e: 2300 movs r3, #0 + 8001f60: 61bb str r3, [r7, #24] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8001dfe: 2302 movs r3, #2 - 8001e00: 61fb str r3, [r7, #28] + 8001f62: 2302 movs r3, #2 + 8001f64: 61fb str r3, [r7, #28] HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 8001e02: f107 0310 add.w r3, r7, #16 - 8001e06: 4619 mov r1, r3 - 8001e08: 4813 ldr r0, [pc, #76] @ (8001e58 ) - 8001e0a: f001 faad bl 8003368 + 8001f66: f107 0310 add.w r3, r7, #16 + 8001f6a: 4619 mov r1, r3 + 8001f6c: 4813 ldr r0, [pc, #76] @ (8001fbc ) + 8001f6e: f001 fb4b bl 8003608 /*Configure GPIO pins : RS485_Addr4_Pin RS485_Addr5_Pin RS485_Addr6_Pin RS485_Addr7_Pin Calib_PH_Pin */ GPIO_InitStruct.Pin = RS485_Addr4_Pin|RS485_Addr5_Pin|RS485_Addr6_Pin|RS485_Addr7_Pin - 8001e0e: f24f 0308 movw r3, #61448 @ 0xf008 - 8001e12: 613b str r3, [r7, #16] + 8001f72: f24f 0308 movw r3, #61448 @ 0xf008 + 8001f76: 613b str r3, [r7, #16] |Calib_PH_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - 8001e14: 2300 movs r3, #0 - 8001e16: 617b str r3, [r7, #20] + 8001f78: 2300 movs r3, #0 + 8001f7a: 617b str r3, [r7, #20] GPIO_InitStruct.Pull = GPIO_PULLUP; - 8001e18: 2301 movs r3, #1 - 8001e1a: 61bb str r3, [r7, #24] + 8001f7c: 2301 movs r3, #1 + 8001f7e: 61bb str r3, [r7, #24] HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 8001e1c: f107 0310 add.w r3, r7, #16 - 8001e20: 4619 mov r1, r3 - 8001e22: 480d ldr r0, [pc, #52] @ (8001e58 ) - 8001e24: f001 faa0 bl 8003368 + 8001f80: f107 0310 add.w r3, r7, #16 + 8001f84: 4619 mov r1, r3 + 8001f86: 480d ldr r0, [pc, #52] @ (8001fbc ) + 8001f88: f001 fb3e bl 8003608 /*Configure GPIO pin : TX_EN_RS485_Pin */ GPIO_InitStruct.Pin = TX_EN_RS485_Pin; - 8001e28: f44f 5380 mov.w r3, #4096 @ 0x1000 - 8001e2c: 613b str r3, [r7, #16] + 8001f8c: f44f 5380 mov.w r3, #4096 @ 0x1000 + 8001f90: 613b str r3, [r7, #16] GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8001e2e: 2301 movs r3, #1 - 8001e30: 617b str r3, [r7, #20] + 8001f92: 2301 movs r3, #1 + 8001f94: 617b str r3, [r7, #20] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001e32: 2300 movs r3, #0 - 8001e34: 61bb str r3, [r7, #24] + 8001f96: 2300 movs r3, #0 + 8001f98: 61bb str r3, [r7, #24] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8001e36: 2302 movs r3, #2 - 8001e38: 61fb str r3, [r7, #28] + 8001f9a: 2302 movs r3, #2 + 8001f9c: 61fb str r3, [r7, #28] HAL_GPIO_Init(TX_EN_RS485_GPIO_Port, &GPIO_InitStruct); - 8001e3a: f107 0310 add.w r3, r7, #16 - 8001e3e: 4619 mov r1, r3 - 8001e40: 4806 ldr r0, [pc, #24] @ (8001e5c ) - 8001e42: f001 fa91 bl 8003368 + 8001f9e: f107 0310 add.w r3, r7, #16 + 8001fa2: 4619 mov r1, r3 + 8001fa4: 4806 ldr r0, [pc, #24] @ (8001fc0 ) + 8001fa6: f001 fb2f bl 8003608 } - 8001e46: bf00 nop - 8001e48: 3720 adds r7, #32 - 8001e4a: 46bd mov sp, r7 - 8001e4c: bd80 pop {r7, pc} - 8001e4e: bf00 nop - 8001e50: 40021000 .word 0x40021000 - 8001e54: 40011000 .word 0x40011000 - 8001e58: 40010c00 .word 0x40010c00 - 8001e5c: 40010800 .word 0x40010800 + 8001faa: bf00 nop + 8001fac: 3720 adds r7, #32 + 8001fae: 46bd mov sp, r7 + 8001fb0: bd80 pop {r7, pc} + 8001fb2: bf00 nop + 8001fb4: 40021000 .word 0x40021000 + 8001fb8: 40011000 .word 0x40011000 + 8001fbc: 40010c00 .word 0x40010c00 + 8001fc0: 40010800 .word 0x40010800 -08001e60 : +08001fc4 : I2C_HandleTypeDef hi2c1; I2C_HandleTypeDef hi2c2; /* I2C1 init function */ void MX_I2C1_Init(void) { - 8001e60: b580 push {r7, lr} - 8001e62: af00 add r7, sp, #0 + 8001fc4: b580 push {r7, lr} + 8001fc6: af00 add r7, sp, #0 /* USER CODE END I2C1_Init 0 */ /* USER CODE BEGIN I2C1_Init 1 */ /* USER CODE END I2C1_Init 1 */ hi2c1.Instance = I2C1; - 8001e64: 4b12 ldr r3, [pc, #72] @ (8001eb0 ) - 8001e66: 4a13 ldr r2, [pc, #76] @ (8001eb4 ) - 8001e68: 601a str r2, [r3, #0] + 8001fc8: 4b12 ldr r3, [pc, #72] @ (8002014 ) + 8001fca: 4a13 ldr r2, [pc, #76] @ (8002018 ) + 8001fcc: 601a str r2, [r3, #0] hi2c1.Init.ClockSpeed = 100000; - 8001e6a: 4b11 ldr r3, [pc, #68] @ (8001eb0 ) - 8001e6c: 4a12 ldr r2, [pc, #72] @ (8001eb8 ) - 8001e6e: 605a str r2, [r3, #4] + 8001fce: 4b11 ldr r3, [pc, #68] @ (8002014 ) + 8001fd0: 4a12 ldr r2, [pc, #72] @ (800201c ) + 8001fd2: 605a str r2, [r3, #4] hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2; - 8001e70: 4b0f ldr r3, [pc, #60] @ (8001eb0 ) - 8001e72: 2200 movs r2, #0 - 8001e74: 609a str r2, [r3, #8] + 8001fd4: 4b0f ldr r3, [pc, #60] @ (8002014 ) + 8001fd6: 2200 movs r2, #0 + 8001fd8: 609a str r2, [r3, #8] hi2c1.Init.OwnAddress1 = 0; - 8001e76: 4b0e ldr r3, [pc, #56] @ (8001eb0 ) - 8001e78: 2200 movs r2, #0 - 8001e7a: 60da str r2, [r3, #12] + 8001fda: 4b0e ldr r3, [pc, #56] @ (8002014 ) + 8001fdc: 2200 movs r2, #0 + 8001fde: 60da str r2, [r3, #12] hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; - 8001e7c: 4b0c ldr r3, [pc, #48] @ (8001eb0 ) - 8001e7e: f44f 4280 mov.w r2, #16384 @ 0x4000 - 8001e82: 611a str r2, [r3, #16] + 8001fe0: 4b0c ldr r3, [pc, #48] @ (8002014 ) + 8001fe2: f44f 4280 mov.w r2, #16384 @ 0x4000 + 8001fe6: 611a str r2, [r3, #16] hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; - 8001e84: 4b0a ldr r3, [pc, #40] @ (8001eb0 ) - 8001e86: 2200 movs r2, #0 - 8001e88: 615a str r2, [r3, #20] + 8001fe8: 4b0a ldr r3, [pc, #40] @ (8002014 ) + 8001fea: 2200 movs r2, #0 + 8001fec: 615a str r2, [r3, #20] hi2c1.Init.OwnAddress2 = 0; - 8001e8a: 4b09 ldr r3, [pc, #36] @ (8001eb0 ) - 8001e8c: 2200 movs r2, #0 - 8001e8e: 619a str r2, [r3, #24] + 8001fee: 4b09 ldr r3, [pc, #36] @ (8002014 ) + 8001ff0: 2200 movs r2, #0 + 8001ff2: 619a str r2, [r3, #24] hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; - 8001e90: 4b07 ldr r3, [pc, #28] @ (8001eb0 ) - 8001e92: 2200 movs r2, #0 - 8001e94: 61da str r2, [r3, #28] + 8001ff4: 4b07 ldr r3, [pc, #28] @ (8002014 ) + 8001ff6: 2200 movs r2, #0 + 8001ff8: 61da str r2, [r3, #28] hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; - 8001e96: 4b06 ldr r3, [pc, #24] @ (8001eb0 ) - 8001e98: 2200 movs r2, #0 - 8001e9a: 621a str r2, [r3, #32] + 8001ffa: 4b06 ldr r3, [pc, #24] @ (8002014 ) + 8001ffc: 2200 movs r2, #0 + 8001ffe: 621a str r2, [r3, #32] if (HAL_I2C_Init(&hi2c1) != HAL_OK) - 8001e9c: 4804 ldr r0, [pc, #16] @ (8001eb0 ) - 8001e9e: f001 fc2f bl 8003700 - 8001ea2: 4603 mov r3, r0 - 8001ea4: 2b00 cmp r3, #0 - 8001ea6: d001 beq.n 8001eac + 8002000: 4804 ldr r0, [pc, #16] @ (8002014 ) + 8002002: f001 fccd bl 80039a0 + 8002006: 4603 mov r3, r0 + 8002008: 2b00 cmp r3, #0 + 800200a: d001 beq.n 8002010 { Error_Handler(); - 8001ea8: f000 fb7c bl 80025a4 + 800200c: f000 fc3e bl 800288c } /* USER CODE BEGIN I2C1_Init 2 */ /* USER CODE END I2C1_Init 2 */ } - 8001eac: bf00 nop - 8001eae: bd80 pop {r7, pc} - 8001eb0: 2000068c .word 0x2000068c - 8001eb4: 40005400 .word 0x40005400 - 8001eb8: 000186a0 .word 0x000186a0 + 8002010: bf00 nop + 8002012: bd80 pop {r7, pc} + 8002014: 20000624 .word 0x20000624 + 8002018: 40005400 .word 0x40005400 + 800201c: 000186a0 .word 0x000186a0 -08001ebc : +08002020 : /* I2C2 init function */ void MX_I2C2_Init(void) { - 8001ebc: b580 push {r7, lr} - 8001ebe: af00 add r7, sp, #0 + 8002020: b580 push {r7, lr} + 8002022: af00 add r7, sp, #0 /* USER CODE END I2C2_Init 0 */ /* USER CODE BEGIN I2C2_Init 1 */ /* USER CODE END I2C2_Init 1 */ hi2c2.Instance = I2C2; - 8001ec0: 4b12 ldr r3, [pc, #72] @ (8001f0c ) - 8001ec2: 4a13 ldr r2, [pc, #76] @ (8001f10 ) - 8001ec4: 601a str r2, [r3, #0] + 8002024: 4b12 ldr r3, [pc, #72] @ (8002070 ) + 8002026: 4a13 ldr r2, [pc, #76] @ (8002074 ) + 8002028: 601a str r2, [r3, #0] hi2c2.Init.ClockSpeed = 100000; - 8001ec6: 4b11 ldr r3, [pc, #68] @ (8001f0c ) - 8001ec8: 4a12 ldr r2, [pc, #72] @ (8001f14 ) - 8001eca: 605a str r2, [r3, #4] + 800202a: 4b11 ldr r3, [pc, #68] @ (8002070 ) + 800202c: 4a12 ldr r2, [pc, #72] @ (8002078 ) + 800202e: 605a str r2, [r3, #4] hi2c2.Init.DutyCycle = I2C_DUTYCYCLE_2; - 8001ecc: 4b0f ldr r3, [pc, #60] @ (8001f0c ) - 8001ece: 2200 movs r2, #0 - 8001ed0: 609a str r2, [r3, #8] + 8002030: 4b0f ldr r3, [pc, #60] @ (8002070 ) + 8002032: 2200 movs r2, #0 + 8002034: 609a str r2, [r3, #8] hi2c2.Init.OwnAddress1 = 0; - 8001ed2: 4b0e ldr r3, [pc, #56] @ (8001f0c ) - 8001ed4: 2200 movs r2, #0 - 8001ed6: 60da str r2, [r3, #12] + 8002036: 4b0e ldr r3, [pc, #56] @ (8002070 ) + 8002038: 2200 movs r2, #0 + 800203a: 60da str r2, [r3, #12] hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; - 8001ed8: 4b0c ldr r3, [pc, #48] @ (8001f0c ) - 8001eda: f44f 4280 mov.w r2, #16384 @ 0x4000 - 8001ede: 611a str r2, [r3, #16] + 800203c: 4b0c ldr r3, [pc, #48] @ (8002070 ) + 800203e: f44f 4280 mov.w r2, #16384 @ 0x4000 + 8002042: 611a str r2, [r3, #16] hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; - 8001ee0: 4b0a ldr r3, [pc, #40] @ (8001f0c ) - 8001ee2: 2200 movs r2, #0 - 8001ee4: 615a str r2, [r3, #20] + 8002044: 4b0a ldr r3, [pc, #40] @ (8002070 ) + 8002046: 2200 movs r2, #0 + 8002048: 615a str r2, [r3, #20] hi2c2.Init.OwnAddress2 = 0; - 8001ee6: 4b09 ldr r3, [pc, #36] @ (8001f0c ) - 8001ee8: 2200 movs r2, #0 - 8001eea: 619a str r2, [r3, #24] + 800204a: 4b09 ldr r3, [pc, #36] @ (8002070 ) + 800204c: 2200 movs r2, #0 + 800204e: 619a str r2, [r3, #24] hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; - 8001eec: 4b07 ldr r3, [pc, #28] @ (8001f0c ) - 8001eee: 2200 movs r2, #0 - 8001ef0: 61da str r2, [r3, #28] + 8002050: 4b07 ldr r3, [pc, #28] @ (8002070 ) + 8002052: 2200 movs r2, #0 + 8002054: 61da str r2, [r3, #28] hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; - 8001ef2: 4b06 ldr r3, [pc, #24] @ (8001f0c ) - 8001ef4: 2200 movs r2, #0 - 8001ef6: 621a str r2, [r3, #32] + 8002056: 4b06 ldr r3, [pc, #24] @ (8002070 ) + 8002058: 2200 movs r2, #0 + 800205a: 621a str r2, [r3, #32] if (HAL_I2C_Init(&hi2c2) != HAL_OK) - 8001ef8: 4804 ldr r0, [pc, #16] @ (8001f0c ) - 8001efa: f001 fc01 bl 8003700 - 8001efe: 4603 mov r3, r0 - 8001f00: 2b00 cmp r3, #0 - 8001f02: d001 beq.n 8001f08 + 800205c: 4804 ldr r0, [pc, #16] @ (8002070 ) + 800205e: f001 fc9f bl 80039a0 + 8002062: 4603 mov r3, r0 + 8002064: 2b00 cmp r3, #0 + 8002066: d001 beq.n 800206c { Error_Handler(); - 8001f04: f000 fb4e bl 80025a4 + 8002068: f000 fc10 bl 800288c } /* USER CODE BEGIN I2C2_Init 2 */ /* USER CODE END I2C2_Init 2 */ } - 8001f08: bf00 nop - 8001f0a: bd80 pop {r7, pc} - 8001f0c: 200006e0 .word 0x200006e0 - 8001f10: 40005800 .word 0x40005800 - 8001f14: 000186a0 .word 0x000186a0 + 800206c: bf00 nop + 800206e: bd80 pop {r7, pc} + 8002070: 20000678 .word 0x20000678 + 8002074: 40005800 .word 0x40005800 + 8002078: 000186a0 .word 0x000186a0 -08001f18 : +0800207c : void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle) { - 8001f18: b580 push {r7, lr} - 8001f1a: b08a sub sp, #40 @ 0x28 - 8001f1c: af00 add r7, sp, #0 - 8001f1e: 6078 str r0, [r7, #4] + 800207c: b580 push {r7, lr} + 800207e: b08a sub sp, #40 @ 0x28 + 8002080: af00 add r7, sp, #0 + 8002082: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8001f20: f107 0318 add.w r3, r7, #24 - 8001f24: 2200 movs r2, #0 - 8001f26: 601a str r2, [r3, #0] - 8001f28: 605a str r2, [r3, #4] - 8001f2a: 609a str r2, [r3, #8] - 8001f2c: 60da str r2, [r3, #12] + 8002084: f107 0318 add.w r3, r7, #24 + 8002088: 2200 movs r2, #0 + 800208a: 601a str r2, [r3, #0] + 800208c: 605a str r2, [r3, #4] + 800208e: 609a str r2, [r3, #8] + 8002090: 60da str r2, [r3, #12] if(i2cHandle->Instance==I2C1) - 8001f2e: 687b ldr r3, [r7, #4] - 8001f30: 681b ldr r3, [r3, #0] - 8001f32: 4a2b ldr r2, [pc, #172] @ (8001fe0 ) - 8001f34: 4293 cmp r3, r2 - 8001f36: d124 bne.n 8001f82 + 8002092: 687b ldr r3, [r7, #4] + 8002094: 681b ldr r3, [r3, #0] + 8002096: 4a2b ldr r2, [pc, #172] @ (8002144 ) + 8002098: 4293 cmp r3, r2 + 800209a: d124 bne.n 80020e6 { /* USER CODE BEGIN I2C1_MspInit 0 */ /* USER CODE END I2C1_MspInit 0 */ __HAL_RCC_GPIOB_CLK_ENABLE(); - 8001f38: 4b2a ldr r3, [pc, #168] @ (8001fe4 ) - 8001f3a: 699b ldr r3, [r3, #24] - 8001f3c: 4a29 ldr r2, [pc, #164] @ (8001fe4 ) - 8001f3e: f043 0308 orr.w r3, r3, #8 - 8001f42: 6193 str r3, [r2, #24] - 8001f44: 4b27 ldr r3, [pc, #156] @ (8001fe4 ) - 8001f46: 699b ldr r3, [r3, #24] - 8001f48: f003 0308 and.w r3, r3, #8 - 8001f4c: 617b str r3, [r7, #20] - 8001f4e: 697b ldr r3, [r7, #20] + 800209c: 4b2a ldr r3, [pc, #168] @ (8002148 ) + 800209e: 699b ldr r3, [r3, #24] + 80020a0: 4a29 ldr r2, [pc, #164] @ (8002148 ) + 80020a2: f043 0308 orr.w r3, r3, #8 + 80020a6: 6193 str r3, [r2, #24] + 80020a8: 4b27 ldr r3, [pc, #156] @ (8002148 ) + 80020aa: 699b ldr r3, [r3, #24] + 80020ac: f003 0308 and.w r3, r3, #8 + 80020b0: 617b str r3, [r7, #20] + 80020b2: 697b ldr r3, [r7, #20] /**I2C1 GPIO Configuration PB6 ------> I2C1_SCL PB7 ------> I2C1_SDA */ GPIO_InitStruct.Pin = I2C1_SCL_PH_Pin|I2C1_SDA_PH_Pin; - 8001f50: 23c0 movs r3, #192 @ 0xc0 - 8001f52: 61bb str r3, [r7, #24] + 80020b4: 23c0 movs r3, #192 @ 0xc0 + 80020b6: 61bb str r3, [r7, #24] GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; - 8001f54: 2312 movs r3, #18 - 8001f56: 61fb str r3, [r7, #28] + 80020b8: 2312 movs r3, #18 + 80020ba: 61fb str r3, [r7, #28] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8001f58: 2302 movs r3, #2 - 8001f5a: 627b str r3, [r7, #36] @ 0x24 + 80020bc: 2302 movs r3, #2 + 80020be: 627b str r3, [r7, #36] @ 0x24 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 8001f5c: f107 0318 add.w r3, r7, #24 - 8001f60: 4619 mov r1, r3 - 8001f62: 4821 ldr r0, [pc, #132] @ (8001fe8 ) - 8001f64: f001 fa00 bl 8003368 + 80020c0: f107 0318 add.w r3, r7, #24 + 80020c4: 4619 mov r1, r3 + 80020c6: 4821 ldr r0, [pc, #132] @ (800214c ) + 80020c8: f001 fa9e bl 8003608 /* I2C1 clock enable */ __HAL_RCC_I2C1_CLK_ENABLE(); - 8001f68: 4b1e ldr r3, [pc, #120] @ (8001fe4 ) - 8001f6a: 69db ldr r3, [r3, #28] - 8001f6c: 4a1d ldr r2, [pc, #116] @ (8001fe4 ) - 8001f6e: f443 1300 orr.w r3, r3, #2097152 @ 0x200000 - 8001f72: 61d3 str r3, [r2, #28] - 8001f74: 4b1b ldr r3, [pc, #108] @ (8001fe4 ) - 8001f76: 69db ldr r3, [r3, #28] - 8001f78: f403 1300 and.w r3, r3, #2097152 @ 0x200000 - 8001f7c: 613b str r3, [r7, #16] - 8001f7e: 693b ldr r3, [r7, #16] + 80020cc: 4b1e ldr r3, [pc, #120] @ (8002148 ) + 80020ce: 69db ldr r3, [r3, #28] + 80020d0: 4a1d ldr r2, [pc, #116] @ (8002148 ) + 80020d2: f443 1300 orr.w r3, r3, #2097152 @ 0x200000 + 80020d6: 61d3 str r3, [r2, #28] + 80020d8: 4b1b ldr r3, [pc, #108] @ (8002148 ) + 80020da: 69db ldr r3, [r3, #28] + 80020dc: f403 1300 and.w r3, r3, #2097152 @ 0x200000 + 80020e0: 613b str r3, [r7, #16] + 80020e2: 693b ldr r3, [r7, #16] __HAL_RCC_I2C2_CLK_ENABLE(); /* USER CODE BEGIN I2C2_MspInit 1 */ /* USER CODE END I2C2_MspInit 1 */ } } - 8001f80: e029 b.n 8001fd6 + 80020e4: e029 b.n 800213a else if(i2cHandle->Instance==I2C2) - 8001f82: 687b ldr r3, [r7, #4] - 8001f84: 681b ldr r3, [r3, #0] - 8001f86: 4a19 ldr r2, [pc, #100] @ (8001fec ) - 8001f88: 4293 cmp r3, r2 - 8001f8a: d124 bne.n 8001fd6 + 80020e6: 687b ldr r3, [r7, #4] + 80020e8: 681b ldr r3, [r3, #0] + 80020ea: 4a19 ldr r2, [pc, #100] @ (8002150 ) + 80020ec: 4293 cmp r3, r2 + 80020ee: d124 bne.n 800213a __HAL_RCC_GPIOB_CLK_ENABLE(); - 8001f8c: 4b15 ldr r3, [pc, #84] @ (8001fe4 ) - 8001f8e: 699b ldr r3, [r3, #24] - 8001f90: 4a14 ldr r2, [pc, #80] @ (8001fe4 ) - 8001f92: f043 0308 orr.w r3, r3, #8 - 8001f96: 6193 str r3, [r2, #24] - 8001f98: 4b12 ldr r3, [pc, #72] @ (8001fe4 ) - 8001f9a: 699b ldr r3, [r3, #24] - 8001f9c: f003 0308 and.w r3, r3, #8 - 8001fa0: 60fb str r3, [r7, #12] - 8001fa2: 68fb ldr r3, [r7, #12] + 80020f0: 4b15 ldr r3, [pc, #84] @ (8002148 ) + 80020f2: 699b ldr r3, [r3, #24] + 80020f4: 4a14 ldr r2, [pc, #80] @ (8002148 ) + 80020f6: f043 0308 orr.w r3, r3, #8 + 80020fa: 6193 str r3, [r2, #24] + 80020fc: 4b12 ldr r3, [pc, #72] @ (8002148 ) + 80020fe: 699b ldr r3, [r3, #24] + 8002100: f003 0308 and.w r3, r3, #8 + 8002104: 60fb str r3, [r7, #12] + 8002106: 68fb ldr r3, [r7, #12] GPIO_InitStruct.Pin = I2C2_SCL_CE_Pin|I2C2_SDA_CE_Pin; - 8001fa4: f44f 6340 mov.w r3, #3072 @ 0xc00 - 8001fa8: 61bb str r3, [r7, #24] + 8002108: f44f 6340 mov.w r3, #3072 @ 0xc00 + 800210c: 61bb str r3, [r7, #24] GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; - 8001faa: 2312 movs r3, #18 - 8001fac: 61fb str r3, [r7, #28] + 800210e: 2312 movs r3, #18 + 8002110: 61fb str r3, [r7, #28] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8001fae: 2302 movs r3, #2 - 8001fb0: 627b str r3, [r7, #36] @ 0x24 + 8002112: 2302 movs r3, #2 + 8002114: 627b str r3, [r7, #36] @ 0x24 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 8001fb2: f107 0318 add.w r3, r7, #24 - 8001fb6: 4619 mov r1, r3 - 8001fb8: 480b ldr r0, [pc, #44] @ (8001fe8 ) - 8001fba: f001 f9d5 bl 8003368 + 8002116: f107 0318 add.w r3, r7, #24 + 800211a: 4619 mov r1, r3 + 800211c: 480b ldr r0, [pc, #44] @ (800214c ) + 800211e: f001 fa73 bl 8003608 __HAL_RCC_I2C2_CLK_ENABLE(); - 8001fbe: 4b09 ldr r3, [pc, #36] @ (8001fe4 ) - 8001fc0: 69db ldr r3, [r3, #28] - 8001fc2: 4a08 ldr r2, [pc, #32] @ (8001fe4 ) - 8001fc4: f443 0380 orr.w r3, r3, #4194304 @ 0x400000 - 8001fc8: 61d3 str r3, [r2, #28] - 8001fca: 4b06 ldr r3, [pc, #24] @ (8001fe4 ) - 8001fcc: 69db ldr r3, [r3, #28] - 8001fce: f403 0380 and.w r3, r3, #4194304 @ 0x400000 - 8001fd2: 60bb str r3, [r7, #8] - 8001fd4: 68bb ldr r3, [r7, #8] + 8002122: 4b09 ldr r3, [pc, #36] @ (8002148 ) + 8002124: 69db ldr r3, [r3, #28] + 8002126: 4a08 ldr r2, [pc, #32] @ (8002148 ) + 8002128: f443 0380 orr.w r3, r3, #4194304 @ 0x400000 + 800212c: 61d3 str r3, [r2, #28] + 800212e: 4b06 ldr r3, [pc, #24] @ (8002148 ) + 8002130: 69db ldr r3, [r3, #28] + 8002132: f403 0380 and.w r3, r3, #4194304 @ 0x400000 + 8002136: 60bb str r3, [r7, #8] + 8002138: 68bb ldr r3, [r7, #8] } - 8001fd6: bf00 nop - 8001fd8: 3728 adds r7, #40 @ 0x28 - 8001fda: 46bd mov sp, r7 - 8001fdc: bd80 pop {r7, pc} - 8001fde: bf00 nop - 8001fe0: 40005400 .word 0x40005400 - 8001fe4: 40021000 .word 0x40021000 - 8001fe8: 40010c00 .word 0x40010c00 - 8001fec: 40005800 .word 0x40005800 + 800213a: bf00 nop + 800213c: 3728 adds r7, #40 @ 0x28 + 800213e: 46bd mov sp, r7 + 8002140: bd80 pop {r7, pc} + 8002142: bf00 nop + 8002144: 40005400 .word 0x40005400 + 8002148: 40021000 .word 0x40021000 + 800214c: 40010c00 .word 0x40010c00 + 8002150: 40005800 .word 0x40005800 -08001ff0

: +08002154
: /** * @brief The application entry point. * @retval int */ int main(void) { - 8001ff0: b580 push {r7, lr} - 8001ff2: b08e sub sp, #56 @ 0x38 - 8001ff4: af00 add r7, sp, #0 + 8002154: b580 push {r7, lr} + 8002156: b08c sub sp, #48 @ 0x30 + 8002158: af00 add r7, sp, #0 /* USER CODE BEGIN 1 */ HAL_StatusTypeDef status0,status1; // Variables to store previous LED states uint8_t previous_green_state = 0; - 8001ff6: 2300 movs r3, #0 - 8001ff8: f887 3037 strb.w r3, [r7, #55] @ 0x37 + 800215a: 2300 movs r3, #0 + 800215c: f887 3023 strb.w r3, [r7, #35] @ 0x23 uint8_t previous_red_state = 0; - 8001ffc: 2300 movs r3, #0 - 8001ffe: f887 3036 strb.w r3, [r7, #54] @ 0x36 + 8002160: 2300 movs r3, #0 + 8002162: f887 3022 strb.w r3, [r7, #34] @ 0x22 + + uint8_t mux_connection = 0; + 8002166: 2300 movs r3, #0 + 8002168: f887 302f strb.w r3, [r7, #47] @ 0x2f // Variables for timing uint32_t previous_millis_green = 0; - 8002002: 2300 movs r3, #0 - 8002004: 633b str r3, [r7, #48] @ 0x30 + 800216c: 2300 movs r3, #0 + 800216e: 62bb str r3, [r7, #40] @ 0x28 uint32_t previous_millis_red = 0; - 8002006: 2300 movs r3, #0 - 8002008: 62fb str r3, [r7, #44] @ 0x2c + 8002170: 2300 movs r3, #0 + 8002172: 627b str r3, [r7, #36] @ 0x24 /*! Temporary variables */ - uint8_t tempString[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - 800200a: f107 0308 add.w r3, r7, #8 - 800200e: 2200 movs r2, #0 - 8002010: 601a str r2, [r3, #0] - 8002012: 605a str r2, [r3, #4] - 8002014: 811a strh r2, [r3, #8] + uint8_t tempString[15] = {0}; + 8002174: 463b mov r3, r7 + 8002176: 2200 movs r2, #0 + 8002178: 601a str r2, [r3, #0] + 800217a: 605a str r2, [r3, #4] + 800217c: 609a str r2, [r3, #8] + 800217e: f8c3 200b str.w r2, [r3, #11] /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); - 8002016: f000 fd4f bl 8002ab8 + 8002182: f000 fe0d bl 8002da0 /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); - 800201a: f000 f947 bl 80022ac + 8002186: f000 f939 bl 80023fc /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); - 800201e: f7ff fe7f bl 8001d20 + 800218a: f7ff fe7b bl 8001e84 MX_ADC1_Init(); - 8002022: f7ff fae5 bl 80015f0 + 800218e: f7ff fadd bl 800174c MX_ADC2_Init(); - 8002026: f7ff fb21 bl 800166c + 8002192: f7ff fb19 bl 80017c8 MX_I2C1_Init(); - 800202a: f7ff ff19 bl 8001e60 + 8002196: f7ff ff15 bl 8001fc4 MX_I2C2_Init(); - 800202e: f7ff ff45 bl 8001ebc + 800219a: f7ff ff41 bl 8002020 MX_USART1_UART_Init(); - 8002032: f000 fc9d bl 8002970 + 800219e: f000 fd5b bl 8002c58 MX_TIM3_Init(); - 8002036: f000 fc27 bl 8002888 + 80021a2: f000 fce5 bl 8002b70 /* USER CODE BEGIN 2 */ Flash_Load_Page(&flash_data); - 800203a: 488b ldr r0, [pc, #556] @ (8002268 ) - 800203c: f7ff fe50 bl 8001ce0 + 80021a6: 488a ldr r0, [pc, #552] @ (80023d0 ) + 80021a8: f7ff fe4c bl 8001e44 HAL_TIM_Base_Start_IT(&htim3); - 8002040: 488a ldr r0, [pc, #552] @ (800226c ) - 8002042: f003 f8a9 bl 8005198 + 80021ac: 4889 ldr r0, [pc, #548] @ (80023d4 ) + 80021ae: f003 f943 bl 8005438 /* HAL_ADCEx_Calibration_Start(&hadc1); HAL_ADC_Start_DMA(&hadc1, (uint32_t*)AD_RES, 2); // Internal Temperature conversion */ digital_outputs_init(); - 8002046: f7ff fe09 bl 8001c5c + 80021b2: f7ff fe05 bl 8001dc0 + - // Initialize RS-485 driver rs485_init(); - 800204a: f000 fabd bl 80025c8 + 80021b6: f000 fb7b bl 80028b0 + + ADS1015_Init(); // Initializes pH Measurement + 80021ba: f7ff fbf5 bl 80019a8 - ADS1015(&i2c_ads1015, &hi2c1, ADS1015_ADDR_GND); - 800204e: 2290 movs r2, #144 @ 0x90 - 8002050: 4987 ldr r1, [pc, #540] @ (8002270 ) - 8002052: 4888 ldr r0, [pc, #544] @ (8002274 ) - 8002054: f7ff fbf9 bl 800184a - - - - - - ADG715_ResetChannels(); - 8002058: f7ff faa2 bl 80015a0 - // Start CE and RTD Measurement - AD5934_Init(); - 800205c: f7fe ff78 bl 8000f50 + AD5934_Init(); // Initializes CE and RTD Measurement + 80021be: f7fe fee7 bl 8000f90 */ while (1) { AD5934_Process_System(); - 8002060: f7ff f800 bl 8001064 + 80021c2: f7fe ffff bl 80011c4 ADS1015_Process_System(); - 8002064: f7ff fc0e bl 8001884 + 80021c6: f7ff fc09 bl 80019dc current_millis = g_ms_counter; - 8002068: 4b83 ldr r3, [pc, #524] @ (8002278 ) - 800206a: 681b ldr r3, [r3, #0] - 800206c: 62bb str r3, [r7, #40] @ 0x28 + 80021ca: 4b83 ldr r3, [pc, #524] @ (80023d8 ) + 80021cc: 681b ldr r3, [r3, #0] + 80021ce: 61fb str r3, [r7, #28] + + + if((current_millis % 100) == 0) // Send data each 50ms + 80021d0: 69fa ldr r2, [r7, #28] + 80021d2: 4b82 ldr r3, [pc, #520] @ (80023dc ) + 80021d4: fba3 1302 umull r1, r3, r3, r2 + 80021d8: 095b lsrs r3, r3, #5 + 80021da: 2164 movs r1, #100 @ 0x64 + 80021dc: fb01 f303 mul.w r3, r1, r3 + 80021e0: 1ad3 subs r3, r2, r3 + 80021e2: 2b00 cmp r3, #0 + 80021e4: f040 80da bne.w 800239c + { + + + if (g_ref_filter.value_valid) // Reference Resistor on Board: 100 Ohms or 1000 Ohms + 80021e8: 4b7d ldr r3, [pc, #500] @ (80023e0 ) + 80021ea: f893 3040 ldrb.w r3, [r3, #64] @ 0x40 + 80021ee: 2b00 cmp r3, #0 + 80021f0: d034 beq.n 800225c + { + if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_7) == GPIO_PIN_SET) // OFF = PT1000, ON = PT100, PA7 has internal pull-up and switch connects to GND + 80021f2: 2180 movs r1, #128 @ 0x80 + 80021f4: 487b ldr r0, [pc, #492] @ (80023e4 ) + 80021f6: f001 fb8b bl 8003910 + 80021fa: 4603 mov r3, r0 + 80021fc: 2b01 cmp r3, #1 + 80021fe: d103 bne.n 8002208 + mux_connection = AD5934_CH_REF100R_LOW_GAIN; // 100 Ohms Reference Resistor + 8002200: 2300 movs r3, #0 + 8002202: f887 302f strb.w r3, [r7, #47] @ 0x2f + 8002206: e002 b.n 800220e + else + mux_connection = AD5934_CH_REF1K_MID_GAIN; // 1K Reference Resistor + 8002208: 2304 movs r3, #4 + 800220a: f887 302f strb.w r3, [r7, #47] @ 0x2f + + uint16_t reference_final = AD5934_REF_OUT_SCALE_MAX - AD5934_Compress_To_IntScale(g_ref_filter.filtered_value, mux_connection); + 800220e: 4b74 ldr r3, [pc, #464] @ (80023e0 ) + 8002210: 6bdb ldr r3, [r3, #60] @ 0x3c + 8002212: f897 202f ldrb.w r2, [r7, #47] @ 0x2f + 8002216: 4611 mov r1, r2 + 8002218: 4618 mov r0, r3 + 800221a: f7fe ff45 bl 80010a8 + 800221e: 4603 mov r3, r0 + 8002220: f5c3 5380 rsb r3, r3, #4096 @ 0x1000 + 8002224: 837b strh r3, [r7, #26] + intToStr(reference_final, tempString); + 8002226: f9b7 301a ldrsh.w r3, [r7, #26] + 800222a: 463a mov r2, r7 + 800222c: 4611 mov r1, r2 + 800222e: 4618 mov r0, r3 + 8002230: f000 fa48 bl 80026c4 + // float ref_final = g_ref_filter.filtered_value; + //FloatToString(tempString, ref_final); + rs485_send_broadcast(tempString, (strlen((uint8_t*)tempString))); + 8002234: 463b mov r3, r7 + 8002236: 4618 mov r0, r3 + 8002238: f7fd ff88 bl 800014c + 800223c: 4603 mov r3, r0 + 800223e: b29a uxth r2, r3 + 8002240: 463b mov r3, r7 + 8002242: 4611 mov r1, r2 + 8002244: 4618 mov r0, r3 + 8002246: f000 fb5f bl 8002908 + rs485_send_broadcast(newline, (strlen((uint8_t*)newline))); + 800224a: 4867 ldr r0, [pc, #412] @ (80023e8 ) + 800224c: f7fd ff7e bl 800014c + 8002250: 4603 mov r3, r0 + 8002252: b29b uxth r3, r3 + 8002254: 4619 mov r1, r3 + 8002256: 4864 ldr r0, [pc, #400] @ (80023e8 ) + 8002258: f000 fb56 bl 8002908 + } + + if (g_ec_filter.value_valid) // EC + 800225c: 4b63 ldr r3, [pc, #396] @ (80023ec ) + 800225e: f893 3040 ldrb.w r3, [r3, #64] @ 0x40 + 8002262: 2b00 cmp r3, #0 + 8002264: d032 beq.n 80022cc + { + if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_6) == GPIO_PIN_SET) // Hardware Setup: Gain Selection (PA6) + 8002266: 2140 movs r1, #64 @ 0x40 + 8002268: 485e ldr r0, [pc, #376] @ (80023e4 ) + 800226a: f001 fb51 bl 8003910 + 800226e: 4603 mov r3, r0 + 8002270: 2b01 cmp r3, #1 + 8002272: d103 bne.n 800227c + mux_connection = AD5934_CH_EC_HIGH_GAIN; + 8002274: 230e movs r3, #14 + 8002276: f887 302f strb.w r3, [r7, #47] @ 0x2f + 800227a: e002 b.n 8002282 + else + mux_connection = AD5934_CH_EC_MID_GAIN; + 800227c: 230d movs r3, #13 + 800227e: f887 302f strb.w r3, [r7, #47] @ 0x2f + + uint16_t ec_final = AD5934_Compress_To_IntScale(g_ec_filter.filtered_value, mux_connection); + 8002282: 4b5a ldr r3, [pc, #360] @ (80023ec ) + 8002284: 6bdb ldr r3, [r3, #60] @ 0x3c + 8002286: f897 202f ldrb.w r2, [r7, #47] @ 0x2f + 800228a: 4611 mov r1, r2 + 800228c: 4618 mov r0, r3 + 800228e: f7fe ff0b bl 80010a8 + 8002292: 4603 mov r3, r0 + 8002294: 833b strh r3, [r7, #24] + intToStr(ec_final, tempString); + 8002296: f9b7 3018 ldrsh.w r3, [r7, #24] + 800229a: 463a mov r2, r7 + 800229c: 4611 mov r1, r2 + 800229e: 4618 mov r0, r3 + 80022a0: f000 fa10 bl 80026c4 + /* float ec_final = g_ec_filter.filtered_value; + FloatToString(tempString, ec_final);*/ + rs485_send_broadcast(tempString, (strlen((uint8_t*)tempString))); + 80022a4: 463b mov r3, r7 + 80022a6: 4618 mov r0, r3 + 80022a8: f7fd ff50 bl 800014c + 80022ac: 4603 mov r3, r0 + 80022ae: b29a uxth r2, r3 + 80022b0: 463b mov r3, r7 + 80022b2: 4611 mov r1, r2 + 80022b4: 4618 mov r0, r3 + 80022b6: f000 fb27 bl 8002908 + rs485_send_broadcast(newline, (strlen((uint8_t*)newline))); + 80022ba: 484b ldr r0, [pc, #300] @ (80023e8 ) + 80022bc: f7fd ff46 bl 800014c + 80022c0: 4603 mov r3, r0 + 80022c2: b29b uxth r3, r3 + 80022c4: 4619 mov r1, r3 + 80022c6: 4848 ldr r0, [pc, #288] @ (80023e8 ) + 80022c8: f000 fb1e bl 8002908 + } + + if (g_rtd_filter.value_valid) // PT100 or PT1000 in °C + 80022cc: 4b48 ldr r3, [pc, #288] @ (80023f0 ) + 80022ce: f893 3040 ldrb.w r3, [r3, #64] @ 0x40 + 80022d2: 2b00 cmp r3, #0 + 80022d4: d034 beq.n 8002340 + { + if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_7) == GPIO_PIN_SET) // OFF = PT1000, ON = PT100, PA7 has internal pull-up and switch connects to GND + 80022d6: 2180 movs r1, #128 @ 0x80 + 80022d8: 4842 ldr r0, [pc, #264] @ (80023e4 ) + 80022da: f001 fb19 bl 8003910 + 80022de: 4603 mov r3, r0 + 80022e0: 2b01 cmp r3, #1 + 80022e2: d103 bne.n 80022ec + mux_connection = AD5934_CH_RTD_LOW_GAIN; //PT100 + 80022e4: 2309 movs r3, #9 + 80022e6: f887 302f strb.w r3, [r7, #47] @ 0x2f + 80022ea: e002 b.n 80022f2 + else + mux_connection = AD5934_CH_RTD_MID_GAIN; //PT1000 + 80022ec: 230a movs r3, #10 + 80022ee: f887 302f strb.w r3, [r7, #47] @ 0x2f + + uint16_t rtd_final = AD5934_RTD_OUT_SCALE_MAX - AD5934_Compress_To_IntScale(g_rtd_filter.filtered_value, mux_connection); + 80022f2: 4b3f ldr r3, [pc, #252] @ (80023f0 ) + 80022f4: 6bdb ldr r3, [r3, #60] @ 0x3c + 80022f6: f897 202f ldrb.w r2, [r7, #47] @ 0x2f + 80022fa: 4611 mov r1, r2 + 80022fc: 4618 mov r0, r3 + 80022fe: f7fe fed3 bl 80010a8 + 8002302: 4603 mov r3, r0 + 8002304: f5c3 5380 rsb r3, r3, #4096 @ 0x1000 + 8002308: 82fb strh r3, [r7, #22] + intToStr(rtd_final, tempString); + 800230a: f9b7 3016 ldrsh.w r3, [r7, #22] + 800230e: 463a mov r2, r7 + 8002310: 4611 mov r1, r2 + 8002312: 4618 mov r0, r3 + 8002314: f000 f9d6 bl 80026c4 + // float rtd_final = g_rtd_filter.filtered_value; + // FloatToString(tempString, rtd_final); + rs485_send_broadcast(tempString, (strlen((uint8_t*)tempString))); + 8002318: 463b mov r3, r7 + 800231a: 4618 mov r0, r3 + 800231c: f7fd ff16 bl 800014c + 8002320: 4603 mov r3, r0 + 8002322: b29a uxth r2, r3 + 8002324: 463b mov r3, r7 + 8002326: 4611 mov r1, r2 + 8002328: 4618 mov r0, r3 + 800232a: f000 faed bl 8002908 + rs485_send_broadcast(newline, (strlen((uint8_t*)newline))); + 800232e: 482e ldr r0, [pc, #184] @ (80023e8 ) + 8002330: f7fd ff0c bl 800014c + 8002334: 4603 mov r3, r0 + 8002336: b29b uxth r3, r3 + 8002338: 4619 mov r1, r3 + 800233a: 482b ldr r0, [pc, #172] @ (80023e8 ) + 800233c: f000 fae4 bl 8002908 + } + + if (g_ph_filter.value_valid) // pH + 8002340: 4b2c ldr r3, [pc, #176] @ (80023f4 ) + 8002342: f893 3040 ldrb.w r3, [r3, #64] @ 0x40 + 8002346: 2b00 cmp r3, #0 + 8002348: d01f beq.n 800238a + { + float ph_final = g_ph_filter.filtered_value; + 800234a: 4b2a ldr r3, [pc, #168] @ (80023f4 ) + 800234c: 6bdb ldr r3, [r3, #60] @ 0x3c + 800234e: 613b str r3, [r7, #16] + FloatToString(tempString, ph_final); + 8002350: 6938 ldr r0, [r7, #16] + 8002352: f7fe f991 bl 8000678 <__aeabi_f2d> + 8002356: 4602 mov r2, r0 + 8002358: 460b mov r3, r1 + 800235a: 4639 mov r1, r7 + 800235c: 4608 mov r0, r1 + 800235e: f000 f89d bl 800249c + rs485_send_broadcast(tempString, (strlen((uint8_t*)tempString))); + 8002362: 463b mov r3, r7 + 8002364: 4618 mov r0, r3 + 8002366: f7fd fef1 bl 800014c + 800236a: 4603 mov r3, r0 + 800236c: b29a uxth r2, r3 + 800236e: 463b mov r3, r7 + 8002370: 4611 mov r1, r2 + 8002372: 4618 mov r0, r3 + 8002374: f000 fac8 bl 8002908 + rs485_send_broadcast(newline, (strlen((uint8_t*)newline))); + 8002378: 481b ldr r0, [pc, #108] @ (80023e8 ) + 800237a: f7fd fee7 bl 800014c + 800237e: 4603 mov r3, r0 + 8002380: b29b uxth r3, r3 + 8002382: 4619 mov r1, r3 + 8002384: 4818 ldr r0, [pc, #96] @ (80023e8 ) + 8002386: f000 fabf bl 8002908 + } + + rs485_send_broadcast(newline, (strlen((uint8_t*)newline))); + 800238a: 4817 ldr r0, [pc, #92] @ (80023e8 ) + 800238c: f7fd fede bl 800014c + 8002390: 4603 mov r3, r0 + 8002392: b29b uxth r3, r3 + 8002394: 4619 mov r1, r3 + 8002396: 4814 ldr r0, [pc, #80] @ (80023e8 ) + 8002398: f000 fab6 bl 8002908 + + } // Piscar LED verde em PB5 a cada 0,5 segundos if ((current_millis - previous_millis_green) >= 500) - 800206e: 6aba ldr r2, [r7, #40] @ 0x28 - 8002070: 6b3b ldr r3, [r7, #48] @ 0x30 - 8002072: 1ad3 subs r3, r2, r3 - 8002074: f5b3 7ffa cmp.w r3, #500 @ 0x1f4 - 8002078: d31b bcc.n 80020b2 + 800239c: 69fa ldr r2, [r7, #28] + 800239e: 6abb ldr r3, [r7, #40] @ 0x28 + 80023a0: 1ad3 subs r3, r2, r3 + 80023a2: f5b3 7ffa cmp.w r3, #500 @ 0x1f4 + 80023a6: d305 bcc.n 80023b4 { previous_millis_green = current_millis; - 800207a: 6abb ldr r3, [r7, #40] @ 0x28 - 800207c: 633b str r3, [r7, #48] @ 0x30 + 80023a8: 69fb ldr r3, [r7, #28] + 80023aa: 62bb str r3, [r7, #40] @ 0x28 HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5); - 800207e: 2120 movs r1, #32 - 8002080: 487e ldr r0, [pc, #504] @ (800227c ) - 8002082: f001 fb24 bl 80036ce - - // Check if state changed and send via RS485 - uint8_t current_green_state = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_5); - 8002086: 2120 movs r1, #32 - 8002088: 487c ldr r0, [pc, #496] @ (800227c ) - 800208a: f001 faf1 bl 8003670 - 800208e: 4603 mov r3, r0 - 8002090: f887 3027 strb.w r3, [r7, #39] @ 0x27 - if (current_green_state != previous_green_state) - 8002094: f897 2027 ldrb.w r2, [r7, #39] @ 0x27 - 8002098: f897 3037 ldrb.w r3, [r7, #55] @ 0x37 - 800209c: 429a cmp r2, r3 - 800209e: d008 beq.n 80020b2 - { - previous_green_state = current_green_state; - 80020a0: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 80020a4: f887 3037 strb.w r3, [r7, #55] @ 0x37 - uint8_t led_data[2] = {0x01, current_green_state}; // Command 0x01 for green LED - 80020a8: 2301 movs r3, #1 - 80020aa: 713b strb r3, [r7, #4] - 80020ac: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 80020b0: 717b strb r3, [r7, #5] -*/ + 80023ac: 2120 movs r1, #32 + 80023ae: 4812 ldr r0, [pc, #72] @ (80023f8 ) + 80023b0: f001 fadd bl 800396e } // Piscar LED vermelho em PB4 a cada 1 segundo if ((current_millis - previous_millis_red) >= 1000) - 80020b2: 6aba ldr r2, [r7, #40] @ 0x28 - 80020b4: 6afb ldr r3, [r7, #44] @ 0x2c - 80020b6: 1ad3 subs r3, r2, r3 - 80020b8: f5b3 7f7a cmp.w r3, #1000 @ 0x3e8 - 80020bc: d3d0 bcc.n 8002060 + 80023b4: 69fa ldr r2, [r7, #28] + 80023b6: 6a7b ldr r3, [r7, #36] @ 0x24 + 80023b8: 1ad3 subs r3, r2, r3 + 80023ba: f5b3 7f7a cmp.w r3, #1000 @ 0x3e8 + 80023be: f4ff af00 bcc.w 80021c2 { previous_millis_red = current_millis; - 80020be: 6abb ldr r3, [r7, #40] @ 0x28 - 80020c0: 62fb str r3, [r7, #44] @ 0x2c + 80023c2: 69fb ldr r3, [r7, #28] + 80023c4: 627b str r3, [r7, #36] @ 0x24 HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_4); - 80020c2: 2110 movs r1, #16 - 80020c4: 486d ldr r0, [pc, #436] @ (800227c ) - 80020c6: f001 fb02 bl 80036ce - - // Check if state changed and send via RS485 - uint8_t current_red_state = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_4); - 80020ca: 2110 movs r1, #16 - 80020cc: 486b ldr r0, [pc, #428] @ (800227c ) - 80020ce: f001 facf bl 8003670 - 80020d2: 4603 mov r3, r0 - 80020d4: f887 3026 strb.w r3, [r7, #38] @ 0x26 - if (current_red_state != previous_red_state) - 80020d8: f897 2026 ldrb.w r2, [r7, #38] @ 0x26 - 80020dc: f897 3036 ldrb.w r3, [r7, #54] @ 0x36 - 80020e0: 429a cmp r2, r3 - 80020e2: d008 beq.n 80020f6 - { - previous_red_state = current_red_state; - 80020e4: f897 3026 ldrb.w r3, [r7, #38] @ 0x26 - 80020e8: f887 3036 strb.w r3, [r7, #54] @ 0x36 - uint8_t led_data[2] = {0x02, current_red_state}; // Command 0x02 for red LED - 80020ec: 2302 movs r3, #2 - 80020ee: 703b strb r3, [r7, #0] - 80020f0: f897 3026 ldrb.w r3, [r7, #38] @ 0x26 - 80020f4: 707b strb r3, [r7, #1] - - } - - - if (g_rtd_filter.value_valid) - 80020f6: 4b62 ldr r3, [pc, #392] @ (8002280 ) - 80020f8: f893 3050 ldrb.w r3, [r3, #80] @ 0x50 - 80020fc: 2b00 cmp r3, #0 - 80020fe: d033 beq.n 8002168 - { - float rtd_final = g_rtd_filter.filtered_value; - 8002100: 4b5f ldr r3, [pc, #380] @ (8002280 ) - 8002102: 6cdb ldr r3, [r3, #76] @ 0x4c - 8002104: 623b str r3, [r7, #32] - - status1 = rs485_send_broadcast(tm_t, strlen((char*)tm_t)); - 8002106: 485f ldr r0, [pc, #380] @ (8002284 ) - 8002108: f7fe f820 bl 800014c - 800210c: 4603 mov r3, r0 - 800210e: b29b uxth r3, r3 - 8002110: 4619 mov r1, r3 - 8002112: 485c ldr r0, [pc, #368] @ (8002284 ) - 8002114: f000 fa84 bl 8002620 - 8002118: 4603 mov r3, r0 - 800211a: 77fb strb r3, [r7, #31] - //temperature_RTD = AD5934_GetTemperature(refResistance); - FloatToString(tempString, rtd_final); - 800211c: 6a38 ldr r0, [r7, #32] - 800211e: f7fe faab bl 8000678 <__aeabi_f2d> - 8002122: 4602 mov r2, r0 - 8002124: 460b mov r3, r1 - 8002126: f107 0108 add.w r1, r7, #8 - 800212a: 4608 mov r0, r1 - 800212c: f000 f90e bl 800234c - status0 = rs485_send_broadcast(tempString, (strlen((char*)tempString)-1)); - 8002130: f107 0308 add.w r3, r7, #8 - 8002134: 4618 mov r0, r3 - 8002136: f7fe f809 bl 800014c - 800213a: 4603 mov r3, r0 - 800213c: b29b uxth r3, r3 - 800213e: 3b01 subs r3, #1 - 8002140: b29a uxth r2, r3 - 8002142: f107 0308 add.w r3, r7, #8 - 8002146: 4611 mov r1, r2 - 8002148: 4618 mov r0, r3 - 800214a: f000 fa69 bl 8002620 - 800214e: 4603 mov r3, r0 - 8002150: 77bb strb r3, [r7, #30] - status1 = rs485_send_broadcast(newline_temp, strlen((char*)newline_temp)); - 8002152: 484d ldr r0, [pc, #308] @ (8002288 ) - 8002154: f7fd fffa bl 800014c - 8002158: 4603 mov r3, r0 - 800215a: b29b uxth r3, r3 - 800215c: 4619 mov r1, r3 - 800215e: 484a ldr r0, [pc, #296] @ (8002288 ) - 8002160: f000 fa5e bl 8002620 - 8002164: 4603 mov r3, r0 - 8002166: 77fb strb r3, [r7, #31] - } - - if (g_ec_filter.value_valid) - 8002168: 4b48 ldr r3, [pc, #288] @ (800228c ) - 800216a: f893 3050 ldrb.w r3, [r3, #80] @ 0x50 - 800216e: 2b00 cmp r3, #0 - 8002170: d033 beq.n 80021da - { - float ec_final = g_ec_filter.filtered_value; - 8002172: 4b46 ldr r3, [pc, #280] @ (800228c ) - 8002174: 6cdb ldr r3, [r3, #76] @ 0x4c - 8002176: 61bb str r3, [r7, #24] - status1 = rs485_send_broadcast(ad_t, strlen((char*)ad_t)); - 8002178: 4845 ldr r0, [pc, #276] @ (8002290 ) - 800217a: f7fd ffe7 bl 800014c - 800217e: 4603 mov r3, r0 - 8002180: b29b uxth r3, r3 - 8002182: 4619 mov r1, r3 - 8002184: 4842 ldr r0, [pc, #264] @ (8002290 ) - 8002186: f000 fa4b bl 8002620 - 800218a: 4603 mov r3, r0 - 800218c: 77fb strb r3, [r7, #31] - //admittance_EC = AD5934_GetImpedance(temperature_RTD); - FloatToString(tempString, ec_final); - 800218e: 69b8 ldr r0, [r7, #24] - 8002190: f7fe fa72 bl 8000678 <__aeabi_f2d> - 8002194: 4602 mov r2, r0 - 8002196: 460b mov r3, r1 - 8002198: f107 0108 add.w r1, r7, #8 - 800219c: 4608 mov r0, r1 - 800219e: f000 f8d5 bl 800234c - status0 = rs485_send_broadcast(tempString, (strlen((char*)tempString)-1)); - 80021a2: f107 0308 add.w r3, r7, #8 - 80021a6: 4618 mov r0, r3 - 80021a8: f7fd ffd0 bl 800014c - 80021ac: 4603 mov r3, r0 - 80021ae: b29b uxth r3, r3 - 80021b0: 3b01 subs r3, #1 - 80021b2: b29a uxth r2, r3 - 80021b4: f107 0308 add.w r3, r7, #8 - 80021b8: 4611 mov r1, r2 - 80021ba: 4618 mov r0, r3 - 80021bc: f000 fa30 bl 8002620 - 80021c0: 4603 mov r3, r0 - 80021c2: 77bb strb r3, [r7, #30] - status1 = rs485_send_broadcast(newline_admi, strlen((char*)newline_admi)); - 80021c4: 4833 ldr r0, [pc, #204] @ (8002294 ) - 80021c6: f7fd ffc1 bl 800014c - 80021ca: 4603 mov r3, r0 - 80021cc: b29b uxth r3, r3 - 80021ce: 4619 mov r1, r3 - 80021d0: 4830 ldr r0, [pc, #192] @ (8002294 ) - 80021d2: f000 fa25 bl 8002620 - 80021d6: 4603 mov r3, r0 - 80021d8: 77fb strb r3, [r7, #31] - } - - if (g_ref_filter.value_valid) - 80021da: 4b2f ldr r3, [pc, #188] @ (8002298 ) - 80021dc: f893 3050 ldrb.w r3, [r3, #80] @ 0x50 - 80021e0: 2b00 cmp r3, #0 - 80021e2: f43f af3d beq.w 8002060 - { - //float reference_final = g_ref_filter.filtered_value; - status1 = rs485_send_broadcast(ph_t, strlen((char*)ph_t)); - 80021e6: 482d ldr r0, [pc, #180] @ (800229c ) - 80021e8: f7fd ffb0 bl 800014c - 80021ec: 4603 mov r3, r0 - 80021ee: b29b uxth r3, r3 - 80021f0: 4619 mov r1, r3 - 80021f2: 482a ldr r0, [pc, #168] @ (800229c ) - 80021f4: f000 fa14 bl 8002620 - 80021f8: 4603 mov r3, r0 - 80021fa: 77fb strb r3, [r7, #31] - ph_compensated = g_ph_filter.filtered_value; - 80021fc: 4b28 ldr r3, [pc, #160] @ (80022a0 ) - 80021fe: 6c5b ldr r3, [r3, #68] @ 0x44 - 8002200: 617b str r3, [r7, #20] - FloatToString(tempString, ph_compensated); - 8002202: 6978 ldr r0, [r7, #20] - 8002204: f7fe fa38 bl 8000678 <__aeabi_f2d> - 8002208: 4602 mov r2, r0 - 800220a: 460b mov r3, r1 - 800220c: f107 0108 add.w r1, r7, #8 - 8002210: 4608 mov r0, r1 - 8002212: f000 f89b bl 800234c - - status0 = rs485_send_broadcast(tempString, (strlen((char*)tempString)-1)); - 8002216: f107 0308 add.w r3, r7, #8 - 800221a: 4618 mov r0, r3 - 800221c: f7fd ff96 bl 800014c - 8002220: 4603 mov r3, r0 - 8002222: b29b uxth r3, r3 - 8002224: 3b01 subs r3, #1 - 8002226: b29a uxth r2, r3 - 8002228: f107 0308 add.w r3, r7, #8 - 800222c: 4611 mov r1, r2 - 800222e: 4618 mov r0, r3 - 8002230: f000 f9f6 bl 8002620 - 8002234: 4603 mov r3, r0 - 8002236: 77bb strb r3, [r7, #30] - status1 = rs485_send_broadcast(newline_ph, strlen((char*)newline_ph)); - 8002238: 481a ldr r0, [pc, #104] @ (80022a4 ) - 800223a: f7fd ff87 bl 800014c - 800223e: 4603 mov r3, r0 - 8002240: b29b uxth r3, r3 - 8002242: 4619 mov r1, r3 - 8002244: 4817 ldr r0, [pc, #92] @ (80022a4 ) - 8002246: f000 f9eb bl 8002620 - 800224a: 4603 mov r3, r0 - 800224c: 77fb strb r3, [r7, #31] - - status1 = rs485_send_broadcast(newline, strlen((char*)newline)); - 800224e: 4816 ldr r0, [pc, #88] @ (80022a8 ) - 8002250: f7fd ff7c bl 800014c - 8002254: 4603 mov r3, r0 - 8002256: b29b uxth r3, r3 - 8002258: 4619 mov r1, r3 - 800225a: 4813 ldr r0, [pc, #76] @ (80022a8 ) - 800225c: f000 f9e0 bl 8002620 - 8002260: 4603 mov r3, r0 - 8002262: 77fb strb r3, [r7, #31] + 80023c6: 2110 movs r1, #16 + 80023c8: 480b ldr r0, [pc, #44] @ (80023f8 ) + 80023ca: f001 fad0 bl 800396e AD5934_Process_System(); - 8002264: e6fc b.n 8002060 - 8002266: bf00 nop - 8002268: 2000028c .word 0x2000028c - 800226c: 20000780 .word 0x20000780 - 8002270: 2000068c .word 0x2000068c - 8002274: 2000021c .word 0x2000021c - 8002278: 200000b4 .word 0x200000b4 - 800227c: 40010c00 .word 0x40010c00 - 8002280: 200000bc .word 0x200000bc - 8002284: 20000030 .word 0x20000030 - 8002288: 20000018 .word 0x20000018 - 800228c: 20000110 .word 0x20000110 - 8002290: 20000020 .word 0x20000020 - 8002294: 20000010 .word 0x20000010 - 8002298: 20000164 .word 0x20000164 - 800229c: 20000028 .word 0x20000028 - 80022a0: 2000022c .word 0x2000022c - 80022a4: 20000008 .word 0x20000008 - 80022a8: 20000004 .word 0x20000004 + 80023ce: e6f8 b.n 80021c2 + 80023d0: 20000224 .word 0x20000224 + 80023d4: 20000718 .word 0x20000718 + 80023d8: 20000084 .word 0x20000084 + 80023dc: 51eb851f .word 0x51eb851f + 80023e0: 20000114 .word 0x20000114 + 80023e4: 40010800 .word 0x40010800 + 80023e8: 20000004 .word 0x20000004 + 80023ec: 200000d0 .word 0x200000d0 + 80023f0: 2000008c .word 0x2000008c + 80023f4: 200001cc .word 0x200001cc + 80023f8: 40010c00 .word 0x40010c00 -080022ac : +080023fc : /** * @brief System Clock Configuration * @retval None */ void SystemClock_Config(void) { - 80022ac: b580 push {r7, lr} - 80022ae: b094 sub sp, #80 @ 0x50 - 80022b0: af00 add r7, sp, #0 + 80023fc: b580 push {r7, lr} + 80023fe: b094 sub sp, #80 @ 0x50 + 8002400: af00 add r7, sp, #0 RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - 80022b2: f107 0328 add.w r3, r7, #40 @ 0x28 - 80022b6: 2228 movs r2, #40 @ 0x28 - 80022b8: 2100 movs r1, #0 - 80022ba: 4618 mov r0, r3 - 80022bc: f004 f924 bl 8006508 + 8002402: f107 0328 add.w r3, r7, #40 @ 0x28 + 8002406: 2228 movs r2, #40 @ 0x28 + 8002408: 2100 movs r1, #0 + 800240a: 4618 mov r0, r3 + 800240c: f004 f9cc bl 80067a8 RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - 80022c0: f107 0314 add.w r3, r7, #20 - 80022c4: 2200 movs r2, #0 - 80022c6: 601a str r2, [r3, #0] - 80022c8: 605a str r2, [r3, #4] - 80022ca: 609a str r2, [r3, #8] - 80022cc: 60da str r2, [r3, #12] - 80022ce: 611a str r2, [r3, #16] + 8002410: f107 0314 add.w r3, r7, #20 + 8002414: 2200 movs r2, #0 + 8002416: 601a str r2, [r3, #0] + 8002418: 605a str r2, [r3, #4] + 800241a: 609a str r2, [r3, #8] + 800241c: 60da str r2, [r3, #12] + 800241e: 611a str r2, [r3, #16] RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - 80022d0: 1d3b adds r3, r7, #4 - 80022d2: 2200 movs r2, #0 - 80022d4: 601a str r2, [r3, #0] - 80022d6: 605a str r2, [r3, #4] - 80022d8: 609a str r2, [r3, #8] - 80022da: 60da str r2, [r3, #12] + 8002420: 1d3b adds r3, r7, #4 + 8002422: 2200 movs r2, #0 + 8002424: 601a str r2, [r3, #0] + 8002426: 605a str r2, [r3, #4] + 8002428: 609a str r2, [r3, #8] + 800242a: 60da str r2, [r3, #12] /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; - 80022dc: 2301 movs r3, #1 - 80022de: 62bb str r3, [r7, #40] @ 0x28 + 800242c: 2301 movs r3, #1 + 800242e: 62bb str r3, [r7, #40] @ 0x28 RCC_OscInitStruct.HSEState = RCC_HSE_ON; - 80022e0: f44f 3380 mov.w r3, #65536 @ 0x10000 - 80022e4: 62fb str r3, [r7, #44] @ 0x2c + 8002430: f44f 3380 mov.w r3, #65536 @ 0x10000 + 8002434: 62fb str r3, [r7, #44] @ 0x2c RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; - 80022e6: 2300 movs r3, #0 - 80022e8: 647b str r3, [r7, #68] @ 0x44 + 8002436: 2300 movs r3, #0 + 8002438: 647b str r3, [r7, #68] @ 0x44 if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - 80022ea: f107 0328 add.w r3, r7, #40 @ 0x28 - 80022ee: 4618 mov r0, r3 - 80022f0: f002 fa3a bl 8004768 - 80022f4: 4603 mov r3, r0 - 80022f6: 2b00 cmp r3, #0 - 80022f8: d001 beq.n 80022fe + 800243a: f107 0328 add.w r3, r7, #40 @ 0x28 + 800243e: 4618 mov r0, r3 + 8002440: f002 fae2 bl 8004a08 + 8002444: 4603 mov r3, r0 + 8002446: 2b00 cmp r3, #0 + 8002448: d001 beq.n 800244e { Error_Handler(); - 80022fa: f000 f953 bl 80025a4 + 800244a: f000 fa1f bl 800288c } /** Initializes the CPU, AHB and APB buses clocks */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK - 80022fe: 230f movs r3, #15 - 8002300: 617b str r3, [r7, #20] + 800244e: 230f movs r3, #15 + 8002450: 617b str r3, [r7, #20] |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSE; - 8002302: 2301 movs r3, #1 - 8002304: 61bb str r3, [r7, #24] + 8002452: 2301 movs r3, #1 + 8002454: 61bb str r3, [r7, #24] RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - 8002306: 2300 movs r3, #0 - 8002308: 61fb str r3, [r7, #28] + 8002456: 2300 movs r3, #0 + 8002458: 61fb str r3, [r7, #28] RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; - 800230a: 2300 movs r3, #0 - 800230c: 623b str r3, [r7, #32] + 800245a: 2300 movs r3, #0 + 800245c: 623b str r3, [r7, #32] RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; - 800230e: 2300 movs r3, #0 - 8002310: 627b str r3, [r7, #36] @ 0x24 + 800245e: 2300 movs r3, #0 + 8002460: 627b str r3, [r7, #36] @ 0x24 if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) - 8002312: f107 0314 add.w r3, r7, #20 - 8002316: 2100 movs r1, #0 - 8002318: 4618 mov r0, r3 - 800231a: f002 fca7 bl 8004c6c - 800231e: 4603 mov r3, r0 - 8002320: 2b00 cmp r3, #0 - 8002322: d001 beq.n 8002328 + 8002462: f107 0314 add.w r3, r7, #20 + 8002466: 2100 movs r1, #0 + 8002468: 4618 mov r0, r3 + 800246a: f002 fd4f bl 8004f0c + 800246e: 4603 mov r3, r0 + 8002470: 2b00 cmp r3, #0 + 8002472: d001 beq.n 8002478 { Error_Handler(); - 8002324: f000 f93e bl 80025a4 + 8002474: f000 fa0a bl 800288c } PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC; - 8002328: 2302 movs r3, #2 - 800232a: 607b str r3, [r7, #4] + 8002478: 2302 movs r3, #2 + 800247a: 607b str r3, [r7, #4] PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV8; - 800232c: f44f 4340 mov.w r3, #49152 @ 0xc000 - 8002330: 60fb str r3, [r7, #12] + 800247c: f44f 4340 mov.w r3, #49152 @ 0xc000 + 8002480: 60fb str r3, [r7, #12] if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - 8002332: 1d3b adds r3, r7, #4 - 8002334: 4618 mov r0, r3 - 8002336: f002 fe29 bl 8004f8c - 800233a: 4603 mov r3, r0 - 800233c: 2b00 cmp r3, #0 - 800233e: d001 beq.n 8002344 + 8002482: 1d3b adds r3, r7, #4 + 8002484: 4618 mov r0, r3 + 8002486: f002 fed1 bl 800522c + 800248a: 4603 mov r3, r0 + 800248c: 2b00 cmp r3, #0 + 800248e: d001 beq.n 8002494 { Error_Handler(); - 8002340: f000 f930 bl 80025a4 + 8002490: f000 f9fc bl 800288c } } - 8002344: bf00 nop - 8002346: 3750 adds r7, #80 @ 0x50 - 8002348: 46bd mov sp, r7 - 800234a: bd80 pop {r7, pc} + 8002494: bf00 nop + 8002496: 3750 adds r7, #80 @ 0x50 + 8002498: 46bd mov sp, r7 + 800249a: bd80 pop {r7, pc} -0800234c : +0800249c : * @param val - value to be converted * * @return None. *******************************************************************************/ -void FloatToString(char *buf, double val) +void FloatToString(uint8_t *buf, double val) { - 800234c: b5b0 push {r4, r5, r7, lr} - 800234e: b096 sub sp, #88 @ 0x58 - 8002350: af00 add r7, sp, #0 - 8002352: 60f8 str r0, [r7, #12] - 8002354: e9c7 2300 strd r2, r3, [r7] + 800249c: b5b0 push {r4, r5, r7, lr} + 800249e: b096 sub sp, #88 @ 0x58 + 80024a0: af00 add r7, sp, #0 + 80024a2: 60f8 str r0, [r7, #12] + 80024a4: e9c7 2300 strd r2, r3, [r7] char temp[20]; // Buffer auxiliar para construção segura int i = 0; - 8002358: 2300 movs r3, #0 - 800235a: 657b str r3, [r7, #84] @ 0x54 + 80024a8: 2300 movs r3, #0 + 80024aa: 657b str r3, [r7, #84] @ 0x54 // 1. Tratar sinal negativo if (val < 0) { - 800235c: f04f 0200 mov.w r2, #0 - 8002360: f04f 0300 mov.w r3, #0 - 8002364: e9d7 0100 ldrd r0, r1, [r7] - 8002368: f7fe fa3e bl 80007e8 <__aeabi_dcmplt> - 800236c: 4603 mov r3, r0 - 800236e: 2b00 cmp r3, #0 - 8002370: d00d beq.n 800238e + 80024ac: f04f 0200 mov.w r2, #0 + 80024b0: f04f 0300 mov.w r3, #0 + 80024b4: e9d7 0100 ldrd r0, r1, [r7] + 80024b8: f7fe f996 bl 80007e8 <__aeabi_dcmplt> + 80024bc: 4603 mov r3, r0 + 80024be: 2b00 cmp r3, #0 + 80024c0: d00d beq.n 80024de temp[i++] = '-'; - 8002372: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002374: 1c5a adds r2, r3, #1 - 8002376: 657a str r2, [r7, #84] @ 0x54 - 8002378: 3358 adds r3, #88 @ 0x58 - 800237a: 443b add r3, r7 - 800237c: 222d movs r2, #45 @ 0x2d - 800237e: f803 2c30 strb.w r2, [r3, #-48] + 80024c2: 6d7b ldr r3, [r7, #84] @ 0x54 + 80024c4: 1c5a adds r2, r3, #1 + 80024c6: 657a str r2, [r7, #84] @ 0x54 + 80024c8: 3358 adds r3, #88 @ 0x58 + 80024ca: 443b add r3, r7 + 80024cc: 222d movs r2, #45 @ 0x2d + 80024ce: f803 2c30 strb.w r2, [r3, #-48] val = -val; - 8002382: 683c ldr r4, [r7, #0] - 8002384: 687b ldr r3, [r7, #4] - 8002386: f083 4500 eor.w r5, r3, #2147483648 @ 0x80000000 - 800238a: e9c7 4500 strd r4, r5, [r7] + 80024d2: 683c ldr r4, [r7, #0] + 80024d4: 687b ldr r3, [r7, #4] + 80024d6: f083 4500 eor.w r5, r3, #2147483648 @ 0x80000000 + 80024da: e9c7 4500 strd r4, r5, [r7] } // 2. Separar parte inteira e fracionária long intPart = (long)val; - 800238e: e9d7 0100 ldrd r0, r1, [r7] - 8002392: f7fe fa51 bl 8000838 <__aeabi_d2iz> - 8002396: 4603 mov r3, r0 - 8002398: 653b str r3, [r7, #80] @ 0x50 + 80024de: e9d7 0100 ldrd r0, r1, [r7] + 80024e2: f7fe f9a9 bl 8000838 <__aeabi_d2iz> + 80024e6: 4603 mov r3, r0 + 80024e8: 653b str r3, [r7, #80] @ 0x50 // Multiplicamos por 1000 para obter 3 casas decimais fixas int fracPart = (int)((val - (double)intPart) * 1000.0 + 0.5); - 800239a: 6d38 ldr r0, [r7, #80] @ 0x50 - 800239c: f7fe f95a bl 8000654 <__aeabi_i2d> - 80023a0: 4602 mov r2, r0 - 80023a2: 460b mov r3, r1 - 80023a4: e9d7 0100 ldrd r0, r1, [r7] - 80023a8: f7fe f806 bl 80003b8 <__aeabi_dsub> - 80023ac: 4602 mov r2, r0 - 80023ae: 460b mov r3, r1 - 80023b0: 4610 mov r0, r2 - 80023b2: 4619 mov r1, r3 - 80023b4: f04f 0200 mov.w r2, #0 - 80023b8: 4b6a ldr r3, [pc, #424] @ (8002564 ) - 80023ba: f7fd fecf bl 800015c <__aeabi_dmul> - 80023be: 4602 mov r2, r0 - 80023c0: 460b mov r3, r1 - 80023c2: 4610 mov r0, r2 - 80023c4: 4619 mov r1, r3 - 80023c6: f04f 0200 mov.w r2, #0 - 80023ca: 4b67 ldr r3, [pc, #412] @ (8002568 ) - 80023cc: f7fd fff6 bl 80003bc <__adddf3> - 80023d0: 4602 mov r2, r0 - 80023d2: 460b mov r3, r1 - 80023d4: 4610 mov r0, r2 - 80023d6: 4619 mov r1, r3 - 80023d8: f7fe fa2e bl 8000838 <__aeabi_d2iz> - 80023dc: 4603 mov r3, r0 - 80023de: 63fb str r3, [r7, #60] @ 0x3c + 80024ea: 6d38 ldr r0, [r7, #80] @ 0x50 + 80024ec: f7fe f8b2 bl 8000654 <__aeabi_i2d> + 80024f0: 4602 mov r2, r0 + 80024f2: 460b mov r3, r1 + 80024f4: e9d7 0100 ldrd r0, r1, [r7] + 80024f8: f7fd ff5e bl 80003b8 <__aeabi_dsub> + 80024fc: 4602 mov r2, r0 + 80024fe: 460b mov r3, r1 + 8002500: 4610 mov r0, r2 + 8002502: 4619 mov r1, r3 + 8002504: f04f 0200 mov.w r2, #0 + 8002508: 4b6a ldr r3, [pc, #424] @ (80026b4 ) + 800250a: f7fd fe27 bl 800015c <__aeabi_dmul> + 800250e: 4602 mov r2, r0 + 8002510: 460b mov r3, r1 + 8002512: 4610 mov r0, r2 + 8002514: 4619 mov r1, r3 + 8002516: f04f 0200 mov.w r2, #0 + 800251a: 4b67 ldr r3, [pc, #412] @ (80026b8 ) + 800251c: f7fd ff4e bl 80003bc <__adddf3> + 8002520: 4602 mov r2, r0 + 8002522: 460b mov r3, r1 + 8002524: 4610 mov r0, r2 + 8002526: 4619 mov r1, r3 + 8002528: f7fe f986 bl 8000838 <__aeabi_d2iz> + 800252c: 4603 mov r3, r0 + 800252e: 63fb str r3, [r7, #60] @ 0x3c // 3. Converter a parte inteira para o buffer temp // Usamos um buffer temporário de inversão para não precisar de lógica complexa de ponteiro char intRev[12]; int j = 0; - 80023e0: 2300 movs r3, #0 - 80023e2: 64fb str r3, [r7, #76] @ 0x4c + 8002530: 2300 movs r3, #0 + 8002532: 64fb str r3, [r7, #76] @ 0x4c if (intPart == 0) { - 80023e4: 6d3b ldr r3, [r7, #80] @ 0x50 - 80023e6: 2b00 cmp r3, #0 - 80023e8: d126 bne.n 8002438 + 8002534: 6d3b ldr r3, [r7, #80] @ 0x50 + 8002536: 2b00 cmp r3, #0 + 8002538: d126 bne.n 8002588 intRev[j++] = '0'; - 80023ea: 6cfb ldr r3, [r7, #76] @ 0x4c - 80023ec: 1c5a adds r2, r3, #1 - 80023ee: 64fa str r2, [r7, #76] @ 0x4c - 80023f0: 3358 adds r3, #88 @ 0x58 - 80023f2: 443b add r3, r7 - 80023f4: 2230 movs r2, #48 @ 0x30 - 80023f6: f803 2c3c strb.w r2, [r3, #-60] - 80023fa: e020 b.n 800243e + 800253a: 6cfb ldr r3, [r7, #76] @ 0x4c + 800253c: 1c5a adds r2, r3, #1 + 800253e: 64fa str r2, [r7, #76] @ 0x4c + 8002540: 3358 adds r3, #88 @ 0x58 + 8002542: 443b add r3, r7 + 8002544: 2230 movs r2, #48 @ 0x30 + 8002546: f803 2c3c strb.w r2, [r3, #-60] + 800254a: e020 b.n 800258e } else { while (intPart > 0) { intRev[j++] = (intPart % 10) + '0'; - 80023fc: 6d3a ldr r2, [r7, #80] @ 0x50 - 80023fe: 4b5b ldr r3, [pc, #364] @ (800256c ) - 8002400: fb83 1302 smull r1, r3, r3, r2 - 8002404: 1099 asrs r1, r3, #2 - 8002406: 17d3 asrs r3, r2, #31 - 8002408: 1ac9 subs r1, r1, r3 - 800240a: 460b mov r3, r1 - 800240c: 009b lsls r3, r3, #2 - 800240e: 440b add r3, r1 - 8002410: 005b lsls r3, r3, #1 - 8002412: 1ad1 subs r1, r2, r3 - 8002414: b2ca uxtb r2, r1 - 8002416: 6cfb ldr r3, [r7, #76] @ 0x4c - 8002418: 1c59 adds r1, r3, #1 - 800241a: 64f9 str r1, [r7, #76] @ 0x4c - 800241c: 3230 adds r2, #48 @ 0x30 - 800241e: b2d2 uxtb r2, r2 - 8002420: 3358 adds r3, #88 @ 0x58 - 8002422: 443b add r3, r7 - 8002424: f803 2c3c strb.w r2, [r3, #-60] + 800254c: 6d3a ldr r2, [r7, #80] @ 0x50 + 800254e: 4b5b ldr r3, [pc, #364] @ (80026bc ) + 8002550: fb83 1302 smull r1, r3, r3, r2 + 8002554: 1099 asrs r1, r3, #2 + 8002556: 17d3 asrs r3, r2, #31 + 8002558: 1ac9 subs r1, r1, r3 + 800255a: 460b mov r3, r1 + 800255c: 009b lsls r3, r3, #2 + 800255e: 440b add r3, r1 + 8002560: 005b lsls r3, r3, #1 + 8002562: 1ad1 subs r1, r2, r3 + 8002564: b2ca uxtb r2, r1 + 8002566: 6cfb ldr r3, [r7, #76] @ 0x4c + 8002568: 1c59 adds r1, r3, #1 + 800256a: 64f9 str r1, [r7, #76] @ 0x4c + 800256c: 3230 adds r2, #48 @ 0x30 + 800256e: b2d2 uxtb r2, r2 + 8002570: 3358 adds r3, #88 @ 0x58 + 8002572: 443b add r3, r7 + 8002574: f803 2c3c strb.w r2, [r3, #-60] intPart /= 10; - 8002428: 6d3b ldr r3, [r7, #80] @ 0x50 - 800242a: 4a50 ldr r2, [pc, #320] @ (800256c ) - 800242c: fb82 1203 smull r1, r2, r2, r3 - 8002430: 1092 asrs r2, r2, #2 - 8002432: 17db asrs r3, r3, #31 - 8002434: 1ad3 subs r3, r2, r3 - 8002436: 653b str r3, [r7, #80] @ 0x50 + 8002578: 6d3b ldr r3, [r7, #80] @ 0x50 + 800257a: 4a50 ldr r2, [pc, #320] @ (80026bc ) + 800257c: fb82 1203 smull r1, r2, r2, r3 + 8002580: 1092 asrs r2, r2, #2 + 8002582: 17db asrs r3, r3, #31 + 8002584: 1ad3 subs r3, r2, r3 + 8002586: 653b str r3, [r7, #80] @ 0x50 while (intPart > 0) { - 8002438: 6d3b ldr r3, [r7, #80] @ 0x50 - 800243a: 2b00 cmp r3, #0 - 800243c: dcde bgt.n 80023fc + 8002588: 6d3b ldr r3, [r7, #80] @ 0x50 + 800258a: 2b00 cmp r3, #0 + 800258c: dcde bgt.n 800254c } } // Inverter a parte inteira de volta para o buffer principal for (int k = j - 1; k >= 0; k--) { - 800243e: 6cfb ldr r3, [r7, #76] @ 0x4c - 8002440: 3b01 subs r3, #1 - 8002442: 64bb str r3, [r7, #72] @ 0x48 - 8002444: e00e b.n 8002464 + 800258e: 6cfb ldr r3, [r7, #76] @ 0x4c + 8002590: 3b01 subs r3, #1 + 8002592: 64bb str r3, [r7, #72] @ 0x48 + 8002594: e00e b.n 80025b4 temp[i++] = intRev[k]; - 8002446: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002448: 1c5a adds r2, r3, #1 - 800244a: 657a str r2, [r7, #84] @ 0x54 - 800244c: f107 011c add.w r1, r7, #28 - 8002450: 6cba ldr r2, [r7, #72] @ 0x48 - 8002452: 440a add r2, r1 - 8002454: 7812 ldrb r2, [r2, #0] - 8002456: 3358 adds r3, #88 @ 0x58 - 8002458: 443b add r3, r7 - 800245a: f803 2c30 strb.w r2, [r3, #-48] + 8002596: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002598: 1c5a adds r2, r3, #1 + 800259a: 657a str r2, [r7, #84] @ 0x54 + 800259c: f107 011c add.w r1, r7, #28 + 80025a0: 6cba ldr r2, [r7, #72] @ 0x48 + 80025a2: 440a add r2, r1 + 80025a4: 7812 ldrb r2, [r2, #0] + 80025a6: 3358 adds r3, #88 @ 0x58 + 80025a8: 443b add r3, r7 + 80025aa: f803 2c30 strb.w r2, [r3, #-48] for (int k = j - 1; k >= 0; k--) { - 800245e: 6cbb ldr r3, [r7, #72] @ 0x48 - 8002460: 3b01 subs r3, #1 - 8002462: 64bb str r3, [r7, #72] @ 0x48 - 8002464: 6cbb ldr r3, [r7, #72] @ 0x48 - 8002466: 2b00 cmp r3, #0 - 8002468: daed bge.n 8002446 + 80025ae: 6cbb ldr r3, [r7, #72] @ 0x48 + 80025b0: 3b01 subs r3, #1 + 80025b2: 64bb str r3, [r7, #72] @ 0x48 + 80025b4: 6cbb ldr r3, [r7, #72] @ 0x48 + 80025b6: 2b00 cmp r3, #0 + 80025b8: daed bge.n 8002596 } // 4. Adicionar o ponto decimal e a parte fracionária (sempre 3 casas) temp[i++] = '.'; - 800246a: 6d7b ldr r3, [r7, #84] @ 0x54 - 800246c: 1c5a adds r2, r3, #1 - 800246e: 657a str r2, [r7, #84] @ 0x54 - 8002470: 3358 adds r3, #88 @ 0x58 - 8002472: 443b add r3, r7 - 8002474: 222e movs r2, #46 @ 0x2e - 8002476: f803 2c30 strb.w r2, [r3, #-48] + 80025ba: 6d7b ldr r3, [r7, #84] @ 0x54 + 80025bc: 1c5a adds r2, r3, #1 + 80025be: 657a str r2, [r7, #84] @ 0x54 + 80025c0: 3358 adds r3, #88 @ 0x58 + 80025c2: 443b add r3, r7 + 80025c4: 222e movs r2, #46 @ 0x2e + 80025c6: f803 2c30 strb.w r2, [r3, #-48] // Garantir que a parte fracionária tenha sempre 3 dígitos (ex: .005 em vez de .5) int fracBuffer[3]; fracBuffer[2] = fracPart % 10; // Unidade - 800247a: 6bf9 ldr r1, [r7, #60] @ 0x3c - 800247c: 4b3b ldr r3, [pc, #236] @ (800256c ) - 800247e: fb83 2301 smull r2, r3, r3, r1 - 8002482: 109a asrs r2, r3, #2 - 8002484: 17cb asrs r3, r1, #31 - 8002486: 1ad2 subs r2, r2, r3 - 8002488: 4613 mov r3, r2 - 800248a: 009b lsls r3, r3, #2 - 800248c: 4413 add r3, r2 - 800248e: 005b lsls r3, r3, #1 - 8002490: 1aca subs r2, r1, r3 - 8002492: 61ba str r2, [r7, #24] + 80025ca: 6bf9 ldr r1, [r7, #60] @ 0x3c + 80025cc: 4b3b ldr r3, [pc, #236] @ (80026bc ) + 80025ce: fb83 2301 smull r2, r3, r3, r1 + 80025d2: 109a asrs r2, r3, #2 + 80025d4: 17cb asrs r3, r1, #31 + 80025d6: 1ad2 subs r2, r2, r3 + 80025d8: 4613 mov r3, r2 + 80025da: 009b lsls r3, r3, #2 + 80025dc: 4413 add r3, r2 + 80025de: 005b lsls r3, r3, #1 + 80025e0: 1aca subs r2, r1, r3 + 80025e2: 61ba str r2, [r7, #24] fracBuffer[1] = (fracPart / 10) % 10; // Dezena - 8002494: 6bfb ldr r3, [r7, #60] @ 0x3c - 8002496: 4a35 ldr r2, [pc, #212] @ (800256c ) - 8002498: fb82 1203 smull r1, r2, r2, r3 - 800249c: 1092 asrs r2, r2, #2 - 800249e: 17db asrs r3, r3, #31 - 80024a0: 1ad1 subs r1, r2, r3 - 80024a2: 4b32 ldr r3, [pc, #200] @ (800256c ) - 80024a4: fb83 2301 smull r2, r3, r3, r1 - 80024a8: 109a asrs r2, r3, #2 - 80024aa: 17cb asrs r3, r1, #31 - 80024ac: 1ad2 subs r2, r2, r3 - 80024ae: 4613 mov r3, r2 - 80024b0: 009b lsls r3, r3, #2 - 80024b2: 4413 add r3, r2 - 80024b4: 005b lsls r3, r3, #1 - 80024b6: 1aca subs r2, r1, r3 - 80024b8: 617a str r2, [r7, #20] + 80025e4: 6bfb ldr r3, [r7, #60] @ 0x3c + 80025e6: 4a35 ldr r2, [pc, #212] @ (80026bc ) + 80025e8: fb82 1203 smull r1, r2, r2, r3 + 80025ec: 1092 asrs r2, r2, #2 + 80025ee: 17db asrs r3, r3, #31 + 80025f0: 1ad1 subs r1, r2, r3 + 80025f2: 4b32 ldr r3, [pc, #200] @ (80026bc ) + 80025f4: fb83 2301 smull r2, r3, r3, r1 + 80025f8: 109a asrs r2, r3, #2 + 80025fa: 17cb asrs r3, r1, #31 + 80025fc: 1ad2 subs r2, r2, r3 + 80025fe: 4613 mov r3, r2 + 8002600: 009b lsls r3, r3, #2 + 8002602: 4413 add r3, r2 + 8002604: 005b lsls r3, r3, #1 + 8002606: 1aca subs r2, r1, r3 + 8002608: 617a str r2, [r7, #20] fracBuffer[0] = (fracPart / 100) % 10; // Centena - 80024ba: 6bfb ldr r3, [r7, #60] @ 0x3c - 80024bc: 4a2c ldr r2, [pc, #176] @ (8002570 ) - 80024be: fb82 1203 smull r1, r2, r2, r3 - 80024c2: 1152 asrs r2, r2, #5 - 80024c4: 17db asrs r3, r3, #31 - 80024c6: 1ad1 subs r1, r2, r3 - 80024c8: 4b28 ldr r3, [pc, #160] @ (800256c ) - 80024ca: fb83 2301 smull r2, r3, r3, r1 - 80024ce: 109a asrs r2, r3, #2 - 80024d0: 17cb asrs r3, r1, #31 - 80024d2: 1ad2 subs r2, r2, r3 - 80024d4: 4613 mov r3, r2 - 80024d6: 009b lsls r3, r3, #2 - 80024d8: 4413 add r3, r2 - 80024da: 005b lsls r3, r3, #1 - 80024dc: 1aca subs r2, r1, r3 - 80024de: 613a str r2, [r7, #16] + 800260a: 6bfb ldr r3, [r7, #60] @ 0x3c + 800260c: 4a2c ldr r2, [pc, #176] @ (80026c0 ) + 800260e: fb82 1203 smull r1, r2, r2, r3 + 8002612: 1152 asrs r2, r2, #5 + 8002614: 17db asrs r3, r3, #31 + 8002616: 1ad1 subs r1, r2, r3 + 8002618: 4b28 ldr r3, [pc, #160] @ (80026bc ) + 800261a: fb83 2301 smull r2, r3, r3, r1 + 800261e: 109a asrs r2, r3, #2 + 8002620: 17cb asrs r3, r1, #31 + 8002622: 1ad2 subs r2, r2, r3 + 8002624: 4613 mov r3, r2 + 8002626: 009b lsls r3, r3, #2 + 8002628: 4413 add r3, r2 + 800262a: 005b lsls r3, r3, #1 + 800262c: 1aca subs r2, r1, r3 + 800262e: 613a str r2, [r7, #16] for (int k = 2; k >= 0; k--) { - 80024e0: 2302 movs r3, #2 - 80024e2: 647b str r3, [r7, #68] @ 0x44 - 80024e4: e012 b.n 800250c + 8002630: 2302 movs r3, #2 + 8002632: 647b str r3, [r7, #68] @ 0x44 + 8002634: e012 b.n 800265c temp[i++] = fracBuffer[k] + '0'; - 80024e6: 6c7b ldr r3, [r7, #68] @ 0x44 - 80024e8: 009b lsls r3, r3, #2 - 80024ea: 3358 adds r3, #88 @ 0x58 - 80024ec: 443b add r3, r7 - 80024ee: f853 3c48 ldr.w r3, [r3, #-72] - 80024f2: b2da uxtb r2, r3 - 80024f4: 6d7b ldr r3, [r7, #84] @ 0x54 - 80024f6: 1c59 adds r1, r3, #1 - 80024f8: 6579 str r1, [r7, #84] @ 0x54 - 80024fa: 3230 adds r2, #48 @ 0x30 - 80024fc: b2d2 uxtb r2, r2 - 80024fe: 3358 adds r3, #88 @ 0x58 - 8002500: 443b add r3, r7 - 8002502: f803 2c30 strb.w r2, [r3, #-48] + 8002636: 6c7b ldr r3, [r7, #68] @ 0x44 + 8002638: 009b lsls r3, r3, #2 + 800263a: 3358 adds r3, #88 @ 0x58 + 800263c: 443b add r3, r7 + 800263e: f853 3c48 ldr.w r3, [r3, #-72] + 8002642: b2da uxtb r2, r3 + 8002644: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002646: 1c59 adds r1, r3, #1 + 8002648: 6579 str r1, [r7, #84] @ 0x54 + 800264a: 3230 adds r2, #48 @ 0x30 + 800264c: b2d2 uxtb r2, r2 + 800264e: 3358 adds r3, #88 @ 0x58 + 8002650: 443b add r3, r7 + 8002652: f803 2c30 strb.w r2, [r3, #-48] for (int k = 2; k >= 0; k--) { - 8002506: 6c7b ldr r3, [r7, #68] @ 0x44 - 8002508: 3b01 subs r3, #1 - 800250a: 647b str r3, [r7, #68] @ 0x44 - 800250c: 6c7b ldr r3, [r7, #68] @ 0x44 - 800250e: 2b00 cmp r3, #0 - 8002510: dae9 bge.n 80024e6 + 8002656: 6c7b ldr r3, [r7, #68] @ 0x44 + 8002658: 3b01 subs r3, #1 + 800265a: 647b str r3, [r7, #68] @ 0x44 + 800265c: 6c7b ldr r3, [r7, #68] @ 0x44 + 800265e: 2b00 cmp r3, #0 + 8002660: dae9 bge.n 8002636 } // 5. Finalizar a string com o caractere nulo temp[i] = '\0'; - 8002512: f107 0228 add.w r2, r7, #40 @ 0x28 - 8002516: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002518: 4413 add r3, r2 - 800251a: 2200 movs r2, #0 - 800251c: 701a strb r2, [r3, #0] + 8002662: f107 0228 add.w r2, r7, #40 @ 0x28 + 8002666: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002668: 4413 add r3, r2 + 800266a: 2200 movs r2, #0 + 800266c: 701a strb r2, [r3, #0] // 6. Copiar para o buffer de destino final (sem risco de lixo) int destIdx = 0; - 800251e: 2300 movs r3, #0 - 8002520: 643b str r3, [r7, #64] @ 0x40 + 800266e: 2300 movs r3, #0 + 8002670: 643b str r3, [r7, #64] @ 0x40 while (temp[destIdx] != '\0' && destIdx < 15) { // Limite de segurança - 8002522: e00b b.n 800253c + 8002672: e00b b.n 800268c buf[destIdx] = temp[destIdx]; - 8002524: 6c3b ldr r3, [r7, #64] @ 0x40 - 8002526: 68fa ldr r2, [r7, #12] - 8002528: 4413 add r3, r2 - 800252a: f107 0128 add.w r1, r7, #40 @ 0x28 - 800252e: 6c3a ldr r2, [r7, #64] @ 0x40 - 8002530: 440a add r2, r1 - 8002532: 7812 ldrb r2, [r2, #0] - 8002534: 701a strb r2, [r3, #0] + 8002674: 6c3b ldr r3, [r7, #64] @ 0x40 + 8002676: 68fa ldr r2, [r7, #12] + 8002678: 4413 add r3, r2 + 800267a: f107 0128 add.w r1, r7, #40 @ 0x28 + 800267e: 6c3a ldr r2, [r7, #64] @ 0x40 + 8002680: 440a add r2, r1 + 8002682: 7812 ldrb r2, [r2, #0] + 8002684: 701a strb r2, [r3, #0] destIdx++; - 8002536: 6c3b ldr r3, [r7, #64] @ 0x40 - 8002538: 3301 adds r3, #1 - 800253a: 643b str r3, [r7, #64] @ 0x40 + 8002686: 6c3b ldr r3, [r7, #64] @ 0x40 + 8002688: 3301 adds r3, #1 + 800268a: 643b str r3, [r7, #64] @ 0x40 while (temp[destIdx] != '\0' && destIdx < 15) { // Limite de segurança - 800253c: f107 0228 add.w r2, r7, #40 @ 0x28 - 8002540: 6c3b ldr r3, [r7, #64] @ 0x40 - 8002542: 4413 add r3, r2 - 8002544: 781b ldrb r3, [r3, #0] - 8002546: 2b00 cmp r3, #0 - 8002548: d002 beq.n 8002550 - 800254a: 6c3b ldr r3, [r7, #64] @ 0x40 - 800254c: 2b0e cmp r3, #14 - 800254e: dde9 ble.n 8002524 + 800268c: f107 0228 add.w r2, r7, #40 @ 0x28 + 8002690: 6c3b ldr r3, [r7, #64] @ 0x40 + 8002692: 4413 add r3, r2 + 8002694: 781b ldrb r3, [r3, #0] + 8002696: 2b00 cmp r3, #0 + 8002698: d002 beq.n 80026a0 + 800269a: 6c3b ldr r3, [r7, #64] @ 0x40 + 800269c: 2b0e cmp r3, #14 + 800269e: dde9 ble.n 8002674 } buf[destIdx] = '\0'; - 8002550: 6c3b ldr r3, [r7, #64] @ 0x40 - 8002552: 68fa ldr r2, [r7, #12] - 8002554: 4413 add r3, r2 - 8002556: 2200 movs r2, #0 - 8002558: 701a strb r2, [r3, #0] + 80026a0: 6c3b ldr r3, [r7, #64] @ 0x40 + 80026a2: 68fa ldr r2, [r7, #12] + 80026a4: 4413 add r3, r2 + 80026a6: 2200 movs r2, #0 + 80026a8: 701a strb r2, [r3, #0] } - 800255a: bf00 nop - 800255c: 3758 adds r7, #88 @ 0x58 - 800255e: 46bd mov sp, r7 - 8002560: bdb0 pop {r4, r5, r7, pc} - 8002562: bf00 nop - 8002564: 408f4000 .word 0x408f4000 - 8002568: 3fe00000 .word 0x3fe00000 - 800256c: 66666667 .word 0x66666667 - 8002570: 51eb851f .word 0x51eb851f + 80026aa: bf00 nop + 80026ac: 3758 adds r7, #88 @ 0x58 + 80026ae: 46bd mov sp, r7 + 80026b0: bdb0 pop {r4, r5, r7, pc} + 80026b2: bf00 nop + 80026b4: 408f4000 .word 0x408f4000 + 80026b8: 3fe00000 .word 0x3fe00000 + 80026bc: 66666667 .word 0x66666667 + 80026c0: 51eb851f .word 0x51eb851f -08002574 : +080026c4 : + + + +void intToStr(int16_t N, uint8_t *str) +{ + 80026c4: b480 push {r7} + 80026c6: b087 sub sp, #28 + 80026c8: af00 add r7, sp, #0 + 80026ca: 4603 mov r3, r0 + 80026cc: 6039 str r1, [r7, #0] + 80026ce: 80fb strh r3, [r7, #6] + int16_t i = 0; + 80026d0: 2300 movs r3, #0 + 80026d2: 82fb strh r3, [r7, #22] + int16_t sign = N; + 80026d4: 88fb ldrh r3, [r7, #6] + 80026d6: 823b strh r3, [r7, #16] + uint8_t max_len = 15; // Tamanho máximo do buffer + 80026d8: 230f movs r3, #15 + 80026da: 73fb strb r3, [r7, #15] + uint8_t width = 4; // mínimo 4 caracteres + 80026dc: 2304 movs r3, #4 + 80026de: 757b strb r3, [r7, #21] + + // Trata o caso do número zero isoladamente + if (N == 0) + 80026e0: f9b7 3006 ldrsh.w r3, [r7, #6] + 80026e4: 2b00 cmp r3, #0 + 80026e6: d127 bne.n 8002738 + { + // Preenche com zeros à esquerda até atingir a largura desejada + while (width > 1 && i < (max_len - 1)) + 80026e8: e00c b.n 8002704 + { + str[i++] = '0'; + 80026ea: f9b7 2016 ldrsh.w r2, [r7, #22] + 80026ee: b293 uxth r3, r2 + 80026f0: 3301 adds r3, #1 + 80026f2: b29b uxth r3, r3 + 80026f4: 82fb strh r3, [r7, #22] + 80026f6: 683b ldr r3, [r7, #0] + 80026f8: 4413 add r3, r2 + 80026fa: 2230 movs r2, #48 @ 0x30 + 80026fc: 701a strb r2, [r3, #0] + width--; + 80026fe: 7d7b ldrb r3, [r7, #21] + 8002700: 3b01 subs r3, #1 + 8002702: 757b strb r3, [r7, #21] + while (width > 1 && i < (max_len - 1)) + 8002704: 7d7b ldrb r3, [r7, #21] + 8002706: 2b01 cmp r3, #1 + 8002708: d905 bls.n 8002716 + 800270a: f9b7 2016 ldrsh.w r2, [r7, #22] + 800270e: 7bfb ldrb r3, [r7, #15] + 8002710: 3b01 subs r3, #1 + 8002712: 429a cmp r2, r3 + 8002714: dbe9 blt.n 80026ea + } + str[i++] = '0'; + 8002716: f9b7 2016 ldrsh.w r2, [r7, #22] + 800271a: b293 uxth r3, r2 + 800271c: 3301 adds r3, #1 + 800271e: b29b uxth r3, r3 + 8002720: 82fb strh r3, [r7, #22] + 8002722: 683b ldr r3, [r7, #0] + 8002724: 4413 add r3, r2 + 8002726: 2230 movs r2, #48 @ 0x30 + 8002728: 701a strb r2, [r3, #0] + str[i] = '\0'; + 800272a: f9b7 3016 ldrsh.w r3, [r7, #22] + 800272e: 683a ldr r2, [r7, #0] + 8002730: 4413 add r3, r2 + 8002732: 2200 movs r2, #0 + 8002734: 701a strb r2, [r3, #0] + return; + 8002736: e08a b.n 800284e + } + + if (N < 0) + 8002738: f9b7 3006 ldrsh.w r3, [r7, #6] + 800273c: 2b00 cmp r3, #0 + 800273e: da2d bge.n 800279c + N = -N; + 8002740: 88fb ldrh r3, [r7, #6] + 8002742: 425b negs r3, r3 + 8002744: b29b uxth r3, r3 + 8002746: 80fb strh r3, [r7, #6] + + // Extração dos dígitos + while (N > 0) + 8002748: e028 b.n 800279c + { + if (i >= (max_len - 1)) + 800274a: f9b7 2016 ldrsh.w r2, [r7, #22] + 800274e: 7bfb ldrb r3, [r7, #15] + 8002750: 3b01 subs r3, #1 + 8002752: 429a cmp r2, r3 + 8002754: da27 bge.n 80027a6 + break; // Proteção de estouro + str[i++] = (N % 10) + '0'; + 8002756: f9b7 2006 ldrsh.w r2, [r7, #6] + 800275a: 4b3f ldr r3, [pc, #252] @ (8002858 ) + 800275c: fb83 1302 smull r1, r3, r3, r2 + 8002760: 1099 asrs r1, r3, #2 + 8002762: 17d3 asrs r3, r2, #31 + 8002764: 1ac9 subs r1, r1, r3 + 8002766: 460b mov r3, r1 + 8002768: 009b lsls r3, r3, #2 + 800276a: 440b add r3, r1 + 800276c: 005b lsls r3, r3, #1 + 800276e: 1ad3 subs r3, r2, r3 + 8002770: b21b sxth r3, r3 + 8002772: b2da uxtb r2, r3 + 8002774: f9b7 1016 ldrsh.w r1, [r7, #22] + 8002778: b28b uxth r3, r1 + 800277a: 3301 adds r3, #1 + 800277c: b29b uxth r3, r3 + 800277e: 82fb strh r3, [r7, #22] + 8002780: 683b ldr r3, [r7, #0] + 8002782: 440b add r3, r1 + 8002784: 3230 adds r2, #48 @ 0x30 + 8002786: b2d2 uxtb r2, r2 + 8002788: 701a strb r2, [r3, #0] + N /= 10; + 800278a: f9b7 3006 ldrsh.w r3, [r7, #6] + 800278e: 4a32 ldr r2, [pc, #200] @ (8002858 ) + 8002790: fb82 1203 smull r1, r2, r2, r3 + 8002794: 1092 asrs r2, r2, #2 + 8002796: 17db asrs r3, r3, #31 + 8002798: 1ad3 subs r3, r2, r3 + 800279a: 80fb strh r3, [r7, #6] + while (N > 0) + 800279c: f9b7 3006 ldrsh.w r3, [r7, #6] + 80027a0: 2b00 cmp r3, #0 + 80027a2: dcd2 bgt.n 800274a + 80027a4: e000 b.n 80027a8 + break; // Proteção de estouro + 80027a6: bf00 nop + } + + // Adiciona o sinal de menos se necessário + if (sign < 0) + 80027a8: f9b7 3010 ldrsh.w r3, [r7, #16] + 80027ac: 2b00 cmp r3, #0 + 80027ae: da1a bge.n 80027e6 + { + if (i < (max_len - 1)) + 80027b0: f9b7 2016 ldrsh.w r2, [r7, #22] + 80027b4: 7bfb ldrb r3, [r7, #15] + 80027b6: 3b01 subs r3, #1 + 80027b8: 429a cmp r2, r3 + 80027ba: da14 bge.n 80027e6 + str[i++] = '-'; + 80027bc: f9b7 2016 ldrsh.w r2, [r7, #22] + 80027c0: b293 uxth r3, r2 + 80027c2: 3301 adds r3, #1 + 80027c4: b29b uxth r3, r3 + 80027c6: 82fb strh r3, [r7, #22] + 80027c8: 683b ldr r3, [r7, #0] + 80027ca: 4413 add r3, r2 + 80027cc: 222d movs r2, #45 @ 0x2d + 80027ce: 701a strb r2, [r3, #0] + } + + // Preenche com zeros à esquerda (considerando o espaço ocupado pelos dígitos e sinal) + while (i < width && i < (max_len - 1)) + 80027d0: e009 b.n 80027e6 + { + str[i++] = '0'; + 80027d2: f9b7 2016 ldrsh.w r2, [r7, #22] + 80027d6: b293 uxth r3, r2 + 80027d8: 3301 adds r3, #1 + 80027da: b29b uxth r3, r3 + 80027dc: 82fb strh r3, [r7, #22] + 80027de: 683b ldr r3, [r7, #0] + 80027e0: 4413 add r3, r2 + 80027e2: 2230 movs r2, #48 @ 0x30 + 80027e4: 701a strb r2, [r3, #0] + while (i < width && i < (max_len - 1)) + 80027e6: f9b7 2016 ldrsh.w r2, [r7, #22] + 80027ea: 7d7b ldrb r3, [r7, #21] + 80027ec: 429a cmp r2, r3 + 80027ee: da05 bge.n 80027fc + 80027f0: f9b7 2016 ldrsh.w r2, [r7, #22] + 80027f4: 7bfb ldrb r3, [r7, #15] + 80027f6: 3b01 subs r3, #1 + 80027f8: 429a cmp r2, r3 + 80027fa: dbea blt.n 80027d2 + } + + str[i] = '\0'; + 80027fc: f9b7 3016 ldrsh.w r3, [r7, #22] + 8002800: 683a ldr r2, [r7, #0] + 8002802: 4413 add r3, r2 + 8002804: 2200 movs r2, #0 + 8002806: 701a strb r2, [r3, #0] + + // Inverte a string para colocar na ordem correta + for (uint8_t j = 0, k = i - 1; j < k; j++, k--) + 8002808: 2300 movs r3, #0 + 800280a: 753b strb r3, [r7, #20] + 800280c: 8afb ldrh r3, [r7, #22] + 800280e: b2db uxtb r3, r3 + 8002810: 3b01 subs r3, #1 + 8002812: 74fb strb r3, [r7, #19] + 8002814: e017 b.n 8002846 + { + uint8_t temp = str[j]; + 8002816: 7d3b ldrb r3, [r7, #20] + 8002818: 683a ldr r2, [r7, #0] + 800281a: 4413 add r3, r2 + 800281c: 781b ldrb r3, [r3, #0] + 800281e: 73bb strb r3, [r7, #14] + str[j] = str[k]; + 8002820: 7cfb ldrb r3, [r7, #19] + 8002822: 683a ldr r2, [r7, #0] + 8002824: 441a add r2, r3 + 8002826: 7d3b ldrb r3, [r7, #20] + 8002828: 6839 ldr r1, [r7, #0] + 800282a: 440b add r3, r1 + 800282c: 7812 ldrb r2, [r2, #0] + 800282e: 701a strb r2, [r3, #0] + str[k] = temp; + 8002830: 7cfb ldrb r3, [r7, #19] + 8002832: 683a ldr r2, [r7, #0] + 8002834: 4413 add r3, r2 + 8002836: 7bba ldrb r2, [r7, #14] + 8002838: 701a strb r2, [r3, #0] + for (uint8_t j = 0, k = i - 1; j < k; j++, k--) + 800283a: 7d3b ldrb r3, [r7, #20] + 800283c: 3301 adds r3, #1 + 800283e: 753b strb r3, [r7, #20] + 8002840: 7cfb ldrb r3, [r7, #19] + 8002842: 3b01 subs r3, #1 + 8002844: 74fb strb r3, [r7, #19] + 8002846: 7d3a ldrb r2, [r7, #20] + 8002848: 7cfb ldrb r3, [r7, #19] + 800284a: 429a cmp r2, r3 + 800284c: d3e3 bcc.n 8002816 } } + 800284e: 371c adds r7, #28 + 8002850: 46bd mov sp, r7 + 8002852: bc80 pop {r7} + 8002854: 4770 bx lr + 8002856: bf00 nop + 8002858: 66666667 .word 0x66666667 + +0800285c : /* TIM3 Timer Interrupt */ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { - 8002574: b480 push {r7} - 8002576: b083 sub sp, #12 - 8002578: af00 add r7, sp, #0 - 800257a: 6078 str r0, [r7, #4] + 800285c: b480 push {r7} + 800285e: b083 sub sp, #12 + 8002860: af00 add r7, sp, #0 + 8002862: 6078 str r0, [r7, #4] if (htim->Instance == TIM3) - 800257c: 687b ldr r3, [r7, #4] - 800257e: 681b ldr r3, [r3, #0] - 8002580: 4a06 ldr r2, [pc, #24] @ (800259c ) - 8002582: 4293 cmp r3, r2 - 8002584: d104 bne.n 8002590 + 8002864: 687b ldr r3, [r7, #4] + 8002866: 681b ldr r3, [r3, #0] + 8002868: 4a06 ldr r2, [pc, #24] @ (8002884 ) + 800286a: 4293 cmp r3, r2 + 800286c: d104 bne.n 8002878 { g_ms_counter++; /* Relógio global do sistema */ - 8002586: 4b06 ldr r3, [pc, #24] @ (80025a0 ) - 8002588: 681b ldr r3, [r3, #0] - 800258a: 3301 adds r3, #1 - 800258c: 4a04 ldr r2, [pc, #16] @ (80025a0 ) - 800258e: 6013 str r3, [r2, #0] + 800286e: 4b06 ldr r3, [pc, #24] @ (8002888 ) + 8002870: 681b ldr r3, [r3, #0] + 8002872: 3301 adds r3, #1 + 8002874: 4a04 ldr r2, [pc, #16] @ (8002888 ) + 8002876: 6013 str r3, [r2, #0] } } - 8002590: bf00 nop - 8002592: 370c adds r7, #12 - 8002594: 46bd mov sp, r7 - 8002596: bc80 pop {r7} - 8002598: 4770 bx lr - 800259a: bf00 nop - 800259c: 40000400 .word 0x40000400 - 80025a0: 200000b4 .word 0x200000b4 + 8002878: bf00 nop + 800287a: 370c adds r7, #12 + 800287c: 46bd mov sp, r7 + 800287e: bc80 pop {r7} + 8002880: 4770 bx lr + 8002882: bf00 nop + 8002884: 40000400 .word 0x40000400 + 8002888: 20000084 .word 0x20000084 -080025a4 : +0800288c : /** * @brief This function is executed in case of error occurrence. * @retval None */ void Error_Handler(void) { - 80025a4: b480 push {r7} - 80025a6: af00 add r7, sp, #0 + 800288c: b480 push {r7} + 800288e: 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"); - 80025a8: b672 cpsid i + 8002890: b672 cpsid i } - 80025aa: bf00 nop + 8002892: 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) - 80025ac: bf00 nop - 80025ae: e7fd b.n 80025ac + 8002894: bf00 nop + 8002896: e7fd b.n 8002894 -080025b0 : +08002898 : * @rmtoll IDR IDy LL_GPIO_ReadInputPort * @param GPIOx GPIO Port * @retval Input data register value of port */ __STATIC_INLINE uint32_t LL_GPIO_ReadInputPort(GPIO_TypeDef *GPIOx) { - 80025b0: b480 push {r7} - 80025b2: b083 sub sp, #12 - 80025b4: af00 add r7, sp, #0 - 80025b6: 6078 str r0, [r7, #4] + 8002898: b480 push {r7} + 800289a: b083 sub sp, #12 + 800289c: af00 add r7, sp, #0 + 800289e: 6078 str r0, [r7, #4] return (READ_REG(GPIOx->IDR)); - 80025b8: 687b ldr r3, [r7, #4] - 80025ba: 689b ldr r3, [r3, #8] + 80028a0: 687b ldr r3, [r7, #4] + 80028a2: 689b ldr r3, [r3, #8] } - 80025bc: 4618 mov r0, r3 - 80025be: 370c adds r7, #12 - 80025c0: 46bd mov sp, r7 - 80025c2: bc80 pop {r7} - 80025c4: 4770 bx lr + 80028a4: 4618 mov r0, r3 + 80028a6: 370c adds r7, #12 + 80028a8: 46bd mov sp, r7 + 80028aa: bc80 pop {r7} + 80028ac: 4770 bx lr ... -080025c8 : +080028b0 : /** * @brief Initializes the RS-485 driver. * @note This function configures GPIOs for address detection and USART1 for communication. */ void rs485_init(void) { - 80025c8: b580 push {r7, lr} - 80025ca: af00 add r7, sp, #0 + 80028b0: b580 push {r7, lr} + 80028b2: af00 add r7, sp, #0 /* Configure GPIOs for address detection */ rs485_configure_gpio_address(); - 80025cc: f000 f864 bl 8002698 + 80028b4: f000 f864 bl 8002980 /* Configure USART1 for RS-485 communication */ rs485_configure_usart1(); - 80025d0: f000 f8a8 bl 8002724 + 80028b8: f000 f8a8 bl 8002a0c /* Get the current device address from GPIOs */ device_address.full_address = rs485_get_address(); - 80025d4: f000 f808 bl 80025e8 - 80025d8: 4603 mov r3, r0 - 80025da: 461a mov r2, r3 - 80025dc: 4b01 ldr r3, [pc, #4] @ (80025e4 ) - 80025de: 709a strb r2, [r3, #2] + 80028bc: f000 f808 bl 80028d0 + 80028c0: 4603 mov r3, r0 + 80028c2: 461a mov r2, r3 + 80028c4: 4b01 ldr r3, [pc, #4] @ (80028cc ) + 80028c6: 709a strb r2, [r3, #2] } - 80025e0: bf00 nop - 80025e2: bd80 pop {r7, pc} - 80025e4: 20000734 .word 0x20000734 + 80028c8: bf00 nop + 80028ca: bd80 pop {r7, pc} + 80028cc: 200006cc .word 0x200006cc -080025e8 : +080028d0 : /** * @brief Gets the current device address from GPIOs. * @return The 8-bit device address. */ uint8_t rs485_get_address(void) { - 80025e8: b598 push {r3, r4, r7, lr} - 80025ea: af00 add r7, sp, #0 + 80028d0: b598 push {r3, r4, r7, lr} + 80028d2: af00 add r7, sp, #0 return ((uint8_t) ((((LL_GPIO_ReadInputPort(GPIOB) & RS485_ADDR_MASK_HIGH)>>RS485_ADDR_BIT_SET_HIGH) | (LL_GPIO_ReadInputPort(GPIOA) & RS485_ADDR_MASK_LOW)>>RS485_ADDR_BIT_SET_LOW))); - 80025ec: 480a ldr r0, [pc, #40] @ (8002618 ) - 80025ee: f7ff ffdf bl 80025b0 - 80025f2: 4603 mov r3, r0 - 80025f4: 0a1b lsrs r3, r3, #8 - 80025f6: b2db uxtb r3, r3 - 80025f8: f023 030f bic.w r3, r3, #15 - 80025fc: b2dc uxtb r4, r3 - 80025fe: 4807 ldr r0, [pc, #28] @ (800261c ) - 8002600: f7ff ffd6 bl 80025b0 - 8002604: 4603 mov r3, r0 - 8002606: 089b lsrs r3, r3, #2 - 8002608: b2db uxtb r3, r3 - 800260a: f003 030f and.w r3, r3, #15 - 800260e: b2db uxtb r3, r3 - 8002610: 4323 orrs r3, r4 - 8002612: b2db uxtb r3, r3 + 80028d4: 480a ldr r0, [pc, #40] @ (8002900 ) + 80028d6: f7ff ffdf bl 8002898 + 80028da: 4603 mov r3, r0 + 80028dc: 0a1b lsrs r3, r3, #8 + 80028de: b2db uxtb r3, r3 + 80028e0: f023 030f bic.w r3, r3, #15 + 80028e4: b2dc uxtb r4, r3 + 80028e6: 4807 ldr r0, [pc, #28] @ (8002904 ) + 80028e8: f7ff ffd6 bl 8002898 + 80028ec: 4603 mov r3, r0 + 80028ee: 089b lsrs r3, r3, #2 + 80028f0: b2db uxtb r3, r3 + 80028f2: f003 030f and.w r3, r3, #15 + 80028f6: b2db uxtb r3, r3 + 80028f8: 4323 orrs r3, r4 + 80028fa: b2db uxtb r3, r3 } - 8002614: 4618 mov r0, r3 - 8002616: bd98 pop {r3, r4, r7, pc} - 8002618: 40010c00 .word 0x40010c00 - 800261c: 40010800 .word 0x40010800 + 80028fc: 4618 mov r0, r3 + 80028fe: bd98 pop {r3, r4, r7, pc} + 8002900: 40010c00 .word 0x40010c00 + 8002904: 40010800 .word 0x40010800 -08002620 : +08002908 : * @param data Pointer to the data buffer. * @param length Number of bytes to send. * @retval HAL_OK on success, otherwise error code. */ HAL_StatusTypeDef rs485_send_broadcast(uint8_t* data, uint16_t length) { - 8002620: b580 push {r7, lr} - 8002622: b084 sub sp, #16 - 8002624: af00 add r7, sp, #0 - 8002626: 6078 str r0, [r7, #4] - 8002628: 460b mov r3, r1 - 800262a: 807b strh r3, [r7, #2] + 8002908: b580 push {r7, lr} + 800290a: b084 sub sp, #16 + 800290c: af00 add r7, sp, #0 + 800290e: 6078 str r0, [r7, #4] + 8002910: 460b mov r3, r1 + 8002912: 807b strh r3, [r7, #2] /* Enable transmission mode */ rs485_enable_tx(); - 800262c: f000 f81c bl 8002668 + 8002914: f000 f81c bl 8002950 /* Send the broadcast address (0x00) first */ uint8_t broadcast_address = 0x00; - 8002630: 2300 movs r3, #0 - 8002632: 73bb strb r3, [r7, #14] + 8002918: 2300 movs r3, #0 + 800291a: 73bb strb r3, [r7, #14] HAL_UART_Transmit(&huart1, &broadcast_address, 1, HAL_MAX_DELAY); - 8002634: f107 010e add.w r1, r7, #14 - 8002638: f04f 33ff mov.w r3, #4294967295 - 800263c: 2201 movs r2, #1 - 800263e: 4809 ldr r0, [pc, #36] @ (8002664 ) - 8002640: f003 f99c bl 800597c + 800291c: f107 010e add.w r1, r7, #14 + 8002920: f04f 33ff mov.w r3, #4294967295 + 8002924: 2201 movs r2, #1 + 8002926: 4809 ldr r0, [pc, #36] @ (800294c ) + 8002928: f003 f978 bl 8005c1c /* Send the data */ HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data, length, HAL_MAX_DELAY); - 8002644: 887a ldrh r2, [r7, #2] - 8002646: f04f 33ff mov.w r3, #4294967295 - 800264a: 6879 ldr r1, [r7, #4] - 800264c: 4805 ldr r0, [pc, #20] @ (8002664 ) - 800264e: f003 f995 bl 800597c - 8002652: 4603 mov r3, r0 - 8002654: 73fb strb r3, [r7, #15] + 800292c: 887a ldrh r2, [r7, #2] + 800292e: f04f 33ff mov.w r3, #4294967295 + 8002932: 6879 ldr r1, [r7, #4] + 8002934: 4805 ldr r0, [pc, #20] @ (800294c ) + 8002936: f003 f971 bl 8005c1c + 800293a: 4603 mov r3, r0 + 800293c: 73fb strb r3, [r7, #15] /* Disable transmission mode after sending */ rs485_disable_tx(); - 8002656: f000 f813 bl 8002680 + 800293e: f000 f813 bl 8002968 return status; - 800265a: 7bfb ldrb r3, [r7, #15] + 8002942: 7bfb ldrb r3, [r7, #15] } - 800265c: 4618 mov r0, r3 - 800265e: 3710 adds r7, #16 - 8002660: 46bd mov sp, r7 - 8002662: bd80 pop {r7, pc} - 8002664: 20000738 .word 0x20000738 + 8002944: 4618 mov r0, r3 + 8002946: 3710 adds r7, #16 + 8002948: 46bd mov sp, r7 + 800294a: bd80 pop {r7, pc} + 800294c: 200006d0 .word 0x200006d0 -08002668 : +08002950 : /** * @brief Enables transmission mode on RS-485 transceiver. */ void rs485_enable_tx(void) { - 8002668: b580 push {r7, lr} - 800266a: af00 add r7, sp, #0 + 8002950: b580 push {r7, lr} + 8002952: af00 add r7, sp, #0 /* Set TX EN pin high to enable transmitter */ HAL_GPIO_WritePin(RS485_TX_EN_PORT, RS485_TX_EN_PIN, GPIO_PIN_SET); - 800266c: 2201 movs r2, #1 - 800266e: f44f 5180 mov.w r1, #4096 @ 0x1000 - 8002672: 4802 ldr r0, [pc, #8] @ (800267c ) - 8002674: f001 f813 bl 800369e + 8002954: 2201 movs r2, #1 + 8002956: f44f 5180 mov.w r1, #4096 @ 0x1000 + 800295a: 4802 ldr r0, [pc, #8] @ (8002964 ) + 800295c: f000 ffef bl 800393e } - 8002678: bf00 nop - 800267a: bd80 pop {r7, pc} - 800267c: 40010800 .word 0x40010800 + 8002960: bf00 nop + 8002962: bd80 pop {r7, pc} + 8002964: 40010800 .word 0x40010800 -08002680 : +08002968 : /** * @brief Disables transmission mode on RS-485 transceiver. */ void rs485_disable_tx(void) { - 8002680: b580 push {r7, lr} - 8002682: af00 add r7, sp, #0 + 8002968: b580 push {r7, lr} + 800296a: af00 add r7, sp, #0 /* Set TX EN pin low to disable transmitter */ HAL_GPIO_WritePin(RS485_TX_EN_PORT, RS485_TX_EN_PIN, GPIO_PIN_RESET); - 8002684: 2200 movs r2, #0 - 8002686: f44f 5180 mov.w r1, #4096 @ 0x1000 - 800268a: 4802 ldr r0, [pc, #8] @ (8002694 ) - 800268c: f001 f807 bl 800369e + 800296c: 2200 movs r2, #0 + 800296e: f44f 5180 mov.w r1, #4096 @ 0x1000 + 8002972: 4802 ldr r0, [pc, #8] @ (800297c ) + 8002974: f000 ffe3 bl 800393e } - 8002690: bf00 nop - 8002692: bd80 pop {r7, pc} - 8002694: 40010800 .word 0x40010800 + 8002978: bf00 nop + 800297a: bd80 pop {r7, pc} + 800297c: 40010800 .word 0x40010800 -08002698 : +08002980 : /** * @brief Configures GPIOs for address detection. */ static void rs485_configure_gpio_address(void) { - 8002698: b580 push {r7, lr} - 800269a: b086 sub sp, #24 - 800269c: af00 add r7, sp, #0 + 8002980: b580 push {r7, lr} + 8002982: b086 sub sp, #24 + 8002984: af00 add r7, sp, #0 GPIO_InitTypeDef GPIO_InitStruct = {0}; - 800269e: f107 0308 add.w r3, r7, #8 - 80026a2: 2200 movs r2, #0 - 80026a4: 601a str r2, [r3, #0] - 80026a6: 605a str r2, [r3, #4] - 80026a8: 609a str r2, [r3, #8] - 80026aa: 60da str r2, [r3, #12] + 8002986: f107 0308 add.w r3, r7, #8 + 800298a: 2200 movs r2, #0 + 800298c: 601a str r2, [r3, #0] + 800298e: 605a str r2, [r3, #4] + 8002990: 609a str r2, [r3, #8] + 8002992: 60da str r2, [r3, #12] /* Enable clock for GPIOA and GPIOB */ __HAL_RCC_GPIOA_CLK_ENABLE(); - 80026ac: 4b1a ldr r3, [pc, #104] @ (8002718 ) - 80026ae: 699b ldr r3, [r3, #24] - 80026b0: 4a19 ldr r2, [pc, #100] @ (8002718 ) - 80026b2: f043 0304 orr.w r3, r3, #4 - 80026b6: 6193 str r3, [r2, #24] - 80026b8: 4b17 ldr r3, [pc, #92] @ (8002718 ) - 80026ba: 699b ldr r3, [r3, #24] - 80026bc: f003 0304 and.w r3, r3, #4 - 80026c0: 607b str r3, [r7, #4] - 80026c2: 687b ldr r3, [r7, #4] + 8002994: 4b1a ldr r3, [pc, #104] @ (8002a00 ) + 8002996: 699b ldr r3, [r3, #24] + 8002998: 4a19 ldr r2, [pc, #100] @ (8002a00 ) + 800299a: f043 0304 orr.w r3, r3, #4 + 800299e: 6193 str r3, [r2, #24] + 80029a0: 4b17 ldr r3, [pc, #92] @ (8002a00 ) + 80029a2: 699b ldr r3, [r3, #24] + 80029a4: f003 0304 and.w r3, r3, #4 + 80029a8: 607b str r3, [r7, #4] + 80029aa: 687b ldr r3, [r7, #4] __HAL_RCC_GPIOB_CLK_ENABLE(); - 80026c4: 4b14 ldr r3, [pc, #80] @ (8002718 ) - 80026c6: 699b ldr r3, [r3, #24] - 80026c8: 4a13 ldr r2, [pc, #76] @ (8002718 ) - 80026ca: f043 0308 orr.w r3, r3, #8 - 80026ce: 6193 str r3, [r2, #24] - 80026d0: 4b11 ldr r3, [pc, #68] @ (8002718 ) - 80026d2: 699b ldr r3, [r3, #24] - 80026d4: f003 0308 and.w r3, r3, #8 - 80026d8: 603b str r3, [r7, #0] - 80026da: 683b ldr r3, [r7, #0] + 80029ac: 4b14 ldr r3, [pc, #80] @ (8002a00 ) + 80029ae: 699b ldr r3, [r3, #24] + 80029b0: 4a13 ldr r2, [pc, #76] @ (8002a00 ) + 80029b2: f043 0308 orr.w r3, r3, #8 + 80029b6: 6193 str r3, [r2, #24] + 80029b8: 4b11 ldr r3, [pc, #68] @ (8002a00 ) + 80029ba: 699b ldr r3, [r3, #24] + 80029bc: f003 0308 and.w r3, r3, #8 + 80029c0: 603b str r3, [r7, #0] + 80029c2: 683b ldr r3, [r7, #0] /* Configure PA2-PA5 as input with pull-up */ GPIO_InitStruct.Pin = GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5; - 80026dc: 233c movs r3, #60 @ 0x3c - 80026de: 60bb str r3, [r7, #8] + 80029c4: 233c movs r3, #60 @ 0x3c + 80029c6: 60bb str r3, [r7, #8] GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - 80026e0: 2300 movs r3, #0 - 80026e2: 60fb str r3, [r7, #12] + 80029c8: 2300 movs r3, #0 + 80029ca: 60fb str r3, [r7, #12] GPIO_InitStruct.Pull = GPIO_PULLUP; - 80026e4: 2301 movs r3, #1 - 80026e6: 613b str r3, [r7, #16] + 80029cc: 2301 movs r3, #1 + 80029ce: 613b str r3, [r7, #16] HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 80026e8: f107 0308 add.w r3, r7, #8 - 80026ec: 4619 mov r1, r3 - 80026ee: 480b ldr r0, [pc, #44] @ (800271c ) - 80026f0: f000 fe3a bl 8003368 + 80029d0: f107 0308 add.w r3, r7, #8 + 80029d4: 4619 mov r1, r3 + 80029d6: 480b ldr r0, [pc, #44] @ (8002a04 ) + 80029d8: f000 fe16 bl 8003608 /* Configure PB12-PB15 as input with pull-up */ GPIO_InitStruct.Pin = GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15; - 80026f4: f44f 4370 mov.w r3, #61440 @ 0xf000 - 80026f8: 60bb str r3, [r7, #8] + 80029dc: f44f 4370 mov.w r3, #61440 @ 0xf000 + 80029e0: 60bb str r3, [r7, #8] GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - 80026fa: 2300 movs r3, #0 - 80026fc: 60fb str r3, [r7, #12] + 80029e2: 2300 movs r3, #0 + 80029e4: 60fb str r3, [r7, #12] GPIO_InitStruct.Pull = GPIO_PULLUP; - 80026fe: 2301 movs r3, #1 - 8002700: 613b str r3, [r7, #16] + 80029e6: 2301 movs r3, #1 + 80029e8: 613b str r3, [r7, #16] HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 8002702: f107 0308 add.w r3, r7, #8 - 8002706: 4619 mov r1, r3 - 8002708: 4805 ldr r0, [pc, #20] @ (8002720 ) - 800270a: f000 fe2d bl 8003368 + 80029ea: f107 0308 add.w r3, r7, #8 + 80029ee: 4619 mov r1, r3 + 80029f0: 4805 ldr r0, [pc, #20] @ (8002a08 ) + 80029f2: f000 fe09 bl 8003608 } - 800270e: bf00 nop - 8002710: 3718 adds r7, #24 - 8002712: 46bd mov sp, r7 - 8002714: bd80 pop {r7, pc} - 8002716: bf00 nop - 8002718: 40021000 .word 0x40021000 - 800271c: 40010800 .word 0x40010800 - 8002720: 40010c00 .word 0x40010c00 + 80029f6: bf00 nop + 80029f8: 3718 adds r7, #24 + 80029fa: 46bd mov sp, r7 + 80029fc: bd80 pop {r7, pc} + 80029fe: bf00 nop + 8002a00: 40021000 .word 0x40021000 + 8002a04: 40010800 .word 0x40010800 + 8002a08: 40010c00 .word 0x40010c00 -08002724 : +08002a0c : /** * @brief Configures USART1 for RS-485 communication. */ static void rs485_configure_usart1(void) { - 8002724: b580 push {r7, lr} - 8002726: b082 sub sp, #8 - 8002728: af00 add r7, sp, #0 + 8002a0c: b580 push {r7, lr} + 8002a0e: b082 sub sp, #8 + 8002a10: af00 add r7, sp, #0 /* Enable clock for USART1 */ __HAL_RCC_USART1_CLK_ENABLE(); - 800272a: 4b18 ldr r3, [pc, #96] @ (800278c ) - 800272c: 699b ldr r3, [r3, #24] - 800272e: 4a17 ldr r2, [pc, #92] @ (800278c ) - 8002730: f443 4380 orr.w r3, r3, #16384 @ 0x4000 - 8002734: 6193 str r3, [r2, #24] - 8002736: 4b15 ldr r3, [pc, #84] @ (800278c ) - 8002738: 699b ldr r3, [r3, #24] - 800273a: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 800273e: 607b str r3, [r7, #4] - 8002740: 687b ldr r3, [r7, #4] + 8002a12: 4b18 ldr r3, [pc, #96] @ (8002a74 ) + 8002a14: 699b ldr r3, [r3, #24] + 8002a16: 4a17 ldr r2, [pc, #92] @ (8002a74 ) + 8002a18: f443 4380 orr.w r3, r3, #16384 @ 0x4000 + 8002a1c: 6193 str r3, [r2, #24] + 8002a1e: 4b15 ldr r3, [pc, #84] @ (8002a74 ) + 8002a20: 699b ldr r3, [r3, #24] + 8002a22: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8002a26: 607b str r3, [r7, #4] + 8002a28: 687b ldr r3, [r7, #4] huart1.Instance = USART1; - 8002742: 4b13 ldr r3, [pc, #76] @ (8002790 ) - 8002744: 4a13 ldr r2, [pc, #76] @ (8002794 ) - 8002746: 601a str r2, [r3, #0] + 8002a2a: 4b13 ldr r3, [pc, #76] @ (8002a78 ) + 8002a2c: 4a13 ldr r2, [pc, #76] @ (8002a7c ) + 8002a2e: 601a str r2, [r3, #0] huart1.Init.BaudRate = 9600; /*!< Default baud rate for RS-485 */ - 8002748: 4b11 ldr r3, [pc, #68] @ (8002790 ) - 800274a: f44f 5216 mov.w r2, #9600 @ 0x2580 - 800274e: 605a str r2, [r3, #4] + 8002a30: 4b11 ldr r3, [pc, #68] @ (8002a78 ) + 8002a32: f44f 5216 mov.w r2, #9600 @ 0x2580 + 8002a36: 605a str r2, [r3, #4] huart1.Init.WordLength = UART_WORDLENGTH_8B; - 8002750: 4b0f ldr r3, [pc, #60] @ (8002790 ) - 8002752: 2200 movs r2, #0 - 8002754: 609a str r2, [r3, #8] + 8002a38: 4b0f ldr r3, [pc, #60] @ (8002a78 ) + 8002a3a: 2200 movs r2, #0 + 8002a3c: 609a str r2, [r3, #8] huart1.Init.StopBits = UART_STOPBITS_1; - 8002756: 4b0e ldr r3, [pc, #56] @ (8002790 ) - 8002758: 2200 movs r2, #0 - 800275a: 60da str r2, [r3, #12] + 8002a3e: 4b0e ldr r3, [pc, #56] @ (8002a78 ) + 8002a40: 2200 movs r2, #0 + 8002a42: 60da str r2, [r3, #12] huart1.Init.Parity = UART_PARITY_NONE; - 800275c: 4b0c ldr r3, [pc, #48] @ (8002790 ) - 800275e: 2200 movs r2, #0 - 8002760: 611a str r2, [r3, #16] + 8002a44: 4b0c ldr r3, [pc, #48] @ (8002a78 ) + 8002a46: 2200 movs r2, #0 + 8002a48: 611a str r2, [r3, #16] huart1.Init.Mode = UART_MODE_TX_RX; - 8002762: 4b0b ldr r3, [pc, #44] @ (8002790 ) - 8002764: 220c movs r2, #12 - 8002766: 615a str r2, [r3, #20] + 8002a4a: 4b0b ldr r3, [pc, #44] @ (8002a78 ) + 8002a4c: 220c movs r2, #12 + 8002a4e: 615a str r2, [r3, #20] huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; /*!< Use NONE as TX enable */ - 8002768: 4b09 ldr r3, [pc, #36] @ (8002790 ) - 800276a: 2200 movs r2, #0 - 800276c: 619a str r2, [r3, #24] + 8002a50: 4b09 ldr r3, [pc, #36] @ (8002a78 ) + 8002a52: 2200 movs r2, #0 + 8002a54: 619a str r2, [r3, #24] huart1.Init.OverSampling = UART_OVERSAMPLING_16; - 800276e: 4b08 ldr r3, [pc, #32] @ (8002790 ) - 8002770: 2200 movs r2, #0 - 8002772: 61da str r2, [r3, #28] + 8002a56: 4b08 ldr r3, [pc, #32] @ (8002a78 ) + 8002a58: 2200 movs r2, #0 + 8002a5a: 61da str r2, [r3, #28] if (HAL_UART_Init(&huart1) != HAL_OK) - 8002774: 4806 ldr r0, [pc, #24] @ (8002790 ) - 8002776: f003 f8b1 bl 80058dc - 800277a: 4603 mov r3, r0 - 800277c: 2b00 cmp r3, #0 - 800277e: d001 beq.n 8002784 + 8002a5c: 4806 ldr r0, [pc, #24] @ (8002a78 ) + 8002a5e: f003 f88d bl 8005b7c + 8002a62: 4603 mov r3, r0 + 8002a64: 2b00 cmp r3, #0 + 8002a66: d001 beq.n 8002a6c { /* Initialization Error */ while(1); - 8002780: bf00 nop - 8002782: e7fd b.n 8002780 + 8002a68: bf00 nop + 8002a6a: e7fd b.n 8002a68 } } - 8002784: bf00 nop - 8002786: 3708 adds r7, #8 - 8002788: 46bd mov sp, r7 - 800278a: bd80 pop {r7, pc} - 800278c: 40021000 .word 0x40021000 - 8002790: 20000738 .word 0x20000738 - 8002794: 40013800 .word 0x40013800 + 8002a6c: bf00 nop + 8002a6e: 3708 adds r7, #8 + 8002a70: 46bd mov sp, r7 + 8002a72: bd80 pop {r7, pc} + 8002a74: 40021000 .word 0x40021000 + 8002a78: 200006d0 .word 0x200006d0 + 8002a7c: 40013800 .word 0x40013800 -08002798 : +08002a80 : /* USER CODE END 0 */ /** * Initializes the Global MSP. */ void HAL_MspInit(void) { - 8002798: b480 push {r7} - 800279a: b085 sub sp, #20 - 800279c: af00 add r7, sp, #0 + 8002a80: b480 push {r7} + 8002a82: b085 sub sp, #20 + 8002a84: af00 add r7, sp, #0 /* USER CODE BEGIN MspInit 0 */ /* USER CODE END MspInit 0 */ __HAL_RCC_AFIO_CLK_ENABLE(); - 800279e: 4b15 ldr r3, [pc, #84] @ (80027f4 ) - 80027a0: 699b ldr r3, [r3, #24] - 80027a2: 4a14 ldr r2, [pc, #80] @ (80027f4 ) - 80027a4: f043 0301 orr.w r3, r3, #1 - 80027a8: 6193 str r3, [r2, #24] - 80027aa: 4b12 ldr r3, [pc, #72] @ (80027f4 ) - 80027ac: 699b ldr r3, [r3, #24] - 80027ae: f003 0301 and.w r3, r3, #1 - 80027b2: 60bb str r3, [r7, #8] - 80027b4: 68bb ldr r3, [r7, #8] + 8002a86: 4b15 ldr r3, [pc, #84] @ (8002adc ) + 8002a88: 699b ldr r3, [r3, #24] + 8002a8a: 4a14 ldr r2, [pc, #80] @ (8002adc ) + 8002a8c: f043 0301 orr.w r3, r3, #1 + 8002a90: 6193 str r3, [r2, #24] + 8002a92: 4b12 ldr r3, [pc, #72] @ (8002adc ) + 8002a94: 699b ldr r3, [r3, #24] + 8002a96: f003 0301 and.w r3, r3, #1 + 8002a9a: 60bb str r3, [r7, #8] + 8002a9c: 68bb ldr r3, [r7, #8] __HAL_RCC_PWR_CLK_ENABLE(); - 80027b6: 4b0f ldr r3, [pc, #60] @ (80027f4 ) - 80027b8: 69db ldr r3, [r3, #28] - 80027ba: 4a0e ldr r2, [pc, #56] @ (80027f4 ) - 80027bc: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 - 80027c0: 61d3 str r3, [r2, #28] - 80027c2: 4b0c ldr r3, [pc, #48] @ (80027f4 ) - 80027c4: 69db ldr r3, [r3, #28] - 80027c6: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 80027ca: 607b str r3, [r7, #4] - 80027cc: 687b ldr r3, [r7, #4] + 8002a9e: 4b0f ldr r3, [pc, #60] @ (8002adc ) + 8002aa0: 69db ldr r3, [r3, #28] + 8002aa2: 4a0e ldr r2, [pc, #56] @ (8002adc ) + 8002aa4: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8002aa8: 61d3 str r3, [r2, #28] + 8002aaa: 4b0c ldr r3, [pc, #48] @ (8002adc ) + 8002aac: 69db ldr r3, [r3, #28] + 8002aae: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8002ab2: 607b str r3, [r7, #4] + 8002ab4: 687b ldr r3, [r7, #4] /* System interrupt init*/ /** NOJTAG: JTAG-DP Disabled and SW-DP Enabled */ __HAL_AFIO_REMAP_SWJ_NOJTAG(); - 80027ce: 4b0a ldr r3, [pc, #40] @ (80027f8 ) - 80027d0: 685b ldr r3, [r3, #4] - 80027d2: 60fb str r3, [r7, #12] - 80027d4: 68fb ldr r3, [r7, #12] - 80027d6: f023 63e0 bic.w r3, r3, #117440512 @ 0x7000000 - 80027da: 60fb str r3, [r7, #12] - 80027dc: 68fb ldr r3, [r7, #12] - 80027de: f043 7300 orr.w r3, r3, #33554432 @ 0x2000000 - 80027e2: 60fb str r3, [r7, #12] - 80027e4: 4a04 ldr r2, [pc, #16] @ (80027f8 ) - 80027e6: 68fb ldr r3, [r7, #12] - 80027e8: 6053 str r3, [r2, #4] + 8002ab6: 4b0a ldr r3, [pc, #40] @ (8002ae0 ) + 8002ab8: 685b ldr r3, [r3, #4] + 8002aba: 60fb str r3, [r7, #12] + 8002abc: 68fb ldr r3, [r7, #12] + 8002abe: f023 63e0 bic.w r3, r3, #117440512 @ 0x7000000 + 8002ac2: 60fb str r3, [r7, #12] + 8002ac4: 68fb ldr r3, [r7, #12] + 8002ac6: f043 7300 orr.w r3, r3, #33554432 @ 0x2000000 + 8002aca: 60fb str r3, [r7, #12] + 8002acc: 4a04 ldr r2, [pc, #16] @ (8002ae0 ) + 8002ace: 68fb ldr r3, [r7, #12] + 8002ad0: 6053 str r3, [r2, #4] /* USER CODE BEGIN MspInit 1 */ /* USER CODE END MspInit 1 */ } - 80027ea: bf00 nop - 80027ec: 3714 adds r7, #20 - 80027ee: 46bd mov sp, r7 - 80027f0: bc80 pop {r7} - 80027f2: 4770 bx lr - 80027f4: 40021000 .word 0x40021000 - 80027f8: 40010000 .word 0x40010000 + 8002ad2: bf00 nop + 8002ad4: 3714 adds r7, #20 + 8002ad6: 46bd mov sp, r7 + 8002ad8: bc80 pop {r7} + 8002ada: 4770 bx lr + 8002adc: 40021000 .word 0x40021000 + 8002ae0: 40010000 .word 0x40010000 -080027fc : +08002ae4 : /******************************************************************************/ /** * @brief This function handles Non maskable interrupt. */ void NMI_Handler(void) { - 80027fc: b480 push {r7} - 80027fe: af00 add r7, sp, #0 + 8002ae4: b480 push {r7} + 8002ae6: 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) - 8002800: bf00 nop - 8002802: e7fd b.n 8002800 + 8002ae8: bf00 nop + 8002aea: e7fd b.n 8002ae8 -08002804 : +08002aec : /** * @brief This function handles Hard fault interrupt. */ void HardFault_Handler(void) { - 8002804: b480 push {r7} - 8002806: af00 add r7, sp, #0 + 8002aec: b480 push {r7} + 8002aee: af00 add r7, sp, #0 /* USER CODE BEGIN HardFault_IRQn 0 */ /* USER CODE END HardFault_IRQn 0 */ while (1) - 8002808: bf00 nop - 800280a: e7fd b.n 8002808 + 8002af0: bf00 nop + 8002af2: e7fd b.n 8002af0 -0800280c : +08002af4 : /** * @brief This function handles Memory management fault. */ void MemManage_Handler(void) { - 800280c: b480 push {r7} - 800280e: af00 add r7, sp, #0 + 8002af4: b480 push {r7} + 8002af6: af00 add r7, sp, #0 /* USER CODE BEGIN MemoryManagement_IRQn 0 */ /* USER CODE END MemoryManagement_IRQn 0 */ while (1) - 8002810: bf00 nop - 8002812: e7fd b.n 8002810 + 8002af8: bf00 nop + 8002afa: e7fd b.n 8002af8 -08002814 : +08002afc : /** * @brief This function handles Prefetch fault, memory access fault. */ void BusFault_Handler(void) { - 8002814: b480 push {r7} - 8002816: af00 add r7, sp, #0 + 8002afc: b480 push {r7} + 8002afe: af00 add r7, sp, #0 /* USER CODE BEGIN BusFault_IRQn 0 */ /* USER CODE END BusFault_IRQn 0 */ while (1) - 8002818: bf00 nop - 800281a: e7fd b.n 8002818 + 8002b00: bf00 nop + 8002b02: e7fd b.n 8002b00 -0800281c : +08002b04 : /** * @brief This function handles Undefined instruction or illegal state. */ void UsageFault_Handler(void) { - 800281c: b480 push {r7} - 800281e: af00 add r7, sp, #0 + 8002b04: b480 push {r7} + 8002b06: af00 add r7, sp, #0 /* USER CODE BEGIN UsageFault_IRQn 0 */ /* USER CODE END UsageFault_IRQn 0 */ while (1) - 8002820: bf00 nop - 8002822: e7fd b.n 8002820 + 8002b08: bf00 nop + 8002b0a: e7fd b.n 8002b08 -08002824 : +08002b0c : /** * @brief This function handles System service call via SWI instruction. */ void SVC_Handler(void) { - 8002824: b480 push {r7} - 8002826: af00 add r7, sp, #0 + 8002b0c: b480 push {r7} + 8002b0e: af00 add r7, sp, #0 /* USER CODE END SVCall_IRQn 0 */ /* USER CODE BEGIN SVCall_IRQn 1 */ /* USER CODE END SVCall_IRQn 1 */ } - 8002828: bf00 nop - 800282a: 46bd mov sp, r7 - 800282c: bc80 pop {r7} - 800282e: 4770 bx lr + 8002b10: bf00 nop + 8002b12: 46bd mov sp, r7 + 8002b14: bc80 pop {r7} + 8002b16: 4770 bx lr -08002830 : +08002b18 : /** * @brief This function handles Debug monitor. */ void DebugMon_Handler(void) { - 8002830: b480 push {r7} - 8002832: af00 add r7, sp, #0 + 8002b18: b480 push {r7} + 8002b1a: af00 add r7, sp, #0 /* USER CODE END DebugMonitor_IRQn 0 */ /* USER CODE BEGIN DebugMonitor_IRQn 1 */ /* USER CODE END DebugMonitor_IRQn 1 */ } - 8002834: bf00 nop - 8002836: 46bd mov sp, r7 - 8002838: bc80 pop {r7} - 800283a: 4770 bx lr + 8002b1c: bf00 nop + 8002b1e: 46bd mov sp, r7 + 8002b20: bc80 pop {r7} + 8002b22: 4770 bx lr -0800283c : +08002b24 : /** * @brief This function handles Pendable request for system service. */ void PendSV_Handler(void) { - 800283c: b480 push {r7} - 800283e: af00 add r7, sp, #0 + 8002b24: b480 push {r7} + 8002b26: af00 add r7, sp, #0 /* USER CODE END PendSV_IRQn 0 */ /* USER CODE BEGIN PendSV_IRQn 1 */ /* USER CODE END PendSV_IRQn 1 */ } - 8002840: bf00 nop - 8002842: 46bd mov sp, r7 - 8002844: bc80 pop {r7} - 8002846: 4770 bx lr + 8002b28: bf00 nop + 8002b2a: 46bd mov sp, r7 + 8002b2c: bc80 pop {r7} + 8002b2e: 4770 bx lr -08002848 : +08002b30 : /** * @brief This function handles System tick timer. */ void SysTick_Handler(void) { - 8002848: b580 push {r7, lr} - 800284a: af00 add r7, sp, #0 + 8002b30: b580 push {r7, lr} + 8002b32: af00 add r7, sp, #0 /* USER CODE BEGIN SysTick_IRQn 0 */ /* USER CODE END SysTick_IRQn 0 */ HAL_IncTick(); - 800284c: f000 f97a bl 8002b44 + 8002b34: f000 f97a bl 8002e2c /* USER CODE BEGIN SysTick_IRQn 1 */ /* USER CODE END SysTick_IRQn 1 */ } - 8002850: bf00 nop - 8002852: bd80 pop {r7, pc} + 8002b38: bf00 nop + 8002b3a: bd80 pop {r7, pc} -08002854 : +08002b3c : /** * @brief This function handles TIM3 global interrupt. */ void TIM3_IRQHandler(void) { - 8002854: b580 push {r7, lr} - 8002856: af00 add r7, sp, #0 + 8002b3c: b580 push {r7, lr} + 8002b3e: af00 add r7, sp, #0 /* USER CODE BEGIN TIM3_IRQn 0 */ /* USER CODE END TIM3_IRQn 0 */ HAL_TIM_IRQHandler(&htim3); - 8002858: 4802 ldr r0, [pc, #8] @ (8002864 ) - 800285a: f002 fcef bl 800523c + 8002b40: 4802 ldr r0, [pc, #8] @ (8002b4c ) + 8002b42: f002 fccb bl 80054dc /* USER CODE BEGIN TIM3_IRQn 1 */ /* USER CODE END TIM3_IRQn 1 */ } - 800285e: bf00 nop - 8002860: bd80 pop {r7, pc} - 8002862: bf00 nop - 8002864: 20000780 .word 0x20000780 + 8002b46: bf00 nop + 8002b48: bd80 pop {r7, pc} + 8002b4a: bf00 nop + 8002b4c: 20000718 .word 0x20000718 -08002868 : +08002b50 : /** * @brief This function handles USART1 global interrupt. */ void USART1_IRQHandler(void) { - 8002868: b580 push {r7, lr} - 800286a: af00 add r7, sp, #0 + 8002b50: b580 push {r7, lr} + 8002b52: af00 add r7, sp, #0 /* USER CODE BEGIN USART1_IRQn 0 */ /* USER CODE END USART1_IRQn 0 */ HAL_UART_IRQHandler(&huart1); - 800286c: 4802 ldr r0, [pc, #8] @ (8002878 ) - 800286e: f003 f911 bl 8005a94 + 8002b54: 4802 ldr r0, [pc, #8] @ (8002b60 ) + 8002b56: f003 f8ed bl 8005d34 /* USER CODE BEGIN USART1_IRQn 1 */ /* USER CODE END USART1_IRQn 1 */ } - 8002872: bf00 nop - 8002874: bd80 pop {r7, pc} - 8002876: bf00 nop - 8002878: 200007c8 .word 0x200007c8 + 8002b5a: bf00 nop + 8002b5c: bd80 pop {r7, pc} + 8002b5e: bf00 nop + 8002b60: 20000760 .word 0x20000760 -0800287c : +08002b64 : * @note This function should be used only after reset. * @param None * @retval None */ void SystemInit (void) { - 800287c: b480 push {r7} - 800287e: af00 add r7, sp, #0 + 8002b64: b480 push {r7} + 8002b66: af00 add r7, sp, #0 /* Configure the Vector Table location -------------------------------------*/ #if defined(USER_VECT_TAB_ADDRESS) SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ #endif /* USER_VECT_TAB_ADDRESS */ } - 8002880: bf00 nop - 8002882: 46bd mov sp, r7 - 8002884: bc80 pop {r7} - 8002886: 4770 bx lr + 8002b68: bf00 nop + 8002b6a: 46bd mov sp, r7 + 8002b6c: bc80 pop {r7} + 8002b6e: 4770 bx lr -08002888 : +08002b70 : TIM_HandleTypeDef htim3; /* TIM3 init function */ void MX_TIM3_Init(void) { - 8002888: b580 push {r7, lr} - 800288a: b086 sub sp, #24 - 800288c: af00 add r7, sp, #0 + 8002b70: b580 push {r7, lr} + 8002b72: b086 sub sp, #24 + 8002b74: af00 add r7, sp, #0 /* USER CODE BEGIN TIM3_Init 0 */ /* USER CODE END TIM3_Init 0 */ TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - 800288e: f107 0308 add.w r3, r7, #8 - 8002892: 2200 movs r2, #0 - 8002894: 601a str r2, [r3, #0] - 8002896: 605a str r2, [r3, #4] - 8002898: 609a str r2, [r3, #8] - 800289a: 60da str r2, [r3, #12] + 8002b76: f107 0308 add.w r3, r7, #8 + 8002b7a: 2200 movs r2, #0 + 8002b7c: 601a str r2, [r3, #0] + 8002b7e: 605a str r2, [r3, #4] + 8002b80: 609a str r2, [r3, #8] + 8002b82: 60da str r2, [r3, #12] TIM_MasterConfigTypeDef sMasterConfig = {0}; - 800289c: 463b mov r3, r7 - 800289e: 2200 movs r2, #0 - 80028a0: 601a str r2, [r3, #0] - 80028a2: 605a str r2, [r3, #4] + 8002b84: 463b mov r3, r7 + 8002b86: 2200 movs r2, #0 + 8002b88: 601a str r2, [r3, #0] + 8002b8a: 605a str r2, [r3, #4] /* USER CODE BEGIN TIM3_Init 1 */ /* USER CODE END TIM3_Init 1 */ htim3.Instance = TIM3; - 80028a4: 4b1d ldr r3, [pc, #116] @ (800291c ) - 80028a6: 4a1e ldr r2, [pc, #120] @ (8002920 ) - 80028a8: 601a str r2, [r3, #0] + 8002b8c: 4b1d ldr r3, [pc, #116] @ (8002c04 ) + 8002b8e: 4a1e ldr r2, [pc, #120] @ (8002c08 ) + 8002b90: 601a str r2, [r3, #0] htim3.Init.Prescaler = 2; - 80028aa: 4b1c ldr r3, [pc, #112] @ (800291c ) - 80028ac: 2202 movs r2, #2 - 80028ae: 605a str r2, [r3, #4] + 8002b92: 4b1c ldr r3, [pc, #112] @ (8002c04 ) + 8002b94: 2202 movs r2, #2 + 8002b96: 605a str r2, [r3, #4] htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - 80028b0: 4b1a ldr r3, [pc, #104] @ (800291c ) - 80028b2: 2200 movs r2, #0 - 80028b4: 609a str r2, [r3, #8] + 8002b98: 4b1a ldr r3, [pc, #104] @ (8002c04 ) + 8002b9a: 2200 movs r2, #0 + 8002b9c: 609a str r2, [r3, #8] htim3.Init.Period = 999; - 80028b6: 4b19 ldr r3, [pc, #100] @ (800291c ) - 80028b8: f240 32e7 movw r2, #999 @ 0x3e7 - 80028bc: 60da str r2, [r3, #12] + 8002b9e: 4b19 ldr r3, [pc, #100] @ (8002c04 ) + 8002ba0: f240 32e7 movw r2, #999 @ 0x3e7 + 8002ba4: 60da str r2, [r3, #12] htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 80028be: 4b17 ldr r3, [pc, #92] @ (800291c ) - 80028c0: 2200 movs r2, #0 - 80028c2: 611a str r2, [r3, #16] + 8002ba6: 4b17 ldr r3, [pc, #92] @ (8002c04 ) + 8002ba8: 2200 movs r2, #0 + 8002baa: 611a str r2, [r3, #16] htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; - 80028c4: 4b15 ldr r3, [pc, #84] @ (800291c ) - 80028c6: 2280 movs r2, #128 @ 0x80 - 80028c8: 619a str r2, [r3, #24] + 8002bac: 4b15 ldr r3, [pc, #84] @ (8002c04 ) + 8002bae: 2280 movs r2, #128 @ 0x80 + 8002bb0: 619a str r2, [r3, #24] if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - 80028ca: 4814 ldr r0, [pc, #80] @ (800291c ) - 80028cc: f002 fc14 bl 80050f8 - 80028d0: 4603 mov r3, r0 - 80028d2: 2b00 cmp r3, #0 - 80028d4: d001 beq.n 80028da + 8002bb2: 4814 ldr r0, [pc, #80] @ (8002c04 ) + 8002bb4: f002 fbf0 bl 8005398 + 8002bb8: 4603 mov r3, r0 + 8002bba: 2b00 cmp r3, #0 + 8002bbc: d001 beq.n 8002bc2 { Error_Handler(); - 80028d6: f7ff fe65 bl 80025a4 + 8002bbe: f7ff fe65 bl 800288c } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - 80028da: f44f 5380 mov.w r3, #4096 @ 0x1000 - 80028de: 60bb str r3, [r7, #8] + 8002bc2: f44f 5380 mov.w r3, #4096 @ 0x1000 + 8002bc6: 60bb str r3, [r7, #8] if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - 80028e0: f107 0308 add.w r3, r7, #8 - 80028e4: 4619 mov r1, r3 - 80028e6: 480d ldr r0, [pc, #52] @ (800291c ) - 80028e8: f002 fd98 bl 800541c - 80028ec: 4603 mov r3, r0 - 80028ee: 2b00 cmp r3, #0 - 80028f0: d001 beq.n 80028f6 + 8002bc8: f107 0308 add.w r3, r7, #8 + 8002bcc: 4619 mov r1, r3 + 8002bce: 480d ldr r0, [pc, #52] @ (8002c04 ) + 8002bd0: f002 fd74 bl 80056bc + 8002bd4: 4603 mov r3, r0 + 8002bd6: 2b00 cmp r3, #0 + 8002bd8: d001 beq.n 8002bde { Error_Handler(); - 80028f2: f7ff fe57 bl 80025a4 + 8002bda: f7ff fe57 bl 800288c } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - 80028f6: 2300 movs r3, #0 - 80028f8: 603b str r3, [r7, #0] + 8002bde: 2300 movs r3, #0 + 8002be0: 603b str r3, [r7, #0] sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - 80028fa: 2300 movs r3, #0 - 80028fc: 607b str r3, [r7, #4] + 8002be2: 2300 movs r3, #0 + 8002be4: 607b str r3, [r7, #4] if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - 80028fe: 463b mov r3, r7 - 8002900: 4619 mov r1, r3 - 8002902: 4806 ldr r0, [pc, #24] @ (800291c ) - 8002904: f002 ff7a bl 80057fc - 8002908: 4603 mov r3, r0 - 800290a: 2b00 cmp r3, #0 - 800290c: d001 beq.n 8002912 + 8002be6: 463b mov r3, r7 + 8002be8: 4619 mov r1, r3 + 8002bea: 4806 ldr r0, [pc, #24] @ (8002c04 ) + 8002bec: f002 ff56 bl 8005a9c + 8002bf0: 4603 mov r3, r0 + 8002bf2: 2b00 cmp r3, #0 + 8002bf4: d001 beq.n 8002bfa { Error_Handler(); - 800290e: f7ff fe49 bl 80025a4 + 8002bf6: f7ff fe49 bl 800288c } /* USER CODE BEGIN TIM3_Init 2 */ /* USER CODE END TIM3_Init 2 */ } - 8002912: bf00 nop - 8002914: 3718 adds r7, #24 - 8002916: 46bd mov sp, r7 - 8002918: bd80 pop {r7, pc} - 800291a: bf00 nop - 800291c: 20000780 .word 0x20000780 - 8002920: 40000400 .word 0x40000400 + 8002bfa: bf00 nop + 8002bfc: 3718 adds r7, #24 + 8002bfe: 46bd mov sp, r7 + 8002c00: bd80 pop {r7, pc} + 8002c02: bf00 nop + 8002c04: 20000718 .word 0x20000718 + 8002c08: 40000400 .word 0x40000400 -08002924 : +08002c0c : void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) { - 8002924: b580 push {r7, lr} - 8002926: b084 sub sp, #16 - 8002928: af00 add r7, sp, #0 - 800292a: 6078 str r0, [r7, #4] + 8002c0c: b580 push {r7, lr} + 8002c0e: b084 sub sp, #16 + 8002c10: af00 add r7, sp, #0 + 8002c12: 6078 str r0, [r7, #4] if(tim_baseHandle->Instance==TIM3) - 800292c: 687b ldr r3, [r7, #4] - 800292e: 681b ldr r3, [r3, #0] - 8002930: 4a0d ldr r2, [pc, #52] @ (8002968 ) - 8002932: 4293 cmp r3, r2 - 8002934: d113 bne.n 800295e + 8002c14: 687b ldr r3, [r7, #4] + 8002c16: 681b ldr r3, [r3, #0] + 8002c18: 4a0d ldr r2, [pc, #52] @ (8002c50 ) + 8002c1a: 4293 cmp r3, r2 + 8002c1c: d113 bne.n 8002c46 { /* USER CODE BEGIN TIM3_MspInit 0 */ /* USER CODE END TIM3_MspInit 0 */ /* TIM3 clock enable */ __HAL_RCC_TIM3_CLK_ENABLE(); - 8002936: 4b0d ldr r3, [pc, #52] @ (800296c ) - 8002938: 69db ldr r3, [r3, #28] - 800293a: 4a0c ldr r2, [pc, #48] @ (800296c ) - 800293c: f043 0302 orr.w r3, r3, #2 - 8002940: 61d3 str r3, [r2, #28] - 8002942: 4b0a ldr r3, [pc, #40] @ (800296c ) - 8002944: 69db ldr r3, [r3, #28] - 8002946: f003 0302 and.w r3, r3, #2 - 800294a: 60fb str r3, [r7, #12] - 800294c: 68fb ldr r3, [r7, #12] + 8002c1e: 4b0d ldr r3, [pc, #52] @ (8002c54 ) + 8002c20: 69db ldr r3, [r3, #28] + 8002c22: 4a0c ldr r2, [pc, #48] @ (8002c54 ) + 8002c24: f043 0302 orr.w r3, r3, #2 + 8002c28: 61d3 str r3, [r2, #28] + 8002c2a: 4b0a ldr r3, [pc, #40] @ (8002c54 ) + 8002c2c: 69db ldr r3, [r3, #28] + 8002c2e: f003 0302 and.w r3, r3, #2 + 8002c32: 60fb str r3, [r7, #12] + 8002c34: 68fb ldr r3, [r7, #12] /* TIM3 interrupt Init */ HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0); - 800294e: 2200 movs r2, #0 - 8002950: 2100 movs r1, #0 - 8002952: 201d movs r0, #29 - 8002954: f000 fc1f bl 8003196 + 8002c36: 2200 movs r2, #0 + 8002c38: 2100 movs r1, #0 + 8002c3a: 201d movs r0, #29 + 8002c3c: f000 fbfb bl 8003436 HAL_NVIC_EnableIRQ(TIM3_IRQn); - 8002958: 201d movs r0, #29 - 800295a: f000 fc38 bl 80031ce + 8002c40: 201d movs r0, #29 + 8002c42: f000 fc14 bl 800346e /* USER CODE BEGIN TIM3_MspInit 1 */ /* USER CODE END TIM3_MspInit 1 */ } } - 800295e: bf00 nop - 8002960: 3710 adds r7, #16 - 8002962: 46bd mov sp, r7 - 8002964: bd80 pop {r7, pc} - 8002966: bf00 nop - 8002968: 40000400 .word 0x40000400 - 800296c: 40021000 .word 0x40021000 + 8002c46: bf00 nop + 8002c48: 3710 adds r7, #16 + 8002c4a: 46bd mov sp, r7 + 8002c4c: bd80 pop {r7, pc} + 8002c4e: bf00 nop + 8002c50: 40000400 .word 0x40000400 + 8002c54: 40021000 .word 0x40021000 -08002970 : +08002c58 : UART_HandleTypeDef huart1; /* USART1 init function */ void MX_USART1_UART_Init(void) { - 8002970: b580 push {r7, lr} - 8002972: af00 add r7, sp, #0 + 8002c58: b580 push {r7, lr} + 8002c5a: af00 add r7, sp, #0 /* USER CODE END USART1_Init 0 */ /* USER CODE BEGIN USART1_Init 1 */ /* USER CODE END USART1_Init 1 */ huart1.Instance = USART1; - 8002974: 4b11 ldr r3, [pc, #68] @ (80029bc ) - 8002976: 4a12 ldr r2, [pc, #72] @ (80029c0 ) - 8002978: 601a str r2, [r3, #0] + 8002c5c: 4b11 ldr r3, [pc, #68] @ (8002ca4 ) + 8002c5e: 4a12 ldr r2, [pc, #72] @ (8002ca8 ) + 8002c60: 601a str r2, [r3, #0] huart1.Init.BaudRate = 115200; - 800297a: 4b10 ldr r3, [pc, #64] @ (80029bc ) - 800297c: f44f 32e1 mov.w r2, #115200 @ 0x1c200 - 8002980: 605a str r2, [r3, #4] + 8002c62: 4b10 ldr r3, [pc, #64] @ (8002ca4 ) + 8002c64: f44f 32e1 mov.w r2, #115200 @ 0x1c200 + 8002c68: 605a str r2, [r3, #4] huart1.Init.WordLength = UART_WORDLENGTH_8B; - 8002982: 4b0e ldr r3, [pc, #56] @ (80029bc ) - 8002984: 2200 movs r2, #0 - 8002986: 609a str r2, [r3, #8] + 8002c6a: 4b0e ldr r3, [pc, #56] @ (8002ca4 ) + 8002c6c: 2200 movs r2, #0 + 8002c6e: 609a str r2, [r3, #8] huart1.Init.StopBits = UART_STOPBITS_1; - 8002988: 4b0c ldr r3, [pc, #48] @ (80029bc ) - 800298a: 2200 movs r2, #0 - 800298c: 60da str r2, [r3, #12] + 8002c70: 4b0c ldr r3, [pc, #48] @ (8002ca4 ) + 8002c72: 2200 movs r2, #0 + 8002c74: 60da str r2, [r3, #12] huart1.Init.Parity = UART_PARITY_NONE; - 800298e: 4b0b ldr r3, [pc, #44] @ (80029bc ) - 8002990: 2200 movs r2, #0 - 8002992: 611a str r2, [r3, #16] + 8002c76: 4b0b ldr r3, [pc, #44] @ (8002ca4 ) + 8002c78: 2200 movs r2, #0 + 8002c7a: 611a str r2, [r3, #16] huart1.Init.Mode = UART_MODE_TX_RX; - 8002994: 4b09 ldr r3, [pc, #36] @ (80029bc ) - 8002996: 220c movs r2, #12 - 8002998: 615a str r2, [r3, #20] + 8002c7c: 4b09 ldr r3, [pc, #36] @ (8002ca4 ) + 8002c7e: 220c movs r2, #12 + 8002c80: 615a str r2, [r3, #20] huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; - 800299a: 4b08 ldr r3, [pc, #32] @ (80029bc ) - 800299c: 2200 movs r2, #0 - 800299e: 619a str r2, [r3, #24] + 8002c82: 4b08 ldr r3, [pc, #32] @ (8002ca4 ) + 8002c84: 2200 movs r2, #0 + 8002c86: 619a str r2, [r3, #24] huart1.Init.OverSampling = UART_OVERSAMPLING_16; - 80029a0: 4b06 ldr r3, [pc, #24] @ (80029bc ) - 80029a2: 2200 movs r2, #0 - 80029a4: 61da str r2, [r3, #28] + 8002c88: 4b06 ldr r3, [pc, #24] @ (8002ca4 ) + 8002c8a: 2200 movs r2, #0 + 8002c8c: 61da str r2, [r3, #28] if (HAL_UART_Init(&huart1) != HAL_OK) - 80029a6: 4805 ldr r0, [pc, #20] @ (80029bc ) - 80029a8: f002 ff98 bl 80058dc - 80029ac: 4603 mov r3, r0 - 80029ae: 2b00 cmp r3, #0 - 80029b0: d001 beq.n 80029b6 + 8002c8e: 4805 ldr r0, [pc, #20] @ (8002ca4 ) + 8002c90: f002 ff74 bl 8005b7c + 8002c94: 4603 mov r3, r0 + 8002c96: 2b00 cmp r3, #0 + 8002c98: d001 beq.n 8002c9e { Error_Handler(); - 80029b2: f7ff fdf7 bl 80025a4 + 8002c9a: f7ff fdf7 bl 800288c } /* USER CODE BEGIN USART1_Init 2 */ /* USER CODE END USART1_Init 2 */ } - 80029b6: bf00 nop - 80029b8: bd80 pop {r7, pc} - 80029ba: bf00 nop - 80029bc: 200007c8 .word 0x200007c8 - 80029c0: 40013800 .word 0x40013800 + 8002c9e: bf00 nop + 8002ca0: bd80 pop {r7, pc} + 8002ca2: bf00 nop + 8002ca4: 20000760 .word 0x20000760 + 8002ca8: 40013800 .word 0x40013800 -080029c4 : +08002cac : void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) { - 80029c4: b580 push {r7, lr} - 80029c6: b088 sub sp, #32 - 80029c8: af00 add r7, sp, #0 - 80029ca: 6078 str r0, [r7, #4] + 8002cac: b580 push {r7, lr} + 8002cae: b088 sub sp, #32 + 8002cb0: af00 add r7, sp, #0 + 8002cb2: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 80029cc: f107 0310 add.w r3, r7, #16 - 80029d0: 2200 movs r2, #0 - 80029d2: 601a str r2, [r3, #0] - 80029d4: 605a str r2, [r3, #4] - 80029d6: 609a str r2, [r3, #8] - 80029d8: 60da str r2, [r3, #12] + 8002cb4: f107 0310 add.w r3, r7, #16 + 8002cb8: 2200 movs r2, #0 + 8002cba: 601a str r2, [r3, #0] + 8002cbc: 605a str r2, [r3, #4] + 8002cbe: 609a str r2, [r3, #8] + 8002cc0: 60da str r2, [r3, #12] if(uartHandle->Instance==USART1) - 80029da: 687b ldr r3, [r7, #4] - 80029dc: 681b ldr r3, [r3, #0] - 80029de: 4a20 ldr r2, [pc, #128] @ (8002a60 ) - 80029e0: 4293 cmp r3, r2 - 80029e2: d139 bne.n 8002a58 + 8002cc2: 687b ldr r3, [r7, #4] + 8002cc4: 681b ldr r3, [r3, #0] + 8002cc6: 4a20 ldr r2, [pc, #128] @ (8002d48 ) + 8002cc8: 4293 cmp r3, r2 + 8002cca: d139 bne.n 8002d40 { /* USER CODE BEGIN USART1_MspInit 0 */ /* USER CODE END USART1_MspInit 0 */ /* USART1 clock enable */ __HAL_RCC_USART1_CLK_ENABLE(); - 80029e4: 4b1f ldr r3, [pc, #124] @ (8002a64 ) - 80029e6: 699b ldr r3, [r3, #24] - 80029e8: 4a1e ldr r2, [pc, #120] @ (8002a64 ) - 80029ea: f443 4380 orr.w r3, r3, #16384 @ 0x4000 - 80029ee: 6193 str r3, [r2, #24] - 80029f0: 4b1c ldr r3, [pc, #112] @ (8002a64 ) - 80029f2: 699b ldr r3, [r3, #24] - 80029f4: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 80029f8: 60fb str r3, [r7, #12] - 80029fa: 68fb ldr r3, [r7, #12] + 8002ccc: 4b1f ldr r3, [pc, #124] @ (8002d4c ) + 8002cce: 699b ldr r3, [r3, #24] + 8002cd0: 4a1e ldr r2, [pc, #120] @ (8002d4c ) + 8002cd2: f443 4380 orr.w r3, r3, #16384 @ 0x4000 + 8002cd6: 6193 str r3, [r2, #24] + 8002cd8: 4b1c ldr r3, [pc, #112] @ (8002d4c ) + 8002cda: 699b ldr r3, [r3, #24] + 8002cdc: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8002ce0: 60fb str r3, [r7, #12] + 8002ce2: 68fb ldr r3, [r7, #12] __HAL_RCC_GPIOA_CLK_ENABLE(); - 80029fc: 4b19 ldr r3, [pc, #100] @ (8002a64 ) - 80029fe: 699b ldr r3, [r3, #24] - 8002a00: 4a18 ldr r2, [pc, #96] @ (8002a64 ) - 8002a02: f043 0304 orr.w r3, r3, #4 - 8002a06: 6193 str r3, [r2, #24] - 8002a08: 4b16 ldr r3, [pc, #88] @ (8002a64 ) - 8002a0a: 699b ldr r3, [r3, #24] - 8002a0c: f003 0304 and.w r3, r3, #4 - 8002a10: 60bb str r3, [r7, #8] - 8002a12: 68bb ldr r3, [r7, #8] + 8002ce4: 4b19 ldr r3, [pc, #100] @ (8002d4c ) + 8002ce6: 699b ldr r3, [r3, #24] + 8002ce8: 4a18 ldr r2, [pc, #96] @ (8002d4c ) + 8002cea: f043 0304 orr.w r3, r3, #4 + 8002cee: 6193 str r3, [r2, #24] + 8002cf0: 4b16 ldr r3, [pc, #88] @ (8002d4c ) + 8002cf2: 699b ldr r3, [r3, #24] + 8002cf4: f003 0304 and.w r3, r3, #4 + 8002cf8: 60bb str r3, [r7, #8] + 8002cfa: 68bb ldr r3, [r7, #8] /**USART1 GPIO Configuration PA9 ------> USART1_TX PA10 ------> USART1_RX */ GPIO_InitStruct.Pin = TX_RS485_Pin; - 8002a14: f44f 7300 mov.w r3, #512 @ 0x200 - 8002a18: 613b str r3, [r7, #16] + 8002cfc: f44f 7300 mov.w r3, #512 @ 0x200 + 8002d00: 613b str r3, [r7, #16] GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8002a1a: 2302 movs r3, #2 - 8002a1c: 617b str r3, [r7, #20] + 8002d02: 2302 movs r3, #2 + 8002d04: 617b str r3, [r7, #20] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM; - 8002a1e: 2301 movs r3, #1 - 8002a20: 61fb str r3, [r7, #28] + 8002d06: 2301 movs r3, #1 + 8002d08: 61fb str r3, [r7, #28] HAL_GPIO_Init(TX_RS485_GPIO_Port, &GPIO_InitStruct); - 8002a22: f107 0310 add.w r3, r7, #16 - 8002a26: 4619 mov r1, r3 - 8002a28: 480f ldr r0, [pc, #60] @ (8002a68 ) - 8002a2a: f000 fc9d bl 8003368 + 8002d0a: f107 0310 add.w r3, r7, #16 + 8002d0e: 4619 mov r1, r3 + 8002d10: 480f ldr r0, [pc, #60] @ (8002d50 ) + 8002d12: f000 fc79 bl 8003608 GPIO_InitStruct.Pin = RX_RS485_Pin; - 8002a2e: f44f 6380 mov.w r3, #1024 @ 0x400 - 8002a32: 613b str r3, [r7, #16] + 8002d16: f44f 6380 mov.w r3, #1024 @ 0x400 + 8002d1a: 613b str r3, [r7, #16] GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - 8002a34: 2300 movs r3, #0 - 8002a36: 617b str r3, [r7, #20] + 8002d1c: 2300 movs r3, #0 + 8002d1e: 617b str r3, [r7, #20] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8002a38: 2300 movs r3, #0 - 8002a3a: 61bb str r3, [r7, #24] + 8002d20: 2300 movs r3, #0 + 8002d22: 61bb str r3, [r7, #24] HAL_GPIO_Init(RX_RS485_GPIO_Port, &GPIO_InitStruct); - 8002a3c: f107 0310 add.w r3, r7, #16 - 8002a40: 4619 mov r1, r3 - 8002a42: 4809 ldr r0, [pc, #36] @ (8002a68 ) - 8002a44: f000 fc90 bl 8003368 + 8002d24: f107 0310 add.w r3, r7, #16 + 8002d28: 4619 mov r1, r3 + 8002d2a: 4809 ldr r0, [pc, #36] @ (8002d50 ) + 8002d2c: f000 fc6c bl 8003608 /* USART1 interrupt Init */ HAL_NVIC_SetPriority(USART1_IRQn, 0, 0); - 8002a48: 2200 movs r2, #0 - 8002a4a: 2100 movs r1, #0 - 8002a4c: 2025 movs r0, #37 @ 0x25 - 8002a4e: f000 fba2 bl 8003196 + 8002d30: 2200 movs r2, #0 + 8002d32: 2100 movs r1, #0 + 8002d34: 2025 movs r0, #37 @ 0x25 + 8002d36: f000 fb7e bl 8003436 HAL_NVIC_EnableIRQ(USART1_IRQn); - 8002a52: 2025 movs r0, #37 @ 0x25 - 8002a54: f000 fbbb bl 80031ce + 8002d3a: 2025 movs r0, #37 @ 0x25 + 8002d3c: f000 fb97 bl 800346e /* USER CODE BEGIN USART1_MspInit 1 */ /* USER CODE END USART1_MspInit 1 */ } } - 8002a58: bf00 nop - 8002a5a: 3720 adds r7, #32 - 8002a5c: 46bd mov sp, r7 - 8002a5e: bd80 pop {r7, pc} - 8002a60: 40013800 .word 0x40013800 - 8002a64: 40021000 .word 0x40021000 - 8002a68: 40010800 .word 0x40010800 + 8002d40: bf00 nop + 8002d42: 3720 adds r7, #32 + 8002d44: 46bd mov sp, r7 + 8002d46: bd80 pop {r7, pc} + 8002d48: 40013800 .word 0x40013800 + 8002d4c: 40021000 .word 0x40021000 + 8002d50: 40010800 .word 0x40010800 -08002a6c : +08002d54 : .weak Reset_Handler .type Reset_Handler, %function Reset_Handler: /* Call the clock system initialization function.*/ bl SystemInit - 8002a6c: f7ff ff06 bl 800287c + 8002d54: f7ff ff06 bl 8002b64 /* Copy the data segment initializers from flash to SRAM */ ldr r0, =_sdata - 8002a70: 480b ldr r0, [pc, #44] @ (8002aa0 ) + 8002d58: 480b ldr r0, [pc, #44] @ (8002d88 ) ldr r1, =_edata - 8002a72: 490c ldr r1, [pc, #48] @ (8002aa4 ) + 8002d5a: 490c ldr r1, [pc, #48] @ (8002d8c ) ldr r2, =_sidata - 8002a74: 4a0c ldr r2, [pc, #48] @ (8002aa8 ) + 8002d5c: 4a0c ldr r2, [pc, #48] @ (8002d90 ) movs r3, #0 - 8002a76: 2300 movs r3, #0 + 8002d5e: 2300 movs r3, #0 b LoopCopyDataInit - 8002a78: e002 b.n 8002a80 + 8002d60: e002 b.n 8002d68 -08002a7a : +08002d62 : CopyDataInit: ldr r4, [r2, r3] - 8002a7a: 58d4 ldr r4, [r2, r3] + 8002d62: 58d4 ldr r4, [r2, r3] str r4, [r0, r3] - 8002a7c: 50c4 str r4, [r0, r3] + 8002d64: 50c4 str r4, [r0, r3] adds r3, r3, #4 - 8002a7e: 3304 adds r3, #4 + 8002d66: 3304 adds r3, #4 -08002a80 : +08002d68 : LoopCopyDataInit: adds r4, r0, r3 - 8002a80: 18c4 adds r4, r0, r3 + 8002d68: 18c4 adds r4, r0, r3 cmp r4, r1 - 8002a82: 428c cmp r4, r1 + 8002d6a: 428c cmp r4, r1 bcc CopyDataInit - 8002a84: d3f9 bcc.n 8002a7a + 8002d6c: d3f9 bcc.n 8002d62 /* Zero fill the bss segment. */ ldr r2, =_sbss - 8002a86: 4a09 ldr r2, [pc, #36] @ (8002aac ) + 8002d6e: 4a09 ldr r2, [pc, #36] @ (8002d94 ) ldr r4, =_ebss - 8002a88: 4c09 ldr r4, [pc, #36] @ (8002ab0 ) + 8002d70: 4c09 ldr r4, [pc, #36] @ (8002d98 ) movs r3, #0 - 8002a8a: 2300 movs r3, #0 + 8002d72: 2300 movs r3, #0 b LoopFillZerobss - 8002a8c: e001 b.n 8002a92 + 8002d74: e001 b.n 8002d7a -08002a8e : +08002d76 : FillZerobss: str r3, [r2] - 8002a8e: 6013 str r3, [r2, #0] + 8002d76: 6013 str r3, [r2, #0] adds r2, r2, #4 - 8002a90: 3204 adds r2, #4 + 8002d78: 3204 adds r2, #4 -08002a92 : +08002d7a : LoopFillZerobss: cmp r2, r4 - 8002a92: 42a2 cmp r2, r4 + 8002d7a: 42a2 cmp r2, r4 bcc FillZerobss - 8002a94: d3fb bcc.n 8002a8e + 8002d7c: d3fb bcc.n 8002d76 /* Call static constructors */ bl __libc_init_array - 8002a96: f003 fd45 bl 8006524 <__libc_init_array> + 8002d7e: f003 fd21 bl 80067c4 <__libc_init_array> /* Call the application's entry point.*/ bl main - 8002a9a: f7ff faa9 bl 8001ff0
+ 8002d82: f7ff f9e7 bl 8002154
bx lr - 8002a9e: 4770 bx lr + 8002d86: 4770 bx lr ldr r0, =_sdata - 8002aa0: 20000000 .word 0x20000000 + 8002d88: 20000000 .word 0x20000000 ldr r1, =_edata - 8002aa4: 20000094 .word 0x20000094 + 8002d8c: 20000064 .word 0x20000064 ldr r2, =_sidata - 8002aa8: 08006754 .word 0x08006754 + 8002d90: 08006aac .word 0x08006aac ldr r2, =_sbss - 8002aac: 20000094 .word 0x20000094 + 8002d94: 20000064 .word 0x20000064 ldr r4, =_ebss - 8002ab0: 2000094c .word 0x2000094c + 8002d98: 200008e4 .word 0x200008e4 -08002ab4 : +08002d9c : * @retval : None */ .section .text.Default_Handler,"ax",%progbits Default_Handler: Infinite_Loop: b Infinite_Loop - 8002ab4: e7fe b.n 8002ab4 + 8002d9c: e7fe b.n 8002d9c ... -08002ab8 : +08002da0 : * 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) { - 8002ab8: b580 push {r7, lr} - 8002aba: af00 add r7, sp, #0 + 8002da0: b580 push {r7, lr} + 8002da2: af00 add r7, sp, #0 defined(STM32F102x6) || defined(STM32F102xB) || \ defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || \ defined(STM32F105xC) || defined(STM32F107xC) /* Prefetch buffer is not available on value line devices */ __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); - 8002abc: 4b08 ldr r3, [pc, #32] @ (8002ae0 ) - 8002abe: 681b ldr r3, [r3, #0] - 8002ac0: 4a07 ldr r2, [pc, #28] @ (8002ae0 ) - 8002ac2: f043 0310 orr.w r3, r3, #16 - 8002ac6: 6013 str r3, [r2, #0] + 8002da4: 4b08 ldr r3, [pc, #32] @ (8002dc8 ) + 8002da6: 681b ldr r3, [r3, #0] + 8002da8: 4a07 ldr r2, [pc, #28] @ (8002dc8 ) + 8002daa: f043 0310 orr.w r3, r3, #16 + 8002dae: 6013 str r3, [r2, #0] #endif #endif /* PREFETCH_ENABLE */ /* Set Interrupt Group Priority */ HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); - 8002ac8: 2003 movs r0, #3 - 8002aca: f000 fb59 bl 8003180 + 8002db0: 2003 movs r0, #3 + 8002db2: f000 fb35 bl 8003420 /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */ HAL_InitTick(TICK_INT_PRIORITY); - 8002ace: 200f movs r0, #15 - 8002ad0: f000 f808 bl 8002ae4 + 8002db6: 200f movs r0, #15 + 8002db8: f000 f808 bl 8002dcc /* Init the low level hardware */ HAL_MspInit(); - 8002ad4: f7ff fe60 bl 8002798 + 8002dbc: f7ff fe60 bl 8002a80 /* Return function status */ return HAL_OK; - 8002ad8: 2300 movs r3, #0 + 8002dc0: 2300 movs r3, #0 } - 8002ada: 4618 mov r0, r3 - 8002adc: bd80 pop {r7, pc} - 8002ade: bf00 nop - 8002ae0: 40022000 .word 0x40022000 + 8002dc2: 4618 mov r0, r3 + 8002dc4: bd80 pop {r7, pc} + 8002dc6: bf00 nop + 8002dc8: 40022000 .word 0x40022000 -08002ae4 : +08002dcc : * implementation in user file. * @param TickPriority Tick interrupt priority. * @retval HAL status */ __weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) { - 8002ae4: b580 push {r7, lr} - 8002ae6: b082 sub sp, #8 - 8002ae8: af00 add r7, sp, #0 - 8002aea: 6078 str r0, [r7, #4] + 8002dcc: b580 push {r7, lr} + 8002dce: b082 sub sp, #8 + 8002dd0: af00 add r7, sp, #0 + 8002dd2: 6078 str r0, [r7, #4] /* Configure the SysTick to have interrupt in 1ms time basis*/ if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U) - 8002aec: 4b12 ldr r3, [pc, #72] @ (8002b38 ) - 8002aee: 681a ldr r2, [r3, #0] - 8002af0: 4b12 ldr r3, [pc, #72] @ (8002b3c ) - 8002af2: 781b ldrb r3, [r3, #0] - 8002af4: 4619 mov r1, r3 - 8002af6: f44f 737a mov.w r3, #1000 @ 0x3e8 - 8002afa: fbb3 f3f1 udiv r3, r3, r1 - 8002afe: fbb2 f3f3 udiv r3, r2, r3 - 8002b02: 4618 mov r0, r3 - 8002b04: f000 fb71 bl 80031ea - 8002b08: 4603 mov r3, r0 - 8002b0a: 2b00 cmp r3, #0 - 8002b0c: d001 beq.n 8002b12 + 8002dd4: 4b12 ldr r3, [pc, #72] @ (8002e20 ) + 8002dd6: 681a ldr r2, [r3, #0] + 8002dd8: 4b12 ldr r3, [pc, #72] @ (8002e24 ) + 8002dda: 781b ldrb r3, [r3, #0] + 8002ddc: 4619 mov r1, r3 + 8002dde: f44f 737a mov.w r3, #1000 @ 0x3e8 + 8002de2: fbb3 f3f1 udiv r3, r3, r1 + 8002de6: fbb2 f3f3 udiv r3, r2, r3 + 8002dea: 4618 mov r0, r3 + 8002dec: f000 fb4d bl 800348a + 8002df0: 4603 mov r3, r0 + 8002df2: 2b00 cmp r3, #0 + 8002df4: d001 beq.n 8002dfa { return HAL_ERROR; - 8002b0e: 2301 movs r3, #1 - 8002b10: e00e b.n 8002b30 + 8002df6: 2301 movs r3, #1 + 8002df8: e00e b.n 8002e18 } /* Configure the SysTick IRQ priority */ if (TickPriority < (1UL << __NVIC_PRIO_BITS)) - 8002b12: 687b ldr r3, [r7, #4] - 8002b14: 2b0f cmp r3, #15 - 8002b16: d80a bhi.n 8002b2e + 8002dfa: 687b ldr r3, [r7, #4] + 8002dfc: 2b0f cmp r3, #15 + 8002dfe: d80a bhi.n 8002e16 { HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); - 8002b18: 2200 movs r2, #0 - 8002b1a: 6879 ldr r1, [r7, #4] - 8002b1c: f04f 30ff mov.w r0, #4294967295 - 8002b20: f000 fb39 bl 8003196 + 8002e00: 2200 movs r2, #0 + 8002e02: 6879 ldr r1, [r7, #4] + 8002e04: f04f 30ff mov.w r0, #4294967295 + 8002e08: f000 fb15 bl 8003436 uwTickPrio = TickPriority; - 8002b24: 4a06 ldr r2, [pc, #24] @ (8002b40 ) - 8002b26: 687b ldr r3, [r7, #4] - 8002b28: 6013 str r3, [r2, #0] + 8002e0c: 4a06 ldr r2, [pc, #24] @ (8002e28 ) + 8002e0e: 687b ldr r3, [r7, #4] + 8002e10: 6013 str r3, [r2, #0] { return HAL_ERROR; } /* Return function status */ return HAL_OK; - 8002b2a: 2300 movs r3, #0 - 8002b2c: e000 b.n 8002b30 + 8002e12: 2300 movs r3, #0 + 8002e14: e000 b.n 8002e18 return HAL_ERROR; - 8002b2e: 2301 movs r3, #1 + 8002e16: 2301 movs r3, #1 } - 8002b30: 4618 mov r0, r3 - 8002b32: 3708 adds r7, #8 - 8002b34: 46bd mov sp, r7 - 8002b36: bd80 pop {r7, pc} - 8002b38: 20000038 .word 0x20000038 - 8002b3c: 20000040 .word 0x20000040 - 8002b40: 2000003c .word 0x2000003c + 8002e18: 4618 mov r0, r3 + 8002e1a: 3708 adds r7, #8 + 8002e1c: 46bd mov sp, r7 + 8002e1e: bd80 pop {r7, pc} + 8002e20: 20000008 .word 0x20000008 + 8002e24: 20000010 .word 0x20000010 + 8002e28: 2000000c .word 0x2000000c -08002b44 : +08002e2c : * @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) { - 8002b44: b480 push {r7} - 8002b46: af00 add r7, sp, #0 + 8002e2c: b480 push {r7} + 8002e2e: af00 add r7, sp, #0 uwTick += uwTickFreq; - 8002b48: 4b05 ldr r3, [pc, #20] @ (8002b60 ) - 8002b4a: 781b ldrb r3, [r3, #0] - 8002b4c: 461a mov r2, r3 - 8002b4e: 4b05 ldr r3, [pc, #20] @ (8002b64 ) - 8002b50: 681b ldr r3, [r3, #0] - 8002b52: 4413 add r3, r2 - 8002b54: 4a03 ldr r2, [pc, #12] @ (8002b64 ) - 8002b56: 6013 str r3, [r2, #0] + 8002e30: 4b05 ldr r3, [pc, #20] @ (8002e48 ) + 8002e32: 781b ldrb r3, [r3, #0] + 8002e34: 461a mov r2, r3 + 8002e36: 4b05 ldr r3, [pc, #20] @ (8002e4c ) + 8002e38: 681b ldr r3, [r3, #0] + 8002e3a: 4413 add r3, r2 + 8002e3c: 4a03 ldr r2, [pc, #12] @ (8002e4c ) + 8002e3e: 6013 str r3, [r2, #0] } - 8002b58: bf00 nop - 8002b5a: 46bd mov sp, r7 - 8002b5c: bc80 pop {r7} - 8002b5e: 4770 bx lr - 8002b60: 20000040 .word 0x20000040 - 8002b64: 20000810 .word 0x20000810 + 8002e40: bf00 nop + 8002e42: 46bd mov sp, r7 + 8002e44: bc80 pop {r7} + 8002e46: 4770 bx lr + 8002e48: 20000010 .word 0x20000010 + 8002e4c: 200007a8 .word 0x200007a8 -08002b68 : +08002e50 : * @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) { - 8002b68: b480 push {r7} - 8002b6a: af00 add r7, sp, #0 + 8002e50: b480 push {r7} + 8002e52: af00 add r7, sp, #0 return uwTick; - 8002b6c: 4b02 ldr r3, [pc, #8] @ (8002b78 ) - 8002b6e: 681b ldr r3, [r3, #0] + 8002e54: 4b02 ldr r3, [pc, #8] @ (8002e60 ) + 8002e56: 681b ldr r3, [r3, #0] } - 8002b70: 4618 mov r0, r3 - 8002b72: 46bd mov sp, r7 - 8002b74: bc80 pop {r7} - 8002b76: 4770 bx lr - 8002b78: 20000810 .word 0x20000810 + 8002e58: 4618 mov r0, r3 + 8002e5a: 46bd mov sp, r7 + 8002e5c: bc80 pop {r7} + 8002e5e: 4770 bx lr + 8002e60: 200007a8 .word 0x200007a8 -08002b7c : - * implementations in user file. - * @param Delay specifies the delay time length, in milliseconds. - * @retval None - */ -__weak void HAL_Delay(uint32_t Delay) -{ - 8002b7c: b580 push {r7, lr} - 8002b7e: b084 sub sp, #16 - 8002b80: af00 add r7, sp, #0 - 8002b82: 6078 str r0, [r7, #4] - uint32_t tickstart = HAL_GetTick(); - 8002b84: f7ff fff0 bl 8002b68 - 8002b88: 60b8 str r0, [r7, #8] - uint32_t wait = Delay; - 8002b8a: 687b ldr r3, [r7, #4] - 8002b8c: 60fb str r3, [r7, #12] - - /* Add a freq to guarantee minimum wait */ - if (wait < HAL_MAX_DELAY) - 8002b8e: 68fb ldr r3, [r7, #12] - 8002b90: f1b3 3fff cmp.w r3, #4294967295 - 8002b94: d005 beq.n 8002ba2 - { - wait += (uint32_t)(uwTickFreq); - 8002b96: 4b0a ldr r3, [pc, #40] @ (8002bc0 ) - 8002b98: 781b ldrb r3, [r3, #0] - 8002b9a: 461a mov r2, r3 - 8002b9c: 68fb ldr r3, [r7, #12] - 8002b9e: 4413 add r3, r2 - 8002ba0: 60fb str r3, [r7, #12] - } - - while ((HAL_GetTick() - tickstart) < wait) - 8002ba2: bf00 nop - 8002ba4: f7ff ffe0 bl 8002b68 - 8002ba8: 4602 mov r2, r0 - 8002baa: 68bb ldr r3, [r7, #8] - 8002bac: 1ad3 subs r3, r2, r3 - 8002bae: 68fa ldr r2, [r7, #12] - 8002bb0: 429a cmp r2, r3 - 8002bb2: d8f7 bhi.n 8002ba4 - { - } -} - 8002bb4: bf00 nop - 8002bb6: bf00 nop - 8002bb8: 3710 adds r7, #16 - 8002bba: 46bd mov sp, r7 - 8002bbc: bd80 pop {r7, pc} - 8002bbe: bf00 nop - 8002bc0: 20000040 .word 0x20000040 - -08002bc4 : +08002e64 : * of structure "ADC_InitTypeDef". * @param hadc: ADC handle * @retval HAL status */ HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef* hadc) { - 8002bc4: b580 push {r7, lr} - 8002bc6: b086 sub sp, #24 - 8002bc8: af00 add r7, sp, #0 - 8002bca: 6078 str r0, [r7, #4] + 8002e64: b580 push {r7, lr} + 8002e66: b086 sub sp, #24 + 8002e68: af00 add r7, sp, #0 + 8002e6a: 6078 str r0, [r7, #4] HAL_StatusTypeDef tmp_hal_status = HAL_OK; - 8002bcc: 2300 movs r3, #0 - 8002bce: 75fb strb r3, [r7, #23] + 8002e6c: 2300 movs r3, #0 + 8002e6e: 75fb strb r3, [r7, #23] uint32_t tmp_cr1 = 0U; - 8002bd0: 2300 movs r3, #0 - 8002bd2: 613b str r3, [r7, #16] + 8002e70: 2300 movs r3, #0 + 8002e72: 613b str r3, [r7, #16] uint32_t tmp_cr2 = 0U; - 8002bd4: 2300 movs r3, #0 - 8002bd6: 60bb str r3, [r7, #8] + 8002e74: 2300 movs r3, #0 + 8002e76: 60bb str r3, [r7, #8] uint32_t tmp_sqr1 = 0U; - 8002bd8: 2300 movs r3, #0 - 8002bda: 60fb str r3, [r7, #12] + 8002e78: 2300 movs r3, #0 + 8002e7a: 60fb str r3, [r7, #12] /* Check ADC handle */ if(hadc == NULL) - 8002bdc: 687b ldr r3, [r7, #4] - 8002bde: 2b00 cmp r3, #0 - 8002be0: d101 bne.n 8002be6 + 8002e7c: 687b ldr r3, [r7, #4] + 8002e7e: 2b00 cmp r3, #0 + 8002e80: d101 bne.n 8002e86 { return HAL_ERROR; - 8002be2: 2301 movs r3, #1 - 8002be4: e0be b.n 8002d64 + 8002e82: 2301 movs r3, #1 + 8002e84: e0be b.n 8003004 assert_param(IS_ADC_DATA_ALIGN(hadc->Init.DataAlign)); assert_param(IS_ADC_SCAN_MODE(hadc->Init.ScanConvMode)); assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode)); assert_param(IS_ADC_EXTTRIG(hadc->Init.ExternalTrigConv)); if(hadc->Init.ScanConvMode != ADC_SCAN_DISABLE) - 8002be6: 687b ldr r3, [r7, #4] - 8002be8: 689b ldr r3, [r3, #8] - 8002bea: 2b00 cmp r3, #0 + 8002e86: 687b ldr r3, [r7, #4] + 8002e88: 689b ldr r3, [r3, #8] + 8002e8a: 2b00 cmp r3, #0 /* Refer to header of this file for more details on clock enabling */ /* procedure. */ /* Actions performed only if ADC is coming from state reset: */ /* - Initialization of ADC MSP */ if (hadc->State == HAL_ADC_STATE_RESET) - 8002bec: 687b ldr r3, [r7, #4] - 8002bee: 6a9b ldr r3, [r3, #40] @ 0x28 - 8002bf0: 2b00 cmp r3, #0 - 8002bf2: d109 bne.n 8002c08 + 8002e8c: 687b ldr r3, [r7, #4] + 8002e8e: 6a9b ldr r3, [r3, #40] @ 0x28 + 8002e90: 2b00 cmp r3, #0 + 8002e92: d109 bne.n 8002ea8 { /* Initialize ADC error code */ ADC_CLEAR_ERRORCODE(hadc); - 8002bf4: 687b ldr r3, [r7, #4] - 8002bf6: 2200 movs r2, #0 - 8002bf8: 62da str r2, [r3, #44] @ 0x2c + 8002e94: 687b ldr r3, [r7, #4] + 8002e96: 2200 movs r2, #0 + 8002e98: 62da str r2, [r3, #44] @ 0x2c /* Allocate lock resource and initialize it */ hadc->Lock = HAL_UNLOCKED; - 8002bfa: 687b ldr r3, [r7, #4] - 8002bfc: 2200 movs r2, #0 - 8002bfe: f883 2024 strb.w r2, [r3, #36] @ 0x24 + 8002e9a: 687b ldr r3, [r7, #4] + 8002e9c: 2200 movs r2, #0 + 8002e9e: f883 2024 strb.w r2, [r3, #36] @ 0x24 /* Init the low level hardware */ hadc->MspInitCallback(hadc); #else /* Init the low level hardware */ HAL_ADC_MspInit(hadc); - 8002c02: 6878 ldr r0, [r7, #4] - 8002c04: f7fe fd70 bl 80016e8 + 8002ea2: 6878 ldr r0, [r7, #4] + 8002ea4: f7fe fcce bl 8001844 /* Stop potential conversion on going, on regular and injected groups */ /* Disable ADC peripheral */ /* Note: In case of ADC already enabled, precaution to not launch an */ /* unwanted conversion while modifying register CR2 by writing 1 to */ /* bit ADON. */ tmp_hal_status = ADC_ConversionStop_Disable(hadc); - 8002c08: 6878 ldr r0, [r7, #4] - 8002c0a: f000 f9ab bl 8002f64 - 8002c0e: 4603 mov r3, r0 - 8002c10: 75fb strb r3, [r7, #23] + 8002ea8: 6878 ldr r0, [r7, #4] + 8002eaa: f000 f9ab bl 8003204 + 8002eae: 4603 mov r3, r0 + 8002eb0: 75fb strb r3, [r7, #23] /* Configuration of ADC parameters if previous preliminary actions are */ /* correctly completed. */ if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL) && - 8002c12: 687b ldr r3, [r7, #4] - 8002c14: 6a9b ldr r3, [r3, #40] @ 0x28 - 8002c16: f003 0310 and.w r3, r3, #16 - 8002c1a: 2b00 cmp r3, #0 - 8002c1c: f040 8099 bne.w 8002d52 - 8002c20: 7dfb ldrb r3, [r7, #23] - 8002c22: 2b00 cmp r3, #0 - 8002c24: f040 8095 bne.w 8002d52 + 8002eb2: 687b ldr r3, [r7, #4] + 8002eb4: 6a9b ldr r3, [r3, #40] @ 0x28 + 8002eb6: f003 0310 and.w r3, r3, #16 + 8002eba: 2b00 cmp r3, #0 + 8002ebc: f040 8099 bne.w 8002ff2 + 8002ec0: 7dfb ldrb r3, [r7, #23] + 8002ec2: 2b00 cmp r3, #0 + 8002ec4: f040 8095 bne.w 8002ff2 (tmp_hal_status == HAL_OK) ) { /* Set ADC state */ ADC_STATE_CLR_SET(hadc->State, - 8002c28: 687b ldr r3, [r7, #4] - 8002c2a: 6a9b ldr r3, [r3, #40] @ 0x28 - 8002c2c: f423 5388 bic.w r3, r3, #4352 @ 0x1100 - 8002c30: f023 0302 bic.w r3, r3, #2 - 8002c34: f043 0202 orr.w r2, r3, #2 - 8002c38: 687b ldr r3, [r7, #4] - 8002c3a: 629a str r2, [r3, #40] @ 0x28 + 8002ec8: 687b ldr r3, [r7, #4] + 8002eca: 6a9b ldr r3, [r3, #40] @ 0x28 + 8002ecc: f423 5388 bic.w r3, r3, #4352 @ 0x1100 + 8002ed0: f023 0302 bic.w r3, r3, #2 + 8002ed4: f043 0202 orr.w r2, r3, #2 + 8002ed8: 687b ldr r3, [r7, #4] + 8002eda: 629a str r2, [r3, #40] @ 0x28 /* - continuous conversion mode */ /* Note: External trigger polarity (ADC_CR2_EXTTRIG) is set into */ /* HAL_ADC_Start_xxx functions because if set in this function, */ /* a conversion on injected group would start a conversion also on */ /* regular group after ADC enabling. */ tmp_cr2 |= (hadc->Init.DataAlign | - 8002c3c: 687b ldr r3, [r7, #4] - 8002c3e: 685a ldr r2, [r3, #4] + 8002edc: 687b ldr r3, [r7, #4] + 8002ede: 685a ldr r2, [r3, #4] ADC_CFGR_EXTSEL(hadc, hadc->Init.ExternalTrigConv) | - 8002c40: 687b ldr r3, [r7, #4] - 8002c42: 69db ldr r3, [r3, #28] + 8002ee0: 687b ldr r3, [r7, #4] + 8002ee2: 69db ldr r3, [r3, #28] tmp_cr2 |= (hadc->Init.DataAlign | - 8002c44: 431a orrs r2, r3 + 8002ee4: 431a orrs r2, r3 ADC_CR2_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode) ); - 8002c46: 687b ldr r3, [r7, #4] - 8002c48: 7b1b ldrb r3, [r3, #12] - 8002c4a: 005b lsls r3, r3, #1 + 8002ee6: 687b ldr r3, [r7, #4] + 8002ee8: 7b1b ldrb r3, [r3, #12] + 8002eea: 005b lsls r3, r3, #1 ADC_CFGR_EXTSEL(hadc, hadc->Init.ExternalTrigConv) | - 8002c4c: 4313 orrs r3, r2 + 8002eec: 4313 orrs r3, r2 tmp_cr2 |= (hadc->Init.DataAlign | - 8002c4e: 68ba ldr r2, [r7, #8] - 8002c50: 4313 orrs r3, r2 - 8002c52: 60bb str r3, [r7, #8] + 8002eee: 68ba ldr r2, [r7, #8] + 8002ef0: 4313 orrs r3, r2 + 8002ef2: 60bb str r3, [r7, #8] /* Configuration of ADC: */ /* - scan mode */ /* - discontinuous mode disable/enable */ /* - discontinuous mode number of conversions */ tmp_cr1 |= (ADC_CR1_SCAN_SET(hadc->Init.ScanConvMode)); - 8002c54: 687b ldr r3, [r7, #4] - 8002c56: 689b ldr r3, [r3, #8] - 8002c58: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 8002c5c: d003 beq.n 8002c66 - 8002c5e: 687b ldr r3, [r7, #4] - 8002c60: 689b ldr r3, [r3, #8] - 8002c62: 2b01 cmp r3, #1 - 8002c64: d102 bne.n 8002c6c - 8002c66: f44f 7380 mov.w r3, #256 @ 0x100 - 8002c6a: e000 b.n 8002c6e - 8002c6c: 2300 movs r3, #0 - 8002c6e: 693a ldr r2, [r7, #16] - 8002c70: 4313 orrs r3, r2 - 8002c72: 613b str r3, [r7, #16] + 8002ef4: 687b ldr r3, [r7, #4] + 8002ef6: 689b ldr r3, [r3, #8] + 8002ef8: f5b3 7f80 cmp.w r3, #256 @ 0x100 + 8002efc: d003 beq.n 8002f06 + 8002efe: 687b ldr r3, [r7, #4] + 8002f00: 689b ldr r3, [r3, #8] + 8002f02: 2b01 cmp r3, #1 + 8002f04: d102 bne.n 8002f0c + 8002f06: f44f 7380 mov.w r3, #256 @ 0x100 + 8002f0a: e000 b.n 8002f0e + 8002f0c: 2300 movs r3, #0 + 8002f0e: 693a ldr r2, [r7, #16] + 8002f10: 4313 orrs r3, r2 + 8002f12: 613b str r3, [r7, #16] /* Enable discontinuous mode only if continuous mode is disabled */ /* Note: If parameter "Init.ScanConvMode" is set to disable, parameter */ /* discontinuous is set anyway, but will have no effect on ADC HW. */ if (hadc->Init.DiscontinuousConvMode == ENABLE) - 8002c74: 687b ldr r3, [r7, #4] - 8002c76: 7d1b ldrb r3, [r3, #20] - 8002c78: 2b01 cmp r3, #1 - 8002c7a: d119 bne.n 8002cb0 + 8002f14: 687b ldr r3, [r7, #4] + 8002f16: 7d1b ldrb r3, [r3, #20] + 8002f18: 2b01 cmp r3, #1 + 8002f1a: d119 bne.n 8002f50 { if (hadc->Init.ContinuousConvMode == DISABLE) - 8002c7c: 687b ldr r3, [r7, #4] - 8002c7e: 7b1b ldrb r3, [r3, #12] - 8002c80: 2b00 cmp r3, #0 - 8002c82: d109 bne.n 8002c98 + 8002f1c: 687b ldr r3, [r7, #4] + 8002f1e: 7b1b ldrb r3, [r3, #12] + 8002f20: 2b00 cmp r3, #0 + 8002f22: d109 bne.n 8002f38 { /* Enable the selected ADC regular discontinuous mode */ /* Set the number of channels to be converted in discontinuous mode */ SET_BIT(tmp_cr1, ADC_CR1_DISCEN | - 8002c84: 687b ldr r3, [r7, #4] - 8002c86: 699b ldr r3, [r3, #24] - 8002c88: 3b01 subs r3, #1 - 8002c8a: 035a lsls r2, r3, #13 - 8002c8c: 693b ldr r3, [r7, #16] - 8002c8e: 4313 orrs r3, r2 - 8002c90: f443 6300 orr.w r3, r3, #2048 @ 0x800 - 8002c94: 613b str r3, [r7, #16] - 8002c96: e00b b.n 8002cb0 + 8002f24: 687b ldr r3, [r7, #4] + 8002f26: 699b ldr r3, [r3, #24] + 8002f28: 3b01 subs r3, #1 + 8002f2a: 035a lsls r2, r3, #13 + 8002f2c: 693b ldr r3, [r7, #16] + 8002f2e: 4313 orrs r3, r2 + 8002f30: f443 6300 orr.w r3, r3, #2048 @ 0x800 + 8002f34: 613b str r3, [r7, #16] + 8002f36: e00b b.n 8002f50 { /* ADC regular group settings continuous and sequencer discontinuous*/ /* cannot be enabled simultaneously. */ /* Update ADC state machine to error */ SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); - 8002c98: 687b ldr r3, [r7, #4] - 8002c9a: 6a9b ldr r3, [r3, #40] @ 0x28 - 8002c9c: f043 0220 orr.w r2, r3, #32 - 8002ca0: 687b ldr r3, [r7, #4] - 8002ca2: 629a str r2, [r3, #40] @ 0x28 + 8002f38: 687b ldr r3, [r7, #4] + 8002f3a: 6a9b ldr r3, [r3, #40] @ 0x28 + 8002f3c: f043 0220 orr.w r2, r3, #32 + 8002f40: 687b ldr r3, [r7, #4] + 8002f42: 629a str r2, [r3, #40] @ 0x28 /* Set ADC error code to ADC IP internal error */ SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); - 8002ca4: 687b ldr r3, [r7, #4] - 8002ca6: 6adb ldr r3, [r3, #44] @ 0x2c - 8002ca8: f043 0201 orr.w r2, r3, #1 - 8002cac: 687b ldr r3, [r7, #4] - 8002cae: 62da str r2, [r3, #44] @ 0x2c + 8002f44: 687b ldr r3, [r7, #4] + 8002f46: 6adb ldr r3, [r3, #44] @ 0x2c + 8002f48: f043 0201 orr.w r2, r3, #1 + 8002f4c: 687b ldr r3, [r7, #4] + 8002f4e: 62da str r2, [r3, #44] @ 0x2c } } /* Update ADC configuration register CR1 with previous settings */ MODIFY_REG(hadc->Instance->CR1, - 8002cb0: 687b ldr r3, [r7, #4] - 8002cb2: 681b ldr r3, [r3, #0] - 8002cb4: 685b ldr r3, [r3, #4] - 8002cb6: f423 4169 bic.w r1, r3, #59648 @ 0xe900 - 8002cba: 687b ldr r3, [r7, #4] - 8002cbc: 681b ldr r3, [r3, #0] - 8002cbe: 693a ldr r2, [r7, #16] - 8002cc0: 430a orrs r2, r1 - 8002cc2: 605a str r2, [r3, #4] + 8002f50: 687b ldr r3, [r7, #4] + 8002f52: 681b ldr r3, [r3, #0] + 8002f54: 685b ldr r3, [r3, #4] + 8002f56: f423 4169 bic.w r1, r3, #59648 @ 0xe900 + 8002f5a: 687b ldr r3, [r7, #4] + 8002f5c: 681b ldr r3, [r3, #0] + 8002f5e: 693a ldr r2, [r7, #16] + 8002f60: 430a orrs r2, r1 + 8002f62: 605a str r2, [r3, #4] ADC_CR1_DISCEN | ADC_CR1_DISCNUM , tmp_cr1 ); /* Update ADC configuration register CR2 with previous settings */ MODIFY_REG(hadc->Instance->CR2, - 8002cc4: 687b ldr r3, [r7, #4] - 8002cc6: 681b ldr r3, [r3, #0] - 8002cc8: 689a ldr r2, [r3, #8] - 8002cca: 4b28 ldr r3, [pc, #160] @ (8002d6c ) - 8002ccc: 4013 ands r3, r2 - 8002cce: 687a ldr r2, [r7, #4] - 8002cd0: 6812 ldr r2, [r2, #0] - 8002cd2: 68b9 ldr r1, [r7, #8] - 8002cd4: 430b orrs r3, r1 - 8002cd6: 6093 str r3, [r2, #8] + 8002f64: 687b ldr r3, [r7, #4] + 8002f66: 681b ldr r3, [r3, #0] + 8002f68: 689a ldr r2, [r3, #8] + 8002f6a: 4b28 ldr r3, [pc, #160] @ (800300c ) + 8002f6c: 4013 ands r3, r2 + 8002f6e: 687a ldr r2, [r7, #4] + 8002f70: 6812 ldr r2, [r2, #0] + 8002f72: 68b9 ldr r1, [r7, #8] + 8002f74: 430b orrs r3, r1 + 8002f76: 6093 str r3, [r2, #8] /* Note: Scan mode is present by hardware on this device and, if */ /* disabled, discards automatically nb of conversions. Anyway, nb of */ /* conversions is forced to 0x00 for alignment over all STM32 devices. */ /* - if scan mode is enabled, regular channels sequence length is set to */ /* parameter "NbrOfConversion" */ if (ADC_CR1_SCAN_SET(hadc->Init.ScanConvMode) == ADC_SCAN_ENABLE) - 8002cd8: 687b ldr r3, [r7, #4] - 8002cda: 689b ldr r3, [r3, #8] - 8002cdc: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 8002ce0: d003 beq.n 8002cea - 8002ce2: 687b ldr r3, [r7, #4] - 8002ce4: 689b ldr r3, [r3, #8] - 8002ce6: 2b01 cmp r3, #1 - 8002ce8: d104 bne.n 8002cf4 + 8002f78: 687b ldr r3, [r7, #4] + 8002f7a: 689b ldr r3, [r3, #8] + 8002f7c: f5b3 7f80 cmp.w r3, #256 @ 0x100 + 8002f80: d003 beq.n 8002f8a + 8002f82: 687b ldr r3, [r7, #4] + 8002f84: 689b ldr r3, [r3, #8] + 8002f86: 2b01 cmp r3, #1 + 8002f88: d104 bne.n 8002f94 { tmp_sqr1 = ADC_SQR1_L_SHIFT(hadc->Init.NbrOfConversion); - 8002cea: 687b ldr r3, [r7, #4] - 8002cec: 691b ldr r3, [r3, #16] - 8002cee: 3b01 subs r3, #1 - 8002cf0: 051b lsls r3, r3, #20 - 8002cf2: 60fb str r3, [r7, #12] + 8002f8a: 687b ldr r3, [r7, #4] + 8002f8c: 691b ldr r3, [r3, #16] + 8002f8e: 3b01 subs r3, #1 + 8002f90: 051b lsls r3, r3, #20 + 8002f92: 60fb str r3, [r7, #12] } MODIFY_REG(hadc->Instance->SQR1, - 8002cf4: 687b ldr r3, [r7, #4] - 8002cf6: 681b ldr r3, [r3, #0] - 8002cf8: 6adb ldr r3, [r3, #44] @ 0x2c - 8002cfa: f423 0170 bic.w r1, r3, #15728640 @ 0xf00000 - 8002cfe: 687b ldr r3, [r7, #4] - 8002d00: 681b ldr r3, [r3, #0] - 8002d02: 68fa ldr r2, [r7, #12] - 8002d04: 430a orrs r2, r1 - 8002d06: 62da str r2, [r3, #44] @ 0x2c + 8002f94: 687b ldr r3, [r7, #4] + 8002f96: 681b ldr r3, [r3, #0] + 8002f98: 6adb ldr r3, [r3, #44] @ 0x2c + 8002f9a: f423 0170 bic.w r1, r3, #15728640 @ 0xf00000 + 8002f9e: 687b ldr r3, [r7, #4] + 8002fa0: 681b ldr r3, [r3, #0] + 8002fa2: 68fa ldr r2, [r7, #12] + 8002fa4: 430a orrs r2, r1 + 8002fa6: 62da str r2, [r3, #44] @ 0x2c /* ensure of no potential problem of ADC core IP clocking. */ /* Check through register CR2 (excluding bits set in other functions: */ /* execution control bits (ADON, JSWSTART, SWSTART), regular group bits */ /* (DMA), injected group bits (JEXTTRIG and JEXTSEL), channel internal */ /* measurement path bit (TSVREFE). */ if (READ_BIT(hadc->Instance->CR2, ~(ADC_CR2_ADON | ADC_CR2_DMA | - 8002d08: 687b ldr r3, [r7, #4] - 8002d0a: 681b ldr r3, [r3, #0] - 8002d0c: 689a ldr r2, [r3, #8] - 8002d0e: 4b18 ldr r3, [pc, #96] @ (8002d70 ) - 8002d10: 4013 ands r3, r2 - 8002d12: 68ba ldr r2, [r7, #8] - 8002d14: 429a cmp r2, r3 - 8002d16: d10b bne.n 8002d30 + 8002fa8: 687b ldr r3, [r7, #4] + 8002faa: 681b ldr r3, [r3, #0] + 8002fac: 689a ldr r2, [r3, #8] + 8002fae: 4b18 ldr r3, [pc, #96] @ (8003010 ) + 8002fb0: 4013 ands r3, r2 + 8002fb2: 68ba ldr r2, [r7, #8] + 8002fb4: 429a cmp r2, r3 + 8002fb6: d10b bne.n 8002fd0 ADC_CR2_JEXTTRIG | ADC_CR2_JEXTSEL | ADC_CR2_TSVREFE )) == tmp_cr2) { /* Set ADC error code to none */ ADC_CLEAR_ERRORCODE(hadc); - 8002d18: 687b ldr r3, [r7, #4] - 8002d1a: 2200 movs r2, #0 - 8002d1c: 62da str r2, [r3, #44] @ 0x2c + 8002fb8: 687b ldr r3, [r7, #4] + 8002fba: 2200 movs r2, #0 + 8002fbc: 62da str r2, [r3, #44] @ 0x2c /* Set the ADC state */ ADC_STATE_CLR_SET(hadc->State, - 8002d1e: 687b ldr r3, [r7, #4] - 8002d20: 6a9b ldr r3, [r3, #40] @ 0x28 - 8002d22: f023 0303 bic.w r3, r3, #3 - 8002d26: f043 0201 orr.w r2, r3, #1 - 8002d2a: 687b ldr r3, [r7, #4] - 8002d2c: 629a str r2, [r3, #40] @ 0x28 + 8002fbe: 687b ldr r3, [r7, #4] + 8002fc0: 6a9b ldr r3, [r3, #40] @ 0x28 + 8002fc2: f023 0303 bic.w r3, r3, #3 + 8002fc6: f043 0201 orr.w r2, r3, #1 + 8002fca: 687b ldr r3, [r7, #4] + 8002fcc: 629a str r2, [r3, #40] @ 0x28 if (READ_BIT(hadc->Instance->CR2, ~(ADC_CR2_ADON | ADC_CR2_DMA | - 8002d2e: e018 b.n 8002d62 + 8002fce: e018 b.n 8003002 HAL_ADC_STATE_READY); } else { /* Update ADC state machine to error */ ADC_STATE_CLR_SET(hadc->State, - 8002d30: 687b ldr r3, [r7, #4] - 8002d32: 6a9b ldr r3, [r3, #40] @ 0x28 - 8002d34: f023 0312 bic.w r3, r3, #18 - 8002d38: f043 0210 orr.w r2, r3, #16 - 8002d3c: 687b ldr r3, [r7, #4] - 8002d3e: 629a str r2, [r3, #40] @ 0x28 + 8002fd0: 687b ldr r3, [r7, #4] + 8002fd2: 6a9b ldr r3, [r3, #40] @ 0x28 + 8002fd4: f023 0312 bic.w r3, r3, #18 + 8002fd8: f043 0210 orr.w r2, r3, #16 + 8002fdc: 687b ldr r3, [r7, #4] + 8002fde: 629a str r2, [r3, #40] @ 0x28 HAL_ADC_STATE_BUSY_INTERNAL, HAL_ADC_STATE_ERROR_INTERNAL); /* Set ADC error code to ADC IP internal error */ SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); - 8002d40: 687b ldr r3, [r7, #4] - 8002d42: 6adb ldr r3, [r3, #44] @ 0x2c - 8002d44: f043 0201 orr.w r2, r3, #1 - 8002d48: 687b ldr r3, [r7, #4] - 8002d4a: 62da str r2, [r3, #44] @ 0x2c + 8002fe0: 687b ldr r3, [r7, #4] + 8002fe2: 6adb ldr r3, [r3, #44] @ 0x2c + 8002fe4: f043 0201 orr.w r2, r3, #1 + 8002fe8: 687b ldr r3, [r7, #4] + 8002fea: 62da str r2, [r3, #44] @ 0x2c tmp_hal_status = HAL_ERROR; - 8002d4c: 2301 movs r3, #1 - 8002d4e: 75fb strb r3, [r7, #23] + 8002fec: 2301 movs r3, #1 + 8002fee: 75fb strb r3, [r7, #23] if (READ_BIT(hadc->Instance->CR2, ~(ADC_CR2_ADON | ADC_CR2_DMA | - 8002d50: e007 b.n 8002d62 + 8002ff0: e007 b.n 8003002 } else { /* Update ADC state machine to error */ SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); - 8002d52: 687b ldr r3, [r7, #4] - 8002d54: 6a9b ldr r3, [r3, #40] @ 0x28 - 8002d56: f043 0210 orr.w r2, r3, #16 - 8002d5a: 687b ldr r3, [r7, #4] - 8002d5c: 629a str r2, [r3, #40] @ 0x28 + 8002ff2: 687b ldr r3, [r7, #4] + 8002ff4: 6a9b ldr r3, [r3, #40] @ 0x28 + 8002ff6: f043 0210 orr.w r2, r3, #16 + 8002ffa: 687b ldr r3, [r7, #4] + 8002ffc: 629a str r2, [r3, #40] @ 0x28 tmp_hal_status = HAL_ERROR; - 8002d5e: 2301 movs r3, #1 - 8002d60: 75fb strb r3, [r7, #23] + 8002ffe: 2301 movs r3, #1 + 8003000: 75fb strb r3, [r7, #23] } /* Return function status */ return tmp_hal_status; - 8002d62: 7dfb ldrb r3, [r7, #23] + 8003002: 7dfb ldrb r3, [r7, #23] } - 8002d64: 4618 mov r0, r3 - 8002d66: 3718 adds r7, #24 - 8002d68: 46bd mov sp, r7 - 8002d6a: bd80 pop {r7, pc} - 8002d6c: ffe1f7fd .word 0xffe1f7fd - 8002d70: ff1f0efe .word 0xff1f0efe + 8003004: 4618 mov r0, r3 + 8003006: 3718 adds r7, #24 + 8003008: 46bd mov sp, r7 + 800300a: bd80 pop {r7, pc} + 800300c: ffe1f7fd .word 0xffe1f7fd + 8003010: ff1f0efe .word 0xff1f0efe -08002d74 : +08003014 : * @param hadc: ADC handle * @param sConfig: Structure of ADC channel for regular group. * @retval HAL status */ HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc, ADC_ChannelConfTypeDef* sConfig) { - 8002d74: b480 push {r7} - 8002d76: b085 sub sp, #20 - 8002d78: af00 add r7, sp, #0 - 8002d7a: 6078 str r0, [r7, #4] - 8002d7c: 6039 str r1, [r7, #0] + 8003014: b480 push {r7} + 8003016: b085 sub sp, #20 + 8003018: af00 add r7, sp, #0 + 800301a: 6078 str r0, [r7, #4] + 800301c: 6039 str r1, [r7, #0] HAL_StatusTypeDef tmp_hal_status = HAL_OK; - 8002d7e: 2300 movs r3, #0 - 8002d80: 73fb strb r3, [r7, #15] + 800301e: 2300 movs r3, #0 + 8003020: 73fb strb r3, [r7, #15] __IO uint32_t wait_loop_index = 0U; - 8002d82: 2300 movs r3, #0 - 8002d84: 60bb str r3, [r7, #8] + 8003022: 2300 movs r3, #0 + 8003024: 60bb str r3, [r7, #8] assert_param(IS_ADC_CHANNEL(sConfig->Channel)); assert_param(IS_ADC_REGULAR_RANK(sConfig->Rank)); assert_param(IS_ADC_SAMPLE_TIME(sConfig->SamplingTime)); /* Process locked */ __HAL_LOCK(hadc); - 8002d86: 687b ldr r3, [r7, #4] - 8002d88: f893 3024 ldrb.w r3, [r3, #36] @ 0x24 - 8002d8c: 2b01 cmp r3, #1 - 8002d8e: d101 bne.n 8002d94 - 8002d90: 2302 movs r3, #2 - 8002d92: e0dc b.n 8002f4e - 8002d94: 687b ldr r3, [r7, #4] - 8002d96: 2201 movs r2, #1 - 8002d98: f883 2024 strb.w r2, [r3, #36] @ 0x24 + 8003026: 687b ldr r3, [r7, #4] + 8003028: f893 3024 ldrb.w r3, [r3, #36] @ 0x24 + 800302c: 2b01 cmp r3, #1 + 800302e: d101 bne.n 8003034 + 8003030: 2302 movs r3, #2 + 8003032: e0dc b.n 80031ee + 8003034: 687b ldr r3, [r7, #4] + 8003036: 2201 movs r2, #1 + 8003038: f883 2024 strb.w r2, [r3, #36] @ 0x24 /* Regular sequence configuration */ /* For Rank 1 to 6 */ if (sConfig->Rank < 7U) - 8002d9c: 683b ldr r3, [r7, #0] - 8002d9e: 685b ldr r3, [r3, #4] - 8002da0: 2b06 cmp r3, #6 - 8002da2: d81c bhi.n 8002dde + 800303c: 683b ldr r3, [r7, #0] + 800303e: 685b ldr r3, [r3, #4] + 8003040: 2b06 cmp r3, #6 + 8003042: d81c bhi.n 800307e { MODIFY_REG(hadc->Instance->SQR3 , - 8002da4: 687b ldr r3, [r7, #4] - 8002da6: 681b ldr r3, [r3, #0] - 8002da8: 6b59 ldr r1, [r3, #52] @ 0x34 - 8002daa: 683b ldr r3, [r7, #0] - 8002dac: 685a ldr r2, [r3, #4] - 8002dae: 4613 mov r3, r2 - 8002db0: 009b lsls r3, r3, #2 - 8002db2: 4413 add r3, r2 - 8002db4: 3b05 subs r3, #5 - 8002db6: 221f movs r2, #31 - 8002db8: fa02 f303 lsl.w r3, r2, r3 - 8002dbc: 43db mvns r3, r3 - 8002dbe: 4019 ands r1, r3 - 8002dc0: 683b ldr r3, [r7, #0] - 8002dc2: 6818 ldr r0, [r3, #0] - 8002dc4: 683b ldr r3, [r7, #0] - 8002dc6: 685a ldr r2, [r3, #4] - 8002dc8: 4613 mov r3, r2 - 8002dca: 009b lsls r3, r3, #2 - 8002dcc: 4413 add r3, r2 - 8002dce: 3b05 subs r3, #5 - 8002dd0: fa00 f203 lsl.w r2, r0, r3 - 8002dd4: 687b ldr r3, [r7, #4] - 8002dd6: 681b ldr r3, [r3, #0] - 8002dd8: 430a orrs r2, r1 - 8002dda: 635a str r2, [r3, #52] @ 0x34 - 8002ddc: e03c b.n 8002e58 + 8003044: 687b ldr r3, [r7, #4] + 8003046: 681b ldr r3, [r3, #0] + 8003048: 6b59 ldr r1, [r3, #52] @ 0x34 + 800304a: 683b ldr r3, [r7, #0] + 800304c: 685a ldr r2, [r3, #4] + 800304e: 4613 mov r3, r2 + 8003050: 009b lsls r3, r3, #2 + 8003052: 4413 add r3, r2 + 8003054: 3b05 subs r3, #5 + 8003056: 221f movs r2, #31 + 8003058: fa02 f303 lsl.w r3, r2, r3 + 800305c: 43db mvns r3, r3 + 800305e: 4019 ands r1, r3 + 8003060: 683b ldr r3, [r7, #0] + 8003062: 6818 ldr r0, [r3, #0] + 8003064: 683b ldr r3, [r7, #0] + 8003066: 685a ldr r2, [r3, #4] + 8003068: 4613 mov r3, r2 + 800306a: 009b lsls r3, r3, #2 + 800306c: 4413 add r3, r2 + 800306e: 3b05 subs r3, #5 + 8003070: fa00 f203 lsl.w r2, r0, r3 + 8003074: 687b ldr r3, [r7, #4] + 8003076: 681b ldr r3, [r3, #0] + 8003078: 430a orrs r2, r1 + 800307a: 635a str r2, [r3, #52] @ 0x34 + 800307c: e03c b.n 80030f8 ADC_SQR3_RK(ADC_SQR3_SQ1, sConfig->Rank) , ADC_SQR3_RK(sConfig->Channel, sConfig->Rank) ); } /* For Rank 7 to 12 */ else if (sConfig->Rank < 13U) - 8002dde: 683b ldr r3, [r7, #0] - 8002de0: 685b ldr r3, [r3, #4] - 8002de2: 2b0c cmp r3, #12 - 8002de4: d81c bhi.n 8002e20 + 800307e: 683b ldr r3, [r7, #0] + 8003080: 685b ldr r3, [r3, #4] + 8003082: 2b0c cmp r3, #12 + 8003084: d81c bhi.n 80030c0 { MODIFY_REG(hadc->Instance->SQR2 , - 8002de6: 687b ldr r3, [r7, #4] - 8002de8: 681b ldr r3, [r3, #0] - 8002dea: 6b19 ldr r1, [r3, #48] @ 0x30 - 8002dec: 683b ldr r3, [r7, #0] - 8002dee: 685a ldr r2, [r3, #4] - 8002df0: 4613 mov r3, r2 - 8002df2: 009b lsls r3, r3, #2 - 8002df4: 4413 add r3, r2 - 8002df6: 3b23 subs r3, #35 @ 0x23 - 8002df8: 221f movs r2, #31 - 8002dfa: fa02 f303 lsl.w r3, r2, r3 - 8002dfe: 43db mvns r3, r3 - 8002e00: 4019 ands r1, r3 - 8002e02: 683b ldr r3, [r7, #0] - 8002e04: 6818 ldr r0, [r3, #0] - 8002e06: 683b ldr r3, [r7, #0] - 8002e08: 685a ldr r2, [r3, #4] - 8002e0a: 4613 mov r3, r2 - 8002e0c: 009b lsls r3, r3, #2 - 8002e0e: 4413 add r3, r2 - 8002e10: 3b23 subs r3, #35 @ 0x23 - 8002e12: fa00 f203 lsl.w r2, r0, r3 - 8002e16: 687b ldr r3, [r7, #4] - 8002e18: 681b ldr r3, [r3, #0] - 8002e1a: 430a orrs r2, r1 - 8002e1c: 631a str r2, [r3, #48] @ 0x30 - 8002e1e: e01b b.n 8002e58 + 8003086: 687b ldr r3, [r7, #4] + 8003088: 681b ldr r3, [r3, #0] + 800308a: 6b19 ldr r1, [r3, #48] @ 0x30 + 800308c: 683b ldr r3, [r7, #0] + 800308e: 685a ldr r2, [r3, #4] + 8003090: 4613 mov r3, r2 + 8003092: 009b lsls r3, r3, #2 + 8003094: 4413 add r3, r2 + 8003096: 3b23 subs r3, #35 @ 0x23 + 8003098: 221f movs r2, #31 + 800309a: fa02 f303 lsl.w r3, r2, r3 + 800309e: 43db mvns r3, r3 + 80030a0: 4019 ands r1, r3 + 80030a2: 683b ldr r3, [r7, #0] + 80030a4: 6818 ldr r0, [r3, #0] + 80030a6: 683b ldr r3, [r7, #0] + 80030a8: 685a ldr r2, [r3, #4] + 80030aa: 4613 mov r3, r2 + 80030ac: 009b lsls r3, r3, #2 + 80030ae: 4413 add r3, r2 + 80030b0: 3b23 subs r3, #35 @ 0x23 + 80030b2: fa00 f203 lsl.w r2, r0, r3 + 80030b6: 687b ldr r3, [r7, #4] + 80030b8: 681b ldr r3, [r3, #0] + 80030ba: 430a orrs r2, r1 + 80030bc: 631a str r2, [r3, #48] @ 0x30 + 80030be: e01b b.n 80030f8 ADC_SQR2_RK(sConfig->Channel, sConfig->Rank) ); } /* For Rank 13 to 16 */ else { MODIFY_REG(hadc->Instance->SQR1 , - 8002e20: 687b ldr r3, [r7, #4] - 8002e22: 681b ldr r3, [r3, #0] - 8002e24: 6ad9 ldr r1, [r3, #44] @ 0x2c - 8002e26: 683b ldr r3, [r7, #0] - 8002e28: 685a ldr r2, [r3, #4] - 8002e2a: 4613 mov r3, r2 - 8002e2c: 009b lsls r3, r3, #2 - 8002e2e: 4413 add r3, r2 - 8002e30: 3b41 subs r3, #65 @ 0x41 - 8002e32: 221f movs r2, #31 - 8002e34: fa02 f303 lsl.w r3, r2, r3 - 8002e38: 43db mvns r3, r3 - 8002e3a: 4019 ands r1, r3 - 8002e3c: 683b ldr r3, [r7, #0] - 8002e3e: 6818 ldr r0, [r3, #0] - 8002e40: 683b ldr r3, [r7, #0] - 8002e42: 685a ldr r2, [r3, #4] - 8002e44: 4613 mov r3, r2 - 8002e46: 009b lsls r3, r3, #2 - 8002e48: 4413 add r3, r2 - 8002e4a: 3b41 subs r3, #65 @ 0x41 - 8002e4c: fa00 f203 lsl.w r2, r0, r3 - 8002e50: 687b ldr r3, [r7, #4] - 8002e52: 681b ldr r3, [r3, #0] - 8002e54: 430a orrs r2, r1 - 8002e56: 62da str r2, [r3, #44] @ 0x2c + 80030c0: 687b ldr r3, [r7, #4] + 80030c2: 681b ldr r3, [r3, #0] + 80030c4: 6ad9 ldr r1, [r3, #44] @ 0x2c + 80030c6: 683b ldr r3, [r7, #0] + 80030c8: 685a ldr r2, [r3, #4] + 80030ca: 4613 mov r3, r2 + 80030cc: 009b lsls r3, r3, #2 + 80030ce: 4413 add r3, r2 + 80030d0: 3b41 subs r3, #65 @ 0x41 + 80030d2: 221f movs r2, #31 + 80030d4: fa02 f303 lsl.w r3, r2, r3 + 80030d8: 43db mvns r3, r3 + 80030da: 4019 ands r1, r3 + 80030dc: 683b ldr r3, [r7, #0] + 80030de: 6818 ldr r0, [r3, #0] + 80030e0: 683b ldr r3, [r7, #0] + 80030e2: 685a ldr r2, [r3, #4] + 80030e4: 4613 mov r3, r2 + 80030e6: 009b lsls r3, r3, #2 + 80030e8: 4413 add r3, r2 + 80030ea: 3b41 subs r3, #65 @ 0x41 + 80030ec: fa00 f203 lsl.w r2, r0, r3 + 80030f0: 687b ldr r3, [r7, #4] + 80030f2: 681b ldr r3, [r3, #0] + 80030f4: 430a orrs r2, r1 + 80030f6: 62da str r2, [r3, #44] @ 0x2c } /* Channel sampling time configuration */ /* For channels 10 to 17 */ if (sConfig->Channel >= ADC_CHANNEL_10) - 8002e58: 683b ldr r3, [r7, #0] - 8002e5a: 681b ldr r3, [r3, #0] - 8002e5c: 2b09 cmp r3, #9 - 8002e5e: d91c bls.n 8002e9a + 80030f8: 683b ldr r3, [r7, #0] + 80030fa: 681b ldr r3, [r3, #0] + 80030fc: 2b09 cmp r3, #9 + 80030fe: d91c bls.n 800313a { MODIFY_REG(hadc->Instance->SMPR1 , - 8002e60: 687b ldr r3, [r7, #4] - 8002e62: 681b ldr r3, [r3, #0] - 8002e64: 68d9 ldr r1, [r3, #12] - 8002e66: 683b ldr r3, [r7, #0] - 8002e68: 681a ldr r2, [r3, #0] - 8002e6a: 4613 mov r3, r2 - 8002e6c: 005b lsls r3, r3, #1 - 8002e6e: 4413 add r3, r2 - 8002e70: 3b1e subs r3, #30 - 8002e72: 2207 movs r2, #7 - 8002e74: fa02 f303 lsl.w r3, r2, r3 - 8002e78: 43db mvns r3, r3 - 8002e7a: 4019 ands r1, r3 - 8002e7c: 683b ldr r3, [r7, #0] - 8002e7e: 6898 ldr r0, [r3, #8] - 8002e80: 683b ldr r3, [r7, #0] - 8002e82: 681a ldr r2, [r3, #0] - 8002e84: 4613 mov r3, r2 - 8002e86: 005b lsls r3, r3, #1 - 8002e88: 4413 add r3, r2 - 8002e8a: 3b1e subs r3, #30 - 8002e8c: fa00 f203 lsl.w r2, r0, r3 - 8002e90: 687b ldr r3, [r7, #4] - 8002e92: 681b ldr r3, [r3, #0] - 8002e94: 430a orrs r2, r1 - 8002e96: 60da str r2, [r3, #12] - 8002e98: e019 b.n 8002ece + 8003100: 687b ldr r3, [r7, #4] + 8003102: 681b ldr r3, [r3, #0] + 8003104: 68d9 ldr r1, [r3, #12] + 8003106: 683b ldr r3, [r7, #0] + 8003108: 681a ldr r2, [r3, #0] + 800310a: 4613 mov r3, r2 + 800310c: 005b lsls r3, r3, #1 + 800310e: 4413 add r3, r2 + 8003110: 3b1e subs r3, #30 + 8003112: 2207 movs r2, #7 + 8003114: fa02 f303 lsl.w r3, r2, r3 + 8003118: 43db mvns r3, r3 + 800311a: 4019 ands r1, r3 + 800311c: 683b ldr r3, [r7, #0] + 800311e: 6898 ldr r0, [r3, #8] + 8003120: 683b ldr r3, [r7, #0] + 8003122: 681a ldr r2, [r3, #0] + 8003124: 4613 mov r3, r2 + 8003126: 005b lsls r3, r3, #1 + 8003128: 4413 add r3, r2 + 800312a: 3b1e subs r3, #30 + 800312c: fa00 f203 lsl.w r2, r0, r3 + 8003130: 687b ldr r3, [r7, #4] + 8003132: 681b ldr r3, [r3, #0] + 8003134: 430a orrs r2, r1 + 8003136: 60da str r2, [r3, #12] + 8003138: e019 b.n 800316e ADC_SMPR1(ADC_SMPR1_SMP10, sConfig->Channel) , ADC_SMPR1(sConfig->SamplingTime, sConfig->Channel) ); } else /* For channels 0 to 9 */ { MODIFY_REG(hadc->Instance->SMPR2 , - 8002e9a: 687b ldr r3, [r7, #4] - 8002e9c: 681b ldr r3, [r3, #0] - 8002e9e: 6919 ldr r1, [r3, #16] - 8002ea0: 683b ldr r3, [r7, #0] - 8002ea2: 681a ldr r2, [r3, #0] - 8002ea4: 4613 mov r3, r2 - 8002ea6: 005b lsls r3, r3, #1 - 8002ea8: 4413 add r3, r2 - 8002eaa: 2207 movs r2, #7 - 8002eac: fa02 f303 lsl.w r3, r2, r3 - 8002eb0: 43db mvns r3, r3 - 8002eb2: 4019 ands r1, r3 - 8002eb4: 683b ldr r3, [r7, #0] - 8002eb6: 6898 ldr r0, [r3, #8] - 8002eb8: 683b ldr r3, [r7, #0] - 8002eba: 681a ldr r2, [r3, #0] - 8002ebc: 4613 mov r3, r2 - 8002ebe: 005b lsls r3, r3, #1 - 8002ec0: 4413 add r3, r2 - 8002ec2: fa00 f203 lsl.w r2, r0, r3 - 8002ec6: 687b ldr r3, [r7, #4] - 8002ec8: 681b ldr r3, [r3, #0] - 8002eca: 430a orrs r2, r1 - 8002ecc: 611a str r2, [r3, #16] + 800313a: 687b ldr r3, [r7, #4] + 800313c: 681b ldr r3, [r3, #0] + 800313e: 6919 ldr r1, [r3, #16] + 8003140: 683b ldr r3, [r7, #0] + 8003142: 681a ldr r2, [r3, #0] + 8003144: 4613 mov r3, r2 + 8003146: 005b lsls r3, r3, #1 + 8003148: 4413 add r3, r2 + 800314a: 2207 movs r2, #7 + 800314c: fa02 f303 lsl.w r3, r2, r3 + 8003150: 43db mvns r3, r3 + 8003152: 4019 ands r1, r3 + 8003154: 683b ldr r3, [r7, #0] + 8003156: 6898 ldr r0, [r3, #8] + 8003158: 683b ldr r3, [r7, #0] + 800315a: 681a ldr r2, [r3, #0] + 800315c: 4613 mov r3, r2 + 800315e: 005b lsls r3, r3, #1 + 8003160: 4413 add r3, r2 + 8003162: fa00 f203 lsl.w r2, r0, r3 + 8003166: 687b ldr r3, [r7, #4] + 8003168: 681b ldr r3, [r3, #0] + 800316a: 430a orrs r2, r1 + 800316c: 611a str r2, [r3, #16] ADC_SMPR2(sConfig->SamplingTime, sConfig->Channel) ); } /* If ADC1 Channel_16 or Channel_17 is selected, enable Temperature sensor */ /* and VREFINT measurement path. */ if ((sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) || - 8002ece: 683b ldr r3, [r7, #0] - 8002ed0: 681b ldr r3, [r3, #0] - 8002ed2: 2b10 cmp r3, #16 - 8002ed4: d003 beq.n 8002ede + 800316e: 683b ldr r3, [r7, #0] + 8003170: 681b ldr r3, [r3, #0] + 8003172: 2b10 cmp r3, #16 + 8003174: d003 beq.n 800317e (sConfig->Channel == ADC_CHANNEL_VREFINT) ) - 8002ed6: 683b ldr r3, [r7, #0] - 8002ed8: 681b ldr r3, [r3, #0] + 8003176: 683b ldr r3, [r7, #0] + 8003178: 681b ldr r3, [r3, #0] if ((sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) || - 8002eda: 2b11 cmp r3, #17 - 8002edc: d132 bne.n 8002f44 + 800317a: 2b11 cmp r3, #17 + 800317c: d132 bne.n 80031e4 { /* For STM32F1 devices with several ADC: Only ADC1 can access internal */ /* measurement channels (VrefInt/TempSensor). If these channels are */ /* intended to be set on other ADC instances, an error is reported. */ if (hadc->Instance == ADC1) - 8002ede: 687b ldr r3, [r7, #4] - 8002ee0: 681b ldr r3, [r3, #0] - 8002ee2: 4a1d ldr r2, [pc, #116] @ (8002f58 ) - 8002ee4: 4293 cmp r3, r2 - 8002ee6: d125 bne.n 8002f34 + 800317e: 687b ldr r3, [r7, #4] + 8003180: 681b ldr r3, [r3, #0] + 8003182: 4a1d ldr r2, [pc, #116] @ (80031f8 ) + 8003184: 4293 cmp r3, r2 + 8003186: d125 bne.n 80031d4 { if (READ_BIT(hadc->Instance->CR2, ADC_CR2_TSVREFE) == RESET) - 8002ee8: 687b ldr r3, [r7, #4] - 8002eea: 681b ldr r3, [r3, #0] - 8002eec: 689b ldr r3, [r3, #8] - 8002eee: f403 0300 and.w r3, r3, #8388608 @ 0x800000 - 8002ef2: 2b00 cmp r3, #0 - 8002ef4: d126 bne.n 8002f44 + 8003188: 687b ldr r3, [r7, #4] + 800318a: 681b ldr r3, [r3, #0] + 800318c: 689b ldr r3, [r3, #8] + 800318e: f403 0300 and.w r3, r3, #8388608 @ 0x800000 + 8003192: 2b00 cmp r3, #0 + 8003194: d126 bne.n 80031e4 { SET_BIT(hadc->Instance->CR2, ADC_CR2_TSVREFE); - 8002ef6: 687b ldr r3, [r7, #4] - 8002ef8: 681b ldr r3, [r3, #0] - 8002efa: 689a ldr r2, [r3, #8] - 8002efc: 687b ldr r3, [r7, #4] - 8002efe: 681b ldr r3, [r3, #0] - 8002f00: f442 0200 orr.w r2, r2, #8388608 @ 0x800000 - 8002f04: 609a str r2, [r3, #8] + 8003196: 687b ldr r3, [r7, #4] + 8003198: 681b ldr r3, [r3, #0] + 800319a: 689a ldr r2, [r3, #8] + 800319c: 687b ldr r3, [r7, #4] + 800319e: 681b ldr r3, [r3, #0] + 80031a0: f442 0200 orr.w r2, r2, #8388608 @ 0x800000 + 80031a4: 609a str r2, [r3, #8] if (sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) - 8002f06: 683b ldr r3, [r7, #0] - 8002f08: 681b ldr r3, [r3, #0] - 8002f0a: 2b10 cmp r3, #16 - 8002f0c: d11a bne.n 8002f44 + 80031a6: 683b ldr r3, [r7, #0] + 80031a8: 681b ldr r3, [r3, #0] + 80031aa: 2b10 cmp r3, #16 + 80031ac: d11a bne.n 80031e4 { /* Delay for temperature sensor stabilization time */ /* Compute number of CPU cycles to wait for */ wait_loop_index = (ADC_TEMPSENSOR_DELAY_US * (SystemCoreClock / 1000000U)); - 8002f0e: 4b13 ldr r3, [pc, #76] @ (8002f5c ) - 8002f10: 681b ldr r3, [r3, #0] - 8002f12: 4a13 ldr r2, [pc, #76] @ (8002f60 ) - 8002f14: fba2 2303 umull r2, r3, r2, r3 - 8002f18: 0c9a lsrs r2, r3, #18 - 8002f1a: 4613 mov r3, r2 - 8002f1c: 009b lsls r3, r3, #2 - 8002f1e: 4413 add r3, r2 - 8002f20: 005b lsls r3, r3, #1 - 8002f22: 60bb str r3, [r7, #8] + 80031ae: 4b13 ldr r3, [pc, #76] @ (80031fc ) + 80031b0: 681b ldr r3, [r3, #0] + 80031b2: 4a13 ldr r2, [pc, #76] @ (8003200 ) + 80031b4: fba2 2303 umull r2, r3, r2, r3 + 80031b8: 0c9a lsrs r2, r3, #18 + 80031ba: 4613 mov r3, r2 + 80031bc: 009b lsls r3, r3, #2 + 80031be: 4413 add r3, r2 + 80031c0: 005b lsls r3, r3, #1 + 80031c2: 60bb str r3, [r7, #8] while(wait_loop_index != 0U) - 8002f24: e002 b.n 8002f2c + 80031c4: e002 b.n 80031cc { wait_loop_index--; - 8002f26: 68bb ldr r3, [r7, #8] - 8002f28: 3b01 subs r3, #1 - 8002f2a: 60bb str r3, [r7, #8] + 80031c6: 68bb ldr r3, [r7, #8] + 80031c8: 3b01 subs r3, #1 + 80031ca: 60bb str r3, [r7, #8] while(wait_loop_index != 0U) - 8002f2c: 68bb ldr r3, [r7, #8] - 8002f2e: 2b00 cmp r3, #0 - 8002f30: d1f9 bne.n 8002f26 - 8002f32: e007 b.n 8002f44 + 80031cc: 68bb ldr r3, [r7, #8] + 80031ce: 2b00 cmp r3, #0 + 80031d0: d1f9 bne.n 80031c6 + 80031d2: e007 b.n 80031e4 } } else { /* Update ADC state machine to error */ SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); - 8002f34: 687b ldr r3, [r7, #4] - 8002f36: 6a9b ldr r3, [r3, #40] @ 0x28 - 8002f38: f043 0220 orr.w r2, r3, #32 - 8002f3c: 687b ldr r3, [r7, #4] - 8002f3e: 629a str r2, [r3, #40] @ 0x28 + 80031d4: 687b ldr r3, [r7, #4] + 80031d6: 6a9b ldr r3, [r3, #40] @ 0x28 + 80031d8: f043 0220 orr.w r2, r3, #32 + 80031dc: 687b ldr r3, [r7, #4] + 80031de: 629a str r2, [r3, #40] @ 0x28 tmp_hal_status = HAL_ERROR; - 8002f40: 2301 movs r3, #1 - 8002f42: 73fb strb r3, [r7, #15] + 80031e0: 2301 movs r3, #1 + 80031e2: 73fb strb r3, [r7, #15] } } /* Process unlocked */ __HAL_UNLOCK(hadc); - 8002f44: 687b ldr r3, [r7, #4] - 8002f46: 2200 movs r2, #0 - 8002f48: f883 2024 strb.w r2, [r3, #36] @ 0x24 + 80031e4: 687b ldr r3, [r7, #4] + 80031e6: 2200 movs r2, #0 + 80031e8: f883 2024 strb.w r2, [r3, #36] @ 0x24 /* Return function status */ return tmp_hal_status; - 8002f4c: 7bfb ldrb r3, [r7, #15] + 80031ec: 7bfb ldrb r3, [r7, #15] } - 8002f4e: 4618 mov r0, r3 - 8002f50: 3714 adds r7, #20 - 8002f52: 46bd mov sp, r7 - 8002f54: bc80 pop {r7} - 8002f56: 4770 bx lr - 8002f58: 40012400 .word 0x40012400 - 8002f5c: 20000038 .word 0x20000038 - 8002f60: 431bde83 .word 0x431bde83 + 80031ee: 4618 mov r0, r3 + 80031f0: 3714 adds r7, #20 + 80031f2: 46bd mov sp, r7 + 80031f4: bc80 pop {r7} + 80031f6: 4770 bx lr + 80031f8: 40012400 .word 0x40012400 + 80031fc: 20000008 .word 0x20000008 + 8003200: 431bde83 .word 0x431bde83 -08002f64 : +08003204 : * stopped to disable the ADC. * @param hadc: ADC handle * @retval HAL status. */ HAL_StatusTypeDef ADC_ConversionStop_Disable(ADC_HandleTypeDef* hadc) { - 8002f64: b580 push {r7, lr} - 8002f66: b084 sub sp, #16 - 8002f68: af00 add r7, sp, #0 - 8002f6a: 6078 str r0, [r7, #4] + 8003204: b580 push {r7, lr} + 8003206: b084 sub sp, #16 + 8003208: af00 add r7, sp, #0 + 800320a: 6078 str r0, [r7, #4] uint32_t tickstart = 0U; - 8002f6c: 2300 movs r3, #0 - 8002f6e: 60fb str r3, [r7, #12] + 800320c: 2300 movs r3, #0 + 800320e: 60fb str r3, [r7, #12] /* Verification if ADC is not already disabled */ if (ADC_IS_ENABLE(hadc) != RESET) - 8002f70: 687b ldr r3, [r7, #4] - 8002f72: 681b ldr r3, [r3, #0] - 8002f74: 689b ldr r3, [r3, #8] - 8002f76: f003 0301 and.w r3, r3, #1 - 8002f7a: 2b01 cmp r3, #1 - 8002f7c: d12e bne.n 8002fdc + 8003210: 687b ldr r3, [r7, #4] + 8003212: 681b ldr r3, [r3, #0] + 8003214: 689b ldr r3, [r3, #8] + 8003216: f003 0301 and.w r3, r3, #1 + 800321a: 2b01 cmp r3, #1 + 800321c: d12e bne.n 800327c { /* Disable the ADC peripheral */ __HAL_ADC_DISABLE(hadc); - 8002f7e: 687b ldr r3, [r7, #4] - 8002f80: 681b ldr r3, [r3, #0] - 8002f82: 689a ldr r2, [r3, #8] - 8002f84: 687b ldr r3, [r7, #4] - 8002f86: 681b ldr r3, [r3, #0] - 8002f88: f022 0201 bic.w r2, r2, #1 - 8002f8c: 609a str r2, [r3, #8] + 800321e: 687b ldr r3, [r7, #4] + 8003220: 681b ldr r3, [r3, #0] + 8003222: 689a ldr r2, [r3, #8] + 8003224: 687b ldr r3, [r7, #4] + 8003226: 681b ldr r3, [r3, #0] + 8003228: f022 0201 bic.w r2, r2, #1 + 800322c: 609a str r2, [r3, #8] /* Get tick count */ tickstart = HAL_GetTick(); - 8002f8e: f7ff fdeb bl 8002b68 - 8002f92: 60f8 str r0, [r7, #12] + 800322e: f7ff fe0f bl 8002e50 + 8003232: 60f8 str r0, [r7, #12] /* Wait for ADC effectively disabled */ while(ADC_IS_ENABLE(hadc) != RESET) - 8002f94: e01b b.n 8002fce + 8003234: e01b b.n 800326e { if((HAL_GetTick() - tickstart) > ADC_DISABLE_TIMEOUT) - 8002f96: f7ff fde7 bl 8002b68 - 8002f9a: 4602 mov r2, r0 - 8002f9c: 68fb ldr r3, [r7, #12] - 8002f9e: 1ad3 subs r3, r2, r3 - 8002fa0: 2b02 cmp r3, #2 - 8002fa2: d914 bls.n 8002fce + 8003236: f7ff fe0b bl 8002e50 + 800323a: 4602 mov r2, r0 + 800323c: 68fb ldr r3, [r7, #12] + 800323e: 1ad3 subs r3, r2, r3 + 8003240: 2b02 cmp r3, #2 + 8003242: d914 bls.n 800326e { /* New check to avoid false timeout detection in case of preemption */ if(ADC_IS_ENABLE(hadc) != RESET) - 8002fa4: 687b ldr r3, [r7, #4] - 8002fa6: 681b ldr r3, [r3, #0] - 8002fa8: 689b ldr r3, [r3, #8] - 8002faa: f003 0301 and.w r3, r3, #1 - 8002fae: 2b01 cmp r3, #1 - 8002fb0: d10d bne.n 8002fce + 8003244: 687b ldr r3, [r7, #4] + 8003246: 681b ldr r3, [r3, #0] + 8003248: 689b ldr r3, [r3, #8] + 800324a: f003 0301 and.w r3, r3, #1 + 800324e: 2b01 cmp r3, #1 + 8003250: d10d bne.n 800326e { /* Update ADC state machine to error */ SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); - 8002fb2: 687b ldr r3, [r7, #4] - 8002fb4: 6a9b ldr r3, [r3, #40] @ 0x28 - 8002fb6: f043 0210 orr.w r2, r3, #16 - 8002fba: 687b ldr r3, [r7, #4] - 8002fbc: 629a str r2, [r3, #40] @ 0x28 + 8003252: 687b ldr r3, [r7, #4] + 8003254: 6a9b ldr r3, [r3, #40] @ 0x28 + 8003256: f043 0210 orr.w r2, r3, #16 + 800325a: 687b ldr r3, [r7, #4] + 800325c: 629a str r2, [r3, #40] @ 0x28 /* Set ADC error code to ADC IP internal error */ SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); - 8002fbe: 687b ldr r3, [r7, #4] - 8002fc0: 6adb ldr r3, [r3, #44] @ 0x2c - 8002fc2: f043 0201 orr.w r2, r3, #1 - 8002fc6: 687b ldr r3, [r7, #4] - 8002fc8: 62da str r2, [r3, #44] @ 0x2c + 800325e: 687b ldr r3, [r7, #4] + 8003260: 6adb ldr r3, [r3, #44] @ 0x2c + 8003262: f043 0201 orr.w r2, r3, #1 + 8003266: 687b ldr r3, [r7, #4] + 8003268: 62da str r2, [r3, #44] @ 0x2c return HAL_ERROR; - 8002fca: 2301 movs r3, #1 - 8002fcc: e007 b.n 8002fde + 800326a: 2301 movs r3, #1 + 800326c: e007 b.n 800327e while(ADC_IS_ENABLE(hadc) != RESET) - 8002fce: 687b ldr r3, [r7, #4] - 8002fd0: 681b ldr r3, [r3, #0] - 8002fd2: 689b ldr r3, [r3, #8] - 8002fd4: f003 0301 and.w r3, r3, #1 - 8002fd8: 2b01 cmp r3, #1 - 8002fda: d0dc beq.n 8002f96 + 800326e: 687b ldr r3, [r7, #4] + 8003270: 681b ldr r3, [r3, #0] + 8003272: 689b ldr r3, [r3, #8] + 8003274: f003 0301 and.w r3, r3, #1 + 8003278: 2b01 cmp r3, #1 + 800327a: d0dc beq.n 8003236 } } } /* Return HAL status */ return HAL_OK; - 8002fdc: 2300 movs r3, #0 + 800327c: 2300 movs r3, #0 } - 8002fde: 4618 mov r0, r3 - 8002fe0: 3710 adds r7, #16 - 8002fe2: 46bd mov sp, r7 - 8002fe4: bd80 pop {r7, pc} + 800327e: 4618 mov r0, r3 + 8003280: 3710 adds r7, #16 + 8003282: 46bd mov sp, r7 + 8003284: bd80 pop {r7, pc} ... -08002fe8 <__NVIC_SetPriorityGrouping>: +08003288 <__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) { - 8002fe8: b480 push {r7} - 8002fea: b085 sub sp, #20 - 8002fec: af00 add r7, sp, #0 - 8002fee: 6078 str r0, [r7, #4] + 8003288: b480 push {r7} + 800328a: b085 sub sp, #20 + 800328c: af00 add r7, sp, #0 + 800328e: 6078 str r0, [r7, #4] uint32_t reg_value; uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ - 8002ff0: 687b ldr r3, [r7, #4] - 8002ff2: f003 0307 and.w r3, r3, #7 - 8002ff6: 60fb str r3, [r7, #12] + 8003290: 687b ldr r3, [r7, #4] + 8003292: f003 0307 and.w r3, r3, #7 + 8003296: 60fb str r3, [r7, #12] reg_value = SCB->AIRCR; /* read old register configuration */ - 8002ff8: 4b0c ldr r3, [pc, #48] @ (800302c <__NVIC_SetPriorityGrouping+0x44>) - 8002ffa: 68db ldr r3, [r3, #12] - 8002ffc: 60bb str r3, [r7, #8] + 8003298: 4b0c ldr r3, [pc, #48] @ (80032cc <__NVIC_SetPriorityGrouping+0x44>) + 800329a: 68db ldr r3, [r3, #12] + 800329c: 60bb str r3, [r7, #8] reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ - 8002ffe: 68ba ldr r2, [r7, #8] - 8003000: f64f 03ff movw r3, #63743 @ 0xf8ff - 8003004: 4013 ands r3, r2 - 8003006: 60bb str r3, [r7, #8] + 800329e: 68ba ldr r2, [r7, #8] + 80032a0: f64f 03ff movw r3, #63743 @ 0xf8ff + 80032a4: 4013 ands r3, r2 + 80032a6: 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 */ - 8003008: 68fb ldr r3, [r7, #12] - 800300a: 021a lsls r2, r3, #8 + 80032a8: 68fb ldr r3, [r7, #12] + 80032aa: 021a lsls r2, r3, #8 ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | - 800300c: 68bb ldr r3, [r7, #8] - 800300e: 4313 orrs r3, r2 + 80032ac: 68bb ldr r3, [r7, #8] + 80032ae: 4313 orrs r3, r2 reg_value = (reg_value | - 8003010: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 - 8003014: f443 3300 orr.w r3, r3, #131072 @ 0x20000 - 8003018: 60bb str r3, [r7, #8] + 80032b0: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 + 80032b4: f443 3300 orr.w r3, r3, #131072 @ 0x20000 + 80032b8: 60bb str r3, [r7, #8] SCB->AIRCR = reg_value; - 800301a: 4a04 ldr r2, [pc, #16] @ (800302c <__NVIC_SetPriorityGrouping+0x44>) - 800301c: 68bb ldr r3, [r7, #8] - 800301e: 60d3 str r3, [r2, #12] + 80032ba: 4a04 ldr r2, [pc, #16] @ (80032cc <__NVIC_SetPriorityGrouping+0x44>) + 80032bc: 68bb ldr r3, [r7, #8] + 80032be: 60d3 str r3, [r2, #12] } - 8003020: bf00 nop - 8003022: 3714 adds r7, #20 - 8003024: 46bd mov sp, r7 - 8003026: bc80 pop {r7} - 8003028: 4770 bx lr - 800302a: bf00 nop - 800302c: e000ed00 .word 0xe000ed00 + 80032c0: bf00 nop + 80032c2: 3714 adds r7, #20 + 80032c4: 46bd mov sp, r7 + 80032c6: bc80 pop {r7} + 80032c8: 4770 bx lr + 80032ca: bf00 nop + 80032cc: e000ed00 .word 0xe000ed00 -08003030 <__NVIC_GetPriorityGrouping>: +080032d0 <__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) { - 8003030: b480 push {r7} - 8003032: af00 add r7, sp, #0 + 80032d0: b480 push {r7} + 80032d2: af00 add r7, sp, #0 return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); - 8003034: 4b04 ldr r3, [pc, #16] @ (8003048 <__NVIC_GetPriorityGrouping+0x18>) - 8003036: 68db ldr r3, [r3, #12] - 8003038: 0a1b lsrs r3, r3, #8 - 800303a: f003 0307 and.w r3, r3, #7 + 80032d4: 4b04 ldr r3, [pc, #16] @ (80032e8 <__NVIC_GetPriorityGrouping+0x18>) + 80032d6: 68db ldr r3, [r3, #12] + 80032d8: 0a1b lsrs r3, r3, #8 + 80032da: f003 0307 and.w r3, r3, #7 } - 800303e: 4618 mov r0, r3 - 8003040: 46bd mov sp, r7 - 8003042: bc80 pop {r7} - 8003044: 4770 bx lr - 8003046: bf00 nop - 8003048: e000ed00 .word 0xe000ed00 + 80032de: 4618 mov r0, r3 + 80032e0: 46bd mov sp, r7 + 80032e2: bc80 pop {r7} + 80032e4: 4770 bx lr + 80032e6: bf00 nop + 80032e8: e000ed00 .word 0xe000ed00 -0800304c <__NVIC_EnableIRQ>: +080032ec <__NVIC_EnableIRQ>: \details Enables a device specific interrupt in the NVIC interrupt controller. \param [in] IRQn Device specific interrupt number. \note IRQn must not be negative. */ __STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) { - 800304c: b480 push {r7} - 800304e: b083 sub sp, #12 - 8003050: af00 add r7, sp, #0 - 8003052: 4603 mov r3, r0 - 8003054: 71fb strb r3, [r7, #7] + 80032ec: b480 push {r7} + 80032ee: b083 sub sp, #12 + 80032f0: af00 add r7, sp, #0 + 80032f2: 4603 mov r3, r0 + 80032f4: 71fb strb r3, [r7, #7] if ((int32_t)(IRQn) >= 0) - 8003056: f997 3007 ldrsb.w r3, [r7, #7] - 800305a: 2b00 cmp r3, #0 - 800305c: db0b blt.n 8003076 <__NVIC_EnableIRQ+0x2a> + 80032f6: f997 3007 ldrsb.w r3, [r7, #7] + 80032fa: 2b00 cmp r3, #0 + 80032fc: db0b blt.n 8003316 <__NVIC_EnableIRQ+0x2a> { NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); - 800305e: 79fb ldrb r3, [r7, #7] - 8003060: f003 021f and.w r2, r3, #31 - 8003064: 4906 ldr r1, [pc, #24] @ (8003080 <__NVIC_EnableIRQ+0x34>) - 8003066: f997 3007 ldrsb.w r3, [r7, #7] - 800306a: 095b lsrs r3, r3, #5 - 800306c: 2001 movs r0, #1 - 800306e: fa00 f202 lsl.w r2, r0, r2 - 8003072: f841 2023 str.w r2, [r1, r3, lsl #2] + 80032fe: 79fb ldrb r3, [r7, #7] + 8003300: f003 021f and.w r2, r3, #31 + 8003304: 4906 ldr r1, [pc, #24] @ (8003320 <__NVIC_EnableIRQ+0x34>) + 8003306: f997 3007 ldrsb.w r3, [r7, #7] + 800330a: 095b lsrs r3, r3, #5 + 800330c: 2001 movs r0, #1 + 800330e: fa00 f202 lsl.w r2, r0, r2 + 8003312: f841 2023 str.w r2, [r1, r3, lsl #2] } } - 8003076: bf00 nop - 8003078: 370c adds r7, #12 - 800307a: 46bd mov sp, r7 - 800307c: bc80 pop {r7} - 800307e: 4770 bx lr - 8003080: e000e100 .word 0xe000e100 + 8003316: bf00 nop + 8003318: 370c adds r7, #12 + 800331a: 46bd mov sp, r7 + 800331c: bc80 pop {r7} + 800331e: 4770 bx lr + 8003320: e000e100 .word 0xe000e100 -08003084 <__NVIC_SetPriority>: +08003324 <__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) { - 8003084: b480 push {r7} - 8003086: b083 sub sp, #12 - 8003088: af00 add r7, sp, #0 - 800308a: 4603 mov r3, r0 - 800308c: 6039 str r1, [r7, #0] - 800308e: 71fb strb r3, [r7, #7] + 8003324: b480 push {r7} + 8003326: b083 sub sp, #12 + 8003328: af00 add r7, sp, #0 + 800332a: 4603 mov r3, r0 + 800332c: 6039 str r1, [r7, #0] + 800332e: 71fb strb r3, [r7, #7] if ((int32_t)(IRQn) >= 0) - 8003090: f997 3007 ldrsb.w r3, [r7, #7] - 8003094: 2b00 cmp r3, #0 - 8003096: db0a blt.n 80030ae <__NVIC_SetPriority+0x2a> + 8003330: f997 3007 ldrsb.w r3, [r7, #7] + 8003334: 2b00 cmp r3, #0 + 8003336: db0a blt.n 800334e <__NVIC_SetPriority+0x2a> { NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); - 8003098: 683b ldr r3, [r7, #0] - 800309a: b2da uxtb r2, r3 - 800309c: 490c ldr r1, [pc, #48] @ (80030d0 <__NVIC_SetPriority+0x4c>) - 800309e: f997 3007 ldrsb.w r3, [r7, #7] - 80030a2: 0112 lsls r2, r2, #4 - 80030a4: b2d2 uxtb r2, r2 - 80030a6: 440b add r3, r1 - 80030a8: f883 2300 strb.w r2, [r3, #768] @ 0x300 + 8003338: 683b ldr r3, [r7, #0] + 800333a: b2da uxtb r2, r3 + 800333c: 490c ldr r1, [pc, #48] @ (8003370 <__NVIC_SetPriority+0x4c>) + 800333e: f997 3007 ldrsb.w r3, [r7, #7] + 8003342: 0112 lsls r2, r2, #4 + 8003344: b2d2 uxtb r2, r2 + 8003346: 440b add r3, r1 + 8003348: 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); } } - 80030ac: e00a b.n 80030c4 <__NVIC_SetPriority+0x40> + 800334c: e00a b.n 8003364 <__NVIC_SetPriority+0x40> SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); - 80030ae: 683b ldr r3, [r7, #0] - 80030b0: b2da uxtb r2, r3 - 80030b2: 4908 ldr r1, [pc, #32] @ (80030d4 <__NVIC_SetPriority+0x50>) - 80030b4: 79fb ldrb r3, [r7, #7] - 80030b6: f003 030f and.w r3, r3, #15 - 80030ba: 3b04 subs r3, #4 - 80030bc: 0112 lsls r2, r2, #4 - 80030be: b2d2 uxtb r2, r2 - 80030c0: 440b add r3, r1 - 80030c2: 761a strb r2, [r3, #24] + 800334e: 683b ldr r3, [r7, #0] + 8003350: b2da uxtb r2, r3 + 8003352: 4908 ldr r1, [pc, #32] @ (8003374 <__NVIC_SetPriority+0x50>) + 8003354: 79fb ldrb r3, [r7, #7] + 8003356: f003 030f and.w r3, r3, #15 + 800335a: 3b04 subs r3, #4 + 800335c: 0112 lsls r2, r2, #4 + 800335e: b2d2 uxtb r2, r2 + 8003360: 440b add r3, r1 + 8003362: 761a strb r2, [r3, #24] } - 80030c4: bf00 nop - 80030c6: 370c adds r7, #12 - 80030c8: 46bd mov sp, r7 - 80030ca: bc80 pop {r7} - 80030cc: 4770 bx lr - 80030ce: bf00 nop - 80030d0: e000e100 .word 0xe000e100 - 80030d4: e000ed00 .word 0xe000ed00 + 8003364: bf00 nop + 8003366: 370c adds r7, #12 + 8003368: 46bd mov sp, r7 + 800336a: bc80 pop {r7} + 800336c: 4770 bx lr + 800336e: bf00 nop + 8003370: e000e100 .word 0xe000e100 + 8003374: e000ed00 .word 0xe000ed00 -080030d8 : +08003378 : \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) { - 80030d8: b480 push {r7} - 80030da: b089 sub sp, #36 @ 0x24 - 80030dc: af00 add r7, sp, #0 - 80030de: 60f8 str r0, [r7, #12] - 80030e0: 60b9 str r1, [r7, #8] - 80030e2: 607a str r2, [r7, #4] + 8003378: b480 push {r7} + 800337a: b089 sub sp, #36 @ 0x24 + 800337c: af00 add r7, sp, #0 + 800337e: 60f8 str r0, [r7, #12] + 8003380: 60b9 str r1, [r7, #8] + 8003382: 607a str r2, [r7, #4] uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ - 80030e4: 68fb ldr r3, [r7, #12] - 80030e6: f003 0307 and.w r3, r3, #7 - 80030ea: 61fb str r3, [r7, #28] + 8003384: 68fb ldr r3, [r7, #12] + 8003386: f003 0307 and.w r3, r3, #7 + 800338a: 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); - 80030ec: 69fb ldr r3, [r7, #28] - 80030ee: f1c3 0307 rsb r3, r3, #7 - 80030f2: 2b04 cmp r3, #4 - 80030f4: bf28 it cs - 80030f6: 2304 movcs r3, #4 - 80030f8: 61bb str r3, [r7, #24] + 800338c: 69fb ldr r3, [r7, #28] + 800338e: f1c3 0307 rsb r3, r3, #7 + 8003392: 2b04 cmp r3, #4 + 8003394: bf28 it cs + 8003396: 2304 movcs r3, #4 + 8003398: 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)); - 80030fa: 69fb ldr r3, [r7, #28] - 80030fc: 3304 adds r3, #4 - 80030fe: 2b06 cmp r3, #6 - 8003100: d902 bls.n 8003108 - 8003102: 69fb ldr r3, [r7, #28] - 8003104: 3b03 subs r3, #3 - 8003106: e000 b.n 800310a - 8003108: 2300 movs r3, #0 - 800310a: 617b str r3, [r7, #20] + 800339a: 69fb ldr r3, [r7, #28] + 800339c: 3304 adds r3, #4 + 800339e: 2b06 cmp r3, #6 + 80033a0: d902 bls.n 80033a8 + 80033a2: 69fb ldr r3, [r7, #28] + 80033a4: 3b03 subs r3, #3 + 80033a6: e000 b.n 80033aa + 80033a8: 2300 movs r3, #0 + 80033aa: 617b str r3, [r7, #20] return ( ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | - 800310c: f04f 32ff mov.w r2, #4294967295 - 8003110: 69bb ldr r3, [r7, #24] - 8003112: fa02 f303 lsl.w r3, r2, r3 - 8003116: 43da mvns r2, r3 - 8003118: 68bb ldr r3, [r7, #8] - 800311a: 401a ands r2, r3 - 800311c: 697b ldr r3, [r7, #20] - 800311e: 409a lsls r2, r3 + 80033ac: f04f 32ff mov.w r2, #4294967295 + 80033b0: 69bb ldr r3, [r7, #24] + 80033b2: fa02 f303 lsl.w r3, r2, r3 + 80033b6: 43da mvns r2, r3 + 80033b8: 68bb ldr r3, [r7, #8] + 80033ba: 401a ands r2, r3 + 80033bc: 697b ldr r3, [r7, #20] + 80033be: 409a lsls r2, r3 ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) - 8003120: f04f 31ff mov.w r1, #4294967295 - 8003124: 697b ldr r3, [r7, #20] - 8003126: fa01 f303 lsl.w r3, r1, r3 - 800312a: 43d9 mvns r1, r3 - 800312c: 687b ldr r3, [r7, #4] - 800312e: 400b ands r3, r1 + 80033c0: f04f 31ff mov.w r1, #4294967295 + 80033c4: 697b ldr r3, [r7, #20] + 80033c6: fa01 f303 lsl.w r3, r1, r3 + 80033ca: 43d9 mvns r1, r3 + 80033cc: 687b ldr r3, [r7, #4] + 80033ce: 400b ands r3, r1 ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | - 8003130: 4313 orrs r3, r2 + 80033d0: 4313 orrs r3, r2 ); } - 8003132: 4618 mov r0, r3 - 8003134: 3724 adds r7, #36 @ 0x24 - 8003136: 46bd mov sp, r7 - 8003138: bc80 pop {r7} - 800313a: 4770 bx lr + 80033d2: 4618 mov r0, r3 + 80033d4: 3724 adds r7, #36 @ 0x24 + 80033d6: 46bd mov sp, r7 + 80033d8: bc80 pop {r7} + 80033da: 4770 bx lr -0800313c : +080033dc : \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) { - 800313c: b580 push {r7, lr} - 800313e: b082 sub sp, #8 - 8003140: af00 add r7, sp, #0 - 8003142: 6078 str r0, [r7, #4] + 80033dc: b580 push {r7, lr} + 80033de: b082 sub sp, #8 + 80033e0: af00 add r7, sp, #0 + 80033e2: 6078 str r0, [r7, #4] if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) - 8003144: 687b ldr r3, [r7, #4] - 8003146: 3b01 subs r3, #1 - 8003148: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 - 800314c: d301 bcc.n 8003152 + 80033e4: 687b ldr r3, [r7, #4] + 80033e6: 3b01 subs r3, #1 + 80033e8: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 + 80033ec: d301 bcc.n 80033f2 { return (1UL); /* Reload value impossible */ - 800314e: 2301 movs r3, #1 - 8003150: e00f b.n 8003172 + 80033ee: 2301 movs r3, #1 + 80033f0: e00f b.n 8003412 } SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ - 8003152: 4a0a ldr r2, [pc, #40] @ (800317c ) - 8003154: 687b ldr r3, [r7, #4] - 8003156: 3b01 subs r3, #1 - 8003158: 6053 str r3, [r2, #4] + 80033f2: 4a0a ldr r2, [pc, #40] @ (800341c ) + 80033f4: 687b ldr r3, [r7, #4] + 80033f6: 3b01 subs r3, #1 + 80033f8: 6053 str r3, [r2, #4] NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ - 800315a: 210f movs r1, #15 - 800315c: f04f 30ff mov.w r0, #4294967295 - 8003160: f7ff ff90 bl 8003084 <__NVIC_SetPriority> + 80033fa: 210f movs r1, #15 + 80033fc: f04f 30ff mov.w r0, #4294967295 + 8003400: f7ff ff90 bl 8003324 <__NVIC_SetPriority> SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ - 8003164: 4b05 ldr r3, [pc, #20] @ (800317c ) - 8003166: 2200 movs r2, #0 - 8003168: 609a str r2, [r3, #8] + 8003404: 4b05 ldr r3, [pc, #20] @ (800341c ) + 8003406: 2200 movs r2, #0 + 8003408: 609a str r2, [r3, #8] SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - 800316a: 4b04 ldr r3, [pc, #16] @ (800317c ) - 800316c: 2207 movs r2, #7 - 800316e: 601a str r2, [r3, #0] + 800340a: 4b04 ldr r3, [pc, #16] @ (800341c ) + 800340c: 2207 movs r2, #7 + 800340e: 601a str r2, [r3, #0] SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ return (0UL); /* Function successful */ - 8003170: 2300 movs r3, #0 + 8003410: 2300 movs r3, #0 } - 8003172: 4618 mov r0, r3 - 8003174: 3708 adds r7, #8 - 8003176: 46bd mov sp, r7 - 8003178: bd80 pop {r7, pc} - 800317a: bf00 nop - 800317c: e000e010 .word 0xe000e010 + 8003412: 4618 mov r0, r3 + 8003414: 3708 adds r7, #8 + 8003416: 46bd mov sp, r7 + 8003418: bd80 pop {r7, pc} + 800341a: bf00 nop + 800341c: e000e010 .word 0xe000e010 -08003180 : +08003420 : * @note When the NVIC_PriorityGroup_0 is selected, IRQ preemption is no more possible. * The pending IRQ priority will be managed only by the subpriority. * @retval None */ void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup) { - 8003180: b580 push {r7, lr} - 8003182: b082 sub sp, #8 - 8003184: af00 add r7, sp, #0 - 8003186: 6078 str r0, [r7, #4] + 8003420: b580 push {r7, lr} + 8003422: b082 sub sp, #8 + 8003424: af00 add r7, sp, #0 + 8003426: 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); - 8003188: 6878 ldr r0, [r7, #4] - 800318a: f7ff ff2d bl 8002fe8 <__NVIC_SetPriorityGrouping> + 8003428: 6878 ldr r0, [r7, #4] + 800342a: f7ff ff2d bl 8003288 <__NVIC_SetPriorityGrouping> } - 800318e: bf00 nop - 8003190: 3708 adds r7, #8 - 8003192: 46bd mov sp, r7 - 8003194: bd80 pop {r7, pc} + 800342e: bf00 nop + 8003430: 3708 adds r7, #8 + 8003432: 46bd mov sp, r7 + 8003434: bd80 pop {r7, pc} -08003196 : +08003436 : * 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) { - 8003196: b580 push {r7, lr} - 8003198: b086 sub sp, #24 - 800319a: af00 add r7, sp, #0 - 800319c: 4603 mov r3, r0 - 800319e: 60b9 str r1, [r7, #8] - 80031a0: 607a str r2, [r7, #4] - 80031a2: 73fb strb r3, [r7, #15] + 8003436: b580 push {r7, lr} + 8003438: b086 sub sp, #24 + 800343a: af00 add r7, sp, #0 + 800343c: 4603 mov r3, r0 + 800343e: 60b9 str r1, [r7, #8] + 8003440: 607a str r2, [r7, #4] + 8003442: 73fb strb r3, [r7, #15] uint32_t prioritygroup = 0x00U; - 80031a4: 2300 movs r3, #0 - 80031a6: 617b str r3, [r7, #20] + 8003444: 2300 movs r3, #0 + 8003446: 617b str r3, [r7, #20] /* Check the parameters */ assert_param(IS_NVIC_SUB_PRIORITY(SubPriority)); assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); prioritygroup = NVIC_GetPriorityGrouping(); - 80031a8: f7ff ff42 bl 8003030 <__NVIC_GetPriorityGrouping> - 80031ac: 6178 str r0, [r7, #20] + 8003448: f7ff ff42 bl 80032d0 <__NVIC_GetPriorityGrouping> + 800344c: 6178 str r0, [r7, #20] NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); - 80031ae: 687a ldr r2, [r7, #4] - 80031b0: 68b9 ldr r1, [r7, #8] - 80031b2: 6978 ldr r0, [r7, #20] - 80031b4: f7ff ff90 bl 80030d8 - 80031b8: 4602 mov r2, r0 - 80031ba: f997 300f ldrsb.w r3, [r7, #15] - 80031be: 4611 mov r1, r2 - 80031c0: 4618 mov r0, r3 - 80031c2: f7ff ff5f bl 8003084 <__NVIC_SetPriority> + 800344e: 687a ldr r2, [r7, #4] + 8003450: 68b9 ldr r1, [r7, #8] + 8003452: 6978 ldr r0, [r7, #20] + 8003454: f7ff ff90 bl 8003378 + 8003458: 4602 mov r2, r0 + 800345a: f997 300f ldrsb.w r3, [r7, #15] + 800345e: 4611 mov r1, r2 + 8003460: 4618 mov r0, r3 + 8003462: f7ff ff5f bl 8003324 <__NVIC_SetPriority> } - 80031c6: bf00 nop - 80031c8: 3718 adds r7, #24 - 80031ca: 46bd mov sp, r7 - 80031cc: bd80 pop {r7, pc} + 8003466: bf00 nop + 8003468: 3718 adds r7, #24 + 800346a: 46bd mov sp, r7 + 800346c: bd80 pop {r7, pc} -080031ce : +0800346e : * This parameter can be an enumerator of IRQn_Type enumeration * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f10xxx.h)) * @retval None */ void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) { - 80031ce: b580 push {r7, lr} - 80031d0: b082 sub sp, #8 - 80031d2: af00 add r7, sp, #0 - 80031d4: 4603 mov r3, r0 - 80031d6: 71fb strb r3, [r7, #7] + 800346e: b580 push {r7, lr} + 8003470: b082 sub sp, #8 + 8003472: af00 add r7, sp, #0 + 8003474: 4603 mov r3, r0 + 8003476: 71fb strb r3, [r7, #7] /* Check the parameters */ assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); /* Enable interrupt */ NVIC_EnableIRQ(IRQn); - 80031d8: f997 3007 ldrsb.w r3, [r7, #7] - 80031dc: 4618 mov r0, r3 - 80031de: f7ff ff35 bl 800304c <__NVIC_EnableIRQ> + 8003478: f997 3007 ldrsb.w r3, [r7, #7] + 800347c: 4618 mov r0, r3 + 800347e: f7ff ff35 bl 80032ec <__NVIC_EnableIRQ> } - 80031e2: bf00 nop - 80031e4: 3708 adds r7, #8 - 80031e6: 46bd mov sp, r7 - 80031e8: bd80 pop {r7, pc} + 8003482: bf00 nop + 8003484: 3708 adds r7, #8 + 8003486: 46bd mov sp, r7 + 8003488: bd80 pop {r7, pc} -080031ea : +0800348a : * @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) { - 80031ea: b580 push {r7, lr} - 80031ec: b082 sub sp, #8 - 80031ee: af00 add r7, sp, #0 - 80031f0: 6078 str r0, [r7, #4] + 800348a: b580 push {r7, lr} + 800348c: b082 sub sp, #8 + 800348e: af00 add r7, sp, #0 + 8003490: 6078 str r0, [r7, #4] return SysTick_Config(TicksNumb); - 80031f2: 6878 ldr r0, [r7, #4] - 80031f4: f7ff ffa2 bl 800313c - 80031f8: 4603 mov r3, r0 + 8003492: 6878 ldr r0, [r7, #4] + 8003494: f7ff ffa2 bl 80033dc + 8003498: 4603 mov r3, r0 } - 80031fa: 4618 mov r0, r3 - 80031fc: 3708 adds r7, #8 - 80031fe: 46bd mov sp, r7 - 8003200: bd80 pop {r7, pc} + 800349a: 4618 mov r0, r3 + 800349c: 3708 adds r7, #8 + 800349e: 46bd mov sp, r7 + 80034a0: bd80 pop {r7, pc} -08003202 : +080034a2 : * @param hdma: pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA Channel. * @retval HAL status */ HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma) { - 8003202: b480 push {r7} - 8003204: b085 sub sp, #20 - 8003206: af00 add r7, sp, #0 - 8003208: 6078 str r0, [r7, #4] + 80034a2: b480 push {r7} + 80034a4: b085 sub sp, #20 + 80034a6: af00 add r7, sp, #0 + 80034a8: 6078 str r0, [r7, #4] HAL_StatusTypeDef status = HAL_OK; - 800320a: 2300 movs r3, #0 - 800320c: 73fb strb r3, [r7, #15] + 80034aa: 2300 movs r3, #0 + 80034ac: 73fb strb r3, [r7, #15] if(hdma->State != HAL_DMA_STATE_BUSY) - 800320e: 687b ldr r3, [r7, #4] - 8003210: f893 3021 ldrb.w r3, [r3, #33] @ 0x21 - 8003214: b2db uxtb r3, r3 - 8003216: 2b02 cmp r3, #2 - 8003218: d008 beq.n 800322c + 80034ae: 687b ldr r3, [r7, #4] + 80034b0: f893 3021 ldrb.w r3, [r3, #33] @ 0x21 + 80034b4: b2db uxtb r3, r3 + 80034b6: 2b02 cmp r3, #2 + 80034b8: d008 beq.n 80034cc { /* no transfer ongoing */ hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; - 800321a: 687b ldr r3, [r7, #4] - 800321c: 2204 movs r2, #4 - 800321e: 639a str r2, [r3, #56] @ 0x38 + 80034ba: 687b ldr r3, [r7, #4] + 80034bc: 2204 movs r2, #4 + 80034be: 639a str r2, [r3, #56] @ 0x38 /* Process Unlocked */ __HAL_UNLOCK(hdma); - 8003220: 687b ldr r3, [r7, #4] - 8003222: 2200 movs r2, #0 - 8003224: f883 2020 strb.w r2, [r3, #32] + 80034c0: 687b ldr r3, [r7, #4] + 80034c2: 2200 movs r2, #0 + 80034c4: f883 2020 strb.w r2, [r3, #32] return HAL_ERROR; - 8003228: 2301 movs r3, #1 - 800322a: e020 b.n 800326e + 80034c8: 2301 movs r3, #1 + 80034ca: e020 b.n 800350e } else { /* Disable DMA IT */ __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); - 800322c: 687b ldr r3, [r7, #4] - 800322e: 681b ldr r3, [r3, #0] - 8003230: 681a ldr r2, [r3, #0] - 8003232: 687b ldr r3, [r7, #4] - 8003234: 681b ldr r3, [r3, #0] - 8003236: f022 020e bic.w r2, r2, #14 - 800323a: 601a str r2, [r3, #0] + 80034cc: 687b ldr r3, [r7, #4] + 80034ce: 681b ldr r3, [r3, #0] + 80034d0: 681a ldr r2, [r3, #0] + 80034d2: 687b ldr r3, [r7, #4] + 80034d4: 681b ldr r3, [r3, #0] + 80034d6: f022 020e bic.w r2, r2, #14 + 80034da: 601a str r2, [r3, #0] /* Disable the channel */ __HAL_DMA_DISABLE(hdma); - 800323c: 687b ldr r3, [r7, #4] - 800323e: 681b ldr r3, [r3, #0] - 8003240: 681a ldr r2, [r3, #0] - 8003242: 687b ldr r3, [r7, #4] - 8003244: 681b ldr r3, [r3, #0] - 8003246: f022 0201 bic.w r2, r2, #1 - 800324a: 601a str r2, [r3, #0] + 80034dc: 687b ldr r3, [r7, #4] + 80034de: 681b ldr r3, [r3, #0] + 80034e0: 681a ldr r2, [r3, #0] + 80034e2: 687b ldr r3, [r7, #4] + 80034e4: 681b ldr r3, [r3, #0] + 80034e6: f022 0201 bic.w r2, r2, #1 + 80034ea: 601a str r2, [r3, #0] /* Clear all flags */ hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << hdma->ChannelIndex); - 800324c: 687b ldr r3, [r7, #4] - 800324e: 6c1a ldr r2, [r3, #64] @ 0x40 - 8003250: 687b ldr r3, [r7, #4] - 8003252: 6bdb ldr r3, [r3, #60] @ 0x3c - 8003254: 2101 movs r1, #1 - 8003256: fa01 f202 lsl.w r2, r1, r2 - 800325a: 605a str r2, [r3, #4] + 80034ec: 687b ldr r3, [r7, #4] + 80034ee: 6c1a ldr r2, [r3, #64] @ 0x40 + 80034f0: 687b ldr r3, [r7, #4] + 80034f2: 6bdb ldr r3, [r3, #60] @ 0x3c + 80034f4: 2101 movs r1, #1 + 80034f6: fa01 f202 lsl.w r2, r1, r2 + 80034fa: 605a str r2, [r3, #4] } /* Change the DMA state */ hdma->State = HAL_DMA_STATE_READY; - 800325c: 687b ldr r3, [r7, #4] - 800325e: 2201 movs r2, #1 - 8003260: f883 2021 strb.w r2, [r3, #33] @ 0x21 + 80034fc: 687b ldr r3, [r7, #4] + 80034fe: 2201 movs r2, #1 + 8003500: f883 2021 strb.w r2, [r3, #33] @ 0x21 /* Process Unlocked */ __HAL_UNLOCK(hdma); - 8003264: 687b ldr r3, [r7, #4] - 8003266: 2200 movs r2, #0 - 8003268: f883 2020 strb.w r2, [r3, #32] + 8003504: 687b ldr r3, [r7, #4] + 8003506: 2200 movs r2, #0 + 8003508: f883 2020 strb.w r2, [r3, #32] return status; - 800326c: 7bfb ldrb r3, [r7, #15] + 800350c: 7bfb ldrb r3, [r7, #15] } - 800326e: 4618 mov r0, r3 - 8003270: 3714 adds r7, #20 - 8003272: 46bd mov sp, r7 - 8003274: bc80 pop {r7} - 8003276: 4770 bx lr + 800350e: 4618 mov r0, r3 + 8003510: 3714 adds r7, #20 + 8003512: 46bd mov sp, r7 + 8003514: bc80 pop {r7} + 8003516: 4770 bx lr -08003278 : +08003518 : * @param hdma : pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA Channel. * @retval HAL status */ HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma) { - 8003278: b580 push {r7, lr} - 800327a: b084 sub sp, #16 - 800327c: af00 add r7, sp, #0 - 800327e: 6078 str r0, [r7, #4] + 8003518: b580 push {r7, lr} + 800351a: b084 sub sp, #16 + 800351c: af00 add r7, sp, #0 + 800351e: 6078 str r0, [r7, #4] HAL_StatusTypeDef status = HAL_OK; - 8003280: 2300 movs r3, #0 - 8003282: 73fb strb r3, [r7, #15] + 8003520: 2300 movs r3, #0 + 8003522: 73fb strb r3, [r7, #15] if(HAL_DMA_STATE_BUSY != hdma->State) - 8003284: 687b ldr r3, [r7, #4] - 8003286: f893 3021 ldrb.w r3, [r3, #33] @ 0x21 - 800328a: b2db uxtb r3, r3 - 800328c: 2b02 cmp r3, #2 - 800328e: d005 beq.n 800329c + 8003524: 687b ldr r3, [r7, #4] + 8003526: f893 3021 ldrb.w r3, [r3, #33] @ 0x21 + 800352a: b2db uxtb r3, r3 + 800352c: 2b02 cmp r3, #2 + 800352e: d005 beq.n 800353c { /* no transfer ongoing */ hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; - 8003290: 687b ldr r3, [r7, #4] - 8003292: 2204 movs r2, #4 - 8003294: 639a str r2, [r3, #56] @ 0x38 + 8003530: 687b ldr r3, [r7, #4] + 8003532: 2204 movs r2, #4 + 8003534: 639a str r2, [r3, #56] @ 0x38 status = HAL_ERROR; - 8003296: 2301 movs r3, #1 - 8003298: 73fb strb r3, [r7, #15] - 800329a: e051 b.n 8003340 + 8003536: 2301 movs r3, #1 + 8003538: 73fb strb r3, [r7, #15] + 800353a: e051 b.n 80035e0 } else { /* Disable DMA IT */ __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); - 800329c: 687b ldr r3, [r7, #4] - 800329e: 681b ldr r3, [r3, #0] - 80032a0: 681a ldr r2, [r3, #0] - 80032a2: 687b ldr r3, [r7, #4] - 80032a4: 681b ldr r3, [r3, #0] - 80032a6: f022 020e bic.w r2, r2, #14 - 80032aa: 601a str r2, [r3, #0] + 800353c: 687b ldr r3, [r7, #4] + 800353e: 681b ldr r3, [r3, #0] + 8003540: 681a ldr r2, [r3, #0] + 8003542: 687b ldr r3, [r7, #4] + 8003544: 681b ldr r3, [r3, #0] + 8003546: f022 020e bic.w r2, r2, #14 + 800354a: 601a str r2, [r3, #0] /* Disable the channel */ __HAL_DMA_DISABLE(hdma); - 80032ac: 687b ldr r3, [r7, #4] - 80032ae: 681b ldr r3, [r3, #0] - 80032b0: 681a ldr r2, [r3, #0] - 80032b2: 687b ldr r3, [r7, #4] - 80032b4: 681b ldr r3, [r3, #0] - 80032b6: f022 0201 bic.w r2, r2, #1 - 80032ba: 601a str r2, [r3, #0] + 800354c: 687b ldr r3, [r7, #4] + 800354e: 681b ldr r3, [r3, #0] + 8003550: 681a ldr r2, [r3, #0] + 8003552: 687b ldr r3, [r7, #4] + 8003554: 681b ldr r3, [r3, #0] + 8003556: f022 0201 bic.w r2, r2, #1 + 800355a: 601a str r2, [r3, #0] /* Clear all flags */ __HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_GI_FLAG_INDEX(hdma)); - 80032bc: 687b ldr r3, [r7, #4] - 80032be: 681b ldr r3, [r3, #0] - 80032c0: 4a22 ldr r2, [pc, #136] @ (800334c ) - 80032c2: 4293 cmp r3, r2 - 80032c4: d029 beq.n 800331a - 80032c6: 687b ldr r3, [r7, #4] - 80032c8: 681b ldr r3, [r3, #0] - 80032ca: 4a21 ldr r2, [pc, #132] @ (8003350 ) - 80032cc: 4293 cmp r3, r2 - 80032ce: d022 beq.n 8003316 - 80032d0: 687b ldr r3, [r7, #4] - 80032d2: 681b ldr r3, [r3, #0] - 80032d4: 4a1f ldr r2, [pc, #124] @ (8003354 ) - 80032d6: 4293 cmp r3, r2 - 80032d8: d01a beq.n 8003310 - 80032da: 687b ldr r3, [r7, #4] - 80032dc: 681b ldr r3, [r3, #0] - 80032de: 4a1e ldr r2, [pc, #120] @ (8003358 ) - 80032e0: 4293 cmp r3, r2 - 80032e2: d012 beq.n 800330a - 80032e4: 687b ldr r3, [r7, #4] - 80032e6: 681b ldr r3, [r3, #0] - 80032e8: 4a1c ldr r2, [pc, #112] @ (800335c ) - 80032ea: 4293 cmp r3, r2 - 80032ec: d00a beq.n 8003304 - 80032ee: 687b ldr r3, [r7, #4] - 80032f0: 681b ldr r3, [r3, #0] - 80032f2: 4a1b ldr r2, [pc, #108] @ (8003360 ) - 80032f4: 4293 cmp r3, r2 - 80032f6: d102 bne.n 80032fe - 80032f8: f44f 1380 mov.w r3, #1048576 @ 0x100000 - 80032fc: e00e b.n 800331c - 80032fe: f04f 7380 mov.w r3, #16777216 @ 0x1000000 - 8003302: e00b b.n 800331c - 8003304: f44f 3380 mov.w r3, #65536 @ 0x10000 - 8003308: e008 b.n 800331c - 800330a: f44f 5380 mov.w r3, #4096 @ 0x1000 - 800330e: e005 b.n 800331c - 8003310: f44f 7380 mov.w r3, #256 @ 0x100 - 8003314: e002 b.n 800331c - 8003316: 2310 movs r3, #16 - 8003318: e000 b.n 800331c - 800331a: 2301 movs r3, #1 - 800331c: 4a11 ldr r2, [pc, #68] @ (8003364 ) - 800331e: 6053 str r3, [r2, #4] + 800355c: 687b ldr r3, [r7, #4] + 800355e: 681b ldr r3, [r3, #0] + 8003560: 4a22 ldr r2, [pc, #136] @ (80035ec ) + 8003562: 4293 cmp r3, r2 + 8003564: d029 beq.n 80035ba + 8003566: 687b ldr r3, [r7, #4] + 8003568: 681b ldr r3, [r3, #0] + 800356a: 4a21 ldr r2, [pc, #132] @ (80035f0 ) + 800356c: 4293 cmp r3, r2 + 800356e: d022 beq.n 80035b6 + 8003570: 687b ldr r3, [r7, #4] + 8003572: 681b ldr r3, [r3, #0] + 8003574: 4a1f ldr r2, [pc, #124] @ (80035f4 ) + 8003576: 4293 cmp r3, r2 + 8003578: d01a beq.n 80035b0 + 800357a: 687b ldr r3, [r7, #4] + 800357c: 681b ldr r3, [r3, #0] + 800357e: 4a1e ldr r2, [pc, #120] @ (80035f8 ) + 8003580: 4293 cmp r3, r2 + 8003582: d012 beq.n 80035aa + 8003584: 687b ldr r3, [r7, #4] + 8003586: 681b ldr r3, [r3, #0] + 8003588: 4a1c ldr r2, [pc, #112] @ (80035fc ) + 800358a: 4293 cmp r3, r2 + 800358c: d00a beq.n 80035a4 + 800358e: 687b ldr r3, [r7, #4] + 8003590: 681b ldr r3, [r3, #0] + 8003592: 4a1b ldr r2, [pc, #108] @ (8003600 ) + 8003594: 4293 cmp r3, r2 + 8003596: d102 bne.n 800359e + 8003598: f44f 1380 mov.w r3, #1048576 @ 0x100000 + 800359c: e00e b.n 80035bc + 800359e: f04f 7380 mov.w r3, #16777216 @ 0x1000000 + 80035a2: e00b b.n 80035bc + 80035a4: f44f 3380 mov.w r3, #65536 @ 0x10000 + 80035a8: e008 b.n 80035bc + 80035aa: f44f 5380 mov.w r3, #4096 @ 0x1000 + 80035ae: e005 b.n 80035bc + 80035b0: f44f 7380 mov.w r3, #256 @ 0x100 + 80035b4: e002 b.n 80035bc + 80035b6: 2310 movs r3, #16 + 80035b8: e000 b.n 80035bc + 80035ba: 2301 movs r3, #1 + 80035bc: 4a11 ldr r2, [pc, #68] @ (8003604 ) + 80035be: 6053 str r3, [r2, #4] /* Change the DMA state */ hdma->State = HAL_DMA_STATE_READY; - 8003320: 687b ldr r3, [r7, #4] - 8003322: 2201 movs r2, #1 - 8003324: f883 2021 strb.w r2, [r3, #33] @ 0x21 + 80035c0: 687b ldr r3, [r7, #4] + 80035c2: 2201 movs r2, #1 + 80035c4: f883 2021 strb.w r2, [r3, #33] @ 0x21 /* Process Unlocked */ __HAL_UNLOCK(hdma); - 8003328: 687b ldr r3, [r7, #4] - 800332a: 2200 movs r2, #0 - 800332c: f883 2020 strb.w r2, [r3, #32] + 80035c8: 687b ldr r3, [r7, #4] + 80035ca: 2200 movs r2, #0 + 80035cc: f883 2020 strb.w r2, [r3, #32] /* Call User Abort callback */ if(hdma->XferAbortCallback != NULL) - 8003330: 687b ldr r3, [r7, #4] - 8003332: 6b5b ldr r3, [r3, #52] @ 0x34 - 8003334: 2b00 cmp r3, #0 - 8003336: d003 beq.n 8003340 + 80035d0: 687b ldr r3, [r7, #4] + 80035d2: 6b5b ldr r3, [r3, #52] @ 0x34 + 80035d4: 2b00 cmp r3, #0 + 80035d6: d003 beq.n 80035e0 { hdma->XferAbortCallback(hdma); - 8003338: 687b ldr r3, [r7, #4] - 800333a: 6b5b ldr r3, [r3, #52] @ 0x34 - 800333c: 6878 ldr r0, [r7, #4] - 800333e: 4798 blx r3 + 80035d8: 687b ldr r3, [r7, #4] + 80035da: 6b5b ldr r3, [r3, #52] @ 0x34 + 80035dc: 6878 ldr r0, [r7, #4] + 80035de: 4798 blx r3 } } return status; - 8003340: 7bfb ldrb r3, [r7, #15] + 80035e0: 7bfb ldrb r3, [r7, #15] } - 8003342: 4618 mov r0, r3 - 8003344: 3710 adds r7, #16 - 8003346: 46bd mov sp, r7 - 8003348: bd80 pop {r7, pc} - 800334a: bf00 nop - 800334c: 40020008 .word 0x40020008 - 8003350: 4002001c .word 0x4002001c - 8003354: 40020030 .word 0x40020030 - 8003358: 40020044 .word 0x40020044 - 800335c: 40020058 .word 0x40020058 - 8003360: 4002006c .word 0x4002006c - 8003364: 40020000 .word 0x40020000 + 80035e2: 4618 mov r0, r3 + 80035e4: 3710 adds r7, #16 + 80035e6: 46bd mov sp, r7 + 80035e8: bd80 pop {r7, pc} + 80035ea: bf00 nop + 80035ec: 40020008 .word 0x40020008 + 80035f0: 4002001c .word 0x4002001c + 80035f4: 40020030 .word 0x40020030 + 80035f8: 40020044 .word 0x40020044 + 80035fc: 40020058 .word 0x40020058 + 8003600: 4002006c .word 0x4002006c + 8003604: 40020000 .word 0x40020000 -08003368 : +08003608 : * @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) { - 8003368: b480 push {r7} - 800336a: b08b sub sp, #44 @ 0x2c - 800336c: af00 add r7, sp, #0 - 800336e: 6078 str r0, [r7, #4] - 8003370: 6039 str r1, [r7, #0] + 8003608: b480 push {r7} + 800360a: b08b sub sp, #44 @ 0x2c + 800360c: af00 add r7, sp, #0 + 800360e: 6078 str r0, [r7, #4] + 8003610: 6039 str r1, [r7, #0] uint32_t position = 0x00u; - 8003372: 2300 movs r3, #0 - 8003374: 627b str r3, [r7, #36] @ 0x24 + 8003612: 2300 movs r3, #0 + 8003614: 627b str r3, [r7, #36] @ 0x24 uint32_t ioposition; uint32_t iocurrent; uint32_t temp; uint32_t config = 0x00u; - 8003376: 2300 movs r3, #0 - 8003378: 623b str r3, [r7, #32] + 8003616: 2300 movs r3, #0 + 8003618: 623b str r3, [r7, #32] assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); /* Configure the port pins */ while (((GPIO_Init->Pin) >> position) != 0x00u) - 800337a: e169 b.n 8003650 + 800361a: e169 b.n 80038f0 { /* Get the IO position */ ioposition = (0x01uL << position); - 800337c: 2201 movs r2, #1 - 800337e: 6a7b ldr r3, [r7, #36] @ 0x24 - 8003380: fa02 f303 lsl.w r3, r2, r3 - 8003384: 61fb str r3, [r7, #28] + 800361c: 2201 movs r2, #1 + 800361e: 6a7b ldr r3, [r7, #36] @ 0x24 + 8003620: fa02 f303 lsl.w r3, r2, r3 + 8003624: 61fb str r3, [r7, #28] /* Get the current IO position */ iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition; - 8003386: 683b ldr r3, [r7, #0] - 8003388: 681b ldr r3, [r3, #0] - 800338a: 69fa ldr r2, [r7, #28] - 800338c: 4013 ands r3, r2 - 800338e: 61bb str r3, [r7, #24] + 8003626: 683b ldr r3, [r7, #0] + 8003628: 681b ldr r3, [r3, #0] + 800362a: 69fa ldr r2, [r7, #28] + 800362c: 4013 ands r3, r2 + 800362e: 61bb str r3, [r7, #24] if (iocurrent == ioposition) - 8003390: 69ba ldr r2, [r7, #24] - 8003392: 69fb ldr r3, [r7, #28] - 8003394: 429a cmp r2, r3 - 8003396: f040 8158 bne.w 800364a + 8003630: 69ba ldr r2, [r7, #24] + 8003632: 69fb ldr r3, [r7, #28] + 8003634: 429a cmp r2, r3 + 8003636: f040 8158 bne.w 80038ea { /* Check the Alternate function parameters */ assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); /* Based on the required mode, filling config variable with MODEy[1:0] and CNFy[3:2] corresponding bits */ switch (GPIO_Init->Mode) - 800339a: 683b ldr r3, [r7, #0] - 800339c: 685b ldr r3, [r3, #4] - 800339e: 4a9a ldr r2, [pc, #616] @ (8003608 ) - 80033a0: 4293 cmp r3, r2 - 80033a2: d05e beq.n 8003462 - 80033a4: 4a98 ldr r2, [pc, #608] @ (8003608 ) - 80033a6: 4293 cmp r3, r2 - 80033a8: d875 bhi.n 8003496 - 80033aa: 4a98 ldr r2, [pc, #608] @ (800360c ) - 80033ac: 4293 cmp r3, r2 - 80033ae: d058 beq.n 8003462 - 80033b0: 4a96 ldr r2, [pc, #600] @ (800360c ) - 80033b2: 4293 cmp r3, r2 - 80033b4: d86f bhi.n 8003496 - 80033b6: 4a96 ldr r2, [pc, #600] @ (8003610 ) - 80033b8: 4293 cmp r3, r2 - 80033ba: d052 beq.n 8003462 - 80033bc: 4a94 ldr r2, [pc, #592] @ (8003610 ) - 80033be: 4293 cmp r3, r2 - 80033c0: d869 bhi.n 8003496 - 80033c2: 4a94 ldr r2, [pc, #592] @ (8003614 ) - 80033c4: 4293 cmp r3, r2 - 80033c6: d04c beq.n 8003462 - 80033c8: 4a92 ldr r2, [pc, #584] @ (8003614 ) - 80033ca: 4293 cmp r3, r2 - 80033cc: d863 bhi.n 8003496 - 80033ce: 4a92 ldr r2, [pc, #584] @ (8003618 ) - 80033d0: 4293 cmp r3, r2 - 80033d2: d046 beq.n 8003462 - 80033d4: 4a90 ldr r2, [pc, #576] @ (8003618 ) - 80033d6: 4293 cmp r3, r2 - 80033d8: d85d bhi.n 8003496 - 80033da: 2b12 cmp r3, #18 - 80033dc: d82a bhi.n 8003434 - 80033de: 2b12 cmp r3, #18 - 80033e0: d859 bhi.n 8003496 - 80033e2: a201 add r2, pc, #4 @ (adr r2, 80033e8 ) - 80033e4: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 80033e8: 08003463 .word 0x08003463 - 80033ec: 0800343d .word 0x0800343d - 80033f0: 0800344f .word 0x0800344f - 80033f4: 08003491 .word 0x08003491 - 80033f8: 08003497 .word 0x08003497 - 80033fc: 08003497 .word 0x08003497 - 8003400: 08003497 .word 0x08003497 - 8003404: 08003497 .word 0x08003497 - 8003408: 08003497 .word 0x08003497 - 800340c: 08003497 .word 0x08003497 - 8003410: 08003497 .word 0x08003497 - 8003414: 08003497 .word 0x08003497 - 8003418: 08003497 .word 0x08003497 - 800341c: 08003497 .word 0x08003497 - 8003420: 08003497 .word 0x08003497 - 8003424: 08003497 .word 0x08003497 - 8003428: 08003497 .word 0x08003497 - 800342c: 08003445 .word 0x08003445 - 8003430: 08003459 .word 0x08003459 - 8003434: 4a79 ldr r2, [pc, #484] @ (800361c ) - 8003436: 4293 cmp r3, r2 - 8003438: d013 beq.n 8003462 + 800363a: 683b ldr r3, [r7, #0] + 800363c: 685b ldr r3, [r3, #4] + 800363e: 4a9a ldr r2, [pc, #616] @ (80038a8 ) + 8003640: 4293 cmp r3, r2 + 8003642: d05e beq.n 8003702 + 8003644: 4a98 ldr r2, [pc, #608] @ (80038a8 ) + 8003646: 4293 cmp r3, r2 + 8003648: d875 bhi.n 8003736 + 800364a: 4a98 ldr r2, [pc, #608] @ (80038ac ) + 800364c: 4293 cmp r3, r2 + 800364e: d058 beq.n 8003702 + 8003650: 4a96 ldr r2, [pc, #600] @ (80038ac ) + 8003652: 4293 cmp r3, r2 + 8003654: d86f bhi.n 8003736 + 8003656: 4a96 ldr r2, [pc, #600] @ (80038b0 ) + 8003658: 4293 cmp r3, r2 + 800365a: d052 beq.n 8003702 + 800365c: 4a94 ldr r2, [pc, #592] @ (80038b0 ) + 800365e: 4293 cmp r3, r2 + 8003660: d869 bhi.n 8003736 + 8003662: 4a94 ldr r2, [pc, #592] @ (80038b4 ) + 8003664: 4293 cmp r3, r2 + 8003666: d04c beq.n 8003702 + 8003668: 4a92 ldr r2, [pc, #584] @ (80038b4 ) + 800366a: 4293 cmp r3, r2 + 800366c: d863 bhi.n 8003736 + 800366e: 4a92 ldr r2, [pc, #584] @ (80038b8 ) + 8003670: 4293 cmp r3, r2 + 8003672: d046 beq.n 8003702 + 8003674: 4a90 ldr r2, [pc, #576] @ (80038b8 ) + 8003676: 4293 cmp r3, r2 + 8003678: d85d bhi.n 8003736 + 800367a: 2b12 cmp r3, #18 + 800367c: d82a bhi.n 80036d4 + 800367e: 2b12 cmp r3, #18 + 8003680: d859 bhi.n 8003736 + 8003682: a201 add r2, pc, #4 @ (adr r2, 8003688 ) + 8003684: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8003688: 08003703 .word 0x08003703 + 800368c: 080036dd .word 0x080036dd + 8003690: 080036ef .word 0x080036ef + 8003694: 08003731 .word 0x08003731 + 8003698: 08003737 .word 0x08003737 + 800369c: 08003737 .word 0x08003737 + 80036a0: 08003737 .word 0x08003737 + 80036a4: 08003737 .word 0x08003737 + 80036a8: 08003737 .word 0x08003737 + 80036ac: 08003737 .word 0x08003737 + 80036b0: 08003737 .word 0x08003737 + 80036b4: 08003737 .word 0x08003737 + 80036b8: 08003737 .word 0x08003737 + 80036bc: 08003737 .word 0x08003737 + 80036c0: 08003737 .word 0x08003737 + 80036c4: 08003737 .word 0x08003737 + 80036c8: 08003737 .word 0x08003737 + 80036cc: 080036e5 .word 0x080036e5 + 80036d0: 080036f9 .word 0x080036f9 + 80036d4: 4a79 ldr r2, [pc, #484] @ (80038bc ) + 80036d6: 4293 cmp r3, r2 + 80036d8: d013 beq.n 8003702 config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_ANALOG; break; /* Parameters are checked with assert_param */ default: break; - 800343a: e02c b.n 8003496 + 80036da: e02c b.n 8003736 config = GPIO_Init->Speed + GPIO_CR_CNF_GP_OUTPUT_PP; - 800343c: 683b ldr r3, [r7, #0] - 800343e: 68db ldr r3, [r3, #12] - 8003440: 623b str r3, [r7, #32] + 80036dc: 683b ldr r3, [r7, #0] + 80036de: 68db ldr r3, [r3, #12] + 80036e0: 623b str r3, [r7, #32] break; - 8003442: e029 b.n 8003498 + 80036e2: e029 b.n 8003738 config = GPIO_Init->Speed + GPIO_CR_CNF_GP_OUTPUT_OD; - 8003444: 683b ldr r3, [r7, #0] - 8003446: 68db ldr r3, [r3, #12] - 8003448: 3304 adds r3, #4 - 800344a: 623b str r3, [r7, #32] + 80036e4: 683b ldr r3, [r7, #0] + 80036e6: 68db ldr r3, [r3, #12] + 80036e8: 3304 adds r3, #4 + 80036ea: 623b str r3, [r7, #32] break; - 800344c: e024 b.n 8003498 + 80036ec: e024 b.n 8003738 config = GPIO_Init->Speed + GPIO_CR_CNF_AF_OUTPUT_PP; - 800344e: 683b ldr r3, [r7, #0] - 8003450: 68db ldr r3, [r3, #12] - 8003452: 3308 adds r3, #8 - 8003454: 623b str r3, [r7, #32] + 80036ee: 683b ldr r3, [r7, #0] + 80036f0: 68db ldr r3, [r3, #12] + 80036f2: 3308 adds r3, #8 + 80036f4: 623b str r3, [r7, #32] break; - 8003456: e01f b.n 8003498 + 80036f6: e01f b.n 8003738 config = GPIO_Init->Speed + GPIO_CR_CNF_AF_OUTPUT_OD; - 8003458: 683b ldr r3, [r7, #0] - 800345a: 68db ldr r3, [r3, #12] - 800345c: 330c adds r3, #12 - 800345e: 623b str r3, [r7, #32] + 80036f8: 683b ldr r3, [r7, #0] + 80036fa: 68db ldr r3, [r3, #12] + 80036fc: 330c adds r3, #12 + 80036fe: 623b str r3, [r7, #32] break; - 8003460: e01a b.n 8003498 + 8003700: e01a b.n 8003738 if (GPIO_Init->Pull == GPIO_NOPULL) - 8003462: 683b ldr r3, [r7, #0] - 8003464: 689b ldr r3, [r3, #8] - 8003466: 2b00 cmp r3, #0 - 8003468: d102 bne.n 8003470 + 8003702: 683b ldr r3, [r7, #0] + 8003704: 689b ldr r3, [r3, #8] + 8003706: 2b00 cmp r3, #0 + 8003708: d102 bne.n 8003710 config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_FLOATING; - 800346a: 2304 movs r3, #4 - 800346c: 623b str r3, [r7, #32] + 800370a: 2304 movs r3, #4 + 800370c: 623b str r3, [r7, #32] break; - 800346e: e013 b.n 8003498 + 800370e: e013 b.n 8003738 else if (GPIO_Init->Pull == GPIO_PULLUP) - 8003470: 683b ldr r3, [r7, #0] - 8003472: 689b ldr r3, [r3, #8] - 8003474: 2b01 cmp r3, #1 - 8003476: d105 bne.n 8003484 + 8003710: 683b ldr r3, [r7, #0] + 8003712: 689b ldr r3, [r3, #8] + 8003714: 2b01 cmp r3, #1 + 8003716: d105 bne.n 8003724 config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_PU_PD; - 8003478: 2308 movs r3, #8 - 800347a: 623b str r3, [r7, #32] + 8003718: 2308 movs r3, #8 + 800371a: 623b str r3, [r7, #32] GPIOx->BSRR = ioposition; - 800347c: 687b ldr r3, [r7, #4] - 800347e: 69fa ldr r2, [r7, #28] - 8003480: 611a str r2, [r3, #16] + 800371c: 687b ldr r3, [r7, #4] + 800371e: 69fa ldr r2, [r7, #28] + 8003720: 611a str r2, [r3, #16] break; - 8003482: e009 b.n 8003498 + 8003722: e009 b.n 8003738 config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_PU_PD; - 8003484: 2308 movs r3, #8 - 8003486: 623b str r3, [r7, #32] + 8003724: 2308 movs r3, #8 + 8003726: 623b str r3, [r7, #32] GPIOx->BRR = ioposition; - 8003488: 687b ldr r3, [r7, #4] - 800348a: 69fa ldr r2, [r7, #28] - 800348c: 615a str r2, [r3, #20] + 8003728: 687b ldr r3, [r7, #4] + 800372a: 69fa ldr r2, [r7, #28] + 800372c: 615a str r2, [r3, #20] break; - 800348e: e003 b.n 8003498 + 800372e: e003 b.n 8003738 config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_ANALOG; - 8003490: 2300 movs r3, #0 - 8003492: 623b str r3, [r7, #32] + 8003730: 2300 movs r3, #0 + 8003732: 623b str r3, [r7, #32] break; - 8003494: e000 b.n 8003498 + 8003734: e000 b.n 8003738 break; - 8003496: bf00 nop + 8003736: bf00 nop } /* Check if the current bit belongs to first half or last half of the pin count number in order to address CRH or CRL register*/ configregister = (iocurrent < GPIO_PIN_8) ? &GPIOx->CRL : &GPIOx->CRH; - 8003498: 69bb ldr r3, [r7, #24] - 800349a: 2bff cmp r3, #255 @ 0xff - 800349c: d801 bhi.n 80034a2 - 800349e: 687b ldr r3, [r7, #4] - 80034a0: e001 b.n 80034a6 - 80034a2: 687b ldr r3, [r7, #4] - 80034a4: 3304 adds r3, #4 - 80034a6: 617b str r3, [r7, #20] + 8003738: 69bb ldr r3, [r7, #24] + 800373a: 2bff cmp r3, #255 @ 0xff + 800373c: d801 bhi.n 8003742 + 800373e: 687b ldr r3, [r7, #4] + 8003740: e001 b.n 8003746 + 8003742: 687b ldr r3, [r7, #4] + 8003744: 3304 adds r3, #4 + 8003746: 617b str r3, [r7, #20] registeroffset = (iocurrent < GPIO_PIN_8) ? (position << 2u) : ((position - 8u) << 2u); - 80034a8: 69bb ldr r3, [r7, #24] - 80034aa: 2bff cmp r3, #255 @ 0xff - 80034ac: d802 bhi.n 80034b4 - 80034ae: 6a7b ldr r3, [r7, #36] @ 0x24 - 80034b0: 009b lsls r3, r3, #2 - 80034b2: e002 b.n 80034ba - 80034b4: 6a7b ldr r3, [r7, #36] @ 0x24 - 80034b6: 3b08 subs r3, #8 - 80034b8: 009b lsls r3, r3, #2 - 80034ba: 613b str r3, [r7, #16] + 8003748: 69bb ldr r3, [r7, #24] + 800374a: 2bff cmp r3, #255 @ 0xff + 800374c: d802 bhi.n 8003754 + 800374e: 6a7b ldr r3, [r7, #36] @ 0x24 + 8003750: 009b lsls r3, r3, #2 + 8003752: e002 b.n 800375a + 8003754: 6a7b ldr r3, [r7, #36] @ 0x24 + 8003756: 3b08 subs r3, #8 + 8003758: 009b lsls r3, r3, #2 + 800375a: 613b str r3, [r7, #16] /* Apply the new configuration of the pin to the register */ MODIFY_REG((*configregister), ((GPIO_CRL_MODE0 | GPIO_CRL_CNF0) << registeroffset), (config << registeroffset)); - 80034bc: 697b ldr r3, [r7, #20] - 80034be: 681a ldr r2, [r3, #0] - 80034c0: 210f movs r1, #15 - 80034c2: 693b ldr r3, [r7, #16] - 80034c4: fa01 f303 lsl.w r3, r1, r3 - 80034c8: 43db mvns r3, r3 - 80034ca: 401a ands r2, r3 - 80034cc: 6a39 ldr r1, [r7, #32] - 80034ce: 693b ldr r3, [r7, #16] - 80034d0: fa01 f303 lsl.w r3, r1, r3 - 80034d4: 431a orrs r2, r3 - 80034d6: 697b ldr r3, [r7, #20] - 80034d8: 601a str r2, [r3, #0] + 800375c: 697b ldr r3, [r7, #20] + 800375e: 681a ldr r2, [r3, #0] + 8003760: 210f movs r1, #15 + 8003762: 693b ldr r3, [r7, #16] + 8003764: fa01 f303 lsl.w r3, r1, r3 + 8003768: 43db mvns r3, r3 + 800376a: 401a ands r2, r3 + 800376c: 6a39 ldr r1, [r7, #32] + 800376e: 693b ldr r3, [r7, #16] + 8003770: fa01 f303 lsl.w r3, r1, r3 + 8003774: 431a orrs r2, r3 + 8003776: 697b ldr r3, [r7, #20] + 8003778: 601a str r2, [r3, #0] /*--------------------- EXTI Mode Configuration ------------------------*/ /* Configure the External Interrupt or event for the current IO */ if ((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE) - 80034da: 683b ldr r3, [r7, #0] - 80034dc: 685b ldr r3, [r3, #4] - 80034de: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 80034e2: 2b00 cmp r3, #0 - 80034e4: f000 80b1 beq.w 800364a + 800377a: 683b ldr r3, [r7, #0] + 800377c: 685b ldr r3, [r3, #4] + 800377e: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8003782: 2b00 cmp r3, #0 + 8003784: f000 80b1 beq.w 80038ea { /* Enable AFIO Clock */ __HAL_RCC_AFIO_CLK_ENABLE(); - 80034e8: 4b4d ldr r3, [pc, #308] @ (8003620 ) - 80034ea: 699b ldr r3, [r3, #24] - 80034ec: 4a4c ldr r2, [pc, #304] @ (8003620 ) - 80034ee: f043 0301 orr.w r3, r3, #1 - 80034f2: 6193 str r3, [r2, #24] - 80034f4: 4b4a ldr r3, [pc, #296] @ (8003620 ) - 80034f6: 699b ldr r3, [r3, #24] - 80034f8: f003 0301 and.w r3, r3, #1 - 80034fc: 60bb str r3, [r7, #8] - 80034fe: 68bb ldr r3, [r7, #8] + 8003788: 4b4d ldr r3, [pc, #308] @ (80038c0 ) + 800378a: 699b ldr r3, [r3, #24] + 800378c: 4a4c ldr r2, [pc, #304] @ (80038c0 ) + 800378e: f043 0301 orr.w r3, r3, #1 + 8003792: 6193 str r3, [r2, #24] + 8003794: 4b4a ldr r3, [pc, #296] @ (80038c0 ) + 8003796: 699b ldr r3, [r3, #24] + 8003798: f003 0301 and.w r3, r3, #1 + 800379c: 60bb str r3, [r7, #8] + 800379e: 68bb ldr r3, [r7, #8] temp = AFIO->EXTICR[position >> 2u]; - 8003500: 4a48 ldr r2, [pc, #288] @ (8003624 ) - 8003502: 6a7b ldr r3, [r7, #36] @ 0x24 - 8003504: 089b lsrs r3, r3, #2 - 8003506: 3302 adds r3, #2 - 8003508: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 800350c: 60fb str r3, [r7, #12] + 80037a0: 4a48 ldr r2, [pc, #288] @ (80038c4 ) + 80037a2: 6a7b ldr r3, [r7, #36] @ 0x24 + 80037a4: 089b lsrs r3, r3, #2 + 80037a6: 3302 adds r3, #2 + 80037a8: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 80037ac: 60fb str r3, [r7, #12] CLEAR_BIT(temp, (0x0Fu) << (4u * (position & 0x03u))); - 800350e: 6a7b ldr r3, [r7, #36] @ 0x24 - 8003510: f003 0303 and.w r3, r3, #3 - 8003514: 009b lsls r3, r3, #2 - 8003516: 220f movs r2, #15 - 8003518: fa02 f303 lsl.w r3, r2, r3 - 800351c: 43db mvns r3, r3 - 800351e: 68fa ldr r2, [r7, #12] - 8003520: 4013 ands r3, r2 - 8003522: 60fb str r3, [r7, #12] + 80037ae: 6a7b ldr r3, [r7, #36] @ 0x24 + 80037b0: f003 0303 and.w r3, r3, #3 + 80037b4: 009b lsls r3, r3, #2 + 80037b6: 220f movs r2, #15 + 80037b8: fa02 f303 lsl.w r3, r2, r3 + 80037bc: 43db mvns r3, r3 + 80037be: 68fa ldr r2, [r7, #12] + 80037c0: 4013 ands r3, r2 + 80037c2: 60fb str r3, [r7, #12] SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4u * (position & 0x03u))); - 8003524: 687b ldr r3, [r7, #4] - 8003526: 4a40 ldr r2, [pc, #256] @ (8003628 ) - 8003528: 4293 cmp r3, r2 - 800352a: d013 beq.n 8003554 - 800352c: 687b ldr r3, [r7, #4] - 800352e: 4a3f ldr r2, [pc, #252] @ (800362c ) - 8003530: 4293 cmp r3, r2 - 8003532: d00d beq.n 8003550 - 8003534: 687b ldr r3, [r7, #4] - 8003536: 4a3e ldr r2, [pc, #248] @ (8003630 ) - 8003538: 4293 cmp r3, r2 - 800353a: d007 beq.n 800354c - 800353c: 687b ldr r3, [r7, #4] - 800353e: 4a3d ldr r2, [pc, #244] @ (8003634 ) - 8003540: 4293 cmp r3, r2 - 8003542: d101 bne.n 8003548 - 8003544: 2303 movs r3, #3 - 8003546: e006 b.n 8003556 - 8003548: 2304 movs r3, #4 - 800354a: e004 b.n 8003556 - 800354c: 2302 movs r3, #2 - 800354e: e002 b.n 8003556 - 8003550: 2301 movs r3, #1 - 8003552: e000 b.n 8003556 - 8003554: 2300 movs r3, #0 - 8003556: 6a7a ldr r2, [r7, #36] @ 0x24 - 8003558: f002 0203 and.w r2, r2, #3 - 800355c: 0092 lsls r2, r2, #2 - 800355e: 4093 lsls r3, r2 - 8003560: 68fa ldr r2, [r7, #12] - 8003562: 4313 orrs r3, r2 - 8003564: 60fb str r3, [r7, #12] + 80037c4: 687b ldr r3, [r7, #4] + 80037c6: 4a40 ldr r2, [pc, #256] @ (80038c8 ) + 80037c8: 4293 cmp r3, r2 + 80037ca: d013 beq.n 80037f4 + 80037cc: 687b ldr r3, [r7, #4] + 80037ce: 4a3f ldr r2, [pc, #252] @ (80038cc ) + 80037d0: 4293 cmp r3, r2 + 80037d2: d00d beq.n 80037f0 + 80037d4: 687b ldr r3, [r7, #4] + 80037d6: 4a3e ldr r2, [pc, #248] @ (80038d0 ) + 80037d8: 4293 cmp r3, r2 + 80037da: d007 beq.n 80037ec + 80037dc: 687b ldr r3, [r7, #4] + 80037de: 4a3d ldr r2, [pc, #244] @ (80038d4 ) + 80037e0: 4293 cmp r3, r2 + 80037e2: d101 bne.n 80037e8 + 80037e4: 2303 movs r3, #3 + 80037e6: e006 b.n 80037f6 + 80037e8: 2304 movs r3, #4 + 80037ea: e004 b.n 80037f6 + 80037ec: 2302 movs r3, #2 + 80037ee: e002 b.n 80037f6 + 80037f0: 2301 movs r3, #1 + 80037f2: e000 b.n 80037f6 + 80037f4: 2300 movs r3, #0 + 80037f6: 6a7a ldr r2, [r7, #36] @ 0x24 + 80037f8: f002 0203 and.w r2, r2, #3 + 80037fc: 0092 lsls r2, r2, #2 + 80037fe: 4093 lsls r3, r2 + 8003800: 68fa ldr r2, [r7, #12] + 8003802: 4313 orrs r3, r2 + 8003804: 60fb str r3, [r7, #12] AFIO->EXTICR[position >> 2u] = temp; - 8003566: 492f ldr r1, [pc, #188] @ (8003624 ) - 8003568: 6a7b ldr r3, [r7, #36] @ 0x24 - 800356a: 089b lsrs r3, r3, #2 - 800356c: 3302 adds r3, #2 - 800356e: 68fa ldr r2, [r7, #12] - 8003570: f841 2023 str.w r2, [r1, r3, lsl #2] + 8003806: 492f ldr r1, [pc, #188] @ (80038c4 ) + 8003808: 6a7b ldr r3, [r7, #36] @ 0x24 + 800380a: 089b lsrs r3, r3, #2 + 800380c: 3302 adds r3, #2 + 800380e: 68fa ldr r2, [r7, #12] + 8003810: f841 2023 str.w r2, [r1, r3, lsl #2] /* Enable or disable the rising trigger */ if ((GPIO_Init->Mode & RISING_EDGE) == RISING_EDGE) - 8003574: 683b ldr r3, [r7, #0] - 8003576: 685b ldr r3, [r3, #4] - 8003578: f403 1380 and.w r3, r3, #1048576 @ 0x100000 - 800357c: 2b00 cmp r3, #0 - 800357e: d006 beq.n 800358e + 8003814: 683b ldr r3, [r7, #0] + 8003816: 685b ldr r3, [r3, #4] + 8003818: f403 1380 and.w r3, r3, #1048576 @ 0x100000 + 800381c: 2b00 cmp r3, #0 + 800381e: d006 beq.n 800382e { SET_BIT(EXTI->RTSR, iocurrent); - 8003580: 4b2d ldr r3, [pc, #180] @ (8003638 ) - 8003582: 689a ldr r2, [r3, #8] - 8003584: 492c ldr r1, [pc, #176] @ (8003638 ) - 8003586: 69bb ldr r3, [r7, #24] - 8003588: 4313 orrs r3, r2 - 800358a: 608b str r3, [r1, #8] - 800358c: e006 b.n 800359c + 8003820: 4b2d ldr r3, [pc, #180] @ (80038d8 ) + 8003822: 689a ldr r2, [r3, #8] + 8003824: 492c ldr r1, [pc, #176] @ (80038d8 ) + 8003826: 69bb ldr r3, [r7, #24] + 8003828: 4313 orrs r3, r2 + 800382a: 608b str r3, [r1, #8] + 800382c: e006 b.n 800383c } else { CLEAR_BIT(EXTI->RTSR, iocurrent); - 800358e: 4b2a ldr r3, [pc, #168] @ (8003638 ) - 8003590: 689a ldr r2, [r3, #8] - 8003592: 69bb ldr r3, [r7, #24] - 8003594: 43db mvns r3, r3 - 8003596: 4928 ldr r1, [pc, #160] @ (8003638 ) - 8003598: 4013 ands r3, r2 - 800359a: 608b str r3, [r1, #8] + 800382e: 4b2a ldr r3, [pc, #168] @ (80038d8 ) + 8003830: 689a ldr r2, [r3, #8] + 8003832: 69bb ldr r3, [r7, #24] + 8003834: 43db mvns r3, r3 + 8003836: 4928 ldr r1, [pc, #160] @ (80038d8 ) + 8003838: 4013 ands r3, r2 + 800383a: 608b str r3, [r1, #8] } /* Enable or disable the falling trigger */ if ((GPIO_Init->Mode & FALLING_EDGE) == FALLING_EDGE) - 800359c: 683b ldr r3, [r7, #0] - 800359e: 685b ldr r3, [r3, #4] - 80035a0: f403 1300 and.w r3, r3, #2097152 @ 0x200000 - 80035a4: 2b00 cmp r3, #0 - 80035a6: d006 beq.n 80035b6 + 800383c: 683b ldr r3, [r7, #0] + 800383e: 685b ldr r3, [r3, #4] + 8003840: f403 1300 and.w r3, r3, #2097152 @ 0x200000 + 8003844: 2b00 cmp r3, #0 + 8003846: d006 beq.n 8003856 { SET_BIT(EXTI->FTSR, iocurrent); - 80035a8: 4b23 ldr r3, [pc, #140] @ (8003638 ) - 80035aa: 68da ldr r2, [r3, #12] - 80035ac: 4922 ldr r1, [pc, #136] @ (8003638 ) - 80035ae: 69bb ldr r3, [r7, #24] - 80035b0: 4313 orrs r3, r2 - 80035b2: 60cb str r3, [r1, #12] - 80035b4: e006 b.n 80035c4 + 8003848: 4b23 ldr r3, [pc, #140] @ (80038d8 ) + 800384a: 68da ldr r2, [r3, #12] + 800384c: 4922 ldr r1, [pc, #136] @ (80038d8 ) + 800384e: 69bb ldr r3, [r7, #24] + 8003850: 4313 orrs r3, r2 + 8003852: 60cb str r3, [r1, #12] + 8003854: e006 b.n 8003864 } else { CLEAR_BIT(EXTI->FTSR, iocurrent); - 80035b6: 4b20 ldr r3, [pc, #128] @ (8003638 ) - 80035b8: 68da ldr r2, [r3, #12] - 80035ba: 69bb ldr r3, [r7, #24] - 80035bc: 43db mvns r3, r3 - 80035be: 491e ldr r1, [pc, #120] @ (8003638 ) - 80035c0: 4013 ands r3, r2 - 80035c2: 60cb str r3, [r1, #12] + 8003856: 4b20 ldr r3, [pc, #128] @ (80038d8 ) + 8003858: 68da ldr r2, [r3, #12] + 800385a: 69bb ldr r3, [r7, #24] + 800385c: 43db mvns r3, r3 + 800385e: 491e ldr r1, [pc, #120] @ (80038d8 ) + 8003860: 4013 ands r3, r2 + 8003862: 60cb str r3, [r1, #12] } /* Configure the event mask */ if ((GPIO_Init->Mode & GPIO_MODE_EVT) == GPIO_MODE_EVT) - 80035c4: 683b ldr r3, [r7, #0] - 80035c6: 685b ldr r3, [r3, #4] - 80035c8: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 80035cc: 2b00 cmp r3, #0 - 80035ce: d006 beq.n 80035de + 8003864: 683b ldr r3, [r7, #0] + 8003866: 685b ldr r3, [r3, #4] + 8003868: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 800386c: 2b00 cmp r3, #0 + 800386e: d006 beq.n 800387e { SET_BIT(EXTI->EMR, iocurrent); - 80035d0: 4b19 ldr r3, [pc, #100] @ (8003638 ) - 80035d2: 685a ldr r2, [r3, #4] - 80035d4: 4918 ldr r1, [pc, #96] @ (8003638 ) - 80035d6: 69bb ldr r3, [r7, #24] - 80035d8: 4313 orrs r3, r2 - 80035da: 604b str r3, [r1, #4] - 80035dc: e006 b.n 80035ec + 8003870: 4b19 ldr r3, [pc, #100] @ (80038d8 ) + 8003872: 685a ldr r2, [r3, #4] + 8003874: 4918 ldr r1, [pc, #96] @ (80038d8 ) + 8003876: 69bb ldr r3, [r7, #24] + 8003878: 4313 orrs r3, r2 + 800387a: 604b str r3, [r1, #4] + 800387c: e006 b.n 800388c } else { CLEAR_BIT(EXTI->EMR, iocurrent); - 80035de: 4b16 ldr r3, [pc, #88] @ (8003638 ) - 80035e0: 685a ldr r2, [r3, #4] - 80035e2: 69bb ldr r3, [r7, #24] - 80035e4: 43db mvns r3, r3 - 80035e6: 4914 ldr r1, [pc, #80] @ (8003638 ) - 80035e8: 4013 ands r3, r2 - 80035ea: 604b str r3, [r1, #4] + 800387e: 4b16 ldr r3, [pc, #88] @ (80038d8 ) + 8003880: 685a ldr r2, [r3, #4] + 8003882: 69bb ldr r3, [r7, #24] + 8003884: 43db mvns r3, r3 + 8003886: 4914 ldr r1, [pc, #80] @ (80038d8 ) + 8003888: 4013 ands r3, r2 + 800388a: 604b str r3, [r1, #4] } /* Configure the interrupt mask */ if ((GPIO_Init->Mode & GPIO_MODE_IT) == GPIO_MODE_IT) - 80035ec: 683b ldr r3, [r7, #0] - 80035ee: 685b ldr r3, [r3, #4] - 80035f0: f403 3380 and.w r3, r3, #65536 @ 0x10000 - 80035f4: 2b00 cmp r3, #0 - 80035f6: d021 beq.n 800363c + 800388c: 683b ldr r3, [r7, #0] + 800388e: 685b ldr r3, [r3, #4] + 8003890: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8003894: 2b00 cmp r3, #0 + 8003896: d021 beq.n 80038dc { SET_BIT(EXTI->IMR, iocurrent); - 80035f8: 4b0f ldr r3, [pc, #60] @ (8003638 ) - 80035fa: 681a ldr r2, [r3, #0] - 80035fc: 490e ldr r1, [pc, #56] @ (8003638 ) - 80035fe: 69bb ldr r3, [r7, #24] - 8003600: 4313 orrs r3, r2 - 8003602: 600b str r3, [r1, #0] - 8003604: e021 b.n 800364a - 8003606: bf00 nop - 8003608: 10320000 .word 0x10320000 - 800360c: 10310000 .word 0x10310000 - 8003610: 10220000 .word 0x10220000 - 8003614: 10210000 .word 0x10210000 - 8003618: 10120000 .word 0x10120000 - 800361c: 10110000 .word 0x10110000 - 8003620: 40021000 .word 0x40021000 - 8003624: 40010000 .word 0x40010000 - 8003628: 40010800 .word 0x40010800 - 800362c: 40010c00 .word 0x40010c00 - 8003630: 40011000 .word 0x40011000 - 8003634: 40011400 .word 0x40011400 - 8003638: 40010400 .word 0x40010400 + 8003898: 4b0f ldr r3, [pc, #60] @ (80038d8 ) + 800389a: 681a ldr r2, [r3, #0] + 800389c: 490e ldr r1, [pc, #56] @ (80038d8 ) + 800389e: 69bb ldr r3, [r7, #24] + 80038a0: 4313 orrs r3, r2 + 80038a2: 600b str r3, [r1, #0] + 80038a4: e021 b.n 80038ea + 80038a6: bf00 nop + 80038a8: 10320000 .word 0x10320000 + 80038ac: 10310000 .word 0x10310000 + 80038b0: 10220000 .word 0x10220000 + 80038b4: 10210000 .word 0x10210000 + 80038b8: 10120000 .word 0x10120000 + 80038bc: 10110000 .word 0x10110000 + 80038c0: 40021000 .word 0x40021000 + 80038c4: 40010000 .word 0x40010000 + 80038c8: 40010800 .word 0x40010800 + 80038cc: 40010c00 .word 0x40010c00 + 80038d0: 40011000 .word 0x40011000 + 80038d4: 40011400 .word 0x40011400 + 80038d8: 40010400 .word 0x40010400 } else { CLEAR_BIT(EXTI->IMR, iocurrent); - 800363c: 4b0b ldr r3, [pc, #44] @ (800366c ) - 800363e: 681a ldr r2, [r3, #0] - 8003640: 69bb ldr r3, [r7, #24] - 8003642: 43db mvns r3, r3 - 8003644: 4909 ldr r1, [pc, #36] @ (800366c ) - 8003646: 4013 ands r3, r2 - 8003648: 600b str r3, [r1, #0] + 80038dc: 4b0b ldr r3, [pc, #44] @ (800390c ) + 80038de: 681a ldr r2, [r3, #0] + 80038e0: 69bb ldr r3, [r7, #24] + 80038e2: 43db mvns r3, r3 + 80038e4: 4909 ldr r1, [pc, #36] @ (800390c ) + 80038e6: 4013 ands r3, r2 + 80038e8: 600b str r3, [r1, #0] } } } position++; - 800364a: 6a7b ldr r3, [r7, #36] @ 0x24 - 800364c: 3301 adds r3, #1 - 800364e: 627b str r3, [r7, #36] @ 0x24 + 80038ea: 6a7b ldr r3, [r7, #36] @ 0x24 + 80038ec: 3301 adds r3, #1 + 80038ee: 627b str r3, [r7, #36] @ 0x24 while (((GPIO_Init->Pin) >> position) != 0x00u) - 8003650: 683b ldr r3, [r7, #0] - 8003652: 681a ldr r2, [r3, #0] - 8003654: 6a7b ldr r3, [r7, #36] @ 0x24 - 8003656: fa22 f303 lsr.w r3, r2, r3 - 800365a: 2b00 cmp r3, #0 - 800365c: f47f ae8e bne.w 800337c + 80038f0: 683b ldr r3, [r7, #0] + 80038f2: 681a ldr r2, [r3, #0] + 80038f4: 6a7b ldr r3, [r7, #36] @ 0x24 + 80038f6: fa22 f303 lsr.w r3, r2, r3 + 80038fa: 2b00 cmp r3, #0 + 80038fc: f47f ae8e bne.w 800361c } } - 8003660: bf00 nop - 8003662: bf00 nop - 8003664: 372c adds r7, #44 @ 0x2c - 8003666: 46bd mov sp, r7 - 8003668: bc80 pop {r7} - 800366a: 4770 bx lr - 800366c: 40010400 .word 0x40010400 + 8003900: bf00 nop + 8003902: bf00 nop + 8003904: 372c adds r7, #44 @ 0x2c + 8003906: 46bd mov sp, r7 + 8003908: bc80 pop {r7} + 800390a: 4770 bx lr + 800390c: 40010400 .word 0x40010400 -08003670 : +08003910 : * @param GPIO_Pin: specifies the port bit to read. * This parameter can be GPIO_PIN_x where x can be (0..15). * @retval The input port pin value. */ GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) { - 8003670: b480 push {r7} - 8003672: b085 sub sp, #20 - 8003674: af00 add r7, sp, #0 - 8003676: 6078 str r0, [r7, #4] - 8003678: 460b mov r3, r1 - 800367a: 807b strh r3, [r7, #2] + 8003910: b480 push {r7} + 8003912: b085 sub sp, #20 + 8003914: af00 add r7, sp, #0 + 8003916: 6078 str r0, [r7, #4] + 8003918: 460b mov r3, r1 + 800391a: 807b strh r3, [r7, #2] GPIO_PinState bitstatus; /* Check the parameters */ assert_param(IS_GPIO_PIN(GPIO_Pin)); if ((GPIOx->IDR & GPIO_Pin) != (uint32_t)GPIO_PIN_RESET) - 800367c: 687b ldr r3, [r7, #4] - 800367e: 689a ldr r2, [r3, #8] - 8003680: 887b ldrh r3, [r7, #2] - 8003682: 4013 ands r3, r2 - 8003684: 2b00 cmp r3, #0 - 8003686: d002 beq.n 800368e + 800391c: 687b ldr r3, [r7, #4] + 800391e: 689a ldr r2, [r3, #8] + 8003920: 887b ldrh r3, [r7, #2] + 8003922: 4013 ands r3, r2 + 8003924: 2b00 cmp r3, #0 + 8003926: d002 beq.n 800392e { bitstatus = GPIO_PIN_SET; - 8003688: 2301 movs r3, #1 - 800368a: 73fb strb r3, [r7, #15] - 800368c: e001 b.n 8003692 + 8003928: 2301 movs r3, #1 + 800392a: 73fb strb r3, [r7, #15] + 800392c: e001 b.n 8003932 } else { bitstatus = GPIO_PIN_RESET; - 800368e: 2300 movs r3, #0 - 8003690: 73fb strb r3, [r7, #15] + 800392e: 2300 movs r3, #0 + 8003930: 73fb strb r3, [r7, #15] } return bitstatus; - 8003692: 7bfb ldrb r3, [r7, #15] + 8003932: 7bfb ldrb r3, [r7, #15] } - 8003694: 4618 mov r0, r3 - 8003696: 3714 adds r7, #20 - 8003698: 46bd mov sp, r7 - 800369a: bc80 pop {r7} - 800369c: 4770 bx lr + 8003934: 4618 mov r0, r3 + 8003936: 3714 adds r7, #20 + 8003938: 46bd mov sp, r7 + 800393a: bc80 pop {r7} + 800393c: 4770 bx lr -0800369e : +0800393e : * @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) { - 800369e: b480 push {r7} - 80036a0: b083 sub sp, #12 - 80036a2: af00 add r7, sp, #0 - 80036a4: 6078 str r0, [r7, #4] - 80036a6: 460b mov r3, r1 - 80036a8: 807b strh r3, [r7, #2] - 80036aa: 4613 mov r3, r2 - 80036ac: 707b strb r3, [r7, #1] + 800393e: b480 push {r7} + 8003940: b083 sub sp, #12 + 8003942: af00 add r7, sp, #0 + 8003944: 6078 str r0, [r7, #4] + 8003946: 460b mov r3, r1 + 8003948: 807b strh r3, [r7, #2] + 800394a: 4613 mov r3, r2 + 800394c: 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) - 80036ae: 787b ldrb r3, [r7, #1] - 80036b0: 2b00 cmp r3, #0 - 80036b2: d003 beq.n 80036bc + 800394e: 787b ldrb r3, [r7, #1] + 8003950: 2b00 cmp r3, #0 + 8003952: d003 beq.n 800395c { GPIOx->BSRR = GPIO_Pin; - 80036b4: 887a ldrh r2, [r7, #2] - 80036b6: 687b ldr r3, [r7, #4] - 80036b8: 611a str r2, [r3, #16] + 8003954: 887a ldrh r2, [r7, #2] + 8003956: 687b ldr r3, [r7, #4] + 8003958: 611a str r2, [r3, #16] } else { GPIOx->BSRR = (uint32_t)GPIO_Pin << 16u; } } - 80036ba: e003 b.n 80036c4 + 800395a: e003 b.n 8003964 GPIOx->BSRR = (uint32_t)GPIO_Pin << 16u; - 80036bc: 887b ldrh r3, [r7, #2] - 80036be: 041a lsls r2, r3, #16 - 80036c0: 687b ldr r3, [r7, #4] - 80036c2: 611a str r2, [r3, #16] + 800395c: 887b ldrh r3, [r7, #2] + 800395e: 041a lsls r2, r3, #16 + 8003960: 687b ldr r3, [r7, #4] + 8003962: 611a str r2, [r3, #16] } - 80036c4: bf00 nop - 80036c6: 370c adds r7, #12 - 80036c8: 46bd mov sp, r7 - 80036ca: bc80 pop {r7} - 80036cc: 4770 bx lr + 8003964: bf00 nop + 8003966: 370c adds r7, #12 + 8003968: 46bd mov sp, r7 + 800396a: bc80 pop {r7} + 800396c: 4770 bx lr -080036ce : +0800396e : * @param GPIOx: where x can be (A..G depending on device used) to select the GPIO peripheral * @param GPIO_Pin: Specifies the pins to be toggled. * @retval None */ void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) { - 80036ce: b480 push {r7} - 80036d0: b085 sub sp, #20 - 80036d2: af00 add r7, sp, #0 - 80036d4: 6078 str r0, [r7, #4] - 80036d6: 460b mov r3, r1 - 80036d8: 807b strh r3, [r7, #2] + 800396e: b480 push {r7} + 8003970: b085 sub sp, #20 + 8003972: af00 add r7, sp, #0 + 8003974: 6078 str r0, [r7, #4] + 8003976: 460b mov r3, r1 + 8003978: 807b strh r3, [r7, #2] /* Check the parameters */ assert_param(IS_GPIO_PIN(GPIO_Pin)); /* get current Output Data Register value */ odr = GPIOx->ODR; - 80036da: 687b ldr r3, [r7, #4] - 80036dc: 68db ldr r3, [r3, #12] - 80036de: 60fb str r3, [r7, #12] + 800397a: 687b ldr r3, [r7, #4] + 800397c: 68db ldr r3, [r3, #12] + 800397e: 60fb str r3, [r7, #12] /* Set selected pins that were at low level, and reset ones that were high */ GPIOx->BSRR = ((odr & GPIO_Pin) << GPIO_NUMBER) | (~odr & GPIO_Pin); - 80036e0: 887a ldrh r2, [r7, #2] - 80036e2: 68fb ldr r3, [r7, #12] - 80036e4: 4013 ands r3, r2 - 80036e6: 041a lsls r2, r3, #16 - 80036e8: 68fb ldr r3, [r7, #12] - 80036ea: 43d9 mvns r1, r3 - 80036ec: 887b ldrh r3, [r7, #2] - 80036ee: 400b ands r3, r1 - 80036f0: 431a orrs r2, r3 - 80036f2: 687b ldr r3, [r7, #4] - 80036f4: 611a str r2, [r3, #16] + 8003980: 887a ldrh r2, [r7, #2] + 8003982: 68fb ldr r3, [r7, #12] + 8003984: 4013 ands r3, r2 + 8003986: 041a lsls r2, r3, #16 + 8003988: 68fb ldr r3, [r7, #12] + 800398a: 43d9 mvns r1, r3 + 800398c: 887b ldrh r3, [r7, #2] + 800398e: 400b ands r3, r1 + 8003990: 431a orrs r2, r3 + 8003992: 687b ldr r3, [r7, #4] + 8003994: 611a str r2, [r3, #16] } - 80036f6: bf00 nop - 80036f8: 3714 adds r7, #20 - 80036fa: 46bd mov sp, r7 - 80036fc: bc80 pop {r7} - 80036fe: 4770 bx lr + 8003996: bf00 nop + 8003998: 3714 adds r7, #20 + 800399a: 46bd mov sp, r7 + 800399c: bc80 pop {r7} + 800399e: 4770 bx lr -08003700 : +080039a0 : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval HAL status */ HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c) { - 8003700: b580 push {r7, lr} - 8003702: b084 sub sp, #16 - 8003704: af00 add r7, sp, #0 - 8003706: 6078 str r0, [r7, #4] + 80039a0: b580 push {r7, lr} + 80039a2: b084 sub sp, #16 + 80039a4: af00 add r7, sp, #0 + 80039a6: 6078 str r0, [r7, #4] uint32_t freqrange; uint32_t pclk1; /* Check the I2C handle allocation */ if (hi2c == NULL) - 8003708: 687b ldr r3, [r7, #4] - 800370a: 2b00 cmp r3, #0 - 800370c: d101 bne.n 8003712 + 80039a8: 687b ldr r3, [r7, #4] + 80039aa: 2b00 cmp r3, #0 + 80039ac: d101 bne.n 80039b2 { return HAL_ERROR; - 800370e: 2301 movs r3, #1 - 8003710: e12b b.n 800396a + 80039ae: 2301 movs r3, #1 + 80039b0: e12b b.n 8003c0a assert_param(IS_I2C_DUAL_ADDRESS(hi2c->Init.DualAddressMode)); assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2)); assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode)); assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode)); if (hi2c->State == HAL_I2C_STATE_RESET) - 8003712: 687b ldr r3, [r7, #4] - 8003714: f893 303d ldrb.w r3, [r3, #61] @ 0x3d - 8003718: b2db uxtb r3, r3 - 800371a: 2b00 cmp r3, #0 - 800371c: d106 bne.n 800372c + 80039b2: 687b ldr r3, [r7, #4] + 80039b4: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 80039b8: b2db uxtb r3, r3 + 80039ba: 2b00 cmp r3, #0 + 80039bc: d106 bne.n 80039cc { /* Allocate lock resource and initialize it */ hi2c->Lock = HAL_UNLOCKED; - 800371e: 687b ldr r3, [r7, #4] - 8003720: 2200 movs r2, #0 - 8003722: f883 203c strb.w r2, [r3, #60] @ 0x3c + 80039be: 687b ldr r3, [r7, #4] + 80039c0: 2200 movs r2, #0 + 80039c2: f883 203c strb.w r2, [r3, #60] @ 0x3c /* Init the low level hardware : GPIO, CLOCK, NVIC */ hi2c->MspInitCallback(hi2c); #else /* Init the low level hardware : GPIO, CLOCK, NVIC */ HAL_I2C_MspInit(hi2c); - 8003726: 6878 ldr r0, [r7, #4] - 8003728: f7fe fbf6 bl 8001f18 + 80039c6: 6878 ldr r0, [r7, #4] + 80039c8: f7fe fb58 bl 800207c #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ } hi2c->State = HAL_I2C_STATE_BUSY; - 800372c: 687b ldr r3, [r7, #4] - 800372e: 2224 movs r2, #36 @ 0x24 - 8003730: f883 203d strb.w r2, [r3, #61] @ 0x3d + 80039cc: 687b ldr r3, [r7, #4] + 80039ce: 2224 movs r2, #36 @ 0x24 + 80039d0: f883 203d strb.w r2, [r3, #61] @ 0x3d /* Disable the selected I2C peripheral */ __HAL_I2C_DISABLE(hi2c); - 8003734: 687b ldr r3, [r7, #4] - 8003736: 681b ldr r3, [r3, #0] - 8003738: 681a ldr r2, [r3, #0] - 800373a: 687b ldr r3, [r7, #4] - 800373c: 681b ldr r3, [r3, #0] - 800373e: f022 0201 bic.w r2, r2, #1 - 8003742: 601a str r2, [r3, #0] + 80039d4: 687b ldr r3, [r7, #4] + 80039d6: 681b ldr r3, [r3, #0] + 80039d8: 681a ldr r2, [r3, #0] + 80039da: 687b ldr r3, [r7, #4] + 80039dc: 681b ldr r3, [r3, #0] + 80039de: f022 0201 bic.w r2, r2, #1 + 80039e2: 601a str r2, [r3, #0] /*Reset I2C*/ hi2c->Instance->CR1 |= I2C_CR1_SWRST; - 8003744: 687b ldr r3, [r7, #4] - 8003746: 681b ldr r3, [r3, #0] - 8003748: 681a ldr r2, [r3, #0] - 800374a: 687b ldr r3, [r7, #4] - 800374c: 681b ldr r3, [r3, #0] - 800374e: f442 4200 orr.w r2, r2, #32768 @ 0x8000 - 8003752: 601a str r2, [r3, #0] + 80039e4: 687b ldr r3, [r7, #4] + 80039e6: 681b ldr r3, [r3, #0] + 80039e8: 681a ldr r2, [r3, #0] + 80039ea: 687b ldr r3, [r7, #4] + 80039ec: 681b ldr r3, [r3, #0] + 80039ee: f442 4200 orr.w r2, r2, #32768 @ 0x8000 + 80039f2: 601a str r2, [r3, #0] hi2c->Instance->CR1 &= ~I2C_CR1_SWRST; - 8003754: 687b ldr r3, [r7, #4] - 8003756: 681b ldr r3, [r3, #0] - 8003758: 681a ldr r2, [r3, #0] - 800375a: 687b ldr r3, [r7, #4] - 800375c: 681b ldr r3, [r3, #0] - 800375e: f422 4200 bic.w r2, r2, #32768 @ 0x8000 - 8003762: 601a str r2, [r3, #0] + 80039f4: 687b ldr r3, [r7, #4] + 80039f6: 681b ldr r3, [r3, #0] + 80039f8: 681a ldr r2, [r3, #0] + 80039fa: 687b ldr r3, [r7, #4] + 80039fc: 681b ldr r3, [r3, #0] + 80039fe: f422 4200 bic.w r2, r2, #32768 @ 0x8000 + 8003a02: 601a str r2, [r3, #0] /* Get PCLK1 frequency */ pclk1 = HAL_RCC_GetPCLK1Freq(); - 8003764: f001 fbcc bl 8004f00 - 8003768: 60f8 str r0, [r7, #12] + 8003a04: f001 fbcc bl 80051a0 + 8003a08: 60f8 str r0, [r7, #12] /* Check the minimum allowed PCLK1 frequency */ if (I2C_MIN_PCLK_FREQ(pclk1, hi2c->Init.ClockSpeed) == 1U) - 800376a: 687b ldr r3, [r7, #4] - 800376c: 685b ldr r3, [r3, #4] - 800376e: 4a81 ldr r2, [pc, #516] @ (8003974 ) - 8003770: 4293 cmp r3, r2 - 8003772: d807 bhi.n 8003784 - 8003774: 68fb ldr r3, [r7, #12] - 8003776: 4a80 ldr r2, [pc, #512] @ (8003978 ) - 8003778: 4293 cmp r3, r2 - 800377a: bf94 ite ls - 800377c: 2301 movls r3, #1 - 800377e: 2300 movhi r3, #0 - 8003780: b2db uxtb r3, r3 - 8003782: e006 b.n 8003792 - 8003784: 68fb ldr r3, [r7, #12] - 8003786: 4a7d ldr r2, [pc, #500] @ (800397c ) - 8003788: 4293 cmp r3, r2 - 800378a: bf94 ite ls - 800378c: 2301 movls r3, #1 - 800378e: 2300 movhi r3, #0 - 8003790: b2db uxtb r3, r3 - 8003792: 2b00 cmp r3, #0 - 8003794: d001 beq.n 800379a + 8003a0a: 687b ldr r3, [r7, #4] + 8003a0c: 685b ldr r3, [r3, #4] + 8003a0e: 4a81 ldr r2, [pc, #516] @ (8003c14 ) + 8003a10: 4293 cmp r3, r2 + 8003a12: d807 bhi.n 8003a24 + 8003a14: 68fb ldr r3, [r7, #12] + 8003a16: 4a80 ldr r2, [pc, #512] @ (8003c18 ) + 8003a18: 4293 cmp r3, r2 + 8003a1a: bf94 ite ls + 8003a1c: 2301 movls r3, #1 + 8003a1e: 2300 movhi r3, #0 + 8003a20: b2db uxtb r3, r3 + 8003a22: e006 b.n 8003a32 + 8003a24: 68fb ldr r3, [r7, #12] + 8003a26: 4a7d ldr r2, [pc, #500] @ (8003c1c ) + 8003a28: 4293 cmp r3, r2 + 8003a2a: bf94 ite ls + 8003a2c: 2301 movls r3, #1 + 8003a2e: 2300 movhi r3, #0 + 8003a30: b2db uxtb r3, r3 + 8003a32: 2b00 cmp r3, #0 + 8003a34: d001 beq.n 8003a3a { return HAL_ERROR; - 8003796: 2301 movs r3, #1 - 8003798: e0e7 b.n 800396a + 8003a36: 2301 movs r3, #1 + 8003a38: e0e7 b.n 8003c0a } /* Calculate frequency range */ freqrange = I2C_FREQRANGE(pclk1); - 800379a: 68fb ldr r3, [r7, #12] - 800379c: 4a78 ldr r2, [pc, #480] @ (8003980 ) - 800379e: fba2 2303 umull r2, r3, r2, r3 - 80037a2: 0c9b lsrs r3, r3, #18 - 80037a4: 60bb str r3, [r7, #8] + 8003a3a: 68fb ldr r3, [r7, #12] + 8003a3c: 4a78 ldr r2, [pc, #480] @ (8003c20 ) + 8003a3e: fba2 2303 umull r2, r3, r2, r3 + 8003a42: 0c9b lsrs r3, r3, #18 + 8003a44: 60bb str r3, [r7, #8] /*---------------------------- I2Cx CR2 Configuration ----------------------*/ /* Configure I2Cx: Frequency range */ MODIFY_REG(hi2c->Instance->CR2, I2C_CR2_FREQ, freqrange); - 80037a6: 687b ldr r3, [r7, #4] - 80037a8: 681b ldr r3, [r3, #0] - 80037aa: 685b ldr r3, [r3, #4] - 80037ac: f023 013f bic.w r1, r3, #63 @ 0x3f - 80037b0: 687b ldr r3, [r7, #4] - 80037b2: 681b ldr r3, [r3, #0] - 80037b4: 68ba ldr r2, [r7, #8] - 80037b6: 430a orrs r2, r1 - 80037b8: 605a str r2, [r3, #4] + 8003a46: 687b ldr r3, [r7, #4] + 8003a48: 681b ldr r3, [r3, #0] + 8003a4a: 685b ldr r3, [r3, #4] + 8003a4c: f023 013f bic.w r1, r3, #63 @ 0x3f + 8003a50: 687b ldr r3, [r7, #4] + 8003a52: 681b ldr r3, [r3, #0] + 8003a54: 68ba ldr r2, [r7, #8] + 8003a56: 430a orrs r2, r1 + 8003a58: 605a str r2, [r3, #4] /*---------------------------- I2Cx TRISE Configuration --------------------*/ /* Configure I2Cx: Rise Time */ MODIFY_REG(hi2c->Instance->TRISE, I2C_TRISE_TRISE, I2C_RISE_TIME(freqrange, hi2c->Init.ClockSpeed)); - 80037ba: 687b ldr r3, [r7, #4] - 80037bc: 681b ldr r3, [r3, #0] - 80037be: 6a1b ldr r3, [r3, #32] - 80037c0: f023 013f bic.w r1, r3, #63 @ 0x3f - 80037c4: 687b ldr r3, [r7, #4] - 80037c6: 685b ldr r3, [r3, #4] - 80037c8: 4a6a ldr r2, [pc, #424] @ (8003974 ) - 80037ca: 4293 cmp r3, r2 - 80037cc: d802 bhi.n 80037d4 - 80037ce: 68bb ldr r3, [r7, #8] - 80037d0: 3301 adds r3, #1 - 80037d2: e009 b.n 80037e8 - 80037d4: 68bb ldr r3, [r7, #8] - 80037d6: f44f 7296 mov.w r2, #300 @ 0x12c - 80037da: fb02 f303 mul.w r3, r2, r3 - 80037de: 4a69 ldr r2, [pc, #420] @ (8003984 ) - 80037e0: fba2 2303 umull r2, r3, r2, r3 - 80037e4: 099b lsrs r3, r3, #6 - 80037e6: 3301 adds r3, #1 - 80037e8: 687a ldr r2, [r7, #4] - 80037ea: 6812 ldr r2, [r2, #0] - 80037ec: 430b orrs r3, r1 - 80037ee: 6213 str r3, [r2, #32] + 8003a5a: 687b ldr r3, [r7, #4] + 8003a5c: 681b ldr r3, [r3, #0] + 8003a5e: 6a1b ldr r3, [r3, #32] + 8003a60: f023 013f bic.w r1, r3, #63 @ 0x3f + 8003a64: 687b ldr r3, [r7, #4] + 8003a66: 685b ldr r3, [r3, #4] + 8003a68: 4a6a ldr r2, [pc, #424] @ (8003c14 ) + 8003a6a: 4293 cmp r3, r2 + 8003a6c: d802 bhi.n 8003a74 + 8003a6e: 68bb ldr r3, [r7, #8] + 8003a70: 3301 adds r3, #1 + 8003a72: e009 b.n 8003a88 + 8003a74: 68bb ldr r3, [r7, #8] + 8003a76: f44f 7296 mov.w r2, #300 @ 0x12c + 8003a7a: fb02 f303 mul.w r3, r2, r3 + 8003a7e: 4a69 ldr r2, [pc, #420] @ (8003c24 ) + 8003a80: fba2 2303 umull r2, r3, r2, r3 + 8003a84: 099b lsrs r3, r3, #6 + 8003a86: 3301 adds r3, #1 + 8003a88: 687a ldr r2, [r7, #4] + 8003a8a: 6812 ldr r2, [r2, #0] + 8003a8c: 430b orrs r3, r1 + 8003a8e: 6213 str r3, [r2, #32] /*---------------------------- I2Cx CCR Configuration ----------------------*/ /* Configure I2Cx: Speed */ MODIFY_REG(hi2c->Instance->CCR, (I2C_CCR_FS | I2C_CCR_DUTY | I2C_CCR_CCR), I2C_SPEED(pclk1, hi2c->Init.ClockSpeed, hi2c->Init.DutyCycle)); - 80037f0: 687b ldr r3, [r7, #4] - 80037f2: 681b ldr r3, [r3, #0] - 80037f4: 69db ldr r3, [r3, #28] - 80037f6: f423 424f bic.w r2, r3, #52992 @ 0xcf00 - 80037fa: f022 02ff bic.w r2, r2, #255 @ 0xff - 80037fe: 687b ldr r3, [r7, #4] - 8003800: 685b ldr r3, [r3, #4] - 8003802: 495c ldr r1, [pc, #368] @ (8003974 ) - 8003804: 428b cmp r3, r1 - 8003806: d819 bhi.n 800383c - 8003808: 68fb ldr r3, [r7, #12] - 800380a: 1e59 subs r1, r3, #1 - 800380c: 687b ldr r3, [r7, #4] - 800380e: 685b ldr r3, [r3, #4] - 8003810: 005b lsls r3, r3, #1 - 8003812: fbb1 f3f3 udiv r3, r1, r3 - 8003816: 1c59 adds r1, r3, #1 - 8003818: f640 73fc movw r3, #4092 @ 0xffc - 800381c: 400b ands r3, r1 - 800381e: 2b00 cmp r3, #0 - 8003820: d00a beq.n 8003838 - 8003822: 68fb ldr r3, [r7, #12] - 8003824: 1e59 subs r1, r3, #1 - 8003826: 687b ldr r3, [r7, #4] - 8003828: 685b ldr r3, [r3, #4] - 800382a: 005b lsls r3, r3, #1 - 800382c: fbb1 f3f3 udiv r3, r1, r3 - 8003830: 3301 adds r3, #1 - 8003832: f3c3 030b ubfx r3, r3, #0, #12 - 8003836: e051 b.n 80038dc - 8003838: 2304 movs r3, #4 - 800383a: e04f b.n 80038dc - 800383c: 687b ldr r3, [r7, #4] - 800383e: 689b ldr r3, [r3, #8] - 8003840: 2b00 cmp r3, #0 - 8003842: d111 bne.n 8003868 - 8003844: 68fb ldr r3, [r7, #12] - 8003846: 1e58 subs r0, r3, #1 - 8003848: 687b ldr r3, [r7, #4] - 800384a: 6859 ldr r1, [r3, #4] - 800384c: 460b mov r3, r1 - 800384e: 005b lsls r3, r3, #1 - 8003850: 440b add r3, r1 - 8003852: fbb0 f3f3 udiv r3, r0, r3 - 8003856: 3301 adds r3, #1 - 8003858: f3c3 030b ubfx r3, r3, #0, #12 - 800385c: 2b00 cmp r3, #0 - 800385e: bf0c ite eq - 8003860: 2301 moveq r3, #1 - 8003862: 2300 movne r3, #0 - 8003864: b2db uxtb r3, r3 - 8003866: e012 b.n 800388e - 8003868: 68fb ldr r3, [r7, #12] - 800386a: 1e58 subs r0, r3, #1 - 800386c: 687b ldr r3, [r7, #4] - 800386e: 6859 ldr r1, [r3, #4] - 8003870: 460b mov r3, r1 - 8003872: 009b lsls r3, r3, #2 - 8003874: 440b add r3, r1 - 8003876: 0099 lsls r1, r3, #2 - 8003878: 440b add r3, r1 - 800387a: fbb0 f3f3 udiv r3, r0, r3 - 800387e: 3301 adds r3, #1 - 8003880: f3c3 030b ubfx r3, r3, #0, #12 - 8003884: 2b00 cmp r3, #0 - 8003886: bf0c ite eq - 8003888: 2301 moveq r3, #1 - 800388a: 2300 movne r3, #0 - 800388c: b2db uxtb r3, r3 - 800388e: 2b00 cmp r3, #0 - 8003890: d001 beq.n 8003896 - 8003892: 2301 movs r3, #1 - 8003894: e022 b.n 80038dc - 8003896: 687b ldr r3, [r7, #4] - 8003898: 689b ldr r3, [r3, #8] - 800389a: 2b00 cmp r3, #0 - 800389c: d10e bne.n 80038bc - 800389e: 68fb ldr r3, [r7, #12] - 80038a0: 1e58 subs r0, r3, #1 - 80038a2: 687b ldr r3, [r7, #4] - 80038a4: 6859 ldr r1, [r3, #4] - 80038a6: 460b mov r3, r1 - 80038a8: 005b lsls r3, r3, #1 - 80038aa: 440b add r3, r1 - 80038ac: fbb0 f3f3 udiv r3, r0, r3 - 80038b0: 3301 adds r3, #1 - 80038b2: f3c3 030b ubfx r3, r3, #0, #12 - 80038b6: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 80038ba: e00f b.n 80038dc - 80038bc: 68fb ldr r3, [r7, #12] - 80038be: 1e58 subs r0, r3, #1 - 80038c0: 687b ldr r3, [r7, #4] - 80038c2: 6859 ldr r1, [r3, #4] - 80038c4: 460b mov r3, r1 - 80038c6: 009b lsls r3, r3, #2 - 80038c8: 440b add r3, r1 - 80038ca: 0099 lsls r1, r3, #2 - 80038cc: 440b add r3, r1 - 80038ce: fbb0 f3f3 udiv r3, r0, r3 - 80038d2: 3301 adds r3, #1 - 80038d4: f3c3 030b ubfx r3, r3, #0, #12 - 80038d8: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 80038dc: 6879 ldr r1, [r7, #4] - 80038de: 6809 ldr r1, [r1, #0] - 80038e0: 4313 orrs r3, r2 - 80038e2: 61cb str r3, [r1, #28] + 8003a90: 687b ldr r3, [r7, #4] + 8003a92: 681b ldr r3, [r3, #0] + 8003a94: 69db ldr r3, [r3, #28] + 8003a96: f423 424f bic.w r2, r3, #52992 @ 0xcf00 + 8003a9a: f022 02ff bic.w r2, r2, #255 @ 0xff + 8003a9e: 687b ldr r3, [r7, #4] + 8003aa0: 685b ldr r3, [r3, #4] + 8003aa2: 495c ldr r1, [pc, #368] @ (8003c14 ) + 8003aa4: 428b cmp r3, r1 + 8003aa6: d819 bhi.n 8003adc + 8003aa8: 68fb ldr r3, [r7, #12] + 8003aaa: 1e59 subs r1, r3, #1 + 8003aac: 687b ldr r3, [r7, #4] + 8003aae: 685b ldr r3, [r3, #4] + 8003ab0: 005b lsls r3, r3, #1 + 8003ab2: fbb1 f3f3 udiv r3, r1, r3 + 8003ab6: 1c59 adds r1, r3, #1 + 8003ab8: f640 73fc movw r3, #4092 @ 0xffc + 8003abc: 400b ands r3, r1 + 8003abe: 2b00 cmp r3, #0 + 8003ac0: d00a beq.n 8003ad8 + 8003ac2: 68fb ldr r3, [r7, #12] + 8003ac4: 1e59 subs r1, r3, #1 + 8003ac6: 687b ldr r3, [r7, #4] + 8003ac8: 685b ldr r3, [r3, #4] + 8003aca: 005b lsls r3, r3, #1 + 8003acc: fbb1 f3f3 udiv r3, r1, r3 + 8003ad0: 3301 adds r3, #1 + 8003ad2: f3c3 030b ubfx r3, r3, #0, #12 + 8003ad6: e051 b.n 8003b7c + 8003ad8: 2304 movs r3, #4 + 8003ada: e04f b.n 8003b7c + 8003adc: 687b ldr r3, [r7, #4] + 8003ade: 689b ldr r3, [r3, #8] + 8003ae0: 2b00 cmp r3, #0 + 8003ae2: d111 bne.n 8003b08 + 8003ae4: 68fb ldr r3, [r7, #12] + 8003ae6: 1e58 subs r0, r3, #1 + 8003ae8: 687b ldr r3, [r7, #4] + 8003aea: 6859 ldr r1, [r3, #4] + 8003aec: 460b mov r3, r1 + 8003aee: 005b lsls r3, r3, #1 + 8003af0: 440b add r3, r1 + 8003af2: fbb0 f3f3 udiv r3, r0, r3 + 8003af6: 3301 adds r3, #1 + 8003af8: f3c3 030b ubfx r3, r3, #0, #12 + 8003afc: 2b00 cmp r3, #0 + 8003afe: bf0c ite eq + 8003b00: 2301 moveq r3, #1 + 8003b02: 2300 movne r3, #0 + 8003b04: b2db uxtb r3, r3 + 8003b06: e012 b.n 8003b2e + 8003b08: 68fb ldr r3, [r7, #12] + 8003b0a: 1e58 subs r0, r3, #1 + 8003b0c: 687b ldr r3, [r7, #4] + 8003b0e: 6859 ldr r1, [r3, #4] + 8003b10: 460b mov r3, r1 + 8003b12: 009b lsls r3, r3, #2 + 8003b14: 440b add r3, r1 + 8003b16: 0099 lsls r1, r3, #2 + 8003b18: 440b add r3, r1 + 8003b1a: fbb0 f3f3 udiv r3, r0, r3 + 8003b1e: 3301 adds r3, #1 + 8003b20: f3c3 030b ubfx r3, r3, #0, #12 + 8003b24: 2b00 cmp r3, #0 + 8003b26: bf0c ite eq + 8003b28: 2301 moveq r3, #1 + 8003b2a: 2300 movne r3, #0 + 8003b2c: b2db uxtb r3, r3 + 8003b2e: 2b00 cmp r3, #0 + 8003b30: d001 beq.n 8003b36 + 8003b32: 2301 movs r3, #1 + 8003b34: e022 b.n 8003b7c + 8003b36: 687b ldr r3, [r7, #4] + 8003b38: 689b ldr r3, [r3, #8] + 8003b3a: 2b00 cmp r3, #0 + 8003b3c: d10e bne.n 8003b5c + 8003b3e: 68fb ldr r3, [r7, #12] + 8003b40: 1e58 subs r0, r3, #1 + 8003b42: 687b ldr r3, [r7, #4] + 8003b44: 6859 ldr r1, [r3, #4] + 8003b46: 460b mov r3, r1 + 8003b48: 005b lsls r3, r3, #1 + 8003b4a: 440b add r3, r1 + 8003b4c: fbb0 f3f3 udiv r3, r0, r3 + 8003b50: 3301 adds r3, #1 + 8003b52: f3c3 030b ubfx r3, r3, #0, #12 + 8003b56: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8003b5a: e00f b.n 8003b7c + 8003b5c: 68fb ldr r3, [r7, #12] + 8003b5e: 1e58 subs r0, r3, #1 + 8003b60: 687b ldr r3, [r7, #4] + 8003b62: 6859 ldr r1, [r3, #4] + 8003b64: 460b mov r3, r1 + 8003b66: 009b lsls r3, r3, #2 + 8003b68: 440b add r3, r1 + 8003b6a: 0099 lsls r1, r3, #2 + 8003b6c: 440b add r3, r1 + 8003b6e: fbb0 f3f3 udiv r3, r0, r3 + 8003b72: 3301 adds r3, #1 + 8003b74: f3c3 030b ubfx r3, r3, #0, #12 + 8003b78: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 8003b7c: 6879 ldr r1, [r7, #4] + 8003b7e: 6809 ldr r1, [r1, #0] + 8003b80: 4313 orrs r3, r2 + 8003b82: 61cb str r3, [r1, #28] /*---------------------------- I2Cx CR1 Configuration ----------------------*/ /* Configure I2Cx: Generalcall and NoStretch mode */ MODIFY_REG(hi2c->Instance->CR1, (I2C_CR1_ENGC | I2C_CR1_NOSTRETCH), (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode)); - 80038e4: 687b ldr r3, [r7, #4] - 80038e6: 681b ldr r3, [r3, #0] - 80038e8: 681b ldr r3, [r3, #0] - 80038ea: f023 01c0 bic.w r1, r3, #192 @ 0xc0 - 80038ee: 687b ldr r3, [r7, #4] - 80038f0: 69da ldr r2, [r3, #28] - 80038f2: 687b ldr r3, [r7, #4] - 80038f4: 6a1b ldr r3, [r3, #32] - 80038f6: 431a orrs r2, r3 - 80038f8: 687b ldr r3, [r7, #4] - 80038fa: 681b ldr r3, [r3, #0] - 80038fc: 430a orrs r2, r1 - 80038fe: 601a str r2, [r3, #0] + 8003b84: 687b ldr r3, [r7, #4] + 8003b86: 681b ldr r3, [r3, #0] + 8003b88: 681b ldr r3, [r3, #0] + 8003b8a: f023 01c0 bic.w r1, r3, #192 @ 0xc0 + 8003b8e: 687b ldr r3, [r7, #4] + 8003b90: 69da ldr r2, [r3, #28] + 8003b92: 687b ldr r3, [r7, #4] + 8003b94: 6a1b ldr r3, [r3, #32] + 8003b96: 431a orrs r2, r3 + 8003b98: 687b ldr r3, [r7, #4] + 8003b9a: 681b ldr r3, [r3, #0] + 8003b9c: 430a orrs r2, r1 + 8003b9e: 601a str r2, [r3, #0] /*---------------------------- I2Cx OAR1 Configuration ---------------------*/ /* Configure I2Cx: Own Address1 and addressing mode */ MODIFY_REG(hi2c->Instance->OAR1, (I2C_OAR1_ADDMODE | I2C_OAR1_ADD8_9 | I2C_OAR1_ADD1_7 | I2C_OAR1_ADD0), (hi2c->Init.AddressingMode | hi2c->Init.OwnAddress1)); - 8003900: 687b ldr r3, [r7, #4] - 8003902: 681b ldr r3, [r3, #0] - 8003904: 689b ldr r3, [r3, #8] - 8003906: f423 4303 bic.w r3, r3, #33536 @ 0x8300 - 800390a: f023 03ff bic.w r3, r3, #255 @ 0xff - 800390e: 687a ldr r2, [r7, #4] - 8003910: 6911 ldr r1, [r2, #16] - 8003912: 687a ldr r2, [r7, #4] - 8003914: 68d2 ldr r2, [r2, #12] - 8003916: 4311 orrs r1, r2 - 8003918: 687a ldr r2, [r7, #4] - 800391a: 6812 ldr r2, [r2, #0] - 800391c: 430b orrs r3, r1 - 800391e: 6093 str r3, [r2, #8] + 8003ba0: 687b ldr r3, [r7, #4] + 8003ba2: 681b ldr r3, [r3, #0] + 8003ba4: 689b ldr r3, [r3, #8] + 8003ba6: f423 4303 bic.w r3, r3, #33536 @ 0x8300 + 8003baa: f023 03ff bic.w r3, r3, #255 @ 0xff + 8003bae: 687a ldr r2, [r7, #4] + 8003bb0: 6911 ldr r1, [r2, #16] + 8003bb2: 687a ldr r2, [r7, #4] + 8003bb4: 68d2 ldr r2, [r2, #12] + 8003bb6: 4311 orrs r1, r2 + 8003bb8: 687a ldr r2, [r7, #4] + 8003bba: 6812 ldr r2, [r2, #0] + 8003bbc: 430b orrs r3, r1 + 8003bbe: 6093 str r3, [r2, #8] /*---------------------------- I2Cx OAR2 Configuration ---------------------*/ /* Configure I2Cx: Dual mode and Own Address2 */ MODIFY_REG(hi2c->Instance->OAR2, (I2C_OAR2_ENDUAL | I2C_OAR2_ADD2), (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2)); - 8003920: 687b ldr r3, [r7, #4] - 8003922: 681b ldr r3, [r3, #0] - 8003924: 68db ldr r3, [r3, #12] - 8003926: f023 01ff bic.w r1, r3, #255 @ 0xff - 800392a: 687b ldr r3, [r7, #4] - 800392c: 695a ldr r2, [r3, #20] - 800392e: 687b ldr r3, [r7, #4] - 8003930: 699b ldr r3, [r3, #24] - 8003932: 431a orrs r2, r3 - 8003934: 687b ldr r3, [r7, #4] - 8003936: 681b ldr r3, [r3, #0] - 8003938: 430a orrs r2, r1 - 800393a: 60da str r2, [r3, #12] + 8003bc0: 687b ldr r3, [r7, #4] + 8003bc2: 681b ldr r3, [r3, #0] + 8003bc4: 68db ldr r3, [r3, #12] + 8003bc6: f023 01ff bic.w r1, r3, #255 @ 0xff + 8003bca: 687b ldr r3, [r7, #4] + 8003bcc: 695a ldr r2, [r3, #20] + 8003bce: 687b ldr r3, [r7, #4] + 8003bd0: 699b ldr r3, [r3, #24] + 8003bd2: 431a orrs r2, r3 + 8003bd4: 687b ldr r3, [r7, #4] + 8003bd6: 681b ldr r3, [r3, #0] + 8003bd8: 430a orrs r2, r1 + 8003bda: 60da str r2, [r3, #12] /* Enable the selected I2C peripheral */ __HAL_I2C_ENABLE(hi2c); - 800393c: 687b ldr r3, [r7, #4] - 800393e: 681b ldr r3, [r3, #0] - 8003940: 681a ldr r2, [r3, #0] - 8003942: 687b ldr r3, [r7, #4] - 8003944: 681b ldr r3, [r3, #0] - 8003946: f042 0201 orr.w r2, r2, #1 - 800394a: 601a str r2, [r3, #0] + 8003bdc: 687b ldr r3, [r7, #4] + 8003bde: 681b ldr r3, [r3, #0] + 8003be0: 681a ldr r2, [r3, #0] + 8003be2: 687b ldr r3, [r7, #4] + 8003be4: 681b ldr r3, [r3, #0] + 8003be6: f042 0201 orr.w r2, r2, #1 + 8003bea: 601a str r2, [r3, #0] hi2c->ErrorCode = HAL_I2C_ERROR_NONE; - 800394c: 687b ldr r3, [r7, #4] - 800394e: 2200 movs r2, #0 - 8003950: 641a str r2, [r3, #64] @ 0x40 + 8003bec: 687b ldr r3, [r7, #4] + 8003bee: 2200 movs r2, #0 + 8003bf0: 641a str r2, [r3, #64] @ 0x40 hi2c->State = HAL_I2C_STATE_READY; - 8003952: 687b ldr r3, [r7, #4] - 8003954: 2220 movs r2, #32 - 8003956: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8003bf2: 687b ldr r3, [r7, #4] + 8003bf4: 2220 movs r2, #32 + 8003bf6: f883 203d strb.w r2, [r3, #61] @ 0x3d hi2c->PreviousState = I2C_STATE_NONE; - 800395a: 687b ldr r3, [r7, #4] - 800395c: 2200 movs r2, #0 - 800395e: 631a str r2, [r3, #48] @ 0x30 + 8003bfa: 687b ldr r3, [r7, #4] + 8003bfc: 2200 movs r2, #0 + 8003bfe: 631a str r2, [r3, #48] @ 0x30 hi2c->Mode = HAL_I2C_MODE_NONE; - 8003960: 687b ldr r3, [r7, #4] - 8003962: 2200 movs r2, #0 - 8003964: f883 203e strb.w r2, [r3, #62] @ 0x3e + 8003c00: 687b ldr r3, [r7, #4] + 8003c02: 2200 movs r2, #0 + 8003c04: f883 203e strb.w r2, [r3, #62] @ 0x3e return HAL_OK; - 8003968: 2300 movs r3, #0 + 8003c08: 2300 movs r3, #0 } - 800396a: 4618 mov r0, r3 - 800396c: 3710 adds r7, #16 - 800396e: 46bd mov sp, r7 - 8003970: bd80 pop {r7, pc} - 8003972: bf00 nop - 8003974: 000186a0 .word 0x000186a0 - 8003978: 001e847f .word 0x001e847f - 800397c: 003d08ff .word 0x003d08ff - 8003980: 431bde83 .word 0x431bde83 - 8003984: 10624dd3 .word 0x10624dd3 + 8003c0a: 4618 mov r0, r3 + 8003c0c: 3710 adds r7, #16 + 8003c0e: 46bd mov sp, r7 + 8003c10: bd80 pop {r7, pc} + 8003c12: bf00 nop + 8003c14: 000186a0 .word 0x000186a0 + 8003c18: 001e847f .word 0x001e847f + 8003c1c: 003d08ff .word 0x003d08ff + 8003c20: 431bde83 .word 0x431bde83 + 8003c24: 10624dd3 .word 0x10624dd3 -08003988 : +08003c28 : * @param Size Amount of data to be sent * @param Timeout Timeout duration * @retval HAL status */ HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout) { - 8003988: b580 push {r7, lr} - 800398a: b088 sub sp, #32 - 800398c: af02 add r7, sp, #8 - 800398e: 60f8 str r0, [r7, #12] - 8003990: 607a str r2, [r7, #4] - 8003992: 461a mov r2, r3 - 8003994: 460b mov r3, r1 - 8003996: 817b strh r3, [r7, #10] - 8003998: 4613 mov r3, r2 - 800399a: 813b strh r3, [r7, #8] + 8003c28: b580 push {r7, lr} + 8003c2a: b088 sub sp, #32 + 8003c2c: af02 add r7, sp, #8 + 8003c2e: 60f8 str r0, [r7, #12] + 8003c30: 607a str r2, [r7, #4] + 8003c32: 461a mov r2, r3 + 8003c34: 460b mov r3, r1 + 8003c36: 817b strh r3, [r7, #10] + 8003c38: 4613 mov r3, r2 + 8003c3a: 813b strh r3, [r7, #8] /* Init tickstart for timeout management*/ uint32_t tickstart = HAL_GetTick(); - 800399c: f7ff f8e4 bl 8002b68 - 80039a0: 6178 str r0, [r7, #20] + 8003c3c: f7ff f908 bl 8002e50 + 8003c40: 6178 str r0, [r7, #20] if (hi2c->State == HAL_I2C_STATE_READY) - 80039a2: 68fb ldr r3, [r7, #12] - 80039a4: f893 303d ldrb.w r3, [r3, #61] @ 0x3d - 80039a8: b2db uxtb r3, r3 - 80039aa: 2b20 cmp r3, #32 - 80039ac: f040 80e0 bne.w 8003b70 + 8003c42: 68fb ldr r3, [r7, #12] + 8003c44: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 8003c48: b2db uxtb r3, r3 + 8003c4a: 2b20 cmp r3, #32 + 8003c4c: f040 80e0 bne.w 8003e10 { /* Wait until BUSY flag is reset */ if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY_FLAG, tickstart) != HAL_OK) - 80039b0: 697b ldr r3, [r7, #20] - 80039b2: 9300 str r3, [sp, #0] - 80039b4: 2319 movs r3, #25 - 80039b6: 2201 movs r2, #1 - 80039b8: 4970 ldr r1, [pc, #448] @ (8003b7c ) - 80039ba: 68f8 ldr r0, [r7, #12] - 80039bc: f000 fc9e bl 80042fc - 80039c0: 4603 mov r3, r0 - 80039c2: 2b00 cmp r3, #0 - 80039c4: d001 beq.n 80039ca + 8003c50: 697b ldr r3, [r7, #20] + 8003c52: 9300 str r3, [sp, #0] + 8003c54: 2319 movs r3, #25 + 8003c56: 2201 movs r2, #1 + 8003c58: 4970 ldr r1, [pc, #448] @ (8003e1c ) + 8003c5a: 68f8 ldr r0, [r7, #12] + 8003c5c: f000 fc9e bl 800459c + 8003c60: 4603 mov r3, r0 + 8003c62: 2b00 cmp r3, #0 + 8003c64: d001 beq.n 8003c6a { return HAL_BUSY; - 80039c6: 2302 movs r3, #2 - 80039c8: e0d3 b.n 8003b72 + 8003c66: 2302 movs r3, #2 + 8003c68: e0d3 b.n 8003e12 } /* Process Locked */ __HAL_LOCK(hi2c); - 80039ca: 68fb ldr r3, [r7, #12] - 80039cc: f893 303c ldrb.w r3, [r3, #60] @ 0x3c - 80039d0: 2b01 cmp r3, #1 - 80039d2: d101 bne.n 80039d8 - 80039d4: 2302 movs r3, #2 - 80039d6: e0cc b.n 8003b72 - 80039d8: 68fb ldr r3, [r7, #12] - 80039da: 2201 movs r2, #1 - 80039dc: f883 203c strb.w r2, [r3, #60] @ 0x3c - - /* Check if the I2C is already enabled */ - if ((hi2c->Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE) - 80039e0: 68fb ldr r3, [r7, #12] - 80039e2: 681b ldr r3, [r3, #0] - 80039e4: 681b ldr r3, [r3, #0] - 80039e6: f003 0301 and.w r3, r3, #1 - 80039ea: 2b01 cmp r3, #1 - 80039ec: d007 beq.n 80039fe - { - /* Enable I2C peripheral */ - __HAL_I2C_ENABLE(hi2c); - 80039ee: 68fb ldr r3, [r7, #12] - 80039f0: 681b ldr r3, [r3, #0] - 80039f2: 681a ldr r2, [r3, #0] - 80039f4: 68fb ldr r3, [r7, #12] - 80039f6: 681b ldr r3, [r3, #0] - 80039f8: f042 0201 orr.w r2, r2, #1 - 80039fc: 601a str r2, [r3, #0] - } - - /* Disable Pos */ - CLEAR_BIT(hi2c->Instance->CR1, I2C_CR1_POS); - 80039fe: 68fb ldr r3, [r7, #12] - 8003a00: 681b ldr r3, [r3, #0] - 8003a02: 681a ldr r2, [r3, #0] - 8003a04: 68fb ldr r3, [r7, #12] - 8003a06: 681b ldr r3, [r3, #0] - 8003a08: f422 6200 bic.w r2, r2, #2048 @ 0x800 - 8003a0c: 601a str r2, [r3, #0] - - hi2c->State = HAL_I2C_STATE_BUSY_TX; - 8003a0e: 68fb ldr r3, [r7, #12] - 8003a10: 2221 movs r2, #33 @ 0x21 - 8003a12: f883 203d strb.w r2, [r3, #61] @ 0x3d - hi2c->Mode = HAL_I2C_MODE_MASTER; - 8003a16: 68fb ldr r3, [r7, #12] - 8003a18: 2210 movs r2, #16 - 8003a1a: f883 203e strb.w r2, [r3, #62] @ 0x3e - hi2c->ErrorCode = HAL_I2C_ERROR_NONE; - 8003a1e: 68fb ldr r3, [r7, #12] - 8003a20: 2200 movs r2, #0 - 8003a22: 641a str r2, [r3, #64] @ 0x40 - - /* Prepare transfer parameters */ - hi2c->pBuffPtr = pData; - 8003a24: 68fb ldr r3, [r7, #12] - 8003a26: 687a ldr r2, [r7, #4] - 8003a28: 625a str r2, [r3, #36] @ 0x24 - hi2c->XferCount = Size; - 8003a2a: 68fb ldr r3, [r7, #12] - 8003a2c: 893a ldrh r2, [r7, #8] - 8003a2e: 855a strh r2, [r3, #42] @ 0x2a - hi2c->XferSize = hi2c->XferCount; - 8003a30: 68fb ldr r3, [r7, #12] - 8003a32: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8003a34: b29a uxth r2, r3 - 8003a36: 68fb ldr r3, [r7, #12] - 8003a38: 851a strh r2, [r3, #40] @ 0x28 - hi2c->XferOptions = I2C_NO_OPTION_FRAME; - 8003a3a: 68fb ldr r3, [r7, #12] - 8003a3c: 4a50 ldr r2, [pc, #320] @ (8003b80 ) - 8003a3e: 62da str r2, [r3, #44] @ 0x2c - - /* Send Slave Address */ - if (I2C_MasterRequestWrite(hi2c, DevAddress, Timeout, tickstart) != HAL_OK) - 8003a40: 8979 ldrh r1, [r7, #10] - 8003a42: 697b ldr r3, [r7, #20] - 8003a44: 6a3a ldr r2, [r7, #32] - 8003a46: 68f8 ldr r0, [r7, #12] - 8003a48: f000 fb08 bl 800405c - 8003a4c: 4603 mov r3, r0 - 8003a4e: 2b00 cmp r3, #0 - 8003a50: d001 beq.n 8003a56 - { - return HAL_ERROR; - 8003a52: 2301 movs r3, #1 - 8003a54: e08d b.n 8003b72 - } - - /* Clear ADDR flag */ - __HAL_I2C_CLEAR_ADDRFLAG(hi2c); - 8003a56: 2300 movs r3, #0 - 8003a58: 613b str r3, [r7, #16] - 8003a5a: 68fb ldr r3, [r7, #12] - 8003a5c: 681b ldr r3, [r3, #0] - 8003a5e: 695b ldr r3, [r3, #20] - 8003a60: 613b str r3, [r7, #16] - 8003a62: 68fb ldr r3, [r7, #12] - 8003a64: 681b ldr r3, [r3, #0] - 8003a66: 699b ldr r3, [r3, #24] - 8003a68: 613b str r3, [r7, #16] - 8003a6a: 693b ldr r3, [r7, #16] - - while (hi2c->XferSize > 0U) - 8003a6c: e066 b.n 8003b3c - { - /* Wait until TXE flag is set */ - if (I2C_WaitOnTXEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) - 8003a6e: 697a ldr r2, [r7, #20] - 8003a70: 6a39 ldr r1, [r7, #32] - 8003a72: 68f8 ldr r0, [r7, #12] - 8003a74: f000 fd5c bl 8004530 - 8003a78: 4603 mov r3, r0 - 8003a7a: 2b00 cmp r3, #0 - 8003a7c: d00d beq.n 8003a9a - { - if (hi2c->ErrorCode == HAL_I2C_ERROR_AF) - 8003a7e: 68fb ldr r3, [r7, #12] - 8003a80: 6c1b ldr r3, [r3, #64] @ 0x40 - 8003a82: 2b04 cmp r3, #4 - 8003a84: d107 bne.n 8003a96 - { - /* Generate Stop */ - SET_BIT(hi2c->Instance->CR1, I2C_CR1_STOP); - 8003a86: 68fb ldr r3, [r7, #12] - 8003a88: 681b ldr r3, [r3, #0] - 8003a8a: 681a ldr r2, [r3, #0] - 8003a8c: 68fb ldr r3, [r7, #12] - 8003a8e: 681b ldr r3, [r3, #0] - 8003a90: f442 7200 orr.w r2, r2, #512 @ 0x200 - 8003a94: 601a str r2, [r3, #0] - } - return HAL_ERROR; - 8003a96: 2301 movs r3, #1 - 8003a98: e06b b.n 8003b72 - } - - /* Write data to DR */ - hi2c->Instance->DR = *hi2c->pBuffPtr; - 8003a9a: 68fb ldr r3, [r7, #12] - 8003a9c: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003a9e: 781a ldrb r2, [r3, #0] - 8003aa0: 68fb ldr r3, [r7, #12] - 8003aa2: 681b ldr r3, [r3, #0] - 8003aa4: 611a str r2, [r3, #16] - - /* Increment Buffer pointer */ - hi2c->pBuffPtr++; - 8003aa6: 68fb ldr r3, [r7, #12] - 8003aa8: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003aaa: 1c5a adds r2, r3, #1 - 8003aac: 68fb ldr r3, [r7, #12] - 8003aae: 625a str r2, [r3, #36] @ 0x24 - - /* Update counter */ - hi2c->XferCount--; - 8003ab0: 68fb ldr r3, [r7, #12] - 8003ab2: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8003ab4: b29b uxth r3, r3 - 8003ab6: 3b01 subs r3, #1 - 8003ab8: b29a uxth r2, r3 - 8003aba: 68fb ldr r3, [r7, #12] - 8003abc: 855a strh r2, [r3, #42] @ 0x2a - hi2c->XferSize--; - 8003abe: 68fb ldr r3, [r7, #12] - 8003ac0: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8003ac2: 3b01 subs r3, #1 - 8003ac4: b29a uxth r2, r3 - 8003ac6: 68fb ldr r3, [r7, #12] - 8003ac8: 851a strh r2, [r3, #40] @ 0x28 - - if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BTF) == SET) && (hi2c->XferSize != 0U)) - 8003aca: 68fb ldr r3, [r7, #12] - 8003acc: 681b ldr r3, [r3, #0] - 8003ace: 695b ldr r3, [r3, #20] - 8003ad0: f003 0304 and.w r3, r3, #4 - 8003ad4: 2b04 cmp r3, #4 - 8003ad6: d11b bne.n 8003b10 - 8003ad8: 68fb ldr r3, [r7, #12] - 8003ada: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8003adc: 2b00 cmp r3, #0 - 8003ade: d017 beq.n 8003b10 - { - /* Write data to DR */ - hi2c->Instance->DR = *hi2c->pBuffPtr; - 8003ae0: 68fb ldr r3, [r7, #12] - 8003ae2: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003ae4: 781a ldrb r2, [r3, #0] - 8003ae6: 68fb ldr r3, [r7, #12] - 8003ae8: 681b ldr r3, [r3, #0] - 8003aea: 611a str r2, [r3, #16] - - /* Increment Buffer pointer */ - hi2c->pBuffPtr++; - 8003aec: 68fb ldr r3, [r7, #12] - 8003aee: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003af0: 1c5a adds r2, r3, #1 - 8003af2: 68fb ldr r3, [r7, #12] - 8003af4: 625a str r2, [r3, #36] @ 0x24 - - /* Update counter */ - hi2c->XferCount--; - 8003af6: 68fb ldr r3, [r7, #12] - 8003af8: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8003afa: b29b uxth r3, r3 - 8003afc: 3b01 subs r3, #1 - 8003afe: b29a uxth r2, r3 - 8003b00: 68fb ldr r3, [r7, #12] - 8003b02: 855a strh r2, [r3, #42] @ 0x2a - hi2c->XferSize--; - 8003b04: 68fb ldr r3, [r7, #12] - 8003b06: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8003b08: 3b01 subs r3, #1 - 8003b0a: b29a uxth r2, r3 - 8003b0c: 68fb ldr r3, [r7, #12] - 8003b0e: 851a strh r2, [r3, #40] @ 0x28 - } - - /* Wait until BTF flag is set */ - if (I2C_WaitOnBTFFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) - 8003b10: 697a ldr r2, [r7, #20] - 8003b12: 6a39 ldr r1, [r7, #32] - 8003b14: 68f8 ldr r0, [r7, #12] - 8003b16: f000 fd53 bl 80045c0 - 8003b1a: 4603 mov r3, r0 - 8003b1c: 2b00 cmp r3, #0 - 8003b1e: d00d beq.n 8003b3c - { - if (hi2c->ErrorCode == HAL_I2C_ERROR_AF) - 8003b20: 68fb ldr r3, [r7, #12] - 8003b22: 6c1b ldr r3, [r3, #64] @ 0x40 - 8003b24: 2b04 cmp r3, #4 - 8003b26: d107 bne.n 8003b38 - { - /* Generate Stop */ - SET_BIT(hi2c->Instance->CR1, I2C_CR1_STOP); - 8003b28: 68fb ldr r3, [r7, #12] - 8003b2a: 681b ldr r3, [r3, #0] - 8003b2c: 681a ldr r2, [r3, #0] - 8003b2e: 68fb ldr r3, [r7, #12] - 8003b30: 681b ldr r3, [r3, #0] - 8003b32: f442 7200 orr.w r2, r2, #512 @ 0x200 - 8003b36: 601a str r2, [r3, #0] - } - return HAL_ERROR; - 8003b38: 2301 movs r3, #1 - 8003b3a: e01a b.n 8003b72 - while (hi2c->XferSize > 0U) - 8003b3c: 68fb ldr r3, [r7, #12] - 8003b3e: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8003b40: 2b00 cmp r3, #0 - 8003b42: d194 bne.n 8003a6e - } - } - - /* Generate Stop */ - SET_BIT(hi2c->Instance->CR1, I2C_CR1_STOP); - 8003b44: 68fb ldr r3, [r7, #12] - 8003b46: 681b ldr r3, [r3, #0] - 8003b48: 681a ldr r2, [r3, #0] - 8003b4a: 68fb ldr r3, [r7, #12] - 8003b4c: 681b ldr r3, [r3, #0] - 8003b4e: f442 7200 orr.w r2, r2, #512 @ 0x200 - 8003b52: 601a str r2, [r3, #0] - - hi2c->State = HAL_I2C_STATE_READY; - 8003b54: 68fb ldr r3, [r7, #12] - 8003b56: 2220 movs r2, #32 - 8003b58: f883 203d strb.w r2, [r3, #61] @ 0x3d - hi2c->Mode = HAL_I2C_MODE_NONE; - 8003b5c: 68fb ldr r3, [r7, #12] - 8003b5e: 2200 movs r2, #0 - 8003b60: f883 203e strb.w r2, [r3, #62] @ 0x3e - - /* Process Unlocked */ - __HAL_UNLOCK(hi2c); - 8003b64: 68fb ldr r3, [r7, #12] - 8003b66: 2200 movs r2, #0 - 8003b68: f883 203c strb.w r2, [r3, #60] @ 0x3c - - return HAL_OK; - 8003b6c: 2300 movs r3, #0 - 8003b6e: e000 b.n 8003b72 - } - else - { - return HAL_BUSY; - 8003b70: 2302 movs r3, #2 - } -} - 8003b72: 4618 mov r0, r3 - 8003b74: 3718 adds r7, #24 - 8003b76: 46bd mov sp, r7 - 8003b78: bd80 pop {r7, pc} - 8003b7a: bf00 nop - 8003b7c: 00100002 .word 0x00100002 - 8003b80: ffff0000 .word 0xffff0000 - -08003b84 : - * @param Size Amount of data to be sent - * @param Timeout Timeout duration - * @retval HAL status - */ -HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout) -{ - 8003b84: b580 push {r7, lr} - 8003b86: b08c sub sp, #48 @ 0x30 - 8003b88: af02 add r7, sp, #8 - 8003b8a: 60f8 str r0, [r7, #12] - 8003b8c: 607a str r2, [r7, #4] - 8003b8e: 461a mov r2, r3 - 8003b90: 460b mov r3, r1 - 8003b92: 817b strh r3, [r7, #10] - 8003b94: 4613 mov r3, r2 - 8003b96: 813b strh r3, [r7, #8] - __IO uint32_t count = 0U; - 8003b98: 2300 movs r3, #0 - 8003b9a: 623b str r3, [r7, #32] - - /* Init tickstart for timeout management*/ - uint32_t tickstart = HAL_GetTick(); - 8003b9c: f7fe ffe4 bl 8002b68 - 8003ba0: 6278 str r0, [r7, #36] @ 0x24 - - if (hi2c->State == HAL_I2C_STATE_READY) - 8003ba2: 68fb ldr r3, [r7, #12] - 8003ba4: f893 303d ldrb.w r3, [r3, #61] @ 0x3d - 8003ba8: b2db uxtb r3, r3 - 8003baa: 2b20 cmp r3, #32 - 8003bac: f040 824b bne.w 8004046 - { - /* Wait until BUSY flag is reset */ - if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY_FLAG, tickstart) != HAL_OK) - 8003bb0: 6a7b ldr r3, [r7, #36] @ 0x24 - 8003bb2: 9300 str r3, [sp, #0] - 8003bb4: 2319 movs r3, #25 - 8003bb6: 2201 movs r2, #1 - 8003bb8: 497f ldr r1, [pc, #508] @ (8003db8 ) - 8003bba: 68f8 ldr r0, [r7, #12] - 8003bbc: f000 fb9e bl 80042fc - 8003bc0: 4603 mov r3, r0 - 8003bc2: 2b00 cmp r3, #0 - 8003bc4: d001 beq.n 8003bca - { - return HAL_BUSY; - 8003bc6: 2302 movs r3, #2 - 8003bc8: e23e b.n 8004048 - } - - /* Process Locked */ - __HAL_LOCK(hi2c); - 8003bca: 68fb ldr r3, [r7, #12] - 8003bcc: f893 303c ldrb.w r3, [r3, #60] @ 0x3c - 8003bd0: 2b01 cmp r3, #1 - 8003bd2: d101 bne.n 8003bd8 - 8003bd4: 2302 movs r3, #2 - 8003bd6: e237 b.n 8004048 - 8003bd8: 68fb ldr r3, [r7, #12] - 8003bda: 2201 movs r2, #1 - 8003bdc: f883 203c strb.w r2, [r3, #60] @ 0x3c - - /* Check if the I2C is already enabled */ - if ((hi2c->Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE) - 8003be0: 68fb ldr r3, [r7, #12] - 8003be2: 681b ldr r3, [r3, #0] - 8003be4: 681b ldr r3, [r3, #0] - 8003be6: f003 0301 and.w r3, r3, #1 - 8003bea: 2b01 cmp r3, #1 - 8003bec: d007 beq.n 8003bfe - { - /* Enable I2C peripheral */ - __HAL_I2C_ENABLE(hi2c); - 8003bee: 68fb ldr r3, [r7, #12] - 8003bf0: 681b ldr r3, [r3, #0] - 8003bf2: 681a ldr r2, [r3, #0] - 8003bf4: 68fb ldr r3, [r7, #12] - 8003bf6: 681b ldr r3, [r3, #0] - 8003bf8: f042 0201 orr.w r2, r2, #1 - 8003bfc: 601a str r2, [r3, #0] - } - - /* Disable Pos */ - CLEAR_BIT(hi2c->Instance->CR1, I2C_CR1_POS); - 8003bfe: 68fb ldr r3, [r7, #12] - 8003c00: 681b ldr r3, [r3, #0] - 8003c02: 681a ldr r2, [r3, #0] - 8003c04: 68fb ldr r3, [r7, #12] - 8003c06: 681b ldr r3, [r3, #0] - 8003c08: f422 6200 bic.w r2, r2, #2048 @ 0x800 - 8003c0c: 601a str r2, [r3, #0] - - hi2c->State = HAL_I2C_STATE_BUSY_RX; - 8003c0e: 68fb ldr r3, [r7, #12] - 8003c10: 2222 movs r2, #34 @ 0x22 - 8003c12: f883 203d strb.w r2, [r3, #61] @ 0x3d - hi2c->Mode = HAL_I2C_MODE_MASTER; - 8003c16: 68fb ldr r3, [r7, #12] - 8003c18: 2210 movs r2, #16 - 8003c1a: f883 203e strb.w r2, [r3, #62] @ 0x3e - hi2c->ErrorCode = HAL_I2C_ERROR_NONE; - 8003c1e: 68fb ldr r3, [r7, #12] - 8003c20: 2200 movs r2, #0 - 8003c22: 641a str r2, [r3, #64] @ 0x40 - - /* Prepare transfer parameters */ - hi2c->pBuffPtr = pData; - 8003c24: 68fb ldr r3, [r7, #12] - 8003c26: 687a ldr r2, [r7, #4] - 8003c28: 625a str r2, [r3, #36] @ 0x24 - hi2c->XferCount = Size; - 8003c2a: 68fb ldr r3, [r7, #12] - 8003c2c: 893a ldrh r2, [r7, #8] - 8003c2e: 855a strh r2, [r3, #42] @ 0x2a - hi2c->XferSize = hi2c->XferCount; - 8003c30: 68fb ldr r3, [r7, #12] - 8003c32: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8003c34: b29a uxth r2, r3 - 8003c36: 68fb ldr r3, [r7, #12] - 8003c38: 851a strh r2, [r3, #40] @ 0x28 - hi2c->XferOptions = I2C_NO_OPTION_FRAME; - 8003c3a: 68fb ldr r3, [r7, #12] - 8003c3c: 4a5f ldr r2, [pc, #380] @ (8003dbc ) - 8003c3e: 62da str r2, [r3, #44] @ 0x2c - - /* Send Slave Address */ - if (I2C_MasterRequestRead(hi2c, DevAddress, Timeout, tickstart) != HAL_OK) - 8003c40: 8979 ldrh r1, [r7, #10] - 8003c42: 6a7b ldr r3, [r7, #36] @ 0x24 - 8003c44: 6b3a ldr r2, [r7, #48] @ 0x30 - 8003c46: 68f8 ldr r0, [r7, #12] - 8003c48: f000 fa8a bl 8004160 - 8003c4c: 4603 mov r3, r0 - 8003c4e: 2b00 cmp r3, #0 - 8003c50: d001 beq.n 8003c56 - { - return HAL_ERROR; - 8003c52: 2301 movs r3, #1 - 8003c54: e1f8 b.n 8004048 - } - - if (hi2c->XferSize == 0U) - 8003c56: 68fb ldr r3, [r7, #12] - 8003c58: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8003c5a: 2b00 cmp r3, #0 - 8003c5c: d113 bne.n 8003c86 - { - /* Clear ADDR flag */ - __HAL_I2C_CLEAR_ADDRFLAG(hi2c); - 8003c5e: 2300 movs r3, #0 - 8003c60: 61fb str r3, [r7, #28] - 8003c62: 68fb ldr r3, [r7, #12] - 8003c64: 681b ldr r3, [r3, #0] - 8003c66: 695b ldr r3, [r3, #20] - 8003c68: 61fb str r3, [r7, #28] 8003c6a: 68fb ldr r3, [r7, #12] - 8003c6c: 681b ldr r3, [r3, #0] - 8003c6e: 699b ldr r3, [r3, #24] - 8003c70: 61fb str r3, [r7, #28] - 8003c72: 69fb ldr r3, [r7, #28] + 8003c6c: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 8003c70: 2b01 cmp r3, #1 + 8003c72: d101 bne.n 8003c78 + 8003c74: 2302 movs r3, #2 + 8003c76: e0cc b.n 8003e12 + 8003c78: 68fb ldr r3, [r7, #12] + 8003c7a: 2201 movs r2, #1 + 8003c7c: f883 203c strb.w r2, [r3, #60] @ 0x3c - /* Generate Stop */ - SET_BIT(hi2c->Instance->CR1, I2C_CR1_STOP); - 8003c74: 68fb ldr r3, [r7, #12] - 8003c76: 681b ldr r3, [r3, #0] - 8003c78: 681a ldr r2, [r3, #0] - 8003c7a: 68fb ldr r3, [r7, #12] - 8003c7c: 681b ldr r3, [r3, #0] - 8003c7e: f442 7200 orr.w r2, r2, #512 @ 0x200 - 8003c82: 601a str r2, [r3, #0] - 8003c84: e1cc b.n 8004020 - } - else if (hi2c->XferSize == 1U) - 8003c86: 68fb ldr r3, [r7, #12] - 8003c88: 8d1b ldrh r3, [r3, #40] @ 0x28 + /* Check if the I2C is already enabled */ + if ((hi2c->Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE) + 8003c80: 68fb ldr r3, [r7, #12] + 8003c82: 681b ldr r3, [r3, #0] + 8003c84: 681b ldr r3, [r3, #0] + 8003c86: f003 0301 and.w r3, r3, #1 8003c8a: 2b01 cmp r3, #1 - 8003c8c: d11e bne.n 8003ccc + 8003c8c: d007 beq.n 8003c9e { - /* Disable Acknowledge */ - CLEAR_BIT(hi2c->Instance->CR1, I2C_CR1_ACK); + /* Enable I2C peripheral */ + __HAL_I2C_ENABLE(hi2c); 8003c8e: 68fb ldr r3, [r7, #12] 8003c90: 681b ldr r3, [r3, #0] 8003c92: 681a ldr r2, [r3, #0] 8003c94: 68fb ldr r3, [r7, #12] 8003c96: 681b ldr r3, [r3, #0] - 8003c98: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 8003c98: f042 0201 orr.w r2, r2, #1 8003c9c: 601a str r2, [r3, #0] - __ASM volatile ("cpsid i" : : : "memory"); - 8003c9e: b672 cpsid i -} - 8003ca0: bf00 nop - /* Disable all active IRQs around ADDR clearing and STOP programming because the EV6_3 - software sequence must complete before the current byte end of transfer */ - __disable_irq(); + } - /* Clear ADDR flag */ - __HAL_I2C_CLEAR_ADDRFLAG(hi2c); - 8003ca2: 2300 movs r3, #0 - 8003ca4: 61bb str r3, [r7, #24] - 8003ca6: 68fb ldr r3, [r7, #12] - 8003ca8: 681b ldr r3, [r3, #0] - 8003caa: 695b ldr r3, [r3, #20] - 8003cac: 61bb str r3, [r7, #24] + /* Disable Pos */ + CLEAR_BIT(hi2c->Instance->CR1, I2C_CR1_POS); + 8003c9e: 68fb ldr r3, [r7, #12] + 8003ca0: 681b ldr r3, [r3, #0] + 8003ca2: 681a ldr r2, [r3, #0] + 8003ca4: 68fb ldr r3, [r7, #12] + 8003ca6: 681b ldr r3, [r3, #0] + 8003ca8: f422 6200 bic.w r2, r2, #2048 @ 0x800 + 8003cac: 601a str r2, [r3, #0] + + hi2c->State = HAL_I2C_STATE_BUSY_TX; 8003cae: 68fb ldr r3, [r7, #12] - 8003cb0: 681b ldr r3, [r3, #0] - 8003cb2: 699b ldr r3, [r3, #24] - 8003cb4: 61bb str r3, [r7, #24] - 8003cb6: 69bb ldr r3, [r7, #24] - - /* Generate Stop */ - SET_BIT(hi2c->Instance->CR1, I2C_CR1_STOP); - 8003cb8: 68fb ldr r3, [r7, #12] - 8003cba: 681b ldr r3, [r3, #0] - 8003cbc: 681a ldr r2, [r3, #0] + 8003cb0: 2221 movs r2, #33 @ 0x21 + 8003cb2: f883 203d strb.w r2, [r3, #61] @ 0x3d + hi2c->Mode = HAL_I2C_MODE_MASTER; + 8003cb6: 68fb ldr r3, [r7, #12] + 8003cb8: 2210 movs r2, #16 + 8003cba: f883 203e strb.w r2, [r3, #62] @ 0x3e + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 8003cbe: 68fb ldr r3, [r7, #12] - 8003cc0: 681b ldr r3, [r3, #0] - 8003cc2: f442 7200 orr.w r2, r2, #512 @ 0x200 - 8003cc6: 601a str r2, [r3, #0] - __ASM volatile ("cpsie i" : : : "memory"); - 8003cc8: b662 cpsie i -} - 8003cca: e035 b.n 8003d38 + 8003cc0: 2200 movs r2, #0 + 8003cc2: 641a str r2, [r3, #64] @ 0x40 - /* Re-enable IRQs */ - __enable_irq(); - } - else if (hi2c->XferSize == 2U) - 8003ccc: 68fb ldr r3, [r7, #12] - 8003cce: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8003cd0: 2b02 cmp r3, #2 - 8003cd2: d11e bne.n 8003d12 - { - /* Enable Pos */ - SET_BIT(hi2c->Instance->CR1, I2C_CR1_POS); - 8003cd4: 68fb ldr r3, [r7, #12] - 8003cd6: 681b ldr r3, [r3, #0] - 8003cd8: 681a ldr r2, [r3, #0] + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + 8003cc4: 68fb ldr r3, [r7, #12] + 8003cc6: 687a ldr r2, [r7, #4] + 8003cc8: 625a str r2, [r3, #36] @ 0x24 + hi2c->XferCount = Size; + 8003cca: 68fb ldr r3, [r7, #12] + 8003ccc: 893a ldrh r2, [r7, #8] + 8003cce: 855a strh r2, [r3, #42] @ 0x2a + hi2c->XferSize = hi2c->XferCount; + 8003cd0: 68fb ldr r3, [r7, #12] + 8003cd2: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8003cd4: b29a uxth r2, r3 + 8003cd6: 68fb ldr r3, [r7, #12] + 8003cd8: 851a strh r2, [r3, #40] @ 0x28 + hi2c->XferOptions = I2C_NO_OPTION_FRAME; 8003cda: 68fb ldr r3, [r7, #12] - 8003cdc: 681b ldr r3, [r3, #0] - 8003cde: f442 6200 orr.w r2, r2, #2048 @ 0x800 - 8003ce2: 601a str r2, [r3, #0] - __ASM volatile ("cpsid i" : : : "memory"); - 8003ce4: b672 cpsid i -} - 8003ce6: bf00 nop - /* Disable all active IRQs around ADDR clearing and STOP programming because the EV6_3 - software sequence must complete before the current byte end of transfer */ - __disable_irq(); + 8003cdc: 4a50 ldr r2, [pc, #320] @ (8003e20 ) + 8003cde: 62da str r2, [r3, #44] @ 0x2c - /* Clear ADDR flag */ - __HAL_I2C_CLEAR_ADDRFLAG(hi2c); - 8003ce8: 2300 movs r3, #0 - 8003cea: 617b str r3, [r7, #20] - 8003cec: 68fb ldr r3, [r7, #12] - 8003cee: 681b ldr r3, [r3, #0] - 8003cf0: 695b ldr r3, [r3, #20] - 8003cf2: 617b str r3, [r7, #20] - 8003cf4: 68fb ldr r3, [r7, #12] - 8003cf6: 681b ldr r3, [r3, #0] - 8003cf8: 699b ldr r3, [r3, #24] - 8003cfa: 617b str r3, [r7, #20] - 8003cfc: 697b ldr r3, [r7, #20] - - /* Disable Acknowledge */ - CLEAR_BIT(hi2c->Instance->CR1, I2C_CR1_ACK); - 8003cfe: 68fb ldr r3, [r7, #12] - 8003d00: 681b ldr r3, [r3, #0] - 8003d02: 681a ldr r2, [r3, #0] - 8003d04: 68fb ldr r3, [r7, #12] - 8003d06: 681b ldr r3, [r3, #0] - 8003d08: f422 6280 bic.w r2, r2, #1024 @ 0x400 - 8003d0c: 601a str r2, [r3, #0] - __ASM volatile ("cpsie i" : : : "memory"); - 8003d0e: b662 cpsie i -} - 8003d10: e012 b.n 8003d38 - __enable_irq(); - } - else + /* Send Slave Address */ + if (I2C_MasterRequestWrite(hi2c, DevAddress, Timeout, tickstart) != HAL_OK) + 8003ce0: 8979 ldrh r1, [r7, #10] + 8003ce2: 697b ldr r3, [r7, #20] + 8003ce4: 6a3a ldr r2, [r7, #32] + 8003ce6: 68f8 ldr r0, [r7, #12] + 8003ce8: f000 fb08 bl 80042fc + 8003cec: 4603 mov r3, r0 + 8003cee: 2b00 cmp r3, #0 + 8003cf0: d001 beq.n 8003cf6 { - /* Enable Acknowledge */ - SET_BIT(hi2c->Instance->CR1, I2C_CR1_ACK); - 8003d12: 68fb ldr r3, [r7, #12] - 8003d14: 681b ldr r3, [r3, #0] - 8003d16: 681a ldr r2, [r3, #0] - 8003d18: 68fb ldr r3, [r7, #12] - 8003d1a: 681b ldr r3, [r3, #0] - 8003d1c: f442 6280 orr.w r2, r2, #1024 @ 0x400 - 8003d20: 601a str r2, [r3, #0] - - /* Clear ADDR flag */ - __HAL_I2C_CLEAR_ADDRFLAG(hi2c); - 8003d22: 2300 movs r3, #0 - 8003d24: 613b str r3, [r7, #16] - 8003d26: 68fb ldr r3, [r7, #12] - 8003d28: 681b ldr r3, [r3, #0] - 8003d2a: 695b ldr r3, [r3, #20] - 8003d2c: 613b str r3, [r7, #16] - 8003d2e: 68fb ldr r3, [r7, #12] - 8003d30: 681b ldr r3, [r3, #0] - 8003d32: 699b ldr r3, [r3, #24] - 8003d34: 613b str r3, [r7, #16] - 8003d36: 693b ldr r3, [r7, #16] + return HAL_ERROR; + 8003cf2: 2301 movs r3, #1 + 8003cf4: e08d b.n 8003e12 } + /* Clear ADDR flag */ + __HAL_I2C_CLEAR_ADDRFLAG(hi2c); + 8003cf6: 2300 movs r3, #0 + 8003cf8: 613b str r3, [r7, #16] + 8003cfa: 68fb ldr r3, [r7, #12] + 8003cfc: 681b ldr r3, [r3, #0] + 8003cfe: 695b ldr r3, [r3, #20] + 8003d00: 613b str r3, [r7, #16] + 8003d02: 68fb ldr r3, [r7, #12] + 8003d04: 681b ldr r3, [r3, #0] + 8003d06: 699b ldr r3, [r3, #24] + 8003d08: 613b str r3, [r7, #16] + 8003d0a: 693b ldr r3, [r7, #16] + while (hi2c->XferSize > 0U) - 8003d38: e172 b.n 8004020 + 8003d0c: e066 b.n 8003ddc { - if (hi2c->XferSize <= 3U) - 8003d3a: 68fb ldr r3, [r7, #12] - 8003d3c: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8003d3e: 2b03 cmp r3, #3 - 8003d40: f200 811f bhi.w 8003f82 + /* Wait until TXE flag is set */ + if (I2C_WaitOnTXEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + 8003d0e: 697a ldr r2, [r7, #20] + 8003d10: 6a39 ldr r1, [r7, #32] + 8003d12: 68f8 ldr r0, [r7, #12] + 8003d14: f000 fd5c bl 80047d0 + 8003d18: 4603 mov r3, r0 + 8003d1a: 2b00 cmp r3, #0 + 8003d1c: d00d beq.n 8003d3a { - /* One byte */ - if (hi2c->XferSize == 1U) - 8003d44: 68fb ldr r3, [r7, #12] - 8003d46: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8003d48: 2b01 cmp r3, #1 - 8003d4a: d123 bne.n 8003d94 + if (hi2c->ErrorCode == HAL_I2C_ERROR_AF) + 8003d1e: 68fb ldr r3, [r7, #12] + 8003d20: 6c1b ldr r3, [r3, #64] @ 0x40 + 8003d22: 2b04 cmp r3, #4 + 8003d24: d107 bne.n 8003d36 { - /* Wait until RXNE flag is set */ - if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) - 8003d4c: 6a7a ldr r2, [r7, #36] @ 0x24 - 8003d4e: 6b39 ldr r1, [r7, #48] @ 0x30 - 8003d50: 68f8 ldr r0, [r7, #12] - 8003d52: f000 fc7d bl 8004650 - 8003d56: 4603 mov r3, r0 - 8003d58: 2b00 cmp r3, #0 - 8003d5a: d001 beq.n 8003d60 - { - return HAL_ERROR; - 8003d5c: 2301 movs r3, #1 - 8003d5e: e173 b.n 8004048 - } + /* Generate Stop */ + SET_BIT(hi2c->Instance->CR1, I2C_CR1_STOP); + 8003d26: 68fb ldr r3, [r7, #12] + 8003d28: 681b ldr r3, [r3, #0] + 8003d2a: 681a ldr r2, [r3, #0] + 8003d2c: 68fb ldr r3, [r7, #12] + 8003d2e: 681b ldr r3, [r3, #0] + 8003d30: f442 7200 orr.w r2, r2, #512 @ 0x200 + 8003d34: 601a str r2, [r3, #0] + } + return HAL_ERROR; + 8003d36: 2301 movs r3, #1 + 8003d38: e06b b.n 8003e12 + } - /* Read data from DR */ - *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->DR; - 8003d60: 68fb ldr r3, [r7, #12] - 8003d62: 681b ldr r3, [r3, #0] - 8003d64: 691a ldr r2, [r3, #16] + /* Write data to DR */ + hi2c->Instance->DR = *hi2c->pBuffPtr; + 8003d3a: 68fb ldr r3, [r7, #12] + 8003d3c: 6a5b ldr r3, [r3, #36] @ 0x24 + 8003d3e: 781a ldrb r2, [r3, #0] + 8003d40: 68fb ldr r3, [r7, #12] + 8003d42: 681b ldr r3, [r3, #0] + 8003d44: 611a str r2, [r3, #16] + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + 8003d46: 68fb ldr r3, [r7, #12] + 8003d48: 6a5b ldr r3, [r3, #36] @ 0x24 + 8003d4a: 1c5a adds r2, r3, #1 + 8003d4c: 68fb ldr r3, [r7, #12] + 8003d4e: 625a str r2, [r3, #36] @ 0x24 + + /* Update counter */ + hi2c->XferCount--; + 8003d50: 68fb ldr r3, [r7, #12] + 8003d52: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8003d54: b29b uxth r3, r3 + 8003d56: 3b01 subs r3, #1 + 8003d58: b29a uxth r2, r3 + 8003d5a: 68fb ldr r3, [r7, #12] + 8003d5c: 855a strh r2, [r3, #42] @ 0x2a + hi2c->XferSize--; + 8003d5e: 68fb ldr r3, [r7, #12] + 8003d60: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8003d62: 3b01 subs r3, #1 + 8003d64: b29a uxth r2, r3 8003d66: 68fb ldr r3, [r7, #12] - 8003d68: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003d6a: b2d2 uxtb r2, r2 - 8003d6c: 701a strb r2, [r3, #0] + 8003d68: 851a strh r2, [r3, #40] @ 0x28 - /* Increment Buffer pointer */ - hi2c->pBuffPtr++; - 8003d6e: 68fb ldr r3, [r7, #12] - 8003d70: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003d72: 1c5a adds r2, r3, #1 - 8003d74: 68fb ldr r3, [r7, #12] - 8003d76: 625a str r2, [r3, #36] @ 0x24 - - /* Update counter */ - hi2c->XferSize--; + if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BTF) == SET) && (hi2c->XferSize != 0U)) + 8003d6a: 68fb ldr r3, [r7, #12] + 8003d6c: 681b ldr r3, [r3, #0] + 8003d6e: 695b ldr r3, [r3, #20] + 8003d70: f003 0304 and.w r3, r3, #4 + 8003d74: 2b04 cmp r3, #4 + 8003d76: d11b bne.n 8003db0 8003d78: 68fb ldr r3, [r7, #12] 8003d7a: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8003d7c: 3b01 subs r3, #1 - 8003d7e: b29a uxth r2, r3 + 8003d7c: 2b00 cmp r3, #0 + 8003d7e: d017 beq.n 8003db0 + { + /* Write data to DR */ + hi2c->Instance->DR = *hi2c->pBuffPtr; 8003d80: 68fb ldr r3, [r7, #12] - 8003d82: 851a strh r2, [r3, #40] @ 0x28 - hi2c->XferCount--; - 8003d84: 68fb ldr r3, [r7, #12] - 8003d86: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8003d88: b29b uxth r3, r3 - 8003d8a: 3b01 subs r3, #1 - 8003d8c: b29a uxth r2, r3 - 8003d8e: 68fb ldr r3, [r7, #12] - 8003d90: 855a strh r2, [r3, #42] @ 0x2a - 8003d92: e145 b.n 8004020 - } - /* Two bytes */ - else if (hi2c->XferSize == 2U) - 8003d94: 68fb ldr r3, [r7, #12] - 8003d96: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8003d98: 2b02 cmp r3, #2 - 8003d9a: d152 bne.n 8003e42 - { - /* Wait until BTF flag is set */ - if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BTF, RESET, Timeout, tickstart) != HAL_OK) - 8003d9c: 6a7b ldr r3, [r7, #36] @ 0x24 - 8003d9e: 9300 str r3, [sp, #0] - 8003da0: 6b3b ldr r3, [r7, #48] @ 0x30 - 8003da2: 2200 movs r2, #0 - 8003da4: 4906 ldr r1, [pc, #24] @ (8003dc0 ) - 8003da6: 68f8 ldr r0, [r7, #12] - 8003da8: f000 faa8 bl 80042fc - 8003dac: 4603 mov r3, r0 - 8003dae: 2b00 cmp r3, #0 - 8003db0: d008 beq.n 8003dc4 - { - return HAL_ERROR; - 8003db2: 2301 movs r3, #1 - 8003db4: e148 b.n 8004048 - 8003db6: bf00 nop - 8003db8: 00100002 .word 0x00100002 - 8003dbc: ffff0000 .word 0xffff0000 - 8003dc0: 00010004 .word 0x00010004 - __ASM volatile ("cpsid i" : : : "memory"); - 8003dc4: b672 cpsid i -} - 8003dc6: bf00 nop - /* Disable all active IRQs around ADDR clearing and STOP programming because the EV6_3 - software sequence must complete before the current byte end of transfer */ - __disable_irq(); + 8003d82: 6a5b ldr r3, [r3, #36] @ 0x24 + 8003d84: 781a ldrb r2, [r3, #0] + 8003d86: 68fb ldr r3, [r7, #12] + 8003d88: 681b ldr r3, [r3, #0] + 8003d8a: 611a str r2, [r3, #16] + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + 8003d8c: 68fb ldr r3, [r7, #12] + 8003d8e: 6a5b ldr r3, [r3, #36] @ 0x24 + 8003d90: 1c5a adds r2, r3, #1 + 8003d92: 68fb ldr r3, [r7, #12] + 8003d94: 625a str r2, [r3, #36] @ 0x24 + + /* Update counter */ + hi2c->XferCount--; + 8003d96: 68fb ldr r3, [r7, #12] + 8003d98: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8003d9a: b29b uxth r3, r3 + 8003d9c: 3b01 subs r3, #1 + 8003d9e: b29a uxth r2, r3 + 8003da0: 68fb ldr r3, [r7, #12] + 8003da2: 855a strh r2, [r3, #42] @ 0x2a + hi2c->XferSize--; + 8003da4: 68fb ldr r3, [r7, #12] + 8003da6: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8003da8: 3b01 subs r3, #1 + 8003daa: b29a uxth r2, r3 + 8003dac: 68fb ldr r3, [r7, #12] + 8003dae: 851a strh r2, [r3, #40] @ 0x28 + } + + /* Wait until BTF flag is set */ + if (I2C_WaitOnBTFFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + 8003db0: 697a ldr r2, [r7, #20] + 8003db2: 6a39 ldr r1, [r7, #32] + 8003db4: 68f8 ldr r0, [r7, #12] + 8003db6: f000 fd53 bl 8004860 + 8003dba: 4603 mov r3, r0 + 8003dbc: 2b00 cmp r3, #0 + 8003dbe: d00d beq.n 8003ddc + { + if (hi2c->ErrorCode == HAL_I2C_ERROR_AF) + 8003dc0: 68fb ldr r3, [r7, #12] + 8003dc2: 6c1b ldr r3, [r3, #64] @ 0x40 + 8003dc4: 2b04 cmp r3, #4 + 8003dc6: d107 bne.n 8003dd8 + { /* Generate Stop */ SET_BIT(hi2c->Instance->CR1, I2C_CR1_STOP); 8003dc8: 68fb ldr r3, [r7, #12] @@ -9538,7222 +9434,7694 @@ HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAd 8003dd0: 681b ldr r3, [r3, #0] 8003dd2: f442 7200 orr.w r2, r2, #512 @ 0x200 8003dd6: 601a str r2, [r3, #0] + } + return HAL_ERROR; + 8003dd8: 2301 movs r3, #1 + 8003dda: e01a b.n 8003e12 + while (hi2c->XferSize > 0U) + 8003ddc: 68fb ldr r3, [r7, #12] + 8003dde: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8003de0: 2b00 cmp r3, #0 + 8003de2: d194 bne.n 8003d0e + } + } + + /* Generate Stop */ + SET_BIT(hi2c->Instance->CR1, I2C_CR1_STOP); + 8003de4: 68fb ldr r3, [r7, #12] + 8003de6: 681b ldr r3, [r3, #0] + 8003de8: 681a ldr r2, [r3, #0] + 8003dea: 68fb ldr r3, [r7, #12] + 8003dec: 681b ldr r3, [r3, #0] + 8003dee: f442 7200 orr.w r2, r2, #512 @ 0x200 + 8003df2: 601a str r2, [r3, #0] + + hi2c->State = HAL_I2C_STATE_READY; + 8003df4: 68fb ldr r3, [r7, #12] + 8003df6: 2220 movs r2, #32 + 8003df8: f883 203d strb.w r2, [r3, #61] @ 0x3d + hi2c->Mode = HAL_I2C_MODE_NONE; + 8003dfc: 68fb ldr r3, [r7, #12] + 8003dfe: 2200 movs r2, #0 + 8003e00: f883 203e strb.w r2, [r3, #62] @ 0x3e + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + 8003e04: 68fb ldr r3, [r7, #12] + 8003e06: 2200 movs r2, #0 + 8003e08: f883 203c strb.w r2, [r3, #60] @ 0x3c + + return HAL_OK; + 8003e0c: 2300 movs r3, #0 + 8003e0e: e000 b.n 8003e12 + } + else + { + return HAL_BUSY; + 8003e10: 2302 movs r3, #2 + } +} + 8003e12: 4618 mov r0, r3 + 8003e14: 3718 adds r7, #24 + 8003e16: 46bd mov sp, r7 + 8003e18: bd80 pop {r7, pc} + 8003e1a: bf00 nop + 8003e1c: 00100002 .word 0x00100002 + 8003e20: ffff0000 .word 0xffff0000 + +08003e24 : + * @param Size Amount of data to be sent + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ + 8003e24: b580 push {r7, lr} + 8003e26: b08c sub sp, #48 @ 0x30 + 8003e28: af02 add r7, sp, #8 + 8003e2a: 60f8 str r0, [r7, #12] + 8003e2c: 607a str r2, [r7, #4] + 8003e2e: 461a mov r2, r3 + 8003e30: 460b mov r3, r1 + 8003e32: 817b strh r3, [r7, #10] + 8003e34: 4613 mov r3, r2 + 8003e36: 813b strh r3, [r7, #8] + __IO uint32_t count = 0U; + 8003e38: 2300 movs r3, #0 + 8003e3a: 623b str r3, [r7, #32] + + /* Init tickstart for timeout management*/ + uint32_t tickstart = HAL_GetTick(); + 8003e3c: f7ff f808 bl 8002e50 + 8003e40: 6278 str r0, [r7, #36] @ 0x24 + + if (hi2c->State == HAL_I2C_STATE_READY) + 8003e42: 68fb ldr r3, [r7, #12] + 8003e44: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 8003e48: b2db uxtb r3, r3 + 8003e4a: 2b20 cmp r3, #32 + 8003e4c: f040 824b bne.w 80042e6 + { + /* Wait until BUSY flag is reset */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY_FLAG, tickstart) != HAL_OK) + 8003e50: 6a7b ldr r3, [r7, #36] @ 0x24 + 8003e52: 9300 str r3, [sp, #0] + 8003e54: 2319 movs r3, #25 + 8003e56: 2201 movs r2, #1 + 8003e58: 497f ldr r1, [pc, #508] @ (8004058 ) + 8003e5a: 68f8 ldr r0, [r7, #12] + 8003e5c: f000 fb9e bl 800459c + 8003e60: 4603 mov r3, r0 + 8003e62: 2b00 cmp r3, #0 + 8003e64: d001 beq.n 8003e6a + { + return HAL_BUSY; + 8003e66: 2302 movs r3, #2 + 8003e68: e23e b.n 80042e8 + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + 8003e6a: 68fb ldr r3, [r7, #12] + 8003e6c: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 8003e70: 2b01 cmp r3, #1 + 8003e72: d101 bne.n 8003e78 + 8003e74: 2302 movs r3, #2 + 8003e76: e237 b.n 80042e8 + 8003e78: 68fb ldr r3, [r7, #12] + 8003e7a: 2201 movs r2, #1 + 8003e7c: f883 203c strb.w r2, [r3, #60] @ 0x3c + + /* Check if the I2C is already enabled */ + if ((hi2c->Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE) + 8003e80: 68fb ldr r3, [r7, #12] + 8003e82: 681b ldr r3, [r3, #0] + 8003e84: 681b ldr r3, [r3, #0] + 8003e86: f003 0301 and.w r3, r3, #1 + 8003e8a: 2b01 cmp r3, #1 + 8003e8c: d007 beq.n 8003e9e + { + /* Enable I2C peripheral */ + __HAL_I2C_ENABLE(hi2c); + 8003e8e: 68fb ldr r3, [r7, #12] + 8003e90: 681b ldr r3, [r3, #0] + 8003e92: 681a ldr r2, [r3, #0] + 8003e94: 68fb ldr r3, [r7, #12] + 8003e96: 681b ldr r3, [r3, #0] + 8003e98: f042 0201 orr.w r2, r2, #1 + 8003e9c: 601a str r2, [r3, #0] + } + + /* Disable Pos */ + CLEAR_BIT(hi2c->Instance->CR1, I2C_CR1_POS); + 8003e9e: 68fb ldr r3, [r7, #12] + 8003ea0: 681b ldr r3, [r3, #0] + 8003ea2: 681a ldr r2, [r3, #0] + 8003ea4: 68fb ldr r3, [r7, #12] + 8003ea6: 681b ldr r3, [r3, #0] + 8003ea8: f422 6200 bic.w r2, r2, #2048 @ 0x800 + 8003eac: 601a str r2, [r3, #0] + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + 8003eae: 68fb ldr r3, [r7, #12] + 8003eb0: 2222 movs r2, #34 @ 0x22 + 8003eb2: f883 203d strb.w r2, [r3, #61] @ 0x3d + hi2c->Mode = HAL_I2C_MODE_MASTER; + 8003eb6: 68fb ldr r3, [r7, #12] + 8003eb8: 2210 movs r2, #16 + 8003eba: f883 203e strb.w r2, [r3, #62] @ 0x3e + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 8003ebe: 68fb ldr r3, [r7, #12] + 8003ec0: 2200 movs r2, #0 + 8003ec2: 641a str r2, [r3, #64] @ 0x40 + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + 8003ec4: 68fb ldr r3, [r7, #12] + 8003ec6: 687a ldr r2, [r7, #4] + 8003ec8: 625a str r2, [r3, #36] @ 0x24 + hi2c->XferCount = Size; + 8003eca: 68fb ldr r3, [r7, #12] + 8003ecc: 893a ldrh r2, [r7, #8] + 8003ece: 855a strh r2, [r3, #42] @ 0x2a + hi2c->XferSize = hi2c->XferCount; + 8003ed0: 68fb ldr r3, [r7, #12] + 8003ed2: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8003ed4: b29a uxth r2, r3 + 8003ed6: 68fb ldr r3, [r7, #12] + 8003ed8: 851a strh r2, [r3, #40] @ 0x28 + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 8003eda: 68fb ldr r3, [r7, #12] + 8003edc: 4a5f ldr r2, [pc, #380] @ (800405c ) + 8003ede: 62da str r2, [r3, #44] @ 0x2c + + /* Send Slave Address */ + if (I2C_MasterRequestRead(hi2c, DevAddress, Timeout, tickstart) != HAL_OK) + 8003ee0: 8979 ldrh r1, [r7, #10] + 8003ee2: 6a7b ldr r3, [r7, #36] @ 0x24 + 8003ee4: 6b3a ldr r2, [r7, #48] @ 0x30 + 8003ee6: 68f8 ldr r0, [r7, #12] + 8003ee8: f000 fa8a bl 8004400 + 8003eec: 4603 mov r3, r0 + 8003eee: 2b00 cmp r3, #0 + 8003ef0: d001 beq.n 8003ef6 + { + return HAL_ERROR; + 8003ef2: 2301 movs r3, #1 + 8003ef4: e1f8 b.n 80042e8 + } + + if (hi2c->XferSize == 0U) + 8003ef6: 68fb ldr r3, [r7, #12] + 8003ef8: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8003efa: 2b00 cmp r3, #0 + 8003efc: d113 bne.n 8003f26 + { + /* Clear ADDR flag */ + __HAL_I2C_CLEAR_ADDRFLAG(hi2c); + 8003efe: 2300 movs r3, #0 + 8003f00: 61fb str r3, [r7, #28] + 8003f02: 68fb ldr r3, [r7, #12] + 8003f04: 681b ldr r3, [r3, #0] + 8003f06: 695b ldr r3, [r3, #20] + 8003f08: 61fb str r3, [r7, #28] + 8003f0a: 68fb ldr r3, [r7, #12] + 8003f0c: 681b ldr r3, [r3, #0] + 8003f0e: 699b ldr r3, [r3, #24] + 8003f10: 61fb str r3, [r7, #28] + 8003f12: 69fb ldr r3, [r7, #28] + + /* Generate Stop */ + SET_BIT(hi2c->Instance->CR1, I2C_CR1_STOP); + 8003f14: 68fb ldr r3, [r7, #12] + 8003f16: 681b ldr r3, [r3, #0] + 8003f18: 681a ldr r2, [r3, #0] + 8003f1a: 68fb ldr r3, [r7, #12] + 8003f1c: 681b ldr r3, [r3, #0] + 8003f1e: f442 7200 orr.w r2, r2, #512 @ 0x200 + 8003f22: 601a str r2, [r3, #0] + 8003f24: e1cc b.n 80042c0 + } + else if (hi2c->XferSize == 1U) + 8003f26: 68fb ldr r3, [r7, #12] + 8003f28: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8003f2a: 2b01 cmp r3, #1 + 8003f2c: d11e bne.n 8003f6c + { + /* Disable Acknowledge */ + CLEAR_BIT(hi2c->Instance->CR1, I2C_CR1_ACK); + 8003f2e: 68fb ldr r3, [r7, #12] + 8003f30: 681b ldr r3, [r3, #0] + 8003f32: 681a ldr r2, [r3, #0] + 8003f34: 68fb ldr r3, [r7, #12] + 8003f36: 681b ldr r3, [r3, #0] + 8003f38: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 8003f3c: 601a str r2, [r3, #0] + __ASM volatile ("cpsid i" : : : "memory"); + 8003f3e: b672 cpsid i +} + 8003f40: bf00 nop + /* Disable all active IRQs around ADDR clearing and STOP programming because the EV6_3 + software sequence must complete before the current byte end of transfer */ + __disable_irq(); + + /* Clear ADDR flag */ + __HAL_I2C_CLEAR_ADDRFLAG(hi2c); + 8003f42: 2300 movs r3, #0 + 8003f44: 61bb str r3, [r7, #24] + 8003f46: 68fb ldr r3, [r7, #12] + 8003f48: 681b ldr r3, [r3, #0] + 8003f4a: 695b ldr r3, [r3, #20] + 8003f4c: 61bb str r3, [r7, #24] + 8003f4e: 68fb ldr r3, [r7, #12] + 8003f50: 681b ldr r3, [r3, #0] + 8003f52: 699b ldr r3, [r3, #24] + 8003f54: 61bb str r3, [r7, #24] + 8003f56: 69bb ldr r3, [r7, #24] + + /* Generate Stop */ + SET_BIT(hi2c->Instance->CR1, I2C_CR1_STOP); + 8003f58: 68fb ldr r3, [r7, #12] + 8003f5a: 681b ldr r3, [r3, #0] + 8003f5c: 681a ldr r2, [r3, #0] + 8003f5e: 68fb ldr r3, [r7, #12] + 8003f60: 681b ldr r3, [r3, #0] + 8003f62: f442 7200 orr.w r2, r2, #512 @ 0x200 + 8003f66: 601a str r2, [r3, #0] + __ASM volatile ("cpsie i" : : : "memory"); + 8003f68: b662 cpsie i +} + 8003f6a: e035 b.n 8003fd8 + + /* Re-enable IRQs */ + __enable_irq(); + } + else if (hi2c->XferSize == 2U) + 8003f6c: 68fb ldr r3, [r7, #12] + 8003f6e: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8003f70: 2b02 cmp r3, #2 + 8003f72: d11e bne.n 8003fb2 + { + /* Enable Pos */ + SET_BIT(hi2c->Instance->CR1, I2C_CR1_POS); + 8003f74: 68fb ldr r3, [r7, #12] + 8003f76: 681b ldr r3, [r3, #0] + 8003f78: 681a ldr r2, [r3, #0] + 8003f7a: 68fb ldr r3, [r7, #12] + 8003f7c: 681b ldr r3, [r3, #0] + 8003f7e: f442 6200 orr.w r2, r2, #2048 @ 0x800 + 8003f82: 601a str r2, [r3, #0] + __ASM volatile ("cpsid i" : : : "memory"); + 8003f84: b672 cpsid i +} + 8003f86: bf00 nop + /* Disable all active IRQs around ADDR clearing and STOP programming because the EV6_3 + software sequence must complete before the current byte end of transfer */ + __disable_irq(); + + /* Clear ADDR flag */ + __HAL_I2C_CLEAR_ADDRFLAG(hi2c); + 8003f88: 2300 movs r3, #0 + 8003f8a: 617b str r3, [r7, #20] + 8003f8c: 68fb ldr r3, [r7, #12] + 8003f8e: 681b ldr r3, [r3, #0] + 8003f90: 695b ldr r3, [r3, #20] + 8003f92: 617b str r3, [r7, #20] + 8003f94: 68fb ldr r3, [r7, #12] + 8003f96: 681b ldr r3, [r3, #0] + 8003f98: 699b ldr r3, [r3, #24] + 8003f9a: 617b str r3, [r7, #20] + 8003f9c: 697b ldr r3, [r7, #20] + + /* Disable Acknowledge */ + CLEAR_BIT(hi2c->Instance->CR1, I2C_CR1_ACK); + 8003f9e: 68fb ldr r3, [r7, #12] + 8003fa0: 681b ldr r3, [r3, #0] + 8003fa2: 681a ldr r2, [r3, #0] + 8003fa4: 68fb ldr r3, [r7, #12] + 8003fa6: 681b ldr r3, [r3, #0] + 8003fa8: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 8003fac: 601a str r2, [r3, #0] + __ASM volatile ("cpsie i" : : : "memory"); + 8003fae: b662 cpsie i +} + 8003fb0: e012 b.n 8003fd8 + __enable_irq(); + } + else + { + /* Enable Acknowledge */ + SET_BIT(hi2c->Instance->CR1, I2C_CR1_ACK); + 8003fb2: 68fb ldr r3, [r7, #12] + 8003fb4: 681b ldr r3, [r3, #0] + 8003fb6: 681a ldr r2, [r3, #0] + 8003fb8: 68fb ldr r3, [r7, #12] + 8003fba: 681b ldr r3, [r3, #0] + 8003fbc: f442 6280 orr.w r2, r2, #1024 @ 0x400 + 8003fc0: 601a str r2, [r3, #0] + + /* Clear ADDR flag */ + __HAL_I2C_CLEAR_ADDRFLAG(hi2c); + 8003fc2: 2300 movs r3, #0 + 8003fc4: 613b str r3, [r7, #16] + 8003fc6: 68fb ldr r3, [r7, #12] + 8003fc8: 681b ldr r3, [r3, #0] + 8003fca: 695b ldr r3, [r3, #20] + 8003fcc: 613b str r3, [r7, #16] + 8003fce: 68fb ldr r3, [r7, #12] + 8003fd0: 681b ldr r3, [r3, #0] + 8003fd2: 699b ldr r3, [r3, #24] + 8003fd4: 613b str r3, [r7, #16] + 8003fd6: 693b ldr r3, [r7, #16] + } + + while (hi2c->XferSize > 0U) + 8003fd8: e172 b.n 80042c0 + { + if (hi2c->XferSize <= 3U) + 8003fda: 68fb ldr r3, [r7, #12] + 8003fdc: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8003fde: 2b03 cmp r3, #3 + 8003fe0: f200 811f bhi.w 8004222 + { + /* One byte */ + if (hi2c->XferSize == 1U) + 8003fe4: 68fb ldr r3, [r7, #12] + 8003fe6: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8003fe8: 2b01 cmp r3, #1 + 8003fea: d123 bne.n 8004034 + { + /* Wait until RXNE flag is set */ + if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + 8003fec: 6a7a ldr r2, [r7, #36] @ 0x24 + 8003fee: 6b39 ldr r1, [r7, #48] @ 0x30 + 8003ff0: 68f8 ldr r0, [r7, #12] + 8003ff2: f000 fc7d bl 80048f0 + 8003ff6: 4603 mov r3, r0 + 8003ff8: 2b00 cmp r3, #0 + 8003ffa: d001 beq.n 8004000 + { + return HAL_ERROR; + 8003ffc: 2301 movs r3, #1 + 8003ffe: e173 b.n 80042e8 + } /* Read data from DR */ *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->DR; - 8003dd8: 68fb ldr r3, [r7, #12] - 8003dda: 681b ldr r3, [r3, #0] - 8003ddc: 691a ldr r2, [r3, #16] - 8003dde: 68fb ldr r3, [r7, #12] - 8003de0: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003de2: b2d2 uxtb r2, r2 - 8003de4: 701a strb r2, [r3, #0] + 8004000: 68fb ldr r3, [r7, #12] + 8004002: 681b ldr r3, [r3, #0] + 8004004: 691a ldr r2, [r3, #16] + 8004006: 68fb ldr r3, [r7, #12] + 8004008: 6a5b ldr r3, [r3, #36] @ 0x24 + 800400a: b2d2 uxtb r2, r2 + 800400c: 701a strb r2, [r3, #0] /* Increment Buffer pointer */ hi2c->pBuffPtr++; - 8003de6: 68fb ldr r3, [r7, #12] - 8003de8: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003dea: 1c5a adds r2, r3, #1 - 8003dec: 68fb ldr r3, [r7, #12] - 8003dee: 625a str r2, [r3, #36] @ 0x24 + 800400e: 68fb ldr r3, [r7, #12] + 8004010: 6a5b ldr r3, [r3, #36] @ 0x24 + 8004012: 1c5a adds r2, r3, #1 + 8004014: 68fb ldr r3, [r7, #12] + 8004016: 625a str r2, [r3, #36] @ 0x24 /* Update counter */ hi2c->XferSize--; - 8003df0: 68fb ldr r3, [r7, #12] - 8003df2: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8003df4: 3b01 subs r3, #1 - 8003df6: b29a uxth r2, r3 - 8003df8: 68fb ldr r3, [r7, #12] - 8003dfa: 851a strh r2, [r3, #40] @ 0x28 + 8004018: 68fb ldr r3, [r7, #12] + 800401a: 8d1b ldrh r3, [r3, #40] @ 0x28 + 800401c: 3b01 subs r3, #1 + 800401e: b29a uxth r2, r3 + 8004020: 68fb ldr r3, [r7, #12] + 8004022: 851a strh r2, [r3, #40] @ 0x28 hi2c->XferCount--; - 8003dfc: 68fb ldr r3, [r7, #12] - 8003dfe: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8003e00: b29b uxth r3, r3 - 8003e02: 3b01 subs r3, #1 - 8003e04: b29a uxth r2, r3 - 8003e06: 68fb ldr r3, [r7, #12] - 8003e08: 855a strh r2, [r3, #42] @ 0x2a - __ASM volatile ("cpsie i" : : : "memory"); - 8003e0a: b662 cpsie i + 8004024: 68fb ldr r3, [r7, #12] + 8004026: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8004028: b29b uxth r3, r3 + 800402a: 3b01 subs r3, #1 + 800402c: b29a uxth r2, r3 + 800402e: 68fb ldr r3, [r7, #12] + 8004030: 855a strh r2, [r3, #42] @ 0x2a + 8004032: e145 b.n 80042c0 + } + /* Two bytes */ + else if (hi2c->XferSize == 2U) + 8004034: 68fb ldr r3, [r7, #12] + 8004036: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8004038: 2b02 cmp r3, #2 + 800403a: d152 bne.n 80040e2 + { + /* Wait until BTF flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BTF, RESET, Timeout, tickstart) != HAL_OK) + 800403c: 6a7b ldr r3, [r7, #36] @ 0x24 + 800403e: 9300 str r3, [sp, #0] + 8004040: 6b3b ldr r3, [r7, #48] @ 0x30 + 8004042: 2200 movs r2, #0 + 8004044: 4906 ldr r1, [pc, #24] @ (8004060 ) + 8004046: 68f8 ldr r0, [r7, #12] + 8004048: f000 faa8 bl 800459c + 800404c: 4603 mov r3, r0 + 800404e: 2b00 cmp r3, #0 + 8004050: d008 beq.n 8004064 + { + return HAL_ERROR; + 8004052: 2301 movs r3, #1 + 8004054: e148 b.n 80042e8 + 8004056: bf00 nop + 8004058: 00100002 .word 0x00100002 + 800405c: ffff0000 .word 0xffff0000 + 8004060: 00010004 .word 0x00010004 + __ASM volatile ("cpsid i" : : : "memory"); + 8004064: b672 cpsid i } - 8003e0c: bf00 nop + 8004066: bf00 nop + /* Disable all active IRQs around ADDR clearing and STOP programming because the EV6_3 + software sequence must complete before the current byte end of transfer */ + __disable_irq(); + + /* Generate Stop */ + SET_BIT(hi2c->Instance->CR1, I2C_CR1_STOP); + 8004068: 68fb ldr r3, [r7, #12] + 800406a: 681b ldr r3, [r3, #0] + 800406c: 681a ldr r2, [r3, #0] + 800406e: 68fb ldr r3, [r7, #12] + 8004070: 681b ldr r3, [r3, #0] + 8004072: f442 7200 orr.w r2, r2, #512 @ 0x200 + 8004076: 601a str r2, [r3, #0] + + /* Read data from DR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->DR; + 8004078: 68fb ldr r3, [r7, #12] + 800407a: 681b ldr r3, [r3, #0] + 800407c: 691a ldr r2, [r3, #16] + 800407e: 68fb ldr r3, [r7, #12] + 8004080: 6a5b ldr r3, [r3, #36] @ 0x24 + 8004082: b2d2 uxtb r2, r2 + 8004084: 701a strb r2, [r3, #0] + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + 8004086: 68fb ldr r3, [r7, #12] + 8004088: 6a5b ldr r3, [r3, #36] @ 0x24 + 800408a: 1c5a adds r2, r3, #1 + 800408c: 68fb ldr r3, [r7, #12] + 800408e: 625a str r2, [r3, #36] @ 0x24 + + /* Update counter */ + hi2c->XferSize--; + 8004090: 68fb ldr r3, [r7, #12] + 8004092: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8004094: 3b01 subs r3, #1 + 8004096: b29a uxth r2, r3 + 8004098: 68fb ldr r3, [r7, #12] + 800409a: 851a strh r2, [r3, #40] @ 0x28 + hi2c->XferCount--; + 800409c: 68fb ldr r3, [r7, #12] + 800409e: 8d5b ldrh r3, [r3, #42] @ 0x2a + 80040a0: b29b uxth r3, r3 + 80040a2: 3b01 subs r3, #1 + 80040a4: b29a uxth r2, r3 + 80040a6: 68fb ldr r3, [r7, #12] + 80040a8: 855a strh r2, [r3, #42] @ 0x2a + __ASM volatile ("cpsie i" : : : "memory"); + 80040aa: b662 cpsie i +} + 80040ac: bf00 nop /* Re-enable IRQs */ __enable_irq(); /* Read data from DR */ *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->DR; - 8003e0e: 68fb ldr r3, [r7, #12] - 8003e10: 681b ldr r3, [r3, #0] - 8003e12: 691a ldr r2, [r3, #16] - 8003e14: 68fb ldr r3, [r7, #12] - 8003e16: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003e18: b2d2 uxtb r2, r2 - 8003e1a: 701a strb r2, [r3, #0] + 80040ae: 68fb ldr r3, [r7, #12] + 80040b0: 681b ldr r3, [r3, #0] + 80040b2: 691a ldr r2, [r3, #16] + 80040b4: 68fb ldr r3, [r7, #12] + 80040b6: 6a5b ldr r3, [r3, #36] @ 0x24 + 80040b8: b2d2 uxtb r2, r2 + 80040ba: 701a strb r2, [r3, #0] /* Increment Buffer pointer */ hi2c->pBuffPtr++; - 8003e1c: 68fb ldr r3, [r7, #12] - 8003e1e: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003e20: 1c5a adds r2, r3, #1 - 8003e22: 68fb ldr r3, [r7, #12] - 8003e24: 625a str r2, [r3, #36] @ 0x24 + 80040bc: 68fb ldr r3, [r7, #12] + 80040be: 6a5b ldr r3, [r3, #36] @ 0x24 + 80040c0: 1c5a adds r2, r3, #1 + 80040c2: 68fb ldr r3, [r7, #12] + 80040c4: 625a str r2, [r3, #36] @ 0x24 /* Update counter */ hi2c->XferSize--; - 8003e26: 68fb ldr r3, [r7, #12] - 8003e28: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8003e2a: 3b01 subs r3, #1 - 8003e2c: b29a uxth r2, r3 - 8003e2e: 68fb ldr r3, [r7, #12] - 8003e30: 851a strh r2, [r3, #40] @ 0x28 + 80040c6: 68fb ldr r3, [r7, #12] + 80040c8: 8d1b ldrh r3, [r3, #40] @ 0x28 + 80040ca: 3b01 subs r3, #1 + 80040cc: b29a uxth r2, r3 + 80040ce: 68fb ldr r3, [r7, #12] + 80040d0: 851a strh r2, [r3, #40] @ 0x28 hi2c->XferCount--; - 8003e32: 68fb ldr r3, [r7, #12] - 8003e34: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8003e36: b29b uxth r3, r3 - 8003e38: 3b01 subs r3, #1 - 8003e3a: b29a uxth r2, r3 - 8003e3c: 68fb ldr r3, [r7, #12] - 8003e3e: 855a strh r2, [r3, #42] @ 0x2a - 8003e40: e0ee b.n 8004020 + 80040d2: 68fb ldr r3, [r7, #12] + 80040d4: 8d5b ldrh r3, [r3, #42] @ 0x2a + 80040d6: b29b uxth r3, r3 + 80040d8: 3b01 subs r3, #1 + 80040da: b29a uxth r2, r3 + 80040dc: 68fb ldr r3, [r7, #12] + 80040de: 855a strh r2, [r3, #42] @ 0x2a + 80040e0: e0ee b.n 80042c0 } /* 3 Last bytes */ else { /* Wait until BTF flag is set */ if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BTF, RESET, Timeout, tickstart) != HAL_OK) - 8003e42: 6a7b ldr r3, [r7, #36] @ 0x24 - 8003e44: 9300 str r3, [sp, #0] - 8003e46: 6b3b ldr r3, [r7, #48] @ 0x30 - 8003e48: 2200 movs r2, #0 - 8003e4a: 4981 ldr r1, [pc, #516] @ (8004050 ) - 8003e4c: 68f8 ldr r0, [r7, #12] - 8003e4e: f000 fa55 bl 80042fc - 8003e52: 4603 mov r3, r0 - 8003e54: 2b00 cmp r3, #0 - 8003e56: d001 beq.n 8003e5c + 80040e2: 6a7b ldr r3, [r7, #36] @ 0x24 + 80040e4: 9300 str r3, [sp, #0] + 80040e6: 6b3b ldr r3, [r7, #48] @ 0x30 + 80040e8: 2200 movs r2, #0 + 80040ea: 4981 ldr r1, [pc, #516] @ (80042f0 ) + 80040ec: 68f8 ldr r0, [r7, #12] + 80040ee: f000 fa55 bl 800459c + 80040f2: 4603 mov r3, r0 + 80040f4: 2b00 cmp r3, #0 + 80040f6: d001 beq.n 80040fc { return HAL_ERROR; - 8003e58: 2301 movs r3, #1 - 8003e5a: e0f5 b.n 8004048 + 80040f8: 2301 movs r3, #1 + 80040fa: e0f5 b.n 80042e8 } /* Disable Acknowledge */ CLEAR_BIT(hi2c->Instance->CR1, I2C_CR1_ACK); - 8003e5c: 68fb ldr r3, [r7, #12] - 8003e5e: 681b ldr r3, [r3, #0] - 8003e60: 681a ldr r2, [r3, #0] - 8003e62: 68fb ldr r3, [r7, #12] - 8003e64: 681b ldr r3, [r3, #0] - 8003e66: f422 6280 bic.w r2, r2, #1024 @ 0x400 - 8003e6a: 601a str r2, [r3, #0] + 80040fc: 68fb ldr r3, [r7, #12] + 80040fe: 681b ldr r3, [r3, #0] + 8004100: 681a ldr r2, [r3, #0] + 8004102: 68fb ldr r3, [r7, #12] + 8004104: 681b ldr r3, [r3, #0] + 8004106: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 800410a: 601a str r2, [r3, #0] __ASM volatile ("cpsid i" : : : "memory"); - 8003e6c: b672 cpsid i + 800410c: b672 cpsid i } - 8003e6e: bf00 nop + 800410e: bf00 nop /* Disable all active IRQs around ADDR clearing and STOP programming because the EV6_3 software sequence must complete before the current byte end of transfer */ __disable_irq(); /* Read data from DR */ *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->DR; - 8003e70: 68fb ldr r3, [r7, #12] - 8003e72: 681b ldr r3, [r3, #0] - 8003e74: 691a ldr r2, [r3, #16] - 8003e76: 68fb ldr r3, [r7, #12] - 8003e78: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003e7a: b2d2 uxtb r2, r2 - 8003e7c: 701a strb r2, [r3, #0] + 8004110: 68fb ldr r3, [r7, #12] + 8004112: 681b ldr r3, [r3, #0] + 8004114: 691a ldr r2, [r3, #16] + 8004116: 68fb ldr r3, [r7, #12] + 8004118: 6a5b ldr r3, [r3, #36] @ 0x24 + 800411a: b2d2 uxtb r2, r2 + 800411c: 701a strb r2, [r3, #0] /* Increment Buffer pointer */ hi2c->pBuffPtr++; - 8003e7e: 68fb ldr r3, [r7, #12] - 8003e80: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003e82: 1c5a adds r2, r3, #1 - 8003e84: 68fb ldr r3, [r7, #12] - 8003e86: 625a str r2, [r3, #36] @ 0x24 + 800411e: 68fb ldr r3, [r7, #12] + 8004120: 6a5b ldr r3, [r3, #36] @ 0x24 + 8004122: 1c5a adds r2, r3, #1 + 8004124: 68fb ldr r3, [r7, #12] + 8004126: 625a str r2, [r3, #36] @ 0x24 /* Update counter */ hi2c->XferSize--; - 8003e88: 68fb ldr r3, [r7, #12] - 8003e8a: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8003e8c: 3b01 subs r3, #1 - 8003e8e: b29a uxth r2, r3 - 8003e90: 68fb ldr r3, [r7, #12] - 8003e92: 851a strh r2, [r3, #40] @ 0x28 + 8004128: 68fb ldr r3, [r7, #12] + 800412a: 8d1b ldrh r3, [r3, #40] @ 0x28 + 800412c: 3b01 subs r3, #1 + 800412e: b29a uxth r2, r3 + 8004130: 68fb ldr r3, [r7, #12] + 8004132: 851a strh r2, [r3, #40] @ 0x28 hi2c->XferCount--; - 8003e94: 68fb ldr r3, [r7, #12] - 8003e96: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8003e98: b29b uxth r3, r3 - 8003e9a: 3b01 subs r3, #1 - 8003e9c: b29a uxth r2, r3 - 8003e9e: 68fb ldr r3, [r7, #12] - 8003ea0: 855a strh r2, [r3, #42] @ 0x2a + 8004134: 68fb ldr r3, [r7, #12] + 8004136: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8004138: b29b uxth r3, r3 + 800413a: 3b01 subs r3, #1 + 800413c: b29a uxth r2, r3 + 800413e: 68fb ldr r3, [r7, #12] + 8004140: 855a strh r2, [r3, #42] @ 0x2a /* Wait until BTF flag is set */ count = I2C_TIMEOUT_FLAG * (SystemCoreClock / 25U / 1000U); - 8003ea2: 4b6c ldr r3, [pc, #432] @ (8004054 ) - 8003ea4: 681b ldr r3, [r3, #0] - 8003ea6: 08db lsrs r3, r3, #3 - 8003ea8: 4a6b ldr r2, [pc, #428] @ (8004058 ) - 8003eaa: fba2 2303 umull r2, r3, r2, r3 - 8003eae: 0a1a lsrs r2, r3, #8 - 8003eb0: 4613 mov r3, r2 - 8003eb2: 009b lsls r3, r3, #2 - 8003eb4: 4413 add r3, r2 - 8003eb6: 00da lsls r2, r3, #3 - 8003eb8: 1ad3 subs r3, r2, r3 - 8003eba: 623b str r3, [r7, #32] + 8004142: 4b6c ldr r3, [pc, #432] @ (80042f4 ) + 8004144: 681b ldr r3, [r3, #0] + 8004146: 08db lsrs r3, r3, #3 + 8004148: 4a6b ldr r2, [pc, #428] @ (80042f8 ) + 800414a: fba2 2303 umull r2, r3, r2, r3 + 800414e: 0a1a lsrs r2, r3, #8 + 8004150: 4613 mov r3, r2 + 8004152: 009b lsls r3, r3, #2 + 8004154: 4413 add r3, r2 + 8004156: 00da lsls r2, r3, #3 + 8004158: 1ad3 subs r3, r2, r3 + 800415a: 623b str r3, [r7, #32] do { count--; - 8003ebc: 6a3b ldr r3, [r7, #32] - 8003ebe: 3b01 subs r3, #1 - 8003ec0: 623b str r3, [r7, #32] + 800415c: 6a3b ldr r3, [r7, #32] + 800415e: 3b01 subs r3, #1 + 8004160: 623b str r3, [r7, #32] if (count == 0U) - 8003ec2: 6a3b ldr r3, [r7, #32] - 8003ec4: 2b00 cmp r3, #0 - 8003ec6: d118 bne.n 8003efa + 8004162: 6a3b ldr r3, [r7, #32] + 8004164: 2b00 cmp r3, #0 + 8004166: d118 bne.n 800419a { hi2c->PreviousState = I2C_STATE_NONE; - 8003ec8: 68fb ldr r3, [r7, #12] - 8003eca: 2200 movs r2, #0 - 8003ecc: 631a str r2, [r3, #48] @ 0x30 + 8004168: 68fb ldr r3, [r7, #12] + 800416a: 2200 movs r2, #0 + 800416c: 631a str r2, [r3, #48] @ 0x30 hi2c->State = HAL_I2C_STATE_READY; - 8003ece: 68fb ldr r3, [r7, #12] - 8003ed0: 2220 movs r2, #32 - 8003ed2: f883 203d strb.w r2, [r3, #61] @ 0x3d + 800416e: 68fb ldr r3, [r7, #12] + 8004170: 2220 movs r2, #32 + 8004172: f883 203d strb.w r2, [r3, #61] @ 0x3d hi2c->Mode = HAL_I2C_MODE_NONE; - 8003ed6: 68fb ldr r3, [r7, #12] - 8003ed8: 2200 movs r2, #0 - 8003eda: f883 203e strb.w r2, [r3, #62] @ 0x3e + 8004176: 68fb ldr r3, [r7, #12] + 8004178: 2200 movs r2, #0 + 800417a: f883 203e strb.w r2, [r3, #62] @ 0x3e hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; - 8003ede: 68fb ldr r3, [r7, #12] - 8003ee0: 6c1b ldr r3, [r3, #64] @ 0x40 - 8003ee2: f043 0220 orr.w r2, r3, #32 - 8003ee6: 68fb ldr r3, [r7, #12] - 8003ee8: 641a str r2, [r3, #64] @ 0x40 + 800417e: 68fb ldr r3, [r7, #12] + 8004180: 6c1b ldr r3, [r3, #64] @ 0x40 + 8004182: f043 0220 orr.w r2, r3, #32 + 8004186: 68fb ldr r3, [r7, #12] + 8004188: 641a str r2, [r3, #64] @ 0x40 __ASM volatile ("cpsie i" : : : "memory"); - 8003eea: b662 cpsie i + 800418a: b662 cpsie i } - 8003eec: bf00 nop + 800418c: bf00 nop /* Re-enable IRQs */ __enable_irq(); /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8003eee: 68fb ldr r3, [r7, #12] - 8003ef0: 2200 movs r2, #0 - 8003ef2: f883 203c strb.w r2, [r3, #60] @ 0x3c + 800418e: 68fb ldr r3, [r7, #12] + 8004190: 2200 movs r2, #0 + 8004192: f883 203c strb.w r2, [r3, #60] @ 0x3c return HAL_ERROR; - 8003ef6: 2301 movs r3, #1 - 8003ef8: e0a6 b.n 8004048 + 8004196: 2301 movs r3, #1 + 8004198: e0a6 b.n 80042e8 } } while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BTF) == RESET); - 8003efa: 68fb ldr r3, [r7, #12] - 8003efc: 681b ldr r3, [r3, #0] - 8003efe: 695b ldr r3, [r3, #20] - 8003f00: f003 0304 and.w r3, r3, #4 - 8003f04: 2b04 cmp r3, #4 - 8003f06: d1d9 bne.n 8003ebc + 800419a: 68fb ldr r3, [r7, #12] + 800419c: 681b ldr r3, [r3, #0] + 800419e: 695b ldr r3, [r3, #20] + 80041a0: f003 0304 and.w r3, r3, #4 + 80041a4: 2b04 cmp r3, #4 + 80041a6: d1d9 bne.n 800415c /* Generate Stop */ SET_BIT(hi2c->Instance->CR1, I2C_CR1_STOP); - 8003f08: 68fb ldr r3, [r7, #12] - 8003f0a: 681b ldr r3, [r3, #0] - 8003f0c: 681a ldr r2, [r3, #0] - 8003f0e: 68fb ldr r3, [r7, #12] - 8003f10: 681b ldr r3, [r3, #0] - 8003f12: f442 7200 orr.w r2, r2, #512 @ 0x200 - 8003f16: 601a str r2, [r3, #0] + 80041a8: 68fb ldr r3, [r7, #12] + 80041aa: 681b ldr r3, [r3, #0] + 80041ac: 681a ldr r2, [r3, #0] + 80041ae: 68fb ldr r3, [r7, #12] + 80041b0: 681b ldr r3, [r3, #0] + 80041b2: f442 7200 orr.w r2, r2, #512 @ 0x200 + 80041b6: 601a str r2, [r3, #0] /* Read data from DR */ *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->DR; - 8003f18: 68fb ldr r3, [r7, #12] - 8003f1a: 681b ldr r3, [r3, #0] - 8003f1c: 691a ldr r2, [r3, #16] - 8003f1e: 68fb ldr r3, [r7, #12] - 8003f20: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003f22: b2d2 uxtb r2, r2 - 8003f24: 701a strb r2, [r3, #0] + 80041b8: 68fb ldr r3, [r7, #12] + 80041ba: 681b ldr r3, [r3, #0] + 80041bc: 691a ldr r2, [r3, #16] + 80041be: 68fb ldr r3, [r7, #12] + 80041c0: 6a5b ldr r3, [r3, #36] @ 0x24 + 80041c2: b2d2 uxtb r2, r2 + 80041c4: 701a strb r2, [r3, #0] /* Increment Buffer pointer */ hi2c->pBuffPtr++; - 8003f26: 68fb ldr r3, [r7, #12] - 8003f28: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003f2a: 1c5a adds r2, r3, #1 - 8003f2c: 68fb ldr r3, [r7, #12] - 8003f2e: 625a str r2, [r3, #36] @ 0x24 + 80041c6: 68fb ldr r3, [r7, #12] + 80041c8: 6a5b ldr r3, [r3, #36] @ 0x24 + 80041ca: 1c5a adds r2, r3, #1 + 80041cc: 68fb ldr r3, [r7, #12] + 80041ce: 625a str r2, [r3, #36] @ 0x24 /* Update counter */ hi2c->XferSize--; - 8003f30: 68fb ldr r3, [r7, #12] - 8003f32: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8003f34: 3b01 subs r3, #1 - 8003f36: b29a uxth r2, r3 - 8003f38: 68fb ldr r3, [r7, #12] - 8003f3a: 851a strh r2, [r3, #40] @ 0x28 + 80041d0: 68fb ldr r3, [r7, #12] + 80041d2: 8d1b ldrh r3, [r3, #40] @ 0x28 + 80041d4: 3b01 subs r3, #1 + 80041d6: b29a uxth r2, r3 + 80041d8: 68fb ldr r3, [r7, #12] + 80041da: 851a strh r2, [r3, #40] @ 0x28 hi2c->XferCount--; - 8003f3c: 68fb ldr r3, [r7, #12] - 8003f3e: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8003f40: b29b uxth r3, r3 - 8003f42: 3b01 subs r3, #1 - 8003f44: b29a uxth r2, r3 - 8003f46: 68fb ldr r3, [r7, #12] - 8003f48: 855a strh r2, [r3, #42] @ 0x2a + 80041dc: 68fb ldr r3, [r7, #12] + 80041de: 8d5b ldrh r3, [r3, #42] @ 0x2a + 80041e0: b29b uxth r3, r3 + 80041e2: 3b01 subs r3, #1 + 80041e4: b29a uxth r2, r3 + 80041e6: 68fb ldr r3, [r7, #12] + 80041e8: 855a strh r2, [r3, #42] @ 0x2a __ASM volatile ("cpsie i" : : : "memory"); - 8003f4a: b662 cpsie i + 80041ea: b662 cpsie i } - 8003f4c: bf00 nop + 80041ec: bf00 nop /* Re-enable IRQs */ __enable_irq(); /* Read data from DR */ *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->DR; - 8003f4e: 68fb ldr r3, [r7, #12] - 8003f50: 681b ldr r3, [r3, #0] - 8003f52: 691a ldr r2, [r3, #16] - 8003f54: 68fb ldr r3, [r7, #12] - 8003f56: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003f58: b2d2 uxtb r2, r2 - 8003f5a: 701a strb r2, [r3, #0] + 80041ee: 68fb ldr r3, [r7, #12] + 80041f0: 681b ldr r3, [r3, #0] + 80041f2: 691a ldr r2, [r3, #16] + 80041f4: 68fb ldr r3, [r7, #12] + 80041f6: 6a5b ldr r3, [r3, #36] @ 0x24 + 80041f8: b2d2 uxtb r2, r2 + 80041fa: 701a strb r2, [r3, #0] /* Increment Buffer pointer */ hi2c->pBuffPtr++; - 8003f5c: 68fb ldr r3, [r7, #12] - 8003f5e: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003f60: 1c5a adds r2, r3, #1 - 8003f62: 68fb ldr r3, [r7, #12] - 8003f64: 625a str r2, [r3, #36] @ 0x24 + 80041fc: 68fb ldr r3, [r7, #12] + 80041fe: 6a5b ldr r3, [r3, #36] @ 0x24 + 8004200: 1c5a adds r2, r3, #1 + 8004202: 68fb ldr r3, [r7, #12] + 8004204: 625a str r2, [r3, #36] @ 0x24 /* Update counter */ hi2c->XferSize--; - 8003f66: 68fb ldr r3, [r7, #12] - 8003f68: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8003f6a: 3b01 subs r3, #1 - 8003f6c: b29a uxth r2, r3 - 8003f6e: 68fb ldr r3, [r7, #12] - 8003f70: 851a strh r2, [r3, #40] @ 0x28 + 8004206: 68fb ldr r3, [r7, #12] + 8004208: 8d1b ldrh r3, [r3, #40] @ 0x28 + 800420a: 3b01 subs r3, #1 + 800420c: b29a uxth r2, r3 + 800420e: 68fb ldr r3, [r7, #12] + 8004210: 851a strh r2, [r3, #40] @ 0x28 hi2c->XferCount--; - 8003f72: 68fb ldr r3, [r7, #12] - 8003f74: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8003f76: b29b uxth r3, r3 - 8003f78: 3b01 subs r3, #1 - 8003f7a: b29a uxth r2, r3 - 8003f7c: 68fb ldr r3, [r7, #12] - 8003f7e: 855a strh r2, [r3, #42] @ 0x2a - 8003f80: e04e b.n 8004020 + 8004212: 68fb ldr r3, [r7, #12] + 8004214: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8004216: b29b uxth r3, r3 + 8004218: 3b01 subs r3, #1 + 800421a: b29a uxth r2, r3 + 800421c: 68fb ldr r3, [r7, #12] + 800421e: 855a strh r2, [r3, #42] @ 0x2a + 8004220: e04e b.n 80042c0 } } else { /* Wait until RXNE flag is set */ if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) - 8003f82: 6a7a ldr r2, [r7, #36] @ 0x24 - 8003f84: 6b39 ldr r1, [r7, #48] @ 0x30 - 8003f86: 68f8 ldr r0, [r7, #12] - 8003f88: f000 fb62 bl 8004650 - 8003f8c: 4603 mov r3, r0 - 8003f8e: 2b00 cmp r3, #0 - 8003f90: d001 beq.n 8003f96 + 8004222: 6a7a ldr r2, [r7, #36] @ 0x24 + 8004224: 6b39 ldr r1, [r7, #48] @ 0x30 + 8004226: 68f8 ldr r0, [r7, #12] + 8004228: f000 fb62 bl 80048f0 + 800422c: 4603 mov r3, r0 + 800422e: 2b00 cmp r3, #0 + 8004230: d001 beq.n 8004236 { return HAL_ERROR; - 8003f92: 2301 movs r3, #1 - 8003f94: e058 b.n 8004048 + 8004232: 2301 movs r3, #1 + 8004234: e058 b.n 80042e8 } /* Read data from DR */ *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->DR; - 8003f96: 68fb ldr r3, [r7, #12] - 8003f98: 681b ldr r3, [r3, #0] - 8003f9a: 691a ldr r2, [r3, #16] - 8003f9c: 68fb ldr r3, [r7, #12] - 8003f9e: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003fa0: b2d2 uxtb r2, r2 - 8003fa2: 701a strb r2, [r3, #0] + 8004236: 68fb ldr r3, [r7, #12] + 8004238: 681b ldr r3, [r3, #0] + 800423a: 691a ldr r2, [r3, #16] + 800423c: 68fb ldr r3, [r7, #12] + 800423e: 6a5b ldr r3, [r3, #36] @ 0x24 + 8004240: b2d2 uxtb r2, r2 + 8004242: 701a strb r2, [r3, #0] /* Increment Buffer pointer */ hi2c->pBuffPtr++; - 8003fa4: 68fb ldr r3, [r7, #12] - 8003fa6: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003fa8: 1c5a adds r2, r3, #1 - 8003faa: 68fb ldr r3, [r7, #12] - 8003fac: 625a str r2, [r3, #36] @ 0x24 + 8004244: 68fb ldr r3, [r7, #12] + 8004246: 6a5b ldr r3, [r3, #36] @ 0x24 + 8004248: 1c5a adds r2, r3, #1 + 800424a: 68fb ldr r3, [r7, #12] + 800424c: 625a str r2, [r3, #36] @ 0x24 /* Update counter */ hi2c->XferSize--; - 8003fae: 68fb ldr r3, [r7, #12] - 8003fb0: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8003fb2: 3b01 subs r3, #1 - 8003fb4: b29a uxth r2, r3 - 8003fb6: 68fb ldr r3, [r7, #12] - 8003fb8: 851a strh r2, [r3, #40] @ 0x28 + 800424e: 68fb ldr r3, [r7, #12] + 8004250: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8004252: 3b01 subs r3, #1 + 8004254: b29a uxth r2, r3 + 8004256: 68fb ldr r3, [r7, #12] + 8004258: 851a strh r2, [r3, #40] @ 0x28 hi2c->XferCount--; - 8003fba: 68fb ldr r3, [r7, #12] - 8003fbc: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8003fbe: b29b uxth r3, r3 - 8003fc0: 3b01 subs r3, #1 - 8003fc2: b29a uxth r2, r3 - 8003fc4: 68fb ldr r3, [r7, #12] - 8003fc6: 855a strh r2, [r3, #42] @ 0x2a + 800425a: 68fb ldr r3, [r7, #12] + 800425c: 8d5b ldrh r3, [r3, #42] @ 0x2a + 800425e: b29b uxth r3, r3 + 8004260: 3b01 subs r3, #1 + 8004262: b29a uxth r2, r3 + 8004264: 68fb ldr r3, [r7, #12] + 8004266: 855a strh r2, [r3, #42] @ 0x2a if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BTF) == SET) - 8003fc8: 68fb ldr r3, [r7, #12] - 8003fca: 681b ldr r3, [r3, #0] - 8003fcc: 695b ldr r3, [r3, #20] - 8003fce: f003 0304 and.w r3, r3, #4 - 8003fd2: 2b04 cmp r3, #4 - 8003fd4: d124 bne.n 8004020 + 8004268: 68fb ldr r3, [r7, #12] + 800426a: 681b ldr r3, [r3, #0] + 800426c: 695b ldr r3, [r3, #20] + 800426e: f003 0304 and.w r3, r3, #4 + 8004272: 2b04 cmp r3, #4 + 8004274: d124 bne.n 80042c0 { if (hi2c->XferSize == 3U) - 8003fd6: 68fb ldr r3, [r7, #12] - 8003fd8: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8003fda: 2b03 cmp r3, #3 - 8003fdc: d107 bne.n 8003fee + 8004276: 68fb ldr r3, [r7, #12] + 8004278: 8d1b ldrh r3, [r3, #40] @ 0x28 + 800427a: 2b03 cmp r3, #3 + 800427c: d107 bne.n 800428e { /* Disable Acknowledge */ CLEAR_BIT(hi2c->Instance->CR1, I2C_CR1_ACK); - 8003fde: 68fb ldr r3, [r7, #12] - 8003fe0: 681b ldr r3, [r3, #0] - 8003fe2: 681a ldr r2, [r3, #0] - 8003fe4: 68fb ldr r3, [r7, #12] - 8003fe6: 681b ldr r3, [r3, #0] - 8003fe8: f422 6280 bic.w r2, r2, #1024 @ 0x400 - 8003fec: 601a str r2, [r3, #0] + 800427e: 68fb ldr r3, [r7, #12] + 8004280: 681b ldr r3, [r3, #0] + 8004282: 681a ldr r2, [r3, #0] + 8004284: 68fb ldr r3, [r7, #12] + 8004286: 681b ldr r3, [r3, #0] + 8004288: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 800428c: 601a str r2, [r3, #0] } /* Read data from DR */ *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->DR; - 8003fee: 68fb ldr r3, [r7, #12] - 8003ff0: 681b ldr r3, [r3, #0] - 8003ff2: 691a ldr r2, [r3, #16] - 8003ff4: 68fb ldr r3, [r7, #12] - 8003ff6: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003ff8: b2d2 uxtb r2, r2 - 8003ffa: 701a strb r2, [r3, #0] + 800428e: 68fb ldr r3, [r7, #12] + 8004290: 681b ldr r3, [r3, #0] + 8004292: 691a ldr r2, [r3, #16] + 8004294: 68fb ldr r3, [r7, #12] + 8004296: 6a5b ldr r3, [r3, #36] @ 0x24 + 8004298: b2d2 uxtb r2, r2 + 800429a: 701a strb r2, [r3, #0] /* Increment Buffer pointer */ hi2c->pBuffPtr++; - 8003ffc: 68fb ldr r3, [r7, #12] - 8003ffe: 6a5b ldr r3, [r3, #36] @ 0x24 - 8004000: 1c5a adds r2, r3, #1 - 8004002: 68fb ldr r3, [r7, #12] - 8004004: 625a str r2, [r3, #36] @ 0x24 + 800429c: 68fb ldr r3, [r7, #12] + 800429e: 6a5b ldr r3, [r3, #36] @ 0x24 + 80042a0: 1c5a adds r2, r3, #1 + 80042a2: 68fb ldr r3, [r7, #12] + 80042a4: 625a str r2, [r3, #36] @ 0x24 /* Update counter */ hi2c->XferSize--; - 8004006: 68fb ldr r3, [r7, #12] - 8004008: 8d1b ldrh r3, [r3, #40] @ 0x28 - 800400a: 3b01 subs r3, #1 - 800400c: b29a uxth r2, r3 - 800400e: 68fb ldr r3, [r7, #12] - 8004010: 851a strh r2, [r3, #40] @ 0x28 + 80042a6: 68fb ldr r3, [r7, #12] + 80042a8: 8d1b ldrh r3, [r3, #40] @ 0x28 + 80042aa: 3b01 subs r3, #1 + 80042ac: b29a uxth r2, r3 + 80042ae: 68fb ldr r3, [r7, #12] + 80042b0: 851a strh r2, [r3, #40] @ 0x28 hi2c->XferCount--; - 8004012: 68fb ldr r3, [r7, #12] - 8004014: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8004016: b29b uxth r3, r3 - 8004018: 3b01 subs r3, #1 - 800401a: b29a uxth r2, r3 - 800401c: 68fb ldr r3, [r7, #12] - 800401e: 855a strh r2, [r3, #42] @ 0x2a + 80042b2: 68fb ldr r3, [r7, #12] + 80042b4: 8d5b ldrh r3, [r3, #42] @ 0x2a + 80042b6: b29b uxth r3, r3 + 80042b8: 3b01 subs r3, #1 + 80042ba: b29a uxth r2, r3 + 80042bc: 68fb ldr r3, [r7, #12] + 80042be: 855a strh r2, [r3, #42] @ 0x2a while (hi2c->XferSize > 0U) - 8004020: 68fb ldr r3, [r7, #12] - 8004022: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8004024: 2b00 cmp r3, #0 - 8004026: f47f ae88 bne.w 8003d3a + 80042c0: 68fb ldr r3, [r7, #12] + 80042c2: 8d1b ldrh r3, [r3, #40] @ 0x28 + 80042c4: 2b00 cmp r3, #0 + 80042c6: f47f ae88 bne.w 8003fda } } } hi2c->State = HAL_I2C_STATE_READY; - 800402a: 68fb ldr r3, [r7, #12] - 800402c: 2220 movs r2, #32 - 800402e: f883 203d strb.w r2, [r3, #61] @ 0x3d + 80042ca: 68fb ldr r3, [r7, #12] + 80042cc: 2220 movs r2, #32 + 80042ce: f883 203d strb.w r2, [r3, #61] @ 0x3d hi2c->Mode = HAL_I2C_MODE_NONE; - 8004032: 68fb ldr r3, [r7, #12] - 8004034: 2200 movs r2, #0 - 8004036: f883 203e strb.w r2, [r3, #62] @ 0x3e + 80042d2: 68fb ldr r3, [r7, #12] + 80042d4: 2200 movs r2, #0 + 80042d6: f883 203e strb.w r2, [r3, #62] @ 0x3e /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 800403a: 68fb ldr r3, [r7, #12] - 800403c: 2200 movs r2, #0 - 800403e: f883 203c strb.w r2, [r3, #60] @ 0x3c + 80042da: 68fb ldr r3, [r7, #12] + 80042dc: 2200 movs r2, #0 + 80042de: f883 203c strb.w r2, [r3, #60] @ 0x3c return HAL_OK; - 8004042: 2300 movs r3, #0 - 8004044: e000 b.n 8004048 + 80042e2: 2300 movs r3, #0 + 80042e4: e000 b.n 80042e8 } else { return HAL_BUSY; - 8004046: 2302 movs r3, #2 + 80042e6: 2302 movs r3, #2 } } - 8004048: 4618 mov r0, r3 - 800404a: 3728 adds r7, #40 @ 0x28 - 800404c: 46bd mov sp, r7 - 800404e: bd80 pop {r7, pc} - 8004050: 00010004 .word 0x00010004 - 8004054: 20000038 .word 0x20000038 - 8004058: 14f8b589 .word 0x14f8b589 + 80042e8: 4618 mov r0, r3 + 80042ea: 3728 adds r7, #40 @ 0x28 + 80042ec: 46bd mov sp, r7 + 80042ee: bd80 pop {r7, pc} + 80042f0: 00010004 .word 0x00010004 + 80042f4: 20000008 .word 0x20000008 + 80042f8: 14f8b589 .word 0x14f8b589 -0800405c : +080042fc : * @param Timeout Timeout duration * @param Tickstart Tick start value * @retval HAL status */ static HAL_StatusTypeDef I2C_MasterRequestWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Timeout, uint32_t Tickstart) { - 800405c: b580 push {r7, lr} - 800405e: b088 sub sp, #32 - 8004060: af02 add r7, sp, #8 - 8004062: 60f8 str r0, [r7, #12] - 8004064: 607a str r2, [r7, #4] - 8004066: 603b str r3, [r7, #0] - 8004068: 460b mov r3, r1 - 800406a: 817b strh r3, [r7, #10] + 80042fc: b580 push {r7, lr} + 80042fe: b088 sub sp, #32 + 8004300: af02 add r7, sp, #8 + 8004302: 60f8 str r0, [r7, #12] + 8004304: 607a str r2, [r7, #4] + 8004306: 603b str r3, [r7, #0] + 8004308: 460b mov r3, r1 + 800430a: 817b strh r3, [r7, #10] /* Declaration of temporary variable to prevent undefined behavior of volatile usage */ uint32_t CurrentXferOptions = hi2c->XferOptions; - 800406c: 68fb ldr r3, [r7, #12] - 800406e: 6adb ldr r3, [r3, #44] @ 0x2c - 8004070: 617b str r3, [r7, #20] + 800430c: 68fb ldr r3, [r7, #12] + 800430e: 6adb ldr r3, [r3, #44] @ 0x2c + 8004310: 617b str r3, [r7, #20] /* Generate Start condition if first transfer */ if ((CurrentXferOptions == I2C_FIRST_AND_LAST_FRAME) || (CurrentXferOptions == I2C_FIRST_FRAME) || (CurrentXferOptions == I2C_NO_OPTION_FRAME)) - 8004072: 697b ldr r3, [r7, #20] - 8004074: 2b08 cmp r3, #8 - 8004076: d006 beq.n 8004086 - 8004078: 697b ldr r3, [r7, #20] - 800407a: 2b01 cmp r3, #1 - 800407c: d003 beq.n 8004086 - 800407e: 697b ldr r3, [r7, #20] - 8004080: f513 3f80 cmn.w r3, #65536 @ 0x10000 - 8004084: d108 bne.n 8004098 + 8004312: 697b ldr r3, [r7, #20] + 8004314: 2b08 cmp r3, #8 + 8004316: d006 beq.n 8004326 + 8004318: 697b ldr r3, [r7, #20] + 800431a: 2b01 cmp r3, #1 + 800431c: d003 beq.n 8004326 + 800431e: 697b ldr r3, [r7, #20] + 8004320: f513 3f80 cmn.w r3, #65536 @ 0x10000 + 8004324: d108 bne.n 8004338 { /* Generate Start */ SET_BIT(hi2c->Instance->CR1, I2C_CR1_START); - 8004086: 68fb ldr r3, [r7, #12] - 8004088: 681b ldr r3, [r3, #0] - 800408a: 681a ldr r2, [r3, #0] - 800408c: 68fb ldr r3, [r7, #12] - 800408e: 681b ldr r3, [r3, #0] - 8004090: f442 7280 orr.w r2, r2, #256 @ 0x100 - 8004094: 601a str r2, [r3, #0] - 8004096: e00b b.n 80040b0 + 8004326: 68fb ldr r3, [r7, #12] + 8004328: 681b ldr r3, [r3, #0] + 800432a: 681a ldr r2, [r3, #0] + 800432c: 68fb ldr r3, [r7, #12] + 800432e: 681b ldr r3, [r3, #0] + 8004330: f442 7280 orr.w r2, r2, #256 @ 0x100 + 8004334: 601a str r2, [r3, #0] + 8004336: e00b b.n 8004350 } else if (hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) - 8004098: 68fb ldr r3, [r7, #12] - 800409a: 6b1b ldr r3, [r3, #48] @ 0x30 - 800409c: 2b12 cmp r3, #18 - 800409e: d107 bne.n 80040b0 + 8004338: 68fb ldr r3, [r7, #12] + 800433a: 6b1b ldr r3, [r3, #48] @ 0x30 + 800433c: 2b12 cmp r3, #18 + 800433e: d107 bne.n 8004350 { /* Generate ReStart */ SET_BIT(hi2c->Instance->CR1, I2C_CR1_START); - 80040a0: 68fb ldr r3, [r7, #12] - 80040a2: 681b ldr r3, [r3, #0] - 80040a4: 681a ldr r2, [r3, #0] - 80040a6: 68fb ldr r3, [r7, #12] - 80040a8: 681b ldr r3, [r3, #0] - 80040aa: f442 7280 orr.w r2, r2, #256 @ 0x100 - 80040ae: 601a str r2, [r3, #0] + 8004340: 68fb ldr r3, [r7, #12] + 8004342: 681b ldr r3, [r3, #0] + 8004344: 681a ldr r2, [r3, #0] + 8004346: 68fb ldr r3, [r7, #12] + 8004348: 681b ldr r3, [r3, #0] + 800434a: f442 7280 orr.w r2, r2, #256 @ 0x100 + 800434e: 601a str r2, [r3, #0] { /* Do nothing */ } /* Wait until SB flag is set */ if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_SB, RESET, Timeout, Tickstart) != HAL_OK) - 80040b0: 683b ldr r3, [r7, #0] - 80040b2: 9300 str r3, [sp, #0] - 80040b4: 687b ldr r3, [r7, #4] - 80040b6: 2200 movs r2, #0 - 80040b8: f04f 1101 mov.w r1, #65537 @ 0x10001 - 80040bc: 68f8 ldr r0, [r7, #12] - 80040be: f000 f91d bl 80042fc - 80040c2: 4603 mov r3, r0 - 80040c4: 2b00 cmp r3, #0 - 80040c6: d00d beq.n 80040e4 + 8004350: 683b ldr r3, [r7, #0] + 8004352: 9300 str r3, [sp, #0] + 8004354: 687b ldr r3, [r7, #4] + 8004356: 2200 movs r2, #0 + 8004358: f04f 1101 mov.w r1, #65537 @ 0x10001 + 800435c: 68f8 ldr r0, [r7, #12] + 800435e: f000 f91d bl 800459c + 8004362: 4603 mov r3, r0 + 8004364: 2b00 cmp r3, #0 + 8004366: d00d beq.n 8004384 { if (READ_BIT(hi2c->Instance->CR1, I2C_CR1_START) == I2C_CR1_START) - 80040c8: 68fb ldr r3, [r7, #12] - 80040ca: 681b ldr r3, [r3, #0] - 80040cc: 681b ldr r3, [r3, #0] - 80040ce: f403 7380 and.w r3, r3, #256 @ 0x100 - 80040d2: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 80040d6: d103 bne.n 80040e0 + 8004368: 68fb ldr r3, [r7, #12] + 800436a: 681b ldr r3, [r3, #0] + 800436c: 681b ldr r3, [r3, #0] + 800436e: f403 7380 and.w r3, r3, #256 @ 0x100 + 8004372: f5b3 7f80 cmp.w r3, #256 @ 0x100 + 8004376: d103 bne.n 8004380 { hi2c->ErrorCode = HAL_I2C_WRONG_START; - 80040d8: 68fb ldr r3, [r7, #12] - 80040da: f44f 7200 mov.w r2, #512 @ 0x200 - 80040de: 641a str r2, [r3, #64] @ 0x40 + 8004378: 68fb ldr r3, [r7, #12] + 800437a: f44f 7200 mov.w r2, #512 @ 0x200 + 800437e: 641a str r2, [r3, #64] @ 0x40 } return HAL_TIMEOUT; - 80040e0: 2303 movs r3, #3 - 80040e2: e035 b.n 8004150 + 8004380: 2303 movs r3, #3 + 8004382: e035 b.n 80043f0 } if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_7BIT) - 80040e4: 68fb ldr r3, [r7, #12] - 80040e6: 691b ldr r3, [r3, #16] - 80040e8: f5b3 4f80 cmp.w r3, #16384 @ 0x4000 - 80040ec: d108 bne.n 8004100 + 8004384: 68fb ldr r3, [r7, #12] + 8004386: 691b ldr r3, [r3, #16] + 8004388: f5b3 4f80 cmp.w r3, #16384 @ 0x4000 + 800438c: d108 bne.n 80043a0 { /* Send slave address */ hi2c->Instance->DR = I2C_7BIT_ADD_WRITE(DevAddress); - 80040ee: 897b ldrh r3, [r7, #10] - 80040f0: b2db uxtb r3, r3 - 80040f2: 461a mov r2, r3 - 80040f4: 68fb ldr r3, [r7, #12] - 80040f6: 681b ldr r3, [r3, #0] - 80040f8: f002 02fe and.w r2, r2, #254 @ 0xfe - 80040fc: 611a str r2, [r3, #16] - 80040fe: e01b b.n 8004138 + 800438e: 897b ldrh r3, [r7, #10] + 8004390: b2db uxtb r3, r3 + 8004392: 461a mov r2, r3 + 8004394: 68fb ldr r3, [r7, #12] + 8004396: 681b ldr r3, [r3, #0] + 8004398: f002 02fe and.w r2, r2, #254 @ 0xfe + 800439c: 611a str r2, [r3, #16] + 800439e: e01b b.n 80043d8 } else { /* Send header of slave address */ hi2c->Instance->DR = I2C_10BIT_HEADER_WRITE(DevAddress); - 8004100: 897b ldrh r3, [r7, #10] - 8004102: 11db asrs r3, r3, #7 - 8004104: b2db uxtb r3, r3 - 8004106: f003 0306 and.w r3, r3, #6 - 800410a: b2db uxtb r3, r3 - 800410c: f063 030f orn r3, r3, #15 - 8004110: b2da uxtb r2, r3 - 8004112: 68fb ldr r3, [r7, #12] - 8004114: 681b ldr r3, [r3, #0] - 8004116: 611a str r2, [r3, #16] + 80043a0: 897b ldrh r3, [r7, #10] + 80043a2: 11db asrs r3, r3, #7 + 80043a4: b2db uxtb r3, r3 + 80043a6: f003 0306 and.w r3, r3, #6 + 80043aa: b2db uxtb r3, r3 + 80043ac: f063 030f orn r3, r3, #15 + 80043b0: b2da uxtb r2, r3 + 80043b2: 68fb ldr r3, [r7, #12] + 80043b4: 681b ldr r3, [r3, #0] + 80043b6: 611a str r2, [r3, #16] /* Wait until ADD10 flag is set */ if (I2C_WaitOnMasterAddressFlagUntilTimeout(hi2c, I2C_FLAG_ADD10, Timeout, Tickstart) != HAL_OK) - 8004118: 683b ldr r3, [r7, #0] - 800411a: 687a ldr r2, [r7, #4] - 800411c: 490e ldr r1, [pc, #56] @ (8004158 ) - 800411e: 68f8 ldr r0, [r7, #12] - 8004120: f000 f966 bl 80043f0 - 8004124: 4603 mov r3, r0 - 8004126: 2b00 cmp r3, #0 - 8004128: d001 beq.n 800412e + 80043b8: 683b ldr r3, [r7, #0] + 80043ba: 687a ldr r2, [r7, #4] + 80043bc: 490e ldr r1, [pc, #56] @ (80043f8 ) + 80043be: 68f8 ldr r0, [r7, #12] + 80043c0: f000 f966 bl 8004690 + 80043c4: 4603 mov r3, r0 + 80043c6: 2b00 cmp r3, #0 + 80043c8: d001 beq.n 80043ce { return HAL_ERROR; - 800412a: 2301 movs r3, #1 - 800412c: e010 b.n 8004150 + 80043ca: 2301 movs r3, #1 + 80043cc: e010 b.n 80043f0 } /* Send slave address */ hi2c->Instance->DR = I2C_10BIT_ADDRESS(DevAddress); - 800412e: 897b ldrh r3, [r7, #10] - 8004130: b2da uxtb r2, r3 - 8004132: 68fb ldr r3, [r7, #12] - 8004134: 681b ldr r3, [r3, #0] - 8004136: 611a str r2, [r3, #16] + 80043ce: 897b ldrh r3, [r7, #10] + 80043d0: b2da uxtb r2, r3 + 80043d2: 68fb ldr r3, [r7, #12] + 80043d4: 681b ldr r3, [r3, #0] + 80043d6: 611a str r2, [r3, #16] } /* Wait until ADDR flag is set */ if (I2C_WaitOnMasterAddressFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, Timeout, Tickstart) != HAL_OK) - 8004138: 683b ldr r3, [r7, #0] - 800413a: 687a ldr r2, [r7, #4] - 800413c: 4907 ldr r1, [pc, #28] @ (800415c ) - 800413e: 68f8 ldr r0, [r7, #12] - 8004140: f000 f956 bl 80043f0 - 8004144: 4603 mov r3, r0 - 8004146: 2b00 cmp r3, #0 - 8004148: d001 beq.n 800414e + 80043d8: 683b ldr r3, [r7, #0] + 80043da: 687a ldr r2, [r7, #4] + 80043dc: 4907 ldr r1, [pc, #28] @ (80043fc ) + 80043de: 68f8 ldr r0, [r7, #12] + 80043e0: f000 f956 bl 8004690 + 80043e4: 4603 mov r3, r0 + 80043e6: 2b00 cmp r3, #0 + 80043e8: d001 beq.n 80043ee { return HAL_ERROR; - 800414a: 2301 movs r3, #1 - 800414c: e000 b.n 8004150 + 80043ea: 2301 movs r3, #1 + 80043ec: e000 b.n 80043f0 } return HAL_OK; - 800414e: 2300 movs r3, #0 + 80043ee: 2300 movs r3, #0 } - 8004150: 4618 mov r0, r3 - 8004152: 3718 adds r7, #24 - 8004154: 46bd mov sp, r7 - 8004156: bd80 pop {r7, pc} - 8004158: 00010008 .word 0x00010008 - 800415c: 00010002 .word 0x00010002 + 80043f0: 4618 mov r0, r3 + 80043f2: 3718 adds r7, #24 + 80043f4: 46bd mov sp, r7 + 80043f6: bd80 pop {r7, pc} + 80043f8: 00010008 .word 0x00010008 + 80043fc: 00010002 .word 0x00010002 -08004160 : +08004400 : * @param Timeout Timeout duration * @param Tickstart Tick start value * @retval HAL status */ static HAL_StatusTypeDef I2C_MasterRequestRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Timeout, uint32_t Tickstart) { - 8004160: b580 push {r7, lr} - 8004162: b088 sub sp, #32 - 8004164: af02 add r7, sp, #8 - 8004166: 60f8 str r0, [r7, #12] - 8004168: 607a str r2, [r7, #4] - 800416a: 603b str r3, [r7, #0] - 800416c: 460b mov r3, r1 - 800416e: 817b strh r3, [r7, #10] + 8004400: b580 push {r7, lr} + 8004402: b088 sub sp, #32 + 8004404: af02 add r7, sp, #8 + 8004406: 60f8 str r0, [r7, #12] + 8004408: 607a str r2, [r7, #4] + 800440a: 603b str r3, [r7, #0] + 800440c: 460b mov r3, r1 + 800440e: 817b strh r3, [r7, #10] /* Declaration of temporary variable to prevent undefined behavior of volatile usage */ uint32_t CurrentXferOptions = hi2c->XferOptions; - 8004170: 68fb ldr r3, [r7, #12] - 8004172: 6adb ldr r3, [r3, #44] @ 0x2c - 8004174: 617b str r3, [r7, #20] + 8004410: 68fb ldr r3, [r7, #12] + 8004412: 6adb ldr r3, [r3, #44] @ 0x2c + 8004414: 617b str r3, [r7, #20] /* Enable Acknowledge */ SET_BIT(hi2c->Instance->CR1, I2C_CR1_ACK); - 8004176: 68fb ldr r3, [r7, #12] - 8004178: 681b ldr r3, [r3, #0] - 800417a: 681a ldr r2, [r3, #0] - 800417c: 68fb ldr r3, [r7, #12] - 800417e: 681b ldr r3, [r3, #0] - 8004180: f442 6280 orr.w r2, r2, #1024 @ 0x400 - 8004184: 601a str r2, [r3, #0] + 8004416: 68fb ldr r3, [r7, #12] + 8004418: 681b ldr r3, [r3, #0] + 800441a: 681a ldr r2, [r3, #0] + 800441c: 68fb ldr r3, [r7, #12] + 800441e: 681b ldr r3, [r3, #0] + 8004420: f442 6280 orr.w r2, r2, #1024 @ 0x400 + 8004424: 601a str r2, [r3, #0] /* Generate Start condition if first transfer */ if ((CurrentXferOptions == I2C_FIRST_AND_LAST_FRAME) || (CurrentXferOptions == I2C_FIRST_FRAME) || (CurrentXferOptions == I2C_NO_OPTION_FRAME)) - 8004186: 697b ldr r3, [r7, #20] - 8004188: 2b08 cmp r3, #8 - 800418a: d006 beq.n 800419a - 800418c: 697b ldr r3, [r7, #20] - 800418e: 2b01 cmp r3, #1 - 8004190: d003 beq.n 800419a - 8004192: 697b ldr r3, [r7, #20] - 8004194: f513 3f80 cmn.w r3, #65536 @ 0x10000 - 8004198: d108 bne.n 80041ac + 8004426: 697b ldr r3, [r7, #20] + 8004428: 2b08 cmp r3, #8 + 800442a: d006 beq.n 800443a + 800442c: 697b ldr r3, [r7, #20] + 800442e: 2b01 cmp r3, #1 + 8004430: d003 beq.n 800443a + 8004432: 697b ldr r3, [r7, #20] + 8004434: f513 3f80 cmn.w r3, #65536 @ 0x10000 + 8004438: d108 bne.n 800444c { /* Generate Start */ SET_BIT(hi2c->Instance->CR1, I2C_CR1_START); - 800419a: 68fb ldr r3, [r7, #12] - 800419c: 681b ldr r3, [r3, #0] - 800419e: 681a ldr r2, [r3, #0] - 80041a0: 68fb ldr r3, [r7, #12] - 80041a2: 681b ldr r3, [r3, #0] - 80041a4: f442 7280 orr.w r2, r2, #256 @ 0x100 - 80041a8: 601a str r2, [r3, #0] - 80041aa: e00b b.n 80041c4 + 800443a: 68fb ldr r3, [r7, #12] + 800443c: 681b ldr r3, [r3, #0] + 800443e: 681a ldr r2, [r3, #0] + 8004440: 68fb ldr r3, [r7, #12] + 8004442: 681b ldr r3, [r3, #0] + 8004444: f442 7280 orr.w r2, r2, #256 @ 0x100 + 8004448: 601a str r2, [r3, #0] + 800444a: e00b b.n 8004464 } else if (hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) - 80041ac: 68fb ldr r3, [r7, #12] - 80041ae: 6b1b ldr r3, [r3, #48] @ 0x30 - 80041b0: 2b11 cmp r3, #17 - 80041b2: d107 bne.n 80041c4 + 800444c: 68fb ldr r3, [r7, #12] + 800444e: 6b1b ldr r3, [r3, #48] @ 0x30 + 8004450: 2b11 cmp r3, #17 + 8004452: d107 bne.n 8004464 { /* Generate ReStart */ SET_BIT(hi2c->Instance->CR1, I2C_CR1_START); - 80041b4: 68fb ldr r3, [r7, #12] - 80041b6: 681b ldr r3, [r3, #0] - 80041b8: 681a ldr r2, [r3, #0] - 80041ba: 68fb ldr r3, [r7, #12] - 80041bc: 681b ldr r3, [r3, #0] - 80041be: f442 7280 orr.w r2, r2, #256 @ 0x100 - 80041c2: 601a str r2, [r3, #0] + 8004454: 68fb ldr r3, [r7, #12] + 8004456: 681b ldr r3, [r3, #0] + 8004458: 681a ldr r2, [r3, #0] + 800445a: 68fb ldr r3, [r7, #12] + 800445c: 681b ldr r3, [r3, #0] + 800445e: f442 7280 orr.w r2, r2, #256 @ 0x100 + 8004462: 601a str r2, [r3, #0] { /* Do nothing */ } /* Wait until SB flag is set */ if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_SB, RESET, Timeout, Tickstart) != HAL_OK) - 80041c4: 683b ldr r3, [r7, #0] - 80041c6: 9300 str r3, [sp, #0] - 80041c8: 687b ldr r3, [r7, #4] - 80041ca: 2200 movs r2, #0 - 80041cc: f04f 1101 mov.w r1, #65537 @ 0x10001 - 80041d0: 68f8 ldr r0, [r7, #12] - 80041d2: f000 f893 bl 80042fc - 80041d6: 4603 mov r3, r0 - 80041d8: 2b00 cmp r3, #0 - 80041da: d00d beq.n 80041f8 + 8004464: 683b ldr r3, [r7, #0] + 8004466: 9300 str r3, [sp, #0] + 8004468: 687b ldr r3, [r7, #4] + 800446a: 2200 movs r2, #0 + 800446c: f04f 1101 mov.w r1, #65537 @ 0x10001 + 8004470: 68f8 ldr r0, [r7, #12] + 8004472: f000 f893 bl 800459c + 8004476: 4603 mov r3, r0 + 8004478: 2b00 cmp r3, #0 + 800447a: d00d beq.n 8004498 { if (READ_BIT(hi2c->Instance->CR1, I2C_CR1_START) == I2C_CR1_START) - 80041dc: 68fb ldr r3, [r7, #12] - 80041de: 681b ldr r3, [r3, #0] - 80041e0: 681b ldr r3, [r3, #0] - 80041e2: f403 7380 and.w r3, r3, #256 @ 0x100 - 80041e6: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 80041ea: d103 bne.n 80041f4 + 800447c: 68fb ldr r3, [r7, #12] + 800447e: 681b ldr r3, [r3, #0] + 8004480: 681b ldr r3, [r3, #0] + 8004482: f403 7380 and.w r3, r3, #256 @ 0x100 + 8004486: f5b3 7f80 cmp.w r3, #256 @ 0x100 + 800448a: d103 bne.n 8004494 { hi2c->ErrorCode = HAL_I2C_WRONG_START; - 80041ec: 68fb ldr r3, [r7, #12] - 80041ee: f44f 7200 mov.w r2, #512 @ 0x200 - 80041f2: 641a str r2, [r3, #64] @ 0x40 + 800448c: 68fb ldr r3, [r7, #12] + 800448e: f44f 7200 mov.w r2, #512 @ 0x200 + 8004492: 641a str r2, [r3, #64] @ 0x40 } return HAL_TIMEOUT; - 80041f4: 2303 movs r3, #3 - 80041f6: e079 b.n 80042ec + 8004494: 2303 movs r3, #3 + 8004496: e079 b.n 800458c } if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_7BIT) - 80041f8: 68fb ldr r3, [r7, #12] - 80041fa: 691b ldr r3, [r3, #16] - 80041fc: f5b3 4f80 cmp.w r3, #16384 @ 0x4000 - 8004200: d108 bne.n 8004214 + 8004498: 68fb ldr r3, [r7, #12] + 800449a: 691b ldr r3, [r3, #16] + 800449c: f5b3 4f80 cmp.w r3, #16384 @ 0x4000 + 80044a0: d108 bne.n 80044b4 { /* Send slave address */ hi2c->Instance->DR = I2C_7BIT_ADD_READ(DevAddress); - 8004202: 897b ldrh r3, [r7, #10] - 8004204: b2db uxtb r3, r3 - 8004206: f043 0301 orr.w r3, r3, #1 - 800420a: b2da uxtb r2, r3 - 800420c: 68fb ldr r3, [r7, #12] - 800420e: 681b ldr r3, [r3, #0] - 8004210: 611a str r2, [r3, #16] - 8004212: e05f b.n 80042d4 + 80044a2: 897b ldrh r3, [r7, #10] + 80044a4: b2db uxtb r3, r3 + 80044a6: f043 0301 orr.w r3, r3, #1 + 80044aa: b2da uxtb r2, r3 + 80044ac: 68fb ldr r3, [r7, #12] + 80044ae: 681b ldr r3, [r3, #0] + 80044b0: 611a str r2, [r3, #16] + 80044b2: e05f b.n 8004574 } else { /* Send header of slave address */ hi2c->Instance->DR = I2C_10BIT_HEADER_WRITE(DevAddress); - 8004214: 897b ldrh r3, [r7, #10] - 8004216: 11db asrs r3, r3, #7 - 8004218: b2db uxtb r3, r3 - 800421a: f003 0306 and.w r3, r3, #6 - 800421e: b2db uxtb r3, r3 - 8004220: f063 030f orn r3, r3, #15 - 8004224: b2da uxtb r2, r3 - 8004226: 68fb ldr r3, [r7, #12] - 8004228: 681b ldr r3, [r3, #0] - 800422a: 611a str r2, [r3, #16] + 80044b4: 897b ldrh r3, [r7, #10] + 80044b6: 11db asrs r3, r3, #7 + 80044b8: b2db uxtb r3, r3 + 80044ba: f003 0306 and.w r3, r3, #6 + 80044be: b2db uxtb r3, r3 + 80044c0: f063 030f orn r3, r3, #15 + 80044c4: b2da uxtb r2, r3 + 80044c6: 68fb ldr r3, [r7, #12] + 80044c8: 681b ldr r3, [r3, #0] + 80044ca: 611a str r2, [r3, #16] /* Wait until ADD10 flag is set */ if (I2C_WaitOnMasterAddressFlagUntilTimeout(hi2c, I2C_FLAG_ADD10, Timeout, Tickstart) != HAL_OK) - 800422c: 683b ldr r3, [r7, #0] - 800422e: 687a ldr r2, [r7, #4] - 8004230: 4930 ldr r1, [pc, #192] @ (80042f4 ) - 8004232: 68f8 ldr r0, [r7, #12] - 8004234: f000 f8dc bl 80043f0 - 8004238: 4603 mov r3, r0 - 800423a: 2b00 cmp r3, #0 - 800423c: d001 beq.n 8004242 + 80044cc: 683b ldr r3, [r7, #0] + 80044ce: 687a ldr r2, [r7, #4] + 80044d0: 4930 ldr r1, [pc, #192] @ (8004594 ) + 80044d2: 68f8 ldr r0, [r7, #12] + 80044d4: f000 f8dc bl 8004690 + 80044d8: 4603 mov r3, r0 + 80044da: 2b00 cmp r3, #0 + 80044dc: d001 beq.n 80044e2 { return HAL_ERROR; - 800423e: 2301 movs r3, #1 - 8004240: e054 b.n 80042ec + 80044de: 2301 movs r3, #1 + 80044e0: e054 b.n 800458c } /* Send slave address */ hi2c->Instance->DR = I2C_10BIT_ADDRESS(DevAddress); - 8004242: 897b ldrh r3, [r7, #10] - 8004244: b2da uxtb r2, r3 - 8004246: 68fb ldr r3, [r7, #12] - 8004248: 681b ldr r3, [r3, #0] - 800424a: 611a str r2, [r3, #16] + 80044e2: 897b ldrh r3, [r7, #10] + 80044e4: b2da uxtb r2, r3 + 80044e6: 68fb ldr r3, [r7, #12] + 80044e8: 681b ldr r3, [r3, #0] + 80044ea: 611a str r2, [r3, #16] /* Wait until ADDR flag is set */ if (I2C_WaitOnMasterAddressFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, Timeout, Tickstart) != HAL_OK) - 800424c: 683b ldr r3, [r7, #0] - 800424e: 687a ldr r2, [r7, #4] - 8004250: 4929 ldr r1, [pc, #164] @ (80042f8 ) - 8004252: 68f8 ldr r0, [r7, #12] - 8004254: f000 f8cc bl 80043f0 - 8004258: 4603 mov r3, r0 - 800425a: 2b00 cmp r3, #0 - 800425c: d001 beq.n 8004262 + 80044ec: 683b ldr r3, [r7, #0] + 80044ee: 687a ldr r2, [r7, #4] + 80044f0: 4929 ldr r1, [pc, #164] @ (8004598 ) + 80044f2: 68f8 ldr r0, [r7, #12] + 80044f4: f000 f8cc bl 8004690 + 80044f8: 4603 mov r3, r0 + 80044fa: 2b00 cmp r3, #0 + 80044fc: d001 beq.n 8004502 { return HAL_ERROR; - 800425e: 2301 movs r3, #1 - 8004260: e044 b.n 80042ec + 80044fe: 2301 movs r3, #1 + 8004500: e044 b.n 800458c } /* Clear ADDR flag */ __HAL_I2C_CLEAR_ADDRFLAG(hi2c); - 8004262: 2300 movs r3, #0 - 8004264: 613b str r3, [r7, #16] - 8004266: 68fb ldr r3, [r7, #12] - 8004268: 681b ldr r3, [r3, #0] - 800426a: 695b ldr r3, [r3, #20] - 800426c: 613b str r3, [r7, #16] - 800426e: 68fb ldr r3, [r7, #12] - 8004270: 681b ldr r3, [r3, #0] - 8004272: 699b ldr r3, [r3, #24] - 8004274: 613b str r3, [r7, #16] - 8004276: 693b ldr r3, [r7, #16] + 8004502: 2300 movs r3, #0 + 8004504: 613b str r3, [r7, #16] + 8004506: 68fb ldr r3, [r7, #12] + 8004508: 681b ldr r3, [r3, #0] + 800450a: 695b ldr r3, [r3, #20] + 800450c: 613b str r3, [r7, #16] + 800450e: 68fb ldr r3, [r7, #12] + 8004510: 681b ldr r3, [r3, #0] + 8004512: 699b ldr r3, [r3, #24] + 8004514: 613b str r3, [r7, #16] + 8004516: 693b ldr r3, [r7, #16] /* Generate Restart */ SET_BIT(hi2c->Instance->CR1, I2C_CR1_START); - 8004278: 68fb ldr r3, [r7, #12] - 800427a: 681b ldr r3, [r3, #0] - 800427c: 681a ldr r2, [r3, #0] - 800427e: 68fb ldr r3, [r7, #12] - 8004280: 681b ldr r3, [r3, #0] - 8004282: f442 7280 orr.w r2, r2, #256 @ 0x100 - 8004286: 601a str r2, [r3, #0] + 8004518: 68fb ldr r3, [r7, #12] + 800451a: 681b ldr r3, [r3, #0] + 800451c: 681a ldr r2, [r3, #0] + 800451e: 68fb ldr r3, [r7, #12] + 8004520: 681b ldr r3, [r3, #0] + 8004522: f442 7280 orr.w r2, r2, #256 @ 0x100 + 8004526: 601a str r2, [r3, #0] /* Wait until SB flag is set */ if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_SB, RESET, Timeout, Tickstart) != HAL_OK) - 8004288: 683b ldr r3, [r7, #0] - 800428a: 9300 str r3, [sp, #0] - 800428c: 687b ldr r3, [r7, #4] - 800428e: 2200 movs r2, #0 - 8004290: f04f 1101 mov.w r1, #65537 @ 0x10001 - 8004294: 68f8 ldr r0, [r7, #12] - 8004296: f000 f831 bl 80042fc - 800429a: 4603 mov r3, r0 - 800429c: 2b00 cmp r3, #0 - 800429e: d00d beq.n 80042bc + 8004528: 683b ldr r3, [r7, #0] + 800452a: 9300 str r3, [sp, #0] + 800452c: 687b ldr r3, [r7, #4] + 800452e: 2200 movs r2, #0 + 8004530: f04f 1101 mov.w r1, #65537 @ 0x10001 + 8004534: 68f8 ldr r0, [r7, #12] + 8004536: f000 f831 bl 800459c + 800453a: 4603 mov r3, r0 + 800453c: 2b00 cmp r3, #0 + 800453e: d00d beq.n 800455c { if (READ_BIT(hi2c->Instance->CR1, I2C_CR1_START) == I2C_CR1_START) - 80042a0: 68fb ldr r3, [r7, #12] - 80042a2: 681b ldr r3, [r3, #0] - 80042a4: 681b ldr r3, [r3, #0] - 80042a6: f403 7380 and.w r3, r3, #256 @ 0x100 - 80042aa: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 80042ae: d103 bne.n 80042b8 + 8004540: 68fb ldr r3, [r7, #12] + 8004542: 681b ldr r3, [r3, #0] + 8004544: 681b ldr r3, [r3, #0] + 8004546: f403 7380 and.w r3, r3, #256 @ 0x100 + 800454a: f5b3 7f80 cmp.w r3, #256 @ 0x100 + 800454e: d103 bne.n 8004558 { hi2c->ErrorCode = HAL_I2C_WRONG_START; - 80042b0: 68fb ldr r3, [r7, #12] - 80042b2: f44f 7200 mov.w r2, #512 @ 0x200 - 80042b6: 641a str r2, [r3, #64] @ 0x40 + 8004550: 68fb ldr r3, [r7, #12] + 8004552: f44f 7200 mov.w r2, #512 @ 0x200 + 8004556: 641a str r2, [r3, #64] @ 0x40 } return HAL_TIMEOUT; - 80042b8: 2303 movs r3, #3 - 80042ba: e017 b.n 80042ec + 8004558: 2303 movs r3, #3 + 800455a: e017 b.n 800458c } /* Send header of slave address */ hi2c->Instance->DR = I2C_10BIT_HEADER_READ(DevAddress); - 80042bc: 897b ldrh r3, [r7, #10] - 80042be: 11db asrs r3, r3, #7 - 80042c0: b2db uxtb r3, r3 - 80042c2: f003 0306 and.w r3, r3, #6 - 80042c6: b2db uxtb r3, r3 - 80042c8: f063 030e orn r3, r3, #14 - 80042cc: b2da uxtb r2, r3 - 80042ce: 68fb ldr r3, [r7, #12] - 80042d0: 681b ldr r3, [r3, #0] - 80042d2: 611a str r2, [r3, #16] + 800455c: 897b ldrh r3, [r7, #10] + 800455e: 11db asrs r3, r3, #7 + 8004560: b2db uxtb r3, r3 + 8004562: f003 0306 and.w r3, r3, #6 + 8004566: b2db uxtb r3, r3 + 8004568: f063 030e orn r3, r3, #14 + 800456c: b2da uxtb r2, r3 + 800456e: 68fb ldr r3, [r7, #12] + 8004570: 681b ldr r3, [r3, #0] + 8004572: 611a str r2, [r3, #16] } /* Wait until ADDR flag is set */ if (I2C_WaitOnMasterAddressFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, Timeout, Tickstart) != HAL_OK) - 80042d4: 683b ldr r3, [r7, #0] - 80042d6: 687a ldr r2, [r7, #4] - 80042d8: 4907 ldr r1, [pc, #28] @ (80042f8 ) - 80042da: 68f8 ldr r0, [r7, #12] - 80042dc: f000 f888 bl 80043f0 - 80042e0: 4603 mov r3, r0 - 80042e2: 2b00 cmp r3, #0 - 80042e4: d001 beq.n 80042ea + 8004574: 683b ldr r3, [r7, #0] + 8004576: 687a ldr r2, [r7, #4] + 8004578: 4907 ldr r1, [pc, #28] @ (8004598 ) + 800457a: 68f8 ldr r0, [r7, #12] + 800457c: f000 f888 bl 8004690 + 8004580: 4603 mov r3, r0 + 8004582: 2b00 cmp r3, #0 + 8004584: d001 beq.n 800458a { return HAL_ERROR; - 80042e6: 2301 movs r3, #1 - 80042e8: e000 b.n 80042ec + 8004586: 2301 movs r3, #1 + 8004588: e000 b.n 800458c } return HAL_OK; - 80042ea: 2300 movs r3, #0 + 800458a: 2300 movs r3, #0 } - 80042ec: 4618 mov r0, r3 - 80042ee: 3718 adds r7, #24 - 80042f0: 46bd mov sp, r7 - 80042f2: bd80 pop {r7, pc} - 80042f4: 00010008 .word 0x00010008 - 80042f8: 00010002 .word 0x00010002 + 800458c: 4618 mov r0, r3 + 800458e: 3718 adds r7, #24 + 8004590: 46bd mov sp, r7 + 8004592: bd80 pop {r7, pc} + 8004594: 00010008 .word 0x00010008 + 8004598: 00010002 .word 0x00010002 -080042fc : +0800459c : * @param Timeout Timeout duration * @param Tickstart Tick start value * @retval HAL status */ static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagStatus Status, uint32_t Timeout, uint32_t Tickstart) { - 80042fc: b580 push {r7, lr} - 80042fe: b084 sub sp, #16 - 8004300: af00 add r7, sp, #0 - 8004302: 60f8 str r0, [r7, #12] - 8004304: 60b9 str r1, [r7, #8] - 8004306: 603b str r3, [r7, #0] - 8004308: 4613 mov r3, r2 - 800430a: 71fb strb r3, [r7, #7] + 800459c: b580 push {r7, lr} + 800459e: b084 sub sp, #16 + 80045a0: af00 add r7, sp, #0 + 80045a2: 60f8 str r0, [r7, #12] + 80045a4: 60b9 str r1, [r7, #8] + 80045a6: 603b str r3, [r7, #0] + 80045a8: 4613 mov r3, r2 + 80045aa: 71fb strb r3, [r7, #7] /* Wait until flag is set */ while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status) - 800430c: e048 b.n 80043a0 + 80045ac: e048 b.n 8004640 { /* Check for the Timeout */ if (Timeout != HAL_MAX_DELAY) - 800430e: 683b ldr r3, [r7, #0] - 8004310: f1b3 3fff cmp.w r3, #4294967295 - 8004314: d044 beq.n 80043a0 + 80045ae: 683b ldr r3, [r7, #0] + 80045b0: f1b3 3fff cmp.w r3, #4294967295 + 80045b4: d044 beq.n 8004640 { if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) - 8004316: f7fe fc27 bl 8002b68 - 800431a: 4602 mov r2, r0 - 800431c: 69bb ldr r3, [r7, #24] - 800431e: 1ad3 subs r3, r2, r3 - 8004320: 683a ldr r2, [r7, #0] - 8004322: 429a cmp r2, r3 - 8004324: d302 bcc.n 800432c - 8004326: 683b ldr r3, [r7, #0] - 8004328: 2b00 cmp r3, #0 - 800432a: d139 bne.n 80043a0 + 80045b6: f7fe fc4b bl 8002e50 + 80045ba: 4602 mov r2, r0 + 80045bc: 69bb ldr r3, [r7, #24] + 80045be: 1ad3 subs r3, r2, r3 + 80045c0: 683a ldr r2, [r7, #0] + 80045c2: 429a cmp r2, r3 + 80045c4: d302 bcc.n 80045cc + 80045c6: 683b ldr r3, [r7, #0] + 80045c8: 2b00 cmp r3, #0 + 80045ca: d139 bne.n 8004640 { if ((__HAL_I2C_GET_FLAG(hi2c, Flag) == Status)) - 800432c: 68bb ldr r3, [r7, #8] - 800432e: 0c1b lsrs r3, r3, #16 - 8004330: b2db uxtb r3, r3 - 8004332: 2b01 cmp r3, #1 - 8004334: d10d bne.n 8004352 - 8004336: 68fb ldr r3, [r7, #12] - 8004338: 681b ldr r3, [r3, #0] - 800433a: 695b ldr r3, [r3, #20] - 800433c: 43da mvns r2, r3 - 800433e: 68bb ldr r3, [r7, #8] - 8004340: 4013 ands r3, r2 - 8004342: b29b uxth r3, r3 - 8004344: 2b00 cmp r3, #0 - 8004346: bf0c ite eq - 8004348: 2301 moveq r3, #1 - 800434a: 2300 movne r3, #0 - 800434c: b2db uxtb r3, r3 - 800434e: 461a mov r2, r3 - 8004350: e00c b.n 800436c - 8004352: 68fb ldr r3, [r7, #12] - 8004354: 681b ldr r3, [r3, #0] - 8004356: 699b ldr r3, [r3, #24] - 8004358: 43da mvns r2, r3 - 800435a: 68bb ldr r3, [r7, #8] - 800435c: 4013 ands r3, r2 - 800435e: b29b uxth r3, r3 - 8004360: 2b00 cmp r3, #0 - 8004362: bf0c ite eq - 8004364: 2301 moveq r3, #1 - 8004366: 2300 movne r3, #0 - 8004368: b2db uxtb r3, r3 - 800436a: 461a mov r2, r3 - 800436c: 79fb ldrb r3, [r7, #7] - 800436e: 429a cmp r2, r3 - 8004370: d116 bne.n 80043a0 + 80045cc: 68bb ldr r3, [r7, #8] + 80045ce: 0c1b lsrs r3, r3, #16 + 80045d0: b2db uxtb r3, r3 + 80045d2: 2b01 cmp r3, #1 + 80045d4: d10d bne.n 80045f2 + 80045d6: 68fb ldr r3, [r7, #12] + 80045d8: 681b ldr r3, [r3, #0] + 80045da: 695b ldr r3, [r3, #20] + 80045dc: 43da mvns r2, r3 + 80045de: 68bb ldr r3, [r7, #8] + 80045e0: 4013 ands r3, r2 + 80045e2: b29b uxth r3, r3 + 80045e4: 2b00 cmp r3, #0 + 80045e6: bf0c ite eq + 80045e8: 2301 moveq r3, #1 + 80045ea: 2300 movne r3, #0 + 80045ec: b2db uxtb r3, r3 + 80045ee: 461a mov r2, r3 + 80045f0: e00c b.n 800460c + 80045f2: 68fb ldr r3, [r7, #12] + 80045f4: 681b ldr r3, [r3, #0] + 80045f6: 699b ldr r3, [r3, #24] + 80045f8: 43da mvns r2, r3 + 80045fa: 68bb ldr r3, [r7, #8] + 80045fc: 4013 ands r3, r2 + 80045fe: b29b uxth r3, r3 + 8004600: 2b00 cmp r3, #0 + 8004602: bf0c ite eq + 8004604: 2301 moveq r3, #1 + 8004606: 2300 movne r3, #0 + 8004608: b2db uxtb r3, r3 + 800460a: 461a mov r2, r3 + 800460c: 79fb ldrb r3, [r7, #7] + 800460e: 429a cmp r2, r3 + 8004610: d116 bne.n 8004640 { hi2c->PreviousState = I2C_STATE_NONE; - 8004372: 68fb ldr r3, [r7, #12] - 8004374: 2200 movs r2, #0 - 8004376: 631a str r2, [r3, #48] @ 0x30 + 8004612: 68fb ldr r3, [r7, #12] + 8004614: 2200 movs r2, #0 + 8004616: 631a str r2, [r3, #48] @ 0x30 hi2c->State = HAL_I2C_STATE_READY; - 8004378: 68fb ldr r3, [r7, #12] - 800437a: 2220 movs r2, #32 - 800437c: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8004618: 68fb ldr r3, [r7, #12] + 800461a: 2220 movs r2, #32 + 800461c: f883 203d strb.w r2, [r3, #61] @ 0x3d hi2c->Mode = HAL_I2C_MODE_NONE; - 8004380: 68fb ldr r3, [r7, #12] - 8004382: 2200 movs r2, #0 - 8004384: f883 203e strb.w r2, [r3, #62] @ 0x3e + 8004620: 68fb ldr r3, [r7, #12] + 8004622: 2200 movs r2, #0 + 8004624: f883 203e strb.w r2, [r3, #62] @ 0x3e hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; - 8004388: 68fb ldr r3, [r7, #12] - 800438a: 6c1b ldr r3, [r3, #64] @ 0x40 - 800438c: f043 0220 orr.w r2, r3, #32 - 8004390: 68fb ldr r3, [r7, #12] - 8004392: 641a str r2, [r3, #64] @ 0x40 + 8004628: 68fb ldr r3, [r7, #12] + 800462a: 6c1b ldr r3, [r3, #64] @ 0x40 + 800462c: f043 0220 orr.w r2, r3, #32 + 8004630: 68fb ldr r3, [r7, #12] + 8004632: 641a str r2, [r3, #64] @ 0x40 /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8004394: 68fb ldr r3, [r7, #12] - 8004396: 2200 movs r2, #0 - 8004398: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8004634: 68fb ldr r3, [r7, #12] + 8004636: 2200 movs r2, #0 + 8004638: f883 203c strb.w r2, [r3, #60] @ 0x3c return HAL_ERROR; - 800439c: 2301 movs r3, #1 - 800439e: e023 b.n 80043e8 + 800463c: 2301 movs r3, #1 + 800463e: e023 b.n 8004688 while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status) - 80043a0: 68bb ldr r3, [r7, #8] - 80043a2: 0c1b lsrs r3, r3, #16 - 80043a4: b2db uxtb r3, r3 - 80043a6: 2b01 cmp r3, #1 - 80043a8: d10d bne.n 80043c6 - 80043aa: 68fb ldr r3, [r7, #12] - 80043ac: 681b ldr r3, [r3, #0] - 80043ae: 695b ldr r3, [r3, #20] - 80043b0: 43da mvns r2, r3 - 80043b2: 68bb ldr r3, [r7, #8] - 80043b4: 4013 ands r3, r2 - 80043b6: b29b uxth r3, r3 - 80043b8: 2b00 cmp r3, #0 - 80043ba: bf0c ite eq - 80043bc: 2301 moveq r3, #1 - 80043be: 2300 movne r3, #0 - 80043c0: b2db uxtb r3, r3 - 80043c2: 461a mov r2, r3 - 80043c4: e00c b.n 80043e0 - 80043c6: 68fb ldr r3, [r7, #12] - 80043c8: 681b ldr r3, [r3, #0] - 80043ca: 699b ldr r3, [r3, #24] - 80043cc: 43da mvns r2, r3 - 80043ce: 68bb ldr r3, [r7, #8] - 80043d0: 4013 ands r3, r2 - 80043d2: b29b uxth r3, r3 - 80043d4: 2b00 cmp r3, #0 - 80043d6: bf0c ite eq - 80043d8: 2301 moveq r3, #1 - 80043da: 2300 movne r3, #0 - 80043dc: b2db uxtb r3, r3 - 80043de: 461a mov r2, r3 - 80043e0: 79fb ldrb r3, [r7, #7] - 80043e2: 429a cmp r2, r3 - 80043e4: d093 beq.n 800430e + 8004640: 68bb ldr r3, [r7, #8] + 8004642: 0c1b lsrs r3, r3, #16 + 8004644: b2db uxtb r3, r3 + 8004646: 2b01 cmp r3, #1 + 8004648: d10d bne.n 8004666 + 800464a: 68fb ldr r3, [r7, #12] + 800464c: 681b ldr r3, [r3, #0] + 800464e: 695b ldr r3, [r3, #20] + 8004650: 43da mvns r2, r3 + 8004652: 68bb ldr r3, [r7, #8] + 8004654: 4013 ands r3, r2 + 8004656: b29b uxth r3, r3 + 8004658: 2b00 cmp r3, #0 + 800465a: bf0c ite eq + 800465c: 2301 moveq r3, #1 + 800465e: 2300 movne r3, #0 + 8004660: b2db uxtb r3, r3 + 8004662: 461a mov r2, r3 + 8004664: e00c b.n 8004680 + 8004666: 68fb ldr r3, [r7, #12] + 8004668: 681b ldr r3, [r3, #0] + 800466a: 699b ldr r3, [r3, #24] + 800466c: 43da mvns r2, r3 + 800466e: 68bb ldr r3, [r7, #8] + 8004670: 4013 ands r3, r2 + 8004672: b29b uxth r3, r3 + 8004674: 2b00 cmp r3, #0 + 8004676: bf0c ite eq + 8004678: 2301 moveq r3, #1 + 800467a: 2300 movne r3, #0 + 800467c: b2db uxtb r3, r3 + 800467e: 461a mov r2, r3 + 8004680: 79fb ldrb r3, [r7, #7] + 8004682: 429a cmp r2, r3 + 8004684: d093 beq.n 80045ae } } } } return HAL_OK; - 80043e6: 2300 movs r3, #0 + 8004686: 2300 movs r3, #0 } - 80043e8: 4618 mov r0, r3 - 80043ea: 3710 adds r7, #16 - 80043ec: 46bd mov sp, r7 - 80043ee: bd80 pop {r7, pc} + 8004688: 4618 mov r0, r3 + 800468a: 3710 adds r7, #16 + 800468c: 46bd mov sp, r7 + 800468e: bd80 pop {r7, pc} -080043f0 : +08004690 : * @param Timeout Timeout duration * @param Tickstart Tick start value * @retval HAL status */ static HAL_StatusTypeDef I2C_WaitOnMasterAddressFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, uint32_t Timeout, uint32_t Tickstart) { - 80043f0: b580 push {r7, lr} - 80043f2: b084 sub sp, #16 - 80043f4: af00 add r7, sp, #0 - 80043f6: 60f8 str r0, [r7, #12] - 80043f8: 60b9 str r1, [r7, #8] - 80043fa: 607a str r2, [r7, #4] - 80043fc: 603b str r3, [r7, #0] + 8004690: b580 push {r7, lr} + 8004692: b084 sub sp, #16 + 8004694: af00 add r7, sp, #0 + 8004696: 60f8 str r0, [r7, #12] + 8004698: 60b9 str r1, [r7, #8] + 800469a: 607a str r2, [r7, #4] + 800469c: 603b str r3, [r7, #0] while (__HAL_I2C_GET_FLAG(hi2c, Flag) == RESET) - 80043fe: e071 b.n 80044e4 + 800469e: e071 b.n 8004784 { if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) - 8004400: 68fb ldr r3, [r7, #12] - 8004402: 681b ldr r3, [r3, #0] - 8004404: 695b ldr r3, [r3, #20] - 8004406: f403 6380 and.w r3, r3, #1024 @ 0x400 - 800440a: f5b3 6f80 cmp.w r3, #1024 @ 0x400 - 800440e: d123 bne.n 8004458 + 80046a0: 68fb ldr r3, [r7, #12] + 80046a2: 681b ldr r3, [r3, #0] + 80046a4: 695b ldr r3, [r3, #20] + 80046a6: f403 6380 and.w r3, r3, #1024 @ 0x400 + 80046aa: f5b3 6f80 cmp.w r3, #1024 @ 0x400 + 80046ae: d123 bne.n 80046f8 { /* Generate Stop */ SET_BIT(hi2c->Instance->CR1, I2C_CR1_STOP); - 8004410: 68fb ldr r3, [r7, #12] - 8004412: 681b ldr r3, [r3, #0] - 8004414: 681a ldr r2, [r3, #0] - 8004416: 68fb ldr r3, [r7, #12] - 8004418: 681b ldr r3, [r3, #0] - 800441a: f442 7200 orr.w r2, r2, #512 @ 0x200 - 800441e: 601a str r2, [r3, #0] + 80046b0: 68fb ldr r3, [r7, #12] + 80046b2: 681b ldr r3, [r3, #0] + 80046b4: 681a ldr r2, [r3, #0] + 80046b6: 68fb ldr r3, [r7, #12] + 80046b8: 681b ldr r3, [r3, #0] + 80046ba: f442 7200 orr.w r2, r2, #512 @ 0x200 + 80046be: 601a str r2, [r3, #0] /* Clear AF Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8004420: 68fb ldr r3, [r7, #12] - 8004422: 681b ldr r3, [r3, #0] - 8004424: f46f 6280 mvn.w r2, #1024 @ 0x400 - 8004428: 615a str r2, [r3, #20] + 80046c0: 68fb ldr r3, [r7, #12] + 80046c2: 681b ldr r3, [r3, #0] + 80046c4: f46f 6280 mvn.w r2, #1024 @ 0x400 + 80046c8: 615a str r2, [r3, #20] hi2c->PreviousState = I2C_STATE_NONE; - 800442a: 68fb ldr r3, [r7, #12] - 800442c: 2200 movs r2, #0 - 800442e: 631a str r2, [r3, #48] @ 0x30 + 80046ca: 68fb ldr r3, [r7, #12] + 80046cc: 2200 movs r2, #0 + 80046ce: 631a str r2, [r3, #48] @ 0x30 hi2c->State = HAL_I2C_STATE_READY; - 8004430: 68fb ldr r3, [r7, #12] - 8004432: 2220 movs r2, #32 - 8004434: f883 203d strb.w r2, [r3, #61] @ 0x3d + 80046d0: 68fb ldr r3, [r7, #12] + 80046d2: 2220 movs r2, #32 + 80046d4: f883 203d strb.w r2, [r3, #61] @ 0x3d hi2c->Mode = HAL_I2C_MODE_NONE; - 8004438: 68fb ldr r3, [r7, #12] - 800443a: 2200 movs r2, #0 - 800443c: f883 203e strb.w r2, [r3, #62] @ 0x3e + 80046d8: 68fb ldr r3, [r7, #12] + 80046da: 2200 movs r2, #0 + 80046dc: f883 203e strb.w r2, [r3, #62] @ 0x3e hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 8004440: 68fb ldr r3, [r7, #12] - 8004442: 6c1b ldr r3, [r3, #64] @ 0x40 - 8004444: f043 0204 orr.w r2, r3, #4 - 8004448: 68fb ldr r3, [r7, #12] - 800444a: 641a str r2, [r3, #64] @ 0x40 + 80046e0: 68fb ldr r3, [r7, #12] + 80046e2: 6c1b ldr r3, [r3, #64] @ 0x40 + 80046e4: f043 0204 orr.w r2, r3, #4 + 80046e8: 68fb ldr r3, [r7, #12] + 80046ea: 641a str r2, [r3, #64] @ 0x40 /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 800444c: 68fb ldr r3, [r7, #12] - 800444e: 2200 movs r2, #0 - 8004450: f883 203c strb.w r2, [r3, #60] @ 0x3c + 80046ec: 68fb ldr r3, [r7, #12] + 80046ee: 2200 movs r2, #0 + 80046f0: f883 203c strb.w r2, [r3, #60] @ 0x3c return HAL_ERROR; - 8004454: 2301 movs r3, #1 - 8004456: e067 b.n 8004528 + 80046f4: 2301 movs r3, #1 + 80046f6: e067 b.n 80047c8 } /* Check for the Timeout */ if (Timeout != HAL_MAX_DELAY) - 8004458: 687b ldr r3, [r7, #4] - 800445a: f1b3 3fff cmp.w r3, #4294967295 - 800445e: d041 beq.n 80044e4 + 80046f8: 687b ldr r3, [r7, #4] + 80046fa: f1b3 3fff cmp.w r3, #4294967295 + 80046fe: d041 beq.n 8004784 { if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) - 8004460: f7fe fb82 bl 8002b68 - 8004464: 4602 mov r2, r0 - 8004466: 683b ldr r3, [r7, #0] - 8004468: 1ad3 subs r3, r2, r3 - 800446a: 687a ldr r2, [r7, #4] - 800446c: 429a cmp r2, r3 - 800446e: d302 bcc.n 8004476 - 8004470: 687b ldr r3, [r7, #4] - 8004472: 2b00 cmp r3, #0 - 8004474: d136 bne.n 80044e4 + 8004700: f7fe fba6 bl 8002e50 + 8004704: 4602 mov r2, r0 + 8004706: 683b ldr r3, [r7, #0] + 8004708: 1ad3 subs r3, r2, r3 + 800470a: 687a ldr r2, [r7, #4] + 800470c: 429a cmp r2, r3 + 800470e: d302 bcc.n 8004716 + 8004710: 687b ldr r3, [r7, #4] + 8004712: 2b00 cmp r3, #0 + 8004714: d136 bne.n 8004784 { if ((__HAL_I2C_GET_FLAG(hi2c, Flag) == RESET)) - 8004476: 68bb ldr r3, [r7, #8] - 8004478: 0c1b lsrs r3, r3, #16 - 800447a: b2db uxtb r3, r3 - 800447c: 2b01 cmp r3, #1 - 800447e: d10c bne.n 800449a - 8004480: 68fb ldr r3, [r7, #12] - 8004482: 681b ldr r3, [r3, #0] - 8004484: 695b ldr r3, [r3, #20] - 8004486: 43da mvns r2, r3 - 8004488: 68bb ldr r3, [r7, #8] - 800448a: 4013 ands r3, r2 - 800448c: b29b uxth r3, r3 - 800448e: 2b00 cmp r3, #0 - 8004490: bf14 ite ne - 8004492: 2301 movne r3, #1 - 8004494: 2300 moveq r3, #0 - 8004496: b2db uxtb r3, r3 - 8004498: e00b b.n 80044b2 - 800449a: 68fb ldr r3, [r7, #12] - 800449c: 681b ldr r3, [r3, #0] - 800449e: 699b ldr r3, [r3, #24] - 80044a0: 43da mvns r2, r3 - 80044a2: 68bb ldr r3, [r7, #8] - 80044a4: 4013 ands r3, r2 - 80044a6: b29b uxth r3, r3 - 80044a8: 2b00 cmp r3, #0 - 80044aa: bf14 ite ne - 80044ac: 2301 movne r3, #1 - 80044ae: 2300 moveq r3, #0 - 80044b0: b2db uxtb r3, r3 - 80044b2: 2b00 cmp r3, #0 - 80044b4: d016 beq.n 80044e4 + 8004716: 68bb ldr r3, [r7, #8] + 8004718: 0c1b lsrs r3, r3, #16 + 800471a: b2db uxtb r3, r3 + 800471c: 2b01 cmp r3, #1 + 800471e: d10c bne.n 800473a + 8004720: 68fb ldr r3, [r7, #12] + 8004722: 681b ldr r3, [r3, #0] + 8004724: 695b ldr r3, [r3, #20] + 8004726: 43da mvns r2, r3 + 8004728: 68bb ldr r3, [r7, #8] + 800472a: 4013 ands r3, r2 + 800472c: b29b uxth r3, r3 + 800472e: 2b00 cmp r3, #0 + 8004730: bf14 ite ne + 8004732: 2301 movne r3, #1 + 8004734: 2300 moveq r3, #0 + 8004736: b2db uxtb r3, r3 + 8004738: e00b b.n 8004752 + 800473a: 68fb ldr r3, [r7, #12] + 800473c: 681b ldr r3, [r3, #0] + 800473e: 699b ldr r3, [r3, #24] + 8004740: 43da mvns r2, r3 + 8004742: 68bb ldr r3, [r7, #8] + 8004744: 4013 ands r3, r2 + 8004746: b29b uxth r3, r3 + 8004748: 2b00 cmp r3, #0 + 800474a: bf14 ite ne + 800474c: 2301 movne r3, #1 + 800474e: 2300 moveq r3, #0 + 8004750: b2db uxtb r3, r3 + 8004752: 2b00 cmp r3, #0 + 8004754: d016 beq.n 8004784 { hi2c->PreviousState = I2C_STATE_NONE; - 80044b6: 68fb ldr r3, [r7, #12] - 80044b8: 2200 movs r2, #0 - 80044ba: 631a str r2, [r3, #48] @ 0x30 + 8004756: 68fb ldr r3, [r7, #12] + 8004758: 2200 movs r2, #0 + 800475a: 631a str r2, [r3, #48] @ 0x30 hi2c->State = HAL_I2C_STATE_READY; - 80044bc: 68fb ldr r3, [r7, #12] - 80044be: 2220 movs r2, #32 - 80044c0: f883 203d strb.w r2, [r3, #61] @ 0x3d + 800475c: 68fb ldr r3, [r7, #12] + 800475e: 2220 movs r2, #32 + 8004760: f883 203d strb.w r2, [r3, #61] @ 0x3d hi2c->Mode = HAL_I2C_MODE_NONE; - 80044c4: 68fb ldr r3, [r7, #12] - 80044c6: 2200 movs r2, #0 - 80044c8: f883 203e strb.w r2, [r3, #62] @ 0x3e + 8004764: 68fb ldr r3, [r7, #12] + 8004766: 2200 movs r2, #0 + 8004768: f883 203e strb.w r2, [r3, #62] @ 0x3e hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; - 80044cc: 68fb ldr r3, [r7, #12] - 80044ce: 6c1b ldr r3, [r3, #64] @ 0x40 - 80044d0: f043 0220 orr.w r2, r3, #32 - 80044d4: 68fb ldr r3, [r7, #12] - 80044d6: 641a str r2, [r3, #64] @ 0x40 + 800476c: 68fb ldr r3, [r7, #12] + 800476e: 6c1b ldr r3, [r3, #64] @ 0x40 + 8004770: f043 0220 orr.w r2, r3, #32 + 8004774: 68fb ldr r3, [r7, #12] + 8004776: 641a str r2, [r3, #64] @ 0x40 /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 80044d8: 68fb ldr r3, [r7, #12] - 80044da: 2200 movs r2, #0 - 80044dc: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8004778: 68fb ldr r3, [r7, #12] + 800477a: 2200 movs r2, #0 + 800477c: f883 203c strb.w r2, [r3, #60] @ 0x3c return HAL_ERROR; - 80044e0: 2301 movs r3, #1 - 80044e2: e021 b.n 8004528 + 8004780: 2301 movs r3, #1 + 8004782: e021 b.n 80047c8 while (__HAL_I2C_GET_FLAG(hi2c, Flag) == RESET) - 80044e4: 68bb ldr r3, [r7, #8] - 80044e6: 0c1b lsrs r3, r3, #16 - 80044e8: b2db uxtb r3, r3 - 80044ea: 2b01 cmp r3, #1 - 80044ec: d10c bne.n 8004508 - 80044ee: 68fb ldr r3, [r7, #12] - 80044f0: 681b ldr r3, [r3, #0] - 80044f2: 695b ldr r3, [r3, #20] - 80044f4: 43da mvns r2, r3 - 80044f6: 68bb ldr r3, [r7, #8] - 80044f8: 4013 ands r3, r2 - 80044fa: b29b uxth r3, r3 - 80044fc: 2b00 cmp r3, #0 - 80044fe: bf14 ite ne - 8004500: 2301 movne r3, #1 - 8004502: 2300 moveq r3, #0 - 8004504: b2db uxtb r3, r3 - 8004506: e00b b.n 8004520 - 8004508: 68fb ldr r3, [r7, #12] - 800450a: 681b ldr r3, [r3, #0] - 800450c: 699b ldr r3, [r3, #24] - 800450e: 43da mvns r2, r3 - 8004510: 68bb ldr r3, [r7, #8] - 8004512: 4013 ands r3, r2 - 8004514: b29b uxth r3, r3 - 8004516: 2b00 cmp r3, #0 - 8004518: bf14 ite ne - 800451a: 2301 movne r3, #1 - 800451c: 2300 moveq r3, #0 - 800451e: b2db uxtb r3, r3 - 8004520: 2b00 cmp r3, #0 - 8004522: f47f af6d bne.w 8004400 + 8004784: 68bb ldr r3, [r7, #8] + 8004786: 0c1b lsrs r3, r3, #16 + 8004788: b2db uxtb r3, r3 + 800478a: 2b01 cmp r3, #1 + 800478c: d10c bne.n 80047a8 + 800478e: 68fb ldr r3, [r7, #12] + 8004790: 681b ldr r3, [r3, #0] + 8004792: 695b ldr r3, [r3, #20] + 8004794: 43da mvns r2, r3 + 8004796: 68bb ldr r3, [r7, #8] + 8004798: 4013 ands r3, r2 + 800479a: b29b uxth r3, r3 + 800479c: 2b00 cmp r3, #0 + 800479e: bf14 ite ne + 80047a0: 2301 movne r3, #1 + 80047a2: 2300 moveq r3, #0 + 80047a4: b2db uxtb r3, r3 + 80047a6: e00b b.n 80047c0 + 80047a8: 68fb ldr r3, [r7, #12] + 80047aa: 681b ldr r3, [r3, #0] + 80047ac: 699b ldr r3, [r3, #24] + 80047ae: 43da mvns r2, r3 + 80047b0: 68bb ldr r3, [r7, #8] + 80047b2: 4013 ands r3, r2 + 80047b4: b29b uxth r3, r3 + 80047b6: 2b00 cmp r3, #0 + 80047b8: bf14 ite ne + 80047ba: 2301 movne r3, #1 + 80047bc: 2300 moveq r3, #0 + 80047be: b2db uxtb r3, r3 + 80047c0: 2b00 cmp r3, #0 + 80047c2: f47f af6d bne.w 80046a0 } } } } return HAL_OK; - 8004526: 2300 movs r3, #0 + 80047c6: 2300 movs r3, #0 } - 8004528: 4618 mov r0, r3 - 800452a: 3710 adds r7, #16 - 800452c: 46bd mov sp, r7 - 800452e: bd80 pop {r7, pc} + 80047c8: 4618 mov r0, r3 + 80047ca: 3710 adds r7, #16 + 80047cc: 46bd mov sp, r7 + 80047ce: bd80 pop {r7, pc} -08004530 : +080047d0 : * @param Timeout Timeout duration * @param Tickstart Tick start value * @retval HAL status */ static HAL_StatusTypeDef I2C_WaitOnTXEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart) { - 8004530: b580 push {r7, lr} - 8004532: b084 sub sp, #16 - 8004534: af00 add r7, sp, #0 - 8004536: 60f8 str r0, [r7, #12] - 8004538: 60b9 str r1, [r7, #8] - 800453a: 607a str r2, [r7, #4] + 80047d0: b580 push {r7, lr} + 80047d2: b084 sub sp, #16 + 80047d4: af00 add r7, sp, #0 + 80047d6: 60f8 str r0, [r7, #12] + 80047d8: 60b9 str r1, [r7, #8] + 80047da: 607a str r2, [r7, #4] while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET) - 800453c: e034 b.n 80045a8 + 80047dc: e034 b.n 8004848 { /* Check if a NACK is detected */ if (I2C_IsAcknowledgeFailed(hi2c) != HAL_OK) - 800453e: 68f8 ldr r0, [r7, #12] - 8004540: f000 f8e3 bl 800470a - 8004544: 4603 mov r3, r0 - 8004546: 2b00 cmp r3, #0 - 8004548: d001 beq.n 800454e + 80047de: 68f8 ldr r0, [r7, #12] + 80047e0: f000 f8e3 bl 80049aa + 80047e4: 4603 mov r3, r0 + 80047e6: 2b00 cmp r3, #0 + 80047e8: d001 beq.n 80047ee { return HAL_ERROR; - 800454a: 2301 movs r3, #1 - 800454c: e034 b.n 80045b8 + 80047ea: 2301 movs r3, #1 + 80047ec: e034 b.n 8004858 } /* Check for the Timeout */ if (Timeout != HAL_MAX_DELAY) - 800454e: 68bb ldr r3, [r7, #8] - 8004550: f1b3 3fff cmp.w r3, #4294967295 - 8004554: d028 beq.n 80045a8 + 80047ee: 68bb ldr r3, [r7, #8] + 80047f0: f1b3 3fff cmp.w r3, #4294967295 + 80047f4: d028 beq.n 8004848 { if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) - 8004556: f7fe fb07 bl 8002b68 - 800455a: 4602 mov r2, r0 - 800455c: 687b ldr r3, [r7, #4] - 800455e: 1ad3 subs r3, r2, r3 - 8004560: 68ba ldr r2, [r7, #8] - 8004562: 429a cmp r2, r3 - 8004564: d302 bcc.n 800456c - 8004566: 68bb ldr r3, [r7, #8] - 8004568: 2b00 cmp r3, #0 - 800456a: d11d bne.n 80045a8 + 80047f6: f7fe fb2b bl 8002e50 + 80047fa: 4602 mov r2, r0 + 80047fc: 687b ldr r3, [r7, #4] + 80047fe: 1ad3 subs r3, r2, r3 + 8004800: 68ba ldr r2, [r7, #8] + 8004802: 429a cmp r2, r3 + 8004804: d302 bcc.n 800480c + 8004806: 68bb ldr r3, [r7, #8] + 8004808: 2b00 cmp r3, #0 + 800480a: d11d bne.n 8004848 { if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET)) - 800456c: 68fb ldr r3, [r7, #12] - 800456e: 681b ldr r3, [r3, #0] - 8004570: 695b ldr r3, [r3, #20] - 8004572: f003 0380 and.w r3, r3, #128 @ 0x80 - 8004576: 2b80 cmp r3, #128 @ 0x80 - 8004578: d016 beq.n 80045a8 + 800480c: 68fb ldr r3, [r7, #12] + 800480e: 681b ldr r3, [r3, #0] + 8004810: 695b ldr r3, [r3, #20] + 8004812: f003 0380 and.w r3, r3, #128 @ 0x80 + 8004816: 2b80 cmp r3, #128 @ 0x80 + 8004818: d016 beq.n 8004848 { hi2c->PreviousState = I2C_STATE_NONE; - 800457a: 68fb ldr r3, [r7, #12] - 800457c: 2200 movs r2, #0 - 800457e: 631a str r2, [r3, #48] @ 0x30 + 800481a: 68fb ldr r3, [r7, #12] + 800481c: 2200 movs r2, #0 + 800481e: 631a str r2, [r3, #48] @ 0x30 hi2c->State = HAL_I2C_STATE_READY; - 8004580: 68fb ldr r3, [r7, #12] - 8004582: 2220 movs r2, #32 - 8004584: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8004820: 68fb ldr r3, [r7, #12] + 8004822: 2220 movs r2, #32 + 8004824: f883 203d strb.w r2, [r3, #61] @ 0x3d hi2c->Mode = HAL_I2C_MODE_NONE; - 8004588: 68fb ldr r3, [r7, #12] - 800458a: 2200 movs r2, #0 - 800458c: f883 203e strb.w r2, [r3, #62] @ 0x3e + 8004828: 68fb ldr r3, [r7, #12] + 800482a: 2200 movs r2, #0 + 800482c: f883 203e strb.w r2, [r3, #62] @ 0x3e hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; - 8004590: 68fb ldr r3, [r7, #12] - 8004592: 6c1b ldr r3, [r3, #64] @ 0x40 - 8004594: f043 0220 orr.w r2, r3, #32 - 8004598: 68fb ldr r3, [r7, #12] - 800459a: 641a str r2, [r3, #64] @ 0x40 + 8004830: 68fb ldr r3, [r7, #12] + 8004832: 6c1b ldr r3, [r3, #64] @ 0x40 + 8004834: f043 0220 orr.w r2, r3, #32 + 8004838: 68fb ldr r3, [r7, #12] + 800483a: 641a str r2, [r3, #64] @ 0x40 /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 800459c: 68fb ldr r3, [r7, #12] - 800459e: 2200 movs r2, #0 - 80045a0: f883 203c strb.w r2, [r3, #60] @ 0x3c + 800483c: 68fb ldr r3, [r7, #12] + 800483e: 2200 movs r2, #0 + 8004840: f883 203c strb.w r2, [r3, #60] @ 0x3c return HAL_ERROR; - 80045a4: 2301 movs r3, #1 - 80045a6: e007 b.n 80045b8 + 8004844: 2301 movs r3, #1 + 8004846: e007 b.n 8004858 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET) - 80045a8: 68fb ldr r3, [r7, #12] - 80045aa: 681b ldr r3, [r3, #0] - 80045ac: 695b ldr r3, [r3, #20] - 80045ae: f003 0380 and.w r3, r3, #128 @ 0x80 - 80045b2: 2b80 cmp r3, #128 @ 0x80 - 80045b4: d1c3 bne.n 800453e + 8004848: 68fb ldr r3, [r7, #12] + 800484a: 681b ldr r3, [r3, #0] + 800484c: 695b ldr r3, [r3, #20] + 800484e: f003 0380 and.w r3, r3, #128 @ 0x80 + 8004852: 2b80 cmp r3, #128 @ 0x80 + 8004854: d1c3 bne.n 80047de } } } } return HAL_OK; - 80045b6: 2300 movs r3, #0 + 8004856: 2300 movs r3, #0 } - 80045b8: 4618 mov r0, r3 - 80045ba: 3710 adds r7, #16 - 80045bc: 46bd mov sp, r7 - 80045be: bd80 pop {r7, pc} + 8004858: 4618 mov r0, r3 + 800485a: 3710 adds r7, #16 + 800485c: 46bd mov sp, r7 + 800485e: bd80 pop {r7, pc} -080045c0 : +08004860 : * @param Timeout Timeout duration * @param Tickstart Tick start value * @retval HAL status */ static HAL_StatusTypeDef I2C_WaitOnBTFFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart) { - 80045c0: b580 push {r7, lr} - 80045c2: b084 sub sp, #16 - 80045c4: af00 add r7, sp, #0 - 80045c6: 60f8 str r0, [r7, #12] - 80045c8: 60b9 str r1, [r7, #8] - 80045ca: 607a str r2, [r7, #4] + 8004860: b580 push {r7, lr} + 8004862: b084 sub sp, #16 + 8004864: af00 add r7, sp, #0 + 8004866: 60f8 str r0, [r7, #12] + 8004868: 60b9 str r1, [r7, #8] + 800486a: 607a str r2, [r7, #4] while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BTF) == RESET) - 80045cc: e034 b.n 8004638 + 800486c: e034 b.n 80048d8 { /* Check if a NACK is detected */ if (I2C_IsAcknowledgeFailed(hi2c) != HAL_OK) - 80045ce: 68f8 ldr r0, [r7, #12] - 80045d0: f000 f89b bl 800470a - 80045d4: 4603 mov r3, r0 - 80045d6: 2b00 cmp r3, #0 - 80045d8: d001 beq.n 80045de + 800486e: 68f8 ldr r0, [r7, #12] + 8004870: f000 f89b bl 80049aa + 8004874: 4603 mov r3, r0 + 8004876: 2b00 cmp r3, #0 + 8004878: d001 beq.n 800487e { return HAL_ERROR; - 80045da: 2301 movs r3, #1 - 80045dc: e034 b.n 8004648 + 800487a: 2301 movs r3, #1 + 800487c: e034 b.n 80048e8 } /* Check for the Timeout */ if (Timeout != HAL_MAX_DELAY) - 80045de: 68bb ldr r3, [r7, #8] - 80045e0: f1b3 3fff cmp.w r3, #4294967295 - 80045e4: d028 beq.n 8004638 + 800487e: 68bb ldr r3, [r7, #8] + 8004880: f1b3 3fff cmp.w r3, #4294967295 + 8004884: d028 beq.n 80048d8 { if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) - 80045e6: f7fe fabf bl 8002b68 - 80045ea: 4602 mov r2, r0 - 80045ec: 687b ldr r3, [r7, #4] - 80045ee: 1ad3 subs r3, r2, r3 - 80045f0: 68ba ldr r2, [r7, #8] - 80045f2: 429a cmp r2, r3 - 80045f4: d302 bcc.n 80045fc - 80045f6: 68bb ldr r3, [r7, #8] - 80045f8: 2b00 cmp r3, #0 - 80045fa: d11d bne.n 8004638 + 8004886: f7fe fae3 bl 8002e50 + 800488a: 4602 mov r2, r0 + 800488c: 687b ldr r3, [r7, #4] + 800488e: 1ad3 subs r3, r2, r3 + 8004890: 68ba ldr r2, [r7, #8] + 8004892: 429a cmp r2, r3 + 8004894: d302 bcc.n 800489c + 8004896: 68bb ldr r3, [r7, #8] + 8004898: 2b00 cmp r3, #0 + 800489a: d11d bne.n 80048d8 { if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BTF) == RESET)) - 80045fc: 68fb ldr r3, [r7, #12] - 80045fe: 681b ldr r3, [r3, #0] - 8004600: 695b ldr r3, [r3, #20] - 8004602: f003 0304 and.w r3, r3, #4 - 8004606: 2b04 cmp r3, #4 - 8004608: d016 beq.n 8004638 + 800489c: 68fb ldr r3, [r7, #12] + 800489e: 681b ldr r3, [r3, #0] + 80048a0: 695b ldr r3, [r3, #20] + 80048a2: f003 0304 and.w r3, r3, #4 + 80048a6: 2b04 cmp r3, #4 + 80048a8: d016 beq.n 80048d8 { hi2c->PreviousState = I2C_STATE_NONE; - 800460a: 68fb ldr r3, [r7, #12] - 800460c: 2200 movs r2, #0 - 800460e: 631a str r2, [r3, #48] @ 0x30 + 80048aa: 68fb ldr r3, [r7, #12] + 80048ac: 2200 movs r2, #0 + 80048ae: 631a str r2, [r3, #48] @ 0x30 hi2c->State = HAL_I2C_STATE_READY; - 8004610: 68fb ldr r3, [r7, #12] - 8004612: 2220 movs r2, #32 - 8004614: f883 203d strb.w r2, [r3, #61] @ 0x3d + 80048b0: 68fb ldr r3, [r7, #12] + 80048b2: 2220 movs r2, #32 + 80048b4: f883 203d strb.w r2, [r3, #61] @ 0x3d hi2c->Mode = HAL_I2C_MODE_NONE; - 8004618: 68fb ldr r3, [r7, #12] - 800461a: 2200 movs r2, #0 - 800461c: f883 203e strb.w r2, [r3, #62] @ 0x3e + 80048b8: 68fb ldr r3, [r7, #12] + 80048ba: 2200 movs r2, #0 + 80048bc: f883 203e strb.w r2, [r3, #62] @ 0x3e hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; - 8004620: 68fb ldr r3, [r7, #12] - 8004622: 6c1b ldr r3, [r3, #64] @ 0x40 - 8004624: f043 0220 orr.w r2, r3, #32 - 8004628: 68fb ldr r3, [r7, #12] - 800462a: 641a str r2, [r3, #64] @ 0x40 + 80048c0: 68fb ldr r3, [r7, #12] + 80048c2: 6c1b ldr r3, [r3, #64] @ 0x40 + 80048c4: f043 0220 orr.w r2, r3, #32 + 80048c8: 68fb ldr r3, [r7, #12] + 80048ca: 641a str r2, [r3, #64] @ 0x40 /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 800462c: 68fb ldr r3, [r7, #12] - 800462e: 2200 movs r2, #0 - 8004630: f883 203c strb.w r2, [r3, #60] @ 0x3c + 80048cc: 68fb ldr r3, [r7, #12] + 80048ce: 2200 movs r2, #0 + 80048d0: f883 203c strb.w r2, [r3, #60] @ 0x3c return HAL_ERROR; - 8004634: 2301 movs r3, #1 - 8004636: e007 b.n 8004648 + 80048d4: 2301 movs r3, #1 + 80048d6: e007 b.n 80048e8 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BTF) == RESET) - 8004638: 68fb ldr r3, [r7, #12] - 800463a: 681b ldr r3, [r3, #0] - 800463c: 695b ldr r3, [r3, #20] - 800463e: f003 0304 and.w r3, r3, #4 - 8004642: 2b04 cmp r3, #4 - 8004644: d1c3 bne.n 80045ce + 80048d8: 68fb ldr r3, [r7, #12] + 80048da: 681b ldr r3, [r3, #0] + 80048dc: 695b ldr r3, [r3, #20] + 80048de: f003 0304 and.w r3, r3, #4 + 80048e2: 2b04 cmp r3, #4 + 80048e4: d1c3 bne.n 800486e } } } } return HAL_OK; - 8004646: 2300 movs r3, #0 + 80048e6: 2300 movs r3, #0 } - 8004648: 4618 mov r0, r3 - 800464a: 3710 adds r7, #16 - 800464c: 46bd mov sp, r7 - 800464e: bd80 pop {r7, pc} + 80048e8: 4618 mov r0, r3 + 80048ea: 3710 adds r7, #16 + 80048ec: 46bd mov sp, r7 + 80048ee: bd80 pop {r7, pc} -08004650 : +080048f0 : * @param Timeout Timeout duration * @param Tickstart Tick start value * @retval HAL status */ static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart) { - 8004650: b580 push {r7, lr} - 8004652: b084 sub sp, #16 - 8004654: af00 add r7, sp, #0 - 8004656: 60f8 str r0, [r7, #12] - 8004658: 60b9 str r1, [r7, #8] - 800465a: 607a str r2, [r7, #4] + 80048f0: b580 push {r7, lr} + 80048f2: b084 sub sp, #16 + 80048f4: af00 add r7, sp, #0 + 80048f6: 60f8 str r0, [r7, #12] + 80048f8: 60b9 str r1, [r7, #8] + 80048fa: 607a str r2, [r7, #4] while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET) - 800465c: e049 b.n 80046f2 + 80048fc: e049 b.n 8004992 { /* Check if a STOPF is detected */ if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) - 800465e: 68fb ldr r3, [r7, #12] - 8004660: 681b ldr r3, [r3, #0] - 8004662: 695b ldr r3, [r3, #20] - 8004664: f003 0310 and.w r3, r3, #16 - 8004668: 2b10 cmp r3, #16 - 800466a: d119 bne.n 80046a0 + 80048fe: 68fb ldr r3, [r7, #12] + 8004900: 681b ldr r3, [r3, #0] + 8004902: 695b ldr r3, [r3, #20] + 8004904: f003 0310 and.w r3, r3, #16 + 8004908: 2b10 cmp r3, #16 + 800490a: d119 bne.n 8004940 { /* Clear STOP Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); - 800466c: 68fb ldr r3, [r7, #12] - 800466e: 681b ldr r3, [r3, #0] - 8004670: f06f 0210 mvn.w r2, #16 - 8004674: 615a str r2, [r3, #20] + 800490c: 68fb ldr r3, [r7, #12] + 800490e: 681b ldr r3, [r3, #0] + 8004910: f06f 0210 mvn.w r2, #16 + 8004914: 615a str r2, [r3, #20] hi2c->PreviousState = I2C_STATE_NONE; - 8004676: 68fb ldr r3, [r7, #12] - 8004678: 2200 movs r2, #0 - 800467a: 631a str r2, [r3, #48] @ 0x30 + 8004916: 68fb ldr r3, [r7, #12] + 8004918: 2200 movs r2, #0 + 800491a: 631a str r2, [r3, #48] @ 0x30 hi2c->State = HAL_I2C_STATE_READY; - 800467c: 68fb ldr r3, [r7, #12] - 800467e: 2220 movs r2, #32 - 8004680: f883 203d strb.w r2, [r3, #61] @ 0x3d + 800491c: 68fb ldr r3, [r7, #12] + 800491e: 2220 movs r2, #32 + 8004920: f883 203d strb.w r2, [r3, #61] @ 0x3d hi2c->Mode = HAL_I2C_MODE_NONE; - 8004684: 68fb ldr r3, [r7, #12] - 8004686: 2200 movs r2, #0 - 8004688: f883 203e strb.w r2, [r3, #62] @ 0x3e + 8004924: 68fb ldr r3, [r7, #12] + 8004926: 2200 movs r2, #0 + 8004928: f883 203e strb.w r2, [r3, #62] @ 0x3e hi2c->ErrorCode |= HAL_I2C_ERROR_NONE; - 800468c: 68fb ldr r3, [r7, #12] - 800468e: 6c1a ldr r2, [r3, #64] @ 0x40 - 8004690: 68fb ldr r3, [r7, #12] - 8004692: 641a str r2, [r3, #64] @ 0x40 + 800492c: 68fb ldr r3, [r7, #12] + 800492e: 6c1a ldr r2, [r3, #64] @ 0x40 + 8004930: 68fb ldr r3, [r7, #12] + 8004932: 641a str r2, [r3, #64] @ 0x40 /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8004694: 68fb ldr r3, [r7, #12] - 8004696: 2200 movs r2, #0 - 8004698: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8004934: 68fb ldr r3, [r7, #12] + 8004936: 2200 movs r2, #0 + 8004938: f883 203c strb.w r2, [r3, #60] @ 0x3c return HAL_ERROR; - 800469c: 2301 movs r3, #1 - 800469e: e030 b.n 8004702 + 800493c: 2301 movs r3, #1 + 800493e: e030 b.n 80049a2 } /* Check for the Timeout */ if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) - 80046a0: f7fe fa62 bl 8002b68 - 80046a4: 4602 mov r2, r0 - 80046a6: 687b ldr r3, [r7, #4] - 80046a8: 1ad3 subs r3, r2, r3 - 80046aa: 68ba ldr r2, [r7, #8] - 80046ac: 429a cmp r2, r3 - 80046ae: d302 bcc.n 80046b6 - 80046b0: 68bb ldr r3, [r7, #8] - 80046b2: 2b00 cmp r3, #0 - 80046b4: d11d bne.n 80046f2 + 8004940: f7fe fa86 bl 8002e50 + 8004944: 4602 mov r2, r0 + 8004946: 687b ldr r3, [r7, #4] + 8004948: 1ad3 subs r3, r2, r3 + 800494a: 68ba ldr r2, [r7, #8] + 800494c: 429a cmp r2, r3 + 800494e: d302 bcc.n 8004956 + 8004950: 68bb ldr r3, [r7, #8] + 8004952: 2b00 cmp r3, #0 + 8004954: d11d bne.n 8004992 { if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET)) - 80046b6: 68fb ldr r3, [r7, #12] - 80046b8: 681b ldr r3, [r3, #0] - 80046ba: 695b ldr r3, [r3, #20] - 80046bc: f003 0340 and.w r3, r3, #64 @ 0x40 - 80046c0: 2b40 cmp r3, #64 @ 0x40 - 80046c2: d016 beq.n 80046f2 + 8004956: 68fb ldr r3, [r7, #12] + 8004958: 681b ldr r3, [r3, #0] + 800495a: 695b ldr r3, [r3, #20] + 800495c: f003 0340 and.w r3, r3, #64 @ 0x40 + 8004960: 2b40 cmp r3, #64 @ 0x40 + 8004962: d016 beq.n 8004992 { hi2c->PreviousState = I2C_STATE_NONE; - 80046c4: 68fb ldr r3, [r7, #12] - 80046c6: 2200 movs r2, #0 - 80046c8: 631a str r2, [r3, #48] @ 0x30 + 8004964: 68fb ldr r3, [r7, #12] + 8004966: 2200 movs r2, #0 + 8004968: 631a str r2, [r3, #48] @ 0x30 hi2c->State = HAL_I2C_STATE_READY; - 80046ca: 68fb ldr r3, [r7, #12] - 80046cc: 2220 movs r2, #32 - 80046ce: f883 203d strb.w r2, [r3, #61] @ 0x3d + 800496a: 68fb ldr r3, [r7, #12] + 800496c: 2220 movs r2, #32 + 800496e: f883 203d strb.w r2, [r3, #61] @ 0x3d hi2c->Mode = HAL_I2C_MODE_NONE; - 80046d2: 68fb ldr r3, [r7, #12] - 80046d4: 2200 movs r2, #0 - 80046d6: f883 203e strb.w r2, [r3, #62] @ 0x3e + 8004972: 68fb ldr r3, [r7, #12] + 8004974: 2200 movs r2, #0 + 8004976: f883 203e strb.w r2, [r3, #62] @ 0x3e hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; - 80046da: 68fb ldr r3, [r7, #12] - 80046dc: 6c1b ldr r3, [r3, #64] @ 0x40 - 80046de: f043 0220 orr.w r2, r3, #32 - 80046e2: 68fb ldr r3, [r7, #12] - 80046e4: 641a str r2, [r3, #64] @ 0x40 + 800497a: 68fb ldr r3, [r7, #12] + 800497c: 6c1b ldr r3, [r3, #64] @ 0x40 + 800497e: f043 0220 orr.w r2, r3, #32 + 8004982: 68fb ldr r3, [r7, #12] + 8004984: 641a str r2, [r3, #64] @ 0x40 /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 80046e6: 68fb ldr r3, [r7, #12] - 80046e8: 2200 movs r2, #0 - 80046ea: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8004986: 68fb ldr r3, [r7, #12] + 8004988: 2200 movs r2, #0 + 800498a: f883 203c strb.w r2, [r3, #60] @ 0x3c return HAL_ERROR; - 80046ee: 2301 movs r3, #1 - 80046f0: e007 b.n 8004702 + 800498e: 2301 movs r3, #1 + 8004990: e007 b.n 80049a2 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET) - 80046f2: 68fb ldr r3, [r7, #12] - 80046f4: 681b ldr r3, [r3, #0] - 80046f6: 695b ldr r3, [r3, #20] - 80046f8: f003 0340 and.w r3, r3, #64 @ 0x40 - 80046fc: 2b40 cmp r3, #64 @ 0x40 - 80046fe: d1ae bne.n 800465e + 8004992: 68fb ldr r3, [r7, #12] + 8004994: 681b ldr r3, [r3, #0] + 8004996: 695b ldr r3, [r3, #20] + 8004998: f003 0340 and.w r3, r3, #64 @ 0x40 + 800499c: 2b40 cmp r3, #64 @ 0x40 + 800499e: d1ae bne.n 80048fe } } } return HAL_OK; - 8004700: 2300 movs r3, #0 + 80049a0: 2300 movs r3, #0 } - 8004702: 4618 mov r0, r3 - 8004704: 3710 adds r7, #16 - 8004706: 46bd mov sp, r7 - 8004708: bd80 pop {r7, pc} + 80049a2: 4618 mov r0, r3 + 80049a4: 3710 adds r7, #16 + 80049a6: 46bd mov sp, r7 + 80049a8: bd80 pop {r7, pc} -0800470a : +080049aa : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval HAL status */ static HAL_StatusTypeDef I2C_IsAcknowledgeFailed(I2C_HandleTypeDef *hi2c) { - 800470a: b480 push {r7} - 800470c: b083 sub sp, #12 - 800470e: af00 add r7, sp, #0 - 8004710: 6078 str r0, [r7, #4] + 80049aa: b480 push {r7} + 80049ac: b083 sub sp, #12 + 80049ae: af00 add r7, sp, #0 + 80049b0: 6078 str r0, [r7, #4] if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) - 8004712: 687b ldr r3, [r7, #4] - 8004714: 681b ldr r3, [r3, #0] - 8004716: 695b ldr r3, [r3, #20] - 8004718: f403 6380 and.w r3, r3, #1024 @ 0x400 - 800471c: f5b3 6f80 cmp.w r3, #1024 @ 0x400 - 8004720: d11b bne.n 800475a + 80049b2: 687b ldr r3, [r7, #4] + 80049b4: 681b ldr r3, [r3, #0] + 80049b6: 695b ldr r3, [r3, #20] + 80049b8: f403 6380 and.w r3, r3, #1024 @ 0x400 + 80049bc: f5b3 6f80 cmp.w r3, #1024 @ 0x400 + 80049c0: d11b bne.n 80049fa { /* Clear NACKF Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8004722: 687b ldr r3, [r7, #4] - 8004724: 681b ldr r3, [r3, #0] - 8004726: f46f 6280 mvn.w r2, #1024 @ 0x400 - 800472a: 615a str r2, [r3, #20] + 80049c2: 687b ldr r3, [r7, #4] + 80049c4: 681b ldr r3, [r3, #0] + 80049c6: f46f 6280 mvn.w r2, #1024 @ 0x400 + 80049ca: 615a str r2, [r3, #20] hi2c->PreviousState = I2C_STATE_NONE; - 800472c: 687b ldr r3, [r7, #4] - 800472e: 2200 movs r2, #0 - 8004730: 631a str r2, [r3, #48] @ 0x30 + 80049cc: 687b ldr r3, [r7, #4] + 80049ce: 2200 movs r2, #0 + 80049d0: 631a str r2, [r3, #48] @ 0x30 hi2c->State = HAL_I2C_STATE_READY; - 8004732: 687b ldr r3, [r7, #4] - 8004734: 2220 movs r2, #32 - 8004736: f883 203d strb.w r2, [r3, #61] @ 0x3d + 80049d2: 687b ldr r3, [r7, #4] + 80049d4: 2220 movs r2, #32 + 80049d6: f883 203d strb.w r2, [r3, #61] @ 0x3d hi2c->Mode = HAL_I2C_MODE_NONE; - 800473a: 687b ldr r3, [r7, #4] - 800473c: 2200 movs r2, #0 - 800473e: f883 203e strb.w r2, [r3, #62] @ 0x3e + 80049da: 687b ldr r3, [r7, #4] + 80049dc: 2200 movs r2, #0 + 80049de: f883 203e strb.w r2, [r3, #62] @ 0x3e hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 8004742: 687b ldr r3, [r7, #4] - 8004744: 6c1b ldr r3, [r3, #64] @ 0x40 - 8004746: f043 0204 orr.w r2, r3, #4 - 800474a: 687b ldr r3, [r7, #4] - 800474c: 641a str r2, [r3, #64] @ 0x40 + 80049e2: 687b ldr r3, [r7, #4] + 80049e4: 6c1b ldr r3, [r3, #64] @ 0x40 + 80049e6: f043 0204 orr.w r2, r3, #4 + 80049ea: 687b ldr r3, [r7, #4] + 80049ec: 641a str r2, [r3, #64] @ 0x40 /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 800474e: 687b ldr r3, [r7, #4] - 8004750: 2200 movs r2, #0 - 8004752: f883 203c strb.w r2, [r3, #60] @ 0x3c + 80049ee: 687b ldr r3, [r7, #4] + 80049f0: 2200 movs r2, #0 + 80049f2: f883 203c strb.w r2, [r3, #60] @ 0x3c return HAL_ERROR; - 8004756: 2301 movs r3, #1 - 8004758: e000 b.n 800475c + 80049f6: 2301 movs r3, #1 + 80049f8: e000 b.n 80049fc } return HAL_OK; - 800475a: 2300 movs r3, #0 + 80049fa: 2300 movs r3, #0 } - 800475c: 4618 mov r0, r3 - 800475e: 370c adds r7, #12 - 8004760: 46bd mov sp, r7 - 8004762: bc80 pop {r7} - 8004764: 4770 bx lr + 80049fc: 4618 mov r0, r3 + 80049fe: 370c adds r7, #12 + 8004a00: 46bd mov sp, r7 + 8004a02: bc80 pop {r7} + 8004a04: 4770 bx lr ... -08004768 : +08004a08 : * supported by this macro. User should request a transition to HSE Off * first and then HSE On or HSE Bypass. * @retval HAL status */ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) { - 8004768: b580 push {r7, lr} - 800476a: b086 sub sp, #24 - 800476c: af00 add r7, sp, #0 - 800476e: 6078 str r0, [r7, #4] + 8004a08: b580 push {r7, lr} + 8004a0a: b086 sub sp, #24 + 8004a0c: af00 add r7, sp, #0 + 8004a0e: 6078 str r0, [r7, #4] uint32_t tickstart; uint32_t pll_config; /* Check Null pointer */ if (RCC_OscInitStruct == NULL) - 8004770: 687b ldr r3, [r7, #4] - 8004772: 2b00 cmp r3, #0 - 8004774: d101 bne.n 800477a + 8004a10: 687b ldr r3, [r7, #4] + 8004a12: 2b00 cmp r3, #0 + 8004a14: d101 bne.n 8004a1a { return HAL_ERROR; - 8004776: 2301 movs r3, #1 - 8004778: e272 b.n 8004c60 + 8004a16: 2301 movs r3, #1 + 8004a18: e272 b.n 8004f00 /* Check the parameters */ assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); /*------------------------------- HSE Configuration ------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) - 800477a: 687b ldr r3, [r7, #4] - 800477c: 681b ldr r3, [r3, #0] - 800477e: f003 0301 and.w r3, r3, #1 - 8004782: 2b00 cmp r3, #0 - 8004784: f000 8087 beq.w 8004896 + 8004a1a: 687b ldr r3, [r7, #4] + 8004a1c: 681b ldr r3, [r3, #0] + 8004a1e: f003 0301 and.w r3, r3, #1 + 8004a22: 2b00 cmp r3, #0 + 8004a24: f000 8087 beq.w 8004b36 { /* 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 ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE) - 8004788: 4b92 ldr r3, [pc, #584] @ (80049d4 ) - 800478a: 685b ldr r3, [r3, #4] - 800478c: f003 030c and.w r3, r3, #12 - 8004790: 2b04 cmp r3, #4 - 8004792: d00c beq.n 80047ae + 8004a28: 4b92 ldr r3, [pc, #584] @ (8004c74 ) + 8004a2a: 685b ldr r3, [r3, #4] + 8004a2c: f003 030c and.w r3, r3, #12 + 8004a30: 2b04 cmp r3, #4 + 8004a32: d00c beq.n 8004a4e || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSE))) - 8004794: 4b8f ldr r3, [pc, #572] @ (80049d4 ) - 8004796: 685b ldr r3, [r3, #4] - 8004798: f003 030c and.w r3, r3, #12 - 800479c: 2b08 cmp r3, #8 - 800479e: d112 bne.n 80047c6 - 80047a0: 4b8c ldr r3, [pc, #560] @ (80049d4 ) - 80047a2: 685b ldr r3, [r3, #4] - 80047a4: f403 3380 and.w r3, r3, #65536 @ 0x10000 - 80047a8: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 80047ac: d10b bne.n 80047c6 + 8004a34: 4b8f ldr r3, [pc, #572] @ (8004c74 ) + 8004a36: 685b ldr r3, [r3, #4] + 8004a38: f003 030c and.w r3, r3, #12 + 8004a3c: 2b08 cmp r3, #8 + 8004a3e: d112 bne.n 8004a66 + 8004a40: 4b8c ldr r3, [pc, #560] @ (8004c74 ) + 8004a42: 685b ldr r3, [r3, #4] + 8004a44: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8004a48: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 8004a4c: d10b bne.n 8004a66 { if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 80047ae: 4b89 ldr r3, [pc, #548] @ (80049d4 ) - 80047b0: 681b ldr r3, [r3, #0] - 80047b2: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 80047b6: 2b00 cmp r3, #0 - 80047b8: d06c beq.n 8004894 - 80047ba: 687b ldr r3, [r7, #4] - 80047bc: 685b ldr r3, [r3, #4] - 80047be: 2b00 cmp r3, #0 - 80047c0: d168 bne.n 8004894 + 8004a4e: 4b89 ldr r3, [pc, #548] @ (8004c74 ) + 8004a50: 681b ldr r3, [r3, #0] + 8004a52: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8004a56: 2b00 cmp r3, #0 + 8004a58: d06c beq.n 8004b34 + 8004a5a: 687b ldr r3, [r7, #4] + 8004a5c: 685b ldr r3, [r3, #4] + 8004a5e: 2b00 cmp r3, #0 + 8004a60: d168 bne.n 8004b34 { return HAL_ERROR; - 80047c2: 2301 movs r3, #1 - 80047c4: e24c b.n 8004c60 + 8004a62: 2301 movs r3, #1 + 8004a64: e24c b.n 8004f00 } } else { /* Set the new HSE configuration ---------------------------------------*/ __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); - 80047c6: 687b ldr r3, [r7, #4] - 80047c8: 685b ldr r3, [r3, #4] - 80047ca: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 80047ce: d106 bne.n 80047de - 80047d0: 4b80 ldr r3, [pc, #512] @ (80049d4 ) - 80047d2: 681b ldr r3, [r3, #0] - 80047d4: 4a7f ldr r2, [pc, #508] @ (80049d4 ) - 80047d6: f443 3380 orr.w r3, r3, #65536 @ 0x10000 - 80047da: 6013 str r3, [r2, #0] - 80047dc: e02e b.n 800483c - 80047de: 687b ldr r3, [r7, #4] - 80047e0: 685b ldr r3, [r3, #4] - 80047e2: 2b00 cmp r3, #0 - 80047e4: d10c bne.n 8004800 - 80047e6: 4b7b ldr r3, [pc, #492] @ (80049d4 ) - 80047e8: 681b ldr r3, [r3, #0] - 80047ea: 4a7a ldr r2, [pc, #488] @ (80049d4 ) - 80047ec: f423 3380 bic.w r3, r3, #65536 @ 0x10000 - 80047f0: 6013 str r3, [r2, #0] - 80047f2: 4b78 ldr r3, [pc, #480] @ (80049d4 ) - 80047f4: 681b ldr r3, [r3, #0] - 80047f6: 4a77 ldr r2, [pc, #476] @ (80049d4 ) - 80047f8: f423 2380 bic.w r3, r3, #262144 @ 0x40000 - 80047fc: 6013 str r3, [r2, #0] - 80047fe: e01d b.n 800483c - 8004800: 687b ldr r3, [r7, #4] - 8004802: 685b ldr r3, [r3, #4] - 8004804: f5b3 2fa0 cmp.w r3, #327680 @ 0x50000 - 8004808: d10c bne.n 8004824 - 800480a: 4b72 ldr r3, [pc, #456] @ (80049d4 ) - 800480c: 681b ldr r3, [r3, #0] - 800480e: 4a71 ldr r2, [pc, #452] @ (80049d4 ) - 8004810: f443 2380 orr.w r3, r3, #262144 @ 0x40000 - 8004814: 6013 str r3, [r2, #0] - 8004816: 4b6f ldr r3, [pc, #444] @ (80049d4 ) - 8004818: 681b ldr r3, [r3, #0] - 800481a: 4a6e ldr r2, [pc, #440] @ (80049d4 ) - 800481c: f443 3380 orr.w r3, r3, #65536 @ 0x10000 - 8004820: 6013 str r3, [r2, #0] - 8004822: e00b b.n 800483c - 8004824: 4b6b ldr r3, [pc, #428] @ (80049d4 ) - 8004826: 681b ldr r3, [r3, #0] - 8004828: 4a6a ldr r2, [pc, #424] @ (80049d4 ) - 800482a: f423 3380 bic.w r3, r3, #65536 @ 0x10000 - 800482e: 6013 str r3, [r2, #0] - 8004830: 4b68 ldr r3, [pc, #416] @ (80049d4 ) - 8004832: 681b ldr r3, [r3, #0] - 8004834: 4a67 ldr r2, [pc, #412] @ (80049d4 ) - 8004836: f423 2380 bic.w r3, r3, #262144 @ 0x40000 - 800483a: 6013 str r3, [r2, #0] + 8004a66: 687b ldr r3, [r7, #4] + 8004a68: 685b ldr r3, [r3, #4] + 8004a6a: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 8004a6e: d106 bne.n 8004a7e + 8004a70: 4b80 ldr r3, [pc, #512] @ (8004c74 ) + 8004a72: 681b ldr r3, [r3, #0] + 8004a74: 4a7f ldr r2, [pc, #508] @ (8004c74 ) + 8004a76: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 8004a7a: 6013 str r3, [r2, #0] + 8004a7c: e02e b.n 8004adc + 8004a7e: 687b ldr r3, [r7, #4] + 8004a80: 685b ldr r3, [r3, #4] + 8004a82: 2b00 cmp r3, #0 + 8004a84: d10c bne.n 8004aa0 + 8004a86: 4b7b ldr r3, [pc, #492] @ (8004c74 ) + 8004a88: 681b ldr r3, [r3, #0] + 8004a8a: 4a7a ldr r2, [pc, #488] @ (8004c74 ) + 8004a8c: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 8004a90: 6013 str r3, [r2, #0] + 8004a92: 4b78 ldr r3, [pc, #480] @ (8004c74 ) + 8004a94: 681b ldr r3, [r3, #0] + 8004a96: 4a77 ldr r2, [pc, #476] @ (8004c74 ) + 8004a98: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 8004a9c: 6013 str r3, [r2, #0] + 8004a9e: e01d b.n 8004adc + 8004aa0: 687b ldr r3, [r7, #4] + 8004aa2: 685b ldr r3, [r3, #4] + 8004aa4: f5b3 2fa0 cmp.w r3, #327680 @ 0x50000 + 8004aa8: d10c bne.n 8004ac4 + 8004aaa: 4b72 ldr r3, [pc, #456] @ (8004c74 ) + 8004aac: 681b ldr r3, [r3, #0] + 8004aae: 4a71 ldr r2, [pc, #452] @ (8004c74 ) + 8004ab0: f443 2380 orr.w r3, r3, #262144 @ 0x40000 + 8004ab4: 6013 str r3, [r2, #0] + 8004ab6: 4b6f ldr r3, [pc, #444] @ (8004c74 ) + 8004ab8: 681b ldr r3, [r3, #0] + 8004aba: 4a6e ldr r2, [pc, #440] @ (8004c74 ) + 8004abc: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 8004ac0: 6013 str r3, [r2, #0] + 8004ac2: e00b b.n 8004adc + 8004ac4: 4b6b ldr r3, [pc, #428] @ (8004c74 ) + 8004ac6: 681b ldr r3, [r3, #0] + 8004ac8: 4a6a ldr r2, [pc, #424] @ (8004c74 ) + 8004aca: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 8004ace: 6013 str r3, [r2, #0] + 8004ad0: 4b68 ldr r3, [pc, #416] @ (8004c74 ) + 8004ad2: 681b ldr r3, [r3, #0] + 8004ad4: 4a67 ldr r2, [pc, #412] @ (8004c74 ) + 8004ad6: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 8004ada: 6013 str r3, [r2, #0] /* Check the HSE State */ if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF) - 800483c: 687b ldr r3, [r7, #4] - 800483e: 685b ldr r3, [r3, #4] - 8004840: 2b00 cmp r3, #0 - 8004842: d013 beq.n 800486c + 8004adc: 687b ldr r3, [r7, #4] + 8004ade: 685b ldr r3, [r3, #4] + 8004ae0: 2b00 cmp r3, #0 + 8004ae2: d013 beq.n 8004b0c { /* Get Start Tick */ tickstart = HAL_GetTick(); - 8004844: f7fe f990 bl 8002b68 - 8004848: 6138 str r0, [r7, #16] + 8004ae4: f7fe f9b4 bl 8002e50 + 8004ae8: 6138 str r0, [r7, #16] /* Wait till HSE is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 800484a: e008 b.n 800485e + 8004aea: e008 b.n 8004afe { if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) - 800484c: f7fe f98c bl 8002b68 - 8004850: 4602 mov r2, r0 - 8004852: 693b ldr r3, [r7, #16] - 8004854: 1ad3 subs r3, r2, r3 - 8004856: 2b64 cmp r3, #100 @ 0x64 - 8004858: d901 bls.n 800485e + 8004aec: f7fe f9b0 bl 8002e50 + 8004af0: 4602 mov r2, r0 + 8004af2: 693b ldr r3, [r7, #16] + 8004af4: 1ad3 subs r3, r2, r3 + 8004af6: 2b64 cmp r3, #100 @ 0x64 + 8004af8: d901 bls.n 8004afe { return HAL_TIMEOUT; - 800485a: 2303 movs r3, #3 - 800485c: e200 b.n 8004c60 + 8004afa: 2303 movs r3, #3 + 8004afc: e200 b.n 8004f00 while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 800485e: 4b5d ldr r3, [pc, #372] @ (80049d4 ) - 8004860: 681b ldr r3, [r3, #0] - 8004862: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 8004866: 2b00 cmp r3, #0 - 8004868: d0f0 beq.n 800484c - 800486a: e014 b.n 8004896 + 8004afe: 4b5d ldr r3, [pc, #372] @ (8004c74 ) + 8004b00: 681b ldr r3, [r3, #0] + 8004b02: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8004b06: 2b00 cmp r3, #0 + 8004b08: d0f0 beq.n 8004aec + 8004b0a: e014 b.n 8004b36 } } else { /* Get Start Tick */ tickstart = HAL_GetTick(); - 800486c: f7fe f97c bl 8002b68 - 8004870: 6138 str r0, [r7, #16] + 8004b0c: f7fe f9a0 bl 8002e50 + 8004b10: 6138 str r0, [r7, #16] /* Wait till HSE is disabled */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) - 8004872: e008 b.n 8004886 + 8004b12: e008 b.n 8004b26 { if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) - 8004874: f7fe f978 bl 8002b68 - 8004878: 4602 mov r2, r0 - 800487a: 693b ldr r3, [r7, #16] - 800487c: 1ad3 subs r3, r2, r3 - 800487e: 2b64 cmp r3, #100 @ 0x64 - 8004880: d901 bls.n 8004886 + 8004b14: f7fe f99c bl 8002e50 + 8004b18: 4602 mov r2, r0 + 8004b1a: 693b ldr r3, [r7, #16] + 8004b1c: 1ad3 subs r3, r2, r3 + 8004b1e: 2b64 cmp r3, #100 @ 0x64 + 8004b20: d901 bls.n 8004b26 { return HAL_TIMEOUT; - 8004882: 2303 movs r3, #3 - 8004884: e1ec b.n 8004c60 + 8004b22: 2303 movs r3, #3 + 8004b24: e1ec b.n 8004f00 while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) - 8004886: 4b53 ldr r3, [pc, #332] @ (80049d4 ) - 8004888: 681b ldr r3, [r3, #0] - 800488a: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 800488e: 2b00 cmp r3, #0 - 8004890: d1f0 bne.n 8004874 - 8004892: e000 b.n 8004896 + 8004b26: 4b53 ldr r3, [pc, #332] @ (8004c74 ) + 8004b28: 681b ldr r3, [r3, #0] + 8004b2a: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8004b2e: 2b00 cmp r3, #0 + 8004b30: d1f0 bne.n 8004b14 + 8004b32: e000 b.n 8004b36 if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 8004894: bf00 nop + 8004b34: bf00 nop } } } } /*----------------------------- HSI Configuration --------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) - 8004896: 687b ldr r3, [r7, #4] - 8004898: 681b ldr r3, [r3, #0] - 800489a: f003 0302 and.w r3, r3, #2 - 800489e: 2b00 cmp r3, #0 - 80048a0: d063 beq.n 800496a + 8004b36: 687b ldr r3, [r7, #4] + 8004b38: 681b ldr r3, [r3, #0] + 8004b3a: f003 0302 and.w r3, r3, #2 + 8004b3e: 2b00 cmp r3, #0 + 8004b40: d063 beq.n 8004c0a /* Check the parameters */ assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); assert_param(IS_RCC_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 ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI) - 80048a2: 4b4c ldr r3, [pc, #304] @ (80049d4 ) - 80048a4: 685b ldr r3, [r3, #4] - 80048a6: f003 030c and.w r3, r3, #12 - 80048aa: 2b00 cmp r3, #0 - 80048ac: d00b beq.n 80048c6 + 8004b42: 4b4c ldr r3, [pc, #304] @ (8004c74 ) + 8004b44: 685b ldr r3, [r3, #4] + 8004b46: f003 030c and.w r3, r3, #12 + 8004b4a: 2b00 cmp r3, #0 + 8004b4c: d00b beq.n 8004b66 || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSI_DIV2))) - 80048ae: 4b49 ldr r3, [pc, #292] @ (80049d4 ) - 80048b0: 685b ldr r3, [r3, #4] - 80048b2: f003 030c and.w r3, r3, #12 - 80048b6: 2b08 cmp r3, #8 - 80048b8: d11c bne.n 80048f4 - 80048ba: 4b46 ldr r3, [pc, #280] @ (80049d4 ) - 80048bc: 685b ldr r3, [r3, #4] - 80048be: f403 3380 and.w r3, r3, #65536 @ 0x10000 - 80048c2: 2b00 cmp r3, #0 - 80048c4: d116 bne.n 80048f4 + 8004b4e: 4b49 ldr r3, [pc, #292] @ (8004c74 ) + 8004b50: 685b ldr r3, [r3, #4] + 8004b52: f003 030c and.w r3, r3, #12 + 8004b56: 2b08 cmp r3, #8 + 8004b58: d11c bne.n 8004b94 + 8004b5a: 4b46 ldr r3, [pc, #280] @ (8004c74 ) + 8004b5c: 685b ldr r3, [r3, #4] + 8004b5e: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8004b62: 2b00 cmp r3, #0 + 8004b64: d116 bne.n 8004b94 { /* When HSI is used as system clock it will not disabled */ if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) - 80048c6: 4b43 ldr r3, [pc, #268] @ (80049d4 ) - 80048c8: 681b ldr r3, [r3, #0] - 80048ca: f003 0302 and.w r3, r3, #2 - 80048ce: 2b00 cmp r3, #0 - 80048d0: d005 beq.n 80048de - 80048d2: 687b ldr r3, [r7, #4] - 80048d4: 691b ldr r3, [r3, #16] - 80048d6: 2b01 cmp r3, #1 - 80048d8: d001 beq.n 80048de + 8004b66: 4b43 ldr r3, [pc, #268] @ (8004c74 ) + 8004b68: 681b ldr r3, [r3, #0] + 8004b6a: f003 0302 and.w r3, r3, #2 + 8004b6e: 2b00 cmp r3, #0 + 8004b70: d005 beq.n 8004b7e + 8004b72: 687b ldr r3, [r7, #4] + 8004b74: 691b ldr r3, [r3, #16] + 8004b76: 2b01 cmp r3, #1 + 8004b78: d001 beq.n 8004b7e { return HAL_ERROR; - 80048da: 2301 movs r3, #1 - 80048dc: e1c0 b.n 8004c60 + 8004b7a: 2301 movs r3, #1 + 8004b7c: e1c0 b.n 8004f00 } /* Otherwise, just the calibration is allowed */ else { /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 80048de: 4b3d ldr r3, [pc, #244] @ (80049d4 ) - 80048e0: 681b ldr r3, [r3, #0] - 80048e2: f023 02f8 bic.w r2, r3, #248 @ 0xf8 - 80048e6: 687b ldr r3, [r7, #4] - 80048e8: 695b ldr r3, [r3, #20] - 80048ea: 00db lsls r3, r3, #3 - 80048ec: 4939 ldr r1, [pc, #228] @ (80049d4 ) - 80048ee: 4313 orrs r3, r2 - 80048f0: 600b str r3, [r1, #0] + 8004b7e: 4b3d ldr r3, [pc, #244] @ (8004c74 ) + 8004b80: 681b ldr r3, [r3, #0] + 8004b82: f023 02f8 bic.w r2, r3, #248 @ 0xf8 + 8004b86: 687b ldr r3, [r7, #4] + 8004b88: 695b ldr r3, [r3, #20] + 8004b8a: 00db lsls r3, r3, #3 + 8004b8c: 4939 ldr r1, [pc, #228] @ (8004c74 ) + 8004b8e: 4313 orrs r3, r2 + 8004b90: 600b str r3, [r1, #0] if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) - 80048f2: e03a b.n 800496a + 8004b92: e03a b.n 8004c0a } } else { /* Check the HSI State */ if (RCC_OscInitStruct->HSIState != RCC_HSI_OFF) - 80048f4: 687b ldr r3, [r7, #4] - 80048f6: 691b ldr r3, [r3, #16] - 80048f8: 2b00 cmp r3, #0 - 80048fa: d020 beq.n 800493e + 8004b94: 687b ldr r3, [r7, #4] + 8004b96: 691b ldr r3, [r3, #16] + 8004b98: 2b00 cmp r3, #0 + 8004b9a: d020 beq.n 8004bde { /* Enable the Internal High Speed oscillator (HSI). */ __HAL_RCC_HSI_ENABLE(); - 80048fc: 4b36 ldr r3, [pc, #216] @ (80049d8 ) - 80048fe: 2201 movs r2, #1 - 8004900: 601a str r2, [r3, #0] + 8004b9c: 4b36 ldr r3, [pc, #216] @ (8004c78 ) + 8004b9e: 2201 movs r2, #1 + 8004ba0: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 8004902: f7fe f931 bl 8002b68 - 8004906: 6138 str r0, [r7, #16] + 8004ba2: f7fe f955 bl 8002e50 + 8004ba6: 6138 str r0, [r7, #16] /* Wait till HSI is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 8004908: e008 b.n 800491c + 8004ba8: e008 b.n 8004bbc { if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) - 800490a: f7fe f92d bl 8002b68 - 800490e: 4602 mov r2, r0 - 8004910: 693b ldr r3, [r7, #16] - 8004912: 1ad3 subs r3, r2, r3 - 8004914: 2b02 cmp r3, #2 - 8004916: d901 bls.n 800491c + 8004baa: f7fe f951 bl 8002e50 + 8004bae: 4602 mov r2, r0 + 8004bb0: 693b ldr r3, [r7, #16] + 8004bb2: 1ad3 subs r3, r2, r3 + 8004bb4: 2b02 cmp r3, #2 + 8004bb6: d901 bls.n 8004bbc { return HAL_TIMEOUT; - 8004918: 2303 movs r3, #3 - 800491a: e1a1 b.n 8004c60 + 8004bb8: 2303 movs r3, #3 + 8004bba: e1a1 b.n 8004f00 while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 800491c: 4b2d ldr r3, [pc, #180] @ (80049d4 ) - 800491e: 681b ldr r3, [r3, #0] - 8004920: f003 0302 and.w r3, r3, #2 - 8004924: 2b00 cmp r3, #0 - 8004926: d0f0 beq.n 800490a + 8004bbc: 4b2d ldr r3, [pc, #180] @ (8004c74 ) + 8004bbe: 681b ldr r3, [r3, #0] + 8004bc0: f003 0302 and.w r3, r3, #2 + 8004bc4: 2b00 cmp r3, #0 + 8004bc6: d0f0 beq.n 8004baa } } /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 8004928: 4b2a ldr r3, [pc, #168] @ (80049d4 ) - 800492a: 681b ldr r3, [r3, #0] - 800492c: f023 02f8 bic.w r2, r3, #248 @ 0xf8 - 8004930: 687b ldr r3, [r7, #4] - 8004932: 695b ldr r3, [r3, #20] - 8004934: 00db lsls r3, r3, #3 - 8004936: 4927 ldr r1, [pc, #156] @ (80049d4 ) - 8004938: 4313 orrs r3, r2 - 800493a: 600b str r3, [r1, #0] - 800493c: e015 b.n 800496a + 8004bc8: 4b2a ldr r3, [pc, #168] @ (8004c74 ) + 8004bca: 681b ldr r3, [r3, #0] + 8004bcc: f023 02f8 bic.w r2, r3, #248 @ 0xf8 + 8004bd0: 687b ldr r3, [r7, #4] + 8004bd2: 695b ldr r3, [r3, #20] + 8004bd4: 00db lsls r3, r3, #3 + 8004bd6: 4927 ldr r1, [pc, #156] @ (8004c74 ) + 8004bd8: 4313 orrs r3, r2 + 8004bda: 600b str r3, [r1, #0] + 8004bdc: e015 b.n 8004c0a } else { /* Disable the Internal High Speed oscillator (HSI). */ __HAL_RCC_HSI_DISABLE(); - 800493e: 4b26 ldr r3, [pc, #152] @ (80049d8 ) - 8004940: 2200 movs r2, #0 - 8004942: 601a str r2, [r3, #0] + 8004bde: 4b26 ldr r3, [pc, #152] @ (8004c78 ) + 8004be0: 2200 movs r2, #0 + 8004be2: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 8004944: f7fe f910 bl 8002b68 - 8004948: 6138 str r0, [r7, #16] + 8004be4: f7fe f934 bl 8002e50 + 8004be8: 6138 str r0, [r7, #16] /* Wait till HSI is disabled */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) - 800494a: e008 b.n 800495e + 8004bea: e008 b.n 8004bfe { if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) - 800494c: f7fe f90c bl 8002b68 - 8004950: 4602 mov r2, r0 - 8004952: 693b ldr r3, [r7, #16] - 8004954: 1ad3 subs r3, r2, r3 - 8004956: 2b02 cmp r3, #2 - 8004958: d901 bls.n 800495e + 8004bec: f7fe f930 bl 8002e50 + 8004bf0: 4602 mov r2, r0 + 8004bf2: 693b ldr r3, [r7, #16] + 8004bf4: 1ad3 subs r3, r2, r3 + 8004bf6: 2b02 cmp r3, #2 + 8004bf8: d901 bls.n 8004bfe { return HAL_TIMEOUT; - 800495a: 2303 movs r3, #3 - 800495c: e180 b.n 8004c60 + 8004bfa: 2303 movs r3, #3 + 8004bfc: e180 b.n 8004f00 while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) - 800495e: 4b1d ldr r3, [pc, #116] @ (80049d4 ) - 8004960: 681b ldr r3, [r3, #0] - 8004962: f003 0302 and.w r3, r3, #2 - 8004966: 2b00 cmp r3, #0 - 8004968: d1f0 bne.n 800494c + 8004bfe: 4b1d ldr r3, [pc, #116] @ (8004c74 ) + 8004c00: 681b ldr r3, [r3, #0] + 8004c02: f003 0302 and.w r3, r3, #2 + 8004c06: 2b00 cmp r3, #0 + 8004c08: d1f0 bne.n 8004bec } } } } /*------------------------------ LSI Configuration -------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) - 800496a: 687b ldr r3, [r7, #4] - 800496c: 681b ldr r3, [r3, #0] - 800496e: f003 0308 and.w r3, r3, #8 - 8004972: 2b00 cmp r3, #0 - 8004974: d03a beq.n 80049ec + 8004c0a: 687b ldr r3, [r7, #4] + 8004c0c: 681b ldr r3, [r3, #0] + 8004c0e: f003 0308 and.w r3, r3, #8 + 8004c12: 2b00 cmp r3, #0 + 8004c14: d03a beq.n 8004c8c { /* Check the parameters */ assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); /* Check the LSI State */ if (RCC_OscInitStruct->LSIState != RCC_LSI_OFF) - 8004976: 687b ldr r3, [r7, #4] - 8004978: 699b ldr r3, [r3, #24] - 800497a: 2b00 cmp r3, #0 - 800497c: d019 beq.n 80049b2 + 8004c16: 687b ldr r3, [r7, #4] + 8004c18: 699b ldr r3, [r3, #24] + 8004c1a: 2b00 cmp r3, #0 + 8004c1c: d019 beq.n 8004c52 { /* Enable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_ENABLE(); - 800497e: 4b17 ldr r3, [pc, #92] @ (80049dc ) - 8004980: 2201 movs r2, #1 - 8004982: 601a str r2, [r3, #0] + 8004c1e: 4b17 ldr r3, [pc, #92] @ (8004c7c ) + 8004c20: 2201 movs r2, #1 + 8004c22: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 8004984: f7fe f8f0 bl 8002b68 - 8004988: 6138 str r0, [r7, #16] + 8004c24: f7fe f914 bl 8002e50 + 8004c28: 6138 str r0, [r7, #16] /* Wait till LSI is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) - 800498a: e008 b.n 800499e + 8004c2a: e008 b.n 8004c3e { if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 800498c: f7fe f8ec bl 8002b68 - 8004990: 4602 mov r2, r0 - 8004992: 693b ldr r3, [r7, #16] - 8004994: 1ad3 subs r3, r2, r3 - 8004996: 2b02 cmp r3, #2 - 8004998: d901 bls.n 800499e + 8004c2c: f7fe f910 bl 8002e50 + 8004c30: 4602 mov r2, r0 + 8004c32: 693b ldr r3, [r7, #16] + 8004c34: 1ad3 subs r3, r2, r3 + 8004c36: 2b02 cmp r3, #2 + 8004c38: d901 bls.n 8004c3e { return HAL_TIMEOUT; - 800499a: 2303 movs r3, #3 - 800499c: e160 b.n 8004c60 + 8004c3a: 2303 movs r3, #3 + 8004c3c: e160 b.n 8004f00 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) - 800499e: 4b0d ldr r3, [pc, #52] @ (80049d4 ) - 80049a0: 6a5b ldr r3, [r3, #36] @ 0x24 - 80049a2: f003 0302 and.w r3, r3, #2 - 80049a6: 2b00 cmp r3, #0 - 80049a8: d0f0 beq.n 800498c + 8004c3e: 4b0d ldr r3, [pc, #52] @ (8004c74 ) + 8004c40: 6a5b ldr r3, [r3, #36] @ 0x24 + 8004c42: f003 0302 and.w r3, r3, #2 + 8004c46: 2b00 cmp r3, #0 + 8004c48: d0f0 beq.n 8004c2c } } /* To have a fully stabilized clock in the specified range, a software delay of 1ms should be added.*/ RCC_Delay(1); - 80049aa: 2001 movs r0, #1 - 80049ac: f000 fad0 bl 8004f50 - 80049b0: e01c b.n 80049ec + 8004c4a: 2001 movs r0, #1 + 8004c4c: f000 fad0 bl 80051f0 + 8004c50: e01c b.n 8004c8c } else { /* Disable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_DISABLE(); - 80049b2: 4b0a ldr r3, [pc, #40] @ (80049dc ) - 80049b4: 2200 movs r2, #0 - 80049b6: 601a str r2, [r3, #0] + 8004c52: 4b0a ldr r3, [pc, #40] @ (8004c7c ) + 8004c54: 2200 movs r2, #0 + 8004c56: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 80049b8: f7fe f8d6 bl 8002b68 - 80049bc: 6138 str r0, [r7, #16] + 8004c58: f7fe f8fa bl 8002e50 + 8004c5c: 6138 str r0, [r7, #16] /* Wait till LSI is disabled */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) - 80049be: e00f b.n 80049e0 + 8004c5e: e00f b.n 8004c80 { if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 80049c0: f7fe f8d2 bl 8002b68 - 80049c4: 4602 mov r2, r0 - 80049c6: 693b ldr r3, [r7, #16] - 80049c8: 1ad3 subs r3, r2, r3 - 80049ca: 2b02 cmp r3, #2 - 80049cc: d908 bls.n 80049e0 + 8004c60: f7fe f8f6 bl 8002e50 + 8004c64: 4602 mov r2, r0 + 8004c66: 693b ldr r3, [r7, #16] + 8004c68: 1ad3 subs r3, r2, r3 + 8004c6a: 2b02 cmp r3, #2 + 8004c6c: d908 bls.n 8004c80 { return HAL_TIMEOUT; - 80049ce: 2303 movs r3, #3 - 80049d0: e146 b.n 8004c60 - 80049d2: bf00 nop - 80049d4: 40021000 .word 0x40021000 - 80049d8: 42420000 .word 0x42420000 - 80049dc: 42420480 .word 0x42420480 + 8004c6e: 2303 movs r3, #3 + 8004c70: e146 b.n 8004f00 + 8004c72: bf00 nop + 8004c74: 40021000 .word 0x40021000 + 8004c78: 42420000 .word 0x42420000 + 8004c7c: 42420480 .word 0x42420480 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) - 80049e0: 4b92 ldr r3, [pc, #584] @ (8004c2c ) - 80049e2: 6a5b ldr r3, [r3, #36] @ 0x24 - 80049e4: f003 0302 and.w r3, r3, #2 - 80049e8: 2b00 cmp r3, #0 - 80049ea: d1e9 bne.n 80049c0 + 8004c80: 4b92 ldr r3, [pc, #584] @ (8004ecc ) + 8004c82: 6a5b ldr r3, [r3, #36] @ 0x24 + 8004c84: f003 0302 and.w r3, r3, #2 + 8004c88: 2b00 cmp r3, #0 + 8004c8a: d1e9 bne.n 8004c60 } } } } /*------------------------------ LSE Configuration -------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) - 80049ec: 687b ldr r3, [r7, #4] - 80049ee: 681b ldr r3, [r3, #0] - 80049f0: f003 0304 and.w r3, r3, #4 - 80049f4: 2b00 cmp r3, #0 - 80049f6: f000 80a6 beq.w 8004b46 + 8004c8c: 687b ldr r3, [r7, #4] + 8004c8e: 681b ldr r3, [r3, #0] + 8004c90: f003 0304 and.w r3, r3, #4 + 8004c94: 2b00 cmp r3, #0 + 8004c96: f000 80a6 beq.w 8004de6 { FlagStatus pwrclkchanged = RESET; - 80049fa: 2300 movs r3, #0 - 80049fc: 75fb strb r3, [r7, #23] + 8004c9a: 2300 movs r3, #0 + 8004c9c: 75fb strb r3, [r7, #23] /* Check the parameters */ 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 (__HAL_RCC_PWR_IS_CLK_DISABLED()) - 80049fe: 4b8b ldr r3, [pc, #556] @ (8004c2c ) - 8004a00: 69db ldr r3, [r3, #28] - 8004a02: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 8004a06: 2b00 cmp r3, #0 - 8004a08: d10d bne.n 8004a26 + 8004c9e: 4b8b ldr r3, [pc, #556] @ (8004ecc ) + 8004ca0: 69db ldr r3, [r3, #28] + 8004ca2: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8004ca6: 2b00 cmp r3, #0 + 8004ca8: d10d bne.n 8004cc6 { __HAL_RCC_PWR_CLK_ENABLE(); - 8004a0a: 4b88 ldr r3, [pc, #544] @ (8004c2c ) - 8004a0c: 69db ldr r3, [r3, #28] - 8004a0e: 4a87 ldr r2, [pc, #540] @ (8004c2c ) - 8004a10: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 - 8004a14: 61d3 str r3, [r2, #28] - 8004a16: 4b85 ldr r3, [pc, #532] @ (8004c2c ) - 8004a18: 69db ldr r3, [r3, #28] - 8004a1a: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 8004a1e: 60bb str r3, [r7, #8] - 8004a20: 68bb ldr r3, [r7, #8] + 8004caa: 4b88 ldr r3, [pc, #544] @ (8004ecc ) + 8004cac: 69db ldr r3, [r3, #28] + 8004cae: 4a87 ldr r2, [pc, #540] @ (8004ecc ) + 8004cb0: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8004cb4: 61d3 str r3, [r2, #28] + 8004cb6: 4b85 ldr r3, [pc, #532] @ (8004ecc ) + 8004cb8: 69db ldr r3, [r3, #28] + 8004cba: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8004cbe: 60bb str r3, [r7, #8] + 8004cc0: 68bb ldr r3, [r7, #8] pwrclkchanged = SET; - 8004a22: 2301 movs r3, #1 - 8004a24: 75fb strb r3, [r7, #23] + 8004cc2: 2301 movs r3, #1 + 8004cc4: 75fb strb r3, [r7, #23] } if (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 8004a26: 4b82 ldr r3, [pc, #520] @ (8004c30 ) - 8004a28: 681b ldr r3, [r3, #0] - 8004a2a: f403 7380 and.w r3, r3, #256 @ 0x100 - 8004a2e: 2b00 cmp r3, #0 - 8004a30: d118 bne.n 8004a64 + 8004cc6: 4b82 ldr r3, [pc, #520] @ (8004ed0 ) + 8004cc8: 681b ldr r3, [r3, #0] + 8004cca: f403 7380 and.w r3, r3, #256 @ 0x100 + 8004cce: 2b00 cmp r3, #0 + 8004cd0: d118 bne.n 8004d04 { /* Enable write access to Backup domain */ SET_BIT(PWR->CR, PWR_CR_DBP); - 8004a32: 4b7f ldr r3, [pc, #508] @ (8004c30 ) - 8004a34: 681b ldr r3, [r3, #0] - 8004a36: 4a7e ldr r2, [pc, #504] @ (8004c30 ) - 8004a38: f443 7380 orr.w r3, r3, #256 @ 0x100 - 8004a3c: 6013 str r3, [r2, #0] + 8004cd2: 4b7f ldr r3, [pc, #508] @ (8004ed0 ) + 8004cd4: 681b ldr r3, [r3, #0] + 8004cd6: 4a7e ldr r2, [pc, #504] @ (8004ed0 ) + 8004cd8: f443 7380 orr.w r3, r3, #256 @ 0x100 + 8004cdc: 6013 str r3, [r2, #0] /* Wait for Backup domain Write protection disable */ tickstart = HAL_GetTick(); - 8004a3e: f7fe f893 bl 8002b68 - 8004a42: 6138 str r0, [r7, #16] + 8004cde: f7fe f8b7 bl 8002e50 + 8004ce2: 6138 str r0, [r7, #16] while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 8004a44: e008 b.n 8004a58 + 8004ce4: e008 b.n 8004cf8 { if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 8004a46: f7fe f88f bl 8002b68 - 8004a4a: 4602 mov r2, r0 - 8004a4c: 693b ldr r3, [r7, #16] - 8004a4e: 1ad3 subs r3, r2, r3 - 8004a50: 2b64 cmp r3, #100 @ 0x64 - 8004a52: d901 bls.n 8004a58 + 8004ce6: f7fe f8b3 bl 8002e50 + 8004cea: 4602 mov r2, r0 + 8004cec: 693b ldr r3, [r7, #16] + 8004cee: 1ad3 subs r3, r2, r3 + 8004cf0: 2b64 cmp r3, #100 @ 0x64 + 8004cf2: d901 bls.n 8004cf8 { return HAL_TIMEOUT; - 8004a54: 2303 movs r3, #3 - 8004a56: e103 b.n 8004c60 + 8004cf4: 2303 movs r3, #3 + 8004cf6: e103 b.n 8004f00 while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 8004a58: 4b75 ldr r3, [pc, #468] @ (8004c30 ) - 8004a5a: 681b ldr r3, [r3, #0] - 8004a5c: f403 7380 and.w r3, r3, #256 @ 0x100 - 8004a60: 2b00 cmp r3, #0 - 8004a62: d0f0 beq.n 8004a46 + 8004cf8: 4b75 ldr r3, [pc, #468] @ (8004ed0 ) + 8004cfa: 681b ldr r3, [r3, #0] + 8004cfc: f403 7380 and.w r3, r3, #256 @ 0x100 + 8004d00: 2b00 cmp r3, #0 + 8004d02: d0f0 beq.n 8004ce6 } } } /* Set the new LSE configuration -----------------------------------------*/ __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); - 8004a64: 687b ldr r3, [r7, #4] - 8004a66: 68db ldr r3, [r3, #12] - 8004a68: 2b01 cmp r3, #1 - 8004a6a: d106 bne.n 8004a7a - 8004a6c: 4b6f ldr r3, [pc, #444] @ (8004c2c ) - 8004a6e: 6a1b ldr r3, [r3, #32] - 8004a70: 4a6e ldr r2, [pc, #440] @ (8004c2c ) - 8004a72: f043 0301 orr.w r3, r3, #1 - 8004a76: 6213 str r3, [r2, #32] - 8004a78: e02d b.n 8004ad6 - 8004a7a: 687b ldr r3, [r7, #4] - 8004a7c: 68db ldr r3, [r3, #12] - 8004a7e: 2b00 cmp r3, #0 - 8004a80: d10c bne.n 8004a9c - 8004a82: 4b6a ldr r3, [pc, #424] @ (8004c2c ) - 8004a84: 6a1b ldr r3, [r3, #32] - 8004a86: 4a69 ldr r2, [pc, #420] @ (8004c2c ) - 8004a88: f023 0301 bic.w r3, r3, #1 - 8004a8c: 6213 str r3, [r2, #32] - 8004a8e: 4b67 ldr r3, [pc, #412] @ (8004c2c ) - 8004a90: 6a1b ldr r3, [r3, #32] - 8004a92: 4a66 ldr r2, [pc, #408] @ (8004c2c ) - 8004a94: f023 0304 bic.w r3, r3, #4 - 8004a98: 6213 str r3, [r2, #32] - 8004a9a: e01c b.n 8004ad6 - 8004a9c: 687b ldr r3, [r7, #4] - 8004a9e: 68db ldr r3, [r3, #12] - 8004aa0: 2b05 cmp r3, #5 - 8004aa2: d10c bne.n 8004abe - 8004aa4: 4b61 ldr r3, [pc, #388] @ (8004c2c ) - 8004aa6: 6a1b ldr r3, [r3, #32] - 8004aa8: 4a60 ldr r2, [pc, #384] @ (8004c2c ) - 8004aaa: f043 0304 orr.w r3, r3, #4 - 8004aae: 6213 str r3, [r2, #32] - 8004ab0: 4b5e ldr r3, [pc, #376] @ (8004c2c ) - 8004ab2: 6a1b ldr r3, [r3, #32] - 8004ab4: 4a5d ldr r2, [pc, #372] @ (8004c2c ) - 8004ab6: f043 0301 orr.w r3, r3, #1 - 8004aba: 6213 str r3, [r2, #32] - 8004abc: e00b b.n 8004ad6 - 8004abe: 4b5b ldr r3, [pc, #364] @ (8004c2c ) - 8004ac0: 6a1b ldr r3, [r3, #32] - 8004ac2: 4a5a ldr r2, [pc, #360] @ (8004c2c ) - 8004ac4: f023 0301 bic.w r3, r3, #1 - 8004ac8: 6213 str r3, [r2, #32] - 8004aca: 4b58 ldr r3, [pc, #352] @ (8004c2c ) - 8004acc: 6a1b ldr r3, [r3, #32] - 8004ace: 4a57 ldr r2, [pc, #348] @ (8004c2c ) - 8004ad0: f023 0304 bic.w r3, r3, #4 - 8004ad4: 6213 str r3, [r2, #32] + 8004d04: 687b ldr r3, [r7, #4] + 8004d06: 68db ldr r3, [r3, #12] + 8004d08: 2b01 cmp r3, #1 + 8004d0a: d106 bne.n 8004d1a + 8004d0c: 4b6f ldr r3, [pc, #444] @ (8004ecc ) + 8004d0e: 6a1b ldr r3, [r3, #32] + 8004d10: 4a6e ldr r2, [pc, #440] @ (8004ecc ) + 8004d12: f043 0301 orr.w r3, r3, #1 + 8004d16: 6213 str r3, [r2, #32] + 8004d18: e02d b.n 8004d76 + 8004d1a: 687b ldr r3, [r7, #4] + 8004d1c: 68db ldr r3, [r3, #12] + 8004d1e: 2b00 cmp r3, #0 + 8004d20: d10c bne.n 8004d3c + 8004d22: 4b6a ldr r3, [pc, #424] @ (8004ecc ) + 8004d24: 6a1b ldr r3, [r3, #32] + 8004d26: 4a69 ldr r2, [pc, #420] @ (8004ecc ) + 8004d28: f023 0301 bic.w r3, r3, #1 + 8004d2c: 6213 str r3, [r2, #32] + 8004d2e: 4b67 ldr r3, [pc, #412] @ (8004ecc ) + 8004d30: 6a1b ldr r3, [r3, #32] + 8004d32: 4a66 ldr r2, [pc, #408] @ (8004ecc ) + 8004d34: f023 0304 bic.w r3, r3, #4 + 8004d38: 6213 str r3, [r2, #32] + 8004d3a: e01c b.n 8004d76 + 8004d3c: 687b ldr r3, [r7, #4] + 8004d3e: 68db ldr r3, [r3, #12] + 8004d40: 2b05 cmp r3, #5 + 8004d42: d10c bne.n 8004d5e + 8004d44: 4b61 ldr r3, [pc, #388] @ (8004ecc ) + 8004d46: 6a1b ldr r3, [r3, #32] + 8004d48: 4a60 ldr r2, [pc, #384] @ (8004ecc ) + 8004d4a: f043 0304 orr.w r3, r3, #4 + 8004d4e: 6213 str r3, [r2, #32] + 8004d50: 4b5e ldr r3, [pc, #376] @ (8004ecc ) + 8004d52: 6a1b ldr r3, [r3, #32] + 8004d54: 4a5d ldr r2, [pc, #372] @ (8004ecc ) + 8004d56: f043 0301 orr.w r3, r3, #1 + 8004d5a: 6213 str r3, [r2, #32] + 8004d5c: e00b b.n 8004d76 + 8004d5e: 4b5b ldr r3, [pc, #364] @ (8004ecc ) + 8004d60: 6a1b ldr r3, [r3, #32] + 8004d62: 4a5a ldr r2, [pc, #360] @ (8004ecc ) + 8004d64: f023 0301 bic.w r3, r3, #1 + 8004d68: 6213 str r3, [r2, #32] + 8004d6a: 4b58 ldr r3, [pc, #352] @ (8004ecc ) + 8004d6c: 6a1b ldr r3, [r3, #32] + 8004d6e: 4a57 ldr r2, [pc, #348] @ (8004ecc ) + 8004d70: f023 0304 bic.w r3, r3, #4 + 8004d74: 6213 str r3, [r2, #32] /* Check the LSE State */ if (RCC_OscInitStruct->LSEState != RCC_LSE_OFF) - 8004ad6: 687b ldr r3, [r7, #4] - 8004ad8: 68db ldr r3, [r3, #12] - 8004ada: 2b00 cmp r3, #0 - 8004adc: d015 beq.n 8004b0a + 8004d76: 687b ldr r3, [r7, #4] + 8004d78: 68db ldr r3, [r3, #12] + 8004d7a: 2b00 cmp r3, #0 + 8004d7c: d015 beq.n 8004daa { /* Get Start Tick */ tickstart = HAL_GetTick(); - 8004ade: f7fe f843 bl 8002b68 - 8004ae2: 6138 str r0, [r7, #16] + 8004d7e: f7fe f867 bl 8002e50 + 8004d82: 6138 str r0, [r7, #16] /* Wait till LSE is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 8004ae4: e00a b.n 8004afc + 8004d84: e00a b.n 8004d9c { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8004ae6: f7fe f83f bl 8002b68 - 8004aea: 4602 mov r2, r0 - 8004aec: 693b ldr r3, [r7, #16] - 8004aee: 1ad3 subs r3, r2, r3 - 8004af0: f241 3288 movw r2, #5000 @ 0x1388 - 8004af4: 4293 cmp r3, r2 - 8004af6: d901 bls.n 8004afc + 8004d86: f7fe f863 bl 8002e50 + 8004d8a: 4602 mov r2, r0 + 8004d8c: 693b ldr r3, [r7, #16] + 8004d8e: 1ad3 subs r3, r2, r3 + 8004d90: f241 3288 movw r2, #5000 @ 0x1388 + 8004d94: 4293 cmp r3, r2 + 8004d96: d901 bls.n 8004d9c { return HAL_TIMEOUT; - 8004af8: 2303 movs r3, #3 - 8004afa: e0b1 b.n 8004c60 + 8004d98: 2303 movs r3, #3 + 8004d9a: e0b1 b.n 8004f00 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 8004afc: 4b4b ldr r3, [pc, #300] @ (8004c2c ) - 8004afe: 6a1b ldr r3, [r3, #32] - 8004b00: f003 0302 and.w r3, r3, #2 - 8004b04: 2b00 cmp r3, #0 - 8004b06: d0ee beq.n 8004ae6 - 8004b08: e014 b.n 8004b34 + 8004d9c: 4b4b ldr r3, [pc, #300] @ (8004ecc ) + 8004d9e: 6a1b ldr r3, [r3, #32] + 8004da0: f003 0302 and.w r3, r3, #2 + 8004da4: 2b00 cmp r3, #0 + 8004da6: d0ee beq.n 8004d86 + 8004da8: e014 b.n 8004dd4 } } else { /* Get Start Tick */ tickstart = HAL_GetTick(); - 8004b0a: f7fe f82d bl 8002b68 - 8004b0e: 6138 str r0, [r7, #16] + 8004daa: f7fe f851 bl 8002e50 + 8004dae: 6138 str r0, [r7, #16] /* Wait till LSE is disabled */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) - 8004b10: e00a b.n 8004b28 + 8004db0: e00a b.n 8004dc8 { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8004b12: f7fe f829 bl 8002b68 - 8004b16: 4602 mov r2, r0 - 8004b18: 693b ldr r3, [r7, #16] - 8004b1a: 1ad3 subs r3, r2, r3 - 8004b1c: f241 3288 movw r2, #5000 @ 0x1388 - 8004b20: 4293 cmp r3, r2 - 8004b22: d901 bls.n 8004b28 + 8004db2: f7fe f84d bl 8002e50 + 8004db6: 4602 mov r2, r0 + 8004db8: 693b ldr r3, [r7, #16] + 8004dba: 1ad3 subs r3, r2, r3 + 8004dbc: f241 3288 movw r2, #5000 @ 0x1388 + 8004dc0: 4293 cmp r3, r2 + 8004dc2: d901 bls.n 8004dc8 { return HAL_TIMEOUT; - 8004b24: 2303 movs r3, #3 - 8004b26: e09b b.n 8004c60 + 8004dc4: 2303 movs r3, #3 + 8004dc6: e09b b.n 8004f00 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) - 8004b28: 4b40 ldr r3, [pc, #256] @ (8004c2c ) - 8004b2a: 6a1b ldr r3, [r3, #32] - 8004b2c: f003 0302 and.w r3, r3, #2 - 8004b30: 2b00 cmp r3, #0 - 8004b32: d1ee bne.n 8004b12 + 8004dc8: 4b40 ldr r3, [pc, #256] @ (8004ecc ) + 8004dca: 6a1b ldr r3, [r3, #32] + 8004dcc: f003 0302 and.w r3, r3, #2 + 8004dd0: 2b00 cmp r3, #0 + 8004dd2: d1ee bne.n 8004db2 } } } /* Require to disable power clock if necessary */ if (pwrclkchanged == SET) - 8004b34: 7dfb ldrb r3, [r7, #23] - 8004b36: 2b01 cmp r3, #1 - 8004b38: d105 bne.n 8004b46 + 8004dd4: 7dfb ldrb r3, [r7, #23] + 8004dd6: 2b01 cmp r3, #1 + 8004dd8: d105 bne.n 8004de6 { __HAL_RCC_PWR_CLK_DISABLE(); - 8004b3a: 4b3c ldr r3, [pc, #240] @ (8004c2c ) - 8004b3c: 69db ldr r3, [r3, #28] - 8004b3e: 4a3b ldr r2, [pc, #236] @ (8004c2c ) - 8004b40: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 - 8004b44: 61d3 str r3, [r2, #28] + 8004dda: 4b3c ldr r3, [pc, #240] @ (8004ecc ) + 8004ddc: 69db ldr r3, [r3, #28] + 8004dde: 4a3b ldr r2, [pc, #236] @ (8004ecc ) + 8004de0: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 8004de4: 61d3 str r3, [r2, #28] #endif /* RCC_CR_PLL2ON */ /*-------------------------------- PLL Configuration -----------------------*/ /* Check the parameters */ assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) - 8004b46: 687b ldr r3, [r7, #4] - 8004b48: 69db ldr r3, [r3, #28] - 8004b4a: 2b00 cmp r3, #0 - 8004b4c: f000 8087 beq.w 8004c5e + 8004de6: 687b ldr r3, [r7, #4] + 8004de8: 69db ldr r3, [r3, #28] + 8004dea: 2b00 cmp r3, #0 + 8004dec: f000 8087 beq.w 8004efe { /* Check if the PLL is used as system clock or not */ if (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) - 8004b50: 4b36 ldr r3, [pc, #216] @ (8004c2c ) - 8004b52: 685b ldr r3, [r3, #4] - 8004b54: f003 030c and.w r3, r3, #12 - 8004b58: 2b08 cmp r3, #8 - 8004b5a: d061 beq.n 8004c20 + 8004df0: 4b36 ldr r3, [pc, #216] @ (8004ecc ) + 8004df2: 685b ldr r3, [r3, #4] + 8004df4: f003 030c and.w r3, r3, #12 + 8004df8: 2b08 cmp r3, #8 + 8004dfa: d061 beq.n 8004ec0 { if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) - 8004b5c: 687b ldr r3, [r7, #4] - 8004b5e: 69db ldr r3, [r3, #28] - 8004b60: 2b02 cmp r3, #2 - 8004b62: d146 bne.n 8004bf2 + 8004dfc: 687b ldr r3, [r7, #4] + 8004dfe: 69db ldr r3, [r3, #28] + 8004e00: 2b02 cmp r3, #2 + 8004e02: d146 bne.n 8004e92 /* Check the parameters */ assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource)); assert_param(IS_RCC_PLL_MUL(RCC_OscInitStruct->PLL.PLLMUL)); /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); - 8004b64: 4b33 ldr r3, [pc, #204] @ (8004c34 ) - 8004b66: 2200 movs r2, #0 - 8004b68: 601a str r2, [r3, #0] + 8004e04: 4b33 ldr r3, [pc, #204] @ (8004ed4 ) + 8004e06: 2200 movs r2, #0 + 8004e08: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 8004b6a: f7fd fffd bl 8002b68 - 8004b6e: 6138 str r0, [r7, #16] + 8004e0a: f7fe f821 bl 8002e50 + 8004e0e: 6138 str r0, [r7, #16] /* Wait till PLL is disabled */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 8004b70: e008 b.n 8004b84 + 8004e10: e008 b.n 8004e24 { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8004b72: f7fd fff9 bl 8002b68 - 8004b76: 4602 mov r2, r0 - 8004b78: 693b ldr r3, [r7, #16] - 8004b7a: 1ad3 subs r3, r2, r3 - 8004b7c: 2b02 cmp r3, #2 - 8004b7e: d901 bls.n 8004b84 + 8004e12: f7fe f81d bl 8002e50 + 8004e16: 4602 mov r2, r0 + 8004e18: 693b ldr r3, [r7, #16] + 8004e1a: 1ad3 subs r3, r2, r3 + 8004e1c: 2b02 cmp r3, #2 + 8004e1e: d901 bls.n 8004e24 { return HAL_TIMEOUT; - 8004b80: 2303 movs r3, #3 - 8004b82: e06d b.n 8004c60 + 8004e20: 2303 movs r3, #3 + 8004e22: e06d b.n 8004f00 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 8004b84: 4b29 ldr r3, [pc, #164] @ (8004c2c ) - 8004b86: 681b ldr r3, [r3, #0] - 8004b88: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 8004b8c: 2b00 cmp r3, #0 - 8004b8e: d1f0 bne.n 8004b72 + 8004e24: 4b29 ldr r3, [pc, #164] @ (8004ecc ) + 8004e26: 681b ldr r3, [r3, #0] + 8004e28: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8004e2c: 2b00 cmp r3, #0 + 8004e2e: d1f0 bne.n 8004e12 } } /* Configure the HSE prediv factor --------------------------------*/ /* It can be written only when the PLL is disabled. Not used in PLL source is different than HSE */ if (RCC_OscInitStruct->PLL.PLLSource == RCC_PLLSOURCE_HSE) - 8004b90: 687b ldr r3, [r7, #4] - 8004b92: 6a1b ldr r3, [r3, #32] - 8004b94: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8004b98: d108 bne.n 8004bac + 8004e30: 687b ldr r3, [r7, #4] + 8004e32: 6a1b ldr r3, [r3, #32] + 8004e34: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 8004e38: d108 bne.n 8004e4c /* Set PREDIV1 source */ SET_BIT(RCC->CFGR2, RCC_OscInitStruct->Prediv1Source); #endif /* RCC_CFGR2_PREDIV1SRC */ /* Set PREDIV1 Value */ __HAL_RCC_HSE_PREDIV_CONFIG(RCC_OscInitStruct->HSEPredivValue); - 8004b9a: 4b24 ldr r3, [pc, #144] @ (8004c2c ) - 8004b9c: 685b ldr r3, [r3, #4] - 8004b9e: f423 3200 bic.w r2, r3, #131072 @ 0x20000 - 8004ba2: 687b ldr r3, [r7, #4] - 8004ba4: 689b ldr r3, [r3, #8] - 8004ba6: 4921 ldr r1, [pc, #132] @ (8004c2c ) - 8004ba8: 4313 orrs r3, r2 - 8004baa: 604b str r3, [r1, #4] + 8004e3a: 4b24 ldr r3, [pc, #144] @ (8004ecc ) + 8004e3c: 685b ldr r3, [r3, #4] + 8004e3e: f423 3200 bic.w r2, r3, #131072 @ 0x20000 + 8004e42: 687b ldr r3, [r7, #4] + 8004e44: 689b ldr r3, [r3, #8] + 8004e46: 4921 ldr r1, [pc, #132] @ (8004ecc ) + 8004e48: 4313 orrs r3, r2 + 8004e4a: 604b str r3, [r1, #4] } /* Configure the main PLL clock source and multiplication factors. */ __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, - 8004bac: 4b1f ldr r3, [pc, #124] @ (8004c2c ) - 8004bae: 685b ldr r3, [r3, #4] - 8004bb0: f423 1274 bic.w r2, r3, #3997696 @ 0x3d0000 - 8004bb4: 687b ldr r3, [r7, #4] - 8004bb6: 6a19 ldr r1, [r3, #32] - 8004bb8: 687b ldr r3, [r7, #4] - 8004bba: 6a5b ldr r3, [r3, #36] @ 0x24 - 8004bbc: 430b orrs r3, r1 - 8004bbe: 491b ldr r1, [pc, #108] @ (8004c2c ) - 8004bc0: 4313 orrs r3, r2 - 8004bc2: 604b str r3, [r1, #4] + 8004e4c: 4b1f ldr r3, [pc, #124] @ (8004ecc ) + 8004e4e: 685b ldr r3, [r3, #4] + 8004e50: f423 1274 bic.w r2, r3, #3997696 @ 0x3d0000 + 8004e54: 687b ldr r3, [r7, #4] + 8004e56: 6a19 ldr r1, [r3, #32] + 8004e58: 687b ldr r3, [r7, #4] + 8004e5a: 6a5b ldr r3, [r3, #36] @ 0x24 + 8004e5c: 430b orrs r3, r1 + 8004e5e: 491b ldr r1, [pc, #108] @ (8004ecc ) + 8004e60: 4313 orrs r3, r2 + 8004e62: 604b str r3, [r1, #4] RCC_OscInitStruct->PLL.PLLMUL); /* Enable the main PLL. */ __HAL_RCC_PLL_ENABLE(); - 8004bc4: 4b1b ldr r3, [pc, #108] @ (8004c34 ) - 8004bc6: 2201 movs r2, #1 - 8004bc8: 601a str r2, [r3, #0] + 8004e64: 4b1b ldr r3, [pc, #108] @ (8004ed4 ) + 8004e66: 2201 movs r2, #1 + 8004e68: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 8004bca: f7fd ffcd bl 8002b68 - 8004bce: 6138 str r0, [r7, #16] + 8004e6a: f7fd fff1 bl 8002e50 + 8004e6e: 6138 str r0, [r7, #16] /* Wait till PLL is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 8004bd0: e008 b.n 8004be4 + 8004e70: e008 b.n 8004e84 { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8004bd2: f7fd ffc9 bl 8002b68 - 8004bd6: 4602 mov r2, r0 - 8004bd8: 693b ldr r3, [r7, #16] - 8004bda: 1ad3 subs r3, r2, r3 - 8004bdc: 2b02 cmp r3, #2 - 8004bde: d901 bls.n 8004be4 + 8004e72: f7fd ffed bl 8002e50 + 8004e76: 4602 mov r2, r0 + 8004e78: 693b ldr r3, [r7, #16] + 8004e7a: 1ad3 subs r3, r2, r3 + 8004e7c: 2b02 cmp r3, #2 + 8004e7e: d901 bls.n 8004e84 { return HAL_TIMEOUT; - 8004be0: 2303 movs r3, #3 - 8004be2: e03d b.n 8004c60 + 8004e80: 2303 movs r3, #3 + 8004e82: e03d b.n 8004f00 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 8004be4: 4b11 ldr r3, [pc, #68] @ (8004c2c ) - 8004be6: 681b ldr r3, [r3, #0] - 8004be8: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 8004bec: 2b00 cmp r3, #0 - 8004bee: d0f0 beq.n 8004bd2 - 8004bf0: e035 b.n 8004c5e + 8004e84: 4b11 ldr r3, [pc, #68] @ (8004ecc ) + 8004e86: 681b ldr r3, [r3, #0] + 8004e88: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8004e8c: 2b00 cmp r3, #0 + 8004e8e: d0f0 beq.n 8004e72 + 8004e90: e035 b.n 8004efe } } else { /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); - 8004bf2: 4b10 ldr r3, [pc, #64] @ (8004c34 ) - 8004bf4: 2200 movs r2, #0 - 8004bf6: 601a str r2, [r3, #0] + 8004e92: 4b10 ldr r3, [pc, #64] @ (8004ed4 ) + 8004e94: 2200 movs r2, #0 + 8004e96: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 8004bf8: f7fd ffb6 bl 8002b68 - 8004bfc: 6138 str r0, [r7, #16] + 8004e98: f7fd ffda bl 8002e50 + 8004e9c: 6138 str r0, [r7, #16] /* Wait till PLL is disabled */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 8004bfe: e008 b.n 8004c12 + 8004e9e: e008 b.n 8004eb2 { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8004c00: f7fd ffb2 bl 8002b68 - 8004c04: 4602 mov r2, r0 - 8004c06: 693b ldr r3, [r7, #16] - 8004c08: 1ad3 subs r3, r2, r3 - 8004c0a: 2b02 cmp r3, #2 - 8004c0c: d901 bls.n 8004c12 + 8004ea0: f7fd ffd6 bl 8002e50 + 8004ea4: 4602 mov r2, r0 + 8004ea6: 693b ldr r3, [r7, #16] + 8004ea8: 1ad3 subs r3, r2, r3 + 8004eaa: 2b02 cmp r3, #2 + 8004eac: d901 bls.n 8004eb2 { return HAL_TIMEOUT; - 8004c0e: 2303 movs r3, #3 - 8004c10: e026 b.n 8004c60 + 8004eae: 2303 movs r3, #3 + 8004eb0: e026 b.n 8004f00 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 8004c12: 4b06 ldr r3, [pc, #24] @ (8004c2c ) - 8004c14: 681b ldr r3, [r3, #0] - 8004c16: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 8004c1a: 2b00 cmp r3, #0 - 8004c1c: d1f0 bne.n 8004c00 - 8004c1e: e01e b.n 8004c5e + 8004eb2: 4b06 ldr r3, [pc, #24] @ (8004ecc ) + 8004eb4: 681b ldr r3, [r3, #0] + 8004eb6: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8004eba: 2b00 cmp r3, #0 + 8004ebc: d1f0 bne.n 8004ea0 + 8004ebe: e01e b.n 8004efe } } else { /* Check if there is a request to disable the PLL used as System clock source */ if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) - 8004c20: 687b ldr r3, [r7, #4] - 8004c22: 69db ldr r3, [r3, #28] - 8004c24: 2b01 cmp r3, #1 - 8004c26: d107 bne.n 8004c38 + 8004ec0: 687b ldr r3, [r7, #4] + 8004ec2: 69db ldr r3, [r3, #28] + 8004ec4: 2b01 cmp r3, #1 + 8004ec6: d107 bne.n 8004ed8 { return HAL_ERROR; - 8004c28: 2301 movs r3, #1 - 8004c2a: e019 b.n 8004c60 - 8004c2c: 40021000 .word 0x40021000 - 8004c30: 40007000 .word 0x40007000 - 8004c34: 42420060 .word 0x42420060 + 8004ec8: 2301 movs r3, #1 + 8004eca: e019 b.n 8004f00 + 8004ecc: 40021000 .word 0x40021000 + 8004ed0: 40007000 .word 0x40007000 + 8004ed4: 42420060 .word 0x42420060 } else { /* Do not return HAL_ERROR if request repeats the current configuration */ pll_config = RCC->CFGR; - 8004c38: 4b0b ldr r3, [pc, #44] @ (8004c68 ) - 8004c3a: 685b ldr r3, [r3, #4] - 8004c3c: 60fb str r3, [r7, #12] + 8004ed8: 4b0b ldr r3, [pc, #44] @ (8004f08 ) + 8004eda: 685b ldr r3, [r3, #4] + 8004edc: 60fb str r3, [r7, #12] if ((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 8004c3e: 68fb ldr r3, [r7, #12] - 8004c40: f403 3280 and.w r2, r3, #65536 @ 0x10000 - 8004c44: 687b ldr r3, [r7, #4] - 8004c46: 6a1b ldr r3, [r3, #32] - 8004c48: 429a cmp r2, r3 - 8004c4a: d106 bne.n 8004c5a + 8004ede: 68fb ldr r3, [r7, #12] + 8004ee0: f403 3280 and.w r2, r3, #65536 @ 0x10000 + 8004ee4: 687b ldr r3, [r7, #4] + 8004ee6: 6a1b ldr r3, [r3, #32] + 8004ee8: 429a cmp r2, r3 + 8004eea: d106 bne.n 8004efa (READ_BIT(pll_config, RCC_CFGR_PLLMULL) != RCC_OscInitStruct->PLL.PLLMUL)) - 8004c4c: 68fb ldr r3, [r7, #12] - 8004c4e: f403 1270 and.w r2, r3, #3932160 @ 0x3c0000 - 8004c52: 687b ldr r3, [r7, #4] - 8004c54: 6a5b ldr r3, [r3, #36] @ 0x24 + 8004eec: 68fb ldr r3, [r7, #12] + 8004eee: f403 1270 and.w r2, r3, #3932160 @ 0x3c0000 + 8004ef2: 687b ldr r3, [r7, #4] + 8004ef4: 6a5b ldr r3, [r3, #36] @ 0x24 if ((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 8004c56: 429a cmp r2, r3 - 8004c58: d001 beq.n 8004c5e + 8004ef6: 429a cmp r2, r3 + 8004ef8: d001 beq.n 8004efe { return HAL_ERROR; - 8004c5a: 2301 movs r3, #1 - 8004c5c: e000 b.n 8004c60 + 8004efa: 2301 movs r3, #1 + 8004efc: e000 b.n 8004f00 } } } } return HAL_OK; - 8004c5e: 2300 movs r3, #0 + 8004efe: 2300 movs r3, #0 } - 8004c60: 4618 mov r0, r3 - 8004c62: 3718 adds r7, #24 - 8004c64: 46bd mov sp, r7 - 8004c66: bd80 pop {r7, pc} - 8004c68: 40021000 .word 0x40021000 + 8004f00: 4618 mov r0, r3 + 8004f02: 3718 adds r7, #24 + 8004f04: 46bd mov sp, r7 + 8004f06: bd80 pop {r7, pc} + 8004f08: 40021000 .word 0x40021000 -08004c6c : +08004f0c : * You can use @ref HAL_RCC_GetClockConfig() function to know which clock is * currently used as system clock source. * @retval HAL status */ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) { - 8004c6c: b580 push {r7, lr} - 8004c6e: b084 sub sp, #16 - 8004c70: af00 add r7, sp, #0 - 8004c72: 6078 str r0, [r7, #4] - 8004c74: 6039 str r1, [r7, #0] + 8004f0c: b580 push {r7, lr} + 8004f0e: b084 sub sp, #16 + 8004f10: af00 add r7, sp, #0 + 8004f12: 6078 str r0, [r7, #4] + 8004f14: 6039 str r1, [r7, #0] uint32_t tickstart; /* Check Null pointer */ if (RCC_ClkInitStruct == NULL) - 8004c76: 687b ldr r3, [r7, #4] - 8004c78: 2b00 cmp r3, #0 - 8004c7a: d101 bne.n 8004c80 + 8004f16: 687b ldr r3, [r7, #4] + 8004f18: 2b00 cmp r3, #0 + 8004f1a: d101 bne.n 8004f20 { return HAL_ERROR; - 8004c7c: 2301 movs r3, #1 - 8004c7e: e0d0 b.n 8004e22 + 8004f1c: 2301 movs r3, #1 + 8004f1e: e0d0 b.n 80050c2 must be correctly programmed according to the frequency of the CPU clock (HCLK) of the device. */ #if defined(FLASH_ACR_LATENCY) /* Increasing the number of wait states because of higher CPU frequency */ if (FLatency > __HAL_FLASH_GET_LATENCY()) - 8004c80: 4b6a ldr r3, [pc, #424] @ (8004e2c ) - 8004c82: 681b ldr r3, [r3, #0] - 8004c84: f003 0307 and.w r3, r3, #7 - 8004c88: 683a ldr r2, [r7, #0] - 8004c8a: 429a cmp r2, r3 - 8004c8c: d910 bls.n 8004cb0 + 8004f20: 4b6a ldr r3, [pc, #424] @ (80050cc ) + 8004f22: 681b ldr r3, [r3, #0] + 8004f24: f003 0307 and.w r3, r3, #7 + 8004f28: 683a ldr r2, [r7, #0] + 8004f2a: 429a cmp r2, r3 + 8004f2c: d910 bls.n 8004f50 { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); - 8004c8e: 4b67 ldr r3, [pc, #412] @ (8004e2c ) - 8004c90: 681b ldr r3, [r3, #0] - 8004c92: f023 0207 bic.w r2, r3, #7 - 8004c96: 4965 ldr r1, [pc, #404] @ (8004e2c ) - 8004c98: 683b ldr r3, [r7, #0] - 8004c9a: 4313 orrs r3, r2 - 8004c9c: 600b str r3, [r1, #0] + 8004f2e: 4b67 ldr r3, [pc, #412] @ (80050cc ) + 8004f30: 681b ldr r3, [r3, #0] + 8004f32: f023 0207 bic.w r2, r3, #7 + 8004f36: 4965 ldr r1, [pc, #404] @ (80050cc ) + 8004f38: 683b ldr r3, [r7, #0] + 8004f3a: 4313 orrs r3, r2 + 8004f3c: 600b str r3, [r1, #0] /* Check that the new number of wait states is taken into account to access the Flash memory by reading the FLASH_ACR register */ if (__HAL_FLASH_GET_LATENCY() != FLatency) - 8004c9e: 4b63 ldr r3, [pc, #396] @ (8004e2c ) - 8004ca0: 681b ldr r3, [r3, #0] - 8004ca2: f003 0307 and.w r3, r3, #7 - 8004ca6: 683a ldr r2, [r7, #0] - 8004ca8: 429a cmp r2, r3 - 8004caa: d001 beq.n 8004cb0 + 8004f3e: 4b63 ldr r3, [pc, #396] @ (80050cc ) + 8004f40: 681b ldr r3, [r3, #0] + 8004f42: f003 0307 and.w r3, r3, #7 + 8004f46: 683a ldr r2, [r7, #0] + 8004f48: 429a cmp r2, r3 + 8004f4a: d001 beq.n 8004f50 { return HAL_ERROR; - 8004cac: 2301 movs r3, #1 - 8004cae: e0b8 b.n 8004e22 + 8004f4c: 2301 movs r3, #1 + 8004f4e: e0b8 b.n 80050c2 } } #endif /* FLASH_ACR_LATENCY */ /*-------------------------- HCLK Configuration --------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) - 8004cb0: 687b ldr r3, [r7, #4] - 8004cb2: 681b ldr r3, [r3, #0] - 8004cb4: f003 0302 and.w r3, r3, #2 - 8004cb8: 2b00 cmp r3, #0 - 8004cba: d020 beq.n 8004cfe + 8004f50: 687b ldr r3, [r7, #4] + 8004f52: 681b ldr r3, [r3, #0] + 8004f54: f003 0302 and.w r3, r3, #2 + 8004f58: 2b00 cmp r3, #0 + 8004f5a: d020 beq.n 8004f9e { /* Set the highest APBx dividers in order to ensure that we do not go through a non-spec phase whatever we decrease or increase HCLK. */ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) - 8004cbc: 687b ldr r3, [r7, #4] - 8004cbe: 681b ldr r3, [r3, #0] - 8004cc0: f003 0304 and.w r3, r3, #4 - 8004cc4: 2b00 cmp r3, #0 - 8004cc6: d005 beq.n 8004cd4 + 8004f5c: 687b ldr r3, [r7, #4] + 8004f5e: 681b ldr r3, [r3, #0] + 8004f60: f003 0304 and.w r3, r3, #4 + 8004f64: 2b00 cmp r3, #0 + 8004f66: d005 beq.n 8004f74 { MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16); - 8004cc8: 4b59 ldr r3, [pc, #356] @ (8004e30 ) - 8004cca: 685b ldr r3, [r3, #4] - 8004ccc: 4a58 ldr r2, [pc, #352] @ (8004e30 ) - 8004cce: f443 63e0 orr.w r3, r3, #1792 @ 0x700 - 8004cd2: 6053 str r3, [r2, #4] + 8004f68: 4b59 ldr r3, [pc, #356] @ (80050d0 ) + 8004f6a: 685b ldr r3, [r3, #4] + 8004f6c: 4a58 ldr r2, [pc, #352] @ (80050d0 ) + 8004f6e: f443 63e0 orr.w r3, r3, #1792 @ 0x700 + 8004f72: 6053 str r3, [r2, #4] } if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) - 8004cd4: 687b ldr r3, [r7, #4] - 8004cd6: 681b ldr r3, [r3, #0] - 8004cd8: f003 0308 and.w r3, r3, #8 - 8004cdc: 2b00 cmp r3, #0 - 8004cde: d005 beq.n 8004cec + 8004f74: 687b ldr r3, [r7, #4] + 8004f76: 681b ldr r3, [r3, #0] + 8004f78: f003 0308 and.w r3, r3, #8 + 8004f7c: 2b00 cmp r3, #0 + 8004f7e: d005 beq.n 8004f8c { MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3)); - 8004ce0: 4b53 ldr r3, [pc, #332] @ (8004e30 ) - 8004ce2: 685b ldr r3, [r3, #4] - 8004ce4: 4a52 ldr r2, [pc, #328] @ (8004e30 ) - 8004ce6: f443 5360 orr.w r3, r3, #14336 @ 0x3800 - 8004cea: 6053 str r3, [r2, #4] + 8004f80: 4b53 ldr r3, [pc, #332] @ (80050d0 ) + 8004f82: 685b ldr r3, [r3, #4] + 8004f84: 4a52 ldr r2, [pc, #328] @ (80050d0 ) + 8004f86: f443 5360 orr.w r3, r3, #14336 @ 0x3800 + 8004f8a: 6053 str r3, [r2, #4] } /* Set the new HCLK clock divider */ assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); - 8004cec: 4b50 ldr r3, [pc, #320] @ (8004e30 ) - 8004cee: 685b ldr r3, [r3, #4] - 8004cf0: f023 02f0 bic.w r2, r3, #240 @ 0xf0 - 8004cf4: 687b ldr r3, [r7, #4] - 8004cf6: 689b ldr r3, [r3, #8] - 8004cf8: 494d ldr r1, [pc, #308] @ (8004e30 ) - 8004cfa: 4313 orrs r3, r2 - 8004cfc: 604b str r3, [r1, #4] + 8004f8c: 4b50 ldr r3, [pc, #320] @ (80050d0 ) + 8004f8e: 685b ldr r3, [r3, #4] + 8004f90: f023 02f0 bic.w r2, r3, #240 @ 0xf0 + 8004f94: 687b ldr r3, [r7, #4] + 8004f96: 689b ldr r3, [r3, #8] + 8004f98: 494d ldr r1, [pc, #308] @ (80050d0 ) + 8004f9a: 4313 orrs r3, r2 + 8004f9c: 604b str r3, [r1, #4] } /*------------------------- SYSCLK Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) - 8004cfe: 687b ldr r3, [r7, #4] - 8004d00: 681b ldr r3, [r3, #0] - 8004d02: f003 0301 and.w r3, r3, #1 - 8004d06: 2b00 cmp r3, #0 - 8004d08: d040 beq.n 8004d8c + 8004f9e: 687b ldr r3, [r7, #4] + 8004fa0: 681b ldr r3, [r3, #0] + 8004fa2: f003 0301 and.w r3, r3, #1 + 8004fa6: 2b00 cmp r3, #0 + 8004fa8: d040 beq.n 800502c { assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); /* HSE is selected as System Clock Source */ if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) - 8004d0a: 687b ldr r3, [r7, #4] - 8004d0c: 685b ldr r3, [r3, #4] - 8004d0e: 2b01 cmp r3, #1 - 8004d10: d107 bne.n 8004d22 + 8004faa: 687b ldr r3, [r7, #4] + 8004fac: 685b ldr r3, [r3, #4] + 8004fae: 2b01 cmp r3, #1 + 8004fb0: d107 bne.n 8004fc2 { /* Check the HSE ready flag */ if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 8004d12: 4b47 ldr r3, [pc, #284] @ (8004e30 ) - 8004d14: 681b ldr r3, [r3, #0] - 8004d16: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 8004d1a: 2b00 cmp r3, #0 - 8004d1c: d115 bne.n 8004d4a + 8004fb2: 4b47 ldr r3, [pc, #284] @ (80050d0 ) + 8004fb4: 681b ldr r3, [r3, #0] + 8004fb6: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8004fba: 2b00 cmp r3, #0 + 8004fbc: d115 bne.n 8004fea { return HAL_ERROR; - 8004d1e: 2301 movs r3, #1 - 8004d20: e07f b.n 8004e22 + 8004fbe: 2301 movs r3, #1 + 8004fc0: e07f b.n 80050c2 } } /* PLL is selected as System Clock Source */ else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) - 8004d22: 687b ldr r3, [r7, #4] - 8004d24: 685b ldr r3, [r3, #4] - 8004d26: 2b02 cmp r3, #2 - 8004d28: d107 bne.n 8004d3a + 8004fc2: 687b ldr r3, [r7, #4] + 8004fc4: 685b ldr r3, [r3, #4] + 8004fc6: 2b02 cmp r3, #2 + 8004fc8: d107 bne.n 8004fda { /* Check the PLL ready flag */ if (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 8004d2a: 4b41 ldr r3, [pc, #260] @ (8004e30 ) - 8004d2c: 681b ldr r3, [r3, #0] - 8004d2e: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 8004d32: 2b00 cmp r3, #0 - 8004d34: d109 bne.n 8004d4a + 8004fca: 4b41 ldr r3, [pc, #260] @ (80050d0 ) + 8004fcc: 681b ldr r3, [r3, #0] + 8004fce: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8004fd2: 2b00 cmp r3, #0 + 8004fd4: d109 bne.n 8004fea { return HAL_ERROR; - 8004d36: 2301 movs r3, #1 - 8004d38: e073 b.n 8004e22 + 8004fd6: 2301 movs r3, #1 + 8004fd8: e073 b.n 80050c2 } /* HSI is selected as System Clock Source */ else { /* Check the HSI ready flag */ if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 8004d3a: 4b3d ldr r3, [pc, #244] @ (8004e30 ) - 8004d3c: 681b ldr r3, [r3, #0] - 8004d3e: f003 0302 and.w r3, r3, #2 - 8004d42: 2b00 cmp r3, #0 - 8004d44: d101 bne.n 8004d4a + 8004fda: 4b3d ldr r3, [pc, #244] @ (80050d0 ) + 8004fdc: 681b ldr r3, [r3, #0] + 8004fde: f003 0302 and.w r3, r3, #2 + 8004fe2: 2b00 cmp r3, #0 + 8004fe4: d101 bne.n 8004fea { return HAL_ERROR; - 8004d46: 2301 movs r3, #1 - 8004d48: e06b b.n 8004e22 + 8004fe6: 2301 movs r3, #1 + 8004fe8: e06b b.n 80050c2 } } __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); - 8004d4a: 4b39 ldr r3, [pc, #228] @ (8004e30 ) - 8004d4c: 685b ldr r3, [r3, #4] - 8004d4e: f023 0203 bic.w r2, r3, #3 - 8004d52: 687b ldr r3, [r7, #4] - 8004d54: 685b ldr r3, [r3, #4] - 8004d56: 4936 ldr r1, [pc, #216] @ (8004e30 ) - 8004d58: 4313 orrs r3, r2 - 8004d5a: 604b str r3, [r1, #4] + 8004fea: 4b39 ldr r3, [pc, #228] @ (80050d0 ) + 8004fec: 685b ldr r3, [r3, #4] + 8004fee: f023 0203 bic.w r2, r3, #3 + 8004ff2: 687b ldr r3, [r7, #4] + 8004ff4: 685b ldr r3, [r3, #4] + 8004ff6: 4936 ldr r1, [pc, #216] @ (80050d0 ) + 8004ff8: 4313 orrs r3, r2 + 8004ffa: 604b str r3, [r1, #4] /* Get Start Tick */ tickstart = HAL_GetTick(); - 8004d5c: f7fd ff04 bl 8002b68 - 8004d60: 60f8 str r0, [r7, #12] + 8004ffc: f7fd ff28 bl 8002e50 + 8005000: 60f8 str r0, [r7, #12] while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 8004d62: e00a b.n 8004d7a + 8005002: e00a b.n 800501a { if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) - 8004d64: f7fd ff00 bl 8002b68 - 8004d68: 4602 mov r2, r0 - 8004d6a: 68fb ldr r3, [r7, #12] - 8004d6c: 1ad3 subs r3, r2, r3 - 8004d6e: f241 3288 movw r2, #5000 @ 0x1388 - 8004d72: 4293 cmp r3, r2 - 8004d74: d901 bls.n 8004d7a + 8005004: f7fd ff24 bl 8002e50 + 8005008: 4602 mov r2, r0 + 800500a: 68fb ldr r3, [r7, #12] + 800500c: 1ad3 subs r3, r2, r3 + 800500e: f241 3288 movw r2, #5000 @ 0x1388 + 8005012: 4293 cmp r3, r2 + 8005014: d901 bls.n 800501a { return HAL_TIMEOUT; - 8004d76: 2303 movs r3, #3 - 8004d78: e053 b.n 8004e22 + 8005016: 2303 movs r3, #3 + 8005018: e053 b.n 80050c2 while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 8004d7a: 4b2d ldr r3, [pc, #180] @ (8004e30 ) - 8004d7c: 685b ldr r3, [r3, #4] - 8004d7e: f003 020c and.w r2, r3, #12 - 8004d82: 687b ldr r3, [r7, #4] - 8004d84: 685b ldr r3, [r3, #4] - 8004d86: 009b lsls r3, r3, #2 - 8004d88: 429a cmp r2, r3 - 8004d8a: d1eb bne.n 8004d64 + 800501a: 4b2d ldr r3, [pc, #180] @ (80050d0 ) + 800501c: 685b ldr r3, [r3, #4] + 800501e: f003 020c and.w r2, r3, #12 + 8005022: 687b ldr r3, [r7, #4] + 8005024: 685b ldr r3, [r3, #4] + 8005026: 009b lsls r3, r3, #2 + 8005028: 429a cmp r2, r3 + 800502a: d1eb bne.n 8005004 } } #if defined(FLASH_ACR_LATENCY) /* Decreasing the number of wait states because of lower CPU frequency */ if (FLatency < __HAL_FLASH_GET_LATENCY()) - 8004d8c: 4b27 ldr r3, [pc, #156] @ (8004e2c ) - 8004d8e: 681b ldr r3, [r3, #0] - 8004d90: f003 0307 and.w r3, r3, #7 - 8004d94: 683a ldr r2, [r7, #0] - 8004d96: 429a cmp r2, r3 - 8004d98: d210 bcs.n 8004dbc + 800502c: 4b27 ldr r3, [pc, #156] @ (80050cc ) + 800502e: 681b ldr r3, [r3, #0] + 8005030: f003 0307 and.w r3, r3, #7 + 8005034: 683a ldr r2, [r7, #0] + 8005036: 429a cmp r2, r3 + 8005038: d210 bcs.n 800505c { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); - 8004d9a: 4b24 ldr r3, [pc, #144] @ (8004e2c ) - 8004d9c: 681b ldr r3, [r3, #0] - 8004d9e: f023 0207 bic.w r2, r3, #7 - 8004da2: 4922 ldr r1, [pc, #136] @ (8004e2c ) - 8004da4: 683b ldr r3, [r7, #0] - 8004da6: 4313 orrs r3, r2 - 8004da8: 600b str r3, [r1, #0] + 800503a: 4b24 ldr r3, [pc, #144] @ (80050cc ) + 800503c: 681b ldr r3, [r3, #0] + 800503e: f023 0207 bic.w r2, r3, #7 + 8005042: 4922 ldr r1, [pc, #136] @ (80050cc ) + 8005044: 683b ldr r3, [r7, #0] + 8005046: 4313 orrs r3, r2 + 8005048: 600b str r3, [r1, #0] /* Check that the new number of wait states is taken into account to access the Flash memory by reading the FLASH_ACR register */ if (__HAL_FLASH_GET_LATENCY() != FLatency) - 8004daa: 4b20 ldr r3, [pc, #128] @ (8004e2c ) - 8004dac: 681b ldr r3, [r3, #0] - 8004dae: f003 0307 and.w r3, r3, #7 - 8004db2: 683a ldr r2, [r7, #0] - 8004db4: 429a cmp r2, r3 - 8004db6: d001 beq.n 8004dbc + 800504a: 4b20 ldr r3, [pc, #128] @ (80050cc ) + 800504c: 681b ldr r3, [r3, #0] + 800504e: f003 0307 and.w r3, r3, #7 + 8005052: 683a ldr r2, [r7, #0] + 8005054: 429a cmp r2, r3 + 8005056: d001 beq.n 800505c { return HAL_ERROR; - 8004db8: 2301 movs r3, #1 - 8004dba: e032 b.n 8004e22 + 8005058: 2301 movs r3, #1 + 800505a: e032 b.n 80050c2 } } #endif /* FLASH_ACR_LATENCY */ /*-------------------------- PCLK1 Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) - 8004dbc: 687b ldr r3, [r7, #4] - 8004dbe: 681b ldr r3, [r3, #0] - 8004dc0: f003 0304 and.w r3, r3, #4 - 8004dc4: 2b00 cmp r3, #0 - 8004dc6: d008 beq.n 8004dda + 800505c: 687b ldr r3, [r7, #4] + 800505e: 681b ldr r3, [r3, #0] + 8005060: f003 0304 and.w r3, r3, #4 + 8005064: 2b00 cmp r3, #0 + 8005066: d008 beq.n 800507a { assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); - 8004dc8: 4b19 ldr r3, [pc, #100] @ (8004e30 ) - 8004dca: 685b ldr r3, [r3, #4] - 8004dcc: f423 62e0 bic.w r2, r3, #1792 @ 0x700 - 8004dd0: 687b ldr r3, [r7, #4] - 8004dd2: 68db ldr r3, [r3, #12] - 8004dd4: 4916 ldr r1, [pc, #88] @ (8004e30 ) - 8004dd6: 4313 orrs r3, r2 - 8004dd8: 604b str r3, [r1, #4] + 8005068: 4b19 ldr r3, [pc, #100] @ (80050d0 ) + 800506a: 685b ldr r3, [r3, #4] + 800506c: f423 62e0 bic.w r2, r3, #1792 @ 0x700 + 8005070: 687b ldr r3, [r7, #4] + 8005072: 68db ldr r3, [r3, #12] + 8005074: 4916 ldr r1, [pc, #88] @ (80050d0 ) + 8005076: 4313 orrs r3, r2 + 8005078: 604b str r3, [r1, #4] } /*-------------------------- PCLK2 Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) - 8004dda: 687b ldr r3, [r7, #4] - 8004ddc: 681b ldr r3, [r3, #0] - 8004dde: f003 0308 and.w r3, r3, #8 - 8004de2: 2b00 cmp r3, #0 - 8004de4: d009 beq.n 8004dfa + 800507a: 687b ldr r3, [r7, #4] + 800507c: 681b ldr r3, [r3, #0] + 800507e: f003 0308 and.w r3, r3, #8 + 8005082: 2b00 cmp r3, #0 + 8005084: d009 beq.n 800509a { assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3)); - 8004de6: 4b12 ldr r3, [pc, #72] @ (8004e30 ) - 8004de8: 685b ldr r3, [r3, #4] - 8004dea: f423 5260 bic.w r2, r3, #14336 @ 0x3800 - 8004dee: 687b ldr r3, [r7, #4] - 8004df0: 691b ldr r3, [r3, #16] - 8004df2: 00db lsls r3, r3, #3 - 8004df4: 490e ldr r1, [pc, #56] @ (8004e30 ) - 8004df6: 4313 orrs r3, r2 - 8004df8: 604b str r3, [r1, #4] + 8005086: 4b12 ldr r3, [pc, #72] @ (80050d0 ) + 8005088: 685b ldr r3, [r3, #4] + 800508a: f423 5260 bic.w r2, r3, #14336 @ 0x3800 + 800508e: 687b ldr r3, [r7, #4] + 8005090: 691b ldr r3, [r3, #16] + 8005092: 00db lsls r3, r3, #3 + 8005094: 490e ldr r1, [pc, #56] @ (80050d0 ) + 8005096: 4313 orrs r3, r2 + 8005098: 604b str r3, [r1, #4] } /* Update the SystemCoreClock global variable */ SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos]; - 8004dfa: f000 f821 bl 8004e40 - 8004dfe: 4602 mov r2, r0 - 8004e00: 4b0b ldr r3, [pc, #44] @ (8004e30 ) - 8004e02: 685b ldr r3, [r3, #4] - 8004e04: 091b lsrs r3, r3, #4 - 8004e06: f003 030f and.w r3, r3, #15 - 8004e0a: 490a ldr r1, [pc, #40] @ (8004e34 ) - 8004e0c: 5ccb ldrb r3, [r1, r3] - 8004e0e: fa22 f303 lsr.w r3, r2, r3 - 8004e12: 4a09 ldr r2, [pc, #36] @ (8004e38 ) - 8004e14: 6013 str r3, [r2, #0] + 800509a: f000 f821 bl 80050e0 + 800509e: 4602 mov r2, r0 + 80050a0: 4b0b ldr r3, [pc, #44] @ (80050d0 ) + 80050a2: 685b ldr r3, [r3, #4] + 80050a4: 091b lsrs r3, r3, #4 + 80050a6: f003 030f and.w r3, r3, #15 + 80050aa: 490a ldr r1, [pc, #40] @ (80050d4 ) + 80050ac: 5ccb ldrb r3, [r1, r3] + 80050ae: fa22 f303 lsr.w r3, r2, r3 + 80050b2: 4a09 ldr r2, [pc, #36] @ (80050d8 ) + 80050b4: 6013 str r3, [r2, #0] /* Configure the source of time base considering new system clocks settings*/ HAL_InitTick(uwTickPrio); - 8004e16: 4b09 ldr r3, [pc, #36] @ (8004e3c ) - 8004e18: 681b ldr r3, [r3, #0] - 8004e1a: 4618 mov r0, r3 - 8004e1c: f7fd fe62 bl 8002ae4 + 80050b6: 4b09 ldr r3, [pc, #36] @ (80050dc ) + 80050b8: 681b ldr r3, [r3, #0] + 80050ba: 4618 mov r0, r3 + 80050bc: f7fd fe86 bl 8002dcc return HAL_OK; - 8004e20: 2300 movs r3, #0 + 80050c0: 2300 movs r3, #0 } - 8004e22: 4618 mov r0, r3 - 8004e24: 3710 adds r7, #16 - 8004e26: 46bd mov sp, r7 - 8004e28: bd80 pop {r7, pc} - 8004e2a: bf00 nop - 8004e2c: 40022000 .word 0x40022000 - 8004e30: 40021000 .word 0x40021000 - 8004e34: 08006710 .word 0x08006710 - 8004e38: 20000038 .word 0x20000038 - 8004e3c: 2000003c .word 0x2000003c + 80050c2: 4618 mov r0, r3 + 80050c4: 3710 adds r7, #16 + 80050c6: 46bd mov sp, r7 + 80050c8: bd80 pop {r7, pc} + 80050ca: bf00 nop + 80050cc: 40022000 .word 0x40022000 + 80050d0: 40021000 .word 0x40021000 + 80050d4: 08006a68 .word 0x08006a68 + 80050d8: 20000008 .word 0x20000008 + 80050dc: 2000000c .word 0x2000000c -08004e40 : +080050e0 : * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect. * * @retval SYSCLK frequency */ uint32_t HAL_RCC_GetSysClockFreq(void) { - 8004e40: b480 push {r7} - 8004e42: b087 sub sp, #28 - 8004e44: af00 add r7, sp, #0 + 80050e0: b480 push {r7} + 80050e2: b087 sub sp, #28 + 80050e4: af00 add r7, sp, #0 #else static const uint8_t aPredivFactorTable[2U] = {1, 2}; #endif /*RCC_CFGR2_PREDIV1*/ #endif uint32_t tmpreg = 0U, prediv = 0U, pllclk = 0U, pllmul = 0U; - 8004e46: 2300 movs r3, #0 - 8004e48: 60fb str r3, [r7, #12] - 8004e4a: 2300 movs r3, #0 - 8004e4c: 60bb str r3, [r7, #8] - 8004e4e: 2300 movs r3, #0 - 8004e50: 617b str r3, [r7, #20] - 8004e52: 2300 movs r3, #0 - 8004e54: 607b str r3, [r7, #4] + 80050e6: 2300 movs r3, #0 + 80050e8: 60fb str r3, [r7, #12] + 80050ea: 2300 movs r3, #0 + 80050ec: 60bb str r3, [r7, #8] + 80050ee: 2300 movs r3, #0 + 80050f0: 617b str r3, [r7, #20] + 80050f2: 2300 movs r3, #0 + 80050f4: 607b str r3, [r7, #4] uint32_t sysclockfreq = 0U; - 8004e56: 2300 movs r3, #0 - 8004e58: 613b str r3, [r7, #16] + 80050f6: 2300 movs r3, #0 + 80050f8: 613b str r3, [r7, #16] #if defined(RCC_CFGR2_PREDIV1SRC) uint32_t prediv2 = 0U, pll2mul = 0U; #endif /*RCC_CFGR2_PREDIV1SRC*/ tmpreg = RCC->CFGR; - 8004e5a: 4b1e ldr r3, [pc, #120] @ (8004ed4 ) - 8004e5c: 685b ldr r3, [r3, #4] - 8004e5e: 60fb str r3, [r7, #12] + 80050fa: 4b1e ldr r3, [pc, #120] @ (8005174 ) + 80050fc: 685b ldr r3, [r3, #4] + 80050fe: 60fb str r3, [r7, #12] /* Get SYSCLK source -------------------------------------------------------*/ switch (tmpreg & RCC_CFGR_SWS) - 8004e60: 68fb ldr r3, [r7, #12] - 8004e62: f003 030c and.w r3, r3, #12 - 8004e66: 2b04 cmp r3, #4 - 8004e68: d002 beq.n 8004e70 - 8004e6a: 2b08 cmp r3, #8 - 8004e6c: d003 beq.n 8004e76 - 8004e6e: e027 b.n 8004ec0 + 8005100: 68fb ldr r3, [r7, #12] + 8005102: f003 030c and.w r3, r3, #12 + 8005106: 2b04 cmp r3, #4 + 8005108: d002 beq.n 8005110 + 800510a: 2b08 cmp r3, #8 + 800510c: d003 beq.n 8005116 + 800510e: e027 b.n 8005160 { case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock */ { sysclockfreq = HSE_VALUE; - 8004e70: 4b19 ldr r3, [pc, #100] @ (8004ed8 ) - 8004e72: 613b str r3, [r7, #16] + 8005110: 4b19 ldr r3, [pc, #100] @ (8005178 ) + 8005112: 613b str r3, [r7, #16] break; - 8004e74: e027 b.n 8004ec6 + 8005114: e027 b.n 8005166 } case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock */ { pllmul = aPLLMULFactorTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMULL) >> RCC_CFGR_PLLMULL_Pos]; - 8004e76: 68fb ldr r3, [r7, #12] - 8004e78: 0c9b lsrs r3, r3, #18 - 8004e7a: f003 030f and.w r3, r3, #15 - 8004e7e: 4a17 ldr r2, [pc, #92] @ (8004edc ) - 8004e80: 5cd3 ldrb r3, [r2, r3] - 8004e82: 607b str r3, [r7, #4] + 8005116: 68fb ldr r3, [r7, #12] + 8005118: 0c9b lsrs r3, r3, #18 + 800511a: f003 030f and.w r3, r3, #15 + 800511e: 4a17 ldr r2, [pc, #92] @ (800517c ) + 8005120: 5cd3 ldrb r3, [r2, r3] + 8005122: 607b str r3, [r7, #4] if ((tmpreg & RCC_CFGR_PLLSRC) != RCC_PLLSOURCE_HSI_DIV2) - 8004e84: 68fb ldr r3, [r7, #12] - 8004e86: f403 3380 and.w r3, r3, #65536 @ 0x10000 - 8004e8a: 2b00 cmp r3, #0 - 8004e8c: d010 beq.n 8004eb0 + 8005124: 68fb ldr r3, [r7, #12] + 8005126: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 800512a: 2b00 cmp r3, #0 + 800512c: d010 beq.n 8005150 { #if defined(RCC_CFGR2_PREDIV1) prediv = aPredivFactorTable[(uint32_t)(RCC->CFGR2 & RCC_CFGR2_PREDIV1) >> RCC_CFGR2_PREDIV1_Pos]; #else prediv = aPredivFactorTable[(uint32_t)(RCC->CFGR & RCC_CFGR_PLLXTPRE) >> RCC_CFGR_PLLXTPRE_Pos]; - 8004e8e: 4b11 ldr r3, [pc, #68] @ (8004ed4 ) - 8004e90: 685b ldr r3, [r3, #4] - 8004e92: 0c5b lsrs r3, r3, #17 - 8004e94: f003 0301 and.w r3, r3, #1 - 8004e98: 4a11 ldr r2, [pc, #68] @ (8004ee0 ) - 8004e9a: 5cd3 ldrb r3, [r2, r3] - 8004e9c: 60bb str r3, [r7, #8] + 800512e: 4b11 ldr r3, [pc, #68] @ (8005174 ) + 8005130: 685b ldr r3, [r3, #4] + 8005132: 0c5b lsrs r3, r3, #17 + 8005134: f003 0301 and.w r3, r3, #1 + 8005138: 4a11 ldr r2, [pc, #68] @ (8005180 ) + 800513a: 5cd3 ldrb r3, [r2, r3] + 800513c: 60bb str r3, [r7, #8] { pllclk = pllclk / 2; } #else /* HSE used as PLL clock source : PLLCLK = HSE/PREDIV1 * PLLMUL */ pllclk = (uint32_t)((HSE_VALUE * pllmul) / prediv); - 8004e9e: 687b ldr r3, [r7, #4] - 8004ea0: 4a0d ldr r2, [pc, #52] @ (8004ed8 ) - 8004ea2: fb03 f202 mul.w r2, r3, r2 - 8004ea6: 68bb ldr r3, [r7, #8] - 8004ea8: fbb2 f3f3 udiv r3, r2, r3 - 8004eac: 617b str r3, [r7, #20] - 8004eae: e004 b.n 8004eba + 800513e: 687b ldr r3, [r7, #4] + 8005140: 4a0d ldr r2, [pc, #52] @ (8005178 ) + 8005142: fb03 f202 mul.w r2, r3, r2 + 8005146: 68bb ldr r3, [r7, #8] + 8005148: fbb2 f3f3 udiv r3, r2, r3 + 800514c: 617b str r3, [r7, #20] + 800514e: e004 b.n 800515a #endif /*RCC_CFGR2_PREDIV1SRC*/ } else { /* HSI used as PLL clock source : PLLCLK = HSI/2 * PLLMUL */ pllclk = (uint32_t)((HSI_VALUE >> 1) * pllmul); - 8004eb0: 687b ldr r3, [r7, #4] - 8004eb2: 4a0c ldr r2, [pc, #48] @ (8004ee4 ) - 8004eb4: fb02 f303 mul.w r3, r2, r3 - 8004eb8: 617b str r3, [r7, #20] + 8005150: 687b ldr r3, [r7, #4] + 8005152: 4a0c ldr r2, [pc, #48] @ (8005184 ) + 8005154: fb02 f303 mul.w r3, r2, r3 + 8005158: 617b str r3, [r7, #20] } sysclockfreq = pllclk; - 8004eba: 697b ldr r3, [r7, #20] - 8004ebc: 613b str r3, [r7, #16] + 800515a: 697b ldr r3, [r7, #20] + 800515c: 613b str r3, [r7, #16] break; - 8004ebe: e002 b.n 8004ec6 + 800515e: e002 b.n 8005166 } case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ default: /* HSI used as system clock */ { sysclockfreq = HSI_VALUE; - 8004ec0: 4b09 ldr r3, [pc, #36] @ (8004ee8 ) - 8004ec2: 613b str r3, [r7, #16] + 8005160: 4b09 ldr r3, [pc, #36] @ (8005188 ) + 8005162: 613b str r3, [r7, #16] break; - 8004ec4: bf00 nop + 8005164: bf00 nop } } return sysclockfreq; - 8004ec6: 693b ldr r3, [r7, #16] + 8005166: 693b ldr r3, [r7, #16] } - 8004ec8: 4618 mov r0, r3 - 8004eca: 371c adds r7, #28 - 8004ecc: 46bd mov sp, r7 - 8004ece: bc80 pop {r7} - 8004ed0: 4770 bx lr - 8004ed2: bf00 nop - 8004ed4: 40021000 .word 0x40021000 - 8004ed8: 00b71b00 .word 0x00b71b00 - 8004edc: 08006728 .word 0x08006728 - 8004ee0: 08006738 .word 0x08006738 - 8004ee4: 003d0900 .word 0x003d0900 - 8004ee8: 007a1200 .word 0x007a1200 + 8005168: 4618 mov r0, r3 + 800516a: 371c adds r7, #28 + 800516c: 46bd mov sp, r7 + 800516e: bc80 pop {r7} + 8005170: 4770 bx lr + 8005172: bf00 nop + 8005174: 40021000 .word 0x40021000 + 8005178: 00b71b00 .word 0x00b71b00 + 800517c: 08006a80 .word 0x08006a80 + 8005180: 08006a90 .word 0x08006a90 + 8005184: 003d0900 .word 0x003d0900 + 8005188: 007a1200 .word 0x007a1200 -08004eec : +0800518c : * @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency * and updated within this function * @retval HCLK frequency */ uint32_t HAL_RCC_GetHCLKFreq(void) { - 8004eec: b480 push {r7} - 8004eee: af00 add r7, sp, #0 + 800518c: b480 push {r7} + 800518e: af00 add r7, sp, #0 return SystemCoreClock; - 8004ef0: 4b02 ldr r3, [pc, #8] @ (8004efc ) - 8004ef2: 681b ldr r3, [r3, #0] + 8005190: 4b02 ldr r3, [pc, #8] @ (800519c ) + 8005192: 681b ldr r3, [r3, #0] } - 8004ef4: 4618 mov r0, r3 - 8004ef6: 46bd mov sp, r7 - 8004ef8: bc80 pop {r7} - 8004efa: 4770 bx lr - 8004efc: 20000038 .word 0x20000038 + 8005194: 4618 mov r0, r3 + 8005196: 46bd mov sp, r7 + 8005198: bc80 pop {r7} + 800519a: 4770 bx lr + 800519c: 20000008 .word 0x20000008 -08004f00 : +080051a0 : * @note Each time PCLK1 changes, this function must be called to update the * right PCLK1 value. Otherwise, any configuration based on this function will be incorrect. * @retval PCLK1 frequency */ uint32_t HAL_RCC_GetPCLK1Freq(void) { - 8004f00: b580 push {r7, lr} - 8004f02: af00 add r7, sp, #0 + 80051a0: b580 push {r7, lr} + 80051a2: af00 add r7, sp, #0 /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/ return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1) >> RCC_CFGR_PPRE1_Pos]); - 8004f04: f7ff fff2 bl 8004eec - 8004f08: 4602 mov r2, r0 - 8004f0a: 4b05 ldr r3, [pc, #20] @ (8004f20 ) - 8004f0c: 685b ldr r3, [r3, #4] - 8004f0e: 0a1b lsrs r3, r3, #8 - 8004f10: f003 0307 and.w r3, r3, #7 - 8004f14: 4903 ldr r1, [pc, #12] @ (8004f24 ) - 8004f16: 5ccb ldrb r3, [r1, r3] - 8004f18: fa22 f303 lsr.w r3, r2, r3 + 80051a4: f7ff fff2 bl 800518c + 80051a8: 4602 mov r2, r0 + 80051aa: 4b05 ldr r3, [pc, #20] @ (80051c0 ) + 80051ac: 685b ldr r3, [r3, #4] + 80051ae: 0a1b lsrs r3, r3, #8 + 80051b0: f003 0307 and.w r3, r3, #7 + 80051b4: 4903 ldr r1, [pc, #12] @ (80051c4 ) + 80051b6: 5ccb ldrb r3, [r1, r3] + 80051b8: fa22 f303 lsr.w r3, r2, r3 } - 8004f1c: 4618 mov r0, r3 - 8004f1e: bd80 pop {r7, pc} - 8004f20: 40021000 .word 0x40021000 - 8004f24: 08006720 .word 0x08006720 + 80051bc: 4618 mov r0, r3 + 80051be: bd80 pop {r7, pc} + 80051c0: 40021000 .word 0x40021000 + 80051c4: 08006a78 .word 0x08006a78 -08004f28 : +080051c8 : * @note Each time PCLK2 changes, this function must be called to update the * right PCLK2 value. Otherwise, any configuration based on this function will be incorrect. * @retval PCLK2 frequency */ uint32_t HAL_RCC_GetPCLK2Freq(void) { - 8004f28: b580 push {r7, lr} - 8004f2a: af00 add r7, sp, #0 + 80051c8: b580 push {r7, lr} + 80051ca: af00 add r7, sp, #0 /* Get HCLK source and Compute PCLK2 frequency ---------------------------*/ return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE2) >> RCC_CFGR_PPRE2_Pos]); - 8004f2c: f7ff ffde bl 8004eec - 8004f30: 4602 mov r2, r0 - 8004f32: 4b05 ldr r3, [pc, #20] @ (8004f48 ) - 8004f34: 685b ldr r3, [r3, #4] - 8004f36: 0adb lsrs r3, r3, #11 - 8004f38: f003 0307 and.w r3, r3, #7 - 8004f3c: 4903 ldr r1, [pc, #12] @ (8004f4c ) - 8004f3e: 5ccb ldrb r3, [r1, r3] - 8004f40: fa22 f303 lsr.w r3, r2, r3 + 80051cc: f7ff ffde bl 800518c + 80051d0: 4602 mov r2, r0 + 80051d2: 4b05 ldr r3, [pc, #20] @ (80051e8 ) + 80051d4: 685b ldr r3, [r3, #4] + 80051d6: 0adb lsrs r3, r3, #11 + 80051d8: f003 0307 and.w r3, r3, #7 + 80051dc: 4903 ldr r1, [pc, #12] @ (80051ec ) + 80051de: 5ccb ldrb r3, [r1, r3] + 80051e0: fa22 f303 lsr.w r3, r2, r3 } - 8004f44: 4618 mov r0, r3 - 8004f46: bd80 pop {r7, pc} - 8004f48: 40021000 .word 0x40021000 - 8004f4c: 08006720 .word 0x08006720 + 80051e4: 4618 mov r0, r3 + 80051e6: bd80 pop {r7, pc} + 80051e8: 40021000 .word 0x40021000 + 80051ec: 08006a78 .word 0x08006a78 -08004f50 : +080051f0 : * @brief This function provides delay (in milliseconds) based on CPU cycles method. * @param mdelay: specifies the delay time length, in milliseconds. * @retval None */ static void RCC_Delay(uint32_t mdelay) { - 8004f50: b480 push {r7} - 8004f52: b085 sub sp, #20 - 8004f54: af00 add r7, sp, #0 - 8004f56: 6078 str r0, [r7, #4] + 80051f0: b480 push {r7} + 80051f2: b085 sub sp, #20 + 80051f4: af00 add r7, sp, #0 + 80051f6: 6078 str r0, [r7, #4] __IO uint32_t Delay = mdelay * (SystemCoreClock / 8U / 1000U); - 8004f58: 4b0a ldr r3, [pc, #40] @ (8004f84 ) - 8004f5a: 681b ldr r3, [r3, #0] - 8004f5c: 4a0a ldr r2, [pc, #40] @ (8004f88 ) - 8004f5e: fba2 2303 umull r2, r3, r2, r3 - 8004f62: 0a5b lsrs r3, r3, #9 - 8004f64: 687a ldr r2, [r7, #4] - 8004f66: fb02 f303 mul.w r3, r2, r3 - 8004f6a: 60fb str r3, [r7, #12] + 80051f8: 4b0a ldr r3, [pc, #40] @ (8005224 ) + 80051fa: 681b ldr r3, [r3, #0] + 80051fc: 4a0a ldr r2, [pc, #40] @ (8005228 ) + 80051fe: fba2 2303 umull r2, r3, r2, r3 + 8005202: 0a5b lsrs r3, r3, #9 + 8005204: 687a ldr r2, [r7, #4] + 8005206: fb02 f303 mul.w r3, r2, r3 + 800520a: 60fb str r3, [r7, #12] do { __NOP(); - 8004f6c: bf00 nop + 800520c: bf00 nop } while (Delay --); - 8004f6e: 68fb ldr r3, [r7, #12] - 8004f70: 1e5a subs r2, r3, #1 - 8004f72: 60fa str r2, [r7, #12] - 8004f74: 2b00 cmp r3, #0 - 8004f76: d1f9 bne.n 8004f6c + 800520e: 68fb ldr r3, [r7, #12] + 8005210: 1e5a subs r2, r3, #1 + 8005212: 60fa str r2, [r7, #12] + 8005214: 2b00 cmp r3, #0 + 8005216: d1f9 bne.n 800520c } - 8004f78: bf00 nop - 8004f7a: bf00 nop - 8004f7c: 3714 adds r7, #20 - 8004f7e: 46bd mov sp, r7 - 8004f80: bc80 pop {r7} - 8004f82: 4770 bx lr - 8004f84: 20000038 .word 0x20000038 - 8004f88: 10624dd3 .word 0x10624dd3 + 8005218: bf00 nop + 800521a: bf00 nop + 800521c: 3714 adds r7, #20 + 800521e: 46bd mov sp, r7 + 8005220: bc80 pop {r7} + 8005222: 4770 bx lr + 8005224: 20000008 .word 0x20000008 + 8005228: 10624dd3 .word 0x10624dd3 -08004f8c : +0800522c : * manually disable it. * * @retval HAL status */ HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) { - 8004f8c: b580 push {r7, lr} - 8004f8e: b086 sub sp, #24 - 8004f90: af00 add r7, sp, #0 - 8004f92: 6078 str r0, [r7, #4] + 800522c: b580 push {r7, lr} + 800522e: b086 sub sp, #24 + 8005230: af00 add r7, sp, #0 + 8005232: 6078 str r0, [r7, #4] uint32_t tickstart = 0U, temp_reg = 0U; - 8004f94: 2300 movs r3, #0 - 8004f96: 613b str r3, [r7, #16] - 8004f98: 2300 movs r3, #0 - 8004f9a: 60fb str r3, [r7, #12] + 8005234: 2300 movs r3, #0 + 8005236: 613b str r3, [r7, #16] + 8005238: 2300 movs r3, #0 + 800523a: 60fb str r3, [r7, #12] /* Check the parameters */ assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection)); /*------------------------------- RTC/LCD Configuration ------------------------*/ if ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)) - 8004f9c: 687b ldr r3, [r7, #4] - 8004f9e: 681b ldr r3, [r3, #0] - 8004fa0: f003 0301 and.w r3, r3, #1 - 8004fa4: 2b00 cmp r3, #0 - 8004fa6: d07d beq.n 80050a4 + 800523c: 687b ldr r3, [r7, #4] + 800523e: 681b ldr r3, [r3, #0] + 8005240: f003 0301 and.w r3, r3, #1 + 8005244: 2b00 cmp r3, #0 + 8005246: d07d beq.n 8005344 { FlagStatus pwrclkchanged = RESET; - 8004fa8: 2300 movs r3, #0 - 8004faa: 75fb strb r3, [r7, #23] + 8005248: 2300 movs r3, #0 + 800524a: 75fb strb r3, [r7, #23] assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection)); /* As soon as function is called to change RTC clock source, activation of the power domain is done. */ /* Requires to enable write access to Backup Domain of necessary */ if (__HAL_RCC_PWR_IS_CLK_DISABLED()) - 8004fac: 4b4f ldr r3, [pc, #316] @ (80050ec ) - 8004fae: 69db ldr r3, [r3, #28] - 8004fb0: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 8004fb4: 2b00 cmp r3, #0 - 8004fb6: d10d bne.n 8004fd4 + 800524c: 4b4f ldr r3, [pc, #316] @ (800538c ) + 800524e: 69db ldr r3, [r3, #28] + 8005250: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8005254: 2b00 cmp r3, #0 + 8005256: d10d bne.n 8005274 { __HAL_RCC_PWR_CLK_ENABLE(); - 8004fb8: 4b4c ldr r3, [pc, #304] @ (80050ec ) - 8004fba: 69db ldr r3, [r3, #28] - 8004fbc: 4a4b ldr r2, [pc, #300] @ (80050ec ) - 8004fbe: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 - 8004fc2: 61d3 str r3, [r2, #28] - 8004fc4: 4b49 ldr r3, [pc, #292] @ (80050ec ) - 8004fc6: 69db ldr r3, [r3, #28] - 8004fc8: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 8004fcc: 60bb str r3, [r7, #8] - 8004fce: 68bb ldr r3, [r7, #8] + 8005258: 4b4c ldr r3, [pc, #304] @ (800538c ) + 800525a: 69db ldr r3, [r3, #28] + 800525c: 4a4b ldr r2, [pc, #300] @ (800538c ) + 800525e: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8005262: 61d3 str r3, [r2, #28] + 8005264: 4b49 ldr r3, [pc, #292] @ (800538c ) + 8005266: 69db ldr r3, [r3, #28] + 8005268: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 800526c: 60bb str r3, [r7, #8] + 800526e: 68bb ldr r3, [r7, #8] pwrclkchanged = SET; - 8004fd0: 2301 movs r3, #1 - 8004fd2: 75fb strb r3, [r7, #23] + 8005270: 2301 movs r3, #1 + 8005272: 75fb strb r3, [r7, #23] } if (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 8004fd4: 4b46 ldr r3, [pc, #280] @ (80050f0 ) - 8004fd6: 681b ldr r3, [r3, #0] - 8004fd8: f403 7380 and.w r3, r3, #256 @ 0x100 - 8004fdc: 2b00 cmp r3, #0 - 8004fde: d118 bne.n 8005012 + 8005274: 4b46 ldr r3, [pc, #280] @ (8005390 ) + 8005276: 681b ldr r3, [r3, #0] + 8005278: f403 7380 and.w r3, r3, #256 @ 0x100 + 800527c: 2b00 cmp r3, #0 + 800527e: d118 bne.n 80052b2 { /* Enable write access to Backup domain */ SET_BIT(PWR->CR, PWR_CR_DBP); - 8004fe0: 4b43 ldr r3, [pc, #268] @ (80050f0 ) - 8004fe2: 681b ldr r3, [r3, #0] - 8004fe4: 4a42 ldr r2, [pc, #264] @ (80050f0 ) - 8004fe6: f443 7380 orr.w r3, r3, #256 @ 0x100 - 8004fea: 6013 str r3, [r2, #0] + 8005280: 4b43 ldr r3, [pc, #268] @ (8005390 ) + 8005282: 681b ldr r3, [r3, #0] + 8005284: 4a42 ldr r2, [pc, #264] @ (8005390 ) + 8005286: f443 7380 orr.w r3, r3, #256 @ 0x100 + 800528a: 6013 str r3, [r2, #0] /* Wait for Backup domain Write protection disable */ tickstart = HAL_GetTick(); - 8004fec: f7fd fdbc bl 8002b68 - 8004ff0: 6138 str r0, [r7, #16] + 800528c: f7fd fde0 bl 8002e50 + 8005290: 6138 str r0, [r7, #16] while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 8004ff2: e008 b.n 8005006 + 8005292: e008 b.n 80052a6 { if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 8004ff4: f7fd fdb8 bl 8002b68 - 8004ff8: 4602 mov r2, r0 - 8004ffa: 693b ldr r3, [r7, #16] - 8004ffc: 1ad3 subs r3, r2, r3 - 8004ffe: 2b64 cmp r3, #100 @ 0x64 - 8005000: d901 bls.n 8005006 + 8005294: f7fd fddc bl 8002e50 + 8005298: 4602 mov r2, r0 + 800529a: 693b ldr r3, [r7, #16] + 800529c: 1ad3 subs r3, r2, r3 + 800529e: 2b64 cmp r3, #100 @ 0x64 + 80052a0: d901 bls.n 80052a6 { return HAL_TIMEOUT; - 8005002: 2303 movs r3, #3 - 8005004: e06d b.n 80050e2 + 80052a2: 2303 movs r3, #3 + 80052a4: e06d b.n 8005382 while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 8005006: 4b3a ldr r3, [pc, #232] @ (80050f0 ) - 8005008: 681b ldr r3, [r3, #0] - 800500a: f403 7380 and.w r3, r3, #256 @ 0x100 - 800500e: 2b00 cmp r3, #0 - 8005010: d0f0 beq.n 8004ff4 + 80052a6: 4b3a ldr r3, [pc, #232] @ (8005390 ) + 80052a8: 681b ldr r3, [r3, #0] + 80052aa: f403 7380 and.w r3, r3, #256 @ 0x100 + 80052ae: 2b00 cmp r3, #0 + 80052b0: d0f0 beq.n 8005294 } } } /* Reset the Backup domain only if the RTC Clock source selection is modified from reset value */ temp_reg = (RCC->BDCR & RCC_BDCR_RTCSEL); - 8005012: 4b36 ldr r3, [pc, #216] @ (80050ec ) - 8005014: 6a1b ldr r3, [r3, #32] - 8005016: f403 7340 and.w r3, r3, #768 @ 0x300 - 800501a: 60fb str r3, [r7, #12] + 80052b2: 4b36 ldr r3, [pc, #216] @ (800538c ) + 80052b4: 6a1b ldr r3, [r3, #32] + 80052b6: f403 7340 and.w r3, r3, #768 @ 0x300 + 80052ba: 60fb str r3, [r7, #12] if ((temp_reg != 0x00000000U) && (temp_reg != (PeriphClkInit->RTCClockSelection & RCC_BDCR_RTCSEL))) - 800501c: 68fb ldr r3, [r7, #12] - 800501e: 2b00 cmp r3, #0 - 8005020: d02e beq.n 8005080 - 8005022: 687b ldr r3, [r7, #4] - 8005024: 685b ldr r3, [r3, #4] - 8005026: f403 7340 and.w r3, r3, #768 @ 0x300 - 800502a: 68fa ldr r2, [r7, #12] - 800502c: 429a cmp r2, r3 - 800502e: d027 beq.n 8005080 + 80052bc: 68fb ldr r3, [r7, #12] + 80052be: 2b00 cmp r3, #0 + 80052c0: d02e beq.n 8005320 + 80052c2: 687b ldr r3, [r7, #4] + 80052c4: 685b ldr r3, [r3, #4] + 80052c6: f403 7340 and.w r3, r3, #768 @ 0x300 + 80052ca: 68fa ldr r2, [r7, #12] + 80052cc: 429a cmp r2, r3 + 80052ce: d027 beq.n 8005320 { /* Store the content of BDCR register before the reset of Backup Domain */ temp_reg = (RCC->BDCR & ~(RCC_BDCR_RTCSEL)); - 8005030: 4b2e ldr r3, [pc, #184] @ (80050ec ) - 8005032: 6a1b ldr r3, [r3, #32] - 8005034: f423 7340 bic.w r3, r3, #768 @ 0x300 - 8005038: 60fb str r3, [r7, #12] + 80052d0: 4b2e ldr r3, [pc, #184] @ (800538c ) + 80052d2: 6a1b ldr r3, [r3, #32] + 80052d4: f423 7340 bic.w r3, r3, #768 @ 0x300 + 80052d8: 60fb str r3, [r7, #12] /* RTC Clock selection can be changed only if the Backup Domain is reset */ __HAL_RCC_BACKUPRESET_FORCE(); - 800503a: 4b2e ldr r3, [pc, #184] @ (80050f4 ) - 800503c: 2201 movs r2, #1 - 800503e: 601a str r2, [r3, #0] + 80052da: 4b2e ldr r3, [pc, #184] @ (8005394 ) + 80052dc: 2201 movs r2, #1 + 80052de: 601a str r2, [r3, #0] __HAL_RCC_BACKUPRESET_RELEASE(); - 8005040: 4b2c ldr r3, [pc, #176] @ (80050f4 ) - 8005042: 2200 movs r2, #0 - 8005044: 601a str r2, [r3, #0] + 80052e0: 4b2c ldr r3, [pc, #176] @ (8005394 ) + 80052e2: 2200 movs r2, #0 + 80052e4: 601a str r2, [r3, #0] /* Restore the Content of BDCR register */ RCC->BDCR = temp_reg; - 8005046: 4a29 ldr r2, [pc, #164] @ (80050ec ) - 8005048: 68fb ldr r3, [r7, #12] - 800504a: 6213 str r3, [r2, #32] + 80052e6: 4a29 ldr r2, [pc, #164] @ (800538c ) + 80052e8: 68fb ldr r3, [r7, #12] + 80052ea: 6213 str r3, [r2, #32] /* Wait for LSERDY if LSE was enabled */ if (HAL_IS_BIT_SET(temp_reg, RCC_BDCR_LSEON)) - 800504c: 68fb ldr r3, [r7, #12] - 800504e: f003 0301 and.w r3, r3, #1 - 8005052: 2b00 cmp r3, #0 - 8005054: d014 beq.n 8005080 + 80052ec: 68fb ldr r3, [r7, #12] + 80052ee: f003 0301 and.w r3, r3, #1 + 80052f2: 2b00 cmp r3, #0 + 80052f4: d014 beq.n 8005320 { /* Get Start Tick */ tickstart = HAL_GetTick(); - 8005056: f7fd fd87 bl 8002b68 - 800505a: 6138 str r0, [r7, #16] + 80052f6: f7fd fdab bl 8002e50 + 80052fa: 6138 str r0, [r7, #16] /* Wait till LSE is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 800505c: e00a b.n 8005074 + 80052fc: e00a b.n 8005314 { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 800505e: f7fd fd83 bl 8002b68 - 8005062: 4602 mov r2, r0 - 8005064: 693b ldr r3, [r7, #16] - 8005066: 1ad3 subs r3, r2, r3 - 8005068: f241 3288 movw r2, #5000 @ 0x1388 - 800506c: 4293 cmp r3, r2 - 800506e: d901 bls.n 8005074 + 80052fe: f7fd fda7 bl 8002e50 + 8005302: 4602 mov r2, r0 + 8005304: 693b ldr r3, [r7, #16] + 8005306: 1ad3 subs r3, r2, r3 + 8005308: f241 3288 movw r2, #5000 @ 0x1388 + 800530c: 4293 cmp r3, r2 + 800530e: d901 bls.n 8005314 { return HAL_TIMEOUT; - 8005070: 2303 movs r3, #3 - 8005072: e036 b.n 80050e2 + 8005310: 2303 movs r3, #3 + 8005312: e036 b.n 8005382 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 8005074: 4b1d ldr r3, [pc, #116] @ (80050ec ) - 8005076: 6a1b ldr r3, [r3, #32] - 8005078: f003 0302 and.w r3, r3, #2 - 800507c: 2b00 cmp r3, #0 - 800507e: d0ee beq.n 800505e + 8005314: 4b1d ldr r3, [pc, #116] @ (800538c ) + 8005316: 6a1b ldr r3, [r3, #32] + 8005318: f003 0302 and.w r3, r3, #2 + 800531c: 2b00 cmp r3, #0 + 800531e: d0ee beq.n 80052fe } } } } __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); - 8005080: 4b1a ldr r3, [pc, #104] @ (80050ec ) - 8005082: 6a1b ldr r3, [r3, #32] - 8005084: f423 7240 bic.w r2, r3, #768 @ 0x300 - 8005088: 687b ldr r3, [r7, #4] - 800508a: 685b ldr r3, [r3, #4] - 800508c: 4917 ldr r1, [pc, #92] @ (80050ec ) - 800508e: 4313 orrs r3, r2 - 8005090: 620b str r3, [r1, #32] + 8005320: 4b1a ldr r3, [pc, #104] @ (800538c ) + 8005322: 6a1b ldr r3, [r3, #32] + 8005324: f423 7240 bic.w r2, r3, #768 @ 0x300 + 8005328: 687b ldr r3, [r7, #4] + 800532a: 685b ldr r3, [r3, #4] + 800532c: 4917 ldr r1, [pc, #92] @ (800538c ) + 800532e: 4313 orrs r3, r2 + 8005330: 620b str r3, [r1, #32] /* Require to disable power clock if necessary */ if (pwrclkchanged == SET) - 8005092: 7dfb ldrb r3, [r7, #23] - 8005094: 2b01 cmp r3, #1 - 8005096: d105 bne.n 80050a4 + 8005332: 7dfb ldrb r3, [r7, #23] + 8005334: 2b01 cmp r3, #1 + 8005336: d105 bne.n 8005344 { __HAL_RCC_PWR_CLK_DISABLE(); - 8005098: 4b14 ldr r3, [pc, #80] @ (80050ec ) - 800509a: 69db ldr r3, [r3, #28] - 800509c: 4a13 ldr r2, [pc, #76] @ (80050ec ) - 800509e: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 - 80050a2: 61d3 str r3, [r2, #28] + 8005338: 4b14 ldr r3, [pc, #80] @ (800538c ) + 800533a: 69db ldr r3, [r3, #28] + 800533c: 4a13 ldr r2, [pc, #76] @ (800538c ) + 800533e: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 8005342: 61d3 str r3, [r2, #28] } } /*------------------------------ ADC clock Configuration ------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) - 80050a4: 687b ldr r3, [r7, #4] - 80050a6: 681b ldr r3, [r3, #0] - 80050a8: f003 0302 and.w r3, r3, #2 - 80050ac: 2b00 cmp r3, #0 - 80050ae: d008 beq.n 80050c2 + 8005344: 687b ldr r3, [r7, #4] + 8005346: 681b ldr r3, [r3, #0] + 8005348: f003 0302 and.w r3, r3, #2 + 800534c: 2b00 cmp r3, #0 + 800534e: d008 beq.n 8005362 { /* Check the parameters */ assert_param(IS_RCC_ADCPLLCLK_DIV(PeriphClkInit->AdcClockSelection)); /* Configure the ADC clock source */ __HAL_RCC_ADC_CONFIG(PeriphClkInit->AdcClockSelection); - 80050b0: 4b0e ldr r3, [pc, #56] @ (80050ec ) - 80050b2: 685b ldr r3, [r3, #4] - 80050b4: f423 4240 bic.w r2, r3, #49152 @ 0xc000 - 80050b8: 687b ldr r3, [r7, #4] - 80050ba: 689b ldr r3, [r3, #8] - 80050bc: 490b ldr r1, [pc, #44] @ (80050ec ) - 80050be: 4313 orrs r3, r2 - 80050c0: 604b str r3, [r1, #4] + 8005350: 4b0e ldr r3, [pc, #56] @ (800538c ) + 8005352: 685b ldr r3, [r3, #4] + 8005354: f423 4240 bic.w r2, r3, #49152 @ 0xc000 + 8005358: 687b ldr r3, [r7, #4] + 800535a: 689b ldr r3, [r3, #8] + 800535c: 490b ldr r1, [pc, #44] @ (800538c ) + 800535e: 4313 orrs r3, r2 + 8005360: 604b str r3, [r1, #4] #if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\ || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)\ || defined(STM32F105xC) || defined(STM32F107xC) /*------------------------------ USB clock Configuration ------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USB) == RCC_PERIPHCLK_USB) - 80050c2: 687b ldr r3, [r7, #4] - 80050c4: 681b ldr r3, [r3, #0] - 80050c6: f003 0310 and.w r3, r3, #16 - 80050ca: 2b00 cmp r3, #0 - 80050cc: d008 beq.n 80050e0 + 8005362: 687b ldr r3, [r7, #4] + 8005364: 681b ldr r3, [r3, #0] + 8005366: f003 0310 and.w r3, r3, #16 + 800536a: 2b00 cmp r3, #0 + 800536c: d008 beq.n 8005380 { /* Check the parameters */ assert_param(IS_RCC_USBPLLCLK_DIV(PeriphClkInit->UsbClockSelection)); /* Configure the USB clock source */ __HAL_RCC_USB_CONFIG(PeriphClkInit->UsbClockSelection); - 80050ce: 4b07 ldr r3, [pc, #28] @ (80050ec ) - 80050d0: 685b ldr r3, [r3, #4] - 80050d2: f423 0280 bic.w r2, r3, #4194304 @ 0x400000 - 80050d6: 687b ldr r3, [r7, #4] - 80050d8: 68db ldr r3, [r3, #12] - 80050da: 4904 ldr r1, [pc, #16] @ (80050ec ) - 80050dc: 4313 orrs r3, r2 - 80050de: 604b str r3, [r1, #4] + 800536e: 4b07 ldr r3, [pc, #28] @ (800538c ) + 8005370: 685b ldr r3, [r3, #4] + 8005372: f423 0280 bic.w r2, r3, #4194304 @ 0x400000 + 8005376: 687b ldr r3, [r7, #4] + 8005378: 68db ldr r3, [r3, #12] + 800537a: 4904 ldr r1, [pc, #16] @ (800538c ) + 800537c: 4313 orrs r3, r2 + 800537e: 604b str r3, [r1, #4] } #endif /* STM32F102x6 || STM32F102xB || STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */ return HAL_OK; - 80050e0: 2300 movs r3, #0 + 8005380: 2300 movs r3, #0 } - 80050e2: 4618 mov r0, r3 - 80050e4: 3718 adds r7, #24 - 80050e6: 46bd mov sp, r7 - 80050e8: bd80 pop {r7, pc} - 80050ea: bf00 nop - 80050ec: 40021000 .word 0x40021000 - 80050f0: 40007000 .word 0x40007000 - 80050f4: 42420440 .word 0x42420440 + 8005382: 4618 mov r0, r3 + 8005384: 3718 adds r7, #24 + 8005386: 46bd mov sp, r7 + 8005388: bd80 pop {r7, pc} + 800538a: bf00 nop + 800538c: 40021000 .word 0x40021000 + 8005390: 40007000 .word 0x40007000 + 8005394: 42420440 .word 0x42420440 -080050f8 : +08005398 : * Ex: call @ref HAL_TIM_Base_DeInit() before HAL_TIM_Base_Init() * @param htim TIM Base handle * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim) { - 80050f8: b580 push {r7, lr} - 80050fa: b082 sub sp, #8 - 80050fc: af00 add r7, sp, #0 - 80050fe: 6078 str r0, [r7, #4] + 8005398: b580 push {r7, lr} + 800539a: b082 sub sp, #8 + 800539c: af00 add r7, sp, #0 + 800539e: 6078 str r0, [r7, #4] /* Check the TIM handle allocation */ if (htim == NULL) - 8005100: 687b ldr r3, [r7, #4] - 8005102: 2b00 cmp r3, #0 - 8005104: d101 bne.n 800510a + 80053a0: 687b ldr r3, [r7, #4] + 80053a2: 2b00 cmp r3, #0 + 80053a4: d101 bne.n 80053aa { return HAL_ERROR; - 8005106: 2301 movs r3, #1 - 8005108: e041 b.n 800518e + 80053a6: 2301 movs r3, #1 + 80053a8: e041 b.n 800542e assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); assert_param(IS_TIM_PERIOD(htim->Init.Period)); assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); if (htim->State == HAL_TIM_STATE_RESET) - 800510a: 687b ldr r3, [r7, #4] - 800510c: f893 303d ldrb.w r3, [r3, #61] @ 0x3d - 8005110: b2db uxtb r3, r3 - 8005112: 2b00 cmp r3, #0 - 8005114: d106 bne.n 8005124 + 80053aa: 687b ldr r3, [r7, #4] + 80053ac: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 80053b0: b2db uxtb r3, r3 + 80053b2: 2b00 cmp r3, #0 + 80053b4: d106 bne.n 80053c4 { /* Allocate lock resource and initialize it */ htim->Lock = HAL_UNLOCKED; - 8005116: 687b ldr r3, [r7, #4] - 8005118: 2200 movs r2, #0 - 800511a: f883 203c strb.w r2, [r3, #60] @ 0x3c + 80053b6: 687b ldr r3, [r7, #4] + 80053b8: 2200 movs r2, #0 + 80053ba: f883 203c strb.w r2, [r3, #60] @ 0x3c } /* Init the low level hardware : GPIO, CLOCK, NVIC */ htim->Base_MspInitCallback(htim); #else /* Init the low level hardware : GPIO, CLOCK, NVIC */ HAL_TIM_Base_MspInit(htim); - 800511e: 6878 ldr r0, [r7, #4] - 8005120: f7fd fc00 bl 8002924 + 80053be: 6878 ldr r0, [r7, #4] + 80053c0: f7fd fc24 bl 8002c0c #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } /* Set the TIM state */ htim->State = HAL_TIM_STATE_BUSY; - 8005124: 687b ldr r3, [r7, #4] - 8005126: 2202 movs r2, #2 - 8005128: f883 203d strb.w r2, [r3, #61] @ 0x3d + 80053c4: 687b ldr r3, [r7, #4] + 80053c6: 2202 movs r2, #2 + 80053c8: f883 203d strb.w r2, [r3, #61] @ 0x3d /* Set the Time Base configuration */ TIM_Base_SetConfig(htim->Instance, &htim->Init); - 800512c: 687b ldr r3, [r7, #4] - 800512e: 681a ldr r2, [r3, #0] - 8005130: 687b ldr r3, [r7, #4] - 8005132: 3304 adds r3, #4 - 8005134: 4619 mov r1, r3 - 8005136: 4610 mov r0, r2 - 8005138: f000 fa5c bl 80055f4 + 80053cc: 687b ldr r3, [r7, #4] + 80053ce: 681a ldr r2, [r3, #0] + 80053d0: 687b ldr r3, [r7, #4] + 80053d2: 3304 adds r3, #4 + 80053d4: 4619 mov r1, r3 + 80053d6: 4610 mov r0, r2 + 80053d8: f000 fa5c bl 8005894 /* Initialize the DMA burst operation state */ htim->DMABurstState = HAL_DMA_BURST_STATE_READY; - 800513c: 687b ldr r3, [r7, #4] - 800513e: 2201 movs r2, #1 - 8005140: f883 2046 strb.w r2, [r3, #70] @ 0x46 + 80053dc: 687b ldr r3, [r7, #4] + 80053de: 2201 movs r2, #1 + 80053e0: f883 2046 strb.w r2, [r3, #70] @ 0x46 /* Initialize the TIM channels state */ TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 8005144: 687b ldr r3, [r7, #4] - 8005146: 2201 movs r2, #1 - 8005148: f883 203e strb.w r2, [r3, #62] @ 0x3e - 800514c: 687b ldr r3, [r7, #4] - 800514e: 2201 movs r2, #1 - 8005150: f883 203f strb.w r2, [r3, #63] @ 0x3f - 8005154: 687b ldr r3, [r7, #4] - 8005156: 2201 movs r2, #1 - 8005158: f883 2040 strb.w r2, [r3, #64] @ 0x40 - 800515c: 687b ldr r3, [r7, #4] - 800515e: 2201 movs r2, #1 - 8005160: f883 2041 strb.w r2, [r3, #65] @ 0x41 + 80053e4: 687b ldr r3, [r7, #4] + 80053e6: 2201 movs r2, #1 + 80053e8: f883 203e strb.w r2, [r3, #62] @ 0x3e + 80053ec: 687b ldr r3, [r7, #4] + 80053ee: 2201 movs r2, #1 + 80053f0: f883 203f strb.w r2, [r3, #63] @ 0x3f + 80053f4: 687b ldr r3, [r7, #4] + 80053f6: 2201 movs r2, #1 + 80053f8: f883 2040 strb.w r2, [r3, #64] @ 0x40 + 80053fc: 687b ldr r3, [r7, #4] + 80053fe: 2201 movs r2, #1 + 8005400: f883 2041 strb.w r2, [r3, #65] @ 0x41 TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 8005164: 687b ldr r3, [r7, #4] - 8005166: 2201 movs r2, #1 - 8005168: f883 2042 strb.w r2, [r3, #66] @ 0x42 - 800516c: 687b ldr r3, [r7, #4] - 800516e: 2201 movs r2, #1 - 8005170: f883 2043 strb.w r2, [r3, #67] @ 0x43 - 8005174: 687b ldr r3, [r7, #4] - 8005176: 2201 movs r2, #1 - 8005178: f883 2044 strb.w r2, [r3, #68] @ 0x44 - 800517c: 687b ldr r3, [r7, #4] - 800517e: 2201 movs r2, #1 - 8005180: f883 2045 strb.w r2, [r3, #69] @ 0x45 + 8005404: 687b ldr r3, [r7, #4] + 8005406: 2201 movs r2, #1 + 8005408: f883 2042 strb.w r2, [r3, #66] @ 0x42 + 800540c: 687b ldr r3, [r7, #4] + 800540e: 2201 movs r2, #1 + 8005410: f883 2043 strb.w r2, [r3, #67] @ 0x43 + 8005414: 687b ldr r3, [r7, #4] + 8005416: 2201 movs r2, #1 + 8005418: f883 2044 strb.w r2, [r3, #68] @ 0x44 + 800541c: 687b ldr r3, [r7, #4] + 800541e: 2201 movs r2, #1 + 8005420: f883 2045 strb.w r2, [r3, #69] @ 0x45 /* Initialize the TIM state*/ htim->State = HAL_TIM_STATE_READY; - 8005184: 687b ldr r3, [r7, #4] - 8005186: 2201 movs r2, #1 - 8005188: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8005424: 687b ldr r3, [r7, #4] + 8005426: 2201 movs r2, #1 + 8005428: f883 203d strb.w r2, [r3, #61] @ 0x3d return HAL_OK; - 800518c: 2300 movs r3, #0 + 800542c: 2300 movs r3, #0 } - 800518e: 4618 mov r0, r3 - 8005190: 3708 adds r7, #8 - 8005192: 46bd mov sp, r7 - 8005194: bd80 pop {r7, pc} + 800542e: 4618 mov r0, r3 + 8005430: 3708 adds r7, #8 + 8005432: 46bd mov sp, r7 + 8005434: bd80 pop {r7, pc} ... -08005198 : +08005438 : * @brief Starts the TIM Base generation in interrupt mode. * @param htim TIM Base handle * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim) { - 8005198: b480 push {r7} - 800519a: b085 sub sp, #20 - 800519c: af00 add r7, sp, #0 - 800519e: 6078 str r0, [r7, #4] + 8005438: b480 push {r7} + 800543a: b085 sub sp, #20 + 800543c: af00 add r7, sp, #0 + 800543e: 6078 str r0, [r7, #4] /* Check the parameters */ assert_param(IS_TIM_INSTANCE(htim->Instance)); /* Check the TIM state */ if (htim->State != HAL_TIM_STATE_READY) - 80051a0: 687b ldr r3, [r7, #4] - 80051a2: f893 303d ldrb.w r3, [r3, #61] @ 0x3d - 80051a6: b2db uxtb r3, r3 - 80051a8: 2b01 cmp r3, #1 - 80051aa: d001 beq.n 80051b0 + 8005440: 687b ldr r3, [r7, #4] + 8005442: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 8005446: b2db uxtb r3, r3 + 8005448: 2b01 cmp r3, #1 + 800544a: d001 beq.n 8005450 { return HAL_ERROR; - 80051ac: 2301 movs r3, #1 - 80051ae: e03a b.n 8005226 + 800544c: 2301 movs r3, #1 + 800544e: e03a b.n 80054c6 } /* Set the TIM state */ htim->State = HAL_TIM_STATE_BUSY; - 80051b0: 687b ldr r3, [r7, #4] - 80051b2: 2202 movs r2, #2 - 80051b4: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8005450: 687b ldr r3, [r7, #4] + 8005452: 2202 movs r2, #2 + 8005454: f883 203d strb.w r2, [r3, #61] @ 0x3d /* Enable the TIM Update interrupt */ __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE); - 80051b8: 687b ldr r3, [r7, #4] - 80051ba: 681b ldr r3, [r3, #0] - 80051bc: 68da ldr r2, [r3, #12] - 80051be: 687b ldr r3, [r7, #4] - 80051c0: 681b ldr r3, [r3, #0] - 80051c2: f042 0201 orr.w r2, r2, #1 - 80051c6: 60da str r2, [r3, #12] + 8005458: 687b ldr r3, [r7, #4] + 800545a: 681b ldr r3, [r3, #0] + 800545c: 68da ldr r2, [r3, #12] + 800545e: 687b ldr r3, [r7, #4] + 8005460: 681b ldr r3, [r3, #0] + 8005462: f042 0201 orr.w r2, r2, #1 + 8005466: 60da str r2, [r3, #12] /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) - 80051c8: 687b ldr r3, [r7, #4] - 80051ca: 681b ldr r3, [r3, #0] - 80051cc: 4a18 ldr r2, [pc, #96] @ (8005230 ) - 80051ce: 4293 cmp r3, r2 - 80051d0: d00e beq.n 80051f0 - 80051d2: 687b ldr r3, [r7, #4] - 80051d4: 681b ldr r3, [r3, #0] - 80051d6: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 80051da: d009 beq.n 80051f0 - 80051dc: 687b ldr r3, [r7, #4] - 80051de: 681b ldr r3, [r3, #0] - 80051e0: 4a14 ldr r2, [pc, #80] @ (8005234 ) - 80051e2: 4293 cmp r3, r2 - 80051e4: d004 beq.n 80051f0 - 80051e6: 687b ldr r3, [r7, #4] - 80051e8: 681b ldr r3, [r3, #0] - 80051ea: 4a13 ldr r2, [pc, #76] @ (8005238 ) - 80051ec: 4293 cmp r3, r2 - 80051ee: d111 bne.n 8005214 + 8005468: 687b ldr r3, [r7, #4] + 800546a: 681b ldr r3, [r3, #0] + 800546c: 4a18 ldr r2, [pc, #96] @ (80054d0 ) + 800546e: 4293 cmp r3, r2 + 8005470: d00e beq.n 8005490 + 8005472: 687b ldr r3, [r7, #4] + 8005474: 681b ldr r3, [r3, #0] + 8005476: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 800547a: d009 beq.n 8005490 + 800547c: 687b ldr r3, [r7, #4] + 800547e: 681b ldr r3, [r3, #0] + 8005480: 4a14 ldr r2, [pc, #80] @ (80054d4 ) + 8005482: 4293 cmp r3, r2 + 8005484: d004 beq.n 8005490 + 8005486: 687b ldr r3, [r7, #4] + 8005488: 681b ldr r3, [r3, #0] + 800548a: 4a13 ldr r2, [pc, #76] @ (80054d8 ) + 800548c: 4293 cmp r3, r2 + 800548e: d111 bne.n 80054b4 { tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; - 80051f0: 687b ldr r3, [r7, #4] - 80051f2: 681b ldr r3, [r3, #0] - 80051f4: 689b ldr r3, [r3, #8] - 80051f6: f003 0307 and.w r3, r3, #7 - 80051fa: 60fb str r3, [r7, #12] + 8005490: 687b ldr r3, [r7, #4] + 8005492: 681b ldr r3, [r3, #0] + 8005494: 689b ldr r3, [r3, #8] + 8005496: f003 0307 and.w r3, r3, #7 + 800549a: 60fb str r3, [r7, #12] if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 80051fc: 68fb ldr r3, [r7, #12] - 80051fe: 2b06 cmp r3, #6 - 8005200: d010 beq.n 8005224 + 800549c: 68fb ldr r3, [r7, #12] + 800549e: 2b06 cmp r3, #6 + 80054a0: d010 beq.n 80054c4 { __HAL_TIM_ENABLE(htim); - 8005202: 687b ldr r3, [r7, #4] - 8005204: 681b ldr r3, [r3, #0] - 8005206: 681a ldr r2, [r3, #0] - 8005208: 687b ldr r3, [r7, #4] - 800520a: 681b ldr r3, [r3, #0] - 800520c: f042 0201 orr.w r2, r2, #1 - 8005210: 601a str r2, [r3, #0] + 80054a2: 687b ldr r3, [r7, #4] + 80054a4: 681b ldr r3, [r3, #0] + 80054a6: 681a ldr r2, [r3, #0] + 80054a8: 687b ldr r3, [r7, #4] + 80054aa: 681b ldr r3, [r3, #0] + 80054ac: f042 0201 orr.w r2, r2, #1 + 80054b0: 601a str r2, [r3, #0] if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 8005212: e007 b.n 8005224 + 80054b2: e007 b.n 80054c4 } } else { __HAL_TIM_ENABLE(htim); - 8005214: 687b ldr r3, [r7, #4] - 8005216: 681b ldr r3, [r3, #0] - 8005218: 681a ldr r2, [r3, #0] - 800521a: 687b ldr r3, [r7, #4] - 800521c: 681b ldr r3, [r3, #0] - 800521e: f042 0201 orr.w r2, r2, #1 - 8005222: 601a str r2, [r3, #0] + 80054b4: 687b ldr r3, [r7, #4] + 80054b6: 681b ldr r3, [r3, #0] + 80054b8: 681a ldr r2, [r3, #0] + 80054ba: 687b ldr r3, [r7, #4] + 80054bc: 681b ldr r3, [r3, #0] + 80054be: f042 0201 orr.w r2, r2, #1 + 80054c2: 601a str r2, [r3, #0] } /* Return function status */ return HAL_OK; - 8005224: 2300 movs r3, #0 + 80054c4: 2300 movs r3, #0 } - 8005226: 4618 mov r0, r3 - 8005228: 3714 adds r7, #20 - 800522a: 46bd mov sp, r7 - 800522c: bc80 pop {r7} - 800522e: 4770 bx lr - 8005230: 40012c00 .word 0x40012c00 - 8005234: 40000400 .word 0x40000400 - 8005238: 40000800 .word 0x40000800 + 80054c6: 4618 mov r0, r3 + 80054c8: 3714 adds r7, #20 + 80054ca: 46bd mov sp, r7 + 80054cc: bc80 pop {r7} + 80054ce: 4770 bx lr + 80054d0: 40012c00 .word 0x40012c00 + 80054d4: 40000400 .word 0x40000400 + 80054d8: 40000800 .word 0x40000800 -0800523c : +080054dc : * @brief This function handles TIM interrupts requests. * @param htim TIM handle * @retval None */ void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim) { - 800523c: b580 push {r7, lr} - 800523e: b084 sub sp, #16 - 8005240: af00 add r7, sp, #0 - 8005242: 6078 str r0, [r7, #4] + 80054dc: b580 push {r7, lr} + 80054de: b084 sub sp, #16 + 80054e0: af00 add r7, sp, #0 + 80054e2: 6078 str r0, [r7, #4] uint32_t itsource = htim->Instance->DIER; - 8005244: 687b ldr r3, [r7, #4] - 8005246: 681b ldr r3, [r3, #0] - 8005248: 68db ldr r3, [r3, #12] - 800524a: 60fb str r3, [r7, #12] + 80054e4: 687b ldr r3, [r7, #4] + 80054e6: 681b ldr r3, [r3, #0] + 80054e8: 68db ldr r3, [r3, #12] + 80054ea: 60fb str r3, [r7, #12] uint32_t itflag = htim->Instance->SR; - 800524c: 687b ldr r3, [r7, #4] - 800524e: 681b ldr r3, [r3, #0] - 8005250: 691b ldr r3, [r3, #16] - 8005252: 60bb str r3, [r7, #8] + 80054ec: 687b ldr r3, [r7, #4] + 80054ee: 681b ldr r3, [r3, #0] + 80054f0: 691b ldr r3, [r3, #16] + 80054f2: 60bb str r3, [r7, #8] /* Capture compare 1 event */ if ((itflag & (TIM_FLAG_CC1)) == (TIM_FLAG_CC1)) - 8005254: 68bb ldr r3, [r7, #8] - 8005256: f003 0302 and.w r3, r3, #2 - 800525a: 2b00 cmp r3, #0 - 800525c: d020 beq.n 80052a0 + 80054f4: 68bb ldr r3, [r7, #8] + 80054f6: f003 0302 and.w r3, r3, #2 + 80054fa: 2b00 cmp r3, #0 + 80054fc: d020 beq.n 8005540 { if ((itsource & (TIM_IT_CC1)) == (TIM_IT_CC1)) - 800525e: 68fb ldr r3, [r7, #12] - 8005260: f003 0302 and.w r3, r3, #2 - 8005264: 2b00 cmp r3, #0 - 8005266: d01b beq.n 80052a0 + 80054fe: 68fb ldr r3, [r7, #12] + 8005500: f003 0302 and.w r3, r3, #2 + 8005504: 2b00 cmp r3, #0 + 8005506: d01b beq.n 8005540 { { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC1); - 8005268: 687b ldr r3, [r7, #4] - 800526a: 681b ldr r3, [r3, #0] - 800526c: f06f 0202 mvn.w r2, #2 - 8005270: 611a str r2, [r3, #16] + 8005508: 687b ldr r3, [r7, #4] + 800550a: 681b ldr r3, [r3, #0] + 800550c: f06f 0202 mvn.w r2, #2 + 8005510: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; - 8005272: 687b ldr r3, [r7, #4] - 8005274: 2201 movs r2, #1 - 8005276: 771a strb r2, [r3, #28] + 8005512: 687b ldr r3, [r7, #4] + 8005514: 2201 movs r2, #1 + 8005516: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U) - 8005278: 687b ldr r3, [r7, #4] - 800527a: 681b ldr r3, [r3, #0] - 800527c: 699b ldr r3, [r3, #24] - 800527e: f003 0303 and.w r3, r3, #3 - 8005282: 2b00 cmp r3, #0 - 8005284: d003 beq.n 800528e + 8005518: 687b ldr r3, [r7, #4] + 800551a: 681b ldr r3, [r3, #0] + 800551c: 699b ldr r3, [r3, #24] + 800551e: f003 0303 and.w r3, r3, #3 + 8005522: 2b00 cmp r3, #0 + 8005524: d003 beq.n 800552e { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 8005286: 6878 ldr r0, [r7, #4] - 8005288: f000 f998 bl 80055bc - 800528c: e005 b.n 800529a + 8005526: 6878 ldr r0, [r7, #4] + 8005528: f000 f998 bl 800585c + 800552c: e005 b.n 800553a { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 800528e: 6878 ldr r0, [r7, #4] - 8005290: f000 f98b bl 80055aa + 800552e: 6878 ldr r0, [r7, #4] + 8005530: f000 f98b bl 800584a HAL_TIM_PWM_PulseFinishedCallback(htim); - 8005294: 6878 ldr r0, [r7, #4] - 8005296: f000 f99a bl 80055ce + 8005534: 6878 ldr r0, [r7, #4] + 8005536: f000 f99a bl 800586e #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 800529a: 687b ldr r3, [r7, #4] - 800529c: 2200 movs r2, #0 - 800529e: 771a strb r2, [r3, #28] + 800553a: 687b ldr r3, [r7, #4] + 800553c: 2200 movs r2, #0 + 800553e: 771a strb r2, [r3, #28] } } } /* Capture compare 2 event */ if ((itflag & (TIM_FLAG_CC2)) == (TIM_FLAG_CC2)) - 80052a0: 68bb ldr r3, [r7, #8] - 80052a2: f003 0304 and.w r3, r3, #4 - 80052a6: 2b00 cmp r3, #0 - 80052a8: d020 beq.n 80052ec + 8005540: 68bb ldr r3, [r7, #8] + 8005542: f003 0304 and.w r3, r3, #4 + 8005546: 2b00 cmp r3, #0 + 8005548: d020 beq.n 800558c { if ((itsource & (TIM_IT_CC2)) == (TIM_IT_CC2)) - 80052aa: 68fb ldr r3, [r7, #12] - 80052ac: f003 0304 and.w r3, r3, #4 - 80052b0: 2b00 cmp r3, #0 - 80052b2: d01b beq.n 80052ec + 800554a: 68fb ldr r3, [r7, #12] + 800554c: f003 0304 and.w r3, r3, #4 + 8005550: 2b00 cmp r3, #0 + 8005552: d01b beq.n 800558c { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC2); - 80052b4: 687b ldr r3, [r7, #4] - 80052b6: 681b ldr r3, [r3, #0] - 80052b8: f06f 0204 mvn.w r2, #4 - 80052bc: 611a str r2, [r3, #16] + 8005554: 687b ldr r3, [r7, #4] + 8005556: 681b ldr r3, [r3, #0] + 8005558: f06f 0204 mvn.w r2, #4 + 800555c: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; - 80052be: 687b ldr r3, [r7, #4] - 80052c0: 2202 movs r2, #2 - 80052c2: 771a strb r2, [r3, #28] + 800555e: 687b ldr r3, [r7, #4] + 8005560: 2202 movs r2, #2 + 8005562: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U) - 80052c4: 687b ldr r3, [r7, #4] - 80052c6: 681b ldr r3, [r3, #0] - 80052c8: 699b ldr r3, [r3, #24] - 80052ca: f403 7340 and.w r3, r3, #768 @ 0x300 - 80052ce: 2b00 cmp r3, #0 - 80052d0: d003 beq.n 80052da + 8005564: 687b ldr r3, [r7, #4] + 8005566: 681b ldr r3, [r3, #0] + 8005568: 699b ldr r3, [r3, #24] + 800556a: f403 7340 and.w r3, r3, #768 @ 0x300 + 800556e: 2b00 cmp r3, #0 + 8005570: d003 beq.n 800557a { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 80052d2: 6878 ldr r0, [r7, #4] - 80052d4: f000 f972 bl 80055bc - 80052d8: e005 b.n 80052e6 + 8005572: 6878 ldr r0, [r7, #4] + 8005574: f000 f972 bl 800585c + 8005578: e005 b.n 8005586 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 80052da: 6878 ldr r0, [r7, #4] - 80052dc: f000 f965 bl 80055aa + 800557a: 6878 ldr r0, [r7, #4] + 800557c: f000 f965 bl 800584a HAL_TIM_PWM_PulseFinishedCallback(htim); - 80052e0: 6878 ldr r0, [r7, #4] - 80052e2: f000 f974 bl 80055ce + 8005580: 6878 ldr r0, [r7, #4] + 8005582: f000 f974 bl 800586e #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 80052e6: 687b ldr r3, [r7, #4] - 80052e8: 2200 movs r2, #0 - 80052ea: 771a strb r2, [r3, #28] + 8005586: 687b ldr r3, [r7, #4] + 8005588: 2200 movs r2, #0 + 800558a: 771a strb r2, [r3, #28] } } /* Capture compare 3 event */ if ((itflag & (TIM_FLAG_CC3)) == (TIM_FLAG_CC3)) - 80052ec: 68bb ldr r3, [r7, #8] - 80052ee: f003 0308 and.w r3, r3, #8 - 80052f2: 2b00 cmp r3, #0 - 80052f4: d020 beq.n 8005338 + 800558c: 68bb ldr r3, [r7, #8] + 800558e: f003 0308 and.w r3, r3, #8 + 8005592: 2b00 cmp r3, #0 + 8005594: d020 beq.n 80055d8 { if ((itsource & (TIM_IT_CC3)) == (TIM_IT_CC3)) - 80052f6: 68fb ldr r3, [r7, #12] - 80052f8: f003 0308 and.w r3, r3, #8 - 80052fc: 2b00 cmp r3, #0 - 80052fe: d01b beq.n 8005338 + 8005596: 68fb ldr r3, [r7, #12] + 8005598: f003 0308 and.w r3, r3, #8 + 800559c: 2b00 cmp r3, #0 + 800559e: d01b beq.n 80055d8 { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC3); - 8005300: 687b ldr r3, [r7, #4] - 8005302: 681b ldr r3, [r3, #0] - 8005304: f06f 0208 mvn.w r2, #8 - 8005308: 611a str r2, [r3, #16] + 80055a0: 687b ldr r3, [r7, #4] + 80055a2: 681b ldr r3, [r3, #0] + 80055a4: f06f 0208 mvn.w r2, #8 + 80055a8: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; - 800530a: 687b ldr r3, [r7, #4] - 800530c: 2204 movs r2, #4 - 800530e: 771a strb r2, [r3, #28] + 80055aa: 687b ldr r3, [r7, #4] + 80055ac: 2204 movs r2, #4 + 80055ae: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U) - 8005310: 687b ldr r3, [r7, #4] - 8005312: 681b ldr r3, [r3, #0] - 8005314: 69db ldr r3, [r3, #28] - 8005316: f003 0303 and.w r3, r3, #3 - 800531a: 2b00 cmp r3, #0 - 800531c: d003 beq.n 8005326 + 80055b0: 687b ldr r3, [r7, #4] + 80055b2: 681b ldr r3, [r3, #0] + 80055b4: 69db ldr r3, [r3, #28] + 80055b6: f003 0303 and.w r3, r3, #3 + 80055ba: 2b00 cmp r3, #0 + 80055bc: d003 beq.n 80055c6 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 800531e: 6878 ldr r0, [r7, #4] - 8005320: f000 f94c bl 80055bc - 8005324: e005 b.n 8005332 + 80055be: 6878 ldr r0, [r7, #4] + 80055c0: f000 f94c bl 800585c + 80055c4: e005 b.n 80055d2 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 8005326: 6878 ldr r0, [r7, #4] - 8005328: f000 f93f bl 80055aa + 80055c6: 6878 ldr r0, [r7, #4] + 80055c8: f000 f93f bl 800584a HAL_TIM_PWM_PulseFinishedCallback(htim); - 800532c: 6878 ldr r0, [r7, #4] - 800532e: f000 f94e bl 80055ce + 80055cc: 6878 ldr r0, [r7, #4] + 80055ce: f000 f94e bl 800586e #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 8005332: 687b ldr r3, [r7, #4] - 8005334: 2200 movs r2, #0 - 8005336: 771a strb r2, [r3, #28] + 80055d2: 687b ldr r3, [r7, #4] + 80055d4: 2200 movs r2, #0 + 80055d6: 771a strb r2, [r3, #28] } } /* Capture compare 4 event */ if ((itflag & (TIM_FLAG_CC4)) == (TIM_FLAG_CC4)) - 8005338: 68bb ldr r3, [r7, #8] - 800533a: f003 0310 and.w r3, r3, #16 - 800533e: 2b00 cmp r3, #0 - 8005340: d020 beq.n 8005384 + 80055d8: 68bb ldr r3, [r7, #8] + 80055da: f003 0310 and.w r3, r3, #16 + 80055de: 2b00 cmp r3, #0 + 80055e0: d020 beq.n 8005624 { if ((itsource & (TIM_IT_CC4)) == (TIM_IT_CC4)) - 8005342: 68fb ldr r3, [r7, #12] - 8005344: f003 0310 and.w r3, r3, #16 - 8005348: 2b00 cmp r3, #0 - 800534a: d01b beq.n 8005384 + 80055e2: 68fb ldr r3, [r7, #12] + 80055e4: f003 0310 and.w r3, r3, #16 + 80055e8: 2b00 cmp r3, #0 + 80055ea: d01b beq.n 8005624 { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC4); - 800534c: 687b ldr r3, [r7, #4] - 800534e: 681b ldr r3, [r3, #0] - 8005350: f06f 0210 mvn.w r2, #16 - 8005354: 611a str r2, [r3, #16] + 80055ec: 687b ldr r3, [r7, #4] + 80055ee: 681b ldr r3, [r3, #0] + 80055f0: f06f 0210 mvn.w r2, #16 + 80055f4: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; - 8005356: 687b ldr r3, [r7, #4] - 8005358: 2208 movs r2, #8 - 800535a: 771a strb r2, [r3, #28] + 80055f6: 687b ldr r3, [r7, #4] + 80055f8: 2208 movs r2, #8 + 80055fa: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U) - 800535c: 687b ldr r3, [r7, #4] - 800535e: 681b ldr r3, [r3, #0] - 8005360: 69db ldr r3, [r3, #28] - 8005362: f403 7340 and.w r3, r3, #768 @ 0x300 - 8005366: 2b00 cmp r3, #0 - 8005368: d003 beq.n 8005372 + 80055fc: 687b ldr r3, [r7, #4] + 80055fe: 681b ldr r3, [r3, #0] + 8005600: 69db ldr r3, [r3, #28] + 8005602: f403 7340 and.w r3, r3, #768 @ 0x300 + 8005606: 2b00 cmp r3, #0 + 8005608: d003 beq.n 8005612 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 800536a: 6878 ldr r0, [r7, #4] - 800536c: f000 f926 bl 80055bc - 8005370: e005 b.n 800537e + 800560a: 6878 ldr r0, [r7, #4] + 800560c: f000 f926 bl 800585c + 8005610: e005 b.n 800561e { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 8005372: 6878 ldr r0, [r7, #4] - 8005374: f000 f919 bl 80055aa + 8005612: 6878 ldr r0, [r7, #4] + 8005614: f000 f919 bl 800584a HAL_TIM_PWM_PulseFinishedCallback(htim); - 8005378: 6878 ldr r0, [r7, #4] - 800537a: f000 f928 bl 80055ce + 8005618: 6878 ldr r0, [r7, #4] + 800561a: f000 f928 bl 800586e #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 800537e: 687b ldr r3, [r7, #4] - 8005380: 2200 movs r2, #0 - 8005382: 771a strb r2, [r3, #28] + 800561e: 687b ldr r3, [r7, #4] + 8005620: 2200 movs r2, #0 + 8005622: 771a strb r2, [r3, #28] } } /* TIM Update event */ if ((itflag & (TIM_FLAG_UPDATE)) == (TIM_FLAG_UPDATE)) - 8005384: 68bb ldr r3, [r7, #8] - 8005386: f003 0301 and.w r3, r3, #1 - 800538a: 2b00 cmp r3, #0 - 800538c: d00c beq.n 80053a8 + 8005624: 68bb ldr r3, [r7, #8] + 8005626: f003 0301 and.w r3, r3, #1 + 800562a: 2b00 cmp r3, #0 + 800562c: d00c beq.n 8005648 { if ((itsource & (TIM_IT_UPDATE)) == (TIM_IT_UPDATE)) - 800538e: 68fb ldr r3, [r7, #12] - 8005390: f003 0301 and.w r3, r3, #1 - 8005394: 2b00 cmp r3, #0 - 8005396: d007 beq.n 80053a8 + 800562e: 68fb ldr r3, [r7, #12] + 8005630: f003 0301 and.w r3, r3, #1 + 8005634: 2b00 cmp r3, #0 + 8005636: d007 beq.n 8005648 { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_UPDATE); - 8005398: 687b ldr r3, [r7, #4] - 800539a: 681b ldr r3, [r3, #0] - 800539c: f06f 0201 mvn.w r2, #1 - 80053a0: 611a str r2, [r3, #16] + 8005638: 687b ldr r3, [r7, #4] + 800563a: 681b ldr r3, [r3, #0] + 800563c: f06f 0201 mvn.w r2, #1 + 8005640: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->PeriodElapsedCallback(htim); #else HAL_TIM_PeriodElapsedCallback(htim); - 80053a2: 6878 ldr r0, [r7, #4] - 80053a4: f7fd f8e6 bl 8002574 + 8005642: 6878 ldr r0, [r7, #4] + 8005644: f7fd f90a bl 800285c #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM Break input event */ if ((itflag & (TIM_FLAG_BREAK)) == (TIM_FLAG_BREAK)) - 80053a8: 68bb ldr r3, [r7, #8] - 80053aa: f003 0380 and.w r3, r3, #128 @ 0x80 - 80053ae: 2b00 cmp r3, #0 - 80053b0: d00c beq.n 80053cc + 8005648: 68bb ldr r3, [r7, #8] + 800564a: f003 0380 and.w r3, r3, #128 @ 0x80 + 800564e: 2b00 cmp r3, #0 + 8005650: d00c beq.n 800566c { if ((itsource & (TIM_IT_BREAK)) == (TIM_IT_BREAK)) - 80053b2: 68fb ldr r3, [r7, #12] - 80053b4: f003 0380 and.w r3, r3, #128 @ 0x80 - 80053b8: 2b00 cmp r3, #0 - 80053ba: d007 beq.n 80053cc + 8005652: 68fb ldr r3, [r7, #12] + 8005654: f003 0380 and.w r3, r3, #128 @ 0x80 + 8005658: 2b00 cmp r3, #0 + 800565a: d007 beq.n 800566c { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_BREAK); - 80053bc: 687b ldr r3, [r7, #4] - 80053be: 681b ldr r3, [r3, #0] - 80053c0: f06f 0280 mvn.w r2, #128 @ 0x80 - 80053c4: 611a str r2, [r3, #16] + 800565c: 687b ldr r3, [r7, #4] + 800565e: 681b ldr r3, [r3, #0] + 8005660: f06f 0280 mvn.w r2, #128 @ 0x80 + 8005664: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->BreakCallback(htim); #else HAL_TIMEx_BreakCallback(htim); - 80053c6: 6878 ldr r0, [r7, #4] - 80053c8: f000 fa7f bl 80058ca + 8005666: 6878 ldr r0, [r7, #4] + 8005668: f000 fa7f bl 8005b6a #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM Trigger detection event */ if ((itflag & (TIM_FLAG_TRIGGER)) == (TIM_FLAG_TRIGGER)) - 80053cc: 68bb ldr r3, [r7, #8] - 80053ce: f003 0340 and.w r3, r3, #64 @ 0x40 - 80053d2: 2b00 cmp r3, #0 - 80053d4: d00c beq.n 80053f0 + 800566c: 68bb ldr r3, [r7, #8] + 800566e: f003 0340 and.w r3, r3, #64 @ 0x40 + 8005672: 2b00 cmp r3, #0 + 8005674: d00c beq.n 8005690 { if ((itsource & (TIM_IT_TRIGGER)) == (TIM_IT_TRIGGER)) - 80053d6: 68fb ldr r3, [r7, #12] - 80053d8: f003 0340 and.w r3, r3, #64 @ 0x40 - 80053dc: 2b00 cmp r3, #0 - 80053de: d007 beq.n 80053f0 + 8005676: 68fb ldr r3, [r7, #12] + 8005678: f003 0340 and.w r3, r3, #64 @ 0x40 + 800567c: 2b00 cmp r3, #0 + 800567e: d007 beq.n 8005690 { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_TRIGGER); - 80053e0: 687b ldr r3, [r7, #4] - 80053e2: 681b ldr r3, [r3, #0] - 80053e4: f06f 0240 mvn.w r2, #64 @ 0x40 - 80053e8: 611a str r2, [r3, #16] + 8005680: 687b ldr r3, [r7, #4] + 8005682: 681b ldr r3, [r3, #0] + 8005684: f06f 0240 mvn.w r2, #64 @ 0x40 + 8005688: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->TriggerCallback(htim); #else HAL_TIM_TriggerCallback(htim); - 80053ea: 6878 ldr r0, [r7, #4] - 80053ec: f000 f8f8 bl 80055e0 + 800568a: 6878 ldr r0, [r7, #4] + 800568c: f000 f8f8 bl 8005880 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM commutation event */ if ((itflag & (TIM_FLAG_COM)) == (TIM_FLAG_COM)) - 80053f0: 68bb ldr r3, [r7, #8] - 80053f2: f003 0320 and.w r3, r3, #32 - 80053f6: 2b00 cmp r3, #0 - 80053f8: d00c beq.n 8005414 + 8005690: 68bb ldr r3, [r7, #8] + 8005692: f003 0320 and.w r3, r3, #32 + 8005696: 2b00 cmp r3, #0 + 8005698: d00c beq.n 80056b4 { if ((itsource & (TIM_IT_COM)) == (TIM_IT_COM)) - 80053fa: 68fb ldr r3, [r7, #12] - 80053fc: f003 0320 and.w r3, r3, #32 - 8005400: 2b00 cmp r3, #0 - 8005402: d007 beq.n 8005414 + 800569a: 68fb ldr r3, [r7, #12] + 800569c: f003 0320 and.w r3, r3, #32 + 80056a0: 2b00 cmp r3, #0 + 80056a2: d007 beq.n 80056b4 { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_COM); - 8005404: 687b ldr r3, [r7, #4] - 8005406: 681b ldr r3, [r3, #0] - 8005408: f06f 0220 mvn.w r2, #32 - 800540c: 611a str r2, [r3, #16] + 80056a4: 687b ldr r3, [r7, #4] + 80056a6: 681b ldr r3, [r3, #0] + 80056a8: f06f 0220 mvn.w r2, #32 + 80056ac: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->CommutationCallback(htim); #else HAL_TIMEx_CommutCallback(htim); - 800540e: 6878 ldr r0, [r7, #4] - 8005410: f000 fa52 bl 80058b8 + 80056ae: 6878 ldr r0, [r7, #4] + 80056b0: f000 fa52 bl 8005b58 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } } - 8005414: bf00 nop - 8005416: 3710 adds r7, #16 - 8005418: 46bd mov sp, r7 - 800541a: bd80 pop {r7, pc} + 80056b4: bf00 nop + 80056b6: 3710 adds r7, #16 + 80056b8: 46bd mov sp, r7 + 80056ba: bd80 pop {r7, pc} -0800541c : +080056bc : * @param sClockSourceConfig pointer to a TIM_ClockConfigTypeDef structure that * contains the clock source information for the TIM peripheral. * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, const TIM_ClockConfigTypeDef *sClockSourceConfig) { - 800541c: b580 push {r7, lr} - 800541e: b084 sub sp, #16 - 8005420: af00 add r7, sp, #0 - 8005422: 6078 str r0, [r7, #4] - 8005424: 6039 str r1, [r7, #0] + 80056bc: b580 push {r7, lr} + 80056be: b084 sub sp, #16 + 80056c0: af00 add r7, sp, #0 + 80056c2: 6078 str r0, [r7, #4] + 80056c4: 6039 str r1, [r7, #0] HAL_StatusTypeDef status = HAL_OK; - 8005426: 2300 movs r3, #0 - 8005428: 73fb strb r3, [r7, #15] + 80056c6: 2300 movs r3, #0 + 80056c8: 73fb strb r3, [r7, #15] uint32_t tmpsmcr; /* Process Locked */ __HAL_LOCK(htim); - 800542a: 687b ldr r3, [r7, #4] - 800542c: f893 303c ldrb.w r3, [r3, #60] @ 0x3c - 8005430: 2b01 cmp r3, #1 - 8005432: d101 bne.n 8005438 - 8005434: 2302 movs r3, #2 - 8005436: e0b4 b.n 80055a2 - 8005438: 687b ldr r3, [r7, #4] - 800543a: 2201 movs r2, #1 - 800543c: f883 203c strb.w r2, [r3, #60] @ 0x3c + 80056ca: 687b ldr r3, [r7, #4] + 80056cc: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 80056d0: 2b01 cmp r3, #1 + 80056d2: d101 bne.n 80056d8 + 80056d4: 2302 movs r3, #2 + 80056d6: e0b4 b.n 8005842 + 80056d8: 687b ldr r3, [r7, #4] + 80056da: 2201 movs r2, #1 + 80056dc: f883 203c strb.w r2, [r3, #60] @ 0x3c htim->State = HAL_TIM_STATE_BUSY; - 8005440: 687b ldr r3, [r7, #4] - 8005442: 2202 movs r2, #2 - 8005444: f883 203d strb.w r2, [r3, #61] @ 0x3d + 80056e0: 687b ldr r3, [r7, #4] + 80056e2: 2202 movs r2, #2 + 80056e4: f883 203d strb.w r2, [r3, #61] @ 0x3d /* Check the parameters */ assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource)); /* Reset the SMS, TS, ECE, ETPS and ETRF bits */ tmpsmcr = htim->Instance->SMCR; - 8005448: 687b ldr r3, [r7, #4] - 800544a: 681b ldr r3, [r3, #0] - 800544c: 689b ldr r3, [r3, #8] - 800544e: 60bb str r3, [r7, #8] + 80056e8: 687b ldr r3, [r7, #4] + 80056ea: 681b ldr r3, [r3, #0] + 80056ec: 689b ldr r3, [r3, #8] + 80056ee: 60bb str r3, [r7, #8] tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); - 8005450: 68bb ldr r3, [r7, #8] - 8005452: f023 0377 bic.w r3, r3, #119 @ 0x77 - 8005456: 60bb str r3, [r7, #8] + 80056f0: 68bb ldr r3, [r7, #8] + 80056f2: f023 0377 bic.w r3, r3, #119 @ 0x77 + 80056f6: 60bb str r3, [r7, #8] tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); - 8005458: 68bb ldr r3, [r7, #8] - 800545a: f423 437f bic.w r3, r3, #65280 @ 0xff00 - 800545e: 60bb str r3, [r7, #8] + 80056f8: 68bb ldr r3, [r7, #8] + 80056fa: f423 437f bic.w r3, r3, #65280 @ 0xff00 + 80056fe: 60bb str r3, [r7, #8] htim->Instance->SMCR = tmpsmcr; - 8005460: 687b ldr r3, [r7, #4] - 8005462: 681b ldr r3, [r3, #0] - 8005464: 68ba ldr r2, [r7, #8] - 8005466: 609a str r2, [r3, #8] + 8005700: 687b ldr r3, [r7, #4] + 8005702: 681b ldr r3, [r3, #0] + 8005704: 68ba ldr r2, [r7, #8] + 8005706: 609a str r2, [r3, #8] switch (sClockSourceConfig->ClockSource) - 8005468: 683b ldr r3, [r7, #0] - 800546a: 681b ldr r3, [r3, #0] - 800546c: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 - 8005470: d03e beq.n 80054f0 - 8005472: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 - 8005476: f200 8087 bhi.w 8005588 - 800547a: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 800547e: f000 8086 beq.w 800558e - 8005482: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 8005486: d87f bhi.n 8005588 - 8005488: 2b70 cmp r3, #112 @ 0x70 - 800548a: d01a beq.n 80054c2 - 800548c: 2b70 cmp r3, #112 @ 0x70 - 800548e: d87b bhi.n 8005588 - 8005490: 2b60 cmp r3, #96 @ 0x60 - 8005492: d050 beq.n 8005536 - 8005494: 2b60 cmp r3, #96 @ 0x60 - 8005496: d877 bhi.n 8005588 - 8005498: 2b50 cmp r3, #80 @ 0x50 - 800549a: d03c beq.n 8005516 - 800549c: 2b50 cmp r3, #80 @ 0x50 - 800549e: d873 bhi.n 8005588 - 80054a0: 2b40 cmp r3, #64 @ 0x40 - 80054a2: d058 beq.n 8005556 - 80054a4: 2b40 cmp r3, #64 @ 0x40 - 80054a6: d86f bhi.n 8005588 - 80054a8: 2b30 cmp r3, #48 @ 0x30 - 80054aa: d064 beq.n 8005576 - 80054ac: 2b30 cmp r3, #48 @ 0x30 - 80054ae: d86b bhi.n 8005588 - 80054b0: 2b20 cmp r3, #32 - 80054b2: d060 beq.n 8005576 - 80054b4: 2b20 cmp r3, #32 - 80054b6: d867 bhi.n 8005588 - 80054b8: 2b00 cmp r3, #0 - 80054ba: d05c beq.n 8005576 - 80054bc: 2b10 cmp r3, #16 - 80054be: d05a beq.n 8005576 - 80054c0: e062 b.n 8005588 + 8005708: 683b ldr r3, [r7, #0] + 800570a: 681b ldr r3, [r3, #0] + 800570c: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 8005710: d03e beq.n 8005790 + 8005712: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 8005716: f200 8087 bhi.w 8005828 + 800571a: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 800571e: f000 8086 beq.w 800582e + 8005722: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 8005726: d87f bhi.n 8005828 + 8005728: 2b70 cmp r3, #112 @ 0x70 + 800572a: d01a beq.n 8005762 + 800572c: 2b70 cmp r3, #112 @ 0x70 + 800572e: d87b bhi.n 8005828 + 8005730: 2b60 cmp r3, #96 @ 0x60 + 8005732: d050 beq.n 80057d6 + 8005734: 2b60 cmp r3, #96 @ 0x60 + 8005736: d877 bhi.n 8005828 + 8005738: 2b50 cmp r3, #80 @ 0x50 + 800573a: d03c beq.n 80057b6 + 800573c: 2b50 cmp r3, #80 @ 0x50 + 800573e: d873 bhi.n 8005828 + 8005740: 2b40 cmp r3, #64 @ 0x40 + 8005742: d058 beq.n 80057f6 + 8005744: 2b40 cmp r3, #64 @ 0x40 + 8005746: d86f bhi.n 8005828 + 8005748: 2b30 cmp r3, #48 @ 0x30 + 800574a: d064 beq.n 8005816 + 800574c: 2b30 cmp r3, #48 @ 0x30 + 800574e: d86b bhi.n 8005828 + 8005750: 2b20 cmp r3, #32 + 8005752: d060 beq.n 8005816 + 8005754: 2b20 cmp r3, #32 + 8005756: d867 bhi.n 8005828 + 8005758: 2b00 cmp r3, #0 + 800575a: d05c beq.n 8005816 + 800575c: 2b10 cmp r3, #16 + 800575e: d05a beq.n 8005816 + 8005760: e062 b.n 8005828 assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); /* Configure the ETR Clock source */ TIM_ETR_SetConfig(htim->Instance, - 80054c2: 687b ldr r3, [r7, #4] - 80054c4: 6818 ldr r0, [r3, #0] + 8005762: 687b ldr r3, [r7, #4] + 8005764: 6818 ldr r0, [r3, #0] sClockSourceConfig->ClockPrescaler, - 80054c6: 683b ldr r3, [r7, #0] - 80054c8: 6899 ldr r1, [r3, #8] + 8005766: 683b ldr r3, [r7, #0] + 8005768: 6899 ldr r1, [r3, #8] sClockSourceConfig->ClockPolarity, - 80054ca: 683b ldr r3, [r7, #0] - 80054cc: 685a ldr r2, [r3, #4] + 800576a: 683b ldr r3, [r7, #0] + 800576c: 685a ldr r2, [r3, #4] sClockSourceConfig->ClockFilter); - 80054ce: 683b ldr r3, [r7, #0] - 80054d0: 68db ldr r3, [r3, #12] + 800576e: 683b ldr r3, [r7, #0] + 8005770: 68db ldr r3, [r3, #12] TIM_ETR_SetConfig(htim->Instance, - 80054d2: f000 f974 bl 80057be + 8005772: f000 f974 bl 8005a5e /* Select the External clock mode1 and the ETRF trigger */ tmpsmcr = htim->Instance->SMCR; - 80054d6: 687b ldr r3, [r7, #4] - 80054d8: 681b ldr r3, [r3, #0] - 80054da: 689b ldr r3, [r3, #8] - 80054dc: 60bb str r3, [r7, #8] + 8005776: 687b ldr r3, [r7, #4] + 8005778: 681b ldr r3, [r3, #0] + 800577a: 689b ldr r3, [r3, #8] + 800577c: 60bb str r3, [r7, #8] tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); - 80054de: 68bb ldr r3, [r7, #8] - 80054e0: f043 0377 orr.w r3, r3, #119 @ 0x77 - 80054e4: 60bb str r3, [r7, #8] + 800577e: 68bb ldr r3, [r7, #8] + 8005780: f043 0377 orr.w r3, r3, #119 @ 0x77 + 8005784: 60bb str r3, [r7, #8] /* Write to TIMx SMCR */ htim->Instance->SMCR = tmpsmcr; - 80054e6: 687b ldr r3, [r7, #4] - 80054e8: 681b ldr r3, [r3, #0] - 80054ea: 68ba ldr r2, [r7, #8] - 80054ec: 609a str r2, [r3, #8] + 8005786: 687b ldr r3, [r7, #4] + 8005788: 681b ldr r3, [r3, #0] + 800578a: 68ba ldr r2, [r7, #8] + 800578c: 609a str r2, [r3, #8] break; - 80054ee: e04f b.n 8005590 + 800578e: e04f b.n 8005830 assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); /* Configure the ETR Clock source */ TIM_ETR_SetConfig(htim->Instance, - 80054f0: 687b ldr r3, [r7, #4] - 80054f2: 6818 ldr r0, [r3, #0] + 8005790: 687b ldr r3, [r7, #4] + 8005792: 6818 ldr r0, [r3, #0] sClockSourceConfig->ClockPrescaler, - 80054f4: 683b ldr r3, [r7, #0] - 80054f6: 6899 ldr r1, [r3, #8] + 8005794: 683b ldr r3, [r7, #0] + 8005796: 6899 ldr r1, [r3, #8] sClockSourceConfig->ClockPolarity, - 80054f8: 683b ldr r3, [r7, #0] - 80054fa: 685a ldr r2, [r3, #4] + 8005798: 683b ldr r3, [r7, #0] + 800579a: 685a ldr r2, [r3, #4] sClockSourceConfig->ClockFilter); - 80054fc: 683b ldr r3, [r7, #0] - 80054fe: 68db ldr r3, [r3, #12] + 800579c: 683b ldr r3, [r7, #0] + 800579e: 68db ldr r3, [r3, #12] TIM_ETR_SetConfig(htim->Instance, - 8005500: f000 f95d bl 80057be + 80057a0: f000 f95d bl 8005a5e /* Enable the External clock mode2 */ htim->Instance->SMCR |= TIM_SMCR_ECE; - 8005504: 687b ldr r3, [r7, #4] - 8005506: 681b ldr r3, [r3, #0] - 8005508: 689a ldr r2, [r3, #8] - 800550a: 687b ldr r3, [r7, #4] - 800550c: 681b ldr r3, [r3, #0] - 800550e: f442 4280 orr.w r2, r2, #16384 @ 0x4000 - 8005512: 609a str r2, [r3, #8] + 80057a4: 687b ldr r3, [r7, #4] + 80057a6: 681b ldr r3, [r3, #0] + 80057a8: 689a ldr r2, [r3, #8] + 80057aa: 687b ldr r3, [r7, #4] + 80057ac: 681b ldr r3, [r3, #0] + 80057ae: f442 4280 orr.w r2, r2, #16384 @ 0x4000 + 80057b2: 609a str r2, [r3, #8] break; - 8005514: e03c b.n 8005590 + 80057b4: e03c b.n 8005830 /* Check TI1 input conditioning related parameters */ assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); TIM_TI1_ConfigInputStage(htim->Instance, - 8005516: 687b ldr r3, [r7, #4] - 8005518: 6818 ldr r0, [r3, #0] + 80057b6: 687b ldr r3, [r7, #4] + 80057b8: 6818 ldr r0, [r3, #0] sClockSourceConfig->ClockPolarity, - 800551a: 683b ldr r3, [r7, #0] - 800551c: 6859 ldr r1, [r3, #4] + 80057ba: 683b ldr r3, [r7, #0] + 80057bc: 6859 ldr r1, [r3, #4] sClockSourceConfig->ClockFilter); - 800551e: 683b ldr r3, [r7, #0] - 8005520: 68db ldr r3, [r3, #12] + 80057be: 683b ldr r3, [r7, #0] + 80057c0: 68db ldr r3, [r3, #12] TIM_TI1_ConfigInputStage(htim->Instance, - 8005522: 461a mov r2, r3 - 8005524: f000 f8d4 bl 80056d0 + 80057c2: 461a mov r2, r3 + 80057c4: f000 f8d4 bl 8005970 TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); - 8005528: 687b ldr r3, [r7, #4] - 800552a: 681b ldr r3, [r3, #0] - 800552c: 2150 movs r1, #80 @ 0x50 - 800552e: 4618 mov r0, r3 - 8005530: f000 f92b bl 800578a + 80057c8: 687b ldr r3, [r7, #4] + 80057ca: 681b ldr r3, [r3, #0] + 80057cc: 2150 movs r1, #80 @ 0x50 + 80057ce: 4618 mov r0, r3 + 80057d0: f000 f92b bl 8005a2a break; - 8005534: e02c b.n 8005590 + 80057d4: e02c b.n 8005830 /* Check TI2 input conditioning related parameters */ assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); TIM_TI2_ConfigInputStage(htim->Instance, - 8005536: 687b ldr r3, [r7, #4] - 8005538: 6818 ldr r0, [r3, #0] + 80057d6: 687b ldr r3, [r7, #4] + 80057d8: 6818 ldr r0, [r3, #0] sClockSourceConfig->ClockPolarity, - 800553a: 683b ldr r3, [r7, #0] - 800553c: 6859 ldr r1, [r3, #4] + 80057da: 683b ldr r3, [r7, #0] + 80057dc: 6859 ldr r1, [r3, #4] sClockSourceConfig->ClockFilter); - 800553e: 683b ldr r3, [r7, #0] - 8005540: 68db ldr r3, [r3, #12] + 80057de: 683b ldr r3, [r7, #0] + 80057e0: 68db ldr r3, [r3, #12] TIM_TI2_ConfigInputStage(htim->Instance, - 8005542: 461a mov r2, r3 - 8005544: f000 f8f2 bl 800572c + 80057e2: 461a mov r2, r3 + 80057e4: f000 f8f2 bl 80059cc TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); - 8005548: 687b ldr r3, [r7, #4] - 800554a: 681b ldr r3, [r3, #0] - 800554c: 2160 movs r1, #96 @ 0x60 - 800554e: 4618 mov r0, r3 - 8005550: f000 f91b bl 800578a + 80057e8: 687b ldr r3, [r7, #4] + 80057ea: 681b ldr r3, [r3, #0] + 80057ec: 2160 movs r1, #96 @ 0x60 + 80057ee: 4618 mov r0, r3 + 80057f0: f000 f91b bl 8005a2a break; - 8005554: e01c b.n 8005590 + 80057f4: e01c b.n 8005830 /* Check TI1 input conditioning related parameters */ assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); TIM_TI1_ConfigInputStage(htim->Instance, - 8005556: 687b ldr r3, [r7, #4] - 8005558: 6818 ldr r0, [r3, #0] + 80057f6: 687b ldr r3, [r7, #4] + 80057f8: 6818 ldr r0, [r3, #0] sClockSourceConfig->ClockPolarity, - 800555a: 683b ldr r3, [r7, #0] - 800555c: 6859 ldr r1, [r3, #4] + 80057fa: 683b ldr r3, [r7, #0] + 80057fc: 6859 ldr r1, [r3, #4] sClockSourceConfig->ClockFilter); - 800555e: 683b ldr r3, [r7, #0] - 8005560: 68db ldr r3, [r3, #12] + 80057fe: 683b ldr r3, [r7, #0] + 8005800: 68db ldr r3, [r3, #12] TIM_TI1_ConfigInputStage(htim->Instance, - 8005562: 461a mov r2, r3 - 8005564: f000 f8b4 bl 80056d0 + 8005802: 461a mov r2, r3 + 8005804: f000 f8b4 bl 8005970 TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED); - 8005568: 687b ldr r3, [r7, #4] - 800556a: 681b ldr r3, [r3, #0] - 800556c: 2140 movs r1, #64 @ 0x40 - 800556e: 4618 mov r0, r3 - 8005570: f000 f90b bl 800578a + 8005808: 687b ldr r3, [r7, #4] + 800580a: 681b ldr r3, [r3, #0] + 800580c: 2140 movs r1, #64 @ 0x40 + 800580e: 4618 mov r0, r3 + 8005810: f000 f90b bl 8005a2a break; - 8005574: e00c b.n 8005590 + 8005814: e00c b.n 8005830 case TIM_CLOCKSOURCE_ITR3: { /* Check whether or not the timer instance supports internal trigger input */ assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance)); TIM_ITRx_SetConfig(htim->Instance, sClockSourceConfig->ClockSource); - 8005576: 687b ldr r3, [r7, #4] - 8005578: 681a ldr r2, [r3, #0] - 800557a: 683b ldr r3, [r7, #0] - 800557c: 681b ldr r3, [r3, #0] - 800557e: 4619 mov r1, r3 - 8005580: 4610 mov r0, r2 - 8005582: f000 f902 bl 800578a + 8005816: 687b ldr r3, [r7, #4] + 8005818: 681a ldr r2, [r3, #0] + 800581a: 683b ldr r3, [r7, #0] + 800581c: 681b ldr r3, [r3, #0] + 800581e: 4619 mov r1, r3 + 8005820: 4610 mov r0, r2 + 8005822: f000 f902 bl 8005a2a break; - 8005586: e003 b.n 8005590 + 8005826: e003 b.n 8005830 } default: status = HAL_ERROR; - 8005588: 2301 movs r3, #1 - 800558a: 73fb strb r3, [r7, #15] + 8005828: 2301 movs r3, #1 + 800582a: 73fb strb r3, [r7, #15] break; - 800558c: e000 b.n 8005590 + 800582c: e000 b.n 8005830 break; - 800558e: bf00 nop + 800582e: bf00 nop } htim->State = HAL_TIM_STATE_READY; - 8005590: 687b ldr r3, [r7, #4] - 8005592: 2201 movs r2, #1 - 8005594: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8005830: 687b ldr r3, [r7, #4] + 8005832: 2201 movs r2, #1 + 8005834: f883 203d strb.w r2, [r3, #61] @ 0x3d __HAL_UNLOCK(htim); - 8005598: 687b ldr r3, [r7, #4] - 800559a: 2200 movs r2, #0 - 800559c: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8005838: 687b ldr r3, [r7, #4] + 800583a: 2200 movs r2, #0 + 800583c: f883 203c strb.w r2, [r3, #60] @ 0x3c return status; - 80055a0: 7bfb ldrb r3, [r7, #15] + 8005840: 7bfb ldrb r3, [r7, #15] } - 80055a2: 4618 mov r0, r3 - 80055a4: 3710 adds r7, #16 - 80055a6: 46bd mov sp, r7 - 80055a8: bd80 pop {r7, pc} + 8005842: 4618 mov r0, r3 + 8005844: 3710 adds r7, #16 + 8005846: 46bd mov sp, r7 + 8005848: bd80 pop {r7, pc} -080055aa : +0800584a : * @brief Output Compare callback in non-blocking mode * @param htim TIM OC handle * @retval None */ __weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim) { - 80055aa: b480 push {r7} - 80055ac: b083 sub sp, #12 - 80055ae: af00 add r7, sp, #0 - 80055b0: 6078 str r0, [r7, #4] + 800584a: b480 push {r7} + 800584c: b083 sub sp, #12 + 800584e: af00 add r7, sp, #0 + 8005850: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIM_OC_DelayElapsedCallback could be implemented in the user file */ } - 80055b2: bf00 nop - 80055b4: 370c adds r7, #12 - 80055b6: 46bd mov sp, r7 - 80055b8: bc80 pop {r7} - 80055ba: 4770 bx lr + 8005852: bf00 nop + 8005854: 370c adds r7, #12 + 8005856: 46bd mov sp, r7 + 8005858: bc80 pop {r7} + 800585a: 4770 bx lr -080055bc : +0800585c : * @brief Input Capture callback in non-blocking mode * @param htim TIM IC handle * @retval None */ __weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) { - 80055bc: b480 push {r7} - 80055be: b083 sub sp, #12 - 80055c0: af00 add r7, sp, #0 - 80055c2: 6078 str r0, [r7, #4] + 800585c: b480 push {r7} + 800585e: b083 sub sp, #12 + 8005860: af00 add r7, sp, #0 + 8005862: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIM_IC_CaptureCallback could be implemented in the user file */ } - 80055c4: bf00 nop - 80055c6: 370c adds r7, #12 - 80055c8: 46bd mov sp, r7 - 80055ca: bc80 pop {r7} - 80055cc: 4770 bx lr + 8005864: bf00 nop + 8005866: 370c adds r7, #12 + 8005868: 46bd mov sp, r7 + 800586a: bc80 pop {r7} + 800586c: 4770 bx lr -080055ce : +0800586e : * @brief PWM Pulse finished callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) { - 80055ce: b480 push {r7} - 80055d0: b083 sub sp, #12 - 80055d2: af00 add r7, sp, #0 - 80055d4: 6078 str r0, [r7, #4] + 800586e: b480 push {r7} + 8005870: b083 sub sp, #12 + 8005872: af00 add r7, sp, #0 + 8005874: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIM_PWM_PulseFinishedCallback could be implemented in the user file */ } - 80055d6: bf00 nop - 80055d8: 370c adds r7, #12 - 80055da: 46bd mov sp, r7 - 80055dc: bc80 pop {r7} - 80055de: 4770 bx lr + 8005876: bf00 nop + 8005878: 370c adds r7, #12 + 800587a: 46bd mov sp, r7 + 800587c: bc80 pop {r7} + 800587e: 4770 bx lr -080055e0 : +08005880 : * @brief Hall Trigger detection callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim) { - 80055e0: b480 push {r7} - 80055e2: b083 sub sp, #12 - 80055e4: af00 add r7, sp, #0 - 80055e6: 6078 str r0, [r7, #4] + 8005880: b480 push {r7} + 8005882: b083 sub sp, #12 + 8005884: af00 add r7, sp, #0 + 8005886: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIM_TriggerCallback could be implemented in the user file */ } - 80055e8: bf00 nop - 80055ea: 370c adds r7, #12 - 80055ec: 46bd mov sp, r7 - 80055ee: bc80 pop {r7} - 80055f0: 4770 bx lr + 8005888: bf00 nop + 800588a: 370c adds r7, #12 + 800588c: 46bd mov sp, r7 + 800588e: bc80 pop {r7} + 8005890: 4770 bx lr ... -080055f4 : +08005894 : * @param TIMx TIM peripheral * @param Structure TIM Base configuration structure * @retval None */ void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure) { - 80055f4: b480 push {r7} - 80055f6: b085 sub sp, #20 - 80055f8: af00 add r7, sp, #0 - 80055fa: 6078 str r0, [r7, #4] - 80055fc: 6039 str r1, [r7, #0] + 8005894: b480 push {r7} + 8005896: b085 sub sp, #20 + 8005898: af00 add r7, sp, #0 + 800589a: 6078 str r0, [r7, #4] + 800589c: 6039 str r1, [r7, #0] uint32_t tmpcr1; tmpcr1 = TIMx->CR1; - 80055fe: 687b ldr r3, [r7, #4] - 8005600: 681b ldr r3, [r3, #0] - 8005602: 60fb str r3, [r7, #12] + 800589e: 687b ldr r3, [r7, #4] + 80058a0: 681b ldr r3, [r3, #0] + 80058a2: 60fb str r3, [r7, #12] /* Set TIM Time Base Unit parameters ---------------------------------------*/ if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) - 8005604: 687b ldr r3, [r7, #4] - 8005606: 4a2f ldr r2, [pc, #188] @ (80056c4 ) - 8005608: 4293 cmp r3, r2 - 800560a: d00b beq.n 8005624 - 800560c: 687b ldr r3, [r7, #4] - 800560e: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8005612: d007 beq.n 8005624 - 8005614: 687b ldr r3, [r7, #4] - 8005616: 4a2c ldr r2, [pc, #176] @ (80056c8 ) - 8005618: 4293 cmp r3, r2 - 800561a: d003 beq.n 8005624 - 800561c: 687b ldr r3, [r7, #4] - 800561e: 4a2b ldr r2, [pc, #172] @ (80056cc ) - 8005620: 4293 cmp r3, r2 - 8005622: d108 bne.n 8005636 + 80058a4: 687b ldr r3, [r7, #4] + 80058a6: 4a2f ldr r2, [pc, #188] @ (8005964 ) + 80058a8: 4293 cmp r3, r2 + 80058aa: d00b beq.n 80058c4 + 80058ac: 687b ldr r3, [r7, #4] + 80058ae: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 80058b2: d007 beq.n 80058c4 + 80058b4: 687b ldr r3, [r7, #4] + 80058b6: 4a2c ldr r2, [pc, #176] @ (8005968 ) + 80058b8: 4293 cmp r3, r2 + 80058ba: d003 beq.n 80058c4 + 80058bc: 687b ldr r3, [r7, #4] + 80058be: 4a2b ldr r2, [pc, #172] @ (800596c ) + 80058c0: 4293 cmp r3, r2 + 80058c2: d108 bne.n 80058d6 { /* Select the Counter Mode */ tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); - 8005624: 68fb ldr r3, [r7, #12] - 8005626: f023 0370 bic.w r3, r3, #112 @ 0x70 - 800562a: 60fb str r3, [r7, #12] + 80058c4: 68fb ldr r3, [r7, #12] + 80058c6: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80058ca: 60fb str r3, [r7, #12] tmpcr1 |= Structure->CounterMode; - 800562c: 683b ldr r3, [r7, #0] - 800562e: 685b ldr r3, [r3, #4] - 8005630: 68fa ldr r2, [r7, #12] - 8005632: 4313 orrs r3, r2 - 8005634: 60fb str r3, [r7, #12] + 80058cc: 683b ldr r3, [r7, #0] + 80058ce: 685b ldr r3, [r3, #4] + 80058d0: 68fa ldr r2, [r7, #12] + 80058d2: 4313 orrs r3, r2 + 80058d4: 60fb str r3, [r7, #12] } if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) - 8005636: 687b ldr r3, [r7, #4] - 8005638: 4a22 ldr r2, [pc, #136] @ (80056c4 ) - 800563a: 4293 cmp r3, r2 - 800563c: d00b beq.n 8005656 - 800563e: 687b ldr r3, [r7, #4] - 8005640: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8005644: d007 beq.n 8005656 - 8005646: 687b ldr r3, [r7, #4] - 8005648: 4a1f ldr r2, [pc, #124] @ (80056c8 ) - 800564a: 4293 cmp r3, r2 - 800564c: d003 beq.n 8005656 - 800564e: 687b ldr r3, [r7, #4] - 8005650: 4a1e ldr r2, [pc, #120] @ (80056cc ) - 8005652: 4293 cmp r3, r2 - 8005654: d108 bne.n 8005668 + 80058d6: 687b ldr r3, [r7, #4] + 80058d8: 4a22 ldr r2, [pc, #136] @ (8005964 ) + 80058da: 4293 cmp r3, r2 + 80058dc: d00b beq.n 80058f6 + 80058de: 687b ldr r3, [r7, #4] + 80058e0: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 80058e4: d007 beq.n 80058f6 + 80058e6: 687b ldr r3, [r7, #4] + 80058e8: 4a1f ldr r2, [pc, #124] @ (8005968 ) + 80058ea: 4293 cmp r3, r2 + 80058ec: d003 beq.n 80058f6 + 80058ee: 687b ldr r3, [r7, #4] + 80058f0: 4a1e ldr r2, [pc, #120] @ (800596c ) + 80058f2: 4293 cmp r3, r2 + 80058f4: d108 bne.n 8005908 { /* Set the clock division */ tmpcr1 &= ~TIM_CR1_CKD; - 8005656: 68fb ldr r3, [r7, #12] - 8005658: f423 7340 bic.w r3, r3, #768 @ 0x300 - 800565c: 60fb str r3, [r7, #12] + 80058f6: 68fb ldr r3, [r7, #12] + 80058f8: f423 7340 bic.w r3, r3, #768 @ 0x300 + 80058fc: 60fb str r3, [r7, #12] tmpcr1 |= (uint32_t)Structure->ClockDivision; - 800565e: 683b ldr r3, [r7, #0] - 8005660: 68db ldr r3, [r3, #12] - 8005662: 68fa ldr r2, [r7, #12] - 8005664: 4313 orrs r3, r2 - 8005666: 60fb str r3, [r7, #12] + 80058fe: 683b ldr r3, [r7, #0] + 8005900: 68db ldr r3, [r3, #12] + 8005902: 68fa ldr r2, [r7, #12] + 8005904: 4313 orrs r3, r2 + 8005906: 60fb str r3, [r7, #12] } /* Set the auto-reload preload */ MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); - 8005668: 68fb ldr r3, [r7, #12] - 800566a: f023 0280 bic.w r2, r3, #128 @ 0x80 - 800566e: 683b ldr r3, [r7, #0] - 8005670: 695b ldr r3, [r3, #20] - 8005672: 4313 orrs r3, r2 - 8005674: 60fb str r3, [r7, #12] + 8005908: 68fb ldr r3, [r7, #12] + 800590a: f023 0280 bic.w r2, r3, #128 @ 0x80 + 800590e: 683b ldr r3, [r7, #0] + 8005910: 695b ldr r3, [r3, #20] + 8005912: 4313 orrs r3, r2 + 8005914: 60fb str r3, [r7, #12] TIMx->CR1 = tmpcr1; - 8005676: 687b ldr r3, [r7, #4] - 8005678: 68fa ldr r2, [r7, #12] - 800567a: 601a str r2, [r3, #0] + 8005916: 687b ldr r3, [r7, #4] + 8005918: 68fa ldr r2, [r7, #12] + 800591a: 601a str r2, [r3, #0] /* Set the Autoreload value */ TIMx->ARR = (uint32_t)Structure->Period ; - 800567c: 683b ldr r3, [r7, #0] - 800567e: 689a ldr r2, [r3, #8] - 8005680: 687b ldr r3, [r7, #4] - 8005682: 62da str r2, [r3, #44] @ 0x2c + 800591c: 683b ldr r3, [r7, #0] + 800591e: 689a ldr r2, [r3, #8] + 8005920: 687b ldr r3, [r7, #4] + 8005922: 62da str r2, [r3, #44] @ 0x2c /* Set the Prescaler value */ TIMx->PSC = Structure->Prescaler; - 8005684: 683b ldr r3, [r7, #0] - 8005686: 681a ldr r2, [r3, #0] - 8005688: 687b ldr r3, [r7, #4] - 800568a: 629a str r2, [r3, #40] @ 0x28 + 8005924: 683b ldr r3, [r7, #0] + 8005926: 681a ldr r2, [r3, #0] + 8005928: 687b ldr r3, [r7, #4] + 800592a: 629a str r2, [r3, #40] @ 0x28 if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx)) - 800568c: 687b ldr r3, [r7, #4] - 800568e: 4a0d ldr r2, [pc, #52] @ (80056c4 ) - 8005690: 4293 cmp r3, r2 - 8005692: d103 bne.n 800569c + 800592c: 687b ldr r3, [r7, #4] + 800592e: 4a0d ldr r2, [pc, #52] @ (8005964 ) + 8005930: 4293 cmp r3, r2 + 8005932: d103 bne.n 800593c { /* Set the Repetition Counter value */ TIMx->RCR = Structure->RepetitionCounter; - 8005694: 683b ldr r3, [r7, #0] - 8005696: 691a ldr r2, [r3, #16] - 8005698: 687b ldr r3, [r7, #4] - 800569a: 631a str r2, [r3, #48] @ 0x30 + 8005934: 683b ldr r3, [r7, #0] + 8005936: 691a ldr r2, [r3, #16] + 8005938: 687b ldr r3, [r7, #4] + 800593a: 631a str r2, [r3, #48] @ 0x30 } /* Generate an update event to reload the Prescaler and the repetition counter (only for advanced timer) value immediately */ TIMx->EGR = TIM_EGR_UG; - 800569c: 687b ldr r3, [r7, #4] - 800569e: 2201 movs r2, #1 - 80056a0: 615a str r2, [r3, #20] + 800593c: 687b ldr r3, [r7, #4] + 800593e: 2201 movs r2, #1 + 8005940: 615a str r2, [r3, #20] /* Check if the update flag is set after the Update Generation, if so clear the UIF flag */ if (HAL_IS_BIT_SET(TIMx->SR, TIM_FLAG_UPDATE)) - 80056a2: 687b ldr r3, [r7, #4] - 80056a4: 691b ldr r3, [r3, #16] - 80056a6: f003 0301 and.w r3, r3, #1 - 80056aa: 2b00 cmp r3, #0 - 80056ac: d005 beq.n 80056ba + 8005942: 687b ldr r3, [r7, #4] + 8005944: 691b ldr r3, [r3, #16] + 8005946: f003 0301 and.w r3, r3, #1 + 800594a: 2b00 cmp r3, #0 + 800594c: d005 beq.n 800595a { /* Clear the update flag */ CLEAR_BIT(TIMx->SR, TIM_FLAG_UPDATE); - 80056ae: 687b ldr r3, [r7, #4] - 80056b0: 691b ldr r3, [r3, #16] - 80056b2: f023 0201 bic.w r2, r3, #1 - 80056b6: 687b ldr r3, [r7, #4] - 80056b8: 611a str r2, [r3, #16] + 800594e: 687b ldr r3, [r7, #4] + 8005950: 691b ldr r3, [r3, #16] + 8005952: f023 0201 bic.w r2, r3, #1 + 8005956: 687b ldr r3, [r7, #4] + 8005958: 611a str r2, [r3, #16] } } - 80056ba: bf00 nop - 80056bc: 3714 adds r7, #20 - 80056be: 46bd mov sp, r7 - 80056c0: bc80 pop {r7} - 80056c2: 4770 bx lr - 80056c4: 40012c00 .word 0x40012c00 - 80056c8: 40000400 .word 0x40000400 - 80056cc: 40000800 .word 0x40000800 + 800595a: bf00 nop + 800595c: 3714 adds r7, #20 + 800595e: 46bd mov sp, r7 + 8005960: bc80 pop {r7} + 8005962: 4770 bx lr + 8005964: 40012c00 .word 0x40012c00 + 8005968: 40000400 .word 0x40000400 + 800596c: 40000800 .word 0x40000800 -080056d0 : +08005970 : * @param TIM_ICFilter Specifies the Input Capture Filter. * This parameter must be a value between 0x00 and 0x0F. * @retval None */ static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) { - 80056d0: b480 push {r7} - 80056d2: b087 sub sp, #28 - 80056d4: af00 add r7, sp, #0 - 80056d6: 60f8 str r0, [r7, #12] - 80056d8: 60b9 str r1, [r7, #8] - 80056da: 607a str r2, [r7, #4] + 8005970: b480 push {r7} + 8005972: b087 sub sp, #28 + 8005974: af00 add r7, sp, #0 + 8005976: 60f8 str r0, [r7, #12] + 8005978: 60b9 str r1, [r7, #8] + 800597a: 607a str r2, [r7, #4] uint32_t tmpccmr1; uint32_t tmpccer; /* Disable the Channel 1: Reset the CC1E Bit */ tmpccer = TIMx->CCER; - 80056dc: 68fb ldr r3, [r7, #12] - 80056de: 6a1b ldr r3, [r3, #32] - 80056e0: 617b str r3, [r7, #20] + 800597c: 68fb ldr r3, [r7, #12] + 800597e: 6a1b ldr r3, [r3, #32] + 8005980: 617b str r3, [r7, #20] TIMx->CCER &= ~TIM_CCER_CC1E; - 80056e2: 68fb ldr r3, [r7, #12] - 80056e4: 6a1b ldr r3, [r3, #32] - 80056e6: f023 0201 bic.w r2, r3, #1 - 80056ea: 68fb ldr r3, [r7, #12] - 80056ec: 621a str r2, [r3, #32] + 8005982: 68fb ldr r3, [r7, #12] + 8005984: 6a1b ldr r3, [r3, #32] + 8005986: f023 0201 bic.w r2, r3, #1 + 800598a: 68fb ldr r3, [r7, #12] + 800598c: 621a str r2, [r3, #32] tmpccmr1 = TIMx->CCMR1; - 80056ee: 68fb ldr r3, [r7, #12] - 80056f0: 699b ldr r3, [r3, #24] - 80056f2: 613b str r3, [r7, #16] + 800598e: 68fb ldr r3, [r7, #12] + 8005990: 699b ldr r3, [r3, #24] + 8005992: 613b str r3, [r7, #16] /* Set the filter */ tmpccmr1 &= ~TIM_CCMR1_IC1F; - 80056f4: 693b ldr r3, [r7, #16] - 80056f6: f023 03f0 bic.w r3, r3, #240 @ 0xf0 - 80056fa: 613b str r3, [r7, #16] + 8005994: 693b ldr r3, [r7, #16] + 8005996: f023 03f0 bic.w r3, r3, #240 @ 0xf0 + 800599a: 613b str r3, [r7, #16] tmpccmr1 |= (TIM_ICFilter << 4U); - 80056fc: 687b ldr r3, [r7, #4] - 80056fe: 011b lsls r3, r3, #4 - 8005700: 693a ldr r2, [r7, #16] - 8005702: 4313 orrs r3, r2 - 8005704: 613b str r3, [r7, #16] + 800599c: 687b ldr r3, [r7, #4] + 800599e: 011b lsls r3, r3, #4 + 80059a0: 693a ldr r2, [r7, #16] + 80059a2: 4313 orrs r3, r2 + 80059a4: 613b str r3, [r7, #16] /* Select the Polarity and set the CC1E Bit */ tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); - 8005706: 697b ldr r3, [r7, #20] - 8005708: f023 030a bic.w r3, r3, #10 - 800570c: 617b str r3, [r7, #20] + 80059a6: 697b ldr r3, [r7, #20] + 80059a8: f023 030a bic.w r3, r3, #10 + 80059ac: 617b str r3, [r7, #20] tmpccer |= TIM_ICPolarity; - 800570e: 697a ldr r2, [r7, #20] - 8005710: 68bb ldr r3, [r7, #8] - 8005712: 4313 orrs r3, r2 - 8005714: 617b str r3, [r7, #20] + 80059ae: 697a ldr r2, [r7, #20] + 80059b0: 68bb ldr r3, [r7, #8] + 80059b2: 4313 orrs r3, r2 + 80059b4: 617b str r3, [r7, #20] /* Write to TIMx CCMR1 and CCER registers */ TIMx->CCMR1 = tmpccmr1; - 8005716: 68fb ldr r3, [r7, #12] - 8005718: 693a ldr r2, [r7, #16] - 800571a: 619a str r2, [r3, #24] + 80059b6: 68fb ldr r3, [r7, #12] + 80059b8: 693a ldr r2, [r7, #16] + 80059ba: 619a str r2, [r3, #24] TIMx->CCER = tmpccer; - 800571c: 68fb ldr r3, [r7, #12] - 800571e: 697a ldr r2, [r7, #20] - 8005720: 621a str r2, [r3, #32] + 80059bc: 68fb ldr r3, [r7, #12] + 80059be: 697a ldr r2, [r7, #20] + 80059c0: 621a str r2, [r3, #32] } - 8005722: bf00 nop - 8005724: 371c adds r7, #28 - 8005726: 46bd mov sp, r7 - 8005728: bc80 pop {r7} - 800572a: 4770 bx lr + 80059c2: bf00 nop + 80059c4: 371c adds r7, #28 + 80059c6: 46bd mov sp, r7 + 80059c8: bc80 pop {r7} + 80059ca: 4770 bx lr -0800572c : +080059cc : * @param TIM_ICFilter Specifies the Input Capture Filter. * This parameter must be a value between 0x00 and 0x0F. * @retval None */ static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) { - 800572c: b480 push {r7} - 800572e: b087 sub sp, #28 - 8005730: af00 add r7, sp, #0 - 8005732: 60f8 str r0, [r7, #12] - 8005734: 60b9 str r1, [r7, #8] - 8005736: 607a str r2, [r7, #4] + 80059cc: b480 push {r7} + 80059ce: b087 sub sp, #28 + 80059d0: af00 add r7, sp, #0 + 80059d2: 60f8 str r0, [r7, #12] + 80059d4: 60b9 str r1, [r7, #8] + 80059d6: 607a str r2, [r7, #4] uint32_t tmpccmr1; uint32_t tmpccer; /* Disable the Channel 2: Reset the CC2E Bit */ tmpccer = TIMx->CCER; - 8005738: 68fb ldr r3, [r7, #12] - 800573a: 6a1b ldr r3, [r3, #32] - 800573c: 617b str r3, [r7, #20] + 80059d8: 68fb ldr r3, [r7, #12] + 80059da: 6a1b ldr r3, [r3, #32] + 80059dc: 617b str r3, [r7, #20] TIMx->CCER &= ~TIM_CCER_CC2E; - 800573e: 68fb ldr r3, [r7, #12] - 8005740: 6a1b ldr r3, [r3, #32] - 8005742: f023 0210 bic.w r2, r3, #16 - 8005746: 68fb ldr r3, [r7, #12] - 8005748: 621a str r2, [r3, #32] + 80059de: 68fb ldr r3, [r7, #12] + 80059e0: 6a1b ldr r3, [r3, #32] + 80059e2: f023 0210 bic.w r2, r3, #16 + 80059e6: 68fb ldr r3, [r7, #12] + 80059e8: 621a str r2, [r3, #32] tmpccmr1 = TIMx->CCMR1; - 800574a: 68fb ldr r3, [r7, #12] - 800574c: 699b ldr r3, [r3, #24] - 800574e: 613b str r3, [r7, #16] + 80059ea: 68fb ldr r3, [r7, #12] + 80059ec: 699b ldr r3, [r3, #24] + 80059ee: 613b str r3, [r7, #16] /* Set the filter */ tmpccmr1 &= ~TIM_CCMR1_IC2F; - 8005750: 693b ldr r3, [r7, #16] - 8005752: f423 4370 bic.w r3, r3, #61440 @ 0xf000 - 8005756: 613b str r3, [r7, #16] + 80059f0: 693b ldr r3, [r7, #16] + 80059f2: f423 4370 bic.w r3, r3, #61440 @ 0xf000 + 80059f6: 613b str r3, [r7, #16] tmpccmr1 |= (TIM_ICFilter << 12U); - 8005758: 687b ldr r3, [r7, #4] - 800575a: 031b lsls r3, r3, #12 - 800575c: 693a ldr r2, [r7, #16] - 800575e: 4313 orrs r3, r2 - 8005760: 613b str r3, [r7, #16] + 80059f8: 687b ldr r3, [r7, #4] + 80059fa: 031b lsls r3, r3, #12 + 80059fc: 693a ldr r2, [r7, #16] + 80059fe: 4313 orrs r3, r2 + 8005a00: 613b str r3, [r7, #16] /* Select the Polarity and set the CC2E Bit */ tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); - 8005762: 697b ldr r3, [r7, #20] - 8005764: f023 03a0 bic.w r3, r3, #160 @ 0xa0 - 8005768: 617b str r3, [r7, #20] + 8005a02: 697b ldr r3, [r7, #20] + 8005a04: f023 03a0 bic.w r3, r3, #160 @ 0xa0 + 8005a08: 617b str r3, [r7, #20] tmpccer |= (TIM_ICPolarity << 4U); - 800576a: 68bb ldr r3, [r7, #8] - 800576c: 011b lsls r3, r3, #4 - 800576e: 697a ldr r2, [r7, #20] - 8005770: 4313 orrs r3, r2 - 8005772: 617b str r3, [r7, #20] + 8005a0a: 68bb ldr r3, [r7, #8] + 8005a0c: 011b lsls r3, r3, #4 + 8005a0e: 697a ldr r2, [r7, #20] + 8005a10: 4313 orrs r3, r2 + 8005a12: 617b str r3, [r7, #20] /* Write to TIMx CCMR1 and CCER registers */ TIMx->CCMR1 = tmpccmr1 ; - 8005774: 68fb ldr r3, [r7, #12] - 8005776: 693a ldr r2, [r7, #16] - 8005778: 619a str r2, [r3, #24] + 8005a14: 68fb ldr r3, [r7, #12] + 8005a16: 693a ldr r2, [r7, #16] + 8005a18: 619a str r2, [r3, #24] TIMx->CCER = tmpccer; - 800577a: 68fb ldr r3, [r7, #12] - 800577c: 697a ldr r2, [r7, #20] - 800577e: 621a str r2, [r3, #32] + 8005a1a: 68fb ldr r3, [r7, #12] + 8005a1c: 697a ldr r2, [r7, #20] + 8005a1e: 621a str r2, [r3, #32] } - 8005780: bf00 nop - 8005782: 371c adds r7, #28 - 8005784: 46bd mov sp, r7 - 8005786: bc80 pop {r7} - 8005788: 4770 bx lr + 8005a20: bf00 nop + 8005a22: 371c adds r7, #28 + 8005a24: 46bd mov sp, r7 + 8005a26: bc80 pop {r7} + 8005a28: 4770 bx lr -0800578a : +08005a2a : * @arg TIM_TS_TI2FP2: Filtered Timer Input 2 * @arg TIM_TS_ETRF: External Trigger input * @retval None */ static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource) { - 800578a: b480 push {r7} - 800578c: b085 sub sp, #20 - 800578e: af00 add r7, sp, #0 - 8005790: 6078 str r0, [r7, #4] - 8005792: 6039 str r1, [r7, #0] + 8005a2a: b480 push {r7} + 8005a2c: b085 sub sp, #20 + 8005a2e: af00 add r7, sp, #0 + 8005a30: 6078 str r0, [r7, #4] + 8005a32: 6039 str r1, [r7, #0] uint32_t tmpsmcr; /* Get the TIMx SMCR register value */ tmpsmcr = TIMx->SMCR; - 8005794: 687b ldr r3, [r7, #4] - 8005796: 689b ldr r3, [r3, #8] - 8005798: 60fb str r3, [r7, #12] + 8005a34: 687b ldr r3, [r7, #4] + 8005a36: 689b ldr r3, [r3, #8] + 8005a38: 60fb str r3, [r7, #12] /* Reset the TS Bits */ tmpsmcr &= ~TIM_SMCR_TS; - 800579a: 68fb ldr r3, [r7, #12] - 800579c: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80057a0: 60fb str r3, [r7, #12] + 8005a3a: 68fb ldr r3, [r7, #12] + 8005a3c: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8005a40: 60fb str r3, [r7, #12] /* Set the Input Trigger source and the slave mode*/ tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1); - 80057a2: 683a ldr r2, [r7, #0] - 80057a4: 68fb ldr r3, [r7, #12] - 80057a6: 4313 orrs r3, r2 - 80057a8: f043 0307 orr.w r3, r3, #7 - 80057ac: 60fb str r3, [r7, #12] + 8005a42: 683a ldr r2, [r7, #0] + 8005a44: 68fb ldr r3, [r7, #12] + 8005a46: 4313 orrs r3, r2 + 8005a48: f043 0307 orr.w r3, r3, #7 + 8005a4c: 60fb str r3, [r7, #12] /* Write to TIMx SMCR */ TIMx->SMCR = tmpsmcr; - 80057ae: 687b ldr r3, [r7, #4] - 80057b0: 68fa ldr r2, [r7, #12] - 80057b2: 609a str r2, [r3, #8] + 8005a4e: 687b ldr r3, [r7, #4] + 8005a50: 68fa ldr r2, [r7, #12] + 8005a52: 609a str r2, [r3, #8] } - 80057b4: bf00 nop - 80057b6: 3714 adds r7, #20 - 80057b8: 46bd mov sp, r7 - 80057ba: bc80 pop {r7} - 80057bc: 4770 bx lr + 8005a54: bf00 nop + 8005a56: 3714 adds r7, #20 + 8005a58: 46bd mov sp, r7 + 8005a5a: bc80 pop {r7} + 8005a5c: 4770 bx lr -080057be : +08005a5e : * This parameter must be a value between 0x00 and 0x0F * @retval None */ void TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler, uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter) { - 80057be: b480 push {r7} - 80057c0: b087 sub sp, #28 - 80057c2: af00 add r7, sp, #0 - 80057c4: 60f8 str r0, [r7, #12] - 80057c6: 60b9 str r1, [r7, #8] - 80057c8: 607a str r2, [r7, #4] - 80057ca: 603b str r3, [r7, #0] + 8005a5e: b480 push {r7} + 8005a60: b087 sub sp, #28 + 8005a62: af00 add r7, sp, #0 + 8005a64: 60f8 str r0, [r7, #12] + 8005a66: 60b9 str r1, [r7, #8] + 8005a68: 607a str r2, [r7, #4] + 8005a6a: 603b str r3, [r7, #0] uint32_t tmpsmcr; tmpsmcr = TIMx->SMCR; - 80057cc: 68fb ldr r3, [r7, #12] - 80057ce: 689b ldr r3, [r3, #8] - 80057d0: 617b str r3, [r7, #20] + 8005a6c: 68fb ldr r3, [r7, #12] + 8005a6e: 689b ldr r3, [r3, #8] + 8005a70: 617b str r3, [r7, #20] /* Reset the ETR Bits */ tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); - 80057d2: 697b ldr r3, [r7, #20] - 80057d4: f423 437f bic.w r3, r3, #65280 @ 0xff00 - 80057d8: 617b str r3, [r7, #20] + 8005a72: 697b ldr r3, [r7, #20] + 8005a74: f423 437f bic.w r3, r3, #65280 @ 0xff00 + 8005a78: 617b str r3, [r7, #20] /* Set the Prescaler, the Filter value and the Polarity */ tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U))); - 80057da: 683b ldr r3, [r7, #0] - 80057dc: 021a lsls r2, r3, #8 - 80057de: 687b ldr r3, [r7, #4] - 80057e0: 431a orrs r2, r3 - 80057e2: 68bb ldr r3, [r7, #8] - 80057e4: 4313 orrs r3, r2 - 80057e6: 697a ldr r2, [r7, #20] - 80057e8: 4313 orrs r3, r2 - 80057ea: 617b str r3, [r7, #20] + 8005a7a: 683b ldr r3, [r7, #0] + 8005a7c: 021a lsls r2, r3, #8 + 8005a7e: 687b ldr r3, [r7, #4] + 8005a80: 431a orrs r2, r3 + 8005a82: 68bb ldr r3, [r7, #8] + 8005a84: 4313 orrs r3, r2 + 8005a86: 697a ldr r2, [r7, #20] + 8005a88: 4313 orrs r3, r2 + 8005a8a: 617b str r3, [r7, #20] /* Write to TIMx SMCR */ TIMx->SMCR = tmpsmcr; - 80057ec: 68fb ldr r3, [r7, #12] - 80057ee: 697a ldr r2, [r7, #20] - 80057f0: 609a str r2, [r3, #8] + 8005a8c: 68fb ldr r3, [r7, #12] + 8005a8e: 697a ldr r2, [r7, #20] + 8005a90: 609a str r2, [r3, #8] } - 80057f2: bf00 nop - 80057f4: 371c adds r7, #28 - 80057f6: 46bd mov sp, r7 - 80057f8: bc80 pop {r7} - 80057fa: 4770 bx lr + 8005a92: bf00 nop + 8005a94: 371c adds r7, #28 + 8005a96: 46bd mov sp, r7 + 8005a98: bc80 pop {r7} + 8005a9a: 4770 bx lr -080057fc : +08005a9c : * mode. * @retval HAL status */ HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, const TIM_MasterConfigTypeDef *sMasterConfig) { - 80057fc: b480 push {r7} - 80057fe: b085 sub sp, #20 - 8005800: af00 add r7, sp, #0 - 8005802: 6078 str r0, [r7, #4] - 8005804: 6039 str r1, [r7, #0] + 8005a9c: b480 push {r7} + 8005a9e: b085 sub sp, #20 + 8005aa0: af00 add r7, sp, #0 + 8005aa2: 6078 str r0, [r7, #4] + 8005aa4: 6039 str r1, [r7, #0] assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance)); assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger)); assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode)); /* Check input state */ __HAL_LOCK(htim); - 8005806: 687b ldr r3, [r7, #4] - 8005808: f893 303c ldrb.w r3, [r3, #60] @ 0x3c - 800580c: 2b01 cmp r3, #1 - 800580e: d101 bne.n 8005814 - 8005810: 2302 movs r3, #2 - 8005812: e046 b.n 80058a2 - 8005814: 687b ldr r3, [r7, #4] - 8005816: 2201 movs r2, #1 - 8005818: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8005aa6: 687b ldr r3, [r7, #4] + 8005aa8: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 8005aac: 2b01 cmp r3, #1 + 8005aae: d101 bne.n 8005ab4 + 8005ab0: 2302 movs r3, #2 + 8005ab2: e046 b.n 8005b42 + 8005ab4: 687b ldr r3, [r7, #4] + 8005ab6: 2201 movs r2, #1 + 8005ab8: f883 203c strb.w r2, [r3, #60] @ 0x3c /* Change the handler state */ htim->State = HAL_TIM_STATE_BUSY; - 800581c: 687b ldr r3, [r7, #4] - 800581e: 2202 movs r2, #2 - 8005820: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8005abc: 687b ldr r3, [r7, #4] + 8005abe: 2202 movs r2, #2 + 8005ac0: f883 203d strb.w r2, [r3, #61] @ 0x3d /* Get the TIMx CR2 register value */ tmpcr2 = htim->Instance->CR2; - 8005824: 687b ldr r3, [r7, #4] - 8005826: 681b ldr r3, [r3, #0] - 8005828: 685b ldr r3, [r3, #4] - 800582a: 60fb str r3, [r7, #12] + 8005ac4: 687b ldr r3, [r7, #4] + 8005ac6: 681b ldr r3, [r3, #0] + 8005ac8: 685b ldr r3, [r3, #4] + 8005aca: 60fb str r3, [r7, #12] /* Get the TIMx SMCR register value */ tmpsmcr = htim->Instance->SMCR; - 800582c: 687b ldr r3, [r7, #4] - 800582e: 681b ldr r3, [r3, #0] - 8005830: 689b ldr r3, [r3, #8] - 8005832: 60bb str r3, [r7, #8] + 8005acc: 687b ldr r3, [r7, #4] + 8005ace: 681b ldr r3, [r3, #0] + 8005ad0: 689b ldr r3, [r3, #8] + 8005ad2: 60bb str r3, [r7, #8] /* Reset the MMS Bits */ tmpcr2 &= ~TIM_CR2_MMS; - 8005834: 68fb ldr r3, [r7, #12] - 8005836: f023 0370 bic.w r3, r3, #112 @ 0x70 - 800583a: 60fb str r3, [r7, #12] + 8005ad4: 68fb ldr r3, [r7, #12] + 8005ad6: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8005ada: 60fb str r3, [r7, #12] /* Select the TRGO source */ tmpcr2 |= sMasterConfig->MasterOutputTrigger; - 800583c: 683b ldr r3, [r7, #0] - 800583e: 681b ldr r3, [r3, #0] - 8005840: 68fa ldr r2, [r7, #12] - 8005842: 4313 orrs r3, r2 - 8005844: 60fb str r3, [r7, #12] + 8005adc: 683b ldr r3, [r7, #0] + 8005ade: 681b ldr r3, [r3, #0] + 8005ae0: 68fa ldr r2, [r7, #12] + 8005ae2: 4313 orrs r3, r2 + 8005ae4: 60fb str r3, [r7, #12] /* Update TIMx CR2 */ htim->Instance->CR2 = tmpcr2; - 8005846: 687b ldr r3, [r7, #4] - 8005848: 681b ldr r3, [r3, #0] - 800584a: 68fa ldr r2, [r7, #12] - 800584c: 605a str r2, [r3, #4] + 8005ae6: 687b ldr r3, [r7, #4] + 8005ae8: 681b ldr r3, [r3, #0] + 8005aea: 68fa ldr r2, [r7, #12] + 8005aec: 605a str r2, [r3, #4] if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) - 800584e: 687b ldr r3, [r7, #4] - 8005850: 681b ldr r3, [r3, #0] - 8005852: 4a16 ldr r2, [pc, #88] @ (80058ac ) - 8005854: 4293 cmp r3, r2 - 8005856: d00e beq.n 8005876 - 8005858: 687b ldr r3, [r7, #4] - 800585a: 681b ldr r3, [r3, #0] - 800585c: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8005860: d009 beq.n 8005876 - 8005862: 687b ldr r3, [r7, #4] - 8005864: 681b ldr r3, [r3, #0] - 8005866: 4a12 ldr r2, [pc, #72] @ (80058b0 ) - 8005868: 4293 cmp r3, r2 - 800586a: d004 beq.n 8005876 - 800586c: 687b ldr r3, [r7, #4] - 800586e: 681b ldr r3, [r3, #0] - 8005870: 4a10 ldr r2, [pc, #64] @ (80058b4 ) - 8005872: 4293 cmp r3, r2 - 8005874: d10c bne.n 8005890 + 8005aee: 687b ldr r3, [r7, #4] + 8005af0: 681b ldr r3, [r3, #0] + 8005af2: 4a16 ldr r2, [pc, #88] @ (8005b4c ) + 8005af4: 4293 cmp r3, r2 + 8005af6: d00e beq.n 8005b16 + 8005af8: 687b ldr r3, [r7, #4] + 8005afa: 681b ldr r3, [r3, #0] + 8005afc: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8005b00: d009 beq.n 8005b16 + 8005b02: 687b ldr r3, [r7, #4] + 8005b04: 681b ldr r3, [r3, #0] + 8005b06: 4a12 ldr r2, [pc, #72] @ (8005b50 ) + 8005b08: 4293 cmp r3, r2 + 8005b0a: d004 beq.n 8005b16 + 8005b0c: 687b ldr r3, [r7, #4] + 8005b0e: 681b ldr r3, [r3, #0] + 8005b10: 4a10 ldr r2, [pc, #64] @ (8005b54 ) + 8005b12: 4293 cmp r3, r2 + 8005b14: d10c bne.n 8005b30 { /* Reset the MSM Bit */ tmpsmcr &= ~TIM_SMCR_MSM; - 8005876: 68bb ldr r3, [r7, #8] - 8005878: f023 0380 bic.w r3, r3, #128 @ 0x80 - 800587c: 60bb str r3, [r7, #8] + 8005b16: 68bb ldr r3, [r7, #8] + 8005b18: f023 0380 bic.w r3, r3, #128 @ 0x80 + 8005b1c: 60bb str r3, [r7, #8] /* Set master mode */ tmpsmcr |= sMasterConfig->MasterSlaveMode; - 800587e: 683b ldr r3, [r7, #0] - 8005880: 685b ldr r3, [r3, #4] - 8005882: 68ba ldr r2, [r7, #8] - 8005884: 4313 orrs r3, r2 - 8005886: 60bb str r3, [r7, #8] + 8005b1e: 683b ldr r3, [r7, #0] + 8005b20: 685b ldr r3, [r3, #4] + 8005b22: 68ba ldr r2, [r7, #8] + 8005b24: 4313 orrs r3, r2 + 8005b26: 60bb str r3, [r7, #8] /* Update TIMx SMCR */ htim->Instance->SMCR = tmpsmcr; - 8005888: 687b ldr r3, [r7, #4] - 800588a: 681b ldr r3, [r3, #0] - 800588c: 68ba ldr r2, [r7, #8] - 800588e: 609a str r2, [r3, #8] + 8005b28: 687b ldr r3, [r7, #4] + 8005b2a: 681b ldr r3, [r3, #0] + 8005b2c: 68ba ldr r2, [r7, #8] + 8005b2e: 609a str r2, [r3, #8] } /* Change the htim state */ htim->State = HAL_TIM_STATE_READY; - 8005890: 687b ldr r3, [r7, #4] - 8005892: 2201 movs r2, #1 - 8005894: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8005b30: 687b ldr r3, [r7, #4] + 8005b32: 2201 movs r2, #1 + 8005b34: f883 203d strb.w r2, [r3, #61] @ 0x3d __HAL_UNLOCK(htim); - 8005898: 687b ldr r3, [r7, #4] - 800589a: 2200 movs r2, #0 - 800589c: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8005b38: 687b ldr r3, [r7, #4] + 8005b3a: 2200 movs r2, #0 + 8005b3c: f883 203c strb.w r2, [r3, #60] @ 0x3c return HAL_OK; - 80058a0: 2300 movs r3, #0 + 8005b40: 2300 movs r3, #0 } - 80058a2: 4618 mov r0, r3 - 80058a4: 3714 adds r7, #20 - 80058a6: 46bd mov sp, r7 - 80058a8: bc80 pop {r7} - 80058aa: 4770 bx lr - 80058ac: 40012c00 .word 0x40012c00 - 80058b0: 40000400 .word 0x40000400 - 80058b4: 40000800 .word 0x40000800 + 8005b42: 4618 mov r0, r3 + 8005b44: 3714 adds r7, #20 + 8005b46: 46bd mov sp, r7 + 8005b48: bc80 pop {r7} + 8005b4a: 4770 bx lr + 8005b4c: 40012c00 .word 0x40012c00 + 8005b50: 40000400 .word 0x40000400 + 8005b54: 40000800 .word 0x40000800 -080058b8 : +08005b58 : * @brief Commutation callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim) { - 80058b8: b480 push {r7} - 80058ba: b083 sub sp, #12 - 80058bc: af00 add r7, sp, #0 - 80058be: 6078 str r0, [r7, #4] + 8005b58: b480 push {r7} + 8005b5a: b083 sub sp, #12 + 8005b5c: af00 add r7, sp, #0 + 8005b5e: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIMEx_CommutCallback could be implemented in the user file */ } - 80058c0: bf00 nop - 80058c2: 370c adds r7, #12 - 80058c4: 46bd mov sp, r7 - 80058c6: bc80 pop {r7} - 80058c8: 4770 bx lr + 8005b60: bf00 nop + 8005b62: 370c adds r7, #12 + 8005b64: 46bd mov sp, r7 + 8005b66: bc80 pop {r7} + 8005b68: 4770 bx lr -080058ca : +08005b6a : * @brief Break detection callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim) { - 80058ca: b480 push {r7} - 80058cc: b083 sub sp, #12 - 80058ce: af00 add r7, sp, #0 - 80058d0: 6078 str r0, [r7, #4] + 8005b6a: b480 push {r7} + 8005b6c: b083 sub sp, #12 + 8005b6e: af00 add r7, sp, #0 + 8005b70: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIMEx_BreakCallback could be implemented in the user file */ } - 80058d2: bf00 nop - 80058d4: 370c adds r7, #12 - 80058d6: 46bd mov sp, r7 - 80058d8: bc80 pop {r7} - 80058da: 4770 bx lr + 8005b72: bf00 nop + 8005b74: 370c adds r7, #12 + 8005b76: 46bd mov sp, r7 + 8005b78: bc80 pop {r7} + 8005b7a: 4770 bx lr -080058dc : +08005b7c : * @param huart Pointer to a UART_HandleTypeDef structure that contains * the configuration information for the specified UART module. * @retval HAL status */ HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart) { - 80058dc: b580 push {r7, lr} - 80058de: b082 sub sp, #8 - 80058e0: af00 add r7, sp, #0 - 80058e2: 6078 str r0, [r7, #4] + 8005b7c: b580 push {r7, lr} + 8005b7e: b082 sub sp, #8 + 8005b80: af00 add r7, sp, #0 + 8005b82: 6078 str r0, [r7, #4] /* Check the UART handle allocation */ if (huart == NULL) - 80058e4: 687b ldr r3, [r7, #4] - 80058e6: 2b00 cmp r3, #0 - 80058e8: d101 bne.n 80058ee + 8005b84: 687b ldr r3, [r7, #4] + 8005b86: 2b00 cmp r3, #0 + 8005b88: d101 bne.n 8005b8e { return HAL_ERROR; - 80058ea: 2301 movs r3, #1 - 80058ec: e042 b.n 8005974 + 8005b8a: 2301 movs r3, #1 + 8005b8c: e042 b.n 8005c14 assert_param(IS_UART_WORD_LENGTH(huart->Init.WordLength)); #if defined(USART_CR1_OVER8) assert_param(IS_UART_OVERSAMPLING(huart->Init.OverSampling)); #endif /* USART_CR1_OVER8 */ if (huart->gState == HAL_UART_STATE_RESET) - 80058ee: 687b ldr r3, [r7, #4] - 80058f0: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 - 80058f4: b2db uxtb r3, r3 - 80058f6: 2b00 cmp r3, #0 - 80058f8: d106 bne.n 8005908 + 8005b8e: 687b ldr r3, [r7, #4] + 8005b90: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 + 8005b94: b2db uxtb r3, r3 + 8005b96: 2b00 cmp r3, #0 + 8005b98: d106 bne.n 8005ba8 { /* Allocate lock resource and initialize it */ huart->Lock = HAL_UNLOCKED; - 80058fa: 687b ldr r3, [r7, #4] - 80058fc: 2200 movs r2, #0 - 80058fe: f883 2040 strb.w r2, [r3, #64] @ 0x40 + 8005b9a: 687b ldr r3, [r7, #4] + 8005b9c: 2200 movs r2, #0 + 8005b9e: f883 2040 strb.w r2, [r3, #64] @ 0x40 /* Init the low level hardware */ huart->MspInitCallback(huart); #else /* Init the low level hardware : GPIO, CLOCK */ HAL_UART_MspInit(huart); - 8005902: 6878 ldr r0, [r7, #4] - 8005904: f7fd f85e bl 80029c4 + 8005ba2: 6878 ldr r0, [r7, #4] + 8005ba4: f7fd f882 bl 8002cac #endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ } huart->gState = HAL_UART_STATE_BUSY; - 8005908: 687b ldr r3, [r7, #4] - 800590a: 2224 movs r2, #36 @ 0x24 - 800590c: f883 2041 strb.w r2, [r3, #65] @ 0x41 + 8005ba8: 687b ldr r3, [r7, #4] + 8005baa: 2224 movs r2, #36 @ 0x24 + 8005bac: f883 2041 strb.w r2, [r3, #65] @ 0x41 /* Disable the peripheral */ __HAL_UART_DISABLE(huart); - 8005910: 687b ldr r3, [r7, #4] - 8005912: 681b ldr r3, [r3, #0] - 8005914: 68da ldr r2, [r3, #12] - 8005916: 687b ldr r3, [r7, #4] - 8005918: 681b ldr r3, [r3, #0] - 800591a: f422 5200 bic.w r2, r2, #8192 @ 0x2000 - 800591e: 60da str r2, [r3, #12] + 8005bb0: 687b ldr r3, [r7, #4] + 8005bb2: 681b ldr r3, [r3, #0] + 8005bb4: 68da ldr r2, [r3, #12] + 8005bb6: 687b ldr r3, [r7, #4] + 8005bb8: 681b ldr r3, [r3, #0] + 8005bba: f422 5200 bic.w r2, r2, #8192 @ 0x2000 + 8005bbe: 60da str r2, [r3, #12] /* Set the UART Communication parameters */ UART_SetConfig(huart); - 8005920: 6878 ldr r0, [r7, #4] - 8005922: f000 fd63 bl 80063ec + 8005bc0: 6878 ldr r0, [r7, #4] + 8005bc2: f000 fd63 bl 800668c /* 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)); - 8005926: 687b ldr r3, [r7, #4] - 8005928: 681b ldr r3, [r3, #0] - 800592a: 691a ldr r2, [r3, #16] - 800592c: 687b ldr r3, [r7, #4] - 800592e: 681b ldr r3, [r3, #0] - 8005930: f422 4290 bic.w r2, r2, #18432 @ 0x4800 - 8005934: 611a str r2, [r3, #16] + 8005bc6: 687b ldr r3, [r7, #4] + 8005bc8: 681b ldr r3, [r3, #0] + 8005bca: 691a ldr r2, [r3, #16] + 8005bcc: 687b ldr r3, [r7, #4] + 8005bce: 681b ldr r3, [r3, #0] + 8005bd0: f422 4290 bic.w r2, r2, #18432 @ 0x4800 + 8005bd4: 611a str r2, [r3, #16] CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN)); - 8005936: 687b ldr r3, [r7, #4] - 8005938: 681b ldr r3, [r3, #0] - 800593a: 695a ldr r2, [r3, #20] - 800593c: 687b ldr r3, [r7, #4] - 800593e: 681b ldr r3, [r3, #0] - 8005940: f022 022a bic.w r2, r2, #42 @ 0x2a - 8005944: 615a str r2, [r3, #20] + 8005bd6: 687b ldr r3, [r7, #4] + 8005bd8: 681b ldr r3, [r3, #0] + 8005bda: 695a ldr r2, [r3, #20] + 8005bdc: 687b ldr r3, [r7, #4] + 8005bde: 681b ldr r3, [r3, #0] + 8005be0: f022 022a bic.w r2, r2, #42 @ 0x2a + 8005be4: 615a str r2, [r3, #20] /* Enable the peripheral */ __HAL_UART_ENABLE(huart); - 8005946: 687b ldr r3, [r7, #4] - 8005948: 681b ldr r3, [r3, #0] - 800594a: 68da ldr r2, [r3, #12] - 800594c: 687b ldr r3, [r7, #4] - 800594e: 681b ldr r3, [r3, #0] - 8005950: f442 5200 orr.w r2, r2, #8192 @ 0x2000 - 8005954: 60da str r2, [r3, #12] + 8005be6: 687b ldr r3, [r7, #4] + 8005be8: 681b ldr r3, [r3, #0] + 8005bea: 68da ldr r2, [r3, #12] + 8005bec: 687b ldr r3, [r7, #4] + 8005bee: 681b ldr r3, [r3, #0] + 8005bf0: f442 5200 orr.w r2, r2, #8192 @ 0x2000 + 8005bf4: 60da str r2, [r3, #12] /* Initialize the UART state */ huart->ErrorCode = HAL_UART_ERROR_NONE; - 8005956: 687b ldr r3, [r7, #4] - 8005958: 2200 movs r2, #0 - 800595a: 645a str r2, [r3, #68] @ 0x44 + 8005bf6: 687b ldr r3, [r7, #4] + 8005bf8: 2200 movs r2, #0 + 8005bfa: 645a str r2, [r3, #68] @ 0x44 huart->gState = HAL_UART_STATE_READY; - 800595c: 687b ldr r3, [r7, #4] - 800595e: 2220 movs r2, #32 - 8005960: f883 2041 strb.w r2, [r3, #65] @ 0x41 + 8005bfc: 687b ldr r3, [r7, #4] + 8005bfe: 2220 movs r2, #32 + 8005c00: f883 2041 strb.w r2, [r3, #65] @ 0x41 huart->RxState = HAL_UART_STATE_READY; - 8005964: 687b ldr r3, [r7, #4] - 8005966: 2220 movs r2, #32 - 8005968: f883 2042 strb.w r2, [r3, #66] @ 0x42 + 8005c04: 687b ldr r3, [r7, #4] + 8005c06: 2220 movs r2, #32 + 8005c08: f883 2042 strb.w r2, [r3, #66] @ 0x42 huart->RxEventType = HAL_UART_RXEVENT_TC; - 800596c: 687b ldr r3, [r7, #4] - 800596e: 2200 movs r2, #0 - 8005970: 635a str r2, [r3, #52] @ 0x34 + 8005c0c: 687b ldr r3, [r7, #4] + 8005c0e: 2200 movs r2, #0 + 8005c10: 635a str r2, [r3, #52] @ 0x34 return HAL_OK; - 8005972: 2300 movs r3, #0 + 8005c12: 2300 movs r3, #0 } - 8005974: 4618 mov r0, r3 - 8005976: 3708 adds r7, #8 - 8005978: 46bd mov sp, r7 - 800597a: bd80 pop {r7, pc} + 8005c14: 4618 mov r0, r3 + 8005c16: 3708 adds r7, #8 + 8005c18: 46bd mov sp, r7 + 8005c1a: bd80 pop {r7, pc} -0800597c : +08005c1c : * @param Size Amount of data elements (u8 or u16) to be sent * @param Timeout Timeout duration * @retval HAL status */ HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout) { - 800597c: b580 push {r7, lr} - 800597e: b08a sub sp, #40 @ 0x28 - 8005980: af02 add r7, sp, #8 - 8005982: 60f8 str r0, [r7, #12] - 8005984: 60b9 str r1, [r7, #8] - 8005986: 603b str r3, [r7, #0] - 8005988: 4613 mov r3, r2 - 800598a: 80fb strh r3, [r7, #6] + 8005c1c: b580 push {r7, lr} + 8005c1e: b08a sub sp, #40 @ 0x28 + 8005c20: af02 add r7, sp, #8 + 8005c22: 60f8 str r0, [r7, #12] + 8005c24: 60b9 str r1, [r7, #8] + 8005c26: 603b str r3, [r7, #0] + 8005c28: 4613 mov r3, r2 + 8005c2a: 80fb strh r3, [r7, #6] const uint8_t *pdata8bits; const uint16_t *pdata16bits; uint32_t tickstart = 0U; - 800598c: 2300 movs r3, #0 - 800598e: 617b str r3, [r7, #20] + 8005c2c: 2300 movs r3, #0 + 8005c2e: 617b str r3, [r7, #20] /* Check that a Tx process is not already ongoing */ if (huart->gState == HAL_UART_STATE_READY) - 8005990: 68fb ldr r3, [r7, #12] - 8005992: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 - 8005996: b2db uxtb r3, r3 - 8005998: 2b20 cmp r3, #32 - 800599a: d175 bne.n 8005a88 + 8005c30: 68fb ldr r3, [r7, #12] + 8005c32: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 + 8005c36: b2db uxtb r3, r3 + 8005c38: 2b20 cmp r3, #32 + 8005c3a: d175 bne.n 8005d28 { if ((pData == NULL) || (Size == 0U)) - 800599c: 68bb ldr r3, [r7, #8] - 800599e: 2b00 cmp r3, #0 - 80059a0: d002 beq.n 80059a8 - 80059a2: 88fb ldrh r3, [r7, #6] - 80059a4: 2b00 cmp r3, #0 - 80059a6: d101 bne.n 80059ac + 8005c3c: 68bb ldr r3, [r7, #8] + 8005c3e: 2b00 cmp r3, #0 + 8005c40: d002 beq.n 8005c48 + 8005c42: 88fb ldrh r3, [r7, #6] + 8005c44: 2b00 cmp r3, #0 + 8005c46: d101 bne.n 8005c4c { return HAL_ERROR; - 80059a8: 2301 movs r3, #1 - 80059aa: e06e b.n 8005a8a + 8005c48: 2301 movs r3, #1 + 8005c4a: e06e b.n 8005d2a } huart->ErrorCode = HAL_UART_ERROR_NONE; - 80059ac: 68fb ldr r3, [r7, #12] - 80059ae: 2200 movs r2, #0 - 80059b0: 645a str r2, [r3, #68] @ 0x44 + 8005c4c: 68fb ldr r3, [r7, #12] + 8005c4e: 2200 movs r2, #0 + 8005c50: 645a str r2, [r3, #68] @ 0x44 huart->gState = HAL_UART_STATE_BUSY_TX; - 80059b2: 68fb ldr r3, [r7, #12] - 80059b4: 2221 movs r2, #33 @ 0x21 - 80059b6: f883 2041 strb.w r2, [r3, #65] @ 0x41 + 8005c52: 68fb ldr r3, [r7, #12] + 8005c54: 2221 movs r2, #33 @ 0x21 + 8005c56: f883 2041 strb.w r2, [r3, #65] @ 0x41 /* Init tickstart for timeout management */ tickstart = HAL_GetTick(); - 80059ba: f7fd f8d5 bl 8002b68 - 80059be: 6178 str r0, [r7, #20] + 8005c5a: f7fd f8f9 bl 8002e50 + 8005c5e: 6178 str r0, [r7, #20] huart->TxXferSize = Size; - 80059c0: 68fb ldr r3, [r7, #12] - 80059c2: 88fa ldrh r2, [r7, #6] - 80059c4: 849a strh r2, [r3, #36] @ 0x24 + 8005c60: 68fb ldr r3, [r7, #12] + 8005c62: 88fa ldrh r2, [r7, #6] + 8005c64: 849a strh r2, [r3, #36] @ 0x24 huart->TxXferCount = Size; - 80059c6: 68fb ldr r3, [r7, #12] - 80059c8: 88fa ldrh r2, [r7, #6] - 80059ca: 84da strh r2, [r3, #38] @ 0x26 + 8005c66: 68fb ldr r3, [r7, #12] + 8005c68: 88fa ldrh r2, [r7, #6] + 8005c6a: 84da strh r2, [r3, #38] @ 0x26 /* In case of 9bits/No Parity transfer, pData needs to be handled as a uint16_t pointer */ if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) - 80059cc: 68fb ldr r3, [r7, #12] - 80059ce: 689b ldr r3, [r3, #8] - 80059d0: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 80059d4: d108 bne.n 80059e8 - 80059d6: 68fb ldr r3, [r7, #12] - 80059d8: 691b ldr r3, [r3, #16] - 80059da: 2b00 cmp r3, #0 - 80059dc: d104 bne.n 80059e8 + 8005c6c: 68fb ldr r3, [r7, #12] + 8005c6e: 689b ldr r3, [r3, #8] + 8005c70: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 8005c74: d108 bne.n 8005c88 + 8005c76: 68fb ldr r3, [r7, #12] + 8005c78: 691b ldr r3, [r3, #16] + 8005c7a: 2b00 cmp r3, #0 + 8005c7c: d104 bne.n 8005c88 { pdata8bits = NULL; - 80059de: 2300 movs r3, #0 - 80059e0: 61fb str r3, [r7, #28] + 8005c7e: 2300 movs r3, #0 + 8005c80: 61fb str r3, [r7, #28] pdata16bits = (const uint16_t *) pData; - 80059e2: 68bb ldr r3, [r7, #8] - 80059e4: 61bb str r3, [r7, #24] - 80059e6: e003 b.n 80059f0 + 8005c82: 68bb ldr r3, [r7, #8] + 8005c84: 61bb str r3, [r7, #24] + 8005c86: e003 b.n 8005c90 } else { pdata8bits = pData; - 80059e8: 68bb ldr r3, [r7, #8] - 80059ea: 61fb str r3, [r7, #28] + 8005c88: 68bb ldr r3, [r7, #8] + 8005c8a: 61fb str r3, [r7, #28] pdata16bits = NULL; - 80059ec: 2300 movs r3, #0 - 80059ee: 61bb str r3, [r7, #24] + 8005c8c: 2300 movs r3, #0 + 8005c8e: 61bb str r3, [r7, #24] } while (huart->TxXferCount > 0U) - 80059f0: e02e b.n 8005a50 + 8005c90: e02e b.n 8005cf0 { if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) - 80059f2: 683b ldr r3, [r7, #0] - 80059f4: 9300 str r3, [sp, #0] - 80059f6: 697b ldr r3, [r7, #20] - 80059f8: 2200 movs r2, #0 - 80059fa: 2180 movs r1, #128 @ 0x80 - 80059fc: 68f8 ldr r0, [r7, #12] - 80059fe: f000 fb01 bl 8006004 - 8005a02: 4603 mov r3, r0 - 8005a04: 2b00 cmp r3, #0 - 8005a06: d005 beq.n 8005a14 + 8005c92: 683b ldr r3, [r7, #0] + 8005c94: 9300 str r3, [sp, #0] + 8005c96: 697b ldr r3, [r7, #20] + 8005c98: 2200 movs r2, #0 + 8005c9a: 2180 movs r1, #128 @ 0x80 + 8005c9c: 68f8 ldr r0, [r7, #12] + 8005c9e: f000 fb01 bl 80062a4 + 8005ca2: 4603 mov r3, r0 + 8005ca4: 2b00 cmp r3, #0 + 8005ca6: d005 beq.n 8005cb4 { huart->gState = HAL_UART_STATE_READY; - 8005a08: 68fb ldr r3, [r7, #12] - 8005a0a: 2220 movs r2, #32 - 8005a0c: f883 2041 strb.w r2, [r3, #65] @ 0x41 + 8005ca8: 68fb ldr r3, [r7, #12] + 8005caa: 2220 movs r2, #32 + 8005cac: f883 2041 strb.w r2, [r3, #65] @ 0x41 return HAL_TIMEOUT; - 8005a10: 2303 movs r3, #3 - 8005a12: e03a b.n 8005a8a + 8005cb0: 2303 movs r3, #3 + 8005cb2: e03a b.n 8005d2a } if (pdata8bits == NULL) - 8005a14: 69fb ldr r3, [r7, #28] - 8005a16: 2b00 cmp r3, #0 - 8005a18: d10b bne.n 8005a32 + 8005cb4: 69fb ldr r3, [r7, #28] + 8005cb6: 2b00 cmp r3, #0 + 8005cb8: d10b bne.n 8005cd2 { huart->Instance->DR = (uint16_t)(*pdata16bits & 0x01FFU); - 8005a1a: 69bb ldr r3, [r7, #24] - 8005a1c: 881b ldrh r3, [r3, #0] - 8005a1e: 461a mov r2, r3 - 8005a20: 68fb ldr r3, [r7, #12] - 8005a22: 681b ldr r3, [r3, #0] - 8005a24: f3c2 0208 ubfx r2, r2, #0, #9 - 8005a28: 605a str r2, [r3, #4] + 8005cba: 69bb ldr r3, [r7, #24] + 8005cbc: 881b ldrh r3, [r3, #0] + 8005cbe: 461a mov r2, r3 + 8005cc0: 68fb ldr r3, [r7, #12] + 8005cc2: 681b ldr r3, [r3, #0] + 8005cc4: f3c2 0208 ubfx r2, r2, #0, #9 + 8005cc8: 605a str r2, [r3, #4] pdata16bits++; - 8005a2a: 69bb ldr r3, [r7, #24] - 8005a2c: 3302 adds r3, #2 - 8005a2e: 61bb str r3, [r7, #24] - 8005a30: e007 b.n 8005a42 + 8005cca: 69bb ldr r3, [r7, #24] + 8005ccc: 3302 adds r3, #2 + 8005cce: 61bb str r3, [r7, #24] + 8005cd0: e007 b.n 8005ce2 } else { huart->Instance->DR = (uint8_t)(*pdata8bits & 0xFFU); - 8005a32: 69fb ldr r3, [r7, #28] - 8005a34: 781a ldrb r2, [r3, #0] - 8005a36: 68fb ldr r3, [r7, #12] - 8005a38: 681b ldr r3, [r3, #0] - 8005a3a: 605a str r2, [r3, #4] + 8005cd2: 69fb ldr r3, [r7, #28] + 8005cd4: 781a ldrb r2, [r3, #0] + 8005cd6: 68fb ldr r3, [r7, #12] + 8005cd8: 681b ldr r3, [r3, #0] + 8005cda: 605a str r2, [r3, #4] pdata8bits++; - 8005a3c: 69fb ldr r3, [r7, #28] - 8005a3e: 3301 adds r3, #1 - 8005a40: 61fb str r3, [r7, #28] + 8005cdc: 69fb ldr r3, [r7, #28] + 8005cde: 3301 adds r3, #1 + 8005ce0: 61fb str r3, [r7, #28] } huart->TxXferCount--; - 8005a42: 68fb ldr r3, [r7, #12] - 8005a44: 8cdb ldrh r3, [r3, #38] @ 0x26 - 8005a46: b29b uxth r3, r3 - 8005a48: 3b01 subs r3, #1 - 8005a4a: b29a uxth r2, r3 - 8005a4c: 68fb ldr r3, [r7, #12] - 8005a4e: 84da strh r2, [r3, #38] @ 0x26 + 8005ce2: 68fb ldr r3, [r7, #12] + 8005ce4: 8cdb ldrh r3, [r3, #38] @ 0x26 + 8005ce6: b29b uxth r3, r3 + 8005ce8: 3b01 subs r3, #1 + 8005cea: b29a uxth r2, r3 + 8005cec: 68fb ldr r3, [r7, #12] + 8005cee: 84da strh r2, [r3, #38] @ 0x26 while (huart->TxXferCount > 0U) - 8005a50: 68fb ldr r3, [r7, #12] - 8005a52: 8cdb ldrh r3, [r3, #38] @ 0x26 - 8005a54: b29b uxth r3, r3 - 8005a56: 2b00 cmp r3, #0 - 8005a58: d1cb bne.n 80059f2 + 8005cf0: 68fb ldr r3, [r7, #12] + 8005cf2: 8cdb ldrh r3, [r3, #38] @ 0x26 + 8005cf4: b29b uxth r3, r3 + 8005cf6: 2b00 cmp r3, #0 + 8005cf8: d1cb bne.n 8005c92 } if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK) - 8005a5a: 683b ldr r3, [r7, #0] - 8005a5c: 9300 str r3, [sp, #0] - 8005a5e: 697b ldr r3, [r7, #20] - 8005a60: 2200 movs r2, #0 - 8005a62: 2140 movs r1, #64 @ 0x40 - 8005a64: 68f8 ldr r0, [r7, #12] - 8005a66: f000 facd bl 8006004 - 8005a6a: 4603 mov r3, r0 - 8005a6c: 2b00 cmp r3, #0 - 8005a6e: d005 beq.n 8005a7c + 8005cfa: 683b ldr r3, [r7, #0] + 8005cfc: 9300 str r3, [sp, #0] + 8005cfe: 697b ldr r3, [r7, #20] + 8005d00: 2200 movs r2, #0 + 8005d02: 2140 movs r1, #64 @ 0x40 + 8005d04: 68f8 ldr r0, [r7, #12] + 8005d06: f000 facd bl 80062a4 + 8005d0a: 4603 mov r3, r0 + 8005d0c: 2b00 cmp r3, #0 + 8005d0e: d005 beq.n 8005d1c { huart->gState = HAL_UART_STATE_READY; - 8005a70: 68fb ldr r3, [r7, #12] - 8005a72: 2220 movs r2, #32 - 8005a74: f883 2041 strb.w r2, [r3, #65] @ 0x41 + 8005d10: 68fb ldr r3, [r7, #12] + 8005d12: 2220 movs r2, #32 + 8005d14: f883 2041 strb.w r2, [r3, #65] @ 0x41 return HAL_TIMEOUT; - 8005a78: 2303 movs r3, #3 - 8005a7a: e006 b.n 8005a8a + 8005d18: 2303 movs r3, #3 + 8005d1a: e006 b.n 8005d2a } /* At end of Tx process, restore huart->gState to Ready */ huart->gState = HAL_UART_STATE_READY; - 8005a7c: 68fb ldr r3, [r7, #12] - 8005a7e: 2220 movs r2, #32 - 8005a80: f883 2041 strb.w r2, [r3, #65] @ 0x41 + 8005d1c: 68fb ldr r3, [r7, #12] + 8005d1e: 2220 movs r2, #32 + 8005d20: f883 2041 strb.w r2, [r3, #65] @ 0x41 return HAL_OK; - 8005a84: 2300 movs r3, #0 - 8005a86: e000 b.n 8005a8a + 8005d24: 2300 movs r3, #0 + 8005d26: e000 b.n 8005d2a } else { return HAL_BUSY; - 8005a88: 2302 movs r3, #2 + 8005d28: 2302 movs r3, #2 } } - 8005a8a: 4618 mov r0, r3 - 8005a8c: 3720 adds r7, #32 - 8005a8e: 46bd mov sp, r7 - 8005a90: bd80 pop {r7, pc} + 8005d2a: 4618 mov r0, r3 + 8005d2c: 3720 adds r7, #32 + 8005d2e: 46bd mov sp, r7 + 8005d30: bd80 pop {r7, pc} ... -08005a94 : +08005d34 : * @param huart Pointer to a UART_HandleTypeDef structure that contains * the configuration information for the specified UART module. * @retval None */ void HAL_UART_IRQHandler(UART_HandleTypeDef *huart) { - 8005a94: b580 push {r7, lr} - 8005a96: b0ba sub sp, #232 @ 0xe8 - 8005a98: af00 add r7, sp, #0 - 8005a9a: 6078 str r0, [r7, #4] + 8005d34: b580 push {r7, lr} + 8005d36: b0ba sub sp, #232 @ 0xe8 + 8005d38: af00 add r7, sp, #0 + 8005d3a: 6078 str r0, [r7, #4] uint32_t isrflags = READ_REG(huart->Instance->SR); - 8005a9c: 687b ldr r3, [r7, #4] - 8005a9e: 681b ldr r3, [r3, #0] - 8005aa0: 681b ldr r3, [r3, #0] - 8005aa2: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 + 8005d3c: 687b ldr r3, [r7, #4] + 8005d3e: 681b ldr r3, [r3, #0] + 8005d40: 681b ldr r3, [r3, #0] + 8005d42: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 uint32_t cr1its = READ_REG(huart->Instance->CR1); - 8005aa6: 687b ldr r3, [r7, #4] - 8005aa8: 681b ldr r3, [r3, #0] - 8005aaa: 68db ldr r3, [r3, #12] - 8005aac: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 + 8005d46: 687b ldr r3, [r7, #4] + 8005d48: 681b ldr r3, [r3, #0] + 8005d4a: 68db ldr r3, [r3, #12] + 8005d4c: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 uint32_t cr3its = READ_REG(huart->Instance->CR3); - 8005ab0: 687b ldr r3, [r7, #4] - 8005ab2: 681b ldr r3, [r3, #0] - 8005ab4: 695b ldr r3, [r3, #20] - 8005ab6: f8c7 30dc str.w r3, [r7, #220] @ 0xdc + 8005d50: 687b ldr r3, [r7, #4] + 8005d52: 681b ldr r3, [r3, #0] + 8005d54: 695b ldr r3, [r3, #20] + 8005d56: f8c7 30dc str.w r3, [r7, #220] @ 0xdc uint32_t errorflags = 0x00U; - 8005aba: 2300 movs r3, #0 - 8005abc: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 + 8005d5a: 2300 movs r3, #0 + 8005d5c: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 uint32_t dmarequest = 0x00U; - 8005ac0: 2300 movs r3, #0 - 8005ac2: f8c7 30d4 str.w r3, [r7, #212] @ 0xd4 + 8005d60: 2300 movs r3, #0 + 8005d62: f8c7 30d4 str.w r3, [r7, #212] @ 0xd4 /* If no error occurs */ errorflags = (isrflags & (uint32_t)(USART_SR_PE | USART_SR_FE | USART_SR_ORE | USART_SR_NE)); - 8005ac6: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 8005aca: f003 030f and.w r3, r3, #15 - 8005ace: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 + 8005d66: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 8005d6a: f003 030f and.w r3, r3, #15 + 8005d6e: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 if (errorflags == RESET) - 8005ad2: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 - 8005ad6: 2b00 cmp r3, #0 - 8005ad8: d10f bne.n 8005afa + 8005d72: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 + 8005d76: 2b00 cmp r3, #0 + 8005d78: d10f bne.n 8005d9a { /* UART in mode Receiver -------------------------------------------------*/ if (((isrflags & USART_SR_RXNE) != RESET) && ((cr1its & USART_CR1_RXNEIE) != RESET)) - 8005ada: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 8005ade: f003 0320 and.w r3, r3, #32 - 8005ae2: 2b00 cmp r3, #0 - 8005ae4: d009 beq.n 8005afa - 8005ae6: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 8005aea: f003 0320 and.w r3, r3, #32 - 8005aee: 2b00 cmp r3, #0 - 8005af0: d003 beq.n 8005afa + 8005d7a: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 8005d7e: f003 0320 and.w r3, r3, #32 + 8005d82: 2b00 cmp r3, #0 + 8005d84: d009 beq.n 8005d9a + 8005d86: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 8005d8a: f003 0320 and.w r3, r3, #32 + 8005d8e: 2b00 cmp r3, #0 + 8005d90: d003 beq.n 8005d9a { UART_Receive_IT(huart); - 8005af2: 6878 ldr r0, [r7, #4] - 8005af4: f000 fbbc bl 8006270 + 8005d92: 6878 ldr r0, [r7, #4] + 8005d94: f000 fbbc bl 8006510 return; - 8005af8: e25b b.n 8005fb2 + 8005d98: e25b b.n 8006252 } } /* If some errors occur */ if ((errorflags != RESET) && (((cr3its & USART_CR3_EIE) != RESET) - 8005afa: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 - 8005afe: 2b00 cmp r3, #0 - 8005b00: f000 80de beq.w 8005cc0 - 8005b04: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc - 8005b08: f003 0301 and.w r3, r3, #1 - 8005b0c: 2b00 cmp r3, #0 - 8005b0e: d106 bne.n 8005b1e + 8005d9a: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 + 8005d9e: 2b00 cmp r3, #0 + 8005da0: f000 80de beq.w 8005f60 + 8005da4: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc + 8005da8: f003 0301 and.w r3, r3, #1 + 8005dac: 2b00 cmp r3, #0 + 8005dae: d106 bne.n 8005dbe || ((cr1its & (USART_CR1_RXNEIE | USART_CR1_PEIE)) != RESET))) - 8005b10: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 8005b14: f403 7390 and.w r3, r3, #288 @ 0x120 - 8005b18: 2b00 cmp r3, #0 - 8005b1a: f000 80d1 beq.w 8005cc0 + 8005db0: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 8005db4: f403 7390 and.w r3, r3, #288 @ 0x120 + 8005db8: 2b00 cmp r3, #0 + 8005dba: f000 80d1 beq.w 8005f60 { /* UART parity error interrupt occurred ----------------------------------*/ if (((isrflags & USART_SR_PE) != RESET) && ((cr1its & USART_CR1_PEIE) != RESET)) - 8005b1e: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 8005b22: f003 0301 and.w r3, r3, #1 - 8005b26: 2b00 cmp r3, #0 - 8005b28: d00b beq.n 8005b42 - 8005b2a: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 8005b2e: f403 7380 and.w r3, r3, #256 @ 0x100 - 8005b32: 2b00 cmp r3, #0 - 8005b34: d005 beq.n 8005b42 + 8005dbe: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 8005dc2: f003 0301 and.w r3, r3, #1 + 8005dc6: 2b00 cmp r3, #0 + 8005dc8: d00b beq.n 8005de2 + 8005dca: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 8005dce: f403 7380 and.w r3, r3, #256 @ 0x100 + 8005dd2: 2b00 cmp r3, #0 + 8005dd4: d005 beq.n 8005de2 { huart->ErrorCode |= HAL_UART_ERROR_PE; - 8005b36: 687b ldr r3, [r7, #4] - 8005b38: 6c5b ldr r3, [r3, #68] @ 0x44 - 8005b3a: f043 0201 orr.w r2, r3, #1 - 8005b3e: 687b ldr r3, [r7, #4] - 8005b40: 645a str r2, [r3, #68] @ 0x44 + 8005dd6: 687b ldr r3, [r7, #4] + 8005dd8: 6c5b ldr r3, [r3, #68] @ 0x44 + 8005dda: f043 0201 orr.w r2, r3, #1 + 8005dde: 687b ldr r3, [r7, #4] + 8005de0: 645a str r2, [r3, #68] @ 0x44 } /* UART noise error interrupt occurred -----------------------------------*/ if (((isrflags & USART_SR_NE) != RESET) && ((cr3its & USART_CR3_EIE) != RESET)) - 8005b42: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 8005b46: f003 0304 and.w r3, r3, #4 - 8005b4a: 2b00 cmp r3, #0 - 8005b4c: d00b beq.n 8005b66 - 8005b4e: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc - 8005b52: f003 0301 and.w r3, r3, #1 - 8005b56: 2b00 cmp r3, #0 - 8005b58: d005 beq.n 8005b66 + 8005de2: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 8005de6: f003 0304 and.w r3, r3, #4 + 8005dea: 2b00 cmp r3, #0 + 8005dec: d00b beq.n 8005e06 + 8005dee: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc + 8005df2: f003 0301 and.w r3, r3, #1 + 8005df6: 2b00 cmp r3, #0 + 8005df8: d005 beq.n 8005e06 { huart->ErrorCode |= HAL_UART_ERROR_NE; - 8005b5a: 687b ldr r3, [r7, #4] - 8005b5c: 6c5b ldr r3, [r3, #68] @ 0x44 - 8005b5e: f043 0202 orr.w r2, r3, #2 - 8005b62: 687b ldr r3, [r7, #4] - 8005b64: 645a str r2, [r3, #68] @ 0x44 + 8005dfa: 687b ldr r3, [r7, #4] + 8005dfc: 6c5b ldr r3, [r3, #68] @ 0x44 + 8005dfe: f043 0202 orr.w r2, r3, #2 + 8005e02: 687b ldr r3, [r7, #4] + 8005e04: 645a str r2, [r3, #68] @ 0x44 } /* UART frame error interrupt occurred -----------------------------------*/ if (((isrflags & USART_SR_FE) != RESET) && ((cr3its & USART_CR3_EIE) != RESET)) - 8005b66: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 8005b6a: f003 0302 and.w r3, r3, #2 - 8005b6e: 2b00 cmp r3, #0 - 8005b70: d00b beq.n 8005b8a - 8005b72: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc - 8005b76: f003 0301 and.w r3, r3, #1 - 8005b7a: 2b00 cmp r3, #0 - 8005b7c: d005 beq.n 8005b8a + 8005e06: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 8005e0a: f003 0302 and.w r3, r3, #2 + 8005e0e: 2b00 cmp r3, #0 + 8005e10: d00b beq.n 8005e2a + 8005e12: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc + 8005e16: f003 0301 and.w r3, r3, #1 + 8005e1a: 2b00 cmp r3, #0 + 8005e1c: d005 beq.n 8005e2a { huart->ErrorCode |= HAL_UART_ERROR_FE; - 8005b7e: 687b ldr r3, [r7, #4] - 8005b80: 6c5b ldr r3, [r3, #68] @ 0x44 - 8005b82: f043 0204 orr.w r2, r3, #4 - 8005b86: 687b ldr r3, [r7, #4] - 8005b88: 645a str r2, [r3, #68] @ 0x44 + 8005e1e: 687b ldr r3, [r7, #4] + 8005e20: 6c5b ldr r3, [r3, #68] @ 0x44 + 8005e22: f043 0204 orr.w r2, r3, #4 + 8005e26: 687b ldr r3, [r7, #4] + 8005e28: 645a str r2, [r3, #68] @ 0x44 } /* UART Over-Run interrupt occurred --------------------------------------*/ if (((isrflags & USART_SR_ORE) != RESET) && (((cr1its & USART_CR1_RXNEIE) != RESET) - 8005b8a: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 8005b8e: f003 0308 and.w r3, r3, #8 - 8005b92: 2b00 cmp r3, #0 - 8005b94: d011 beq.n 8005bba - 8005b96: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 8005b9a: f003 0320 and.w r3, r3, #32 - 8005b9e: 2b00 cmp r3, #0 - 8005ba0: d105 bne.n 8005bae + 8005e2a: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 8005e2e: f003 0308 and.w r3, r3, #8 + 8005e32: 2b00 cmp r3, #0 + 8005e34: d011 beq.n 8005e5a + 8005e36: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 8005e3a: f003 0320 and.w r3, r3, #32 + 8005e3e: 2b00 cmp r3, #0 + 8005e40: d105 bne.n 8005e4e || ((cr3its & USART_CR3_EIE) != RESET))) - 8005ba2: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc - 8005ba6: f003 0301 and.w r3, r3, #1 - 8005baa: 2b00 cmp r3, #0 - 8005bac: d005 beq.n 8005bba + 8005e42: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc + 8005e46: f003 0301 and.w r3, r3, #1 + 8005e4a: 2b00 cmp r3, #0 + 8005e4c: d005 beq.n 8005e5a { huart->ErrorCode |= HAL_UART_ERROR_ORE; - 8005bae: 687b ldr r3, [r7, #4] - 8005bb0: 6c5b ldr r3, [r3, #68] @ 0x44 - 8005bb2: f043 0208 orr.w r2, r3, #8 - 8005bb6: 687b ldr r3, [r7, #4] - 8005bb8: 645a str r2, [r3, #68] @ 0x44 + 8005e4e: 687b ldr r3, [r7, #4] + 8005e50: 6c5b ldr r3, [r3, #68] @ 0x44 + 8005e52: f043 0208 orr.w r2, r3, #8 + 8005e56: 687b ldr r3, [r7, #4] + 8005e58: 645a str r2, [r3, #68] @ 0x44 } /* Call UART Error Call back function if need be --------------------------*/ if (huart->ErrorCode != HAL_UART_ERROR_NONE) - 8005bba: 687b ldr r3, [r7, #4] - 8005bbc: 6c5b ldr r3, [r3, #68] @ 0x44 - 8005bbe: 2b00 cmp r3, #0 - 8005bc0: f000 81f2 beq.w 8005fa8 + 8005e5a: 687b ldr r3, [r7, #4] + 8005e5c: 6c5b ldr r3, [r3, #68] @ 0x44 + 8005e5e: 2b00 cmp r3, #0 + 8005e60: f000 81f2 beq.w 8006248 { /* UART in mode Receiver -----------------------------------------------*/ if (((isrflags & USART_SR_RXNE) != RESET) && ((cr1its & USART_CR1_RXNEIE) != RESET)) - 8005bc4: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 8005bc8: f003 0320 and.w r3, r3, #32 - 8005bcc: 2b00 cmp r3, #0 - 8005bce: d008 beq.n 8005be2 - 8005bd0: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 8005bd4: f003 0320 and.w r3, r3, #32 - 8005bd8: 2b00 cmp r3, #0 - 8005bda: d002 beq.n 8005be2 + 8005e64: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 8005e68: f003 0320 and.w r3, r3, #32 + 8005e6c: 2b00 cmp r3, #0 + 8005e6e: d008 beq.n 8005e82 + 8005e70: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 8005e74: f003 0320 and.w r3, r3, #32 + 8005e78: 2b00 cmp r3, #0 + 8005e7a: d002 beq.n 8005e82 { UART_Receive_IT(huart); - 8005bdc: 6878 ldr r0, [r7, #4] - 8005bde: f000 fb47 bl 8006270 + 8005e7c: 6878 ldr r0, [r7, #4] + 8005e7e: f000 fb47 bl 8006510 } /* If Overrun error occurs, or if any error occurs in DMA mode reception, consider error as blocking */ dmarequest = HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR); - 8005be2: 687b ldr r3, [r7, #4] - 8005be4: 681b ldr r3, [r3, #0] - 8005be6: 695b ldr r3, [r3, #20] - 8005be8: f003 0340 and.w r3, r3, #64 @ 0x40 - 8005bec: 2b00 cmp r3, #0 - 8005bee: bf14 ite ne - 8005bf0: 2301 movne r3, #1 - 8005bf2: 2300 moveq r3, #0 - 8005bf4: b2db uxtb r3, r3 - 8005bf6: f8c7 30d4 str.w r3, [r7, #212] @ 0xd4 + 8005e82: 687b ldr r3, [r7, #4] + 8005e84: 681b ldr r3, [r3, #0] + 8005e86: 695b ldr r3, [r3, #20] + 8005e88: f003 0340 and.w r3, r3, #64 @ 0x40 + 8005e8c: 2b00 cmp r3, #0 + 8005e8e: bf14 ite ne + 8005e90: 2301 movne r3, #1 + 8005e92: 2300 moveq r3, #0 + 8005e94: b2db uxtb r3, r3 + 8005e96: f8c7 30d4 str.w r3, [r7, #212] @ 0xd4 if (((huart->ErrorCode & HAL_UART_ERROR_ORE) != RESET) || dmarequest) - 8005bfa: 687b ldr r3, [r7, #4] - 8005bfc: 6c5b ldr r3, [r3, #68] @ 0x44 - 8005bfe: f003 0308 and.w r3, r3, #8 - 8005c02: 2b00 cmp r3, #0 - 8005c04: d103 bne.n 8005c0e - 8005c06: f8d7 30d4 ldr.w r3, [r7, #212] @ 0xd4 - 8005c0a: 2b00 cmp r3, #0 - 8005c0c: d04f beq.n 8005cae + 8005e9a: 687b ldr r3, [r7, #4] + 8005e9c: 6c5b ldr r3, [r3, #68] @ 0x44 + 8005e9e: f003 0308 and.w r3, r3, #8 + 8005ea2: 2b00 cmp r3, #0 + 8005ea4: d103 bne.n 8005eae + 8005ea6: f8d7 30d4 ldr.w r3, [r7, #212] @ 0xd4 + 8005eaa: 2b00 cmp r3, #0 + 8005eac: d04f beq.n 8005f4e { /* Blocking error : transfer is aborted Set the UART state ready to be able to start again the process, Disable Rx Interrupts, and disable Rx DMA request, if ongoing */ UART_EndRxTransfer(huart); - 8005c0e: 6878 ldr r0, [r7, #4] - 8005c10: f000 fa51 bl 80060b6 + 8005eae: 6878 ldr r0, [r7, #4] + 8005eb0: f000 fa51 bl 8006356 /* Disable the UART DMA Rx request if enabled */ if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) - 8005c14: 687b ldr r3, [r7, #4] - 8005c16: 681b ldr r3, [r3, #0] - 8005c18: 695b ldr r3, [r3, #20] - 8005c1a: f003 0340 and.w r3, r3, #64 @ 0x40 - 8005c1e: 2b00 cmp r3, #0 - 8005c20: d041 beq.n 8005ca6 + 8005eb4: 687b ldr r3, [r7, #4] + 8005eb6: 681b ldr r3, [r3, #0] + 8005eb8: 695b ldr r3, [r3, #20] + 8005eba: f003 0340 and.w r3, r3, #64 @ 0x40 + 8005ebe: 2b00 cmp r3, #0 + 8005ec0: d041 beq.n 8005f46 { ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); - 8005c22: 687b ldr r3, [r7, #4] - 8005c24: 681b ldr r3, [r3, #0] - 8005c26: 3314 adds r3, #20 - 8005c28: f8c7 309c str.w r3, [r7, #156] @ 0x9c + 8005ec2: 687b ldr r3, [r7, #4] + 8005ec4: 681b ldr r3, [r3, #0] + 8005ec6: 3314 adds r3, #20 + 8005ec8: f8c7 309c str.w r3, [r7, #156] @ 0x9c */ __STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr) { uint32_t result; __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 8005c2c: f8d7 309c ldr.w r3, [r7, #156] @ 0x9c - 8005c30: e853 3f00 ldrex r3, [r3] - 8005c34: f8c7 3098 str.w r3, [r7, #152] @ 0x98 + 8005ecc: f8d7 309c ldr.w r3, [r7, #156] @ 0x9c + 8005ed0: e853 3f00 ldrex r3, [r3] + 8005ed4: f8c7 3098 str.w r3, [r7, #152] @ 0x98 return(result); - 8005c38: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 - 8005c3c: f023 0340 bic.w r3, r3, #64 @ 0x40 - 8005c40: f8c7 30d0 str.w r3, [r7, #208] @ 0xd0 - 8005c44: 687b ldr r3, [r7, #4] - 8005c46: 681b ldr r3, [r3, #0] - 8005c48: 3314 adds r3, #20 - 8005c4a: f8d7 20d0 ldr.w r2, [r7, #208] @ 0xd0 - 8005c4e: f8c7 20a8 str.w r2, [r7, #168] @ 0xa8 - 8005c52: f8c7 30a4 str.w r3, [r7, #164] @ 0xa4 + 8005ed8: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 + 8005edc: f023 0340 bic.w r3, r3, #64 @ 0x40 + 8005ee0: f8c7 30d0 str.w r3, [r7, #208] @ 0xd0 + 8005ee4: 687b ldr r3, [r7, #4] + 8005ee6: 681b ldr r3, [r3, #0] + 8005ee8: 3314 adds r3, #20 + 8005eea: f8d7 20d0 ldr.w r2, [r7, #208] @ 0xd0 + 8005eee: f8c7 20a8 str.w r2, [r7, #168] @ 0xa8 + 8005ef2: f8c7 30a4 str.w r3, [r7, #164] @ 0xa4 */ __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) ); - 8005c56: f8d7 10a4 ldr.w r1, [r7, #164] @ 0xa4 - 8005c5a: f8d7 20a8 ldr.w r2, [r7, #168] @ 0xa8 - 8005c5e: e841 2300 strex r3, r2, [r1] - 8005c62: f8c7 30a0 str.w r3, [r7, #160] @ 0xa0 + 8005ef6: f8d7 10a4 ldr.w r1, [r7, #164] @ 0xa4 + 8005efa: f8d7 20a8 ldr.w r2, [r7, #168] @ 0xa8 + 8005efe: e841 2300 strex r3, r2, [r1] + 8005f02: f8c7 30a0 str.w r3, [r7, #160] @ 0xa0 return(result); - 8005c66: f8d7 30a0 ldr.w r3, [r7, #160] @ 0xa0 - 8005c6a: 2b00 cmp r3, #0 - 8005c6c: d1d9 bne.n 8005c22 + 8005f06: f8d7 30a0 ldr.w r3, [r7, #160] @ 0xa0 + 8005f0a: 2b00 cmp r3, #0 + 8005f0c: d1d9 bne.n 8005ec2 /* Abort the UART DMA Rx channel */ if (huart->hdmarx != NULL) - 8005c6e: 687b ldr r3, [r7, #4] - 8005c70: 6bdb ldr r3, [r3, #60] @ 0x3c - 8005c72: 2b00 cmp r3, #0 - 8005c74: d013 beq.n 8005c9e + 8005f0e: 687b ldr r3, [r7, #4] + 8005f10: 6bdb ldr r3, [r3, #60] @ 0x3c + 8005f12: 2b00 cmp r3, #0 + 8005f14: d013 beq.n 8005f3e { /* Set the UART DMA Abort callback : will lead to call HAL_UART_ErrorCallback() at end of DMA abort procedure */ huart->hdmarx->XferAbortCallback = UART_DMAAbortOnError; - 8005c76: 687b ldr r3, [r7, #4] - 8005c78: 6bdb ldr r3, [r3, #60] @ 0x3c - 8005c7a: 4a7e ldr r2, [pc, #504] @ (8005e74 ) - 8005c7c: 635a str r2, [r3, #52] @ 0x34 + 8005f16: 687b ldr r3, [r7, #4] + 8005f18: 6bdb ldr r3, [r3, #60] @ 0x3c + 8005f1a: 4a7e ldr r2, [pc, #504] @ (8006114 ) + 8005f1c: 635a str r2, [r3, #52] @ 0x34 if (HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK) - 8005c7e: 687b ldr r3, [r7, #4] - 8005c80: 6bdb ldr r3, [r3, #60] @ 0x3c - 8005c82: 4618 mov r0, r3 - 8005c84: f7fd faf8 bl 8003278 - 8005c88: 4603 mov r3, r0 - 8005c8a: 2b00 cmp r3, #0 - 8005c8c: d016 beq.n 8005cbc + 8005f1e: 687b ldr r3, [r7, #4] + 8005f20: 6bdb ldr r3, [r3, #60] @ 0x3c + 8005f22: 4618 mov r0, r3 + 8005f24: f7fd faf8 bl 8003518 + 8005f28: 4603 mov r3, r0 + 8005f2a: 2b00 cmp r3, #0 + 8005f2c: d016 beq.n 8005f5c { /* Call Directly XferAbortCallback function in case of error */ huart->hdmarx->XferAbortCallback(huart->hdmarx); - 8005c8e: 687b ldr r3, [r7, #4] - 8005c90: 6bdb ldr r3, [r3, #60] @ 0x3c - 8005c92: 6b5b ldr r3, [r3, #52] @ 0x34 - 8005c94: 687a ldr r2, [r7, #4] - 8005c96: 6bd2 ldr r2, [r2, #60] @ 0x3c - 8005c98: 4610 mov r0, r2 - 8005c9a: 4798 blx r3 + 8005f2e: 687b ldr r3, [r7, #4] + 8005f30: 6bdb ldr r3, [r3, #60] @ 0x3c + 8005f32: 6b5b ldr r3, [r3, #52] @ 0x34 + 8005f34: 687a ldr r2, [r7, #4] + 8005f36: 6bd2 ldr r2, [r2, #60] @ 0x3c + 8005f38: 4610 mov r0, r2 + 8005f3a: 4798 blx r3 if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) - 8005c9c: e00e b.n 8005cbc + 8005f3c: e00e b.n 8005f5c #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered error callback*/ huart->ErrorCallback(huart); #else /*Call legacy weak error callback*/ HAL_UART_ErrorCallback(huart); - 8005c9e: 6878 ldr r0, [r7, #4] - 8005ca0: f000 f99c bl 8005fdc + 8005f3e: 6878 ldr r0, [r7, #4] + 8005f40: f000 f99c bl 800627c if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) - 8005ca4: e00a b.n 8005cbc + 8005f44: e00a b.n 8005f5c #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered error callback*/ huart->ErrorCallback(huart); #else /*Call legacy weak error callback*/ HAL_UART_ErrorCallback(huart); - 8005ca6: 6878 ldr r0, [r7, #4] - 8005ca8: f000 f998 bl 8005fdc + 8005f46: 6878 ldr r0, [r7, #4] + 8005f48: f000 f998 bl 800627c if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) - 8005cac: e006 b.n 8005cbc + 8005f4c: e006 b.n 8005f5c #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered error callback*/ huart->ErrorCallback(huart); #else /*Call legacy weak error callback*/ HAL_UART_ErrorCallback(huart); - 8005cae: 6878 ldr r0, [r7, #4] - 8005cb0: f000 f994 bl 8005fdc + 8005f4e: 6878 ldr r0, [r7, #4] + 8005f50: f000 f994 bl 800627c #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ huart->ErrorCode = HAL_UART_ERROR_NONE; - 8005cb4: 687b ldr r3, [r7, #4] - 8005cb6: 2200 movs r2, #0 - 8005cb8: 645a str r2, [r3, #68] @ 0x44 + 8005f54: 687b ldr r3, [r7, #4] + 8005f56: 2200 movs r2, #0 + 8005f58: 645a str r2, [r3, #68] @ 0x44 } } return; - 8005cba: e175 b.n 8005fa8 + 8005f5a: e175 b.n 8006248 if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) - 8005cbc: bf00 nop + 8005f5c: bf00 nop return; - 8005cbe: e173 b.n 8005fa8 + 8005f5e: e173 b.n 8006248 } /* End if some error occurs */ /* Check current reception Mode : If Reception till IDLE event has been selected : */ if ((huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) - 8005cc0: 687b ldr r3, [r7, #4] - 8005cc2: 6b1b ldr r3, [r3, #48] @ 0x30 - 8005cc4: 2b01 cmp r3, #1 - 8005cc6: f040 814f bne.w 8005f68 + 8005f60: 687b ldr r3, [r7, #4] + 8005f62: 6b1b ldr r3, [r3, #48] @ 0x30 + 8005f64: 2b01 cmp r3, #1 + 8005f66: f040 814f bne.w 8006208 && ((isrflags & USART_SR_IDLE) != 0U) - 8005cca: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 8005cce: f003 0310 and.w r3, r3, #16 - 8005cd2: 2b00 cmp r3, #0 - 8005cd4: f000 8148 beq.w 8005f68 + 8005f6a: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 8005f6e: f003 0310 and.w r3, r3, #16 + 8005f72: 2b00 cmp r3, #0 + 8005f74: f000 8148 beq.w 8006208 && ((cr1its & USART_SR_IDLE) != 0U)) - 8005cd8: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 8005cdc: f003 0310 and.w r3, r3, #16 - 8005ce0: 2b00 cmp r3, #0 - 8005ce2: f000 8141 beq.w 8005f68 + 8005f78: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 8005f7c: f003 0310 and.w r3, r3, #16 + 8005f80: 2b00 cmp r3, #0 + 8005f82: f000 8141 beq.w 8006208 { __HAL_UART_CLEAR_IDLEFLAG(huart); - 8005ce6: 2300 movs r3, #0 - 8005ce8: 60bb str r3, [r7, #8] - 8005cea: 687b ldr r3, [r7, #4] - 8005cec: 681b ldr r3, [r3, #0] - 8005cee: 681b ldr r3, [r3, #0] - 8005cf0: 60bb str r3, [r7, #8] - 8005cf2: 687b ldr r3, [r7, #4] - 8005cf4: 681b ldr r3, [r3, #0] - 8005cf6: 685b ldr r3, [r3, #4] - 8005cf8: 60bb str r3, [r7, #8] - 8005cfa: 68bb ldr r3, [r7, #8] + 8005f86: 2300 movs r3, #0 + 8005f88: 60bb str r3, [r7, #8] + 8005f8a: 687b ldr r3, [r7, #4] + 8005f8c: 681b ldr r3, [r3, #0] + 8005f8e: 681b ldr r3, [r3, #0] + 8005f90: 60bb str r3, [r7, #8] + 8005f92: 687b ldr r3, [r7, #4] + 8005f94: 681b ldr r3, [r3, #0] + 8005f96: 685b ldr r3, [r3, #4] + 8005f98: 60bb str r3, [r7, #8] + 8005f9a: 68bb ldr r3, [r7, #8] /* Check if DMA mode is enabled in UART */ if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) - 8005cfc: 687b ldr r3, [r7, #4] - 8005cfe: 681b ldr r3, [r3, #0] - 8005d00: 695b ldr r3, [r3, #20] - 8005d02: f003 0340 and.w r3, r3, #64 @ 0x40 - 8005d06: 2b00 cmp r3, #0 - 8005d08: f000 80b6 beq.w 8005e78 + 8005f9c: 687b ldr r3, [r7, #4] + 8005f9e: 681b ldr r3, [r3, #0] + 8005fa0: 695b ldr r3, [r3, #20] + 8005fa2: f003 0340 and.w r3, r3, #64 @ 0x40 + 8005fa6: 2b00 cmp r3, #0 + 8005fa8: f000 80b6 beq.w 8006118 { /* DMA mode enabled */ /* Check received length : If all expected data are received, do nothing, (DMA cplt callback will be called). Otherwise, if at least one data has already been received, IDLE event is to be notified to user */ uint16_t nb_remaining_rx_data = (uint16_t) __HAL_DMA_GET_COUNTER(huart->hdmarx); - 8005d0c: 687b ldr r3, [r7, #4] - 8005d0e: 6bdb ldr r3, [r3, #60] @ 0x3c - 8005d10: 681b ldr r3, [r3, #0] - 8005d12: 685b ldr r3, [r3, #4] - 8005d14: f8a7 30be strh.w r3, [r7, #190] @ 0xbe + 8005fac: 687b ldr r3, [r7, #4] + 8005fae: 6bdb ldr r3, [r3, #60] @ 0x3c + 8005fb0: 681b ldr r3, [r3, #0] + 8005fb2: 685b ldr r3, [r3, #4] + 8005fb4: f8a7 30be strh.w r3, [r7, #190] @ 0xbe if ((nb_remaining_rx_data > 0U) - 8005d18: f8b7 30be ldrh.w r3, [r7, #190] @ 0xbe - 8005d1c: 2b00 cmp r3, #0 - 8005d1e: f000 8145 beq.w 8005fac + 8005fb8: f8b7 30be ldrh.w r3, [r7, #190] @ 0xbe + 8005fbc: 2b00 cmp r3, #0 + 8005fbe: f000 8145 beq.w 800624c && (nb_remaining_rx_data < huart->RxXferSize)) - 8005d22: 687b ldr r3, [r7, #4] - 8005d24: 8d9b ldrh r3, [r3, #44] @ 0x2c - 8005d26: f8b7 20be ldrh.w r2, [r7, #190] @ 0xbe - 8005d2a: 429a cmp r2, r3 - 8005d2c: f080 813e bcs.w 8005fac + 8005fc2: 687b ldr r3, [r7, #4] + 8005fc4: 8d9b ldrh r3, [r3, #44] @ 0x2c + 8005fc6: f8b7 20be ldrh.w r2, [r7, #190] @ 0xbe + 8005fca: 429a cmp r2, r3 + 8005fcc: f080 813e bcs.w 800624c { /* Reception is not complete */ huart->RxXferCount = nb_remaining_rx_data; - 8005d30: 687b ldr r3, [r7, #4] - 8005d32: f8b7 20be ldrh.w r2, [r7, #190] @ 0xbe - 8005d36: 85da strh r2, [r3, #46] @ 0x2e + 8005fd0: 687b ldr r3, [r7, #4] + 8005fd2: f8b7 20be ldrh.w r2, [r7, #190] @ 0xbe + 8005fd6: 85da strh r2, [r3, #46] @ 0x2e /* In Normal mode, end DMA xfer and HAL UART Rx process*/ if (huart->hdmarx->Init.Mode != DMA_CIRCULAR) - 8005d38: 687b ldr r3, [r7, #4] - 8005d3a: 6bdb ldr r3, [r3, #60] @ 0x3c - 8005d3c: 699b ldr r3, [r3, #24] - 8005d3e: 2b20 cmp r3, #32 - 8005d40: f000 8088 beq.w 8005e54 + 8005fd8: 687b ldr r3, [r7, #4] + 8005fda: 6bdb ldr r3, [r3, #60] @ 0x3c + 8005fdc: 699b ldr r3, [r3, #24] + 8005fde: 2b20 cmp r3, #32 + 8005fe0: f000 8088 beq.w 80060f4 { /* Disable PE and ERR (Frame error, noise error, overrun error) interrupts */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE); - 8005d44: 687b ldr r3, [r7, #4] - 8005d46: 681b ldr r3, [r3, #0] - 8005d48: 330c adds r3, #12 - 8005d4a: f8c7 3088 str.w r3, [r7, #136] @ 0x88 + 8005fe4: 687b ldr r3, [r7, #4] + 8005fe6: 681b ldr r3, [r3, #0] + 8005fe8: 330c adds r3, #12 + 8005fea: f8c7 3088 str.w r3, [r7, #136] @ 0x88 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 8005d4e: f8d7 3088 ldr.w r3, [r7, #136] @ 0x88 - 8005d52: e853 3f00 ldrex r3, [r3] - 8005d56: f8c7 3084 str.w r3, [r7, #132] @ 0x84 + 8005fee: f8d7 3088 ldr.w r3, [r7, #136] @ 0x88 + 8005ff2: e853 3f00 ldrex r3, [r3] + 8005ff6: f8c7 3084 str.w r3, [r7, #132] @ 0x84 return(result); - 8005d5a: f8d7 3084 ldr.w r3, [r7, #132] @ 0x84 - 8005d5e: f423 7380 bic.w r3, r3, #256 @ 0x100 - 8005d62: f8c7 30b8 str.w r3, [r7, #184] @ 0xb8 - 8005d66: 687b ldr r3, [r7, #4] - 8005d68: 681b ldr r3, [r3, #0] - 8005d6a: 330c adds r3, #12 - 8005d6c: f8d7 20b8 ldr.w r2, [r7, #184] @ 0xb8 - 8005d70: f8c7 2094 str.w r2, [r7, #148] @ 0x94 - 8005d74: f8c7 3090 str.w r3, [r7, #144] @ 0x90 + 8005ffa: f8d7 3084 ldr.w r3, [r7, #132] @ 0x84 + 8005ffe: f423 7380 bic.w r3, r3, #256 @ 0x100 + 8006002: f8c7 30b8 str.w r3, [r7, #184] @ 0xb8 + 8006006: 687b ldr r3, [r7, #4] + 8006008: 681b ldr r3, [r3, #0] + 800600a: 330c adds r3, #12 + 800600c: f8d7 20b8 ldr.w r2, [r7, #184] @ 0xb8 + 8006010: f8c7 2094 str.w r2, [r7, #148] @ 0x94 + 8006014: f8c7 3090 str.w r3, [r7, #144] @ 0x90 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 8005d78: f8d7 1090 ldr.w r1, [r7, #144] @ 0x90 - 8005d7c: f8d7 2094 ldr.w r2, [r7, #148] @ 0x94 - 8005d80: e841 2300 strex r3, r2, [r1] - 8005d84: f8c7 308c str.w r3, [r7, #140] @ 0x8c + 8006018: f8d7 1090 ldr.w r1, [r7, #144] @ 0x90 + 800601c: f8d7 2094 ldr.w r2, [r7, #148] @ 0x94 + 8006020: e841 2300 strex r3, r2, [r1] + 8006024: f8c7 308c str.w r3, [r7, #140] @ 0x8c return(result); - 8005d88: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8005d8c: 2b00 cmp r3, #0 - 8005d8e: d1d9 bne.n 8005d44 + 8006028: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 800602c: 2b00 cmp r3, #0 + 800602e: d1d9 bne.n 8005fe4 ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); - 8005d90: 687b ldr r3, [r7, #4] - 8005d92: 681b ldr r3, [r3, #0] - 8005d94: 3314 adds r3, #20 - 8005d96: 677b str r3, [r7, #116] @ 0x74 + 8006030: 687b ldr r3, [r7, #4] + 8006032: 681b ldr r3, [r3, #0] + 8006034: 3314 adds r3, #20 + 8006036: 677b str r3, [r7, #116] @ 0x74 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 8005d98: 6f7b ldr r3, [r7, #116] @ 0x74 - 8005d9a: e853 3f00 ldrex r3, [r3] - 8005d9e: 673b str r3, [r7, #112] @ 0x70 + 8006038: 6f7b ldr r3, [r7, #116] @ 0x74 + 800603a: e853 3f00 ldrex r3, [r3] + 800603e: 673b str r3, [r7, #112] @ 0x70 return(result); - 8005da0: 6f3b ldr r3, [r7, #112] @ 0x70 - 8005da2: f023 0301 bic.w r3, r3, #1 - 8005da6: f8c7 30b4 str.w r3, [r7, #180] @ 0xb4 - 8005daa: 687b ldr r3, [r7, #4] - 8005dac: 681b ldr r3, [r3, #0] - 8005dae: 3314 adds r3, #20 - 8005db0: f8d7 20b4 ldr.w r2, [r7, #180] @ 0xb4 - 8005db4: f8c7 2080 str.w r2, [r7, #128] @ 0x80 - 8005db8: 67fb str r3, [r7, #124] @ 0x7c + 8006040: 6f3b ldr r3, [r7, #112] @ 0x70 + 8006042: f023 0301 bic.w r3, r3, #1 + 8006046: f8c7 30b4 str.w r3, [r7, #180] @ 0xb4 + 800604a: 687b ldr r3, [r7, #4] + 800604c: 681b ldr r3, [r3, #0] + 800604e: 3314 adds r3, #20 + 8006050: f8d7 20b4 ldr.w r2, [r7, #180] @ 0xb4 + 8006054: f8c7 2080 str.w r2, [r7, #128] @ 0x80 + 8006058: 67fb str r3, [r7, #124] @ 0x7c __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 8005dba: 6ff9 ldr r1, [r7, #124] @ 0x7c - 8005dbc: f8d7 2080 ldr.w r2, [r7, #128] @ 0x80 - 8005dc0: e841 2300 strex r3, r2, [r1] - 8005dc4: 67bb str r3, [r7, #120] @ 0x78 + 800605a: 6ff9 ldr r1, [r7, #124] @ 0x7c + 800605c: f8d7 2080 ldr.w r2, [r7, #128] @ 0x80 + 8006060: e841 2300 strex r3, r2, [r1] + 8006064: 67bb str r3, [r7, #120] @ 0x78 return(result); - 8005dc6: 6fbb ldr r3, [r7, #120] @ 0x78 - 8005dc8: 2b00 cmp r3, #0 - 8005dca: d1e1 bne.n 8005d90 + 8006066: 6fbb ldr r3, [r7, #120] @ 0x78 + 8006068: 2b00 cmp r3, #0 + 800606a: d1e1 bne.n 8006030 /* Disable the DMA transfer for the receiver request by resetting the DMAR bit in the UART CR3 register */ ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); - 8005dcc: 687b ldr r3, [r7, #4] - 8005dce: 681b ldr r3, [r3, #0] - 8005dd0: 3314 adds r3, #20 - 8005dd2: 663b str r3, [r7, #96] @ 0x60 + 800606c: 687b ldr r3, [r7, #4] + 800606e: 681b ldr r3, [r3, #0] + 8006070: 3314 adds r3, #20 + 8006072: 663b str r3, [r7, #96] @ 0x60 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 8005dd4: 6e3b ldr r3, [r7, #96] @ 0x60 - 8005dd6: e853 3f00 ldrex r3, [r3] - 8005dda: 65fb str r3, [r7, #92] @ 0x5c + 8006074: 6e3b ldr r3, [r7, #96] @ 0x60 + 8006076: e853 3f00 ldrex r3, [r3] + 800607a: 65fb str r3, [r7, #92] @ 0x5c return(result); - 8005ddc: 6dfb ldr r3, [r7, #92] @ 0x5c - 8005dde: f023 0340 bic.w r3, r3, #64 @ 0x40 - 8005de2: f8c7 30b0 str.w r3, [r7, #176] @ 0xb0 - 8005de6: 687b ldr r3, [r7, #4] - 8005de8: 681b ldr r3, [r3, #0] - 8005dea: 3314 adds r3, #20 - 8005dec: f8d7 20b0 ldr.w r2, [r7, #176] @ 0xb0 - 8005df0: 66fa str r2, [r7, #108] @ 0x6c - 8005df2: 66bb str r3, [r7, #104] @ 0x68 + 800607c: 6dfb ldr r3, [r7, #92] @ 0x5c + 800607e: f023 0340 bic.w r3, r3, #64 @ 0x40 + 8006082: f8c7 30b0 str.w r3, [r7, #176] @ 0xb0 + 8006086: 687b ldr r3, [r7, #4] + 8006088: 681b ldr r3, [r3, #0] + 800608a: 3314 adds r3, #20 + 800608c: f8d7 20b0 ldr.w r2, [r7, #176] @ 0xb0 + 8006090: 66fa str r2, [r7, #108] @ 0x6c + 8006092: 66bb str r3, [r7, #104] @ 0x68 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 8005df4: 6eb9 ldr r1, [r7, #104] @ 0x68 - 8005df6: 6efa ldr r2, [r7, #108] @ 0x6c - 8005df8: e841 2300 strex r3, r2, [r1] - 8005dfc: 667b str r3, [r7, #100] @ 0x64 + 8006094: 6eb9 ldr r1, [r7, #104] @ 0x68 + 8006096: 6efa ldr r2, [r7, #108] @ 0x6c + 8006098: e841 2300 strex r3, r2, [r1] + 800609c: 667b str r3, [r7, #100] @ 0x64 return(result); - 8005dfe: 6e7b ldr r3, [r7, #100] @ 0x64 - 8005e00: 2b00 cmp r3, #0 - 8005e02: d1e3 bne.n 8005dcc + 800609e: 6e7b ldr r3, [r7, #100] @ 0x64 + 80060a0: 2b00 cmp r3, #0 + 80060a2: d1e3 bne.n 800606c /* At end of Rx process, restore huart->RxState to Ready */ huart->RxState = HAL_UART_STATE_READY; - 8005e04: 687b ldr r3, [r7, #4] - 8005e06: 2220 movs r2, #32 - 8005e08: f883 2042 strb.w r2, [r3, #66] @ 0x42 + 80060a4: 687b ldr r3, [r7, #4] + 80060a6: 2220 movs r2, #32 + 80060a8: f883 2042 strb.w r2, [r3, #66] @ 0x42 huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 8005e0c: 687b ldr r3, [r7, #4] - 8005e0e: 2200 movs r2, #0 - 8005e10: 631a str r2, [r3, #48] @ 0x30 + 80060ac: 687b ldr r3, [r7, #4] + 80060ae: 2200 movs r2, #0 + 80060b0: 631a str r2, [r3, #48] @ 0x30 ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); - 8005e12: 687b ldr r3, [r7, #4] - 8005e14: 681b ldr r3, [r3, #0] - 8005e16: 330c adds r3, #12 - 8005e18: 64fb str r3, [r7, #76] @ 0x4c + 80060b2: 687b ldr r3, [r7, #4] + 80060b4: 681b ldr r3, [r3, #0] + 80060b6: 330c adds r3, #12 + 80060b8: 64fb str r3, [r7, #76] @ 0x4c __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 8005e1a: 6cfb ldr r3, [r7, #76] @ 0x4c - 8005e1c: e853 3f00 ldrex r3, [r3] - 8005e20: 64bb str r3, [r7, #72] @ 0x48 + 80060ba: 6cfb ldr r3, [r7, #76] @ 0x4c + 80060bc: e853 3f00 ldrex r3, [r3] + 80060c0: 64bb str r3, [r7, #72] @ 0x48 return(result); - 8005e22: 6cbb ldr r3, [r7, #72] @ 0x48 - 8005e24: f023 0310 bic.w r3, r3, #16 - 8005e28: f8c7 30ac str.w r3, [r7, #172] @ 0xac - 8005e2c: 687b ldr r3, [r7, #4] - 8005e2e: 681b ldr r3, [r3, #0] - 8005e30: 330c adds r3, #12 - 8005e32: f8d7 20ac ldr.w r2, [r7, #172] @ 0xac - 8005e36: 65ba str r2, [r7, #88] @ 0x58 - 8005e38: 657b str r3, [r7, #84] @ 0x54 + 80060c2: 6cbb ldr r3, [r7, #72] @ 0x48 + 80060c4: f023 0310 bic.w r3, r3, #16 + 80060c8: f8c7 30ac str.w r3, [r7, #172] @ 0xac + 80060cc: 687b ldr r3, [r7, #4] + 80060ce: 681b ldr r3, [r3, #0] + 80060d0: 330c adds r3, #12 + 80060d2: f8d7 20ac ldr.w r2, [r7, #172] @ 0xac + 80060d6: 65ba str r2, [r7, #88] @ 0x58 + 80060d8: 657b str r3, [r7, #84] @ 0x54 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 8005e3a: 6d79 ldr r1, [r7, #84] @ 0x54 - 8005e3c: 6dba ldr r2, [r7, #88] @ 0x58 - 8005e3e: e841 2300 strex r3, r2, [r1] - 8005e42: 653b str r3, [r7, #80] @ 0x50 + 80060da: 6d79 ldr r1, [r7, #84] @ 0x54 + 80060dc: 6dba ldr r2, [r7, #88] @ 0x58 + 80060de: e841 2300 strex r3, r2, [r1] + 80060e2: 653b str r3, [r7, #80] @ 0x50 return(result); - 8005e44: 6d3b ldr r3, [r7, #80] @ 0x50 - 8005e46: 2b00 cmp r3, #0 - 8005e48: d1e3 bne.n 8005e12 + 80060e4: 6d3b ldr r3, [r7, #80] @ 0x50 + 80060e6: 2b00 cmp r3, #0 + 80060e8: d1e3 bne.n 80060b2 /* Last bytes received, so no need as the abort is immediate */ (void)HAL_DMA_Abort(huart->hdmarx); - 8005e4a: 687b ldr r3, [r7, #4] - 8005e4c: 6bdb ldr r3, [r3, #60] @ 0x3c - 8005e4e: 4618 mov r0, r3 - 8005e50: f7fd f9d7 bl 8003202 + 80060ea: 687b ldr r3, [r7, #4] + 80060ec: 6bdb ldr r3, [r3, #60] @ 0x3c + 80060ee: 4618 mov r0, r3 + 80060f0: f7fd f9d7 bl 80034a2 } /* Initialize type of RxEvent that correspond to RxEvent callback execution; In this case, Rx Event type is Idle Event */ huart->RxEventType = HAL_UART_RXEVENT_IDLE; - 8005e54: 687b ldr r3, [r7, #4] - 8005e56: 2202 movs r2, #2 - 8005e58: 635a str r2, [r3, #52] @ 0x34 + 80060f4: 687b ldr r3, [r7, #4] + 80060f6: 2202 movs r2, #2 + 80060f8: 635a str r2, [r3, #52] @ 0x34 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered Rx Event callback*/ huart->RxEventCallback(huart, (huart->RxXferSize - huart->RxXferCount)); #else /*Call legacy weak Rx Event callback*/ HAL_UARTEx_RxEventCallback(huart, (huart->RxXferSize - huart->RxXferCount)); - 8005e5a: 687b ldr r3, [r7, #4] - 8005e5c: 8d9a ldrh r2, [r3, #44] @ 0x2c - 8005e5e: 687b ldr r3, [r7, #4] - 8005e60: 8ddb ldrh r3, [r3, #46] @ 0x2e - 8005e62: b29b uxth r3, r3 - 8005e64: 1ad3 subs r3, r2, r3 - 8005e66: b29b uxth r3, r3 - 8005e68: 4619 mov r1, r3 - 8005e6a: 6878 ldr r0, [r7, #4] - 8005e6c: f000 f8bf bl 8005fee + 80060fa: 687b ldr r3, [r7, #4] + 80060fc: 8d9a ldrh r2, [r3, #44] @ 0x2c + 80060fe: 687b ldr r3, [r7, #4] + 8006100: 8ddb ldrh r3, [r3, #46] @ 0x2e + 8006102: b29b uxth r3, r3 + 8006104: 1ad3 subs r3, r2, r3 + 8006106: b29b uxth r3, r3 + 8006108: 4619 mov r1, r3 + 800610a: 6878 ldr r0, [r7, #4] + 800610c: f000 f8bf bl 800628e #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ } return; - 8005e70: e09c b.n 8005fac - 8005e72: bf00 nop - 8005e74: 0800617b .word 0x0800617b + 8006110: e09c b.n 800624c + 8006112: bf00 nop + 8006114: 0800641b .word 0x0800641b else { /* DMA mode not enabled */ /* Check received length : If all expected data are received, do nothing. Otherwise, if at least one data has already been received, IDLE event is to be notified to user */ uint16_t nb_rx_data = huart->RxXferSize - huart->RxXferCount; - 8005e78: 687b ldr r3, [r7, #4] - 8005e7a: 8d9a ldrh r2, [r3, #44] @ 0x2c - 8005e7c: 687b ldr r3, [r7, #4] - 8005e7e: 8ddb ldrh r3, [r3, #46] @ 0x2e - 8005e80: b29b uxth r3, r3 - 8005e82: 1ad3 subs r3, r2, r3 - 8005e84: f8a7 30ce strh.w r3, [r7, #206] @ 0xce + 8006118: 687b ldr r3, [r7, #4] + 800611a: 8d9a ldrh r2, [r3, #44] @ 0x2c + 800611c: 687b ldr r3, [r7, #4] + 800611e: 8ddb ldrh r3, [r3, #46] @ 0x2e + 8006120: b29b uxth r3, r3 + 8006122: 1ad3 subs r3, r2, r3 + 8006124: f8a7 30ce strh.w r3, [r7, #206] @ 0xce if ((huart->RxXferCount > 0U) - 8005e88: 687b ldr r3, [r7, #4] - 8005e8a: 8ddb ldrh r3, [r3, #46] @ 0x2e - 8005e8c: b29b uxth r3, r3 - 8005e8e: 2b00 cmp r3, #0 - 8005e90: f000 808e beq.w 8005fb0 + 8006128: 687b ldr r3, [r7, #4] + 800612a: 8ddb ldrh r3, [r3, #46] @ 0x2e + 800612c: b29b uxth r3, r3 + 800612e: 2b00 cmp r3, #0 + 8006130: f000 808e beq.w 8006250 && (nb_rx_data > 0U)) - 8005e94: f8b7 30ce ldrh.w r3, [r7, #206] @ 0xce - 8005e98: 2b00 cmp r3, #0 - 8005e9a: f000 8089 beq.w 8005fb0 + 8006134: f8b7 30ce ldrh.w r3, [r7, #206] @ 0xce + 8006138: 2b00 cmp r3, #0 + 800613a: f000 8089 beq.w 8006250 { /* Disable the UART Parity Error Interrupt and RXNE interrupts */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); - 8005e9e: 687b ldr r3, [r7, #4] - 8005ea0: 681b ldr r3, [r3, #0] - 8005ea2: 330c adds r3, #12 - 8005ea4: 63bb str r3, [r7, #56] @ 0x38 + 800613e: 687b ldr r3, [r7, #4] + 8006140: 681b ldr r3, [r3, #0] + 8006142: 330c adds r3, #12 + 8006144: 63bb str r3, [r7, #56] @ 0x38 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 8005ea6: 6bbb ldr r3, [r7, #56] @ 0x38 - 8005ea8: e853 3f00 ldrex r3, [r3] - 8005eac: 637b str r3, [r7, #52] @ 0x34 + 8006146: 6bbb ldr r3, [r7, #56] @ 0x38 + 8006148: e853 3f00 ldrex r3, [r3] + 800614c: 637b str r3, [r7, #52] @ 0x34 return(result); - 8005eae: 6b7b ldr r3, [r7, #52] @ 0x34 - 8005eb0: f423 7390 bic.w r3, r3, #288 @ 0x120 - 8005eb4: f8c7 30c8 str.w r3, [r7, #200] @ 0xc8 - 8005eb8: 687b ldr r3, [r7, #4] - 8005eba: 681b ldr r3, [r3, #0] - 8005ebc: 330c adds r3, #12 - 8005ebe: f8d7 20c8 ldr.w r2, [r7, #200] @ 0xc8 - 8005ec2: 647a str r2, [r7, #68] @ 0x44 - 8005ec4: 643b str r3, [r7, #64] @ 0x40 + 800614e: 6b7b ldr r3, [r7, #52] @ 0x34 + 8006150: f423 7390 bic.w r3, r3, #288 @ 0x120 + 8006154: f8c7 30c8 str.w r3, [r7, #200] @ 0xc8 + 8006158: 687b ldr r3, [r7, #4] + 800615a: 681b ldr r3, [r3, #0] + 800615c: 330c adds r3, #12 + 800615e: f8d7 20c8 ldr.w r2, [r7, #200] @ 0xc8 + 8006162: 647a str r2, [r7, #68] @ 0x44 + 8006164: 643b str r3, [r7, #64] @ 0x40 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 8005ec6: 6c39 ldr r1, [r7, #64] @ 0x40 - 8005ec8: 6c7a ldr r2, [r7, #68] @ 0x44 - 8005eca: e841 2300 strex r3, r2, [r1] - 8005ece: 63fb str r3, [r7, #60] @ 0x3c + 8006166: 6c39 ldr r1, [r7, #64] @ 0x40 + 8006168: 6c7a ldr r2, [r7, #68] @ 0x44 + 800616a: e841 2300 strex r3, r2, [r1] + 800616e: 63fb str r3, [r7, #60] @ 0x3c return(result); - 8005ed0: 6bfb ldr r3, [r7, #60] @ 0x3c - 8005ed2: 2b00 cmp r3, #0 - 8005ed4: d1e3 bne.n 8005e9e + 8006170: 6bfb ldr r3, [r7, #60] @ 0x3c + 8006172: 2b00 cmp r3, #0 + 8006174: d1e3 bne.n 800613e /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */ ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); - 8005ed6: 687b ldr r3, [r7, #4] - 8005ed8: 681b ldr r3, [r3, #0] - 8005eda: 3314 adds r3, #20 - 8005edc: 627b str r3, [r7, #36] @ 0x24 + 8006176: 687b ldr r3, [r7, #4] + 8006178: 681b ldr r3, [r3, #0] + 800617a: 3314 adds r3, #20 + 800617c: 627b str r3, [r7, #36] @ 0x24 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 8005ede: 6a7b ldr r3, [r7, #36] @ 0x24 - 8005ee0: e853 3f00 ldrex r3, [r3] - 8005ee4: 623b str r3, [r7, #32] + 800617e: 6a7b ldr r3, [r7, #36] @ 0x24 + 8006180: e853 3f00 ldrex r3, [r3] + 8006184: 623b str r3, [r7, #32] return(result); - 8005ee6: 6a3b ldr r3, [r7, #32] - 8005ee8: f023 0301 bic.w r3, r3, #1 - 8005eec: f8c7 30c4 str.w r3, [r7, #196] @ 0xc4 - 8005ef0: 687b ldr r3, [r7, #4] - 8005ef2: 681b ldr r3, [r3, #0] - 8005ef4: 3314 adds r3, #20 - 8005ef6: f8d7 20c4 ldr.w r2, [r7, #196] @ 0xc4 - 8005efa: 633a str r2, [r7, #48] @ 0x30 - 8005efc: 62fb str r3, [r7, #44] @ 0x2c + 8006186: 6a3b ldr r3, [r7, #32] + 8006188: f023 0301 bic.w r3, r3, #1 + 800618c: f8c7 30c4 str.w r3, [r7, #196] @ 0xc4 + 8006190: 687b ldr r3, [r7, #4] + 8006192: 681b ldr r3, [r3, #0] + 8006194: 3314 adds r3, #20 + 8006196: f8d7 20c4 ldr.w r2, [r7, #196] @ 0xc4 + 800619a: 633a str r2, [r7, #48] @ 0x30 + 800619c: 62fb str r3, [r7, #44] @ 0x2c __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 8005efe: 6af9 ldr r1, [r7, #44] @ 0x2c - 8005f00: 6b3a ldr r2, [r7, #48] @ 0x30 - 8005f02: e841 2300 strex r3, r2, [r1] - 8005f06: 62bb str r3, [r7, #40] @ 0x28 + 800619e: 6af9 ldr r1, [r7, #44] @ 0x2c + 80061a0: 6b3a ldr r2, [r7, #48] @ 0x30 + 80061a2: e841 2300 strex r3, r2, [r1] + 80061a6: 62bb str r3, [r7, #40] @ 0x28 return(result); - 8005f08: 6abb ldr r3, [r7, #40] @ 0x28 - 8005f0a: 2b00 cmp r3, #0 - 8005f0c: d1e3 bne.n 8005ed6 + 80061a8: 6abb ldr r3, [r7, #40] @ 0x28 + 80061aa: 2b00 cmp r3, #0 + 80061ac: d1e3 bne.n 8006176 /* Rx process is completed, restore huart->RxState to Ready */ huart->RxState = HAL_UART_STATE_READY; - 8005f0e: 687b ldr r3, [r7, #4] - 8005f10: 2220 movs r2, #32 - 8005f12: f883 2042 strb.w r2, [r3, #66] @ 0x42 + 80061ae: 687b ldr r3, [r7, #4] + 80061b0: 2220 movs r2, #32 + 80061b2: f883 2042 strb.w r2, [r3, #66] @ 0x42 huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 8005f16: 687b ldr r3, [r7, #4] - 8005f18: 2200 movs r2, #0 - 8005f1a: 631a str r2, [r3, #48] @ 0x30 + 80061b6: 687b ldr r3, [r7, #4] + 80061b8: 2200 movs r2, #0 + 80061ba: 631a str r2, [r3, #48] @ 0x30 ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); - 8005f1c: 687b ldr r3, [r7, #4] - 8005f1e: 681b ldr r3, [r3, #0] - 8005f20: 330c adds r3, #12 - 8005f22: 613b str r3, [r7, #16] + 80061bc: 687b ldr r3, [r7, #4] + 80061be: 681b ldr r3, [r3, #0] + 80061c0: 330c adds r3, #12 + 80061c2: 613b str r3, [r7, #16] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 8005f24: 693b ldr r3, [r7, #16] - 8005f26: e853 3f00 ldrex r3, [r3] - 8005f2a: 60fb str r3, [r7, #12] + 80061c4: 693b ldr r3, [r7, #16] + 80061c6: e853 3f00 ldrex r3, [r3] + 80061ca: 60fb str r3, [r7, #12] return(result); - 8005f2c: 68fb ldr r3, [r7, #12] - 8005f2e: f023 0310 bic.w r3, r3, #16 - 8005f32: f8c7 30c0 str.w r3, [r7, #192] @ 0xc0 - 8005f36: 687b ldr r3, [r7, #4] - 8005f38: 681b ldr r3, [r3, #0] - 8005f3a: 330c adds r3, #12 - 8005f3c: f8d7 20c0 ldr.w r2, [r7, #192] @ 0xc0 - 8005f40: 61fa str r2, [r7, #28] - 8005f42: 61bb str r3, [r7, #24] + 80061cc: 68fb ldr r3, [r7, #12] + 80061ce: f023 0310 bic.w r3, r3, #16 + 80061d2: f8c7 30c0 str.w r3, [r7, #192] @ 0xc0 + 80061d6: 687b ldr r3, [r7, #4] + 80061d8: 681b ldr r3, [r3, #0] + 80061da: 330c adds r3, #12 + 80061dc: f8d7 20c0 ldr.w r2, [r7, #192] @ 0xc0 + 80061e0: 61fa str r2, [r7, #28] + 80061e2: 61bb str r3, [r7, #24] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 8005f44: 69b9 ldr r1, [r7, #24] - 8005f46: 69fa ldr r2, [r7, #28] - 8005f48: e841 2300 strex r3, r2, [r1] - 8005f4c: 617b str r3, [r7, #20] + 80061e4: 69b9 ldr r1, [r7, #24] + 80061e6: 69fa ldr r2, [r7, #28] + 80061e8: e841 2300 strex r3, r2, [r1] + 80061ec: 617b str r3, [r7, #20] return(result); - 8005f4e: 697b ldr r3, [r7, #20] - 8005f50: 2b00 cmp r3, #0 - 8005f52: d1e3 bne.n 8005f1c + 80061ee: 697b ldr r3, [r7, #20] + 80061f0: 2b00 cmp r3, #0 + 80061f2: d1e3 bne.n 80061bc /* Initialize type of RxEvent that correspond to RxEvent callback execution; In this case, Rx Event type is Idle Event */ huart->RxEventType = HAL_UART_RXEVENT_IDLE; - 8005f54: 687b ldr r3, [r7, #4] - 8005f56: 2202 movs r2, #2 - 8005f58: 635a str r2, [r3, #52] @ 0x34 + 80061f4: 687b ldr r3, [r7, #4] + 80061f6: 2202 movs r2, #2 + 80061f8: 635a str r2, [r3, #52] @ 0x34 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered Rx complete callback*/ huart->RxEventCallback(huart, nb_rx_data); #else /*Call legacy weak Rx Event callback*/ HAL_UARTEx_RxEventCallback(huart, nb_rx_data); - 8005f5a: f8b7 30ce ldrh.w r3, [r7, #206] @ 0xce - 8005f5e: 4619 mov r1, r3 - 8005f60: 6878 ldr r0, [r7, #4] - 8005f62: f000 f844 bl 8005fee + 80061fa: f8b7 30ce ldrh.w r3, [r7, #206] @ 0xce + 80061fe: 4619 mov r1, r3 + 8006200: 6878 ldr r0, [r7, #4] + 8006202: f000 f844 bl 800628e #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ } return; - 8005f66: e023 b.n 8005fb0 + 8006206: e023 b.n 8006250 } } /* UART in mode Transmitter ------------------------------------------------*/ if (((isrflags & USART_SR_TXE) != RESET) && ((cr1its & USART_CR1_TXEIE) != RESET)) - 8005f68: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 8005f6c: f003 0380 and.w r3, r3, #128 @ 0x80 - 8005f70: 2b00 cmp r3, #0 - 8005f72: d009 beq.n 8005f88 - 8005f74: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 8005f78: f003 0380 and.w r3, r3, #128 @ 0x80 - 8005f7c: 2b00 cmp r3, #0 - 8005f7e: d003 beq.n 8005f88 + 8006208: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 800620c: f003 0380 and.w r3, r3, #128 @ 0x80 + 8006210: 2b00 cmp r3, #0 + 8006212: d009 beq.n 8006228 + 8006214: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 8006218: f003 0380 and.w r3, r3, #128 @ 0x80 + 800621c: 2b00 cmp r3, #0 + 800621e: d003 beq.n 8006228 { UART_Transmit_IT(huart); - 8005f80: 6878 ldr r0, [r7, #4] - 8005f82: f000 f90e bl 80061a2 + 8006220: 6878 ldr r0, [r7, #4] + 8006222: f000 f90e bl 8006442 return; - 8005f86: e014 b.n 8005fb2 + 8006226: e014 b.n 8006252 } /* UART in mode Transmitter end --------------------------------------------*/ if (((isrflags & USART_SR_TC) != RESET) && ((cr1its & USART_CR1_TCIE) != RESET)) - 8005f88: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 8005f8c: f003 0340 and.w r3, r3, #64 @ 0x40 - 8005f90: 2b00 cmp r3, #0 - 8005f92: d00e beq.n 8005fb2 - 8005f94: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 8005f98: f003 0340 and.w r3, r3, #64 @ 0x40 - 8005f9c: 2b00 cmp r3, #0 - 8005f9e: d008 beq.n 8005fb2 + 8006228: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 800622c: f003 0340 and.w r3, r3, #64 @ 0x40 + 8006230: 2b00 cmp r3, #0 + 8006232: d00e beq.n 8006252 + 8006234: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 8006238: f003 0340 and.w r3, r3, #64 @ 0x40 + 800623c: 2b00 cmp r3, #0 + 800623e: d008 beq.n 8006252 { UART_EndTransmit_IT(huart); - 8005fa0: 6878 ldr r0, [r7, #4] - 8005fa2: f000 f94d bl 8006240 + 8006240: 6878 ldr r0, [r7, #4] + 8006242: f000 f94d bl 80064e0 return; - 8005fa6: e004 b.n 8005fb2 + 8006246: e004 b.n 8006252 return; - 8005fa8: bf00 nop - 8005faa: e002 b.n 8005fb2 + 8006248: bf00 nop + 800624a: e002 b.n 8006252 return; - 8005fac: bf00 nop - 8005fae: e000 b.n 8005fb2 + 800624c: bf00 nop + 800624e: e000 b.n 8006252 return; - 8005fb0: bf00 nop + 8006250: bf00 nop } } - 8005fb2: 37e8 adds r7, #232 @ 0xe8 - 8005fb4: 46bd mov sp, r7 - 8005fb6: bd80 pop {r7, pc} + 8006252: 37e8 adds r7, #232 @ 0xe8 + 8006254: 46bd mov sp, r7 + 8006256: bd80 pop {r7, pc} -08005fb8 : +08006258 : * @param huart Pointer to a UART_HandleTypeDef structure that contains * the configuration information for the specified UART module. * @retval None */ __weak void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) { - 8005fb8: b480 push {r7} - 8005fba: b083 sub sp, #12 - 8005fbc: af00 add r7, sp, #0 - 8005fbe: 6078 str r0, [r7, #4] + 8006258: b480 push {r7} + 800625a: b083 sub sp, #12 + 800625c: af00 add r7, sp, #0 + 800625e: 6078 str r0, [r7, #4] /* Prevent unused argument(s) compilation warning */ UNUSED(huart); /* NOTE: This function should not be modified, when the callback is needed, the HAL_UART_TxCpltCallback could be implemented in the user file */ } - 8005fc0: bf00 nop - 8005fc2: 370c adds r7, #12 - 8005fc4: 46bd mov sp, r7 - 8005fc6: bc80 pop {r7} - 8005fc8: 4770 bx lr + 8006260: bf00 nop + 8006262: 370c adds r7, #12 + 8006264: 46bd mov sp, r7 + 8006266: bc80 pop {r7} + 8006268: 4770 bx lr -08005fca : +0800626a : * @param huart Pointer to a UART_HandleTypeDef structure that contains * the configuration information for the specified UART module. * @retval None */ __weak void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { - 8005fca: b480 push {r7} - 8005fcc: b083 sub sp, #12 - 8005fce: af00 add r7, sp, #0 - 8005fd0: 6078 str r0, [r7, #4] + 800626a: b480 push {r7} + 800626c: b083 sub sp, #12 + 800626e: af00 add r7, sp, #0 + 8006270: 6078 str r0, [r7, #4] /* Prevent unused argument(s) compilation warning */ UNUSED(huart); /* NOTE: This function should not be modified, when the callback is needed, the HAL_UART_RxCpltCallback could be implemented in the user file */ } - 8005fd2: bf00 nop - 8005fd4: 370c adds r7, #12 - 8005fd6: 46bd mov sp, r7 - 8005fd8: bc80 pop {r7} - 8005fda: 4770 bx lr + 8006272: bf00 nop + 8006274: 370c adds r7, #12 + 8006276: 46bd mov sp, r7 + 8006278: bc80 pop {r7} + 800627a: 4770 bx lr -08005fdc : +0800627c : * @param huart Pointer to a UART_HandleTypeDef structure that contains * the configuration information for the specified UART module. * @retval None */ __weak void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart) { - 8005fdc: b480 push {r7} - 8005fde: b083 sub sp, #12 - 8005fe0: af00 add r7, sp, #0 - 8005fe2: 6078 str r0, [r7, #4] + 800627c: b480 push {r7} + 800627e: b083 sub sp, #12 + 8006280: af00 add r7, sp, #0 + 8006282: 6078 str r0, [r7, #4] /* Prevent unused argument(s) compilation warning */ UNUSED(huart); /* NOTE: This function should not be modified, when the callback is needed, the HAL_UART_ErrorCallback could be implemented in the user file */ } - 8005fe4: bf00 nop - 8005fe6: 370c adds r7, #12 - 8005fe8: 46bd mov sp, r7 - 8005fea: bc80 pop {r7} - 8005fec: 4770 bx lr + 8006284: bf00 nop + 8006286: 370c adds r7, #12 + 8006288: 46bd mov sp, r7 + 800628a: bc80 pop {r7} + 800628c: 4770 bx lr -08005fee : +0800628e : * @param Size Number of data available in application reception buffer (indicates a position in * reception buffer until which, data are available) * @retval None */ __weak void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size) { - 8005fee: b480 push {r7} - 8005ff0: b083 sub sp, #12 - 8005ff2: af00 add r7, sp, #0 - 8005ff4: 6078 str r0, [r7, #4] - 8005ff6: 460b mov r3, r1 - 8005ff8: 807b strh r3, [r7, #2] + 800628e: b480 push {r7} + 8006290: b083 sub sp, #12 + 8006292: af00 add r7, sp, #0 + 8006294: 6078 str r0, [r7, #4] + 8006296: 460b mov r3, r1 + 8006298: 807b strh r3, [r7, #2] UNUSED(Size); /* NOTE : This function should not be modified, when the callback is needed, the HAL_UARTEx_RxEventCallback can be implemented in the user file. */ } - 8005ffa: bf00 nop - 8005ffc: 370c adds r7, #12 - 8005ffe: 46bd mov sp, r7 - 8006000: bc80 pop {r7} - 8006002: 4770 bx lr + 800629a: bf00 nop + 800629c: 370c adds r7, #12 + 800629e: 46bd mov sp, r7 + 80062a0: bc80 pop {r7} + 80062a2: 4770 bx lr -08006004 : +080062a4 : * @param Timeout Timeout duration * @retval HAL status */ static HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, uint32_t Tickstart, uint32_t Timeout) { - 8006004: b580 push {r7, lr} - 8006006: b086 sub sp, #24 - 8006008: af00 add r7, sp, #0 - 800600a: 60f8 str r0, [r7, #12] - 800600c: 60b9 str r1, [r7, #8] - 800600e: 603b str r3, [r7, #0] - 8006010: 4613 mov r3, r2 - 8006012: 71fb strb r3, [r7, #7] + 80062a4: b580 push {r7, lr} + 80062a6: b086 sub sp, #24 + 80062a8: af00 add r7, sp, #0 + 80062aa: 60f8 str r0, [r7, #12] + 80062ac: 60b9 str r1, [r7, #8] + 80062ae: 603b str r3, [r7, #0] + 80062b0: 4613 mov r3, r2 + 80062b2: 71fb strb r3, [r7, #7] /* Wait until flag is set */ while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status) - 8006014: e03b b.n 800608e + 80062b4: e03b b.n 800632e { /* Check for the Timeout */ if (Timeout != HAL_MAX_DELAY) - 8006016: 6a3b ldr r3, [r7, #32] - 8006018: f1b3 3fff cmp.w r3, #4294967295 - 800601c: d037 beq.n 800608e + 80062b6: 6a3b ldr r3, [r7, #32] + 80062b8: f1b3 3fff cmp.w r3, #4294967295 + 80062bc: d037 beq.n 800632e { if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) - 800601e: f7fc fda3 bl 8002b68 - 8006022: 4602 mov r2, r0 - 8006024: 683b ldr r3, [r7, #0] - 8006026: 1ad3 subs r3, r2, r3 - 8006028: 6a3a ldr r2, [r7, #32] - 800602a: 429a cmp r2, r3 - 800602c: d302 bcc.n 8006034 - 800602e: 6a3b ldr r3, [r7, #32] - 8006030: 2b00 cmp r3, #0 - 8006032: d101 bne.n 8006038 + 80062be: f7fc fdc7 bl 8002e50 + 80062c2: 4602 mov r2, r0 + 80062c4: 683b ldr r3, [r7, #0] + 80062c6: 1ad3 subs r3, r2, r3 + 80062c8: 6a3a ldr r2, [r7, #32] + 80062ca: 429a cmp r2, r3 + 80062cc: d302 bcc.n 80062d4 + 80062ce: 6a3b ldr r3, [r7, #32] + 80062d0: 2b00 cmp r3, #0 + 80062d2: d101 bne.n 80062d8 { return HAL_TIMEOUT; - 8006034: 2303 movs r3, #3 - 8006036: e03a b.n 80060ae + 80062d4: 2303 movs r3, #3 + 80062d6: e03a b.n 800634e } if ((READ_BIT(huart->Instance->CR1, USART_CR1_RE) != 0U) && (Flag != UART_FLAG_TXE) && (Flag != UART_FLAG_TC)) - 8006038: 68fb ldr r3, [r7, #12] - 800603a: 681b ldr r3, [r3, #0] - 800603c: 68db ldr r3, [r3, #12] - 800603e: f003 0304 and.w r3, r3, #4 - 8006042: 2b00 cmp r3, #0 - 8006044: d023 beq.n 800608e - 8006046: 68bb ldr r3, [r7, #8] - 8006048: 2b80 cmp r3, #128 @ 0x80 - 800604a: d020 beq.n 800608e - 800604c: 68bb ldr r3, [r7, #8] - 800604e: 2b40 cmp r3, #64 @ 0x40 - 8006050: d01d beq.n 800608e + 80062d8: 68fb ldr r3, [r7, #12] + 80062da: 681b ldr r3, [r3, #0] + 80062dc: 68db ldr r3, [r3, #12] + 80062de: f003 0304 and.w r3, r3, #4 + 80062e2: 2b00 cmp r3, #0 + 80062e4: d023 beq.n 800632e + 80062e6: 68bb ldr r3, [r7, #8] + 80062e8: 2b80 cmp r3, #128 @ 0x80 + 80062ea: d020 beq.n 800632e + 80062ec: 68bb ldr r3, [r7, #8] + 80062ee: 2b40 cmp r3, #64 @ 0x40 + 80062f0: d01d beq.n 800632e { if (__HAL_UART_GET_FLAG(huart, UART_FLAG_ORE) == SET) - 8006052: 68fb ldr r3, [r7, #12] - 8006054: 681b ldr r3, [r3, #0] - 8006056: 681b ldr r3, [r3, #0] - 8006058: f003 0308 and.w r3, r3, #8 - 800605c: 2b08 cmp r3, #8 - 800605e: d116 bne.n 800608e + 80062f2: 68fb ldr r3, [r7, #12] + 80062f4: 681b ldr r3, [r3, #0] + 80062f6: 681b ldr r3, [r3, #0] + 80062f8: f003 0308 and.w r3, r3, #8 + 80062fc: 2b08 cmp r3, #8 + 80062fe: d116 bne.n 800632e { /* Clear Overrun Error flag*/ __HAL_UART_CLEAR_OREFLAG(huart); - 8006060: 2300 movs r3, #0 - 8006062: 617b str r3, [r7, #20] - 8006064: 68fb ldr r3, [r7, #12] - 8006066: 681b ldr r3, [r3, #0] - 8006068: 681b ldr r3, [r3, #0] - 800606a: 617b str r3, [r7, #20] - 800606c: 68fb ldr r3, [r7, #12] - 800606e: 681b ldr r3, [r3, #0] - 8006070: 685b ldr r3, [r3, #4] - 8006072: 617b str r3, [r7, #20] - 8006074: 697b ldr r3, [r7, #20] + 8006300: 2300 movs r3, #0 + 8006302: 617b str r3, [r7, #20] + 8006304: 68fb ldr r3, [r7, #12] + 8006306: 681b ldr r3, [r3, #0] + 8006308: 681b ldr r3, [r3, #0] + 800630a: 617b str r3, [r7, #20] + 800630c: 68fb ldr r3, [r7, #12] + 800630e: 681b ldr r3, [r3, #0] + 8006310: 685b ldr r3, [r3, #4] + 8006312: 617b str r3, [r7, #20] + 8006314: 697b ldr r3, [r7, #20] /* Blocking error : transfer is aborted Set the UART state ready to be able to start again the process, Disable Rx Interrupts if ongoing */ UART_EndRxTransfer(huart); - 8006076: 68f8 ldr r0, [r7, #12] - 8006078: f000 f81d bl 80060b6 + 8006316: 68f8 ldr r0, [r7, #12] + 8006318: f000 f81d bl 8006356 huart->ErrorCode = HAL_UART_ERROR_ORE; - 800607c: 68fb ldr r3, [r7, #12] - 800607e: 2208 movs r2, #8 - 8006080: 645a str r2, [r3, #68] @ 0x44 + 800631c: 68fb ldr r3, [r7, #12] + 800631e: 2208 movs r2, #8 + 8006320: 645a str r2, [r3, #68] @ 0x44 /* Process Unlocked */ __HAL_UNLOCK(huart); - 8006082: 68fb ldr r3, [r7, #12] - 8006084: 2200 movs r2, #0 - 8006086: f883 2040 strb.w r2, [r3, #64] @ 0x40 + 8006322: 68fb ldr r3, [r7, #12] + 8006324: 2200 movs r2, #0 + 8006326: f883 2040 strb.w r2, [r3, #64] @ 0x40 return HAL_ERROR; - 800608a: 2301 movs r3, #1 - 800608c: e00f b.n 80060ae + 800632a: 2301 movs r3, #1 + 800632c: e00f b.n 800634e while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status) - 800608e: 68fb ldr r3, [r7, #12] - 8006090: 681b ldr r3, [r3, #0] - 8006092: 681a ldr r2, [r3, #0] - 8006094: 68bb ldr r3, [r7, #8] - 8006096: 4013 ands r3, r2 - 8006098: 68ba ldr r2, [r7, #8] - 800609a: 429a cmp r2, r3 - 800609c: bf0c ite eq - 800609e: 2301 moveq r3, #1 - 80060a0: 2300 movne r3, #0 - 80060a2: b2db uxtb r3, r3 - 80060a4: 461a mov r2, r3 - 80060a6: 79fb ldrb r3, [r7, #7] - 80060a8: 429a cmp r2, r3 - 80060aa: d0b4 beq.n 8006016 + 800632e: 68fb ldr r3, [r7, #12] + 8006330: 681b ldr r3, [r3, #0] + 8006332: 681a ldr r2, [r3, #0] + 8006334: 68bb ldr r3, [r7, #8] + 8006336: 4013 ands r3, r2 + 8006338: 68ba ldr r2, [r7, #8] + 800633a: 429a cmp r2, r3 + 800633c: bf0c ite eq + 800633e: 2301 moveq r3, #1 + 8006340: 2300 movne r3, #0 + 8006342: b2db uxtb r3, r3 + 8006344: 461a mov r2, r3 + 8006346: 79fb ldrb r3, [r7, #7] + 8006348: 429a cmp r2, r3 + 800634a: d0b4 beq.n 80062b6 } } } } return HAL_OK; - 80060ac: 2300 movs r3, #0 + 800634c: 2300 movs r3, #0 } - 80060ae: 4618 mov r0, r3 - 80060b0: 3718 adds r7, #24 - 80060b2: 46bd mov sp, r7 - 80060b4: bd80 pop {r7, pc} + 800634e: 4618 mov r0, r3 + 8006350: 3718 adds r7, #24 + 8006352: 46bd mov sp, r7 + 8006354: bd80 pop {r7, pc} -080060b6 : +08006356 : * @brief End ongoing Rx transfer on UART peripheral (following error detection or Reception completion). * @param huart UART handle. * @retval None */ static void UART_EndRxTransfer(UART_HandleTypeDef *huart) { - 80060b6: b480 push {r7} - 80060b8: b095 sub sp, #84 @ 0x54 - 80060ba: af00 add r7, sp, #0 - 80060bc: 6078 str r0, [r7, #4] + 8006356: b480 push {r7} + 8006358: b095 sub sp, #84 @ 0x54 + 800635a: af00 add r7, sp, #0 + 800635c: 6078 str r0, [r7, #4] /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); - 80060be: 687b ldr r3, [r7, #4] - 80060c0: 681b ldr r3, [r3, #0] - 80060c2: 330c adds r3, #12 - 80060c4: 637b str r3, [r7, #52] @ 0x34 + 800635e: 687b ldr r3, [r7, #4] + 8006360: 681b ldr r3, [r3, #0] + 8006362: 330c adds r3, #12 + 8006364: 637b str r3, [r7, #52] @ 0x34 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 80060c6: 6b7b ldr r3, [r7, #52] @ 0x34 - 80060c8: e853 3f00 ldrex r3, [r3] - 80060cc: 633b str r3, [r7, #48] @ 0x30 + 8006366: 6b7b ldr r3, [r7, #52] @ 0x34 + 8006368: e853 3f00 ldrex r3, [r3] + 800636c: 633b str r3, [r7, #48] @ 0x30 return(result); - 80060ce: 6b3b ldr r3, [r7, #48] @ 0x30 - 80060d0: f423 7390 bic.w r3, r3, #288 @ 0x120 - 80060d4: 64fb str r3, [r7, #76] @ 0x4c - 80060d6: 687b ldr r3, [r7, #4] - 80060d8: 681b ldr r3, [r3, #0] - 80060da: 330c adds r3, #12 - 80060dc: 6cfa ldr r2, [r7, #76] @ 0x4c - 80060de: 643a str r2, [r7, #64] @ 0x40 - 80060e0: 63fb str r3, [r7, #60] @ 0x3c + 800636e: 6b3b ldr r3, [r7, #48] @ 0x30 + 8006370: f423 7390 bic.w r3, r3, #288 @ 0x120 + 8006374: 64fb str r3, [r7, #76] @ 0x4c + 8006376: 687b ldr r3, [r7, #4] + 8006378: 681b ldr r3, [r3, #0] + 800637a: 330c adds r3, #12 + 800637c: 6cfa ldr r2, [r7, #76] @ 0x4c + 800637e: 643a str r2, [r7, #64] @ 0x40 + 8006380: 63fb str r3, [r7, #60] @ 0x3c __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 80060e2: 6bf9 ldr r1, [r7, #60] @ 0x3c - 80060e4: 6c3a ldr r2, [r7, #64] @ 0x40 - 80060e6: e841 2300 strex r3, r2, [r1] - 80060ea: 63bb str r3, [r7, #56] @ 0x38 + 8006382: 6bf9 ldr r1, [r7, #60] @ 0x3c + 8006384: 6c3a ldr r2, [r7, #64] @ 0x40 + 8006386: e841 2300 strex r3, r2, [r1] + 800638a: 63bb str r3, [r7, #56] @ 0x38 return(result); - 80060ec: 6bbb ldr r3, [r7, #56] @ 0x38 - 80060ee: 2b00 cmp r3, #0 - 80060f0: d1e5 bne.n 80060be + 800638c: 6bbb ldr r3, [r7, #56] @ 0x38 + 800638e: 2b00 cmp r3, #0 + 8006390: d1e5 bne.n 800635e ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); - 80060f2: 687b ldr r3, [r7, #4] - 80060f4: 681b ldr r3, [r3, #0] - 80060f6: 3314 adds r3, #20 - 80060f8: 623b str r3, [r7, #32] + 8006392: 687b ldr r3, [r7, #4] + 8006394: 681b ldr r3, [r3, #0] + 8006396: 3314 adds r3, #20 + 8006398: 623b str r3, [r7, #32] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 80060fa: 6a3b ldr r3, [r7, #32] - 80060fc: e853 3f00 ldrex r3, [r3] - 8006100: 61fb str r3, [r7, #28] + 800639a: 6a3b ldr r3, [r7, #32] + 800639c: e853 3f00 ldrex r3, [r3] + 80063a0: 61fb str r3, [r7, #28] return(result); - 8006102: 69fb ldr r3, [r7, #28] - 8006104: f023 0301 bic.w r3, r3, #1 - 8006108: 64bb str r3, [r7, #72] @ 0x48 - 800610a: 687b ldr r3, [r7, #4] - 800610c: 681b ldr r3, [r3, #0] - 800610e: 3314 adds r3, #20 - 8006110: 6cba ldr r2, [r7, #72] @ 0x48 - 8006112: 62fa str r2, [r7, #44] @ 0x2c - 8006114: 62bb str r3, [r7, #40] @ 0x28 + 80063a2: 69fb ldr r3, [r7, #28] + 80063a4: f023 0301 bic.w r3, r3, #1 + 80063a8: 64bb str r3, [r7, #72] @ 0x48 + 80063aa: 687b ldr r3, [r7, #4] + 80063ac: 681b ldr r3, [r3, #0] + 80063ae: 3314 adds r3, #20 + 80063b0: 6cba ldr r2, [r7, #72] @ 0x48 + 80063b2: 62fa str r2, [r7, #44] @ 0x2c + 80063b4: 62bb str r3, [r7, #40] @ 0x28 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 8006116: 6ab9 ldr r1, [r7, #40] @ 0x28 - 8006118: 6afa ldr r2, [r7, #44] @ 0x2c - 800611a: e841 2300 strex r3, r2, [r1] - 800611e: 627b str r3, [r7, #36] @ 0x24 + 80063b6: 6ab9 ldr r1, [r7, #40] @ 0x28 + 80063b8: 6afa ldr r2, [r7, #44] @ 0x2c + 80063ba: e841 2300 strex r3, r2, [r1] + 80063be: 627b str r3, [r7, #36] @ 0x24 return(result); - 8006120: 6a7b ldr r3, [r7, #36] @ 0x24 - 8006122: 2b00 cmp r3, #0 - 8006124: d1e5 bne.n 80060f2 + 80063c0: 6a7b ldr r3, [r7, #36] @ 0x24 + 80063c2: 2b00 cmp r3, #0 + 80063c4: d1e5 bne.n 8006392 /* In case of reception waiting for IDLE event, disable also the IDLE IE interrupt source */ if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) - 8006126: 687b ldr r3, [r7, #4] - 8006128: 6b1b ldr r3, [r3, #48] @ 0x30 - 800612a: 2b01 cmp r3, #1 - 800612c: d119 bne.n 8006162 + 80063c6: 687b ldr r3, [r7, #4] + 80063c8: 6b1b ldr r3, [r3, #48] @ 0x30 + 80063ca: 2b01 cmp r3, #1 + 80063cc: d119 bne.n 8006402 { ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); - 800612e: 687b ldr r3, [r7, #4] - 8006130: 681b ldr r3, [r3, #0] - 8006132: 330c adds r3, #12 - 8006134: 60fb str r3, [r7, #12] + 80063ce: 687b ldr r3, [r7, #4] + 80063d0: 681b ldr r3, [r3, #0] + 80063d2: 330c adds r3, #12 + 80063d4: 60fb str r3, [r7, #12] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 8006136: 68fb ldr r3, [r7, #12] - 8006138: e853 3f00 ldrex r3, [r3] - 800613c: 60bb str r3, [r7, #8] + 80063d6: 68fb ldr r3, [r7, #12] + 80063d8: e853 3f00 ldrex r3, [r3] + 80063dc: 60bb str r3, [r7, #8] return(result); - 800613e: 68bb ldr r3, [r7, #8] - 8006140: f023 0310 bic.w r3, r3, #16 - 8006144: 647b str r3, [r7, #68] @ 0x44 - 8006146: 687b ldr r3, [r7, #4] - 8006148: 681b ldr r3, [r3, #0] - 800614a: 330c adds r3, #12 - 800614c: 6c7a ldr r2, [r7, #68] @ 0x44 - 800614e: 61ba str r2, [r7, #24] - 8006150: 617b str r3, [r7, #20] + 80063de: 68bb ldr r3, [r7, #8] + 80063e0: f023 0310 bic.w r3, r3, #16 + 80063e4: 647b str r3, [r7, #68] @ 0x44 + 80063e6: 687b ldr r3, [r7, #4] + 80063e8: 681b ldr r3, [r3, #0] + 80063ea: 330c adds r3, #12 + 80063ec: 6c7a ldr r2, [r7, #68] @ 0x44 + 80063ee: 61ba str r2, [r7, #24] + 80063f0: 617b str r3, [r7, #20] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 8006152: 6979 ldr r1, [r7, #20] - 8006154: 69ba ldr r2, [r7, #24] - 8006156: e841 2300 strex r3, r2, [r1] - 800615a: 613b str r3, [r7, #16] + 80063f2: 6979 ldr r1, [r7, #20] + 80063f4: 69ba ldr r2, [r7, #24] + 80063f6: e841 2300 strex r3, r2, [r1] + 80063fa: 613b str r3, [r7, #16] return(result); - 800615c: 693b ldr r3, [r7, #16] - 800615e: 2b00 cmp r3, #0 - 8006160: d1e5 bne.n 800612e + 80063fc: 693b ldr r3, [r7, #16] + 80063fe: 2b00 cmp r3, #0 + 8006400: d1e5 bne.n 80063ce } /* At end of Rx process, restore huart->RxState to Ready */ huart->RxState = HAL_UART_STATE_READY; - 8006162: 687b ldr r3, [r7, #4] - 8006164: 2220 movs r2, #32 - 8006166: f883 2042 strb.w r2, [r3, #66] @ 0x42 + 8006402: 687b ldr r3, [r7, #4] + 8006404: 2220 movs r2, #32 + 8006406: f883 2042 strb.w r2, [r3, #66] @ 0x42 huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 800616a: 687b ldr r3, [r7, #4] - 800616c: 2200 movs r2, #0 - 800616e: 631a str r2, [r3, #48] @ 0x30 + 800640a: 687b ldr r3, [r7, #4] + 800640c: 2200 movs r2, #0 + 800640e: 631a str r2, [r3, #48] @ 0x30 } - 8006170: bf00 nop - 8006172: 3754 adds r7, #84 @ 0x54 - 8006174: 46bd mov sp, r7 - 8006176: bc80 pop {r7} - 8006178: 4770 bx lr + 8006410: bf00 nop + 8006412: 3754 adds r7, #84 @ 0x54 + 8006414: 46bd mov sp, r7 + 8006416: bc80 pop {r7} + 8006418: 4770 bx lr -0800617a : +0800641a : * @param hdma Pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA module. * @retval None */ static void UART_DMAAbortOnError(DMA_HandleTypeDef *hdma) { - 800617a: b580 push {r7, lr} - 800617c: b084 sub sp, #16 - 800617e: af00 add r7, sp, #0 - 8006180: 6078 str r0, [r7, #4] + 800641a: b580 push {r7, lr} + 800641c: b084 sub sp, #16 + 800641e: af00 add r7, sp, #0 + 8006420: 6078 str r0, [r7, #4] UART_HandleTypeDef *huart = (UART_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; - 8006182: 687b ldr r3, [r7, #4] - 8006184: 6a5b ldr r3, [r3, #36] @ 0x24 - 8006186: 60fb str r3, [r7, #12] + 8006422: 687b ldr r3, [r7, #4] + 8006424: 6a5b ldr r3, [r3, #36] @ 0x24 + 8006426: 60fb str r3, [r7, #12] huart->RxXferCount = 0x00U; - 8006188: 68fb ldr r3, [r7, #12] - 800618a: 2200 movs r2, #0 - 800618c: 85da strh r2, [r3, #46] @ 0x2e + 8006428: 68fb ldr r3, [r7, #12] + 800642a: 2200 movs r2, #0 + 800642c: 85da strh r2, [r3, #46] @ 0x2e huart->TxXferCount = 0x00U; - 800618e: 68fb ldr r3, [r7, #12] - 8006190: 2200 movs r2, #0 - 8006192: 84da strh r2, [r3, #38] @ 0x26 + 800642e: 68fb ldr r3, [r7, #12] + 8006430: 2200 movs r2, #0 + 8006432: 84da strh r2, [r3, #38] @ 0x26 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered error callback*/ huart->ErrorCallback(huart); #else /*Call legacy weak error callback*/ HAL_UART_ErrorCallback(huart); - 8006194: 68f8 ldr r0, [r7, #12] - 8006196: f7ff ff21 bl 8005fdc + 8006434: 68f8 ldr r0, [r7, #12] + 8006436: f7ff ff21 bl 800627c #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ } - 800619a: bf00 nop - 800619c: 3710 adds r7, #16 - 800619e: 46bd mov sp, r7 - 80061a0: bd80 pop {r7, pc} + 800643a: bf00 nop + 800643c: 3710 adds r7, #16 + 800643e: 46bd mov sp, r7 + 8006440: bd80 pop {r7, pc} -080061a2 : +08006442 : * @param huart Pointer to a UART_HandleTypeDef structure that contains * the configuration information for the specified UART module. * @retval HAL status */ static HAL_StatusTypeDef UART_Transmit_IT(UART_HandleTypeDef *huart) { - 80061a2: b480 push {r7} - 80061a4: b085 sub sp, #20 - 80061a6: af00 add r7, sp, #0 - 80061a8: 6078 str r0, [r7, #4] + 8006442: b480 push {r7} + 8006444: b085 sub sp, #20 + 8006446: af00 add r7, sp, #0 + 8006448: 6078 str r0, [r7, #4] const uint16_t *tmp; /* Check that a Tx process is ongoing */ if (huart->gState == HAL_UART_STATE_BUSY_TX) - 80061aa: 687b ldr r3, [r7, #4] - 80061ac: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 - 80061b0: b2db uxtb r3, r3 - 80061b2: 2b21 cmp r3, #33 @ 0x21 - 80061b4: d13e bne.n 8006234 + 800644a: 687b ldr r3, [r7, #4] + 800644c: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 + 8006450: b2db uxtb r3, r3 + 8006452: 2b21 cmp r3, #33 @ 0x21 + 8006454: d13e bne.n 80064d4 { if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) - 80061b6: 687b ldr r3, [r7, #4] - 80061b8: 689b ldr r3, [r3, #8] - 80061ba: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 80061be: d114 bne.n 80061ea - 80061c0: 687b ldr r3, [r7, #4] - 80061c2: 691b ldr r3, [r3, #16] - 80061c4: 2b00 cmp r3, #0 - 80061c6: d110 bne.n 80061ea + 8006456: 687b ldr r3, [r7, #4] + 8006458: 689b ldr r3, [r3, #8] + 800645a: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 800645e: d114 bne.n 800648a + 8006460: 687b ldr r3, [r7, #4] + 8006462: 691b ldr r3, [r3, #16] + 8006464: 2b00 cmp r3, #0 + 8006466: d110 bne.n 800648a { tmp = (const uint16_t *) huart->pTxBuffPtr; - 80061c8: 687b ldr r3, [r7, #4] - 80061ca: 6a1b ldr r3, [r3, #32] - 80061cc: 60fb str r3, [r7, #12] + 8006468: 687b ldr r3, [r7, #4] + 800646a: 6a1b ldr r3, [r3, #32] + 800646c: 60fb str r3, [r7, #12] huart->Instance->DR = (uint16_t)(*tmp & (uint16_t)0x01FF); - 80061ce: 68fb ldr r3, [r7, #12] - 80061d0: 881b ldrh r3, [r3, #0] - 80061d2: 461a mov r2, r3 - 80061d4: 687b ldr r3, [r7, #4] - 80061d6: 681b ldr r3, [r3, #0] - 80061d8: f3c2 0208 ubfx r2, r2, #0, #9 - 80061dc: 605a str r2, [r3, #4] + 800646e: 68fb ldr r3, [r7, #12] + 8006470: 881b ldrh r3, [r3, #0] + 8006472: 461a mov r2, r3 + 8006474: 687b ldr r3, [r7, #4] + 8006476: 681b ldr r3, [r3, #0] + 8006478: f3c2 0208 ubfx r2, r2, #0, #9 + 800647c: 605a str r2, [r3, #4] huart->pTxBuffPtr += 2U; - 80061de: 687b ldr r3, [r7, #4] - 80061e0: 6a1b ldr r3, [r3, #32] - 80061e2: 1c9a adds r2, r3, #2 - 80061e4: 687b ldr r3, [r7, #4] - 80061e6: 621a str r2, [r3, #32] - 80061e8: e008 b.n 80061fc + 800647e: 687b ldr r3, [r7, #4] + 8006480: 6a1b ldr r3, [r3, #32] + 8006482: 1c9a adds r2, r3, #2 + 8006484: 687b ldr r3, [r7, #4] + 8006486: 621a str r2, [r3, #32] + 8006488: e008 b.n 800649c } else { huart->Instance->DR = (uint8_t)(*huart->pTxBuffPtr++ & (uint8_t)0x00FF); - 80061ea: 687b ldr r3, [r7, #4] - 80061ec: 6a1b ldr r3, [r3, #32] - 80061ee: 1c59 adds r1, r3, #1 - 80061f0: 687a ldr r2, [r7, #4] - 80061f2: 6211 str r1, [r2, #32] - 80061f4: 781a ldrb r2, [r3, #0] - 80061f6: 687b ldr r3, [r7, #4] - 80061f8: 681b ldr r3, [r3, #0] - 80061fa: 605a str r2, [r3, #4] + 800648a: 687b ldr r3, [r7, #4] + 800648c: 6a1b ldr r3, [r3, #32] + 800648e: 1c59 adds r1, r3, #1 + 8006490: 687a ldr r2, [r7, #4] + 8006492: 6211 str r1, [r2, #32] + 8006494: 781a ldrb r2, [r3, #0] + 8006496: 687b ldr r3, [r7, #4] + 8006498: 681b ldr r3, [r3, #0] + 800649a: 605a str r2, [r3, #4] } if (--huart->TxXferCount == 0U) - 80061fc: 687b ldr r3, [r7, #4] - 80061fe: 8cdb ldrh r3, [r3, #38] @ 0x26 - 8006200: b29b uxth r3, r3 - 8006202: 3b01 subs r3, #1 - 8006204: b29b uxth r3, r3 - 8006206: 687a ldr r2, [r7, #4] - 8006208: 4619 mov r1, r3 - 800620a: 84d1 strh r1, [r2, #38] @ 0x26 - 800620c: 2b00 cmp r3, #0 - 800620e: d10f bne.n 8006230 + 800649c: 687b ldr r3, [r7, #4] + 800649e: 8cdb ldrh r3, [r3, #38] @ 0x26 + 80064a0: b29b uxth r3, r3 + 80064a2: 3b01 subs r3, #1 + 80064a4: b29b uxth r3, r3 + 80064a6: 687a ldr r2, [r7, #4] + 80064a8: 4619 mov r1, r3 + 80064aa: 84d1 strh r1, [r2, #38] @ 0x26 + 80064ac: 2b00 cmp r3, #0 + 80064ae: d10f bne.n 80064d0 { /* Disable the UART Transmit Data Register Empty Interrupt */ __HAL_UART_DISABLE_IT(huart, UART_IT_TXE); - 8006210: 687b ldr r3, [r7, #4] - 8006212: 681b ldr r3, [r3, #0] - 8006214: 68da ldr r2, [r3, #12] - 8006216: 687b ldr r3, [r7, #4] - 8006218: 681b ldr r3, [r3, #0] - 800621a: f022 0280 bic.w r2, r2, #128 @ 0x80 - 800621e: 60da str r2, [r3, #12] + 80064b0: 687b ldr r3, [r7, #4] + 80064b2: 681b ldr r3, [r3, #0] + 80064b4: 68da ldr r2, [r3, #12] + 80064b6: 687b ldr r3, [r7, #4] + 80064b8: 681b ldr r3, [r3, #0] + 80064ba: f022 0280 bic.w r2, r2, #128 @ 0x80 + 80064be: 60da str r2, [r3, #12] /* Enable the UART Transmit Complete Interrupt */ __HAL_UART_ENABLE_IT(huart, UART_IT_TC); - 8006220: 687b ldr r3, [r7, #4] - 8006222: 681b ldr r3, [r3, #0] - 8006224: 68da ldr r2, [r3, #12] - 8006226: 687b ldr r3, [r7, #4] - 8006228: 681b ldr r3, [r3, #0] - 800622a: f042 0240 orr.w r2, r2, #64 @ 0x40 - 800622e: 60da str r2, [r3, #12] + 80064c0: 687b ldr r3, [r7, #4] + 80064c2: 681b ldr r3, [r3, #0] + 80064c4: 68da ldr r2, [r3, #12] + 80064c6: 687b ldr r3, [r7, #4] + 80064c8: 681b ldr r3, [r3, #0] + 80064ca: f042 0240 orr.w r2, r2, #64 @ 0x40 + 80064ce: 60da str r2, [r3, #12] } return HAL_OK; - 8006230: 2300 movs r3, #0 - 8006232: e000 b.n 8006236 + 80064d0: 2300 movs r3, #0 + 80064d2: e000 b.n 80064d6 } else { return HAL_BUSY; - 8006234: 2302 movs r3, #2 + 80064d4: 2302 movs r3, #2 } } - 8006236: 4618 mov r0, r3 - 8006238: 3714 adds r7, #20 - 800623a: 46bd mov sp, r7 - 800623c: bc80 pop {r7} - 800623e: 4770 bx lr + 80064d6: 4618 mov r0, r3 + 80064d8: 3714 adds r7, #20 + 80064da: 46bd mov sp, r7 + 80064dc: bc80 pop {r7} + 80064de: 4770 bx lr -08006240 : +080064e0 : * @param huart Pointer to a UART_HandleTypeDef structure that contains * the configuration information for the specified UART module. * @retval HAL status */ static HAL_StatusTypeDef UART_EndTransmit_IT(UART_HandleTypeDef *huart) { - 8006240: b580 push {r7, lr} - 8006242: b082 sub sp, #8 - 8006244: af00 add r7, sp, #0 - 8006246: 6078 str r0, [r7, #4] + 80064e0: b580 push {r7, lr} + 80064e2: b082 sub sp, #8 + 80064e4: af00 add r7, sp, #0 + 80064e6: 6078 str r0, [r7, #4] /* Disable the UART Transmit Complete Interrupt */ __HAL_UART_DISABLE_IT(huart, UART_IT_TC); - 8006248: 687b ldr r3, [r7, #4] - 800624a: 681b ldr r3, [r3, #0] - 800624c: 68da ldr r2, [r3, #12] - 800624e: 687b ldr r3, [r7, #4] - 8006250: 681b ldr r3, [r3, #0] - 8006252: f022 0240 bic.w r2, r2, #64 @ 0x40 - 8006256: 60da str r2, [r3, #12] + 80064e8: 687b ldr r3, [r7, #4] + 80064ea: 681b ldr r3, [r3, #0] + 80064ec: 68da ldr r2, [r3, #12] + 80064ee: 687b ldr r3, [r7, #4] + 80064f0: 681b ldr r3, [r3, #0] + 80064f2: f022 0240 bic.w r2, r2, #64 @ 0x40 + 80064f6: 60da str r2, [r3, #12] /* Tx process is ended, restore huart->gState to Ready */ huart->gState = HAL_UART_STATE_READY; - 8006258: 687b ldr r3, [r7, #4] - 800625a: 2220 movs r2, #32 - 800625c: f883 2041 strb.w r2, [r3, #65] @ 0x41 + 80064f8: 687b ldr r3, [r7, #4] + 80064fa: 2220 movs r2, #32 + 80064fc: f883 2041 strb.w r2, [r3, #65] @ 0x41 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered Tx complete callback*/ huart->TxCpltCallback(huart); #else /*Call legacy weak Tx complete callback*/ HAL_UART_TxCpltCallback(huart); - 8006260: 6878 ldr r0, [r7, #4] - 8006262: f7ff fea9 bl 8005fb8 + 8006500: 6878 ldr r0, [r7, #4] + 8006502: f7ff fea9 bl 8006258 #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ return HAL_OK; - 8006266: 2300 movs r3, #0 + 8006506: 2300 movs r3, #0 } - 8006268: 4618 mov r0, r3 - 800626a: 3708 adds r7, #8 - 800626c: 46bd mov sp, r7 - 800626e: bd80 pop {r7, pc} + 8006508: 4618 mov r0, r3 + 800650a: 3708 adds r7, #8 + 800650c: 46bd mov sp, r7 + 800650e: bd80 pop {r7, pc} -08006270 : +08006510 : * @param huart Pointer to a UART_HandleTypeDef structure that contains * the configuration information for the specified UART module. * @retval HAL status */ static HAL_StatusTypeDef UART_Receive_IT(UART_HandleTypeDef *huart) { - 8006270: b580 push {r7, lr} - 8006272: b08c sub sp, #48 @ 0x30 - 8006274: af00 add r7, sp, #0 - 8006276: 6078 str r0, [r7, #4] + 8006510: b580 push {r7, lr} + 8006512: b08c sub sp, #48 @ 0x30 + 8006514: af00 add r7, sp, #0 + 8006516: 6078 str r0, [r7, #4] uint8_t *pdata8bits; uint16_t *pdata16bits; /* Check that a Rx process is ongoing */ if (huart->RxState == HAL_UART_STATE_BUSY_RX) - 8006278: 687b ldr r3, [r7, #4] - 800627a: f893 3042 ldrb.w r3, [r3, #66] @ 0x42 - 800627e: b2db uxtb r3, r3 - 8006280: 2b22 cmp r3, #34 @ 0x22 - 8006282: f040 80ae bne.w 80063e2 + 8006518: 687b ldr r3, [r7, #4] + 800651a: f893 3042 ldrb.w r3, [r3, #66] @ 0x42 + 800651e: b2db uxtb r3, r3 + 8006520: 2b22 cmp r3, #34 @ 0x22 + 8006522: f040 80ae bne.w 8006682 { if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) - 8006286: 687b ldr r3, [r7, #4] - 8006288: 689b ldr r3, [r3, #8] - 800628a: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 800628e: d117 bne.n 80062c0 - 8006290: 687b ldr r3, [r7, #4] - 8006292: 691b ldr r3, [r3, #16] - 8006294: 2b00 cmp r3, #0 - 8006296: d113 bne.n 80062c0 + 8006526: 687b ldr r3, [r7, #4] + 8006528: 689b ldr r3, [r3, #8] + 800652a: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 800652e: d117 bne.n 8006560 + 8006530: 687b ldr r3, [r7, #4] + 8006532: 691b ldr r3, [r3, #16] + 8006534: 2b00 cmp r3, #0 + 8006536: d113 bne.n 8006560 { pdata8bits = NULL; - 8006298: 2300 movs r3, #0 - 800629a: 62fb str r3, [r7, #44] @ 0x2c + 8006538: 2300 movs r3, #0 + 800653a: 62fb str r3, [r7, #44] @ 0x2c pdata16bits = (uint16_t *) huart->pRxBuffPtr; - 800629c: 687b ldr r3, [r7, #4] - 800629e: 6a9b ldr r3, [r3, #40] @ 0x28 - 80062a0: 62bb str r3, [r7, #40] @ 0x28 + 800653c: 687b ldr r3, [r7, #4] + 800653e: 6a9b ldr r3, [r3, #40] @ 0x28 + 8006540: 62bb str r3, [r7, #40] @ 0x28 *pdata16bits = (uint16_t)(huart->Instance->DR & (uint16_t)0x01FF); - 80062a2: 687b ldr r3, [r7, #4] - 80062a4: 681b ldr r3, [r3, #0] - 80062a6: 685b ldr r3, [r3, #4] - 80062a8: b29b uxth r3, r3 - 80062aa: f3c3 0308 ubfx r3, r3, #0, #9 - 80062ae: b29a uxth r2, r3 - 80062b0: 6abb ldr r3, [r7, #40] @ 0x28 - 80062b2: 801a strh r2, [r3, #0] + 8006542: 687b ldr r3, [r7, #4] + 8006544: 681b ldr r3, [r3, #0] + 8006546: 685b ldr r3, [r3, #4] + 8006548: b29b uxth r3, r3 + 800654a: f3c3 0308 ubfx r3, r3, #0, #9 + 800654e: b29a uxth r2, r3 + 8006550: 6abb ldr r3, [r7, #40] @ 0x28 + 8006552: 801a strh r2, [r3, #0] huart->pRxBuffPtr += 2U; - 80062b4: 687b ldr r3, [r7, #4] - 80062b6: 6a9b ldr r3, [r3, #40] @ 0x28 - 80062b8: 1c9a adds r2, r3, #2 - 80062ba: 687b ldr r3, [r7, #4] - 80062bc: 629a str r2, [r3, #40] @ 0x28 - 80062be: e026 b.n 800630e + 8006554: 687b ldr r3, [r7, #4] + 8006556: 6a9b ldr r3, [r3, #40] @ 0x28 + 8006558: 1c9a adds r2, r3, #2 + 800655a: 687b ldr r3, [r7, #4] + 800655c: 629a str r2, [r3, #40] @ 0x28 + 800655e: e026 b.n 80065ae } else { pdata8bits = (uint8_t *) huart->pRxBuffPtr; - 80062c0: 687b ldr r3, [r7, #4] - 80062c2: 6a9b ldr r3, [r3, #40] @ 0x28 - 80062c4: 62fb str r3, [r7, #44] @ 0x2c + 8006560: 687b ldr r3, [r7, #4] + 8006562: 6a9b ldr r3, [r3, #40] @ 0x28 + 8006564: 62fb str r3, [r7, #44] @ 0x2c pdata16bits = NULL; - 80062c6: 2300 movs r3, #0 - 80062c8: 62bb str r3, [r7, #40] @ 0x28 + 8006566: 2300 movs r3, #0 + 8006568: 62bb str r3, [r7, #40] @ 0x28 if ((huart->Init.WordLength == UART_WORDLENGTH_9B) || ((huart->Init.WordLength == UART_WORDLENGTH_8B) && (huart->Init.Parity == UART_PARITY_NONE))) - 80062ca: 687b ldr r3, [r7, #4] - 80062cc: 689b ldr r3, [r3, #8] - 80062ce: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 80062d2: d007 beq.n 80062e4 - 80062d4: 687b ldr r3, [r7, #4] - 80062d6: 689b ldr r3, [r3, #8] - 80062d8: 2b00 cmp r3, #0 - 80062da: d10a bne.n 80062f2 - 80062dc: 687b ldr r3, [r7, #4] - 80062de: 691b ldr r3, [r3, #16] - 80062e0: 2b00 cmp r3, #0 - 80062e2: d106 bne.n 80062f2 + 800656a: 687b ldr r3, [r7, #4] + 800656c: 689b ldr r3, [r3, #8] + 800656e: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 8006572: d007 beq.n 8006584 + 8006574: 687b ldr r3, [r7, #4] + 8006576: 689b ldr r3, [r3, #8] + 8006578: 2b00 cmp r3, #0 + 800657a: d10a bne.n 8006592 + 800657c: 687b ldr r3, [r7, #4] + 800657e: 691b ldr r3, [r3, #16] + 8006580: 2b00 cmp r3, #0 + 8006582: d106 bne.n 8006592 { *pdata8bits = (uint8_t)(huart->Instance->DR & (uint8_t)0x00FF); - 80062e4: 687b ldr r3, [r7, #4] - 80062e6: 681b ldr r3, [r3, #0] - 80062e8: 685b ldr r3, [r3, #4] - 80062ea: b2da uxtb r2, r3 - 80062ec: 6afb ldr r3, [r7, #44] @ 0x2c - 80062ee: 701a strb r2, [r3, #0] - 80062f0: e008 b.n 8006304 + 8006584: 687b ldr r3, [r7, #4] + 8006586: 681b ldr r3, [r3, #0] + 8006588: 685b ldr r3, [r3, #4] + 800658a: b2da uxtb r2, r3 + 800658c: 6afb ldr r3, [r7, #44] @ 0x2c + 800658e: 701a strb r2, [r3, #0] + 8006590: e008 b.n 80065a4 } else { *pdata8bits = (uint8_t)(huart->Instance->DR & (uint8_t)0x007F); - 80062f2: 687b ldr r3, [r7, #4] - 80062f4: 681b ldr r3, [r3, #0] - 80062f6: 685b ldr r3, [r3, #4] - 80062f8: b2db uxtb r3, r3 - 80062fa: f003 037f and.w r3, r3, #127 @ 0x7f - 80062fe: b2da uxtb r2, r3 - 8006300: 6afb ldr r3, [r7, #44] @ 0x2c - 8006302: 701a strb r2, [r3, #0] + 8006592: 687b ldr r3, [r7, #4] + 8006594: 681b ldr r3, [r3, #0] + 8006596: 685b ldr r3, [r3, #4] + 8006598: b2db uxtb r3, r3 + 800659a: f003 037f and.w r3, r3, #127 @ 0x7f + 800659e: b2da uxtb r2, r3 + 80065a0: 6afb ldr r3, [r7, #44] @ 0x2c + 80065a2: 701a strb r2, [r3, #0] } huart->pRxBuffPtr += 1U; - 8006304: 687b ldr r3, [r7, #4] - 8006306: 6a9b ldr r3, [r3, #40] @ 0x28 - 8006308: 1c5a adds r2, r3, #1 - 800630a: 687b ldr r3, [r7, #4] - 800630c: 629a str r2, [r3, #40] @ 0x28 + 80065a4: 687b ldr r3, [r7, #4] + 80065a6: 6a9b ldr r3, [r3, #40] @ 0x28 + 80065a8: 1c5a adds r2, r3, #1 + 80065aa: 687b ldr r3, [r7, #4] + 80065ac: 629a str r2, [r3, #40] @ 0x28 } if (--huart->RxXferCount == 0U) - 800630e: 687b ldr r3, [r7, #4] - 8006310: 8ddb ldrh r3, [r3, #46] @ 0x2e - 8006312: b29b uxth r3, r3 - 8006314: 3b01 subs r3, #1 - 8006316: b29b uxth r3, r3 - 8006318: 687a ldr r2, [r7, #4] - 800631a: 4619 mov r1, r3 - 800631c: 85d1 strh r1, [r2, #46] @ 0x2e - 800631e: 2b00 cmp r3, #0 - 8006320: d15d bne.n 80063de + 80065ae: 687b ldr r3, [r7, #4] + 80065b0: 8ddb ldrh r3, [r3, #46] @ 0x2e + 80065b2: b29b uxth r3, r3 + 80065b4: 3b01 subs r3, #1 + 80065b6: b29b uxth r3, r3 + 80065b8: 687a ldr r2, [r7, #4] + 80065ba: 4619 mov r1, r3 + 80065bc: 85d1 strh r1, [r2, #46] @ 0x2e + 80065be: 2b00 cmp r3, #0 + 80065c0: d15d bne.n 800667e { /* Disable the UART Data Register not empty Interrupt */ __HAL_UART_DISABLE_IT(huart, UART_IT_RXNE); - 8006322: 687b ldr r3, [r7, #4] - 8006324: 681b ldr r3, [r3, #0] - 8006326: 68da ldr r2, [r3, #12] - 8006328: 687b ldr r3, [r7, #4] - 800632a: 681b ldr r3, [r3, #0] - 800632c: f022 0220 bic.w r2, r2, #32 - 8006330: 60da str r2, [r3, #12] + 80065c2: 687b ldr r3, [r7, #4] + 80065c4: 681b ldr r3, [r3, #0] + 80065c6: 68da ldr r2, [r3, #12] + 80065c8: 687b ldr r3, [r7, #4] + 80065ca: 681b ldr r3, [r3, #0] + 80065cc: f022 0220 bic.w r2, r2, #32 + 80065d0: 60da str r2, [r3, #12] /* Disable the UART Parity Error Interrupt */ __HAL_UART_DISABLE_IT(huart, UART_IT_PE); - 8006332: 687b ldr r3, [r7, #4] - 8006334: 681b ldr r3, [r3, #0] - 8006336: 68da ldr r2, [r3, #12] - 8006338: 687b ldr r3, [r7, #4] - 800633a: 681b ldr r3, [r3, #0] - 800633c: f422 7280 bic.w r2, r2, #256 @ 0x100 - 8006340: 60da str r2, [r3, #12] + 80065d2: 687b ldr r3, [r7, #4] + 80065d4: 681b ldr r3, [r3, #0] + 80065d6: 68da ldr r2, [r3, #12] + 80065d8: 687b ldr r3, [r7, #4] + 80065da: 681b ldr r3, [r3, #0] + 80065dc: f422 7280 bic.w r2, r2, #256 @ 0x100 + 80065e0: 60da str r2, [r3, #12] /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */ __HAL_UART_DISABLE_IT(huart, UART_IT_ERR); - 8006342: 687b ldr r3, [r7, #4] - 8006344: 681b ldr r3, [r3, #0] - 8006346: 695a ldr r2, [r3, #20] - 8006348: 687b ldr r3, [r7, #4] - 800634a: 681b ldr r3, [r3, #0] - 800634c: f022 0201 bic.w r2, r2, #1 - 8006350: 615a str r2, [r3, #20] + 80065e2: 687b ldr r3, [r7, #4] + 80065e4: 681b ldr r3, [r3, #0] + 80065e6: 695a ldr r2, [r3, #20] + 80065e8: 687b ldr r3, [r7, #4] + 80065ea: 681b ldr r3, [r3, #0] + 80065ec: f022 0201 bic.w r2, r2, #1 + 80065f0: 615a str r2, [r3, #20] /* Rx process is completed, restore huart->RxState to Ready */ huart->RxState = HAL_UART_STATE_READY; - 8006352: 687b ldr r3, [r7, #4] - 8006354: 2220 movs r2, #32 - 8006356: f883 2042 strb.w r2, [r3, #66] @ 0x42 + 80065f2: 687b ldr r3, [r7, #4] + 80065f4: 2220 movs r2, #32 + 80065f6: f883 2042 strb.w r2, [r3, #66] @ 0x42 /* Initialize type of RxEvent to Transfer Complete */ huart->RxEventType = HAL_UART_RXEVENT_TC; - 800635a: 687b ldr r3, [r7, #4] - 800635c: 2200 movs r2, #0 - 800635e: 635a str r2, [r3, #52] @ 0x34 + 80065fa: 687b ldr r3, [r7, #4] + 80065fc: 2200 movs r2, #0 + 80065fe: 635a str r2, [r3, #52] @ 0x34 /* Check current reception Mode : If Reception till IDLE event has been selected : */ if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) - 8006360: 687b ldr r3, [r7, #4] - 8006362: 6b1b ldr r3, [r3, #48] @ 0x30 - 8006364: 2b01 cmp r3, #1 - 8006366: d135 bne.n 80063d4 + 8006600: 687b ldr r3, [r7, #4] + 8006602: 6b1b ldr r3, [r3, #48] @ 0x30 + 8006604: 2b01 cmp r3, #1 + 8006606: d135 bne.n 8006674 { /* Set reception type to Standard */ huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 8006368: 687b ldr r3, [r7, #4] - 800636a: 2200 movs r2, #0 - 800636c: 631a str r2, [r3, #48] @ 0x30 + 8006608: 687b ldr r3, [r7, #4] + 800660a: 2200 movs r2, #0 + 800660c: 631a str r2, [r3, #48] @ 0x30 /* Disable IDLE interrupt */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); - 800636e: 687b ldr r3, [r7, #4] - 8006370: 681b ldr r3, [r3, #0] - 8006372: 330c adds r3, #12 - 8006374: 617b str r3, [r7, #20] + 800660e: 687b ldr r3, [r7, #4] + 8006610: 681b ldr r3, [r3, #0] + 8006612: 330c adds r3, #12 + 8006614: 617b str r3, [r7, #20] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 8006376: 697b ldr r3, [r7, #20] - 8006378: e853 3f00 ldrex r3, [r3] - 800637c: 613b str r3, [r7, #16] + 8006616: 697b ldr r3, [r7, #20] + 8006618: e853 3f00 ldrex r3, [r3] + 800661c: 613b str r3, [r7, #16] return(result); - 800637e: 693b ldr r3, [r7, #16] - 8006380: f023 0310 bic.w r3, r3, #16 - 8006384: 627b str r3, [r7, #36] @ 0x24 - 8006386: 687b ldr r3, [r7, #4] - 8006388: 681b ldr r3, [r3, #0] - 800638a: 330c adds r3, #12 - 800638c: 6a7a ldr r2, [r7, #36] @ 0x24 - 800638e: 623a str r2, [r7, #32] - 8006390: 61fb str r3, [r7, #28] + 800661e: 693b ldr r3, [r7, #16] + 8006620: f023 0310 bic.w r3, r3, #16 + 8006624: 627b str r3, [r7, #36] @ 0x24 + 8006626: 687b ldr r3, [r7, #4] + 8006628: 681b ldr r3, [r3, #0] + 800662a: 330c adds r3, #12 + 800662c: 6a7a ldr r2, [r7, #36] @ 0x24 + 800662e: 623a str r2, [r7, #32] + 8006630: 61fb str r3, [r7, #28] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 8006392: 69f9 ldr r1, [r7, #28] - 8006394: 6a3a ldr r2, [r7, #32] - 8006396: e841 2300 strex r3, r2, [r1] - 800639a: 61bb str r3, [r7, #24] + 8006632: 69f9 ldr r1, [r7, #28] + 8006634: 6a3a ldr r2, [r7, #32] + 8006636: e841 2300 strex r3, r2, [r1] + 800663a: 61bb str r3, [r7, #24] return(result); - 800639c: 69bb ldr r3, [r7, #24] - 800639e: 2b00 cmp r3, #0 - 80063a0: d1e5 bne.n 800636e + 800663c: 69bb ldr r3, [r7, #24] + 800663e: 2b00 cmp r3, #0 + 8006640: d1e5 bne.n 800660e /* Check if IDLE flag is set */ if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE)) - 80063a2: 687b ldr r3, [r7, #4] - 80063a4: 681b ldr r3, [r3, #0] - 80063a6: 681b ldr r3, [r3, #0] - 80063a8: f003 0310 and.w r3, r3, #16 - 80063ac: 2b10 cmp r3, #16 - 80063ae: d10a bne.n 80063c6 + 8006642: 687b ldr r3, [r7, #4] + 8006644: 681b ldr r3, [r3, #0] + 8006646: 681b ldr r3, [r3, #0] + 8006648: f003 0310 and.w r3, r3, #16 + 800664c: 2b10 cmp r3, #16 + 800664e: d10a bne.n 8006666 { /* Clear IDLE flag in ISR */ __HAL_UART_CLEAR_IDLEFLAG(huart); - 80063b0: 2300 movs r3, #0 - 80063b2: 60fb str r3, [r7, #12] - 80063b4: 687b ldr r3, [r7, #4] - 80063b6: 681b ldr r3, [r3, #0] - 80063b8: 681b ldr r3, [r3, #0] - 80063ba: 60fb str r3, [r7, #12] - 80063bc: 687b ldr r3, [r7, #4] - 80063be: 681b ldr r3, [r3, #0] - 80063c0: 685b ldr r3, [r3, #4] - 80063c2: 60fb str r3, [r7, #12] - 80063c4: 68fb ldr r3, [r7, #12] + 8006650: 2300 movs r3, #0 + 8006652: 60fb str r3, [r7, #12] + 8006654: 687b ldr r3, [r7, #4] + 8006656: 681b ldr r3, [r3, #0] + 8006658: 681b ldr r3, [r3, #0] + 800665a: 60fb str r3, [r7, #12] + 800665c: 687b ldr r3, [r7, #4] + 800665e: 681b ldr r3, [r3, #0] + 8006660: 685b ldr r3, [r3, #4] + 8006662: 60fb str r3, [r7, #12] + 8006664: 68fb ldr r3, [r7, #12] #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered Rx Event callback*/ huart->RxEventCallback(huart, huart->RxXferSize); #else /*Call legacy weak Rx Event callback*/ HAL_UARTEx_RxEventCallback(huart, huart->RxXferSize); - 80063c6: 687b ldr r3, [r7, #4] - 80063c8: 8d9b ldrh r3, [r3, #44] @ 0x2c - 80063ca: 4619 mov r1, r3 - 80063cc: 6878 ldr r0, [r7, #4] - 80063ce: f7ff fe0e bl 8005fee - 80063d2: e002 b.n 80063da + 8006666: 687b ldr r3, [r7, #4] + 8006668: 8d9b ldrh r3, [r3, #44] @ 0x2c + 800666a: 4619 mov r1, r3 + 800666c: 6878 ldr r0, [r7, #4] + 800666e: f7ff fe0e bl 800628e + 8006672: e002 b.n 800667a #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered Rx complete callback*/ huart->RxCpltCallback(huart); #else /*Call legacy weak Rx complete callback*/ HAL_UART_RxCpltCallback(huart); - 80063d4: 6878 ldr r0, [r7, #4] - 80063d6: f7ff fdf8 bl 8005fca + 8006674: 6878 ldr r0, [r7, #4] + 8006676: f7ff fdf8 bl 800626a #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ } return HAL_OK; - 80063da: 2300 movs r3, #0 - 80063dc: e002 b.n 80063e4 + 800667a: 2300 movs r3, #0 + 800667c: e002 b.n 8006684 } return HAL_OK; - 80063de: 2300 movs r3, #0 - 80063e0: e000 b.n 80063e4 + 800667e: 2300 movs r3, #0 + 8006680: e000 b.n 8006684 } else { return HAL_BUSY; - 80063e2: 2302 movs r3, #2 + 8006682: 2302 movs r3, #2 } } - 80063e4: 4618 mov r0, r3 - 80063e6: 3730 adds r7, #48 @ 0x30 - 80063e8: 46bd mov sp, r7 - 80063ea: bd80 pop {r7, pc} + 8006684: 4618 mov r0, r3 + 8006686: 3730 adds r7, #48 @ 0x30 + 8006688: 46bd mov sp, r7 + 800668a: bd80 pop {r7, pc} -080063ec : +0800668c : * @param huart Pointer to a UART_HandleTypeDef structure that contains * the configuration information for the specified UART module. * @retval None */ static void UART_SetConfig(UART_HandleTypeDef *huart) { - 80063ec: b580 push {r7, lr} - 80063ee: b084 sub sp, #16 - 80063f0: af00 add r7, sp, #0 - 80063f2: 6078 str r0, [r7, #4] + 800668c: b580 push {r7, lr} + 800668e: b084 sub sp, #16 + 8006690: af00 add r7, sp, #0 + 8006692: 6078 str r0, [r7, #4] assert_param(IS_UART_MODE(huart->Init.Mode)); /*-------------------------- 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); - 80063f4: 687b ldr r3, [r7, #4] - 80063f6: 681b ldr r3, [r3, #0] - 80063f8: 691b ldr r3, [r3, #16] - 80063fa: f423 5140 bic.w r1, r3, #12288 @ 0x3000 - 80063fe: 687b ldr r3, [r7, #4] - 8006400: 68da ldr r2, [r3, #12] - 8006402: 687b ldr r3, [r7, #4] - 8006404: 681b ldr r3, [r3, #0] - 8006406: 430a orrs r2, r1 - 8006408: 611a str r2, [r3, #16] + 8006694: 687b ldr r3, [r7, #4] + 8006696: 681b ldr r3, [r3, #0] + 8006698: 691b ldr r3, [r3, #16] + 800669a: f423 5140 bic.w r1, r3, #12288 @ 0x3000 + 800669e: 687b ldr r3, [r7, #4] + 80066a0: 68da ldr r2, [r3, #12] + 80066a2: 687b ldr r3, [r7, #4] + 80066a4: 681b ldr r3, [r3, #0] + 80066a6: 430a orrs r2, r1 + 80066a8: 611a str r2, [r3, #16] tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling; MODIFY_REG(huart->Instance->CR1, (uint32_t)(USART_CR1_M | USART_CR1_PCE | USART_CR1_PS | USART_CR1_TE | USART_CR1_RE | USART_CR1_OVER8), tmpreg); #else tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode; - 800640a: 687b ldr r3, [r7, #4] - 800640c: 689a ldr r2, [r3, #8] - 800640e: 687b ldr r3, [r7, #4] - 8006410: 691b ldr r3, [r3, #16] - 8006412: 431a orrs r2, r3 - 8006414: 687b ldr r3, [r7, #4] - 8006416: 695b ldr r3, [r3, #20] - 8006418: 4313 orrs r3, r2 - 800641a: 60bb str r3, [r7, #8] + 80066aa: 687b ldr r3, [r7, #4] + 80066ac: 689a ldr r2, [r3, #8] + 80066ae: 687b ldr r3, [r7, #4] + 80066b0: 691b ldr r3, [r3, #16] + 80066b2: 431a orrs r2, r3 + 80066b4: 687b ldr r3, [r7, #4] + 80066b6: 695b ldr r3, [r3, #20] + 80066b8: 4313 orrs r3, r2 + 80066ba: 60bb str r3, [r7, #8] MODIFY_REG(huart->Instance->CR1, - 800641c: 687b ldr r3, [r7, #4] - 800641e: 681b ldr r3, [r3, #0] - 8006420: 68db ldr r3, [r3, #12] - 8006422: f423 53b0 bic.w r3, r3, #5632 @ 0x1600 - 8006426: f023 030c bic.w r3, r3, #12 - 800642a: 687a ldr r2, [r7, #4] - 800642c: 6812 ldr r2, [r2, #0] - 800642e: 68b9 ldr r1, [r7, #8] - 8006430: 430b orrs r3, r1 - 8006432: 60d3 str r3, [r2, #12] + 80066bc: 687b ldr r3, [r7, #4] + 80066be: 681b ldr r3, [r3, #0] + 80066c0: 68db ldr r3, [r3, #12] + 80066c2: f423 53b0 bic.w r3, r3, #5632 @ 0x1600 + 80066c6: f023 030c bic.w r3, r3, #12 + 80066ca: 687a ldr r2, [r7, #4] + 80066cc: 6812 ldr r2, [r2, #0] + 80066ce: 68b9 ldr r1, [r7, #8] + 80066d0: 430b orrs r3, r1 + 80066d2: 60d3 str r3, [r2, #12] tmpreg); #endif /* USART_CR1_OVER8 */ /*-------------------------- USART CR3 Configuration -----------------------*/ /* Configure the UART HFC: Set CTSE and RTSE bits according to huart->Init.HwFlowCtl value */ MODIFY_REG(huart->Instance->CR3, (USART_CR3_RTSE | USART_CR3_CTSE), huart->Init.HwFlowCtl); - 8006434: 687b ldr r3, [r7, #4] - 8006436: 681b ldr r3, [r3, #0] - 8006438: 695b ldr r3, [r3, #20] - 800643a: f423 7140 bic.w r1, r3, #768 @ 0x300 - 800643e: 687b ldr r3, [r7, #4] - 8006440: 699a ldr r2, [r3, #24] - 8006442: 687b ldr r3, [r7, #4] - 8006444: 681b ldr r3, [r3, #0] - 8006446: 430a orrs r2, r1 - 8006448: 615a str r2, [r3, #20] + 80066d4: 687b ldr r3, [r7, #4] + 80066d6: 681b ldr r3, [r3, #0] + 80066d8: 695b ldr r3, [r3, #20] + 80066da: f423 7140 bic.w r1, r3, #768 @ 0x300 + 80066de: 687b ldr r3, [r7, #4] + 80066e0: 699a ldr r2, [r3, #24] + 80066e2: 687b ldr r3, [r7, #4] + 80066e4: 681b ldr r3, [r3, #0] + 80066e6: 430a orrs r2, r1 + 80066e8: 615a str r2, [r3, #20] if(huart->Instance == USART1) - 800644a: 687b ldr r3, [r7, #4] - 800644c: 681b ldr r3, [r3, #0] - 800644e: 4a2c ldr r2, [pc, #176] @ (8006500 ) - 8006450: 4293 cmp r3, r2 - 8006452: d103 bne.n 800645c + 80066ea: 687b ldr r3, [r7, #4] + 80066ec: 681b ldr r3, [r3, #0] + 80066ee: 4a2c ldr r2, [pc, #176] @ (80067a0 ) + 80066f0: 4293 cmp r3, r2 + 80066f2: d103 bne.n 80066fc { pclk = HAL_RCC_GetPCLK2Freq(); - 8006454: f7fe fd68 bl 8004f28 - 8006458: 60f8 str r0, [r7, #12] - 800645a: e002 b.n 8006462 + 80066f4: f7fe fd68 bl 80051c8 + 80066f8: 60f8 str r0, [r7, #12] + 80066fa: e002 b.n 8006702 } else { pclk = HAL_RCC_GetPCLK1Freq(); - 800645c: f7fe fd50 bl 8004f00 - 8006460: 60f8 str r0, [r7, #12] + 80066fc: f7fe fd50 bl 80051a0 + 8006700: 60f8 str r0, [r7, #12] else { huart->Instance->BRR = UART_BRR_SAMPLING16(pclk, huart->Init.BaudRate); } #else huart->Instance->BRR = UART_BRR_SAMPLING16(pclk, huart->Init.BaudRate); - 8006462: 68fa ldr r2, [r7, #12] - 8006464: 4613 mov r3, r2 - 8006466: 009b lsls r3, r3, #2 - 8006468: 4413 add r3, r2 - 800646a: 009a lsls r2, r3, #2 - 800646c: 441a add r2, r3 - 800646e: 687b ldr r3, [r7, #4] - 8006470: 685b ldr r3, [r3, #4] - 8006472: 009b lsls r3, r3, #2 - 8006474: fbb2 f3f3 udiv r3, r2, r3 - 8006478: 4a22 ldr r2, [pc, #136] @ (8006504 ) - 800647a: fba2 2303 umull r2, r3, r2, r3 - 800647e: 095b lsrs r3, r3, #5 - 8006480: 0119 lsls r1, r3, #4 - 8006482: 68fa ldr r2, [r7, #12] - 8006484: 4613 mov r3, r2 - 8006486: 009b lsls r3, r3, #2 - 8006488: 4413 add r3, r2 - 800648a: 009a lsls r2, r3, #2 - 800648c: 441a add r2, r3 - 800648e: 687b ldr r3, [r7, #4] - 8006490: 685b ldr r3, [r3, #4] - 8006492: 009b lsls r3, r3, #2 - 8006494: fbb2 f2f3 udiv r2, r2, r3 - 8006498: 4b1a ldr r3, [pc, #104] @ (8006504 ) - 800649a: fba3 0302 umull r0, r3, r3, r2 - 800649e: 095b lsrs r3, r3, #5 - 80064a0: 2064 movs r0, #100 @ 0x64 - 80064a2: fb00 f303 mul.w r3, r0, r3 - 80064a6: 1ad3 subs r3, r2, r3 - 80064a8: 011b lsls r3, r3, #4 - 80064aa: 3332 adds r3, #50 @ 0x32 - 80064ac: 4a15 ldr r2, [pc, #84] @ (8006504 ) - 80064ae: fba2 2303 umull r2, r3, r2, r3 - 80064b2: 095b lsrs r3, r3, #5 - 80064b4: f003 03f0 and.w r3, r3, #240 @ 0xf0 - 80064b8: 4419 add r1, r3 - 80064ba: 68fa ldr r2, [r7, #12] - 80064bc: 4613 mov r3, r2 - 80064be: 009b lsls r3, r3, #2 - 80064c0: 4413 add r3, r2 - 80064c2: 009a lsls r2, r3, #2 - 80064c4: 441a add r2, r3 - 80064c6: 687b ldr r3, [r7, #4] - 80064c8: 685b ldr r3, [r3, #4] - 80064ca: 009b lsls r3, r3, #2 - 80064cc: fbb2 f2f3 udiv r2, r2, r3 - 80064d0: 4b0c ldr r3, [pc, #48] @ (8006504 ) - 80064d2: fba3 0302 umull r0, r3, r3, r2 - 80064d6: 095b lsrs r3, r3, #5 - 80064d8: 2064 movs r0, #100 @ 0x64 - 80064da: fb00 f303 mul.w r3, r0, r3 - 80064de: 1ad3 subs r3, r2, r3 - 80064e0: 011b lsls r3, r3, #4 - 80064e2: 3332 adds r3, #50 @ 0x32 - 80064e4: 4a07 ldr r2, [pc, #28] @ (8006504 ) - 80064e6: fba2 2303 umull r2, r3, r2, r3 - 80064ea: 095b lsrs r3, r3, #5 - 80064ec: f003 020f and.w r2, r3, #15 - 80064f0: 687b ldr r3, [r7, #4] - 80064f2: 681b ldr r3, [r3, #0] - 80064f4: 440a add r2, r1 - 80064f6: 609a str r2, [r3, #8] + 8006702: 68fa ldr r2, [r7, #12] + 8006704: 4613 mov r3, r2 + 8006706: 009b lsls r3, r3, #2 + 8006708: 4413 add r3, r2 + 800670a: 009a lsls r2, r3, #2 + 800670c: 441a add r2, r3 + 800670e: 687b ldr r3, [r7, #4] + 8006710: 685b ldr r3, [r3, #4] + 8006712: 009b lsls r3, r3, #2 + 8006714: fbb2 f3f3 udiv r3, r2, r3 + 8006718: 4a22 ldr r2, [pc, #136] @ (80067a4 ) + 800671a: fba2 2303 umull r2, r3, r2, r3 + 800671e: 095b lsrs r3, r3, #5 + 8006720: 0119 lsls r1, r3, #4 + 8006722: 68fa ldr r2, [r7, #12] + 8006724: 4613 mov r3, r2 + 8006726: 009b lsls r3, r3, #2 + 8006728: 4413 add r3, r2 + 800672a: 009a lsls r2, r3, #2 + 800672c: 441a add r2, r3 + 800672e: 687b ldr r3, [r7, #4] + 8006730: 685b ldr r3, [r3, #4] + 8006732: 009b lsls r3, r3, #2 + 8006734: fbb2 f2f3 udiv r2, r2, r3 + 8006738: 4b1a ldr r3, [pc, #104] @ (80067a4 ) + 800673a: fba3 0302 umull r0, r3, r3, r2 + 800673e: 095b lsrs r3, r3, #5 + 8006740: 2064 movs r0, #100 @ 0x64 + 8006742: fb00 f303 mul.w r3, r0, r3 + 8006746: 1ad3 subs r3, r2, r3 + 8006748: 011b lsls r3, r3, #4 + 800674a: 3332 adds r3, #50 @ 0x32 + 800674c: 4a15 ldr r2, [pc, #84] @ (80067a4 ) + 800674e: fba2 2303 umull r2, r3, r2, r3 + 8006752: 095b lsrs r3, r3, #5 + 8006754: f003 03f0 and.w r3, r3, #240 @ 0xf0 + 8006758: 4419 add r1, r3 + 800675a: 68fa ldr r2, [r7, #12] + 800675c: 4613 mov r3, r2 + 800675e: 009b lsls r3, r3, #2 + 8006760: 4413 add r3, r2 + 8006762: 009a lsls r2, r3, #2 + 8006764: 441a add r2, r3 + 8006766: 687b ldr r3, [r7, #4] + 8006768: 685b ldr r3, [r3, #4] + 800676a: 009b lsls r3, r3, #2 + 800676c: fbb2 f2f3 udiv r2, r2, r3 + 8006770: 4b0c ldr r3, [pc, #48] @ (80067a4 ) + 8006772: fba3 0302 umull r0, r3, r3, r2 + 8006776: 095b lsrs r3, r3, #5 + 8006778: 2064 movs r0, #100 @ 0x64 + 800677a: fb00 f303 mul.w r3, r0, r3 + 800677e: 1ad3 subs r3, r2, r3 + 8006780: 011b lsls r3, r3, #4 + 8006782: 3332 adds r3, #50 @ 0x32 + 8006784: 4a07 ldr r2, [pc, #28] @ (80067a4 ) + 8006786: fba2 2303 umull r2, r3, r2, r3 + 800678a: 095b lsrs r3, r3, #5 + 800678c: f003 020f and.w r2, r3, #15 + 8006790: 687b ldr r3, [r7, #4] + 8006792: 681b ldr r3, [r3, #0] + 8006794: 440a add r2, r1 + 8006796: 609a str r2, [r3, #8] #endif /* USART_CR1_OVER8 */ } - 80064f8: bf00 nop - 80064fa: 3710 adds r7, #16 - 80064fc: 46bd mov sp, r7 - 80064fe: bd80 pop {r7, pc} - 8006500: 40013800 .word 0x40013800 - 8006504: 51eb851f .word 0x51eb851f + 8006798: bf00 nop + 800679a: 3710 adds r7, #16 + 800679c: 46bd mov sp, r7 + 800679e: bd80 pop {r7, pc} + 80067a0: 40013800 .word 0x40013800 + 80067a4: 51eb851f .word 0x51eb851f -08006508 : - 8006508: 4603 mov r3, r0 - 800650a: 4402 add r2, r0 - 800650c: 4293 cmp r3, r2 - 800650e: d100 bne.n 8006512 - 8006510: 4770 bx lr - 8006512: f803 1b01 strb.w r1, [r3], #1 - 8006516: e7f9 b.n 800650c +080067a8 : + 80067a8: 4603 mov r3, r0 + 80067aa: 4402 add r2, r0 + 80067ac: 4293 cmp r3, r2 + 80067ae: d100 bne.n 80067b2 + 80067b0: 4770 bx lr + 80067b2: f803 1b01 strb.w r1, [r3], #1 + 80067b6: e7f9 b.n 80067ac -08006518 <__errno>: - 8006518: 4b01 ldr r3, [pc, #4] @ (8006520 <__errno+0x8>) - 800651a: 6818 ldr r0, [r3, #0] - 800651c: 4770 bx lr - 800651e: bf00 nop - 8006520: 20000044 .word 0x20000044 +080067b8 <__errno>: + 80067b8: 4b01 ldr r3, [pc, #4] @ (80067c0 <__errno+0x8>) + 80067ba: 6818 ldr r0, [r3, #0] + 80067bc: 4770 bx lr + 80067be: bf00 nop + 80067c0: 20000014 .word 0x20000014 -08006524 <__libc_init_array>: - 8006524: b570 push {r4, r5, r6, lr} - 8006526: 2600 movs r6, #0 - 8006528: 4d0c ldr r5, [pc, #48] @ (800655c <__libc_init_array+0x38>) - 800652a: 4b0d ldr r3, [pc, #52] @ (8006560 <__libc_init_array+0x3c>) - 800652c: 1b5b subs r3, r3, r5 - 800652e: 109c asrs r4, r3, #2 - 8006530: 42a6 cmp r6, r4 - 8006532: d109 bne.n 8006548 <__libc_init_array+0x24> - 8006534: 2600 movs r6, #0 - 8006536: f000 f8b7 bl 80066a8 <_init> - 800653a: 4d0a ldr r5, [pc, #40] @ (8006564 <__libc_init_array+0x40>) - 800653c: 4b0a ldr r3, [pc, #40] @ (8006568 <__libc_init_array+0x44>) - 800653e: 1b5b subs r3, r3, r5 - 8006540: 109c asrs r4, r3, #2 - 8006542: 42a6 cmp r6, r4 - 8006544: d105 bne.n 8006552 <__libc_init_array+0x2e> - 8006546: bd70 pop {r4, r5, r6, pc} - 8006548: f855 3b04 ldr.w r3, [r5], #4 - 800654c: 4798 blx r3 - 800654e: 3601 adds r6, #1 - 8006550: e7ee b.n 8006530 <__libc_init_array+0xc> - 8006552: f855 3b04 ldr.w r3, [r5], #4 - 8006556: 4798 blx r3 - 8006558: 3601 adds r6, #1 - 800655a: e7f2 b.n 8006542 <__libc_init_array+0x1e> - 800655c: 0800674c .word 0x0800674c - 8006560: 0800674c .word 0x0800674c - 8006564: 0800674c .word 0x0800674c - 8006568: 08006750 .word 0x08006750 +080067c4 <__libc_init_array>: + 80067c4: b570 push {r4, r5, r6, lr} + 80067c6: 2600 movs r6, #0 + 80067c8: 4d0c ldr r5, [pc, #48] @ (80067fc <__libc_init_array+0x38>) + 80067ca: 4b0d ldr r3, [pc, #52] @ (8006800 <__libc_init_array+0x3c>) + 80067cc: 1b5b subs r3, r3, r5 + 80067ce: 109c asrs r4, r3, #2 + 80067d0: 42a6 cmp r6, r4 + 80067d2: d109 bne.n 80067e8 <__libc_init_array+0x24> + 80067d4: 2600 movs r6, #0 + 80067d6: f000 f8b7 bl 8006948 <_init> + 80067da: 4d0a ldr r5, [pc, #40] @ (8006804 <__libc_init_array+0x40>) + 80067dc: 4b0a ldr r3, [pc, #40] @ (8006808 <__libc_init_array+0x44>) + 80067de: 1b5b subs r3, r3, r5 + 80067e0: 109c asrs r4, r3, #2 + 80067e2: 42a6 cmp r6, r4 + 80067e4: d105 bne.n 80067f2 <__libc_init_array+0x2e> + 80067e6: bd70 pop {r4, r5, r6, pc} + 80067e8: f855 3b04 ldr.w r3, [r5], #4 + 80067ec: 4798 blx r3 + 80067ee: 3601 adds r6, #1 + 80067f0: e7ee b.n 80067d0 <__libc_init_array+0xc> + 80067f2: f855 3b04 ldr.w r3, [r5], #4 + 80067f6: 4798 blx r3 + 80067f8: 3601 adds r6, #1 + 80067fa: e7f2 b.n 80067e2 <__libc_init_array+0x1e> + 80067fc: 08006aa4 .word 0x08006aa4 + 8006800: 08006aa4 .word 0x08006aa4 + 8006804: 08006aa4 .word 0x08006aa4 + 8006808: 08006aa8 .word 0x08006aa8 -0800656c : - 800656c: 440a add r2, r1 - 800656e: 4291 cmp r1, r2 - 8006570: f100 33ff add.w r3, r0, #4294967295 - 8006574: d100 bne.n 8006578 - 8006576: 4770 bx lr - 8006578: b510 push {r4, lr} - 800657a: f811 4b01 ldrb.w r4, [r1], #1 - 800657e: 4291 cmp r1, r2 - 8006580: f803 4f01 strb.w r4, [r3, #1]! - 8006584: d1f9 bne.n 800657a - 8006586: bd10 pop {r4, pc} +0800680c : + 800680c: 440a add r2, r1 + 800680e: 4291 cmp r1, r2 + 8006810: f100 33ff add.w r3, r0, #4294967295 + 8006814: d100 bne.n 8006818 + 8006816: 4770 bx lr + 8006818: b510 push {r4, lr} + 800681a: f811 4b01 ldrb.w r4, [r1], #1 + 800681e: 4291 cmp r1, r2 + 8006820: f803 4f01 strb.w r4, [r3, #1]! + 8006824: d1f9 bne.n 800681a + 8006826: bd10 pop {r4, pc} -08006588 : - 8006588: b538 push {r3, r4, r5, lr} - 800658a: 4604 mov r4, r0 - 800658c: f000 f81a bl 80065c4 <__ieee754_sqrtf> - 8006590: 4621 mov r1, r4 - 8006592: 4605 mov r5, r0 - 8006594: 4620 mov r0, r4 - 8006596: f7fa fc4b bl 8000e30 <__aeabi_fcmpun> - 800659a: b920 cbnz r0, 80065a6 - 800659c: 4620 mov r0, r4 - 800659e: 2100 movs r1, #0 - 80065a0: f7fa fc1e bl 8000de0 <__aeabi_fcmplt> - 80065a4: b908 cbnz r0, 80065aa - 80065a6: 4628 mov r0, r5 - 80065a8: bd38 pop {r3, r4, r5, pc} - 80065aa: f7ff ffb5 bl 8006518 <__errno> - 80065ae: 2221 movs r2, #33 @ 0x21 - 80065b0: 4603 mov r3, r0 - 80065b2: 2100 movs r1, #0 - 80065b4: 601a str r2, [r3, #0] - 80065b6: 4608 mov r0, r1 - 80065b8: f7fa fb28 bl 8000c0c <__aeabi_fdiv> - 80065bc: 4605 mov r5, r0 - 80065be: 4628 mov r0, r5 - 80065c0: bd38 pop {r3, r4, r5, pc} - 80065c2: bf00 nop +08006828 : + 8006828: b538 push {r3, r4, r5, lr} + 800682a: 4604 mov r4, r0 + 800682c: f000 f81a bl 8006864 <__ieee754_sqrtf> + 8006830: 4621 mov r1, r4 + 8006832: 4605 mov r5, r0 + 8006834: 4620 mov r0, r4 + 8006836: f7fa fafb bl 8000e30 <__aeabi_fcmpun> + 800683a: b920 cbnz r0, 8006846 + 800683c: 4620 mov r0, r4 + 800683e: 2100 movs r1, #0 + 8006840: f7fa face bl 8000de0 <__aeabi_fcmplt> + 8006844: b908 cbnz r0, 800684a + 8006846: 4628 mov r0, r5 + 8006848: bd38 pop {r3, r4, r5, pc} + 800684a: f7ff ffb5 bl 80067b8 <__errno> + 800684e: 2221 movs r2, #33 @ 0x21 + 8006850: 4603 mov r3, r0 + 8006852: 2100 movs r1, #0 + 8006854: 601a str r2, [r3, #0] + 8006856: 4608 mov r0, r1 + 8006858: f7fa f9d8 bl 8000c0c <__aeabi_fdiv> + 800685c: 4605 mov r5, r0 + 800685e: 4628 mov r0, r5 + 8006860: bd38 pop {r3, r4, r5, pc} + 8006862: bf00 nop -080065c4 <__ieee754_sqrtf>: - 80065c4: f020 4200 bic.w r2, r0, #2147483648 @ 0x80000000 - 80065c8: f1b2 4fff cmp.w r2, #2139095040 @ 0x7f800000 - 80065cc: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 80065d0: 4604 mov r4, r0 - 80065d2: d24f bcs.n 8006674 <__ieee754_sqrtf+0xb0> - 80065d4: 2a00 cmp r2, #0 - 80065d6: d04b beq.n 8006670 <__ieee754_sqrtf+0xac> - 80065d8: 2800 cmp r0, #0 - 80065da: 4603 mov r3, r0 - 80065dc: db54 blt.n 8006688 <__ieee754_sqrtf+0xc4> - 80065de: f010 42ff ands.w r2, r0, #2139095040 @ 0x7f800000 - 80065e2: d14f bne.n 8006684 <__ieee754_sqrtf+0xc0> - 80065e4: 005b lsls r3, r3, #1 - 80065e6: 0218 lsls r0, r3, #8 - 80065e8: 4611 mov r1, r2 - 80065ea: f102 0201 add.w r2, r2, #1 - 80065ee: d5f9 bpl.n 80065e4 <__ieee754_sqrtf+0x20> - 80065f0: 4249 negs r1, r1 - 80065f2: 2400 movs r4, #0 - 80065f4: f3c3 0216 ubfx r2, r3, #0, #23 - 80065f8: f1a1 057f sub.w r5, r1, #127 @ 0x7f - 80065fc: 07cb lsls r3, r1, #31 - 80065fe: f04f 0e19 mov.w lr, #25 - 8006602: f04f 7c80 mov.w ip, #16777216 @ 0x1000000 - 8006606: 4621 mov r1, r4 - 8006608: f442 0200 orr.w r2, r2, #8388608 @ 0x800000 - 800660c: bf58 it pl - 800660e: 0052 lslpl r2, r2, #1 - 8006610: 106d asrs r5, r5, #1 - 8006612: 0052 lsls r2, r2, #1 - 8006614: eb01 030c add.w r3, r1, ip - 8006618: 4293 cmp r3, r2 - 800661a: bfcf iteee gt - 800661c: 4613 movgt r3, r2 - 800661e: eb03 010c addle.w r1, r3, ip - 8006622: 4464 addle r4, ip - 8006624: 1ad3 suble r3, r2, r3 - 8006626: f1be 0e01 subs.w lr, lr, #1 - 800662a: ea4f 0243 mov.w r2, r3, lsl #1 - 800662e: ea4f 0c5c mov.w ip, ip, lsr #1 - 8006632: d1ef bne.n 8006614 <__ieee754_sqrtf+0x50> - 8006634: b1bb cbz r3, 8006666 <__ieee754_sqrtf+0xa2> - 8006636: 4e1a ldr r6, [pc, #104] @ (80066a0 <__ieee754_sqrtf+0xdc>) - 8006638: 4f1a ldr r7, [pc, #104] @ (80066a4 <__ieee754_sqrtf+0xe0>) - 800663a: 6830 ldr r0, [r6, #0] - 800663c: 6839 ldr r1, [r7, #0] - 800663e: f7fa f927 bl 8000890 <__aeabi_fsub> - 8006642: f8d6 8000 ldr.w r8, [r6] - 8006646: 4601 mov r1, r0 - 8006648: 4640 mov r0, r8 - 800664a: f7fa fbd3 bl 8000df4 <__aeabi_fcmple> - 800664e: b150 cbz r0, 8006666 <__ieee754_sqrtf+0xa2> - 8006650: 6830 ldr r0, [r6, #0] - 8006652: 6839 ldr r1, [r7, #0] - 8006654: f7fa f91e bl 8000894 <__addsf3> - 8006658: 6836 ldr r6, [r6, #0] - 800665a: 4601 mov r1, r0 - 800665c: 4630 mov r0, r6 - 800665e: f7fa fbbf bl 8000de0 <__aeabi_fcmplt> - 8006662: b1c8 cbz r0, 8006698 <__ieee754_sqrtf+0xd4> - 8006664: 3402 adds r4, #2 - 8006666: 1060 asrs r0, r4, #1 - 8006668: f100 507c add.w r0, r0, #1056964608 @ 0x3f000000 - 800666c: eb00 50c5 add.w r0, r0, r5, lsl #23 - 8006670: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 8006674: 4601 mov r1, r0 - 8006676: f7fa fa15 bl 8000aa4 <__aeabi_fmul> - 800667a: 4621 mov r1, r4 - 800667c: f7fa f90a bl 8000894 <__addsf3> - 8006680: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 8006684: 15c1 asrs r1, r0, #23 - 8006686: e7b4 b.n 80065f2 <__ieee754_sqrtf+0x2e> - 8006688: 4601 mov r1, r0 - 800668a: f7fa f901 bl 8000890 <__aeabi_fsub> - 800668e: 4601 mov r1, r0 - 8006690: f7fa fabc bl 8000c0c <__aeabi_fdiv> - 8006694: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 8006698: 3401 adds r4, #1 - 800669a: f024 0401 bic.w r4, r4, #1 - 800669e: e7e2 b.n 8006666 <__ieee754_sqrtf+0xa2> - 80066a0: 08006740 .word 0x08006740 - 80066a4: 0800673c .word 0x0800673c +08006864 <__ieee754_sqrtf>: + 8006864: f020 4200 bic.w r2, r0, #2147483648 @ 0x80000000 + 8006868: f1b2 4fff cmp.w r2, #2139095040 @ 0x7f800000 + 800686c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8006870: 4604 mov r4, r0 + 8006872: d24f bcs.n 8006914 <__ieee754_sqrtf+0xb0> + 8006874: 2a00 cmp r2, #0 + 8006876: d04b beq.n 8006910 <__ieee754_sqrtf+0xac> + 8006878: 2800 cmp r0, #0 + 800687a: 4603 mov r3, r0 + 800687c: db54 blt.n 8006928 <__ieee754_sqrtf+0xc4> + 800687e: f010 42ff ands.w r2, r0, #2139095040 @ 0x7f800000 + 8006882: d14f bne.n 8006924 <__ieee754_sqrtf+0xc0> + 8006884: 005b lsls r3, r3, #1 + 8006886: 0218 lsls r0, r3, #8 + 8006888: 4611 mov r1, r2 + 800688a: f102 0201 add.w r2, r2, #1 + 800688e: d5f9 bpl.n 8006884 <__ieee754_sqrtf+0x20> + 8006890: 4249 negs r1, r1 + 8006892: 2400 movs r4, #0 + 8006894: f3c3 0216 ubfx r2, r3, #0, #23 + 8006898: f1a1 057f sub.w r5, r1, #127 @ 0x7f + 800689c: 07cb lsls r3, r1, #31 + 800689e: f04f 0e19 mov.w lr, #25 + 80068a2: f04f 7c80 mov.w ip, #16777216 @ 0x1000000 + 80068a6: 4621 mov r1, r4 + 80068a8: f442 0200 orr.w r2, r2, #8388608 @ 0x800000 + 80068ac: bf58 it pl + 80068ae: 0052 lslpl r2, r2, #1 + 80068b0: 106d asrs r5, r5, #1 + 80068b2: 0052 lsls r2, r2, #1 + 80068b4: eb01 030c add.w r3, r1, ip + 80068b8: 4293 cmp r3, r2 + 80068ba: bfcf iteee gt + 80068bc: 4613 movgt r3, r2 + 80068be: eb03 010c addle.w r1, r3, ip + 80068c2: 4464 addle r4, ip + 80068c4: 1ad3 suble r3, r2, r3 + 80068c6: f1be 0e01 subs.w lr, lr, #1 + 80068ca: ea4f 0243 mov.w r2, r3, lsl #1 + 80068ce: ea4f 0c5c mov.w ip, ip, lsr #1 + 80068d2: d1ef bne.n 80068b4 <__ieee754_sqrtf+0x50> + 80068d4: b1bb cbz r3, 8006906 <__ieee754_sqrtf+0xa2> + 80068d6: 4e1a ldr r6, [pc, #104] @ (8006940 <__ieee754_sqrtf+0xdc>) + 80068d8: 4f1a ldr r7, [pc, #104] @ (8006944 <__ieee754_sqrtf+0xe0>) + 80068da: 6830 ldr r0, [r6, #0] + 80068dc: 6839 ldr r1, [r7, #0] + 80068de: f7f9 ffd7 bl 8000890 <__aeabi_fsub> + 80068e2: f8d6 8000 ldr.w r8, [r6] + 80068e6: 4601 mov r1, r0 + 80068e8: 4640 mov r0, r8 + 80068ea: f7fa fa83 bl 8000df4 <__aeabi_fcmple> + 80068ee: b150 cbz r0, 8006906 <__ieee754_sqrtf+0xa2> + 80068f0: 6830 ldr r0, [r6, #0] + 80068f2: 6839 ldr r1, [r7, #0] + 80068f4: f7f9 ffce bl 8000894 <__addsf3> + 80068f8: 6836 ldr r6, [r6, #0] + 80068fa: 4601 mov r1, r0 + 80068fc: 4630 mov r0, r6 + 80068fe: f7fa fa6f bl 8000de0 <__aeabi_fcmplt> + 8006902: b1c8 cbz r0, 8006938 <__ieee754_sqrtf+0xd4> + 8006904: 3402 adds r4, #2 + 8006906: 1060 asrs r0, r4, #1 + 8006908: f100 507c add.w r0, r0, #1056964608 @ 0x3f000000 + 800690c: eb00 50c5 add.w r0, r0, r5, lsl #23 + 8006910: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8006914: 4601 mov r1, r0 + 8006916: f7fa f8c5 bl 8000aa4 <__aeabi_fmul> + 800691a: 4621 mov r1, r4 + 800691c: f7f9 ffba bl 8000894 <__addsf3> + 8006920: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8006924: 15c1 asrs r1, r0, #23 + 8006926: e7b4 b.n 8006892 <__ieee754_sqrtf+0x2e> + 8006928: 4601 mov r1, r0 + 800692a: f7f9 ffb1 bl 8000890 <__aeabi_fsub> + 800692e: 4601 mov r1, r0 + 8006930: f7fa f96c bl 8000c0c <__aeabi_fdiv> + 8006934: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8006938: 3401 adds r4, #1 + 800693a: f024 0401 bic.w r4, r4, #1 + 800693e: e7e2 b.n 8006906 <__ieee754_sqrtf+0xa2> + 8006940: 08006a98 .word 0x08006a98 + 8006944: 08006a94 .word 0x08006a94 -080066a8 <_init>: - 80066a8: b5f8 push {r3, r4, r5, r6, r7, lr} - 80066aa: bf00 nop - 80066ac: bcf8 pop {r3, r4, r5, r6, r7} - 80066ae: bc08 pop {r3} - 80066b0: 469e mov lr, r3 - 80066b2: 4770 bx lr +08006948 <_init>: + 8006948: b5f8 push {r3, r4, r5, r6, r7, lr} + 800694a: bf00 nop + 800694c: bcf8 pop {r3, r4, r5, r6, r7} + 800694e: bc08 pop {r3} + 8006950: 469e mov lr, r3 + 8006952: 4770 bx lr -080066b4 <_fini>: - 80066b4: b5f8 push {r3, r4, r5, r6, r7, lr} - 80066b6: bf00 nop - 80066b8: bcf8 pop {r3, r4, r5, r6, r7} - 80066ba: bc08 pop {r3} - 80066bc: 469e mov lr, r3 - 80066be: 4770 bx lr +08006954 <_fini>: + 8006954: b5f8 push {r3, r4, r5, r6, r7, lr} + 8006956: bf00 nop + 8006958: bcf8 pop {r3, r4, r5, r6, r7} + 800695a: bc08 pop {r3} + 800695c: 469e mov lr, r3 + 800695e: 4770 bx lr diff --git a/Fertirrega_v6/Debug/Fertirrega_v6.map b/Fertirrega_v6/Debug/Fertirrega_v6.map index 958b54e..748a35f 100644 --- a/Fertirrega_v6/Debug/Fertirrega_v6.map +++ b/Fertirrega_v6/Debug/Fertirrega_v6.map @@ -68,6 +68,8 @@ C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externalt C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a(libm_a-wf_sqrt.o) (__aeabi_fcmpun) C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_fixsfsi.o) ./Core/Src/ad5934_driver.o (__aeabi_f2iz) +C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_fixunssfsi.o) + ./Core/Src/ad5934_driver.o (__aeabi_f2uiz) Discarded input sections @@ -166,6 +168,8 @@ Discarded input sections 0x00000000 0x118 ./Core/Src/ad5934_driver.o .text.AD5934_GetTemperature 0x00000000 0x1e4 ./Core/Src/ad5934_driver.o + .text.AD5934_Calculate_Temperature + 0x00000000 0xcc ./Core/Src/ad5934_driver.o .text.AD5934_GetImpedance 0x00000000 0x20c ./Core/Src/ad5934_driver.o .text.AD5934_Wait_For_Data_Valid @@ -987,6 +991,14 @@ Discarded input sections .bss 0x00000000 0x0 ./Core/Src/main.o .rodata.ADG715_Channel_Map 0x00000000 0xf ./Core/Src/main.o + .rodata.AD5934_Scale_Float_Min + 0x00000000 0x3c ./Core/Src/main.o + .rodata.AD5934_Scale_Float_Max + 0x00000000 0x3c ./Core/Src/main.o + .rodata.AD5934_Scale_Out_Min + 0x00000000 0x1e ./Core/Src/main.o + .rodata.AD5934_Scale_Out_Max + 0x00000000 0x1e ./Core/Src/main.o .bss.rx_buffer 0x00000000 0x100 ./Core/Src/main.o .data.tx_data 0x00000000 0x18 ./Core/Src/main.o @@ -999,11 +1011,20 @@ Discarded input sections 0x00000000 0x6 ./Core/Src/main.o .data.doubleSpace 0x00000000 0x3 ./Core/Src/main.o + .data.newline_ph + 0x00000000 0x5 ./Core/Src/main.o + .data.newline_admi + 0x00000000 0x5 ./Core/Src/main.o + .data.newline_temp + 0x00000000 0x5 ./Core/Src/main.o .data.newline_imag 0x00000000 0x6 ./Core/Src/main.o .data.newline_485 0x00000000 0x5 ./Core/Src/main.o .data.minus 0x00000000 0x2 ./Core/Src/main.o + .data.ad_t 0x00000000 0x5 ./Core/Src/main.o + .data.ph_t 0x00000000 0x5 ./Core/Src/main.o + .data.tm_t 0x00000000 0x5 ./Core/Src/main.o .bss.main_state 0x00000000 0x1 ./Core/Src/main.o .bss.rs485_address @@ -1018,8 +1039,6 @@ Discarded input sections .bss.V_Ref 0x00000000 0x4 ./Core/Src/main.o .bss.Temp_Samples 0x00000000 0x10 ./Core/Src/main.o - .text.intToStr - 0x00000000 0xd8 ./Core/Src/main.o .debug_macro 0x00000000 0xacc ./Core/Src/main.o .debug_macro 0x00000000 0x227 ./Core/Src/main.o .debug_macro 0x00000000 0x2e ./Core/Src/main.o @@ -1082,7 +1101,7 @@ Discarded input sections .debug_macro 0x00000000 0x16 ./Core/Src/main.o .debug_macro 0x00000000 0x16 ./Core/Src/main.o .debug_macro 0x00000000 0x29 ./Core/Src/main.o - .debug_macro 0x00000000 0x245 ./Core/Src/main.o + .debug_macro 0x00000000 0x299 ./Core/Src/main.o .group 0x00000000 0xc ./Core/Src/rs485_driver.o .group 0x00000000 0xc ./Core/Src/rs485_driver.o .group 0x00000000 0xc ./Core/Src/rs485_driver.o @@ -1848,6 +1867,8 @@ Discarded input sections 0x00000000 0x50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .text.HAL_GetTickFreq 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_Delay + 0x00000000 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .text.HAL_SuspendTick 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .text.HAL_ResumeTick @@ -4350,6 +4371,8 @@ Discarded input sections .debug_frame 0x00000000 0x24 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_fixsfsi.o) .ARM.attributes 0x00000000 0x1d C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_fixsfsi.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_fixunssfsi.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_fixunssfsi.o) .text 0x00000000 0x0 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtend.o .data 0x00000000 0x0 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtend.o .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtend.o @@ -4439,7 +4462,7 @@ LOAD C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.exte 0x08000000 g_pfnVectors 0x0800010c . = ALIGN (0x4) -.text 0x0800010c 0x65b4 +.text 0x0800010c 0x6854 0x0800010c . = ALIGN (0x4) *(.text) .text 0x0800010c 0x40 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtbegin.o @@ -4521,554 +4544,572 @@ LOAD C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.exte .text 0x08000e30 0x2c C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_unordsf2.o) 0x08000e30 __unordsf2 0x08000e30 __aeabi_fcmpun + .text 0x08000e5c 0x40 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_fixunssfsi.o) + 0x08000e5c __fixunssfsi + 0x08000e5c __aeabi_f2uiz *(.text*) .text.AD5934_SetRegisterValue - 0x08000e5c 0x64 ./Core/Src/ad5934_driver.o - 0x08000e5c AD5934_SetRegisterValue + 0x08000e9c 0x64 ./Core/Src/ad5934_driver.o + 0x08000e9c AD5934_SetRegisterValue .text.AD5934_GetRegisterValue - 0x08000ec0 0x90 ./Core/Src/ad5934_driver.o - 0x08000ec0 AD5934_GetRegisterValue + 0x08000f00 0x90 ./Core/Src/ad5934_driver.o + 0x08000f00 AD5934_GetRegisterValue .text.AD5934_Init - 0x08000f50 0x40 ./Core/Src/ad5934_driver.o - 0x08000f50 AD5934_Init + 0x08000f90 0x44 ./Core/Src/ad5934_driver.o + 0x08000f90 AD5934_Init .text.AD5934_RestartSweep - 0x08000f90 0x30 ./Core/Src/ad5934_driver.o - 0x08000f90 AD5934_RestartSweep + 0x08000fd4 0x30 ./Core/Src/ad5934_driver.o + 0x08000fd4 AD5934_RestartSweep .text.AD5934_Repeat_Sweep - 0x08000fc0 0x12 ./Core/Src/ad5934_driver.o - 0x08000fc0 AD5934_Repeat_Sweep + 0x08001004 0x12 ./Core/Src/ad5934_driver.o + 0x08001004 AD5934_Repeat_Sweep .text.AD5934_StopSweep - 0x08000fd2 0x12 ./Core/Src/ad5934_driver.o - 0x08000fd2 AD5934_StopSweep + 0x08001016 0x12 ./Core/Src/ad5934_driver.o + 0x08001016 AD5934_StopSweep .text.AD5934_GetMagnitude - 0x08000fe4 0x80 ./Core/Src/ad5934_driver.o - 0x08000fe4 AD5934_GetMagnitude + 0x08001028 0x80 ./Core/Src/ad5934_driver.o + 0x08001028 AD5934_GetMagnitude + .text.AD5934_Compress_To_IntScale + 0x080010a8 0x11c ./Core/Src/ad5934_driver.o + 0x080010a8 AD5934_Compress_To_IntScale .text.AD5934_Process_System - 0x08001064 0x214 ./Core/Src/ad5934_driver.o - 0x08001064 AD5934_Process_System + 0x080011c4 0x214 ./Core/Src/ad5934_driver.o + 0x080011c4 AD5934_Process_System .text.AD5934_Sort_Array - 0x08001278 0x98 ./Core/Src/ad5934_driver.o - 0x08001278 AD5934_Sort_Array + 0x080013d8 0x98 ./Core/Src/ad5934_driver.o + 0x080013d8 AD5934_Sort_Array .text.AD5934_Trimmed_Mean - 0x08001310 0x8c ./Core/Src/ad5934_driver.o - 0x08001310 AD5934_Trimmed_Mean + 0x08001470 0x8c ./Core/Src/ad5934_driver.o + 0x08001470 AD5934_Trimmed_Mean .text.AD5934_History_Average - 0x0800139c 0x58 ./Core/Src/ad5934_driver.o - 0x0800139c AD5934_History_Average + 0x080014fc 0x58 ./Core/Src/ad5934_driver.o + 0x080014fc AD5934_History_Average .text.AD5934_Process_Sample - 0x080013f4 0x128 ./Core/Src/ad5934_driver.o - 0x080013f4 AD5934_Process_Sample + 0x08001554 0x138 ./Core/Src/ad5934_driver.o + 0x08001554 AD5934_Process_Sample .text.AD5934_RTD_NewSample - 0x0800151c 0x1c ./Core/Src/ad5934_driver.o - 0x0800151c AD5934_RTD_NewSample + 0x0800168c 0x1c ./Core/Src/ad5934_driver.o + 0x0800168c AD5934_RTD_NewSample .text.AD5934_EC_NewSample - 0x08001538 0x1c ./Core/Src/ad5934_driver.o - 0x08001538 AD5934_EC_NewSample + 0x080016a8 0x1c ./Core/Src/ad5934_driver.o + 0x080016a8 AD5934_EC_NewSample .text.AD5934_Reference_NewSample - 0x08001554 0x1c ./Core/Src/ad5934_driver.o - 0x08001554 AD5934_Reference_NewSample + 0x080016c4 0x1c ./Core/Src/ad5934_driver.o + 0x080016c4 AD5934_Reference_NewSample .text.ADG715_SetRegisterValue - 0x08001570 0x30 ./Core/Src/ad5934_driver.o - 0x08001570 ADG715_SetRegisterValue + 0x080016e0 0x30 ./Core/Src/ad5934_driver.o + 0x080016e0 ADG715_SetRegisterValue .text.ADG715_ResetChannels - 0x080015a0 0xe ./Core/Src/ad5934_driver.o - 0x080015a0 ADG715_ResetChannels - *fill* 0x080015ae 0x2 + 0x08001710 0xe ./Core/Src/ad5934_driver.o + 0x08001710 ADG715_ResetChannels + *fill* 0x0800171e 0x2 .text.ADG715_Update - 0x080015b0 0x40 ./Core/Src/ad5934_driver.o - 0x080015b0 ADG715_Update + 0x08001720 0x2c ./Core/Src/ad5934_driver.o + 0x08001720 ADG715_Update .text.MX_ADC1_Init - 0x080015f0 0x7c ./Core/Src/adc.o - 0x080015f0 MX_ADC1_Init + 0x0800174c 0x7c ./Core/Src/adc.o + 0x0800174c MX_ADC1_Init .text.MX_ADC2_Init - 0x0800166c 0x7c ./Core/Src/adc.o - 0x0800166c MX_ADC2_Init + 0x080017c8 0x7c ./Core/Src/adc.o + 0x080017c8 MX_ADC2_Init .text.HAL_ADC_MspInit - 0x080016e8 0xcc ./Core/Src/adc.o - 0x080016e8 HAL_ADC_MspInit + 0x08001844 0xcc ./Core/Src/adc.o + 0x08001844 HAL_ADC_MspInit .text.writeRegister - 0x080017b4 0x42 ./Core/Src/ads1015_driver.o + 0x08001910 0x42 ./Core/Src/ads1015_driver.o .text.readRegister - 0x080017f6 0x54 ./Core/Src/ads1015_driver.o - .text.ADS1015 0x0800184a 0x3a ./Core/Src/ads1015_driver.o - 0x0800184a ADS1015 + 0x08001952 0x54 ./Core/Src/ads1015_driver.o + *fill* 0x080019a6 0x2 + .text.ADS1015_Init + 0x080019a8 0x34 ./Core/Src/ads1015_driver.o + 0x080019a8 ADS1015_Init .text.ADS1015_Process_System - 0x08001884 0x114 ./Core/Src/ads1015_driver.o - 0x08001884 ADS1015_Process_System + 0x080019dc 0x114 ./Core/Src/ads1015_driver.o + 0x080019dc ADS1015_Process_System .text.ADS1015_Sort_Array - 0x08001998 0x98 ./Core/Src/ads1015_driver.o - 0x08001998 ADS1015_Sort_Array + 0x08001af0 0x98 ./Core/Src/ads1015_driver.o + 0x08001af0 ADS1015_Sort_Array .text.ADS1015_Trimmed_Mean - 0x08001a30 0x8c ./Core/Src/ads1015_driver.o - 0x08001a30 ADS1015_Trimmed_Mean + 0x08001b88 0x8c ./Core/Src/ads1015_driver.o + 0x08001b88 ADS1015_Trimmed_Mean .text.ADS1015_History_Average - 0x08001abc 0x58 ./Core/Src/ads1015_driver.o - 0x08001abc ADS1015_History_Average + 0x08001c14 0x58 ./Core/Src/ads1015_driver.o + 0x08001c14 ADS1015_History_Average .text.ADS1015_Process_Sample - 0x08001b14 0x12c ./Core/Src/ads1015_driver.o - 0x08001b14 ADS1015_Process_Sample + 0x08001c6c 0x138 ./Core/Src/ads1015_driver.o + 0x08001c6c ADS1015_Process_Sample .text.ADS1015_pH_NewSample - 0x08001c40 0x1c ./Core/Src/ads1015_driver.o - 0x08001c40 ADS1015_pH_NewSample + 0x08001da4 0x1c ./Core/Src/ads1015_driver.o + 0x08001da4 ADS1015_pH_NewSample .text.digital_outputs_init - 0x08001c5c 0x84 ./Core/Src/digital_outputs_driver.o - 0x08001c5c digital_outputs_init + 0x08001dc0 0x84 ./Core/Src/digital_outputs_driver.o + 0x08001dc0 digital_outputs_init .text.Flash_Load_Page - 0x08001ce0 0x40 ./Core/Src/flash_manager.o - 0x08001ce0 Flash_Load_Page + 0x08001e44 0x40 ./Core/Src/flash_manager.o + 0x08001e44 Flash_Load_Page .text.MX_GPIO_Init - 0x08001d20 0x140 ./Core/Src/gpio.o - 0x08001d20 MX_GPIO_Init + 0x08001e84 0x140 ./Core/Src/gpio.o + 0x08001e84 MX_GPIO_Init .text.MX_I2C1_Init - 0x08001e60 0x5c ./Core/Src/i2c.o - 0x08001e60 MX_I2C1_Init + 0x08001fc4 0x5c ./Core/Src/i2c.o + 0x08001fc4 MX_I2C1_Init .text.MX_I2C2_Init - 0x08001ebc 0x5c ./Core/Src/i2c.o - 0x08001ebc MX_I2C2_Init + 0x08002020 0x5c ./Core/Src/i2c.o + 0x08002020 MX_I2C2_Init .text.HAL_I2C_MspInit - 0x08001f18 0xd8 ./Core/Src/i2c.o - 0x08001f18 HAL_I2C_MspInit - .text.main 0x08001ff0 0x2bc ./Core/Src/main.o - 0x08001ff0 main + 0x0800207c 0xd8 ./Core/Src/i2c.o + 0x0800207c HAL_I2C_MspInit + .text.main 0x08002154 0x2a8 ./Core/Src/main.o + 0x08002154 main .text.SystemClock_Config - 0x080022ac 0xa0 ./Core/Src/main.o - 0x080022ac SystemClock_Config + 0x080023fc 0xa0 ./Core/Src/main.o + 0x080023fc SystemClock_Config .text.FloatToString - 0x0800234c 0x228 ./Core/Src/main.o - 0x0800234c FloatToString + 0x0800249c 0x228 ./Core/Src/main.o + 0x0800249c FloatToString + .text.intToStr + 0x080026c4 0x198 ./Core/Src/main.o + 0x080026c4 intToStr .text.HAL_TIM_PeriodElapsedCallback - 0x08002574 0x30 ./Core/Src/main.o - 0x08002574 HAL_TIM_PeriodElapsedCallback + 0x0800285c 0x30 ./Core/Src/main.o + 0x0800285c HAL_TIM_PeriodElapsedCallback .text.Error_Handler - 0x080025a4 0xc ./Core/Src/main.o - 0x080025a4 Error_Handler + 0x0800288c 0xc ./Core/Src/main.o + 0x0800288c Error_Handler .text.LL_GPIO_ReadInputPort - 0x080025b0 0x16 ./Core/Src/rs485_driver.o - *fill* 0x080025c6 0x2 + 0x08002898 0x16 ./Core/Src/rs485_driver.o + *fill* 0x080028ae 0x2 .text.rs485_init - 0x080025c8 0x20 ./Core/Src/rs485_driver.o - 0x080025c8 rs485_init + 0x080028b0 0x20 ./Core/Src/rs485_driver.o + 0x080028b0 rs485_init .text.rs485_get_address - 0x080025e8 0x38 ./Core/Src/rs485_driver.o - 0x080025e8 rs485_get_address + 0x080028d0 0x38 ./Core/Src/rs485_driver.o + 0x080028d0 rs485_get_address .text.rs485_send_broadcast - 0x08002620 0x48 ./Core/Src/rs485_driver.o - 0x08002620 rs485_send_broadcast + 0x08002908 0x48 ./Core/Src/rs485_driver.o + 0x08002908 rs485_send_broadcast .text.rs485_enable_tx - 0x08002668 0x18 ./Core/Src/rs485_driver.o - 0x08002668 rs485_enable_tx + 0x08002950 0x18 ./Core/Src/rs485_driver.o + 0x08002950 rs485_enable_tx .text.rs485_disable_tx - 0x08002680 0x18 ./Core/Src/rs485_driver.o - 0x08002680 rs485_disable_tx + 0x08002968 0x18 ./Core/Src/rs485_driver.o + 0x08002968 rs485_disable_tx .text.rs485_configure_gpio_address - 0x08002698 0x8c ./Core/Src/rs485_driver.o + 0x08002980 0x8c ./Core/Src/rs485_driver.o .text.rs485_configure_usart1 - 0x08002724 0x74 ./Core/Src/rs485_driver.o + 0x08002a0c 0x74 ./Core/Src/rs485_driver.o .text.HAL_MspInit - 0x08002798 0x64 ./Core/Src/stm32f1xx_hal_msp.o - 0x08002798 HAL_MspInit + 0x08002a80 0x64 ./Core/Src/stm32f1xx_hal_msp.o + 0x08002a80 HAL_MspInit .text.NMI_Handler - 0x080027fc 0x8 ./Core/Src/stm32f1xx_it.o - 0x080027fc NMI_Handler + 0x08002ae4 0x8 ./Core/Src/stm32f1xx_it.o + 0x08002ae4 NMI_Handler .text.HardFault_Handler - 0x08002804 0x8 ./Core/Src/stm32f1xx_it.o - 0x08002804 HardFault_Handler + 0x08002aec 0x8 ./Core/Src/stm32f1xx_it.o + 0x08002aec HardFault_Handler .text.MemManage_Handler - 0x0800280c 0x8 ./Core/Src/stm32f1xx_it.o - 0x0800280c MemManage_Handler + 0x08002af4 0x8 ./Core/Src/stm32f1xx_it.o + 0x08002af4 MemManage_Handler .text.BusFault_Handler - 0x08002814 0x8 ./Core/Src/stm32f1xx_it.o - 0x08002814 BusFault_Handler + 0x08002afc 0x8 ./Core/Src/stm32f1xx_it.o + 0x08002afc BusFault_Handler .text.UsageFault_Handler - 0x0800281c 0x8 ./Core/Src/stm32f1xx_it.o - 0x0800281c UsageFault_Handler + 0x08002b04 0x8 ./Core/Src/stm32f1xx_it.o + 0x08002b04 UsageFault_Handler .text.SVC_Handler - 0x08002824 0xc ./Core/Src/stm32f1xx_it.o - 0x08002824 SVC_Handler + 0x08002b0c 0xc ./Core/Src/stm32f1xx_it.o + 0x08002b0c SVC_Handler .text.DebugMon_Handler - 0x08002830 0xc ./Core/Src/stm32f1xx_it.o - 0x08002830 DebugMon_Handler + 0x08002b18 0xc ./Core/Src/stm32f1xx_it.o + 0x08002b18 DebugMon_Handler .text.PendSV_Handler - 0x0800283c 0xc ./Core/Src/stm32f1xx_it.o - 0x0800283c PendSV_Handler + 0x08002b24 0xc ./Core/Src/stm32f1xx_it.o + 0x08002b24 PendSV_Handler .text.SysTick_Handler - 0x08002848 0xc ./Core/Src/stm32f1xx_it.o - 0x08002848 SysTick_Handler + 0x08002b30 0xc ./Core/Src/stm32f1xx_it.o + 0x08002b30 SysTick_Handler .text.TIM3_IRQHandler - 0x08002854 0x14 ./Core/Src/stm32f1xx_it.o - 0x08002854 TIM3_IRQHandler + 0x08002b3c 0x14 ./Core/Src/stm32f1xx_it.o + 0x08002b3c TIM3_IRQHandler .text.USART1_IRQHandler - 0x08002868 0x14 ./Core/Src/stm32f1xx_it.o - 0x08002868 USART1_IRQHandler + 0x08002b50 0x14 ./Core/Src/stm32f1xx_it.o + 0x08002b50 USART1_IRQHandler .text.SystemInit - 0x0800287c 0xc ./Core/Src/system_stm32f1xx.o - 0x0800287c SystemInit + 0x08002b64 0xc ./Core/Src/system_stm32f1xx.o + 0x08002b64 SystemInit .text.MX_TIM3_Init - 0x08002888 0x9c ./Core/Src/tim.o - 0x08002888 MX_TIM3_Init + 0x08002b70 0x9c ./Core/Src/tim.o + 0x08002b70 MX_TIM3_Init .text.HAL_TIM_Base_MspInit - 0x08002924 0x4c ./Core/Src/tim.o - 0x08002924 HAL_TIM_Base_MspInit + 0x08002c0c 0x4c ./Core/Src/tim.o + 0x08002c0c HAL_TIM_Base_MspInit .text.MX_USART1_UART_Init - 0x08002970 0x54 ./Core/Src/usart.o - 0x08002970 MX_USART1_UART_Init + 0x08002c58 0x54 ./Core/Src/usart.o + 0x08002c58 MX_USART1_UART_Init .text.HAL_UART_MspInit - 0x080029c4 0xa8 ./Core/Src/usart.o - 0x080029c4 HAL_UART_MspInit + 0x08002cac 0xa8 ./Core/Src/usart.o + 0x08002cac HAL_UART_MspInit .text.Reset_Handler - 0x08002a6c 0x48 ./Core/Startup/startup_stm32f103c8tx.o - 0x08002a6c Reset_Handler + 0x08002d54 0x48 ./Core/Startup/startup_stm32f103c8tx.o + 0x08002d54 Reset_Handler .text.Default_Handler - 0x08002ab4 0x2 ./Core/Startup/startup_stm32f103c8tx.o - 0x08002ab4 RTC_Alarm_IRQHandler - 0x08002ab4 EXTI2_IRQHandler - 0x08002ab4 TIM1_CC_IRQHandler - 0x08002ab4 PVD_IRQHandler - 0x08002ab4 EXTI3_IRQHandler - 0x08002ab4 EXTI0_IRQHandler - 0x08002ab4 I2C2_EV_IRQHandler - 0x08002ab4 ADC1_2_IRQHandler - 0x08002ab4 SPI1_IRQHandler - 0x08002ab4 TAMPER_IRQHandler - 0x08002ab4 DMA1_Channel4_IRQHandler - 0x08002ab4 USART3_IRQHandler - 0x08002ab4 RTC_IRQHandler - 0x08002ab4 DMA1_Channel7_IRQHandler - 0x08002ab4 CAN1_RX1_IRQHandler - 0x08002ab4 TIM4_IRQHandler - 0x08002ab4 I2C1_EV_IRQHandler - 0x08002ab4 DMA1_Channel6_IRQHandler - 0x08002ab4 RCC_IRQHandler - 0x08002ab4 TIM1_TRG_COM_IRQHandler - 0x08002ab4 DMA1_Channel1_IRQHandler - 0x08002ab4 Default_Handler - 0x08002ab4 EXTI15_10_IRQHandler - 0x08002ab4 EXTI9_5_IRQHandler - 0x08002ab4 SPI2_IRQHandler - 0x08002ab4 DMA1_Channel5_IRQHandler - 0x08002ab4 EXTI4_IRQHandler - 0x08002ab4 USB_LP_CAN1_RX0_IRQHandler - 0x08002ab4 USB_HP_CAN1_TX_IRQHandler - 0x08002ab4 DMA1_Channel3_IRQHandler - 0x08002ab4 TIM1_UP_IRQHandler - 0x08002ab4 WWDG_IRQHandler - 0x08002ab4 TIM2_IRQHandler - 0x08002ab4 TIM1_BRK_IRQHandler - 0x08002ab4 EXTI1_IRQHandler - 0x08002ab4 USART2_IRQHandler - 0x08002ab4 I2C2_ER_IRQHandler - 0x08002ab4 DMA1_Channel2_IRQHandler - 0x08002ab4 CAN1_SCE_IRQHandler - 0x08002ab4 FLASH_IRQHandler - 0x08002ab4 I2C1_ER_IRQHandler - 0x08002ab4 USBWakeUp_IRQHandler - *fill* 0x08002ab6 0x2 + 0x08002d9c 0x2 ./Core/Startup/startup_stm32f103c8tx.o + 0x08002d9c RTC_Alarm_IRQHandler + 0x08002d9c EXTI2_IRQHandler + 0x08002d9c TIM1_CC_IRQHandler + 0x08002d9c PVD_IRQHandler + 0x08002d9c EXTI3_IRQHandler + 0x08002d9c EXTI0_IRQHandler + 0x08002d9c I2C2_EV_IRQHandler + 0x08002d9c ADC1_2_IRQHandler + 0x08002d9c SPI1_IRQHandler + 0x08002d9c TAMPER_IRQHandler + 0x08002d9c DMA1_Channel4_IRQHandler + 0x08002d9c USART3_IRQHandler + 0x08002d9c RTC_IRQHandler + 0x08002d9c DMA1_Channel7_IRQHandler + 0x08002d9c CAN1_RX1_IRQHandler + 0x08002d9c TIM4_IRQHandler + 0x08002d9c I2C1_EV_IRQHandler + 0x08002d9c DMA1_Channel6_IRQHandler + 0x08002d9c RCC_IRQHandler + 0x08002d9c TIM1_TRG_COM_IRQHandler + 0x08002d9c DMA1_Channel1_IRQHandler + 0x08002d9c Default_Handler + 0x08002d9c EXTI15_10_IRQHandler + 0x08002d9c EXTI9_5_IRQHandler + 0x08002d9c SPI2_IRQHandler + 0x08002d9c DMA1_Channel5_IRQHandler + 0x08002d9c EXTI4_IRQHandler + 0x08002d9c USB_LP_CAN1_RX0_IRQHandler + 0x08002d9c USB_HP_CAN1_TX_IRQHandler + 0x08002d9c DMA1_Channel3_IRQHandler + 0x08002d9c TIM1_UP_IRQHandler + 0x08002d9c WWDG_IRQHandler + 0x08002d9c TIM2_IRQHandler + 0x08002d9c TIM1_BRK_IRQHandler + 0x08002d9c EXTI1_IRQHandler + 0x08002d9c USART2_IRQHandler + 0x08002d9c I2C2_ER_IRQHandler + 0x08002d9c DMA1_Channel2_IRQHandler + 0x08002d9c CAN1_SCE_IRQHandler + 0x08002d9c FLASH_IRQHandler + 0x08002d9c I2C1_ER_IRQHandler + 0x08002d9c USBWakeUp_IRQHandler + *fill* 0x08002d9e 0x2 .text.HAL_Init - 0x08002ab8 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x08002ab8 HAL_Init + 0x08002da0 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x08002da0 HAL_Init .text.HAL_InitTick - 0x08002ae4 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x08002ae4 HAL_InitTick + 0x08002dcc 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x08002dcc HAL_InitTick .text.HAL_IncTick - 0x08002b44 0x24 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x08002b44 HAL_IncTick + 0x08002e2c 0x24 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x08002e2c HAL_IncTick .text.HAL_GetTick - 0x08002b68 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x08002b68 HAL_GetTick - .text.HAL_Delay - 0x08002b7c 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x08002b7c HAL_Delay + 0x08002e50 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x08002e50 HAL_GetTick .text.HAL_ADC_Init - 0x08002bc4 0x1b0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - 0x08002bc4 HAL_ADC_Init + 0x08002e64 0x1b0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + 0x08002e64 HAL_ADC_Init .text.HAL_ADC_ConfigChannel - 0x08002d74 0x1f0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - 0x08002d74 HAL_ADC_ConfigChannel + 0x08003014 0x1f0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + 0x08003014 HAL_ADC_ConfigChannel .text.ADC_ConversionStop_Disable - 0x08002f64 0x82 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - 0x08002f64 ADC_ConversionStop_Disable - *fill* 0x08002fe6 0x2 + 0x08003204 0x82 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + 0x08003204 ADC_ConversionStop_Disable + *fill* 0x08003286 0x2 .text.__NVIC_SetPriorityGrouping - 0x08002fe8 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x08003288 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .text.__NVIC_GetPriorityGrouping - 0x08003030 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x080032d0 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .text.__NVIC_EnableIRQ - 0x0800304c 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x080032ec 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .text.__NVIC_SetPriority - 0x08003084 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x08003324 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .text.NVIC_EncodePriority - 0x080030d8 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x08003378 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .text.SysTick_Config - 0x0800313c 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x080033dc 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .text.HAL_NVIC_SetPriorityGrouping - 0x08003180 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - 0x08003180 HAL_NVIC_SetPriorityGrouping + 0x08003420 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x08003420 HAL_NVIC_SetPriorityGrouping .text.HAL_NVIC_SetPriority - 0x08003196 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - 0x08003196 HAL_NVIC_SetPriority + 0x08003436 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x08003436 HAL_NVIC_SetPriority .text.HAL_NVIC_EnableIRQ - 0x080031ce 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - 0x080031ce HAL_NVIC_EnableIRQ + 0x0800346e 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x0800346e HAL_NVIC_EnableIRQ .text.HAL_SYSTICK_Config - 0x080031ea 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - 0x080031ea HAL_SYSTICK_Config + 0x0800348a 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x0800348a HAL_SYSTICK_Config .text.HAL_DMA_Abort - 0x08003202 0x76 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - 0x08003202 HAL_DMA_Abort + 0x080034a2 0x76 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + 0x080034a2 HAL_DMA_Abort .text.HAL_DMA_Abort_IT - 0x08003278 0xf0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - 0x08003278 HAL_DMA_Abort_IT + 0x08003518 0xf0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + 0x08003518 HAL_DMA_Abort_IT .text.HAL_GPIO_Init - 0x08003368 0x308 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - 0x08003368 HAL_GPIO_Init + 0x08003608 0x308 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + 0x08003608 HAL_GPIO_Init .text.HAL_GPIO_ReadPin - 0x08003670 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - 0x08003670 HAL_GPIO_ReadPin + 0x08003910 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + 0x08003910 HAL_GPIO_ReadPin .text.HAL_GPIO_WritePin - 0x0800369e 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - 0x0800369e HAL_GPIO_WritePin + 0x0800393e 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + 0x0800393e HAL_GPIO_WritePin .text.HAL_GPIO_TogglePin - 0x080036ce 0x32 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - 0x080036ce HAL_GPIO_TogglePin + 0x0800396e 0x32 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + 0x0800396e HAL_GPIO_TogglePin .text.HAL_I2C_Init - 0x08003700 0x288 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o - 0x08003700 HAL_I2C_Init + 0x080039a0 0x288 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + 0x080039a0 HAL_I2C_Init .text.HAL_I2C_Master_Transmit - 0x08003988 0x1fc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o - 0x08003988 HAL_I2C_Master_Transmit + 0x08003c28 0x1fc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + 0x08003c28 HAL_I2C_Master_Transmit .text.HAL_I2C_Master_Receive - 0x08003b84 0x4d8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o - 0x08003b84 HAL_I2C_Master_Receive + 0x08003e24 0x4d8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + 0x08003e24 HAL_I2C_Master_Receive .text.I2C_MasterRequestWrite - 0x0800405c 0x104 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + 0x080042fc 0x104 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o .text.I2C_MasterRequestRead - 0x08004160 0x19c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + 0x08004400 0x19c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o .text.I2C_WaitOnFlagUntilTimeout - 0x080042fc 0xf4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + 0x0800459c 0xf4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o .text.I2C_WaitOnMasterAddressFlagUntilTimeout - 0x080043f0 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + 0x08004690 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o .text.I2C_WaitOnTXEFlagUntilTimeout - 0x08004530 0x90 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + 0x080047d0 0x90 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o .text.I2C_WaitOnBTFFlagUntilTimeout - 0x080045c0 0x90 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + 0x08004860 0x90 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o .text.I2C_WaitOnRXNEFlagUntilTimeout - 0x08004650 0xba ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + 0x080048f0 0xba ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o .text.I2C_IsAcknowledgeFailed - 0x0800470a 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o - *fill* 0x08004766 0x2 + 0x080049aa 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + *fill* 0x08004a06 0x2 .text.HAL_RCC_OscConfig - 0x08004768 0x504 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - 0x08004768 HAL_RCC_OscConfig + 0x08004a08 0x504 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x08004a08 HAL_RCC_OscConfig .text.HAL_RCC_ClockConfig - 0x08004c6c 0x1d4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - 0x08004c6c HAL_RCC_ClockConfig + 0x08004f0c 0x1d4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x08004f0c HAL_RCC_ClockConfig .text.HAL_RCC_GetSysClockFreq - 0x08004e40 0xac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - 0x08004e40 HAL_RCC_GetSysClockFreq + 0x080050e0 0xac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x080050e0 HAL_RCC_GetSysClockFreq .text.HAL_RCC_GetHCLKFreq - 0x08004eec 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - 0x08004eec HAL_RCC_GetHCLKFreq + 0x0800518c 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x0800518c HAL_RCC_GetHCLKFreq .text.HAL_RCC_GetPCLK1Freq - 0x08004f00 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - 0x08004f00 HAL_RCC_GetPCLK1Freq + 0x080051a0 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x080051a0 HAL_RCC_GetPCLK1Freq .text.HAL_RCC_GetPCLK2Freq - 0x08004f28 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - 0x08004f28 HAL_RCC_GetPCLK2Freq + 0x080051c8 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x080051c8 HAL_RCC_GetPCLK2Freq .text.RCC_Delay - 0x08004f50 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x080051f0 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .text.HAL_RCCEx_PeriphCLKConfig - 0x08004f8c 0x16c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - 0x08004f8c HAL_RCCEx_PeriphCLKConfig + 0x0800522c 0x16c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + 0x0800522c HAL_RCCEx_PeriphCLKConfig .text.HAL_TIM_Base_Init - 0x080050f8 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x080050f8 HAL_TIM_Base_Init - *fill* 0x08005196 0x2 + 0x08005398 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x08005398 HAL_TIM_Base_Init + *fill* 0x08005436 0x2 .text.HAL_TIM_Base_Start_IT - 0x08005198 0xa4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x08005198 HAL_TIM_Base_Start_IT + 0x08005438 0xa4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x08005438 HAL_TIM_Base_Start_IT .text.HAL_TIM_IRQHandler - 0x0800523c 0x1e0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x0800523c HAL_TIM_IRQHandler + 0x080054dc 0x1e0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x080054dc HAL_TIM_IRQHandler .text.HAL_TIM_ConfigClockSource - 0x0800541c 0x18e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x0800541c HAL_TIM_ConfigClockSource + 0x080056bc 0x18e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x080056bc HAL_TIM_ConfigClockSource .text.HAL_TIM_OC_DelayElapsedCallback - 0x080055aa 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x080055aa HAL_TIM_OC_DelayElapsedCallback + 0x0800584a 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x0800584a HAL_TIM_OC_DelayElapsedCallback .text.HAL_TIM_IC_CaptureCallback - 0x080055bc 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x080055bc HAL_TIM_IC_CaptureCallback + 0x0800585c 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x0800585c HAL_TIM_IC_CaptureCallback .text.HAL_TIM_PWM_PulseFinishedCallback - 0x080055ce 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x080055ce HAL_TIM_PWM_PulseFinishedCallback + 0x0800586e 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x0800586e HAL_TIM_PWM_PulseFinishedCallback .text.HAL_TIM_TriggerCallback - 0x080055e0 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x080055e0 HAL_TIM_TriggerCallback - *fill* 0x080055f2 0x2 + 0x08005880 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x08005880 HAL_TIM_TriggerCallback + *fill* 0x08005892 0x2 .text.TIM_Base_SetConfig - 0x080055f4 0xdc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x080055f4 TIM_Base_SetConfig + 0x08005894 0xdc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x08005894 TIM_Base_SetConfig .text.TIM_TI1_ConfigInputStage - 0x080056d0 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x08005970 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o .text.TIM_TI2_ConfigInputStage - 0x0800572c 0x5e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x080059cc 0x5e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o .text.TIM_ITRx_SetConfig - 0x0800578a 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x08005a2a 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o .text.TIM_ETR_SetConfig - 0x080057be 0x3e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x080057be TIM_ETR_SetConfig + 0x08005a5e 0x3e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x08005a5e TIM_ETR_SetConfig .text.HAL_TIMEx_MasterConfigSynchronization - 0x080057fc 0xbc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - 0x080057fc HAL_TIMEx_MasterConfigSynchronization + 0x08005a9c 0xbc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + 0x08005a9c HAL_TIMEx_MasterConfigSynchronization .text.HAL_TIMEx_CommutCallback - 0x080058b8 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - 0x080058b8 HAL_TIMEx_CommutCallback + 0x08005b58 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + 0x08005b58 HAL_TIMEx_CommutCallback .text.HAL_TIMEx_BreakCallback - 0x080058ca 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - 0x080058ca HAL_TIMEx_BreakCallback + 0x08005b6a 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + 0x08005b6a HAL_TIMEx_BreakCallback .text.HAL_UART_Init - 0x080058dc 0xa0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o - 0x080058dc HAL_UART_Init + 0x08005b7c 0xa0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + 0x08005b7c HAL_UART_Init .text.HAL_UART_Transmit - 0x0800597c 0x116 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o - 0x0800597c HAL_UART_Transmit - *fill* 0x08005a92 0x2 + 0x08005c1c 0x116 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + 0x08005c1c HAL_UART_Transmit + *fill* 0x08005d32 0x2 .text.HAL_UART_IRQHandler - 0x08005a94 0x524 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o - 0x08005a94 HAL_UART_IRQHandler + 0x08005d34 0x524 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + 0x08005d34 HAL_UART_IRQHandler .text.HAL_UART_TxCpltCallback - 0x08005fb8 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o - 0x08005fb8 HAL_UART_TxCpltCallback + 0x08006258 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + 0x08006258 HAL_UART_TxCpltCallback .text.HAL_UART_RxCpltCallback - 0x08005fca 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o - 0x08005fca HAL_UART_RxCpltCallback + 0x0800626a 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + 0x0800626a HAL_UART_RxCpltCallback .text.HAL_UART_ErrorCallback - 0x08005fdc 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o - 0x08005fdc HAL_UART_ErrorCallback + 0x0800627c 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + 0x0800627c HAL_UART_ErrorCallback .text.HAL_UARTEx_RxEventCallback - 0x08005fee 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o - 0x08005fee HAL_UARTEx_RxEventCallback + 0x0800628e 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + 0x0800628e HAL_UARTEx_RxEventCallback .text.UART_WaitOnFlagUntilTimeout - 0x08006004 0xb2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + 0x080062a4 0xb2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o .text.UART_EndRxTransfer - 0x080060b6 0xc4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + 0x08006356 0xc4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o .text.UART_DMAAbortOnError - 0x0800617a 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + 0x0800641a 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o .text.UART_Transmit_IT - 0x080061a2 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + 0x08006442 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o .text.UART_EndTransmit_IT - 0x08006240 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + 0x080064e0 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o .text.UART_Receive_IT - 0x08006270 0x17c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + 0x08006510 0x17c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o .text.UART_SetConfig - 0x080063ec 0x11c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o - .text.memset 0x08006508 0x10 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) - 0x08006508 memset - .text.__errno 0x08006518 0xc C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) - 0x08006518 __errno + 0x0800668c 0x11c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.memset 0x080067a8 0x10 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) + 0x080067a8 memset + .text.__errno 0x080067b8 0xc C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) + 0x080067b8 __errno .text.__libc_init_array - 0x08006524 0x48 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) - 0x08006524 __libc_init_array - .text.memcpy 0x0800656c 0x1c C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) - 0x0800656c memcpy - .text.sqrtf 0x08006588 0x3c C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a(libm_a-wf_sqrt.o) - 0x08006588 sqrtf + 0x080067c4 0x48 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) + 0x080067c4 __libc_init_array + .text.memcpy 0x0800680c 0x1c C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) + 0x0800680c memcpy + .text.sqrtf 0x08006828 0x3c C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a(libm_a-wf_sqrt.o) + 0x08006828 sqrtf .text.__ieee754_sqrtf - 0x080065c4 0xe4 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a(libm_a-ef_sqrt.o) - 0x080065c4 __ieee754_sqrtf + 0x08006864 0xe4 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a(libm_a-ef_sqrt.o) + 0x08006864 __ieee754_sqrtf *(.glue_7) - .glue_7 0x080066a8 0x0 linker stubs + .glue_7 0x08006948 0x0 linker stubs *(.glue_7t) - .glue_7t 0x080066a8 0x0 linker stubs + .glue_7t 0x08006948 0x0 linker stubs *(.eh_frame) - .eh_frame 0x080066a8 0x0 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtbegin.o + .eh_frame 0x08006948 0x0 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtbegin.o *(.init) - .init 0x080066a8 0x4 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crti.o - 0x080066a8 _init - .init 0x080066ac 0x8 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtn.o + .init 0x08006948 0x4 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crti.o + 0x08006948 _init + .init 0x0800694c 0x8 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtn.o *(.fini) - .fini 0x080066b4 0x4 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crti.o - 0x080066b4 _fini - .fini 0x080066b8 0x8 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtn.o - 0x080066c0 . = ALIGN (0x4) - 0x080066c0 _etext = . + .fini 0x08006954 0x4 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crti.o + 0x08006954 _fini + .fini 0x08006958 0x8 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtn.o + 0x08006960 . = ALIGN (0x4) + 0x08006960 _etext = . -.vfp11_veneer 0x080066c0 0x0 - .vfp11_veneer 0x080066c0 0x0 linker stubs +.vfp11_veneer 0x08006960 0x0 + .vfp11_veneer 0x08006960 0x0 linker stubs -.v4_bx 0x080066c0 0x0 - .v4_bx 0x080066c0 0x0 linker stubs +.v4_bx 0x08006960 0x0 + .v4_bx 0x08006960 0x0 linker stubs -.iplt 0x080066c0 0x0 - .iplt 0x080066c0 0x0 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtbegin.o +.iplt 0x08006960 0x0 + .iplt 0x08006960 0x0 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtbegin.o -.rodata 0x080066c0 0x84 - 0x080066c0 . = ALIGN (0x4) +.rodata 0x08006960 0x13c + 0x08006960 . = ALIGN (0x4) *(.rodata) *(.rodata*) .rodata.ADG715_Channel_Map - 0x080066c0 0xf ./Core/Src/ad5934_driver.o - *fill* 0x080066cf 0x1 + 0x08006960 0xf ./Core/Src/ad5934_driver.o + *fill* 0x0800696f 0x1 + .rodata.AD5934_Scale_Float_Min + 0x08006970 0x3c ./Core/Src/ad5934_driver.o + .rodata.AD5934_Scale_Float_Max + 0x080069ac 0x3c ./Core/Src/ad5934_driver.o + .rodata.AD5934_Scale_Out_Min + 0x080069e8 0x1e ./Core/Src/ad5934_driver.o + *fill* 0x08006a06 0x2 + .rodata.AD5934_Scale_Out_Max + 0x08006a08 0x1e ./Core/Src/ad5934_driver.o + *fill* 0x08006a26 0x2 .rodata.output_pins - 0x080066d0 0x40 ./Core/Src/digital_outputs_driver.o + 0x08006a28 0x40 ./Core/Src/digital_outputs_driver.o .rodata.AHBPrescTable - 0x08006710 0x10 ./Core/Src/system_stm32f1xx.o - 0x08006710 AHBPrescTable + 0x08006a68 0x10 ./Core/Src/system_stm32f1xx.o + 0x08006a68 AHBPrescTable .rodata.APBPrescTable - 0x08006720 0x8 ./Core/Src/system_stm32f1xx.o - 0x08006720 APBPrescTable + 0x08006a78 0x8 ./Core/Src/system_stm32f1xx.o + 0x08006a78 APBPrescTable .rodata.aPLLMULFactorTable.1 - 0x08006728 0x10 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x08006a80 0x10 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .rodata.aPredivFactorTable.0 - 0x08006738 0x2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - *fill* 0x0800673a 0x2 - .rodata.tiny 0x0800673c 0x4 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a(libm_a-ef_sqrt.o) - .rodata.one 0x08006740 0x4 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a(libm_a-ef_sqrt.o) - 0x08006744 . = ALIGN (0x4) + 0x08006a90 0x2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + *fill* 0x08006a92 0x2 + .rodata.tiny 0x08006a94 0x4 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a(libm_a-ef_sqrt.o) + .rodata.one 0x08006a98 0x4 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a(libm_a-ef_sqrt.o) + 0x08006a9c . = ALIGN (0x4) -.ARM.extab 0x08006744 0x0 - 0x08006744 . = ALIGN (0x4) +.ARM.extab 0x08006a9c 0x0 + 0x08006a9c . = ALIGN (0x4) *(.ARM.extab* .gnu.linkonce.armextab.*) - 0x08006744 . = ALIGN (0x4) + 0x08006a9c . = ALIGN (0x4) -.ARM 0x08006744 0x8 - 0x08006744 . = ALIGN (0x4) - 0x08006744 __exidx_start = . +.ARM 0x08006a9c 0x8 + 0x08006a9c . = ALIGN (0x4) + 0x08006a9c __exidx_start = . *(.ARM.exidx*) - .ARM.exidx 0x08006744 0x8 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-strlen.o) - 0x0800674c __exidx_end = . - 0x0800674c . = ALIGN (0x4) + .ARM.exidx 0x08006a9c 0x8 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-strlen.o) + 0x08006aa4 __exidx_end = . + 0x08006aa4 . = ALIGN (0x4) -.preinit_array 0x0800674c 0x0 - 0x0800674c . = ALIGN (0x4) - 0x0800674c PROVIDE (__preinit_array_start = .) +.preinit_array 0x08006aa4 0x0 + 0x08006aa4 . = ALIGN (0x4) + 0x08006aa4 PROVIDE (__preinit_array_start = .) *(.preinit_array*) - 0x0800674c PROVIDE (__preinit_array_end = .) - 0x0800674c . = ALIGN (0x4) + 0x08006aa4 PROVIDE (__preinit_array_end = .) + 0x08006aa4 . = ALIGN (0x4) -.init_array 0x0800674c 0x4 - 0x0800674c . = ALIGN (0x4) - 0x0800674c PROVIDE (__init_array_start = .) +.init_array 0x08006aa4 0x4 + 0x08006aa4 . = ALIGN (0x4) + 0x08006aa4 PROVIDE (__init_array_start = .) *(SORT_BY_NAME(.init_array.*)) *(.init_array*) - .init_array 0x0800674c 0x4 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtbegin.o - 0x08006750 PROVIDE (__init_array_end = .) - 0x08006750 . = ALIGN (0x4) + .init_array 0x08006aa4 0x4 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtbegin.o + 0x08006aa8 PROVIDE (__init_array_end = .) + 0x08006aa8 . = ALIGN (0x4) -.fini_array 0x08006750 0x4 - 0x08006750 . = ALIGN (0x4) +.fini_array 0x08006aa8 0x4 + 0x08006aa8 . = ALIGN (0x4) [!provide] PROVIDE (__fini_array_start = .) *(SORT_BY_NAME(.fini_array.*)) *(.fini_array*) - .fini_array 0x08006750 0x4 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtbegin.o + .fini_array 0x08006aa8 0x4 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtbegin.o [!provide] PROVIDE (__fini_array_end = .) - 0x08006754 . = ALIGN (0x4) - 0x08006754 _sidata = LOADADDR (.data) + 0x08006aac . = ALIGN (0x4) + 0x08006aac _sidata = LOADADDR (.data) -.rel.dyn 0x08006754 0x0 - .rel.iplt 0x08006754 0x0 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtbegin.o +.rel.dyn 0x08006aac 0x0 + .rel.iplt 0x08006aac 0x0 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtbegin.o -.data 0x20000000 0x94 load address 0x08006754 +.data 0x20000000 0x64 load address 0x08006aac 0x20000000 . = ALIGN (0x4) 0x20000000 _sdata = . *(.data) @@ -5083,138 +5124,117 @@ LOAD C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.exte .data.newline 0x20000004 0x2 ./Core/Src/main.o 0x20000004 newline *fill* 0x20000006 0x2 - .data.newline_ph - 0x20000008 0x5 ./Core/Src/main.o - 0x20000008 newline_ph - *fill* 0x2000000d 0x3 - .data.newline_admi - 0x20000010 0x5 ./Core/Src/main.o - 0x20000010 newline_admi - *fill* 0x20000015 0x3 - .data.newline_temp - 0x20000018 0x5 ./Core/Src/main.o - 0x20000018 newline_temp - *fill* 0x2000001d 0x3 - .data.ad_t 0x20000020 0x5 ./Core/Src/main.o - 0x20000020 ad_t - *fill* 0x20000025 0x3 - .data.ph_t 0x20000028 0x5 ./Core/Src/main.o - 0x20000028 ph_t - *fill* 0x2000002d 0x3 - .data.tm_t 0x20000030 0x5 ./Core/Src/main.o - 0x20000030 tm_t - *fill* 0x20000035 0x3 .data.SystemCoreClock - 0x20000038 0x4 ./Core/Src/system_stm32f1xx.o - 0x20000038 SystemCoreClock + 0x20000008 0x4 ./Core/Src/system_stm32f1xx.o + 0x20000008 SystemCoreClock .data.uwTickPrio - 0x2000003c 0x4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x2000003c uwTickPrio + 0x2000000c 0x4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x2000000c uwTickPrio .data.uwTickFreq - 0x20000040 0x1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x20000040 uwTickFreq - *fill* 0x20000041 0x3 + 0x20000010 0x1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x20000010 uwTickFreq + *fill* 0x20000011 0x3 .data._impure_ptr - 0x20000044 0x4 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) - 0x20000044 _impure_ptr + 0x20000014 0x4 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) + 0x20000014 _impure_ptr .data._impure_data - 0x20000048 0x4c C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) - 0x20000048 _impure_data + 0x20000018 0x4c C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) + 0x20000018 _impure_data *(.RamFunc) *(.RamFunc*) - 0x20000094 . = ALIGN (0x4) - 0x20000094 _edata = . + 0x20000064 . = ALIGN (0x4) + 0x20000064 _edata = . -.igot.plt 0x20000094 0x0 load address 0x080067e8 - .igot.plt 0x20000094 0x0 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtbegin.o - 0x20000094 . = ALIGN (0x4) +.igot.plt 0x20000064 0x0 load address 0x08006b10 + .igot.plt 0x20000064 0x0 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtbegin.o + 0x20000064 . = ALIGN (0x4) -.bss 0x20000094 0x8b8 load address 0x080067e8 - 0x20000094 _sbss = . - 0x20000094 __bss_start__ = _sbss +.bss 0x20000064 0x880 load address 0x08006b10 + 0x20000064 _sbss = . + 0x20000064 __bss_start__ = _sbss *(.bss) - .bss 0x20000094 0x1c C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtbegin.o + .bss 0x20000064 0x1c C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtbegin.o *(.bss*) .bss.ad5934_state - 0x200000b0 0x1 ./Core/Src/ad5934_driver.o - 0x200000b0 ad5934_state - *fill* 0x200000b1 0x3 + 0x20000080 0x1 ./Core/Src/ad5934_driver.o + 0x20000080 ad5934_state + *fill* 0x20000081 0x3 .bss.g_ms_counter - 0x200000b4 0x4 ./Core/Src/ad5934_driver.o - 0x200000b4 g_ms_counter + 0x20000084 0x4 ./Core/Src/ad5934_driver.o + 0x20000084 g_ms_counter .bss.current_mux_channel - 0x200000b8 0x1 ./Core/Src/ad5934_driver.o - 0x200000b8 current_mux_channel + 0x20000088 0x1 ./Core/Src/ad5934_driver.o + 0x20000088 current_mux_channel .bss.sweep_count - 0x200000b9 0x1 ./Core/Src/ad5934_driver.o - 0x200000b9 sweep_count - *fill* 0x200000ba 0x2 + 0x20000089 0x1 ./Core/Src/ad5934_driver.o + 0x20000089 sweep_count + *fill* 0x2000008a 0x2 .bss.g_rtd_filter - 0x200000bc 0x54 ./Core/Src/ad5934_driver.o - 0x200000bc g_rtd_filter + 0x2000008c 0x44 ./Core/Src/ad5934_driver.o + 0x2000008c g_rtd_filter .bss.g_ec_filter - 0x20000110 0x54 ./Core/Src/ad5934_driver.o - 0x20000110 g_ec_filter + 0x200000d0 0x44 ./Core/Src/ad5934_driver.o + 0x200000d0 g_ec_filter .bss.g_ref_filter - 0x20000164 0x54 ./Core/Src/ad5934_driver.o - 0x20000164 g_ref_filter + 0x20000114 0x44 ./Core/Src/ad5934_driver.o + 0x20000114 g_ref_filter .bss.state_timer.0 - 0x200001b8 0x4 ./Core/Src/ad5934_driver.o - .bss.hadc1 0x200001bc 0x30 ./Core/Src/adc.o - 0x200001bc hadc1 - .bss.hadc2 0x200001ec 0x30 ./Core/Src/adc.o - 0x200001ec hadc2 + 0x20000158 0x4 ./Core/Src/ad5934_driver.o + .bss.hadc1 0x2000015c 0x30 ./Core/Src/adc.o + 0x2000015c hadc1 + .bss.hadc2 0x2000018c 0x30 ./Core/Src/adc.o + 0x2000018c hadc2 .bss.i2c_ads1015 - 0x2000021c 0x10 ./Core/Src/ads1015_driver.o - 0x2000021c i2c_ads1015 + 0x200001bc 0x10 ./Core/Src/ads1015_driver.o + 0x200001bc i2c_ads1015 .bss.g_ph_filter - 0x2000022c 0x4c ./Core/Src/ads1015_driver.o - 0x2000022c g_ph_filter + 0x200001cc 0x44 ./Core/Src/ads1015_driver.o + 0x200001cc g_ph_filter .bss.ads1015_state - 0x20000278 0x1 ./Core/Src/ads1015_driver.o - 0x20000278 ads1015_state - *fill* 0x20000279 0x3 + 0x20000210 0x1 ./Core/Src/ads1015_driver.o + 0x20000210 ads1015_state + *fill* 0x20000211 0x3 .bss.sample_count.1 - 0x2000027c 0x4 ./Core/Src/ads1015_driver.o + 0x20000214 0x4 ./Core/Src/ads1015_driver.o .bss.state_timer.0 - 0x20000280 0x4 ./Core/Src/ads1015_driver.o + 0x20000218 0x4 ./Core/Src/ads1015_driver.o .bss.pin_states - 0x20000284 0x8 ./Core/Src/digital_outputs_driver.o + 0x2000021c 0x8 ./Core/Src/digital_outputs_driver.o .bss.flash_data - 0x2000028c 0x400 ./Core/Src/flash_manager.o - 0x2000028c flash_data - .bss.hi2c1 0x2000068c 0x54 ./Core/Src/i2c.o - 0x2000068c hi2c1 - .bss.hi2c2 0x200006e0 0x54 ./Core/Src/i2c.o - 0x200006e0 hi2c2 + 0x20000224 0x400 ./Core/Src/flash_manager.o + 0x20000224 flash_data + .bss.hi2c1 0x20000624 0x54 ./Core/Src/i2c.o + 0x20000624 hi2c1 + .bss.hi2c2 0x20000678 0x54 ./Core/Src/i2c.o + 0x20000678 hi2c2 .bss.device_address - 0x20000734 0x3 ./Core/Src/rs485_driver.o - *fill* 0x20000737 0x1 - .bss.huart1 0x20000738 0x48 ./Core/Src/rs485_driver.o - .bss.htim3 0x20000780 0x48 ./Core/Src/tim.o - 0x20000780 htim3 - .bss.huart1 0x200007c8 0x48 ./Core/Src/usart.o - 0x200007c8 huart1 - .bss.uwTick 0x20000810 0x4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x20000810 uwTick - .bss.__sf 0x20000814 0x138 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - 0x20000814 __sf + 0x200006cc 0x3 ./Core/Src/rs485_driver.o + *fill* 0x200006cf 0x1 + .bss.huart1 0x200006d0 0x48 ./Core/Src/rs485_driver.o + .bss.htim3 0x20000718 0x48 ./Core/Src/tim.o + 0x20000718 htim3 + .bss.huart1 0x20000760 0x48 ./Core/Src/usart.o + 0x20000760 huart1 + .bss.uwTick 0x200007a8 0x4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x200007a8 uwTick + .bss.__sf 0x200007ac 0x138 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + 0x200007ac __sf *(COMMON) - 0x2000094c . = ALIGN (0x4) - 0x2000094c _ebss = . - 0x2000094c __bss_end__ = _ebss + 0x200008e4 . = ALIGN (0x4) + 0x200008e4 _ebss = . + 0x200008e4 __bss_end__ = _ebss ._user_heap_stack - 0x2000094c 0x604 load address 0x080067e8 - 0x20000950 . = ALIGN (0x8) - *fill* 0x2000094c 0x4 + 0x200008e4 0x604 load address 0x08006b10 + 0x200008e8 . = ALIGN (0x8) + *fill* 0x200008e4 0x4 [!provide] PROVIDE (end = .) - 0x20000950 PROVIDE (_end = .) - 0x20000b50 . = (. + _Min_Heap_Size) - *fill* 0x20000950 0x200 - 0x20000f50 . = (. + _Min_Stack_Size) - *fill* 0x20000b50 0x400 - 0x20000f50 . = ALIGN (0x8) + 0x200008e8 PROVIDE (_end = .) + 0x20000ae8 . = (. + _Min_Heap_Size) + *fill* 0x200008e8 0x200 + 0x20000ee8 . = (. + _Min_Stack_Size) + *fill* 0x20000ae8 0x400 + 0x20000ee8 . = ALIGN (0x8) /DISCARD/ libc.a(*) @@ -5315,179 +5335,181 @@ LOAD C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.exte .ARM.attributes 0x0000071a 0x1d C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_unordsf2.o) .ARM.attributes - 0x00000737 0x1d C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtn.o + 0x00000737 0x1d C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_fixunssfsi.o) + .ARM.attributes + 0x00000754 0x1d C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp/crtn.o OUTPUT(Fertirrega_v6.elf elf32-littlearm) LOAD linker stubs LOAD C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc.a LOAD C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a LOAD C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a -.debug_info 0x00000000 0x14af9 - .debug_info 0x00000000 0x1653 ./Core/Src/ad5934_driver.o - .debug_info 0x00001653 0x825 ./Core/Src/adc.o - .debug_info 0x00001e78 0x1139 ./Core/Src/ads1015_driver.o - .debug_info 0x00002fb1 0x3c2 ./Core/Src/digital_outputs_driver.o - .debug_info 0x00003373 0x378 ./Core/Src/flash_manager.o - .debug_info 0x000036eb 0x396 ./Core/Src/gpio.o - .debug_info 0x00003a81 0x83b ./Core/Src/i2c.o - .debug_info 0x000042bc 0x1644 ./Core/Src/main.o - .debug_info 0x00005900 0x993 ./Core/Src/rs485_driver.o - .debug_info 0x00006293 0x1f1 ./Core/Src/stm32f1xx_hal_msp.o - .debug_info 0x00006484 0x94c ./Core/Src/stm32f1xx_it.o - .debug_info 0x00006dd0 0x222 ./Core/Src/system_stm32f1xx.o - .debug_info 0x00006ff2 0x9bb ./Core/Src/tim.o - .debug_info 0x000079ad 0x92a ./Core/Src/usart.o - .debug_info 0x000082d7 0x30 ./Core/Startup/startup_stm32f103c8tx.o - .debug_info 0x00008307 0x704 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_info 0x00008a0b 0xc50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_info 0x0000965b 0xa87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_info 0x0000a0e2 0x6d2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_info 0x0000a7b4 0x5ab ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_info 0x0000ad5f 0x2524 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o - .debug_info 0x0000d283 0x7d5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_info 0x0000da58 0x3c0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_info 0x0000de18 0x2959 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_info 0x00010771 0x149b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_info 0x00011c0c 0x2eed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o +.debug_info 0x00000000 0x1496c + .debug_info 0x00000000 0x17be ./Core/Src/ad5934_driver.o + .debug_info 0x000017be 0x825 ./Core/Src/adc.o + .debug_info 0x00001fe3 0x111a ./Core/Src/ads1015_driver.o + .debug_info 0x000030fd 0x3c2 ./Core/Src/digital_outputs_driver.o + .debug_info 0x000034bf 0x378 ./Core/Src/flash_manager.o + .debug_info 0x00003837 0x396 ./Core/Src/gpio.o + .debug_info 0x00003bcd 0x83b ./Core/Src/i2c.o + .debug_info 0x00004408 0x136b ./Core/Src/main.o + .debug_info 0x00005773 0x993 ./Core/Src/rs485_driver.o + .debug_info 0x00006106 0x1f1 ./Core/Src/stm32f1xx_hal_msp.o + .debug_info 0x000062f7 0x94c ./Core/Src/stm32f1xx_it.o + .debug_info 0x00006c43 0x222 ./Core/Src/system_stm32f1xx.o + .debug_info 0x00006e65 0x9bb ./Core/Src/tim.o + .debug_info 0x00007820 0x92a ./Core/Src/usart.o + .debug_info 0x0000814a 0x30 ./Core/Startup/startup_stm32f103c8tx.o + .debug_info 0x0000817a 0x704 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_info 0x0000887e 0xc50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_info 0x000094ce 0xa87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_info 0x00009f55 0x6d2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_info 0x0000a627 0x5ab ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_info 0x0000abd2 0x2524 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_info 0x0000d0f6 0x7d5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_info 0x0000d8cb 0x3c0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_info 0x0000dc8b 0x2959 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_info 0x000105e4 0x149b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_info 0x00011a7f 0x2eed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o -.debug_abbrev 0x00000000 0x3648 - .debug_abbrev 0x00000000 0x330 ./Core/Src/ad5934_driver.o - .debug_abbrev 0x00000330 0x1e5 ./Core/Src/adc.o - .debug_abbrev 0x00000515 0x339 ./Core/Src/ads1015_driver.o - .debug_abbrev 0x0000084e 0x1ba ./Core/Src/digital_outputs_driver.o - .debug_abbrev 0x00000a08 0x1b7 ./Core/Src/flash_manager.o - .debug_abbrev 0x00000bbf 0x1a1 ./Core/Src/gpio.o - .debug_abbrev 0x00000d60 0x1e4 ./Core/Src/i2c.o - .debug_abbrev 0x00000f44 0x341 ./Core/Src/main.o - .debug_abbrev 0x00001285 0x215 ./Core/Src/rs485_driver.o - .debug_abbrev 0x0000149a 0xdb ./Core/Src/stm32f1xx_hal_msp.o - .debug_abbrev 0x00001575 0x19b ./Core/Src/stm32f1xx_it.o - .debug_abbrev 0x00001710 0x13f ./Core/Src/system_stm32f1xx.o - .debug_abbrev 0x0000184f 0x20e ./Core/Src/tim.o - .debug_abbrev 0x00001a5d 0x205 ./Core/Src/usart.o - .debug_abbrev 0x00001c62 0x24 ./Core/Startup/startup_stm32f103c8tx.o - .debug_abbrev 0x00001c86 0x201 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_abbrev 0x00001e87 0x225 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_abbrev 0x000020ac 0x2f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_abbrev 0x000023a4 0x20b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_abbrev 0x000025af 0x1ca ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_abbrev 0x00002779 0x2a3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o - .debug_abbrev 0x00002a1c 0x2b3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_abbrev 0x00002ccf 0x188 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_abbrev 0x00002e57 0x277 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_abbrev 0x000030ce 0x282 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_abbrev 0x00003350 0x2f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o +.debug_abbrev 0x00000000 0x3665 + .debug_abbrev 0x00000000 0x342 ./Core/Src/ad5934_driver.o + .debug_abbrev 0x00000342 0x1e5 ./Core/Src/adc.o + .debug_abbrev 0x00000527 0x350 ./Core/Src/ads1015_driver.o + .debug_abbrev 0x00000877 0x1ba ./Core/Src/digital_outputs_driver.o + .debug_abbrev 0x00000a31 0x1b7 ./Core/Src/flash_manager.o + .debug_abbrev 0x00000be8 0x1a1 ./Core/Src/gpio.o + .debug_abbrev 0x00000d89 0x1e4 ./Core/Src/i2c.o + .debug_abbrev 0x00000f6d 0x335 ./Core/Src/main.o + .debug_abbrev 0x000012a2 0x215 ./Core/Src/rs485_driver.o + .debug_abbrev 0x000014b7 0xdb ./Core/Src/stm32f1xx_hal_msp.o + .debug_abbrev 0x00001592 0x19b ./Core/Src/stm32f1xx_it.o + .debug_abbrev 0x0000172d 0x13f ./Core/Src/system_stm32f1xx.o + .debug_abbrev 0x0000186c 0x20e ./Core/Src/tim.o + .debug_abbrev 0x00001a7a 0x205 ./Core/Src/usart.o + .debug_abbrev 0x00001c7f 0x24 ./Core/Startup/startup_stm32f103c8tx.o + .debug_abbrev 0x00001ca3 0x201 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_abbrev 0x00001ea4 0x225 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_abbrev 0x000020c9 0x2f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_abbrev 0x000023c1 0x20b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_abbrev 0x000025cc 0x1ca ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_abbrev 0x00002796 0x2a3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_abbrev 0x00002a39 0x2b3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_abbrev 0x00002cec 0x188 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_abbrev 0x00002e74 0x277 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_abbrev 0x000030eb 0x282 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_abbrev 0x0000336d 0x2f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o -.debug_aranges 0x00000000 0x1310 +.debug_aranges 0x00000000 0x1320 .debug_aranges - 0x00000000 0x108 ./Core/Src/ad5934_driver.o + 0x00000000 0x118 ./Core/Src/ad5934_driver.o .debug_aranges - 0x00000108 0x38 ./Core/Src/adc.o + 0x00000118 0x38 ./Core/Src/adc.o .debug_aranges - 0x00000140 0xc8 ./Core/Src/ads1015_driver.o + 0x00000150 0xc8 ./Core/Src/ads1015_driver.o .debug_aranges - 0x00000208 0x40 ./Core/Src/digital_outputs_driver.o + 0x00000218 0x40 ./Core/Src/digital_outputs_driver.o .debug_aranges - 0x00000248 0x28 ./Core/Src/flash_manager.o + 0x00000258 0x28 ./Core/Src/flash_manager.o .debug_aranges - 0x00000270 0x28 ./Core/Src/gpio.o + 0x00000280 0x28 ./Core/Src/gpio.o .debug_aranges - 0x00000298 0x38 ./Core/Src/i2c.o + 0x000002a8 0x38 ./Core/Src/i2c.o .debug_aranges - 0x000002d0 0x48 ./Core/Src/main.o + 0x000002e0 0x48 ./Core/Src/main.o .debug_aranges - 0x00000318 0x68 ./Core/Src/rs485_driver.o + 0x00000328 0x68 ./Core/Src/rs485_driver.o .debug_aranges - 0x00000380 0x20 ./Core/Src/stm32f1xx_hal_msp.o + 0x00000390 0x20 ./Core/Src/stm32f1xx_hal_msp.o .debug_aranges - 0x000003a0 0x70 ./Core/Src/stm32f1xx_it.o + 0x000003b0 0x70 ./Core/Src/stm32f1xx_it.o .debug_aranges - 0x00000410 0x28 ./Core/Src/system_stm32f1xx.o + 0x00000420 0x28 ./Core/Src/system_stm32f1xx.o .debug_aranges - 0x00000438 0x30 ./Core/Src/tim.o + 0x00000448 0x30 ./Core/Src/tim.o .debug_aranges - 0x00000468 0x30 ./Core/Src/usart.o + 0x00000478 0x30 ./Core/Src/usart.o .debug_aranges - 0x00000498 0x28 ./Core/Startup/startup_stm32f103c8tx.o + 0x000004a8 0x28 ./Core/Startup/startup_stm32f103c8tx.o .debug_aranges - 0x000004c0 0xe0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x000004d0 0xe0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .debug_aranges - 0x000005a0 0xf0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + 0x000005b0 0xf0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o .debug_aranges - 0x00000690 0x100 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x000006a0 0x100 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .debug_aranges - 0x00000790 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + 0x000007a0 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o .debug_aranges - 0x00000810 0x58 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + 0x00000820 0x58 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o .debug_aranges - 0x00000868 0x2a8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + 0x00000878 0x2a8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o .debug_aranges - 0x00000b10 0x90 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x00000b20 0x90 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .debug_aranges - 0x00000ba0 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + 0x00000bb0 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o .debug_aranges - 0x00000bd0 0x3d0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x00000be0 0x3d0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o .debug_aranges - 0x00000fa0 0x168 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + 0x00000fb0 0x168 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o .debug_aranges - 0x00001108 0x208 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + 0x00001118 0x208 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o .debug_rnglists - 0x00000000 0xf01 + 0x00000000 0xf0f .debug_rnglists - 0x00000000 0xd8 ./Core/Src/ad5934_driver.o + 0x00000000 0xe6 ./Core/Src/ad5934_driver.o .debug_rnglists - 0x000000d8 0x26 ./Core/Src/adc.o + 0x000000e6 0x26 ./Core/Src/adc.o .debug_rnglists - 0x000000fe 0xa8 ./Core/Src/ads1015_driver.o + 0x0000010c 0xa8 ./Core/Src/ads1015_driver.o .debug_rnglists - 0x000001a6 0x2c ./Core/Src/digital_outputs_driver.o + 0x000001b4 0x2c ./Core/Src/digital_outputs_driver.o .debug_rnglists - 0x000001d2 0x1a ./Core/Src/flash_manager.o + 0x000001e0 0x1a ./Core/Src/flash_manager.o .debug_rnglists - 0x000001ec 0x1a ./Core/Src/gpio.o + 0x000001fa 0x1a ./Core/Src/gpio.o .debug_rnglists - 0x00000206 0x26 ./Core/Src/i2c.o + 0x00000214 0x26 ./Core/Src/i2c.o .debug_rnglists - 0x0000022c 0x35 ./Core/Src/main.o + 0x0000023a 0x35 ./Core/Src/main.o .debug_rnglists - 0x00000261 0x4a ./Core/Src/rs485_driver.o + 0x0000026f 0x4a ./Core/Src/rs485_driver.o .debug_rnglists - 0x000002ab 0x13 ./Core/Src/stm32f1xx_hal_msp.o + 0x000002b9 0x13 ./Core/Src/stm32f1xx_hal_msp.o .debug_rnglists - 0x000002be 0x4f ./Core/Src/stm32f1xx_it.o + 0x000002cc 0x4f ./Core/Src/stm32f1xx_it.o .debug_rnglists - 0x0000030d 0x1a ./Core/Src/system_stm32f1xx.o + 0x0000031b 0x1a ./Core/Src/system_stm32f1xx.o .debug_rnglists - 0x00000327 0x20 ./Core/Src/tim.o + 0x00000335 0x20 ./Core/Src/tim.o .debug_rnglists - 0x00000347 0x20 ./Core/Src/usart.o + 0x00000355 0x20 ./Core/Src/usart.o .debug_rnglists - 0x00000367 0x19 ./Core/Startup/startup_stm32f103c8tx.o + 0x00000375 0x19 ./Core/Startup/startup_stm32f103c8tx.o .debug_rnglists - 0x00000380 0xa3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x0000038e 0xa3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .debug_rnglists - 0x00000423 0xbc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + 0x00000431 0xbc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o .debug_rnglists - 0x000004df 0xbb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x000004ed 0xbb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .debug_rnglists - 0x0000059a 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + 0x000005a8 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o .debug_rnglists - 0x000005fe 0x3f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + 0x0000060c 0x3f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o .debug_rnglists - 0x0000063d 0x23c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + 0x0000064b 0x23c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o .debug_rnglists - 0x00000879 0x6c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x00000887 0x6c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .debug_rnglists - 0x000008e5 0x21 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + 0x000008f3 0x21 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o .debug_rnglists - 0x00000906 0x31a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x00000914 0x31a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o .debug_rnglists - 0x00000c20 0x125 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + 0x00000c2e 0x125 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o .debug_rnglists - 0x00000d45 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + 0x00000d53 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o -.debug_macro 0x00000000 0x1a7c4 +.debug_macro 0x00000000 0x1a818 .debug_macro 0x00000000 0x2fd ./Core/Src/ad5934_driver.o .debug_macro 0x000002fd 0xacc ./Core/Src/ad5934_driver.o .debug_macro 0x00000dc9 0x227 ./Core/Src/ad5934_driver.o @@ -5550,96 +5572,96 @@ LOAD C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.exte .debug_macro 0x00016f0e 0x16 ./Core/Src/ad5934_driver.o .debug_macro 0x00016f24 0x16 ./Core/Src/ad5934_driver.o .debug_macro 0x00016f3a 0x29 ./Core/Src/ad5934_driver.o - .debug_macro 0x00016f63 0x245 ./Core/Src/ad5934_driver.o - .debug_macro 0x000171a8 0x1da ./Core/Src/adc.o - .debug_macro 0x00017382 0x1c8 ./Core/Src/adc.o - .debug_macro 0x0001754a 0x2c9 ./Core/Src/ads1015_driver.o - .debug_macro 0x00017813 0x56 ./Core/Src/ads1015_driver.o - .debug_macro 0x00017869 0x16 ./Core/Src/ads1015_driver.o - .debug_macro 0x0001787f 0x1b9 ./Core/Src/ads1015_driver.o - .debug_macro 0x00017a38 0x1de ./Core/Src/digital_outputs_driver.o - .debug_macro 0x00017c16 0x29e ./Core/Src/flash_manager.o - .debug_macro 0x00017eb4 0x1df ./Core/Src/gpio.o - .debug_macro 0x00018093 0x16 ./Core/Src/gpio.o - .debug_macro 0x000180a9 0x1da ./Core/Src/i2c.o - .debug_macro 0x00018283 0x383 ./Core/Src/main.o - .debug_macro 0x00018606 0x1c ./Core/Src/main.o - .debug_macro 0x00018622 0x229 ./Core/Src/main.o - .debug_macro 0x0001884b 0x28 ./Core/Src/main.o - .debug_macro 0x00018873 0x1d9 ./Core/Src/rs485_driver.o - .debug_macro 0x00018a4c 0x1d0 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00018c1c 0x1da ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00018df6 0x1c1 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00018fb7 0x1da ./Core/Src/tim.o - .debug_macro 0x00019191 0x1da ./Core/Src/usart.o - .debug_macro 0x0001936b 0x1e5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00019550 0x1de ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x0001972e 0x1c1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x000198ef 0x1c1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00019ab0 0x22c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00019cdc 0x20f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o - .debug_macro 0x00019eeb 0x1d3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x0001a0be 0x1c1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x0001a27f 0x1c2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x0001a441 0x1c1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x0001a602 0x1c2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x00016f63 0x299 ./Core/Src/ad5934_driver.o + .debug_macro 0x000171fc 0x1da ./Core/Src/adc.o + .debug_macro 0x000173d6 0x1c8 ./Core/Src/adc.o + .debug_macro 0x0001759e 0x2c9 ./Core/Src/ads1015_driver.o + .debug_macro 0x00017867 0x56 ./Core/Src/ads1015_driver.o + .debug_macro 0x000178bd 0x16 ./Core/Src/ads1015_driver.o + .debug_macro 0x000178d3 0x1b9 ./Core/Src/ads1015_driver.o + .debug_macro 0x00017a8c 0x1de ./Core/Src/digital_outputs_driver.o + .debug_macro 0x00017c6a 0x29e ./Core/Src/flash_manager.o + .debug_macro 0x00017f08 0x1df ./Core/Src/gpio.o + .debug_macro 0x000180e7 0x16 ./Core/Src/gpio.o + .debug_macro 0x000180fd 0x1da ./Core/Src/i2c.o + .debug_macro 0x000182d7 0x383 ./Core/Src/main.o + .debug_macro 0x0001865a 0x1c ./Core/Src/main.o + .debug_macro 0x00018676 0x229 ./Core/Src/main.o + .debug_macro 0x0001889f 0x28 ./Core/Src/main.o + .debug_macro 0x000188c7 0x1d9 ./Core/Src/rs485_driver.o + .debug_macro 0x00018aa0 0x1d0 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00018c70 0x1da ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00018e4a 0x1c1 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x0001900b 0x1da ./Core/Src/tim.o + .debug_macro 0x000191e5 0x1da ./Core/Src/usart.o + .debug_macro 0x000193bf 0x1e5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x000195a4 0x1de ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00019782 0x1c1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00019943 0x1c1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00019b04 0x22c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00019d30 0x20f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x00019f3f 0x1d3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x0001a112 0x1c1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x0001a2d3 0x1c2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x0001a495 0x1c1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x0001a656 0x1c2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o -.debug_line 0x00000000 0x18bbb - .debug_line 0x00000000 0x11e6 ./Core/Src/ad5934_driver.o - .debug_line 0x000011e6 0x83b ./Core/Src/adc.o - .debug_line 0x00001a21 0xef3 ./Core/Src/ads1015_driver.o - .debug_line 0x00002914 0x850 ./Core/Src/digital_outputs_driver.o - .debug_line 0x00003164 0x948 ./Core/Src/flash_manager.o - .debug_line 0x00003aac 0x79d ./Core/Src/gpio.o - .debug_line 0x00004249 0x820 ./Core/Src/i2c.o - .debug_line 0x00004a69 0xc62 ./Core/Src/main.o - .debug_line 0x000056cb 0x8cd ./Core/Src/rs485_driver.o - .debug_line 0x00005f98 0x749 ./Core/Src/stm32f1xx_hal_msp.o - .debug_line 0x000066e1 0x827 ./Core/Src/stm32f1xx_it.o - .debug_line 0x00006f08 0x7c7 ./Core/Src/system_stm32f1xx.o - .debug_line 0x000076cf 0x7c2 ./Core/Src/tim.o - .debug_line 0x00007e91 0x7bf ./Core/Src/usart.o - .debug_line 0x00008650 0x78 ./Core/Startup/startup_stm32f103c8tx.o - .debug_line 0x000086c8 0x9fb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_line 0x000090c3 0x101d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_line 0x0000a0e0 0xbc2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_line 0x0000aca2 0xe02 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_line 0x0000baa4 0xa52 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_line 0x0000c4f6 0x3bf5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o - .debug_line 0x000100eb 0xeb1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_line 0x00010f9c 0x963 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_line 0x000118ff 0x34ec ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_line 0x00014deb 0x18bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_line 0x000166a7 0x2514 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o +.debug_line 0x00000000 0x18d10 + .debug_line 0x00000000 0x12a7 ./Core/Src/ad5934_driver.o + .debug_line 0x000012a7 0x83b ./Core/Src/adc.o + .debug_line 0x00001ae2 0xef3 ./Core/Src/ads1015_driver.o + .debug_line 0x000029d5 0x850 ./Core/Src/digital_outputs_driver.o + .debug_line 0x00003225 0x948 ./Core/Src/flash_manager.o + .debug_line 0x00003b6d 0x79d ./Core/Src/gpio.o + .debug_line 0x0000430a 0x820 ./Core/Src/i2c.o + .debug_line 0x00004b2a 0xcf6 ./Core/Src/main.o + .debug_line 0x00005820 0x8cd ./Core/Src/rs485_driver.o + .debug_line 0x000060ed 0x749 ./Core/Src/stm32f1xx_hal_msp.o + .debug_line 0x00006836 0x827 ./Core/Src/stm32f1xx_it.o + .debug_line 0x0000705d 0x7c7 ./Core/Src/system_stm32f1xx.o + .debug_line 0x00007824 0x7c2 ./Core/Src/tim.o + .debug_line 0x00007fe6 0x7bf ./Core/Src/usart.o + .debug_line 0x000087a5 0x78 ./Core/Startup/startup_stm32f103c8tx.o + .debug_line 0x0000881d 0x9fb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_line 0x00009218 0x101d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_line 0x0000a235 0xbc2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_line 0x0000adf7 0xe02 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_line 0x0000bbf9 0xa52 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_line 0x0000c64b 0x3bf5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_line 0x00010240 0xeb1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_line 0x000110f1 0x963 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_line 0x00011a54 0x34ec ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_line 0x00014f40 0x18bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_line 0x000167fc 0x2514 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o -.debug_str 0x00000000 0x95b1b - .debug_str 0x00000000 0x95b1b ./Core/Src/ad5934_driver.o - 0x8f471 (size before relaxing) - .debug_str 0x00095b1b 0x8a614 ./Core/Src/adc.o - .debug_str 0x00095b1b 0x8f11e ./Core/Src/ads1015_driver.o - .debug_str 0x00095b1b 0x8a38b ./Core/Src/digital_outputs_driver.o - .debug_str 0x00095b1b 0x8cd6c ./Core/Src/flash_manager.o - .debug_str 0x00095b1b 0x8a31d ./Core/Src/gpio.o - .debug_str 0x00095b1b 0x8a729 ./Core/Src/i2c.o - .debug_str 0x00095b1b 0x912a2 ./Core/Src/main.o - .debug_str 0x00095b1b 0x8b0b6 ./Core/Src/rs485_driver.o - .debug_str 0x00095b1b 0x8a1e4 ./Core/Src/stm32f1xx_hal_msp.o - .debug_str 0x00095b1b 0x8a93a ./Core/Src/stm32f1xx_it.o - .debug_str 0x00095b1b 0x89a79 ./Core/Src/system_stm32f1xx.o - .debug_str 0x00095b1b 0x8ab05 ./Core/Src/tim.o - .debug_str 0x00095b1b 0x8a9bf ./Core/Src/usart.o - .debug_str 0x00095b1b 0x6e ./Core/Startup/startup_stm32f103c8tx.o - .debug_str 0x00095b1b 0x8a1ac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_str 0x00095b1b 0x8a15d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_str 0x00095b1b 0x8a0f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_str 0x00095b1b 0x89e22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_str 0x00095b1b 0x89dff ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_str 0x00095b1b 0x8ab40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o - .debug_str 0x00095b1b 0x89ea8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_str 0x00095b1b 0x89bf8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_str 0x00095b1b 0x8aeaa ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_str 0x00095b1b 0x8a6b6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_str 0x00095b1b 0x8a519 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o +.debug_str 0x00000000 0x95d25 + .debug_str 0x00000000 0x95d25 ./Core/Src/ad5934_driver.o + 0x8f685 (size before relaxing) + .debug_str 0x00095d25 0x8a614 ./Core/Src/adc.o + .debug_str 0x00095d25 0x8f11e ./Core/Src/ads1015_driver.o + .debug_str 0x00095d25 0x8a38b ./Core/Src/digital_outputs_driver.o + .debug_str 0x00095d25 0x8cd6c ./Core/Src/flash_manager.o + .debug_str 0x00095d25 0x8a31d ./Core/Src/gpio.o + .debug_str 0x00095d25 0x8a729 ./Core/Src/i2c.o + .debug_str 0x00095d25 0x91175 ./Core/Src/main.o + .debug_str 0x00095d25 0x8b0b6 ./Core/Src/rs485_driver.o + .debug_str 0x00095d25 0x8a1e4 ./Core/Src/stm32f1xx_hal_msp.o + .debug_str 0x00095d25 0x8a93a ./Core/Src/stm32f1xx_it.o + .debug_str 0x00095d25 0x89a79 ./Core/Src/system_stm32f1xx.o + .debug_str 0x00095d25 0x8ab05 ./Core/Src/tim.o + .debug_str 0x00095d25 0x8a9bf ./Core/Src/usart.o + .debug_str 0x00095d25 0x6e ./Core/Startup/startup_stm32f103c8tx.o + .debug_str 0x00095d25 0x8a1ac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_str 0x00095d25 0x8a15d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_str 0x00095d25 0x8a0f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_str 0x00095d25 0x89e22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_str 0x00095d25 0x89dff ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_str 0x00095d25 0x8ab40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_str 0x00095d25 0x89ea8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_str 0x00095d25 0x89bf8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_str 0x00095d25 0x8aeaa ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_str 0x00095d25 0x8a6b6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_str 0x00095d25 0x8a519 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o .comment 0x00000000 0x43 .comment 0x00000000 0x43 ./Core/Src/ad5934_driver.o @@ -5669,48 +5691,49 @@ LOAD C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.exte .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o -.debug_frame 0x00000000 0x5088 - .debug_frame 0x00000000 0x448 ./Core/Src/ad5934_driver.o - .debug_frame 0x00000448 0xa0 ./Core/Src/adc.o - .debug_frame 0x000004e8 0x338 ./Core/Src/ads1015_driver.o - .debug_frame 0x00000820 0xc4 ./Core/Src/digital_outputs_driver.o - .debug_frame 0x000008e4 0x5c ./Core/Src/flash_manager.o - .debug_frame 0x00000940 0x58 ./Core/Src/gpio.o - .debug_frame 0x00000998 0x90 ./Core/Src/i2c.o - .debug_frame 0x00000a28 0xe0 ./Core/Src/main.o - .debug_frame 0x00000b08 0x15c ./Core/Src/rs485_driver.o - .debug_frame 0x00000c64 0x34 ./Core/Src/stm32f1xx_hal_msp.o - .debug_frame 0x00000c98 0x130 ./Core/Src/stm32f1xx_it.o - .debug_frame 0x00000dc8 0x50 ./Core/Src/system_stm32f1xx.o - .debug_frame 0x00000e18 0x7c ./Core/Src/tim.o - .debug_frame 0x00000e94 0x74 ./Core/Src/usart.o - .debug_frame 0x00000f08 0x2e4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_frame 0x000011ec 0x3e0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_frame 0x000015cc 0x3f0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_frame 0x000019bc 0x1e8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_frame 0x00001ba4 0x130 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_frame 0x00001cd4 0xbf4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o - .debug_frame 0x000028c8 0x1f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_frame 0x00002ac0 0x7c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_frame 0x00002b3c 0x10e8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_frame 0x00003c24 0x600 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_frame 0x00004224 0x8dc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o - .debug_frame 0x00004b00 0x144 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .debug_frame 0x00004c44 0x20 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) - .debug_frame 0x00004c64 0x20 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) - .debug_frame 0x00004c84 0x2c C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) - .debug_frame 0x00004cb0 0x28 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) - .debug_frame 0x00004cd8 0x20 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-strlen.o) - .debug_frame 0x00004cf8 0x2c C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a(libm_a-wf_sqrt.o) - .debug_frame 0x00004d24 0x30 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a(libm_a-ef_sqrt.o) - .debug_frame 0x00004d54 0x30 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_muldf3.o) - .debug_frame 0x00004d84 0xac C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_addsubdf3.o) - .debug_frame 0x00004e30 0xc4 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_cmpdf2.o) - .debug_frame 0x00004ef4 0x24 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_fixdfsi.o) - .debug_frame 0x00004f18 0x4c C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_addsubsf3.o) - .debug_frame 0x00004f64 0x38 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_muldivsf3.o) - .debug_frame 0x00004f9c 0xc8 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_cmpsf2.o) - .debug_frame 0x00005064 0x24 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_unordsf2.o) +.debug_frame 0x00000000 0x50f0 + .debug_frame 0x00000000 0x494 ./Core/Src/ad5934_driver.o + .debug_frame 0x00000494 0xa0 ./Core/Src/adc.o + .debug_frame 0x00000534 0x330 ./Core/Src/ads1015_driver.o + .debug_frame 0x00000864 0xc4 ./Core/Src/digital_outputs_driver.o + .debug_frame 0x00000928 0x5c ./Core/Src/flash_manager.o + .debug_frame 0x00000984 0x58 ./Core/Src/gpio.o + .debug_frame 0x000009dc 0x90 ./Core/Src/i2c.o + .debug_frame 0x00000a6c 0xe0 ./Core/Src/main.o + .debug_frame 0x00000b4c 0x15c ./Core/Src/rs485_driver.o + .debug_frame 0x00000ca8 0x34 ./Core/Src/stm32f1xx_hal_msp.o + .debug_frame 0x00000cdc 0x130 ./Core/Src/stm32f1xx_it.o + .debug_frame 0x00000e0c 0x50 ./Core/Src/system_stm32f1xx.o + .debug_frame 0x00000e5c 0x7c ./Core/Src/tim.o + .debug_frame 0x00000ed8 0x74 ./Core/Src/usart.o + .debug_frame 0x00000f4c 0x2e4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_frame 0x00001230 0x3e0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_frame 0x00001610 0x3f0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_frame 0x00001a00 0x1e8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_frame 0x00001be8 0x130 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_frame 0x00001d18 0xbf4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_frame 0x0000290c 0x1f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_frame 0x00002b04 0x7c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_frame 0x00002b80 0x10e8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_frame 0x00003c68 0x600 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_frame 0x00004268 0x8dc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_frame 0x00004b44 0x144 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .debug_frame 0x00004c88 0x20 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) + .debug_frame 0x00004ca8 0x20 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) + .debug_frame 0x00004cc8 0x2c C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) + .debug_frame 0x00004cf4 0x28 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) + .debug_frame 0x00004d1c 0x20 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-strlen.o) + .debug_frame 0x00004d3c 0x2c C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a(libm_a-wf_sqrt.o) + .debug_frame 0x00004d68 0x30 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a(libm_a-ef_sqrt.o) + .debug_frame 0x00004d98 0x30 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_muldf3.o) + .debug_frame 0x00004dc8 0xac C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_addsubdf3.o) + .debug_frame 0x00004e74 0xc4 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_cmpdf2.o) + .debug_frame 0x00004f38 0x24 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_fixdfsi.o) + .debug_frame 0x00004f5c 0x4c C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_addsubsf3.o) + .debug_frame 0x00004fa8 0x38 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_muldivsf3.o) + .debug_frame 0x00004fe0 0xc8 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_cmpsf2.o) + .debug_frame 0x000050a8 0x24 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_unordsf2.o) + .debug_frame 0x000050cc 0x24 C:/ST/STM32CubeIDE_2.1.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740/tools/bin/../lib/gcc/arm-none-eabi/14.3.1/thumb/v7-m/nofp\libgcc.a(_arm_fixunssfsi.o) .debug_line_str 0x00000000 0x52