diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/.settings/language.settings.xml b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/.settings/language.settings.xml index e31154d..398f7bb 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/.settings/language.settings.xml +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Inc/icd.h b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Inc/icd.h index 333a3a5..5433050 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Inc/icd.h +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Inc/icd.h @@ -17,7 +17,7 @@ #define CAPACITY 0.000200 #define FORCE_DELAY 100 //Задержка МС после зарядки конденсатора в принудительном режиме #define DANGER_HV true //чтобы риту не ёбнуло если 1 значит по реальному заряжаем - +#define SAFE_VOLTAGE 100 #define RG 1000.0//сопротивление резистора в омах @@ -379,6 +379,7 @@ void ll_h_off(void); void ll_h_1_side(half_br state); void ll_h_2_side(half_br state); void ll_bi_dis(void); +void ll_bi_shock_param(icd_str * icd_str); void ra_lv_control(icd_str * icd_str,lv_sub_mode mode); void rv_lv_control(icd_str * icd_str,lv_sub_mode mode); @@ -387,4 +388,6 @@ void hv_en_control(bool en_RV, bool en_SCV, bool en_CAN); void hv_en_rv(bool state); void hv_en_scv(bool state); void hv_en_can(bool state); + +void delay_critical(uint8_t delay); #endif diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Inc/tim.h b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Inc/tim.h index 61a3e82..9399d73 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Inc/tim.h +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Inc/tim.h @@ -44,6 +44,8 @@ extern TIM_HandleTypeDef htim6; extern TIM_HandleTypeDef htim9; +extern TIM_HandleTypeDef htim11; + extern TIM_HandleTypeDef htim14; /* USER CODE BEGIN Private defines */ @@ -56,6 +58,7 @@ void MX_TIM3_Init(void); void MX_TIM4_Init(void); void MX_TIM6_Init(void); void MX_TIM9_Init(void); +void MX_TIM11_Init(void); void MX_TIM14_Init(void); void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/adc.c b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/adc.c index f3499ee..648dee6 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/adc.c +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/adc.c @@ -264,7 +264,7 @@ void adc_read(adc_struct* adc) adc->error = HAL_ADC_Start(&hadc1); adc->error = HAL_ADC_PollForConversion(&hadc1, 1); adc->bat_raw = HAL_ADC_GetValue(&hadc1); - adc->bat_volt = ((uint32_t)(adc->bat_raw) * 6600)/4095 + 40;//40 миливольт падение на идеальном диоде + adc->bat_volt = ((uint32_t)(adc->bat_raw) * 6600)/4095; adc->bat_pers = volt_to_pers(adc->bat_volt);//40 миливольт падение на идеальном диоде diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/control.c b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/control.c index 88d95f3..96b4387 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/control.c +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/control.c @@ -37,6 +37,13 @@ void lets_sleep(void) HAL_GPIO_WritePin(POT_PWR_GPIO_Port, POT_PWR_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(BLE_PWR_GPIO_Port, BLE_PWR_Pin, SET); + +// hv_pwm(false); +// hv_power(false); +// hv_ll_control(z_state, z_state, z_state); +// HAL_Delay(20); +// relay_all_control(false, false, false); + HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1); //Сейчас второй кнопки нет!! //HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN2);//если вторая кнопка тоже подключена PC0 diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/freertos.c b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/freertos.c index cb697c2..7abb033 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/freertos.c +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/freertos.c @@ -279,7 +279,9 @@ void StartButTask(void const * argument) /* Infinite loop */ for (;;) { - if (HAL_GPIO_ReadPin(BUT_1_GPIO_Port, BUT_1_Pin) == GPIO_PIN_SET) + //отрабатываем кнопку только если не в режиме заряда и нет напряжения на КОНДЕНСАТОРЕ + if (HAL_GPIO_ReadPin(BUT_1_GPIO_Port, BUT_1_Pin) == GPIO_PIN_SET + && ICD.work_set_mode == Monitor && adc_str.hv_volt < SAFE_VOLTAGE) { Control.btn_1_state = true; Control.btn_1_cnt++; diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/gpio.c b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/gpio.c index 0b6cc5f..3b00fef 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/gpio.c +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/gpio.c @@ -65,7 +65,7 @@ void MX_GPIO_Init(void) HAL_GPIO_WritePin(RA_LV_SHOCK_GPIO_Port, RA_LV_SHOCK_Pin, GPIO_PIN_SET); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOB, RA_LV_DIS_Pin|HV_EN_RV_Pin|RV_LV_SHOCK_Pin, GPIO_PIN_SET); + HAL_GPIO_WritePin(GPIOB, RA_LV_DIS_Pin|HV_EN_RV_Pin, GPIO_PIN_SET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOB, RA_LV_COIL_TO_GND_Pin|RA_LV_TIP_TO_GND_Pin|CAN_LV_TO_GND_Pin|POT_CS_1_Pin @@ -122,11 +122,9 @@ void MX_GPIO_Init(void) HAL_GPIO_Init(RA_LV_SHOCK_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pins : PBPin PBPin PBPin PBPin - PBPin PBPin PBPin PBPin - PBPin */ + PBPin PBPin PBPin PBPin */ GPIO_InitStruct.Pin = RA_LV_DIS_Pin|RA_LV_COIL_TO_GND_Pin|RA_LV_TIP_TO_GND_Pin|CAN_LV_TO_GND_Pin - |POT_PWR_Pin|HV_HS_RV_Pin|HV_EN_RV_Pin|HV_LS_RV_Pin - |RV_LV_SHOCK_Pin; + |POT_PWR_Pin|HV_HS_RV_Pin|HV_EN_RV_Pin|HV_LS_RV_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/icd.c b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/icd.c index e885d98..d631e91 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/icd.c +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/icd.c @@ -6,6 +6,7 @@ #include #endif +extern TIM_HandleTypeDef htim11; icd_str ICD; extern adc_struct adc_str;//структура ацп @@ -50,7 +51,7 @@ void init_icd(icd_str * icd_str) icd_str->triangle_coef = TRIANGLE_COEF; icd_str->lv_polarity = lv_bipolar;//полярность низковольтной стимуляции - icd_str->lv_mode = lv_mode_VVI;//режим низковольтной стимуляции + icd_str->lv_mode = lv_mode_none;//режим низковольтной стимуляции icd_str->lv_shock_time = 13;//время импульса низковольной стимуляции 1-20(0,1-2мс) одна единица 0,1мс шаг 0.1мс icd_str->lv_relax_time = 14;//время стабилизации после удара низковольной стимуляции 0-20(0-20мс) одна единица 1мс шаг 1мс @@ -111,6 +112,16 @@ void init_icd(icd_str * icd_str) icd_str->hv_step_number = HV_STEP_NUM;//сколько шагов ВВ терапии? icd_str->hv_step_cnt = 0;// какой сейчас шаг? + icd_str->hv_polarity = rv_neg_scv_poz; //полярность стимуляции + icd_str->hv_mode = hv_mode_fixed; //тип способа задания длительности импульса + //время константы времени стимуляции + icd_str->hv_phase_1_duration = 100; // время в десятых мс приходящееся на 1 фазу 30-120(3-12мс) одна единица 0,1мс + icd_str->hv_phase_2_duration = 70; // время в десятых мс приходящееся на 2 фазу 20-100(2-10мс) одна единица 0,1мс + icd_str->hv_switch_duration = 30; // время в десятых мс приходящееся на переключение между фазами 10-30(1-3мс) одна единица 0,1мс + //процентные параметры стимуляции + icd_str->hv_switching_voltage = 40;//процент напряжения при котором происходит завешение 1 фазы при адаптивном режиме (20-80) одна единица 1% + icd_str->hv_cutoff_voltage = 20;//процент напряжения при котором происходит завешение 2 фазы при адаптивном режиме (5-50) одна единица 1% + icd_str->min_energy = MIN_ENERGY; icd_str->max_energy = MAX_ENERGY; @@ -507,7 +518,7 @@ void hv_charge(icd_str *icd_str) } else { - if (DANGER_HV) + if (DANGER_HV && icd_str->HV_on) { hv_pwm(true); //включили шим для заряда конденсатора } @@ -566,7 +577,7 @@ void hv_shock(icd_str * icd_str) //подали питание на плату только если не в режиме мониторинга if(icd_str->work_set_mode != Monitor)//fixme { - ll_bi_dis(); + ll_bi_shock_param(icd_str); } else { @@ -745,6 +756,11 @@ void terapy_algorithm(icd_str * icd_str) } break; } + + if(icd_str->work_set_mode == Monitor && adc_str.hv_volt < SAFE_VOLTAGE/2) + { + hv_discharge(false);//выключили разряд + } } //единое управление реле по идее вызываем один раз когда собираемся ударить не важно тестово или по настоящему @@ -888,38 +904,64 @@ void hv_discharge(bool state) } } - - -////разряд биполярный -void ll_bi_dis(void) +////разряд биполярный с выбором параметров +void ll_bi_shock_param(icd_str * icd_str) { + //сперва тупо парсим параметры из основной структуры + //хватаем параметры в локальные переменные чтобы ничего не поменялось + hv_polarity polarity = icd_str->hv_polarity; + hv_mode mode = icd_str->hv_mode; + + // время в десятых мс приходящееся на 1 фазу 30-120(3-12мс) одна единица 0,1мс + uint8_t hv_phase_1_duration = icd_str->hv_phase_1_duration; + // время в десятых мс приходящееся на 2 фазу 20-100(2-10мс) одна единица 0,1мс + uint8_t hv_phase_2_duration = icd_str->hv_phase_2_duration; + // время в десятых мс приходящееся на переключение между фазами 10-30(1-3мс) одна единица 0,1мс + uint8_t hv_switch_duration = icd_str->hv_switch_duration; + + //процент напряжения при котором происходит завешение 1 фазы при адаптивном режиме (20-80) одна единица 1% + uint8_t hv_switching_voltage = icd_str->hv_switching_voltage; + //процент напряжения при котором происходит завешение 2 фазы при адаптивном режиме (5-50) одна единица 1% + uint8_t hv_cutoff_voltage = icd_str->hv_cutoff_voltage; + + bool HV_on = icd_str->HV_on; //защитили низковольтную часть relay_all_control(true,true,true); - hv_en_control(false, false, false); - //чтобы не пробило перевели в разамкнутое состояние все полумосты - hv_ll_control(z_state, z_state, z_state); - osDelay(15); - hv_power(true); - osDelay(5); - hv_en_control(true, true, false); - osDelay(2); - //Сторона 1 + - hv_ll_control(low, high, z_state); - osDelay(7); - //чтобы не пробило перевели в разамкнутое состояние все полумосты - hv_ll_control(z_state, z_state, z_state); - osDelay(2); - //Сторона 2 + - hv_ll_control(high, low, z_state); - osDelay(4); - hv_en_control(false, false, false); - hv_ll_control(z_state, z_state, z_state); osDelay(20); + if(HV_on) + { + //чтобы не пробило перевели в разамкнутое состояние все полумосты + hv_ll_control(z_state, z_state, z_state); + osDelay(2);//временно + + hv_en_control(true,true,false); + osDelay(2);//временно + //первая волна + hv_ll_control(low, high, z_state); + delay_critical(hv_phase_1_duration); + // osDelay(2);//временно + //остановка + //чтобы не пробило перевели в разамкнутое состояние все полумосты + hv_ll_control(z_state, z_state, z_state); + delay_critical(hv_switch_duration); + // osDelay(2);//временно + //вторая волна + hv_ll_control(high, low, z_state); + delay_critical(hv_phase_2_duration); + // osDelay(2); + //отключение + hv_ll_control(z_state, z_state, z_state); + hv_en_control(false,false,false); + osDelay(2);//временно + osDelay(20); + } relay_all_control(false,false,false); osDelay(2);// } + + void ra_lv_control(icd_str * icd_str,lv_sub_mode mode) { switch (mode) @@ -941,9 +983,9 @@ void ra_lv_control(icd_str * icd_str,lv_sub_mode mode) HAL_GPIO_WritePin(RA_LV_DIS_GPIO_Port, RA_LV_DIS_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(RA_LV_SHOCK_GPIO_Port, RA_LV_SHOCK_Pin, GPIO_PIN_SET); - TIM4->CCR1 = 200; - TIM4->CCR2 = 200; - TIM4->CCR3 = 200; + TIM4->CCR1 = 500; + TIM4->CCR2 = 500; + TIM4->CCR3 = 500; osDelay(2); TIM4->CCR1 = 0; TIM4->CCR2 = 0; @@ -993,7 +1035,6 @@ void rv_lv_control(icd_str * icd_str,lv_sub_mode mode) HAL_GPIO_WritePin(RV_LV_TIP_TO_GND_GPIO_Port, RV_LV_TIP_TO_GND_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(RV_LV_COIL_TO_GND_GPIO_Port, RV_LV_COIL_TO_GND_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(RV_LV_DIS_GPIO_Port, RV_LV_DIS_Pin, GPIO_PIN_SET); - HAL_GPIO_WritePin(RV_LV_SHOCK_GPIO_Port, RV_LV_SHOCK_Pin, GPIO_PIN_SET); } break; //Заряд без всякого вмешательства tip и coil идёт заряд @@ -1002,7 +1043,6 @@ void rv_lv_control(icd_str * icd_str,lv_sub_mode mode) HAL_GPIO_WritePin(RV_LV_TIP_TO_GND_GPIO_Port, RV_LV_TIP_TO_GND_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(RV_LV_COIL_TO_GND_GPIO_Port, RV_LV_COIL_TO_GND_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(RV_LV_DIS_GPIO_Port, RV_LV_DIS_Pin, GPIO_PIN_SET); - HAL_GPIO_WritePin(RV_LV_SHOCK_GPIO_Port, RV_LV_SHOCK_Pin, GPIO_PIN_SET); osDelay(2); TIM2->CCR2 = 500; TIM2->CCR3 = 500; @@ -1020,14 +1060,11 @@ void rv_lv_control(icd_str * icd_str,lv_sub_mode mode) HAL_GPIO_WritePin(RV_LV_TIP_TO_GND_GPIO_Port, RV_LV_TIP_TO_GND_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(RV_LV_COIL_TO_GND_GPIO_Port, RV_LV_COIL_TO_GND_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(RV_LV_DIS_GPIO_Port, RV_LV_DIS_Pin, GPIO_PIN_SET); - HAL_GPIO_WritePin(RV_LV_SHOCK_GPIO_Port, RV_LV_SHOCK_Pin, GPIO_PIN_RESET); uint32_t shock_time = (uint32_t) (icd_str->lv_shock_time); - taskENTER_CRITICAL(); - delay_us((shock_time*125)/10); - taskEXIT_CRITICAL(); -// osDelay(1); - HAL_GPIO_WritePin(RV_LV_SHOCK_GPIO_Port, RV_LV_SHOCK_Pin, GPIO_PIN_SET); + __HAL_TIM_SET_COUNTER(&htim11, 0); + __HAL_TIM_SET_COMPARE(&htim11, TIM_CHANNEL_1, 30-shock_time); //установка задержки перед импульсом + TIM11->CR1 |= TIM_CR1_CEN; } break; //Релаксация tip и coil притянуты к земле @@ -1036,7 +1073,6 @@ void rv_lv_control(icd_str * icd_str,lv_sub_mode mode) HAL_GPIO_WritePin(RV_LV_TIP_TO_GND_GPIO_Port, RV_LV_TIP_TO_GND_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(RV_LV_COIL_TO_GND_GPIO_Port, RV_LV_COIL_TO_GND_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(RV_LV_DIS_GPIO_Port, RV_LV_DIS_Pin, GPIO_PIN_SET); - HAL_GPIO_WritePin(RV_LV_SHOCK_GPIO_Port, RV_LV_SHOCK_Pin, GPIO_PIN_SET); osDelay(20); } break; @@ -1046,7 +1082,6 @@ void rv_lv_control(icd_str * icd_str,lv_sub_mode mode) HAL_GPIO_WritePin(RV_LV_TIP_TO_GND_GPIO_Port, RV_LV_TIP_TO_GND_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(RV_LV_COIL_TO_GND_GPIO_Port, RV_LV_COIL_TO_GND_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(RV_LV_DIS_GPIO_Port, RV_LV_DIS_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(RV_LV_SHOCK_GPIO_Port, RV_LV_SHOCK_Pin, GPIO_PIN_SET); } break; } @@ -1084,3 +1119,11 @@ void hv_en_can(bool state) else HAL_GPIO_WritePin(HV_EN_CAN_GPIO_Port, HV_EN_CAN_Pin, GPIO_PIN_SET); } + +void delay_critical(uint8_t delay) +{ + uint32_t shock_time = (uint32_t) (delay); + taskENTER_CRITICAL(); + delay_us((shock_time*125)/10); + taskEXIT_CRITICAL(); +} diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/main.c b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/main.c index 77ca9b0..9e5a12a 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/main.c +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/main.c @@ -106,6 +106,7 @@ int main(void) MX_TIM9_Init(); MX_TIM14_Init(); MX_TIM6_Init(); + MX_TIM11_Init(); /* USER CODE BEGIN 2 */ hv_pwm(false); hv_power(false); @@ -141,6 +142,7 @@ int main(void) // Таймер Звука HAL_TIM_PWM_Start(&htim9, TIM_CHANNEL_2); // fixme добавить ещё таймеров + HAL_TIM_OnePulse_Start(&htim11, TIM_CHANNEL_1); //Включили питание АЦП HAL_GPIO_WritePin(INA_PWR_GPIO_Port, INA_PWR_Pin, SET); diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/parse.c b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/parse.c index afbe89a..fdd835d 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/parse.c +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/parse.c @@ -233,11 +233,24 @@ void parse_command(uint8_t* buf, icd_str * icd_str) } } break; - //bool LV_on //bool HV_on + //bool LV_on case 0x0E: { - // не стала делать, не используется же пока - + uint8_t idata = unpackUint8(&buf[2]); + if (check_uint8(idata, 0, 1)) + { + icd_str->LV_on = (bool) idata; + } + } + break; + //bool HV_on + case 0x0F: + { + uint8_t idata = unpackUint8(&buf[2]); + if (check_uint8(idata, 0, 1)) + { + icd_str->HV_on = (bool) idata; + } } break; diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/stm32f4xx_it.c b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/stm32f4xx_it.c index 0146683..1fdfa11 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/stm32f4xx_it.c +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/stm32f4xx_it.c @@ -269,5 +269,11 @@ void DMA2_Stream7_IRQHandler(void) } /* USER CODE BEGIN 1 */ - +//void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) +//{ +// if(htim->Instance == TIM11) +// { +// HAL_TIM_PWM_Stop_IT(&htim11, TIM_CHANNEL_1); +// } +//} /* USER CODE END 1 */ diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/tim.c b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/tim.c index 09ed69f..45a0a86 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/tim.c +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Core/Src/tim.c @@ -30,6 +30,7 @@ TIM_HandleTypeDef htim3; TIM_HandleTypeDef htim4; TIM_HandleTypeDef htim6; TIM_HandleTypeDef htim9; +TIM_HandleTypeDef htim11; TIM_HandleTypeDef htim14; /* TIM1 init function */ @@ -379,6 +380,51 @@ void MX_TIM9_Init(void) /* USER CODE END TIM9_Init 2 */ HAL_TIM_MspPostInit(&htim9); +} +/* TIM11 init function */ +void MX_TIM11_Init(void) +{ + + /* USER CODE BEGIN TIM11_Init 0 */ + + /* USER CODE END TIM11_Init 0 */ + + TIM_OC_InitTypeDef sConfigOC = {0}; + + /* USER CODE BEGIN TIM11_Init 1 */ + + /* USER CODE END TIM11_Init 1 */ + htim11.Instance = TIM11; + htim11.Init.Prescaler = 2399; + htim11.Init.CounterMode = TIM_COUNTERMODE_UP; + htim11.Init.Period = 29; + htim11.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim11.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim11) != HAL_OK) + { + Error_Handler(); + } + if (HAL_TIM_PWM_Init(&htim11) != HAL_OK) + { + Error_Handler(); + } + if (HAL_TIM_OnePulse_Init(&htim11, TIM_OPMODE_SINGLE) != HAL_OK) + { + Error_Handler(); + } + sConfigOC.OCMode = TIM_OCMODE_PWM2; + sConfigOC.Pulse = 0; + sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW; + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + if (HAL_TIM_PWM_ConfigChannel(&htim11, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM11_Init 2 */ + + /* USER CODE END TIM11_Init 2 */ + HAL_TIM_MspPostInit(&htim11); + } /* TIM14 init function */ void MX_TIM14_Init(void) @@ -480,6 +526,17 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) /* USER CODE END TIM9_MspInit 1 */ } + else if(tim_baseHandle->Instance==TIM11) + { + /* USER CODE BEGIN TIM11_MspInit 0 */ + + /* USER CODE END TIM11_MspInit 0 */ + /* TIM11 clock enable */ + __HAL_RCC_TIM11_CLK_ENABLE(); + /* USER CODE BEGIN TIM11_MspInit 1 */ + + /* USER CODE END TIM11_MspInit 1 */ + } else if(tim_baseHandle->Instance==TIM14) { /* USER CODE BEGIN TIM14_MspInit 0 */ @@ -616,6 +673,27 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle) /* USER CODE END TIM9_MspPostInit 1 */ } + else if(timHandle->Instance==TIM11) + { + /* USER CODE BEGIN TIM11_MspPostInit 0 */ + + /* USER CODE END TIM11_MspPostInit 0 */ + + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**TIM11 GPIO Configuration + PB9 ------> TIM11_CH1 + */ + GPIO_InitStruct.Pin = RV_LV_SHOCK_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM; + GPIO_InitStruct.Alternate = GPIO_AF3_TIM11; + HAL_GPIO_Init(RV_LV_SHOCK_GPIO_Port, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM11_MspPostInit 1 */ + + /* USER CODE END TIM11_MspPostInit 1 */ + } } @@ -691,6 +769,17 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle) /* USER CODE END TIM9_MspDeInit 1 */ } + else if(tim_baseHandle->Instance==TIM11) + { + /* USER CODE BEGIN TIM11_MspDeInit 0 */ + + /* USER CODE END TIM11_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM11_CLK_DISABLE(); + /* USER CODE BEGIN TIM11_MspDeInit 1 */ + + /* USER CODE END TIM11_MspDeInit 1 */ + } else if(tim_baseHandle->Instance==TIM14) { /* USER CODE BEGIN TIM14_MspDeInit 0 */ diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/adc.o b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/adc.o index fdeada0..2a28048 100644 Binary files a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/adc.o and b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/adc.o differ diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/control.o b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/control.o index e358897..7ff762c 100644 Binary files a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/control.o and b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/control.o differ diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/freertos.cyclo b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/freertos.cyclo index 3bcb148..9a0fec5 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/freertos.cyclo +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/freertos.cyclo @@ -4,4 +4,4 @@ ../Core/Src/freertos.c:191:6:StartOprosTask 6 ../Core/Src/freertos.c:229:6:StartControlTask 1 ../Core/Src/freertos.c:248:6:StartLowSpeedTask 2 -../Core/Src/freertos.c:276:6:StartButTask 3 +../Core/Src/freertos.c:276:6:StartButTask 5 diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/freertos.o b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/freertos.o index 71ded48..64fbf64 100644 Binary files a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/freertos.o and b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/freertos.o differ diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/gpio.o b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/gpio.o index 5e74a2a..428464c 100644 Binary files a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/gpio.o and b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/gpio.o differ diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/icd.cyclo b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/icd.cyclo index 4b987f4..8c3bfdf 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/icd.cyclo +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/icd.cyclo @@ -1,35 +1,36 @@ -../Core/Src/icd.c:12:6:init_icd 1 -../Core/Src/icd.c:126:7:my_abs 2 -../Core/Src/icd.c:132:6:mode_start 2 -../Core/Src/icd.c:144:6:get_data 2 -../Core/Src/icd.c:158:6:get_data_max30003 1 -../Core/Src/icd.c:169:6:check_mode_len 4 -../Core/Src/icd.c:199:6:check_tres 11 -../Core/Src/icd.c:249:6:search_alg 27 -../Core/Src/icd.c:386:10:moving_avarage 3 -../Core/Src/icd.c:405:6:basket_alg 8 -../Core/Src/icd.c:445:6:terapy_start 2 -../Core/Src/icd.c:456:6:hv_pwm 2 -../Core/Src/icd.c:475:6:hv_sound 2 -../Core/Src/icd.c:492:6:hv_charge 4 -../Core/Src/icd.c:558:6:hv_shock 2 -../Core/Src/icd.c:584:6:quick_analyse 4 -../Core/Src/icd.c:624:6:fibr_terapy 6 -../Core/Src/icd.c:696:6:terapy_algorithm 7 -../Core/Src/icd.c:751:6:relay_all_control 1 -../Core/Src/icd.c:758:6:relay_ra_control 2 -../Core/Src/icd.c:767:6:relay_rv_control 2 -../Core/Src/icd.c:775:6:relay_can_control 2 -../Core/Src/icd.c:784:6:hv_ll_control 1 -../Core/Src/icd.c:792:6:hv_power 2 -../Core/Src/icd.c:807:6:hv_ll_rv_control 3 -../Core/Src/icd.c:830:6:hv_ll_scv_control 3 -../Core/Src/icd.c:853:6:hv_ll_can_control 3 -../Core/Src/icd.c:877:6:hv_discharge 2 -../Core/Src/icd.c:894:6:ll_bi_dis 1 -../Core/Src/icd.c:923:6:ra_lv_control 6 -../Core/Src/icd.c:986:6:rv_lv_control 6 -../Core/Src/icd.c:1056:6:hv_en_control 1 -../Core/Src/icd.c:1064:6:hv_en_rv 2 -../Core/Src/icd.c:1072:6:hv_en_scv 2 -../Core/Src/icd.c:1080:6:hv_en_can 2 +../Core/Src/icd.c:13:6:init_icd 1 +../Core/Src/icd.c:137:7:my_abs 2 +../Core/Src/icd.c:143:6:mode_start 2 +../Core/Src/icd.c:155:6:get_data 2 +../Core/Src/icd.c:169:6:get_data_max30003 1 +../Core/Src/icd.c:180:6:check_mode_len 4 +../Core/Src/icd.c:210:6:check_tres 11 +../Core/Src/icd.c:260:6:search_alg 27 +../Core/Src/icd.c:397:10:moving_avarage 3 +../Core/Src/icd.c:416:6:basket_alg 8 +../Core/Src/icd.c:456:6:terapy_start 2 +../Core/Src/icd.c:467:6:hv_pwm 2 +../Core/Src/icd.c:486:6:hv_sound 2 +../Core/Src/icd.c:503:6:hv_charge 5 +../Core/Src/icd.c:569:6:hv_shock 2 +../Core/Src/icd.c:595:6:quick_analyse 4 +../Core/Src/icd.c:635:6:fibr_terapy 6 +../Core/Src/icd.c:707:6:terapy_algorithm 9 +../Core/Src/icd.c:767:6:relay_all_control 1 +../Core/Src/icd.c:774:6:relay_ra_control 2 +../Core/Src/icd.c:783:6:relay_rv_control 2 +../Core/Src/icd.c:791:6:relay_can_control 2 +../Core/Src/icd.c:800:6:hv_ll_control 1 +../Core/Src/icd.c:808:6:hv_power 2 +../Core/Src/icd.c:823:6:hv_ll_rv_control 3 +../Core/Src/icd.c:846:6:hv_ll_scv_control 3 +../Core/Src/icd.c:869:6:hv_ll_can_control 3 +../Core/Src/icd.c:893:6:hv_discharge 2 +../Core/Src/icd.c:908:6:ll_bi_shock_param 2 +../Core/Src/icd.c:965:6:ra_lv_control 6 +../Core/Src/icd.c:1028:6:rv_lv_control 6 +../Core/Src/icd.c:1091:6:hv_en_control 1 +../Core/Src/icd.c:1099:6:hv_en_rv 2 +../Core/Src/icd.c:1107:6:hv_en_scv 2 +../Core/Src/icd.c:1115:6:hv_en_can 2 +../Core/Src/icd.c:1123:6:delay_critical 1 diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/icd.o b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/icd.o index 7e3e632..35d1dc9 100644 Binary files a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/icd.o and b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/icd.o differ diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/icd.su b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/icd.su index 14d689f..10b83bf 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/icd.su +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/icd.su @@ -1,35 +1,36 @@ -../Core/Src/icd.c:12:6:init_icd 16 static -../Core/Src/icd.c:126:7:my_abs 16 static -../Core/Src/icd.c:132:6:mode_start 16 static -../Core/Src/icd.c:144:6:get_data 32 static -../Core/Src/icd.c:158:6:get_data_max30003 32 static -../Core/Src/icd.c:169:6:check_mode_len 16 static -../Core/Src/icd.c:199:6:check_tres 16 static -../Core/Src/icd.c:249:6:search_alg 16 static -../Core/Src/icd.c:386:10:moving_avarage 24 static -../Core/Src/icd.c:405:6:basket_alg 16 static -../Core/Src/icd.c:445:6:terapy_start 16 static -../Core/Src/icd.c:456:6:hv_pwm 16 static -../Core/Src/icd.c:475:6:hv_sound 16 static -../Core/Src/icd.c:492:6:hv_charge 32 static -../Core/Src/icd.c:558:6:hv_shock 16 static -../Core/Src/icd.c:584:6:quick_analyse 16 static -../Core/Src/icd.c:624:6:fibr_terapy 16 static -../Core/Src/icd.c:696:6:terapy_algorithm 16 static -../Core/Src/icd.c:751:6:relay_all_control 16 static -../Core/Src/icd.c:758:6:relay_ra_control 16 static -../Core/Src/icd.c:767:6:relay_rv_control 16 static -../Core/Src/icd.c:775:6:relay_can_control 16 static -../Core/Src/icd.c:784:6:hv_ll_control 16 static -../Core/Src/icd.c:792:6:hv_power 16 static -../Core/Src/icd.c:807:6:hv_ll_rv_control 16 static -../Core/Src/icd.c:830:6:hv_ll_scv_control 16 static -../Core/Src/icd.c:853:6:hv_ll_can_control 16 static -../Core/Src/icd.c:877:6:hv_discharge 16 static -../Core/Src/icd.c:894:6:ll_bi_dis 8 static -../Core/Src/icd.c:923:6:ra_lv_control 16 static -../Core/Src/icd.c:986:6:rv_lv_control 24 static -../Core/Src/icd.c:1056:6:hv_en_control 16 static -../Core/Src/icd.c:1064:6:hv_en_rv 16 static -../Core/Src/icd.c:1072:6:hv_en_scv 16 static -../Core/Src/icd.c:1080:6:hv_en_can 16 static +../Core/Src/icd.c:13:6:init_icd 16 static +../Core/Src/icd.c:137:7:my_abs 16 static +../Core/Src/icd.c:143:6:mode_start 16 static +../Core/Src/icd.c:155:6:get_data 32 static +../Core/Src/icd.c:169:6:get_data_max30003 32 static +../Core/Src/icd.c:180:6:check_mode_len 16 static +../Core/Src/icd.c:210:6:check_tres 16 static +../Core/Src/icd.c:260:6:search_alg 16 static +../Core/Src/icd.c:397:10:moving_avarage 24 static +../Core/Src/icd.c:416:6:basket_alg 16 static +../Core/Src/icd.c:456:6:terapy_start 16 static +../Core/Src/icd.c:467:6:hv_pwm 16 static +../Core/Src/icd.c:486:6:hv_sound 16 static +../Core/Src/icd.c:503:6:hv_charge 32 static +../Core/Src/icd.c:569:6:hv_shock 16 static +../Core/Src/icd.c:595:6:quick_analyse 16 static +../Core/Src/icd.c:635:6:fibr_terapy 16 static +../Core/Src/icd.c:707:6:terapy_algorithm 16 static +../Core/Src/icd.c:767:6:relay_all_control 16 static +../Core/Src/icd.c:774:6:relay_ra_control 16 static +../Core/Src/icd.c:783:6:relay_rv_control 16 static +../Core/Src/icd.c:791:6:relay_can_control 16 static +../Core/Src/icd.c:800:6:hv_ll_control 16 static +../Core/Src/icd.c:808:6:hv_power 16 static +../Core/Src/icd.c:823:6:hv_ll_rv_control 16 static +../Core/Src/icd.c:846:6:hv_ll_scv_control 16 static +../Core/Src/icd.c:869:6:hv_ll_can_control 16 static +../Core/Src/icd.c:893:6:hv_discharge 16 static +../Core/Src/icd.c:908:6:ll_bi_shock_param 24 static +../Core/Src/icd.c:965:6:ra_lv_control 16 static +../Core/Src/icd.c:1028:6:rv_lv_control 24 static +../Core/Src/icd.c:1091:6:hv_en_control 16 static +../Core/Src/icd.c:1099:6:hv_en_rv 16 static +../Core/Src/icd.c:1107:6:hv_en_scv 16 static +../Core/Src/icd.c:1115:6:hv_en_can 16 static +../Core/Src/icd.c:1123:6:delay_critical 24 static diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/main.cyclo b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/main.cyclo index 7f23d50..cb91597 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/main.cyclo +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/main.cyclo @@ -1,5 +1,5 @@ ../Core/Src/main.c:72:5:main 1 -../Core/Src/main.c:174:6:SystemClock_Config 3 -../Core/Src/main.c:228:6:HAL_TIM_PeriodElapsedCallback 2 -../Core/Src/main.c:245:6:Error_Handler 1 -../Core/Src/main.c:264:6:assert_failed 1 +../Core/Src/main.c:176:6:SystemClock_Config 3 +../Core/Src/main.c:230:6:HAL_TIM_PeriodElapsedCallback 2 +../Core/Src/main.c:247:6:Error_Handler 1 +../Core/Src/main.c:266:6:assert_failed 1 diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/main.o b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/main.o index ff87fc6..4207cb1 100644 Binary files a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/main.o and b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/main.o differ diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/main.su b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/main.su index 6209471..4a1a880 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/main.su +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/main.su @@ -1,5 +1,5 @@ ../Core/Src/main.c:72:5:main 8 static -../Core/Src/main.c:174:6:SystemClock_Config 88 static -../Core/Src/main.c:228:6:HAL_TIM_PeriodElapsedCallback 16 static -../Core/Src/main.c:245:6:Error_Handler 4 static,ignoring_inline_asm -../Core/Src/main.c:264:6:assert_failed 16 static +../Core/Src/main.c:176:6:SystemClock_Config 88 static +../Core/Src/main.c:230:6:HAL_TIM_PeriodElapsedCallback 16 static +../Core/Src/main.c:247:6:Error_Handler 4 static,ignoring_inline_asm +../Core/Src/main.c:266:6:assert_failed 16 static diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/parse.cyclo b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/parse.cyclo index dab5be5..53717af 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/parse.cyclo +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/parse.cyclo @@ -7,4 +7,4 @@ ../Core/Src/parse.c:48:6:check_uint8 3 ../Core/Src/parse.c:57:10:unpackUint32 1 ../Core/Src/parse.c:68:6:check_uint32 3 -../Core/Src/parse.c:77:6:parse_command 96 +../Core/Src/parse.c:77:6:parse_command 100 diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/parse.o b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/parse.o index 61cb68e..d43b7a6 100644 Binary files a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/parse.o and b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/parse.o differ diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/stm32f4xx_it.o b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/stm32f4xx_it.o index 3064a6a..e83db3a 100644 Binary files a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/stm32f4xx_it.o and b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/stm32f4xx_it.o differ diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/tim.cyclo b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/tim.cyclo index 68056f3..29cb197 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/tim.cyclo +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/tim.cyclo @@ -1,10 +1,11 @@ -../Core/Src/tim.c:36:6:MX_TIM1_Init 10 -../Core/Src/tim.c:118:6:MX_TIM2_Init 8 -../Core/Src/tim.c:180:6:MX_TIM3_Init 8 -../Core/Src/tim.c:242:6:MX_TIM4_Init 8 -../Core/Src/tim.c:304:6:MX_TIM6_Init 3 -../Core/Src/tim.c:337:6:MX_TIM9_Init 5 -../Core/Src/tim.c:384:6:MX_TIM14_Init 2 -../Core/Src/tim.c:410:6:HAL_TIM_Base_MspInit 8 -../Core/Src/tim.c:495:6:HAL_TIM_MspPostInit 6 -../Core/Src/tim.c:622:6:HAL_TIM_Base_MspDeInit 8 +../Core/Src/tim.c:37:6:MX_TIM1_Init 10 +../Core/Src/tim.c:119:6:MX_TIM2_Init 8 +../Core/Src/tim.c:181:6:MX_TIM3_Init 8 +../Core/Src/tim.c:243:6:MX_TIM4_Init 8 +../Core/Src/tim.c:305:6:MX_TIM6_Init 3 +../Core/Src/tim.c:338:6:MX_TIM9_Init 5 +../Core/Src/tim.c:385:6:MX_TIM11_Init 5 +../Core/Src/tim.c:430:6:MX_TIM14_Init 2 +../Core/Src/tim.c:456:6:HAL_TIM_Base_MspInit 9 +../Core/Src/tim.c:552:6:HAL_TIM_MspPostInit 7 +../Core/Src/tim.c:700:6:HAL_TIM_Base_MspDeInit 9 diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/tim.o b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/tim.o index 3715a01..212ac4c 100644 Binary files a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/tim.o and b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/tim.o differ diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/tim.su b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/tim.su index 391d0a2..ce681d3 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/tim.su +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/tim.su @@ -1,10 +1,11 @@ -../Core/Src/tim.c:36:6:MX_TIM1_Init 96 static -../Core/Src/tim.c:118:6:MX_TIM2_Init 64 static -../Core/Src/tim.c:180:6:MX_TIM3_Init 64 static -../Core/Src/tim.c:242:6:MX_TIM4_Init 64 static -../Core/Src/tim.c:304:6:MX_TIM6_Init 16 static -../Core/Src/tim.c:337:6:MX_TIM9_Init 56 static -../Core/Src/tim.c:384:6:MX_TIM14_Init 8 static -../Core/Src/tim.c:410:6:HAL_TIM_Base_MspInit 48 static -../Core/Src/tim.c:495:6:HAL_TIM_MspPostInit 56 static -../Core/Src/tim.c:622:6:HAL_TIM_Base_MspDeInit 16 static +../Core/Src/tim.c:37:6:MX_TIM1_Init 96 static +../Core/Src/tim.c:119:6:MX_TIM2_Init 64 static +../Core/Src/tim.c:181:6:MX_TIM3_Init 64 static +../Core/Src/tim.c:243:6:MX_TIM4_Init 64 static +../Core/Src/tim.c:305:6:MX_TIM6_Init 16 static +../Core/Src/tim.c:338:6:MX_TIM9_Init 56 static +../Core/Src/tim.c:385:6:MX_TIM11_Init 40 static +../Core/Src/tim.c:430:6:MX_TIM14_Init 8 static +../Core/Src/tim.c:456:6:HAL_TIM_Base_MspInit 48 static +../Core/Src/tim.c:552:6:HAL_TIM_MspPostInit 64 static +../Core/Src/tim.c:700:6:HAL_TIM_Base_MspDeInit 16 static diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/usart.o b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/usart.o index 8ca3202..fc6dc47 100644 Binary files a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/usart.o and b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/Core/Src/usart.o differ diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/ICD_0.1_100pin_07082025.elf b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/ICD_0.1_100pin_07082025.elf index fdc31e1..14d45de 100644 Binary files a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/ICD_0.1_100pin_07082025.elf and b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/ICD_0.1_100pin_07082025.elf differ diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/ICD_0.1_100pin_07082025.list b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/ICD_0.1_100pin_07082025.list index fab46af..2c1d9c0 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/ICD_0.1_100pin_07082025.list +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/ICD_0.1_100pin_07082025.list @@ -5,47 +5,47 @@ Sections: Idx Name Size VMA LMA File off Algn 0 .isr_vector 000001d8 08000000 08000000 00001000 2**0 CONTENTS, ALLOC, LOAD, READONLY, DATA - 1 .text 0000e3a4 080001e0 080001e0 000011e0 2**4 + 1 .text 0000e914 080001e0 080001e0 000011e0 2**4 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .rodata 00000490 0800e584 0800e584 0000f584 2**2 + 2 .rodata 00000490 0800eaf4 0800eaf4 0000faf4 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 3 .ARM.extab 00000000 0800ea14 0800ea14 00010070 2**0 + 3 .ARM.extab 00000000 0800ef84 0800ef84 00010070 2**0 CONTENTS - 4 .ARM 00000008 0800ea14 0800ea14 0000fa14 2**2 + 4 .ARM 00000008 0800ef84 0800ef84 0000ff84 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 5 .preinit_array 00000000 0800ea1c 0800ea1c 00010070 2**0 + 5 .preinit_array 00000000 0800ef8c 0800ef8c 00010070 2**0 CONTENTS, ALLOC, LOAD, DATA - 6 .init_array 00000004 0800ea1c 0800ea1c 0000fa1c 2**2 + 6 .init_array 00000004 0800ef8c 0800ef8c 0000ff8c 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 7 .fini_array 00000004 0800ea20 0800ea20 0000fa20 2**2 + 7 .fini_array 00000004 0800ef90 0800ef90 0000ff90 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 8 .data 00000070 20000000 0800ea24 00010000 2**3 + 8 .data 00000070 20000000 0800ef94 00010000 2**3 CONTENTS, ALLOC, LOAD, DATA - 9 .bss 00011148 20000070 0800ea94 00010070 2**2 + 9 .bss 00011190 20000070 0800f004 00010070 2**2 ALLOC - 10 ._user_heap_stack 00001e00 200111b8 0800ea94 000101b8 2**0 + 10 ._user_heap_stack 00001e00 20011200 0800f004 00010200 2**0 ALLOC 11 .ARM.attributes 00000030 00000000 00000000 00010070 2**0 CONTENTS, READONLY - 12 .debug_info 0001f496 00000000 00000000 000100a0 2**0 + 12 .debug_info 0001fab7 00000000 00000000 000100a0 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 13 .debug_abbrev 00004a99 00000000 00000000 0002f536 2**0 + 13 .debug_abbrev 00004ab7 00000000 00000000 0002fb57 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 14 .debug_aranges 000018a8 00000000 00000000 00033fd0 2**3 + 14 .debug_aranges 000018b8 00000000 00000000 00034610 2**3 CONTENTS, READONLY, DEBUGGING, OCTETS - 15 .debug_rnglists 0000130e 00000000 00000000 00035878 2**0 + 15 .debug_rnglists 0000131c 00000000 00000000 00035ec8 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 16 .debug_macro 000270df 00000000 00000000 00036b86 2**0 + 16 .debug_macro 000270e5 00000000 00000000 000371e4 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 17 .debug_line 000243e9 00000000 00000000 0005dc65 2**0 + 17 .debug_line 00024537 00000000 00000000 0005e2c9 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 18 .debug_str 000e79a1 00000000 00000000 0008204e 2**0 + 18 .debug_str 000e79e4 00000000 00000000 00082800 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 19 .comment 00000043 00000000 00000000 001699ef 2**0 + 19 .comment 00000043 00000000 00000000 0016a1e4 2**0 CONTENTS, READONLY - 20 .debug_frame 00006bd8 00000000 00000000 00169a34 2**2 + 20 .debug_frame 00006c28 00000000 00000000 0016a228 2**2 CONTENTS, READONLY, DEBUGGING, OCTETS - 21 .debug_line_str 00000070 00000000 00000000 0017060c 2**0 + 21 .debug_line_str 00000070 00000000 00000000 00170e50 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS Disassembly of section .text: @@ -64,7 +64,7 @@ Disassembly of section .text: 80001f6: bd10 pop {r4, pc} 80001f8: 20000070 .word 0x20000070 80001fc: 00000000 .word 0x00000000 - 8000200: 0800e56c .word 0x0800e56c + 8000200: 0800eadc .word 0x0800eadc 08000204 : 8000204: b508 push {r3, lr} @@ -76,7 +76,7 @@ Disassembly of section .text: 8000212: bd08 pop {r3, pc} 8000214: 00000000 .word 0x00000000 8000218: 20000074 .word 0x20000074 - 800021c: 0800e56c .word 0x0800e56c + 800021c: 0800eadc .word 0x0800eadc 08000220 : 8000220: 4603 mov r3, r0 @@ -1325,13 +1325,13 @@ void MX_ADC1_Init(void) 8000fda: 615a str r2, [r3, #20] if (HAL_ADC_Init(&hadc1) != HAL_OK) 8000fdc: 483e ldr r0, [pc, #248] @ (80010d8 ) - 8000fde: f004 fd67 bl 8005ab0 + 8000fde: f004 fe91 bl 8005d04 8000fe2: 4603 mov r3, r0 8000fe4: 2b00 cmp r3, #0 8000fe6: d001 beq.n 8000fec { Error_Handler(); - 8000fe8: f002 f8be bl 8003168 + 8000fe8: f002 f91a bl 8003220 } /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. @@ -1349,13 +1349,13 @@ void MX_ADC1_Init(void) 8000ff8: 463b mov r3, r7 8000ffa: 4619 mov r1, r3 8000ffc: 4836 ldr r0, [pc, #216] @ (80010d8 ) - 8000ffe: f005 f865 bl 80060cc + 8000ffe: f005 f98f bl 8006320 8001002: 4603 mov r3, r0 8001004: 2b00 cmp r3, #0 8001006: d001 beq.n 800100c { Error_Handler(); - 8001008: f002 f8ae bl 8003168 + 8001008: f002 f90a bl 8003220 } /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. @@ -1370,13 +1370,13 @@ void MX_ADC1_Init(void) 8001014: 463b mov r3, r7 8001016: 4619 mov r1, r3 8001018: 482f ldr r0, [pc, #188] @ (80010d8 ) - 800101a: f005 f857 bl 80060cc + 800101a: f005 f981 bl 8006320 800101e: 4603 mov r3, r0 8001020: 2b00 cmp r3, #0 8001022: d001 beq.n 8001028 { Error_Handler(); - 8001024: f002 f8a0 bl 8003168 + 8001024: f002 f8fc bl 8003220 } /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. @@ -1391,13 +1391,13 @@ void MX_ADC1_Init(void) 8001030: 463b mov r3, r7 8001032: 4619 mov r1, r3 8001034: 4828 ldr r0, [pc, #160] @ (80010d8 ) - 8001036: f005 f849 bl 80060cc + 8001036: f005 f973 bl 8006320 800103a: 4603 mov r3, r0 800103c: 2b00 cmp r3, #0 800103e: d001 beq.n 8001044 { Error_Handler(); - 8001040: f002 f892 bl 8003168 + 8001040: f002 f8ee bl 8003220 } /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. @@ -1412,13 +1412,13 @@ void MX_ADC1_Init(void) 800104c: 463b mov r3, r7 800104e: 4619 mov r1, r3 8001050: 4821 ldr r0, [pc, #132] @ (80010d8 ) - 8001052: f005 f83b bl 80060cc + 8001052: f005 f965 bl 8006320 8001056: 4603 mov r3, r0 8001058: 2b00 cmp r3, #0 800105a: d001 beq.n 8001060 { Error_Handler(); - 800105c: f002 f884 bl 8003168 + 800105c: f002 f8e0 bl 8003220 } /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. @@ -1433,13 +1433,13 @@ void MX_ADC1_Init(void) 8001068: 463b mov r3, r7 800106a: 4619 mov r1, r3 800106c: 481a ldr r0, [pc, #104] @ (80010d8 ) - 800106e: f005 f82d bl 80060cc + 800106e: f005 f957 bl 8006320 8001072: 4603 mov r3, r0 8001074: 2b00 cmp r3, #0 8001076: d001 beq.n 800107c { Error_Handler(); - 8001078: f002 f876 bl 8003168 + 8001078: f002 f8d2 bl 8003220 } /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. @@ -1454,13 +1454,13 @@ void MX_ADC1_Init(void) 8001084: 463b mov r3, r7 8001086: 4619 mov r1, r3 8001088: 4813 ldr r0, [pc, #76] @ (80010d8 ) - 800108a: f005 f81f bl 80060cc + 800108a: f005 f949 bl 8006320 800108e: 4603 mov r3, r0 8001090: 2b00 cmp r3, #0 8001092: d001 beq.n 8001098 { Error_Handler(); - 8001094: f002 f868 bl 8003168 + 8001094: f002 f8c4 bl 8003220 } /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. @@ -1475,13 +1475,13 @@ void MX_ADC1_Init(void) 80010a0: 463b mov r3, r7 80010a2: 4619 mov r1, r3 80010a4: 480c ldr r0, [pc, #48] @ (80010d8 ) - 80010a6: f005 f811 bl 80060cc + 80010a6: f005 f93b bl 8006320 80010aa: 4603 mov r3, r0 80010ac: 2b00 cmp r3, #0 80010ae: d001 beq.n 80010b4 { Error_Handler(); - 80010b0: f002 f85a bl 8003168 + 80010b0: f002 f8b6 bl 8003220 } /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. @@ -1496,13 +1496,13 @@ void MX_ADC1_Init(void) 80010bc: 463b mov r3, r7 80010be: 4619 mov r1, r3 80010c0: 4805 ldr r0, [pc, #20] @ (80010d8 ) - 80010c2: f005 f803 bl 80060cc + 80010c2: f005 f92d bl 8006320 80010c6: 4603 mov r3, r0 80010c8: 2b00 cmp r3, #0 80010ca: d001 beq.n 80010d0 { Error_Handler(); - 80010cc: f002 f84c bl 8003168 + 80010cc: f002 f8a8 bl 8003220 } /* USER CODE BEGIN ADC1_Init 2 */ @@ -1604,7 +1604,7 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle) 8001166: f107 0314 add.w r3, r7, #20 800116a: 4619 mov r1, r3 800116c: 480b ldr r0, [pc, #44] @ (800119c ) - 800116e: f006 f8e5 bl 800733c + 800116e: f006 fa0f bl 8007590 GPIO_InitStruct.Pin = RA_ADC_Pin|RV_ADC_Pin|LV_ADC_Pin; 8001172: 2370 movs r3, #112 @ 0x70 @@ -1619,7 +1619,7 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle) 800117e: f107 0314 add.w r3, r7, #20 8001182: 4619 mov r1, r3 8001184: 4806 ldr r0, [pc, #24] @ (80011a0 ) - 8001186: f006 f8d9 bl 800733c + 8001186: f006 fa03 bl 8007590 /* USER CODE BEGIN ADC1_MspInit 1 */ @@ -1695,161 +1695,161 @@ void adc_read(adc_struct* adc) 80011ec: af00 add r7, sp, #0 80011ee: 6078 str r0, [r7, #4] adc->error = HAL_ADC_Start(&hadc1); - 80011f0: 4875 ldr r0, [pc, #468] @ (80013c8 ) - 80011f2: f004 fdbb bl 8005d6c + 80011f0: 4874 ldr r0, [pc, #464] @ (80013c4 ) + 80011f2: f004 fee5 bl 8005fc0 80011f6: 4603 mov r3, r0 80011f8: 461a mov r2, r3 80011fa: 687b ldr r3, [r7, #4] 80011fc: 701a strb r2, [r3, #0] adc->error = HAL_ADC_PollForConversion(&hadc1, 1); 80011fe: 2101 movs r1, #1 - 8001200: 4871 ldr r0, [pc, #452] @ (80013c8 ) - 8001202: f004 fecb bl 8005f9c + 8001200: 4870 ldr r0, [pc, #448] @ (80013c4 ) + 8001202: f004 fff5 bl 80061f0 8001206: 4603 mov r3, r0 8001208: 461a mov r2, r3 800120a: 687b ldr r3, [r7, #4] 800120c: 701a strb r2, [r3, #0] adc->ecg_1_raw = HAL_ADC_GetValue(&hadc1);//Небольшой псевдо фильтр цифровой K - 0.1 - 800120e: 486e ldr r0, [pc, #440] @ (80013c8 ) - 8001210: f004 ff4f bl 80060b2 + 800120e: 486d ldr r0, [pc, #436] @ (80013c4 ) + 8001210: f005 f879 bl 8006306 8001214: 4603 mov r3, r0 8001216: b29a uxth r2, r3 8001218: 687b ldr r3, [r7, #4] 800121a: 805a strh r2, [r3, #2] adc->error = HAL_ADC_Start(&hadc1); - 800121c: 486a ldr r0, [pc, #424] @ (80013c8 ) - 800121e: f004 fda5 bl 8005d6c + 800121c: 4869 ldr r0, [pc, #420] @ (80013c4 ) + 800121e: f004 fecf bl 8005fc0 8001222: 4603 mov r3, r0 8001224: 461a mov r2, r3 8001226: 687b ldr r3, [r7, #4] 8001228: 701a strb r2, [r3, #0] adc->error = HAL_ADC_PollForConversion(&hadc1, 1); 800122a: 2101 movs r1, #1 - 800122c: 4866 ldr r0, [pc, #408] @ (80013c8 ) - 800122e: f004 feb5 bl 8005f9c + 800122c: 4865 ldr r0, [pc, #404] @ (80013c4 ) + 800122e: f004 ffdf bl 80061f0 8001232: 4603 mov r3, r0 8001234: 461a mov r2, r3 8001236: 687b ldr r3, [r7, #4] 8001238: 701a strb r2, [r3, #0] adc->ecg_2_raw = HAL_ADC_GetValue(&hadc1); - 800123a: 4863 ldr r0, [pc, #396] @ (80013c8 ) - 800123c: f004 ff39 bl 80060b2 + 800123a: 4862 ldr r0, [pc, #392] @ (80013c4 ) + 800123c: f005 f863 bl 8006306 8001240: 4603 mov r3, r0 8001242: b29a uxth r2, r3 8001244: 687b ldr r3, [r7, #4] 8001246: 809a strh r2, [r3, #4] adc->error = HAL_ADC_Start(&hadc1); - 8001248: 485f ldr r0, [pc, #380] @ (80013c8 ) - 800124a: f004 fd8f bl 8005d6c + 8001248: 485e ldr r0, [pc, #376] @ (80013c4 ) + 800124a: f004 feb9 bl 8005fc0 800124e: 4603 mov r3, r0 8001250: 461a mov r2, r3 8001252: 687b ldr r3, [r7, #4] 8001254: 701a strb r2, [r3, #0] adc->error = HAL_ADC_PollForConversion(&hadc1, 1); 8001256: 2101 movs r1, #1 - 8001258: 485b ldr r0, [pc, #364] @ (80013c8 ) - 800125a: f004 fe9f bl 8005f9c + 8001258: 485a ldr r0, [pc, #360] @ (80013c4 ) + 800125a: f004 ffc9 bl 80061f0 800125e: 4603 mov r3, r0 8001260: 461a mov r2, r3 8001262: 687b ldr r3, [r7, #4] 8001264: 701a strb r2, [r3, #0] adc->ecg_3_raw = HAL_ADC_GetValue(&hadc1); - 8001266: 4858 ldr r0, [pc, #352] @ (80013c8 ) - 8001268: f004 ff23 bl 80060b2 + 8001266: 4857 ldr r0, [pc, #348] @ (80013c4 ) + 8001268: f005 f84d bl 8006306 800126c: 4603 mov r3, r0 800126e: b29a uxth r2, r3 8001270: 687b ldr r3, [r7, #4] 8001272: 80da strh r2, [r3, #6] adc->error = HAL_ADC_Start(&hadc1); - 8001274: 4854 ldr r0, [pc, #336] @ (80013c8 ) - 8001276: f004 fd79 bl 8005d6c + 8001274: 4853 ldr r0, [pc, #332] @ (80013c4 ) + 8001276: f004 fea3 bl 8005fc0 800127a: 4603 mov r3, r0 800127c: 461a mov r2, r3 800127e: 687b ldr r3, [r7, #4] 8001280: 701a strb r2, [r3, #0] adc->error = HAL_ADC_PollForConversion(&hadc1, 1); 8001282: 2101 movs r1, #1 - 8001284: 4850 ldr r0, [pc, #320] @ (80013c8 ) - 8001286: f004 fe89 bl 8005f9c + 8001284: 484f ldr r0, [pc, #316] @ (80013c4 ) + 8001286: f004 ffb3 bl 80061f0 800128a: 4603 mov r3, r0 800128c: 461a mov r2, r3 800128e: 687b ldr r3, [r7, #4] 8001290: 701a strb r2, [r3, #0] adc->rv_comp_raw = HAL_ADC_GetValue(&hadc1);//Небольшой псевдо фильтр цифровой K - 0.1 - 8001292: 484d ldr r0, [pc, #308] @ (80013c8 ) - 8001294: f004 ff0d bl 80060b2 + 8001292: 484c ldr r0, [pc, #304] @ (80013c4 ) + 8001294: f005 f837 bl 8006306 8001298: 4603 mov r3, r0 800129a: b29a uxth r2, r3 800129c: 687b ldr r3, [r7, #4] 800129e: 825a strh r2, [r3, #18] adc->error = HAL_ADC_Start(&hadc1); - 80012a0: 4849 ldr r0, [pc, #292] @ (80013c8 ) - 80012a2: f004 fd63 bl 8005d6c + 80012a0: 4848 ldr r0, [pc, #288] @ (80013c4 ) + 80012a2: f004 fe8d bl 8005fc0 80012a6: 4603 mov r3, r0 80012a8: 461a mov r2, r3 80012aa: 687b ldr r3, [r7, #4] 80012ac: 701a strb r2, [r3, #0] adc->error = HAL_ADC_PollForConversion(&hadc1, 1); 80012ae: 2101 movs r1, #1 - 80012b0: 4845 ldr r0, [pc, #276] @ (80013c8 ) - 80012b2: f004 fe73 bl 8005f9c + 80012b0: 4844 ldr r0, [pc, #272] @ (80013c4 ) + 80012b2: f004 ff9d bl 80061f0 80012b6: 4603 mov r3, r0 80012b8: 461a mov r2, r3 80012ba: 687b ldr r3, [r7, #4] 80012bc: 701a strb r2, [r3, #0] adc->ra_comp_raw = HAL_ADC_GetValue(&hadc1); - 80012be: 4842 ldr r0, [pc, #264] @ (80013c8 ) - 80012c0: f004 fef7 bl 80060b2 + 80012be: 4841 ldr r0, [pc, #260] @ (80013c4 ) + 80012c0: f005 f821 bl 8006306 80012c4: 4603 mov r3, r0 80012c6: b29a uxth r2, r3 80012c8: 687b ldr r3, [r7, #4] 80012ca: 829a strh r2, [r3, #20] adc->error = HAL_ADC_Start(&hadc1); - 80012cc: 483e ldr r0, [pc, #248] @ (80013c8 ) - 80012ce: f004 fd4d bl 8005d6c + 80012cc: 483d ldr r0, [pc, #244] @ (80013c4 ) + 80012ce: f004 fe77 bl 8005fc0 80012d2: 4603 mov r3, r0 80012d4: 461a mov r2, r3 80012d6: 687b ldr r3, [r7, #4] 80012d8: 701a strb r2, [r3, #0] adc->error = HAL_ADC_PollForConversion(&hadc1, 1); 80012da: 2101 movs r1, #1 - 80012dc: 483a ldr r0, [pc, #232] @ (80013c8 ) - 80012de: f004 fe5d bl 8005f9c + 80012dc: 4839 ldr r0, [pc, #228] @ (80013c4 ) + 80012de: f004 ff87 bl 80061f0 80012e2: 4603 mov r3, r0 80012e4: 461a mov r2, r3 80012e6: 687b ldr r3, [r7, #4] 80012e8: 701a strb r2, [r3, #0] adc->lv_comp_raw = HAL_ADC_GetValue(&hadc1); - 80012ea: 4837 ldr r0, [pc, #220] @ (80013c8 ) - 80012ec: f004 fee1 bl 80060b2 + 80012ea: 4836 ldr r0, [pc, #216] @ (80013c4 ) + 80012ec: f005 f80b bl 8006306 80012f0: 4603 mov r3, r0 80012f2: b29a uxth r2, r3 80012f4: 687b ldr r3, [r7, #4] 80012f6: 82da strh r2, [r3, #22] adc->error = HAL_ADC_Start(&hadc1); - 80012f8: 4833 ldr r0, [pc, #204] @ (80013c8 ) - 80012fa: f004 fd37 bl 8005d6c + 80012f8: 4832 ldr r0, [pc, #200] @ (80013c4 ) + 80012fa: f004 fe61 bl 8005fc0 80012fe: 4603 mov r3, r0 8001300: 461a mov r2, r3 8001302: 687b ldr r3, [r7, #4] 8001304: 701a strb r2, [r3, #0] adc->error = HAL_ADC_PollForConversion(&hadc1, 1); 8001306: 2101 movs r1, #1 - 8001308: 482f ldr r0, [pc, #188] @ (80013c8 ) - 800130a: f004 fe47 bl 8005f9c + 8001308: 482e ldr r0, [pc, #184] @ (80013c4 ) + 800130a: f004 ff71 bl 80061f0 800130e: 4603 mov r3, r0 8001310: 461a mov r2, r3 8001312: 687b ldr r3, [r7, #4] 8001314: 701a strb r2, [r3, #0] adc->hv_raw = HAL_ADC_GetValue(&hadc1); - 8001316: 482c ldr r0, [pc, #176] @ (80013c8 ) - 8001318: f004 fecb bl 80060b2 + 8001316: 482b ldr r0, [pc, #172] @ (80013c4 ) + 8001318: f004 fff5 bl 8006306 800131c: 4603 mov r3, r0 800131e: b29a uxth r2, r3 8001320: 687b ldr r3, [r7, #4] @@ -1860,7 +1860,7 @@ void adc_read(adc_struct* adc) 8001328: 461a mov r2, r3 800132a: f242 53e4 movw r3, #9700 @ 0x25e4 800132e: fb03 f202 mul.w r2, r3, r2 - 8001332: 4b26 ldr r3, [pc, #152] @ (80013cc ) + 8001332: 4b25 ldr r3, [pc, #148] @ (80013c8 ) 8001334: fba3 1302 umull r1, r3, r3, r2 8001338: 1ad2 subs r2, r2, r3 800133a: 0852 lsrs r2, r2, #1 @@ -1871,32896 +1871,33745 @@ void adc_read(adc_struct* adc) 8001344: 821a strh r2, [r3, #16] adc->error = HAL_ADC_Start(&hadc1); - 8001346: 4820 ldr r0, [pc, #128] @ (80013c8 ) - 8001348: f004 fd10 bl 8005d6c + 8001346: 481f ldr r0, [pc, #124] @ (80013c4 ) + 8001348: f004 fe3a bl 8005fc0 800134c: 4603 mov r3, r0 800134e: 461a mov r2, r3 8001350: 687b ldr r3, [r7, #4] 8001352: 701a strb r2, [r3, #0] adc->error = HAL_ADC_PollForConversion(&hadc1, 1); 8001354: 2101 movs r1, #1 - 8001356: 481c ldr r0, [pc, #112] @ (80013c8 ) - 8001358: f004 fe20 bl 8005f9c + 8001356: 481b ldr r0, [pc, #108] @ (80013c4 ) + 8001358: f004 ff4a bl 80061f0 800135c: 4603 mov r3, r0 800135e: 461a mov r2, r3 8001360: 687b ldr r3, [r7, #4] 8001362: 701a strb r2, [r3, #0] adc->bat_raw = HAL_ADC_GetValue(&hadc1); - 8001364: 4818 ldr r0, [pc, #96] @ (80013c8 ) - 8001366: f004 fea4 bl 80060b2 + 8001364: 4817 ldr r0, [pc, #92] @ (80013c4 ) + 8001366: f004 ffce bl 8006306 800136a: 4603 mov r3, r0 800136c: b29a uxth r2, r3 800136e: 687b ldr r3, [r7, #4] 8001370: 811a strh r2, [r3, #8] - adc->bat_volt = ((uint32_t)(adc->bat_raw) * 6600)/4095 + 40;//40 миливольт падение на идеальном диоде + adc->bat_volt = ((uint32_t)(adc->bat_raw) * 6600)/4095; 8001372: 687b ldr r3, [r7, #4] 8001374: 891b ldrh r3, [r3, #8] 8001376: 461a mov r2, r3 8001378: f641 13c8 movw r3, #6600 @ 0x19c8 800137c: fb03 f202 mul.w r2, r3, r2 - 8001380: 4b12 ldr r3, [pc, #72] @ (80013cc ) + 8001380: 4b11 ldr r3, [pc, #68] @ (80013c8 ) 8001382: fba3 1302 umull r1, r3, r3, r2 8001386: 1ad2 subs r2, r2, r3 8001388: 0852 lsrs r2, r2, #1 800138a: 4413 add r3, r2 800138c: 0adb lsrs r3, r3, #11 - 800138e: b29b uxth r3, r3 - 8001390: 3328 adds r3, #40 @ 0x28 - 8001392: b29a uxth r2, r3 - 8001394: 687b ldr r3, [r7, #4] - 8001396: 815a strh r2, [r3, #10] + 800138e: b29a uxth r2, r3 + 8001390: 687b ldr r3, [r7, #4] + 8001392: 815a strh r2, [r3, #10] adc->bat_pers = volt_to_pers(adc->bat_volt);//40 миливольт падение на идеальном диоде - 8001398: 687b ldr r3, [r7, #4] - 800139a: 895b ldrh r3, [r3, #10] - 800139c: 4618 mov r0, r3 - 800139e: f7ff ff01 bl 80011a4 - 80013a2: 4603 mov r3, r0 - 80013a4: 461a mov r2, r3 - 80013a6: 687b ldr r3, [r7, #4] - 80013a8: 731a strb r2, [r3, #12] + 8001394: 687b ldr r3, [r7, #4] + 8001396: 895b ldrh r3, [r3, #10] + 8001398: 4618 mov r0, r3 + 800139a: f7ff ff03 bl 80011a4 + 800139e: 4603 mov r3, r0 + 80013a0: 461a mov r2, r3 + 80013a2: 687b ldr r3, [r7, #4] + 80013a4: 731a strb r2, [r3, #12] adc->error = HAL_ADC_Stop(&hadc1); - 80013aa: 4807 ldr r0, [pc, #28] @ (80013c8 ) - 80013ac: f004 fdb6 bl 8005f1c - 80013b0: 4603 mov r3, r0 - 80013b2: 461a mov r2, r3 - 80013b4: 687b ldr r3, [r7, #4] - 80013b6: 701a strb r2, [r3, #0] + 80013a6: 4807 ldr r0, [pc, #28] @ (80013c4 ) + 80013a8: f004 fee2 bl 8006170 + 80013ac: 4603 mov r3, r0 + 80013ae: 461a mov r2, r3 + 80013b0: 687b ldr r3, [r7, #4] + 80013b2: 701a strb r2, [r3, #0] adc->drdy_trigger = true; - 80013b8: 687b ldr r3, [r7, #4] - 80013ba: 2201 movs r2, #1 - 80013bc: 761a strb r2, [r3, #24] + 80013b4: 687b ldr r3, [r7, #4] + 80013b6: 2201 movs r2, #1 + 80013b8: 761a strb r2, [r3, #24] } - 80013be: bf00 nop - 80013c0: 3708 adds r7, #8 - 80013c2: 46bd mov sp, r7 - 80013c4: bd80 pop {r7, pc} - 80013c6: bf00 nop - 80013c8: 200000a8 .word 0x200000a8 - 80013cc: 00100101 .word 0x00100101 + 80013ba: bf00 nop + 80013bc: 3708 adds r7, #8 + 80013be: 46bd mov sp, r7 + 80013c0: bd80 pop {r7, pc} + 80013c2: bf00 nop + 80013c4: 200000a8 .word 0x200000a8 + 80013c8: 00100101 .word 0x00100101 -080013d0 : +080013cc : #include "control.h" ctrl_struct Control; //FLASH (rx) void control_init(void) { - 80013d0: b480 push {r7} - 80013d2: af00 add r7, sp, #0 + 80013cc: b480 push {r7} + 80013ce: af00 add r7, sp, #0 Control.dev_type = DEV_TYPE; - 80013d4: 4b12 ldr r3, [pc, #72] @ (8001420 ) - 80013d6: 2201 movs r2, #1 - 80013d8: 771a strb r2, [r3, #28] + 80013d0: 4b12 ldr r3, [pc, #72] @ (800141c ) + 80013d2: 2201 movs r2, #1 + 80013d4: 771a strb r2, [r3, #28] Control.ble_mode_set = ble_raw; - 80013da: 4b11 ldr r3, [pc, #68] @ (8001420 ) - 80013dc: 2201 movs r2, #1 - 80013de: 769a strb r2, [r3, #26] + 80013d6: 4b11 ldr r3, [pc, #68] @ (800141c ) + 80013d8: 2201 movs r2, #1 + 80013da: 769a strb r2, [r3, #26] Control.ble_mode_now = ble_off; - 80013e0: 4b0f ldr r3, [pc, #60] @ (8001420 ) - 80013e2: 2200 movs r2, #0 - 80013e4: 76da strb r2, [r3, #27] + 80013dc: 4b0f ldr r3, [pc, #60] @ (800141c ) + 80013de: 2200 movs r2, #0 + 80013e0: 76da strb r2, [r3, #27] Control.serial_number = BASE_SERIAL_NUM; - 80013e6: 4b0e ldr r3, [pc, #56] @ (8001420 ) - 80013e8: f244 0201 movw r2, #16385 @ 0x4001 - 80013ec: 621a str r2, [r3, #32] + 80013e2: 4b0e ldr r3, [pc, #56] @ (800141c ) + 80013e4: f244 0201 movw r2, #16385 @ 0x4001 + 80013e8: 621a str r2, [r3, #32] Control.password = BASE_PASSWORD; - 80013ee: 4b0c ldr r3, [pc, #48] @ (8001420 ) - 80013f0: 4a0c ldr r2, [pc, #48] @ (8001424 ) - 80013f2: 625a str r2, [r3, #36] @ 0x24 + 80013ea: 4b0c ldr r3, [pc, #48] @ (800141c ) + 80013ec: 4a0c ldr r2, [pc, #48] @ (8001420 ) + 80013ee: 625a str r2, [r3, #36] @ 0x24 Control.mesh_netid = BASE_MESH_ID; - 80013f4: 4b0a ldr r3, [pc, #40] @ (8001420 ) - 80013f6: f241 3213 movw r2, #4883 @ 0x1313 - 80013fa: 629a str r2, [r3, #40] @ 0x28 + 80013f0: 4b0a ldr r3, [pc, #40] @ (800141c ) + 80013f2: f241 3213 movw r2, #4883 @ 0x1313 + 80013f6: 629a str r2, [r3, #40] @ 0x28 Control.mesh_adr = BASE_MESH_ADR; - 80013fc: 4b08 ldr r3, [pc, #32] @ (8001420 ) - 80013fe: f244 0201 movw r2, #16385 @ 0x4001 - 8001402: 62da str r2, [r3, #44] @ 0x2c + 80013f8: 4b08 ldr r3, [pc, #32] @ (800141c ) + 80013fa: f244 0201 movw r2, #16385 @ 0x4001 + 80013fe: 62da str r2, [r3, #44] @ 0x2c Control.master_adr = BASE_MASTER_ADR; - 8001404: 4b06 ldr r3, [pc, #24] @ (8001420 ) - 8001406: f241 0201 movw r2, #4097 @ 0x1001 - 800140a: 631a str r2, [r3, #48] @ 0x30 + 8001400: 4b06 ldr r3, [pc, #24] @ (800141c ) + 8001402: f241 0201 movw r2, #4097 @ 0x1001 + 8001406: 631a str r2, [r3, #48] @ 0x30 Control.ble_ask = false; - 800140c: 4b04 ldr r3, [pc, #16] @ (8001420 ) - 800140e: 2200 movs r2, #0 - 8001410: f883 2034 strb.w r2, [r3, #52] @ 0x34 + 8001408: 4b04 ldr r3, [pc, #16] @ (800141c ) + 800140a: 2200 movs r2, #0 + 800140c: f883 2034 strb.w r2, [r3, #52] @ 0x34 } - 8001414: bf00 nop - 8001416: 46bd mov sp, r7 - 8001418: f85d 7b04 ldr.w r7, [sp], #4 - 800141c: 4770 bx lr - 800141e: bf00 nop - 8001420: 200000f0 .word 0x200000f0 - 8001424: 000bde31 .word 0x000bde31 + 8001410: bf00 nop + 8001412: 46bd mov sp, r7 + 8001414: f85d 7b04 ldr.w r7, [sp], #4 + 8001418: 4770 bx lr + 800141a: bf00 nop + 800141c: 200000f0 .word 0x200000f0 + 8001420: 000bde31 .word 0x000bde31 -08001428 : +08001424 : control->ble_ask = false; } void lets_sleep(void) { - 8001428: b580 push {r7, lr} - 800142a: af00 add r7, sp, #0 + 8001424: b580 push {r7, lr} + 8001426: af00 add r7, sp, #0 //Выключили питание АЦП HAL_GPIO_WritePin(INA_PWR_GPIO_Port, INA_PWR_Pin, RESET); - 800142c: 2200 movs r2, #0 - 800142e: 2180 movs r1, #128 @ 0x80 - 8001430: 4810 ldr r0, [pc, #64] @ (8001474 ) - 8001432: f006 f9e7 bl 8007804 + 8001428: 2200 movs r2, #0 + 800142a: 2180 movs r1, #128 @ 0x80 + 800142c: 4810 ldr r0, [pc, #64] @ (8001470 ) + 800142e: f006 fb13 bl 8007a58 //Выключили питание потенциометра HAL_GPIO_WritePin(POT_PWR_GPIO_Port, POT_PWR_Pin, GPIO_PIN_RESET); - 8001436: 2200 movs r2, #0 - 8001438: f44f 4180 mov.w r1, #16384 @ 0x4000 - 800143c: 480e ldr r0, [pc, #56] @ (8001478 ) - 800143e: f006 f9e1 bl 8007804 + 8001432: 2200 movs r2, #0 + 8001434: f44f 4180 mov.w r1, #16384 @ 0x4000 + 8001438: 480e ldr r0, [pc, #56] @ (8001474 ) + 800143a: f006 fb0d bl 8007a58 HAL_GPIO_WritePin(BLE_PWR_GPIO_Port, BLE_PWR_Pin, SET); - 8001442: 2201 movs r2, #1 - 8001444: f44f 5180 mov.w r1, #4096 @ 0x1000 - 8001448: 480c ldr r0, [pc, #48] @ (800147c ) - 800144a: f006 f9db bl 8007804 + 800143e: 2201 movs r2, #1 + 8001440: f44f 5180 mov.w r1, #4096 @ 0x1000 + 8001444: 480c ldr r0, [pc, #48] @ (8001478 ) + 8001446: f006 fb07 bl 8007a58 +// hv_power(false); +// hv_ll_control(z_state, z_state, z_state); +// HAL_Delay(20); +// relay_all_control(false, false, false); HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1); - 800144e: f44f 7080 mov.w r0, #256 @ 0x100 - 8001452: f006 fa25 bl 80078a0 + 800144a: f44f 7080 mov.w r0, #256 @ 0x100 + 800144e: f006 fb51 bl 8007af4 //Сейчас второй кнопки нет!! //HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN2);//если вторая кнопка тоже подключена PC0 __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU); - 8001456: 4b0a ldr r3, [pc, #40] @ (8001480 ) - 8001458: 681b ldr r3, [r3, #0] - 800145a: 4a09 ldr r2, [pc, #36] @ (8001480 ) - 800145c: f043 0304 orr.w r3, r3, #4 - 8001460: 6013 str r3, [r2, #0] + 8001452: 4b0a ldr r3, [pc, #40] @ (800147c ) + 8001454: 681b ldr r3, [r3, #0] + 8001456: 4a09 ldr r2, [pc, #36] @ (800147c ) + 8001458: f043 0304 orr.w r3, r3, #4 + 800145c: 6013 str r3, [r2, #0] HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1); - 8001462: f44f 7080 mov.w r0, #256 @ 0x100 - 8001466: f006 f9f9 bl 800785c + 800145e: f44f 7080 mov.w r0, #256 @ 0x100 + 8001462: f006 fb25 bl 8007ab0 HAL_PWR_EnterSTANDBYMode(); - 800146a: f006 fa3b bl 80078e4 + 8001466: f006 fb67 bl 8007b38 } + 800146a: bf00 nop + 800146c: bd80 pop {r7, pc} 800146e: bf00 nop - 8001470: bd80 pop {r7, pc} - 8001472: bf00 nop - 8001474: 40021000 .word 0x40021000 - 8001478: 40020400 .word 0x40020400 - 800147c: 40020000 .word 0x40020000 - 8001480: 40007000 .word 0x40007000 + 8001470: 40021000 .word 0x40021000 + 8001474: 40020400 .word 0x40020400 + 8001478: 40020000 .word 0x40020000 + 800147c: 40007000 .word 0x40007000 -08001484 : +08001480 : //=============================================================== // Задержка времени в мкс //=============================================================== void delay_us(unsigned int t) { - 8001484: b480 push {r7} - 8001486: b085 sub sp, #20 - 8001488: af00 add r7, sp, #0 - 800148a: 6078 str r0, [r7, #4] + 8001480: b480 push {r7} + 8001482: b085 sub sp, #20 + 8001484: af00 add r7, sp, #0 + 8001486: 6078 str r0, [r7, #4] unsigned long i; i = t*SYSCLK; - 800148c: 687a ldr r2, [r7, #4] - 800148e: 4613 mov r3, r2 - 8001490: 005b lsls r3, r3, #1 - 8001492: 4413 add r3, r2 - 8001494: 00db lsls r3, r3, #3 - 8001496: 60fb str r3, [r7, #12] + 8001488: 687a ldr r2, [r7, #4] + 800148a: 4613 mov r3, r2 + 800148c: 005b lsls r3, r3, #1 + 800148e: 4413 add r3, r2 + 8001490: 00db lsls r3, r3, #3 + 8001492: 60fb str r3, [r7, #12] while(i--); - 8001498: bf00 nop - 800149a: 68fb ldr r3, [r7, #12] - 800149c: 1e5a subs r2, r3, #1 - 800149e: 60fa str r2, [r7, #12] - 80014a0: 2b00 cmp r3, #0 - 80014a2: d1fa bne.n 800149a + 8001494: bf00 nop + 8001496: 68fb ldr r3, [r7, #12] + 8001498: 1e5a subs r2, r3, #1 + 800149a: 60fa str r2, [r7, #12] + 800149c: 2b00 cmp r3, #0 + 800149e: d1fa bne.n 8001496 } - 80014a4: bf00 nop - 80014a6: bf00 nop - 80014a8: 3714 adds r7, #20 - 80014aa: 46bd mov sp, r7 - 80014ac: f85d 7b04 ldr.w r7, [sp], #4 - 80014b0: 4770 bx lr + 80014a0: bf00 nop + 80014a2: bf00 nop + 80014a4: 3714 adds r7, #20 + 80014a6: 46bd mov sp, r7 + 80014a8: f85d 7b04 ldr.w r7, [sp], #4 + 80014ac: 4770 bx lr ... -080014b4 : +080014b0 : /** * Enable DMA controller clock */ void MX_DMA_Init(void) { - 80014b4: b580 push {r7, lr} - 80014b6: b082 sub sp, #8 - 80014b8: af00 add r7, sp, #0 + 80014b0: b580 push {r7, lr} + 80014b2: b082 sub sp, #8 + 80014b4: af00 add r7, sp, #0 /* DMA controller clock enable */ __HAL_RCC_DMA2_CLK_ENABLE(); - 80014ba: 2300 movs r3, #0 - 80014bc: 607b str r3, [r7, #4] - 80014be: 4b10 ldr r3, [pc, #64] @ (8001500 ) - 80014c0: 6b1b ldr r3, [r3, #48] @ 0x30 - 80014c2: 4a0f ldr r2, [pc, #60] @ (8001500 ) - 80014c4: f443 0380 orr.w r3, r3, #4194304 @ 0x400000 - 80014c8: 6313 str r3, [r2, #48] @ 0x30 - 80014ca: 4b0d ldr r3, [pc, #52] @ (8001500 ) - 80014cc: 6b1b ldr r3, [r3, #48] @ 0x30 - 80014ce: f403 0380 and.w r3, r3, #4194304 @ 0x400000 - 80014d2: 607b str r3, [r7, #4] - 80014d4: 687b ldr r3, [r7, #4] + 80014b6: 2300 movs r3, #0 + 80014b8: 607b str r3, [r7, #4] + 80014ba: 4b10 ldr r3, [pc, #64] @ (80014fc ) + 80014bc: 6b1b ldr r3, [r3, #48] @ 0x30 + 80014be: 4a0f ldr r2, [pc, #60] @ (80014fc ) + 80014c0: f443 0380 orr.w r3, r3, #4194304 @ 0x400000 + 80014c4: 6313 str r3, [r2, #48] @ 0x30 + 80014c6: 4b0d ldr r3, [pc, #52] @ (80014fc ) + 80014c8: 6b1b ldr r3, [r3, #48] @ 0x30 + 80014ca: f403 0380 and.w r3, r3, #4194304 @ 0x400000 + 80014ce: 607b str r3, [r7, #4] + 80014d0: 687b ldr r3, [r7, #4] /* DMA interrupt init */ /* DMA2_Stream2_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 5, 0); - 80014d6: 2200 movs r2, #0 - 80014d8: 2105 movs r1, #5 - 80014da: 203a movs r0, #58 @ 0x3a - 80014dc: f005 f944 bl 8006768 + 80014d2: 2200 movs r2, #0 + 80014d4: 2105 movs r1, #5 + 80014d6: 203a movs r0, #58 @ 0x3a + 80014d8: f005 fa70 bl 80069bc HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn); - 80014e0: 203a movs r0, #58 @ 0x3a - 80014e2: f005 f96d bl 80067c0 + 80014dc: 203a movs r0, #58 @ 0x3a + 80014de: f005 fa99 bl 8006a14 /* DMA2_Stream7_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 5, 0); - 80014e6: 2200 movs r2, #0 - 80014e8: 2105 movs r1, #5 - 80014ea: 2046 movs r0, #70 @ 0x46 - 80014ec: f005 f93c bl 8006768 + 80014e2: 2200 movs r2, #0 + 80014e4: 2105 movs r1, #5 + 80014e6: 2046 movs r0, #70 @ 0x46 + 80014e8: f005 fa68 bl 80069bc HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn); - 80014f0: 2046 movs r0, #70 @ 0x46 - 80014f2: f005 f965 bl 80067c0 + 80014ec: 2046 movs r0, #70 @ 0x46 + 80014ee: f005 fa91 bl 8006a14 } - 80014f6: bf00 nop - 80014f8: 3708 adds r7, #8 - 80014fa: 46bd mov sp, r7 - 80014fc: bd80 pop {r7, pc} - 80014fe: bf00 nop - 8001500: 40023800 .word 0x40023800 + 80014f2: bf00 nop + 80014f4: 3708 adds r7, #8 + 80014f6: 46bd mov sp, r7 + 80014f8: bd80 pop {r7, pc} + 80014fa: bf00 nop + 80014fc: 40023800 .word 0x40023800 -08001504 : +08001500 : return y[0]; } #define NCoef_lp 4 float iir_lp30(float NewSample) { - 8001504: b4b0 push {r4, r5, r7} - 8001506: b08f sub sp, #60 @ 0x3c - 8001508: af00 add r7, sp, #0 - 800150a: ed87 0a01 vstr s0, [r7, #4] + 8001500: b4b0 push {r4, r5, r7} + 8001502: b08f sub sp, #60 @ 0x3c + 8001504: af00 add r7, sp, #0 + 8001506: ed87 0a01 vstr s0, [r7, #4] float ACoef[NCoef_lp+1] = { - 800150e: 4b3b ldr r3, [pc, #236] @ (80015fc ) - 8001510: f107 0420 add.w r4, r7, #32 - 8001514: 461d mov r5, r3 - 8001516: cd0f ldmia r5!, {r0, r1, r2, r3} - 8001518: c40f stmia r4!, {r0, r1, r2, r3} - 800151a: 682b ldr r3, [r5, #0] - 800151c: 6023 str r3, [r4, #0] + 800150a: 4b3b ldr r3, [pc, #236] @ (80015f8 ) + 800150c: f107 0420 add.w r4, r7, #32 + 8001510: 461d mov r5, r3 + 8001512: cd0f ldmia r5!, {r0, r1, r2, r3} + 8001514: c40f stmia r4!, {r0, r1, r2, r3} + 8001516: 682b ldr r3, [r5, #0] + 8001518: 6023 str r3, [r4, #0] 0.11138063027330414000, 0.07425375351553609200, 0.01856343837888402300 }; float BCoef[NCoef_lp+1] = { - 800151e: 4b38 ldr r3, [pc, #224] @ (8001600 ) - 8001520: f107 040c add.w r4, r7, #12 - 8001524: 461d mov r5, r3 - 8001526: cd0f ldmia r5!, {r0, r1, r2, r3} - 8001528: c40f stmia r4!, {r0, r1, r2, r3} - 800152a: 682b ldr r3, [r5, #0] - 800152c: 6023 str r3, [r4, #0] + 800151a: 4b38 ldr r3, [pc, #224] @ (80015fc ) + 800151c: f107 040c add.w r4, r7, #12 + 8001520: 461d mov r5, r3 + 8001522: cd0f ldmia r5!, {r0, r1, r2, r3} + 8001524: c40f stmia r4!, {r0, r1, r2, r3} + 8001526: 682b ldr r3, [r5, #0] + 8001528: 6023 str r3, [r4, #0] static float y[NCoef_lp+1]; //output samples static float x[NCoef_lp+1]; //input samples int n; //shift the old samples for(n=NCoef_lp; n>0; n--) { - 800152e: 2304 movs r3, #4 - 8001530: 637b str r3, [r7, #52] @ 0x34 - 8001532: e018 b.n 8001566 + 800152a: 2304 movs r3, #4 + 800152c: 637b str r3, [r7, #52] @ 0x34 + 800152e: e018 b.n 8001562 x[n] = x[n-1]; - 8001534: 6b7b ldr r3, [r7, #52] @ 0x34 - 8001536: 3b01 subs r3, #1 - 8001538: 4a32 ldr r2, [pc, #200] @ (8001604 ) - 800153a: 009b lsls r3, r3, #2 - 800153c: 4413 add r3, r2 - 800153e: 681a ldr r2, [r3, #0] - 8001540: 4930 ldr r1, [pc, #192] @ (8001604 ) - 8001542: 6b7b ldr r3, [r7, #52] @ 0x34 - 8001544: 009b lsls r3, r3, #2 - 8001546: 440b add r3, r1 - 8001548: 601a str r2, [r3, #0] + 8001530: 6b7b ldr r3, [r7, #52] @ 0x34 + 8001532: 3b01 subs r3, #1 + 8001534: 4a32 ldr r2, [pc, #200] @ (8001600 ) + 8001536: 009b lsls r3, r3, #2 + 8001538: 4413 add r3, r2 + 800153a: 681a ldr r2, [r3, #0] + 800153c: 4930 ldr r1, [pc, #192] @ (8001600 ) + 800153e: 6b7b ldr r3, [r7, #52] @ 0x34 + 8001540: 009b lsls r3, r3, #2 + 8001542: 440b add r3, r1 + 8001544: 601a str r2, [r3, #0] y[n] = y[n-1]; - 800154a: 6b7b ldr r3, [r7, #52] @ 0x34 - 800154c: 3b01 subs r3, #1 - 800154e: 4a2e ldr r2, [pc, #184] @ (8001608 ) - 8001550: 009b lsls r3, r3, #2 - 8001552: 4413 add r3, r2 - 8001554: 681a ldr r2, [r3, #0] - 8001556: 492c ldr r1, [pc, #176] @ (8001608 ) - 8001558: 6b7b ldr r3, [r7, #52] @ 0x34 - 800155a: 009b lsls r3, r3, #2 - 800155c: 440b add r3, r1 - 800155e: 601a str r2, [r3, #0] + 8001546: 6b7b ldr r3, [r7, #52] @ 0x34 + 8001548: 3b01 subs r3, #1 + 800154a: 4a2e ldr r2, [pc, #184] @ (8001604 ) + 800154c: 009b lsls r3, r3, #2 + 800154e: 4413 add r3, r2 + 8001550: 681a ldr r2, [r3, #0] + 8001552: 492c ldr r1, [pc, #176] @ (8001604 ) + 8001554: 6b7b ldr r3, [r7, #52] @ 0x34 + 8001556: 009b lsls r3, r3, #2 + 8001558: 440b add r3, r1 + 800155a: 601a str r2, [r3, #0] for(n=NCoef_lp; n>0; n--) { - 8001560: 6b7b ldr r3, [r7, #52] @ 0x34 - 8001562: 3b01 subs r3, #1 - 8001564: 637b str r3, [r7, #52] @ 0x34 - 8001566: 6b7b ldr r3, [r7, #52] @ 0x34 - 8001568: 2b00 cmp r3, #0 - 800156a: dce3 bgt.n 8001534 + 800155c: 6b7b ldr r3, [r7, #52] @ 0x34 + 800155e: 3b01 subs r3, #1 + 8001560: 637b str r3, [r7, #52] @ 0x34 + 8001562: 6b7b ldr r3, [r7, #52] @ 0x34 + 8001564: 2b00 cmp r3, #0 + 8001566: dce3 bgt.n 8001530 } //Calculate the new output x[0] = NewSample; - 800156c: 4a25 ldr r2, [pc, #148] @ (8001604 ) - 800156e: 687b ldr r3, [r7, #4] - 8001570: 6013 str r3, [r2, #0] + 8001568: 4a25 ldr r2, [pc, #148] @ (8001600 ) + 800156a: 687b ldr r3, [r7, #4] + 800156c: 6013 str r3, [r2, #0] y[0] = ACoef[0] * x[0]; - 8001572: ed97 7a08 vldr s14, [r7, #32] - 8001576: 4b23 ldr r3, [pc, #140] @ (8001604 ) - 8001578: edd3 7a00 vldr s15, [r3] - 800157c: ee67 7a27 vmul.f32 s15, s14, s15 - 8001580: 4b21 ldr r3, [pc, #132] @ (8001608 ) - 8001582: edc3 7a00 vstr s15, [r3] + 800156e: ed97 7a08 vldr s14, [r7, #32] + 8001572: 4b23 ldr r3, [pc, #140] @ (8001600 ) + 8001574: edd3 7a00 vldr s15, [r3] + 8001578: ee67 7a27 vmul.f32 s15, s14, s15 + 800157c: 4b21 ldr r3, [pc, #132] @ (8001604 ) + 800157e: edc3 7a00 vstr s15, [r3] for(n=1; n<=NCoef_lp; n++) - 8001586: 2301 movs r3, #1 - 8001588: 637b str r3, [r7, #52] @ 0x34 - 800158a: e02a b.n 80015e2 + 8001582: 2301 movs r3, #1 + 8001584: 637b str r3, [r7, #52] @ 0x34 + 8001586: e02a b.n 80015de y[0] += ACoef[n] * x[n] - BCoef[n] * y[n]; - 800158c: 4b1e ldr r3, [pc, #120] @ (8001608 ) - 800158e: ed93 7a00 vldr s14, [r3] - 8001592: 6b7b ldr r3, [r7, #52] @ 0x34 - 8001594: 009b lsls r3, r3, #2 - 8001596: 3338 adds r3, #56 @ 0x38 - 8001598: 443b add r3, r7 - 800159a: 3b18 subs r3, #24 - 800159c: edd3 6a00 vldr s13, [r3] - 80015a0: 4a18 ldr r2, [pc, #96] @ (8001604 ) - 80015a2: 6b7b ldr r3, [r7, #52] @ 0x34 - 80015a4: 009b lsls r3, r3, #2 - 80015a6: 4413 add r3, r2 - 80015a8: edd3 7a00 vldr s15, [r3] - 80015ac: ee66 6aa7 vmul.f32 s13, s13, s15 - 80015b0: 6b7b ldr r3, [r7, #52] @ 0x34 - 80015b2: 009b lsls r3, r3, #2 - 80015b4: 3338 adds r3, #56 @ 0x38 - 80015b6: 443b add r3, r7 - 80015b8: 3b2c subs r3, #44 @ 0x2c - 80015ba: ed93 6a00 vldr s12, [r3] - 80015be: 4a12 ldr r2, [pc, #72] @ (8001608 ) - 80015c0: 6b7b ldr r3, [r7, #52] @ 0x34 - 80015c2: 009b lsls r3, r3, #2 - 80015c4: 4413 add r3, r2 - 80015c6: edd3 7a00 vldr s15, [r3] - 80015ca: ee66 7a27 vmul.f32 s15, s12, s15 - 80015ce: ee76 7ae7 vsub.f32 s15, s13, s15 - 80015d2: ee77 7a27 vadd.f32 s15, s14, s15 - 80015d6: 4b0c ldr r3, [pc, #48] @ (8001608 ) - 80015d8: edc3 7a00 vstr s15, [r3] + 8001588: 4b1e ldr r3, [pc, #120] @ (8001604 ) + 800158a: ed93 7a00 vldr s14, [r3] + 800158e: 6b7b ldr r3, [r7, #52] @ 0x34 + 8001590: 009b lsls r3, r3, #2 + 8001592: 3338 adds r3, #56 @ 0x38 + 8001594: 443b add r3, r7 + 8001596: 3b18 subs r3, #24 + 8001598: edd3 6a00 vldr s13, [r3] + 800159c: 4a18 ldr r2, [pc, #96] @ (8001600 ) + 800159e: 6b7b ldr r3, [r7, #52] @ 0x34 + 80015a0: 009b lsls r3, r3, #2 + 80015a2: 4413 add r3, r2 + 80015a4: edd3 7a00 vldr s15, [r3] + 80015a8: ee66 6aa7 vmul.f32 s13, s13, s15 + 80015ac: 6b7b ldr r3, [r7, #52] @ 0x34 + 80015ae: 009b lsls r3, r3, #2 + 80015b0: 3338 adds r3, #56 @ 0x38 + 80015b2: 443b add r3, r7 + 80015b4: 3b2c subs r3, #44 @ 0x2c + 80015b6: ed93 6a00 vldr s12, [r3] + 80015ba: 4a12 ldr r2, [pc, #72] @ (8001604 ) + 80015bc: 6b7b ldr r3, [r7, #52] @ 0x34 + 80015be: 009b lsls r3, r3, #2 + 80015c0: 4413 add r3, r2 + 80015c2: edd3 7a00 vldr s15, [r3] + 80015c6: ee66 7a27 vmul.f32 s15, s12, s15 + 80015ca: ee76 7ae7 vsub.f32 s15, s13, s15 + 80015ce: ee77 7a27 vadd.f32 s15, s14, s15 + 80015d2: 4b0c ldr r3, [pc, #48] @ (8001604 ) + 80015d4: edc3 7a00 vstr s15, [r3] for(n=1; n<=NCoef_lp; n++) - 80015dc: 6b7b ldr r3, [r7, #52] @ 0x34 - 80015de: 3301 adds r3, #1 - 80015e0: 637b str r3, [r7, #52] @ 0x34 - 80015e2: 6b7b ldr r3, [r7, #52] @ 0x34 - 80015e4: 2b04 cmp r3, #4 - 80015e6: ddd1 ble.n 800158c + 80015d8: 6b7b ldr r3, [r7, #52] @ 0x34 + 80015da: 3301 adds r3, #1 + 80015dc: 637b str r3, [r7, #52] @ 0x34 + 80015de: 6b7b ldr r3, [r7, #52] @ 0x34 + 80015e0: 2b04 cmp r3, #4 + 80015e2: ddd1 ble.n 8001588 return y[0]; - 80015e8: 4b07 ldr r3, [pc, #28] @ (8001608 ) - 80015ea: 681b ldr r3, [r3, #0] - 80015ec: ee07 3a90 vmov s15, r3 + 80015e4: 4b07 ldr r3, [pc, #28] @ (8001604 ) + 80015e6: 681b ldr r3, [r3, #0] + 80015e8: ee07 3a90 vmov s15, r3 } - 80015f0: eeb0 0a67 vmov.f32 s0, s15 - 80015f4: 373c adds r7, #60 @ 0x3c - 80015f6: 46bd mov sp, r7 - 80015f8: bcb0 pop {r4, r5, r7} - 80015fa: 4770 bx lr - 80015fc: 0800e5fc .word 0x0800e5fc - 8001600: 0800e610 .word 0x0800e610 - 8001604: 20000128 .word 0x20000128 - 8001608: 2000013c .word 0x2000013c + 80015ec: eeb0 0a67 vmov.f32 s0, s15 + 80015f0: 373c adds r7, #60 @ 0x3c + 80015f2: 46bd mov sp, r7 + 80015f4: bcb0 pop {r4, r5, r7} + 80015f6: 4770 bx lr + 80015f8: 0800eb6c .word 0x0800eb6c + 80015fc: 0800eb80 .word 0x0800eb80 + 8001600: 20000128 .word 0x20000128 + 8001604: 2000013c .word 0x2000013c -0800160c : +08001608 : /* USER CODE BEGIN GET_IDLE_TASK_MEMORY */ static StaticTask_t xIdleTaskTCBBuffer; static StackType_t xIdleStack[configMINIMAL_STACK_SIZE]; void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize ) { - 800160c: b480 push {r7} - 800160e: b085 sub sp, #20 - 8001610: af00 add r7, sp, #0 - 8001612: 60f8 str r0, [r7, #12] - 8001614: 60b9 str r1, [r7, #8] - 8001616: 607a str r2, [r7, #4] + 8001608: b480 push {r7} + 800160a: b085 sub sp, #20 + 800160c: af00 add r7, sp, #0 + 800160e: 60f8 str r0, [r7, #12] + 8001610: 60b9 str r1, [r7, #8] + 8001612: 607a str r2, [r7, #4] *ppxIdleTaskTCBBuffer = &xIdleTaskTCBBuffer; - 8001618: 68fb ldr r3, [r7, #12] - 800161a: 4a07 ldr r2, [pc, #28] @ (8001638 ) - 800161c: 601a str r2, [r3, #0] + 8001614: 68fb ldr r3, [r7, #12] + 8001616: 4a07 ldr r2, [pc, #28] @ (8001634 ) + 8001618: 601a str r2, [r3, #0] *ppxIdleTaskStackBuffer = &xIdleStack[0]; - 800161e: 68bb ldr r3, [r7, #8] - 8001620: 4a06 ldr r2, [pc, #24] @ (800163c ) - 8001622: 601a str r2, [r3, #0] + 800161a: 68bb ldr r3, [r7, #8] + 800161c: 4a06 ldr r2, [pc, #24] @ (8001638 ) + 800161e: 601a str r2, [r3, #0] *pulIdleTaskStackSize = configMINIMAL_STACK_SIZE; - 8001624: 687b ldr r3, [r7, #4] - 8001626: 2280 movs r2, #128 @ 0x80 - 8001628: 601a str r2, [r3, #0] + 8001620: 687b ldr r3, [r7, #4] + 8001622: 2280 movs r2, #128 @ 0x80 + 8001624: 601a str r2, [r3, #0] /* place for user code */ } - 800162a: bf00 nop - 800162c: 3714 adds r7, #20 - 800162e: 46bd mov sp, r7 - 8001630: f85d 7b04 ldr.w r7, [sp], #4 - 8001634: 4770 bx lr - 8001636: bf00 nop - 8001638: 20001bf4 .word 0x20001bf4 - 800163c: 20001c94 .word 0x20001c94 + 8001626: bf00 nop + 8001628: 3714 adds r7, #20 + 800162a: 46bd mov sp, r7 + 800162c: f85d 7b04 ldr.w r7, [sp], #4 + 8001630: 4770 bx lr + 8001632: bf00 nop + 8001634: 20001bf4 .word 0x20001bf4 + 8001638: 20001c94 .word 0x20001c94 -08001640 : +0800163c : /** * @brief FreeRTOS initialization * @param None * @retval None */ void MX_FREERTOS_Init(void) { - 8001640: b5b0 push {r4, r5, r7, lr} - 8001642: b0a4 sub sp, #144 @ 0x90 - 8001644: af00 add r7, sp, #0 + 800163c: b5b0 push {r4, r5, r7, lr} + 800163e: b0a4 sub sp, #144 @ 0x90 + 8001640: af00 add r7, sp, #0 /* USER CODE BEGIN Init */ init_icd(&ICD); - 8001646: 4832 ldr r0, [pc, #200] @ (8001710 ) - 8001648: f000 fa96 bl 8001b78 + 8001642: 4832 ldr r0, [pc, #200] @ (800170c ) + 8001644: f000 faa0 bl 8001b88 /* add queues, ... */ /* USER CODE END RTOS_QUEUES */ /* Create the thread(s) */ /* definition and creation of defaultTask */ osThreadStaticDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 300, defaultTaskBuffer, &defaultTaskControlBlock); - 800164c: 4b31 ldr r3, [pc, #196] @ (8001714 ) - 800164e: f107 0474 add.w r4, r7, #116 @ 0x74 - 8001652: 461d mov r5, r3 - 8001654: cd0f ldmia r5!, {r0, r1, r2, r3} - 8001656: c40f stmia r4!, {r0, r1, r2, r3} - 8001658: e895 0007 ldmia.w r5, {r0, r1, r2} - 800165c: e884 0007 stmia.w r4, {r0, r1, r2} + 8001648: 4b31 ldr r3, [pc, #196] @ (8001710 ) + 800164a: f107 0474 add.w r4, r7, #116 @ 0x74 + 800164e: 461d mov r5, r3 + 8001650: cd0f ldmia r5!, {r0, r1, r2, r3} + 8001652: c40f stmia r4!, {r0, r1, r2, r3} + 8001654: e895 0007 ldmia.w r5, {r0, r1, r2} + 8001658: e884 0007 stmia.w r4, {r0, r1, r2} defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); - 8001660: f107 0374 add.w r3, r7, #116 @ 0x74 - 8001664: 2100 movs r1, #0 - 8001666: 4618 mov r0, r3 - 8001668: f00a ff15 bl 800c496 - 800166c: 4603 mov r3, r0 - 800166e: 4a2a ldr r2, [pc, #168] @ (8001718 ) - 8001670: 6013 str r3, [r2, #0] + 800165c: f107 0374 add.w r3, r7, #116 @ 0x74 + 8001660: 2100 movs r1, #0 + 8001662: 4618 mov r0, r3 + 8001664: f00b f9d1 bl 800ca0a + 8001668: 4603 mov r3, r0 + 800166a: 4a2a ldr r2, [pc, #168] @ (8001714 ) + 800166c: 6013 str r3, [r2, #0] /* definition and creation of OprosTask */ osThreadStaticDef(OprosTask, StartOprosTask, osPriorityNormal, 0, 300, OprosTaskBuffer, &OprosTaskControlBlock); - 8001672: 4b2a ldr r3, [pc, #168] @ (800171c ) - 8001674: f107 0458 add.w r4, r7, #88 @ 0x58 - 8001678: 461d mov r5, r3 - 800167a: cd0f ldmia r5!, {r0, r1, r2, r3} - 800167c: c40f stmia r4!, {r0, r1, r2, r3} - 800167e: e895 0007 ldmia.w r5, {r0, r1, r2} - 8001682: e884 0007 stmia.w r4, {r0, r1, r2} + 800166e: 4b2a ldr r3, [pc, #168] @ (8001718 ) + 8001670: f107 0458 add.w r4, r7, #88 @ 0x58 + 8001674: 461d mov r5, r3 + 8001676: cd0f ldmia r5!, {r0, r1, r2, r3} + 8001678: c40f stmia r4!, {r0, r1, r2, r3} + 800167a: e895 0007 ldmia.w r5, {r0, r1, r2} + 800167e: e884 0007 stmia.w r4, {r0, r1, r2} OprosTaskHandle = osThreadCreate(osThread(OprosTask), NULL); - 8001686: f107 0358 add.w r3, r7, #88 @ 0x58 - 800168a: 2100 movs r1, #0 - 800168c: 4618 mov r0, r3 - 800168e: f00a ff02 bl 800c496 - 8001692: 4603 mov r3, r0 - 8001694: 4a22 ldr r2, [pc, #136] @ (8001720 ) - 8001696: 6013 str r3, [r2, #0] + 8001682: f107 0358 add.w r3, r7, #88 @ 0x58 + 8001686: 2100 movs r1, #0 + 8001688: 4618 mov r0, r3 + 800168a: f00b f9be bl 800ca0a + 800168e: 4603 mov r3, r0 + 8001690: 4a22 ldr r2, [pc, #136] @ (800171c ) + 8001692: 6013 str r3, [r2, #0] /* definition and creation of ControlTask */ osThreadStaticDef(ControlTask, StartControlTask, osPriorityIdle, 0, 300, ControlTaskBuffer, &ControlTaskControlBlock); - 8001698: 4b22 ldr r3, [pc, #136] @ (8001724 ) - 800169a: f107 043c add.w r4, r7, #60 @ 0x3c - 800169e: 461d mov r5, r3 - 80016a0: cd0f ldmia r5!, {r0, r1, r2, r3} - 80016a2: c40f stmia r4!, {r0, r1, r2, r3} - 80016a4: e895 0007 ldmia.w r5, {r0, r1, r2} - 80016a8: e884 0007 stmia.w r4, {r0, r1, r2} + 8001694: 4b22 ldr r3, [pc, #136] @ (8001720 ) + 8001696: f107 043c add.w r4, r7, #60 @ 0x3c + 800169a: 461d mov r5, r3 + 800169c: cd0f ldmia r5!, {r0, r1, r2, r3} + 800169e: c40f stmia r4!, {r0, r1, r2, r3} + 80016a0: e895 0007 ldmia.w r5, {r0, r1, r2} + 80016a4: e884 0007 stmia.w r4, {r0, r1, r2} ControlTaskHandle = osThreadCreate(osThread(ControlTask), NULL); - 80016ac: f107 033c add.w r3, r7, #60 @ 0x3c - 80016b0: 2100 movs r1, #0 - 80016b2: 4618 mov r0, r3 - 80016b4: f00a feef bl 800c496 - 80016b8: 4603 mov r3, r0 - 80016ba: 4a1b ldr r2, [pc, #108] @ (8001728 ) - 80016bc: 6013 str r3, [r2, #0] + 80016a8: f107 033c add.w r3, r7, #60 @ 0x3c + 80016ac: 2100 movs r1, #0 + 80016ae: 4618 mov r0, r3 + 80016b0: f00b f9ab bl 800ca0a + 80016b4: 4603 mov r3, r0 + 80016b6: 4a1b ldr r2, [pc, #108] @ (8001724 ) + 80016b8: 6013 str r3, [r2, #0] /* definition and creation of LowSpeedTask */ osThreadStaticDef(LowSpeedTask, StartLowSpeedTask, osPriorityIdle, 0, 300, LowSpeedTaskBuffer, &LowSpeedTaskControlBlock); - 80016be: 4b1b ldr r3, [pc, #108] @ (800172c ) - 80016c0: f107 0420 add.w r4, r7, #32 - 80016c4: 461d mov r5, r3 - 80016c6: cd0f ldmia r5!, {r0, r1, r2, r3} - 80016c8: c40f stmia r4!, {r0, r1, r2, r3} - 80016ca: e895 0007 ldmia.w r5, {r0, r1, r2} - 80016ce: e884 0007 stmia.w r4, {r0, r1, r2} + 80016ba: 4b1b ldr r3, [pc, #108] @ (8001728 ) + 80016bc: f107 0420 add.w r4, r7, #32 + 80016c0: 461d mov r5, r3 + 80016c2: cd0f ldmia r5!, {r0, r1, r2, r3} + 80016c4: c40f stmia r4!, {r0, r1, r2, r3} + 80016c6: e895 0007 ldmia.w r5, {r0, r1, r2} + 80016ca: e884 0007 stmia.w r4, {r0, r1, r2} LowSpeedTaskHandle = osThreadCreate(osThread(LowSpeedTask), NULL); - 80016d2: f107 0320 add.w r3, r7, #32 - 80016d6: 2100 movs r1, #0 - 80016d8: 4618 mov r0, r3 - 80016da: f00a fedc bl 800c496 - 80016de: 4603 mov r3, r0 - 80016e0: 4a13 ldr r2, [pc, #76] @ (8001730 ) - 80016e2: 6013 str r3, [r2, #0] + 80016ce: f107 0320 add.w r3, r7, #32 + 80016d2: 2100 movs r1, #0 + 80016d4: 4618 mov r0, r3 + 80016d6: f00b f998 bl 800ca0a + 80016da: 4603 mov r3, r0 + 80016dc: 4a13 ldr r2, [pc, #76] @ (800172c ) + 80016de: 6013 str r3, [r2, #0] /* definition and creation of ButTask */ osThreadStaticDef(ButTask, StartButTask, osPriorityIdle, 0, 300, ButTaskBuffer, &ButTaskControlBlock); - 80016e4: 4b13 ldr r3, [pc, #76] @ (8001734 ) - 80016e6: 1d3c adds r4, r7, #4 - 80016e8: 461d mov r5, r3 - 80016ea: cd0f ldmia r5!, {r0, r1, r2, r3} - 80016ec: c40f stmia r4!, {r0, r1, r2, r3} - 80016ee: e895 0007 ldmia.w r5, {r0, r1, r2} - 80016f2: e884 0007 stmia.w r4, {r0, r1, r2} + 80016e0: 4b13 ldr r3, [pc, #76] @ (8001730 ) + 80016e2: 1d3c adds r4, r7, #4 + 80016e4: 461d mov r5, r3 + 80016e6: cd0f ldmia r5!, {r0, r1, r2, r3} + 80016e8: c40f stmia r4!, {r0, r1, r2, r3} + 80016ea: e895 0007 ldmia.w r5, {r0, r1, r2} + 80016ee: e884 0007 stmia.w r4, {r0, r1, r2} ButTaskHandle = osThreadCreate(osThread(ButTask), NULL); - 80016f6: 1d3b adds r3, r7, #4 - 80016f8: 2100 movs r1, #0 - 80016fa: 4618 mov r0, r3 - 80016fc: f00a fecb bl 800c496 - 8001700: 4603 mov r3, r0 - 8001702: 4a0d ldr r2, [pc, #52] @ (8001738 ) - 8001704: 6013 str r3, [r2, #0] + 80016f2: 1d3b adds r3, r7, #4 + 80016f4: 2100 movs r1, #0 + 80016f6: 4618 mov r0, r3 + 80016f8: f00b f987 bl 800ca0a + 80016fc: 4603 mov r3, r0 + 80016fe: 4a0d ldr r2, [pc, #52] @ (8001734 ) + 8001700: 6013 str r3, [r2, #0] /* USER CODE BEGIN RTOS_THREADS */ /* add threads, ... */ /* USER CODE END RTOS_THREADS */ } - 8001706: bf00 nop - 8001708: 3790 adds r7, #144 @ 0x90 - 800170a: 46bd mov sp, r7 - 800170c: bdb0 pop {r4, r5, r7, pc} - 800170e: bf00 nop - 8001710: 20001ea4 .word 0x20001ea4 - 8001714: 0800e630 .word 0x0800e630 - 8001718: 20000150 .word 0x20000150 - 800171c: 0800e658 .word 0x0800e658 - 8001720: 200006a4 .word 0x200006a4 - 8001724: 0800e680 .word 0x0800e680 - 8001728: 20000bf8 .word 0x20000bf8 - 800172c: 0800e6ac .word 0x0800e6ac - 8001730: 2000114c .word 0x2000114c - 8001734: 0800e6d0 .word 0x0800e6d0 - 8001738: 200016a0 .word 0x200016a0 + 8001702: bf00 nop + 8001704: 3790 adds r7, #144 @ 0x90 + 8001706: 46bd mov sp, r7 + 8001708: bdb0 pop {r4, r5, r7, pc} + 800170a: bf00 nop + 800170c: 20001ea4 .word 0x20001ea4 + 8001710: 0800eba0 .word 0x0800eba0 + 8001714: 20000150 .word 0x20000150 + 8001718: 0800ebc8 .word 0x0800ebc8 + 800171c: 200006a4 .word 0x200006a4 + 8001720: 0800ebf0 .word 0x0800ebf0 + 8001724: 20000bf8 .word 0x20000bf8 + 8001728: 0800ec1c .word 0x0800ec1c + 800172c: 2000114c .word 0x2000114c + 8001730: 0800ec40 .word 0x0800ec40 + 8001734: 200016a0 .word 0x200016a0 -0800173c : +08001738 : * @param argument: Not used * @retval None */ /* USER CODE END Header_StartDefaultTask */ void StartDefaultTask(void const * argument) { - 800173c: b580 push {r7, lr} - 800173e: b082 sub sp, #8 - 8001740: af00 add r7, sp, #0 - 8001742: 6078 str r0, [r7, #4] + 8001738: b580 push {r7, lr} + 800173a: b082 sub sp, #8 + 800173c: af00 add r7, sp, #0 + 800173e: 6078 str r0, [r7, #4] /* USER CODE BEGIN StartDefaultTask */ /* Infinite loop */ for (;;) { if(ICD.lv_start == true) - 8001744: 4b0e ldr r3, [pc, #56] @ (8001780 ) - 8001746: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 - 800174a: 2b00 cmp r3, #0 - 800174c: d013 beq.n 8001776 + 8001740: 4b0e ldr r3, [pc, #56] @ (800177c ) + 8001742: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 + 8001746: 2b00 cmp r3, #0 + 8001748: d013 beq.n 8001772 { rv_lv_control(&ICD,lv_sub_charge); - 800174e: 2101 movs r1, #1 - 8001750: 480b ldr r0, [pc, #44] @ (8001780 ) - 8001752: f001 fab3 bl 8002cbc + 800174a: 2101 movs r1, #1 + 800174c: 480b ldr r0, [pc, #44] @ (800177c ) + 800174e: f001 fb0d bl 8002d6c rv_lv_control(&ICD,lv_sub_shock); - 8001756: 2102 movs r1, #2 - 8001758: 4809 ldr r0, [pc, #36] @ (8001780 ) - 800175a: f001 faaf bl 8002cbc + 8001752: 2102 movs r1, #2 + 8001754: 4809 ldr r0, [pc, #36] @ (800177c ) + 8001756: f001 fb09 bl 8002d6c rv_lv_control(&ICD,lv_sub_relax); - 800175e: 2103 movs r1, #3 - 8001760: 4807 ldr r0, [pc, #28] @ (8001780 ) - 8001762: f001 faab bl 8002cbc + 800175a: 2103 movs r1, #3 + 800175c: 4807 ldr r0, [pc, #28] @ (800177c ) + 800175e: f001 fb05 bl 8002d6c // rv_lv_control(&ICD,lv_sub_free); rv_lv_control(&ICD,lv_sub_discharge); - 8001766: 2104 movs r1, #4 - 8001768: 4805 ldr r0, [pc, #20] @ (8001780 ) - 800176a: f001 faa7 bl 8002cbc + 8001762: 2104 movs r1, #4 + 8001764: 4805 ldr r0, [pc, #20] @ (800177c ) + 8001766: f001 fb01 bl 8002d6c ICD.lv_start = false; - 800176e: 4b04 ldr r3, [pc, #16] @ (8001780 ) - 8001770: 2200 movs r2, #0 - 8001772: f883 2038 strb.w r2, [r3, #56] @ 0x38 + 800176a: 4b04 ldr r3, [pc, #16] @ (800177c ) + 800176c: 2200 movs r2, #0 + 800176e: f883 2038 strb.w r2, [r3, #56] @ 0x38 // rv_lv_control(icd_str,lv_sub_free); } osDelay(5); - 8001776: 2005 movs r0, #5 - 8001778: f00a fed9 bl 800c52e + 8001772: 2005 movs r0, #5 + 8001774: f00b f995 bl 800caa2 if(ICD.lv_start == true) - 800177c: e7e2 b.n 8001744 - 800177e: bf00 nop - 8001780: 20001ea4 .word 0x20001ea4 + 8001778: e7e2 b.n 8001740 + 800177a: bf00 nop + 800177c: 20001ea4 .word 0x20001ea4 -08001784 : +08001780 : * @param argument: Not used * @retval None */ /* USER CODE END Header_StartOprosTask */ void StartOprosTask(void const * argument) { - 8001784: b580 push {r7, lr} - 8001786: b082 sub sp, #8 - 8001788: af00 add r7, sp, #0 - 800178a: 6078 str r0, [r7, #4] + 8001780: b580 push {r7, lr} + 8001782: b082 sub sp, #8 + 8001784: af00 add r7, sp, #0 + 8001786: 6078 str r0, [r7, #4] /* USER CODE BEGIN StartOprosTask */ /* Infinite loop */ for(;;) { if (ICD.active_ch == 0) - 800178c: 4b1a ldr r3, [pc, #104] @ (80017f8 ) - 800178e: 795b ldrb r3, [r3, #5] - 8001790: 2b00 cmp r3, #0 - 8001792: d02d beq.n 80017f0 + 8001788: 4b1a ldr r3, [pc, #104] @ (80017f4 ) + 800178a: 795b ldrb r3, [r3, #5] + 800178c: 2b00 cmp r3, #0 + 800178e: d02d beq.n 80017ec { } else { if(adc_str.drdy_trigger) - 8001794: 4b19 ldr r3, [pc, #100] @ (80017fc ) - 8001796: 7e1b ldrb r3, [r3, #24] - 8001798: 2b00 cmp r3, #0 - 800179a: d029 beq.n 80017f0 + 8001790: 4b19 ldr r3, [pc, #100] @ (80017f8 ) + 8001792: 7e1b ldrb r3, [r3, #24] + 8001794: 2b00 cmp r3, #0 + 8001796: d029 beq.n 80017ec { adc_str.drdy_trigger = false;//сбросили флаг - 800179c: 4b17 ldr r3, [pc, #92] @ (80017fc ) - 800179e: 2200 movs r2, #0 - 80017a0: 761a strb r2, [r3, #24] + 8001798: 4b17 ldr r3, [pc, #92] @ (80017f8 ) + 800179a: 2200 movs r2, #0 + 800179c: 761a strb r2, [r3, #24] if(ICD.active_ch == 1) - 80017a2: 4b15 ldr r3, [pc, #84] @ (80017f8 ) - 80017a4: 795b ldrb r3, [r3, #5] - 80017a6: 2b01 cmp r3, #1 - 80017a8: d105 bne.n 80017b6 + 800179e: 4b15 ldr r3, [pc, #84] @ (80017f4 ) + 80017a0: 795b ldrb r3, [r3, #5] + 80017a2: 2b01 cmp r3, #1 + 80017a4: d105 bne.n 80017b2 get_data(&ICD,adc_str.ecg_1_raw); - 80017aa: 4b14 ldr r3, [pc, #80] @ (80017fc ) - 80017ac: 885b ldrh r3, [r3, #2] - 80017ae: 4619 mov r1, r3 - 80017b0: 4811 ldr r0, [pc, #68] @ (80017f8 ) - 80017b2: f000 fb15 bl 8001de0 + 80017a6: 4b14 ldr r3, [pc, #80] @ (80017f8 ) + 80017a8: 885b ldrh r3, [r3, #2] + 80017aa: 4619 mov r1, r3 + 80017ac: 4811 ldr r0, [pc, #68] @ (80017f4 ) + 80017ae: f000 fb3b bl 8001e28 if(ICD.active_ch == 2) - 80017b6: 4b10 ldr r3, [pc, #64] @ (80017f8 ) - 80017b8: 795b ldrb r3, [r3, #5] - 80017ba: 2b02 cmp r3, #2 - 80017bc: d105 bne.n 80017ca + 80017b2: 4b10 ldr r3, [pc, #64] @ (80017f4 ) + 80017b4: 795b ldrb r3, [r3, #5] + 80017b6: 2b02 cmp r3, #2 + 80017b8: d105 bne.n 80017c6 get_data(&ICD,adc_str.ecg_2_raw); - 80017be: 4b0f ldr r3, [pc, #60] @ (80017fc ) - 80017c0: 889b ldrh r3, [r3, #4] - 80017c2: 4619 mov r1, r3 - 80017c4: 480c ldr r0, [pc, #48] @ (80017f8 ) - 80017c6: f000 fb0b bl 8001de0 + 80017ba: 4b0f ldr r3, [pc, #60] @ (80017f8 ) + 80017bc: 889b ldrh r3, [r3, #4] + 80017be: 4619 mov r1, r3 + 80017c0: 480c ldr r0, [pc, #48] @ (80017f4 ) + 80017c2: f000 fb31 bl 8001e28 if(ICD.active_ch == 3) - 80017ca: 4b0b ldr r3, [pc, #44] @ (80017f8 ) - 80017cc: 795b ldrb r3, [r3, #5] - 80017ce: 2b03 cmp r3, #3 - 80017d0: d105 bne.n 80017de + 80017c6: 4b0b ldr r3, [pc, #44] @ (80017f4 ) + 80017c8: 795b ldrb r3, [r3, #5] + 80017ca: 2b03 cmp r3, #3 + 80017cc: d105 bne.n 80017da get_data(&ICD,adc_str.ecg_3_raw); - 80017d2: 4b0a ldr r3, [pc, #40] @ (80017fc ) - 80017d4: 88db ldrh r3, [r3, #6] - 80017d6: 4619 mov r1, r3 - 80017d8: 4807 ldr r0, [pc, #28] @ (80017f8 ) - 80017da: f000 fb01 bl 8001de0 + 80017ce: 4b0a ldr r3, [pc, #40] @ (80017f8 ) + 80017d0: 88db ldrh r3, [r3, #6] + 80017d2: 4619 mov r1, r3 + 80017d4: 4807 ldr r0, [pc, #28] @ (80017f4 ) + 80017d6: f000 fb27 bl 8001e28 //обычный алгоритм поиска search_alg(&ICD); - 80017de: 4806 ldr r0, [pc, #24] @ (80017f8 ) - 80017e0: f000 fc60 bl 80020a4 + 80017da: 4806 ldr r0, [pc, #24] @ (80017f4 ) + 80017dc: f000 fc86 bl 80020ec ble_HEX_new(&Control,&ICD, &adc_str,true); - 80017e4: 2301 movs r3, #1 - 80017e6: 4a05 ldr r2, [pc, #20] @ (80017fc ) - 80017e8: 4903 ldr r1, [pc, #12] @ (80017f8 ) - 80017ea: 4805 ldr r0, [pc, #20] @ (8001800 ) - 80017ec: f003 fc46 bl 800507c + 80017e0: 2301 movs r3, #1 + 80017e2: 4a05 ldr r2, [pc, #20] @ (80017f8 ) + 80017e4: 4903 ldr r1, [pc, #12] @ (80017f4 ) + 80017e6: 4805 ldr r0, [pc, #20] @ (80017fc ) + 80017e8: f003 fd72 bl 80052d0 } } osDelay(1); - 80017f0: 2001 movs r0, #1 - 80017f2: f00a fe9c bl 800c52e + 80017ec: 2001 movs r0, #1 + 80017ee: f00b f958 bl 800caa2 if (ICD.active_ch == 0) - 80017f6: e7c9 b.n 800178c - 80017f8: 20001ea4 .word 0x20001ea4 - 80017fc: 2000008c .word 0x2000008c - 8001800: 200000f0 .word 0x200000f0 + 80017f2: e7c9 b.n 8001788 + 80017f4: 20001ea4 .word 0x20001ea4 + 80017f8: 2000008c .word 0x2000008c + 80017fc: 200000f0 .word 0x200000f0 -08001804 : +08001800 : * @param argument: Not used * @retval None */ /* USER CODE END Header_StartControlTask */ void StartControlTask(void const * argument) { - 8001804: b580 push {r7, lr} - 8001806: b082 sub sp, #8 - 8001808: af00 add r7, sp, #0 - 800180a: 6078 str r0, [r7, #4] + 8001800: b580 push {r7, lr} + 8001802: b082 sub sp, #8 + 8001804: af00 add r7, sp, #0 + 8001806: 6078 str r0, [r7, #4] /* USER CODE BEGIN StartControlTask */ /* Infinite loop */ for (;;) { terapy_algorithm(&ICD); - 800180c: 4803 ldr r0, [pc, #12] @ (800181c ) - 800180e: f001 f869 bl 80028e4 + 8001808: 4803 ldr r0, [pc, #12] @ (8001818 ) + 800180a: f001 f893 bl 8002934 osDelay(100); - 8001812: 2064 movs r0, #100 @ 0x64 - 8001814: f00a fe8b bl 800c52e + 800180e: 2064 movs r0, #100 @ 0x64 + 8001810: f00b f947 bl 800caa2 terapy_algorithm(&ICD); - 8001818: bf00 nop - 800181a: e7f7 b.n 800180c - 800181c: 20001ea4 .word 0x20001ea4 + 8001814: bf00 nop + 8001816: e7f7 b.n 8001808 + 8001818: 20001ea4 .word 0x20001ea4 -08001820 : +0800181c : * @param argument: Not used * @retval None */ /* USER CODE END Header_StartLowSpeedTask */ void StartLowSpeedTask(void const * argument) { - 8001820: b580 push {r7, lr} - 8001822: b084 sub sp, #16 - 8001824: af00 add r7, sp, #0 - 8001826: 6078 str r0, [r7, #4] + 800181c: b580 push {r7, lr} + 800181e: b084 sub sp, #16 + 8001820: af00 add r7, sp, #0 + 8001822: 6078 str r0, [r7, #4] /* USER CODE BEGIN StartLowSpeedTask */ static uint8_t buff[16]; HAL_StatusTypeDef status; HAL_GPIO_WritePin(POT_PWR_GPIO_Port, POT_PWR_Pin, GPIO_PIN_SET); - 8001828: 2201 movs r2, #1 - 800182a: f44f 4180 mov.w r1, #16384 @ 0x4000 - 800182e: 480e ldr r0, [pc, #56] @ (8001868 ) - 8001830: f005 ffe8 bl 8007804 + 8001824: 2201 movs r2, #1 + 8001826: f44f 4180 mov.w r1, #16384 @ 0x4000 + 800182a: 480e ldr r0, [pc, #56] @ (8001864 ) + 800182c: f006 f914 bl 8007a58 osDelay(100); - 8001834: 2064 movs r0, #100 @ 0x64 - 8001836: f00a fe7a bl 800c52e + 8001830: 2064 movs r0, #100 @ 0x64 + 8001832: f00b f936 bl 800caa2 /* Infinite loop */ for (;;) { POT_cheek(&ICD.spi_pot_set, &ICD.spi_pot_now); - 800183a: 490c ldr r1, [pc, #48] @ (800186c ) - 800183c: 480c ldr r0, [pc, #48] @ (8001870 ) - 800183e: f002 fbf5 bl 800402c + 8001836: 490c ldr r1, [pc, #48] @ (8001868 ) + 8001838: 480c ldr r0, [pc, #48] @ (800186c ) + 800183a: f002 fc8f bl 800415c status = HAL_UART_Receive_DMA(&huart1, (uint8_t*) buff, 7); - 8001842: 2207 movs r2, #7 - 8001844: 490b ldr r1, [pc, #44] @ (8001874 ) - 8001846: 480c ldr r0, [pc, #48] @ (8001878 ) - 8001848: f009 fc8c bl 800b164 - 800184c: 4603 mov r3, r0 - 800184e: 73fb strb r3, [r7, #15] + 800183e: 2207 movs r2, #7 + 8001840: 490b ldr r1, [pc, #44] @ (8001870 ) + 8001842: 480c ldr r0, [pc, #48] @ (8001874 ) + 8001844: f009 ff48 bl 800b6d8 + 8001848: 4603 mov r3, r0 + 800184a: 73fb strb r3, [r7, #15] osDelay(10); - 8001850: 200a movs r0, #10 - 8001852: f00a fe6c bl 800c52e + 800184c: 200a movs r0, #10 + 800184e: f00b f928 bl 800caa2 if (status == HAL_OK) - 8001856: 7bfb ldrb r3, [r7, #15] - 8001858: 2b00 cmp r3, #0 - 800185a: d1ee bne.n 800183a + 8001852: 7bfb ldrb r3, [r7, #15] + 8001854: 2b00 cmp r3, #0 + 8001856: d1ee bne.n 8001836 parse_command(buff, &ICD); - 800185c: 4907 ldr r1, [pc, #28] @ (800187c ) - 800185e: 4805 ldr r0, [pc, #20] @ (8001874 ) - 8001860: f001 fd90 bl 8003384 + 8001858: 4907 ldr r1, [pc, #28] @ (8001878 ) + 800185a: 4805 ldr r0, [pc, #20] @ (8001870 ) + 800185c: f001 fdee bl 800343c POT_cheek(&ICD.spi_pot_set, &ICD.spi_pot_now); - 8001864: e7e9 b.n 800183a - 8001866: bf00 nop - 8001868: 40020400 .word 0x40020400 - 800186c: 20001f71 .word 0x20001f71 - 8001870: 20001f70 .word 0x20001f70 - 8001874: 20001e94 .word 0x20001e94 - 8001878: 200022a8 .word 0x200022a8 - 800187c: 20001ea4 .word 0x20001ea4 + 8001860: e7e9 b.n 8001836 + 8001862: bf00 nop + 8001864: 40020400 .word 0x40020400 + 8001868: 20001f71 .word 0x20001f71 + 800186c: 20001f70 .word 0x20001f70 + 8001870: 20001e94 .word 0x20001e94 + 8001874: 200022f0 .word 0x200022f0 + 8001878: 20001ea4 .word 0x20001ea4 -08001880 : +0800187c : * @param argument: Not used * @retval None */ /* USER CODE END Header_StartButTask */ void StartButTask(void const * argument) { - 8001880: b580 push {r7, lr} - 8001882: b082 sub sp, #8 - 8001884: af00 add r7, sp, #0 - 8001886: 6078 str r0, [r7, #4] + 800187c: b580 push {r7, lr} + 800187e: b082 sub sp, #8 + 8001880: af00 add r7, sp, #0 + 8001882: 6078 str r0, [r7, #4] /* USER CODE BEGIN StartButTask */ /* Infinite loop */ for (;;) { - if (HAL_GPIO_ReadPin(BUT_1_GPIO_Port, BUT_1_Pin) == GPIO_PIN_SET) - 8001888: 2101 movs r1, #1 - 800188a: 4811 ldr r0, [pc, #68] @ (80018d0 ) - 800188c: f005 ff9a bl 80077c4 - 8001890: 4603 mov r3, r0 - 8001892: 2b01 cmp r3, #1 - 8001894: d115 bne.n 80018c2 + //отрабатываем кнопку только если не в режиме заряда и нет напряжения на КОНДЕНСАТОРЕ + if (HAL_GPIO_ReadPin(BUT_1_GPIO_Port, BUT_1_Pin) == GPIO_PIN_SET + 8001884: 2101 movs r1, #1 + 8001886: 4815 ldr r0, [pc, #84] @ (80018dc ) + 8001888: f006 f8c6 bl 8007a18 + 800188c: 4603 mov r3, r0 + 800188e: 2b01 cmp r3, #1 + 8001890: d11d bne.n 80018ce + && ICD.work_set_mode == Monitor && adc_str.hv_volt < SAFE_VOLTAGE) + 8001892: 4b13 ldr r3, [pc, #76] @ (80018e0 ) + 8001894: 781b ldrb r3, [r3, #0] + 8001896: 2b00 cmp r3, #0 + 8001898: d119 bne.n 80018ce + 800189a: 4b12 ldr r3, [pc, #72] @ (80018e4 ) + 800189c: 8a1b ldrh r3, [r3, #16] + 800189e: 2b63 cmp r3, #99 @ 0x63 + 80018a0: d815 bhi.n 80018ce { Control.btn_1_state = true; - 8001896: 4b0f ldr r3, [pc, #60] @ (80018d4 ) - 8001898: 2201 movs r2, #1 - 800189a: 709a strb r2, [r3, #2] + 80018a2: 4b11 ldr r3, [pc, #68] @ (80018e8 ) + 80018a4: 2201 movs r2, #1 + 80018a6: 709a strb r2, [r3, #2] Control.btn_1_cnt++; - 800189c: 4b0d ldr r3, [pc, #52] @ (80018d4 ) - 800189e: 685b ldr r3, [r3, #4] - 80018a0: 3301 adds r3, #1 - 80018a2: 4a0c ldr r2, [pc, #48] @ (80018d4 ) - 80018a4: 6053 str r3, [r2, #4] + 80018a8: 4b0f ldr r3, [pc, #60] @ (80018e8 ) + 80018aa: 685b ldr r3, [r3, #4] + 80018ac: 3301 adds r3, #1 + 80018ae: 4a0e ldr r2, [pc, #56] @ (80018e8 ) + 80018b0: 6053 str r3, [r2, #4] if (Control.btn_1_cnt > BUT_CNT) - 80018a6: 4b0b ldr r3, [pc, #44] @ (80018d4 ) - 80018a8: 685b ldr r3, [r3, #4] - 80018aa: 2b1e cmp r3, #30 - 80018ac: ddec ble.n 8001888 + 80018b2: 4b0d ldr r3, [pc, #52] @ (80018e8 ) + 80018b4: 685b ldr r3, [r3, #4] + 80018b6: 2b1e cmp r3, #30 + 80018b8: dd0f ble.n 80018da { Control.set_mode = Sleep; //идем вверх по режимам - 80018ae: 4b09 ldr r3, [pc, #36] @ (80018d4 ) - 80018b0: 2203 movs r2, #3 - 80018b2: 701a strb r2, [r3, #0] + 80018ba: 4b0b ldr r3, [pc, #44] @ (80018e8 ) + 80018bc: 2203 movs r2, #3 + 80018be: 701a strb r2, [r3, #0] osDelay(4000); - 80018b4: f44f 607a mov.w r0, #4000 @ 0xfa0 - 80018b8: f00a fe39 bl 800c52e + 80018c0: f44f 607a mov.w r0, #4000 @ 0xfa0 + 80018c4: f00b f8ed bl 800caa2 lets_sleep(); - 80018bc: f7ff fdb4 bl 8001428 - 80018c0: e7e2 b.n 8001888 + 80018c8: f7ff fdac bl 8001424 + if (Control.btn_1_cnt > BUT_CNT) + 80018cc: e005 b.n 80018da } } else { Control.btn_1_state = false; - 80018c2: 4b04 ldr r3, [pc, #16] @ (80018d4 ) - 80018c4: 2200 movs r2, #0 - 80018c6: 709a strb r2, [r3, #2] + 80018ce: 4b06 ldr r3, [pc, #24] @ (80018e8 ) + 80018d0: 2200 movs r2, #0 + 80018d2: 709a strb r2, [r3, #2] Control.btn_1_cnt = 0; - 80018c8: 4b02 ldr r3, [pc, #8] @ (80018d4 ) - 80018ca: 2200 movs r2, #0 - 80018cc: 605a str r2, [r3, #4] - if (HAL_GPIO_ReadPin(BUT_1_GPIO_Port, BUT_1_Pin) == GPIO_PIN_SET) - 80018ce: e7db b.n 8001888 - 80018d0: 40020000 .word 0x40020000 - 80018d4: 200000f0 .word 0x200000f0 + 80018d4: 4b04 ldr r3, [pc, #16] @ (80018e8 ) + 80018d6: 2200 movs r2, #0 + 80018d8: 605a str r2, [r3, #4] + if (HAL_GPIO_ReadPin(BUT_1_GPIO_Port, BUT_1_Pin) == GPIO_PIN_SET + 80018da: e7d3 b.n 8001884 + 80018dc: 40020000 .word 0x40020000 + 80018e0: 20001ea4 .word 0x20001ea4 + 80018e4: 2000008c .word 0x2000008c + 80018e8: 200000f0 .word 0x200000f0 -080018d8 : +080018ec : * EXTI * Free pins are configured automatically as Analog (this feature is enabled through * the Code Generation settings) */ void MX_GPIO_Init(void) { - 80018d8: b580 push {r7, lr} - 80018da: b08c sub sp, #48 @ 0x30 - 80018dc: af00 add r7, sp, #0 + 80018ec: b580 push {r7, lr} + 80018ee: b08c sub sp, #48 @ 0x30 + 80018f0: af00 add r7, sp, #0 GPIO_InitTypeDef GPIO_InitStruct = {0}; - 80018de: f107 031c add.w r3, r7, #28 - 80018e2: 2200 movs r2, #0 - 80018e4: 601a str r2, [r3, #0] - 80018e6: 605a str r2, [r3, #4] - 80018e8: 609a str r2, [r3, #8] - 80018ea: 60da str r2, [r3, #12] - 80018ec: 611a str r2, [r3, #16] + 80018f2: f107 031c add.w r3, r7, #28 + 80018f6: 2200 movs r2, #0 + 80018f8: 601a str r2, [r3, #0] + 80018fa: 605a str r2, [r3, #4] + 80018fc: 609a str r2, [r3, #8] + 80018fe: 60da str r2, [r3, #12] + 8001900: 611a str r2, [r3, #16] /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOE_CLK_ENABLE(); - 80018ee: 2300 movs r3, #0 - 80018f0: 61bb str r3, [r7, #24] - 80018f2: 4b9b ldr r3, [pc, #620] @ (8001b60 ) - 80018f4: 6b1b ldr r3, [r3, #48] @ 0x30 - 80018f6: 4a9a ldr r2, [pc, #616] @ (8001b60 ) - 80018f8: f043 0310 orr.w r3, r3, #16 - 80018fc: 6313 str r3, [r2, #48] @ 0x30 - 80018fe: 4b98 ldr r3, [pc, #608] @ (8001b60 ) - 8001900: 6b1b ldr r3, [r3, #48] @ 0x30 - 8001902: f003 0310 and.w r3, r3, #16 - 8001906: 61bb str r3, [r7, #24] - 8001908: 69bb ldr r3, [r7, #24] + 8001902: 2300 movs r3, #0 + 8001904: 61bb str r3, [r7, #24] + 8001906: 4b9a ldr r3, [pc, #616] @ (8001b70 ) + 8001908: 6b1b ldr r3, [r3, #48] @ 0x30 + 800190a: 4a99 ldr r2, [pc, #612] @ (8001b70 ) + 800190c: f043 0310 orr.w r3, r3, #16 + 8001910: 6313 str r3, [r2, #48] @ 0x30 + 8001912: 4b97 ldr r3, [pc, #604] @ (8001b70 ) + 8001914: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001916: f003 0310 and.w r3, r3, #16 + 800191a: 61bb str r3, [r7, #24] + 800191c: 69bb ldr r3, [r7, #24] __HAL_RCC_GPIOC_CLK_ENABLE(); - 800190a: 2300 movs r3, #0 - 800190c: 617b str r3, [r7, #20] - 800190e: 4b94 ldr r3, [pc, #592] @ (8001b60 ) - 8001910: 6b1b ldr r3, [r3, #48] @ 0x30 - 8001912: 4a93 ldr r2, [pc, #588] @ (8001b60 ) - 8001914: f043 0304 orr.w r3, r3, #4 - 8001918: 6313 str r3, [r2, #48] @ 0x30 - 800191a: 4b91 ldr r3, [pc, #580] @ (8001b60 ) - 800191c: 6b1b ldr r3, [r3, #48] @ 0x30 - 800191e: f003 0304 and.w r3, r3, #4 - 8001922: 617b str r3, [r7, #20] - 8001924: 697b ldr r3, [r7, #20] + 800191e: 2300 movs r3, #0 + 8001920: 617b str r3, [r7, #20] + 8001922: 4b93 ldr r3, [pc, #588] @ (8001b70 ) + 8001924: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001926: 4a92 ldr r2, [pc, #584] @ (8001b70 ) + 8001928: f043 0304 orr.w r3, r3, #4 + 800192c: 6313 str r3, [r2, #48] @ 0x30 + 800192e: 4b90 ldr r3, [pc, #576] @ (8001b70 ) + 8001930: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001932: f003 0304 and.w r3, r3, #4 + 8001936: 617b str r3, [r7, #20] + 8001938: 697b ldr r3, [r7, #20] __HAL_RCC_GPIOH_CLK_ENABLE(); - 8001926: 2300 movs r3, #0 - 8001928: 613b str r3, [r7, #16] - 800192a: 4b8d ldr r3, [pc, #564] @ (8001b60 ) - 800192c: 6b1b ldr r3, [r3, #48] @ 0x30 - 800192e: 4a8c ldr r2, [pc, #560] @ (8001b60 ) - 8001930: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8001934: 6313 str r3, [r2, #48] @ 0x30 - 8001936: 4b8a ldr r3, [pc, #552] @ (8001b60 ) - 8001938: 6b1b ldr r3, [r3, #48] @ 0x30 - 800193a: f003 0380 and.w r3, r3, #128 @ 0x80 - 800193e: 613b str r3, [r7, #16] - 8001940: 693b ldr r3, [r7, #16] + 800193a: 2300 movs r3, #0 + 800193c: 613b str r3, [r7, #16] + 800193e: 4b8c ldr r3, [pc, #560] @ (8001b70 ) + 8001940: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001942: 4a8b ldr r2, [pc, #556] @ (8001b70 ) + 8001944: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8001948: 6313 str r3, [r2, #48] @ 0x30 + 800194a: 4b89 ldr r3, [pc, #548] @ (8001b70 ) + 800194c: 6b1b ldr r3, [r3, #48] @ 0x30 + 800194e: f003 0380 and.w r3, r3, #128 @ 0x80 + 8001952: 613b str r3, [r7, #16] + 8001954: 693b ldr r3, [r7, #16] __HAL_RCC_GPIOA_CLK_ENABLE(); - 8001942: 2300 movs r3, #0 - 8001944: 60fb str r3, [r7, #12] - 8001946: 4b86 ldr r3, [pc, #536] @ (8001b60 ) - 8001948: 6b1b ldr r3, [r3, #48] @ 0x30 - 800194a: 4a85 ldr r2, [pc, #532] @ (8001b60 ) - 800194c: f043 0301 orr.w r3, r3, #1 - 8001950: 6313 str r3, [r2, #48] @ 0x30 - 8001952: 4b83 ldr r3, [pc, #524] @ (8001b60 ) - 8001954: 6b1b ldr r3, [r3, #48] @ 0x30 - 8001956: f003 0301 and.w r3, r3, #1 - 800195a: 60fb str r3, [r7, #12] - 800195c: 68fb ldr r3, [r7, #12] + 8001956: 2300 movs r3, #0 + 8001958: 60fb str r3, [r7, #12] + 800195a: 4b85 ldr r3, [pc, #532] @ (8001b70 ) + 800195c: 6b1b ldr r3, [r3, #48] @ 0x30 + 800195e: 4a84 ldr r2, [pc, #528] @ (8001b70 ) + 8001960: f043 0301 orr.w r3, r3, #1 + 8001964: 6313 str r3, [r2, #48] @ 0x30 + 8001966: 4b82 ldr r3, [pc, #520] @ (8001b70 ) + 8001968: 6b1b ldr r3, [r3, #48] @ 0x30 + 800196a: f003 0301 and.w r3, r3, #1 + 800196e: 60fb str r3, [r7, #12] + 8001970: 68fb ldr r3, [r7, #12] __HAL_RCC_GPIOB_CLK_ENABLE(); - 800195e: 2300 movs r3, #0 - 8001960: 60bb str r3, [r7, #8] - 8001962: 4b7f ldr r3, [pc, #508] @ (8001b60 ) - 8001964: 6b1b ldr r3, [r3, #48] @ 0x30 - 8001966: 4a7e ldr r2, [pc, #504] @ (8001b60 ) - 8001968: f043 0302 orr.w r3, r3, #2 - 800196c: 6313 str r3, [r2, #48] @ 0x30 - 800196e: 4b7c ldr r3, [pc, #496] @ (8001b60 ) - 8001970: 6b1b ldr r3, [r3, #48] @ 0x30 - 8001972: f003 0302 and.w r3, r3, #2 - 8001976: 60bb str r3, [r7, #8] - 8001978: 68bb ldr r3, [r7, #8] + 8001972: 2300 movs r3, #0 + 8001974: 60bb str r3, [r7, #8] + 8001976: 4b7e ldr r3, [pc, #504] @ (8001b70 ) + 8001978: 6b1b ldr r3, [r3, #48] @ 0x30 + 800197a: 4a7d ldr r2, [pc, #500] @ (8001b70 ) + 800197c: f043 0302 orr.w r3, r3, #2 + 8001980: 6313 str r3, [r2, #48] @ 0x30 + 8001982: 4b7b ldr r3, [pc, #492] @ (8001b70 ) + 8001984: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001986: f003 0302 and.w r3, r3, #2 + 800198a: 60bb str r3, [r7, #8] + 800198c: 68bb ldr r3, [r7, #8] __HAL_RCC_GPIOD_CLK_ENABLE(); - 800197a: 2300 movs r3, #0 - 800197c: 607b str r3, [r7, #4] - 800197e: 4b78 ldr r3, [pc, #480] @ (8001b60 ) - 8001980: 6b1b ldr r3, [r3, #48] @ 0x30 - 8001982: 4a77 ldr r2, [pc, #476] @ (8001b60 ) - 8001984: f043 0308 orr.w r3, r3, #8 - 8001988: 6313 str r3, [r2, #48] @ 0x30 - 800198a: 4b75 ldr r3, [pc, #468] @ (8001b60 ) - 800198c: 6b1b ldr r3, [r3, #48] @ 0x30 - 800198e: f003 0308 and.w r3, r3, #8 - 8001992: 607b str r3, [r7, #4] - 8001994: 687b ldr r3, [r7, #4] + 800198e: 2300 movs r3, #0 + 8001990: 607b str r3, [r7, #4] + 8001992: 4b77 ldr r3, [pc, #476] @ (8001b70 ) + 8001994: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001996: 4a76 ldr r2, [pc, #472] @ (8001b70 ) + 8001998: f043 0308 orr.w r3, r3, #8 + 800199c: 6313 str r3, [r2, #48] @ 0x30 + 800199e: 4b74 ldr r3, [pc, #464] @ (8001b70 ) + 80019a0: 6b1b ldr r3, [r3, #48] @ 0x30 + 80019a2: f003 0308 and.w r3, r3, #8 + 80019a6: 607b str r3, [r7, #4] + 80019a8: 687b ldr r3, [r7, #4] /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOE, RV_LV_COIL_TO_GND_Pin|RV_LV_TIP_TO_GND_Pin|INA_PWR_Pin|COMP_PWR_Pin - 8001996: 2200 movs r2, #0 - 8001998: f248 518c movw r1, #34188 @ 0x858c - 800199c: 4871 ldr r0, [pc, #452] @ (8001b64 ) - 800199e: f005 ff31 bl 8007804 + 80019aa: 2200 movs r2, #0 + 80019ac: f248 518c movw r1, #34188 @ 0x858c + 80019b0: 4870 ldr r0, [pc, #448] @ (8001b74 ) + 80019b2: f006 f851 bl 8007a58 |DOP_PWR_Pin|HV_DIS_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOE, V12_PWR_Pin|HV_LOGIC_PWR_Pin|RV_LV_DIS_Pin, GPIO_PIN_SET); - 80019a2: 2201 movs r2, #1 - 80019a4: 2113 movs r1, #19 - 80019a6: 486f ldr r0, [pc, #444] @ (8001b64 ) - 80019a8: f005 ff2c bl 8007804 + 80019b6: 2201 movs r2, #1 + 80019b8: 2113 movs r1, #19 + 80019ba: 486e ldr r0, [pc, #440] @ (8001b74 ) + 80019bc: f006 f84c bl 8007a58 /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(RA_LV_SHOCK_GPIO_Port, RA_LV_SHOCK_Pin, GPIO_PIN_SET); - 80019ac: 2201 movs r2, #1 - 80019ae: 2180 movs r1, #128 @ 0x80 - 80019b0: 486d ldr r0, [pc, #436] @ (8001b68 ) - 80019b2: f005 ff27 bl 8007804 + 80019c0: 2201 movs r2, #1 + 80019c2: 2180 movs r1, #128 @ 0x80 + 80019c4: 486c ldr r0, [pc, #432] @ (8001b78 ) + 80019c6: f006 f847 bl 8007a58 /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOB, RA_LV_DIS_Pin|HV_EN_RV_Pin|RV_LV_SHOCK_Pin, GPIO_PIN_SET); - 80019b6: 2201 movs r2, #1 - 80019b8: f240 2111 movw r1, #529 @ 0x211 - 80019bc: 486b ldr r0, [pc, #428] @ (8001b6c ) - 80019be: f005 ff21 bl 8007804 + HAL_GPIO_WritePin(GPIOB, RA_LV_DIS_Pin|HV_EN_RV_Pin, GPIO_PIN_SET); + 80019ca: 2201 movs r2, #1 + 80019cc: 2111 movs r1, #17 + 80019ce: 486b ldr r0, [pc, #428] @ (8001b7c ) + 80019d0: f006 f842 bl 8007a58 /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOB, RA_LV_COIL_TO_GND_Pin|RA_LV_TIP_TO_GND_Pin|CAN_LV_TO_GND_Pin|POT_CS_1_Pin - 80019c2: 2200 movs r2, #0 - 80019c4: f245 412e movw r1, #21550 @ 0x542e - 80019c8: 4868 ldr r0, [pc, #416] @ (8001b6c ) - 80019ca: f005 ff1b bl 8007804 + 80019d4: 2200 movs r2, #0 + 80019d6: f245 412e movw r1, #21550 @ 0x542e + 80019da: 4868 ldr r0, [pc, #416] @ (8001b7c ) + 80019dc: f006 f83c bl 8007a58 |POT_PWR_Pin|HV_HS_RV_Pin|HV_LS_RV_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOD, POT_CS_4_Pin|POT_CS_5_Pin|POT_CS_6_Pin|LV_LV_TIP_TO_GND_Pin - 80019ce: 2200 movs r2, #0 - 80019d0: f244 71b5 movw r1, #18357 @ 0x47b5 - 80019d4: 4866 ldr r0, [pc, #408] @ (8001b70 ) - 80019d6: f005 ff15 bl 8007804 + 80019e0: 2200 movs r2, #0 + 80019e2: f244 71b5 movw r1, #18357 @ 0x47b5 + 80019e6: 4866 ldr r0, [pc, #408] @ (8001b80 ) + 80019e8: f006 f836 bl 8007a58 |ADXL_CS_Pin|HV_HS_CAN_Pin|HV_LS_CAN_Pin|HV_HS_SCV_Pin |HV_LS_SCV_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOD, RA_RELAY_Pin|RV_RELAY_Pin|CAN_RELAY_Pin|LV_LV_DIS_Pin - 80019da: 2201 movs r2, #1 - 80019dc: f64b 0148 movw r1, #47176 @ 0xb848 - 80019e0: 4863 ldr r0, [pc, #396] @ (8001b70 ) - 80019e2: f005 ff0f bl 8007804 + 80019ec: 2201 movs r2, #1 + 80019ee: f64b 0148 movw r1, #47176 @ 0xb848 + 80019f2: 4863 ldr r0, [pc, #396] @ (8001b80 ) + 80019f4: f006 f830 bl 8007a58 |HV_EN_CAN_Pin|HV_EN_SCV_Pin, GPIO_PIN_SET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(LV_LV_SHOCK_GPIO_Port, LV_LV_SHOCK_Pin, GPIO_PIN_SET); - 80019e6: 2201 movs r2, #1 - 80019e8: f44f 7100 mov.w r1, #512 @ 0x200 - 80019ec: 4861 ldr r0, [pc, #388] @ (8001b74 ) - 80019ee: f005 ff09 bl 8007804 + 80019f8: 2201 movs r2, #1 + 80019fa: f44f 7100 mov.w r1, #512 @ 0x200 + 80019fe: 4861 ldr r0, [pc, #388] @ (8001b84 ) + 8001a00: f006 f82a bl 8007a58 /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOA, LV_LV_COIL_TO_GND_Pin|BLE_PWRC_Pin|BLE_PWR_Pin|ADXL_PWR_Pin, GPIO_PIN_RESET); - 80019f2: 2200 movs r2, #0 - 80019f4: f44f 4119 mov.w r1, #39168 @ 0x9900 - 80019f8: 485b ldr r0, [pc, #364] @ (8001b68 ) - 80019fa: f005 ff03 bl 8007804 + 8001a04: 2200 movs r2, #0 + 8001a06: f44f 4119 mov.w r1, #39168 @ 0x9900 + 8001a0a: 485b ldr r0, [pc, #364] @ (8001b78 ) + 8001a0c: f006 f824 bl 8007a58 /*Configure GPIO pins : PEPin PEPin PEPin PEPin PEPin PEPin PEPin */ GPIO_InitStruct.Pin = RV_LV_COIL_TO_GND_Pin|RV_LV_TIP_TO_GND_Pin|INA_PWR_Pin|COMP_PWR_Pin - 80019fe: f240 538f movw r3, #1423 @ 0x58f - 8001a02: 61fb str r3, [r7, #28] + 8001a10: f240 538f movw r3, #1423 @ 0x58f + 8001a14: 61fb str r3, [r7, #28] |DOP_PWR_Pin|HV_LOGIC_PWR_Pin|RV_LV_DIS_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8001a04: 2301 movs r3, #1 - 8001a06: 623b str r3, [r7, #32] + 8001a16: 2301 movs r3, #1 + 8001a18: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001a08: 2300 movs r3, #0 - 8001a0a: 627b str r3, [r7, #36] @ 0x24 + 8001a1a: 2300 movs r3, #0 + 8001a1c: 627b str r3, [r7, #36] @ 0x24 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 8001a0c: 2303 movs r3, #3 - 8001a0e: 62bb str r3, [r7, #40] @ 0x28 + 8001a1e: 2303 movs r3, #3 + 8001a20: 62bb str r3, [r7, #40] @ 0x28 HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); - 8001a10: f107 031c add.w r3, r7, #28 - 8001a14: 4619 mov r1, r3 - 8001a16: 4853 ldr r0, [pc, #332] @ (8001b64 ) - 8001a18: f005 fc90 bl 800733c + 8001a22: f107 031c add.w r3, r7, #28 + 8001a26: 4619 mov r1, r3 + 8001a28: 4852 ldr r0, [pc, #328] @ (8001b74 ) + 8001a2a: f005 fdb1 bl 8007590 /*Configure GPIO pins : PEPin PEPin */ GPIO_InitStruct.Pin = V12_PWR_Pin|HV_DIS_Pin; - 8001a1c: f248 0310 movw r3, #32784 @ 0x8010 - 8001a20: 61fb str r3, [r7, #28] + 8001a2e: f248 0310 movw r3, #32784 @ 0x8010 + 8001a32: 61fb str r3, [r7, #28] GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8001a22: 2301 movs r3, #1 - 8001a24: 623b str r3, [r7, #32] + 8001a34: 2301 movs r3, #1 + 8001a36: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001a26: 2300 movs r3, #0 - 8001a28: 627b str r3, [r7, #36] @ 0x24 + 8001a38: 2300 movs r3, #0 + 8001a3a: 627b str r3, [r7, #36] @ 0x24 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8001a2a: 2300 movs r3, #0 - 8001a2c: 62bb str r3, [r7, #40] @ 0x28 + 8001a3c: 2300 movs r3, #0 + 8001a3e: 62bb str r3, [r7, #40] @ 0x28 HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); - 8001a2e: f107 031c add.w r3, r7, #28 - 8001a32: 4619 mov r1, r3 - 8001a34: 484b ldr r0, [pc, #300] @ (8001b64 ) - 8001a36: f005 fc81 bl 800733c + 8001a40: f107 031c add.w r3, r7, #28 + 8001a44: 4619 mov r1, r3 + 8001a46: 484b ldr r0, [pc, #300] @ (8001b74 ) + 8001a48: f005 fda2 bl 8007590 /*Configure GPIO pins : PE5 PE12 */ GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_12; - 8001a3a: f44f 5381 mov.w r3, #4128 @ 0x1020 - 8001a3e: 61fb str r3, [r7, #28] + 8001a4c: f44f 5381 mov.w r3, #4128 @ 0x1020 + 8001a50: 61fb str r3, [r7, #28] GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; - 8001a40: 2303 movs r3, #3 - 8001a42: 623b str r3, [r7, #32] + 8001a52: 2303 movs r3, #3 + 8001a54: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001a44: 2300 movs r3, #0 - 8001a46: 627b str r3, [r7, #36] @ 0x24 + 8001a56: 2300 movs r3, #0 + 8001a58: 627b str r3, [r7, #36] @ 0x24 HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); - 8001a48: f107 031c add.w r3, r7, #28 - 8001a4c: 4619 mov r1, r3 - 8001a4e: 4845 ldr r0, [pc, #276] @ (8001b64 ) - 8001a50: f005 fc74 bl 800733c + 8001a5a: f107 031c add.w r3, r7, #28 + 8001a5e: 4619 mov r1, r3 + 8001a60: 4844 ldr r0, [pc, #272] @ (8001b74 ) + 8001a62: f005 fd95 bl 8007590 /*Configure GPIO pins : PC13 PC0 */ GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_0; - 8001a54: f242 0301 movw r3, #8193 @ 0x2001 - 8001a58: 61fb str r3, [r7, #28] + 8001a66: f242 0301 movw r3, #8193 @ 0x2001 + 8001a6a: 61fb str r3, [r7, #28] GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; - 8001a5a: 2303 movs r3, #3 - 8001a5c: 623b str r3, [r7, #32] + 8001a6c: 2303 movs r3, #3 + 8001a6e: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001a5e: 2300 movs r3, #0 - 8001a60: 627b str r3, [r7, #36] @ 0x24 + 8001a70: 2300 movs r3, #0 + 8001a72: 627b str r3, [r7, #36] @ 0x24 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - 8001a62: f107 031c add.w r3, r7, #28 - 8001a66: 4619 mov r1, r3 - 8001a68: 4842 ldr r0, [pc, #264] @ (8001b74 ) - 8001a6a: f005 fc67 bl 800733c + 8001a74: f107 031c add.w r3, r7, #28 + 8001a78: 4619 mov r1, r3 + 8001a7a: 4842 ldr r0, [pc, #264] @ (8001b84 ) + 8001a7c: f005 fd88 bl 8007590 /*Configure GPIO pin : PtPin */ GPIO_InitStruct.Pin = RA_LV_SHOCK_Pin; - 8001a6e: 2380 movs r3, #128 @ 0x80 - 8001a70: 61fb str r3, [r7, #28] + 8001a80: 2380 movs r3, #128 @ 0x80 + 8001a82: 61fb str r3, [r7, #28] GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8001a72: 2301 movs r3, #1 - 8001a74: 623b str r3, [r7, #32] + 8001a84: 2301 movs r3, #1 + 8001a86: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001a76: 2300 movs r3, #0 - 8001a78: 627b str r3, [r7, #36] @ 0x24 + 8001a88: 2300 movs r3, #0 + 8001a8a: 627b str r3, [r7, #36] @ 0x24 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 8001a7a: 2303 movs r3, #3 - 8001a7c: 62bb str r3, [r7, #40] @ 0x28 + 8001a8c: 2303 movs r3, #3 + 8001a8e: 62bb str r3, [r7, #40] @ 0x28 HAL_GPIO_Init(RA_LV_SHOCK_GPIO_Port, &GPIO_InitStruct); - 8001a7e: f107 031c add.w r3, r7, #28 - 8001a82: 4619 mov r1, r3 - 8001a84: 4838 ldr r0, [pc, #224] @ (8001b68 ) - 8001a86: f005 fc59 bl 800733c + 8001a90: f107 031c add.w r3, r7, #28 + 8001a94: 4619 mov r1, r3 + 8001a96: 4838 ldr r0, [pc, #224] @ (8001b78 ) + 8001a98: f005 fd7a bl 8007590 /*Configure GPIO pins : PBPin PBPin PBPin PBPin - PBPin PBPin PBPin PBPin - PBPin */ + PBPin PBPin PBPin PBPin */ GPIO_InitStruct.Pin = RA_LV_DIS_Pin|RA_LV_COIL_TO_GND_Pin|RA_LV_TIP_TO_GND_Pin|CAN_LV_TO_GND_Pin - 8001a8a: f244 633f movw r3, #17983 @ 0x463f - 8001a8e: 61fb str r3, [r7, #28] - |POT_PWR_Pin|HV_HS_RV_Pin|HV_EN_RV_Pin|HV_LS_RV_Pin - |RV_LV_SHOCK_Pin; + 8001a9c: f244 433f movw r3, #17471 @ 0x443f + 8001aa0: 61fb str r3, [r7, #28] + |POT_PWR_Pin|HV_HS_RV_Pin|HV_EN_RV_Pin|HV_LS_RV_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8001a90: 2301 movs r3, #1 - 8001a92: 623b str r3, [r7, #32] + 8001aa2: 2301 movs r3, #1 + 8001aa4: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001a94: 2300 movs r3, #0 - 8001a96: 627b str r3, [r7, #36] @ 0x24 + 8001aa6: 2300 movs r3, #0 + 8001aa8: 627b str r3, [r7, #36] @ 0x24 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 8001a98: 2303 movs r3, #3 - 8001a9a: 62bb str r3, [r7, #40] @ 0x28 + 8001aaa: 2303 movs r3, #3 + 8001aac: 62bb str r3, [r7, #40] @ 0x28 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 8001a9c: f107 031c add.w r3, r7, #28 - 8001aa0: 4619 mov r1, r3 - 8001aa2: 4832 ldr r0, [pc, #200] @ (8001b6c ) - 8001aa4: f005 fc4a bl 800733c + 8001aae: f107 031c add.w r3, r7, #28 + 8001ab2: 4619 mov r1, r3 + 8001ab4: 4831 ldr r0, [pc, #196] @ (8001b7c ) + 8001ab6: f005 fd6b bl 8007590 /*Configure GPIO pin : PtPin */ GPIO_InitStruct.Pin = POT_CS_1_Pin; - 8001aa8: f44f 5380 mov.w r3, #4096 @ 0x1000 - 8001aac: 61fb str r3, [r7, #28] + 8001aba: f44f 5380 mov.w r3, #4096 @ 0x1000 + 8001abe: 61fb str r3, [r7, #28] GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8001aae: 2301 movs r3, #1 - 8001ab0: 623b str r3, [r7, #32] + 8001ac0: 2301 movs r3, #1 + 8001ac2: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001ab2: 2300 movs r3, #0 - 8001ab4: 627b str r3, [r7, #36] @ 0x24 + 8001ac4: 2300 movs r3, #0 + 8001ac6: 627b str r3, [r7, #36] @ 0x24 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8001ab6: 2300 movs r3, #0 - 8001ab8: 62bb str r3, [r7, #40] @ 0x28 + 8001ac8: 2300 movs r3, #0 + 8001aca: 62bb str r3, [r7, #40] @ 0x28 HAL_GPIO_Init(POT_CS_1_GPIO_Port, &GPIO_InitStruct); - 8001aba: f107 031c add.w r3, r7, #28 - 8001abe: 4619 mov r1, r3 - 8001ac0: 482a ldr r0, [pc, #168] @ (8001b6c ) - 8001ac2: f005 fc3b bl 800733c + 8001acc: f107 031c add.w r3, r7, #28 + 8001ad0: 4619 mov r1, r3 + 8001ad2: 482a ldr r0, [pc, #168] @ (8001b7c ) + 8001ad4: f005 fd5c bl 8007590 /*Configure GPIO pins : PDPin PDPin PDPin PDPin PDPin PDPin */ GPIO_InitStruct.Pin = POT_CS_4_Pin|POT_CS_5_Pin|POT_CS_6_Pin|LV_LV_TIP_TO_GND_Pin - 8001ac6: f24c 7301 movw r3, #50945 @ 0xc701 - 8001aca: 61fb str r3, [r7, #28] + 8001ad8: f24c 7301 movw r3, #50945 @ 0xc701 + 8001adc: 61fb str r3, [r7, #28] |LV_LV_DIS_Pin|ADXL_CS_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8001acc: 2301 movs r3, #1 - 8001ace: 623b str r3, [r7, #32] + 8001ade: 2301 movs r3, #1 + 8001ae0: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001ad0: 2300 movs r3, #0 - 8001ad2: 627b str r3, [r7, #36] @ 0x24 + 8001ae2: 2300 movs r3, #0 + 8001ae4: 627b str r3, [r7, #36] @ 0x24 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8001ad4: 2300 movs r3, #0 - 8001ad6: 62bb str r3, [r7, #40] @ 0x28 + 8001ae6: 2300 movs r3, #0 + 8001ae8: 62bb str r3, [r7, #40] @ 0x28 HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - 8001ad8: f107 031c add.w r3, r7, #28 - 8001adc: 4619 mov r1, r3 - 8001ade: 4824 ldr r0, [pc, #144] @ (8001b70 ) - 8001ae0: f005 fc2c bl 800733c + 8001aea: f107 031c add.w r3, r7, #28 + 8001aee: 4619 mov r1, r3 + 8001af0: 4823 ldr r0, [pc, #140] @ (8001b80 ) + 8001af2: f005 fd4d bl 8007590 /*Configure GPIO pins : PDPin PDPin PDPin PDPin PDPin PDPin PDPin PDPin PDPin */ GPIO_InitStruct.Pin = RA_RELAY_Pin|RV_RELAY_Pin|CAN_RELAY_Pin|HV_HS_CAN_Pin - 8001ae4: f643 03fc movw r3, #14588 @ 0x38fc - 8001ae8: 61fb str r3, [r7, #28] + 8001af6: f643 03fc movw r3, #14588 @ 0x38fc + 8001afa: 61fb str r3, [r7, #28] |HV_EN_CAN_Pin|HV_LS_CAN_Pin|HV_HS_SCV_Pin|HV_EN_SCV_Pin |HV_LS_SCV_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8001aea: 2301 movs r3, #1 - 8001aec: 623b str r3, [r7, #32] + 8001afc: 2301 movs r3, #1 + 8001afe: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001aee: 2300 movs r3, #0 - 8001af0: 627b str r3, [r7, #36] @ 0x24 + 8001b00: 2300 movs r3, #0 + 8001b02: 627b str r3, [r7, #36] @ 0x24 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 8001af2: 2303 movs r3, #3 - 8001af4: 62bb str r3, [r7, #40] @ 0x28 + 8001b04: 2303 movs r3, #3 + 8001b06: 62bb str r3, [r7, #40] @ 0x28 HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - 8001af6: f107 031c add.w r3, r7, #28 - 8001afa: 4619 mov r1, r3 - 8001afc: 481c ldr r0, [pc, #112] @ (8001b70 ) - 8001afe: f005 fc1d bl 800733c + 8001b08: f107 031c add.w r3, r7, #28 + 8001b0c: 4619 mov r1, r3 + 8001b0e: 481c ldr r0, [pc, #112] @ (8001b80 ) + 8001b10: f005 fd3e bl 8007590 /*Configure GPIO pin : PtPin */ GPIO_InitStruct.Pin = LV_LV_SHOCK_Pin; - 8001b02: f44f 7300 mov.w r3, #512 @ 0x200 - 8001b06: 61fb str r3, [r7, #28] + 8001b14: f44f 7300 mov.w r3, #512 @ 0x200 + 8001b18: 61fb str r3, [r7, #28] GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8001b08: 2301 movs r3, #1 - 8001b0a: 623b str r3, [r7, #32] + 8001b1a: 2301 movs r3, #1 + 8001b1c: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001b0c: 2300 movs r3, #0 - 8001b0e: 627b str r3, [r7, #36] @ 0x24 + 8001b1e: 2300 movs r3, #0 + 8001b20: 627b str r3, [r7, #36] @ 0x24 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8001b10: 2300 movs r3, #0 - 8001b12: 62bb str r3, [r7, #40] @ 0x28 + 8001b22: 2300 movs r3, #0 + 8001b24: 62bb str r3, [r7, #40] @ 0x28 HAL_GPIO_Init(LV_LV_SHOCK_GPIO_Port, &GPIO_InitStruct); - 8001b14: f107 031c add.w r3, r7, #28 - 8001b18: 4619 mov r1, r3 - 8001b1a: 4816 ldr r0, [pc, #88] @ (8001b74 ) - 8001b1c: f005 fc0e bl 800733c + 8001b26: f107 031c add.w r3, r7, #28 + 8001b2a: 4619 mov r1, r3 + 8001b2c: 4815 ldr r0, [pc, #84] @ (8001b84 ) + 8001b2e: f005 fd2f bl 8007590 /*Configure GPIO pins : PAPin PAPin PAPin PAPin */ GPIO_InitStruct.Pin = LV_LV_COIL_TO_GND_Pin|BLE_PWRC_Pin|BLE_PWR_Pin|ADXL_PWR_Pin; - 8001b20: f44f 4319 mov.w r3, #39168 @ 0x9900 - 8001b24: 61fb str r3, [r7, #28] + 8001b32: f44f 4319 mov.w r3, #39168 @ 0x9900 + 8001b36: 61fb str r3, [r7, #28] GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8001b26: 2301 movs r3, #1 - 8001b28: 623b str r3, [r7, #32] + 8001b38: 2301 movs r3, #1 + 8001b3a: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001b2a: 2300 movs r3, #0 - 8001b2c: 627b str r3, [r7, #36] @ 0x24 + 8001b3c: 2300 movs r3, #0 + 8001b3e: 627b str r3, [r7, #36] @ 0x24 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8001b2e: 2300 movs r3, #0 - 8001b30: 62bb str r3, [r7, #40] @ 0x28 + 8001b40: 2300 movs r3, #0 + 8001b42: 62bb str r3, [r7, #40] @ 0x28 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 8001b32: f107 031c add.w r3, r7, #28 - 8001b36: 4619 mov r1, r3 - 8001b38: 480b ldr r0, [pc, #44] @ (8001b68 ) - 8001b3a: f005 fbff bl 800733c + 8001b44: f107 031c add.w r3, r7, #28 + 8001b48: 4619 mov r1, r3 + 8001b4a: 480b ldr r0, [pc, #44] @ (8001b78 ) + 8001b4c: f005 fd20 bl 8007590 /*Configure GPIO pin : PtPin */ GPIO_InitStruct.Pin = ADXL_INT_1_Pin; - 8001b3e: 2302 movs r3, #2 - 8001b40: 61fb str r3, [r7, #28] + 8001b50: 2302 movs r3, #2 + 8001b52: 61fb str r3, [r7, #28] GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - 8001b42: 2300 movs r3, #0 - 8001b44: 623b str r3, [r7, #32] + 8001b54: 2300 movs r3, #0 + 8001b56: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001b46: 2300 movs r3, #0 - 8001b48: 627b str r3, [r7, #36] @ 0x24 + 8001b58: 2300 movs r3, #0 + 8001b5a: 627b str r3, [r7, #36] @ 0x24 HAL_GPIO_Init(ADXL_INT_1_GPIO_Port, &GPIO_InitStruct); - 8001b4a: f107 031c add.w r3, r7, #28 - 8001b4e: 4619 mov r1, r3 - 8001b50: 4807 ldr r0, [pc, #28] @ (8001b70 ) - 8001b52: f005 fbf3 bl 800733c + 8001b5c: f107 031c add.w r3, r7, #28 + 8001b60: 4619 mov r1, r3 + 8001b62: 4807 ldr r0, [pc, #28] @ (8001b80 ) + 8001b64: f005 fd14 bl 8007590 } - 8001b56: bf00 nop - 8001b58: 3730 adds r7, #48 @ 0x30 - 8001b5a: 46bd mov sp, r7 - 8001b5c: bd80 pop {r7, pc} - 8001b5e: bf00 nop - 8001b60: 40023800 .word 0x40023800 - 8001b64: 40021000 .word 0x40021000 - 8001b68: 40020000 .word 0x40020000 - 8001b6c: 40020400 .word 0x40020400 - 8001b70: 40020c00 .word 0x40020c00 - 8001b74: 40020800 .word 0x40020800 - -08001b78 : + 8001b68: bf00 nop + 8001b6a: 3730 adds r7, #48 @ 0x30 + 8001b6c: 46bd mov sp, r7 + 8001b6e: bd80 pop {r7, pc} + 8001b70: 40023800 .word 0x40023800 + 8001b74: 40021000 .word 0x40021000 + 8001b78: 40020000 .word 0x40020000 + 8001b7c: 40020400 .word 0x40020400 + 8001b80: 40020c00 .word 0x40020c00 + 8001b84: 40020800 .word 0x40020800 +08001b88 : +extern TIM_HandleTypeDef htim11; icd_str ICD; extern adc_struct adc_str;//структура ацп void init_icd(icd_str * icd_str) { - 8001b78: b480 push {r7} - 8001b7a: b083 sub sp, #12 - 8001b7c: af00 add r7, sp, #0 - 8001b7e: 6078 str r0, [r7, #4] + 8001b88: b480 push {r7} + 8001b8a: b083 sub sp, #12 + 8001b8c: af00 add r7, sp, #0 + 8001b8e: 6078 str r0, [r7, #4] icd_str->work_set_mode = Monitor; - 8001b80: 687b ldr r3, [r7, #4] - 8001b82: 2200 movs r2, #0 - 8001b84: 701a strb r2, [r3, #0] + 8001b90: 687b ldr r3, [r7, #4] + 8001b92: 2200 movs r2, #0 + 8001b94: 701a strb r2, [r3, #0] icd_str->search_set_mode = Mode_search_BASE; //режим - 8001b86: 687b ldr r3, [r7, #4] - 8001b88: 2201 movs r2, #1 - 8001b8a: 709a strb r2, [r3, #2] + 8001b96: 687b ldr r3, [r7, #4] + 8001b98: 2201 movs r2, #1 + 8001b9a: 709a strb r2, [r3, #2] icd_str->search_now_mode = Mode_start_UP; //режим - 8001b8c: 687b ldr r3, [r7, #4] - 8001b8e: 2200 movs r2, #0 - 8001b90: 70da strb r2, [r3, #3] + 8001b9c: 687b ldr r3, [r7, #4] + 8001b9e: 2200 movs r2, #0 + 8001ba0: 70da strb r2, [r3, #3] icd_str->filter_on = true;//фильтр активен - 8001b92: 687b ldr r3, [r7, #4] - 8001b94: 2201 movs r2, #1 - 8001b96: 711a strb r2, [r3, #4] + 8001ba2: 687b ldr r3, [r7, #4] + 8001ba4: 2201 movs r2, #1 + 8001ba6: 711a strb r2, [r3, #4] icd_str->active_ch = 2;//используемый канал - 8001b98: 687b ldr r3, [r7, #4] - 8001b9a: 2202 movs r2, #2 - 8001b9c: 715a strb r2, [r3, #5] + 8001ba8: 687b ldr r3, [r7, #4] + 8001baa: 2202 movs r2, #2 + 8001bac: 715a strb r2, [r3, #5] icd_str->sd_card = false;//использование SD карты - 8001b9e: 687b ldr r3, [r7, #4] - 8001ba0: 2200 movs r2, #0 - 8001ba2: 719a strb r2, [r3, #6] + 8001bae: 687b ldr r3, [r7, #4] + 8001bb0: 2200 movs r2, #0 + 8001bb2: 719a strb r2, [r3, #6] icd_str->dc_cut = true;//вычитание постоянной составляющей - 8001ba4: 687b ldr r3, [r7, #4] - 8001ba6: 2201 movs r2, #1 - 8001ba8: 71da strb r2, [r3, #7] + 8001bb4: 687b ldr r3, [r7, #4] + 8001bb6: 2201 movs r2, #1 + 8001bb8: 71da strb r2, [r3, #7] //минимальный и максимальный пороги с плав. точкой и инт в десятых миливольта icd_str->min_tres = MIN_TRES; - 8001baa: 687b ldr r3, [r7, #4] - 8001bac: f04f 527c mov.w r2, #1056964608 @ 0x3f000000 - 8001bb0: 60da str r2, [r3, #12] + 8001bba: 687b ldr r3, [r7, #4] + 8001bbc: f04f 527c mov.w r2, #1056964608 @ 0x3f000000 + 8001bc0: 60da str r2, [r3, #12] icd_str->max_tres = MAX_TRES; - 8001bb2: 687b ldr r3, [r7, #4] - 8001bb4: 4a6e ldr r2, [pc, #440] @ (8001d70 ) - 8001bb6: 615a str r2, [r3, #20] + 8001bc2: 687b ldr r3, [r7, #4] + 8001bc4: 4a7c ldr r2, [pc, #496] @ (8001db8 ) + 8001bc6: 615a str r2, [r3, #20] // время на весь qrs rjvgktrc icd_str->max_time = (ALL_TIME_MS * DATA_RATE)/1000; - 8001bb8: 687b ldr r3, [r7, #4] - 8001bba: f44f 7296 mov.w r2, #300 @ 0x12c - 8001bbe: f8a3 2048 strh.w r2, [r3, #72] @ 0x48 + 8001bc8: 687b ldr r3, [r7, #4] + 8001bca: f44f 7296 mov.w r2, #300 @ 0x12c + 8001bce: f8a3 2048 strh.w r2, [r3, #72] @ 0x48 // время слепоты при включении icd_str->start_up_time = (START_UP_TIME_MS * DATA_RATE)/1000; - 8001bc2: 687b ldr r3, [r7, #4] - 8001bc4: f44f 72c8 mov.w r2, #400 @ 0x190 - 8001bc8: 859a strh r2, [r3, #44] @ 0x2c + 8001bd2: 687b ldr r3, [r7, #4] + 8001bd4: f44f 72c8 mov.w r2, #400 @ 0x190 + 8001bd8: 859a strh r2, [r3, #44] @ 0x2c // время поиска в базовом режиме с минимальным порогом icd_str->base_time = (SEARCH_BASE_TIME_MS * DATA_RATE)/1000; - 8001bca: 687b ldr r3, [r7, #4] - 8001bcc: 228c movs r2, #140 @ 0x8c - 8001bce: 85da strh r2, [r3, #46] @ 0x2e + 8001bda: 687b ldr r3, [r7, #4] + 8001bdc: 228c movs r2, #140 @ 0x8c + 8001bde: 85da strh r2, [r3, #46] @ 0x2e // Время в мс которое алгоритм ищет максимум icd_str->max_search_time = (SEARCH_MAX_TIME_MS * DATA_RATE)/1000; - 8001bd0: 687b ldr r3, [r7, #4] - 8001bd2: 2219 movs r2, #25 - 8001bd4: 861a strh r2, [r3, #48] @ 0x30 + 8001be0: 687b ldr r3, [r7, #4] + 8001be2: 2219 movs r2, #25 + 8001be4: 861a strh r2, [r3, #48] @ 0x30 // Время в мс нахождения в режиме поиска квадратов icd_str->square_time = (SQUARE_TIME_MS * DATA_RATE)/1000; - 8001bd6: 687b ldr r3, [r7, #4] - 8001bd8: 2250 movs r2, #80 @ 0x50 - 8001bda: 865a strh r2, [r3, #50] @ 0x32 + 8001be6: 687b ldr r3, [r7, #4] + 8001be8: 2250 movs r2, #80 @ 0x50 + 8001bea: 865a strh r2, [r3, #50] @ 0x32 // Время в мс нахождения в режиме поиска треугольников icd_str->triangle_time = (TRIANGLE_TIME_MS * DATA_RATE)/1000; - 8001bdc: 687b ldr r3, [r7, #4] - 8001bde: 223c movs r2, #60 @ 0x3c - 8001be0: 869a strh r2, [r3, #52] @ 0x34 + 8001bec: 687b ldr r3, [r7, #4] + 8001bee: 223c movs r2, #60 @ 0x3c + 8001bf0: 869a strh r2, [r3, #52] @ 0x34 // время каждой ступени в режиме треугольников icd_str->triangle_step_time = (TRIANGLE_STEP_TIME_MS * DATA_RATE)/1000; - 8001be2: 687b ldr r3, [r7, #4] - 8001be4: 220a movs r2, #10 - 8001be6: 86da strh r2, [r3, #54] @ 0x36 + 8001bf2: 687b ldr r3, [r7, #4] + 8001bf4: 220a movs r2, #10 + 8001bf6: 86da strh r2, [r3, #54] @ 0x36 // Время в мс которое длится режим стимуляции низким напряжением icd_str->lv_mode_time = (LV_TIME_MS * DATA_RATE)/1000; - 8001be8: 687b ldr r3, [r7, #4] - 8001bea: 2264 movs r2, #100 @ 0x64 - 8001bec: f8a3 2042 strh.w r2, [r3, #66] @ 0x42 + 8001bf8: 687b ldr r3, [r7, #4] + 8001bfa: 2264 movs r2, #100 @ 0x64 + 8001bfc: f8a3 2042 strh.w r2, [r3, #66] @ 0x42 // это во моногом эрзац. icd_str->lv_start_time = (LV_START_TIME_MS * DATA_RATE)/1000; //во сколько начали выдавать импульс - 8001bf0: 687b ldr r3, [r7, #4] - 8001bf2: 2201 movs r2, #1 - 8001bf4: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 + 8001c00: 687b ldr r3, [r7, #4] + 8001c02: 2201 movs r2, #1 + 8001c04: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 icd_str->lv_stop_time = (LV_STOP_TIME_MS* DATA_RATE)/1000; //во сколько закончили выдавать импульс - 8001bf8: 687b ldr r3, [r7, #4] - 8001bfa: 220a movs r2, #10 - 8001bfc: f8a3 2046 strh.w r2, [r3, #70] @ 0x46 + 8001c08: 687b ldr r3, [r7, #4] + 8001c0a: 220a movs r2, #10 + 8001c0c: f8a3 2046 strh.w r2, [r3, #70] @ 0x46 // коэффициент на который умножается сигнал при переход в режим квадратов icd_str->square_coef = SQUARE_COEF; - 8001c00: 687b ldr r3, [r7, #4] - 8001c02: f04f 527c mov.w r2, #1056964608 @ 0x3f000000 - 8001c06: 61da str r2, [r3, #28] + 8001c10: 687b ldr r3, [r7, #4] + 8001c12: f04f 527c mov.w r2, #1056964608 @ 0x3f000000 + 8001c16: 61da str r2, [r3, #28] // коэффициент на который умножается сигнал на каждой ступени в режиме треугольников icd_str->triangle_coef = TRIANGLE_COEF; - 8001c08: 687b ldr r3, [r7, #4] - 8001c0a: 4a5a ldr r2, [pc, #360] @ (8001d74 ) - 8001c0c: 625a str r2, [r3, #36] @ 0x24 + 8001c18: 687b ldr r3, [r7, #4] + 8001c1a: 4a68 ldr r2, [pc, #416] @ (8001dbc ) + 8001c1c: 625a str r2, [r3, #36] @ 0x24 icd_str->lv_polarity = lv_bipolar;//полярность низковольтной стимуляции - 8001c0e: 687b ldr r3, [r7, #4] - 8001c10: 2201 movs r2, #1 - 8001c12: f883 2039 strb.w r2, [r3, #57] @ 0x39 - icd_str->lv_mode = lv_mode_VVI;//режим низковольтной стимуляции - 8001c16: 687b ldr r3, [r7, #4] - 8001c18: 2203 movs r2, #3 - 8001c1a: f883 203a strb.w r2, [r3, #58] @ 0x3a + 8001c1e: 687b ldr r3, [r7, #4] + 8001c20: 2201 movs r2, #1 + 8001c22: f883 2039 strb.w r2, [r3, #57] @ 0x39 + icd_str->lv_mode = lv_mode_none;//режим низковольтной стимуляции + 8001c26: 687b ldr r3, [r7, #4] + 8001c28: 2200 movs r2, #0 + 8001c2a: f883 203a strb.w r2, [r3, #58] @ 0x3a icd_str->lv_shock_time = 13;//время импульса низковольной стимуляции 1-20(0,1-2мс) одна единица 0,1мс шаг 0.1мс - 8001c1e: 687b ldr r3, [r7, #4] - 8001c20: 220d movs r2, #13 - 8001c22: f883 203b strb.w r2, [r3, #59] @ 0x3b - icd_str->lv_relax_time = 14;//время стабилизации после удара низковольной стимуляции 0-20(0-20мс) одна единица 1мс шаг 1мс - 8001c26: 687b ldr r3, [r7, #4] - 8001c28: 220e movs r2, #14 - 8001c2a: f883 203c strb.w r2, [r3, #60] @ 0x3c - icd_str->lv_voltage = 35;//какое напряжение у импульсов 10-80(1,0-8,0В) одна единица 0,1В шаг 0,1В 8001c2e: 687b ldr r3, [r7, #4] - 8001c30: 2223 movs r2, #35 @ 0x23 - 8001c32: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8001c30: 220d movs r2, #13 + 8001c32: f883 203b strb.w r2, [r3, #59] @ 0x3b + icd_str->lv_relax_time = 14;//время стабилизации после удара низковольной стимуляции 0-20(0-20мс) одна единица 1мс шаг 1мс + 8001c36: 687b ldr r3, [r7, #4] + 8001c38: 220e movs r2, #14 + 8001c3a: f883 203c strb.w r2, [r3, #60] @ 0x3c + icd_str->lv_voltage = 35;//какое напряжение у импульсов 10-80(1,0-8,0В) одна единица 0,1В шаг 0,1В + 8001c3e: 687b ldr r3, [r7, #4] + 8001c40: 2223 movs r2, #35 @ 0x23 + 8001c42: f883 203d strb.w r2, [r3, #61] @ 0x3d //bool BURST_active;//параметр вводящий нас в режим burst посылка пачки импульсов для вызова фибрилляции icd_str->BURST_cnt = 33;//сколько импульсов в одной пачке 5-50 одна единица 1 импульс шаг 1 импульс - 8001c36: 687b ldr r3, [r7, #4] - 8001c38: 2221 movs r2, #33 @ 0x21 - 8001c3a: f883 203e strb.w r2, [r3, #62] @ 0x3e - icd_str->BURST_voltage =34;//какое напряжение у импульсов 10-80(1,0-8,0В) одна единица 0,1В шаг 0,1В - 8001c3e: 687b ldr r3, [r7, #4] - 8001c40: 2222 movs r2, #34 @ 0x22 - 8001c42: f883 203f strb.w r2, [r3, #63] @ 0x3f - icd_str->BURST_period = 333;//период следования импульсов в мс 150-500мс одна единица 1мс шаг 10 мс на ползунке 8001c46: 687b ldr r3, [r7, #4] - 8001c48: f240 124d movw r2, #333 @ 0x14d - 8001c4c: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 + 8001c48: 2221 movs r2, #33 @ 0x21 + 8001c4a: f883 203e strb.w r2, [r3, #62] @ 0x3e + icd_str->BURST_voltage =34;//какое напряжение у импульсов 10-80(1,0-8,0В) одна единица 0,1В шаг 0,1В + 8001c4e: 687b ldr r3, [r7, #4] + 8001c50: 2222 movs r2, #34 @ 0x22 + 8001c52: f883 203f strb.w r2, [r3, #63] @ 0x3f + icd_str->BURST_period = 333;//период следования импульсов в мс 150-500мс одна единица 1мс шаг 10 мс на ползунке + 8001c56: 687b ldr r3, [r7, #4] + 8001c58: f240 124d movw r2, #333 @ 0x14d + 8001c5c: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 // тип последнего определённого события icd_str->last_QRS = Vsense; - 8001c50: 687b ldr r3, [r7, #4] - 8001c52: 2200 movs r2, #0 - 8001c54: f883 204a strb.w r2, [r3, #74] @ 0x4a + 8001c60: 687b ldr r3, [r7, #4] + 8001c62: 2200 movs r2, #0 + 8001c64: f883 204a strb.w r2, [r3, #74] @ 0x4a // время между последним и предпоследним событием icd_str->last_period = 1000; - 8001c58: 687b ldr r3, [r7, #4] - 8001c5a: f44f 727a mov.w r2, #1000 @ 0x3e8 - 8001c5e: f8a3 204c strh.w r2, [r3, #76] @ 0x4c + 8001c68: 687b ldr r3, [r7, #4] + 8001c6a: f44f 727a mov.w r2, #1000 @ 0x3e8 + 8001c6e: f8a3 204c strh.w r2, [r3, #76] @ 0x4c icd_str->counter = 0; - 8001c62: 687b ldr r3, [r7, #4] - 8001c64: 2200 movs r2, #0 - 8001c66: 66da str r2, [r3, #108] @ 0x6c + 8001c72: 687b ldr r3, [r7, #4] + 8001c74: 2200 movs r2, #0 + 8001c76: 66da str r2, [r3, #108] @ 0x6c icd_str->last_RR_amp = MIN_TRES; // переменная в которой храним амплитуды начала QRS - 8001c68: 687b ldr r3, [r7, #4] - 8001c6a: f04f 527c mov.w r2, #1056964608 @ 0x3f000000 - 8001c6e: 651a str r2, [r3, #80] @ 0x50 + 8001c78: 687b ldr r3, [r7, #4] + 8001c7a: f04f 527c mov.w r2, #1056964608 @ 0x3f000000 + 8001c7e: 651a str r2, [r3, #80] @ 0x50 icd_str->last_RR_poz = 0; //переменная в котором храним положение начала QRS - 8001c70: 687b ldr r3, [r7, #4] - 8001c72: 2200 movs r2, #0 - 8001c74: 655a str r2, [r3, #84] @ 0x54 + 8001c80: 687b ldr r3, [r7, #4] + 8001c82: 2200 movs r2, #0 + 8001c84: 655a str r2, [r3, #84] @ 0x54 icd_str->last_RR_poz_rel = 0; //переменная в которой храним относительное положение начала QRS - 8001c76: 687b ldr r3, [r7, #4] - 8001c78: 2200 movs r2, #0 - 8001c7a: f8a3 2058 strh.w r2, [r3, #88] @ 0x58 + 8001c86: 687b ldr r3, [r7, #4] + 8001c88: 2200 movs r2, #0 + 8001c8a: f8a3 2058 strh.w r2, [r3, #88] @ 0x58 // Счётчики нужны для алгоритма терапии Михаила icd_str->Vs_cnt = 0; //счётчик собственных сокращений сердца - 8001c7e: 687b ldr r3, [r7, #4] - 8001c80: 2200 movs r2, #0 - 8001c82: 65da str r2, [r3, #92] @ 0x5c + 8001c8e: 687b ldr r3, [r7, #4] + 8001c90: 2200 movs r2, #0 + 8001c92: 65da str r2, [r3, #92] @ 0x5c icd_str->Vn_cnt = 0; //счётчик собственных сокращений которые в шуме(не детектируется пока fixme) - 8001c84: 687b ldr r3, [r7, #4] - 8001c86: 2200 movs r2, #0 - 8001c88: 661a str r2, [r3, #96] @ 0x60 + 8001c94: 687b ldr r3, [r7, #4] + 8001c96: 2200 movs r2, #0 + 8001c98: 661a str r2, [r3, #96] @ 0x60 icd_str->Vp_cnt = 0; //счётчик принудительных стимуляций сердца низким напряжением(низковольтная стимуляция) - 8001c8a: 687b ldr r3, [r7, #4] - 8001c8c: 2200 movs r2, #0 - 8001c8e: 665a str r2, [r3, #100] @ 0x64 + 8001c9a: 687b ldr r3, [r7, #4] + 8001c9c: 2200 movs r2, #0 + 8001c9e: 665a str r2, [r3, #100] @ 0x64 icd_str->fibr_cnt = 0; //счётчик фибриляции при обнаружении короткого RR он растёт - 8001c90: 687b ldr r3, [r7, #4] - 8001c92: 2200 movs r2, #0 - 8001c94: f883 208e strb.w r2, [r3, #142] @ 0x8e + 8001ca0: 687b ldr r3, [r7, #4] + 8001ca2: 2200 movs r2, #0 + 8001ca4: f883 208e strb.w r2, [r3, #142] @ 0x8e icd_str->fibr_max_tres = TERAPY_TRES; //порог счётчика фибриляций при котором начинаем терапию - 8001c98: 687b ldr r3, [r7, #4] - 8001c9a: 220a movs r2, #10 - 8001c9c: f883 2098 strb.w r2, [r3, #152] @ 0x98 + 8001ca8: 687b ldr r3, [r7, #4] + 8001caa: 220a movs r2, #10 + 8001cac: f883 2098 strb.w r2, [r3, #152] @ 0x98 icd_str->LV_on = true; // реально стимулируем низковольтно - 8001ca0: 687b ldr r3, [r7, #4] - 8001ca2: 2201 movs r2, #1 - 8001ca4: f883 2068 strb.w r2, [r3, #104] @ 0x68 + 8001cb0: 687b ldr r3, [r7, #4] + 8001cb2: 2201 movs r2, #1 + 8001cb4: f883 2068 strb.w r2, [r3, #104] @ 0x68 icd_str->HV_on = false; // реально стимулируем низковольтно - 8001ca8: 687b ldr r3, [r7, #4] - 8001caa: 2200 movs r2, #0 - 8001cac: f883 2069 strb.w r2, [r3, #105] @ 0x69 + 8001cb8: 687b ldr r3, [r7, #4] + 8001cba: 2200 movs r2, #0 + 8001cbc: f883 2069 strb.w r2, [r3, #105] @ 0x69 icd_str->ecg_rv_din_treshold = 0.0; //динамический порог - 8001cb0: 687b ldr r3, [r7, #4] - 8001cb2: f04f 0200 mov.w r2, #0 - 8001cb6: 67da str r2, [r3, #124] @ 0x7c + 8001cc0: 687b ldr r3, [r7, #4] + 8001cc2: f04f 0200 mov.w r2, #0 + 8001cc6: 67da str r2, [r3, #124] @ 0x7c // тут уже корзины //порог периода фибриляции если период меньше, чем это число это фибриляция icd_str->fibr_tres = (FIBR_PERIOD * DATA_RATE)/1000; - 8001cb8: 687b ldr r3, [r7, #4] - 8001cba: 2232 movs r2, #50 @ 0x32 - 8001cbc: f8a3 2080 strh.w r2, [r3, #128] @ 0x80 + 8001cc8: 687b ldr r3, [r7, #4] + 8001cca: 2232 movs r2, #50 @ 0x32 + 8001ccc: f8a3 2080 strh.w r2, [r3, #128] @ 0x80 //порог периода Тахикардии 2 если период меньше, чем это число это Тахикардия 2 icd_str->tachy_2_tres = (TACHY_2_PERIOD * DATA_RATE)/1000; - 8001cc0: 687b ldr r3, [r7, #4] - 8001cc2: 2246 movs r2, #70 @ 0x46 - 8001cc4: f8a3 2082 strh.w r2, [r3, #130] @ 0x82 + 8001cd0: 687b ldr r3, [r7, #4] + 8001cd2: 2246 movs r2, #70 @ 0x46 + 8001cd4: f8a3 2082 strh.w r2, [r3, #130] @ 0x82 //порог периода Тахикардии 1 если период меньше, чем это число это Тахикардия 1 icd_str->tachy_1_tres = (TACHY_1_PERIOD * DATA_RATE)/1000; - 8001cc8: 687b ldr r3, [r7, #4] - 8001cca: 2250 movs r2, #80 @ 0x50 - 8001ccc: f8a3 2084 strh.w r2, [r3, #132] @ 0x84 + 8001cd8: 687b ldr r3, [r7, #4] + 8001cda: 2250 movs r2, #80 @ 0x50 + 8001cdc: f8a3 2084 strh.w r2, [r3, #132] @ 0x84 icd_str->vs_cnt_last = 0;//сбрасываемый счётчик нормальных событий - 8001cd0: 687b ldr r3, [r7, #4] - 8001cd2: 2200 movs r2, #0 - 8001cd4: f8c3 2088 str.w r2, [r3, #136] @ 0x88 - icd_str->fibr_cnt = 0; //счётчик фибриляции при обнаружении короткого RR он растёт - 8001cd8: 687b ldr r3, [r7, #4] - 8001cda: 2200 movs r2, #0 - 8001cdc: f883 208e strb.w r2, [r3, #142] @ 0x8e - icd_str->tachy_2_cnt = 0; //счётчик Тахикардии 2 при обнаружении короткого RR он растёт 8001ce0: 687b ldr r3, [r7, #4] 8001ce2: 2200 movs r2, #0 - 8001ce4: f883 208f strb.w r2, [r3, #143] @ 0x8f - icd_str->tachy_1_cnt = 0; //счётчик Тахикардии 1 при обнаружении короткого RR он растёт + 8001ce4: f8c3 2088 str.w r2, [r3, #136] @ 0x88 + icd_str->fibr_cnt = 0; //счётчик фибриляции при обнаружении короткого RR он растёт 8001ce8: 687b ldr r3, [r7, #4] 8001cea: 2200 movs r2, #0 - 8001cec: f883 2090 strb.w r2, [r3, #144] @ 0x90 - icd_str->norm_cnt = 0;//счётчик нормальных сокращений подряд + 8001cec: f883 208e strb.w r2, [r3, #142] @ 0x8e + icd_str->tachy_2_cnt = 0; //счётчик Тахикардии 2 при обнаружении короткого RR он растёт 8001cf0: 687b ldr r3, [r7, #4] 8001cf2: 2200 movs r2, #0 - 8001cf4: f883 2091 strb.w r2, [r3, #145] @ 0x91 - - icd_str->vp_cnt_last = 0;//сбрасываемый счётчик нормальных событий + 8001cf4: f883 208f strb.w r2, [r3, #143] @ 0x8f + icd_str->tachy_1_cnt = 0; //счётчик Тахикардии 1 при обнаружении короткого RR он растёт 8001cf8: 687b ldr r3, [r7, #4] 8001cfa: 2200 movs r2, #0 - 8001cfc: f8c3 2094 str.w r2, [r3, #148] @ 0x94 - - icd_str->terapy_set = sub_off;//заданный режим терапии + 8001cfc: f883 2090 strb.w r2, [r3, #144] @ 0x90 + icd_str->norm_cnt = 0;//счётчик нормальных сокращений подряд 8001d00: 687b ldr r3, [r7, #4] 8001d02: 2200 movs r2, #0 - 8001d04: f883 2099 strb.w r2, [r3, #153] @ 0x99 - icd_str->terapy_now = sub_off;//текущий режим терапии + 8001d04: f883 2091 strb.w r2, [r3, #145] @ 0x91 + + icd_str->vp_cnt_last = 0;//сбрасываемый счётчик нормальных событий 8001d08: 687b ldr r3, [r7, #4] 8001d0a: 2200 movs r2, #0 - 8001d0c: f883 209a strb.w r2, [r3, #154] @ 0x9a + 8001d0c: f8c3 2094 str.w r2, [r3, #148] @ 0x94 - icd_str->sub_mode = sub_off;//подрежим для индикации + icd_str->terapy_set = sub_off;//заданный режим терапии 8001d10: 687b ldr r3, [r7, #4] 8001d12: 2200 movs r2, #0 - 8001d14: f883 209b strb.w r2, [r3, #155] @ 0x9b - - icd_str->hv_step_number = HV_STEP_NUM;//сколько шагов ВВ терапии? + 8001d14: f883 2099 strb.w r2, [r3, #153] @ 0x99 + icd_str->terapy_now = sub_off;//текущий режим терапии 8001d18: 687b ldr r3, [r7, #4] - 8001d1a: 2201 movs r2, #1 - 8001d1c: f883 209c strb.w r2, [r3, #156] @ 0x9c - icd_str->hv_step_cnt = 0;// какой сейчас шаг? + 8001d1a: 2200 movs r2, #0 + 8001d1c: f883 209a strb.w r2, [r3, #154] @ 0x9a + + icd_str->sub_mode = sub_off;//подрежим для индикации 8001d20: 687b ldr r3, [r7, #4] 8001d22: 2200 movs r2, #0 - 8001d24: f883 209d strb.w r2, [r3, #157] @ 0x9d + 8001d24: f883 209b strb.w r2, [r3, #155] @ 0x9b + + icd_str->hv_step_number = HV_STEP_NUM;//сколько шагов ВВ терапии? + 8001d28: 687b ldr r3, [r7, #4] + 8001d2a: 2201 movs r2, #1 + 8001d2c: f883 209c strb.w r2, [r3, #156] @ 0x9c + icd_str->hv_step_cnt = 0;// какой сейчас шаг? + 8001d30: 687b ldr r3, [r7, #4] + 8001d32: 2200 movs r2, #0 + 8001d34: f883 209d strb.w r2, [r3, #157] @ 0x9d + + icd_str->hv_polarity = rv_neg_scv_poz; //полярность стимуляции + 8001d38: 687b ldr r3, [r7, #4] + 8001d3a: 2200 movs r2, #0 + 8001d3c: f883 209f strb.w r2, [r3, #159] @ 0x9f + icd_str->hv_mode = hv_mode_fixed; //тип способа задания длительности импульса + 8001d40: 687b ldr r3, [r7, #4] + 8001d42: 2200 movs r2, #0 + 8001d44: f883 20a0 strb.w r2, [r3, #160] @ 0xa0 + //время константы времени стимуляции + icd_str->hv_phase_1_duration = 100; // время в десятых мс приходящееся на 1 фазу 30-120(3-12мс) одна единица 0,1мс + 8001d48: 687b ldr r3, [r7, #4] + 8001d4a: 2264 movs r2, #100 @ 0x64 + 8001d4c: f883 20a1 strb.w r2, [r3, #161] @ 0xa1 + icd_str->hv_phase_2_duration = 70; // время в десятых мс приходящееся на 2 фазу 20-100(2-10мс) одна единица 0,1мс + 8001d50: 687b ldr r3, [r7, #4] + 8001d52: 2246 movs r2, #70 @ 0x46 + 8001d54: f883 20a2 strb.w r2, [r3, #162] @ 0xa2 + icd_str->hv_switch_duration = 30; // время в десятых мс приходящееся на переключение между фазами 10-30(1-3мс) одна единица 0,1мс + 8001d58: 687b ldr r3, [r7, #4] + 8001d5a: 221e movs r2, #30 + 8001d5c: f883 20a3 strb.w r2, [r3, #163] @ 0xa3 + //процентные параметры стимуляции + icd_str->hv_switching_voltage = 40;//процент напряжения при котором происходит завешение 1 фазы при адаптивном режиме (20-80) одна единица 1% + 8001d60: 687b ldr r3, [r7, #4] + 8001d62: 2228 movs r2, #40 @ 0x28 + 8001d64: f883 20a4 strb.w r2, [r3, #164] @ 0xa4 + icd_str->hv_cutoff_voltage = 20;//процент напряжения при котором происходит завешение 2 фазы при адаптивном режиме (5-50) одна единица 1% + 8001d68: 687b ldr r3, [r7, #4] + 8001d6a: 2214 movs r2, #20 + 8001d6c: f883 20a5 strb.w r2, [r3, #165] @ 0xa5 icd_str->min_energy = MIN_ENERGY; - 8001d28: 687b ldr r3, [r7, #4] - 8001d2a: 220a movs r2, #10 - 8001d2c: f8a3 20a8 strh.w r2, [r3, #168] @ 0xa8 + 8001d70: 687b ldr r3, [r7, #4] + 8001d72: 220a movs r2, #10 + 8001d74: f8a3 20a8 strh.w r2, [r3, #168] @ 0xa8 icd_str->max_energy = MAX_ENERGY; - 8001d30: 687b ldr r3, [r7, #4] - 8001d32: 2264 movs r2, #100 @ 0x64 - 8001d34: f8a3 20ac strh.w r2, [r3, #172] @ 0xac + 8001d78: 687b ldr r3, [r7, #4] + 8001d7a: 2264 movs r2, #100 @ 0x64 + 8001d7c: f8a3 20ac strh.w r2, [r3, #172] @ 0xac icd_str->hv_blind_time = HV_BLIND_TIME_MS;//время которое мы слепы после HV разряда - 8001d38: 687b ldr r3, [r7, #4] - 8001d3a: f240 52dc movw r2, #1500 @ 0x5dc - 8001d3e: f8a3 20ae strh.w r2, [r3, #174] @ 0xae + 8001d80: 687b ldr r3, [r7, #4] + 8001d82: f240 52dc movw r2, #1500 @ 0x5dc + 8001d86: f8a3 20ae strh.w r2, [r3, #174] @ 0xae icd_str->redet_num = REDET_BUF_LEN; //какой длинны мы заполныем буффер при редетекции - 8001d42: 687b ldr r3, [r7, #4] - 8001d44: 2208 movs r2, #8 - 8001d46: f883 20b0 strb.w r2, [r3, #176] @ 0xb0 + 8001d8a: 687b ldr r3, [r7, #4] + 8001d8c: 2208 movs r2, #8 + 8001d8e: f883 20b0 strb.w r2, [r3, #176] @ 0xb0 icd_str->redet_bad = REDET_BAD_MAX; //сколько нам нужно плохих событий для запуска терапии - 8001d4a: 687b ldr r3, [r7, #4] - 8001d4c: 2204 movs r2, #4 - 8001d4e: f883 20b1 strb.w r2, [r3, #177] @ 0xb1 + 8001d92: 687b ldr r3, [r7, #4] + 8001d94: 2204 movs r2, #4 + 8001d96: f883 20b1 strb.w r2, [r3, #177] @ 0xb1 icd_str->standby_timer = STANDBY_TIME_MS;//сколько отдыхать после неудачного подавления фибриляции - 8001d52: 687b ldr r3, [r7, #4] - 8001d54: f242 7210 movw r2, #10000 @ 0x2710 - 8001d58: f8c3 20b4 str.w r2, [r3, #180] @ 0xb4 + 8001d9a: 687b ldr r3, [r7, #4] + 8001d9c: f242 7210 movw r2, #10000 @ 0x2710 + 8001da0: f8c3 20b4 str.w r2, [r3, #180] @ 0xb4 icd_str->spi_pot_set = 6; - 8001d5c: 687b ldr r3, [r7, #4] - 8001d5e: 2206 movs r2, #6 - 8001d60: f883 20cc strb.w r2, [r3, #204] @ 0xcc + 8001da4: 687b ldr r3, [r7, #4] + 8001da6: 2206 movs r2, #6 + 8001da8: f883 20cc strb.w r2, [r3, #204] @ 0xcc } - 8001d64: bf00 nop - 8001d66: 370c adds r7, #12 - 8001d68: 46bd mov sp, r7 - 8001d6a: f85d 7b04 ldr.w r7, [sp], #4 - 8001d6e: 4770 bx lr - 8001d70: 40400000 .word 0x40400000 - 8001d74: 3f59999a .word 0x3f59999a + 8001dac: bf00 nop + 8001dae: 370c adds r7, #12 + 8001db0: 46bd mov sp, r7 + 8001db2: f85d 7b04 ldr.w r7, [sp], #4 + 8001db6: 4770 bx lr + 8001db8: 40400000 .word 0x40400000 + 8001dbc: 3f59999a .word 0x3f59999a -08001d78 : +08001dc0 : float my_abs(float a) { - 8001d78: b480 push {r7} - 8001d7a: b083 sub sp, #12 - 8001d7c: af00 add r7, sp, #0 - 8001d7e: ed87 0a01 vstr s0, [r7, #4] + 8001dc0: b480 push {r7} + 8001dc2: b083 sub sp, #12 + 8001dc4: af00 add r7, sp, #0 + 8001dc6: ed87 0a01 vstr s0, [r7, #4] return (a<0)? -a:a; - 8001d82: edd7 7a01 vldr s15, [r7, #4] - 8001d86: eef5 7ac0 vcmpe.f32 s15, #0.0 - 8001d8a: eef1 fa10 vmrs APSR_nzcv, fpscr - 8001d8e: d504 bpl.n 8001d9a - 8001d90: edd7 7a01 vldr s15, [r7, #4] - 8001d94: eef1 7a67 vneg.f32 s15, s15 - 8001d98: e001 b.n 8001d9e - 8001d9a: edd7 7a01 vldr s15, [r7, #4] + 8001dca: edd7 7a01 vldr s15, [r7, #4] + 8001dce: eef5 7ac0 vcmpe.f32 s15, #0.0 + 8001dd2: eef1 fa10 vmrs APSR_nzcv, fpscr + 8001dd6: d504 bpl.n 8001de2 + 8001dd8: edd7 7a01 vldr s15, [r7, #4] + 8001ddc: eef1 7a67 vneg.f32 s15, s15 + 8001de0: e001 b.n 8001de6 + 8001de2: edd7 7a01 vldr s15, [r7, #4] } - 8001d9e: eeb0 0a67 vmov.f32 s0, s15 - 8001da2: 370c adds r7, #12 - 8001da4: 46bd mov sp, r7 - 8001da6: f85d 7b04 ldr.w r7, [sp], #4 - 8001daa: 4770 bx lr + 8001de6: eeb0 0a67 vmov.f32 s0, s15 + 8001dea: 370c adds r7, #12 + 8001dec: 46bd mov sp, r7 + 8001dee: f85d 7b04 ldr.w r7, [sp], #4 + 8001df2: 4770 bx lr -08001dac : +08001df4 : // первичный заход в режим fixme обернуть в функцию bool mode_start(icd_str * icd_str) { - 8001dac: b480 push {r7} - 8001dae: b083 sub sp, #12 - 8001db0: af00 add r7, sp, #0 - 8001db2: 6078 str r0, [r7, #4] + 8001df4: b480 push {r7} + 8001df6: b083 sub sp, #12 + 8001df8: af00 add r7, sp, #0 + 8001dfa: 6078 str r0, [r7, #4] if (icd_str->search_now_mode != icd_str->search_set_mode) - 8001db4: 687b ldr r3, [r7, #4] - 8001db6: 78da ldrb r2, [r3, #3] - 8001db8: 687b ldr r3, [r7, #4] - 8001dba: 789b ldrb r3, [r3, #2] - 8001dbc: 429a cmp r2, r3 - 8001dbe: d008 beq.n 8001dd2 + 8001dfc: 687b ldr r3, [r7, #4] + 8001dfe: 78da ldrb r2, [r3, #3] + 8001e00: 687b ldr r3, [r7, #4] + 8001e02: 789b ldrb r3, [r3, #2] + 8001e04: 429a cmp r2, r3 + 8001e06: d008 beq.n 8001e1a { icd_str->search_now_mode = icd_str->search_set_mode; - 8001dc0: 687b ldr r3, [r7, #4] - 8001dc2: 789a ldrb r2, [r3, #2] - 8001dc4: 687b ldr r3, [r7, #4] - 8001dc6: 70da strb r2, [r3, #3] + 8001e08: 687b ldr r3, [r7, #4] + 8001e0a: 789a ldrb r2, [r3, #2] + 8001e0c: 687b ldr r3, [r7, #4] + 8001e0e: 70da strb r2, [r3, #3] // обнулили счётчик режима icd_str->mode_cnt = 0; - 8001dc8: 687b ldr r3, [r7, #4] - 8001dca: 2200 movs r2, #0 - 8001dcc: 855a strh r2, [r3, #42] @ 0x2a + 8001e10: 687b ldr r3, [r7, #4] + 8001e12: 2200 movs r2, #0 + 8001e14: 855a strh r2, [r3, #42] @ 0x2a return true; - 8001dce: 2301 movs r3, #1 - 8001dd0: e000 b.n 8001dd4 + 8001e16: 2301 movs r3, #1 + 8001e18: e000 b.n 8001e1c } return false; - 8001dd2: 2300 movs r3, #0 + 8001e1a: 2300 movs r3, #0 } - 8001dd4: 4618 mov r0, r3 - 8001dd6: 370c adds r7, #12 - 8001dd8: 46bd mov sp, r7 - 8001dda: f85d 7b04 ldr.w r7, [sp], #4 - 8001dde: 4770 bx lr + 8001e1c: 4618 mov r0, r3 + 8001e1e: 370c adds r7, #12 + 8001e20: 46bd mov sp, r7 + 8001e22: f85d 7b04 ldr.w r7, [sp], #4 + 8001e26: 4770 bx lr -08001de0 : +08001e28 : void get_data(icd_str * icd_str,uint16_t input) { - 8001de0: b5b0 push {r4, r5, r7, lr} - 8001de2: b084 sub sp, #16 - 8001de4: af00 add r7, sp, #0 - 8001de6: 6078 str r0, [r7, #4] - 8001de8: 460b mov r3, r1 - 8001dea: 807b strh r3, [r7, #2] + 8001e28: b5b0 push {r4, r5, r7, lr} + 8001e2a: b084 sub sp, #16 + 8001e2c: af00 add r7, sp, #0 + 8001e2e: 6078 str r0, [r7, #4] + 8001e30: 460b mov r3, r1 + 8001e32: 807b strh r3, [r7, #2] float raw = ((float)input) * VOLT_COEF;//перевод в милливольты - 8001dec: 887b ldrh r3, [r7, #2] - 8001dee: ee07 3a90 vmov s15, r3 - 8001df2: eef8 7a67 vcvt.f32.u32 s15, s15 - 8001df6: ee17 0a90 vmov r0, s15 - 8001dfa: f7fe fbcd bl 8000598 <__aeabi_f2d> - 8001dfe: a337 add r3, pc, #220 @ (adr r3, 8001edc ) - 8001e00: e9d3 2300 ldrd r2, r3, [r3] - 8001e04: f7fe fc20 bl 8000648 <__aeabi_dmul> - 8001e08: 4602 mov r2, r0 - 8001e0a: 460b mov r3, r1 - 8001e0c: 4610 mov r0, r2 - 8001e0e: 4619 mov r1, r3 - 8001e10: f04f 0200 mov.w r2, #0 - 8001e14: 4b30 ldr r3, [pc, #192] @ (8001ed8 ) - 8001e16: f7fe fd41 bl 800089c <__aeabi_ddiv> - 8001e1a: 4602 mov r2, r0 - 8001e1c: 460b mov r3, r1 - 8001e1e: 4610 mov r0, r2 - 8001e20: 4619 mov r1, r3 - 8001e22: f7fe fee1 bl 8000be8 <__aeabi_d2f> - 8001e26: 4603 mov r3, r0 - 8001e28: 60fb str r3, [r7, #12] + 8001e34: 887b ldrh r3, [r7, #2] + 8001e36: ee07 3a90 vmov s15, r3 + 8001e3a: eef8 7a67 vcvt.f32.u32 s15, s15 + 8001e3e: ee17 0a90 vmov r0, s15 + 8001e42: f7fe fba9 bl 8000598 <__aeabi_f2d> + 8001e46: a337 add r3, pc, #220 @ (adr r3, 8001f24 ) + 8001e48: e9d3 2300 ldrd r2, r3, [r3] + 8001e4c: f7fe fbfc bl 8000648 <__aeabi_dmul> + 8001e50: 4602 mov r2, r0 + 8001e52: 460b mov r3, r1 + 8001e54: 4610 mov r0, r2 + 8001e56: 4619 mov r1, r3 + 8001e58: f04f 0200 mov.w r2, #0 + 8001e5c: 4b30 ldr r3, [pc, #192] @ (8001f20 ) + 8001e5e: f7fe fd1d bl 800089c <__aeabi_ddiv> + 8001e62: 4602 mov r2, r0 + 8001e64: 460b mov r3, r1 + 8001e66: 4610 mov r0, r2 + 8001e68: 4619 mov r1, r3 + 8001e6a: f7fe febd bl 8000be8 <__aeabi_d2f> + 8001e6e: 4603 mov r3, r0 + 8001e70: 60fb str r3, [r7, #12] // icd_str->ecg_rv_filt = iir_50hz_2or(raw); // icd_str->ecg_rv_filt = iir_4060(raw); if(icd_str->filter_on) - 8001e2a: 687b ldr r3, [r7, #4] - 8001e2c: 791b ldrb r3, [r3, #4] - 8001e2e: 2b00 cmp r3, #0 - 8001e30: d009 beq.n 8001e46 + 8001e72: 687b ldr r3, [r7, #4] + 8001e74: 791b ldrb r3, [r3, #4] + 8001e76: 2b00 cmp r3, #0 + 8001e78: d009 beq.n 8001e8e icd_str->ecg_rv_filt = iir_lp30(raw); - 8001e32: ed97 0a03 vldr s0, [r7, #12] - 8001e36: f7ff fb65 bl 8001504 - 8001e3a: eef0 7a40 vmov.f32 s15, s0 - 8001e3e: 687b ldr r3, [r7, #4] - 8001e40: edc3 7a1c vstr s15, [r3, #112] @ 0x70 - 8001e44: e002 b.n 8001e4c + 8001e7a: ed97 0a03 vldr s0, [r7, #12] + 8001e7e: f7ff fb3f bl 8001500 + 8001e82: eef0 7a40 vmov.f32 s15, s0 + 8001e86: 687b ldr r3, [r7, #4] + 8001e88: edc3 7a1c vstr s15, [r3, #112] @ 0x70 + 8001e8c: e002 b.n 8001e94 else icd_str->ecg_rv_filt = raw; - 8001e46: 687b ldr r3, [r7, #4] - 8001e48: 68fa ldr r2, [r7, #12] - 8001e4a: 671a str r2, [r3, #112] @ 0x70 + 8001e8e: 687b ldr r3, [r7, #4] + 8001e90: 68fa ldr r2, [r7, #12] + 8001e92: 671a str r2, [r3, #112] @ 0x70 icd_str->ecg_rv_mov_av = (1 - MOV_AV_COEF)*icd_str->ecg_rv_mov_av + MOV_AV_COEF * icd_str->ecg_rv_filt; - 8001e4c: 687b ldr r3, [r7, #4] - 8001e4e: 6f5b ldr r3, [r3, #116] @ 0x74 - 8001e50: 4618 mov r0, r3 - 8001e52: f7fe fba1 bl 8000598 <__aeabi_f2d> - 8001e56: a31c add r3, pc, #112 @ (adr r3, 8001ec8 ) - 8001e58: e9d3 2300 ldrd r2, r3, [r3] - 8001e5c: f7fe fbf4 bl 8000648 <__aeabi_dmul> - 8001e60: 4602 mov r2, r0 - 8001e62: 460b mov r3, r1 - 8001e64: 4614 mov r4, r2 - 8001e66: 461d mov r5, r3 - 8001e68: 687b ldr r3, [r7, #4] - 8001e6a: 6f1b ldr r3, [r3, #112] @ 0x70 - 8001e6c: 4618 mov r0, r3 - 8001e6e: f7fe fb93 bl 8000598 <__aeabi_f2d> - 8001e72: a317 add r3, pc, #92 @ (adr r3, 8001ed0 ) - 8001e74: e9d3 2300 ldrd r2, r3, [r3] - 8001e78: f7fe fbe6 bl 8000648 <__aeabi_dmul> - 8001e7c: 4602 mov r2, r0 - 8001e7e: 460b mov r3, r1 - 8001e80: 4620 mov r0, r4 - 8001e82: 4629 mov r1, r5 - 8001e84: f7fe fa2a bl 80002dc <__adddf3> - 8001e88: 4602 mov r2, r0 - 8001e8a: 460b mov r3, r1 - 8001e8c: 4610 mov r0, r2 - 8001e8e: 4619 mov r1, r3 - 8001e90: f7fe feaa bl 8000be8 <__aeabi_d2f> - 8001e94: 4602 mov r2, r0 - 8001e96: 687b ldr r3, [r7, #4] - 8001e98: 675a str r2, [r3, #116] @ 0x74 + 8001e94: 687b ldr r3, [r7, #4] + 8001e96: 6f5b ldr r3, [r3, #116] @ 0x74 + 8001e98: 4618 mov r0, r3 + 8001e9a: f7fe fb7d bl 8000598 <__aeabi_f2d> + 8001e9e: a31c add r3, pc, #112 @ (adr r3, 8001f10 ) + 8001ea0: e9d3 2300 ldrd r2, r3, [r3] + 8001ea4: f7fe fbd0 bl 8000648 <__aeabi_dmul> + 8001ea8: 4602 mov r2, r0 + 8001eaa: 460b mov r3, r1 + 8001eac: 4614 mov r4, r2 + 8001eae: 461d mov r5, r3 + 8001eb0: 687b ldr r3, [r7, #4] + 8001eb2: 6f1b ldr r3, [r3, #112] @ 0x70 + 8001eb4: 4618 mov r0, r3 + 8001eb6: f7fe fb6f bl 8000598 <__aeabi_f2d> + 8001eba: a317 add r3, pc, #92 @ (adr r3, 8001f18 ) + 8001ebc: e9d3 2300 ldrd r2, r3, [r3] + 8001ec0: f7fe fbc2 bl 8000648 <__aeabi_dmul> + 8001ec4: 4602 mov r2, r0 + 8001ec6: 460b mov r3, r1 + 8001ec8: 4620 mov r0, r4 + 8001eca: 4629 mov r1, r5 + 8001ecc: f7fe fa06 bl 80002dc <__adddf3> + 8001ed0: 4602 mov r2, r0 + 8001ed2: 460b mov r3, r1 + 8001ed4: 4610 mov r0, r2 + 8001ed6: 4619 mov r1, r3 + 8001ed8: f7fe fe86 bl 8000be8 <__aeabi_d2f> + 8001edc: 4602 mov r2, r0 + 8001ede: 687b ldr r3, [r7, #4] + 8001ee0: 675a str r2, [r3, #116] @ 0x74 icd_str->ecg_rv_pos_sig = my_abs(icd_str->ecg_rv_filt-icd_str->ecg_rv_mov_av); - 8001e9a: 687b ldr r3, [r7, #4] - 8001e9c: ed93 7a1c vldr s14, [r3, #112] @ 0x70 - 8001ea0: 687b ldr r3, [r7, #4] - 8001ea2: edd3 7a1d vldr s15, [r3, #116] @ 0x74 - 8001ea6: ee77 7a67 vsub.f32 s15, s14, s15 - 8001eaa: eeb0 0a67 vmov.f32 s0, s15 - 8001eae: f7ff ff63 bl 8001d78 - 8001eb2: eef0 7a40 vmov.f32 s15, s0 - 8001eb6: 687b ldr r3, [r7, #4] - 8001eb8: edc3 7a1e vstr s15, [r3, #120] @ 0x78 + 8001ee2: 687b ldr r3, [r7, #4] + 8001ee4: ed93 7a1c vldr s14, [r3, #112] @ 0x70 + 8001ee8: 687b ldr r3, [r7, #4] + 8001eea: edd3 7a1d vldr s15, [r3, #116] @ 0x74 + 8001eee: ee77 7a67 vsub.f32 s15, s14, s15 + 8001ef2: eeb0 0a67 vmov.f32 s0, s15 + 8001ef6: f7ff ff63 bl 8001dc0 + 8001efa: eef0 7a40 vmov.f32 s15, s0 + 8001efe: 687b ldr r3, [r7, #4] + 8001f00: edc3 7a1e vstr s15, [r3, #120] @ 0x78 } - 8001ebc: bf00 nop - 8001ebe: 3710 adds r7, #16 - 8001ec0: 46bd mov sp, r7 - 8001ec2: bdb0 pop {r4, r5, r7, pc} - 8001ec4: f3af 8000 nop.w - 8001ec8: f5c28f5c .word 0xf5c28f5c - 8001ecc: 3fef5c28 .word 0x3fef5c28 - 8001ed0: 47ae147b .word 0x47ae147b - 8001ed4: 3f947ae1 .word 0x3f947ae1 - 8001ed8: 41194000 .word 0x41194000 - 8001edc: 00000000 .word 0x00000000 - 8001ee0: 40a9c800 .word 0x40a9c800 + 8001f04: bf00 nop + 8001f06: 3710 adds r7, #16 + 8001f08: 46bd mov sp, r7 + 8001f0a: bdb0 pop {r4, r5, r7, pc} + 8001f0c: f3af 8000 nop.w + 8001f10: f5c28f5c .word 0xf5c28f5c + 8001f14: 3fef5c28 .word 0x3fef5c28 + 8001f18: 47ae147b .word 0x47ae147b + 8001f1c: 3f947ae1 .word 0x3f947ae1 + 8001f20: 41194000 .word 0x41194000 + 8001f24: 00000000 .word 0x00000000 + 8001f28: 40a9c800 .word 0x40a9c800 -08001ee4 : +08001f2c : } // проверка длительности определённого режима // указваем какой режим выставить bool check_mode_len(icd_str * icd_str,uint16_t base_time, search_mode mode_to_set) { - 8001ee4: b480 push {r7} - 8001ee6: b083 sub sp, #12 - 8001ee8: af00 add r7, sp, #0 - 8001eea: 6078 str r0, [r7, #4] - 8001eec: 460b mov r3, r1 - 8001eee: 807b strh r3, [r7, #2] - 8001ef0: 4613 mov r3, r2 - 8001ef2: 707b strb r3, [r7, #1] + 8001f2c: b480 push {r7} + 8001f2e: b083 sub sp, #12 + 8001f30: af00 add r7, sp, #0 + 8001f32: 6078 str r0, [r7, #4] + 8001f34: 460b mov r3, r1 + 8001f36: 807b strh r3, [r7, #2] + 8001f38: 4613 mov r3, r2 + 8001f3a: 707b strb r3, [r7, #1] // Проверка превышения времени на режим //if(icd_str->mode_cnt > base_time)//fixme так было раньше if(icd_str->mode_cnt > base_time || icd_str->last_RR_poz_rel > icd_str->max_time) - 8001ef4: 687b ldr r3, [r7, #4] - 8001ef6: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8001ef8: 887a ldrh r2, [r7, #2] - 8001efa: 429a cmp r2, r3 - 8001efc: d308 bcc.n 8001f10 - 8001efe: 687b ldr r3, [r7, #4] - 8001f00: f9b3 3058 ldrsh.w r3, [r3, #88] @ 0x58 - 8001f04: 461a mov r2, r3 - 8001f06: 687b ldr r3, [r7, #4] - 8001f08: f8b3 3048 ldrh.w r3, [r3, #72] @ 0x48 - 8001f0c: 429a cmp r2, r3 - 8001f0e: dd29 ble.n 8001f64 + 8001f3c: 687b ldr r3, [r7, #4] + 8001f3e: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8001f40: 887a ldrh r2, [r7, #2] + 8001f42: 429a cmp r2, r3 + 8001f44: d308 bcc.n 8001f58 + 8001f46: 687b ldr r3, [r7, #4] + 8001f48: f9b3 3058 ldrsh.w r3, [r3, #88] @ 0x58 + 8001f4c: 461a mov r2, r3 + 8001f4e: 687b ldr r3, [r7, #4] + 8001f50: f8b3 3048 ldrh.w r3, [r3, #72] @ 0x48 + 8001f54: 429a cmp r2, r3 + 8001f56: dd29 ble.n 8001fac { icd_str->mode_cnt = 0; - 8001f10: 687b ldr r3, [r7, #4] - 8001f12: 2200 movs r2, #0 - 8001f14: 855a strh r2, [r3, #42] @ 0x2a + 8001f58: 687b ldr r3, [r7, #4] + 8001f5a: 2200 movs r2, #0 + 8001f5c: 855a strh r2, [r3, #42] @ 0x2a // перешли в режим низковольтной стимуляции icd_str->search_set_mode = mode_to_set; - 8001f16: 687b ldr r3, [r7, #4] - 8001f18: 787a ldrb r2, [r7, #1] - 8001f1a: 709a strb r2, [r3, #2] + 8001f5e: 687b ldr r3, [r7, #4] + 8001f60: 787a ldrb r2, [r7, #1] + 8001f62: 709a strb r2, [r3, #2] if(mode_to_set == Mode_stimulation_LV) - 8001f1c: 787b ldrb r3, [r7, #1] - 8001f1e: 2b05 cmp r3, #5 - 8001f20: d11e bne.n 8001f60 + 8001f64: 787b ldrb r3, [r7, #1] + 8001f66: 2b05 cmp r3, #5 + 8001f68: d11e bne.n 8001fa8 { icd_str->vp_cnt_last++; - 8001f22: 687b ldr r3, [r7, #4] - 8001f24: f8d3 3094 ldr.w r3, [r3, #148] @ 0x94 - 8001f28: 1c5a adds r2, r3, #1 - 8001f2a: 687b ldr r3, [r7, #4] - 8001f2c: f8c3 2094 str.w r2, [r3, #148] @ 0x94 + 8001f6a: 687b ldr r3, [r7, #4] + 8001f6c: f8d3 3094 ldr.w r3, [r3, #148] @ 0x94 + 8001f70: 1c5a adds r2, r3, #1 + 8001f72: 687b ldr r3, [r7, #4] + 8001f74: f8c3 2094 str.w r2, [r3, #148] @ 0x94 // период чсс равен времени с прошлого события icd_str->last_period = icd_str->last_RR_poz_rel; - 8001f30: 687b ldr r3, [r7, #4] - 8001f32: f9b3 3058 ldrsh.w r3, [r3, #88] @ 0x58 - 8001f36: b29a uxth r2, r3 - 8001f38: 687b ldr r3, [r7, #4] - 8001f3a: f8a3 204c strh.w r2, [r3, #76] @ 0x4c + 8001f78: 687b ldr r3, [r7, #4] + 8001f7a: f9b3 3058 ldrsh.w r3, [r3, #88] @ 0x58 + 8001f7e: b29a uxth r2, r3 + 8001f80: 687b ldr r3, [r7, #4] + 8001f82: f8a3 204c strh.w r2, [r3, #76] @ 0x4c // стёрли счётчик до прошлого события т.к. оно только что произошло icd_str->last_RR_poz_rel = 0; - 8001f3e: 687b ldr r3, [r7, #4] - 8001f40: 2200 movs r2, #0 - 8001f42: f8a3 2058 strh.w r2, [r3, #88] @ 0x58 + 8001f86: 687b ldr r3, [r7, #4] + 8001f88: 2200 movs r2, #0 + 8001f8a: f8a3 2058 strh.w r2, [r3, #88] @ 0x58 icd_str->last_QRS = Vpace; - 8001f46: 687b ldr r3, [r7, #4] - 8001f48: 2201 movs r2, #1 - 8001f4a: f883 204a strb.w r2, [r3, #74] @ 0x4a + 8001f8e: 687b ldr r3, [r7, #4] + 8001f90: 2201 movs r2, #1 + 8001f92: f883 204a strb.w r2, [r3, #74] @ 0x4a // стёрли счётчик до прошлого события т.к. оно только что произошло icd_str->last_RR_poz_rel = 0; - 8001f4e: 687b ldr r3, [r7, #4] - 8001f50: 2200 movs r2, #0 - 8001f52: f8a3 2058 strh.w r2, [r3, #88] @ 0x58 + 8001f96: 687b ldr r3, [r7, #4] + 8001f98: 2200 movs r2, #0 + 8001f9a: f8a3 2058 strh.w r2, [r3, #88] @ 0x58 // инкримент счётчика Vpace событий icd_str->Vp_cnt++; - 8001f56: 687b ldr r3, [r7, #4] - 8001f58: 6e5b ldr r3, [r3, #100] @ 0x64 - 8001f5a: 1c5a adds r2, r3, #1 - 8001f5c: 687b ldr r3, [r7, #4] - 8001f5e: 665a str r2, [r3, #100] @ 0x64 + 8001f9e: 687b ldr r3, [r7, #4] + 8001fa0: 6e5b ldr r3, [r3, #100] @ 0x64 + 8001fa2: 1c5a adds r2, r3, #1 + 8001fa4: 687b ldr r3, [r7, #4] + 8001fa6: 665a str r2, [r3, #100] @ 0x64 } return true; - 8001f60: 2301 movs r3, #1 - 8001f62: e000 b.n 8001f66 + 8001fa8: 2301 movs r3, #1 + 8001faa: e000 b.n 8001fae } else return false; - 8001f64: 2300 movs r3, #0 + 8001fac: 2300 movs r3, #0 } - 8001f66: 4618 mov r0, r3 - 8001f68: 370c adds r7, #12 - 8001f6a: 46bd mov sp, r7 - 8001f6c: f85d 7b04 ldr.w r7, [sp], #4 - 8001f70: 4770 bx lr + 8001fae: 4618 mov r0, r3 + 8001fb0: 370c adds r7, #12 + 8001fb2: 46bd mov sp, r7 + 8001fb4: f85d 7b04 ldr.w r7, [sp], #4 + 8001fb8: 4770 bx lr -08001f72 : +08001fba : // проверка пересечения порога bool check_tres(icd_str * icd_str) { - 8001f72: b580 push {r7, lr} - 8001f74: b082 sub sp, #8 - 8001f76: af00 add r7, sp, #0 - 8001f78: 6078 str r0, [r7, #4] + 8001fba: b580 push {r7, lr} + 8001fbc: b082 sub sp, #8 + 8001fbe: af00 add r7, sp, #0 + 8001fc0: 6078 str r0, [r7, #4] // Проверка превышения порога if((icd_str->ecg_rv_pos_sig >= icd_str->ecg_rv_din_treshold) && icd_str->work_set_mode != Monitor - 8001f7a: 687b ldr r3, [r7, #4] - 8001f7c: ed93 7a1e vldr s14, [r3, #120] @ 0x78 - 8001f80: 687b ldr r3, [r7, #4] - 8001f82: edd3 7a1f vldr s15, [r3, #124] @ 0x7c - 8001f86: eeb4 7ae7 vcmpe.f32 s14, s15 - 8001f8a: eef1 fa10 vmrs APSR_nzcv, fpscr - 8001f8e: f2c0 8083 blt.w 8002098 - 8001f92: 687b ldr r3, [r7, #4] - 8001f94: 781b ldrb r3, [r3, #0] - 8001f96: 2b00 cmp r3, #0 - 8001f98: d07e beq.n 8002098 + 8001fc2: 687b ldr r3, [r7, #4] + 8001fc4: ed93 7a1e vldr s14, [r3, #120] @ 0x78 + 8001fc8: 687b ldr r3, [r7, #4] + 8001fca: edd3 7a1f vldr s15, [r3, #124] @ 0x7c + 8001fce: eeb4 7ae7 vcmpe.f32 s14, s15 + 8001fd2: eef1 fa10 vmrs APSR_nzcv, fpscr + 8001fd6: f2c0 8083 blt.w 80020e0 + 8001fda: 687b ldr r3, [r7, #4] + 8001fdc: 781b ldrb r3, [r3, #0] + 8001fde: 2b00 cmp r3, #0 + 8001fe0: d07e beq.n 80020e0 && (icd_str->lv_mode == lv_mode_VVI || icd_str->lv_mode == lv_mode_none))//&& icd_str->lv_mode == lv_mode_VVI - 8001f9a: 687b ldr r3, [r7, #4] - 8001f9c: f893 303a ldrb.w r3, [r3, #58] @ 0x3a - 8001fa0: 2b03 cmp r3, #3 - 8001fa2: d004 beq.n 8001fae - 8001fa4: 687b ldr r3, [r7, #4] - 8001fa6: f893 303a ldrb.w r3, [r3, #58] @ 0x3a - 8001faa: 2b00 cmp r3, #0 - 8001fac: d174 bne.n 8002098 + 8001fe2: 687b ldr r3, [r7, #4] + 8001fe4: f893 303a ldrb.w r3, [r3, #58] @ 0x3a + 8001fe8: 2b03 cmp r3, #3 + 8001fea: d004 beq.n 8001ff6 + 8001fec: 687b ldr r3, [r7, #4] + 8001fee: f893 303a ldrb.w r3, [r3, #58] @ 0x3a + 8001ff2: 2b00 cmp r3, #0 + 8001ff4: d174 bne.n 80020e0 { // перешли в режим поисков пиков icd_str->search_set_mode = Mode_search_MAX; - 8001fae: 687b ldr r3, [r7, #4] - 8001fb0: 2204 movs r2, #4 - 8001fb2: 709a strb r2, [r3, #2] + 8001ff6: 687b ldr r3, [r7, #4] + 8001ff8: 2204 movs r2, #4 + 8001ffa: 709a strb r2, [r3, #2] // событие нормальное icd_str->last_QRS = Vsense; - 8001fb4: 687b ldr r3, [r7, #4] - 8001fb6: 2200 movs r2, #0 - 8001fb8: f883 204a strb.w r2, [r3, #74] @ 0x4a + 8001ffc: 687b ldr r3, [r7, #4] + 8001ffe: 2200 movs r2, #0 + 8002000: f883 204a strb.w r2, [r3, #74] @ 0x4a // тетрарная операция находим не выходит ли за границы наш экг сигнал icd_str->last_RR_amp = icd_str->ecg_rv_pos_sig >= icd_str->max_tres ? icd_str->max_tres : icd_str->ecg_rv_pos_sig; - 8001fbc: 687b ldr r3, [r7, #4] - 8001fbe: ed93 7a1e vldr s14, [r3, #120] @ 0x78 - 8001fc2: 687b ldr r3, [r7, #4] - 8001fc4: edd3 7a05 vldr s15, [r3, #20] - 8001fc8: eeb4 7ae7 vcmpe.f32 s14, s15 - 8001fcc: eef1 fa10 vmrs APSR_nzcv, fpscr - 8001fd0: db02 blt.n 8001fd8 - 8001fd2: 687b ldr r3, [r7, #4] - 8001fd4: 695b ldr r3, [r3, #20] - 8001fd6: e001 b.n 8001fdc - 8001fd8: 687b ldr r3, [r7, #4] - 8001fda: 6f9b ldr r3, [r3, #120] @ 0x78 - 8001fdc: 687a ldr r2, [r7, #4] - 8001fde: 6513 str r3, [r2, #80] @ 0x50 + 8002004: 687b ldr r3, [r7, #4] + 8002006: ed93 7a1e vldr s14, [r3, #120] @ 0x78 + 800200a: 687b ldr r3, [r7, #4] + 800200c: edd3 7a05 vldr s15, [r3, #20] + 8002010: eeb4 7ae7 vcmpe.f32 s14, s15 + 8002014: eef1 fa10 vmrs APSR_nzcv, fpscr + 8002018: db02 blt.n 8002020 + 800201a: 687b ldr r3, [r7, #4] + 800201c: 695b ldr r3, [r3, #20] + 800201e: e001 b.n 8002024 + 8002020: 687b ldr r3, [r7, #4] + 8002022: 6f9b ldr r3, [r3, #120] @ 0x78 + 8002024: 687a ldr r2, [r7, #4] + 8002026: 6513 str r3, [r2, #80] @ 0x50 icd_str->ecg_rv_din_treshold = icd_str->last_RR_amp;//fixme новое борьба с неправильным динамическим порогом - 8001fe0: 687b ldr r3, [r7, #4] - 8001fe2: 6d1a ldr r2, [r3, #80] @ 0x50 - 8001fe4: 687b ldr r3, [r7, #4] - 8001fe6: 67da str r2, [r3, #124] @ 0x7c + 8002028: 687b ldr r3, [r7, #4] + 800202a: 6d1a ldr r2, [r3, #80] @ 0x50 + 800202c: 687b ldr r3, [r7, #4] + 800202e: 67da str r2, [r3, #124] @ 0x7c // период чсс равен времени с прошлого события icd_str->last_period = icd_str->last_RR_poz_rel; - 8001fe8: 687b ldr r3, [r7, #4] - 8001fea: f9b3 3058 ldrsh.w r3, [r3, #88] @ 0x58 - 8001fee: b29a uxth r2, r3 - 8001ff0: 687b ldr r3, [r7, #4] - 8001ff2: f8a3 204c strh.w r2, [r3, #76] @ 0x4c + 8002030: 687b ldr r3, [r7, #4] + 8002032: f9b3 3058 ldrsh.w r3, [r3, #88] @ 0x58 + 8002036: b29a uxth r2, r3 + 8002038: 687b ldr r3, [r7, #4] + 800203a: f8a3 204c strh.w r2, [r3, #76] @ 0x4c // стёрли счётчик до прошлого события т.к. оно только что произошло icd_str->last_RR_poz_rel = 0; - 8001ff6: 687b ldr r3, [r7, #4] - 8001ff8: 2200 movs r2, #0 - 8001ffa: f8a3 2058 strh.w r2, [r3, #88] @ 0x58 + 800203e: 687b ldr r3, [r7, #4] + 8002040: 2200 movs r2, #0 + 8002042: f8a3 2058 strh.w r2, [r3, #88] @ 0x58 // инкримент счётчика Vsense событий icd_str->Vs_cnt++; - 8001ffe: 687b ldr r3, [r7, #4] - 8002000: 6ddb ldr r3, [r3, #92] @ 0x5c - 8002002: 1c5a adds r2, r3, #1 - 8002004: 687b ldr r3, [r7, #4] - 8002006: 65da str r2, [r3, #92] @ 0x5c + 8002046: 687b ldr r3, [r7, #4] + 8002048: 6ddb ldr r3, [r3, #92] @ 0x5c + 800204a: 1c5a adds r2, r3, #1 + 800204c: 687b ldr r3, [r7, #4] + 800204e: 65da str r2, [r3, #92] @ 0x5c icd_str->vs_cnt_last++; - 8002008: 687b ldr r3, [r7, #4] - 800200a: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 - 800200e: 1c5a adds r2, r3, #1 - 8002010: 687b ldr r3, [r7, #4] - 8002012: f8c3 2088 str.w r2, [r3, #136] @ 0x88 + 8002050: 687b ldr r3, [r7, #4] + 8002052: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 + 8002056: 1c5a adds r2, r3, #1 + 8002058: 687b ldr r3, [r7, #4] + 800205a: f8c3 2088 str.w r2, [r3, #136] @ 0x88 //сейчас сокращение сердца icd_str->rr_now = true; - 8002016: 687b ldr r3, [r7, #4] - 8002018: 2201 movs r2, #1 - 800201a: 721a strb r2, [r3, #8] + 800205e: 687b ldr r3, [r7, #4] + 8002060: 2201 movs r2, #1 + 8002062: 721a strb r2, [r3, #8] // Если мы в нормальном режиме не терапии if(icd_str->terapy_now == Terapy_off) - 800201c: 687b ldr r3, [r7, #4] - 800201e: f893 309a ldrb.w r3, [r3, #154] @ 0x9a - 8002022: 2b00 cmp r3, #0 - 8002024: d114 bne.n 8002050 + 8002064: 687b ldr r3, [r7, #4] + 8002066: f893 309a ldrb.w r3, [r3, #154] @ 0x9a + 800206a: 2b00 cmp r3, #0 + 800206c: d114 bne.n 8002098 { icd_str->filt_period = moving_avarage(icd_str->last_period); - 8002026: 687b ldr r3, [r7, #4] - 8002028: f8b3 304c ldrh.w r3, [r3, #76] @ 0x4c - 800202c: 4618 mov r0, r3 - 800202e: f000 f99f bl 8002370 - 8002032: 4603 mov r3, r0 - 8002034: 461a mov r2, r3 - 8002036: 687b ldr r3, [r7, #4] - 8002038: f8a3 208c strh.w r2, [r3, #140] @ 0x8c + 800206e: 687b ldr r3, [r7, #4] + 8002070: f8b3 304c ldrh.w r3, [r3, #76] @ 0x4c + 8002074: 4618 mov r0, r3 + 8002076: f000 f99f bl 80023b8 + 800207a: 4603 mov r3, r0 + 800207c: 461a mov r2, r3 + 800207e: 687b ldr r3, [r7, #4] + 8002080: f8a3 208c strh.w r2, [r3, #140] @ 0x8c if(icd_str->vs_cnt_last >= 10) - 800203c: 687b ldr r3, [r7, #4] - 800203e: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 - 8002042: 2b09 cmp r3, #9 - 8002044: d902 bls.n 800204c + 8002084: 687b ldr r3, [r7, #4] + 8002086: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 + 800208a: 2b09 cmp r3, #9 + 800208c: d902 bls.n 8002094 { basket_alg(icd_str); - 8002046: 6878 ldr r0, [r7, #4] - 8002048: f000 f9d0 bl 80023ec + 800208e: 6878 ldr r0, [r7, #4] + 8002090: f000 f9d0 bl 8002434 } return true; - 800204c: 2301 movs r3, #1 - 800204e: e024 b.n 800209a + 8002094: 2301 movs r3, #1 + 8002096: e024 b.n 80020e2 } else if(icd_str->terapy_now == Terapy_fibr && icd_str->sub_mode == sub_redet) - 8002050: 687b ldr r3, [r7, #4] - 8002052: f893 309a ldrb.w r3, [r3, #154] @ 0x9a - 8002056: 2b01 cmp r3, #1 - 8002058: d11c bne.n 8002094 - 800205a: 687b ldr r3, [r7, #4] - 800205c: f893 309b ldrb.w r3, [r3, #155] @ 0x9b - 8002060: 2b02 cmp r3, #2 - 8002062: d117 bne.n 8002094 + 8002098: 687b ldr r3, [r7, #4] + 800209a: f893 309a ldrb.w r3, [r3, #154] @ 0x9a + 800209e: 2b01 cmp r3, #1 + 80020a0: d11c bne.n 80020dc + 80020a2: 687b ldr r3, [r7, #4] + 80020a4: f893 309b ldrb.w r3, [r3, #155] @ 0x9b + 80020a8: 2b02 cmp r3, #2 + 80020aa: d117 bne.n 80020dc { //инкрементируем счётчик Vs icd_str->redet_cnt++; - 8002064: 687b ldr r3, [r7, #4] - 8002066: f893 30b2 ldrb.w r3, [r3, #178] @ 0xb2 - 800206a: 3301 adds r3, #1 - 800206c: b2da uxtb r2, r3 - 800206e: 687b ldr r3, [r7, #4] - 8002070: f883 20b2 strb.w r2, [r3, #178] @ 0xb2 + 80020ac: 687b ldr r3, [r7, #4] + 80020ae: f893 30b2 ldrb.w r3, [r3, #178] @ 0xb2 + 80020b2: 3301 adds r3, #1 + 80020b4: b2da uxtb r2, r3 + 80020b6: 687b ldr r3, [r7, #4] + 80020b8: f883 20b2 strb.w r2, [r3, #178] @ 0xb2 //если период меньше положенного if(icd_str->last_period< icd_str->tachy_1_tres) - 8002074: 687b ldr r3, [r7, #4] - 8002076: f8b3 204c ldrh.w r2, [r3, #76] @ 0x4c - 800207a: 687b ldr r3, [r7, #4] - 800207c: f8b3 3084 ldrh.w r3, [r3, #132] @ 0x84 - 8002080: 429a cmp r2, r3 - 8002082: d207 bcs.n 8002094 + 80020bc: 687b ldr r3, [r7, #4] + 80020be: f8b3 204c ldrh.w r2, [r3, #76] @ 0x4c + 80020c2: 687b ldr r3, [r7, #4] + 80020c4: f8b3 3084 ldrh.w r3, [r3, #132] @ 0x84 + 80020c8: 429a cmp r2, r3 + 80020ca: d207 bcs.n 80020dc { icd_str->redet_bad_cnt++; - 8002084: 687b ldr r3, [r7, #4] - 8002086: f893 30b3 ldrb.w r3, [r3, #179] @ 0xb3 - 800208a: 3301 adds r3, #1 - 800208c: b2da uxtb r2, r3 - 800208e: 687b ldr r3, [r7, #4] - 8002090: f883 20b3 strb.w r2, [r3, #179] @ 0xb3 + 80020cc: 687b ldr r3, [r7, #4] + 80020ce: f893 30b3 ldrb.w r3, [r3, #179] @ 0xb3 + 80020d2: 3301 adds r3, #1 + 80020d4: b2da uxtb r2, r3 + 80020d6: 687b ldr r3, [r7, #4] + 80020d8: f883 20b3 strb.w r2, [r3, #179] @ 0xb3 } } return true; - 8002094: 2301 movs r3, #1 - 8002096: e000 b.n 800209a + 80020dc: 2301 movs r3, #1 + 80020de: e000 b.n 80020e2 } else return false; - 8002098: 2300 movs r3, #0 + 80020e0: 2300 movs r3, #0 } - 800209a: 4618 mov r0, r3 - 800209c: 3708 adds r7, #8 - 800209e: 46bd mov sp, r7 - 80020a0: bd80 pop {r7, pc} + 80020e2: 4618 mov r0, r3 + 80020e4: 3708 adds r7, #8 + 80020e6: 46bd mov sp, r7 + 80020e8: bd80 pop {r7, pc} ... -080020a4 : +080020ec : //алгоритм поиска QRS комплексов //алгоритм поиска QRS комплексов void search_alg(icd_str * icd_str) { - 80020a4: b580 push {r7, lr} - 80020a6: b082 sub sp, #8 - 80020a8: af00 add r7, sp, #0 - 80020aa: 6078 str r0, [r7, #4] + 80020ec: b580 push {r7, lr} + 80020ee: b082 sub sp, #8 + 80020f0: af00 add r7, sp, #0 + 80020f2: 6078 str r0, [r7, #4] //инкрементируем глобальный счётчик icd_str->counter++;// - 80020ac: 687b ldr r3, [r7, #4] - 80020ae: 6edb ldr r3, [r3, #108] @ 0x6c - 80020b0: 1c5a adds r2, r3, #1 - 80020b2: 687b ldr r3, [r7, #4] - 80020b4: 66da str r2, [r3, #108] @ 0x6c + 80020f4: 687b ldr r3, [r7, #4] + 80020f6: 6edb ldr r3, [r3, #108] @ 0x6c + 80020f8: 1c5a adds r2, r3, #1 + 80020fa: 687b ldr r3, [r7, #4] + 80020fc: 66da str r2, [r3, #108] @ 0x6c icd_str->last_RR_poz_rel++;//новое fixme - 80020b6: 687b ldr r3, [r7, #4] - 80020b8: f9b3 3058 ldrsh.w r3, [r3, #88] @ 0x58 - 80020bc: b29b uxth r3, r3 - 80020be: 3301 adds r3, #1 - 80020c0: b29b uxth r3, r3 - 80020c2: b21a sxth r2, r3 - 80020c4: 687b ldr r3, [r7, #4] - 80020c6: f8a3 2058 strh.w r2, [r3, #88] @ 0x58 + 80020fe: 687b ldr r3, [r7, #4] + 8002100: f9b3 3058 ldrsh.w r3, [r3, #88] @ 0x58 + 8002104: b29b uxth r3, r3 + 8002106: 3301 adds r3, #1 + 8002108: b29b uxth r3, r3 + 800210a: b21a sxth r2, r3 + 800210c: 687b ldr r3, [r7, #4] + 800210e: f8a3 2058 strh.w r2, [r3, #88] @ 0x58 //сейчас не сокращение сердца icd_str->rr_now = false; - 80020ca: 687b ldr r3, [r7, #4] - 80020cc: 2200 movs r2, #0 - 80020ce: 721a strb r2, [r3, #8] + 8002112: 687b ldr r3, [r7, #4] + 8002114: 2200 movs r2, #0 + 8002116: 721a strb r2, [r3, #8] switch (icd_str->search_set_mode) - 80020d0: 687b ldr r3, [r7, #4] - 80020d2: 789b ldrb r3, [r3, #2] - 80020d4: 2b06 cmp r3, #6 - 80020d6: f200 8147 bhi.w 8002368 - 80020da: a201 add r2, pc, #4 @ (adr r2, 80020e0 ) - 80020dc: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 80020e0: 08002369 .word 0x08002369 - 80020e4: 080020fd .word 0x080020fd - 80020e8: 08002143 .word 0x08002143 - 80020ec: 080021bf .word 0x080021bf - 80020f0: 0800224d .word 0x0800224d - 80020f4: 080022c7 .word 0x080022c7 - 80020f8: 08002335 .word 0x08002335 + 8002118: 687b ldr r3, [r7, #4] + 800211a: 789b ldrb r3, [r3, #2] + 800211c: 2b06 cmp r3, #6 + 800211e: f200 8147 bhi.w 80023b0 + 8002122: a201 add r2, pc, #4 @ (adr r2, 8002128 ) + 8002124: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8002128: 080023b1 .word 0x080023b1 + 800212c: 08002145 .word 0x08002145 + 8002130: 0800218b .word 0x0800218b + 8002134: 08002207 .word 0x08002207 + 8002138: 08002295 .word 0x08002295 + 800213c: 0800230f .word 0x0800230f + 8002140: 0800237d .word 0x0800237d } break; case Mode_search_BASE: { // первичный заход в режим if(mode_start(icd_str)) - 80020fc: 6878 ldr r0, [r7, #4] - 80020fe: f7ff fe55 bl 8001dac - 8002102: 4603 mov r3, r0 - 8002104: 2b00 cmp r3, #0 - 8002106: d003 beq.n 8002110 + 8002144: 6878 ldr r0, [r7, #4] + 8002146: f7ff fe55 bl 8001df4 + 800214a: 4603 mov r3, r0 + 800214c: 2b00 cmp r3, #0 + 800214e: d003 beq.n 8002158 icd_str->ecg_rv_din_treshold = icd_str->min_tres; - 8002108: 687b ldr r3, [r7, #4] - 800210a: 68da ldr r2, [r3, #12] - 800210c: 687b ldr r3, [r7, #4] - 800210e: 67da str r2, [r3, #124] @ 0x7c + 8002150: 687b ldr r3, [r7, #4] + 8002152: 68da ldr r2, [r3, #12] + 8002154: 687b ldr r3, [r7, #4] + 8002156: 67da str r2, [r3, #124] @ 0x7c // проверка длительности режима функцией если превышена вывалиться из функции if(check_mode_len(icd_str,icd_str->base_time,Mode_stimulation_LV)) - 8002110: 687b ldr r3, [r7, #4] - 8002112: 8ddb ldrh r3, [r3, #46] @ 0x2e - 8002114: 2205 movs r2, #5 - 8002116: 4619 mov r1, r3 - 8002118: 6878 ldr r0, [r7, #4] - 800211a: f7ff fee3 bl 8001ee4 - 800211e: 4603 mov r3, r0 - 8002120: 2b00 cmp r3, #0 - 8002122: f040 8116 bne.w 8002352 + 8002158: 687b ldr r3, [r7, #4] + 800215a: 8ddb ldrh r3, [r3, #46] @ 0x2e + 800215c: 2205 movs r2, #5 + 800215e: 4619 mov r1, r3 + 8002160: 6878 ldr r0, [r7, #4] + 8002162: f7ff fee3 bl 8001f2c + 8002166: 4603 mov r3, r0 + 8002168: 2b00 cmp r3, #0 + 800216a: f040 8116 bne.w 800239a return; // проверка пересечения порога if(check_tres(icd_str)) - 8002126: 6878 ldr r0, [r7, #4] - 8002128: f7ff ff23 bl 8001f72 - 800212c: 4603 mov r3, r0 - 800212e: 2b00 cmp r3, #0 - 8002130: f040 8111 bne.w 8002356 + 800216e: 6878 ldr r0, [r7, #4] + 8002170: f7ff ff23 bl 8001fba + 8002174: 4603 mov r3, r0 + 8002176: 2b00 cmp r3, #0 + 8002178: f040 8111 bne.w 800239e return; icd_str->mode_cnt++; - 8002134: 687b ldr r3, [r7, #4] - 8002136: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8002138: 3301 adds r3, #1 - 800213a: b29a uxth r2, r3 - 800213c: 687b ldr r3, [r7, #4] - 800213e: 855a strh r2, [r3, #42] @ 0x2a + 800217c: 687b ldr r3, [r7, #4] + 800217e: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8002180: 3301 adds r3, #1 + 8002182: b29a uxth r2, r3 + 8002184: 687b ldr r3, [r7, #4] + 8002186: 855a strh r2, [r3, #42] @ 0x2a } break; - 8002140: e112 b.n 8002368 + 8002188: e112 b.n 80023b0 case Mode_search_SQUARE: { // первичный заход в режим fixme обернуть в функцию if(mode_start(icd_str)) - 8002142: 6878 ldr r0, [r7, #4] - 8002144: f7ff fe32 bl 8001dac - 8002148: 4603 mov r3, r0 - 800214a: 2b00 cmp r3, #0 - 800214c: d01e beq.n 800218c + 800218a: 6878 ldr r0, [r7, #4] + 800218c: f7ff fe32 bl 8001df4 + 8002190: 4603 mov r3, r0 + 8002192: 2b00 cmp r3, #0 + 8002194: d01e beq.n 80021d4 icd_str->ecg_rv_din_treshold = icd_str->ecg_rv_din_treshold * icd_str->square_coef > icd_str->min_tres ? - 800214e: 687b ldr r3, [r7, #4] - 8002150: ed93 7a1f vldr s14, [r3, #124] @ 0x7c - 8002154: 687b ldr r3, [r7, #4] - 8002156: edd3 7a07 vldr s15, [r3, #28] - 800215a: ee27 7a27 vmul.f32 s14, s14, s15 - 800215e: 687b ldr r3, [r7, #4] - 8002160: edd3 7a03 vldr s15, [r3, #12] + 8002196: 687b ldr r3, [r7, #4] + 8002198: ed93 7a1f vldr s14, [r3, #124] @ 0x7c + 800219c: 687b ldr r3, [r7, #4] + 800219e: edd3 7a07 vldr s15, [r3, #28] + 80021a2: ee27 7a27 vmul.f32 s14, s14, s15 + 80021a6: 687b ldr r3, [r7, #4] + 80021a8: edd3 7a03 vldr s15, [r3, #12] icd_str->ecg_rv_din_treshold * icd_str->square_coef : icd_str->min_tres; - 8002164: eeb4 7ae7 vcmpe.f32 s14, s15 - 8002168: eef1 fa10 vmrs APSR_nzcv, fpscr - 800216c: dd08 ble.n 8002180 - 800216e: 687b ldr r3, [r7, #4] - 8002170: ed93 7a1f vldr s14, [r3, #124] @ 0x7c - 8002174: 687b ldr r3, [r7, #4] - 8002176: edd3 7a07 vldr s15, [r3, #28] - 800217a: ee67 7a27 vmul.f32 s15, s14, s15 - 800217e: e002 b.n 8002186 - 8002180: 687b ldr r3, [r7, #4] - 8002182: edd3 7a03 vldr s15, [r3, #12] + 80021ac: eeb4 7ae7 vcmpe.f32 s14, s15 + 80021b0: eef1 fa10 vmrs APSR_nzcv, fpscr + 80021b4: dd08 ble.n 80021c8 + 80021b6: 687b ldr r3, [r7, #4] + 80021b8: ed93 7a1f vldr s14, [r3, #124] @ 0x7c + 80021bc: 687b ldr r3, [r7, #4] + 80021be: edd3 7a07 vldr s15, [r3, #28] + 80021c2: ee67 7a27 vmul.f32 s15, s14, s15 + 80021c6: e002 b.n 80021ce + 80021c8: 687b ldr r3, [r7, #4] + 80021ca: edd3 7a03 vldr s15, [r3, #12] icd_str->ecg_rv_din_treshold = icd_str->ecg_rv_din_treshold * icd_str->square_coef > icd_str->min_tres ? - 8002186: 687b ldr r3, [r7, #4] - 8002188: edc3 7a1f vstr s15, [r3, #124] @ 0x7c + 80021ce: 687b ldr r3, [r7, #4] + 80021d0: edc3 7a1f vstr s15, [r3, #124] @ 0x7c // проверка длительности режима функцией если превышена вывалиться из функции if (check_mode_len(icd_str, icd_str->square_time, Mode_search_TRIANGLE)) - 800218c: 687b ldr r3, [r7, #4] - 800218e: 8e5b ldrh r3, [r3, #50] @ 0x32 - 8002190: 2203 movs r2, #3 - 8002192: 4619 mov r1, r3 - 8002194: 6878 ldr r0, [r7, #4] - 8002196: f7ff fea5 bl 8001ee4 - 800219a: 4603 mov r3, r0 - 800219c: 2b00 cmp r3, #0 - 800219e: f040 80dc bne.w 800235a + 80021d4: 687b ldr r3, [r7, #4] + 80021d6: 8e5b ldrh r3, [r3, #50] @ 0x32 + 80021d8: 2203 movs r2, #3 + 80021da: 4619 mov r1, r3 + 80021dc: 6878 ldr r0, [r7, #4] + 80021de: f7ff fea5 bl 8001f2c + 80021e2: 4603 mov r3, r0 + 80021e4: 2b00 cmp r3, #0 + 80021e6: f040 80dc bne.w 80023a2 return; // проверка пересечения порога if (check_tres(icd_str)) - 80021a2: 6878 ldr r0, [r7, #4] - 80021a4: f7ff fee5 bl 8001f72 - 80021a8: 4603 mov r3, r0 - 80021aa: 2b00 cmp r3, #0 - 80021ac: f040 80d7 bne.w 800235e + 80021ea: 6878 ldr r0, [r7, #4] + 80021ec: f7ff fee5 bl 8001fba + 80021f0: 4603 mov r3, r0 + 80021f2: 2b00 cmp r3, #0 + 80021f4: f040 80d7 bne.w 80023a6 return; icd_str->mode_cnt++; - 80021b0: 687b ldr r3, [r7, #4] - 80021b2: 8d5b ldrh r3, [r3, #42] @ 0x2a - 80021b4: 3301 adds r3, #1 - 80021b6: b29a uxth r2, r3 - 80021b8: 687b ldr r3, [r7, #4] - 80021ba: 855a strh r2, [r3, #42] @ 0x2a + 80021f8: 687b ldr r3, [r7, #4] + 80021fa: 8d5b ldrh r3, [r3, #42] @ 0x2a + 80021fc: 3301 adds r3, #1 + 80021fe: b29a uxth r2, r3 + 8002200: 687b ldr r3, [r7, #4] + 8002202: 855a strh r2, [r3, #42] @ 0x2a } break; - 80021bc: e0d4 b.n 8002368 + 8002204: e0d4 b.n 80023b0 case Mode_search_TRIANGLE: { // первичный заход в режим mode_start(icd_str); - 80021be: 6878 ldr r0, [r7, #4] - 80021c0: f7ff fdf4 bl 8001dac + 8002206: 6878 ldr r0, [r7, #4] + 8002208: f7ff fdf4 bl 8001df4 // если время шага прошло if((icd_str->mode_cnt % icd_str->triangle_step_time) == 0) - 80021c4: 687b ldr r3, [r7, #4] - 80021c6: 8d5b ldrh r3, [r3, #42] @ 0x2a - 80021c8: 687a ldr r2, [r7, #4] - 80021ca: 8ed2 ldrh r2, [r2, #54] @ 0x36 - 80021cc: fbb3 f1f2 udiv r1, r3, r2 - 80021d0: fb01 f202 mul.w r2, r1, r2 - 80021d4: 1a9b subs r3, r3, r2 - 80021d6: b29b uxth r3, r3 - 80021d8: 2b00 cmp r3, #0 - 80021da: d11e bne.n 800221a + 800220c: 687b ldr r3, [r7, #4] + 800220e: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8002210: 687a ldr r2, [r7, #4] + 8002212: 8ed2 ldrh r2, [r2, #54] @ 0x36 + 8002214: fbb3 f1f2 udiv r1, r3, r2 + 8002218: fb01 f202 mul.w r2, r1, r2 + 800221c: 1a9b subs r3, r3, r2 + 800221e: b29b uxth r3, r3 + 8002220: 2b00 cmp r3, #0 + 8002222: d11e bne.n 8002262 { icd_str->ecg_rv_din_treshold = icd_str->ecg_rv_din_treshold * icd_str->triangle_coef > icd_str->min_tres ? - 80021dc: 687b ldr r3, [r7, #4] - 80021de: ed93 7a1f vldr s14, [r3, #124] @ 0x7c - 80021e2: 687b ldr r3, [r7, #4] - 80021e4: edd3 7a09 vldr s15, [r3, #36] @ 0x24 - 80021e8: ee27 7a27 vmul.f32 s14, s14, s15 - 80021ec: 687b ldr r3, [r7, #4] - 80021ee: edd3 7a03 vldr s15, [r3, #12] + 8002224: 687b ldr r3, [r7, #4] + 8002226: ed93 7a1f vldr s14, [r3, #124] @ 0x7c + 800222a: 687b ldr r3, [r7, #4] + 800222c: edd3 7a09 vldr s15, [r3, #36] @ 0x24 + 8002230: ee27 7a27 vmul.f32 s14, s14, s15 + 8002234: 687b ldr r3, [r7, #4] + 8002236: edd3 7a03 vldr s15, [r3, #12] icd_str->ecg_rv_din_treshold * icd_str->triangle_coef : icd_str->min_tres; - 80021f2: eeb4 7ae7 vcmpe.f32 s14, s15 - 80021f6: eef1 fa10 vmrs APSR_nzcv, fpscr - 80021fa: dd08 ble.n 800220e - 80021fc: 687b ldr r3, [r7, #4] - 80021fe: ed93 7a1f vldr s14, [r3, #124] @ 0x7c - 8002202: 687b ldr r3, [r7, #4] - 8002204: edd3 7a09 vldr s15, [r3, #36] @ 0x24 - 8002208: ee67 7a27 vmul.f32 s15, s14, s15 - 800220c: e002 b.n 8002214 - 800220e: 687b ldr r3, [r7, #4] - 8002210: edd3 7a03 vldr s15, [r3, #12] + 800223a: eeb4 7ae7 vcmpe.f32 s14, s15 + 800223e: eef1 fa10 vmrs APSR_nzcv, fpscr + 8002242: dd08 ble.n 8002256 + 8002244: 687b ldr r3, [r7, #4] + 8002246: ed93 7a1f vldr s14, [r3, #124] @ 0x7c + 800224a: 687b ldr r3, [r7, #4] + 800224c: edd3 7a09 vldr s15, [r3, #36] @ 0x24 + 8002250: ee67 7a27 vmul.f32 s15, s14, s15 + 8002254: e002 b.n 800225c + 8002256: 687b ldr r3, [r7, #4] + 8002258: edd3 7a03 vldr s15, [r3, #12] icd_str->ecg_rv_din_treshold = icd_str->ecg_rv_din_treshold * icd_str->triangle_coef > icd_str->min_tres ? - 8002214: 687b ldr r3, [r7, #4] - 8002216: edc3 7a1f vstr s15, [r3, #124] @ 0x7c + 800225c: 687b ldr r3, [r7, #4] + 800225e: edc3 7a1f vstr s15, [r3, #124] @ 0x7c } // проверка длительности режима функцией если превышена вывалиться из функции if (check_mode_len(icd_str, icd_str->triangle_time, Mode_search_BASE)) - 800221a: 687b ldr r3, [r7, #4] - 800221c: 8e9b ldrh r3, [r3, #52] @ 0x34 - 800221e: 2201 movs r2, #1 - 8002220: 4619 mov r1, r3 - 8002222: 6878 ldr r0, [r7, #4] - 8002224: f7ff fe5e bl 8001ee4 - 8002228: 4603 mov r3, r0 - 800222a: 2b00 cmp r3, #0 - 800222c: f040 8099 bne.w 8002362 + 8002262: 687b ldr r3, [r7, #4] + 8002264: 8e9b ldrh r3, [r3, #52] @ 0x34 + 8002266: 2201 movs r2, #1 + 8002268: 4619 mov r1, r3 + 800226a: 6878 ldr r0, [r7, #4] + 800226c: f7ff fe5e bl 8001f2c + 8002270: 4603 mov r3, r0 + 8002272: 2b00 cmp r3, #0 + 8002274: f040 8099 bne.w 80023aa return; // проверка пересечения порога if (check_tres(icd_str)) - 8002230: 6878 ldr r0, [r7, #4] - 8002232: f7ff fe9e bl 8001f72 - 8002236: 4603 mov r3, r0 - 8002238: 2b00 cmp r3, #0 - 800223a: f040 8094 bne.w 8002366 + 8002278: 6878 ldr r0, [r7, #4] + 800227a: f7ff fe9e bl 8001fba + 800227e: 4603 mov r3, r0 + 8002280: 2b00 cmp r3, #0 + 8002282: f040 8094 bne.w 80023ae return; icd_str->mode_cnt++; - 800223e: 687b ldr r3, [r7, #4] - 8002240: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8002242: 3301 adds r3, #1 - 8002244: b29a uxth r2, r3 - 8002246: 687b ldr r3, [r7, #4] - 8002248: 855a strh r2, [r3, #42] @ 0x2a + 8002286: 687b ldr r3, [r7, #4] + 8002288: 8d5b ldrh r3, [r3, #42] @ 0x2a + 800228a: 3301 adds r3, #1 + 800228c: b29a uxth r2, r3 + 800228e: 687b ldr r3, [r7, #4] + 8002290: 855a strh r2, [r3, #42] @ 0x2a } break; - 800224a: e08d b.n 8002368 + 8002292: e08d b.n 80023b0 case Mode_search_MAX://FIXME криво считаем!!!!!!!!!!!!!!! { // первичный заход в режим if(mode_start(icd_str)) - 800224c: 6878 ldr r0, [r7, #4] - 800224e: f7ff fdad bl 8001dac + 8002294: 6878 ldr r0, [r7, #4] + 8002296: f7ff fdad bl 8001df4 { } //если сигнал выше найденного максимума if(icd_str->ecg_rv_pos_sig > icd_str->last_RR_amp) - 8002252: 687b ldr r3, [r7, #4] - 8002254: ed93 7a1e vldr s14, [r3, #120] @ 0x78 - 8002258: 687b ldr r3, [r7, #4] - 800225a: edd3 7a14 vldr s15, [r3, #80] @ 0x50 - 800225e: eeb4 7ae7 vcmpe.f32 s14, s15 - 8002262: eef1 fa10 vmrs APSR_nzcv, fpscr - 8002266: dd1b ble.n 80022a0 + 800229a: 687b ldr r3, [r7, #4] + 800229c: ed93 7a1e vldr s14, [r3, #120] @ 0x78 + 80022a0: 687b ldr r3, [r7, #4] + 80022a2: edd3 7a14 vldr s15, [r3, #80] @ 0x50 + 80022a6: eeb4 7ae7 vcmpe.f32 s14, s15 + 80022aa: eef1 fa10 vmrs APSR_nzcv, fpscr + 80022ae: dd1b ble.n 80022e8 { //выше верхнего порога//fixme тут косяк //if(icd_str->ecg_rv_pos_sig > icd_str->ecg_rv_din_treshold) fixme вроде тут косяк был if(icd_str->ecg_rv_pos_sig > icd_str->max_tres) - 8002268: 687b ldr r3, [r7, #4] - 800226a: ed93 7a1e vldr s14, [r3, #120] @ 0x78 - 800226e: 687b ldr r3, [r7, #4] - 8002270: edd3 7a05 vldr s15, [r3, #20] - 8002274: eeb4 7ae7 vcmpe.f32 s14, s15 - 8002278: eef1 fa10 vmrs APSR_nzcv, fpscr - 800227c: dd08 ble.n 8002290 + 80022b0: 687b ldr r3, [r7, #4] + 80022b2: ed93 7a1e vldr s14, [r3, #120] @ 0x78 + 80022b6: 687b ldr r3, [r7, #4] + 80022b8: edd3 7a05 vldr s15, [r3, #20] + 80022bc: eeb4 7ae7 vcmpe.f32 s14, s15 + 80022c0: eef1 fa10 vmrs APSR_nzcv, fpscr + 80022c4: dd08 ble.n 80022d8 { icd_str->ecg_rv_din_treshold = icd_str->max_tres; - 800227e: 687b ldr r3, [r7, #4] - 8002280: 695a ldr r2, [r3, #20] - 8002282: 687b ldr r3, [r7, #4] - 8002284: 67da str r2, [r3, #124] @ 0x7c + 80022c6: 687b ldr r3, [r7, #4] + 80022c8: 695a ldr r2, [r3, #20] + 80022ca: 687b ldr r3, [r7, #4] + 80022cc: 67da str r2, [r3, #124] @ 0x7c icd_str->last_RR_amp = icd_str->max_tres; - 8002286: 687b ldr r3, [r7, #4] - 8002288: 695a ldr r2, [r3, #20] - 800228a: 687b ldr r3, [r7, #4] - 800228c: 651a str r2, [r3, #80] @ 0x50 - 800228e: e007 b.n 80022a0 + 80022ce: 687b ldr r3, [r7, #4] + 80022d0: 695a ldr r2, [r3, #20] + 80022d2: 687b ldr r3, [r7, #4] + 80022d4: 651a str r2, [r3, #80] @ 0x50 + 80022d6: e007 b.n 80022e8 } //в норм границах else { icd_str->ecg_rv_din_treshold = icd_str->ecg_rv_pos_sig; - 8002290: 687b ldr r3, [r7, #4] - 8002292: 6f9a ldr r2, [r3, #120] @ 0x78 - 8002294: 687b ldr r3, [r7, #4] - 8002296: 67da str r2, [r3, #124] @ 0x7c + 80022d8: 687b ldr r3, [r7, #4] + 80022da: 6f9a ldr r2, [r3, #120] @ 0x78 + 80022dc: 687b ldr r3, [r7, #4] + 80022de: 67da str r2, [r3, #124] @ 0x7c icd_str->last_RR_amp = icd_str->ecg_rv_pos_sig; - 8002298: 687b ldr r3, [r7, #4] - 800229a: 6f9a ldr r2, [r3, #120] @ 0x78 - 800229c: 687b ldr r3, [r7, #4] - 800229e: 651a str r2, [r3, #80] @ 0x50 + 80022e0: 687b ldr r3, [r7, #4] + 80022e2: 6f9a ldr r2, [r3, #120] @ 0x78 + 80022e4: 687b ldr r3, [r7, #4] + 80022e6: 651a str r2, [r3, #80] @ 0x50 } } if(icd_str->mode_cnt > icd_str->max_search_time) - 80022a0: 687b ldr r3, [r7, #4] - 80022a2: 8d5a ldrh r2, [r3, #42] @ 0x2a - 80022a4: 687b ldr r3, [r7, #4] - 80022a6: 8e1b ldrh r3, [r3, #48] @ 0x30 - 80022a8: 429a cmp r2, r3 - 80022aa: d905 bls.n 80022b8 + 80022e8: 687b ldr r3, [r7, #4] + 80022ea: 8d5a ldrh r2, [r3, #42] @ 0x2a + 80022ec: 687b ldr r3, [r7, #4] + 80022ee: 8e1b ldrh r3, [r3, #48] @ 0x30 + 80022f0: 429a cmp r2, r3 + 80022f2: d905 bls.n 8002300 { // сбросили счётчик icd_str->mode_cnt = 0; - 80022ac: 687b ldr r3, [r7, #4] - 80022ae: 2200 movs r2, #0 - 80022b0: 855a strh r2, [r3, #42] @ 0x2a + 80022f4: 687b ldr r3, [r7, #4] + 80022f6: 2200 movs r2, #0 + 80022f8: 855a strh r2, [r3, #42] @ 0x2a // перешли в режим поиска квадратный icd_str->search_set_mode = Mode_search_SQUARE; - 80022b2: 687b ldr r3, [r7, #4] - 80022b4: 2202 movs r2, #2 - 80022b6: 709a strb r2, [r3, #2] + 80022fa: 687b ldr r3, [r7, #4] + 80022fc: 2202 movs r2, #2 + 80022fe: 709a strb r2, [r3, #2] } icd_str->mode_cnt++; - 80022b8: 687b ldr r3, [r7, #4] - 80022ba: 8d5b ldrh r3, [r3, #42] @ 0x2a - 80022bc: 3301 adds r3, #1 - 80022be: b29a uxth r2, r3 - 80022c0: 687b ldr r3, [r7, #4] - 80022c2: 855a strh r2, [r3, #42] @ 0x2a + 8002300: 687b ldr r3, [r7, #4] + 8002302: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8002304: 3301 adds r3, #1 + 8002306: b29a uxth r2, r3 + 8002308: 687b ldr r3, [r7, #4] + 800230a: 855a strh r2, [r3, #42] @ 0x2a } break; - 80022c4: e050 b.n 8002368 + 800230c: e050 b.n 80023b0 case Mode_stimulation_LV: { // первичный заход в режим if(mode_start(icd_str)) - 80022c6: 6878 ldr r0, [r7, #4] - 80022c8: f7ff fd70 bl 8001dac - 80022cc: 4603 mov r3, r0 - 80022ce: 2b00 cmp r3, #0 - 80022d0: d014 beq.n 80022fc + 800230e: 6878 ldr r0, [r7, #4] + 8002310: f7ff fd70 bl 8001df4 + 8002314: 4603 mov r3, r0 + 8002316: 2b00 cmp r3, #0 + 8002318: d014 beq.n 8002344 { //сбросили параметр так как не было события сердца icd_str->norm_cnt = 0; - 80022d2: 687b ldr r3, [r7, #4] - 80022d4: 2200 movs r2, #0 - 80022d6: f883 2091 strb.w r2, [r3, #145] @ 0x91 + 800231a: 687b ldr r3, [r7, #4] + 800231c: 2200 movs r2, #0 + 800231e: f883 2091 strb.w r2, [r3, #145] @ 0x91 //сейчас сокращение сердца icd_str->rr_now = true; - 80022da: 687b ldr r3, [r7, #4] - 80022dc: 2201 movs r2, #1 - 80022de: 721a strb r2, [r3, #8] + 8002322: 687b ldr r3, [r7, #4] + 8002324: 2201 movs r2, #1 + 8002326: 721a strb r2, [r3, #8] if(icd_str->LV_on && icd_str->lv_mode != lv_mode_none)//тут должны производить низковольтную стимуляцию - 80022e0: 687b ldr r3, [r7, #4] - 80022e2: f893 3068 ldrb.w r3, [r3, #104] @ 0x68 - 80022e6: 2b00 cmp r3, #0 - 80022e8: d008 beq.n 80022fc - 80022ea: 687b ldr r3, [r7, #4] - 80022ec: f893 303a ldrb.w r3, [r3, #58] @ 0x3a - 80022f0: 2b00 cmp r3, #0 - 80022f2: d003 beq.n 80022fc + 8002328: 687b ldr r3, [r7, #4] + 800232a: f893 3068 ldrb.w r3, [r3, #104] @ 0x68 + 800232e: 2b00 cmp r3, #0 + 8002330: d008 beq.n 8002344 + 8002332: 687b ldr r3, [r7, #4] + 8002334: f893 303a ldrb.w r3, [r3, #58] @ 0x3a + 8002338: 2b00 cmp r3, #0 + 800233a: d003 beq.n 8002344 { icd_str->lv_start = true;//надо начинать стимуляцию - 80022f4: 687b ldr r3, [r7, #4] - 80022f6: 2201 movs r2, #1 - 80022f8: f883 2038 strb.w r2, [r3, #56] @ 0x38 + 800233c: 687b ldr r3, [r7, #4] + 800233e: 2201 movs r2, #1 + 8002340: f883 2038 strb.w r2, [r3, #56] @ 0x38 } } // второе условие добавил для burst режима if(icd_str->mode_cnt > icd_str->lv_mode_time && icd_str->lv_start == false) - 80022fc: 687b ldr r3, [r7, #4] - 80022fe: 8d5a ldrh r2, [r3, #42] @ 0x2a - 8002300: 687b ldr r3, [r7, #4] - 8002302: f8b3 3042 ldrh.w r3, [r3, #66] @ 0x42 - 8002306: 429a cmp r2, r3 - 8002308: d90d bls.n 8002326 - 800230a: 687b ldr r3, [r7, #4] - 800230c: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 - 8002310: f083 0301 eor.w r3, r3, #1 - 8002314: b2db uxtb r3, r3 - 8002316: 2b00 cmp r3, #0 - 8002318: d005 beq.n 8002326 + 8002344: 687b ldr r3, [r7, #4] + 8002346: 8d5a ldrh r2, [r3, #42] @ 0x2a + 8002348: 687b ldr r3, [r7, #4] + 800234a: f8b3 3042 ldrh.w r3, [r3, #66] @ 0x42 + 800234e: 429a cmp r2, r3 + 8002350: d90d bls.n 800236e + 8002352: 687b ldr r3, [r7, #4] + 8002354: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 + 8002358: f083 0301 eor.w r3, r3, #1 + 800235c: b2db uxtb r3, r3 + 800235e: 2b00 cmp r3, #0 + 8002360: d005 beq.n 800236e { // сбросили счётчик icd_str->mode_cnt = 0;//по идее не нужно всё равно сбросим при первичном заходе - 800231a: 687b ldr r3, [r7, #4] - 800231c: 2200 movs r2, #0 - 800231e: 855a strh r2, [r3, #42] @ 0x2a + 8002362: 687b ldr r3, [r7, #4] + 8002364: 2200 movs r2, #0 + 8002366: 855a strh r2, [r3, #42] @ 0x2a // перешли в режим поиска квадратный icd_str->search_set_mode = Mode_search_SQUARE; - 8002320: 687b ldr r3, [r7, #4] - 8002322: 2202 movs r2, #2 - 8002324: 709a strb r2, [r3, #2] + 8002368: 687b ldr r3, [r7, #4] + 800236a: 2202 movs r2, #2 + 800236c: 709a strb r2, [r3, #2] } icd_str->mode_cnt++; - 8002326: 687b ldr r3, [r7, #4] - 8002328: 8d5b ldrh r3, [r3, #42] @ 0x2a - 800232a: 3301 adds r3, #1 - 800232c: b29a uxth r2, r3 - 800232e: 687b ldr r3, [r7, #4] - 8002330: 855a strh r2, [r3, #42] @ 0x2a + 800236e: 687b ldr r3, [r7, #4] + 8002370: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8002372: 3301 adds r3, #1 + 8002374: b29a uxth r2, r3 + 8002376: 687b ldr r3, [r7, #4] + 8002378: 855a strh r2, [r3, #42] @ 0x2a } break; - 8002332: e019 b.n 8002368 + 800237a: e019 b.n 80023b0 case Mode_stimulation_HV: { if(mode_start(icd_str)) - 8002334: 6878 ldr r0, [r7, #4] - 8002336: f7ff fd39 bl 8001dac - 800233a: 4603 mov r3, r0 - 800233c: 2b00 cmp r3, #0 - 800233e: d003 beq.n 8002348 + 800237c: 6878 ldr r0, [r7, #4] + 800237e: f7ff fd39 bl 8001df4 + 8002382: 4603 mov r3, r0 + 8002384: 2b00 cmp r3, #0 + 8002386: d003 beq.n 8002390 { //сбросили параметр так как не было события сердца icd_str->norm_cnt = 0; - 8002340: 687b ldr r3, [r7, #4] - 8002342: 2200 movs r2, #0 - 8002344: f883 2091 strb.w r2, [r3, #145] @ 0x91 + 8002388: 687b ldr r3, [r7, #4] + 800238a: 2200 movs r2, #0 + 800238c: f883 2091 strb.w r2, [r3, #145] @ 0x91 } icd_str->ecg_rv_pos_sig = 0.0; - 8002348: 687b ldr r3, [r7, #4] - 800234a: f04f 0200 mov.w r2, #0 - 800234e: 679a str r2, [r3, #120] @ 0x78 + 8002390: 687b ldr r3, [r7, #4] + 8002392: f04f 0200 mov.w r2, #0 + 8002396: 679a str r2, [r3, #120] @ 0x78 } break; - 8002350: e00a b.n 8002368 + 8002398: e00a b.n 80023b0 return; - 8002352: bf00 nop - 8002354: e008 b.n 8002368 + 800239a: bf00 nop + 800239c: e008 b.n 80023b0 return; - 8002356: bf00 nop - 8002358: e006 b.n 8002368 + 800239e: bf00 nop + 80023a0: e006 b.n 80023b0 return; - 800235a: bf00 nop - 800235c: e004 b.n 8002368 + 80023a2: bf00 nop + 80023a4: e004 b.n 80023b0 return; - 800235e: bf00 nop - 8002360: e002 b.n 8002368 + 80023a6: bf00 nop + 80023a8: e002 b.n 80023b0 return; - 8002362: bf00 nop - 8002364: e000 b.n 8002368 + 80023aa: bf00 nop + 80023ac: e000 b.n 80023b0 return; - 8002366: bf00 nop + 80023ae: bf00 nop } } - 8002368: 3708 adds r7, #8 - 800236a: 46bd mov sp, r7 - 800236c: bd80 pop {r7, pc} - 800236e: bf00 nop + 80023b0: 3708 adds r7, #8 + 80023b2: 46bd mov sp, r7 + 80023b4: bd80 pop {r7, pc} + 80023b6: bf00 nop -08002370 : +080023b8 : uint16_t moving_avarage(uint16_t data) { - 8002370: b480 push {r7} - 8002372: b085 sub sp, #20 - 8002374: af00 add r7, sp, #0 - 8002376: 4603 mov r3, r0 - 8002378: 80fb strh r3, [r7, #6] + 80023b8: b480 push {r7} + 80023ba: b085 sub sp, #20 + 80023bc: af00 add r7, sp, #0 + 80023be: 4603 mov r3, r0 + 80023c0: 80fb strh r3, [r7, #6] static uint16_t buf[10]; static uint8_t b_pointer = 0; buf[b_pointer] = data; - 800237a: 4b19 ldr r3, [pc, #100] @ (80023e0 ) - 800237c: 781b ldrb r3, [r3, #0] - 800237e: 4619 mov r1, r3 - 8002380: 4a18 ldr r2, [pc, #96] @ (80023e4 ) - 8002382: 88fb ldrh r3, [r7, #6] - 8002384: f822 3011 strh.w r3, [r2, r1, lsl #1] + 80023c2: 4b19 ldr r3, [pc, #100] @ (8002428 ) + 80023c4: 781b ldrb r3, [r3, #0] + 80023c6: 4619 mov r1, r3 + 80023c8: 4a18 ldr r2, [pc, #96] @ (800242c ) + 80023ca: 88fb ldrh r3, [r7, #6] + 80023cc: f822 3011 strh.w r3, [r2, r1, lsl #1] b_pointer++; - 8002388: 4b15 ldr r3, [pc, #84] @ (80023e0 ) - 800238a: 781b ldrb r3, [r3, #0] - 800238c: 3301 adds r3, #1 - 800238e: b2da uxtb r2, r3 - 8002390: 4b13 ldr r3, [pc, #76] @ (80023e0 ) - 8002392: 701a strb r2, [r3, #0] + 80023d0: 4b15 ldr r3, [pc, #84] @ (8002428 ) + 80023d2: 781b ldrb r3, [r3, #0] + 80023d4: 3301 adds r3, #1 + 80023d6: b2da uxtb r2, r3 + 80023d8: 4b13 ldr r3, [pc, #76] @ (8002428 ) + 80023da: 701a strb r2, [r3, #0] if(b_pointer >= 10) - 8002394: 4b12 ldr r3, [pc, #72] @ (80023e0 ) - 8002396: 781b ldrb r3, [r3, #0] - 8002398: 2b09 cmp r3, #9 - 800239a: d902 bls.n 80023a2 + 80023dc: 4b12 ldr r3, [pc, #72] @ (8002428 ) + 80023de: 781b ldrb r3, [r3, #0] + 80023e0: 2b09 cmp r3, #9 + 80023e2: d902 bls.n 80023ea { b_pointer = 0; - 800239c: 4b10 ldr r3, [pc, #64] @ (80023e0 ) - 800239e: 2200 movs r2, #0 - 80023a0: 701a strb r2, [r3, #0] + 80023e4: 4b10 ldr r3, [pc, #64] @ (8002428 ) + 80023e6: 2200 movs r2, #0 + 80023e8: 701a strb r2, [r3, #0] } uint16_t sum = 0; - 80023a2: 2300 movs r3, #0 - 80023a4: 81fb strh r3, [r7, #14] + 80023ea: 2300 movs r3, #0 + 80023ec: 81fb strh r3, [r7, #14] for(int i =0; i<10; i++) - 80023a6: 2300 movs r3, #0 - 80023a8: 60bb str r3, [r7, #8] - 80023aa: e009 b.n 80023c0 + 80023ee: 2300 movs r3, #0 + 80023f0: 60bb str r3, [r7, #8] + 80023f2: e009 b.n 8002408 sum += buf[i]; - 80023ac: 4a0d ldr r2, [pc, #52] @ (80023e4 ) - 80023ae: 68bb ldr r3, [r7, #8] - 80023b0: f832 2013 ldrh.w r2, [r2, r3, lsl #1] - 80023b4: 89fb ldrh r3, [r7, #14] - 80023b6: 4413 add r3, r2 - 80023b8: 81fb strh r3, [r7, #14] + 80023f4: 4a0d ldr r2, [pc, #52] @ (800242c ) + 80023f6: 68bb ldr r3, [r7, #8] + 80023f8: f832 2013 ldrh.w r2, [r2, r3, lsl #1] + 80023fc: 89fb ldrh r3, [r7, #14] + 80023fe: 4413 add r3, r2 + 8002400: 81fb strh r3, [r7, #14] for(int i =0; i<10; i++) - 80023ba: 68bb ldr r3, [r7, #8] - 80023bc: 3301 adds r3, #1 - 80023be: 60bb str r3, [r7, #8] - 80023c0: 68bb ldr r3, [r7, #8] - 80023c2: 2b09 cmp r3, #9 - 80023c4: ddf2 ble.n 80023ac + 8002402: 68bb ldr r3, [r7, #8] + 8002404: 3301 adds r3, #1 + 8002406: 60bb str r3, [r7, #8] + 8002408: 68bb ldr r3, [r7, #8] + 800240a: 2b09 cmp r3, #9 + 800240c: ddf2 ble.n 80023f4 return sum/10; - 80023c6: 89fb ldrh r3, [r7, #14] - 80023c8: 4a07 ldr r2, [pc, #28] @ (80023e8 ) - 80023ca: fba2 2303 umull r2, r3, r2, r3 - 80023ce: 08db lsrs r3, r3, #3 - 80023d0: b29b uxth r3, r3 + 800240e: 89fb ldrh r3, [r7, #14] + 8002410: 4a07 ldr r2, [pc, #28] @ (8002430 ) + 8002412: fba2 2303 umull r2, r3, r2, r3 + 8002416: 08db lsrs r3, r3, #3 + 8002418: b29b uxth r3, r3 } - 80023d2: 4618 mov r0, r3 - 80023d4: 3714 adds r7, #20 - 80023d6: 46bd mov sp, r7 - 80023d8: f85d 7b04 ldr.w r7, [sp], #4 - 80023dc: 4770 bx lr - 80023de: bf00 nop - 80023e0: 20001f74 .word 0x20001f74 - 80023e4: 20001f78 .word 0x20001f78 - 80023e8: cccccccd .word 0xcccccccd + 800241a: 4618 mov r0, r3 + 800241c: 3714 adds r7, #20 + 800241e: 46bd mov sp, r7 + 8002420: f85d 7b04 ldr.w r7, [sp], #4 + 8002424: 4770 bx lr + 8002426: bf00 nop + 8002428: 20001f74 .word 0x20001f74 + 800242c: 20001f78 .word 0x20001f78 + 8002430: cccccccd .word 0xcccccccd -080023ec : +08002434 : // Алгоритм корзин по идее должен вызываться при обнаружении новго события // Едиственный смысл в нём это переход в другой режим не простого поиска а стимуляции void basket_alg(icd_str * icd_str) { - 80023ec: b480 push {r7} - 80023ee: b083 sub sp, #12 - 80023f0: af00 add r7, sp, #0 - 80023f2: 6078 str r0, [r7, #4] + 8002434: b480 push {r7} + 8002436: b083 sub sp, #12 + 8002438: af00 add r7, sp, #0 + 800243a: 6078 str r0, [r7, #4] if(icd_str->filt_period < icd_str->fibr_tres) - 80023f4: 687b ldr r3, [r7, #4] - 80023f6: f8b3 208c ldrh.w r2, [r3, #140] @ 0x8c - 80023fa: 687b ldr r3, [r7, #4] - 80023fc: f8b3 3080 ldrh.w r3, [r3, #128] @ 0x80 - 8002400: 429a cmp r2, r3 - 8002402: d224 bcs.n 800244e + 800243c: 687b ldr r3, [r7, #4] + 800243e: f8b3 208c ldrh.w r2, [r3, #140] @ 0x8c + 8002442: 687b ldr r3, [r7, #4] + 8002444: f8b3 3080 ldrh.w r3, [r3, #128] @ 0x80 + 8002448: 429a cmp r2, r3 + 800244a: d224 bcs.n 8002496 { icd_str->fibr_cnt++; - 8002404: 687b ldr r3, [r7, #4] - 8002406: f893 308e ldrb.w r3, [r3, #142] @ 0x8e - 800240a: 3301 adds r3, #1 - 800240c: b2da uxtb r2, r3 - 800240e: 687b ldr r3, [r7, #4] - 8002410: f883 208e strb.w r2, [r3, #142] @ 0x8e + 800244c: 687b ldr r3, [r7, #4] + 800244e: f893 308e ldrb.w r3, [r3, #142] @ 0x8e + 8002452: 3301 adds r3, #1 + 8002454: b2da uxtb r2, r3 + 8002456: 687b ldr r3, [r7, #4] + 8002458: f883 208e strb.w r2, [r3, #142] @ 0x8e icd_str->norm_cnt = 0; - 8002414: 687b ldr r3, [r7, #4] - 8002416: 2200 movs r2, #0 - 8002418: f883 2091 strb.w r2, [r3, #145] @ 0x91 + 800245c: 687b ldr r3, [r7, #4] + 800245e: 2200 movs r2, #0 + 8002460: f883 2091 strb.w r2, [r3, #145] @ 0x91 if(icd_str->fibr_cnt > icd_str->fibr_max_tres) - 800241c: 687b ldr r3, [r7, #4] - 800241e: f893 208e ldrb.w r2, [r3, #142] @ 0x8e - 8002422: 687b ldr r3, [r7, #4] - 8002424: f893 3098 ldrb.w r3, [r3, #152] @ 0x98 - 8002428: 429a cmp r2, r3 - 800242a: d964 bls.n 80024f6 + 8002464: 687b ldr r3, [r7, #4] + 8002466: f893 208e ldrb.w r2, [r3, #142] @ 0x8e + 800246a: 687b ldr r3, [r7, #4] + 800246c: f893 3098 ldrb.w r3, [r3, #152] @ 0x98 + 8002470: 429a cmp r2, r3 + 8002472: d964 bls.n 800253e { //fixme по идее тоже обнуляем т.к. уже в жопном режиме icd_str->fibr_cnt = 0; - 800242c: 687b ldr r3, [r7, #4] - 800242e: 2200 movs r2, #0 - 8002430: f883 208e strb.w r2, [r3, #142] @ 0x8e + 8002474: 687b ldr r3, [r7, #4] + 8002476: 2200 movs r2, #0 + 8002478: f883 208e strb.w r2, [r3, #142] @ 0x8e icd_str->tachy_2_cnt = 0; - 8002434: 687b ldr r3, [r7, #4] - 8002436: 2200 movs r2, #0 - 8002438: f883 208f strb.w r2, [r3, #143] @ 0x8f + 800247c: 687b ldr r3, [r7, #4] + 800247e: 2200 movs r2, #0 + 8002480: f883 208f strb.w r2, [r3, #143] @ 0x8f icd_str->tachy_1_cnt = 0; - 800243c: 687b ldr r3, [r7, #4] - 800243e: 2200 movs r2, #0 - 8002440: f883 2090 strb.w r2, [r3, #144] @ 0x90 + 8002484: 687b ldr r3, [r7, #4] + 8002486: 2200 movs r2, #0 + 8002488: f883 2090 strb.w r2, [r3, #144] @ 0x90 // перешли в режим терапии icd_str->terapy_set = Terapy_fibr; - 8002444: 687b ldr r3, [r7, #4] - 8002446: 2201 movs r2, #1 - 8002448: f883 2099 strb.w r2, [r3, #153] @ 0x99 + 800248c: 687b ldr r3, [r7, #4] + 800248e: 2201 movs r2, #1 + 8002490: f883 2099 strb.w r2, [r3, #153] @ 0x99 icd_str->fibr_cnt = 0; icd_str->tachy_2_cnt = 0; icd_str->tachy_1_cnt = 0; } } } - 800244c: e053 b.n 80024f6 + 8002494: e053 b.n 800253e else if((icd_str->filt_period >= icd_str->fibr_tres)&&(icd_str->last_period < icd_str->tachy_2_tres)) - 800244e: 687b ldr r3, [r7, #4] - 8002450: f8b3 208c ldrh.w r2, [r3, #140] @ 0x8c - 8002454: 687b ldr r3, [r7, #4] - 8002456: f8b3 3080 ldrh.w r3, [r3, #128] @ 0x80 - 800245a: 429a cmp r2, r3 - 800245c: d314 bcc.n 8002488 - 800245e: 687b ldr r3, [r7, #4] - 8002460: f8b3 204c ldrh.w r2, [r3, #76] @ 0x4c - 8002464: 687b ldr r3, [r7, #4] - 8002466: f8b3 3082 ldrh.w r3, [r3, #130] @ 0x82 - 800246a: 429a cmp r2, r3 - 800246c: d20c bcs.n 8002488 + 8002496: 687b ldr r3, [r7, #4] + 8002498: f8b3 208c ldrh.w r2, [r3, #140] @ 0x8c + 800249c: 687b ldr r3, [r7, #4] + 800249e: f8b3 3080 ldrh.w r3, [r3, #128] @ 0x80 + 80024a2: 429a cmp r2, r3 + 80024a4: d314 bcc.n 80024d0 + 80024a6: 687b ldr r3, [r7, #4] + 80024a8: f8b3 204c ldrh.w r2, [r3, #76] @ 0x4c + 80024ac: 687b ldr r3, [r7, #4] + 80024ae: f8b3 3082 ldrh.w r3, [r3, #130] @ 0x82 + 80024b2: 429a cmp r2, r3 + 80024b4: d20c bcs.n 80024d0 icd_str->tachy_2_cnt++; - 800246e: 687b ldr r3, [r7, #4] - 8002470: f893 308f ldrb.w r3, [r3, #143] @ 0x8f - 8002474: 3301 adds r3, #1 - 8002476: b2da uxtb r2, r3 - 8002478: 687b ldr r3, [r7, #4] - 800247a: f883 208f strb.w r2, [r3, #143] @ 0x8f + 80024b6: 687b ldr r3, [r7, #4] + 80024b8: f893 308f ldrb.w r3, [r3, #143] @ 0x8f + 80024bc: 3301 adds r3, #1 + 80024be: b2da uxtb r2, r3 + 80024c0: 687b ldr r3, [r7, #4] + 80024c2: f883 208f strb.w r2, [r3, #143] @ 0x8f icd_str->norm_cnt = 0; - 800247e: 687b ldr r3, [r7, #4] - 8002480: 2200 movs r2, #0 - 8002482: f883 2091 strb.w r2, [r3, #145] @ 0x91 - 8002486: e036 b.n 80024f6 + 80024c6: 687b ldr r3, [r7, #4] + 80024c8: 2200 movs r2, #0 + 80024ca: f883 2091 strb.w r2, [r3, #145] @ 0x91 + 80024ce: e036 b.n 800253e else if((icd_str->filt_period >= icd_str->tachy_2_tres)&&(icd_str->last_period < icd_str->tachy_1_tres)) - 8002488: 687b ldr r3, [r7, #4] - 800248a: f8b3 208c ldrh.w r2, [r3, #140] @ 0x8c - 800248e: 687b ldr r3, [r7, #4] - 8002490: f8b3 3082 ldrh.w r3, [r3, #130] @ 0x82 - 8002494: 429a cmp r2, r3 - 8002496: d314 bcc.n 80024c2 - 8002498: 687b ldr r3, [r7, #4] - 800249a: f8b3 204c ldrh.w r2, [r3, #76] @ 0x4c - 800249e: 687b ldr r3, [r7, #4] - 80024a0: f8b3 3084 ldrh.w r3, [r3, #132] @ 0x84 - 80024a4: 429a cmp r2, r3 - 80024a6: d20c bcs.n 80024c2 + 80024d0: 687b ldr r3, [r7, #4] + 80024d2: f8b3 208c ldrh.w r2, [r3, #140] @ 0x8c + 80024d6: 687b ldr r3, [r7, #4] + 80024d8: f8b3 3082 ldrh.w r3, [r3, #130] @ 0x82 + 80024dc: 429a cmp r2, r3 + 80024de: d314 bcc.n 800250a + 80024e0: 687b ldr r3, [r7, #4] + 80024e2: f8b3 204c ldrh.w r2, [r3, #76] @ 0x4c + 80024e6: 687b ldr r3, [r7, #4] + 80024e8: f8b3 3084 ldrh.w r3, [r3, #132] @ 0x84 + 80024ec: 429a cmp r2, r3 + 80024ee: d20c bcs.n 800250a icd_str->tachy_1_cnt++; - 80024a8: 687b ldr r3, [r7, #4] - 80024aa: f893 3090 ldrb.w r3, [r3, #144] @ 0x90 - 80024ae: 3301 adds r3, #1 - 80024b0: b2da uxtb r2, r3 - 80024b2: 687b ldr r3, [r7, #4] - 80024b4: f883 2090 strb.w r2, [r3, #144] @ 0x90 + 80024f0: 687b ldr r3, [r7, #4] + 80024f2: f893 3090 ldrb.w r3, [r3, #144] @ 0x90 + 80024f6: 3301 adds r3, #1 + 80024f8: b2da uxtb r2, r3 + 80024fa: 687b ldr r3, [r7, #4] + 80024fc: f883 2090 strb.w r2, [r3, #144] @ 0x90 icd_str->norm_cnt = 0; - 80024b8: 687b ldr r3, [r7, #4] - 80024ba: 2200 movs r2, #0 - 80024bc: f883 2091 strb.w r2, [r3, #145] @ 0x91 - 80024c0: e019 b.n 80024f6 + 8002500: 687b ldr r3, [r7, #4] + 8002502: 2200 movs r2, #0 + 8002504: f883 2091 strb.w r2, [r3, #145] @ 0x91 + 8002508: e019 b.n 800253e icd_str->norm_cnt++; - 80024c2: 687b ldr r3, [r7, #4] - 80024c4: f893 3091 ldrb.w r3, [r3, #145] @ 0x91 - 80024c8: 3301 adds r3, #1 - 80024ca: b2da uxtb r2, r3 - 80024cc: 687b ldr r3, [r7, #4] - 80024ce: f883 2091 strb.w r2, [r3, #145] @ 0x91 + 800250a: 687b ldr r3, [r7, #4] + 800250c: f893 3091 ldrb.w r3, [r3, #145] @ 0x91 + 8002510: 3301 adds r3, #1 + 8002512: b2da uxtb r2, r3 + 8002514: 687b ldr r3, [r7, #4] + 8002516: f883 2091 strb.w r2, [r3, #145] @ 0x91 if(icd_str->norm_cnt >= 5) - 80024d2: 687b ldr r3, [r7, #4] - 80024d4: f893 3091 ldrb.w r3, [r3, #145] @ 0x91 - 80024d8: 2b04 cmp r3, #4 - 80024da: d90c bls.n 80024f6 + 800251a: 687b ldr r3, [r7, #4] + 800251c: f893 3091 ldrb.w r3, [r3, #145] @ 0x91 + 8002520: 2b04 cmp r3, #4 + 8002522: d90c bls.n 800253e icd_str->fibr_cnt = 0; - 80024dc: 687b ldr r3, [r7, #4] - 80024de: 2200 movs r2, #0 - 80024e0: f883 208e strb.w r2, [r3, #142] @ 0x8e + 8002524: 687b ldr r3, [r7, #4] + 8002526: 2200 movs r2, #0 + 8002528: f883 208e strb.w r2, [r3, #142] @ 0x8e icd_str->tachy_2_cnt = 0; - 80024e4: 687b ldr r3, [r7, #4] - 80024e6: 2200 movs r2, #0 - 80024e8: f883 208f strb.w r2, [r3, #143] @ 0x8f + 800252c: 687b ldr r3, [r7, #4] + 800252e: 2200 movs r2, #0 + 8002530: f883 208f strb.w r2, [r3, #143] @ 0x8f icd_str->tachy_1_cnt = 0; - 80024ec: 687b ldr r3, [r7, #4] - 80024ee: 2200 movs r2, #0 - 80024f0: f883 2090 strb.w r2, [r3, #144] @ 0x90 + 8002534: 687b ldr r3, [r7, #4] + 8002536: 2200 movs r2, #0 + 8002538: f883 2090 strb.w r2, [r3, #144] @ 0x90 } - 80024f4: e7ff b.n 80024f6 - 80024f6: bf00 nop - 80024f8: 370c adds r7, #12 - 80024fa: 46bd mov sp, r7 - 80024fc: f85d 7b04 ldr.w r7, [sp], #4 - 8002500: 4770 bx lr + 800253c: e7ff b.n 800253e + 800253e: bf00 nop + 8002540: 370c adds r7, #12 + 8002542: 46bd mov sp, r7 + 8002544: f85d 7b04 ldr.w r7, [sp], #4 + 8002548: 4770 bx lr -08002502 : +0800254a : bool terapy_start(icd_str * icd_str) { - 8002502: b480 push {r7} - 8002504: b083 sub sp, #12 - 8002506: af00 add r7, sp, #0 - 8002508: 6078 str r0, [r7, #4] + 800254a: b480 push {r7} + 800254c: b083 sub sp, #12 + 800254e: af00 add r7, sp, #0 + 8002550: 6078 str r0, [r7, #4] if (icd_str->terapy_now != icd_str->terapy_set) - 800250a: 687b ldr r3, [r7, #4] - 800250c: f893 209a ldrb.w r2, [r3, #154] @ 0x9a - 8002510: 687b ldr r3, [r7, #4] - 8002512: f893 3099 ldrb.w r3, [r3, #153] @ 0x99 - 8002516: 429a cmp r2, r3 - 8002518: d007 beq.n 800252a + 8002552: 687b ldr r3, [r7, #4] + 8002554: f893 209a ldrb.w r2, [r3, #154] @ 0x9a + 8002558: 687b ldr r3, [r7, #4] + 800255a: f893 3099 ldrb.w r3, [r3, #153] @ 0x99 + 800255e: 429a cmp r2, r3 + 8002560: d007 beq.n 8002572 { icd_str->terapy_now = icd_str->terapy_set; - 800251a: 687b ldr r3, [r7, #4] - 800251c: f893 2099 ldrb.w r2, [r3, #153] @ 0x99 - 8002520: 687b ldr r3, [r7, #4] - 8002522: f883 209a strb.w r2, [r3, #154] @ 0x9a + 8002562: 687b ldr r3, [r7, #4] + 8002564: f893 2099 ldrb.w r2, [r3, #153] @ 0x99 + 8002568: 687b ldr r3, [r7, #4] + 800256a: f883 209a strb.w r2, [r3, #154] @ 0x9a return true; - 8002526: 2301 movs r3, #1 - 8002528: e000 b.n 800252c + 800256e: 2301 movs r3, #1 + 8002570: e000 b.n 8002574 } return false; - 800252a: 2300 movs r3, #0 + 8002572: 2300 movs r3, #0 } - 800252c: 4618 mov r0, r3 - 800252e: 370c adds r7, #12 - 8002530: 46bd mov sp, r7 - 8002532: f85d 7b04 ldr.w r7, [sp], #4 - 8002536: 4770 bx lr + 8002574: 4618 mov r0, r3 + 8002576: 370c adds r7, #12 + 8002578: 46bd mov sp, r7 + 800257a: f85d 7b04 ldr.w r7, [sp], #4 + 800257e: 4770 bx lr -08002538 : +08002580 : void hv_pwm(bool state) { - 8002538: b480 push {r7} - 800253a: b083 sub sp, #12 - 800253c: af00 add r7, sp, #0 - 800253e: 4603 mov r3, r0 - 8002540: 71fb strb r3, [r7, #7] + 8002580: b480 push {r7} + 8002582: b083 sub sp, #12 + 8002584: af00 add r7, sp, #0 + 8002586: 4603 mov r3, r0 + 8002588: 71fb strb r3, [r7, #7] if (state) //Если хотим генерировать - 8002542: 79fb ldrb r3, [r7, #7] - 8002544: 2b00 cmp r3, #0 - 8002546: d003 beq.n 8002550 + 800258a: 79fb ldrb r3, [r7, #7] + 800258c: 2b00 cmp r3, #0 + 800258e: d003 beq.n 8002598 { #if (MK_TYPE == F412) TIM1->CCR4 = 60; - 8002548: 4b06 ldr r3, [pc, #24] @ (8002564 ) - 800254a: 223c movs r2, #60 @ 0x3c - 800254c: 641a str r2, [r3, #64] @ 0x40 + 8002590: 4b06 ldr r3, [pc, #24] @ (80025ac ) + 8002592: 223c movs r2, #60 @ 0x3c + 8002594: 641a str r2, [r3, #64] @ 0x40 { #if (MK_TYPE == F412) TIM1->CCR4 = 0; #endif } } - 800254e: e002 b.n 8002556 + 8002596: e002 b.n 800259e TIM1->CCR4 = 0; - 8002550: 4b04 ldr r3, [pc, #16] @ (8002564 ) - 8002552: 2200 movs r2, #0 - 8002554: 641a str r2, [r3, #64] @ 0x40 + 8002598: 4b04 ldr r3, [pc, #16] @ (80025ac ) + 800259a: 2200 movs r2, #0 + 800259c: 641a str r2, [r3, #64] @ 0x40 } - 8002556: bf00 nop - 8002558: 370c adds r7, #12 - 800255a: 46bd mov sp, r7 - 800255c: f85d 7b04 ldr.w r7, [sp], #4 - 8002560: 4770 bx lr - 8002562: bf00 nop - 8002564: 40010000 .word 0x40010000 + 800259e: bf00 nop + 80025a0: 370c adds r7, #12 + 80025a2: 46bd mov sp, r7 + 80025a4: f85d 7b04 ldr.w r7, [sp], #4 + 80025a8: 4770 bx lr + 80025aa: bf00 nop + 80025ac: 40010000 .word 0x40010000 -08002568 : +080025b0 : void hv_sound(uint32_t presc) { - 8002568: b480 push {r7} - 800256a: b083 sub sp, #12 - 800256c: af00 add r7, sp, #0 - 800256e: 6078 str r0, [r7, #4] + 80025b0: b480 push {r7} + 80025b2: b083 sub sp, #12 + 80025b4: af00 add r7, sp, #0 + 80025b6: 6078 str r0, [r7, #4] if (presc == 0) //без звука - 8002570: 687b ldr r3, [r7, #4] - 8002572: 2b00 cmp r3, #0 - 8002574: d106 bne.n 8002584 + 80025b8: 687b ldr r3, [r7, #4] + 80025ba: 2b00 cmp r3, #0 + 80025bc: d106 bne.n 80025cc { TIM9->PSC = 100; - 8002576: 4b09 ldr r3, [pc, #36] @ (800259c ) - 8002578: 2264 movs r2, #100 @ 0x64 - 800257a: 629a str r2, [r3, #40] @ 0x28 + 80025be: 4b09 ldr r3, [pc, #36] @ (80025e4 ) + 80025c0: 2264 movs r2, #100 @ 0x64 + 80025c2: 629a str r2, [r3, #40] @ 0x28 TIM9->CCR2 = 0; - 800257c: 4b07 ldr r3, [pc, #28] @ (800259c ) - 800257e: 2200 movs r2, #0 - 8002580: 639a str r2, [r3, #56] @ 0x38 + 80025c4: 4b07 ldr r3, [pc, #28] @ (80025e4 ) + 80025c6: 2200 movs r2, #0 + 80025c8: 639a str r2, [r3, #56] @ 0x38 { TIM9->PSC = presc; TIM9->CCR2 = 100; } } - 8002582: e005 b.n 8002590 + 80025ca: e005 b.n 80025d8 TIM9->PSC = presc; - 8002584: 4a05 ldr r2, [pc, #20] @ (800259c ) - 8002586: 687b ldr r3, [r7, #4] - 8002588: 6293 str r3, [r2, #40] @ 0x28 + 80025cc: 4a05 ldr r2, [pc, #20] @ (80025e4 ) + 80025ce: 687b ldr r3, [r7, #4] + 80025d0: 6293 str r3, [r2, #40] @ 0x28 TIM9->CCR2 = 100; - 800258a: 4b04 ldr r3, [pc, #16] @ (800259c ) - 800258c: 2264 movs r2, #100 @ 0x64 - 800258e: 639a str r2, [r3, #56] @ 0x38 + 80025d2: 4b04 ldr r3, [pc, #16] @ (80025e4 ) + 80025d4: 2264 movs r2, #100 @ 0x64 + 80025d6: 639a str r2, [r3, #56] @ 0x38 } - 8002590: bf00 nop - 8002592: 370c adds r7, #12 - 8002594: 46bd mov sp, r7 - 8002596: f85d 7b04 ldr.w r7, [sp], #4 - 800259a: 4770 bx lr - 800259c: 40014000 .word 0x40014000 + 80025d8: bf00 nop + 80025da: 370c adds r7, #12 + 80025dc: 46bd mov sp, r7 + 80025de: f85d 7b04 ldr.w r7, [sp], #4 + 80025e2: 4770 bx lr + 80025e4: 40014000 .word 0x40014000 -080025a0 : +080025e8 : //функция заряда Конденсатора void hv_charge(icd_str *icd_str) { - 80025a0: b580 push {r7, lr} - 80025a2: b086 sub sp, #24 - 80025a4: af00 add r7, sp, #0 - 80025a6: 6078 str r0, [r7, #4] + 80025e8: b580 push {r7, lr} + 80025ea: b086 sub sp, #24 + 80025ec: af00 add r7, sp, #0 + 80025ee: 6078 str r0, [r7, #4] //отключение высоковольтной части hv_ll_control(z_state, z_state, z_state); - 80025a8: 2202 movs r2, #2 - 80025aa: 2102 movs r1, #2 - 80025ac: 2002 movs r0, #2 - 80025ae: f000 fa43 bl 8002a38 + 80025f0: 2202 movs r2, #2 + 80025f2: 2102 movs r1, #2 + 80025f4: 2002 movs r0, #2 + 80025f6: f000 fa53 bl 8002aa0 //подали питание на высоковольтную часть hv_power(true); - 80025b2: 2001 movs r0, #1 - 80025b4: f000 fa5a bl 8002a6c + 80025fa: 2001 movs r0, #1 + 80025fc: f000 fa6a bl 8002ad4 //выставили подрежим icd_str->sub_mode = sub_cap_ch; - 80025b8: 687b ldr r3, [r7, #4] - 80025ba: 2201 movs r2, #1 - 80025bc: f883 209b strb.w r2, [r3, #155] @ 0x9b + 8002600: 687b ldr r3, [r7, #4] + 8002602: 2201 movs r2, #1 + 8002604: f883 209b strb.w r2, [r3, #155] @ 0x9b //плавный разряд выключен hv_discharge(false); - 80025c0: 2000 movs r0, #0 - 80025c2: f000 fb0d bl 8002be0 + 8002608: 2000 movs r0, #0 + 800260a: f000 fb1d bl 8002c48 //подали питание на плату только если не в режиме мониторинга hv_sound(CHARDE_TONE); //включили звук заряда конденсатора - 80025c6: 2078 movs r0, #120 @ 0x78 - 80025c8: f7ff ffce bl 8002568 + 800260e: 2078 movs r0, #120 @ 0x78 + 8002610: f7ff ffce bl 80025b0 if (icd_str->work_set_mode == Monitor) - 80025cc: 687b ldr r3, [r7, #4] - 80025ce: 781b ldrb r3, [r3, #0] - 80025d0: 2b00 cmp r3, #0 - 80025d2: d002 beq.n 80025da + 8002614: 687b ldr r3, [r7, #4] + 8002616: 781b ldrb r3, [r3, #0] + 8002618: 2b00 cmp r3, #0 + 800261a: d007 beq.n 800262c + { + } else { - if (DANGER_HV) + if (DANGER_HV && icd_str->HV_on) + 800261c: 687b ldr r3, [r7, #4] + 800261e: f893 3069 ldrb.w r3, [r3, #105] @ 0x69 + 8002622: 2b00 cmp r3, #0 + 8002624: d002 beq.n 800262c { hv_pwm(true); //включили шим для заряда конденсатора - 80025d4: 2001 movs r0, #1 - 80025d6: f7ff ffaf bl 8002538 + 8002626: 2001 movs r0, #1 + 8002628: f7ff ffaa bl 8002580 //время для заряда до 40 дж = (E*1000/k) // 5дж наберутся за 1850 мс, что норм. //если плата с новым мк #if (CAP_VOLT_CTRL) { int i = 0; - 80025da: 2300 movs r3, #0 - 80025dc: 617b str r3, [r7, #20] + 800262c: 2300 movs r3, #0 + 800262e: 617b str r3, [r7, #20] float voltage = sqrt(icd_str->now_energy * 0.2 / CAPACITY); - 80025de: 687b ldr r3, [r7, #4] - 80025e0: f8b3 30aa ldrh.w r3, [r3, #170] @ 0xaa - 80025e4: 4618 mov r0, r3 - 80025e6: f7fd ffc5 bl 8000574 <__aeabi_i2d> - 80025ea: a328 add r3, pc, #160 @ (adr r3, 800268c ) - 80025ec: e9d3 2300 ldrd r2, r3, [r3] - 80025f0: f7fe f82a bl 8000648 <__aeabi_dmul> - 80025f4: 4602 mov r2, r0 - 80025f6: 460b mov r3, r1 - 80025f8: 4610 mov r0, r2 - 80025fa: 4619 mov r1, r3 - 80025fc: a325 add r3, pc, #148 @ (adr r3, 8002694 ) - 80025fe: e9d3 2300 ldrd r2, r3, [r3] - 8002602: f7fe f94b bl 800089c <__aeabi_ddiv> - 8002606: 4602 mov r2, r0 - 8002608: 460b mov r3, r1 - 800260a: ec43 2b17 vmov d7, r2, r3 - 800260e: eeb0 0a47 vmov.f32 s0, s14 - 8002612: eef0 0a67 vmov.f32 s1, s15 - 8002616: f00b fea3 bl 800e360 - 800261a: ec53 2b10 vmov r2, r3, d0 - 800261e: 4610 mov r0, r2 - 8002620: 4619 mov r1, r3 - 8002622: f7fe fae1 bl 8000be8 <__aeabi_d2f> - 8002626: 4603 mov r3, r0 - 8002628: 613b str r3, [r7, #16] + 8002630: 687b ldr r3, [r7, #4] + 8002632: f8b3 30aa ldrh.w r3, [r3, #170] @ 0xaa + 8002636: 4618 mov r0, r3 + 8002638: f7fd ff9c bl 8000574 <__aeabi_i2d> + 800263c: a327 add r3, pc, #156 @ (adr r3, 80026dc ) + 800263e: e9d3 2300 ldrd r2, r3, [r3] + 8002642: f7fe f801 bl 8000648 <__aeabi_dmul> + 8002646: 4602 mov r2, r0 + 8002648: 460b mov r3, r1 + 800264a: 4610 mov r0, r2 + 800264c: 4619 mov r1, r3 + 800264e: a325 add r3, pc, #148 @ (adr r3, 80026e4 ) + 8002650: e9d3 2300 ldrd r2, r3, [r3] + 8002654: f7fe f922 bl 800089c <__aeabi_ddiv> + 8002658: 4602 mov r2, r0 + 800265a: 460b mov r3, r1 + 800265c: ec43 2b17 vmov d7, r2, r3 + 8002660: eeb0 0a47 vmov.f32 s0, s14 + 8002664: eef0 0a67 vmov.f32 s1, s15 + 8002668: f00c f932 bl 800e8d0 + 800266c: ec53 2b10 vmov r2, r3, d0 + 8002670: 4610 mov r0, r2 + 8002672: 4619 mov r1, r3 + 8002674: f7fe fab8 bl 8000be8 <__aeabi_d2f> + 8002678: 4603 mov r3, r0 + 800267a: 613b str r3, [r7, #16] uint16_t voltage_i = (uint16_t) (voltage * 10.2);//умножаем на 10.2 а не на 10 т.к. напряжение после выключения заряда слегка просаживается. - 800262a: 6938 ldr r0, [r7, #16] - 800262c: f7fd ffb4 bl 8000598 <__aeabi_f2d> - 8002630: a31a add r3, pc, #104 @ (adr r3, 800269c ) - 8002632: e9d3 2300 ldrd r2, r3, [r3] - 8002636: f7fe f807 bl 8000648 <__aeabi_dmul> - 800263a: 4602 mov r2, r0 - 800263c: 460b mov r3, r1 - 800263e: 4610 mov r0, r2 - 8002640: 4619 mov r1, r3 - 8002642: f7fe fab1 bl 8000ba8 <__aeabi_d2uiz> - 8002646: 4603 mov r3, r0 - 8002648: 81fb strh r3, [r7, #14] + 800267c: 6938 ldr r0, [r7, #16] + 800267e: f7fd ff8b bl 8000598 <__aeabi_f2d> + 8002682: a31a add r3, pc, #104 @ (adr r3, 80026ec ) + 8002684: e9d3 2300 ldrd r2, r3, [r3] + 8002688: f7fd ffde bl 8000648 <__aeabi_dmul> + 800268c: 4602 mov r2, r0 + 800268e: 460b mov r3, r1 + 8002690: 4610 mov r0, r2 + 8002692: 4619 mov r1, r3 + 8002694: f7fe fa88 bl 8000ba8 <__aeabi_d2uiz> + 8002698: 4603 mov r3, r0 + 800269a: 81fb strh r3, [r7, #14] while (i < 80) - 800264a: e00d b.n 8002668 + 800269c: e00d b.n 80026ba // } // else if(adc_str.hv_volt > 5000) // { // TIM1->ARR = 300; // } i++; - 800264c: 697b ldr r3, [r7, #20] - 800264e: 3301 adds r3, #1 - 8002650: 617b str r3, [r7, #20] + 800269e: 697b ldr r3, [r7, #20] + 80026a0: 3301 adds r3, #1 + 80026a2: 617b str r3, [r7, #20] osDelay(icd_str->now_energy); - 8002652: 687b ldr r3, [r7, #4] - 8002654: f8b3 30aa ldrh.w r3, [r3, #170] @ 0xaa - 8002658: 4618 mov r0, r3 - 800265a: f009 ff68 bl 800c52e + 80026a4: 687b ldr r3, [r7, #4] + 80026a6: f8b3 30aa ldrh.w r3, [r3, #170] @ 0xaa + 80026aa: 4618 mov r0, r3 + 80026ac: f00a f9f9 bl 800caa2 if (adc_str.hv_volt > voltage_i) - 800265e: 4b0a ldr r3, [pc, #40] @ (8002688 ) - 8002660: 8a1b ldrh r3, [r3, #16] - 8002662: 89fa ldrh r2, [r7, #14] - 8002664: 429a cmp r2, r3 - 8002666: d303 bcc.n 8002670 + 80026b0: 4b09 ldr r3, [pc, #36] @ (80026d8 ) + 80026b2: 8a1b ldrh r3, [r3, #16] + 80026b4: 89fa ldrh r2, [r7, #14] + 80026b6: 429a cmp r2, r3 + 80026b8: d303 bcc.n 80026c2 while (i < 80) - 8002668: 697b ldr r3, [r7, #20] - 800266a: 2b4f cmp r3, #79 @ 0x4f - 800266c: ddee ble.n 800264c - 800266e: e000 b.n 8002672 + 80026ba: 697b ldr r3, [r7, #20] + 80026bc: 2b4f cmp r3, #79 @ 0x4f + 80026be: ddee ble.n 800269e + 80026c0: e000 b.n 80026c4 break; - 8002670: bf00 nop + 80026c2: bf00 nop } #else osDelay(icd_str->now_energy*40); #endif //отключили шим hv_pwm(false); - 8002672: 2000 movs r0, #0 - 8002674: f7ff ff60 bl 8002538 + 80026c4: 2000 movs r0, #0 + 80026c6: f7ff ff5b bl 8002580 hv_sound(READY_TONE); //включили звук готовности к разряду - 8002678: 2064 movs r0, #100 @ 0x64 - 800267a: f7ff ff75 bl 8002568 + 80026ca: 2064 movs r0, #100 @ 0x64 + 80026cc: f7ff ff70 bl 80025b0 } - 800267e: bf00 nop - 8002680: 3718 adds r7, #24 - 8002682: 46bd mov sp, r7 - 8002684: bd80 pop {r7, pc} - 8002686: bf00 nop - 8002688: 2000008c .word 0x2000008c - 800268c: 9999999a .word 0x9999999a - 8002690: 3fc99999 .word 0x3fc99999 - 8002694: eb1c432d .word 0xeb1c432d - 8002698: 3f2a36e2 .word 0x3f2a36e2 - 800269c: 66666666 .word 0x66666666 - 80026a0: 40246666 .word 0x40246666 + 80026d0: bf00 nop + 80026d2: 3718 adds r7, #24 + 80026d4: 46bd mov sp, r7 + 80026d6: bd80 pop {r7, pc} + 80026d8: 2000008c .word 0x2000008c + 80026dc: 9999999a .word 0x9999999a + 80026e0: 3fc99999 .word 0x3fc99999 + 80026e4: eb1c432d .word 0xeb1c432d + 80026e8: 3f2a36e2 .word 0x3f2a36e2 + 80026ec: 66666666 .word 0x66666666 + 80026f0: 40246666 .word 0x40246666 -080026a4 : +080026f4 : //функция резкого разряда void hv_shock(icd_str * icd_str) { - 80026a4: b580 push {r7, lr} - 80026a6: b082 sub sp, #8 - 80026a8: af00 add r7, sp, #0 - 80026aa: 6078 str r0, [r7, #4] + 80026f4: b580 push {r7, lr} + 80026f6: b082 sub sp, #8 + 80026f8: af00 add r7, sp, #0 + 80026fa: 6078 str r0, [r7, #4] icd_str->sub_mode = sub_shock; - 80026ac: 687b ldr r3, [r7, #4] - 80026ae: 2203 movs r2, #3 - 80026b0: f883 209b strb.w r2, [r3, #155] @ 0x9b + 80026fc: 687b ldr r3, [r7, #4] + 80026fe: 2203 movs r2, #3 + 8002700: f883 209b strb.w r2, [r3, #155] @ 0x9b icd_str->search_set_mode = Mode_stimulation_HV; - 80026b4: 687b ldr r3, [r7, #4] - 80026b6: 2206 movs r2, #6 - 80026b8: 709a strb r2, [r3, #2] + 8002704: 687b ldr r3, [r7, #4] + 8002706: 2206 movs r2, #6 + 8002708: 709a strb r2, [r3, #2] hv_sound(SHOCK_TONE); //включили звук разряда - 80026ba: 2050 movs r0, #80 @ 0x50 - 80026bc: f7ff ff54 bl 8002568 + 800270a: 2050 movs r0, #80 @ 0x50 + 800270c: f7ff ff50 bl 80025b0 //включили режим слепоты osDelay(10); - 80026c0: 200a movs r0, #10 - 80026c2: f009 ff34 bl 800c52e + 8002710: 200a movs r0, #10 + 8002712: f00a f9c6 bl 800caa2 //подали питание на плату только если не в режиме мониторинга if(icd_str->work_set_mode != Monitor)//fixme - 80026c6: 687b ldr r3, [r7, #4] - 80026c8: 781b ldrb r3, [r3, #0] - 80026ca: 2b00 cmp r3, #0 - 80026cc: d001 beq.n 80026d2 + 8002716: 687b ldr r3, [r7, #4] + 8002718: 781b ldrb r3, [r3, #0] + 800271a: 2b00 cmp r3, #0 + 800271c: d002 beq.n 8002724 { - ll_bi_dis(); - 80026ce: f000 faa3 bl 8002c18 + ll_bi_shock_param(icd_str); + 800271e: 6878 ldr r0, [r7, #4] + 8002720: f000 faae bl 8002c80 else { } // ничего не анализируем сколько-то времени osDelay(icd_str->hv_blind_time); - 80026d2: 687b ldr r3, [r7, #4] - 80026d4: f8b3 30ae ldrh.w r3, [r3, #174] @ 0xae - 80026d8: 4618 mov r0, r3 - 80026da: f009 ff28 bl 800c52e + 8002724: 687b ldr r3, [r7, #4] + 8002726: f8b3 30ae ldrh.w r3, [r3, #174] @ 0xae + 800272a: 4618 mov r0, r3 + 800272c: f00a f9b9 bl 800caa2 //отключили режим слепоты icd_str->search_set_mode = Mode_search_SQUARE; - 80026de: 687b ldr r3, [r7, #4] - 80026e0: 2202 movs r2, #2 - 80026e2: 709a strb r2, [r3, #2] + 8002730: 687b ldr r3, [r7, #4] + 8002732: 2202 movs r2, #2 + 8002734: 709a strb r2, [r3, #2] hv_sound(NO_TONE); //включили звук разряда - 80026e4: 2000 movs r0, #0 - 80026e6: f7ff ff3f bl 8002568 + 8002736: 2000 movs r0, #0 + 8002738: f7ff ff3a bl 80025b0 hv_power(false); - 80026ea: 2000 movs r0, #0 - 80026ec: f000 f9be bl 8002a6c + 800273c: 2000 movs r0, #0 + 800273e: f000 f9c9 bl 8002ad4 } - 80026f0: bf00 nop - 80026f2: 3708 adds r7, #8 - 80026f4: 46bd mov sp, r7 - 80026f6: bd80 pop {r7, pc} + 8002742: bf00 nop + 8002744: 3708 adds r7, #8 + 8002746: 46bd mov sp, r7 + 8002748: bd80 pop {r7, pc} -080026f8 : +0800274a : //быстрое определение нужно ли бить током bool quick_analyse(icd_str * icd_str) { - 80026f8: b580 push {r7, lr} - 80026fa: b082 sub sp, #8 - 80026fc: af00 add r7, sp, #0 - 80026fe: 6078 str r0, [r7, #4] + 800274a: b580 push {r7, lr} + 800274c: b082 sub sp, #8 + 800274e: af00 add r7, sp, #0 + 8002750: 6078 str r0, [r7, #4] osDelay(icd_str->hv_blind_time); - 8002700: 687b ldr r3, [r7, #4] - 8002702: f8b3 30ae ldrh.w r3, [r3, #174] @ 0xae - 8002706: 4618 mov r0, r3 - 8002708: f009 ff11 bl 800c52e + 8002752: 687b ldr r3, [r7, #4] + 8002754: f8b3 30ae ldrh.w r3, [r3, #174] @ 0xae + 8002758: 4618 mov r0, r3 + 800275a: f00a f9a2 bl 800caa2 //сбросили счётчики редетекции //icd_str->Vs_cnt = 0; icd_str->redet_cnt = 0; - 800270c: 687b ldr r3, [r7, #4] - 800270e: 2200 movs r2, #0 - 8002710: f883 20b2 strb.w r2, [r3, #178] @ 0xb2 + 800275e: 687b ldr r3, [r7, #4] + 8002760: 2200 movs r2, #0 + 8002762: f883 20b2 strb.w r2, [r3, #178] @ 0xb2 icd_str->redet_bad_cnt = 0; - 8002714: 687b ldr r3, [r7, #4] - 8002716: 2200 movs r2, #0 - 8002718: f883 20b3 strb.w r2, [r3, #179] @ 0xb3 + 8002766: 687b ldr r3, [r7, #4] + 8002768: 2200 movs r2, #0 + 800276a: f883 20b3 strb.w r2, [r3, #179] @ 0xb3 icd_str->sub_mode = sub_redet; - 800271c: 687b ldr r3, [r7, #4] - 800271e: 2202 movs r2, #2 - 8002720: f883 209b strb.w r2, [r3, #155] @ 0x9b + 800276e: 687b ldr r3, [r7, #4] + 8002770: 2202 movs r2, #2 + 8002772: f883 209b strb.w r2, [r3, #155] @ 0x9b icd_str->vs_cnt_last = 0;//сбросили количество нормальных событий перед анализом - 8002724: 687b ldr r3, [r7, #4] - 8002726: 2200 movs r2, #0 - 8002728: f8c3 2088 str.w r2, [r3, #136] @ 0x88 + 8002776: 687b ldr r3, [r7, #4] + 8002778: 2200 movs r2, #0 + 800277a: f8c3 2088 str.w r2, [r3, #136] @ 0x88 icd_str->vp_cnt_last = 0;//сбросили количество НЕнормальных событий перед анализом - 800272c: 687b ldr r3, [r7, #4] - 800272e: 2200 movs r2, #0 - 8002730: f8c3 2094 str.w r2, [r3, #148] @ 0x94 + 800277e: 687b ldr r3, [r7, #4] + 8002780: 2200 movs r2, #0 + 8002782: f8c3 2094 str.w r2, [r3, #148] @ 0x94 //если у нас принудителная стимуляция ждём чуть-чуть и фигачим if(icd_str->work_set_mode == Force) - 8002734: 687b ldr r3, [r7, #4] - 8002736: 781b ldrb r3, [r3, #0] - 8002738: 2b02 cmp r3, #2 - 800273a: d107 bne.n 800274c + 8002786: 687b ldr r3, [r7, #4] + 8002788: 781b ldrb r3, [r3, #0] + 800278a: 2b02 cmp r3, #2 + 800278c: d107 bne.n 800279e { osDelay(FORCE_DELAY); - 800273c: 2064 movs r0, #100 @ 0x64 - 800273e: f009 fef6 bl 800c52e + 800278e: 2064 movs r0, #100 @ 0x64 + 8002790: f00a f987 bl 800caa2 return true; - 8002742: 2301 movs r3, #1 - 8002744: e019 b.n 800277a + 8002794: 2301 movs r3, #1 + 8002796: e019 b.n 80027cc // Тут по идее можно добавить счётчик времени вдруг Vs нет. // fixme раньше учитывали только Vs события while((icd_str->vs_cnt_last + icd_str->vp_cnt_last) < icd_str->redet_num) { //do nothing osDelay(10); - 8002746: 200a movs r0, #10 - 8002748: f009 fef1 bl 800c52e + 8002798: 200a movs r0, #10 + 800279a: f00a f982 bl 800caa2 while((icd_str->vs_cnt_last + icd_str->vp_cnt_last) < icd_str->redet_num) - 800274c: 687b ldr r3, [r7, #4] - 800274e: f8d3 2088 ldr.w r2, [r3, #136] @ 0x88 - 8002752: 687b ldr r3, [r7, #4] - 8002754: f8d3 3094 ldr.w r3, [r3, #148] @ 0x94 - 8002758: 4413 add r3, r2 - 800275a: 687a ldr r2, [r7, #4] - 800275c: f892 20b0 ldrb.w r2, [r2, #176] @ 0xb0 - 8002760: 4293 cmp r3, r2 - 8002762: d3f0 bcc.n 8002746 + 800279e: 687b ldr r3, [r7, #4] + 80027a0: f8d3 2088 ldr.w r2, [r3, #136] @ 0x88 + 80027a4: 687b ldr r3, [r7, #4] + 80027a6: f8d3 3094 ldr.w r3, [r3, #148] @ 0x94 + 80027aa: 4413 add r3, r2 + 80027ac: 687a ldr r2, [r7, #4] + 80027ae: f892 20b0 ldrb.w r2, [r2, #176] @ 0xb0 + 80027b2: 4293 cmp r3, r2 + 80027b4: d3f0 bcc.n 8002798 } //проверка не превысили ли мы порог плохих сокращений if(icd_str->redet_bad_cnt > icd_str->redet_bad) - 8002764: 687b ldr r3, [r7, #4] - 8002766: f893 20b3 ldrb.w r2, [r3, #179] @ 0xb3 - 800276a: 687b ldr r3, [r7, #4] - 800276c: f893 30b1 ldrb.w r3, [r3, #177] @ 0xb1 - 8002770: 429a cmp r2, r3 - 8002772: d901 bls.n 8002778 + 80027b6: 687b ldr r3, [r7, #4] + 80027b8: f893 20b3 ldrb.w r2, [r3, #179] @ 0xb3 + 80027bc: 687b ldr r3, [r7, #4] + 80027be: f893 30b1 ldrb.w r3, [r3, #177] @ 0xb1 + 80027c2: 429a cmp r2, r3 + 80027c4: d901 bls.n 80027ca { return true; - 8002774: 2301 movs r3, #1 - 8002776: e000 b.n 800277a + 80027c6: 2301 movs r3, #1 + 80027c8: e000 b.n 80027cc } else { return false; - 8002778: 2300 movs r3, #0 + 80027ca: 2300 movs r3, #0 } } - 800277a: 4618 mov r0, r3 - 800277c: 3708 adds r7, #8 - 800277e: 46bd mov sp, r7 - 8002780: bd80 pop {r7, pc} + 80027cc: 4618 mov r0, r3 + 80027ce: 3708 adds r7, #8 + 80027d0: 46bd mov sp, r7 + 80027d2: bd80 pop {r7, pc} -08002782 : +080027d4 : void fibr_terapy(icd_str * icd_str) { - 8002782: b580 push {r7, lr} - 8002784: b082 sub sp, #8 - 8002786: af00 add r7, sp, #0 - 8002788: 6078 str r0, [r7, #4] + 80027d4: b580 push {r7, lr} + 80027d6: b082 sub sp, #8 + 80027d8: af00 add r7, sp, #0 + 80027da: 6078 str r0, [r7, #4] for(icd_str->hv_step_cnt = 0; icd_str->hv_step_cnt < icd_str->hv_step_number; ) - 800278a: 687b ldr r3, [r7, #4] - 800278c: 2200 movs r2, #0 - 800278e: f883 209d strb.w r2, [r3, #157] @ 0x9d - 8002792: e05d b.n 8002850 + 80027dc: 687b ldr r3, [r7, #4] + 80027de: 2200 movs r2, #0 + 80027e0: f883 209d strb.w r2, [r3, #157] @ 0x9d + 80027e4: e05d b.n 80028a2 { icd_str->hv_step_cnt++; - 8002794: 687b ldr r3, [r7, #4] - 8002796: f893 309d ldrb.w r3, [r3, #157] @ 0x9d - 800279a: 3301 adds r3, #1 - 800279c: b2da uxtb r2, r3 - 800279e: 687b ldr r3, [r7, #4] - 80027a0: f883 209d strb.w r2, [r3, #157] @ 0x9d + 80027e6: 687b ldr r3, [r7, #4] + 80027e8: f893 309d ldrb.w r3, [r3, #157] @ 0x9d + 80027ec: 3301 adds r3, #1 + 80027ee: b2da uxtb r2, r3 + 80027f0: 687b ldr r3, [r7, #4] + 80027f2: f883 209d strb.w r2, [r3, #157] @ 0x9d //расчёт энергии шага //icd_str->hv_step_energy = (icd_str->max_energy-icd_str->min_energy)/(icd_str->hv_step_number-1); icd_str->now_energy = icd_str->max_energy; - 80027a4: 687b ldr r3, [r7, #4] - 80027a6: f8b3 20ac ldrh.w r2, [r3, #172] @ 0xac - 80027aa: 687b ldr r3, [r7, #4] - 80027ac: f8a3 20aa strh.w r2, [r3, #170] @ 0xaa + 80027f6: 687b ldr r3, [r7, #4] + 80027f8: f8b3 20ac ldrh.w r2, [r3, #172] @ 0xac + 80027fc: 687b ldr r3, [r7, #4] + 80027fe: f8a3 20aa strh.w r2, [r3, #170] @ 0xaa //активировать терапию низковольтную если задана (у нас такого пока нет) fixme //затем производим зарядку конденсатора hv_charge(icd_str); - 80027b0: 6878 ldr r0, [r7, #4] - 80027b2: f7ff fef5 bl 80025a0 + 8002802: 6878 ldr r0, [r7, #4] + 8002804: f7ff fef0 bl 80025e8 osDelay(1000);//fixme для того чтобы было видно кончное напряжение. - 80027b6: f44f 707a mov.w r0, #1000 @ 0x3e8 - 80027ba: f009 feb8 bl 800c52e + 8002808: f44f 707a mov.w r0, #1000 @ 0x3e8 + 800280c: f00a f949 bl 800caa2 //ждём пока наберётся Х событий для анализа if(!quick_analyse(icd_str))//если всё ОК - 80027be: 6878 ldr r0, [r7, #4] - 80027c0: f7ff ff9a bl 80026f8 - 80027c4: 4603 mov r3, r0 - 80027c6: f083 0301 eor.w r3, r3, #1 - 80027ca: b2db uxtb r3, r3 - 80027cc: 2b00 cmp r3, #0 - 80027ce: d019 beq.n 8002804 + 8002810: 6878 ldr r0, [r7, #4] + 8002812: f7ff ff9a bl 800274a + 8002816: 4603 mov r3, r0 + 8002818: f083 0301 eor.w r3, r3, #1 + 800281c: b2db uxtb r3, r3 + 800281e: 2b00 cmp r3, #0 + 8002820: d019 beq.n 8002856 { hv_discharge(true); - 80027d0: 2001 movs r0, #1 - 80027d2: f000 fa05 bl 8002be0 + 8002822: 2001 movs r0, #1 + 8002824: f000 fa10 bl 8002c48 //сброс параметров и переход в режим icd_str->terapy_set = Terapy_off; - 80027d6: 687b ldr r3, [r7, #4] - 80027d8: 2200 movs r2, #0 - 80027da: f883 2099 strb.w r2, [r3, #153] @ 0x99 + 8002828: 687b ldr r3, [r7, #4] + 800282a: 2200 movs r2, #0 + 800282c: f883 2099 strb.w r2, [r3, #153] @ 0x99 //выходим нафиг из цикла icd_str->sub_mode = sub_off; - 80027de: 687b ldr r3, [r7, #4] - 80027e0: 2200 movs r2, #0 - 80027e2: f883 209b strb.w r2, [r3, #155] @ 0x9b + 8002830: 687b ldr r3, [r7, #4] + 8002832: 2200 movs r2, #0 + 8002834: f883 209b strb.w r2, [r3, #155] @ 0x9b icd_str->now_energy = 0; - 80027e6: 687b ldr r3, [r7, #4] - 80027e8: 2200 movs r2, #0 - 80027ea: f8a3 20aa strh.w r2, [r3, #170] @ 0xaa + 8002838: 687b ldr r3, [r7, #4] + 800283a: 2200 movs r2, #0 + 800283c: f8a3 20aa strh.w r2, [r3, #170] @ 0xaa icd_str->hv_step_cnt = 0; - 80027ee: 687b ldr r3, [r7, #4] - 80027f0: 2200 movs r2, #0 - 80027f2: f883 209d strb.w r2, [r3, #157] @ 0x9d + 8002840: 687b ldr r3, [r7, #4] + 8002842: 2200 movs r2, #0 + 8002844: f883 209d strb.w r2, [r3, #157] @ 0x9d hv_power(false); - 80027f6: 2000 movs r0, #0 - 80027f8: f000 f938 bl 8002a6c + 8002848: 2000 movs r0, #0 + 800284a: f000 f943 bl 8002ad4 hv_sound(NO_TONE); //включили звук разряда - 80027fc: 2000 movs r0, #0 - 80027fe: f7ff feb3 bl 8002568 + 800284e: 2000 movs r0, #0 + 8002850: f7ff feae bl 80025b0 return; - 8002802: e06b b.n 80028dc + 8002854: e06b b.n 800292e } else { //должны ещё вырубить анализ с АЦП и пихать в него среднее чтоб скользящее нахер не улетело hv_shock(icd_str); - 8002804: 6878 ldr r0, [r7, #4] - 8002806: f7ff ff4d bl 80026a4 + 8002856: 6878 ldr r0, [r7, #4] + 8002858: f7ff ff4c bl 80026f4 //опять проверяем на нормальность цикла если всё ок возвращаемся в норм режим if(!quick_analyse(icd_str))//если всё ОК - 800280a: 6878 ldr r0, [r7, #4] - 800280c: f7ff ff74 bl 80026f8 - 8002810: 4603 mov r3, r0 - 8002812: f083 0301 eor.w r3, r3, #1 - 8002816: b2db uxtb r3, r3 - 8002818: 2b00 cmp r3, #0 - 800281a: d019 beq.n 8002850 + 800285c: 6878 ldr r0, [r7, #4] + 800285e: f7ff ff74 bl 800274a + 8002862: 4603 mov r3, r0 + 8002864: f083 0301 eor.w r3, r3, #1 + 8002868: b2db uxtb r3, r3 + 800286a: 2b00 cmp r3, #0 + 800286c: d019 beq.n 80028a2 { hv_discharge(true); - 800281c: 2001 movs r0, #1 - 800281e: f000 f9df bl 8002be0 + 800286e: 2001 movs r0, #1 + 8002870: f000 f9ea bl 8002c48 //сброс параметров и переход в режим icd_str->terapy_set = Terapy_off; - 8002822: 687b ldr r3, [r7, #4] - 8002824: 2200 movs r2, #0 - 8002826: f883 2099 strb.w r2, [r3, #153] @ 0x99 + 8002874: 687b ldr r3, [r7, #4] + 8002876: 2200 movs r2, #0 + 8002878: f883 2099 strb.w r2, [r3, #153] @ 0x99 //выходим нафиг из цикла icd_str->sub_mode = sub_off; - 800282a: 687b ldr r3, [r7, #4] - 800282c: 2200 movs r2, #0 - 800282e: f883 209b strb.w r2, [r3, #155] @ 0x9b + 800287c: 687b ldr r3, [r7, #4] + 800287e: 2200 movs r2, #0 + 8002880: f883 209b strb.w r2, [r3, #155] @ 0x9b icd_str->now_energy = 0; - 8002832: 687b ldr r3, [r7, #4] - 8002834: 2200 movs r2, #0 - 8002836: f8a3 20aa strh.w r2, [r3, #170] @ 0xaa + 8002884: 687b ldr r3, [r7, #4] + 8002886: 2200 movs r2, #0 + 8002888: f8a3 20aa strh.w r2, [r3, #170] @ 0xaa icd_str->hv_step_cnt = 0; - 800283a: 687b ldr r3, [r7, #4] - 800283c: 2200 movs r2, #0 - 800283e: f883 209d strb.w r2, [r3, #157] @ 0x9d + 800288c: 687b ldr r3, [r7, #4] + 800288e: 2200 movs r2, #0 + 8002890: f883 209d strb.w r2, [r3, #157] @ 0x9d hv_power(false); - 8002842: 2000 movs r0, #0 - 8002844: f000 f912 bl 8002a6c + 8002894: 2000 movs r0, #0 + 8002896: f000 f91d bl 8002ad4 hv_sound(NO_TONE); //включили звук разряда - 8002848: 2000 movs r0, #0 - 800284a: f7ff fe8d bl 8002568 + 800289a: 2000 movs r0, #0 + 800289c: f7ff fe88 bl 80025b0 return; - 800284e: e045 b.n 80028dc + 80028a0: e045 b.n 800292e for(icd_str->hv_step_cnt = 0; icd_str->hv_step_cnt < icd_str->hv_step_number; ) - 8002850: 687b ldr r3, [r7, #4] - 8002852: f893 209d ldrb.w r2, [r3, #157] @ 0x9d - 8002856: 687b ldr r3, [r7, #4] - 8002858: f893 309c ldrb.w r3, [r3, #156] @ 0x9c - 800285c: 429a cmp r2, r3 - 800285e: d399 bcc.n 8002794 + 80028a2: 687b ldr r3, [r7, #4] + 80028a4: f893 209d ldrb.w r2, [r3, #157] @ 0x9d + 80028a8: 687b ldr r3, [r7, #4] + 80028aa: f893 309c ldrb.w r3, [r3, #156] @ 0x9c + 80028ae: 429a cmp r2, r3 + 80028b0: d399 bcc.n 80027e6 } } } //если прошлись по всем шагам а ритм всё равно говно if(icd_str->hv_step_cnt >= icd_str->hv_step_number) - 8002860: 687b ldr r3, [r7, #4] - 8002862: f893 209d ldrb.w r2, [r3, #157] @ 0x9d - 8002866: 687b ldr r3, [r7, #4] - 8002868: f893 309c ldrb.w r3, [r3, #156] @ 0x9c - 800286c: 429a cmp r2, r3 - 800286e: d335 bcc.n 80028dc + 80028b2: 687b ldr r3, [r7, #4] + 80028b4: f893 209d ldrb.w r2, [r3, #157] @ 0x9d + 80028b8: 687b ldr r3, [r7, #4] + 80028ba: f893 309c ldrb.w r3, [r3, #156] @ 0x9c + 80028be: 429a cmp r2, r3 + 80028c0: d335 bcc.n 800292e { icd_str->sub_mode = sub_stim_fail; - 8002870: 687b ldr r3, [r7, #4] - 8002872: 2204 movs r2, #4 - 8002874: f883 209b strb.w r2, [r3, #155] @ 0x9b + 80028c2: 687b ldr r3, [r7, #4] + 80028c4: 2204 movs r2, #4 + 80028c6: f883 209b strb.w r2, [r3, #155] @ 0x9b icd_str->now_energy = 0; - 8002878: 687b ldr r3, [r7, #4] - 800287a: 2200 movs r2, #0 - 800287c: f8a3 20aa strh.w r2, [r3, #170] @ 0xaa + 80028ca: 687b ldr r3, [r7, #4] + 80028cc: 2200 movs r2, #0 + 80028ce: f8a3 20aa strh.w r2, [r3, #170] @ 0xaa icd_str->hv_step_cnt = 0; - 8002880: 687b ldr r3, [r7, #4] - 8002882: 2200 movs r2, #0 - 8002884: f883 209d strb.w r2, [r3, #157] @ 0x9d + 80028d2: 687b ldr r3, [r7, #4] + 80028d4: 2200 movs r2, #0 + 80028d6: f883 209d strb.w r2, [r3, #157] @ 0x9d hv_discharge(icd_str); - 8002888: 687b ldr r3, [r7, #4] - 800288a: 2b00 cmp r3, #0 - 800288c: bf14 ite ne - 800288e: 2301 movne r3, #1 - 8002890: 2300 moveq r3, #0 - 8002892: b2db uxtb r3, r3 - 8002894: 4618 mov r0, r3 - 8002896: f000 f9a3 bl 8002be0 + 80028da: 687b ldr r3, [r7, #4] + 80028dc: 2b00 cmp r3, #0 + 80028de: bf14 ite ne + 80028e0: 2301 movne r3, #1 + 80028e2: 2300 moveq r3, #0 + 80028e4: b2db uxtb r3, r3 + 80028e6: 4618 mov r0, r3 + 80028e8: f000 f9ae bl 8002c48 if(icd_str->work_set_mode == Force) - 800289a: 687b ldr r3, [r7, #4] - 800289c: 781b ldrb r3, [r3, #0] - 800289e: 2b02 cmp r3, #2 - 80028a0: d103 bne.n 80028aa + 80028ec: 687b ldr r3, [r7, #4] + 80028ee: 781b ldrb r3, [r3, #0] + 80028f0: 2b02 cmp r3, #2 + 80028f2: d103 bne.n 80028fc { icd_str->work_set_mode = Monitor;//перешли в режим Мониторинга - 80028a2: 687b ldr r3, [r7, #4] - 80028a4: 2200 movs r2, #0 - 80028a6: 701a strb r2, [r3, #0] - 80028a8: e005 b.n 80028b6 + 80028f4: 687b ldr r3, [r7, #4] + 80028f6: 2200 movs r2, #0 + 80028f8: 701a strb r2, [r3, #0] + 80028fa: e005 b.n 8002908 } else { osDelay(icd_str->standby_timer);//сброс всего и долгая зажержка - 80028aa: 687b ldr r3, [r7, #4] - 80028ac: f8d3 30b4 ldr.w r3, [r3, #180] @ 0xb4 - 80028b0: 4618 mov r0, r3 - 80028b2: f009 fe3c bl 800c52e + 80028fc: 687b ldr r3, [r7, #4] + 80028fe: f8d3 30b4 ldr.w r3, [r3, #180] @ 0xb4 + 8002902: 4618 mov r0, r3 + 8002904: f00a f8cd bl 800caa2 } //сброс параметров и переход в режим icd_str->terapy_set = Terapy_off; - 80028b6: 687b ldr r3, [r7, #4] - 80028b8: 2200 movs r2, #0 - 80028ba: f883 2099 strb.w r2, [r3, #153] @ 0x99 + 8002908: 687b ldr r3, [r7, #4] + 800290a: 2200 movs r2, #0 + 800290c: f883 2099 strb.w r2, [r3, #153] @ 0x99 icd_str->sub_mode = sub_off; - 80028be: 687b ldr r3, [r7, #4] - 80028c0: 2200 movs r2, #0 - 80028c2: f883 209b strb.w r2, [r3, #155] @ 0x9b + 8002910: 687b ldr r3, [r7, #4] + 8002912: 2200 movs r2, #0 + 8002914: f883 209b strb.w r2, [r3, #155] @ 0x9b icd_str->now_energy = 0; - 80028c6: 687b ldr r3, [r7, #4] - 80028c8: 2200 movs r2, #0 - 80028ca: f8a3 20aa strh.w r2, [r3, #170] @ 0xaa + 8002918: 687b ldr r3, [r7, #4] + 800291a: 2200 movs r2, #0 + 800291c: f8a3 20aa strh.w r2, [r3, #170] @ 0xaa icd_str->hv_step_cnt = 0; - 80028ce: 687b ldr r3, [r7, #4] - 80028d0: 2200 movs r2, #0 - 80028d2: f883 209d strb.w r2, [r3, #157] @ 0x9d + 8002920: 687b ldr r3, [r7, #4] + 8002922: 2200 movs r2, #0 + 8002924: f883 209d strb.w r2, [r3, #157] @ 0x9d hv_power(false); - 80028d6: 2000 movs r0, #0 - 80028d8: f000 f8c8 bl 8002a6c + 8002928: 2000 movs r0, #0 + 800292a: f000 f8d3 bl 8002ad4 } } - 80028dc: 3708 adds r7, #8 - 80028de: 46bd mov sp, r7 - 80028e0: bd80 pop {r7, pc} - ... + 800292e: 3708 adds r7, #8 + 8002930: 46bd mov sp, r7 + 8002932: bd80 pop {r7, pc} -080028e4 : +08002934 : void terapy_algorithm(icd_str * icd_str) { - 80028e4: b580 push {r7, lr} - 80028e6: b082 sub sp, #8 - 80028e8: af00 add r7, sp, #0 - 80028ea: 6078 str r0, [r7, #4] + 8002934: b580 push {r7, lr} + 8002936: b082 sub sp, #8 + 8002938: af00 add r7, sp, #0 + 800293a: 6078 str r0, [r7, #4] //если выбран режим принудительный//fixme if(icd_str->work_set_mode == Force) - 80028ec: 687b ldr r3, [r7, #4] - 80028ee: 781b ldrb r3, [r3, #0] - 80028f0: 2b02 cmp r3, #2 - 80028f2: d103 bne.n 80028fc + 800293c: 687b ldr r3, [r7, #4] + 800293e: 781b ldrb r3, [r3, #0] + 8002940: 2b02 cmp r3, #2 + 8002942: d103 bne.n 800294c { icd_str->terapy_set = Terapy_fibr; - 80028f4: 687b ldr r3, [r7, #4] - 80028f6: 2201 movs r2, #1 - 80028f8: f883 2099 strb.w r2, [r3, #153] @ 0x99 + 8002944: 687b ldr r3, [r7, #4] + 8002946: 2201 movs r2, #1 + 8002948: f883 2099 strb.w r2, [r3, #153] @ 0x99 } switch (icd_str->terapy_set) - 80028fc: 687b ldr r3, [r7, #4] - 80028fe: f893 3099 ldrb.w r3, [r3, #153] @ 0x99 - 8002902: 2b03 cmp r3, #3 - 8002904: d825 bhi.n 8002952 - 8002906: a201 add r2, pc, #4 @ (adr r2, 800290c ) - 8002908: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 800290c: 0800291d .word 0x0800291d - 8002910: 08002933 .word 0x08002933 - 8002914: 08002941 .word 0x08002941 - 8002918: 08002949 .word 0x08002949 + 800294c: 687b ldr r3, [r7, #4] + 800294e: f893 3099 ldrb.w r3, [r3, #153] @ 0x99 + 8002952: 2b03 cmp r3, #3 + 8002954: d825 bhi.n 80029a2 + 8002956: a201 add r2, pc, #4 @ (adr r2, 800295c ) + 8002958: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 800295c: 0800296d .word 0x0800296d + 8002960: 08002983 .word 0x08002983 + 8002964: 08002991 .word 0x08002991 + 8002968: 08002999 .word 0x08002999 { case Terapy_off: { // первичный заход в режим if(terapy_start(icd_str)) - 800291c: 6878 ldr r0, [r7, #4] - 800291e: f7ff fdf0 bl 8002502 - 8002922: 4603 mov r3, r0 - 8002924: 2b00 cmp r3, #0 - 8002926: d013 beq.n 8002950 + 800296c: 6878 ldr r0, [r7, #4] + 800296e: f7ff fdec bl 800254a + 8002972: 4603 mov r3, r0 + 8002974: 2b00 cmp r3, #0 + 8002976: d013 beq.n 80029a0 { icd_str->hv_step_cnt = 0; - 8002928: 687b ldr r3, [r7, #4] - 800292a: 2200 movs r2, #0 - 800292c: f883 209d strb.w r2, [r3, #157] @ 0x9d + 8002978: 687b ldr r3, [r7, #4] + 800297a: 2200 movs r2, #0 + 800297c: f883 209d strb.w r2, [r3, #157] @ 0x9d //подготовка к нормальному режиму разрядка Конденсатора на всякий случай // настройка режима нормамльного поиска пиков } } break; - 8002930: e00e b.n 8002950 + 8002980: e00e b.n 80029a0 // самое жесткое лечение case Terapy_fibr: { // первичный заход в режим if(terapy_start(icd_str)) - 8002932: 6878 ldr r0, [r7, #4] - 8002934: f7ff fde5 bl 8002502 + 8002982: 6878 ldr r0, [r7, #4] + 8002984: f7ff fde1 bl 800254a { //подготовка к терапии } fibr_terapy(icd_str); - 8002938: 6878 ldr r0, [r7, #4] - 800293a: f7ff ff22 bl 8002782 + 8002988: 6878 ldr r0, [r7, #4] + 800298a: f7ff ff23 bl 80027d4 } break; - 800293e: e008 b.n 8002952 + 800298e: e008 b.n 80029a2 case Terapy_tachy_2: { // первичный заход в режим if(terapy_start(icd_str)) - 8002940: 6878 ldr r0, [r7, #4] - 8002942: f7ff fdde bl 8002502 + 8002990: 6878 ldr r0, [r7, #4] + 8002992: f7ff fdda bl 800254a { //пока не активен } } break; - 8002946: e004 b.n 8002952 + 8002996: e004 b.n 80029a2 case Terapy_tachy_1: { // первичный заход в режим if(terapy_start(icd_str)) - 8002948: 6878 ldr r0, [r7, #4] - 800294a: f7ff fdda bl 8002502 + 8002998: 6878 ldr r0, [r7, #4] + 800299a: f7ff fdd6 bl 800254a { //пока не активен } } break; - 800294e: e000 b.n 8002952 + 800299e: e000 b.n 80029a2 break; - 8002950: bf00 nop + 80029a0: bf00 nop + } + + if(icd_str->work_set_mode == Monitor && adc_str.hv_volt < SAFE_VOLTAGE/2) + 80029a2: 687b ldr r3, [r7, #4] + 80029a4: 781b ldrb r3, [r3, #0] + 80029a6: 2b00 cmp r3, #0 + 80029a8: d106 bne.n 80029b8 + 80029aa: 4b05 ldr r3, [pc, #20] @ (80029c0 ) + 80029ac: 8a1b ldrh r3, [r3, #16] + 80029ae: 2b31 cmp r3, #49 @ 0x31 + 80029b0: d802 bhi.n 80029b8 + { + hv_discharge(false);//выключили разряд + 80029b2: 2000 movs r0, #0 + 80029b4: f000 f948 bl 8002c48 } } - 8002952: bf00 nop - 8002954: 3708 adds r7, #8 - 8002956: 46bd mov sp, r7 - 8002958: bd80 pop {r7, pc} - 800295a: bf00 nop + 80029b8: bf00 nop + 80029ba: 3708 adds r7, #8 + 80029bc: 46bd mov sp, r7 + 80029be: bd80 pop {r7, pc} + 80029c0: 2000008c .word 0x2000008c -0800295c : +080029c4 : //единое управление реле по идее вызываем один раз когда собираемся ударить не важно тестово или по настоящему void relay_all_control(bool RV_safe,bool RA_safe,bool CAN_safe) { - 800295c: b580 push {r7, lr} - 800295e: b082 sub sp, #8 - 8002960: af00 add r7, sp, #0 - 8002962: 4603 mov r3, r0 - 8002964: 71fb strb r3, [r7, #7] - 8002966: 460b mov r3, r1 - 8002968: 71bb strb r3, [r7, #6] - 800296a: 4613 mov r3, r2 - 800296c: 717b strb r3, [r7, #5] + 80029c4: b580 push {r7, lr} + 80029c6: b082 sub sp, #8 + 80029c8: af00 add r7, sp, #0 + 80029ca: 4603 mov r3, r0 + 80029cc: 71fb strb r3, [r7, #7] + 80029ce: 460b mov r3, r1 + 80029d0: 71bb strb r3, [r7, #6] + 80029d2: 4613 mov r3, r2 + 80029d4: 717b strb r3, [r7, #5] relay_rv_control(RV_safe); - 800296e: 79fb ldrb r3, [r7, #7] - 8002970: 4618 mov r0, r3 - 8002972: f000 f829 bl 80029c8 + 80029d6: 79fb ldrb r3, [r7, #7] + 80029d8: 4618 mov r0, r3 + 80029da: f000 f829 bl 8002a30 relay_ra_control(RA_safe); - 8002976: 79bb ldrb r3, [r7, #6] - 8002978: 4618 mov r0, r3 - 800297a: f000 f809 bl 8002990 + 80029de: 79bb ldrb r3, [r7, #6] + 80029e0: 4618 mov r0, r3 + 80029e2: f000 f809 bl 80029f8 relay_can_control(CAN_safe); - 800297e: 797b ldrb r3, [r7, #5] - 8002980: 4618 mov r0, r3 - 8002982: f000 f83d bl 8002a00 + 80029e6: 797b ldrb r3, [r7, #5] + 80029e8: 4618 mov r0, r3 + 80029ea: f000 f83d bl 8002a68 } - 8002986: bf00 nop - 8002988: 3708 adds r7, #8 - 800298a: 46bd mov sp, r7 - 800298c: bd80 pop {r7, pc} + 80029ee: bf00 nop + 80029f0: 3708 adds r7, #8 + 80029f2: 46bd mov sp, r7 + 80029f4: bd80 pop {r7, pc} ... -08002990 : +080029f8 : void relay_ra_control(bool RA_safe) { - 8002990: b580 push {r7, lr} - 8002992: b082 sub sp, #8 - 8002994: af00 add r7, sp, #0 - 8002996: 4603 mov r3, r0 - 8002998: 71fb strb r3, [r7, #7] + 80029f8: b580 push {r7, lr} + 80029fa: b082 sub sp, #8 + 80029fc: af00 add r7, sp, #0 + 80029fe: 4603 mov r3, r0 + 8002a00: 71fb strb r3, [r7, #7] if(RA_safe) - 800299a: 79fb ldrb r3, [r7, #7] - 800299c: 2b00 cmp r3, #0 - 800299e: d006 beq.n 80029ae + 8002a02: 79fb ldrb r3, [r7, #7] + 8002a04: 2b00 cmp r3, #0 + 8002a06: d006 beq.n 8002a16 HAL_GPIO_WritePin(RA_RELAY_GPIO_Port, RA_RELAY_Pin, GPIO_PIN_SET); - 80029a0: 2201 movs r2, #1 - 80029a2: f44f 6100 mov.w r1, #2048 @ 0x800 - 80029a6: 4807 ldr r0, [pc, #28] @ (80029c4 ) - 80029a8: f004 ff2c bl 8007804 + 8002a08: 2201 movs r2, #1 + 8002a0a: f44f 6100 mov.w r1, #2048 @ 0x800 + 8002a0e: 4807 ldr r0, [pc, #28] @ (8002a2c ) + 8002a10: f005 f822 bl 8007a58 else HAL_GPIO_WritePin(RA_RELAY_GPIO_Port, RA_RELAY_Pin, GPIO_PIN_RESET); } - 80029ac: e005 b.n 80029ba + 8002a14: e005 b.n 8002a22 HAL_GPIO_WritePin(RA_RELAY_GPIO_Port, RA_RELAY_Pin, GPIO_PIN_RESET); - 80029ae: 2200 movs r2, #0 - 80029b0: f44f 6100 mov.w r1, #2048 @ 0x800 - 80029b4: 4803 ldr r0, [pc, #12] @ (80029c4 ) - 80029b6: f004 ff25 bl 8007804 + 8002a16: 2200 movs r2, #0 + 8002a18: f44f 6100 mov.w r1, #2048 @ 0x800 + 8002a1c: 4803 ldr r0, [pc, #12] @ (8002a2c ) + 8002a1e: f005 f81b bl 8007a58 } - 80029ba: bf00 nop - 80029bc: 3708 adds r7, #8 - 80029be: 46bd mov sp, r7 - 80029c0: bd80 pop {r7, pc} - 80029c2: bf00 nop - 80029c4: 40020c00 .word 0x40020c00 + 8002a22: bf00 nop + 8002a24: 3708 adds r7, #8 + 8002a26: 46bd mov sp, r7 + 8002a28: bd80 pop {r7, pc} + 8002a2a: bf00 nop + 8002a2c: 40020c00 .word 0x40020c00 -080029c8 : +08002a30 : void relay_rv_control(bool RV_safe) { - 80029c8: b580 push {r7, lr} - 80029ca: b082 sub sp, #8 - 80029cc: af00 add r7, sp, #0 - 80029ce: 4603 mov r3, r0 - 80029d0: 71fb strb r3, [r7, #7] + 8002a30: b580 push {r7, lr} + 8002a32: b082 sub sp, #8 + 8002a34: af00 add r7, sp, #0 + 8002a36: 4603 mov r3, r0 + 8002a38: 71fb strb r3, [r7, #7] if(RV_safe) - 80029d2: 79fb ldrb r3, [r7, #7] - 80029d4: 2b00 cmp r3, #0 - 80029d6: d006 beq.n 80029e6 + 8002a3a: 79fb ldrb r3, [r7, #7] + 8002a3c: 2b00 cmp r3, #0 + 8002a3e: d006 beq.n 8002a4e HAL_GPIO_WritePin(RV_RELAY_GPIO_Port, RV_RELAY_Pin, GPIO_PIN_SET); - 80029d8: 2201 movs r2, #1 - 80029da: f44f 5180 mov.w r1, #4096 @ 0x1000 - 80029de: 4807 ldr r0, [pc, #28] @ (80029fc ) - 80029e0: f004 ff10 bl 8007804 + 8002a40: 2201 movs r2, #1 + 8002a42: f44f 5180 mov.w r1, #4096 @ 0x1000 + 8002a46: 4807 ldr r0, [pc, #28] @ (8002a64 ) + 8002a48: f005 f806 bl 8007a58 else HAL_GPIO_WritePin(RV_RELAY_GPIO_Port, RV_RELAY_Pin, GPIO_PIN_RESET); } - 80029e4: e005 b.n 80029f2 + 8002a4c: e005 b.n 8002a5a HAL_GPIO_WritePin(RV_RELAY_GPIO_Port, RV_RELAY_Pin, GPIO_PIN_RESET); - 80029e6: 2200 movs r2, #0 - 80029e8: f44f 5180 mov.w r1, #4096 @ 0x1000 - 80029ec: 4803 ldr r0, [pc, #12] @ (80029fc ) - 80029ee: f004 ff09 bl 8007804 + 8002a4e: 2200 movs r2, #0 + 8002a50: f44f 5180 mov.w r1, #4096 @ 0x1000 + 8002a54: 4803 ldr r0, [pc, #12] @ (8002a64 ) + 8002a56: f004 ffff bl 8007a58 } - 80029f2: bf00 nop - 80029f4: 3708 adds r7, #8 - 80029f6: 46bd mov sp, r7 - 80029f8: bd80 pop {r7, pc} - 80029fa: bf00 nop - 80029fc: 40020c00 .word 0x40020c00 + 8002a5a: bf00 nop + 8002a5c: 3708 adds r7, #8 + 8002a5e: 46bd mov sp, r7 + 8002a60: bd80 pop {r7, pc} + 8002a62: bf00 nop + 8002a64: 40020c00 .word 0x40020c00 -08002a00 : +08002a68 : void relay_can_control(bool CAN_safe) { - 8002a00: b580 push {r7, lr} - 8002a02: b082 sub sp, #8 - 8002a04: af00 add r7, sp, #0 - 8002a06: 4603 mov r3, r0 - 8002a08: 71fb strb r3, [r7, #7] + 8002a68: b580 push {r7, lr} + 8002a6a: b082 sub sp, #8 + 8002a6c: af00 add r7, sp, #0 + 8002a6e: 4603 mov r3, r0 + 8002a70: 71fb strb r3, [r7, #7] if(CAN_safe) - 8002a0a: 79fb ldrb r3, [r7, #7] - 8002a0c: 2b00 cmp r3, #0 - 8002a0e: d006 beq.n 8002a1e + 8002a72: 79fb ldrb r3, [r7, #7] + 8002a74: 2b00 cmp r3, #0 + 8002a76: d006 beq.n 8002a86 HAL_GPIO_WritePin(CAN_RELAY_GPIO_Port, CAN_RELAY_Pin, GPIO_PIN_SET); - 8002a10: 2201 movs r2, #1 - 8002a12: f44f 5100 mov.w r1, #8192 @ 0x2000 - 8002a16: 4807 ldr r0, [pc, #28] @ (8002a34 ) - 8002a18: f004 fef4 bl 8007804 + 8002a78: 2201 movs r2, #1 + 8002a7a: f44f 5100 mov.w r1, #8192 @ 0x2000 + 8002a7e: 4807 ldr r0, [pc, #28] @ (8002a9c ) + 8002a80: f004 ffea bl 8007a58 else HAL_GPIO_WritePin(CAN_RELAY_GPIO_Port, CAN_RELAY_Pin, GPIO_PIN_RESET); } - 8002a1c: e005 b.n 8002a2a + 8002a84: e005 b.n 8002a92 HAL_GPIO_WritePin(CAN_RELAY_GPIO_Port, CAN_RELAY_Pin, GPIO_PIN_RESET); - 8002a1e: 2200 movs r2, #0 - 8002a20: f44f 5100 mov.w r1, #8192 @ 0x2000 - 8002a24: 4803 ldr r0, [pc, #12] @ (8002a34 ) - 8002a26: f004 feed bl 8007804 + 8002a86: 2200 movs r2, #0 + 8002a88: f44f 5100 mov.w r1, #8192 @ 0x2000 + 8002a8c: 4803 ldr r0, [pc, #12] @ (8002a9c ) + 8002a8e: f004 ffe3 bl 8007a58 } - 8002a2a: bf00 nop - 8002a2c: 3708 adds r7, #8 - 8002a2e: 46bd mov sp, r7 - 8002a30: bd80 pop {r7, pc} - 8002a32: bf00 nop - 8002a34: 40020c00 .word 0x40020c00 + 8002a92: bf00 nop + 8002a94: 3708 adds r7, #8 + 8002a96: 46bd mov sp, r7 + 8002a98: bd80 pop {r7, pc} + 8002a9a: bf00 nop + 8002a9c: 40020c00 .word 0x40020c00 -08002a38 : +08002aa0 : //единое управление всей высоковольтной частью void hv_ll_control(half_br state_RV, half_br state_SCV, half_br state_CAN) { - 8002a38: b580 push {r7, lr} - 8002a3a: b082 sub sp, #8 - 8002a3c: af00 add r7, sp, #0 - 8002a3e: 4603 mov r3, r0 - 8002a40: 71fb strb r3, [r7, #7] - 8002a42: 460b mov r3, r1 - 8002a44: 71bb strb r3, [r7, #6] - 8002a46: 4613 mov r3, r2 - 8002a48: 717b strb r3, [r7, #5] + 8002aa0: b580 push {r7, lr} + 8002aa2: b082 sub sp, #8 + 8002aa4: af00 add r7, sp, #0 + 8002aa6: 4603 mov r3, r0 + 8002aa8: 71fb strb r3, [r7, #7] + 8002aaa: 460b mov r3, r1 + 8002aac: 71bb strb r3, [r7, #6] + 8002aae: 4613 mov r3, r2 + 8002ab0: 717b strb r3, [r7, #5] hv_ll_rv_control(state_RV); - 8002a4a: 79fb ldrb r3, [r7, #7] - 8002a4c: 4618 mov r0, r3 - 8002a4e: f000 f831 bl 8002ab4 + 8002ab2: 79fb ldrb r3, [r7, #7] + 8002ab4: 4618 mov r0, r3 + 8002ab6: f000 f831 bl 8002b1c hv_ll_scv_control(state_SCV); - 8002a52: 79bb ldrb r3, [r7, #6] - 8002a54: 4618 mov r0, r3 - 8002a56: f000 f85f bl 8002b18 + 8002aba: 79bb ldrb r3, [r7, #6] + 8002abc: 4618 mov r0, r3 + 8002abe: f000 f85f bl 8002b80 hv_ll_can_control(state_CAN); - 8002a5a: 797b ldrb r3, [r7, #5] - 8002a5c: 4618 mov r0, r3 - 8002a5e: f000 f88d bl 8002b7c + 8002ac2: 797b ldrb r3, [r7, #5] + 8002ac4: 4618 mov r0, r3 + 8002ac6: f000 f88d bl 8002be4 } - 8002a62: bf00 nop - 8002a64: 3708 adds r7, #8 - 8002a66: 46bd mov sp, r7 - 8002a68: bd80 pop {r7, pc} + 8002aca: bf00 nop + 8002acc: 3708 adds r7, #8 + 8002ace: 46bd mov sp, r7 + 8002ad0: bd80 pop {r7, pc} ... -08002a6c : +08002ad4 : //питание высоковольтной части источник на 12В и 3.3В void hv_power(bool state) { - 8002a6c: b580 push {r7, lr} - 8002a6e: b082 sub sp, #8 - 8002a70: af00 add r7, sp, #0 - 8002a72: 4603 mov r3, r0 - 8002a74: 71fb strb r3, [r7, #7] + 8002ad4: b580 push {r7, lr} + 8002ad6: b082 sub sp, #8 + 8002ad8: af00 add r7, sp, #0 + 8002ada: 4603 mov r3, r0 + 8002adc: 71fb strb r3, [r7, #7] if(state) - 8002a76: 79fb ldrb r3, [r7, #7] - 8002a78: 2b00 cmp r3, #0 - 8002a7a: d00a beq.n 8002a92 + 8002ade: 79fb ldrb r3, [r7, #7] + 8002ae0: 2b00 cmp r3, #0 + 8002ae2: d00a beq.n 8002afa { HAL_GPIO_WritePin(V12_PWR_GPIO_Port, V12_PWR_Pin, GPIO_PIN_RESET); - 8002a7c: 2200 movs r2, #0 - 8002a7e: 2110 movs r1, #16 - 8002a80: 480b ldr r0, [pc, #44] @ (8002ab0 ) - 8002a82: f004 febf bl 8007804 + 8002ae4: 2200 movs r2, #0 + 8002ae6: 2110 movs r1, #16 + 8002ae8: 480b ldr r0, [pc, #44] @ (8002b18 ) + 8002aea: f004 ffb5 bl 8007a58 HAL_GPIO_WritePin(HV_LOGIC_PWR_GPIO_Port, HV_LOGIC_PWR_Pin, GPIO_PIN_RESET); - 8002a86: 2200 movs r2, #0 - 8002a88: 2101 movs r1, #1 - 8002a8a: 4809 ldr r0, [pc, #36] @ (8002ab0 ) - 8002a8c: f004 feba bl 8007804 + 8002aee: 2200 movs r2, #0 + 8002af0: 2101 movs r1, #1 + 8002af2: 4809 ldr r0, [pc, #36] @ (8002b18 ) + 8002af4: f004 ffb0 bl 8007a58 else { HAL_GPIO_WritePin(V12_PWR_GPIO_Port, V12_PWR_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(HV_LOGIC_PWR_GPIO_Port, HV_LOGIC_PWR_Pin, GPIO_PIN_SET); } } - 8002a90: e009 b.n 8002aa6 + 8002af8: e009 b.n 8002b0e HAL_GPIO_WritePin(V12_PWR_GPIO_Port, V12_PWR_Pin, GPIO_PIN_SET); - 8002a92: 2201 movs r2, #1 - 8002a94: 2110 movs r1, #16 - 8002a96: 4806 ldr r0, [pc, #24] @ (8002ab0 ) - 8002a98: f004 feb4 bl 8007804 + 8002afa: 2201 movs r2, #1 + 8002afc: 2110 movs r1, #16 + 8002afe: 4806 ldr r0, [pc, #24] @ (8002b18 ) + 8002b00: f004 ffaa bl 8007a58 HAL_GPIO_WritePin(HV_LOGIC_PWR_GPIO_Port, HV_LOGIC_PWR_Pin, GPIO_PIN_SET); - 8002a9c: 2201 movs r2, #1 - 8002a9e: 2101 movs r1, #1 - 8002aa0: 4803 ldr r0, [pc, #12] @ (8002ab0 ) - 8002aa2: f004 feaf bl 8007804 + 8002b04: 2201 movs r2, #1 + 8002b06: 2101 movs r1, #1 + 8002b08: 4803 ldr r0, [pc, #12] @ (8002b18 ) + 8002b0a: f004 ffa5 bl 8007a58 } - 8002aa6: bf00 nop - 8002aa8: 3708 adds r7, #8 - 8002aaa: 46bd mov sp, r7 - 8002aac: bd80 pop {r7, pc} - 8002aae: bf00 nop - 8002ab0: 40021000 .word 0x40021000 + 8002b0e: bf00 nop + 8002b10: 3708 adds r7, #8 + 8002b12: 46bd mov sp, r7 + 8002b14: bd80 pop {r7, pc} + 8002b16: bf00 nop + 8002b18: 40021000 .word 0x40021000 -08002ab4 : +08002b1c : //катушка RV void hv_ll_rv_control(half_br state) { - 8002ab4: b580 push {r7, lr} - 8002ab6: b082 sub sp, #8 - 8002ab8: af00 add r7, sp, #0 - 8002aba: 4603 mov r3, r0 - 8002abc: 71fb strb r3, [r7, #7] + 8002b1c: b580 push {r7, lr} + 8002b1e: b082 sub sp, #8 + 8002b20: af00 add r7, sp, #0 + 8002b22: 4603 mov r3, r0 + 8002b24: 71fb strb r3, [r7, #7] //Замкнут нижний ключ if(state == low) - 8002abe: 79fb ldrb r3, [r7, #7] - 8002ac0: 2b00 cmp r3, #0 - 8002ac2: d10a bne.n 8002ada + 8002b26: 79fb ldrb r3, [r7, #7] + 8002b28: 2b00 cmp r3, #0 + 8002b2a: d10a bne.n 8002b42 { HAL_GPIO_WritePin(HV_LS_RV_GPIO_Port, HV_LS_RV_Pin, GPIO_PIN_SET); - 8002ac4: 2201 movs r2, #1 - 8002ac6: 2120 movs r1, #32 - 8002ac8: 4812 ldr r0, [pc, #72] @ (8002b14 ) - 8002aca: f004 fe9b bl 8007804 + 8002b2c: 2201 movs r2, #1 + 8002b2e: 2120 movs r1, #32 + 8002b30: 4812 ldr r0, [pc, #72] @ (8002b7c ) + 8002b32: f004 ff91 bl 8007a58 HAL_GPIO_WritePin(HV_HS_RV_GPIO_Port, HV_HS_RV_Pin, GPIO_PIN_RESET); - 8002ace: 2200 movs r2, #0 - 8002ad0: 2108 movs r1, #8 - 8002ad2: 4810 ldr r0, [pc, #64] @ (8002b14 ) - 8002ad4: f004 fe96 bl 8007804 + 8002b36: 2200 movs r2, #0 + 8002b38: 2108 movs r1, #8 + 8002b3a: 4810 ldr r0, [pc, #64] @ (8002b7c ) + 8002b3c: f004 ff8c bl 8007a58 else { HAL_GPIO_WritePin(HV_LS_RV_GPIO_Port, HV_LS_RV_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(HV_HS_RV_GPIO_Port, HV_HS_RV_Pin, GPIO_PIN_RESET); } } - 8002ad8: e017 b.n 8002b0a + 8002b40: e017 b.n 8002b72 else if (state == high) - 8002ada: 79fb ldrb r3, [r7, #7] - 8002adc: 2b01 cmp r3, #1 - 8002ade: d10a bne.n 8002af6 + 8002b42: 79fb ldrb r3, [r7, #7] + 8002b44: 2b01 cmp r3, #1 + 8002b46: d10a bne.n 8002b5e HAL_GPIO_WritePin(HV_LS_RV_GPIO_Port, HV_LS_RV_Pin, GPIO_PIN_RESET); - 8002ae0: 2200 movs r2, #0 - 8002ae2: 2120 movs r1, #32 - 8002ae4: 480b ldr r0, [pc, #44] @ (8002b14 ) - 8002ae6: f004 fe8d bl 8007804 + 8002b48: 2200 movs r2, #0 + 8002b4a: 2120 movs r1, #32 + 8002b4c: 480b ldr r0, [pc, #44] @ (8002b7c ) + 8002b4e: f004 ff83 bl 8007a58 HAL_GPIO_WritePin(HV_HS_RV_GPIO_Port, HV_HS_RV_Pin, GPIO_PIN_SET); - 8002aea: 2201 movs r2, #1 - 8002aec: 2108 movs r1, #8 - 8002aee: 4809 ldr r0, [pc, #36] @ (8002b14 ) - 8002af0: f004 fe88 bl 8007804 + 8002b52: 2201 movs r2, #1 + 8002b54: 2108 movs r1, #8 + 8002b56: 4809 ldr r0, [pc, #36] @ (8002b7c ) + 8002b58: f004 ff7e bl 8007a58 } - 8002af4: e009 b.n 8002b0a + 8002b5c: e009 b.n 8002b72 HAL_GPIO_WritePin(HV_LS_RV_GPIO_Port, HV_LS_RV_Pin, GPIO_PIN_RESET); - 8002af6: 2200 movs r2, #0 - 8002af8: 2120 movs r1, #32 - 8002afa: 4806 ldr r0, [pc, #24] @ (8002b14 ) - 8002afc: f004 fe82 bl 8007804 + 8002b5e: 2200 movs r2, #0 + 8002b60: 2120 movs r1, #32 + 8002b62: 4806 ldr r0, [pc, #24] @ (8002b7c ) + 8002b64: f004 ff78 bl 8007a58 HAL_GPIO_WritePin(HV_HS_RV_GPIO_Port, HV_HS_RV_Pin, GPIO_PIN_RESET); - 8002b00: 2200 movs r2, #0 - 8002b02: 2108 movs r1, #8 - 8002b04: 4803 ldr r0, [pc, #12] @ (8002b14 ) - 8002b06: f004 fe7d bl 8007804 + 8002b68: 2200 movs r2, #0 + 8002b6a: 2108 movs r1, #8 + 8002b6c: 4803 ldr r0, [pc, #12] @ (8002b7c ) + 8002b6e: f004 ff73 bl 8007a58 } - 8002b0a: bf00 nop - 8002b0c: 3708 adds r7, #8 - 8002b0e: 46bd mov sp, r7 - 8002b10: bd80 pop {r7, pc} - 8002b12: bf00 nop - 8002b14: 40020400 .word 0x40020400 + 8002b72: bf00 nop + 8002b74: 3708 adds r7, #8 + 8002b76: 46bd mov sp, r7 + 8002b78: bd80 pop {r7, pc} + 8002b7a: bf00 nop + 8002b7c: 40020400 .word 0x40020400 -08002b18 : +08002b80 : //катушка SCV void hv_ll_scv_control(half_br state) { - 8002b18: b580 push {r7, lr} - 8002b1a: b082 sub sp, #8 - 8002b1c: af00 add r7, sp, #0 - 8002b1e: 4603 mov r3, r0 - 8002b20: 71fb strb r3, [r7, #7] + 8002b80: b580 push {r7, lr} + 8002b82: b082 sub sp, #8 + 8002b84: af00 add r7, sp, #0 + 8002b86: 4603 mov r3, r0 + 8002b88: 71fb strb r3, [r7, #7] //Замкнут нижний ключ if(state == low) - 8002b22: 79fb ldrb r3, [r7, #7] - 8002b24: 2b00 cmp r3, #0 - 8002b26: d10a bne.n 8002b3e + 8002b8a: 79fb ldrb r3, [r7, #7] + 8002b8c: 2b00 cmp r3, #0 + 8002b8e: d10a bne.n 8002ba6 { HAL_GPIO_WritePin(HV_LS_SCV_GPIO_Port, HV_LS_SCV_Pin, GPIO_PIN_SET); - 8002b28: 2201 movs r2, #1 - 8002b2a: 2180 movs r1, #128 @ 0x80 - 8002b2c: 4812 ldr r0, [pc, #72] @ (8002b78 ) - 8002b2e: f004 fe69 bl 8007804 + 8002b90: 2201 movs r2, #1 + 8002b92: 2180 movs r1, #128 @ 0x80 + 8002b94: 4812 ldr r0, [pc, #72] @ (8002be0 ) + 8002b96: f004 ff5f bl 8007a58 HAL_GPIO_WritePin(HV_HS_SCV_GPIO_Port, HV_HS_SCV_Pin, GPIO_PIN_RESET); - 8002b32: 2200 movs r2, #0 - 8002b34: 2120 movs r1, #32 - 8002b36: 4810 ldr r0, [pc, #64] @ (8002b78 ) - 8002b38: f004 fe64 bl 8007804 + 8002b9a: 2200 movs r2, #0 + 8002b9c: 2120 movs r1, #32 + 8002b9e: 4810 ldr r0, [pc, #64] @ (8002be0 ) + 8002ba0: f004 ff5a bl 8007a58 else { HAL_GPIO_WritePin(HV_LS_SCV_GPIO_Port, HV_LS_SCV_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(HV_HS_SCV_GPIO_Port, HV_HS_SCV_Pin, GPIO_PIN_RESET); } } - 8002b3c: e017 b.n 8002b6e + 8002ba4: e017 b.n 8002bd6 else if (state == high) - 8002b3e: 79fb ldrb r3, [r7, #7] - 8002b40: 2b01 cmp r3, #1 - 8002b42: d10a bne.n 8002b5a + 8002ba6: 79fb ldrb r3, [r7, #7] + 8002ba8: 2b01 cmp r3, #1 + 8002baa: d10a bne.n 8002bc2 HAL_GPIO_WritePin(HV_LS_SCV_GPIO_Port, HV_LS_SCV_Pin, GPIO_PIN_RESET); - 8002b44: 2200 movs r2, #0 - 8002b46: 2180 movs r1, #128 @ 0x80 - 8002b48: 480b ldr r0, [pc, #44] @ (8002b78 ) - 8002b4a: f004 fe5b bl 8007804 + 8002bac: 2200 movs r2, #0 + 8002bae: 2180 movs r1, #128 @ 0x80 + 8002bb0: 480b ldr r0, [pc, #44] @ (8002be0 ) + 8002bb2: f004 ff51 bl 8007a58 HAL_GPIO_WritePin(HV_HS_SCV_GPIO_Port, HV_HS_SCV_Pin, GPIO_PIN_SET); - 8002b4e: 2201 movs r2, #1 - 8002b50: 2120 movs r1, #32 - 8002b52: 4809 ldr r0, [pc, #36] @ (8002b78 ) - 8002b54: f004 fe56 bl 8007804 + 8002bb6: 2201 movs r2, #1 + 8002bb8: 2120 movs r1, #32 + 8002bba: 4809 ldr r0, [pc, #36] @ (8002be0 ) + 8002bbc: f004 ff4c bl 8007a58 } - 8002b58: e009 b.n 8002b6e + 8002bc0: e009 b.n 8002bd6 HAL_GPIO_WritePin(HV_LS_SCV_GPIO_Port, HV_LS_SCV_Pin, GPIO_PIN_RESET); - 8002b5a: 2200 movs r2, #0 - 8002b5c: 2180 movs r1, #128 @ 0x80 - 8002b5e: 4806 ldr r0, [pc, #24] @ (8002b78 ) - 8002b60: f004 fe50 bl 8007804 + 8002bc2: 2200 movs r2, #0 + 8002bc4: 2180 movs r1, #128 @ 0x80 + 8002bc6: 4806 ldr r0, [pc, #24] @ (8002be0 ) + 8002bc8: f004 ff46 bl 8007a58 HAL_GPIO_WritePin(HV_HS_SCV_GPIO_Port, HV_HS_SCV_Pin, GPIO_PIN_RESET); - 8002b64: 2200 movs r2, #0 - 8002b66: 2120 movs r1, #32 - 8002b68: 4803 ldr r0, [pc, #12] @ (8002b78 ) - 8002b6a: f004 fe4b bl 8007804 + 8002bcc: 2200 movs r2, #0 + 8002bce: 2120 movs r1, #32 + 8002bd0: 4803 ldr r0, [pc, #12] @ (8002be0 ) + 8002bd2: f004 ff41 bl 8007a58 } - 8002b6e: bf00 nop - 8002b70: 3708 adds r7, #8 - 8002b72: 46bd mov sp, r7 - 8002b74: bd80 pop {r7, pc} - 8002b76: bf00 nop - 8002b78: 40020c00 .word 0x40020c00 + 8002bd6: bf00 nop + 8002bd8: 3708 adds r7, #8 + 8002bda: 46bd mov sp, r7 + 8002bdc: bd80 pop {r7, pc} + 8002bde: bf00 nop + 8002be0: 40020c00 .word 0x40020c00 -08002b7c : +08002be4 : //Корпус void hv_ll_can_control(half_br state) { - 8002b7c: b580 push {r7, lr} - 8002b7e: b082 sub sp, #8 - 8002b80: af00 add r7, sp, #0 - 8002b82: 4603 mov r3, r0 - 8002b84: 71fb strb r3, [r7, #7] + 8002be4: b580 push {r7, lr} + 8002be6: b082 sub sp, #8 + 8002be8: af00 add r7, sp, #0 + 8002bea: 4603 mov r3, r0 + 8002bec: 71fb strb r3, [r7, #7] //Замкнут нижний ключ if(state == low) - 8002b86: 79fb ldrb r3, [r7, #7] - 8002b88: 2b00 cmp r3, #0 - 8002b8a: d10a bne.n 8002ba2 + 8002bee: 79fb ldrb r3, [r7, #7] + 8002bf0: 2b00 cmp r3, #0 + 8002bf2: d10a bne.n 8002c0a { HAL_GPIO_WritePin(HV_LS_CAN_GPIO_Port, HV_LS_CAN_Pin, GPIO_PIN_SET); - 8002b8c: 2201 movs r2, #1 - 8002b8e: 2110 movs r1, #16 - 8002b90: 4812 ldr r0, [pc, #72] @ (8002bdc ) - 8002b92: f004 fe37 bl 8007804 + 8002bf4: 2201 movs r2, #1 + 8002bf6: 2110 movs r1, #16 + 8002bf8: 4812 ldr r0, [pc, #72] @ (8002c44 ) + 8002bfa: f004 ff2d bl 8007a58 HAL_GPIO_WritePin(HV_HS_CAN_GPIO_Port, HV_HS_CAN_Pin, GPIO_PIN_RESET); - 8002b96: 2200 movs r2, #0 - 8002b98: 2104 movs r1, #4 - 8002b9a: 4810 ldr r0, [pc, #64] @ (8002bdc ) - 8002b9c: f004 fe32 bl 8007804 + 8002bfe: 2200 movs r2, #0 + 8002c00: 2104 movs r1, #4 + 8002c02: 4810 ldr r0, [pc, #64] @ (8002c44 ) + 8002c04: f004 ff28 bl 8007a58 else { HAL_GPIO_WritePin(HV_LS_CAN_GPIO_Port, HV_LS_CAN_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(HV_HS_CAN_GPIO_Port, HV_HS_CAN_Pin, GPIO_PIN_RESET); } } - 8002ba0: e017 b.n 8002bd2 + 8002c08: e017 b.n 8002c3a else if (state == high) - 8002ba2: 79fb ldrb r3, [r7, #7] - 8002ba4: 2b01 cmp r3, #1 - 8002ba6: d10a bne.n 8002bbe + 8002c0a: 79fb ldrb r3, [r7, #7] + 8002c0c: 2b01 cmp r3, #1 + 8002c0e: d10a bne.n 8002c26 HAL_GPIO_WritePin(HV_LS_CAN_GPIO_Port, HV_LS_CAN_Pin, GPIO_PIN_RESET); - 8002ba8: 2200 movs r2, #0 - 8002baa: 2110 movs r1, #16 - 8002bac: 480b ldr r0, [pc, #44] @ (8002bdc ) - 8002bae: f004 fe29 bl 8007804 + 8002c10: 2200 movs r2, #0 + 8002c12: 2110 movs r1, #16 + 8002c14: 480b ldr r0, [pc, #44] @ (8002c44 ) + 8002c16: f004 ff1f bl 8007a58 HAL_GPIO_WritePin(HV_HS_CAN_GPIO_Port, HV_HS_CAN_Pin, GPIO_PIN_SET); - 8002bb2: 2201 movs r2, #1 - 8002bb4: 2104 movs r1, #4 - 8002bb6: 4809 ldr r0, [pc, #36] @ (8002bdc ) - 8002bb8: f004 fe24 bl 8007804 + 8002c1a: 2201 movs r2, #1 + 8002c1c: 2104 movs r1, #4 + 8002c1e: 4809 ldr r0, [pc, #36] @ (8002c44 ) + 8002c20: f004 ff1a bl 8007a58 } - 8002bbc: e009 b.n 8002bd2 + 8002c24: e009 b.n 8002c3a HAL_GPIO_WritePin(HV_LS_CAN_GPIO_Port, HV_LS_CAN_Pin, GPIO_PIN_RESET); - 8002bbe: 2200 movs r2, #0 - 8002bc0: 2110 movs r1, #16 - 8002bc2: 4806 ldr r0, [pc, #24] @ (8002bdc ) - 8002bc4: f004 fe1e bl 8007804 + 8002c26: 2200 movs r2, #0 + 8002c28: 2110 movs r1, #16 + 8002c2a: 4806 ldr r0, [pc, #24] @ (8002c44 ) + 8002c2c: f004 ff14 bl 8007a58 HAL_GPIO_WritePin(HV_HS_CAN_GPIO_Port, HV_HS_CAN_Pin, GPIO_PIN_RESET); - 8002bc8: 2200 movs r2, #0 - 8002bca: 2104 movs r1, #4 - 8002bcc: 4803 ldr r0, [pc, #12] @ (8002bdc ) - 8002bce: f004 fe19 bl 8007804 + 8002c30: 2200 movs r2, #0 + 8002c32: 2104 movs r1, #4 + 8002c34: 4803 ldr r0, [pc, #12] @ (8002c44 ) + 8002c36: f004 ff0f bl 8007a58 } - 8002bd2: bf00 nop - 8002bd4: 3708 adds r7, #8 - 8002bd6: 46bd mov sp, r7 - 8002bd8: bd80 pop {r7, pc} - 8002bda: bf00 nop - 8002bdc: 40020c00 .word 0x40020c00 + 8002c3a: bf00 nop + 8002c3c: 3708 adds r7, #8 + 8002c3e: 46bd mov sp, r7 + 8002c40: bd80 pop {r7, pc} + 8002c42: bf00 nop + 8002c44: 40020c00 .word 0x40020c00 -08002be0 : +08002c48 : //функция плавного разряда Конденсатора void hv_discharge(bool state) { - 8002be0: b580 push {r7, lr} - 8002be2: b082 sub sp, #8 - 8002be4: af00 add r7, sp, #0 - 8002be6: 4603 mov r3, r0 - 8002be8: 71fb strb r3, [r7, #7] + 8002c48: b580 push {r7, lr} + 8002c4a: b082 sub sp, #8 + 8002c4c: af00 add r7, sp, #0 + 8002c4e: 4603 mov r3, r0 + 8002c50: 71fb strb r3, [r7, #7] if (state) //Если хотим генерировать - 8002bea: 79fb ldrb r3, [r7, #7] - 8002bec: 2b00 cmp r3, #0 - 8002bee: d006 beq.n 8002bfe + 8002c52: 79fb ldrb r3, [r7, #7] + 8002c54: 2b00 cmp r3, #0 + 8002c56: d006 beq.n 8002c66 { //плавный разряд включен HAL_GPIO_WritePin(HV_DIS_GPIO_Port, HV_DIS_Pin, GPIO_PIN_SET); - 8002bf0: 2201 movs r2, #1 - 8002bf2: f44f 4100 mov.w r1, #32768 @ 0x8000 - 8002bf6: 4807 ldr r0, [pc, #28] @ (8002c14 ) - 8002bf8: f004 fe04 bl 8007804 + 8002c58: 2201 movs r2, #1 + 8002c5a: f44f 4100 mov.w r1, #32768 @ 0x8000 + 8002c5e: 4807 ldr r0, [pc, #28] @ (8002c7c ) + 8002c60: f004 fefa bl 8007a58 else { //плавный разряд включен HAL_GPIO_WritePin(HV_DIS_GPIO_Port, HV_DIS_Pin, GPIO_PIN_RESET); } } - 8002bfc: e005 b.n 8002c0a + 8002c64: e005 b.n 8002c72 HAL_GPIO_WritePin(HV_DIS_GPIO_Port, HV_DIS_Pin, GPIO_PIN_RESET); - 8002bfe: 2200 movs r2, #0 - 8002c00: f44f 4100 mov.w r1, #32768 @ 0x8000 - 8002c04: 4803 ldr r0, [pc, #12] @ (8002c14 ) - 8002c06: f004 fdfd bl 8007804 + 8002c66: 2200 movs r2, #0 + 8002c68: f44f 4100 mov.w r1, #32768 @ 0x8000 + 8002c6c: 4803 ldr r0, [pc, #12] @ (8002c7c ) + 8002c6e: f004 fef3 bl 8007a58 } - 8002c0a: bf00 nop - 8002c0c: 3708 adds r7, #8 - 8002c0e: 46bd mov sp, r7 - 8002c10: bd80 pop {r7, pc} - 8002c12: bf00 nop - 8002c14: 40021000 .word 0x40021000 + 8002c72: bf00 nop + 8002c74: 3708 adds r7, #8 + 8002c76: 46bd mov sp, r7 + 8002c78: bd80 pop {r7, pc} + 8002c7a: bf00 nop + 8002c7c: 40021000 .word 0x40021000 -08002c18 : +08002c80 : - - -////разряд биполярный -void ll_bi_dis(void) +////разряд биполярный с выбором параметров +void ll_bi_shock_param(icd_str * icd_str) { - 8002c18: b580 push {r7, lr} - 8002c1a: af00 add r7, sp, #0 + 8002c80: b580 push {r7, lr} + 8002c82: b084 sub sp, #16 + 8002c84: af00 add r7, sp, #0 + 8002c86: 6078 str r0, [r7, #4] + //сперва тупо парсим параметры из основной структуры + //хватаем параметры в локальные переменные чтобы ничего не поменялось + hv_polarity polarity = icd_str->hv_polarity; + 8002c88: 687b ldr r3, [r7, #4] + 8002c8a: f893 309f ldrb.w r3, [r3, #159] @ 0x9f + 8002c8e: 73fb strb r3, [r7, #15] + hv_mode mode = icd_str->hv_mode; + 8002c90: 687b ldr r3, [r7, #4] + 8002c92: f893 30a0 ldrb.w r3, [r3, #160] @ 0xa0 + 8002c96: 73bb strb r3, [r7, #14] + + // время в десятых мс приходящееся на 1 фазу 30-120(3-12мс) одна единица 0,1мс + uint8_t hv_phase_1_duration = icd_str->hv_phase_1_duration; + 8002c98: 687b ldr r3, [r7, #4] + 8002c9a: f893 30a1 ldrb.w r3, [r3, #161] @ 0xa1 + 8002c9e: 737b strb r3, [r7, #13] + // время в десятых мс приходящееся на 2 фазу 20-100(2-10мс) одна единица 0,1мс + uint8_t hv_phase_2_duration = icd_str->hv_phase_2_duration; + 8002ca0: 687b ldr r3, [r7, #4] + 8002ca2: f893 30a2 ldrb.w r3, [r3, #162] @ 0xa2 + 8002ca6: 733b strb r3, [r7, #12] + // время в десятых мс приходящееся на переключение между фазами 10-30(1-3мс) одна единица 0,1мс + uint8_t hv_switch_duration = icd_str->hv_switch_duration; + 8002ca8: 687b ldr r3, [r7, #4] + 8002caa: f893 30a3 ldrb.w r3, [r3, #163] @ 0xa3 + 8002cae: 72fb strb r3, [r7, #11] + + //процент напряжения при котором происходит завешение 1 фазы при адаптивном режиме (20-80) одна единица 1% + uint8_t hv_switching_voltage = icd_str->hv_switching_voltage; + 8002cb0: 687b ldr r3, [r7, #4] + 8002cb2: f893 30a4 ldrb.w r3, [r3, #164] @ 0xa4 + 8002cb6: 72bb strb r3, [r7, #10] + //процент напряжения при котором происходит завешение 2 фазы при адаптивном режиме (5-50) одна единица 1% + uint8_t hv_cutoff_voltage = icd_str->hv_cutoff_voltage; + 8002cb8: 687b ldr r3, [r7, #4] + 8002cba: f893 30a5 ldrb.w r3, [r3, #165] @ 0xa5 + 8002cbe: 727b strb r3, [r7, #9] + + bool HV_on = icd_str->HV_on; + 8002cc0: 687b ldr r3, [r7, #4] + 8002cc2: f893 3069 ldrb.w r3, [r3, #105] @ 0x69 + 8002cc6: 723b strb r3, [r7, #8] //защитили низковольтную часть relay_all_control(true,true,true); - 8002c1c: 2201 movs r2, #1 - 8002c1e: 2101 movs r1, #1 - 8002c20: 2001 movs r0, #1 - 8002c22: f7ff fe9b bl 800295c - hv_en_control(false, false, false); - 8002c26: 2200 movs r2, #0 - 8002c28: 2100 movs r1, #0 - 8002c2a: 2000 movs r0, #0 - 8002c2c: f000 f91e bl 8002e6c - //чтобы не пробило перевели в разамкнутое состояние все полумосты - hv_ll_control(z_state, z_state, z_state); - 8002c30: 2202 movs r2, #2 - 8002c32: 2102 movs r1, #2 - 8002c34: 2002 movs r0, #2 - 8002c36: f7ff feff bl 8002a38 - osDelay(15); - 8002c3a: 200f movs r0, #15 - 8002c3c: f009 fc77 bl 800c52e - hv_power(true); - 8002c40: 2001 movs r0, #1 - 8002c42: f7ff ff13 bl 8002a6c - osDelay(5); - 8002c46: 2005 movs r0, #5 - 8002c48: f009 fc71 bl 800c52e - hv_en_control(true, true, false); - 8002c4c: 2200 movs r2, #0 - 8002c4e: 2101 movs r1, #1 - 8002c50: 2001 movs r0, #1 - 8002c52: f000 f90b bl 8002e6c - osDelay(2); - 8002c56: 2002 movs r0, #2 - 8002c58: f009 fc69 bl 800c52e - //Сторона 1 + - hv_ll_control(low, high, z_state); - 8002c5c: 2202 movs r2, #2 - 8002c5e: 2101 movs r1, #1 - 8002c60: 2000 movs r0, #0 - 8002c62: f7ff fee9 bl 8002a38 - osDelay(7); - 8002c66: 2007 movs r0, #7 - 8002c68: f009 fc61 bl 800c52e - //чтобы не пробило перевели в разамкнутое состояние все полумосты - hv_ll_control(z_state, z_state, z_state); - 8002c6c: 2202 movs r2, #2 - 8002c6e: 2102 movs r1, #2 - 8002c70: 2002 movs r0, #2 - 8002c72: f7ff fee1 bl 8002a38 - osDelay(2); - 8002c76: 2002 movs r0, #2 - 8002c78: f009 fc59 bl 800c52e - //Сторона 2 + - hv_ll_control(high, low, z_state); - 8002c7c: 2202 movs r2, #2 - 8002c7e: 2100 movs r1, #0 - 8002c80: 2001 movs r0, #1 - 8002c82: f7ff fed9 bl 8002a38 - osDelay(4); - 8002c86: 2004 movs r0, #4 - 8002c88: f009 fc51 bl 800c52e - hv_en_control(false, false, false); - 8002c8c: 2200 movs r2, #0 - 8002c8e: 2100 movs r1, #0 - 8002c90: 2000 movs r0, #0 - 8002c92: f000 f8eb bl 8002e6c - hv_ll_control(z_state, z_state, z_state); - 8002c96: 2202 movs r2, #2 - 8002c98: 2102 movs r1, #2 - 8002c9a: 2002 movs r0, #2 - 8002c9c: f7ff fecc bl 8002a38 + 8002cc8: 2201 movs r2, #1 + 8002cca: 2101 movs r1, #1 + 8002ccc: 2001 movs r0, #1 + 8002cce: f7ff fe79 bl 80029c4 osDelay(20); - 8002ca0: 2014 movs r0, #20 - 8002ca2: f009 fc44 bl 800c52e - relay_all_control(false,false,false); - 8002ca6: 2200 movs r2, #0 - 8002ca8: 2100 movs r1, #0 - 8002caa: 2000 movs r0, #0 - 8002cac: f7ff fe56 bl 800295c - osDelay(2);// - 8002cb0: 2002 movs r0, #2 - 8002cb2: f009 fc3c bl 800c52e -} - 8002cb6: bf00 nop - 8002cb8: bd80 pop {r7, pc} - ... + 8002cd2: 2014 movs r0, #20 + 8002cd4: f009 fee5 bl 800caa2 + if(HV_on) + 8002cd8: 7a3b ldrb r3, [r7, #8] + 8002cda: 2b00 cmp r3, #0 + 8002cdc: d03a beq.n 8002d54 + { + //чтобы не пробило перевели в разамкнутое состояние все полумосты + hv_ll_control(z_state, z_state, z_state); + 8002cde: 2202 movs r2, #2 + 8002ce0: 2102 movs r1, #2 + 8002ce2: 2002 movs r0, #2 + 8002ce4: f7ff fedc bl 8002aa0 + osDelay(2);//временно + 8002ce8: 2002 movs r0, #2 + 8002cea: f009 feda bl 800caa2 -08002cbc : + hv_en_control(true,true,false); + 8002cee: 2200 movs r2, #0 + 8002cf0: 2101 movs r1, #1 + 8002cf2: 2001 movs r0, #1 + 8002cf4: f000 f8f0 bl 8002ed8 + osDelay(2);//временно + 8002cf8: 2002 movs r0, #2 + 8002cfa: f009 fed2 bl 800caa2 + //первая волна + hv_ll_control(low, high, z_state); + 8002cfe: 2202 movs r2, #2 + 8002d00: 2101 movs r1, #1 + 8002d02: 2000 movs r0, #0 + 8002d04: f7ff fecc bl 8002aa0 + delay_critical(hv_phase_1_duration); + 8002d08: 7b7b ldrb r3, [r7, #13] + 8002d0a: 4618 mov r0, r3 + 8002d0c: f000 f94c bl 8002fa8 + // osDelay(2);//временно + //остановка + //чтобы не пробило перевели в разамкнутое состояние все полумосты + hv_ll_control(z_state, z_state, z_state); + 8002d10: 2202 movs r2, #2 + 8002d12: 2102 movs r1, #2 + 8002d14: 2002 movs r0, #2 + 8002d16: f7ff fec3 bl 8002aa0 + delay_critical(hv_switch_duration); + 8002d1a: 7afb ldrb r3, [r7, #11] + 8002d1c: 4618 mov r0, r3 + 8002d1e: f000 f943 bl 8002fa8 + // osDelay(2);//временно + //вторая волна + hv_ll_control(high, low, z_state); + 8002d22: 2202 movs r2, #2 + 8002d24: 2100 movs r1, #0 + 8002d26: 2001 movs r0, #1 + 8002d28: f7ff feba bl 8002aa0 + delay_critical(hv_phase_2_duration); + 8002d2c: 7b3b ldrb r3, [r7, #12] + 8002d2e: 4618 mov r0, r3 + 8002d30: f000 f93a bl 8002fa8 + // osDelay(2); + //отключение + hv_ll_control(z_state, z_state, z_state); + 8002d34: 2202 movs r2, #2 + 8002d36: 2102 movs r1, #2 + 8002d38: 2002 movs r0, #2 + 8002d3a: f7ff feb1 bl 8002aa0 + hv_en_control(false,false,false); + 8002d3e: 2200 movs r2, #0 + 8002d40: 2100 movs r1, #0 + 8002d42: 2000 movs r0, #0 + 8002d44: f000 f8c8 bl 8002ed8 + osDelay(2);//временно + 8002d48: 2002 movs r0, #2 + 8002d4a: f009 feaa bl 800caa2 + osDelay(20); + 8002d4e: 2014 movs r0, #20 + 8002d50: f009 fea7 bl 800caa2 + } + relay_all_control(false,false,false); + 8002d54: 2200 movs r2, #0 + 8002d56: 2100 movs r1, #0 + 8002d58: 2000 movs r0, #0 + 8002d5a: f7ff fe33 bl 80029c4 + osDelay(2);// + 8002d5e: 2002 movs r0, #2 + 8002d60: f009 fe9f bl 800caa2 +} + 8002d64: bf00 nop + 8002d66: 3710 adds r7, #16 + 8002d68: 46bd mov sp, r7 + 8002d6a: bd80 pop {r7, pc} + +08002d6c : break; } } void rv_lv_control(icd_str * icd_str,lv_sub_mode mode) { - 8002cbc: b580 push {r7, lr} - 8002cbe: b084 sub sp, #16 - 8002cc0: af00 add r7, sp, #0 - 8002cc2: 6078 str r0, [r7, #4] - 8002cc4: 460b mov r3, r1 - 8002cc6: 70fb strb r3, [r7, #3] + 8002d6c: b580 push {r7, lr} + 8002d6e: b084 sub sp, #16 + 8002d70: af00 add r7, sp, #0 + 8002d72: 6078 str r0, [r7, #4] + 8002d74: 460b mov r3, r1 + 8002d76: 70fb strb r3, [r7, #3] switch (mode) - 8002cc8: 78fb ldrb r3, [r7, #3] - 8002cca: 2b04 cmp r3, #4 - 8002ccc: f200 80c4 bhi.w 8002e58 - 8002cd0: a201 add r2, pc, #4 @ (adr r2, 8002cd8 ) - 8002cd2: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8002cd6: bf00 nop - 8002cd8: 08002ced .word 0x08002ced - 8002cdc: 08002d19 .word 0x08002d19 - 8002ce0: 08002d99 .word 0x08002d99 - 8002ce4: 08002dfb .word 0x08002dfb - 8002ce8: 08002e2d .word 0x08002e2d + 8002d78: 78fb ldrb r3, [r7, #3] + 8002d7a: 2b04 cmp r3, #4 + 8002d7c: f200 809f bhi.w 8002ebe + 8002d80: a201 add r2, pc, #4 @ (adr r2, 8002d88 ) + 8002d82: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8002d86: bf00 nop + 8002d88: 08002d9d .word 0x08002d9d + 8002d8c: 08002dbd .word 0x08002dbd + 8002d90: 08002e31 .word 0x08002e31 + 8002d94: 08002e79 .word 0x08002e79 + 8002d98: 08002e9f .word 0x08002e9f { //Свободный без всякого вмешательства tip и coil свободны разряда\заряда не происходит case lv_sub_free: { HAL_GPIO_WritePin(RV_LV_TIP_TO_GND_GPIO_Port, RV_LV_TIP_TO_GND_Pin, GPIO_PIN_RESET); - 8002cec: 2200 movs r2, #0 - 8002cee: 2108 movs r1, #8 - 8002cf0: 485b ldr r0, [pc, #364] @ (8002e60 ) - 8002cf2: f004 fd87 bl 8007804 + 8002d9c: 2200 movs r2, #0 + 8002d9e: 2108 movs r1, #8 + 8002da0: 4849 ldr r0, [pc, #292] @ (8002ec8 ) + 8002da2: f004 fe59 bl 8007a58 HAL_GPIO_WritePin(RV_LV_COIL_TO_GND_GPIO_Port, RV_LV_COIL_TO_GND_Pin, GPIO_PIN_RESET); - 8002cf6: 2200 movs r2, #0 - 8002cf8: 2104 movs r1, #4 - 8002cfa: 4859 ldr r0, [pc, #356] @ (8002e60 ) - 8002cfc: f004 fd82 bl 8007804 + 8002da6: 2200 movs r2, #0 + 8002da8: 2104 movs r1, #4 + 8002daa: 4847 ldr r0, [pc, #284] @ (8002ec8 ) + 8002dac: f004 fe54 bl 8007a58 HAL_GPIO_WritePin(RV_LV_DIS_GPIO_Port, RV_LV_DIS_Pin, GPIO_PIN_SET); - 8002d00: 2201 movs r2, #1 - 8002d02: 2102 movs r1, #2 - 8002d04: 4856 ldr r0, [pc, #344] @ (8002e60 ) - 8002d06: f004 fd7d bl 8007804 - HAL_GPIO_WritePin(RV_LV_SHOCK_GPIO_Port, RV_LV_SHOCK_Pin, GPIO_PIN_SET); - 8002d0a: 2201 movs r2, #1 - 8002d0c: f44f 7100 mov.w r1, #512 @ 0x200 - 8002d10: 4854 ldr r0, [pc, #336] @ (8002e64 ) - 8002d12: f004 fd77 bl 8007804 + 8002db0: 2201 movs r2, #1 + 8002db2: 2102 movs r1, #2 + 8002db4: 4844 ldr r0, [pc, #272] @ (8002ec8 ) + 8002db6: f004 fe4f bl 8007a58 } break; - 8002d16: e09f b.n 8002e58 + 8002dba: e080 b.n 8002ebe //Заряд без всякого вмешательства tip и coil идёт заряд case lv_sub_charge: { HAL_GPIO_WritePin(RV_LV_TIP_TO_GND_GPIO_Port, RV_LV_TIP_TO_GND_Pin, GPIO_PIN_RESET); - 8002d18: 2200 movs r2, #0 - 8002d1a: 2108 movs r1, #8 - 8002d1c: 4850 ldr r0, [pc, #320] @ (8002e60 ) - 8002d1e: f004 fd71 bl 8007804 + 8002dbc: 2200 movs r2, #0 + 8002dbe: 2108 movs r1, #8 + 8002dc0: 4841 ldr r0, [pc, #260] @ (8002ec8 ) + 8002dc2: f004 fe49 bl 8007a58 HAL_GPIO_WritePin(RV_LV_COIL_TO_GND_GPIO_Port, RV_LV_COIL_TO_GND_Pin, GPIO_PIN_RESET); - 8002d22: 2200 movs r2, #0 - 8002d24: 2104 movs r1, #4 - 8002d26: 484e ldr r0, [pc, #312] @ (8002e60 ) - 8002d28: f004 fd6c bl 8007804 + 8002dc6: 2200 movs r2, #0 + 8002dc8: 2104 movs r1, #4 + 8002dca: 483f ldr r0, [pc, #252] @ (8002ec8 ) + 8002dcc: f004 fe44 bl 8007a58 HAL_GPIO_WritePin(RV_LV_DIS_GPIO_Port, RV_LV_DIS_Pin, GPIO_PIN_SET); - 8002d2c: 2201 movs r2, #1 - 8002d2e: 2102 movs r1, #2 - 8002d30: 484b ldr r0, [pc, #300] @ (8002e60 ) - 8002d32: f004 fd67 bl 8007804 - HAL_GPIO_WritePin(RV_LV_SHOCK_GPIO_Port, RV_LV_SHOCK_Pin, GPIO_PIN_SET); - 8002d36: 2201 movs r2, #1 - 8002d38: f44f 7100 mov.w r1, #512 @ 0x200 - 8002d3c: 4849 ldr r0, [pc, #292] @ (8002e64 ) - 8002d3e: f004 fd61 bl 8007804 + 8002dd0: 2201 movs r2, #1 + 8002dd2: 2102 movs r1, #2 + 8002dd4: 483c ldr r0, [pc, #240] @ (8002ec8 ) + 8002dd6: f004 fe3f bl 8007a58 osDelay(2); - 8002d42: 2002 movs r0, #2 - 8002d44: f009 fbf3 bl 800c52e + 8002dda: 2002 movs r0, #2 + 8002ddc: f009 fe61 bl 800caa2 TIM2->CCR2 = 500; - 8002d48: f04f 4380 mov.w r3, #1073741824 @ 0x40000000 - 8002d4c: f44f 72fa mov.w r2, #500 @ 0x1f4 - 8002d50: 639a str r2, [r3, #56] @ 0x38 + 8002de0: f04f 4380 mov.w r3, #1073741824 @ 0x40000000 + 8002de4: f44f 72fa mov.w r2, #500 @ 0x1f4 + 8002de8: 639a str r2, [r3, #56] @ 0x38 TIM2->CCR3 = 500; - 8002d52: f04f 4380 mov.w r3, #1073741824 @ 0x40000000 - 8002d56: f44f 72fa mov.w r2, #500 @ 0x1f4 - 8002d5a: 63da str r2, [r3, #60] @ 0x3c + 8002dea: f04f 4380 mov.w r3, #1073741824 @ 0x40000000 + 8002dee: f44f 72fa mov.w r2, #500 @ 0x1f4 + 8002df2: 63da str r2, [r3, #60] @ 0x3c TIM2->CCR4 = 500; - 8002d5c: f04f 4380 mov.w r3, #1073741824 @ 0x40000000 - 8002d60: f44f 72fa mov.w r2, #500 @ 0x1f4 - 8002d64: 641a str r2, [r3, #64] @ 0x40 + 8002df4: f04f 4380 mov.w r3, #1073741824 @ 0x40000000 + 8002df8: f44f 72fa mov.w r2, #500 @ 0x1f4 + 8002dfc: 641a str r2, [r3, #64] @ 0x40 uint32_t charge_time = (uint32_t) (icd_str->lv_voltage); - 8002d66: 687b ldr r3, [r7, #4] - 8002d68: f893 303d ldrb.w r3, [r3, #61] @ 0x3d - 8002d6c: 60bb str r3, [r7, #8] + 8002dfe: 687b ldr r3, [r7, #4] + 8002e00: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 8002e04: 60bb str r3, [r7, #8] osDelay(charge_time/10); - 8002d6e: 68bb ldr r3, [r7, #8] - 8002d70: 4a3d ldr r2, [pc, #244] @ (8002e68 ) - 8002d72: fba2 2303 umull r2, r3, r2, r3 - 8002d76: 08db lsrs r3, r3, #3 - 8002d78: 4618 mov r0, r3 - 8002d7a: f009 fbd8 bl 800c52e + 8002e06: 68bb ldr r3, [r7, #8] + 8002e08: 4a30 ldr r2, [pc, #192] @ (8002ecc ) + 8002e0a: fba2 2303 umull r2, r3, r2, r3 + 8002e0e: 08db lsrs r3, r3, #3 + 8002e10: 4618 mov r0, r3 + 8002e12: f009 fe46 bl 800caa2 TIM2->CCR2 = 0; - 8002d7e: f04f 4380 mov.w r3, #1073741824 @ 0x40000000 - 8002d82: 2200 movs r2, #0 - 8002d84: 639a str r2, [r3, #56] @ 0x38 + 8002e16: f04f 4380 mov.w r3, #1073741824 @ 0x40000000 + 8002e1a: 2200 movs r2, #0 + 8002e1c: 639a str r2, [r3, #56] @ 0x38 TIM2->CCR3 = 0; - 8002d86: f04f 4380 mov.w r3, #1073741824 @ 0x40000000 - 8002d8a: 2200 movs r2, #0 - 8002d8c: 63da str r2, [r3, #60] @ 0x3c + 8002e1e: f04f 4380 mov.w r3, #1073741824 @ 0x40000000 + 8002e22: 2200 movs r2, #0 + 8002e24: 63da str r2, [r3, #60] @ 0x3c TIM2->CCR4 = 0; - 8002d8e: f04f 4380 mov.w r3, #1073741824 @ 0x40000000 - 8002d92: 2200 movs r2, #0 - 8002d94: 641a str r2, [r3, #64] @ 0x40 + 8002e26: f04f 4380 mov.w r3, #1073741824 @ 0x40000000 + 8002e2a: 2200 movs r2, #0 + 8002e2c: 641a str r2, [r3, #64] @ 0x40 } break; - 8002d96: e05f b.n 8002e58 + 8002e2e: e046 b.n 8002ebe //Разряд coil на землю притягиваем tip к конденсатору заряда нет case lv_sub_shock: { HAL_GPIO_WritePin(RV_LV_TIP_TO_GND_GPIO_Port, RV_LV_TIP_TO_GND_Pin, GPIO_PIN_RESET); - 8002d98: 2200 movs r2, #0 - 8002d9a: 2108 movs r1, #8 - 8002d9c: 4830 ldr r0, [pc, #192] @ (8002e60 ) - 8002d9e: f004 fd31 bl 8007804 + 8002e30: 2200 movs r2, #0 + 8002e32: 2108 movs r1, #8 + 8002e34: 4824 ldr r0, [pc, #144] @ (8002ec8 ) + 8002e36: f004 fe0f bl 8007a58 HAL_GPIO_WritePin(RV_LV_COIL_TO_GND_GPIO_Port, RV_LV_COIL_TO_GND_Pin, GPIO_PIN_SET); - 8002da2: 2201 movs r2, #1 - 8002da4: 2104 movs r1, #4 - 8002da6: 482e ldr r0, [pc, #184] @ (8002e60 ) - 8002da8: f004 fd2c bl 8007804 + 8002e3a: 2201 movs r2, #1 + 8002e3c: 2104 movs r1, #4 + 8002e3e: 4822 ldr r0, [pc, #136] @ (8002ec8 ) + 8002e40: f004 fe0a bl 8007a58 HAL_GPIO_WritePin(RV_LV_DIS_GPIO_Port, RV_LV_DIS_Pin, GPIO_PIN_SET); - 8002dac: 2201 movs r2, #1 - 8002dae: 2102 movs r1, #2 - 8002db0: 482b ldr r0, [pc, #172] @ (8002e60 ) - 8002db2: f004 fd27 bl 8007804 - HAL_GPIO_WritePin(RV_LV_SHOCK_GPIO_Port, RV_LV_SHOCK_Pin, GPIO_PIN_RESET); - 8002db6: 2200 movs r2, #0 - 8002db8: f44f 7100 mov.w r1, #512 @ 0x200 - 8002dbc: 4829 ldr r0, [pc, #164] @ (8002e64 ) - 8002dbe: f004 fd21 bl 8007804 + 8002e44: 2201 movs r2, #1 + 8002e46: 2102 movs r1, #2 + 8002e48: 481f ldr r0, [pc, #124] @ (8002ec8 ) + 8002e4a: f004 fe05 bl 8007a58 uint32_t shock_time = (uint32_t) (icd_str->lv_shock_time); - 8002dc2: 687b ldr r3, [r7, #4] - 8002dc4: f893 303b ldrb.w r3, [r3, #59] @ 0x3b - 8002dc8: 60fb str r3, [r7, #12] - taskENTER_CRITICAL(); - 8002dca: f00a fb05 bl 800d3d8 - delay_us((shock_time*125)/10); - 8002dce: 68fa ldr r2, [r7, #12] - 8002dd0: 4613 mov r3, r2 - 8002dd2: 015b lsls r3, r3, #5 - 8002dd4: 1a9b subs r3, r3, r2 - 8002dd6: 009b lsls r3, r3, #2 - 8002dd8: 4413 add r3, r2 - 8002dda: 4a23 ldr r2, [pc, #140] @ (8002e68 ) - 8002ddc: fba2 2303 umull r2, r3, r2, r3 - 8002de0: 08db lsrs r3, r3, #3 - 8002de2: 4618 mov r0, r3 - 8002de4: f7fe fb4e bl 8001484 - taskEXIT_CRITICAL(); - 8002de8: f00a fb28 bl 800d43c -// osDelay(1); - HAL_GPIO_WritePin(RV_LV_SHOCK_GPIO_Port, RV_LV_SHOCK_Pin, GPIO_PIN_SET); - 8002dec: 2201 movs r2, #1 - 8002dee: f44f 7100 mov.w r1, #512 @ 0x200 - 8002df2: 481c ldr r0, [pc, #112] @ (8002e64 ) - 8002df4: f004 fd06 bl 8007804 + 8002e4e: 687b ldr r3, [r7, #4] + 8002e50: f893 303b ldrb.w r3, [r3, #59] @ 0x3b + 8002e54: 60fb str r3, [r7, #12] + __HAL_TIM_SET_COUNTER(&htim11, 0); + 8002e56: 4b1e ldr r3, [pc, #120] @ (8002ed0 ) + 8002e58: 681b ldr r3, [r3, #0] + 8002e5a: 2200 movs r2, #0 + 8002e5c: 625a str r2, [r3, #36] @ 0x24 + __HAL_TIM_SET_COMPARE(&htim11, TIM_CHANNEL_1, 30-shock_time); //установка задержки перед импульсом + 8002e5e: 4b1c ldr r3, [pc, #112] @ (8002ed0 ) + 8002e60: 681b ldr r3, [r3, #0] + 8002e62: 68fa ldr r2, [r7, #12] + 8002e64: f1c2 021e rsb r2, r2, #30 + 8002e68: 635a str r2, [r3, #52] @ 0x34 + TIM11->CR1 |= TIM_CR1_CEN; + 8002e6a: 4b1a ldr r3, [pc, #104] @ (8002ed4 ) + 8002e6c: 681b ldr r3, [r3, #0] + 8002e6e: 4a19 ldr r2, [pc, #100] @ (8002ed4 ) + 8002e70: f043 0301 orr.w r3, r3, #1 + 8002e74: 6013 str r3, [r2, #0] } break; - 8002df8: e02e b.n 8002e58 + 8002e76: e022 b.n 8002ebe //Релаксация tip и coil притянуты к земле case lv_sub_relax: { HAL_GPIO_WritePin(RV_LV_TIP_TO_GND_GPIO_Port, RV_LV_TIP_TO_GND_Pin, GPIO_PIN_SET); - 8002dfa: 2201 movs r2, #1 - 8002dfc: 2108 movs r1, #8 - 8002dfe: 4818 ldr r0, [pc, #96] @ (8002e60 ) - 8002e00: f004 fd00 bl 8007804 + 8002e78: 2201 movs r2, #1 + 8002e7a: 2108 movs r1, #8 + 8002e7c: 4812 ldr r0, [pc, #72] @ (8002ec8 ) + 8002e7e: f004 fdeb bl 8007a58 HAL_GPIO_WritePin(RV_LV_COIL_TO_GND_GPIO_Port, RV_LV_COIL_TO_GND_Pin, GPIO_PIN_SET); - 8002e04: 2201 movs r2, #1 - 8002e06: 2104 movs r1, #4 - 8002e08: 4815 ldr r0, [pc, #84] @ (8002e60 ) - 8002e0a: f004 fcfb bl 8007804 + 8002e82: 2201 movs r2, #1 + 8002e84: 2104 movs r1, #4 + 8002e86: 4810 ldr r0, [pc, #64] @ (8002ec8 ) + 8002e88: f004 fde6 bl 8007a58 HAL_GPIO_WritePin(RV_LV_DIS_GPIO_Port, RV_LV_DIS_Pin, GPIO_PIN_SET); - 8002e0e: 2201 movs r2, #1 - 8002e10: 2102 movs r1, #2 - 8002e12: 4813 ldr r0, [pc, #76] @ (8002e60 ) - 8002e14: f004 fcf6 bl 8007804 - HAL_GPIO_WritePin(RV_LV_SHOCK_GPIO_Port, RV_LV_SHOCK_Pin, GPIO_PIN_SET); - 8002e18: 2201 movs r2, #1 - 8002e1a: f44f 7100 mov.w r1, #512 @ 0x200 - 8002e1e: 4811 ldr r0, [pc, #68] @ (8002e64 ) - 8002e20: f004 fcf0 bl 8007804 + 8002e8c: 2201 movs r2, #1 + 8002e8e: 2102 movs r1, #2 + 8002e90: 480d ldr r0, [pc, #52] @ (8002ec8 ) + 8002e92: f004 fde1 bl 8007a58 osDelay(20); - 8002e24: 2014 movs r0, #20 - 8002e26: f009 fb82 bl 800c52e + 8002e96: 2014 movs r0, #20 + 8002e98: f009 fe03 bl 800caa2 } break; - 8002e2a: e015 b.n 8002e58 + 8002e9c: e00f b.n 8002ebe //Разряд без всякого вмешательства tip и coil свободны идёт разряд(необязательный режим) case lv_sub_discharge: { HAL_GPIO_WritePin(RV_LV_TIP_TO_GND_GPIO_Port, RV_LV_TIP_TO_GND_Pin, GPIO_PIN_RESET); - 8002e2c: 2200 movs r2, #0 - 8002e2e: 2108 movs r1, #8 - 8002e30: 480b ldr r0, [pc, #44] @ (8002e60 ) - 8002e32: f004 fce7 bl 8007804 + 8002e9e: 2200 movs r2, #0 + 8002ea0: 2108 movs r1, #8 + 8002ea2: 4809 ldr r0, [pc, #36] @ (8002ec8 ) + 8002ea4: f004 fdd8 bl 8007a58 HAL_GPIO_WritePin(RV_LV_COIL_TO_GND_GPIO_Port, RV_LV_COIL_TO_GND_Pin, GPIO_PIN_RESET); - 8002e36: 2200 movs r2, #0 - 8002e38: 2104 movs r1, #4 - 8002e3a: 4809 ldr r0, [pc, #36] @ (8002e60 ) - 8002e3c: f004 fce2 bl 8007804 + 8002ea8: 2200 movs r2, #0 + 8002eaa: 2104 movs r1, #4 + 8002eac: 4806 ldr r0, [pc, #24] @ (8002ec8 ) + 8002eae: f004 fdd3 bl 8007a58 HAL_GPIO_WritePin(RV_LV_DIS_GPIO_Port, RV_LV_DIS_Pin, GPIO_PIN_RESET); - 8002e40: 2200 movs r2, #0 - 8002e42: 2102 movs r1, #2 - 8002e44: 4806 ldr r0, [pc, #24] @ (8002e60 ) - 8002e46: f004 fcdd bl 8007804 - HAL_GPIO_WritePin(RV_LV_SHOCK_GPIO_Port, RV_LV_SHOCK_Pin, GPIO_PIN_SET); - 8002e4a: 2201 movs r2, #1 - 8002e4c: f44f 7100 mov.w r1, #512 @ 0x200 - 8002e50: 4804 ldr r0, [pc, #16] @ (8002e64 ) - 8002e52: f004 fcd7 bl 8007804 + 8002eb2: 2200 movs r2, #0 + 8002eb4: 2102 movs r1, #2 + 8002eb6: 4804 ldr r0, [pc, #16] @ (8002ec8 ) + 8002eb8: f004 fdce bl 8007a58 } break; - 8002e56: bf00 nop + 8002ebc: bf00 nop } } - 8002e58: bf00 nop - 8002e5a: 3710 adds r7, #16 - 8002e5c: 46bd mov sp, r7 - 8002e5e: bd80 pop {r7, pc} - 8002e60: 40021000 .word 0x40021000 - 8002e64: 40020400 .word 0x40020400 - 8002e68: cccccccd .word 0xcccccccd + 8002ebe: bf00 nop + 8002ec0: 3710 adds r7, #16 + 8002ec2: 46bd mov sp, r7 + 8002ec4: bd80 pop {r7, pc} + 8002ec6: bf00 nop + 8002ec8: 40021000 .word 0x40021000 + 8002ecc: cccccccd .word 0xcccccccd + 8002ed0: 2000223c .word 0x2000223c + 8002ed4: 40014800 .word 0x40014800 -08002e6c : +08002ed8 : //единое управление enable пинами void hv_en_control(bool en_RV, bool en_SCV, bool en_CAN) { - 8002e6c: b580 push {r7, lr} - 8002e6e: b082 sub sp, #8 - 8002e70: af00 add r7, sp, #0 - 8002e72: 4603 mov r3, r0 - 8002e74: 71fb strb r3, [r7, #7] - 8002e76: 460b mov r3, r1 - 8002e78: 71bb strb r3, [r7, #6] - 8002e7a: 4613 mov r3, r2 - 8002e7c: 717b strb r3, [r7, #5] + 8002ed8: b580 push {r7, lr} + 8002eda: b082 sub sp, #8 + 8002edc: af00 add r7, sp, #0 + 8002ede: 4603 mov r3, r0 + 8002ee0: 71fb strb r3, [r7, #7] + 8002ee2: 460b mov r3, r1 + 8002ee4: 71bb strb r3, [r7, #6] + 8002ee6: 4613 mov r3, r2 + 8002ee8: 717b strb r3, [r7, #5] hv_en_rv(en_RV); - 8002e7e: 79fb ldrb r3, [r7, #7] - 8002e80: 4618 mov r0, r3 - 8002e82: f000 f80d bl 8002ea0 + 8002eea: 79fb ldrb r3, [r7, #7] + 8002eec: 4618 mov r0, r3 + 8002eee: f000 f80d bl 8002f0c hv_en_scv(en_SCV); - 8002e86: 79bb ldrb r3, [r7, #6] - 8002e88: 4618 mov r0, r3 - 8002e8a: f000 f823 bl 8002ed4 + 8002ef2: 79bb ldrb r3, [r7, #6] + 8002ef4: 4618 mov r0, r3 + 8002ef6: f000 f823 bl 8002f40 hv_en_can(en_CAN); - 8002e8e: 797b ldrb r3, [r7, #5] - 8002e90: 4618 mov r0, r3 - 8002e92: f000 f839 bl 8002f08 + 8002efa: 797b ldrb r3, [r7, #5] + 8002efc: 4618 mov r0, r3 + 8002efe: f000 f839 bl 8002f74 } - 8002e96: bf00 nop - 8002e98: 3708 adds r7, #8 - 8002e9a: 46bd mov sp, r7 - 8002e9c: bd80 pop {r7, pc} + 8002f02: bf00 nop + 8002f04: 3708 adds r7, #8 + 8002f06: 46bd mov sp, r7 + 8002f08: bd80 pop {r7, pc} ... -08002ea0 : +08002f0c : void hv_en_rv(bool state) { - 8002ea0: b580 push {r7, lr} - 8002ea2: b082 sub sp, #8 - 8002ea4: af00 add r7, sp, #0 - 8002ea6: 4603 mov r3, r0 - 8002ea8: 71fb strb r3, [r7, #7] + 8002f0c: b580 push {r7, lr} + 8002f0e: b082 sub sp, #8 + 8002f10: af00 add r7, sp, #0 + 8002f12: 4603 mov r3, r0 + 8002f14: 71fb strb r3, [r7, #7] if(state) - 8002eaa: 79fb ldrb r3, [r7, #7] - 8002eac: 2b00 cmp r3, #0 - 8002eae: d005 beq.n 8002ebc + 8002f16: 79fb ldrb r3, [r7, #7] + 8002f18: 2b00 cmp r3, #0 + 8002f1a: d005 beq.n 8002f28 HAL_GPIO_WritePin(HV_EN_RV_GPIO_Port, HV_EN_RV_Pin, GPIO_PIN_RESET); - 8002eb0: 2200 movs r2, #0 - 8002eb2: 2110 movs r1, #16 - 8002eb4: 4806 ldr r0, [pc, #24] @ (8002ed0 ) - 8002eb6: f004 fca5 bl 8007804 + 8002f1c: 2200 movs r2, #0 + 8002f1e: 2110 movs r1, #16 + 8002f20: 4806 ldr r0, [pc, #24] @ (8002f3c ) + 8002f22: f004 fd99 bl 8007a58 else HAL_GPIO_WritePin(HV_EN_RV_GPIO_Port, HV_EN_RV_Pin, GPIO_PIN_SET); } - 8002eba: e004 b.n 8002ec6 + 8002f26: e004 b.n 8002f32 HAL_GPIO_WritePin(HV_EN_RV_GPIO_Port, HV_EN_RV_Pin, GPIO_PIN_SET); - 8002ebc: 2201 movs r2, #1 - 8002ebe: 2110 movs r1, #16 - 8002ec0: 4803 ldr r0, [pc, #12] @ (8002ed0 ) - 8002ec2: f004 fc9f bl 8007804 + 8002f28: 2201 movs r2, #1 + 8002f2a: 2110 movs r1, #16 + 8002f2c: 4803 ldr r0, [pc, #12] @ (8002f3c ) + 8002f2e: f004 fd93 bl 8007a58 } - 8002ec6: bf00 nop - 8002ec8: 3708 adds r7, #8 - 8002eca: 46bd mov sp, r7 - 8002ecc: bd80 pop {r7, pc} - 8002ece: bf00 nop - 8002ed0: 40020400 .word 0x40020400 + 8002f32: bf00 nop + 8002f34: 3708 adds r7, #8 + 8002f36: 46bd mov sp, r7 + 8002f38: bd80 pop {r7, pc} + 8002f3a: bf00 nop + 8002f3c: 40020400 .word 0x40020400 -08002ed4 : +08002f40 : void hv_en_scv(bool state) { - 8002ed4: b580 push {r7, lr} - 8002ed6: b082 sub sp, #8 - 8002ed8: af00 add r7, sp, #0 - 8002eda: 4603 mov r3, r0 - 8002edc: 71fb strb r3, [r7, #7] + 8002f40: b580 push {r7, lr} + 8002f42: b082 sub sp, #8 + 8002f44: af00 add r7, sp, #0 + 8002f46: 4603 mov r3, r0 + 8002f48: 71fb strb r3, [r7, #7] if(state) - 8002ede: 79fb ldrb r3, [r7, #7] - 8002ee0: 2b00 cmp r3, #0 - 8002ee2: d005 beq.n 8002ef0 + 8002f4a: 79fb ldrb r3, [r7, #7] + 8002f4c: 2b00 cmp r3, #0 + 8002f4e: d005 beq.n 8002f5c HAL_GPIO_WritePin(HV_EN_SCV_GPIO_Port, HV_EN_SCV_Pin, GPIO_PIN_RESET); - 8002ee4: 2200 movs r2, #0 - 8002ee6: 2140 movs r1, #64 @ 0x40 - 8002ee8: 4806 ldr r0, [pc, #24] @ (8002f04 ) - 8002eea: f004 fc8b bl 8007804 + 8002f50: 2200 movs r2, #0 + 8002f52: 2140 movs r1, #64 @ 0x40 + 8002f54: 4806 ldr r0, [pc, #24] @ (8002f70 ) + 8002f56: f004 fd7f bl 8007a58 else HAL_GPIO_WritePin(HV_EN_SCV_GPIO_Port, HV_EN_SCV_Pin, GPIO_PIN_SET); } - 8002eee: e004 b.n 8002efa + 8002f5a: e004 b.n 8002f66 HAL_GPIO_WritePin(HV_EN_SCV_GPIO_Port, HV_EN_SCV_Pin, GPIO_PIN_SET); - 8002ef0: 2201 movs r2, #1 - 8002ef2: 2140 movs r1, #64 @ 0x40 - 8002ef4: 4803 ldr r0, [pc, #12] @ (8002f04 ) - 8002ef6: f004 fc85 bl 8007804 + 8002f5c: 2201 movs r2, #1 + 8002f5e: 2140 movs r1, #64 @ 0x40 + 8002f60: 4803 ldr r0, [pc, #12] @ (8002f70 ) + 8002f62: f004 fd79 bl 8007a58 } - 8002efa: bf00 nop - 8002efc: 3708 adds r7, #8 - 8002efe: 46bd mov sp, r7 - 8002f00: bd80 pop {r7, pc} - 8002f02: bf00 nop - 8002f04: 40020c00 .word 0x40020c00 + 8002f66: bf00 nop + 8002f68: 3708 adds r7, #8 + 8002f6a: 46bd mov sp, r7 + 8002f6c: bd80 pop {r7, pc} + 8002f6e: bf00 nop + 8002f70: 40020c00 .word 0x40020c00 -08002f08 : +08002f74 : void hv_en_can(bool state) { - 8002f08: b580 push {r7, lr} - 8002f0a: b082 sub sp, #8 - 8002f0c: af00 add r7, sp, #0 - 8002f0e: 4603 mov r3, r0 - 8002f10: 71fb strb r3, [r7, #7] + 8002f74: b580 push {r7, lr} + 8002f76: b082 sub sp, #8 + 8002f78: af00 add r7, sp, #0 + 8002f7a: 4603 mov r3, r0 + 8002f7c: 71fb strb r3, [r7, #7] if(state) - 8002f12: 79fb ldrb r3, [r7, #7] - 8002f14: 2b00 cmp r3, #0 - 8002f16: d005 beq.n 8002f24 + 8002f7e: 79fb ldrb r3, [r7, #7] + 8002f80: 2b00 cmp r3, #0 + 8002f82: d005 beq.n 8002f90 HAL_GPIO_WritePin(HV_EN_CAN_GPIO_Port, HV_EN_CAN_Pin, GPIO_PIN_RESET); - 8002f18: 2200 movs r2, #0 - 8002f1a: 2108 movs r1, #8 - 8002f1c: 4806 ldr r0, [pc, #24] @ (8002f38 ) - 8002f1e: f004 fc71 bl 8007804 + 8002f84: 2200 movs r2, #0 + 8002f86: 2108 movs r1, #8 + 8002f88: 4806 ldr r0, [pc, #24] @ (8002fa4 ) + 8002f8a: f004 fd65 bl 8007a58 else HAL_GPIO_WritePin(HV_EN_CAN_GPIO_Port, HV_EN_CAN_Pin, GPIO_PIN_SET); } - 8002f22: e004 b.n 8002f2e + 8002f8e: e004 b.n 8002f9a HAL_GPIO_WritePin(HV_EN_CAN_GPIO_Port, HV_EN_CAN_Pin, GPIO_PIN_SET); - 8002f24: 2201 movs r2, #1 - 8002f26: 2108 movs r1, #8 - 8002f28: 4803 ldr r0, [pc, #12] @ (8002f38 ) - 8002f2a: f004 fc6b bl 8007804 + 8002f90: 2201 movs r2, #1 + 8002f92: 2108 movs r1, #8 + 8002f94: 4803 ldr r0, [pc, #12] @ (8002fa4 ) + 8002f96: f004 fd5f bl 8007a58 } - 8002f2e: bf00 nop - 8002f30: 3708 adds r7, #8 - 8002f32: 46bd mov sp, r7 - 8002f34: bd80 pop {r7, pc} - 8002f36: bf00 nop - 8002f38: 40020c00 .word 0x40020c00 + 8002f9a: bf00 nop + 8002f9c: 3708 adds r7, #8 + 8002f9e: 46bd mov sp, r7 + 8002fa0: bd80 pop {r7, pc} + 8002fa2: bf00 nop + 8002fa4: 40020c00 .word 0x40020c00 -08002f3c
: +08002fa8 : + +void delay_critical(uint8_t delay) +{ + 8002fa8: b580 push {r7, lr} + 8002faa: b084 sub sp, #16 + 8002fac: af00 add r7, sp, #0 + 8002fae: 4603 mov r3, r0 + 8002fb0: 71fb strb r3, [r7, #7] + uint32_t shock_time = (uint32_t) (delay); + 8002fb2: 79fb ldrb r3, [r7, #7] + 8002fb4: 60fb str r3, [r7, #12] + taskENTER_CRITICAL(); + 8002fb6: f00a fcc7 bl 800d948 + delay_us((shock_time*125)/10); + 8002fba: 68fa ldr r2, [r7, #12] + 8002fbc: 4613 mov r3, r2 + 8002fbe: 015b lsls r3, r3, #5 + 8002fc0: 1a9b subs r3, r3, r2 + 8002fc2: 009b lsls r3, r3, #2 + 8002fc4: 4413 add r3, r2 + 8002fc6: 4a06 ldr r2, [pc, #24] @ (8002fe0 ) + 8002fc8: fba2 2303 umull r2, r3, r2, r3 + 8002fcc: 08db lsrs r3, r3, #3 + 8002fce: 4618 mov r0, r3 + 8002fd0: f7fe fa56 bl 8001480 + taskEXIT_CRITICAL(); + 8002fd4: f00a fcea bl 800d9ac +} + 8002fd8: bf00 nop + 8002fda: 3710 adds r7, #16 + 8002fdc: 46bd mov sp, r7 + 8002fde: bd80 pop {r7, pc} + 8002fe0: cccccccd .word 0xcccccccd + +08002fe4
: /** * @brief The application entry point. * @retval int */ int main(void) { - 8002f3c: b580 push {r7, lr} - 8002f3e: af00 add r7, sp, #0 + 8002fe4: b580 push {r7, lr} + 8002fe6: af00 add r7, sp, #0 /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); - 8002f40: f002 fd50 bl 80059e4 + 8002fe8: f002 fe26 bl 8005c38 /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); - 8002f44: f000 f894 bl 8003070 + 8002fec: f000 f89c bl 8003128 /* USER CODE BEGIN SysInit */ control_init(); - 8002f48: f7fe fa42 bl 80013d0 + 8002ff0: f7fe f9ec bl 80013cc /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); - 8002f4c: f7fe fcc4 bl 80018d8 + 8002ff4: f7fe fc7a bl 80018ec MX_DMA_Init(); - 8002f50: f7fe fab0 bl 80014b4 + 8002ff8: f7fe fa5a bl 80014b0 MX_SPI2_Init(); - 8002f54: f000 ff7e bl 8003e54 + 8002ffc: f000 ffc2 bl 8003f84 MX_SPI3_Init(); - 8002f58: f000 ffb2 bl 8003ec0 + 8003000: f000 fff6 bl 8003ff0 MX_TIM3_Init(); - 8002f5c: f001 fb6c bl 8004638 + 8003004: f001 fbb0 bl 8004768 MX_TIM4_Init(); - 8002f60: f001 fbf6 bl 8004750 + 8003008: f001 fc3a bl 8004880 MX_USART1_UART_Init(); - 8002f64: f001 fed0 bl 8004d08 + 800300c: f001 ffa6 bl 8004f5c MX_ADC1_Init(); - 8002f68: f7fe f806 bl 8000f78 + 8003010: f7fd ffb2 bl 8000f78 MX_TIM1_Init(); - 8002f6c: f001 fa14 bl 8004398 + 8003014: f001 fa58 bl 80044c8 MX_TIM2_Init(); - 8002f70: f001 fad6 bl 8004520 + 8003018: f001 fb1a bl 8004650 MX_TIM9_Init(); - 8002f74: f001 fcae bl 80048d4 + 800301c: f001 fcf2 bl 8004a04 MX_TIM14_Init(); - 8002f78: f001 fd0e bl 8004998 + 8003020: f001 fda8 bl 8004b74 MX_TIM6_Init(); - 8002f7c: f001 fc74 bl 8004868 + 8003024: f001 fcb8 bl 8004998 + MX_TIM11_Init(); + 8003028: f001 fd4e bl 8004ac8 /* USER CODE BEGIN 2 */ hv_pwm(false); - 8002f80: 2000 movs r0, #0 - 8002f82: f7ff fad9 bl 8002538 + 800302c: 2000 movs r0, #0 + 800302e: f7ff faa7 bl 8002580 hv_power(false); - 8002f86: 2000 movs r0, #0 - 8002f88: f7ff fd70 bl 8002a6c + 8003032: 2000 movs r0, #0 + 8003034: f7ff fd4e bl 8002ad4 hv_ll_control(z_state, z_state, z_state); - 8002f8c: 2202 movs r2, #2 - 8002f8e: 2102 movs r1, #2 - 8002f90: 2002 movs r0, #2 - 8002f92: f7ff fd51 bl 8002a38 + 8003038: 2202 movs r2, #2 + 800303a: 2102 movs r1, #2 + 800303c: 2002 movs r0, #2 + 800303e: f7ff fd2f bl 8002aa0 HAL_Delay(20); - 8002f96: 2014 movs r0, #20 - 8002f98: f002 fd66 bl 8005a68 + 8003042: 2014 movs r0, #20 + 8003044: f002 fe3a bl 8005cbc relay_all_control(false, false, false); - 8002f9c: 2200 movs r2, #0 - 8002f9e: 2100 movs r1, #0 - 8002fa0: 2000 movs r0, #0 - 8002fa2: f7ff fcdb bl 800295c + 8003048: 2200 movs r2, #0 + 800304a: 2100 movs r1, #0 + 800304c: 2000 movs r0, #0 + 800304e: f7ff fcb9 bl 80029c4 //чтобы не пробило перевели в разамкнутое состояние все полумосты ble_control(&Control); - 8002fa6: 482a ldr r0, [pc, #168] @ (8003050 ) - 8002fa8: f001 ffb6 bl 8004f18 + 8003052: 482c ldr r0, [pc, #176] @ (8003104 ) + 8003054: f002 f88a bl 800516c HAL_TIM_Base_Start_IT(&htim6);// Таймер съёма данных - 8002fac: 4829 ldr r0, [pc, #164] @ (8003054 ) - 8002fae: f005 ffd7 bl 8008f60 + 8003058: 482b ldr r0, [pc, #172] @ (8003108 ) + 800305a: f006 f8ab bl 80091b4 // высокое напряжение таймер HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_4); - 8002fb2: 210c movs r1, #12 - 8002fb4: 4828 ldr r0, [pc, #160] @ (8003058 ) - 8002fb6: f006 f9bb bl 8009330 + 800305e: 210c movs r1, #12 + 8003060: 482a ldr r0, [pc, #168] @ (800310c ) + 8003062: f006 fa8f bl 8009584 // светодиод HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); - 8002fba: 2100 movs r1, #0 - 8002fbc: 4826 ldr r0, [pc, #152] @ (8003058 ) - 8002fbe: f006 f9b7 bl 8009330 + 8003066: 2100 movs r1, #0 + 8003068: 4828 ldr r0, [pc, #160] @ (800310c ) + 800306a: f006 fa8b bl 8009584 HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2); - 8002fc2: 2104 movs r1, #4 - 8002fc4: 4824 ldr r0, [pc, #144] @ (8003058 ) - 8002fc6: f006 f9b3 bl 8009330 + 800306e: 2104 movs r1, #4 + 8003070: 4826 ldr r0, [pc, #152] @ (800310c ) + 8003072: f006 fa87 bl 8009584 HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3); - 8002fca: 2108 movs r1, #8 - 8002fcc: 4822 ldr r0, [pc, #136] @ (8003058 ) - 8002fce: f006 f9af bl 8009330 + 8003076: 2108 movs r1, #8 + 8003078: 4824 ldr r0, [pc, #144] @ (800310c ) + 800307a: f006 fa83 bl 8009584 // RV таймер накачки HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2); - 8002fd2: 2104 movs r1, #4 - 8002fd4: 4821 ldr r0, [pc, #132] @ (800305c ) - 8002fd6: f006 f9ab bl 8009330 + 800307e: 2104 movs r1, #4 + 8003080: 4823 ldr r0, [pc, #140] @ (8003110 ) + 8003082: f006 fa7f bl 8009584 HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); - 8002fda: 2108 movs r1, #8 - 8002fdc: 481f ldr r0, [pc, #124] @ (800305c ) - 8002fde: f006 f9a7 bl 8009330 + 8003086: 2108 movs r1, #8 + 8003088: 4821 ldr r0, [pc, #132] @ (8003110 ) + 800308a: f006 fa7b bl 8009584 HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4); - 8002fe2: 210c movs r1, #12 - 8002fe4: 481d ldr r0, [pc, #116] @ (800305c ) - 8002fe6: f006 f9a3 bl 8009330 + 800308e: 210c movs r1, #12 + 8003090: 481f ldr r0, [pc, #124] @ (8003110 ) + 8003092: f006 fa77 bl 8009584 // RA таймер накачки HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1); - 8002fea: 2100 movs r1, #0 - 8002fec: 481c ldr r0, [pc, #112] @ (8003060 ) - 8002fee: f006 f99f bl 8009330 + 8003096: 2100 movs r1, #0 + 8003098: 481e ldr r0, [pc, #120] @ (8003114 ) + 800309a: f006 fa73 bl 8009584 HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2); - 8002ff2: 2104 movs r1, #4 - 8002ff4: 481a ldr r0, [pc, #104] @ (8003060 ) - 8002ff6: f006 f99b bl 8009330 + 800309e: 2104 movs r1, #4 + 80030a0: 481c ldr r0, [pc, #112] @ (8003114 ) + 80030a2: f006 fa6f bl 8009584 HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3); - 8002ffa: 2108 movs r1, #8 - 8002ffc: 4818 ldr r0, [pc, #96] @ (8003060 ) - 8002ffe: f006 f997 bl 8009330 + 80030a6: 2108 movs r1, #8 + 80030a8: 481a ldr r0, [pc, #104] @ (8003114 ) + 80030aa: f006 fa6b bl 8009584 // LV таймер накачки HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); - 8003002: 2100 movs r1, #0 - 8003004: 4817 ldr r0, [pc, #92] @ (8003064 ) - 8003006: f006 f993 bl 8009330 + 80030ae: 2100 movs r1, #0 + 80030b0: 4819 ldr r0, [pc, #100] @ (8003118 ) + 80030b2: f006 fa67 bl 8009584 HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2); - 800300a: 2104 movs r1, #4 - 800300c: 4815 ldr r0, [pc, #84] @ (8003064 ) - 800300e: f006 f98f bl 8009330 + 80030b6: 2104 movs r1, #4 + 80030b8: 4817 ldr r0, [pc, #92] @ (8003118 ) + 80030ba: f006 fa63 bl 8009584 HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3); - 8003012: 2108 movs r1, #8 - 8003014: 4813 ldr r0, [pc, #76] @ (8003064 ) - 8003016: f006 f98b bl 8009330 + 80030be: 2108 movs r1, #8 + 80030c0: 4815 ldr r0, [pc, #84] @ (8003118 ) + 80030c2: f006 fa5f bl 8009584 // Таймер Звука HAL_TIM_PWM_Start(&htim9, TIM_CHANNEL_2); - 800301a: 2104 movs r1, #4 - 800301c: 4812 ldr r0, [pc, #72] @ (8003068 ) - 800301e: f006 f987 bl 8009330 + 80030c6: 2104 movs r1, #4 + 80030c8: 4814 ldr r0, [pc, #80] @ (800311c ) + 80030ca: f006 fa5b bl 8009584 // fixme добавить ещё таймеров + HAL_TIM_OnePulse_Start(&htim11, TIM_CHANNEL_1); + 80030ce: 2100 movs r1, #0 + 80030d0: 4813 ldr r0, [pc, #76] @ (8003120 ) + 80030d2: f006 fd0d bl 8009af0 //Включили питание АЦП HAL_GPIO_WritePin(INA_PWR_GPIO_Port, INA_PWR_Pin, SET); - 8003022: 2201 movs r2, #1 - 8003024: 2180 movs r1, #128 @ 0x80 - 8003026: 4811 ldr r0, [pc, #68] @ (800306c ) - 8003028: f004 fbec bl 8007804 + 80030d6: 2201 movs r2, #1 + 80030d8: 2180 movs r1, #128 @ 0x80 + 80030da: 4812 ldr r0, [pc, #72] @ (8003124 ) + 80030dc: f004 fcbc bl 8007a58 HAL_GPIO_WritePin(DOP_PWR_GPIO_Port, DOP_PWR_Pin, SET); - 800302c: 2201 movs r2, #1 - 800302e: f44f 6180 mov.w r1, #1024 @ 0x400 - 8003032: 480e ldr r0, [pc, #56] @ (800306c ) - 8003034: f004 fbe6 bl 8007804 + 80030e0: 2201 movs r2, #1 + 80030e2: f44f 6180 mov.w r1, #1024 @ 0x400 + 80030e6: 480f ldr r0, [pc, #60] @ (8003124 ) + 80030e8: f004 fcb6 bl 8007a58 HAL_GPIO_WritePin(COMP_PWR_GPIO_Port, COMP_PWR_Pin, SET); - 8003038: 2201 movs r2, #1 - 800303a: f44f 7180 mov.w r1, #256 @ 0x100 - 800303e: 480b ldr r0, [pc, #44] @ (800306c ) - 8003040: f004 fbe0 bl 8007804 + 80030ec: 2201 movs r2, #1 + 80030ee: f44f 7180 mov.w r1, #256 @ 0x100 + 80030f2: 480c ldr r0, [pc, #48] @ (8003124 ) + 80030f4: f004 fcb0 bl 8007a58 /* USER CODE END 2 */ /* Call init function for freertos objects (in cmsis_os2.c) */ MX_FREERTOS_Init(); - 8003044: f7fe fafc bl 8001640 + 80030f8: f7fe faa0 bl 800163c /* Start scheduler */ osKernelStart(); - 8003048: f009 fa1e bl 800c488 + 80030fc: f009 fc7e bl 800c9fc /* We should never get here as control is now taken by the scheduler */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) - 800304c: bf00 nop - 800304e: e7fd b.n 800304c - 8003050: 200000f0 .word 0x200000f0 - 8003054: 200021ac .word 0x200021ac - 8003058: 2000208c .word 0x2000208c - 800305c: 200020d4 .word 0x200020d4 - 8003060: 20002164 .word 0x20002164 - 8003064: 2000211c .word 0x2000211c - 8003068: 200021f4 .word 0x200021f4 - 800306c: 40021000 .word 0x40021000 + 8003100: bf00 nop + 8003102: e7fd b.n 8003100 + 8003104: 200000f0 .word 0x200000f0 + 8003108: 200021ac .word 0x200021ac + 800310c: 2000208c .word 0x2000208c + 8003110: 200020d4 .word 0x200020d4 + 8003114: 20002164 .word 0x20002164 + 8003118: 2000211c .word 0x2000211c + 800311c: 200021f4 .word 0x200021f4 + 8003120: 2000223c .word 0x2000223c + 8003124: 40021000 .word 0x40021000 -08003070 : +08003128 : /** * @brief System Clock Configuration * @retval None */ void SystemClock_Config(void) { - 8003070: b580 push {r7, lr} - 8003072: b094 sub sp, #80 @ 0x50 - 8003074: af00 add r7, sp, #0 + 8003128: b580 push {r7, lr} + 800312a: b094 sub sp, #80 @ 0x50 + 800312c: af00 add r7, sp, #0 RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - 8003076: f107 031c add.w r3, r7, #28 - 800307a: 2234 movs r2, #52 @ 0x34 - 800307c: 2100 movs r1, #0 - 800307e: 4618 mov r0, r3 - 8003080: f00a fc98 bl 800d9b4 + 800312e: f107 031c add.w r3, r7, #28 + 8003132: 2234 movs r2, #52 @ 0x34 + 8003134: 2100 movs r1, #0 + 8003136: 4618 mov r0, r3 + 8003138: f00a fef4 bl 800df24 RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - 8003084: f107 0308 add.w r3, r7, #8 - 8003088: 2200 movs r2, #0 - 800308a: 601a str r2, [r3, #0] - 800308c: 605a str r2, [r3, #4] - 800308e: 609a str r2, [r3, #8] - 8003090: 60da str r2, [r3, #12] - 8003092: 611a str r2, [r3, #16] + 800313c: f107 0308 add.w r3, r7, #8 + 8003140: 2200 movs r2, #0 + 8003142: 601a str r2, [r3, #0] + 8003144: 605a str r2, [r3, #4] + 8003146: 609a str r2, [r3, #8] + 8003148: 60da str r2, [r3, #12] + 800314a: 611a str r2, [r3, #16] /** Configure the main internal regulator output voltage */ __HAL_RCC_PWR_CLK_ENABLE(); - 8003094: 2300 movs r3, #0 - 8003096: 607b str r3, [r7, #4] - 8003098: 4b28 ldr r3, [pc, #160] @ (800313c ) - 800309a: 6c1b ldr r3, [r3, #64] @ 0x40 - 800309c: 4a27 ldr r2, [pc, #156] @ (800313c ) - 800309e: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 - 80030a2: 6413 str r3, [r2, #64] @ 0x40 - 80030a4: 4b25 ldr r3, [pc, #148] @ (800313c ) - 80030a6: 6c1b ldr r3, [r3, #64] @ 0x40 - 80030a8: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 80030ac: 607b str r3, [r7, #4] - 80030ae: 687b ldr r3, [r7, #4] + 800314c: 2300 movs r3, #0 + 800314e: 607b str r3, [r7, #4] + 8003150: 4b28 ldr r3, [pc, #160] @ (80031f4 ) + 8003152: 6c1b ldr r3, [r3, #64] @ 0x40 + 8003154: 4a27 ldr r2, [pc, #156] @ (80031f4 ) + 8003156: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 800315a: 6413 str r3, [r2, #64] @ 0x40 + 800315c: 4b25 ldr r3, [pc, #148] @ (80031f4 ) + 800315e: 6c1b ldr r3, [r3, #64] @ 0x40 + 8003160: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8003164: 607b str r3, [r7, #4] + 8003166: 687b ldr r3, [r7, #4] __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); - 80030b0: 2300 movs r3, #0 - 80030b2: 603b str r3, [r7, #0] - 80030b4: 4b22 ldr r3, [pc, #136] @ (8003140 ) - 80030b6: 681b ldr r3, [r3, #0] - 80030b8: 4a21 ldr r2, [pc, #132] @ (8003140 ) - 80030ba: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 80030be: 6013 str r3, [r2, #0] - 80030c0: 4b1f ldr r3, [pc, #124] @ (8003140 ) - 80030c2: 681b ldr r3, [r3, #0] - 80030c4: f403 4340 and.w r3, r3, #49152 @ 0xc000 - 80030c8: 603b str r3, [r7, #0] - 80030ca: 683b ldr r3, [r7, #0] + 8003168: 2300 movs r3, #0 + 800316a: 603b str r3, [r7, #0] + 800316c: 4b22 ldr r3, [pc, #136] @ (80031f8 ) + 800316e: 681b ldr r3, [r3, #0] + 8003170: 4a21 ldr r2, [pc, #132] @ (80031f8 ) + 8003172: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 8003176: 6013 str r3, [r2, #0] + 8003178: 4b1f ldr r3, [pc, #124] @ (80031f8 ) + 800317a: 681b ldr r3, [r3, #0] + 800317c: f403 4340 and.w r3, r3, #49152 @ 0xc000 + 8003180: 603b str r3, [r7, #0] + 8003182: 683b ldr r3, [r7, #0] /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; - 80030cc: 2301 movs r3, #1 - 80030ce: 61fb str r3, [r7, #28] + 8003184: 2301 movs r3, #1 + 8003186: 61fb str r3, [r7, #28] RCC_OscInitStruct.HSEState = RCC_HSE_ON; - 80030d0: f44f 3380 mov.w r3, #65536 @ 0x10000 - 80030d4: 623b str r3, [r7, #32] + 8003188: f44f 3380 mov.w r3, #65536 @ 0x10000 + 800318c: 623b str r3, [r7, #32] RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - 80030d6: 2302 movs r3, #2 - 80030d8: 637b str r3, [r7, #52] @ 0x34 + 800318e: 2302 movs r3, #2 + 8003190: 637b str r3, [r7, #52] @ 0x34 RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - 80030da: f44f 0380 mov.w r3, #4194304 @ 0x400000 - 80030de: 63bb str r3, [r7, #56] @ 0x38 + 8003192: f44f 0380 mov.w r3, #4194304 @ 0x400000 + 8003196: 63bb str r3, [r7, #56] @ 0x38 RCC_OscInitStruct.PLL.PLLM = 8; - 80030e0: 2308 movs r3, #8 - 80030e2: 63fb str r3, [r7, #60] @ 0x3c + 8003198: 2308 movs r3, #8 + 800319a: 63fb str r3, [r7, #60] @ 0x3c RCC_OscInitStruct.PLL.PLLN = 192; - 80030e4: 23c0 movs r3, #192 @ 0xc0 - 80030e6: 643b str r3, [r7, #64] @ 0x40 + 800319c: 23c0 movs r3, #192 @ 0xc0 + 800319e: 643b str r3, [r7, #64] @ 0x40 RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV8; - 80030e8: 2308 movs r3, #8 - 80030ea: 647b str r3, [r7, #68] @ 0x44 + 80031a0: 2308 movs r3, #8 + 80031a2: 647b str r3, [r7, #68] @ 0x44 RCC_OscInitStruct.PLL.PLLQ = 2; - 80030ec: 2302 movs r3, #2 - 80030ee: 64bb str r3, [r7, #72] @ 0x48 + 80031a4: 2302 movs r3, #2 + 80031a6: 64bb str r3, [r7, #72] @ 0x48 RCC_OscInitStruct.PLL.PLLR = 2; - 80030f0: 2302 movs r3, #2 - 80030f2: 64fb str r3, [r7, #76] @ 0x4c + 80031a8: 2302 movs r3, #2 + 80031aa: 64fb str r3, [r7, #76] @ 0x4c if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - 80030f4: f107 031c add.w r3, r7, #28 - 80030f8: 4618 mov r0, r3 - 80030fa: f004 ff05 bl 8007f08 - 80030fe: 4603 mov r3, r0 - 8003100: 2b00 cmp r3, #0 - 8003102: d001 beq.n 8003108 + 80031ac: f107 031c add.w r3, r7, #28 + 80031b0: 4618 mov r0, r3 + 80031b2: f004 ffd3 bl 800815c + 80031b6: 4603 mov r3, r0 + 80031b8: 2b00 cmp r3, #0 + 80031ba: d001 beq.n 80031c0 { Error_Handler(); - 8003104: f000 f830 bl 8003168 + 80031bc: f000 f830 bl 8003220 } /** Initializes the CPU, AHB and APB buses clocks */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK - 8003108: 230f movs r3, #15 - 800310a: 60bb str r3, [r7, #8] + 80031c0: 230f movs r3, #15 + 80031c2: 60bb str r3, [r7, #8] |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - 800310c: 2302 movs r3, #2 - 800310e: 60fb str r3, [r7, #12] + 80031c4: 2302 movs r3, #2 + 80031c6: 60fb str r3, [r7, #12] RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - 8003110: 2300 movs r3, #0 - 8003112: 613b str r3, [r7, #16] + 80031c8: 2300 movs r3, #0 + 80031ca: 613b str r3, [r7, #16] RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; - 8003114: 2300 movs r3, #0 - 8003116: 617b str r3, [r7, #20] + 80031cc: 2300 movs r3, #0 + 80031ce: 617b str r3, [r7, #20] RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; - 8003118: 2300 movs r3, #0 - 800311a: 61bb str r3, [r7, #24] + 80031d0: 2300 movs r3, #0 + 80031d2: 61bb str r3, [r7, #24] if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) - 800311c: f107 0308 add.w r3, r7, #8 - 8003120: 2100 movs r1, #0 - 8003122: 4618 mov r0, r3 - 8003124: f004 fbf6 bl 8007914 - 8003128: 4603 mov r3, r0 - 800312a: 2b00 cmp r3, #0 - 800312c: d001 beq.n 8003132 + 80031d4: f107 0308 add.w r3, r7, #8 + 80031d8: 2100 movs r1, #0 + 80031da: 4618 mov r0, r3 + 80031dc: f004 fcc4 bl 8007b68 + 80031e0: 4603 mov r3, r0 + 80031e2: 2b00 cmp r3, #0 + 80031e4: d001 beq.n 80031ea { Error_Handler(); - 800312e: f000 f81b bl 8003168 + 80031e6: f000 f81b bl 8003220 } } - 8003132: bf00 nop - 8003134: 3750 adds r7, #80 @ 0x50 - 8003136: 46bd mov sp, r7 - 8003138: bd80 pop {r7, pc} - 800313a: bf00 nop - 800313c: 40023800 .word 0x40023800 - 8003140: 40007000 .word 0x40007000 + 80031ea: bf00 nop + 80031ec: 3750 adds r7, #80 @ 0x50 + 80031ee: 46bd mov sp, r7 + 80031f0: bd80 pop {r7, pc} + 80031f2: bf00 nop + 80031f4: 40023800 .word 0x40023800 + 80031f8: 40007000 .word 0x40007000 -08003144 : +080031fc : * a global variable "uwTick" used as application time base. * @param htim : TIM handle * @retval None */ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { - 8003144: b580 push {r7, lr} - 8003146: b082 sub sp, #8 - 8003148: af00 add r7, sp, #0 - 800314a: 6078 str r0, [r7, #4] + 80031fc: b580 push {r7, lr} + 80031fe: b082 sub sp, #8 + 8003200: af00 add r7, sp, #0 + 8003202: 6078 str r0, [r7, #4] /* USER CODE BEGIN Callback 0 */ /* USER CODE END Callback 0 */ if (htim->Instance == TIM12) { - 800314c: 687b ldr r3, [r7, #4] - 800314e: 681b ldr r3, [r3, #0] - 8003150: 4a04 ldr r2, [pc, #16] @ (8003164 ) - 8003152: 4293 cmp r3, r2 - 8003154: d101 bne.n 800315a + 8003204: 687b ldr r3, [r7, #4] + 8003206: 681b ldr r3, [r3, #0] + 8003208: 4a04 ldr r2, [pc, #16] @ (800321c ) + 800320a: 4293 cmp r3, r2 + 800320c: d101 bne.n 8003212 HAL_IncTick(); - 8003156: f002 fc67 bl 8005a28 + 800320e: f002 fd35 bl 8005c7c } /* USER CODE BEGIN Callback 1 */ /* USER CODE END Callback 1 */ } - 800315a: bf00 nop - 800315c: 3708 adds r7, #8 - 800315e: 46bd mov sp, r7 - 8003160: bd80 pop {r7, pc} - 8003162: bf00 nop - 8003164: 40001800 .word 0x40001800 + 8003212: bf00 nop + 8003214: 3708 adds r7, #8 + 8003216: 46bd mov sp, r7 + 8003218: bd80 pop {r7, pc} + 800321a: bf00 nop + 800321c: 40001800 .word 0x40001800 -08003168 : +08003220 : /** * @brief This function is executed in case of error occurrence. * @retval None */ void Error_Handler(void) { - 8003168: b480 push {r7} - 800316a: af00 add r7, sp, #0 + 8003220: b480 push {r7} + 8003222: af00 add r7, sp, #0 \details Disables IRQ interrupts by setting special-purpose register PRIMASK. Can only be executed in Privileged modes. */ __STATIC_FORCEINLINE void __disable_irq(void) { __ASM volatile ("cpsid i" : : : "memory"); - 800316c: b672 cpsid i + 8003224: b672 cpsid i } - 800316e: bf00 nop + 8003226: 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) - 8003170: bf00 nop - 8003172: e7fd b.n 8003170 + 8003228: bf00 nop + 800322a: e7fd b.n 8003228 -08003174 : +0800322c : * @param file: pointer to the source file name * @param line: assert_param error line source number * @retval None */ void assert_failed(uint8_t *file, uint32_t line) { - 8003174: b480 push {r7} - 8003176: b083 sub sp, #12 - 8003178: af00 add r7, sp, #0 - 800317a: 6078 str r0, [r7, #4] - 800317c: 6039 str r1, [r7, #0] + 800322c: b480 push {r7} + 800322e: b083 sub sp, #12 + 8003230: af00 add r7, sp, #0 + 8003232: 6078 str r0, [r7, #4] + 8003234: 6039 str r1, [r7, #0] /* USER CODE BEGIN 6 */ /* User can add his own implementation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* USER CODE END 6 */ } - 800317e: bf00 nop - 8003180: 370c adds r7, #12 - 8003182: 46bd mov sp, r7 - 8003184: f85d 7b04 ldr.w r7, [sp], #4 - 8003188: 4770 bx lr + 8003236: bf00 nop + 8003238: 370c adds r7, #12 + 800323a: 46bd mov sp, r7 + 800323c: f85d 7b04 ldr.w r7, [sp], #4 + 8003240: 4770 bx lr ... -0800318c <__NVIC_SystemReset>: +08003244 <__NVIC_SystemReset>: /** \brief System Reset \details Initiates a system reset request to reset the MCU. */ __NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) { - 800318c: b480 push {r7} - 800318e: af00 add r7, sp, #0 + 8003244: b480 push {r7} + 8003246: af00 add r7, sp, #0 __ASM volatile ("dsb 0xF":::"memory"); - 8003190: f3bf 8f4f dsb sy + 8003248: f3bf 8f4f dsb sy } - 8003194: bf00 nop + 800324c: bf00 nop __DSB(); /* Ensure all outstanding memory accesses included buffered write are completed before reset */ SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | - 8003196: 4b06 ldr r3, [pc, #24] @ (80031b0 <__NVIC_SystemReset+0x24>) - 8003198: 68db ldr r3, [r3, #12] - 800319a: f403 62e0 and.w r2, r3, #1792 @ 0x700 + 800324e: 4b06 ldr r3, [pc, #24] @ (8003268 <__NVIC_SystemReset+0x24>) + 8003250: 68db ldr r3, [r3, #12] + 8003252: f403 62e0 and.w r2, r3, #1792 @ 0x700 SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | - 800319e: 4904 ldr r1, [pc, #16] @ (80031b0 <__NVIC_SystemReset+0x24>) - 80031a0: 4b04 ldr r3, [pc, #16] @ (80031b4 <__NVIC_SystemReset+0x28>) - 80031a2: 4313 orrs r3, r2 - 80031a4: 60cb str r3, [r1, #12] + 8003256: 4904 ldr r1, [pc, #16] @ (8003268 <__NVIC_SystemReset+0x24>) + 8003258: 4b04 ldr r3, [pc, #16] @ (800326c <__NVIC_SystemReset+0x28>) + 800325a: 4313 orrs r3, r2 + 800325c: 60cb str r3, [r1, #12] __ASM volatile ("dsb 0xF":::"memory"); - 80031a6: f3bf 8f4f dsb sy + 800325e: f3bf 8f4f dsb sy } - 80031aa: bf00 nop + 8003262: bf00 nop SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ __DSB(); /* Ensure completion of memory access */ for(;;) /* wait until reset */ { __NOP(); - 80031ac: bf00 nop - 80031ae: e7fd b.n 80031ac <__NVIC_SystemReset+0x20> - 80031b0: e000ed00 .word 0xe000ed00 - 80031b4: 05fa0004 .word 0x05fa0004 + 8003264: bf00 nop + 8003266: e7fd b.n 8003264 <__NVIC_SystemReset+0x20> + 8003268: e000ed00 .word 0xe000ed00 + 800326c: 05fa0004 .word 0x05fa0004 -080031b8 : +08003270 : #include "parse.h" float unpackFloat(const void *buf) { - 80031b8: b480 push {r7} - 80031ba: b085 sub sp, #20 - 80031bc: af00 add r7, sp, #0 - 80031be: 6078 str r0, [r7, #4] + 8003270: b480 push {r7} + 8003272: b085 sub sp, #20 + 8003274: af00 add r7, sp, #0 + 8003276: 6078 str r0, [r7, #4] const unsigned char *b = (const unsigned char *)buf; - 80031c0: 687b ldr r3, [r7, #4] - 80031c2: 60fb str r3, [r7, #12] + 8003278: 687b ldr r3, [r7, #4] + 800327a: 60fb str r3, [r7, #12] uint32_t temp = 0; - 80031c4: 2300 movs r3, #0 - 80031c6: 60bb str r3, [r7, #8] + 800327c: 2300 movs r3, #0 + 800327e: 60bb str r3, [r7, #8] temp = ((b[0] << 24) | - 80031c8: 68fb ldr r3, [r7, #12] - 80031ca: 781b ldrb r3, [r3, #0] - 80031cc: 061a lsls r2, r3, #24 + 8003280: 68fb ldr r3, [r7, #12] + 8003282: 781b ldrb r3, [r3, #0] + 8003284: 061a lsls r2, r3, #24 (b[1] << 16) | - 80031ce: 68fb ldr r3, [r7, #12] - 80031d0: 3301 adds r3, #1 - 80031d2: 781b ldrb r3, [r3, #0] - 80031d4: 041b lsls r3, r3, #16 + 8003286: 68fb ldr r3, [r7, #12] + 8003288: 3301 adds r3, #1 + 800328a: 781b ldrb r3, [r3, #0] + 800328c: 041b lsls r3, r3, #16 temp = ((b[0] << 24) | - 80031d6: 431a orrs r2, r3 + 800328e: 431a orrs r2, r3 (b[2] << 8) | - 80031d8: 68fb ldr r3, [r7, #12] - 80031da: 3302 adds r3, #2 - 80031dc: 781b ldrb r3, [r3, #0] - 80031de: 021b lsls r3, r3, #8 + 8003290: 68fb ldr r3, [r7, #12] + 8003292: 3302 adds r3, #2 + 8003294: 781b ldrb r3, [r3, #0] + 8003296: 021b lsls r3, r3, #8 (b[1] << 16) | - 80031e0: 4313 orrs r3, r2 + 8003298: 4313 orrs r3, r2 b[3]); - 80031e2: 68fa ldr r2, [r7, #12] - 80031e4: 3203 adds r2, #3 - 80031e6: 7812 ldrb r2, [r2, #0] + 800329a: 68fa ldr r2, [r7, #12] + 800329c: 3203 adds r2, #3 + 800329e: 7812 ldrb r2, [r2, #0] (b[2] << 8) | - 80031e8: 4313 orrs r3, r2 + 80032a0: 4313 orrs r3, r2 temp = ((b[0] << 24) | - 80031ea: 60bb str r3, [r7, #8] + 80032a2: 60bb str r3, [r7, #8] return *((float *) &temp); - 80031ec: f107 0308 add.w r3, r7, #8 - 80031f0: 681b ldr r3, [r3, #0] - 80031f2: ee07 3a90 vmov s15, r3 + 80032a4: f107 0308 add.w r3, r7, #8 + 80032a8: 681b ldr r3, [r3, #0] + 80032aa: ee07 3a90 vmov s15, r3 } - 80031f6: eeb0 0a67 vmov.f32 s0, s15 - 80031fa: 3714 adds r7, #20 - 80031fc: 46bd mov sp, r7 - 80031fe: f85d 7b04 ldr.w r7, [sp], #4 - 8003202: 4770 bx lr + 80032ae: eeb0 0a67 vmov.f32 s0, s15 + 80032b2: 3714 adds r7, #20 + 80032b4: 46bd mov sp, r7 + 80032b6: f85d 7b04 ldr.w r7, [sp], #4 + 80032ba: 4770 bx lr -08003204 : +080032bc : bool check_float(float data_in, float data_min, float data_max) { - 8003204: b480 push {r7} - 8003206: b085 sub sp, #20 - 8003208: af00 add r7, sp, #0 - 800320a: ed87 0a03 vstr s0, [r7, #12] - 800320e: edc7 0a02 vstr s1, [r7, #8] - 8003212: ed87 1a01 vstr s2, [r7, #4] + 80032bc: b480 push {r7} + 80032be: b085 sub sp, #20 + 80032c0: af00 add r7, sp, #0 + 80032c2: ed87 0a03 vstr s0, [r7, #12] + 80032c6: edc7 0a02 vstr s1, [r7, #8] + 80032ca: ed87 1a01 vstr s2, [r7, #4] if((data_in >= data_min) && (data_in <= data_max)) - 8003216: ed97 7a03 vldr s14, [r7, #12] - 800321a: edd7 7a02 vldr s15, [r7, #8] - 800321e: eeb4 7ae7 vcmpe.f32 s14, s15 - 8003222: eef1 fa10 vmrs APSR_nzcv, fpscr - 8003226: db0a blt.n 800323e - 8003228: ed97 7a03 vldr s14, [r7, #12] - 800322c: edd7 7a01 vldr s15, [r7, #4] - 8003230: eeb4 7ae7 vcmpe.f32 s14, s15 - 8003234: eef1 fa10 vmrs APSR_nzcv, fpscr - 8003238: d801 bhi.n 800323e + 80032ce: ed97 7a03 vldr s14, [r7, #12] + 80032d2: edd7 7a02 vldr s15, [r7, #8] + 80032d6: eeb4 7ae7 vcmpe.f32 s14, s15 + 80032da: eef1 fa10 vmrs APSR_nzcv, fpscr + 80032de: db0a blt.n 80032f6 + 80032e0: ed97 7a03 vldr s14, [r7, #12] + 80032e4: edd7 7a01 vldr s15, [r7, #4] + 80032e8: eeb4 7ae7 vcmpe.f32 s14, s15 + 80032ec: eef1 fa10 vmrs APSR_nzcv, fpscr + 80032f0: d801 bhi.n 80032f6 { return true; - 800323a: 2301 movs r3, #1 - 800323c: e000 b.n 8003240 + 80032f2: 2301 movs r3, #1 + 80032f4: e000 b.n 80032f8 } return false; - 800323e: 2300 movs r3, #0 + 80032f6: 2300 movs r3, #0 } - 8003240: 4618 mov r0, r3 - 8003242: 3714 adds r7, #20 - 8003244: 46bd mov sp, r7 - 8003246: f85d 7b04 ldr.w r7, [sp], #4 - 800324a: 4770 bx lr + 80032f8: 4618 mov r0, r3 + 80032fa: 3714 adds r7, #20 + 80032fc: 46bd mov sp, r7 + 80032fe: f85d 7b04 ldr.w r7, [sp], #4 + 8003302: 4770 bx lr -0800324c : +08003304 : uint16_t unpackUint16(const void *buf) { - 800324c: b480 push {r7} - 800324e: b085 sub sp, #20 - 8003250: af00 add r7, sp, #0 - 8003252: 6078 str r0, [r7, #4] + 8003304: b480 push {r7} + 8003306: b085 sub sp, #20 + 8003308: af00 add r7, sp, #0 + 800330a: 6078 str r0, [r7, #4] const unsigned char *b = (const unsigned char *)buf; - 8003254: 687b ldr r3, [r7, #4] - 8003256: 60fb str r3, [r7, #12] + 800330c: 687b ldr r3, [r7, #4] + 800330e: 60fb str r3, [r7, #12] uint16_t temp = 0; - 8003258: 2300 movs r3, #0 - 800325a: 817b strh r3, [r7, #10] + 8003310: 2300 movs r3, #0 + 8003312: 817b strh r3, [r7, #10] temp = ((b[2] << 8) | b[3]); - 800325c: 68fb ldr r3, [r7, #12] - 800325e: 3302 adds r3, #2 - 8003260: 781b ldrb r3, [r3, #0] - 8003262: 021b lsls r3, r3, #8 - 8003264: b21a sxth r2, r3 - 8003266: 68fb ldr r3, [r7, #12] - 8003268: 3303 adds r3, #3 - 800326a: 781b ldrb r3, [r3, #0] - 800326c: b21b sxth r3, r3 - 800326e: 4313 orrs r3, r2 - 8003270: b21b sxth r3, r3 - 8003272: b29b uxth r3, r3 - 8003274: 817b strh r3, [r7, #10] + 8003314: 68fb ldr r3, [r7, #12] + 8003316: 3302 adds r3, #2 + 8003318: 781b ldrb r3, [r3, #0] + 800331a: 021b lsls r3, r3, #8 + 800331c: b21a sxth r2, r3 + 800331e: 68fb ldr r3, [r7, #12] + 8003320: 3303 adds r3, #3 + 8003322: 781b ldrb r3, [r3, #0] + 8003324: b21b sxth r3, r3 + 8003326: 4313 orrs r3, r2 + 8003328: b21b sxth r3, r3 + 800332a: b29b uxth r3, r3 + 800332c: 817b strh r3, [r7, #10] return *((uint16_t *) &temp); - 8003276: 897b ldrh r3, [r7, #10] + 800332e: 897b ldrh r3, [r7, #10] } - 8003278: 4618 mov r0, r3 - 800327a: 3714 adds r7, #20 - 800327c: 46bd mov sp, r7 - 800327e: f85d 7b04 ldr.w r7, [sp], #4 - 8003282: 4770 bx lr + 8003330: 4618 mov r0, r3 + 8003332: 3714 adds r7, #20 + 8003334: 46bd mov sp, r7 + 8003336: f85d 7b04 ldr.w r7, [sp], #4 + 800333a: 4770 bx lr -08003284 : +0800333c : bool check_uint16(uint16_t data_in, uint16_t data_min, uint16_t data_max) { - 8003284: b480 push {r7} - 8003286: b083 sub sp, #12 - 8003288: af00 add r7, sp, #0 - 800328a: 4603 mov r3, r0 - 800328c: 80fb strh r3, [r7, #6] - 800328e: 460b mov r3, r1 - 8003290: 80bb strh r3, [r7, #4] - 8003292: 4613 mov r3, r2 - 8003294: 807b strh r3, [r7, #2] + 800333c: b480 push {r7} + 800333e: b083 sub sp, #12 + 8003340: af00 add r7, sp, #0 + 8003342: 4603 mov r3, r0 + 8003344: 80fb strh r3, [r7, #6] + 8003346: 460b mov r3, r1 + 8003348: 80bb strh r3, [r7, #4] + 800334a: 4613 mov r3, r2 + 800334c: 807b strh r3, [r7, #2] if((data_in >= data_min) && (data_in <= data_max)) - 8003296: 88fa ldrh r2, [r7, #6] - 8003298: 88bb ldrh r3, [r7, #4] - 800329a: 429a cmp r2, r3 - 800329c: d305 bcc.n 80032aa - 800329e: 88fa ldrh r2, [r7, #6] - 80032a0: 887b ldrh r3, [r7, #2] - 80032a2: 429a cmp r2, r3 - 80032a4: d801 bhi.n 80032aa + 800334e: 88fa ldrh r2, [r7, #6] + 8003350: 88bb ldrh r3, [r7, #4] + 8003352: 429a cmp r2, r3 + 8003354: d305 bcc.n 8003362 + 8003356: 88fa ldrh r2, [r7, #6] + 8003358: 887b ldrh r3, [r7, #2] + 800335a: 429a cmp r2, r3 + 800335c: d801 bhi.n 8003362 { return true; - 80032a6: 2301 movs r3, #1 - 80032a8: e000 b.n 80032ac + 800335e: 2301 movs r3, #1 + 8003360: e000 b.n 8003364 } return false; - 80032aa: 2300 movs r3, #0 + 8003362: 2300 movs r3, #0 } - 80032ac: 4618 mov r0, r3 - 80032ae: 370c adds r7, #12 - 80032b0: 46bd mov sp, r7 - 80032b2: f85d 7b04 ldr.w r7, [sp], #4 - 80032b6: 4770 bx lr + 8003364: 4618 mov r0, r3 + 8003366: 370c adds r7, #12 + 8003368: 46bd mov sp, r7 + 800336a: f85d 7b04 ldr.w r7, [sp], #4 + 800336e: 4770 bx lr -080032b8 : +08003370 : uint8_t unpackUint8(const void *buf) { - 80032b8: b480 push {r7} - 80032ba: b085 sub sp, #20 - 80032bc: af00 add r7, sp, #0 - 80032be: 6078 str r0, [r7, #4] + 8003370: b480 push {r7} + 8003372: b085 sub sp, #20 + 8003374: af00 add r7, sp, #0 + 8003376: 6078 str r0, [r7, #4] const unsigned char *b = (const unsigned char *)buf; - 80032c0: 687b ldr r3, [r7, #4] - 80032c2: 60fb str r3, [r7, #12] + 8003378: 687b ldr r3, [r7, #4] + 800337a: 60fb str r3, [r7, #12] uint8_t temp = 0; - 80032c4: 2300 movs r3, #0 - 80032c6: 72fb strb r3, [r7, #11] + 800337c: 2300 movs r3, #0 + 800337e: 72fb strb r3, [r7, #11] temp = b[3]; - 80032c8: 68fb ldr r3, [r7, #12] - 80032ca: 3303 adds r3, #3 - 80032cc: 781b ldrb r3, [r3, #0] - 80032ce: 72fb strb r3, [r7, #11] + 8003380: 68fb ldr r3, [r7, #12] + 8003382: 3303 adds r3, #3 + 8003384: 781b ldrb r3, [r3, #0] + 8003386: 72fb strb r3, [r7, #11] return *((uint8_t *) &temp); - 80032d0: 7afb ldrb r3, [r7, #11] + 8003388: 7afb ldrb r3, [r7, #11] } - 80032d2: 4618 mov r0, r3 - 80032d4: 3714 adds r7, #20 - 80032d6: 46bd mov sp, r7 - 80032d8: f85d 7b04 ldr.w r7, [sp], #4 - 80032dc: 4770 bx lr + 800338a: 4618 mov r0, r3 + 800338c: 3714 adds r7, #20 + 800338e: 46bd mov sp, r7 + 8003390: f85d 7b04 ldr.w r7, [sp], #4 + 8003394: 4770 bx lr -080032de : +08003396 : bool check_uint8(uint8_t data_in, uint8_t data_min, uint8_t data_max) { - 80032de: b480 push {r7} - 80032e0: b083 sub sp, #12 - 80032e2: af00 add r7, sp, #0 - 80032e4: 4603 mov r3, r0 - 80032e6: 71fb strb r3, [r7, #7] - 80032e8: 460b mov r3, r1 - 80032ea: 71bb strb r3, [r7, #6] - 80032ec: 4613 mov r3, r2 - 80032ee: 717b strb r3, [r7, #5] + 8003396: b480 push {r7} + 8003398: b083 sub sp, #12 + 800339a: af00 add r7, sp, #0 + 800339c: 4603 mov r3, r0 + 800339e: 71fb strb r3, [r7, #7] + 80033a0: 460b mov r3, r1 + 80033a2: 71bb strb r3, [r7, #6] + 80033a4: 4613 mov r3, r2 + 80033a6: 717b strb r3, [r7, #5] if((data_in >= data_min) && (data_in <= data_max)) - 80032f0: 79fa ldrb r2, [r7, #7] - 80032f2: 79bb ldrb r3, [r7, #6] - 80032f4: 429a cmp r2, r3 - 80032f6: d305 bcc.n 8003304 - 80032f8: 79fa ldrb r2, [r7, #7] - 80032fa: 797b ldrb r3, [r7, #5] - 80032fc: 429a cmp r2, r3 - 80032fe: d801 bhi.n 8003304 + 80033a8: 79fa ldrb r2, [r7, #7] + 80033aa: 79bb ldrb r3, [r7, #6] + 80033ac: 429a cmp r2, r3 + 80033ae: d305 bcc.n 80033bc + 80033b0: 79fa ldrb r2, [r7, #7] + 80033b2: 797b ldrb r3, [r7, #5] + 80033b4: 429a cmp r2, r3 + 80033b6: d801 bhi.n 80033bc { return true; - 8003300: 2301 movs r3, #1 - 8003302: e000 b.n 8003306 + 80033b8: 2301 movs r3, #1 + 80033ba: e000 b.n 80033be } return false; - 8003304: 2300 movs r3, #0 + 80033bc: 2300 movs r3, #0 } - 8003306: 4618 mov r0, r3 - 8003308: 370c adds r7, #12 - 800330a: 46bd mov sp, r7 - 800330c: f85d 7b04 ldr.w r7, [sp], #4 - 8003310: 4770 bx lr + 80033be: 4618 mov r0, r3 + 80033c0: 370c adds r7, #12 + 80033c2: 46bd mov sp, r7 + 80033c4: f85d 7b04 ldr.w r7, [sp], #4 + 80033c8: 4770 bx lr -08003312 : +080033ca : uint32_t unpackUint32(const void *buf) { - 8003312: b480 push {r7} - 8003314: b085 sub sp, #20 - 8003316: af00 add r7, sp, #0 - 8003318: 6078 str r0, [r7, #4] + 80033ca: b480 push {r7} + 80033cc: b085 sub sp, #20 + 80033ce: af00 add r7, sp, #0 + 80033d0: 6078 str r0, [r7, #4] const unsigned char *b = (const unsigned char *)buf; - 800331a: 687b ldr r3, [r7, #4] - 800331c: 60fb str r3, [r7, #12] + 80033d2: 687b ldr r3, [r7, #4] + 80033d4: 60fb str r3, [r7, #12] uint32_t temp = 0; - 800331e: 2300 movs r3, #0 - 8003320: 60bb str r3, [r7, #8] + 80033d6: 2300 movs r3, #0 + 80033d8: 60bb str r3, [r7, #8] temp = ((b[0] << 24) | - 8003322: 68fb ldr r3, [r7, #12] - 8003324: 781b ldrb r3, [r3, #0] - 8003326: 061a lsls r2, r3, #24 + 80033da: 68fb ldr r3, [r7, #12] + 80033dc: 781b ldrb r3, [r3, #0] + 80033de: 061a lsls r2, r3, #24 (b[1] << 16) | - 8003328: 68fb ldr r3, [r7, #12] - 800332a: 3301 adds r3, #1 - 800332c: 781b ldrb r3, [r3, #0] - 800332e: 041b lsls r3, r3, #16 + 80033e0: 68fb ldr r3, [r7, #12] + 80033e2: 3301 adds r3, #1 + 80033e4: 781b ldrb r3, [r3, #0] + 80033e6: 041b lsls r3, r3, #16 temp = ((b[0] << 24) | - 8003330: 431a orrs r2, r3 + 80033e8: 431a orrs r2, r3 (b[2] << 8) | - 8003332: 68fb ldr r3, [r7, #12] - 8003334: 3302 adds r3, #2 - 8003336: 781b ldrb r3, [r3, #0] - 8003338: 021b lsls r3, r3, #8 + 80033ea: 68fb ldr r3, [r7, #12] + 80033ec: 3302 adds r3, #2 + 80033ee: 781b ldrb r3, [r3, #0] + 80033f0: 021b lsls r3, r3, #8 (b[1] << 16) | - 800333a: 4313 orrs r3, r2 + 80033f2: 4313 orrs r3, r2 b[3]); - 800333c: 68fa ldr r2, [r7, #12] - 800333e: 3203 adds r2, #3 - 8003340: 7812 ldrb r2, [r2, #0] + 80033f4: 68fa ldr r2, [r7, #12] + 80033f6: 3203 adds r2, #3 + 80033f8: 7812 ldrb r2, [r2, #0] (b[2] << 8) | - 8003342: 4313 orrs r3, r2 + 80033fa: 4313 orrs r3, r2 temp = ((b[0] << 24) | - 8003344: 60bb str r3, [r7, #8] + 80033fc: 60bb str r3, [r7, #8] return *((uint32_t *) &temp); - 8003346: 68bb ldr r3, [r7, #8] + 80033fe: 68bb ldr r3, [r7, #8] } - 8003348: 4618 mov r0, r3 - 800334a: 3714 adds r7, #20 - 800334c: 46bd mov sp, r7 - 800334e: f85d 7b04 ldr.w r7, [sp], #4 - 8003352: 4770 bx lr + 8003400: 4618 mov r0, r3 + 8003402: 3714 adds r7, #20 + 8003404: 46bd mov sp, r7 + 8003406: f85d 7b04 ldr.w r7, [sp], #4 + 800340a: 4770 bx lr -08003354 : +0800340c : bool check_uint32(uint32_t data_in, uint32_t data_min, uint32_t data_max) { - 8003354: b480 push {r7} - 8003356: b085 sub sp, #20 - 8003358: af00 add r7, sp, #0 - 800335a: 60f8 str r0, [r7, #12] - 800335c: 60b9 str r1, [r7, #8] - 800335e: 607a str r2, [r7, #4] + 800340c: b480 push {r7} + 800340e: b085 sub sp, #20 + 8003410: af00 add r7, sp, #0 + 8003412: 60f8 str r0, [r7, #12] + 8003414: 60b9 str r1, [r7, #8] + 8003416: 607a str r2, [r7, #4] if((data_in >= data_min) && (data_in <= data_max)) - 8003360: 68fa ldr r2, [r7, #12] - 8003362: 68bb ldr r3, [r7, #8] - 8003364: 429a cmp r2, r3 - 8003366: d305 bcc.n 8003374 - 8003368: 68fa ldr r2, [r7, #12] - 800336a: 687b ldr r3, [r7, #4] - 800336c: 429a cmp r2, r3 - 800336e: d801 bhi.n 8003374 + 8003418: 68fa ldr r2, [r7, #12] + 800341a: 68bb ldr r3, [r7, #8] + 800341c: 429a cmp r2, r3 + 800341e: d305 bcc.n 800342c + 8003420: 68fa ldr r2, [r7, #12] + 8003422: 687b ldr r3, [r7, #4] + 8003424: 429a cmp r2, r3 + 8003426: d801 bhi.n 800342c { return true; - 8003370: 2301 movs r3, #1 - 8003372: e000 b.n 8003376 + 8003428: 2301 movs r3, #1 + 800342a: e000 b.n 800342e } return false; - 8003374: 2300 movs r3, #0 + 800342c: 2300 movs r3, #0 } - 8003376: 4618 mov r0, r3 - 8003378: 3714 adds r7, #20 - 800337a: 46bd mov sp, r7 - 800337c: f85d 7b04 ldr.w r7, [sp], #4 - 8003380: 4770 bx lr + 800342e: 4618 mov r0, r3 + 8003430: 3714 adds r7, #20 + 8003432: 46bd mov sp, r7 + 8003434: f85d 7b04 ldr.w r7, [sp], #4 + 8003438: 4770 bx lr ... -08003384 : +0800343c : void parse_command(uint8_t* buf, icd_str * icd_str) { - 8003384: b580 push {r7, lr} - 8003386: b092 sub sp, #72 @ 0x48 - 8003388: af00 add r7, sp, #0 - 800338a: 6078 str r0, [r7, #4] - 800338c: 6039 str r1, [r7, #0] + 800343c: b580 push {r7, lr} + 800343e: b092 sub sp, #72 @ 0x48 + 8003440: af00 add r7, sp, #0 + 8003442: 6078 str r0, [r7, #4] + 8003444: 6039 str r1, [r7, #0] float fdata = -1.0; - 800338e: 4bc9 ldr r3, [pc, #804] @ (80036b4 ) - 8003390: 647b str r3, [r7, #68] @ 0x44 + 8003446: 4bca ldr r3, [pc, #808] @ (8003770 ) + 8003448: 647b str r3, [r7, #68] @ 0x44 if ((buf[0] == 0x55) && (buf[6] == 0x77)) - 8003392: 687b ldr r3, [r7, #4] - 8003394: 781b ldrb r3, [r3, #0] - 8003396: 2b55 cmp r3, #85 @ 0x55 - 8003398: f040 8505 bne.w 8003da6 - 800339c: 687b ldr r3, [r7, #4] - 800339e: 3306 adds r3, #6 - 80033a0: 781b ldrb r3, [r3, #0] - 80033a2: 2b77 cmp r3, #119 @ 0x77 - 80033a4: f040 84ff bne.w 8003da6 + 800344a: 687b ldr r3, [r7, #4] + 800344c: 781b ldrb r3, [r3, #0] + 800344e: 2b55 cmp r3, #85 @ 0x55 + 8003450: f040 853d bne.w 8003ece + 8003454: 687b ldr r3, [r7, #4] + 8003456: 3306 adds r3, #6 + 8003458: 781b ldrb r3, [r3, #0] + 800345a: 2b77 cmp r3, #119 @ 0x77 + 800345c: f040 8537 bne.w 8003ece { switch (buf[1]) - 80033a8: 687b ldr r3, [r7, #4] - 80033aa: 3301 adds r3, #1 - 80033ac: 781b ldrb r3, [r3, #0] - 80033ae: 3b01 subs r3, #1 - 80033b0: 2b35 cmp r3, #53 @ 0x35 - 80033b2: f200 854b bhi.w 8003e4c - 80033b6: a201 add r2, pc, #4 @ (adr r2, 80033bc ) - 80033b8: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 80033bc: 08003495 .word 0x08003495 - 80033c0: 080034dd .word 0x080034dd - 80033c4: 08003525 .word 0x08003525 - 80033c8: 08003555 .word 0x08003555 - 80033cc: 08003585 .word 0x08003585 - 80033d0: 080035d7 .word 0x080035d7 - 80033d4: 0800360d .word 0x0800360d - 80033d8: 08003dab .word 0x08003dab - 80033dc: 08003645 .word 0x08003645 - 80033e0: 08003dab .word 0x08003dab - 80033e4: 08003dab .word 0x08003dab - 80033e8: 08003dab .word 0x08003dab - 80033ec: 0800367f .word 0x0800367f - 80033f0: 08003dab .word 0x08003dab - 80033f4: 08003e4d .word 0x08003e4d - 80033f8: 080036c9 .word 0x080036c9 - 80033fc: 0800371f .word 0x0800371f - 8003400: 08003777 .word 0x08003777 - 8003404: 080037cf .word 0x080037cf - 8003408: 080037fb .word 0x080037fb - 800340c: 08003827 .word 0x08003827 - 8003410: 0800385d .word 0x0800385d - 8003414: 08003dab .word 0x08003dab - 8003418: 080038ab .word 0x080038ab - 800341c: 080038e3 .word 0x080038e3 - 8003420: 08003915 .word 0x08003915 - 8003424: 08003947 .word 0x08003947 - 8003428: 08003979 .word 0x08003979 - 800342c: 080039ab .word 0x080039ab - 8003430: 080039e5 .word 0x080039e5 - 8003434: 08003a1f .word 0x08003a1f - 8003438: 08003a4f .word 0x08003a4f - 800343c: 08003a89 .word 0x08003a89 - 8003440: 08003ac3 .word 0x08003ac3 - 8003444: 08003af1 .word 0x08003af1 - 8003448: 08003b23 .word 0x08003b23 - 800344c: 08003b55 .word 0x08003b55 - 8003450: 08003b87 .word 0x08003b87 - 8003454: 08003bb9 .word 0x08003bb9 - 8003458: 08003beb .word 0x08003beb - 800345c: 08003c1d .word 0x08003c1d - 8003460: 08003e4d .word 0x08003e4d - 8003464: 08003e4d .word 0x08003e4d - 8003468: 08003e4d .word 0x08003e4d - 800346c: 08003e4d .word 0x08003e4d - 8003470: 08003e4d .word 0x08003e4d - 8003474: 08003e4d .word 0x08003e4d - 8003478: 08003c4d .word 0x08003c4d - 800347c: 08003c7f .word 0x08003c7f - 8003480: 08003cb1 .word 0x08003cb1 - 8003484: 08003ce3 .word 0x08003ce3 - 8003488: 08003d15 .word 0x08003d15 - 800348c: 08003d47 .word 0x08003d47 - 8003490: 08003d77 .word 0x08003d77 + 8003460: 687b ldr r3, [r7, #4] + 8003462: 3301 adds r3, #1 + 8003464: 781b ldrb r3, [r3, #0] + 8003466: 3b01 subs r3, #1 + 8003468: 2b35 cmp r3, #53 @ 0x35 + 800346a: f200 8587 bhi.w 8003f7c + 800346e: a201 add r2, pc, #4 @ (adr r2, 8003474 ) + 8003470: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8003474: 0800354d .word 0x0800354d + 8003478: 08003595 .word 0x08003595 + 800347c: 080035dd .word 0x080035dd + 8003480: 0800360d .word 0x0800360d + 8003484: 0800363d .word 0x0800363d + 8003488: 08003691 .word 0x08003691 + 800348c: 080036c9 .word 0x080036c9 + 8003490: 08003ed3 .word 0x08003ed3 + 8003494: 08003701 .word 0x08003701 + 8003498: 08003ed3 .word 0x08003ed3 + 800349c: 08003ed3 .word 0x08003ed3 + 80034a0: 08003ed3 .word 0x08003ed3 + 80034a4: 0800373b .word 0x0800373b + 80034a8: 08003785 .word 0x08003785 + 80034ac: 080037bb .word 0x080037bb + 80034b0: 080037f1 .word 0x080037f1 + 80034b4: 08003847 .word 0x08003847 + 80034b8: 0800389f .word 0x0800389f + 80034bc: 080038f7 .word 0x080038f7 + 80034c0: 08003923 .word 0x08003923 + 80034c4: 0800394f .word 0x0800394f + 80034c8: 08003985 .word 0x08003985 + 80034cc: 08003ed3 .word 0x08003ed3 + 80034d0: 080039d3 .word 0x080039d3 + 80034d4: 08003a0b .word 0x08003a0b + 80034d8: 08003a3d .word 0x08003a3d + 80034dc: 08003a6f .word 0x08003a6f + 80034e0: 08003aa1 .word 0x08003aa1 + 80034e4: 08003ad3 .word 0x08003ad3 + 80034e8: 08003b0d .word 0x08003b0d + 80034ec: 08003b47 .word 0x08003b47 + 80034f0: 08003b77 .word 0x08003b77 + 80034f4: 08003bb1 .word 0x08003bb1 + 80034f8: 08003beb .word 0x08003beb + 80034fc: 08003c19 .word 0x08003c19 + 8003500: 08003c4b .word 0x08003c4b + 8003504: 08003c7d .word 0x08003c7d + 8003508: 08003caf .word 0x08003caf + 800350c: 08003ce1 .word 0x08003ce1 + 8003510: 08003d13 .word 0x08003d13 + 8003514: 08003d45 .word 0x08003d45 + 8003518: 08003f7d .word 0x08003f7d + 800351c: 08003f7d .word 0x08003f7d + 8003520: 08003f7d .word 0x08003f7d + 8003524: 08003f7d .word 0x08003f7d + 8003528: 08003f7d .word 0x08003f7d + 800352c: 08003f7d .word 0x08003f7d + 8003530: 08003d75 .word 0x08003d75 + 8003534: 08003da7 .word 0x08003da7 + 8003538: 08003dd9 .word 0x08003dd9 + 800353c: 08003e0b .word 0x08003e0b + 8003540: 08003e3d .word 0x08003e3d + 8003544: 08003e6f .word 0x08003e6f + 8003548: 08003e9f .word 0x08003e9f { //float min_tres case 0x01: { fdata = unpackFloat(&buf[2]); - 8003494: 687b ldr r3, [r7, #4] - 8003496: 3302 adds r3, #2 - 8003498: 4618 mov r0, r3 - 800349a: f7ff fe8d bl 80031b8 - 800349e: ed87 0a11 vstr s0, [r7, #68] @ 0x44 + 800354c: 687b ldr r3, [r7, #4] + 800354e: 3302 adds r3, #2 + 8003550: 4618 mov r0, r3 + 8003552: f7ff fe8d bl 8003270 + 8003556: ed87 0a11 vstr s0, [r7, #68] @ 0x44 if (check_float(fdata, 0.1, 10.0)) //fixme сделал большую вариабельность - 80034a2: eeb2 1a04 vmov.f32 s2, #36 @ 0x41200000 10.0 - 80034a6: eddf 0a84 vldr s1, [pc, #528] @ 80036b8 - 80034aa: ed97 0a11 vldr s0, [r7, #68] @ 0x44 - 80034ae: f7ff fea9 bl 8003204 - 80034b2: 4603 mov r3, r0 - 80034b4: 2b00 cmp r3, #0 - 80034b6: f000 847a beq.w 8003dae + 800355a: eeb2 1a04 vmov.f32 s2, #36 @ 0x41200000 10.0 + 800355e: eddf 0a85 vldr s1, [pc, #532] @ 8003774 + 8003562: ed97 0a11 vldr s0, [r7, #68] @ 0x44 + 8003566: f7ff fea9 bl 80032bc + 800356a: 4603 mov r3, r0 + 800356c: 2b00 cmp r3, #0 + 800356e: f000 84b2 beq.w 8003ed6 { if (fdata < icd_str->max_tres) - 80034ba: 683b ldr r3, [r7, #0] - 80034bc: edd3 7a05 vldr s15, [r3, #20] - 80034c0: ed97 7a11 vldr s14, [r7, #68] @ 0x44 - 80034c4: eeb4 7ae7 vcmpe.f32 s14, s15 - 80034c8: eef1 fa10 vmrs APSR_nzcv, fpscr - 80034cc: d401 bmi.n 80034d2 + 8003572: 683b ldr r3, [r7, #0] + 8003574: edd3 7a05 vldr s15, [r3, #20] + 8003578: ed97 7a11 vldr s14, [r7, #68] @ 0x44 + 800357c: eeb4 7ae7 vcmpe.f32 s14, s15 + 8003580: eef1 fa10 vmrs APSR_nzcv, fpscr + 8003584: d401 bmi.n 800358a // проверили что меньше максимального порога icd_str->min_tres = fdata; } } break; - 80034ce: f000 bc6e b.w 8003dae + 8003586: f000 bca6 b.w 8003ed6 icd_str->min_tres = fdata; - 80034d2: 683b ldr r3, [r7, #0] - 80034d4: 6c7a ldr r2, [r7, #68] @ 0x44 - 80034d6: 60da str r2, [r3, #12] + 800358a: 683b ldr r3, [r7, #0] + 800358c: 6c7a ldr r2, [r7, #68] @ 0x44 + 800358e: 60da str r2, [r3, #12] break; - 80034d8: f000 bc69 b.w 8003dae + 8003590: f000 bca1 b.w 8003ed6 //float max_tres case 0x02: { fdata = unpackFloat(&buf[2]); - 80034dc: 687b ldr r3, [r7, #4] - 80034de: 3302 adds r3, #2 - 80034e0: 4618 mov r0, r3 - 80034e2: f7ff fe69 bl 80031b8 - 80034e6: ed87 0a11 vstr s0, [r7, #68] @ 0x44 + 8003594: 687b ldr r3, [r7, #4] + 8003596: 3302 adds r3, #2 + 8003598: 4618 mov r0, r3 + 800359a: f7ff fe69 bl 8003270 + 800359e: ed87 0a11 vstr s0, [r7, #68] @ 0x44 if (check_float(fdata, 1.5, 20.0)) //fixme сделал большую вариабельность - 80034ea: eeb3 1a04 vmov.f32 s2, #52 @ 0x41a00000 20.0 - 80034ee: eef7 0a08 vmov.f32 s1, #120 @ 0x3fc00000 1.5 - 80034f2: ed97 0a11 vldr s0, [r7, #68] @ 0x44 - 80034f6: f7ff fe85 bl 8003204 - 80034fa: 4603 mov r3, r0 - 80034fc: 2b00 cmp r3, #0 - 80034fe: f000 8458 beq.w 8003db2 + 80035a2: eeb3 1a04 vmov.f32 s2, #52 @ 0x41a00000 20.0 + 80035a6: eef7 0a08 vmov.f32 s1, #120 @ 0x3fc00000 1.5 + 80035aa: ed97 0a11 vldr s0, [r7, #68] @ 0x44 + 80035ae: f7ff fe85 bl 80032bc + 80035b2: 4603 mov r3, r0 + 80035b4: 2b00 cmp r3, #0 + 80035b6: f000 8490 beq.w 8003eda { if (fdata > icd_str->min_tres) - 8003502: 683b ldr r3, [r7, #0] - 8003504: edd3 7a03 vldr s15, [r3, #12] - 8003508: ed97 7a11 vldr s14, [r7, #68] @ 0x44 - 800350c: eeb4 7ae7 vcmpe.f32 s14, s15 - 8003510: eef1 fa10 vmrs APSR_nzcv, fpscr - 8003514: dc01 bgt.n 800351a + 80035ba: 683b ldr r3, [r7, #0] + 80035bc: edd3 7a03 vldr s15, [r3, #12] + 80035c0: ed97 7a11 vldr s14, [r7, #68] @ 0x44 + 80035c4: eeb4 7ae7 vcmpe.f32 s14, s15 + 80035c8: eef1 fa10 vmrs APSR_nzcv, fpscr + 80035cc: dc01 bgt.n 80035d2 // проверили что больше минимального порога icd_str->max_tres = fdata; } } break; - 8003516: f000 bc4c b.w 8003db2 + 80035ce: f000 bc84 b.w 8003eda icd_str->max_tres = fdata; - 800351a: 683b ldr r3, [r7, #0] - 800351c: 6c7a ldr r2, [r7, #68] @ 0x44 - 800351e: 615a str r2, [r3, #20] + 80035d2: 683b ldr r3, [r7, #0] + 80035d4: 6c7a ldr r2, [r7, #68] @ 0x44 + 80035d6: 615a str r2, [r3, #20] break; - 8003520: f000 bc47 b.w 8003db2 + 80035d8: f000 bc7f b.w 8003eda //float square_coef case 0x03: { fdata = unpackFloat(&buf[2]); - 8003524: 687b ldr r3, [r7, #4] - 8003526: 3302 adds r3, #2 - 8003528: 4618 mov r0, r3 - 800352a: f7ff fe45 bl 80031b8 - 800352e: ed87 0a11 vstr s0, [r7, #68] @ 0x44 + 80035dc: 687b ldr r3, [r7, #4] + 80035de: 3302 adds r3, #2 + 80035e0: 4618 mov r0, r3 + 80035e2: f7ff fe45 bl 8003270 + 80035e6: ed87 0a11 vstr s0, [r7, #68] @ 0x44 if (check_float(fdata, 0.25, 0.75)) - 8003532: eeb6 1a08 vmov.f32 s2, #104 @ 0x3f400000 0.750 - 8003536: eef5 0a00 vmov.f32 s1, #80 @ 0x3e800000 0.250 - 800353a: ed97 0a11 vldr s0, [r7, #68] @ 0x44 - 800353e: f7ff fe61 bl 8003204 - 8003542: 4603 mov r3, r0 - 8003544: 2b00 cmp r3, #0 - 8003546: f000 8436 beq.w 8003db6 + 80035ea: eeb6 1a08 vmov.f32 s2, #104 @ 0x3f400000 0.750 + 80035ee: eef5 0a00 vmov.f32 s1, #80 @ 0x3e800000 0.250 + 80035f2: ed97 0a11 vldr s0, [r7, #68] @ 0x44 + 80035f6: f7ff fe61 bl 80032bc + 80035fa: 4603 mov r3, r0 + 80035fc: 2b00 cmp r3, #0 + 80035fe: f000 846e beq.w 8003ede { icd_str->square_coef = fdata; - 800354a: 683b ldr r3, [r7, #0] - 800354c: 6c7a ldr r2, [r7, #68] @ 0x44 - 800354e: 61da str r2, [r3, #28] + 8003602: 683b ldr r3, [r7, #0] + 8003604: 6c7a ldr r2, [r7, #68] @ 0x44 + 8003606: 61da str r2, [r3, #28] } } break; - 8003550: f000 bc31 b.w 8003db6 + 8003608: f000 bc69 b.w 8003ede //float triangle_coef case 0x04: { fdata = unpackFloat(&buf[2]); - 8003554: 687b ldr r3, [r7, #4] - 8003556: 3302 adds r3, #2 - 8003558: 4618 mov r0, r3 - 800355a: f7ff fe2d bl 80031b8 - 800355e: ed87 0a11 vstr s0, [r7, #68] @ 0x44 + 800360c: 687b ldr r3, [r7, #4] + 800360e: 3302 adds r3, #2 + 8003610: 4618 mov r0, r3 + 8003612: f7ff fe2d bl 8003270 + 8003616: ed87 0a11 vstr s0, [r7, #68] @ 0x44 // min max triangle coef???? const 0.85 if (check_float(fdata, 0.8, 0.9)) - 8003562: ed9f 1a56 vldr s2, [pc, #344] @ 80036bc - 8003566: eddf 0a56 vldr s1, [pc, #344] @ 80036c0 - 800356a: ed97 0a11 vldr s0, [r7, #68] @ 0x44 - 800356e: f7ff fe49 bl 8003204 - 8003572: 4603 mov r3, r0 - 8003574: 2b00 cmp r3, #0 - 8003576: f000 8420 beq.w 8003dba + 800361a: ed9f 1a57 vldr s2, [pc, #348] @ 8003778 + 800361e: eddf 0a57 vldr s1, [pc, #348] @ 800377c + 8003622: ed97 0a11 vldr s0, [r7, #68] @ 0x44 + 8003626: f7ff fe49 bl 80032bc + 800362a: 4603 mov r3, r0 + 800362c: 2b00 cmp r3, #0 + 800362e: f000 8458 beq.w 8003ee2 { icd_str->triangle_coef = fdata; - 800357a: 683b ldr r3, [r7, #0] - 800357c: 6c7a ldr r2, [r7, #68] @ 0x44 - 800357e: 625a str r2, [r3, #36] @ 0x24 + 8003632: 683b ldr r3, [r7, #0] + 8003634: 6c7a ldr r2, [r7, #68] @ 0x44 + 8003636: 625a str r2, [r3, #36] @ 0x24 } } break; - 8003580: f000 bc1b b.w 8003dba + 8003638: f000 bc53 b.w 8003ee2 //start_up_time case 0x05: { uint8_t idata = unpackUint8(&buf[2]); - 8003584: 687b ldr r3, [r7, #4] - 8003586: 3302 adds r3, #2 - 8003588: 4618 mov r0, r3 - 800358a: f7ff fe95 bl 80032b8 - 800358e: 4603 mov r3, r0 - 8003590: 72fb strb r3, [r7, #11] + 800363c: 687b ldr r3, [r7, #4] + 800363e: 3302 adds r3, #2 + 8003640: 4618 mov r0, r3 + 8003642: f7ff fe95 bl 8003370 + 8003646: 4603 mov r3, r0 + 8003648: 727b strb r3, [r7, #9] if (check_uint8(idata, 0, 2)) - 8003592: 7afb ldrb r3, [r7, #11] - 8003594: 2202 movs r2, #2 - 8003596: 2100 movs r1, #0 - 8003598: 4618 mov r0, r3 - 800359a: f7ff fea0 bl 80032de - 800359e: 4603 mov r3, r0 - 80035a0: 2b00 cmp r3, #0 - 80035a2: f000 840c beq.w 8003dbe + 800364a: 7a7b ldrb r3, [r7, #9] + 800364c: 2202 movs r2, #2 + 800364e: 2100 movs r1, #0 + 8003650: 4618 mov r0, r3 + 8003652: f7ff fea0 bl 8003396 + 8003656: 4603 mov r3, r0 + 8003658: 2b00 cmp r3, #0 + 800365a: f000 8444 beq.w 8003ee6 { icd_str->work_set_mode = idata; - 80035a6: 683b ldr r3, [r7, #0] - 80035a8: 7afa ldrb r2, [r7, #11] - 80035aa: 701a strb r2, [r3, #0] + 800365e: 683b ldr r3, [r7, #0] + 8003660: 7a7a ldrb r2, [r7, #9] + 8003662: 701a strb r2, [r3, #0] //fixme тут нужно написать сброс всего и вся if (idata == Monitor) - 80035ac: 7afb ldrb r3, [r7, #11] - 80035ae: 2b00 cmp r3, #0 - 80035b0: f040 8405 bne.w 8003dbe + 8003664: 7a7b ldrb r3, [r7, #9] + 8003666: 2b00 cmp r3, #0 + 8003668: f040 843d bne.w 8003ee6 { icd_str->fibr_cnt = 0; - 80035b4: 683b ldr r3, [r7, #0] - 80035b6: 2200 movs r2, #0 - 80035b8: f883 208e strb.w r2, [r3, #142] @ 0x8e + 800366c: 683b ldr r3, [r7, #0] + 800366e: 2200 movs r2, #0 + 8003670: f883 208e strb.w r2, [r3, #142] @ 0x8e icd_str->tachy_2_cnt = 0; - 80035bc: 683b ldr r3, [r7, #0] - 80035be: 2200 movs r2, #0 - 80035c0: f883 208f strb.w r2, [r3, #143] @ 0x8f + 8003674: 683b ldr r3, [r7, #0] + 8003676: 2200 movs r2, #0 + 8003678: f883 208f strb.w r2, [r3, #143] @ 0x8f icd_str->tachy_1_cnt = 0; - 80035c4: 683b ldr r3, [r7, #0] - 80035c6: 2200 movs r2, #0 - 80035c8: f883 2090 strb.w r2, [r3, #144] @ 0x90 + 800367c: 683b ldr r3, [r7, #0] + 800367e: 2200 movs r2, #0 + 8003680: f883 2090 strb.w r2, [r3, #144] @ 0x90 icd_str->fibr_cnt = 0; - 80035cc: 683b ldr r3, [r7, #0] - 80035ce: 2200 movs r2, #0 - 80035d0: f883 208e strb.w r2, [r3, #142] @ 0x8e + 8003684: 683b ldr r3, [r7, #0] + 8003686: 2200 movs r2, #0 + 8003688: f883 208e strb.w r2, [r3, #142] @ 0x8e } } } break; - 80035d4: e3f3 b.n 8003dbe + 800368c: f000 bc2b b.w 8003ee6 //base_time case 0x06: { uint16_t idata = unpackUint16(&buf[2]); - 80035d6: 687b ldr r3, [r7, #4] - 80035d8: 3302 adds r3, #2 - 80035da: 4618 mov r0, r3 - 80035dc: f7ff fe36 bl 800324c - 80035e0: 4603 mov r3, r0 - 80035e2: 81bb strh r3, [r7, #12] + 8003690: 687b ldr r3, [r7, #4] + 8003692: 3302 adds r3, #2 + 8003694: 4618 mov r0, r3 + 8003696: f7ff fe35 bl 8003304 + 800369a: 4603 mov r3, r0 + 800369c: 817b strh r3, [r7, #10] // min max???? const 300 if (check_uint16(idata, 100, 400)) - 80035e4: 89bb ldrh r3, [r7, #12] - 80035e6: f44f 72c8 mov.w r2, #400 @ 0x190 - 80035ea: 2164 movs r1, #100 @ 0x64 - 80035ec: 4618 mov r0, r3 - 80035ee: f7ff fe49 bl 8003284 - 80035f2: 4603 mov r3, r0 - 80035f4: 2b00 cmp r3, #0 - 80035f6: f000 83e4 beq.w 8003dc2 + 800369e: 897b ldrh r3, [r7, #10] + 80036a0: f44f 72c8 mov.w r2, #400 @ 0x190 + 80036a4: 2164 movs r1, #100 @ 0x64 + 80036a6: 4618 mov r0, r3 + 80036a8: f7ff fe48 bl 800333c + 80036ac: 4603 mov r3, r0 + 80036ae: 2b00 cmp r3, #0 + 80036b0: f000 841b beq.w 8003eea { icd_str->base_time = idata / 5; - 80035fa: 89bb ldrh r3, [r7, #12] - 80035fc: 4a31 ldr r2, [pc, #196] @ (80036c4 ) - 80035fe: fba2 2303 umull r2, r3, r2, r3 - 8003602: 089b lsrs r3, r3, #2 - 8003604: b29a uxth r2, r3 - 8003606: 683b ldr r3, [r7, #0] - 8003608: 85da strh r2, [r3, #46] @ 0x2e + 80036b4: 897b ldrh r3, [r7, #10] + 80036b6: 4a32 ldr r2, [pc, #200] @ (8003780 ) + 80036b8: fba2 2303 umull r2, r3, r2, r3 + 80036bc: 089b lsrs r3, r3, #2 + 80036be: b29a uxth r2, r3 + 80036c0: 683b ldr r3, [r7, #0] + 80036c2: 85da strh r2, [r3, #46] @ 0x2e } } break; - 800360a: e3da b.n 8003dc2 + 80036c4: f000 bc11 b.w 8003eea //square_time case 0x07: { uint16_t idata = unpackUint16(&buf[2]); - 800360c: 687b ldr r3, [r7, #4] - 800360e: 3302 adds r3, #2 - 8003610: 4618 mov r0, r3 - 8003612: f7ff fe1b bl 800324c - 8003616: 4603 mov r3, r0 - 8003618: 81fb strh r3, [r7, #14] + 80036c8: 687b ldr r3, [r7, #4] + 80036ca: 3302 adds r3, #2 + 80036cc: 4618 mov r0, r3 + 80036ce: f7ff fe19 bl 8003304 + 80036d2: 4603 mov r3, r0 + 80036d4: 81bb strh r3, [r7, #12] // 350 if (check_uint16(idata, 300, 400)) - 800361a: 89fb ldrh r3, [r7, #14] - 800361c: f44f 72c8 mov.w r2, #400 @ 0x190 - 8003620: f44f 7196 mov.w r1, #300 @ 0x12c - 8003624: 4618 mov r0, r3 - 8003626: f7ff fe2d bl 8003284 - 800362a: 4603 mov r3, r0 - 800362c: 2b00 cmp r3, #0 - 800362e: f000 83ca beq.w 8003dc6 + 80036d6: 89bb ldrh r3, [r7, #12] + 80036d8: f44f 72c8 mov.w r2, #400 @ 0x190 + 80036dc: f44f 7196 mov.w r1, #300 @ 0x12c + 80036e0: 4618 mov r0, r3 + 80036e2: f7ff fe2b bl 800333c + 80036e6: 4603 mov r3, r0 + 80036e8: 2b00 cmp r3, #0 + 80036ea: f000 8400 beq.w 8003eee { icd_str->square_time = idata / 5; - 8003632: 89fb ldrh r3, [r7, #14] - 8003634: 4a23 ldr r2, [pc, #140] @ (80036c4 ) - 8003636: fba2 2303 umull r2, r3, r2, r3 - 800363a: 089b lsrs r3, r3, #2 - 800363c: b29a uxth r2, r3 - 800363e: 683b ldr r3, [r7, #0] - 8003640: 865a strh r2, [r3, #50] @ 0x32 + 80036ee: 89bb ldrh r3, [r7, #12] + 80036f0: 4a23 ldr r2, [pc, #140] @ (8003780 ) + 80036f2: fba2 2303 umull r2, r3, r2, r3 + 80036f6: 089b lsrs r3, r3, #2 + 80036f8: b29a uxth r2, r3 + 80036fa: 683b ldr r3, [r7, #0] + 80036fc: 865a strh r2, [r3, #50] @ 0x32 } } break; - 8003642: e3c0 b.n 8003dc6 + 80036fe: e3f6 b.n 8003eee } break; //triangle_step_time сделаю тут максимальное время на цикл лучше case 0x09: { uint16_t idata = unpackUint16(&buf[2]); - 8003644: 687b ldr r3, [r7, #4] - 8003646: 3302 adds r3, #2 - 8003648: 4618 mov r0, r3 - 800364a: f7ff fdff bl 800324c - 800364e: 4603 mov r3, r0 - 8003650: 823b strh r3, [r7, #16] + 8003700: 687b ldr r3, [r7, #4] + 8003702: 3302 adds r3, #2 + 8003704: 4618 mov r0, r3 + 8003706: f7ff fdfd bl 8003304 + 800370a: 4603 mov r3, r0 + 800370c: 81fb strh r3, [r7, #14] if (check_uint16(idata, 500, 2000)) //границы берём из графического интерфейса лучше переделатьь в дефайны - 8003652: 8a3b ldrh r3, [r7, #16] - 8003654: f44f 62fa mov.w r2, #2000 @ 0x7d0 - 8003658: f44f 71fa mov.w r1, #500 @ 0x1f4 - 800365c: 4618 mov r0, r3 - 800365e: f7ff fe11 bl 8003284 - 8003662: 4603 mov r3, r0 - 8003664: 2b00 cmp r3, #0 - 8003666: f000 83b0 beq.w 8003dca + 800370e: 89fb ldrh r3, [r7, #14] + 8003710: f44f 62fa mov.w r2, #2000 @ 0x7d0 + 8003714: f44f 71fa mov.w r1, #500 @ 0x1f4 + 8003718: 4618 mov r0, r3 + 800371a: f7ff fe0f bl 800333c + 800371e: 4603 mov r3, r0 + 8003720: 2b00 cmp r3, #0 + 8003722: f000 83e6 beq.w 8003ef2 { icd_str->max_time = idata / 5; - 800366a: 8a3b ldrh r3, [r7, #16] - 800366c: 4a15 ldr r2, [pc, #84] @ (80036c4 ) - 800366e: fba2 2303 umull r2, r3, r2, r3 - 8003672: 089b lsrs r3, r3, #2 - 8003674: b29a uxth r2, r3 - 8003676: 683b ldr r3, [r7, #0] - 8003678: f8a3 2048 strh.w r2, [r3, #72] @ 0x48 + 8003726: 89fb ldrh r3, [r7, #14] + 8003728: 4a15 ldr r2, [pc, #84] @ (8003780 ) + 800372a: fba2 2303 umull r2, r3, r2, r3 + 800372e: 089b lsrs r3, r3, #2 + 8003730: b29a uxth r2, r3 + 8003732: 683b ldr r3, [r7, #0] + 8003734: f8a3 2048 strh.w r2, [r3, #72] @ 0x48 // if(check_uint16(idata, 40, 60)) // { // icd_str->triangle_step_time = idata; // } } break; - 800367c: e3a5 b.n 8003dca + 8003738: e3db b.n 8003ef2 } break; //max_time case 0x0D: { uint16_t idata = unpackUint16(&buf[2]); - 800367e: 687b ldr r3, [r7, #4] - 8003680: 3302 adds r3, #2 - 8003682: 4618 mov r0, r3 - 8003684: f7ff fde2 bl 800324c - 8003688: 4603 mov r3, r0 - 800368a: 827b strh r3, [r7, #18] + 800373a: 687b ldr r3, [r7, #4] + 800373c: 3302 adds r3, #2 + 800373e: 4618 mov r0, r3 + 8003740: f7ff fde0 bl 8003304 + 8003744: 4603 mov r3, r0 + 8003746: 823b strh r3, [r7, #16] if (check_uint16(idata, 120, 150)) //границы берём из графического интерфейса лучше переделатьь в дефайны - 800368c: 8a7b ldrh r3, [r7, #18] - 800368e: 2296 movs r2, #150 @ 0x96 - 8003690: 2178 movs r1, #120 @ 0x78 - 8003692: 4618 mov r0, r3 - 8003694: f7ff fdf6 bl 8003284 - 8003698: 4603 mov r3, r0 - 800369a: 2b00 cmp r3, #0 - 800369c: f000 8397 beq.w 8003dce + 8003748: 8a3b ldrh r3, [r7, #16] + 800374a: 2296 movs r2, #150 @ 0x96 + 800374c: 2178 movs r1, #120 @ 0x78 + 800374e: 4618 mov r0, r3 + 8003750: f7ff fdf4 bl 800333c + 8003754: 4603 mov r3, r0 + 8003756: 2b00 cmp r3, #0 + 8003758: f000 83cd beq.w 8003ef6 { icd_str->max_search_time = idata / 5; - 80036a0: 8a7b ldrh r3, [r7, #18] - 80036a2: 4a08 ldr r2, [pc, #32] @ (80036c4 ) - 80036a4: fba2 2303 umull r2, r3, r2, r3 - 80036a8: 089b lsrs r3, r3, #2 - 80036aa: b29a uxth r2, r3 - 80036ac: 683b ldr r3, [r7, #0] - 80036ae: 861a strh r2, [r3, #48] @ 0x30 + 800375c: 8a3b ldrh r3, [r7, #16] + 800375e: 4a08 ldr r2, [pc, #32] @ (8003780 ) + 8003760: fba2 2303 umull r2, r3, r2, r3 + 8003764: 089b lsrs r3, r3, #2 + 8003766: b29a uxth r2, r3 + 8003768: 683b ldr r3, [r7, #0] + 800376a: 861a strh r2, [r3, #48] @ 0x30 } } break; - 80036b0: e38d b.n 8003dce - 80036b2: bf00 nop - 80036b4: bf800000 .word 0xbf800000 - 80036b8: 3dcccccd .word 0x3dcccccd - 80036bc: 3f666666 .word 0x3f666666 - 80036c0: 3f4ccccd .word 0x3f4ccccd - 80036c4: cccccccd .word 0xcccccccd + 800376c: e3c3 b.n 8003ef6 + 800376e: bf00 nop + 8003770: bf800000 .word 0xbf800000 + 8003774: 3dcccccd .word 0x3dcccccd + 8003778: 3f666666 .word 0x3f666666 + 800377c: 3f4ccccd .word 0x3f4ccccd + 8003780: cccccccd .word 0xcccccccd + //bool LV_on + case 0x0E: + { + uint8_t idata = unpackUint8(&buf[2]); + 8003784: 687b ldr r3, [r7, #4] + 8003786: 3302 adds r3, #2 + 8003788: 4618 mov r0, r3 + 800378a: f7ff fdf1 bl 8003370 + 800378e: 4603 mov r3, r0 + 8003790: 74bb strb r3, [r7, #18] + if (check_uint8(idata, 0, 1)) + 8003792: 7cbb ldrb r3, [r7, #18] + 8003794: 2201 movs r2, #1 + 8003796: 2100 movs r1, #0 + 8003798: 4618 mov r0, r3 + 800379a: f7ff fdfc bl 8003396 + 800379e: 4603 mov r3, r0 + 80037a0: 2b00 cmp r3, #0 + 80037a2: f000 83aa beq.w 8003efa + { + icd_str->LV_on = (bool) idata; + 80037a6: 7cbb ldrb r3, [r7, #18] + 80037a8: 2b00 cmp r3, #0 + 80037aa: bf14 ite ne + 80037ac: 2301 movne r3, #1 + 80037ae: 2300 moveq r3, #0 + 80037b0: b2da uxtb r2, r3 + 80037b2: 683b ldr r3, [r7, #0] + 80037b4: f883 2068 strb.w r2, [r3, #104] @ 0x68 + } + } break; + 80037b8: e39f b.n 8003efa + //bool HV_on + case 0x0F: + { + uint8_t idata = unpackUint8(&buf[2]); + 80037ba: 687b ldr r3, [r7, #4] + 80037bc: 3302 adds r3, #2 + 80037be: 4618 mov r0, r3 + 80037c0: f7ff fdd6 bl 8003370 + 80037c4: 4603 mov r3, r0 + 80037c6: 74fb strb r3, [r7, #19] + if (check_uint8(idata, 0, 1)) + 80037c8: 7cfb ldrb r3, [r7, #19] + 80037ca: 2201 movs r2, #1 + 80037cc: 2100 movs r1, #0 + 80037ce: 4618 mov r0, r3 + 80037d0: f7ff fde1 bl 8003396 + 80037d4: 4603 mov r3, r0 + 80037d6: 2b00 cmp r3, #0 + 80037d8: f000 8391 beq.w 8003efe + { + icd_str->HV_on = (bool) idata; + 80037dc: 7cfb ldrb r3, [r7, #19] + 80037de: 2b00 cmp r3, #0 + 80037e0: bf14 ite ne + 80037e2: 2301 movne r3, #1 + 80037e4: 2300 moveq r3, #0 + 80037e6: b2da uxtb r2, r3 + 80037e8: 683b ldr r3, [r7, #0] + 80037ea: f883 2069 strb.w r2, [r3, #105] @ 0x69 + } + } + break; + 80037ee: e386 b.n 8003efe //fibr_tres case 0x10: { uint16_t idata = unpackUint16(&buf[2]); - 80036c8: 687b ldr r3, [r7, #4] - 80036ca: 3302 adds r3, #2 - 80036cc: 4618 mov r0, r3 - 80036ce: f7ff fdbd bl 800324c - 80036d2: 4603 mov r3, r0 - 80036d4: 82bb strh r3, [r7, #20] + 80037f0: 687b ldr r3, [r7, #4] + 80037f2: 3302 adds r3, #2 + 80037f4: 4618 mov r0, r3 + 80037f6: f7ff fd85 bl 8003304 + 80037fa: 4603 mov r3, r0 + 80037fc: 82bb strh r3, [r7, #20] if (check_uint16(idata, FIBR_PERIOD_MIN, FIBR_PERIOD_MAX)) - 80036d6: 8abb ldrh r3, [r7, #20] - 80036d8: f44f 72af mov.w r2, #350 @ 0x15e - 80036dc: 21fa movs r1, #250 @ 0xfa - 80036de: 4618 mov r0, r3 - 80036e0: f7ff fdd0 bl 8003284 - 80036e4: 4603 mov r3, r0 - 80036e6: 2b00 cmp r3, #0 - 80036e8: f000 8373 beq.w 8003dd2 + 80037fe: 8abb ldrh r3, [r7, #20] + 8003800: f44f 72af mov.w r2, #350 @ 0x15e + 8003804: 21fa movs r1, #250 @ 0xfa + 8003806: 4618 mov r0, r3 + 8003808: f7ff fd98 bl 800333c + 800380c: 4603 mov r3, r0 + 800380e: 2b00 cmp r3, #0 + 8003810: f000 8377 beq.w 8003f02 { idata /= 5; - 80036ec: 8abb ldrh r3, [r7, #20] - 80036ee: 4abc ldr r2, [pc, #752] @ (80039e0 ) - 80036f0: fba2 2303 umull r2, r3, r2, r3 - 80036f4: 089b lsrs r3, r3, #2 - 80036f6: 82bb strh r3, [r7, #20] + 8003814: 8abb ldrh r3, [r7, #20] + 8003816: 4abc ldr r2, [pc, #752] @ (8003b08 ) + 8003818: fba2 2303 umull r2, r3, r2, r3 + 800381c: 089b lsrs r3, r3, #2 + 800381e: 82bb strh r3, [r7, #20] //если меньше тахи2 и тахи 1 if ((idata < icd_str->tachy_2_tres) && (idata < icd_str->tachy_1_tres)) - 80036f8: 683b ldr r3, [r7, #0] - 80036fa: f8b3 3082 ldrh.w r3, [r3, #130] @ 0x82 - 80036fe: 8aba ldrh r2, [r7, #20] - 8003700: 429a cmp r2, r3 - 8003702: f080 8366 bcs.w 8003dd2 - 8003706: 683b ldr r3, [r7, #0] - 8003708: f8b3 3084 ldrh.w r3, [r3, #132] @ 0x84 - 800370c: 8aba ldrh r2, [r7, #20] - 800370e: 429a cmp r2, r3 - 8003710: f080 835f bcs.w 8003dd2 + 8003820: 683b ldr r3, [r7, #0] + 8003822: f8b3 3082 ldrh.w r3, [r3, #130] @ 0x82 + 8003826: 8aba ldrh r2, [r7, #20] + 8003828: 429a cmp r2, r3 + 800382a: f080 836a bcs.w 8003f02 + 800382e: 683b ldr r3, [r7, #0] + 8003830: f8b3 3084 ldrh.w r3, [r3, #132] @ 0x84 + 8003834: 8aba ldrh r2, [r7, #20] + 8003836: 429a cmp r2, r3 + 8003838: f080 8363 bcs.w 8003f02 // проверили что меньше максимального порога icd_str->fibr_tres = idata; - 8003714: 683b ldr r3, [r7, #0] - 8003716: 8aba ldrh r2, [r7, #20] - 8003718: f8a3 2080 strh.w r2, [r3, #128] @ 0x80 + 800383c: 683b ldr r3, [r7, #0] + 800383e: 8aba ldrh r2, [r7, #20] + 8003840: f8a3 2080 strh.w r2, [r3, #128] @ 0x80 } } break; - 800371c: e359 b.n 8003dd2 + 8003844: e35d b.n 8003f02 //tachy_2_tres case 0x11: { uint16_t idata = unpackUint16(&buf[2]); - 800371e: 687b ldr r3, [r7, #4] - 8003720: 3302 adds r3, #2 - 8003722: 4618 mov r0, r3 - 8003724: f7ff fd92 bl 800324c - 8003728: 4603 mov r3, r0 - 800372a: 82fb strh r3, [r7, #22] + 8003846: 687b ldr r3, [r7, #4] + 8003848: 3302 adds r3, #2 + 800384a: 4618 mov r0, r3 + 800384c: f7ff fd5a bl 8003304 + 8003850: 4603 mov r3, r0 + 8003852: 82fb strh r3, [r7, #22] if (check_uint16(idata, TACHY_2_PERIOD_MIN, TACHY_2_PERIOD_MAX)) - 800372c: 8afb ldrh r3, [r7, #22] - 800372e: f44f 72c8 mov.w r2, #400 @ 0x190 - 8003732: f44f 7196 mov.w r1, #300 @ 0x12c - 8003736: 4618 mov r0, r3 - 8003738: f7ff fda4 bl 8003284 - 800373c: 4603 mov r3, r0 - 800373e: 2b00 cmp r3, #0 - 8003740: f000 8349 beq.w 8003dd6 + 8003854: 8afb ldrh r3, [r7, #22] + 8003856: f44f 72c8 mov.w r2, #400 @ 0x190 + 800385a: f44f 7196 mov.w r1, #300 @ 0x12c + 800385e: 4618 mov r0, r3 + 8003860: f7ff fd6c bl 800333c + 8003864: 4603 mov r3, r0 + 8003866: 2b00 cmp r3, #0 + 8003868: f000 834d beq.w 8003f06 { idata /= 5; - 8003744: 8afb ldrh r3, [r7, #22] - 8003746: 4aa6 ldr r2, [pc, #664] @ (80039e0 ) - 8003748: fba2 2303 umull r2, r3, r2, r3 - 800374c: 089b lsrs r3, r3, #2 - 800374e: 82fb strh r3, [r7, #22] + 800386c: 8afb ldrh r3, [r7, #22] + 800386e: 4aa6 ldr r2, [pc, #664] @ (8003b08 ) + 8003870: fba2 2303 umull r2, r3, r2, r3 + 8003874: 089b lsrs r3, r3, #2 + 8003876: 82fb strh r3, [r7, #22] //если больше фибр и меньше тахи 1 if ((idata > icd_str->fibr_tres) && (idata < icd_str->tachy_1_tres)) - 8003750: 683b ldr r3, [r7, #0] - 8003752: f8b3 3080 ldrh.w r3, [r3, #128] @ 0x80 - 8003756: 8afa ldrh r2, [r7, #22] - 8003758: 429a cmp r2, r3 - 800375a: f240 833c bls.w 8003dd6 - 800375e: 683b ldr r3, [r7, #0] - 8003760: f8b3 3084 ldrh.w r3, [r3, #132] @ 0x84 - 8003764: 8afa ldrh r2, [r7, #22] - 8003766: 429a cmp r2, r3 - 8003768: f080 8335 bcs.w 8003dd6 + 8003878: 683b ldr r3, [r7, #0] + 800387a: f8b3 3080 ldrh.w r3, [r3, #128] @ 0x80 + 800387e: 8afa ldrh r2, [r7, #22] + 8003880: 429a cmp r2, r3 + 8003882: f240 8340 bls.w 8003f06 + 8003886: 683b ldr r3, [r7, #0] + 8003888: f8b3 3084 ldrh.w r3, [r3, #132] @ 0x84 + 800388c: 8afa ldrh r2, [r7, #22] + 800388e: 429a cmp r2, r3 + 8003890: f080 8339 bcs.w 8003f06 // проверили что меньше максимального порога icd_str->tachy_2_tres = idata; - 800376c: 683b ldr r3, [r7, #0] - 800376e: 8afa ldrh r2, [r7, #22] - 8003770: f8a3 2082 strh.w r2, [r3, #130] @ 0x82 + 8003894: 683b ldr r3, [r7, #0] + 8003896: 8afa ldrh r2, [r7, #22] + 8003898: f8a3 2082 strh.w r2, [r3, #130] @ 0x82 } } break; - 8003774: e32f b.n 8003dd6 + 800389c: e333 b.n 8003f06 //tachy_1_tres case 0x12: { uint16_t idata = unpackUint16(&buf[2]); - 8003776: 687b ldr r3, [r7, #4] - 8003778: 3302 adds r3, #2 - 800377a: 4618 mov r0, r3 - 800377c: f7ff fd66 bl 800324c - 8003780: 4603 mov r3, r0 - 8003782: 833b strh r3, [r7, #24] + 800389e: 687b ldr r3, [r7, #4] + 80038a0: 3302 adds r3, #2 + 80038a2: 4618 mov r0, r3 + 80038a4: f7ff fd2e bl 8003304 + 80038a8: 4603 mov r3, r0 + 80038aa: 833b strh r3, [r7, #24] if (check_uint16(idata, TACHY_1_PERIOD_MIN, TACHY_1_PERIOD_MAX)) - 8003784: 8b3b ldrh r3, [r7, #24] - 8003786: f44f 72e1 mov.w r2, #450 @ 0x1c2 - 800378a: f44f 71af mov.w r1, #350 @ 0x15e - 800378e: 4618 mov r0, r3 - 8003790: f7ff fd78 bl 8003284 - 8003794: 4603 mov r3, r0 - 8003796: 2b00 cmp r3, #0 - 8003798: f000 831f beq.w 8003dda + 80038ac: 8b3b ldrh r3, [r7, #24] + 80038ae: f44f 72e1 mov.w r2, #450 @ 0x1c2 + 80038b2: f44f 71af mov.w r1, #350 @ 0x15e + 80038b6: 4618 mov r0, r3 + 80038b8: f7ff fd40 bl 800333c + 80038bc: 4603 mov r3, r0 + 80038be: 2b00 cmp r3, #0 + 80038c0: f000 8323 beq.w 8003f0a { idata /= 5; - 800379c: 8b3b ldrh r3, [r7, #24] - 800379e: 4a90 ldr r2, [pc, #576] @ (80039e0 ) - 80037a0: fba2 2303 umull r2, r3, r2, r3 - 80037a4: 089b lsrs r3, r3, #2 - 80037a6: 833b strh r3, [r7, #24] + 80038c4: 8b3b ldrh r3, [r7, #24] + 80038c6: 4a90 ldr r2, [pc, #576] @ (8003b08 ) + 80038c8: fba2 2303 umull r2, r3, r2, r3 + 80038cc: 089b lsrs r3, r3, #2 + 80038ce: 833b strh r3, [r7, #24] //если больше фибр и больше тахи 2 if ((idata > icd_str->fibr_tres) && (idata > icd_str->tachy_2_tres)) - 80037a8: 683b ldr r3, [r7, #0] - 80037aa: f8b3 3080 ldrh.w r3, [r3, #128] @ 0x80 - 80037ae: 8b3a ldrh r2, [r7, #24] - 80037b0: 429a cmp r2, r3 - 80037b2: f240 8312 bls.w 8003dda - 80037b6: 683b ldr r3, [r7, #0] - 80037b8: f8b3 3082 ldrh.w r3, [r3, #130] @ 0x82 - 80037bc: 8b3a ldrh r2, [r7, #24] - 80037be: 429a cmp r2, r3 - 80037c0: f240 830b bls.w 8003dda + 80038d0: 683b ldr r3, [r7, #0] + 80038d2: f8b3 3080 ldrh.w r3, [r3, #128] @ 0x80 + 80038d6: 8b3a ldrh r2, [r7, #24] + 80038d8: 429a cmp r2, r3 + 80038da: f240 8316 bls.w 8003f0a + 80038de: 683b ldr r3, [r7, #0] + 80038e0: f8b3 3082 ldrh.w r3, [r3, #130] @ 0x82 + 80038e4: 8b3a ldrh r2, [r7, #24] + 80038e6: 429a cmp r2, r3 + 80038e8: f240 830f bls.w 8003f0a // проверили что меньше максимального порога icd_str->tachy_1_tres = idata; - 80037c4: 683b ldr r3, [r7, #0] - 80037c6: 8b3a ldrh r2, [r7, #24] - 80037c8: f8a3 2084 strh.w r2, [r3, #132] @ 0x84 + 80038ec: 683b ldr r3, [r7, #0] + 80038ee: 8b3a ldrh r2, [r7, #24] + 80038f0: f8a3 2084 strh.w r2, [r3, #132] @ 0x84 } } break; - 80037cc: e305 b.n 8003dda + 80038f4: e309 b.n 8003f0a //fibr_max_tres case 0x13: { uint8_t idata = unpackUint8(&buf[2]); - 80037ce: 687b ldr r3, [r7, #4] - 80037d0: 3302 adds r3, #2 - 80037d2: 4618 mov r0, r3 - 80037d4: f7ff fd70 bl 80032b8 - 80037d8: 4603 mov r3, r0 - 80037da: 76bb strb r3, [r7, #26] + 80038f6: 687b ldr r3, [r7, #4] + 80038f8: 3302 adds r3, #2 + 80038fa: 4618 mov r0, r3 + 80038fc: f7ff fd38 bl 8003370 + 8003900: 4603 mov r3, r0 + 8003902: 76bb strb r3, [r7, #26] if (check_uint8(idata, 10, 60)) - 80037dc: 7ebb ldrb r3, [r7, #26] - 80037de: 223c movs r2, #60 @ 0x3c - 80037e0: 210a movs r1, #10 - 80037e2: 4618 mov r0, r3 - 80037e4: f7ff fd7b bl 80032de - 80037e8: 4603 mov r3, r0 - 80037ea: 2b00 cmp r3, #0 - 80037ec: f000 82f7 beq.w 8003dde + 8003904: 7ebb ldrb r3, [r7, #26] + 8003906: 223c movs r2, #60 @ 0x3c + 8003908: 210a movs r1, #10 + 800390a: 4618 mov r0, r3 + 800390c: f7ff fd43 bl 8003396 + 8003910: 4603 mov r3, r0 + 8003912: 2b00 cmp r3, #0 + 8003914: f000 82fb beq.w 8003f0e { icd_str->fibr_max_tres = idata; - 80037f0: 683b ldr r3, [r7, #0] - 80037f2: 7eba ldrb r2, [r7, #26] - 80037f4: f883 2098 strb.w r2, [r3, #152] @ 0x98 + 8003918: 683b ldr r3, [r7, #0] + 800391a: 7eba ldrb r2, [r7, #26] + 800391c: f883 2098 strb.w r2, [r3, #152] @ 0x98 } } break; - 80037f8: e2f1 b.n 8003dde + 8003920: e2f5 b.n 8003f0e //hv_step_number case 0x14: { uint8_t idata = unpackUint8(&buf[2]); - 80037fa: 687b ldr r3, [r7, #4] - 80037fc: 3302 adds r3, #2 - 80037fe: 4618 mov r0, r3 - 8003800: f7ff fd5a bl 80032b8 - 8003804: 4603 mov r3, r0 - 8003806: 76fb strb r3, [r7, #27] + 8003922: 687b ldr r3, [r7, #4] + 8003924: 3302 adds r3, #2 + 8003926: 4618 mov r0, r3 + 8003928: f7ff fd22 bl 8003370 + 800392c: 4603 mov r3, r0 + 800392e: 76fb strb r3, [r7, #27] if (check_uint8(idata, 1, 8)) - 8003808: 7efb ldrb r3, [r7, #27] - 800380a: 2208 movs r2, #8 - 800380c: 2101 movs r1, #1 - 800380e: 4618 mov r0, r3 - 8003810: f7ff fd65 bl 80032de - 8003814: 4603 mov r3, r0 - 8003816: 2b00 cmp r3, #0 - 8003818: f000 82e3 beq.w 8003de2 + 8003930: 7efb ldrb r3, [r7, #27] + 8003932: 2208 movs r2, #8 + 8003934: 2101 movs r1, #1 + 8003936: 4618 mov r0, r3 + 8003938: f7ff fd2d bl 8003396 + 800393c: 4603 mov r3, r0 + 800393e: 2b00 cmp r3, #0 + 8003940: f000 82e7 beq.w 8003f12 { icd_str->hv_step_number = idata; - 800381c: 683b ldr r3, [r7, #0] - 800381e: 7efa ldrb r2, [r7, #27] - 8003820: f883 209c strb.w r2, [r3, #156] @ 0x9c + 8003944: 683b ldr r3, [r7, #0] + 8003946: 7efa ldrb r2, [r7, #27] + 8003948: f883 209c strb.w r2, [r3, #156] @ 0x9c } } break; - 8003824: e2dd b.n 8003de2 + 800394c: e2e1 b.n 8003f12 //min_energy case 0x15: { uint16_t idata = unpackUint16(&buf[2]); - 8003826: 687b ldr r3, [r7, #4] - 8003828: 3302 adds r3, #2 - 800382a: 4618 mov r0, r3 - 800382c: f7ff fd0e bl 800324c - 8003830: 4603 mov r3, r0 - 8003832: 83bb strh r3, [r7, #28] + 800394e: 687b ldr r3, [r7, #4] + 8003950: 3302 adds r3, #2 + 8003952: 4618 mov r0, r3 + 8003954: f7ff fcd6 bl 8003304 + 8003958: 4603 mov r3, r0 + 800395a: 83bb strh r3, [r7, #28] if (check_uint16(idata, 1, 70)) - 8003834: 8bbb ldrh r3, [r7, #28] - 8003836: 2246 movs r2, #70 @ 0x46 - 8003838: 2101 movs r1, #1 - 800383a: 4618 mov r0, r3 - 800383c: f7ff fd22 bl 8003284 - 8003840: 4603 mov r3, r0 - 8003842: 2b00 cmp r3, #0 - 8003844: f000 82cf beq.w 8003de6 + 800395c: 8bbb ldrh r3, [r7, #28] + 800395e: 2246 movs r2, #70 @ 0x46 + 8003960: 2101 movs r1, #1 + 8003962: 4618 mov r0, r3 + 8003964: f7ff fcea bl 800333c + 8003968: 4603 mov r3, r0 + 800396a: 2b00 cmp r3, #0 + 800396c: f000 82d3 beq.w 8003f16 { icd_str->min_energy = idata * 10; - 8003848: 8bbb ldrh r3, [r7, #28] - 800384a: 461a mov r2, r3 - 800384c: 0092 lsls r2, r2, #2 - 800384e: 4413 add r3, r2 - 8003850: 005b lsls r3, r3, #1 - 8003852: b29a uxth r2, r3 - 8003854: 683b ldr r3, [r7, #0] - 8003856: f8a3 20a8 strh.w r2, [r3, #168] @ 0xa8 + 8003970: 8bbb ldrh r3, [r7, #28] + 8003972: 461a mov r2, r3 + 8003974: 0092 lsls r2, r2, #2 + 8003976: 4413 add r3, r2 + 8003978: 005b lsls r3, r3, #1 + 800397a: b29a uxth r2, r3 + 800397c: 683b ldr r3, [r7, #0] + 800397e: f8a3 20a8 strh.w r2, [r3, #168] @ 0xa8 } } break; - 800385a: e2c4 b.n 8003de6 + 8003982: e2c8 b.n 8003f16 //max_energy case 0x16: { uint16_t idata = unpackUint16(&buf[2]); - 800385c: 687b ldr r3, [r7, #4] - 800385e: 3302 adds r3, #2 - 8003860: 4618 mov r0, r3 - 8003862: f7ff fcf3 bl 800324c - 8003866: 4603 mov r3, r0 - 8003868: 83fb strh r3, [r7, #30] + 8003984: 687b ldr r3, [r7, #4] + 8003986: 3302 adds r3, #2 + 8003988: 4618 mov r0, r3 + 800398a: f7ff fcbb bl 8003304 + 800398e: 4603 mov r3, r0 + 8003990: 83fb strh r3, [r7, #30] if (check_uint16(idata, 1, 70)) - 800386a: 8bfb ldrh r3, [r7, #30] - 800386c: 2246 movs r2, #70 @ 0x46 - 800386e: 2101 movs r1, #1 - 8003870: 4618 mov r0, r3 - 8003872: f7ff fd07 bl 8003284 - 8003876: 4603 mov r3, r0 - 8003878: 2b00 cmp r3, #0 - 800387a: f000 82b6 beq.w 8003dea + 8003992: 8bfb ldrh r3, [r7, #30] + 8003994: 2246 movs r2, #70 @ 0x46 + 8003996: 2101 movs r1, #1 + 8003998: 4618 mov r0, r3 + 800399a: f7ff fccf bl 800333c + 800399e: 4603 mov r3, r0 + 80039a0: 2b00 cmp r3, #0 + 80039a2: f000 82ba beq.w 8003f1a { if (idata * 10 >= icd_str->min_energy) - 800387e: 8bfa ldrh r2, [r7, #30] - 8003880: 4613 mov r3, r2 - 8003882: 009b lsls r3, r3, #2 - 8003884: 4413 add r3, r2 - 8003886: 005b lsls r3, r3, #1 - 8003888: 461a mov r2, r3 - 800388a: 683b ldr r3, [r7, #0] - 800388c: f8b3 30a8 ldrh.w r3, [r3, #168] @ 0xa8 - 8003890: 429a cmp r2, r3 - 8003892: f2c0 82aa blt.w 8003dea + 80039a6: 8bfa ldrh r2, [r7, #30] + 80039a8: 4613 mov r3, r2 + 80039aa: 009b lsls r3, r3, #2 + 80039ac: 4413 add r3, r2 + 80039ae: 005b lsls r3, r3, #1 + 80039b0: 461a mov r2, r3 + 80039b2: 683b ldr r3, [r7, #0] + 80039b4: f8b3 30a8 ldrh.w r3, [r3, #168] @ 0xa8 + 80039b8: 429a cmp r2, r3 + 80039ba: f2c0 82ae blt.w 8003f1a icd_str->max_energy = idata * 10; - 8003896: 8bfb ldrh r3, [r7, #30] - 8003898: 461a mov r2, r3 - 800389a: 0092 lsls r2, r2, #2 - 800389c: 4413 add r3, r2 - 800389e: 005b lsls r3, r3, #1 - 80038a0: b29a uxth r2, r3 - 80038a2: 683b ldr r3, [r7, #0] - 80038a4: f8a3 20ac strh.w r2, [r3, #172] @ 0xac + 80039be: 8bfb ldrh r3, [r7, #30] + 80039c0: 461a mov r2, r3 + 80039c2: 0092 lsls r2, r2, #2 + 80039c4: 4413 add r3, r2 + 80039c6: 005b lsls r3, r3, #1 + 80039c8: b29a uxth r2, r3 + 80039ca: 683b ldr r3, [r7, #0] + 80039cc: f8a3 20ac strh.w r2, [r3, #172] @ 0xac } } break; - 80038a8: e29f b.n 8003dea + 80039d0: e2a3 b.n 8003f1a } break; //hv_blind_time case 0x18: { uint16_t idata = unpackUint16(&buf[2]); - 80038aa: 687b ldr r3, [r7, #4] - 80038ac: 3302 adds r3, #2 - 80038ae: 4618 mov r0, r3 - 80038b0: f7ff fccc bl 800324c - 80038b4: 4603 mov r3, r0 - 80038b6: 843b strh r3, [r7, #32] + 80039d2: 687b ldr r3, [r7, #4] + 80039d4: 3302 adds r3, #2 + 80039d6: 4618 mov r0, r3 + 80039d8: f7ff fc94 bl 8003304 + 80039dc: 4603 mov r3, r0 + 80039de: 843b strh r3, [r7, #32] if (check_uint16(idata, 100, 5000)) - 80038b8: 8c3b ldrh r3, [r7, #32] - 80038ba: f241 3288 movw r2, #5000 @ 0x1388 - 80038be: 2164 movs r1, #100 @ 0x64 - 80038c0: 4618 mov r0, r3 - 80038c2: f7ff fcdf bl 8003284 - 80038c6: 4603 mov r3, r0 - 80038c8: 2b00 cmp r3, #0 - 80038ca: f000 8290 beq.w 8003dee + 80039e0: 8c3b ldrh r3, [r7, #32] + 80039e2: f241 3288 movw r2, #5000 @ 0x1388 + 80039e6: 2164 movs r1, #100 @ 0x64 + 80039e8: 4618 mov r0, r3 + 80039ea: f7ff fca7 bl 800333c + 80039ee: 4603 mov r3, r0 + 80039f0: 2b00 cmp r3, #0 + 80039f2: f000 8294 beq.w 8003f1e { icd_str->hv_blind_time = idata / 5; - 80038ce: 8c3b ldrh r3, [r7, #32] - 80038d0: 4a43 ldr r2, [pc, #268] @ (80039e0 ) - 80038d2: fba2 2303 umull r2, r3, r2, r3 - 80038d6: 089b lsrs r3, r3, #2 - 80038d8: b29a uxth r2, r3 - 80038da: 683b ldr r3, [r7, #0] - 80038dc: f8a3 20ae strh.w r2, [r3, #174] @ 0xae + 80039f6: 8c3b ldrh r3, [r7, #32] + 80039f8: 4a43 ldr r2, [pc, #268] @ (8003b08 ) + 80039fa: fba2 2303 umull r2, r3, r2, r3 + 80039fe: 089b lsrs r3, r3, #2 + 8003a00: b29a uxth r2, r3 + 8003a02: 683b ldr r3, [r7, #0] + 8003a04: f8a3 20ae strh.w r2, [r3, #174] @ 0xae } } break; - 80038e0: e285 b.n 8003dee + 8003a08: e289 b.n 8003f1e //redet_num case 0x19: { uint8_t idata = unpackUint8(&buf[2]); - 80038e2: 687b ldr r3, [r7, #4] - 80038e4: 3302 adds r3, #2 - 80038e6: 4618 mov r0, r3 - 80038e8: f7ff fce6 bl 80032b8 - 80038ec: 4603 mov r3, r0 - 80038ee: f887 3022 strb.w r3, [r7, #34] @ 0x22 + 8003a0a: 687b ldr r3, [r7, #4] + 8003a0c: 3302 adds r3, #2 + 8003a0e: 4618 mov r0, r3 + 8003a10: f7ff fcae bl 8003370 + 8003a14: 4603 mov r3, r0 + 8003a16: f887 3022 strb.w r3, [r7, #34] @ 0x22 if (check_uint8(idata, 4, 10)) - 80038f2: f897 3022 ldrb.w r3, [r7, #34] @ 0x22 - 80038f6: 220a movs r2, #10 - 80038f8: 2104 movs r1, #4 - 80038fa: 4618 mov r0, r3 - 80038fc: f7ff fcef bl 80032de - 8003900: 4603 mov r3, r0 - 8003902: 2b00 cmp r3, #0 - 8003904: f000 8275 beq.w 8003df2 + 8003a1a: f897 3022 ldrb.w r3, [r7, #34] @ 0x22 + 8003a1e: 220a movs r2, #10 + 8003a20: 2104 movs r1, #4 + 8003a22: 4618 mov r0, r3 + 8003a24: f7ff fcb7 bl 8003396 + 8003a28: 4603 mov r3, r0 + 8003a2a: 2b00 cmp r3, #0 + 8003a2c: f000 8279 beq.w 8003f22 { icd_str->redet_num = idata; - 8003908: 683b ldr r3, [r7, #0] - 800390a: f897 2022 ldrb.w r2, [r7, #34] @ 0x22 - 800390e: f883 20b0 strb.w r2, [r3, #176] @ 0xb0 + 8003a30: 683b ldr r3, [r7, #0] + 8003a32: f897 2022 ldrb.w r2, [r7, #34] @ 0x22 + 8003a36: f883 20b0 strb.w r2, [r3, #176] @ 0xb0 } } break; - 8003912: e26e b.n 8003df2 + 8003a3a: e272 b.n 8003f22 //redet_bad case 0x1A: { uint8_t idata = unpackUint8(&buf[2]); - 8003914: 687b ldr r3, [r7, #4] - 8003916: 3302 adds r3, #2 - 8003918: 4618 mov r0, r3 - 800391a: f7ff fccd bl 80032b8 - 800391e: 4603 mov r3, r0 - 8003920: f887 3023 strb.w r3, [r7, #35] @ 0x23 + 8003a3c: 687b ldr r3, [r7, #4] + 8003a3e: 3302 adds r3, #2 + 8003a40: 4618 mov r0, r3 + 8003a42: f7ff fc95 bl 8003370 + 8003a46: 4603 mov r3, r0 + 8003a48: f887 3023 strb.w r3, [r7, #35] @ 0x23 if (check_uint8(idata, 2, 8)) - 8003924: f897 3023 ldrb.w r3, [r7, #35] @ 0x23 - 8003928: 2208 movs r2, #8 - 800392a: 2102 movs r1, #2 - 800392c: 4618 mov r0, r3 - 800392e: f7ff fcd6 bl 80032de - 8003932: 4603 mov r3, r0 - 8003934: 2b00 cmp r3, #0 - 8003936: f000 825e beq.w 8003df6 + 8003a4c: f897 3023 ldrb.w r3, [r7, #35] @ 0x23 + 8003a50: 2208 movs r2, #8 + 8003a52: 2102 movs r1, #2 + 8003a54: 4618 mov r0, r3 + 8003a56: f7ff fc9e bl 8003396 + 8003a5a: 4603 mov r3, r0 + 8003a5c: 2b00 cmp r3, #0 + 8003a5e: f000 8262 beq.w 8003f26 { icd_str->redet_bad = idata; - 800393a: 683b ldr r3, [r7, #0] - 800393c: f897 2023 ldrb.w r2, [r7, #35] @ 0x23 - 8003940: f883 20b1 strb.w r2, [r3, #177] @ 0xb1 + 8003a62: 683b ldr r3, [r7, #0] + 8003a64: f897 2023 ldrb.w r2, [r7, #35] @ 0x23 + 8003a68: f883 20b1 strb.w r2, [r3, #177] @ 0xb1 } } break; - 8003944: e257 b.n 8003df6 + 8003a6c: e25b b.n 8003f26 //standby_timer case 0x1B: { uint32_t idata = unpackUint32(&buf[2]); - 8003946: 687b ldr r3, [r7, #4] - 8003948: 3302 adds r3, #2 - 800394a: 4618 mov r0, r3 - 800394c: f7ff fce1 bl 8003312 - 8003950: 6278 str r0, [r7, #36] @ 0x24 + 8003a6e: 687b ldr r3, [r7, #4] + 8003a70: 3302 adds r3, #2 + 8003a72: 4618 mov r0, r3 + 8003a74: f7ff fca9 bl 80033ca + 8003a78: 6278 str r0, [r7, #36] @ 0x24 if (check_uint32(idata, 10, 3600)) - 8003952: f44f 6261 mov.w r2, #3600 @ 0xe10 - 8003956: 210a movs r1, #10 - 8003958: 6a78 ldr r0, [r7, #36] @ 0x24 - 800395a: f7ff fcfb bl 8003354 - 800395e: 4603 mov r3, r0 - 8003960: 2b00 cmp r3, #0 - 8003962: f000 824a beq.w 8003dfa + 8003a7a: f44f 6261 mov.w r2, #3600 @ 0xe10 + 8003a7e: 210a movs r1, #10 + 8003a80: 6a78 ldr r0, [r7, #36] @ 0x24 + 8003a82: f7ff fcc3 bl 800340c + 8003a86: 4603 mov r3, r0 + 8003a88: 2b00 cmp r3, #0 + 8003a8a: f000 824e beq.w 8003f2a { icd_str->standby_timer = idata * 1000; - 8003966: 6a7b ldr r3, [r7, #36] @ 0x24 - 8003968: f44f 727a mov.w r2, #1000 @ 0x3e8 - 800396c: fb03 f202 mul.w r2, r3, r2 - 8003970: 683b ldr r3, [r7, #0] - 8003972: f8c3 20b4 str.w r2, [r3, #180] @ 0xb4 + 8003a8e: 6a7b ldr r3, [r7, #36] @ 0x24 + 8003a90: f44f 727a mov.w r2, #1000 @ 0x3e8 + 8003a94: fb03 f202 mul.w r2, r3, r2 + 8003a98: 683b ldr r3, [r7, #0] + 8003a9a: f8c3 20b4 str.w r2, [r3, #180] @ 0xb4 } } break; - 8003976: e240 b.n 8003dfa + 8003a9e: e244 b.n 8003f2a case 0x1C: { uint8_t idata = unpackUint8(&buf[2]); - 8003978: 687b ldr r3, [r7, #4] - 800397a: 3302 adds r3, #2 - 800397c: 4618 mov r0, r3 - 800397e: f7ff fc9b bl 80032b8 - 8003982: 4603 mov r3, r0 - 8003984: f887 302b strb.w r3, [r7, #43] @ 0x2b + 8003aa0: 687b ldr r3, [r7, #4] + 8003aa2: 3302 adds r3, #2 + 8003aa4: 4618 mov r0, r3 + 8003aa6: f7ff fc63 bl 8003370 + 8003aaa: 4603 mov r3, r0 + 8003aac: f887 302b strb.w r3, [r7, #43] @ 0x2b if (check_uint8(idata, 0, 255)) - 8003988: f897 302b ldrb.w r3, [r7, #43] @ 0x2b - 800398c: 22ff movs r2, #255 @ 0xff - 800398e: 2100 movs r1, #0 - 8003990: 4618 mov r0, r3 - 8003992: f7ff fca4 bl 80032de - 8003996: 4603 mov r3, r0 - 8003998: 2b00 cmp r3, #0 - 800399a: f000 8230 beq.w 8003dfe + 8003ab0: f897 302b ldrb.w r3, [r7, #43] @ 0x2b + 8003ab4: 22ff movs r2, #255 @ 0xff + 8003ab6: 2100 movs r1, #0 + 8003ab8: 4618 mov r0, r3 + 8003aba: f7ff fc6c bl 8003396 + 8003abe: 4603 mov r3, r0 + 8003ac0: 2b00 cmp r3, #0 + 8003ac2: f000 8234 beq.w 8003f2e { icd_str->spi_pot_set = idata; - 800399e: 683b ldr r3, [r7, #0] - 80039a0: f897 202b ldrb.w r2, [r7, #43] @ 0x2b - 80039a4: f883 20cc strb.w r2, [r3, #204] @ 0xcc + 8003ac6: 683b ldr r3, [r7, #0] + 8003ac8: f897 202b ldrb.w r2, [r7, #43] @ 0x2b + 8003acc: f883 20cc strb.w r2, [r3, #204] @ 0xcc } } break; - 80039a8: e229 b.n 8003dfe + 8003ad0: e22d b.n 8003f2e case 0x1D: { uint8_t idata = unpackUint8(&buf[2]); - 80039aa: 687b ldr r3, [r7, #4] - 80039ac: 3302 adds r3, #2 - 80039ae: 4618 mov r0, r3 - 80039b0: f7ff fc82 bl 80032b8 - 80039b4: 4603 mov r3, r0 - 80039b6: f887 302c strb.w r3, [r7, #44] @ 0x2c + 8003ad2: 687b ldr r3, [r7, #4] + 8003ad4: 3302 adds r3, #2 + 8003ad6: 4618 mov r0, r3 + 8003ad8: f7ff fc4a bl 8003370 + 8003adc: 4603 mov r3, r0 + 8003ade: f887 302c strb.w r3, [r7, #44] @ 0x2c if (check_uint8(idata, 0, 255)) - 80039ba: f897 302c ldrb.w r3, [r7, #44] @ 0x2c - 80039be: 22ff movs r2, #255 @ 0xff - 80039c0: 2100 movs r1, #0 - 80039c2: 4618 mov r0, r3 - 80039c4: f7ff fc8b bl 80032de - 80039c8: 4603 mov r3, r0 - 80039ca: 2b00 cmp r3, #0 - 80039cc: f000 8219 beq.w 8003e02 + 8003ae2: f897 302c ldrb.w r3, [r7, #44] @ 0x2c + 8003ae6: 22ff movs r2, #255 @ 0xff + 8003ae8: 2100 movs r1, #0 + 8003aea: 4618 mov r0, r3 + 8003aec: f7ff fc53 bl 8003396 + 8003af0: 4603 mov r3, r0 + 8003af2: 2b00 cmp r3, #0 + 8003af4: f000 821d beq.w 8003f32 { if (idata > 0) - 80039d0: f897 302c ldrb.w r3, [r7, #44] @ 0x2c - 80039d4: 2b00 cmp r3, #0 - 80039d6: f000 8214 beq.w 8003e02 + 8003af8: f897 302c ldrb.w r3, [r7, #44] @ 0x2c + 8003afc: 2b00 cmp r3, #0 + 8003afe: f000 8218 beq.w 8003f32 NVIC_SystemReset(); //перезагрузка - 80039da: f7ff fbd7 bl 800318c <__NVIC_SystemReset> - 80039de: bf00 nop - 80039e0: cccccccd .word 0xcccccccd + 8003b02: f7ff fb9f bl 8003244 <__NVIC_SystemReset> + 8003b06: bf00 nop + 8003b08: cccccccd .word 0xcccccccd } break; //с фильтром без фильтра case 0x1E: { uint8_t idata = unpackUint8(&buf[2]); - 80039e4: 687b ldr r3, [r7, #4] - 80039e6: 3302 adds r3, #2 - 80039e8: 4618 mov r0, r3 - 80039ea: f7ff fc65 bl 80032b8 - 80039ee: 4603 mov r3, r0 - 80039f0: f887 302d strb.w r3, [r7, #45] @ 0x2d + 8003b0c: 687b ldr r3, [r7, #4] + 8003b0e: 3302 adds r3, #2 + 8003b10: 4618 mov r0, r3 + 8003b12: f7ff fc2d bl 8003370 + 8003b16: 4603 mov r3, r0 + 8003b18: f887 302d strb.w r3, [r7, #45] @ 0x2d if (check_uint8(idata, 0, 1)) - 80039f4: f897 302d ldrb.w r3, [r7, #45] @ 0x2d - 80039f8: 2201 movs r2, #1 - 80039fa: 2100 movs r1, #0 - 80039fc: 4618 mov r0, r3 - 80039fe: f7ff fc6e bl 80032de - 8003a02: 4603 mov r3, r0 - 8003a04: 2b00 cmp r3, #0 - 8003a06: f000 81fe beq.w 8003e06 + 8003b1c: f897 302d ldrb.w r3, [r7, #45] @ 0x2d + 8003b20: 2201 movs r2, #1 + 8003b22: 2100 movs r1, #0 + 8003b24: 4618 mov r0, r3 + 8003b26: f7ff fc36 bl 8003396 + 8003b2a: 4603 mov r3, r0 + 8003b2c: 2b00 cmp r3, #0 + 8003b2e: f000 8202 beq.w 8003f36 { icd_str->filter_on = (bool) idata; - 8003a0a: f897 302d ldrb.w r3, [r7, #45] @ 0x2d - 8003a0e: 2b00 cmp r3, #0 - 8003a10: bf14 ite ne - 8003a12: 2301 movne r3, #1 - 8003a14: 2300 moveq r3, #0 - 8003a16: b2da uxtb r2, r3 - 8003a18: 683b ldr r3, [r7, #0] - 8003a1a: 711a strb r2, [r3, #4] + 8003b32: f897 302d ldrb.w r3, [r7, #45] @ 0x2d + 8003b36: 2b00 cmp r3, #0 + 8003b38: bf14 ite ne + 8003b3a: 2301 movne r3, #1 + 8003b3c: 2300 moveq r3, #0 + 8003b3e: b2da uxtb r2, r3 + 8003b40: 683b ldr r3, [r7, #0] + 8003b42: 711a strb r2, [r3, #4] } } break; - 8003a1c: e1f3 b.n 8003e06 + 8003b44: e1f7 b.n 8003f36 //с какой канал используем case 0x1F: { uint8_t idata = unpackUint8(&buf[2]); - 8003a1e: 687b ldr r3, [r7, #4] - 8003a20: 3302 adds r3, #2 - 8003a22: 4618 mov r0, r3 - 8003a24: f7ff fc48 bl 80032b8 - 8003a28: 4603 mov r3, r0 - 8003a2a: f887 302e strb.w r3, [r7, #46] @ 0x2e + 8003b46: 687b ldr r3, [r7, #4] + 8003b48: 3302 adds r3, #2 + 8003b4a: 4618 mov r0, r3 + 8003b4c: f7ff fc10 bl 8003370 + 8003b50: 4603 mov r3, r0 + 8003b52: f887 302e strb.w r3, [r7, #46] @ 0x2e if (check_uint8(idata, 0, 3)) - 8003a2e: f897 302e ldrb.w r3, [r7, #46] @ 0x2e - 8003a32: 2203 movs r2, #3 - 8003a34: 2100 movs r1, #0 - 8003a36: 4618 mov r0, r3 - 8003a38: f7ff fc51 bl 80032de - 8003a3c: 4603 mov r3, r0 - 8003a3e: 2b00 cmp r3, #0 - 8003a40: f000 81e3 beq.w 8003e0a + 8003b56: f897 302e ldrb.w r3, [r7, #46] @ 0x2e + 8003b5a: 2203 movs r2, #3 + 8003b5c: 2100 movs r1, #0 + 8003b5e: 4618 mov r0, r3 + 8003b60: f7ff fc19 bl 8003396 + 8003b64: 4603 mov r3, r0 + 8003b66: 2b00 cmp r3, #0 + 8003b68: f000 81e7 beq.w 8003f3a { icd_str->active_ch = idata; - 8003a44: 683b ldr r3, [r7, #0] - 8003a46: f897 202e ldrb.w r2, [r7, #46] @ 0x2e - 8003a4a: 715a strb r2, [r3, #5] + 8003b6c: 683b ldr r3, [r7, #0] + 8003b6e: f897 202e ldrb.w r2, [r7, #46] @ 0x2e + 8003b72: 715a strb r2, [r3, #5] } } break; - 8003a4c: e1dd b.n 8003e0a + 8003b74: e1e1 b.n 8003f3a //использование SD карты case 0x20: { uint8_t idata = unpackUint8(&buf[2]); - 8003a4e: 687b ldr r3, [r7, #4] - 8003a50: 3302 adds r3, #2 - 8003a52: 4618 mov r0, r3 - 8003a54: f7ff fc30 bl 80032b8 - 8003a58: 4603 mov r3, r0 - 8003a5a: f887 302f strb.w r3, [r7, #47] @ 0x2f + 8003b76: 687b ldr r3, [r7, #4] + 8003b78: 3302 adds r3, #2 + 8003b7a: 4618 mov r0, r3 + 8003b7c: f7ff fbf8 bl 8003370 + 8003b80: 4603 mov r3, r0 + 8003b82: f887 302f strb.w r3, [r7, #47] @ 0x2f if (check_uint8(idata, 0, 1)) - 8003a5e: f897 302f ldrb.w r3, [r7, #47] @ 0x2f - 8003a62: 2201 movs r2, #1 - 8003a64: 2100 movs r1, #0 - 8003a66: 4618 mov r0, r3 - 8003a68: f7ff fc39 bl 80032de - 8003a6c: 4603 mov r3, r0 - 8003a6e: 2b00 cmp r3, #0 - 8003a70: f000 81cd beq.w 8003e0e + 8003b86: f897 302f ldrb.w r3, [r7, #47] @ 0x2f + 8003b8a: 2201 movs r2, #1 + 8003b8c: 2100 movs r1, #0 + 8003b8e: 4618 mov r0, r3 + 8003b90: f7ff fc01 bl 8003396 + 8003b94: 4603 mov r3, r0 + 8003b96: 2b00 cmp r3, #0 + 8003b98: f000 81d1 beq.w 8003f3e { icd_str->sd_card = (bool) idata; - 8003a74: f897 302f ldrb.w r3, [r7, #47] @ 0x2f - 8003a78: 2b00 cmp r3, #0 - 8003a7a: bf14 ite ne - 8003a7c: 2301 movne r3, #1 - 8003a7e: 2300 moveq r3, #0 - 8003a80: b2da uxtb r2, r3 - 8003a82: 683b ldr r3, [r7, #0] - 8003a84: 719a strb r2, [r3, #6] + 8003b9c: f897 302f ldrb.w r3, [r7, #47] @ 0x2f + 8003ba0: 2b00 cmp r3, #0 + 8003ba2: bf14 ite ne + 8003ba4: 2301 movne r3, #1 + 8003ba6: 2300 moveq r3, #0 + 8003ba8: b2da uxtb r2, r3 + 8003baa: 683b ldr r3, [r7, #0] + 8003bac: 719a strb r2, [r3, #6] } } break; - 8003a86: e1c2 b.n 8003e0e + 8003bae: e1c6 b.n 8003f3e //вычитание постоянной составляющей case 0x21: { uint8_t idata = unpackUint8(&buf[2]); - 8003a88: 687b ldr r3, [r7, #4] - 8003a8a: 3302 adds r3, #2 - 8003a8c: 4618 mov r0, r3 - 8003a8e: f7ff fc13 bl 80032b8 - 8003a92: 4603 mov r3, r0 - 8003a94: f887 3030 strb.w r3, [r7, #48] @ 0x30 + 8003bb0: 687b ldr r3, [r7, #4] + 8003bb2: 3302 adds r3, #2 + 8003bb4: 4618 mov r0, r3 + 8003bb6: f7ff fbdb bl 8003370 + 8003bba: 4603 mov r3, r0 + 8003bbc: f887 3030 strb.w r3, [r7, #48] @ 0x30 if (check_uint8(idata, 0, 1)) - 8003a98: f897 3030 ldrb.w r3, [r7, #48] @ 0x30 - 8003a9c: 2201 movs r2, #1 - 8003a9e: 2100 movs r1, #0 - 8003aa0: 4618 mov r0, r3 - 8003aa2: f7ff fc1c bl 80032de - 8003aa6: 4603 mov r3, r0 - 8003aa8: 2b00 cmp r3, #0 - 8003aaa: f000 81b2 beq.w 8003e12 + 8003bc0: f897 3030 ldrb.w r3, [r7, #48] @ 0x30 + 8003bc4: 2201 movs r2, #1 + 8003bc6: 2100 movs r1, #0 + 8003bc8: 4618 mov r0, r3 + 8003bca: f7ff fbe4 bl 8003396 + 8003bce: 4603 mov r3, r0 + 8003bd0: 2b00 cmp r3, #0 + 8003bd2: f000 81b6 beq.w 8003f42 { icd_str->dc_cut = (bool) idata; - 8003aae: f897 3030 ldrb.w r3, [r7, #48] @ 0x30 - 8003ab2: 2b00 cmp r3, #0 - 8003ab4: bf14 ite ne - 8003ab6: 2301 movne r3, #1 - 8003ab8: 2300 moveq r3, #0 - 8003aba: b2da uxtb r2, r3 - 8003abc: 683b ldr r3, [r7, #0] - 8003abe: 71da strb r2, [r3, #7] + 8003bd6: f897 3030 ldrb.w r3, [r7, #48] @ 0x30 + 8003bda: 2b00 cmp r3, #0 + 8003bdc: bf14 ite ne + 8003bde: 2301 movne r3, #1 + 8003be0: 2300 moveq r3, #0 + 8003be2: b2da uxtb r2, r3 + 8003be4: 683b ldr r3, [r7, #0] + 8003be6: 71da strb r2, [r3, #7] } } break; - 8003ac0: e1a7 b.n 8003e12 + 8003be8: e1ab b.n 8003f42 //полярность низковольтной стимуляции case 0x22: { uint8_t idata = unpackUint8(&buf[2]); - 8003ac2: 687b ldr r3, [r7, #4] - 8003ac4: 3302 adds r3, #2 - 8003ac6: 4618 mov r0, r3 - 8003ac8: f7ff fbf6 bl 80032b8 - 8003acc: 4603 mov r3, r0 - 8003ace: f887 3032 strb.w r3, [r7, #50] @ 0x32 + 8003bea: 687b ldr r3, [r7, #4] + 8003bec: 3302 adds r3, #2 + 8003bee: 4618 mov r0, r3 + 8003bf0: f7ff fbbe bl 8003370 + 8003bf4: 4603 mov r3, r0 + 8003bf6: f887 3032 strb.w r3, [r7, #50] @ 0x32 if (check_uint8(idata, 0, 0x1)) - 8003ad2: f897 3032 ldrb.w r3, [r7, #50] @ 0x32 - 8003ad6: 2201 movs r2, #1 - 8003ad8: 2100 movs r1, #0 - 8003ada: 4618 mov r0, r3 - 8003adc: f7ff fbff bl 80032de - 8003ae0: 4603 mov r3, r0 - 8003ae2: 2b00 cmp r3, #0 - 8003ae4: d004 beq.n 8003af0 + 8003bfa: f897 3032 ldrb.w r3, [r7, #50] @ 0x32 + 8003bfe: 2201 movs r2, #1 + 8003c00: 2100 movs r1, #0 + 8003c02: 4618 mov r0, r3 + 8003c04: f7ff fbc7 bl 8003396 + 8003c08: 4603 mov r3, r0 + 8003c0a: 2b00 cmp r3, #0 + 8003c0c: d004 beq.n 8003c18 { icd_str->lv_polarity = idata; - 8003ae6: 683b ldr r3, [r7, #0] - 8003ae8: f897 2032 ldrb.w r2, [r7, #50] @ 0x32 - 8003aec: f883 2039 strb.w r2, [r3, #57] @ 0x39 + 8003c0e: 683b ldr r3, [r7, #0] + 8003c10: f897 2032 ldrb.w r2, [r7, #50] @ 0x32 + 8003c14: f883 2039 strb.w r2, [r3, #57] @ 0x39 } //режим низковольтной стимуляции case 0x23: { uint8_t idata = unpackUint8(&buf[2]); - 8003af0: 687b ldr r3, [r7, #4] - 8003af2: 3302 adds r3, #2 - 8003af4: 4618 mov r0, r3 - 8003af6: f7ff fbdf bl 80032b8 - 8003afa: 4603 mov r3, r0 - 8003afc: f887 3031 strb.w r3, [r7, #49] @ 0x31 + 8003c18: 687b ldr r3, [r7, #4] + 8003c1a: 3302 adds r3, #2 + 8003c1c: 4618 mov r0, r3 + 8003c1e: f7ff fba7 bl 8003370 + 8003c22: 4603 mov r3, r0 + 8003c24: f887 3031 strb.w r3, [r7, #49] @ 0x31 if (check_uint8(idata, 0, 0xF)) - 8003b00: f897 3031 ldrb.w r3, [r7, #49] @ 0x31 - 8003b04: 220f movs r2, #15 - 8003b06: 2100 movs r1, #0 - 8003b08: 4618 mov r0, r3 - 8003b0a: f7ff fbe8 bl 80032de - 8003b0e: 4603 mov r3, r0 - 8003b10: 2b00 cmp r3, #0 - 8003b12: f000 8180 beq.w 8003e16 + 8003c28: f897 3031 ldrb.w r3, [r7, #49] @ 0x31 + 8003c2c: 220f movs r2, #15 + 8003c2e: 2100 movs r1, #0 + 8003c30: 4618 mov r0, r3 + 8003c32: f7ff fbb0 bl 8003396 + 8003c36: 4603 mov r3, r0 + 8003c38: 2b00 cmp r3, #0 + 8003c3a: f000 8184 beq.w 8003f46 { icd_str->lv_mode = idata; - 8003b16: 683b ldr r3, [r7, #0] - 8003b18: f897 2031 ldrb.w r2, [r7, #49] @ 0x31 - 8003b1c: f883 203a strb.w r2, [r3, #58] @ 0x3a + 8003c3e: 683b ldr r3, [r7, #0] + 8003c40: f897 2031 ldrb.w r2, [r7, #49] @ 0x31 + 8003c44: f883 203a strb.w r2, [r3, #58] @ 0x3a } } break; - 8003b20: e179 b.n 8003e16 + 8003c48: e17d b.n 8003f46 //время импульса низковольной стимуляции 1-20(0,1-2мс) одна единица 0,1мс шаг 0.1мс case 0x24: { uint8_t idata = unpackUint8(&buf[2]); - 8003b22: 687b ldr r3, [r7, #4] - 8003b24: 3302 adds r3, #2 - 8003b26: 4618 mov r0, r3 - 8003b28: f7ff fbc6 bl 80032b8 - 8003b2c: 4603 mov r3, r0 - 8003b2e: f887 3033 strb.w r3, [r7, #51] @ 0x33 + 8003c4a: 687b ldr r3, [r7, #4] + 8003c4c: 3302 adds r3, #2 + 8003c4e: 4618 mov r0, r3 + 8003c50: f7ff fb8e bl 8003370 + 8003c54: 4603 mov r3, r0 + 8003c56: f887 3033 strb.w r3, [r7, #51] @ 0x33 if (check_uint8(idata, 1, 20)) - 8003b32: f897 3033 ldrb.w r3, [r7, #51] @ 0x33 - 8003b36: 2214 movs r2, #20 - 8003b38: 2101 movs r1, #1 - 8003b3a: 4618 mov r0, r3 - 8003b3c: f7ff fbcf bl 80032de - 8003b40: 4603 mov r3, r0 - 8003b42: 2b00 cmp r3, #0 - 8003b44: f000 8169 beq.w 8003e1a + 8003c5a: f897 3033 ldrb.w r3, [r7, #51] @ 0x33 + 8003c5e: 2214 movs r2, #20 + 8003c60: 2101 movs r1, #1 + 8003c62: 4618 mov r0, r3 + 8003c64: f7ff fb97 bl 8003396 + 8003c68: 4603 mov r3, r0 + 8003c6a: 2b00 cmp r3, #0 + 8003c6c: f000 816d beq.w 8003f4a { icd_str->lv_shock_time = idata; - 8003b48: 683b ldr r3, [r7, #0] - 8003b4a: f897 2033 ldrb.w r2, [r7, #51] @ 0x33 - 8003b4e: f883 203b strb.w r2, [r3, #59] @ 0x3b + 8003c70: 683b ldr r3, [r7, #0] + 8003c72: f897 2033 ldrb.w r2, [r7, #51] @ 0x33 + 8003c76: f883 203b strb.w r2, [r3, #59] @ 0x3b } } break; - 8003b52: e162 b.n 8003e1a + 8003c7a: e166 b.n 8003f4a //время стабилизации после удара низковольной стимуляции 0-20(0-20мс) одна единица 1мс шаг 1мс case 0x25: { uint8_t idata = unpackUint8(&buf[2]); - 8003b54: 687b ldr r3, [r7, #4] - 8003b56: 3302 adds r3, #2 - 8003b58: 4618 mov r0, r3 - 8003b5a: f7ff fbad bl 80032b8 - 8003b5e: 4603 mov r3, r0 - 8003b60: f887 3034 strb.w r3, [r7, #52] @ 0x34 + 8003c7c: 687b ldr r3, [r7, #4] + 8003c7e: 3302 adds r3, #2 + 8003c80: 4618 mov r0, r3 + 8003c82: f7ff fb75 bl 8003370 + 8003c86: 4603 mov r3, r0 + 8003c88: f887 3034 strb.w r3, [r7, #52] @ 0x34 if (check_uint8(idata, 0, 20)) - 8003b64: f897 3034 ldrb.w r3, [r7, #52] @ 0x34 - 8003b68: 2214 movs r2, #20 - 8003b6a: 2100 movs r1, #0 - 8003b6c: 4618 mov r0, r3 - 8003b6e: f7ff fbb6 bl 80032de - 8003b72: 4603 mov r3, r0 - 8003b74: 2b00 cmp r3, #0 - 8003b76: f000 8152 beq.w 8003e1e + 8003c8c: f897 3034 ldrb.w r3, [r7, #52] @ 0x34 + 8003c90: 2214 movs r2, #20 + 8003c92: 2100 movs r1, #0 + 8003c94: 4618 mov r0, r3 + 8003c96: f7ff fb7e bl 8003396 + 8003c9a: 4603 mov r3, r0 + 8003c9c: 2b00 cmp r3, #0 + 8003c9e: f000 8156 beq.w 8003f4e { icd_str->lv_relax_time = idata; - 8003b7a: 683b ldr r3, [r7, #0] - 8003b7c: f897 2034 ldrb.w r2, [r7, #52] @ 0x34 - 8003b80: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8003ca2: 683b ldr r3, [r7, #0] + 8003ca4: f897 2034 ldrb.w r2, [r7, #52] @ 0x34 + 8003ca8: f883 203c strb.w r2, [r3, #60] @ 0x3c } } break; - 8003b84: e14b b.n 8003e1e + 8003cac: e14f b.n 8003f4e //какое напряжение у импульсов 10-80(1,0-8,0В) одна единица 0,1В шаг 0,1В case 0x26: { uint8_t idata = unpackUint8(&buf[2]); - 8003b86: 687b ldr r3, [r7, #4] - 8003b88: 3302 adds r3, #2 - 8003b8a: 4618 mov r0, r3 - 8003b8c: f7ff fb94 bl 80032b8 - 8003b90: 4603 mov r3, r0 - 8003b92: f887 3035 strb.w r3, [r7, #53] @ 0x35 + 8003cae: 687b ldr r3, [r7, #4] + 8003cb0: 3302 adds r3, #2 + 8003cb2: 4618 mov r0, r3 + 8003cb4: f7ff fb5c bl 8003370 + 8003cb8: 4603 mov r3, r0 + 8003cba: f887 3035 strb.w r3, [r7, #53] @ 0x35 if (check_uint8(idata, 10, 80)) - 8003b96: f897 3035 ldrb.w r3, [r7, #53] @ 0x35 - 8003b9a: 2250 movs r2, #80 @ 0x50 - 8003b9c: 210a movs r1, #10 - 8003b9e: 4618 mov r0, r3 - 8003ba0: f7ff fb9d bl 80032de - 8003ba4: 4603 mov r3, r0 - 8003ba6: 2b00 cmp r3, #0 - 8003ba8: f000 813b beq.w 8003e22 + 8003cbe: f897 3035 ldrb.w r3, [r7, #53] @ 0x35 + 8003cc2: 2250 movs r2, #80 @ 0x50 + 8003cc4: 210a movs r1, #10 + 8003cc6: 4618 mov r0, r3 + 8003cc8: f7ff fb65 bl 8003396 + 8003ccc: 4603 mov r3, r0 + 8003cce: 2b00 cmp r3, #0 + 8003cd0: f000 813f beq.w 8003f52 { icd_str->lv_voltage = idata; - 8003bac: 683b ldr r3, [r7, #0] - 8003bae: f897 2035 ldrb.w r2, [r7, #53] @ 0x35 - 8003bb2: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8003cd4: 683b ldr r3, [r7, #0] + 8003cd6: f897 2035 ldrb.w r2, [r7, #53] @ 0x35 + 8003cda: f883 203d strb.w r2, [r3, #61] @ 0x3d } } break; - 8003bb6: e134 b.n 8003e22 + 8003cde: e138 b.n 8003f52 //сколько импульсов в одной пачке 5-50 одна единица 1 импульс шаг 1 импульс case 0x27: { uint8_t idata = unpackUint8(&buf[2]); - 8003bb8: 687b ldr r3, [r7, #4] - 8003bba: 3302 adds r3, #2 - 8003bbc: 4618 mov r0, r3 - 8003bbe: f7ff fb7b bl 80032b8 - 8003bc2: 4603 mov r3, r0 - 8003bc4: f887 3036 strb.w r3, [r7, #54] @ 0x36 + 8003ce0: 687b ldr r3, [r7, #4] + 8003ce2: 3302 adds r3, #2 + 8003ce4: 4618 mov r0, r3 + 8003ce6: f7ff fb43 bl 8003370 + 8003cea: 4603 mov r3, r0 + 8003cec: f887 3036 strb.w r3, [r7, #54] @ 0x36 if (check_uint8(idata, 5, 50)) - 8003bc8: f897 3036 ldrb.w r3, [r7, #54] @ 0x36 - 8003bcc: 2232 movs r2, #50 @ 0x32 - 8003bce: 2105 movs r1, #5 - 8003bd0: 4618 mov r0, r3 - 8003bd2: f7ff fb84 bl 80032de - 8003bd6: 4603 mov r3, r0 - 8003bd8: 2b00 cmp r3, #0 - 8003bda: f000 8124 beq.w 8003e26 + 8003cf0: f897 3036 ldrb.w r3, [r7, #54] @ 0x36 + 8003cf4: 2232 movs r2, #50 @ 0x32 + 8003cf6: 2105 movs r1, #5 + 8003cf8: 4618 mov r0, r3 + 8003cfa: f7ff fb4c bl 8003396 + 8003cfe: 4603 mov r3, r0 + 8003d00: 2b00 cmp r3, #0 + 8003d02: f000 8128 beq.w 8003f56 { icd_str->BURST_cnt = idata; - 8003bde: 683b ldr r3, [r7, #0] - 8003be0: f897 2036 ldrb.w r2, [r7, #54] @ 0x36 - 8003be4: f883 203e strb.w r2, [r3, #62] @ 0x3e + 8003d06: 683b ldr r3, [r7, #0] + 8003d08: f897 2036 ldrb.w r2, [r7, #54] @ 0x36 + 8003d0c: f883 203e strb.w r2, [r3, #62] @ 0x3e } } break; - 8003be8: e11d b.n 8003e26 + 8003d10: e121 b.n 8003f56 //какое напряжение у импульсов 10-80(1,0-8,0В) одна единица 0,1В шаг 0,1В case 0x28: { uint8_t idata = unpackUint8(&buf[2]); - 8003bea: 687b ldr r3, [r7, #4] - 8003bec: 3302 adds r3, #2 - 8003bee: 4618 mov r0, r3 - 8003bf0: f7ff fb62 bl 80032b8 - 8003bf4: 4603 mov r3, r0 - 8003bf6: f887 3037 strb.w r3, [r7, #55] @ 0x37 + 8003d12: 687b ldr r3, [r7, #4] + 8003d14: 3302 adds r3, #2 + 8003d16: 4618 mov r0, r3 + 8003d18: f7ff fb2a bl 8003370 + 8003d1c: 4603 mov r3, r0 + 8003d1e: f887 3037 strb.w r3, [r7, #55] @ 0x37 if (check_uint8(idata, 10, 80)) - 8003bfa: f897 3037 ldrb.w r3, [r7, #55] @ 0x37 - 8003bfe: 2250 movs r2, #80 @ 0x50 - 8003c00: 210a movs r1, #10 - 8003c02: 4618 mov r0, r3 - 8003c04: f7ff fb6b bl 80032de - 8003c08: 4603 mov r3, r0 - 8003c0a: 2b00 cmp r3, #0 - 8003c0c: f000 810d beq.w 8003e2a + 8003d22: f897 3037 ldrb.w r3, [r7, #55] @ 0x37 + 8003d26: 2250 movs r2, #80 @ 0x50 + 8003d28: 210a movs r1, #10 + 8003d2a: 4618 mov r0, r3 + 8003d2c: f7ff fb33 bl 8003396 + 8003d30: 4603 mov r3, r0 + 8003d32: 2b00 cmp r3, #0 + 8003d34: f000 8111 beq.w 8003f5a { icd_str->BURST_voltage = idata; - 8003c10: 683b ldr r3, [r7, #0] - 8003c12: f897 2037 ldrb.w r2, [r7, #55] @ 0x37 - 8003c16: f883 203f strb.w r2, [r3, #63] @ 0x3f + 8003d38: 683b ldr r3, [r7, #0] + 8003d3a: f897 2037 ldrb.w r2, [r7, #55] @ 0x37 + 8003d3e: f883 203f strb.w r2, [r3, #63] @ 0x3f } } break; - 8003c1a: e106 b.n 8003e2a + 8003d42: e10a b.n 8003f5a //период следования импульсов в мс 150-500мс одна единица 1мс шаг 10 мс на ползунке case 0x29: { uint32_t idata = unpackUint32(&buf[2]); - 8003c1c: 687b ldr r3, [r7, #4] - 8003c1e: 3302 adds r3, #2 - 8003c20: 4618 mov r0, r3 - 8003c22: f7ff fb76 bl 8003312 - 8003c26: 63b8 str r0, [r7, #56] @ 0x38 + 8003d44: 687b ldr r3, [r7, #4] + 8003d46: 3302 adds r3, #2 + 8003d48: 4618 mov r0, r3 + 8003d4a: f7ff fb3e bl 80033ca + 8003d4e: 63b8 str r0, [r7, #56] @ 0x38 if (check_uint16(idata, 150, 500)) - 8003c28: 6bbb ldr r3, [r7, #56] @ 0x38 - 8003c2a: b29b uxth r3, r3 - 8003c2c: f44f 72fa mov.w r2, #500 @ 0x1f4 - 8003c30: 2196 movs r1, #150 @ 0x96 - 8003c32: 4618 mov r0, r3 - 8003c34: f7ff fb26 bl 8003284 - 8003c38: 4603 mov r3, r0 - 8003c3a: 2b00 cmp r3, #0 - 8003c3c: f000 80f7 beq.w 8003e2e + 8003d50: 6bbb ldr r3, [r7, #56] @ 0x38 + 8003d52: b29b uxth r3, r3 + 8003d54: f44f 72fa mov.w r2, #500 @ 0x1f4 + 8003d58: 2196 movs r1, #150 @ 0x96 + 8003d5a: 4618 mov r0, r3 + 8003d5c: f7ff faee bl 800333c + 8003d60: 4603 mov r3, r0 + 8003d62: 2b00 cmp r3, #0 + 8003d64: f000 80fb beq.w 8003f5e { icd_str->BURST_period = idata; - 8003c40: 6bbb ldr r3, [r7, #56] @ 0x38 - 8003c42: b29a uxth r2, r3 - 8003c44: 683b ldr r3, [r7, #0] - 8003c46: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 + 8003d68: 6bbb ldr r3, [r7, #56] @ 0x38 + 8003d6a: b29a uxth r2, r3 + 8003d6c: 683b ldr r3, [r7, #0] + 8003d6e: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 } } break; - 8003c4a: e0f0 b.n 8003e2e + 8003d72: e0f4 b.n 8003f5e //новое про высокое напряжение //полярность стимуляции case 0x30: { uint8_t idata = unpackUint8(&buf[2]); - 8003c4c: 687b ldr r3, [r7, #4] - 8003c4e: 3302 adds r3, #2 - 8003c50: 4618 mov r0, r3 - 8003c52: f7ff fb31 bl 80032b8 - 8003c56: 4603 mov r3, r0 - 8003c58: f887 303d strb.w r3, [r7, #61] @ 0x3d + 8003d74: 687b ldr r3, [r7, #4] + 8003d76: 3302 adds r3, #2 + 8003d78: 4618 mov r0, r3 + 8003d7a: f7ff faf9 bl 8003370 + 8003d7e: 4603 mov r3, r0 + 8003d80: f887 303d strb.w r3, [r7, #61] @ 0x3d if (check_uint8(idata, 0, 2)) - 8003c5c: f897 303d ldrb.w r3, [r7, #61] @ 0x3d - 8003c60: 2202 movs r2, #2 - 8003c62: 2100 movs r1, #0 - 8003c64: 4618 mov r0, r3 - 8003c66: f7ff fb3a bl 80032de - 8003c6a: 4603 mov r3, r0 - 8003c6c: 2b00 cmp r3, #0 - 8003c6e: f000 80e0 beq.w 8003e32 + 8003d84: f897 303d ldrb.w r3, [r7, #61] @ 0x3d + 8003d88: 2202 movs r2, #2 + 8003d8a: 2100 movs r1, #0 + 8003d8c: 4618 mov r0, r3 + 8003d8e: f7ff fb02 bl 8003396 + 8003d92: 4603 mov r3, r0 + 8003d94: 2b00 cmp r3, #0 + 8003d96: f000 80e4 beq.w 8003f62 { icd_str->hv_polarity = idata; - 8003c72: 683b ldr r3, [r7, #0] - 8003c74: f897 203d ldrb.w r2, [r7, #61] @ 0x3d - 8003c78: f883 209f strb.w r2, [r3, #159] @ 0x9f + 8003d9a: 683b ldr r3, [r7, #0] + 8003d9c: f897 203d ldrb.w r2, [r7, #61] @ 0x3d + 8003da0: f883 209f strb.w r2, [r3, #159] @ 0x9f } } break; - 8003c7c: e0d9 b.n 8003e32 + 8003da4: e0dd b.n 8003f62 //тип способа задания длительности импульса case 0x31: { uint8_t idata = unpackUint8(&buf[2]); - 8003c7e: 687b ldr r3, [r7, #4] - 8003c80: 3302 adds r3, #2 - 8003c82: 4618 mov r0, r3 - 8003c84: f7ff fb18 bl 80032b8 - 8003c88: 4603 mov r3, r0 - 8003c8a: f887 303e strb.w r3, [r7, #62] @ 0x3e + 8003da6: 687b ldr r3, [r7, #4] + 8003da8: 3302 adds r3, #2 + 8003daa: 4618 mov r0, r3 + 8003dac: f7ff fae0 bl 8003370 + 8003db0: 4603 mov r3, r0 + 8003db2: f887 303e strb.w r3, [r7, #62] @ 0x3e if (check_uint8(idata, 0, 2)) - 8003c8e: f897 303e ldrb.w r3, [r7, #62] @ 0x3e - 8003c92: 2202 movs r2, #2 - 8003c94: 2100 movs r1, #0 - 8003c96: 4618 mov r0, r3 - 8003c98: f7ff fb21 bl 80032de - 8003c9c: 4603 mov r3, r0 - 8003c9e: 2b00 cmp r3, #0 - 8003ca0: f000 80c9 beq.w 8003e36 + 8003db6: f897 303e ldrb.w r3, [r7, #62] @ 0x3e + 8003dba: 2202 movs r2, #2 + 8003dbc: 2100 movs r1, #0 + 8003dbe: 4618 mov r0, r3 + 8003dc0: f7ff fae9 bl 8003396 + 8003dc4: 4603 mov r3, r0 + 8003dc6: 2b00 cmp r3, #0 + 8003dc8: f000 80cd beq.w 8003f66 { icd_str->hv_mode = idata; - 8003ca4: 683b ldr r3, [r7, #0] - 8003ca6: f897 203e ldrb.w r2, [r7, #62] @ 0x3e - 8003caa: f883 20a0 strb.w r2, [r3, #160] @ 0xa0 + 8003dcc: 683b ldr r3, [r7, #0] + 8003dce: f897 203e ldrb.w r2, [r7, #62] @ 0x3e + 8003dd2: f883 20a0 strb.w r2, [r3, #160] @ 0xa0 } } break; - 8003cae: e0c2 b.n 8003e36 + 8003dd6: e0c6 b.n 8003f66 // время в десятых мс приходящееся на 1 фазу 30-120(3-12мс) одна единица 0,1мс case 0x32: { uint8_t idata = unpackUint8(&buf[2]); - 8003cb0: 687b ldr r3, [r7, #4] - 8003cb2: 3302 adds r3, #2 - 8003cb4: 4618 mov r0, r3 - 8003cb6: f7ff faff bl 80032b8 - 8003cba: 4603 mov r3, r0 - 8003cbc: f887 303f strb.w r3, [r7, #63] @ 0x3f + 8003dd8: 687b ldr r3, [r7, #4] + 8003dda: 3302 adds r3, #2 + 8003ddc: 4618 mov r0, r3 + 8003dde: f7ff fac7 bl 8003370 + 8003de2: 4603 mov r3, r0 + 8003de4: f887 303f strb.w r3, [r7, #63] @ 0x3f if (check_uint8(idata, 30, 120)) - 8003cc0: f897 303f ldrb.w r3, [r7, #63] @ 0x3f - 8003cc4: 2278 movs r2, #120 @ 0x78 - 8003cc6: 211e movs r1, #30 - 8003cc8: 4618 mov r0, r3 - 8003cca: f7ff fb08 bl 80032de - 8003cce: 4603 mov r3, r0 - 8003cd0: 2b00 cmp r3, #0 - 8003cd2: f000 80b2 beq.w 8003e3a + 8003de8: f897 303f ldrb.w r3, [r7, #63] @ 0x3f + 8003dec: 2278 movs r2, #120 @ 0x78 + 8003dee: 211e movs r1, #30 + 8003df0: 4618 mov r0, r3 + 8003df2: f7ff fad0 bl 8003396 + 8003df6: 4603 mov r3, r0 + 8003df8: 2b00 cmp r3, #0 + 8003dfa: f000 80b6 beq.w 8003f6a { icd_str->hv_phase_1_duration = idata; - 8003cd6: 683b ldr r3, [r7, #0] - 8003cd8: f897 203f ldrb.w r2, [r7, #63] @ 0x3f - 8003cdc: f883 20a1 strb.w r2, [r3, #161] @ 0xa1 + 8003dfe: 683b ldr r3, [r7, #0] + 8003e00: f897 203f ldrb.w r2, [r7, #63] @ 0x3f + 8003e04: f883 20a1 strb.w r2, [r3, #161] @ 0xa1 } } break; - 8003ce0: e0ab b.n 8003e3a + 8003e08: e0af b.n 8003f6a // время в десятых мс приходящееся на 2 фазу 20-100(2-10мс) одна единица 0,1мс case 0x33: { uint8_t idata = unpackUint8(&buf[2]); - 8003ce2: 687b ldr r3, [r7, #4] - 8003ce4: 3302 adds r3, #2 - 8003ce6: 4618 mov r0, r3 - 8003ce8: f7ff fae6 bl 80032b8 - 8003cec: 4603 mov r3, r0 - 8003cee: f887 3040 strb.w r3, [r7, #64] @ 0x40 + 8003e0a: 687b ldr r3, [r7, #4] + 8003e0c: 3302 adds r3, #2 + 8003e0e: 4618 mov r0, r3 + 8003e10: f7ff faae bl 8003370 + 8003e14: 4603 mov r3, r0 + 8003e16: f887 3040 strb.w r3, [r7, #64] @ 0x40 if (check_uint8(idata, 20, 100)) - 8003cf2: f897 3040 ldrb.w r3, [r7, #64] @ 0x40 - 8003cf6: 2264 movs r2, #100 @ 0x64 - 8003cf8: 2114 movs r1, #20 - 8003cfa: 4618 mov r0, r3 - 8003cfc: f7ff faef bl 80032de - 8003d00: 4603 mov r3, r0 - 8003d02: 2b00 cmp r3, #0 - 8003d04: f000 809b beq.w 8003e3e + 8003e1a: f897 3040 ldrb.w r3, [r7, #64] @ 0x40 + 8003e1e: 2264 movs r2, #100 @ 0x64 + 8003e20: 2114 movs r1, #20 + 8003e22: 4618 mov r0, r3 + 8003e24: f7ff fab7 bl 8003396 + 8003e28: 4603 mov r3, r0 + 8003e2a: 2b00 cmp r3, #0 + 8003e2c: f000 809f beq.w 8003f6e { icd_str->hv_phase_2_duration = idata; - 8003d08: 683b ldr r3, [r7, #0] - 8003d0a: f897 2040 ldrb.w r2, [r7, #64] @ 0x40 - 8003d0e: f883 20a2 strb.w r2, [r3, #162] @ 0xa2 + 8003e30: 683b ldr r3, [r7, #0] + 8003e32: f897 2040 ldrb.w r2, [r7, #64] @ 0x40 + 8003e36: f883 20a2 strb.w r2, [r3, #162] @ 0xa2 } } break; - 8003d12: e094 b.n 8003e3e + 8003e3a: e098 b.n 8003f6e // время в десятых мс приходящееся на переключение между фазами 10-30(1-3мс) одна единица 0,1мс case 0x34: { uint8_t idata = unpackUint8(&buf[2]); - 8003d14: 687b ldr r3, [r7, #4] - 8003d16: 3302 adds r3, #2 - 8003d18: 4618 mov r0, r3 - 8003d1a: f7ff facd bl 80032b8 - 8003d1e: 4603 mov r3, r0 - 8003d20: f887 3041 strb.w r3, [r7, #65] @ 0x41 + 8003e3c: 687b ldr r3, [r7, #4] + 8003e3e: 3302 adds r3, #2 + 8003e40: 4618 mov r0, r3 + 8003e42: f7ff fa95 bl 8003370 + 8003e46: 4603 mov r3, r0 + 8003e48: f887 3041 strb.w r3, [r7, #65] @ 0x41 if (check_uint8(idata, 10, 30)) - 8003d24: f897 3041 ldrb.w r3, [r7, #65] @ 0x41 - 8003d28: 221e movs r2, #30 - 8003d2a: 210a movs r1, #10 - 8003d2c: 4618 mov r0, r3 - 8003d2e: f7ff fad6 bl 80032de - 8003d32: 4603 mov r3, r0 - 8003d34: 2b00 cmp r3, #0 - 8003d36: f000 8084 beq.w 8003e42 + 8003e4c: f897 3041 ldrb.w r3, [r7, #65] @ 0x41 + 8003e50: 221e movs r2, #30 + 8003e52: 210a movs r1, #10 + 8003e54: 4618 mov r0, r3 + 8003e56: f7ff fa9e bl 8003396 + 8003e5a: 4603 mov r3, r0 + 8003e5c: 2b00 cmp r3, #0 + 8003e5e: f000 8088 beq.w 8003f72 { icd_str->hv_switch_duration = idata; - 8003d3a: 683b ldr r3, [r7, #0] - 8003d3c: f897 2041 ldrb.w r2, [r7, #65] @ 0x41 - 8003d40: f883 20a3 strb.w r2, [r3, #163] @ 0xa3 + 8003e62: 683b ldr r3, [r7, #0] + 8003e64: f897 2041 ldrb.w r2, [r7, #65] @ 0x41 + 8003e68: f883 20a3 strb.w r2, [r3, #163] @ 0xa3 } } break; - 8003d44: e07d b.n 8003e42 + 8003e6c: e081 b.n 8003f72 //процент напряжения при котором происходит завешение 1 фазы при адаптивном режиме (20-80) одна единица 1% case 0x35: { uint8_t idata = unpackUint8(&buf[2]); - 8003d46: 687b ldr r3, [r7, #4] - 8003d48: 3302 adds r3, #2 - 8003d4a: 4618 mov r0, r3 - 8003d4c: f7ff fab4 bl 80032b8 - 8003d50: 4603 mov r3, r0 - 8003d52: f887 3042 strb.w r3, [r7, #66] @ 0x42 + 8003e6e: 687b ldr r3, [r7, #4] + 8003e70: 3302 adds r3, #2 + 8003e72: 4618 mov r0, r3 + 8003e74: f7ff fa7c bl 8003370 + 8003e78: 4603 mov r3, r0 + 8003e7a: f887 3042 strb.w r3, [r7, #66] @ 0x42 if (check_uint8(idata, 20, 80)) - 8003d56: f897 3042 ldrb.w r3, [r7, #66] @ 0x42 - 8003d5a: 2250 movs r2, #80 @ 0x50 - 8003d5c: 2114 movs r1, #20 - 8003d5e: 4618 mov r0, r3 - 8003d60: f7ff fabd bl 80032de - 8003d64: 4603 mov r3, r0 - 8003d66: 2b00 cmp r3, #0 - 8003d68: d06d beq.n 8003e46 + 8003e7e: f897 3042 ldrb.w r3, [r7, #66] @ 0x42 + 8003e82: 2250 movs r2, #80 @ 0x50 + 8003e84: 2114 movs r1, #20 + 8003e86: 4618 mov r0, r3 + 8003e88: f7ff fa85 bl 8003396 + 8003e8c: 4603 mov r3, r0 + 8003e8e: 2b00 cmp r3, #0 + 8003e90: d071 beq.n 8003f76 { icd_str->hv_switching_voltage = idata; - 8003d6a: 683b ldr r3, [r7, #0] - 8003d6c: f897 2042 ldrb.w r2, [r7, #66] @ 0x42 - 8003d70: f883 20a4 strb.w r2, [r3, #164] @ 0xa4 + 8003e92: 683b ldr r3, [r7, #0] + 8003e94: f897 2042 ldrb.w r2, [r7, #66] @ 0x42 + 8003e98: f883 20a4 strb.w r2, [r3, #164] @ 0xa4 } } break; - 8003d74: e067 b.n 8003e46 + 8003e9c: e06b b.n 8003f76 //процент напряжения при котором происходит завешение 2 фазы при адаптивном режиме (5-50) одна единица 1% case 0x36: { uint8_t idata = unpackUint8(&buf[2]); - 8003d76: 687b ldr r3, [r7, #4] - 8003d78: 3302 adds r3, #2 - 8003d7a: 4618 mov r0, r3 - 8003d7c: f7ff fa9c bl 80032b8 - 8003d80: 4603 mov r3, r0 - 8003d82: f887 3043 strb.w r3, [r7, #67] @ 0x43 + 8003e9e: 687b ldr r3, [r7, #4] + 8003ea0: 3302 adds r3, #2 + 8003ea2: 4618 mov r0, r3 + 8003ea4: f7ff fa64 bl 8003370 + 8003ea8: 4603 mov r3, r0 + 8003eaa: f887 3043 strb.w r3, [r7, #67] @ 0x43 if (check_uint8(idata, 5, 50)) - 8003d86: f897 3043 ldrb.w r3, [r7, #67] @ 0x43 - 8003d8a: 2232 movs r2, #50 @ 0x32 - 8003d8c: 2105 movs r1, #5 - 8003d8e: 4618 mov r0, r3 - 8003d90: f7ff faa5 bl 80032de - 8003d94: 4603 mov r3, r0 - 8003d96: 2b00 cmp r3, #0 - 8003d98: d057 beq.n 8003e4a + 8003eae: f897 3043 ldrb.w r3, [r7, #67] @ 0x43 + 8003eb2: 2232 movs r2, #50 @ 0x32 + 8003eb4: 2105 movs r1, #5 + 8003eb6: 4618 mov r0, r3 + 8003eb8: f7ff fa6d bl 8003396 + 8003ebc: 4603 mov r3, r0 + 8003ebe: 2b00 cmp r3, #0 + 8003ec0: d05b beq.n 8003f7a { icd_str->hv_cutoff_voltage = idata; - 8003d9a: 683b ldr r3, [r7, #0] - 8003d9c: f897 2043 ldrb.w r2, [r7, #67] @ 0x43 - 8003da0: f883 20a5 strb.w r2, [r3, #165] @ 0xa5 + 8003ec2: 683b ldr r3, [r7, #0] + 8003ec4: f897 2043 ldrb.w r2, [r7, #67] @ 0x43 + 8003ec8: f883 20a5 strb.w r2, [r3, #165] @ 0xa5 } } break; - 8003da4: e051 b.n 8003e4a + 8003ecc: e055 b.n 8003f7a default: - 8003da6: bf00 nop - 8003da8: e050 b.n 8003e4c + 8003ece: bf00 nop + 8003ed0: e054 b.n 8003f7c break; - 8003daa: bf00 nop - 8003dac: e04e b.n 8003e4c + 8003ed2: bf00 nop + 8003ed4: e052 b.n 8003f7c break; - 8003dae: bf00 nop - 8003db0: e04c b.n 8003e4c + 8003ed6: bf00 nop + 8003ed8: e050 b.n 8003f7c break; - 8003db2: bf00 nop - 8003db4: e04a b.n 8003e4c + 8003eda: bf00 nop + 8003edc: e04e b.n 8003f7c break; - 8003db6: bf00 nop - 8003db8: e048 b.n 8003e4c + 8003ede: bf00 nop + 8003ee0: e04c b.n 8003f7c break; - 8003dba: bf00 nop - 8003dbc: e046 b.n 8003e4c + 8003ee2: bf00 nop + 8003ee4: e04a b.n 8003f7c break; - 8003dbe: bf00 nop - 8003dc0: e044 b.n 8003e4c + 8003ee6: bf00 nop + 8003ee8: e048 b.n 8003f7c break; - 8003dc2: bf00 nop - 8003dc4: e042 b.n 8003e4c + 8003eea: bf00 nop + 8003eec: e046 b.n 8003f7c break; - 8003dc6: bf00 nop - 8003dc8: e040 b.n 8003e4c + 8003eee: bf00 nop + 8003ef0: e044 b.n 8003f7c break; - 8003dca: bf00 nop - 8003dcc: e03e b.n 8003e4c + 8003ef2: bf00 nop + 8003ef4: e042 b.n 8003f7c break; - 8003dce: bf00 nop - 8003dd0: e03c b.n 8003e4c + 8003ef6: bf00 nop + 8003ef8: e040 b.n 8003f7c break; - 8003dd2: bf00 nop - 8003dd4: e03a b.n 8003e4c + 8003efa: bf00 nop + 8003efc: e03e b.n 8003f7c break; - 8003dd6: bf00 nop - 8003dd8: e038 b.n 8003e4c + 8003efe: bf00 nop + 8003f00: e03c b.n 8003f7c break; - 8003dda: bf00 nop - 8003ddc: e036 b.n 8003e4c + 8003f02: bf00 nop + 8003f04: e03a b.n 8003f7c break; - 8003dde: bf00 nop - 8003de0: e034 b.n 8003e4c + 8003f06: bf00 nop + 8003f08: e038 b.n 8003f7c break; - 8003de2: bf00 nop - 8003de4: e032 b.n 8003e4c + 8003f0a: bf00 nop + 8003f0c: e036 b.n 8003f7c break; - 8003de6: bf00 nop - 8003de8: e030 b.n 8003e4c + 8003f0e: bf00 nop + 8003f10: e034 b.n 8003f7c break; - 8003dea: bf00 nop - 8003dec: e02e b.n 8003e4c + 8003f12: bf00 nop + 8003f14: e032 b.n 8003f7c break; - 8003dee: bf00 nop - 8003df0: e02c b.n 8003e4c + 8003f16: bf00 nop + 8003f18: e030 b.n 8003f7c break; - 8003df2: bf00 nop - 8003df4: e02a b.n 8003e4c + 8003f1a: bf00 nop + 8003f1c: e02e b.n 8003f7c break; - 8003df6: bf00 nop - 8003df8: e028 b.n 8003e4c + 8003f1e: bf00 nop + 8003f20: e02c b.n 8003f7c break; - 8003dfa: bf00 nop - 8003dfc: e026 b.n 8003e4c + 8003f22: bf00 nop + 8003f24: e02a b.n 8003f7c break; - 8003dfe: bf00 nop - 8003e00: e024 b.n 8003e4c + 8003f26: bf00 nop + 8003f28: e028 b.n 8003f7c break; - 8003e02: bf00 nop - 8003e04: e022 b.n 8003e4c + 8003f2a: bf00 nop + 8003f2c: e026 b.n 8003f7c break; - 8003e06: bf00 nop - 8003e08: e020 b.n 8003e4c + 8003f2e: bf00 nop + 8003f30: e024 b.n 8003f7c break; - 8003e0a: bf00 nop - 8003e0c: e01e b.n 8003e4c + 8003f32: bf00 nop + 8003f34: e022 b.n 8003f7c break; - 8003e0e: bf00 nop - 8003e10: e01c b.n 8003e4c + 8003f36: bf00 nop + 8003f38: e020 b.n 8003f7c break; - 8003e12: bf00 nop - 8003e14: e01a b.n 8003e4c + 8003f3a: bf00 nop + 8003f3c: e01e b.n 8003f7c break; - 8003e16: bf00 nop - 8003e18: e018 b.n 8003e4c + 8003f3e: bf00 nop + 8003f40: e01c b.n 8003f7c break; - 8003e1a: bf00 nop - 8003e1c: e016 b.n 8003e4c + 8003f42: bf00 nop + 8003f44: e01a b.n 8003f7c break; - 8003e1e: bf00 nop - 8003e20: e014 b.n 8003e4c + 8003f46: bf00 nop + 8003f48: e018 b.n 8003f7c break; - 8003e22: bf00 nop - 8003e24: e012 b.n 8003e4c + 8003f4a: bf00 nop + 8003f4c: e016 b.n 8003f7c break; - 8003e26: bf00 nop - 8003e28: e010 b.n 8003e4c + 8003f4e: bf00 nop + 8003f50: e014 b.n 8003f7c break; - 8003e2a: bf00 nop - 8003e2c: e00e b.n 8003e4c + 8003f52: bf00 nop + 8003f54: e012 b.n 8003f7c break; - 8003e2e: bf00 nop - 8003e30: e00c b.n 8003e4c + 8003f56: bf00 nop + 8003f58: e010 b.n 8003f7c break; - 8003e32: bf00 nop - 8003e34: e00a b.n 8003e4c + 8003f5a: bf00 nop + 8003f5c: e00e b.n 8003f7c break; - 8003e36: bf00 nop - 8003e38: e008 b.n 8003e4c + 8003f5e: bf00 nop + 8003f60: e00c b.n 8003f7c break; - 8003e3a: bf00 nop - 8003e3c: e006 b.n 8003e4c + 8003f62: bf00 nop + 8003f64: e00a b.n 8003f7c break; - 8003e3e: bf00 nop - 8003e40: e004 b.n 8003e4c + 8003f66: bf00 nop + 8003f68: e008 b.n 8003f7c break; - 8003e42: bf00 nop - 8003e44: e002 b.n 8003e4c + 8003f6a: bf00 nop + 8003f6c: e006 b.n 8003f7c break; - 8003e46: bf00 nop - 8003e48: e000 b.n 8003e4c + 8003f6e: bf00 nop + 8003f70: e004 b.n 8003f7c break; - 8003e4a: bf00 nop + 8003f72: bf00 nop + 8003f74: e002 b.n 8003f7c + break; + 8003f76: bf00 nop + 8003f78: e000 b.n 8003f7c + break; + 8003f7a: bf00 nop { //код неверный } } } } - 8003e4c: bf00 nop - 8003e4e: 3748 adds r7, #72 @ 0x48 - 8003e50: 46bd mov sp, r7 - 8003e52: bd80 pop {r7, pc} + 8003f7c: bf00 nop + 8003f7e: 3748 adds r7, #72 @ 0x48 + 8003f80: 46bd mov sp, r7 + 8003f82: bd80 pop {r7, pc} -08003e54 : +08003f84 : SPI_HandleTypeDef hspi2; SPI_HandleTypeDef hspi3; /* SPI2 init function */ void MX_SPI2_Init(void) { - 8003e54: b580 push {r7, lr} - 8003e56: af00 add r7, sp, #0 + 8003f84: b580 push {r7, lr} + 8003f86: af00 add r7, sp, #0 /* USER CODE END SPI2_Init 0 */ /* USER CODE BEGIN SPI2_Init 1 */ /* USER CODE END SPI2_Init 1 */ hspi2.Instance = SPI2; - 8003e58: 4b17 ldr r3, [pc, #92] @ (8003eb8 ) - 8003e5a: 4a18 ldr r2, [pc, #96] @ (8003ebc ) - 8003e5c: 601a str r2, [r3, #0] + 8003f88: 4b17 ldr r3, [pc, #92] @ (8003fe8 ) + 8003f8a: 4a18 ldr r2, [pc, #96] @ (8003fec ) + 8003f8c: 601a str r2, [r3, #0] hspi2.Init.Mode = SPI_MODE_MASTER; - 8003e5e: 4b16 ldr r3, [pc, #88] @ (8003eb8 ) - 8003e60: f44f 7282 mov.w r2, #260 @ 0x104 - 8003e64: 605a str r2, [r3, #4] + 8003f8e: 4b16 ldr r3, [pc, #88] @ (8003fe8 ) + 8003f90: f44f 7282 mov.w r2, #260 @ 0x104 + 8003f94: 605a str r2, [r3, #4] hspi2.Init.Direction = SPI_DIRECTION_2LINES; - 8003e66: 4b14 ldr r3, [pc, #80] @ (8003eb8 ) - 8003e68: 2200 movs r2, #0 - 8003e6a: 609a str r2, [r3, #8] + 8003f96: 4b14 ldr r3, [pc, #80] @ (8003fe8 ) + 8003f98: 2200 movs r2, #0 + 8003f9a: 609a str r2, [r3, #8] hspi2.Init.DataSize = SPI_DATASIZE_8BIT; - 8003e6c: 4b12 ldr r3, [pc, #72] @ (8003eb8 ) - 8003e6e: 2200 movs r2, #0 - 8003e70: 60da str r2, [r3, #12] + 8003f9c: 4b12 ldr r3, [pc, #72] @ (8003fe8 ) + 8003f9e: 2200 movs r2, #0 + 8003fa0: 60da str r2, [r3, #12] hspi2.Init.CLKPolarity = SPI_POLARITY_LOW; - 8003e72: 4b11 ldr r3, [pc, #68] @ (8003eb8 ) - 8003e74: 2200 movs r2, #0 - 8003e76: 611a str r2, [r3, #16] + 8003fa2: 4b11 ldr r3, [pc, #68] @ (8003fe8 ) + 8003fa4: 2200 movs r2, #0 + 8003fa6: 611a str r2, [r3, #16] hspi2.Init.CLKPhase = SPI_PHASE_1EDGE; - 8003e78: 4b0f ldr r3, [pc, #60] @ (8003eb8 ) - 8003e7a: 2200 movs r2, #0 - 8003e7c: 615a str r2, [r3, #20] + 8003fa8: 4b0f ldr r3, [pc, #60] @ (8003fe8 ) + 8003faa: 2200 movs r2, #0 + 8003fac: 615a str r2, [r3, #20] hspi2.Init.NSS = SPI_NSS_SOFT; - 8003e7e: 4b0e ldr r3, [pc, #56] @ (8003eb8 ) - 8003e80: f44f 7200 mov.w r2, #512 @ 0x200 - 8003e84: 619a str r2, [r3, #24] + 8003fae: 4b0e ldr r3, [pc, #56] @ (8003fe8 ) + 8003fb0: f44f 7200 mov.w r2, #512 @ 0x200 + 8003fb4: 619a str r2, [r3, #24] hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; - 8003e86: 4b0c ldr r3, [pc, #48] @ (8003eb8 ) - 8003e88: 2200 movs r2, #0 - 8003e8a: 61da str r2, [r3, #28] + 8003fb6: 4b0c ldr r3, [pc, #48] @ (8003fe8 ) + 8003fb8: 2200 movs r2, #0 + 8003fba: 61da str r2, [r3, #28] hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB; - 8003e8c: 4b0a ldr r3, [pc, #40] @ (8003eb8 ) - 8003e8e: 2200 movs r2, #0 - 8003e90: 621a str r2, [r3, #32] + 8003fbc: 4b0a ldr r3, [pc, #40] @ (8003fe8 ) + 8003fbe: 2200 movs r2, #0 + 8003fc0: 621a str r2, [r3, #32] hspi2.Init.TIMode = SPI_TIMODE_DISABLE; - 8003e92: 4b09 ldr r3, [pc, #36] @ (8003eb8 ) - 8003e94: 2200 movs r2, #0 - 8003e96: 625a str r2, [r3, #36] @ 0x24 + 8003fc2: 4b09 ldr r3, [pc, #36] @ (8003fe8 ) + 8003fc4: 2200 movs r2, #0 + 8003fc6: 625a str r2, [r3, #36] @ 0x24 hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; - 8003e98: 4b07 ldr r3, [pc, #28] @ (8003eb8 ) - 8003e9a: 2200 movs r2, #0 - 8003e9c: 629a str r2, [r3, #40] @ 0x28 + 8003fc8: 4b07 ldr r3, [pc, #28] @ (8003fe8 ) + 8003fca: 2200 movs r2, #0 + 8003fcc: 629a str r2, [r3, #40] @ 0x28 hspi2.Init.CRCPolynomial = 10; - 8003e9e: 4b06 ldr r3, [pc, #24] @ (8003eb8 ) - 8003ea0: 220a movs r2, #10 - 8003ea2: 62da str r2, [r3, #44] @ 0x2c + 8003fce: 4b06 ldr r3, [pc, #24] @ (8003fe8 ) + 8003fd0: 220a movs r2, #10 + 8003fd2: 62da str r2, [r3, #44] @ 0x2c if (HAL_SPI_Init(&hspi2) != HAL_OK) - 8003ea4: 4804 ldr r0, [pc, #16] @ (8003eb8 ) - 8003ea6: f004 fb77 bl 8008598 - 8003eaa: 4603 mov r3, r0 - 8003eac: 2b00 cmp r3, #0 - 8003eae: d001 beq.n 8003eb4 + 8003fd4: 4804 ldr r0, [pc, #16] @ (8003fe8 ) + 8003fd6: f004 fc09 bl 80087ec + 8003fda: 4603 mov r3, r0 + 8003fdc: 2b00 cmp r3, #0 + 8003fde: d001 beq.n 8003fe4 { Error_Handler(); - 8003eb0: f7ff f95a bl 8003168 + 8003fe0: f7ff f91e bl 8003220 } /* USER CODE BEGIN SPI2_Init 2 */ /* USER CODE END SPI2_Init 2 */ } - 8003eb4: bf00 nop - 8003eb6: bd80 pop {r7, pc} - 8003eb8: 20001f8c .word 0x20001f8c - 8003ebc: 40003800 .word 0x40003800 + 8003fe4: bf00 nop + 8003fe6: bd80 pop {r7, pc} + 8003fe8: 20001f8c .word 0x20001f8c + 8003fec: 40003800 .word 0x40003800 -08003ec0 : +08003ff0 : /* SPI3 init function */ void MX_SPI3_Init(void) { - 8003ec0: b580 push {r7, lr} - 8003ec2: af00 add r7, sp, #0 + 8003ff0: b580 push {r7, lr} + 8003ff2: af00 add r7, sp, #0 /* USER CODE END SPI3_Init 0 */ /* USER CODE BEGIN SPI3_Init 1 */ /* USER CODE END SPI3_Init 1 */ hspi3.Instance = SPI3; - 8003ec4: 4b17 ldr r3, [pc, #92] @ (8003f24 ) - 8003ec6: 4a18 ldr r2, [pc, #96] @ (8003f28 ) - 8003ec8: 601a str r2, [r3, #0] + 8003ff4: 4b17 ldr r3, [pc, #92] @ (8004054 ) + 8003ff6: 4a18 ldr r2, [pc, #96] @ (8004058 ) + 8003ff8: 601a str r2, [r3, #0] hspi3.Init.Mode = SPI_MODE_MASTER; - 8003eca: 4b16 ldr r3, [pc, #88] @ (8003f24 ) - 8003ecc: f44f 7282 mov.w r2, #260 @ 0x104 - 8003ed0: 605a str r2, [r3, #4] + 8003ffa: 4b16 ldr r3, [pc, #88] @ (8004054 ) + 8003ffc: f44f 7282 mov.w r2, #260 @ 0x104 + 8004000: 605a str r2, [r3, #4] hspi3.Init.Direction = SPI_DIRECTION_2LINES; - 8003ed2: 4b14 ldr r3, [pc, #80] @ (8003f24 ) - 8003ed4: 2200 movs r2, #0 - 8003ed6: 609a str r2, [r3, #8] + 8004002: 4b14 ldr r3, [pc, #80] @ (8004054 ) + 8004004: 2200 movs r2, #0 + 8004006: 609a str r2, [r3, #8] hspi3.Init.DataSize = SPI_DATASIZE_8BIT; - 8003ed8: 4b12 ldr r3, [pc, #72] @ (8003f24 ) - 8003eda: 2200 movs r2, #0 - 8003edc: 60da str r2, [r3, #12] + 8004008: 4b12 ldr r3, [pc, #72] @ (8004054 ) + 800400a: 2200 movs r2, #0 + 800400c: 60da str r2, [r3, #12] hspi3.Init.CLKPolarity = SPI_POLARITY_LOW; - 8003ede: 4b11 ldr r3, [pc, #68] @ (8003f24 ) - 8003ee0: 2200 movs r2, #0 - 8003ee2: 611a str r2, [r3, #16] + 800400e: 4b11 ldr r3, [pc, #68] @ (8004054 ) + 8004010: 2200 movs r2, #0 + 8004012: 611a str r2, [r3, #16] hspi3.Init.CLKPhase = SPI_PHASE_1EDGE; - 8003ee4: 4b0f ldr r3, [pc, #60] @ (8003f24 ) - 8003ee6: 2200 movs r2, #0 - 8003ee8: 615a str r2, [r3, #20] + 8004014: 4b0f ldr r3, [pc, #60] @ (8004054 ) + 8004016: 2200 movs r2, #0 + 8004018: 615a str r2, [r3, #20] hspi3.Init.NSS = SPI_NSS_SOFT; - 8003eea: 4b0e ldr r3, [pc, #56] @ (8003f24 ) - 8003eec: f44f 7200 mov.w r2, #512 @ 0x200 - 8003ef0: 619a str r2, [r3, #24] + 800401a: 4b0e ldr r3, [pc, #56] @ (8004054 ) + 800401c: f44f 7200 mov.w r2, #512 @ 0x200 + 8004020: 619a str r2, [r3, #24] hspi3.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; - 8003ef2: 4b0c ldr r3, [pc, #48] @ (8003f24 ) - 8003ef4: 2200 movs r2, #0 - 8003ef6: 61da str r2, [r3, #28] + 8004022: 4b0c ldr r3, [pc, #48] @ (8004054 ) + 8004024: 2200 movs r2, #0 + 8004026: 61da str r2, [r3, #28] hspi3.Init.FirstBit = SPI_FIRSTBIT_MSB; - 8003ef8: 4b0a ldr r3, [pc, #40] @ (8003f24 ) - 8003efa: 2200 movs r2, #0 - 8003efc: 621a str r2, [r3, #32] + 8004028: 4b0a ldr r3, [pc, #40] @ (8004054 ) + 800402a: 2200 movs r2, #0 + 800402c: 621a str r2, [r3, #32] hspi3.Init.TIMode = SPI_TIMODE_DISABLE; - 8003efe: 4b09 ldr r3, [pc, #36] @ (8003f24 ) - 8003f00: 2200 movs r2, #0 - 8003f02: 625a str r2, [r3, #36] @ 0x24 + 800402e: 4b09 ldr r3, [pc, #36] @ (8004054 ) + 8004030: 2200 movs r2, #0 + 8004032: 625a str r2, [r3, #36] @ 0x24 hspi3.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; - 8003f04: 4b07 ldr r3, [pc, #28] @ (8003f24 ) - 8003f06: 2200 movs r2, #0 - 8003f08: 629a str r2, [r3, #40] @ 0x28 + 8004034: 4b07 ldr r3, [pc, #28] @ (8004054 ) + 8004036: 2200 movs r2, #0 + 8004038: 629a str r2, [r3, #40] @ 0x28 hspi3.Init.CRCPolynomial = 10; - 8003f0a: 4b06 ldr r3, [pc, #24] @ (8003f24 ) - 8003f0c: 220a movs r2, #10 - 8003f0e: 62da str r2, [r3, #44] @ 0x2c + 800403a: 4b06 ldr r3, [pc, #24] @ (8004054 ) + 800403c: 220a movs r2, #10 + 800403e: 62da str r2, [r3, #44] @ 0x2c if (HAL_SPI_Init(&hspi3) != HAL_OK) - 8003f10: 4804 ldr r0, [pc, #16] @ (8003f24 ) - 8003f12: f004 fb41 bl 8008598 - 8003f16: 4603 mov r3, r0 - 8003f18: 2b00 cmp r3, #0 - 8003f1a: d001 beq.n 8003f20 + 8004040: 4804 ldr r0, [pc, #16] @ (8004054 ) + 8004042: f004 fbd3 bl 80087ec + 8004046: 4603 mov r3, r0 + 8004048: 2b00 cmp r3, #0 + 800404a: d001 beq.n 8004050 { Error_Handler(); - 8003f1c: f7ff f924 bl 8003168 + 800404c: f7ff f8e8 bl 8003220 } /* USER CODE BEGIN SPI3_Init 2 */ /* USER CODE END SPI3_Init 2 */ } - 8003f20: bf00 nop - 8003f22: bd80 pop {r7, pc} - 8003f24: 20001fe4 .word 0x20001fe4 - 8003f28: 40003c00 .word 0x40003c00 + 8004050: bf00 nop + 8004052: bd80 pop {r7, pc} + 8004054: 20001fe4 .word 0x20001fe4 + 8004058: 40003c00 .word 0x40003c00 -08003f2c : +0800405c : void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle) { - 8003f2c: b580 push {r7, lr} - 8003f2e: b08c sub sp, #48 @ 0x30 - 8003f30: af00 add r7, sp, #0 - 8003f32: 6078 str r0, [r7, #4] + 800405c: b580 push {r7, lr} + 800405e: b08c sub sp, #48 @ 0x30 + 8004060: af00 add r7, sp, #0 + 8004062: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8003f34: f107 031c add.w r3, r7, #28 - 8003f38: 2200 movs r2, #0 - 8003f3a: 601a str r2, [r3, #0] - 8003f3c: 605a str r2, [r3, #4] - 8003f3e: 609a str r2, [r3, #8] - 8003f40: 60da str r2, [r3, #12] - 8003f42: 611a str r2, [r3, #16] + 8004064: f107 031c add.w r3, r7, #28 + 8004068: 2200 movs r2, #0 + 800406a: 601a str r2, [r3, #0] + 800406c: 605a str r2, [r3, #4] + 800406e: 609a str r2, [r3, #8] + 8004070: 60da str r2, [r3, #12] + 8004072: 611a str r2, [r3, #16] if(spiHandle->Instance==SPI2) - 8003f44: 687b ldr r3, [r7, #4] - 8003f46: 681b ldr r3, [r3, #0] - 8003f48: 4a33 ldr r2, [pc, #204] @ (8004018 ) - 8003f4a: 4293 cmp r3, r2 - 8003f4c: d12d bne.n 8003faa + 8004074: 687b ldr r3, [r7, #4] + 8004076: 681b ldr r3, [r3, #0] + 8004078: 4a33 ldr r2, [pc, #204] @ (8004148 ) + 800407a: 4293 cmp r3, r2 + 800407c: d12d bne.n 80040da { /* USER CODE BEGIN SPI2_MspInit 0 */ /* USER CODE END SPI2_MspInit 0 */ /* SPI2 clock enable */ __HAL_RCC_SPI2_CLK_ENABLE(); - 8003f4e: 2300 movs r3, #0 - 8003f50: 61bb str r3, [r7, #24] - 8003f52: 4b32 ldr r3, [pc, #200] @ (800401c ) - 8003f54: 6c1b ldr r3, [r3, #64] @ 0x40 - 8003f56: 4a31 ldr r2, [pc, #196] @ (800401c ) - 8003f58: f443 4380 orr.w r3, r3, #16384 @ 0x4000 - 8003f5c: 6413 str r3, [r2, #64] @ 0x40 - 8003f5e: 4b2f ldr r3, [pc, #188] @ (800401c ) - 8003f60: 6c1b ldr r3, [r3, #64] @ 0x40 - 8003f62: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8003f66: 61bb str r3, [r7, #24] - 8003f68: 69bb ldr r3, [r7, #24] + 800407e: 2300 movs r3, #0 + 8004080: 61bb str r3, [r7, #24] + 8004082: 4b32 ldr r3, [pc, #200] @ (800414c ) + 8004084: 6c1b ldr r3, [r3, #64] @ 0x40 + 8004086: 4a31 ldr r2, [pc, #196] @ (800414c ) + 8004088: f443 4380 orr.w r3, r3, #16384 @ 0x4000 + 800408c: 6413 str r3, [r2, #64] @ 0x40 + 800408e: 4b2f ldr r3, [pc, #188] @ (800414c ) + 8004090: 6c1b ldr r3, [r3, #64] @ 0x40 + 8004092: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8004096: 61bb str r3, [r7, #24] + 8004098: 69bb ldr r3, [r7, #24] __HAL_RCC_GPIOB_CLK_ENABLE(); - 8003f6a: 2300 movs r3, #0 - 8003f6c: 617b str r3, [r7, #20] - 8003f6e: 4b2b ldr r3, [pc, #172] @ (800401c ) - 8003f70: 6b1b ldr r3, [r3, #48] @ 0x30 - 8003f72: 4a2a ldr r2, [pc, #168] @ (800401c ) - 8003f74: f043 0302 orr.w r3, r3, #2 - 8003f78: 6313 str r3, [r2, #48] @ 0x30 - 8003f7a: 4b28 ldr r3, [pc, #160] @ (800401c ) - 8003f7c: 6b1b ldr r3, [r3, #48] @ 0x30 - 8003f7e: f003 0302 and.w r3, r3, #2 - 8003f82: 617b str r3, [r7, #20] - 8003f84: 697b ldr r3, [r7, #20] + 800409a: 2300 movs r3, #0 + 800409c: 617b str r3, [r7, #20] + 800409e: 4b2b ldr r3, [pc, #172] @ (800414c ) + 80040a0: 6b1b ldr r3, [r3, #48] @ 0x30 + 80040a2: 4a2a ldr r2, [pc, #168] @ (800414c ) + 80040a4: f043 0302 orr.w r3, r3, #2 + 80040a8: 6313 str r3, [r2, #48] @ 0x30 + 80040aa: 4b28 ldr r3, [pc, #160] @ (800414c ) + 80040ac: 6b1b ldr r3, [r3, #48] @ 0x30 + 80040ae: f003 0302 and.w r3, r3, #2 + 80040b2: 617b str r3, [r7, #20] + 80040b4: 697b ldr r3, [r7, #20] /**SPI2 GPIO Configuration PB13 ------> SPI2_SCK PB15 ------> SPI2_MOSI */ GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_15; - 8003f86: f44f 4320 mov.w r3, #40960 @ 0xa000 - 8003f8a: 61fb str r3, [r7, #28] + 80040b6: f44f 4320 mov.w r3, #40960 @ 0xa000 + 80040ba: 61fb str r3, [r7, #28] GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8003f8c: 2302 movs r3, #2 - 8003f8e: 623b str r3, [r7, #32] + 80040bc: 2302 movs r3, #2 + 80040be: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8003f90: 2300 movs r3, #0 - 8003f92: 627b str r3, [r7, #36] @ 0x24 + 80040c0: 2300 movs r3, #0 + 80040c2: 627b str r3, [r7, #36] @ 0x24 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 8003f94: 2303 movs r3, #3 - 8003f96: 62bb str r3, [r7, #40] @ 0x28 + 80040c4: 2303 movs r3, #3 + 80040c6: 62bb str r3, [r7, #40] @ 0x28 GPIO_InitStruct.Alternate = GPIO_AF5_SPI2; - 8003f98: 2305 movs r3, #5 - 8003f9a: 62fb str r3, [r7, #44] @ 0x2c + 80040c8: 2305 movs r3, #5 + 80040ca: 62fb str r3, [r7, #44] @ 0x2c HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 8003f9c: f107 031c add.w r3, r7, #28 - 8003fa0: 4619 mov r1, r3 - 8003fa2: 481f ldr r0, [pc, #124] @ (8004020 ) - 8003fa4: f003 f9ca bl 800733c + 80040cc: f107 031c add.w r3, r7, #28 + 80040d0: 4619 mov r1, r3 + 80040d2: 481f ldr r0, [pc, #124] @ (8004150 ) + 80040d4: f003 fa5c bl 8007590 /* USER CODE BEGIN SPI3_MspInit 1 */ /* USER CODE END SPI3_MspInit 1 */ } } - 8003fa8: e031 b.n 800400e + 80040d8: e031 b.n 800413e else if(spiHandle->Instance==SPI3) - 8003faa: 687b ldr r3, [r7, #4] - 8003fac: 681b ldr r3, [r3, #0] - 8003fae: 4a1d ldr r2, [pc, #116] @ (8004024 ) - 8003fb0: 4293 cmp r3, r2 - 8003fb2: d12c bne.n 800400e + 80040da: 687b ldr r3, [r7, #4] + 80040dc: 681b ldr r3, [r3, #0] + 80040de: 4a1d ldr r2, [pc, #116] @ (8004154 ) + 80040e0: 4293 cmp r3, r2 + 80040e2: d12c bne.n 800413e __HAL_RCC_SPI3_CLK_ENABLE(); - 8003fb4: 2300 movs r3, #0 - 8003fb6: 613b str r3, [r7, #16] - 8003fb8: 4b18 ldr r3, [pc, #96] @ (800401c ) - 8003fba: 6c1b ldr r3, [r3, #64] @ 0x40 - 8003fbc: 4a17 ldr r2, [pc, #92] @ (800401c ) - 8003fbe: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8003fc2: 6413 str r3, [r2, #64] @ 0x40 - 8003fc4: 4b15 ldr r3, [pc, #84] @ (800401c ) - 8003fc6: 6c1b ldr r3, [r3, #64] @ 0x40 - 8003fc8: f403 4300 and.w r3, r3, #32768 @ 0x8000 - 8003fcc: 613b str r3, [r7, #16] - 8003fce: 693b ldr r3, [r7, #16] + 80040e4: 2300 movs r3, #0 + 80040e6: 613b str r3, [r7, #16] + 80040e8: 4b18 ldr r3, [pc, #96] @ (800414c ) + 80040ea: 6c1b ldr r3, [r3, #64] @ 0x40 + 80040ec: 4a17 ldr r2, [pc, #92] @ (800414c ) + 80040ee: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 80040f2: 6413 str r3, [r2, #64] @ 0x40 + 80040f4: 4b15 ldr r3, [pc, #84] @ (800414c ) + 80040f6: 6c1b ldr r3, [r3, #64] @ 0x40 + 80040f8: f403 4300 and.w r3, r3, #32768 @ 0x8000 + 80040fc: 613b str r3, [r7, #16] + 80040fe: 693b ldr r3, [r7, #16] __HAL_RCC_GPIOC_CLK_ENABLE(); - 8003fd0: 2300 movs r3, #0 - 8003fd2: 60fb str r3, [r7, #12] - 8003fd4: 4b11 ldr r3, [pc, #68] @ (800401c ) - 8003fd6: 6b1b ldr r3, [r3, #48] @ 0x30 - 8003fd8: 4a10 ldr r2, [pc, #64] @ (800401c ) - 8003fda: f043 0304 orr.w r3, r3, #4 - 8003fde: 6313 str r3, [r2, #48] @ 0x30 - 8003fe0: 4b0e ldr r3, [pc, #56] @ (800401c ) - 8003fe2: 6b1b ldr r3, [r3, #48] @ 0x30 - 8003fe4: f003 0304 and.w r3, r3, #4 - 8003fe8: 60fb str r3, [r7, #12] - 8003fea: 68fb ldr r3, [r7, #12] + 8004100: 2300 movs r3, #0 + 8004102: 60fb str r3, [r7, #12] + 8004104: 4b11 ldr r3, [pc, #68] @ (800414c ) + 8004106: 6b1b ldr r3, [r3, #48] @ 0x30 + 8004108: 4a10 ldr r2, [pc, #64] @ (800414c ) + 800410a: f043 0304 orr.w r3, r3, #4 + 800410e: 6313 str r3, [r2, #48] @ 0x30 + 8004110: 4b0e ldr r3, [pc, #56] @ (800414c ) + 8004112: 6b1b ldr r3, [r3, #48] @ 0x30 + 8004114: f003 0304 and.w r3, r3, #4 + 8004118: 60fb str r3, [r7, #12] + 800411a: 68fb ldr r3, [r7, #12] GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12; - 8003fec: f44f 53e0 mov.w r3, #7168 @ 0x1c00 - 8003ff0: 61fb str r3, [r7, #28] + 800411c: f44f 53e0 mov.w r3, #7168 @ 0x1c00 + 8004120: 61fb str r3, [r7, #28] GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8003ff2: 2302 movs r3, #2 - 8003ff4: 623b str r3, [r7, #32] + 8004122: 2302 movs r3, #2 + 8004124: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8003ff6: 2300 movs r3, #0 - 8003ff8: 627b str r3, [r7, #36] @ 0x24 + 8004126: 2300 movs r3, #0 + 8004128: 627b str r3, [r7, #36] @ 0x24 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 8003ffa: 2303 movs r3, #3 - 8003ffc: 62bb str r3, [r7, #40] @ 0x28 + 800412a: 2303 movs r3, #3 + 800412c: 62bb str r3, [r7, #40] @ 0x28 GPIO_InitStruct.Alternate = GPIO_AF6_SPI3; - 8003ffe: 2306 movs r3, #6 - 8004000: 62fb str r3, [r7, #44] @ 0x2c + 800412e: 2306 movs r3, #6 + 8004130: 62fb str r3, [r7, #44] @ 0x2c HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - 8004002: f107 031c add.w r3, r7, #28 - 8004006: 4619 mov r1, r3 - 8004008: 4807 ldr r0, [pc, #28] @ (8004028 ) - 800400a: f003 f997 bl 800733c + 8004132: f107 031c add.w r3, r7, #28 + 8004136: 4619 mov r1, r3 + 8004138: 4807 ldr r0, [pc, #28] @ (8004158 ) + 800413a: f003 fa29 bl 8007590 } - 800400e: bf00 nop - 8004010: 3730 adds r7, #48 @ 0x30 - 8004012: 46bd mov sp, r7 - 8004014: bd80 pop {r7, pc} - 8004016: bf00 nop - 8004018: 40003800 .word 0x40003800 - 800401c: 40023800 .word 0x40023800 - 8004020: 40020400 .word 0x40020400 - 8004024: 40003c00 .word 0x40003c00 - 8004028: 40020800 .word 0x40020800 + 800413e: bf00 nop + 8004140: 3730 adds r7, #48 @ 0x30 + 8004142: 46bd mov sp, r7 + 8004144: bd80 pop {r7, pc} + 8004146: bf00 nop + 8004148: 40003800 .word 0x40003800 + 800414c: 40023800 .word 0x40023800 + 8004150: 40020400 .word 0x40020400 + 8004154: 40003c00 .word 0x40003c00 + 8004158: 40020800 .word 0x40020800 -0800402c : +0800415c : HAL_SPI_Transmit(&hspi2, &val, 1, 10); HAL_GPIO_WritePin(POT_CS_1_GPIO_Port, POT_CS_1_Pin, SET); } void POT_cheek(uint8_t* set, uint8_t* now) { - 800402c: b580 push {r7, lr} - 800402e: b082 sub sp, #8 - 8004030: af00 add r7, sp, #0 - 8004032: 6078 str r0, [r7, #4] - 8004034: 6039 str r1, [r7, #0] + 800415c: b580 push {r7, lr} + 800415e: b082 sub sp, #8 + 8004160: af00 add r7, sp, #0 + 8004162: 6078 str r0, [r7, #4] + 8004164: 6039 str r1, [r7, #0] if (set != now) - 8004036: 687a ldr r2, [r7, #4] - 8004038: 683b ldr r3, [r7, #0] - 800403a: 429a cmp r2, r3 - 800403c: d013 beq.n 8004066 + 8004166: 687a ldr r2, [r7, #4] + 8004168: 683b ldr r3, [r7, #0] + 800416a: 429a cmp r2, r3 + 800416c: d013 beq.n 8004196 { now = set; - 800403e: 687b ldr r3, [r7, #4] - 8004040: 603b str r3, [r7, #0] + 800416e: 687b ldr r3, [r7, #4] + 8004170: 603b str r3, [r7, #0] HAL_GPIO_WritePin(POT_CS_1_GPIO_Port, POT_CS_1_Pin, RESET); - 8004042: 2200 movs r2, #0 - 8004044: f44f 5180 mov.w r1, #4096 @ 0x1000 - 8004048: 4809 ldr r0, [pc, #36] @ (8004070 ) - 800404a: f003 fbdb bl 8007804 + 8004172: 2200 movs r2, #0 + 8004174: f44f 5180 mov.w r1, #4096 @ 0x1000 + 8004178: 4809 ldr r0, [pc, #36] @ (80041a0 ) + 800417a: f003 fc6d bl 8007a58 HAL_SPI_Transmit(&hspi2, now, 1, 10); - 800404e: 230a movs r3, #10 - 8004050: 2201 movs r2, #1 - 8004052: 6839 ldr r1, [r7, #0] - 8004054: 4807 ldr r0, [pc, #28] @ (8004074 ) - 8004056: f004 fc3b bl 80088d0 + 800417e: 230a movs r3, #10 + 8004180: 2201 movs r2, #1 + 8004182: 6839 ldr r1, [r7, #0] + 8004184: 4807 ldr r0, [pc, #28] @ (80041a4 ) + 8004186: f004 fccd bl 8008b24 HAL_GPIO_WritePin(POT_CS_1_GPIO_Port, POT_CS_1_Pin, SET); - 800405a: 2201 movs r2, #1 - 800405c: f44f 5180 mov.w r1, #4096 @ 0x1000 - 8004060: 4803 ldr r0, [pc, #12] @ (8004070 ) - 8004062: f003 fbcf bl 8007804 + 800418a: 2201 movs r2, #1 + 800418c: f44f 5180 mov.w r1, #4096 @ 0x1000 + 8004190: 4803 ldr r0, [pc, #12] @ (80041a0 ) + 8004192: f003 fc61 bl 8007a58 } } - 8004066: bf00 nop - 8004068: 3708 adds r7, #8 - 800406a: 46bd mov sp, r7 - 800406c: bd80 pop {r7, pc} - 800406e: bf00 nop - 8004070: 40020400 .word 0x40020400 - 8004074: 20001f8c .word 0x20001f8c + 8004196: bf00 nop + 8004198: 3708 adds r7, #8 + 800419a: 46bd mov sp, r7 + 800419c: bd80 pop {r7, pc} + 800419e: bf00 nop + 80041a0: 40020400 .word 0x40020400 + 80041a4: 20001f8c .word 0x20001f8c -08004078 : +080041a8 : /* USER CODE END 0 */ /** * Initializes the Global MSP. */ void HAL_MspInit(void) { - 8004078: b580 push {r7, lr} - 800407a: b082 sub sp, #8 - 800407c: af00 add r7, sp, #0 + 80041a8: b580 push {r7, lr} + 80041aa: b082 sub sp, #8 + 80041ac: af00 add r7, sp, #0 /* USER CODE BEGIN MspInit 0 */ /* USER CODE END MspInit 0 */ __HAL_RCC_SYSCFG_CLK_ENABLE(); - 800407e: 2300 movs r3, #0 - 8004080: 607b str r3, [r7, #4] - 8004082: 4b12 ldr r3, [pc, #72] @ (80040cc ) - 8004084: 6c5b ldr r3, [r3, #68] @ 0x44 - 8004086: 4a11 ldr r2, [pc, #68] @ (80040cc ) - 8004088: f443 4380 orr.w r3, r3, #16384 @ 0x4000 - 800408c: 6453 str r3, [r2, #68] @ 0x44 - 800408e: 4b0f ldr r3, [pc, #60] @ (80040cc ) - 8004090: 6c5b ldr r3, [r3, #68] @ 0x44 - 8004092: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8004096: 607b str r3, [r7, #4] - 8004098: 687b ldr r3, [r7, #4] + 80041ae: 2300 movs r3, #0 + 80041b0: 607b str r3, [r7, #4] + 80041b2: 4b12 ldr r3, [pc, #72] @ (80041fc ) + 80041b4: 6c5b ldr r3, [r3, #68] @ 0x44 + 80041b6: 4a11 ldr r2, [pc, #68] @ (80041fc ) + 80041b8: f443 4380 orr.w r3, r3, #16384 @ 0x4000 + 80041bc: 6453 str r3, [r2, #68] @ 0x44 + 80041be: 4b0f ldr r3, [pc, #60] @ (80041fc ) + 80041c0: 6c5b ldr r3, [r3, #68] @ 0x44 + 80041c2: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 80041c6: 607b str r3, [r7, #4] + 80041c8: 687b ldr r3, [r7, #4] __HAL_RCC_PWR_CLK_ENABLE(); - 800409a: 2300 movs r3, #0 - 800409c: 603b str r3, [r7, #0] - 800409e: 4b0b ldr r3, [pc, #44] @ (80040cc ) - 80040a0: 6c1b ldr r3, [r3, #64] @ 0x40 - 80040a2: 4a0a ldr r2, [pc, #40] @ (80040cc ) - 80040a4: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 - 80040a8: 6413 str r3, [r2, #64] @ 0x40 - 80040aa: 4b08 ldr r3, [pc, #32] @ (80040cc ) - 80040ac: 6c1b ldr r3, [r3, #64] @ 0x40 - 80040ae: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 80040b2: 603b str r3, [r7, #0] - 80040b4: 683b ldr r3, [r7, #0] + 80041ca: 2300 movs r3, #0 + 80041cc: 603b str r3, [r7, #0] + 80041ce: 4b0b ldr r3, [pc, #44] @ (80041fc ) + 80041d0: 6c1b ldr r3, [r3, #64] @ 0x40 + 80041d2: 4a0a ldr r2, [pc, #40] @ (80041fc ) + 80041d4: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 80041d8: 6413 str r3, [r2, #64] @ 0x40 + 80041da: 4b08 ldr r3, [pc, #32] @ (80041fc ) + 80041dc: 6c1b ldr r3, [r3, #64] @ 0x40 + 80041de: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 80041e2: 603b str r3, [r7, #0] + 80041e4: 683b ldr r3, [r7, #0] /* System interrupt init*/ /* PendSV_IRQn interrupt configuration */ HAL_NVIC_SetPriority(PendSV_IRQn, 15, 0); - 80040b6: 2200 movs r2, #0 - 80040b8: 210f movs r1, #15 - 80040ba: f06f 0001 mvn.w r0, #1 - 80040be: f002 fb53 bl 8006768 + 80041e6: 2200 movs r2, #0 + 80041e8: 210f movs r1, #15 + 80041ea: f06f 0001 mvn.w r0, #1 + 80041ee: f002 fbe5 bl 80069bc /* USER CODE BEGIN MspInit 1 */ /* USER CODE END MspInit 1 */ } - 80040c2: bf00 nop - 80040c4: 3708 adds r7, #8 - 80040c6: 46bd mov sp, r7 - 80040c8: bd80 pop {r7, pc} - 80040ca: bf00 nop - 80040cc: 40023800 .word 0x40023800 + 80041f2: bf00 nop + 80041f4: 3708 adds r7, #8 + 80041f6: 46bd mov sp, r7 + 80041f8: bd80 pop {r7, pc} + 80041fa: bf00 nop + 80041fc: 40023800 .word 0x40023800 -080040d0 : +08004200 : * reset by HAL_Init() or at any time when clock is configured, by HAL_RCC_ClockConfig(). * @param TickPriority: Tick interrupt priority. * @retval HAL status */ HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) { - 80040d0: b580 push {r7, lr} - 80040d2: b08e sub sp, #56 @ 0x38 - 80040d4: af00 add r7, sp, #0 - 80040d6: 6078 str r0, [r7, #4] + 8004200: b580 push {r7, lr} + 8004202: b08e sub sp, #56 @ 0x38 + 8004204: af00 add r7, sp, #0 + 8004206: 6078 str r0, [r7, #4] RCC_ClkInitTypeDef clkconfig; uint32_t uwTimclock, uwAPB1Prescaler = 0U; - 80040d8: 2300 movs r3, #0 - 80040da: 62fb str r3, [r7, #44] @ 0x2c + 8004208: 2300 movs r3, #0 + 800420a: 62fb str r3, [r7, #44] @ 0x2c uint32_t uwPrescalerValue = 0U; - 80040dc: 2300 movs r3, #0 - 80040de: 62bb str r3, [r7, #40] @ 0x28 + 800420c: 2300 movs r3, #0 + 800420e: 62bb str r3, [r7, #40] @ 0x28 uint32_t pFLatency; HAL_StatusTypeDef status; /* Enable TIM12 clock */ __HAL_RCC_TIM12_CLK_ENABLE(); - 80040e0: 2300 movs r3, #0 - 80040e2: 60fb str r3, [r7, #12] - 80040e4: 4b33 ldr r3, [pc, #204] @ (80041b4 ) - 80040e6: 6c1b ldr r3, [r3, #64] @ 0x40 - 80040e8: 4a32 ldr r2, [pc, #200] @ (80041b4 ) - 80040ea: f043 0340 orr.w r3, r3, #64 @ 0x40 - 80040ee: 6413 str r3, [r2, #64] @ 0x40 - 80040f0: 4b30 ldr r3, [pc, #192] @ (80041b4 ) - 80040f2: 6c1b ldr r3, [r3, #64] @ 0x40 - 80040f4: f003 0340 and.w r3, r3, #64 @ 0x40 - 80040f8: 60fb str r3, [r7, #12] - 80040fa: 68fb ldr r3, [r7, #12] + 8004210: 2300 movs r3, #0 + 8004212: 60fb str r3, [r7, #12] + 8004214: 4b33 ldr r3, [pc, #204] @ (80042e4 ) + 8004216: 6c1b ldr r3, [r3, #64] @ 0x40 + 8004218: 4a32 ldr r2, [pc, #200] @ (80042e4 ) + 800421a: f043 0340 orr.w r3, r3, #64 @ 0x40 + 800421e: 6413 str r3, [r2, #64] @ 0x40 + 8004220: 4b30 ldr r3, [pc, #192] @ (80042e4 ) + 8004222: 6c1b ldr r3, [r3, #64] @ 0x40 + 8004224: f003 0340 and.w r3, r3, #64 @ 0x40 + 8004228: 60fb str r3, [r7, #12] + 800422a: 68fb ldr r3, [r7, #12] /* Get clock configuration */ HAL_RCC_GetClockConfig(&clkconfig, &pFLatency); - 80040fc: f107 0210 add.w r2, r7, #16 - 8004100: f107 0314 add.w r3, r7, #20 - 8004104: 4611 mov r1, r2 - 8004106: 4618 mov r0, r3 - 8004108: f003 fecc bl 8007ea4 + 800422c: f107 0210 add.w r2, r7, #16 + 8004230: f107 0314 add.w r3, r7, #20 + 8004234: 4611 mov r1, r2 + 8004236: 4618 mov r0, r3 + 8004238: f003 ff5e bl 80080f8 /* Get APB1 prescaler */ uwAPB1Prescaler = clkconfig.APB1CLKDivider; - 800410c: 6a3b ldr r3, [r7, #32] - 800410e: 62fb str r3, [r7, #44] @ 0x2c + 800423c: 6a3b ldr r3, [r7, #32] + 800423e: 62fb str r3, [r7, #44] @ 0x2c /* Compute TIM12 clock */ if (uwAPB1Prescaler == RCC_HCLK_DIV1) - 8004110: 6afb ldr r3, [r7, #44] @ 0x2c - 8004112: 2b00 cmp r3, #0 - 8004114: d103 bne.n 800411e + 8004240: 6afb ldr r3, [r7, #44] @ 0x2c + 8004242: 2b00 cmp r3, #0 + 8004244: d103 bne.n 800424e { uwTimclock = HAL_RCC_GetPCLK1Freq(); - 8004116: f003 fe9d bl 8007e54 - 800411a: 6378 str r0, [r7, #52] @ 0x34 - 800411c: e004 b.n 8004128 + 8004246: f003 ff2f bl 80080a8 + 800424a: 6378 str r0, [r7, #52] @ 0x34 + 800424c: e004 b.n 8004258 } else { uwTimclock = 2UL * HAL_RCC_GetPCLK1Freq(); - 800411e: f003 fe99 bl 8007e54 - 8004122: 4603 mov r3, r0 - 8004124: 005b lsls r3, r3, #1 - 8004126: 637b str r3, [r7, #52] @ 0x34 + 800424e: f003 ff2b bl 80080a8 + 8004252: 4603 mov r3, r0 + 8004254: 005b lsls r3, r3, #1 + 8004256: 637b str r3, [r7, #52] @ 0x34 } /* Compute the prescaler value to have TIM12 counter clock equal to 1MHz */ uwPrescalerValue = (uint32_t) ((uwTimclock / 1000000U) - 1U); - 8004128: 6b7b ldr r3, [r7, #52] @ 0x34 - 800412a: 4a23 ldr r2, [pc, #140] @ (80041b8 ) - 800412c: fba2 2303 umull r2, r3, r2, r3 - 8004130: 0c9b lsrs r3, r3, #18 - 8004132: 3b01 subs r3, #1 - 8004134: 62bb str r3, [r7, #40] @ 0x28 + 8004258: 6b7b ldr r3, [r7, #52] @ 0x34 + 800425a: 4a23 ldr r2, [pc, #140] @ (80042e8 ) + 800425c: fba2 2303 umull r2, r3, r2, r3 + 8004260: 0c9b lsrs r3, r3, #18 + 8004262: 3b01 subs r3, #1 + 8004264: 62bb str r3, [r7, #40] @ 0x28 /* Initialize TIM12 */ htim12.Instance = TIM12; - 8004136: 4b21 ldr r3, [pc, #132] @ (80041bc ) - 8004138: 4a21 ldr r2, [pc, #132] @ (80041c0 ) - 800413a: 601a str r2, [r3, #0] + 8004266: 4b21 ldr r3, [pc, #132] @ (80042ec ) + 8004268: 4a21 ldr r2, [pc, #132] @ (80042f0 ) + 800426a: 601a str r2, [r3, #0] + Period = [(TIM12CLK/1000) - 1]. to have a (1/1000) s time base. + Prescaler = (uwTimclock/1000000 - 1) to have a 1MHz counter clock. + ClockDivision = 0 + Counter direction = Up */ htim12.Init.Period = (1000000U / 1000U) - 1U; - 800413c: 4b1f ldr r3, [pc, #124] @ (80041bc ) - 800413e: f240 32e7 movw r2, #999 @ 0x3e7 - 8004142: 60da str r2, [r3, #12] + 800426c: 4b1f ldr r3, [pc, #124] @ (80042ec ) + 800426e: f240 32e7 movw r2, #999 @ 0x3e7 + 8004272: 60da str r2, [r3, #12] htim12.Init.Prescaler = uwPrescalerValue; - 8004144: 4a1d ldr r2, [pc, #116] @ (80041bc ) - 8004146: 6abb ldr r3, [r7, #40] @ 0x28 - 8004148: 6053 str r3, [r2, #4] + 8004274: 4a1d ldr r2, [pc, #116] @ (80042ec ) + 8004276: 6abb ldr r3, [r7, #40] @ 0x28 + 8004278: 6053 str r3, [r2, #4] htim12.Init.ClockDivision = 0; - 800414a: 4b1c ldr r3, [pc, #112] @ (80041bc ) - 800414c: 2200 movs r2, #0 - 800414e: 611a str r2, [r3, #16] + 800427a: 4b1c ldr r3, [pc, #112] @ (80042ec ) + 800427c: 2200 movs r2, #0 + 800427e: 611a str r2, [r3, #16] htim12.Init.CounterMode = TIM_COUNTERMODE_UP; - 8004150: 4b1a ldr r3, [pc, #104] @ (80041bc ) - 8004152: 2200 movs r2, #0 - 8004154: 609a str r2, [r3, #8] + 8004280: 4b1a ldr r3, [pc, #104] @ (80042ec ) + 8004282: 2200 movs r2, #0 + 8004284: 609a str r2, [r3, #8] htim12.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 8004156: 4b19 ldr r3, [pc, #100] @ (80041bc ) - 8004158: 2200 movs r2, #0 - 800415a: 619a str r2, [r3, #24] + 8004286: 4b19 ldr r3, [pc, #100] @ (80042ec ) + 8004288: 2200 movs r2, #0 + 800428a: 619a str r2, [r3, #24] status = HAL_TIM_Base_Init(&htim12); - 800415c: 4817 ldr r0, [pc, #92] @ (80041bc ) - 800415e: f004 fde7 bl 8008d30 - 8004162: 4603 mov r3, r0 - 8004164: f887 3033 strb.w r3, [r7, #51] @ 0x33 + 800428c: 4817 ldr r0, [pc, #92] @ (80042ec ) + 800428e: f004 fe79 bl 8008f84 + 8004292: 4603 mov r3, r0 + 8004294: f887 3033 strb.w r3, [r7, #51] @ 0x33 if (status == HAL_OK) - 8004168: f897 3033 ldrb.w r3, [r7, #51] @ 0x33 - 800416c: 2b00 cmp r3, #0 - 800416e: d11b bne.n 80041a8 + 8004298: f897 3033 ldrb.w r3, [r7, #51] @ 0x33 + 800429c: 2b00 cmp r3, #0 + 800429e: d11b bne.n 80042d8 { /* Start the TIM time Base generation in interrupt mode */ status = HAL_TIM_Base_Start_IT(&htim12); - 8004170: 4812 ldr r0, [pc, #72] @ (80041bc ) - 8004172: f004 fef5 bl 8008f60 - 8004176: 4603 mov r3, r0 - 8004178: f887 3033 strb.w r3, [r7, #51] @ 0x33 + 80042a0: 4812 ldr r0, [pc, #72] @ (80042ec ) + 80042a2: f004 ff87 bl 80091b4 + 80042a6: 4603 mov r3, r0 + 80042a8: f887 3033 strb.w r3, [r7, #51] @ 0x33 if (status == HAL_OK) - 800417c: f897 3033 ldrb.w r3, [r7, #51] @ 0x33 - 8004180: 2b00 cmp r3, #0 - 8004182: d111 bne.n 80041a8 + 80042ac: f897 3033 ldrb.w r3, [r7, #51] @ 0x33 + 80042b0: 2b00 cmp r3, #0 + 80042b2: d111 bne.n 80042d8 { /* Enable the TIM12 global Interrupt */ HAL_NVIC_EnableIRQ(TIM8_BRK_TIM12_IRQn); - 8004184: 202b movs r0, #43 @ 0x2b - 8004186: f002 fb1b bl 80067c0 + 80042b4: 202b movs r0, #43 @ 0x2b + 80042b6: f002 fbad bl 8006a14 /* Configure the SysTick IRQ priority */ if (TickPriority < (1UL << __NVIC_PRIO_BITS)) - 800418a: 687b ldr r3, [r7, #4] - 800418c: 2b0f cmp r3, #15 - 800418e: d808 bhi.n 80041a2 + 80042ba: 687b ldr r3, [r7, #4] + 80042bc: 2b0f cmp r3, #15 + 80042be: d808 bhi.n 80042d2 { /* Configure the TIM IRQ priority */ HAL_NVIC_SetPriority(TIM8_BRK_TIM12_IRQn, TickPriority, 0U); - 8004190: 2200 movs r2, #0 - 8004192: 6879 ldr r1, [r7, #4] - 8004194: 202b movs r0, #43 @ 0x2b - 8004196: f002 fae7 bl 8006768 + 80042c0: 2200 movs r2, #0 + 80042c2: 6879 ldr r1, [r7, #4] + 80042c4: 202b movs r0, #43 @ 0x2b + 80042c6: f002 fb79 bl 80069bc uwTickPrio = TickPriority; - 800419a: 4a0a ldr r2, [pc, #40] @ (80041c4 ) - 800419c: 687b ldr r3, [r7, #4] - 800419e: 6013 str r3, [r2, #0] - 80041a0: e002 b.n 80041a8 + 80042ca: 4a0a ldr r2, [pc, #40] @ (80042f4 ) + 80042cc: 687b ldr r3, [r7, #4] + 80042ce: 6013 str r3, [r2, #0] + 80042d0: e002 b.n 80042d8 } else { status = HAL_ERROR; - 80041a2: 2301 movs r3, #1 - 80041a4: f887 3033 strb.w r3, [r7, #51] @ 0x33 + 80042d2: 2301 movs r3, #1 + 80042d4: f887 3033 strb.w r3, [r7, #51] @ 0x33 } } } /* Return function status */ return status; - 80041a8: f897 3033 ldrb.w r3, [r7, #51] @ 0x33 + 80042d8: f897 3033 ldrb.w r3, [r7, #51] @ 0x33 } - 80041ac: 4618 mov r0, r3 - 80041ae: 3738 adds r7, #56 @ 0x38 - 80041b0: 46bd mov sp, r7 - 80041b2: bd80 pop {r7, pc} - 80041b4: 40023800 .word 0x40023800 - 80041b8: 431bde83 .word 0x431bde83 - 80041bc: 2000203c .word 0x2000203c - 80041c0: 40001800 .word 0x40001800 - 80041c4: 20000004 .word 0x20000004 + 80042dc: 4618 mov r0, r3 + 80042de: 3738 adds r7, #56 @ 0x38 + 80042e0: 46bd mov sp, r7 + 80042e2: bd80 pop {r7, pc} + 80042e4: 40023800 .word 0x40023800 + 80042e8: 431bde83 .word 0x431bde83 + 80042ec: 2000203c .word 0x2000203c + 80042f0: 40001800 .word 0x40001800 + 80042f4: 20000004 .word 0x20000004 -080041c8 : +080042f8 : /******************************************************************************/ /** * @brief This function handles Non maskable interrupt. */ void NMI_Handler(void) { - 80041c8: b480 push {r7} - 80041ca: af00 add r7, sp, #0 + 80042f8: b480 push {r7} + 80042fa: 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) - 80041cc: bf00 nop - 80041ce: e7fd b.n 80041cc + 80042fc: bf00 nop + 80042fe: e7fd b.n 80042fc -080041d0 : +08004300 : /** * @brief This function handles Hard fault interrupt. */ void HardFault_Handler(void) { - 80041d0: b480 push {r7} - 80041d2: af00 add r7, sp, #0 + 8004300: b480 push {r7} + 8004302: af00 add r7, sp, #0 /* USER CODE BEGIN HardFault_IRQn 0 */ /* USER CODE END HardFault_IRQn 0 */ while (1) - 80041d4: bf00 nop - 80041d6: e7fd b.n 80041d4 + 8004304: bf00 nop + 8004306: e7fd b.n 8004304 -080041d8 : +08004308 : /** * @brief This function handles Memory management fault. */ void MemManage_Handler(void) { - 80041d8: b480 push {r7} - 80041da: af00 add r7, sp, #0 + 8004308: b480 push {r7} + 800430a: af00 add r7, sp, #0 /* USER CODE BEGIN MemoryManagement_IRQn 0 */ /* USER CODE END MemoryManagement_IRQn 0 */ while (1) - 80041dc: bf00 nop - 80041de: e7fd b.n 80041dc + 800430c: bf00 nop + 800430e: e7fd b.n 800430c -080041e0 : +08004310 : /** * @brief This function handles Pre-fetch fault, memory access fault. */ void BusFault_Handler(void) { - 80041e0: b480 push {r7} - 80041e2: af00 add r7, sp, #0 + 8004310: b480 push {r7} + 8004312: af00 add r7, sp, #0 /* USER CODE BEGIN BusFault_IRQn 0 */ /* USER CODE END BusFault_IRQn 0 */ while (1) - 80041e4: bf00 nop - 80041e6: e7fd b.n 80041e4 + 8004314: bf00 nop + 8004316: e7fd b.n 8004314 -080041e8 : +08004318 : /** * @brief This function handles Undefined instruction or illegal state. */ void UsageFault_Handler(void) { - 80041e8: b480 push {r7} - 80041ea: af00 add r7, sp, #0 + 8004318: b480 push {r7} + 800431a: af00 add r7, sp, #0 /* USER CODE BEGIN UsageFault_IRQn 0 */ /* USER CODE END UsageFault_IRQn 0 */ while (1) - 80041ec: bf00 nop - 80041ee: e7fd b.n 80041ec + 800431c: bf00 nop + 800431e: e7fd b.n 800431c -080041f0 : +08004320 : /** * @brief This function handles Debug monitor. */ void DebugMon_Handler(void) { - 80041f0: b480 push {r7} - 80041f2: af00 add r7, sp, #0 + 8004320: b480 push {r7} + 8004322: af00 add r7, sp, #0 /* USER CODE END DebugMonitor_IRQn 0 */ /* USER CODE BEGIN DebugMonitor_IRQn 1 */ /* USER CODE END DebugMonitor_IRQn 1 */ } - 80041f4: bf00 nop - 80041f6: 46bd mov sp, r7 - 80041f8: f85d 7b04 ldr.w r7, [sp], #4 - 80041fc: 4770 bx lr + 8004324: bf00 nop + 8004326: 46bd mov sp, r7 + 8004328: f85d 7b04 ldr.w r7, [sp], #4 + 800432c: 4770 bx lr ... -08004200 : +08004330 : /** * @brief This function handles USART1 global interrupt. */ void USART1_IRQHandler(void) { - 8004200: b580 push {r7, lr} - 8004202: af00 add r7, sp, #0 + 8004330: b580 push {r7, lr} + 8004332: af00 add r7, sp, #0 /* USER CODE BEGIN USART1_IRQn 0 */ /* USER CODE END USART1_IRQn 0 */ HAL_UART_IRQHandler(&huart1); - 8004204: 4802 ldr r0, [pc, #8] @ (8004210 ) - 8004206: f006 ffd3 bl 800b1b0 + 8004334: 4802 ldr r0, [pc, #8] @ (8004340 ) + 8004336: f007 f9f5 bl 800b724 /* USER CODE BEGIN USART1_IRQn 1 */ /* USER CODE END USART1_IRQn 1 */ } - 800420a: bf00 nop - 800420c: bd80 pop {r7, pc} - 800420e: bf00 nop - 8004210: 200022a8 .word 0x200022a8 + 800433a: bf00 nop + 800433c: bd80 pop {r7, pc} + 800433e: bf00 nop + 8004340: 200022f0 .word 0x200022f0 -08004214 : +08004344 : /** * @brief This function handles TIM8 break interrupt and TIM12 global interrupt. */ void TIM8_BRK_TIM12_IRQHandler(void) { - 8004214: b580 push {r7, lr} - 8004216: af00 add r7, sp, #0 + 8004344: b580 push {r7, lr} + 8004346: af00 add r7, sp, #0 /* USER CODE BEGIN TIM8_BRK_TIM12_IRQn 0 */ /* USER CODE END TIM8_BRK_TIM12_IRQn 0 */ HAL_TIM_IRQHandler(&htim12); - 8004218: 4802 ldr r0, [pc, #8] @ (8004224 ) - 800421a: f005 fa11 bl 8009640 + 8004348: 4802 ldr r0, [pc, #8] @ (8004354 ) + 800434a: f005 fc33 bl 8009bb4 /* USER CODE BEGIN TIM8_BRK_TIM12_IRQn 1 */ /* USER CODE END TIM8_BRK_TIM12_IRQn 1 */ } - 800421e: bf00 nop - 8004220: bd80 pop {r7, pc} - 8004222: bf00 nop - 8004224: 2000203c .word 0x2000203c + 800434e: bf00 nop + 8004350: bd80 pop {r7, pc} + 8004352: bf00 nop + 8004354: 2000203c .word 0x2000203c -08004228 : +08004358 : /** * @brief This function handles TIM6 global interrupt, DAC1 and DAC2 underrun error interrupts. */ void TIM6_DAC_IRQHandler(void) { - 8004228: b580 push {r7, lr} - 800422a: af00 add r7, sp, #0 + 8004358: b580 push {r7, lr} + 800435a: af00 add r7, sp, #0 /* USER CODE BEGIN TIM6_DAC_IRQn 0 */ static uint8_t period = 0; /* USER CODE END TIM6_DAC_IRQn 0 */ HAL_TIM_IRQHandler(&htim6); - 800422c: 4826 ldr r0, [pc, #152] @ (80042c8 ) - 800422e: f005 fa07 bl 8009640 + 800435c: 4826 ldr r0, [pc, #152] @ (80043f8 ) + 800435e: f005 fc29 bl 8009bb4 /* USER CODE BEGIN TIM6_DAC_IRQn 1 */ if (Control.set_mode == Sleep) - 8004232: 4b26 ldr r3, [pc, #152] @ (80042cc ) - 8004234: 781b ldrb r3, [r3, #0] - 8004236: 2b03 cmp r3, #3 - 8004238: d10a bne.n 8004250 + 8004362: 4b26 ldr r3, [pc, #152] @ (80043fc ) + 8004364: 781b ldrb r3, [r3, #0] + 8004366: 2b03 cmp r3, #3 + 8004368: d10a bne.n 8004380 { TIM1->CCR1 = period; - 800423a: 4b25 ldr r3, [pc, #148] @ (80042d0 ) - 800423c: 781a ldrb r2, [r3, #0] - 800423e: 4b25 ldr r3, [pc, #148] @ (80042d4 ) - 8004240: 635a str r2, [r3, #52] @ 0x34 + 800436a: 4b25 ldr r3, [pc, #148] @ (8004400 ) + 800436c: 781a ldrb r2, [r3, #0] + 800436e: 4b25 ldr r3, [pc, #148] @ (8004404 ) + 8004370: 635a str r2, [r3, #52] @ 0x34 TIM1->CCR2 = 0; - 8004242: 4b24 ldr r3, [pc, #144] @ (80042d4 ) - 8004244: 2200 movs r2, #0 - 8004246: 639a str r2, [r3, #56] @ 0x38 + 8004372: 4b24 ldr r3, [pc, #144] @ (8004404 ) + 8004374: 2200 movs r2, #0 + 8004376: 639a str r2, [r3, #56] @ 0x38 TIM1->CCR3 = 0; - 8004248: 4b22 ldr r3, [pc, #136] @ (80042d4 ) - 800424a: 2200 movs r2, #0 - 800424c: 63da str r2, [r3, #60] @ 0x3c - 800424e: e029 b.n 80042a4 + 8004378: 4b22 ldr r3, [pc, #136] @ (8004404 ) + 800437a: 2200 movs r2, #0 + 800437c: 63da str r2, [r3, #60] @ 0x3c + 800437e: e029 b.n 80043d4 } else { if (ICD.work_set_mode == Monitor) //вроде зелёный - 8004250: 4b21 ldr r3, [pc, #132] @ (80042d8 ) - 8004252: 781b ldrb r3, [r3, #0] - 8004254: 2b00 cmp r3, #0 - 8004256: d10a bne.n 800426e + 8004380: 4b21 ldr r3, [pc, #132] @ (8004408 ) + 8004382: 781b ldrb r3, [r3, #0] + 8004384: 2b00 cmp r3, #0 + 8004386: d10a bne.n 800439e { TIM1->CCR1 = 0; - 8004258: 4b1e ldr r3, [pc, #120] @ (80042d4 ) - 800425a: 2200 movs r2, #0 - 800425c: 635a str r2, [r3, #52] @ 0x34 + 8004388: 4b1e ldr r3, [pc, #120] @ (8004404 ) + 800438a: 2200 movs r2, #0 + 800438c: 635a str r2, [r3, #52] @ 0x34 TIM1->CCR2 = period; - 800425e: 4b1c ldr r3, [pc, #112] @ (80042d0 ) - 8004260: 781a ldrb r2, [r3, #0] - 8004262: 4b1c ldr r3, [pc, #112] @ (80042d4 ) - 8004264: 639a str r2, [r3, #56] @ 0x38 + 800438e: 4b1c ldr r3, [pc, #112] @ (8004400 ) + 8004390: 781a ldrb r2, [r3, #0] + 8004392: 4b1c ldr r3, [pc, #112] @ (8004404 ) + 8004394: 639a str r2, [r3, #56] @ 0x38 TIM1->CCR3 = 0; - 8004266: 4b1b ldr r3, [pc, #108] @ (80042d4 ) - 8004268: 2200 movs r2, #0 - 800426a: 63da str r2, [r3, #60] @ 0x3c - 800426c: e01a b.n 80042a4 + 8004396: 4b1b ldr r3, [pc, #108] @ (8004404 ) + 8004398: 2200 movs r2, #0 + 800439a: 63da str r2, [r3, #60] @ 0x3c + 800439c: e01a b.n 80043d4 } else if (ICD.work_set_mode == Normal) //вроде жёлтый - 800426e: 4b1a ldr r3, [pc, #104] @ (80042d8 ) - 8004270: 781b ldrb r3, [r3, #0] - 8004272: 2b01 cmp r3, #1 - 8004274: d10b bne.n 800428e + 800439e: 4b1a ldr r3, [pc, #104] @ (8004408 ) + 80043a0: 781b ldrb r3, [r3, #0] + 80043a2: 2b01 cmp r3, #1 + 80043a4: d10b bne.n 80043be { TIM1->CCR1 = 0; - 8004276: 4b17 ldr r3, [pc, #92] @ (80042d4 ) - 8004278: 2200 movs r2, #0 - 800427a: 635a str r2, [r3, #52] @ 0x34 + 80043a6: 4b17 ldr r3, [pc, #92] @ (8004404 ) + 80043a8: 2200 movs r2, #0 + 80043aa: 635a str r2, [r3, #52] @ 0x34 TIM1->CCR2 = period; - 800427c: 4b14 ldr r3, [pc, #80] @ (80042d0 ) - 800427e: 781a ldrb r2, [r3, #0] - 8004280: 4b14 ldr r3, [pc, #80] @ (80042d4 ) - 8004282: 639a str r2, [r3, #56] @ 0x38 + 80043ac: 4b14 ldr r3, [pc, #80] @ (8004400 ) + 80043ae: 781a ldrb r2, [r3, #0] + 80043b0: 4b14 ldr r3, [pc, #80] @ (8004404 ) + 80043b2: 639a str r2, [r3, #56] @ 0x38 TIM1->CCR3 = period; - 8004284: 4b12 ldr r3, [pc, #72] @ (80042d0 ) - 8004286: 781a ldrb r2, [r3, #0] - 8004288: 4b12 ldr r3, [pc, #72] @ (80042d4 ) - 800428a: 63da str r2, [r3, #60] @ 0x3c - 800428c: e00a b.n 80042a4 + 80043b4: 4b12 ldr r3, [pc, #72] @ (8004400 ) + 80043b6: 781a ldrb r2, [r3, #0] + 80043b8: 4b12 ldr r3, [pc, #72] @ (8004404 ) + 80043ba: 63da str r2, [r3, #60] @ 0x3c + 80043bc: e00a b.n 80043d4 } else //вроде красный { TIM1->CCR1 = 0; - 800428e: 4b11 ldr r3, [pc, #68] @ (80042d4 ) - 8004290: 2200 movs r2, #0 - 8004292: 635a str r2, [r3, #52] @ 0x34 + 80043be: 4b11 ldr r3, [pc, #68] @ (8004404 ) + 80043c0: 2200 movs r2, #0 + 80043c2: 635a str r2, [r3, #52] @ 0x34 TIM1->CCR2 = period; - 8004294: 4b0e ldr r3, [pc, #56] @ (80042d0 ) - 8004296: 781a ldrb r2, [r3, #0] - 8004298: 4b0e ldr r3, [pc, #56] @ (80042d4 ) - 800429a: 639a str r2, [r3, #56] @ 0x38 + 80043c4: 4b0e ldr r3, [pc, #56] @ (8004400 ) + 80043c6: 781a ldrb r2, [r3, #0] + 80043c8: 4b0e ldr r3, [pc, #56] @ (8004404 ) + 80043ca: 639a str r2, [r3, #56] @ 0x38 TIM1->CCR3 = period; - 800429c: 4b0c ldr r3, [pc, #48] @ (80042d0 ) - 800429e: 781a ldrb r2, [r3, #0] - 80042a0: 4b0c ldr r3, [pc, #48] @ (80042d4 ) - 80042a2: 63da str r2, [r3, #60] @ 0x3c + 80043cc: 4b0c ldr r3, [pc, #48] @ (8004400 ) + 80043ce: 781a ldrb r2, [r3, #0] + 80043d0: 4b0c ldr r3, [pc, #48] @ (8004404 ) + 80043d2: 63da str r2, [r3, #60] @ 0x3c } } period++; - 80042a4: 4b0a ldr r3, [pc, #40] @ (80042d0 ) - 80042a6: 781b ldrb r3, [r3, #0] - 80042a8: 3301 adds r3, #1 - 80042aa: b2da uxtb r2, r3 - 80042ac: 4b08 ldr r3, [pc, #32] @ (80042d0 ) - 80042ae: 701a strb r2, [r3, #0] + 80043d4: 4b0a ldr r3, [pc, #40] @ (8004400 ) + 80043d6: 781b ldrb r3, [r3, #0] + 80043d8: 3301 adds r3, #1 + 80043da: b2da uxtb r2, r3 + 80043dc: 4b08 ldr r3, [pc, #32] @ (8004400 ) + 80043de: 701a strb r2, [r3, #0] if(period > 200) period = 0; - 80042b0: 4b07 ldr r3, [pc, #28] @ (80042d0 ) - 80042b2: 781b ldrb r3, [r3, #0] - 80042b4: 2bc8 cmp r3, #200 @ 0xc8 - 80042b6: d902 bls.n 80042be - 80042b8: 4b05 ldr r3, [pc, #20] @ (80042d0 ) - 80042ba: 2200 movs r2, #0 - 80042bc: 701a strb r2, [r3, #0] + 80043e0: 4b07 ldr r3, [pc, #28] @ (8004400 ) + 80043e2: 781b ldrb r3, [r3, #0] + 80043e4: 2bc8 cmp r3, #200 @ 0xc8 + 80043e6: d902 bls.n 80043ee + 80043e8: 4b05 ldr r3, [pc, #20] @ (8004400 ) + 80043ea: 2200 movs r2, #0 + 80043ec: 701a strb r2, [r3, #0] adc_read(&adc_str); - 80042be: 4807 ldr r0, [pc, #28] @ (80042dc ) - 80042c0: f7fc ff92 bl 80011e8 + 80043ee: 4807 ldr r0, [pc, #28] @ (800440c ) + 80043f0: f7fc fefa bl 80011e8 /* USER CODE END TIM6_DAC_IRQn 1 */ } - 80042c4: bf00 nop - 80042c6: bd80 pop {r7, pc} - 80042c8: 200021ac .word 0x200021ac - 80042cc: 200000f0 .word 0x200000f0 - 80042d0: 20002084 .word 0x20002084 - 80042d4: 40010000 .word 0x40010000 - 80042d8: 20001ea4 .word 0x20001ea4 - 80042dc: 2000008c .word 0x2000008c + 80043f4: bf00 nop + 80043f6: bd80 pop {r7, pc} + 80043f8: 200021ac .word 0x200021ac + 80043fc: 200000f0 .word 0x200000f0 + 8004400: 20002084 .word 0x20002084 + 8004404: 40010000 .word 0x40010000 + 8004408: 20001ea4 .word 0x20001ea4 + 800440c: 2000008c .word 0x2000008c -080042e0 : +08004410 : /** * @brief This function handles DMA2 stream2 global interrupt. */ void DMA2_Stream2_IRQHandler(void) { - 80042e0: b580 push {r7, lr} - 80042e2: af00 add r7, sp, #0 + 8004410: b580 push {r7, lr} + 8004412: af00 add r7, sp, #0 /* USER CODE BEGIN DMA2_Stream2_IRQn 0 */ /* USER CODE END DMA2_Stream2_IRQn 0 */ HAL_DMA_IRQHandler(&hdma_usart1_rx); - 80042e4: 4802 ldr r0, [pc, #8] @ (80042f0 ) - 80042e6: f002 fdbf bl 8006e68 + 8004414: 4802 ldr r0, [pc, #8] @ (8004420 ) + 8004416: f002 fe51 bl 80070bc /* USER CODE BEGIN DMA2_Stream2_IRQn 1 */ /* USER CODE END DMA2_Stream2_IRQn 1 */ } - 80042ea: bf00 nop - 80042ec: bd80 pop {r7, pc} - 80042ee: bf00 nop - 80042f0: 20002350 .word 0x20002350 + 800441a: bf00 nop + 800441c: bd80 pop {r7, pc} + 800441e: bf00 nop + 8004420: 20002398 .word 0x20002398 -080042f4 : +08004424 : /** * @brief This function handles DMA2 stream7 global interrupt. */ void DMA2_Stream7_IRQHandler(void) { - 80042f4: b580 push {r7, lr} - 80042f6: af00 add r7, sp, #0 + 8004424: b580 push {r7, lr} + 8004426: af00 add r7, sp, #0 /* USER CODE BEGIN DMA2_Stream7_IRQn 0 */ /* USER CODE END DMA2_Stream7_IRQn 0 */ HAL_DMA_IRQHandler(&hdma_usart1_tx); - 80042f8: 4802 ldr r0, [pc, #8] @ (8004304 ) - 80042fa: f002 fdb5 bl 8006e68 + 8004428: 4802 ldr r0, [pc, #8] @ (8004434 ) + 800442a: f002 fe47 bl 80070bc /* USER CODE BEGIN DMA2_Stream7_IRQn 1 */ /* USER CODE END DMA2_Stream7_IRQn 1 */ } - 80042fe: bf00 nop - 8004300: bd80 pop {r7, pc} - 8004302: bf00 nop - 8004304: 200022f0 .word 0x200022f0 + 800442e: bf00 nop + 8004430: bd80 pop {r7, pc} + 8004432: bf00 nop + 8004434: 20002338 .word 0x20002338 -08004308 <_sbrk>: +08004438 <_sbrk>: * * @param incr Memory size * @return Pointer to allocated memory */ void *_sbrk(ptrdiff_t incr) { - 8004308: b580 push {r7, lr} - 800430a: b086 sub sp, #24 - 800430c: af00 add r7, sp, #0 - 800430e: 6078 str r0, [r7, #4] + 8004438: b580 push {r7, lr} + 800443a: b086 sub sp, #24 + 800443c: af00 add r7, sp, #0 + 800443e: 6078 str r0, [r7, #4] extern uint8_t _end; /* Symbol defined in the linker script */ extern uint8_t _estack; /* Symbol defined in the linker script */ extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */ const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size; - 8004310: 4a14 ldr r2, [pc, #80] @ (8004364 <_sbrk+0x5c>) - 8004312: 4b15 ldr r3, [pc, #84] @ (8004368 <_sbrk+0x60>) - 8004314: 1ad3 subs r3, r2, r3 - 8004316: 617b str r3, [r7, #20] + 8004440: 4a14 ldr r2, [pc, #80] @ (8004494 <_sbrk+0x5c>) + 8004442: 4b15 ldr r3, [pc, #84] @ (8004498 <_sbrk+0x60>) + 8004444: 1ad3 subs r3, r2, r3 + 8004446: 617b str r3, [r7, #20] const uint8_t *max_heap = (uint8_t *)stack_limit; - 8004318: 697b ldr r3, [r7, #20] - 800431a: 613b str r3, [r7, #16] + 8004448: 697b ldr r3, [r7, #20] + 800444a: 613b str r3, [r7, #16] uint8_t *prev_heap_end; /* Initialize heap end at first call */ if (NULL == __sbrk_heap_end) - 800431c: 4b13 ldr r3, [pc, #76] @ (800436c <_sbrk+0x64>) - 800431e: 681b ldr r3, [r3, #0] - 8004320: 2b00 cmp r3, #0 - 8004322: d102 bne.n 800432a <_sbrk+0x22> + 800444c: 4b13 ldr r3, [pc, #76] @ (800449c <_sbrk+0x64>) + 800444e: 681b ldr r3, [r3, #0] + 8004450: 2b00 cmp r3, #0 + 8004452: d102 bne.n 800445a <_sbrk+0x22> { __sbrk_heap_end = &_end; - 8004324: 4b11 ldr r3, [pc, #68] @ (800436c <_sbrk+0x64>) - 8004326: 4a12 ldr r2, [pc, #72] @ (8004370 <_sbrk+0x68>) - 8004328: 601a str r2, [r3, #0] + 8004454: 4b11 ldr r3, [pc, #68] @ (800449c <_sbrk+0x64>) + 8004456: 4a12 ldr r2, [pc, #72] @ (80044a0 <_sbrk+0x68>) + 8004458: 601a str r2, [r3, #0] } /* Protect heap from growing into the reserved MSP stack */ if (__sbrk_heap_end + incr > max_heap) - 800432a: 4b10 ldr r3, [pc, #64] @ (800436c <_sbrk+0x64>) - 800432c: 681a ldr r2, [r3, #0] - 800432e: 687b ldr r3, [r7, #4] - 8004330: 4413 add r3, r2 - 8004332: 693a ldr r2, [r7, #16] - 8004334: 429a cmp r2, r3 - 8004336: d207 bcs.n 8004348 <_sbrk+0x40> + 800445a: 4b10 ldr r3, [pc, #64] @ (800449c <_sbrk+0x64>) + 800445c: 681a ldr r2, [r3, #0] + 800445e: 687b ldr r3, [r7, #4] + 8004460: 4413 add r3, r2 + 8004462: 693a ldr r2, [r7, #16] + 8004464: 429a cmp r2, r3 + 8004466: d207 bcs.n 8004478 <_sbrk+0x40> { errno = ENOMEM; - 8004338: f009 fb9a bl 800da70 <__errno> - 800433c: 4603 mov r3, r0 - 800433e: 220c movs r2, #12 - 8004340: 601a str r2, [r3, #0] + 8004468: f009 fdba bl 800dfe0 <__errno> + 800446c: 4603 mov r3, r0 + 800446e: 220c movs r2, #12 + 8004470: 601a str r2, [r3, #0] return (void *)-1; - 8004342: f04f 33ff mov.w r3, #4294967295 - 8004346: e009 b.n 800435c <_sbrk+0x54> + 8004472: f04f 33ff mov.w r3, #4294967295 + 8004476: e009 b.n 800448c <_sbrk+0x54> } prev_heap_end = __sbrk_heap_end; - 8004348: 4b08 ldr r3, [pc, #32] @ (800436c <_sbrk+0x64>) - 800434a: 681b ldr r3, [r3, #0] - 800434c: 60fb str r3, [r7, #12] + 8004478: 4b08 ldr r3, [pc, #32] @ (800449c <_sbrk+0x64>) + 800447a: 681b ldr r3, [r3, #0] + 800447c: 60fb str r3, [r7, #12] __sbrk_heap_end += incr; - 800434e: 4b07 ldr r3, [pc, #28] @ (800436c <_sbrk+0x64>) - 8004350: 681a ldr r2, [r3, #0] - 8004352: 687b ldr r3, [r7, #4] - 8004354: 4413 add r3, r2 - 8004356: 4a05 ldr r2, [pc, #20] @ (800436c <_sbrk+0x64>) - 8004358: 6013 str r3, [r2, #0] + 800447e: 4b07 ldr r3, [pc, #28] @ (800449c <_sbrk+0x64>) + 8004480: 681a ldr r2, [r3, #0] + 8004482: 687b ldr r3, [r7, #4] + 8004484: 4413 add r3, r2 + 8004486: 4a05 ldr r2, [pc, #20] @ (800449c <_sbrk+0x64>) + 8004488: 6013 str r3, [r2, #0] return (void *)prev_heap_end; - 800435a: 68fb ldr r3, [r7, #12] + 800448a: 68fb ldr r3, [r7, #12] } - 800435c: 4618 mov r0, r3 - 800435e: 3718 adds r7, #24 - 8004360: 46bd mov sp, r7 - 8004362: bd80 pop {r7, pc} - 8004364: 20050000 .word 0x20050000 - 8004368: 00000f00 .word 0x00000f00 - 800436c: 20002088 .word 0x20002088 - 8004370: 200111b8 .word 0x200111b8 + 800448c: 4618 mov r0, r3 + 800448e: 3718 adds r7, #24 + 8004490: 46bd mov sp, r7 + 8004492: bd80 pop {r7, pc} + 8004494: 20050000 .word 0x20050000 + 8004498: 00000f00 .word 0x00000f00 + 800449c: 20002088 .word 0x20002088 + 80044a0: 20011200 .word 0x20011200 -08004374 : +080044a4 : * configuration. * @param None * @retval None */ void SystemInit(void) { - 8004374: b480 push {r7} - 8004376: af00 add r7, sp, #0 + 80044a4: b480 push {r7} + 80044a6: af00 add r7, sp, #0 /* FPU settings ------------------------------------------------------------*/ #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ - 8004378: 4b06 ldr r3, [pc, #24] @ (8004394 ) - 800437a: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 - 800437e: 4a05 ldr r2, [pc, #20] @ (8004394 ) - 8004380: f443 0370 orr.w r3, r3, #15728640 @ 0xf00000 - 8004384: f8c2 3088 str.w r3, [r2, #136] @ 0x88 + 80044a8: 4b06 ldr r3, [pc, #24] @ (80044c4 ) + 80044aa: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 + 80044ae: 4a05 ldr r2, [pc, #20] @ (80044c4 ) + 80044b0: f443 0370 orr.w r3, r3, #15728640 @ 0xf00000 + 80044b4: f8c2 3088 str.w r3, [r2, #136] @ 0x88 /* 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 */ } - 8004388: bf00 nop - 800438a: 46bd mov sp, r7 - 800438c: f85d 7b04 ldr.w r7, [sp], #4 - 8004390: 4770 bx lr - 8004392: bf00 nop - 8004394: e000ed00 .word 0xe000ed00 + 80044b8: bf00 nop + 80044ba: 46bd mov sp, r7 + 80044bc: f85d 7b04 ldr.w r7, [sp], #4 + 80044c0: 4770 bx lr + 80044c2: bf00 nop + 80044c4: e000ed00 .word 0xe000ed00 -08004398 : -TIM_HandleTypeDef htim9; +080044c8 : +TIM_HandleTypeDef htim11; TIM_HandleTypeDef htim14; /* TIM1 init function */ void MX_TIM1_Init(void) { - 8004398: b580 push {r7, lr} - 800439a: b096 sub sp, #88 @ 0x58 - 800439c: af00 add r7, sp, #0 + 80044c8: b580 push {r7, lr} + 80044ca: b096 sub sp, #88 @ 0x58 + 80044cc: af00 add r7, sp, #0 /* USER CODE BEGIN TIM1_Init 0 */ /* USER CODE END TIM1_Init 0 */ TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - 800439e: f107 0348 add.w r3, r7, #72 @ 0x48 - 80043a2: 2200 movs r2, #0 - 80043a4: 601a str r2, [r3, #0] - 80043a6: 605a str r2, [r3, #4] - 80043a8: 609a str r2, [r3, #8] - 80043aa: 60da str r2, [r3, #12] + 80044ce: f107 0348 add.w r3, r7, #72 @ 0x48 + 80044d2: 2200 movs r2, #0 + 80044d4: 601a str r2, [r3, #0] + 80044d6: 605a str r2, [r3, #4] + 80044d8: 609a str r2, [r3, #8] + 80044da: 60da str r2, [r3, #12] TIM_MasterConfigTypeDef sMasterConfig = {0}; - 80043ac: f107 0340 add.w r3, r7, #64 @ 0x40 - 80043b0: 2200 movs r2, #0 - 80043b2: 601a str r2, [r3, #0] - 80043b4: 605a str r2, [r3, #4] + 80044dc: f107 0340 add.w r3, r7, #64 @ 0x40 + 80044e0: 2200 movs r2, #0 + 80044e2: 601a str r2, [r3, #0] + 80044e4: 605a str r2, [r3, #4] TIM_OC_InitTypeDef sConfigOC = {0}; - 80043b6: f107 0324 add.w r3, r7, #36 @ 0x24 - 80043ba: 2200 movs r2, #0 - 80043bc: 601a str r2, [r3, #0] - 80043be: 605a str r2, [r3, #4] - 80043c0: 609a str r2, [r3, #8] - 80043c2: 60da str r2, [r3, #12] - 80043c4: 611a str r2, [r3, #16] - 80043c6: 615a str r2, [r3, #20] - 80043c8: 619a str r2, [r3, #24] + 80044e6: f107 0324 add.w r3, r7, #36 @ 0x24 + 80044ea: 2200 movs r2, #0 + 80044ec: 601a str r2, [r3, #0] + 80044ee: 605a str r2, [r3, #4] + 80044f0: 609a str r2, [r3, #8] + 80044f2: 60da str r2, [r3, #12] + 80044f4: 611a str r2, [r3, #16] + 80044f6: 615a str r2, [r3, #20] + 80044f8: 619a str r2, [r3, #24] TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0}; - 80043ca: 1d3b adds r3, r7, #4 - 80043cc: 2220 movs r2, #32 - 80043ce: 2100 movs r1, #0 - 80043d0: 4618 mov r0, r3 - 80043d2: f009 faef bl 800d9b4 + 80044fa: 1d3b adds r3, r7, #4 + 80044fc: 2220 movs r2, #32 + 80044fe: 2100 movs r1, #0 + 8004500: 4618 mov r0, r3 + 8004502: f009 fd0f bl 800df24 /* USER CODE BEGIN TIM1_Init 1 */ /* USER CODE END TIM1_Init 1 */ htim1.Instance = TIM1; - 80043d6: 4b50 ldr r3, [pc, #320] @ (8004518 ) - 80043d8: 4a50 ldr r2, [pc, #320] @ (800451c ) - 80043da: 601a str r2, [r3, #0] + 8004506: 4b50 ldr r3, [pc, #320] @ (8004648 ) + 8004508: 4a50 ldr r2, [pc, #320] @ (800464c ) + 800450a: 601a str r2, [r3, #0] htim1.Init.Prescaler = 1; - 80043dc: 4b4e ldr r3, [pc, #312] @ (8004518 ) - 80043de: 2201 movs r2, #1 - 80043e0: 605a str r2, [r3, #4] + 800450c: 4b4e ldr r3, [pc, #312] @ (8004648 ) + 800450e: 2201 movs r2, #1 + 8004510: 605a str r2, [r3, #4] htim1.Init.CounterMode = TIM_COUNTERMODE_UP; - 80043e2: 4b4d ldr r3, [pc, #308] @ (8004518 ) - 80043e4: 2200 movs r2, #0 - 80043e6: 609a str r2, [r3, #8] + 8004512: 4b4d ldr r3, [pc, #308] @ (8004648 ) + 8004514: 2200 movs r2, #0 + 8004516: 609a str r2, [r3, #8] htim1.Init.Period = 200; - 80043e8: 4b4b ldr r3, [pc, #300] @ (8004518 ) - 80043ea: 22c8 movs r2, #200 @ 0xc8 - 80043ec: 60da str r2, [r3, #12] + 8004518: 4b4b ldr r3, [pc, #300] @ (8004648 ) + 800451a: 22c8 movs r2, #200 @ 0xc8 + 800451c: 60da str r2, [r3, #12] htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 80043ee: 4b4a ldr r3, [pc, #296] @ (8004518 ) - 80043f0: 2200 movs r2, #0 - 80043f2: 611a str r2, [r3, #16] + 800451e: 4b4a ldr r3, [pc, #296] @ (8004648 ) + 8004520: 2200 movs r2, #0 + 8004522: 611a str r2, [r3, #16] htim1.Init.RepetitionCounter = 0; - 80043f4: 4b48 ldr r3, [pc, #288] @ (8004518 ) - 80043f6: 2200 movs r2, #0 - 80043f8: 615a str r2, [r3, #20] + 8004524: 4b48 ldr r3, [pc, #288] @ (8004648 ) + 8004526: 2200 movs r2, #0 + 8004528: 615a str r2, [r3, #20] htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 80043fa: 4b47 ldr r3, [pc, #284] @ (8004518 ) - 80043fc: 2200 movs r2, #0 - 80043fe: 619a str r2, [r3, #24] + 800452a: 4b47 ldr r3, [pc, #284] @ (8004648 ) + 800452c: 2200 movs r2, #0 + 800452e: 619a str r2, [r3, #24] if (HAL_TIM_Base_Init(&htim1) != HAL_OK) - 8004400: 4845 ldr r0, [pc, #276] @ (8004518 ) - 8004402: f004 fc95 bl 8008d30 - 8004406: 4603 mov r3, r0 - 8004408: 2b00 cmp r3, #0 - 800440a: d001 beq.n 8004410 + 8004530: 4845 ldr r0, [pc, #276] @ (8004648 ) + 8004532: f004 fd27 bl 8008f84 + 8004536: 4603 mov r3, r0 + 8004538: 2b00 cmp r3, #0 + 800453a: d001 beq.n 8004540 { Error_Handler(); - 800440c: f7fe feac bl 8003168 + 800453c: f7fe fe70 bl 8003220 } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - 8004410: f44f 5380 mov.w r3, #4096 @ 0x1000 - 8004414: 64bb str r3, [r7, #72] @ 0x48 + 8004540: f44f 5380 mov.w r3, #4096 @ 0x1000 + 8004544: 64bb str r3, [r7, #72] @ 0x48 if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) - 8004416: f107 0348 add.w r3, r7, #72 @ 0x48 - 800441a: 4619 mov r1, r3 - 800441c: 483e ldr r0, [pc, #248] @ (8004518 ) - 800441e: f005 fbd7 bl 8009bd0 - 8004422: 4603 mov r3, r0 - 8004424: 2b00 cmp r3, #0 - 8004426: d001 beq.n 800442c + 8004546: f107 0348 add.w r3, r7, #72 @ 0x48 + 800454a: 4619 mov r1, r3 + 800454c: 483e ldr r0, [pc, #248] @ (8004648 ) + 800454e: f005 fdf9 bl 800a144 + 8004552: 4603 mov r3, r0 + 8004554: 2b00 cmp r3, #0 + 8004556: d001 beq.n 800455c { Error_Handler(); - 8004428: f7fe fe9e bl 8003168 + 8004558: f7fe fe62 bl 8003220 } if (HAL_TIM_PWM_Init(&htim1) != HAL_OK) - 800442c: 483a ldr r0, [pc, #232] @ (8004518 ) - 800442e: f004 fe5d bl 80090ec - 8004432: 4603 mov r3, r0 - 8004434: 2b00 cmp r3, #0 - 8004436: d001 beq.n 800443c + 800455c: 483a ldr r0, [pc, #232] @ (8004648 ) + 800455e: f004 feef bl 8009340 + 8004562: 4603 mov r3, r0 + 8004564: 2b00 cmp r3, #0 + 8004566: d001 beq.n 800456c { Error_Handler(); - 8004438: f7fe fe96 bl 8003168 + 8004568: f7fe fe5a bl 8003220 } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - 800443c: 2300 movs r3, #0 - 800443e: 643b str r3, [r7, #64] @ 0x40 + 800456c: 2300 movs r3, #0 + 800456e: 643b str r3, [r7, #64] @ 0x40 sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - 8004440: 2300 movs r3, #0 - 8004442: 647b str r3, [r7, #68] @ 0x44 + 8004570: 2300 movs r3, #0 + 8004572: 647b str r3, [r7, #68] @ 0x44 if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) - 8004444: f107 0340 add.w r3, r7, #64 @ 0x40 - 8004448: 4619 mov r1, r3 - 800444a: 4833 ldr r0, [pc, #204] @ (8004518 ) - 800444c: f006 fb6c bl 800ab28 - 8004450: 4603 mov r3, r0 - 8004452: 2b00 cmp r3, #0 - 8004454: d001 beq.n 800445a + 8004574: f107 0340 add.w r3, r7, #64 @ 0x40 + 8004578: 4619 mov r1, r3 + 800457a: 4833 ldr r0, [pc, #204] @ (8004648 ) + 800457c: f006 fd8e bl 800b09c + 8004580: 4603 mov r3, r0 + 8004582: 2b00 cmp r3, #0 + 8004584: d001 beq.n 800458a { Error_Handler(); - 8004456: f7fe fe87 bl 8003168 + 8004586: f7fe fe4b bl 8003220 } sConfigOC.OCMode = TIM_OCMODE_PWM1; - 800445a: 2360 movs r3, #96 @ 0x60 - 800445c: 627b str r3, [r7, #36] @ 0x24 + 800458a: 2360 movs r3, #96 @ 0x60 + 800458c: 627b str r3, [r7, #36] @ 0x24 sConfigOC.Pulse = 0; - 800445e: 2300 movs r3, #0 - 8004460: 62bb str r3, [r7, #40] @ 0x28 + 800458e: 2300 movs r3, #0 + 8004590: 62bb str r3, [r7, #40] @ 0x28 sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - 8004462: 2300 movs r3, #0 - 8004464: 62fb str r3, [r7, #44] @ 0x2c + 8004592: 2300 movs r3, #0 + 8004594: 62fb str r3, [r7, #44] @ 0x2c sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; - 8004466: 2300 movs r3, #0 - 8004468: 633b str r3, [r7, #48] @ 0x30 + 8004596: 2300 movs r3, #0 + 8004598: 633b str r3, [r7, #48] @ 0x30 sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - 800446a: 2300 movs r3, #0 - 800446c: 637b str r3, [r7, #52] @ 0x34 + 800459a: 2300 movs r3, #0 + 800459c: 637b str r3, [r7, #52] @ 0x34 sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; - 800446e: 2300 movs r3, #0 - 8004470: 63bb str r3, [r7, #56] @ 0x38 + 800459e: 2300 movs r3, #0 + 80045a0: 63bb str r3, [r7, #56] @ 0x38 sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; - 8004472: 2300 movs r3, #0 - 8004474: 63fb str r3, [r7, #60] @ 0x3c + 80045a2: 2300 movs r3, #0 + 80045a4: 63fb str r3, [r7, #60] @ 0x3c if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - 8004476: f107 0324 add.w r3, r7, #36 @ 0x24 - 800447a: 2200 movs r2, #0 - 800447c: 4619 mov r1, r3 - 800447e: 4826 ldr r0, [pc, #152] @ (8004518 ) - 8004480: f005 f9ce bl 8009820 - 8004484: 4603 mov r3, r0 - 8004486: 2b00 cmp r3, #0 - 8004488: d001 beq.n 800448e + 80045a6: f107 0324 add.w r3, r7, #36 @ 0x24 + 80045aa: 2200 movs r2, #0 + 80045ac: 4619 mov r1, r3 + 80045ae: 4826 ldr r0, [pc, #152] @ (8004648 ) + 80045b0: f005 fbf0 bl 8009d94 + 80045b4: 4603 mov r3, r0 + 80045b6: 2b00 cmp r3, #0 + 80045b8: d001 beq.n 80045be { Error_Handler(); - 800448a: f7fe fe6d bl 8003168 + 80045ba: f7fe fe31 bl 8003220 } if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - 800448e: f107 0324 add.w r3, r7, #36 @ 0x24 - 8004492: 2204 movs r2, #4 - 8004494: 4619 mov r1, r3 - 8004496: 4820 ldr r0, [pc, #128] @ (8004518 ) - 8004498: f005 f9c2 bl 8009820 - 800449c: 4603 mov r3, r0 - 800449e: 2b00 cmp r3, #0 - 80044a0: d001 beq.n 80044a6 + 80045be: f107 0324 add.w r3, r7, #36 @ 0x24 + 80045c2: 2204 movs r2, #4 + 80045c4: 4619 mov r1, r3 + 80045c6: 4820 ldr r0, [pc, #128] @ (8004648 ) + 80045c8: f005 fbe4 bl 8009d94 + 80045cc: 4603 mov r3, r0 + 80045ce: 2b00 cmp r3, #0 + 80045d0: d001 beq.n 80045d6 { Error_Handler(); - 80044a2: f7fe fe61 bl 8003168 + 80045d2: f7fe fe25 bl 8003220 } if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - 80044a6: f107 0324 add.w r3, r7, #36 @ 0x24 - 80044aa: 2208 movs r2, #8 - 80044ac: 4619 mov r1, r3 - 80044ae: 481a ldr r0, [pc, #104] @ (8004518 ) - 80044b0: f005 f9b6 bl 8009820 - 80044b4: 4603 mov r3, r0 - 80044b6: 2b00 cmp r3, #0 - 80044b8: d001 beq.n 80044be + 80045d6: f107 0324 add.w r3, r7, #36 @ 0x24 + 80045da: 2208 movs r2, #8 + 80045dc: 4619 mov r1, r3 + 80045de: 481a ldr r0, [pc, #104] @ (8004648 ) + 80045e0: f005 fbd8 bl 8009d94 + 80045e4: 4603 mov r3, r0 + 80045e6: 2b00 cmp r3, #0 + 80045e8: d001 beq.n 80045ee { Error_Handler(); - 80044ba: f7fe fe55 bl 8003168 + 80045ea: f7fe fe19 bl 8003220 } if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - 80044be: f107 0324 add.w r3, r7, #36 @ 0x24 - 80044c2: 220c movs r2, #12 - 80044c4: 4619 mov r1, r3 - 80044c6: 4814 ldr r0, [pc, #80] @ (8004518 ) - 80044c8: f005 f9aa bl 8009820 - 80044cc: 4603 mov r3, r0 - 80044ce: 2b00 cmp r3, #0 - 80044d0: d001 beq.n 80044d6 + 80045ee: f107 0324 add.w r3, r7, #36 @ 0x24 + 80045f2: 220c movs r2, #12 + 80045f4: 4619 mov r1, r3 + 80045f6: 4814 ldr r0, [pc, #80] @ (8004648 ) + 80045f8: f005 fbcc bl 8009d94 + 80045fc: 4603 mov r3, r0 + 80045fe: 2b00 cmp r3, #0 + 8004600: d001 beq.n 8004606 { Error_Handler(); - 80044d2: f7fe fe49 bl 8003168 + 8004602: f7fe fe0d bl 8003220 } sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; - 80044d6: 2300 movs r3, #0 - 80044d8: 607b str r3, [r7, #4] + 8004606: 2300 movs r3, #0 + 8004608: 607b str r3, [r7, #4] sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; - 80044da: 2300 movs r3, #0 - 80044dc: 60bb str r3, [r7, #8] + 800460a: 2300 movs r3, #0 + 800460c: 60bb str r3, [r7, #8] sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; - 80044de: 2300 movs r3, #0 - 80044e0: 60fb str r3, [r7, #12] + 800460e: 2300 movs r3, #0 + 8004610: 60fb str r3, [r7, #12] sBreakDeadTimeConfig.DeadTime = 0; - 80044e2: 2300 movs r3, #0 - 80044e4: 613b str r3, [r7, #16] + 8004612: 2300 movs r3, #0 + 8004614: 613b str r3, [r7, #16] sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; - 80044e6: 2300 movs r3, #0 - 80044e8: 617b str r3, [r7, #20] + 8004616: 2300 movs r3, #0 + 8004618: 617b str r3, [r7, #20] sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; - 80044ea: f44f 5300 mov.w r3, #8192 @ 0x2000 - 80044ee: 61bb str r3, [r7, #24] + 800461a: f44f 5300 mov.w r3, #8192 @ 0x2000 + 800461e: 61bb str r3, [r7, #24] sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; - 80044f0: 2300 movs r3, #0 - 80044f2: 623b str r3, [r7, #32] + 8004620: 2300 movs r3, #0 + 8004622: 623b str r3, [r7, #32] if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) - 80044f4: 1d3b adds r3, r7, #4 - 80044f6: 4619 mov r1, r3 - 80044f8: 4807 ldr r0, [pc, #28] @ (8004518 ) - 80044fa: f006 fbf3 bl 800ace4 - 80044fe: 4603 mov r3, r0 - 8004500: 2b00 cmp r3, #0 - 8004502: d001 beq.n 8004508 + 8004624: 1d3b adds r3, r7, #4 + 8004626: 4619 mov r1, r3 + 8004628: 4807 ldr r0, [pc, #28] @ (8004648 ) + 800462a: f006 fe15 bl 800b258 + 800462e: 4603 mov r3, r0 + 8004630: 2b00 cmp r3, #0 + 8004632: d001 beq.n 8004638 { Error_Handler(); - 8004504: f7fe fe30 bl 8003168 + 8004634: f7fe fdf4 bl 8003220 } /* USER CODE BEGIN TIM1_Init 2 */ /* USER CODE END TIM1_Init 2 */ HAL_TIM_MspPostInit(&htim1); - 8004508: 4803 ldr r0, [pc, #12] @ (8004518 ) - 800450a: f000 fb13 bl 8004b34 + 8004638: 4803 ldr r0, [pc, #12] @ (8004648 ) + 800463a: f000 fb7f bl 8004d3c } - 800450e: bf00 nop - 8004510: 3758 adds r7, #88 @ 0x58 - 8004512: 46bd mov sp, r7 - 8004514: bd80 pop {r7, pc} - 8004516: bf00 nop - 8004518: 2000208c .word 0x2000208c - 800451c: 40010000 .word 0x40010000 + 800463e: bf00 nop + 8004640: 3758 adds r7, #88 @ 0x58 + 8004642: 46bd mov sp, r7 + 8004644: bd80 pop {r7, pc} + 8004646: bf00 nop + 8004648: 2000208c .word 0x2000208c + 800464c: 40010000 .word 0x40010000 -08004520 : +08004650 : /* TIM2 init function */ void MX_TIM2_Init(void) { - 8004520: b580 push {r7, lr} - 8004522: b08e sub sp, #56 @ 0x38 - 8004524: af00 add r7, sp, #0 + 8004650: b580 push {r7, lr} + 8004652: b08e sub sp, #56 @ 0x38 + 8004654: af00 add r7, sp, #0 /* USER CODE BEGIN TIM2_Init 0 */ /* USER CODE END TIM2_Init 0 */ TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - 8004526: f107 0328 add.w r3, r7, #40 @ 0x28 - 800452a: 2200 movs r2, #0 - 800452c: 601a str r2, [r3, #0] - 800452e: 605a str r2, [r3, #4] - 8004530: 609a str r2, [r3, #8] - 8004532: 60da str r2, [r3, #12] + 8004656: f107 0328 add.w r3, r7, #40 @ 0x28 + 800465a: 2200 movs r2, #0 + 800465c: 601a str r2, [r3, #0] + 800465e: 605a str r2, [r3, #4] + 8004660: 609a str r2, [r3, #8] + 8004662: 60da str r2, [r3, #12] TIM_MasterConfigTypeDef sMasterConfig = {0}; - 8004534: f107 0320 add.w r3, r7, #32 - 8004538: 2200 movs r2, #0 - 800453a: 601a str r2, [r3, #0] - 800453c: 605a str r2, [r3, #4] + 8004664: f107 0320 add.w r3, r7, #32 + 8004668: 2200 movs r2, #0 + 800466a: 601a str r2, [r3, #0] + 800466c: 605a str r2, [r3, #4] TIM_OC_InitTypeDef sConfigOC = {0}; - 800453e: 1d3b adds r3, r7, #4 - 8004540: 2200 movs r2, #0 - 8004542: 601a str r2, [r3, #0] - 8004544: 605a str r2, [r3, #4] - 8004546: 609a str r2, [r3, #8] - 8004548: 60da str r2, [r3, #12] - 800454a: 611a str r2, [r3, #16] - 800454c: 615a str r2, [r3, #20] - 800454e: 619a str r2, [r3, #24] + 800466e: 1d3b adds r3, r7, #4 + 8004670: 2200 movs r2, #0 + 8004672: 601a str r2, [r3, #0] + 8004674: 605a str r2, [r3, #4] + 8004676: 609a str r2, [r3, #8] + 8004678: 60da str r2, [r3, #12] + 800467a: 611a str r2, [r3, #16] + 800467c: 615a str r2, [r3, #20] + 800467e: 619a str r2, [r3, #24] /* USER CODE BEGIN TIM2_Init 1 */ /* USER CODE END TIM2_Init 1 */ htim2.Instance = TIM2; - 8004550: 4b38 ldr r3, [pc, #224] @ (8004634 ) - 8004552: f04f 4280 mov.w r2, #1073741824 @ 0x40000000 - 8004556: 601a str r2, [r3, #0] + 8004680: 4b38 ldr r3, [pc, #224] @ (8004764 ) + 8004682: f04f 4280 mov.w r2, #1073741824 @ 0x40000000 + 8004686: 601a str r2, [r3, #0] htim2.Init.Prescaler = 0; - 8004558: 4b36 ldr r3, [pc, #216] @ (8004634 ) - 800455a: 2200 movs r2, #0 - 800455c: 605a str r2, [r3, #4] + 8004688: 4b36 ldr r3, [pc, #216] @ (8004764 ) + 800468a: 2200 movs r2, #0 + 800468c: 605a str r2, [r3, #4] htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - 800455e: 4b35 ldr r3, [pc, #212] @ (8004634 ) - 8004560: 2200 movs r2, #0 - 8004562: 609a str r2, [r3, #8] + 800468e: 4b35 ldr r3, [pc, #212] @ (8004764 ) + 8004690: 2200 movs r2, #0 + 8004692: 609a str r2, [r3, #8] htim2.Init.Period = 3000; - 8004564: 4b33 ldr r3, [pc, #204] @ (8004634 ) - 8004566: f640 32b8 movw r2, #3000 @ 0xbb8 - 800456a: 60da str r2, [r3, #12] + 8004694: 4b33 ldr r3, [pc, #204] @ (8004764 ) + 8004696: f640 32b8 movw r2, #3000 @ 0xbb8 + 800469a: 60da str r2, [r3, #12] htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 800456c: 4b31 ldr r3, [pc, #196] @ (8004634 ) - 800456e: 2200 movs r2, #0 - 8004570: 611a str r2, [r3, #16] + 800469c: 4b31 ldr r3, [pc, #196] @ (8004764 ) + 800469e: 2200 movs r2, #0 + 80046a0: 611a str r2, [r3, #16] htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 8004572: 4b30 ldr r3, [pc, #192] @ (8004634 ) - 8004574: 2200 movs r2, #0 - 8004576: 619a str r2, [r3, #24] + 80046a2: 4b30 ldr r3, [pc, #192] @ (8004764 ) + 80046a4: 2200 movs r2, #0 + 80046a6: 619a str r2, [r3, #24] if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - 8004578: 482e ldr r0, [pc, #184] @ (8004634 ) - 800457a: f004 fbd9 bl 8008d30 - 800457e: 4603 mov r3, r0 - 8004580: 2b00 cmp r3, #0 - 8004582: d001 beq.n 8004588 + 80046a8: 482e ldr r0, [pc, #184] @ (8004764 ) + 80046aa: f004 fc6b bl 8008f84 + 80046ae: 4603 mov r3, r0 + 80046b0: 2b00 cmp r3, #0 + 80046b2: d001 beq.n 80046b8 { Error_Handler(); - 8004584: f7fe fdf0 bl 8003168 + 80046b4: f7fe fdb4 bl 8003220 } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - 8004588: f44f 5380 mov.w r3, #4096 @ 0x1000 - 800458c: 62bb str r3, [r7, #40] @ 0x28 + 80046b8: f44f 5380 mov.w r3, #4096 @ 0x1000 + 80046bc: 62bb str r3, [r7, #40] @ 0x28 if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - 800458e: f107 0328 add.w r3, r7, #40 @ 0x28 - 8004592: 4619 mov r1, r3 - 8004594: 4827 ldr r0, [pc, #156] @ (8004634 ) - 8004596: f005 fb1b bl 8009bd0 - 800459a: 4603 mov r3, r0 - 800459c: 2b00 cmp r3, #0 - 800459e: d001 beq.n 80045a4 + 80046be: f107 0328 add.w r3, r7, #40 @ 0x28 + 80046c2: 4619 mov r1, r3 + 80046c4: 4827 ldr r0, [pc, #156] @ (8004764 ) + 80046c6: f005 fd3d bl 800a144 + 80046ca: 4603 mov r3, r0 + 80046cc: 2b00 cmp r3, #0 + 80046ce: d001 beq.n 80046d4 { Error_Handler(); - 80045a0: f7fe fde2 bl 8003168 + 80046d0: f7fe fda6 bl 8003220 } if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - 80045a4: 4823 ldr r0, [pc, #140] @ (8004634 ) - 80045a6: f004 fda1 bl 80090ec - 80045aa: 4603 mov r3, r0 - 80045ac: 2b00 cmp r3, #0 - 80045ae: d001 beq.n 80045b4 + 80046d4: 4823 ldr r0, [pc, #140] @ (8004764 ) + 80046d6: f004 fe33 bl 8009340 + 80046da: 4603 mov r3, r0 + 80046dc: 2b00 cmp r3, #0 + 80046de: d001 beq.n 80046e4 { Error_Handler(); - 80045b0: f7fe fdda bl 8003168 + 80046e0: f7fe fd9e bl 8003220 } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - 80045b4: 2300 movs r3, #0 - 80045b6: 623b str r3, [r7, #32] + 80046e4: 2300 movs r3, #0 + 80046e6: 623b str r3, [r7, #32] sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - 80045b8: 2300 movs r3, #0 - 80045ba: 627b str r3, [r7, #36] @ 0x24 + 80046e8: 2300 movs r3, #0 + 80046ea: 627b str r3, [r7, #36] @ 0x24 if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - 80045bc: f107 0320 add.w r3, r7, #32 - 80045c0: 4619 mov r1, r3 - 80045c2: 481c ldr r0, [pc, #112] @ (8004634 ) - 80045c4: f006 fab0 bl 800ab28 - 80045c8: 4603 mov r3, r0 - 80045ca: 2b00 cmp r3, #0 - 80045cc: d001 beq.n 80045d2 + 80046ec: f107 0320 add.w r3, r7, #32 + 80046f0: 4619 mov r1, r3 + 80046f2: 481c ldr r0, [pc, #112] @ (8004764 ) + 80046f4: f006 fcd2 bl 800b09c + 80046f8: 4603 mov r3, r0 + 80046fa: 2b00 cmp r3, #0 + 80046fc: d001 beq.n 8004702 { Error_Handler(); - 80045ce: f7fe fdcb bl 8003168 + 80046fe: f7fe fd8f bl 8003220 } sConfigOC.OCMode = TIM_OCMODE_PWM2; - 80045d2: 2370 movs r3, #112 @ 0x70 - 80045d4: 607b str r3, [r7, #4] + 8004702: 2370 movs r3, #112 @ 0x70 + 8004704: 607b str r3, [r7, #4] sConfigOC.Pulse = 0; - 80045d6: 2300 movs r3, #0 - 80045d8: 60bb str r3, [r7, #8] + 8004706: 2300 movs r3, #0 + 8004708: 60bb str r3, [r7, #8] sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - 80045da: 2300 movs r3, #0 - 80045dc: 60fb str r3, [r7, #12] + 800470a: 2300 movs r3, #0 + 800470c: 60fb str r3, [r7, #12] sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - 80045de: 2300 movs r3, #0 - 80045e0: 617b str r3, [r7, #20] + 800470e: 2300 movs r3, #0 + 8004710: 617b str r3, [r7, #20] if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - 80045e2: 1d3b adds r3, r7, #4 - 80045e4: 2204 movs r2, #4 - 80045e6: 4619 mov r1, r3 - 80045e8: 4812 ldr r0, [pc, #72] @ (8004634 ) - 80045ea: f005 f919 bl 8009820 - 80045ee: 4603 mov r3, r0 - 80045f0: 2b00 cmp r3, #0 - 80045f2: d001 beq.n 80045f8 + 8004712: 1d3b adds r3, r7, #4 + 8004714: 2204 movs r2, #4 + 8004716: 4619 mov r1, r3 + 8004718: 4812 ldr r0, [pc, #72] @ (8004764 ) + 800471a: f005 fb3b bl 8009d94 + 800471e: 4603 mov r3, r0 + 8004720: 2b00 cmp r3, #0 + 8004722: d001 beq.n 8004728 { Error_Handler(); - 80045f4: f7fe fdb8 bl 8003168 + 8004724: f7fe fd7c bl 8003220 } if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - 80045f8: 1d3b adds r3, r7, #4 - 80045fa: 2208 movs r2, #8 - 80045fc: 4619 mov r1, r3 - 80045fe: 480d ldr r0, [pc, #52] @ (8004634 ) - 8004600: f005 f90e bl 8009820 - 8004604: 4603 mov r3, r0 - 8004606: 2b00 cmp r3, #0 - 8004608: d001 beq.n 800460e + 8004728: 1d3b adds r3, r7, #4 + 800472a: 2208 movs r2, #8 + 800472c: 4619 mov r1, r3 + 800472e: 480d ldr r0, [pc, #52] @ (8004764 ) + 8004730: f005 fb30 bl 8009d94 + 8004734: 4603 mov r3, r0 + 8004736: 2b00 cmp r3, #0 + 8004738: d001 beq.n 800473e { Error_Handler(); - 800460a: f7fe fdad bl 8003168 + 800473a: f7fe fd71 bl 8003220 } if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - 800460e: 1d3b adds r3, r7, #4 - 8004610: 220c movs r2, #12 - 8004612: 4619 mov r1, r3 - 8004614: 4807 ldr r0, [pc, #28] @ (8004634 ) - 8004616: f005 f903 bl 8009820 - 800461a: 4603 mov r3, r0 - 800461c: 2b00 cmp r3, #0 - 800461e: d001 beq.n 8004624 + 800473e: 1d3b adds r3, r7, #4 + 8004740: 220c movs r2, #12 + 8004742: 4619 mov r1, r3 + 8004744: 4807 ldr r0, [pc, #28] @ (8004764 ) + 8004746: f005 fb25 bl 8009d94 + 800474a: 4603 mov r3, r0 + 800474c: 2b00 cmp r3, #0 + 800474e: d001 beq.n 8004754 { Error_Handler(); - 8004620: f7fe fda2 bl 8003168 + 8004750: f7fe fd66 bl 8003220 } /* USER CODE BEGIN TIM2_Init 2 */ /* USER CODE END TIM2_Init 2 */ HAL_TIM_MspPostInit(&htim2); - 8004624: 4803 ldr r0, [pc, #12] @ (8004634 ) - 8004626: f000 fa85 bl 8004b34 + 8004754: 4803 ldr r0, [pc, #12] @ (8004764 ) + 8004756: f000 faf1 bl 8004d3c } - 800462a: bf00 nop - 800462c: 3738 adds r7, #56 @ 0x38 - 800462e: 46bd mov sp, r7 - 8004630: bd80 pop {r7, pc} - 8004632: bf00 nop - 8004634: 200020d4 .word 0x200020d4 + 800475a: bf00 nop + 800475c: 3738 adds r7, #56 @ 0x38 + 800475e: 46bd mov sp, r7 + 8004760: bd80 pop {r7, pc} + 8004762: bf00 nop + 8004764: 200020d4 .word 0x200020d4 -08004638 : +08004768 : /* TIM3 init function */ void MX_TIM3_Init(void) { - 8004638: b580 push {r7, lr} - 800463a: b08e sub sp, #56 @ 0x38 - 800463c: af00 add r7, sp, #0 + 8004768: b580 push {r7, lr} + 800476a: b08e sub sp, #56 @ 0x38 + 800476c: af00 add r7, sp, #0 /* USER CODE BEGIN TIM3_Init 0 */ /* USER CODE END TIM3_Init 0 */ TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - 800463e: f107 0328 add.w r3, r7, #40 @ 0x28 - 8004642: 2200 movs r2, #0 - 8004644: 601a str r2, [r3, #0] - 8004646: 605a str r2, [r3, #4] - 8004648: 609a str r2, [r3, #8] - 800464a: 60da str r2, [r3, #12] + 800476e: f107 0328 add.w r3, r7, #40 @ 0x28 + 8004772: 2200 movs r2, #0 + 8004774: 601a str r2, [r3, #0] + 8004776: 605a str r2, [r3, #4] + 8004778: 609a str r2, [r3, #8] + 800477a: 60da str r2, [r3, #12] TIM_MasterConfigTypeDef sMasterConfig = {0}; - 800464c: f107 0320 add.w r3, r7, #32 - 8004650: 2200 movs r2, #0 - 8004652: 601a str r2, [r3, #0] - 8004654: 605a str r2, [r3, #4] + 800477c: f107 0320 add.w r3, r7, #32 + 8004780: 2200 movs r2, #0 + 8004782: 601a str r2, [r3, #0] + 8004784: 605a str r2, [r3, #4] TIM_OC_InitTypeDef sConfigOC = {0}; - 8004656: 1d3b adds r3, r7, #4 - 8004658: 2200 movs r2, #0 - 800465a: 601a str r2, [r3, #0] - 800465c: 605a str r2, [r3, #4] - 800465e: 609a str r2, [r3, #8] - 8004660: 60da str r2, [r3, #12] - 8004662: 611a str r2, [r3, #16] - 8004664: 615a str r2, [r3, #20] - 8004666: 619a str r2, [r3, #24] + 8004786: 1d3b adds r3, r7, #4 + 8004788: 2200 movs r2, #0 + 800478a: 601a str r2, [r3, #0] + 800478c: 605a str r2, [r3, #4] + 800478e: 609a str r2, [r3, #8] + 8004790: 60da str r2, [r3, #12] + 8004792: 611a str r2, [r3, #16] + 8004794: 615a str r2, [r3, #20] + 8004796: 619a str r2, [r3, #24] /* USER CODE BEGIN TIM3_Init 1 */ /* USER CODE END TIM3_Init 1 */ htim3.Instance = TIM3; - 8004668: 4b37 ldr r3, [pc, #220] @ (8004748 ) - 800466a: 4a38 ldr r2, [pc, #224] @ (800474c ) - 800466c: 601a str r2, [r3, #0] + 8004798: 4b37 ldr r3, [pc, #220] @ (8004878 ) + 800479a: 4a38 ldr r2, [pc, #224] @ (800487c ) + 800479c: 601a str r2, [r3, #0] htim3.Init.Prescaler = 0; - 800466e: 4b36 ldr r3, [pc, #216] @ (8004748 ) - 8004670: 2200 movs r2, #0 - 8004672: 605a str r2, [r3, #4] + 800479e: 4b36 ldr r3, [pc, #216] @ (8004878 ) + 80047a0: 2200 movs r2, #0 + 80047a2: 605a str r2, [r3, #4] htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - 8004674: 4b34 ldr r3, [pc, #208] @ (8004748 ) - 8004676: 2200 movs r2, #0 - 8004678: 609a str r2, [r3, #8] + 80047a4: 4b34 ldr r3, [pc, #208] @ (8004878 ) + 80047a6: 2200 movs r2, #0 + 80047a8: 609a str r2, [r3, #8] htim3.Init.Period = 3000; - 800467a: 4b33 ldr r3, [pc, #204] @ (8004748 ) - 800467c: f640 32b8 movw r2, #3000 @ 0xbb8 - 8004680: 60da str r2, [r3, #12] + 80047aa: 4b33 ldr r3, [pc, #204] @ (8004878 ) + 80047ac: f640 32b8 movw r2, #3000 @ 0xbb8 + 80047b0: 60da str r2, [r3, #12] htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 8004682: 4b31 ldr r3, [pc, #196] @ (8004748 ) - 8004684: 2200 movs r2, #0 - 8004686: 611a str r2, [r3, #16] + 80047b2: 4b31 ldr r3, [pc, #196] @ (8004878 ) + 80047b4: 2200 movs r2, #0 + 80047b6: 611a str r2, [r3, #16] htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 8004688: 4b2f ldr r3, [pc, #188] @ (8004748 ) - 800468a: 2200 movs r2, #0 - 800468c: 619a str r2, [r3, #24] + 80047b8: 4b2f ldr r3, [pc, #188] @ (8004878 ) + 80047ba: 2200 movs r2, #0 + 80047bc: 619a str r2, [r3, #24] if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - 800468e: 482e ldr r0, [pc, #184] @ (8004748 ) - 8004690: f004 fb4e bl 8008d30 - 8004694: 4603 mov r3, r0 - 8004696: 2b00 cmp r3, #0 - 8004698: d001 beq.n 800469e + 80047be: 482e ldr r0, [pc, #184] @ (8004878 ) + 80047c0: f004 fbe0 bl 8008f84 + 80047c4: 4603 mov r3, r0 + 80047c6: 2b00 cmp r3, #0 + 80047c8: d001 beq.n 80047ce { Error_Handler(); - 800469a: f7fe fd65 bl 8003168 + 80047ca: f7fe fd29 bl 8003220 } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - 800469e: f44f 5380 mov.w r3, #4096 @ 0x1000 - 80046a2: 62bb str r3, [r7, #40] @ 0x28 + 80047ce: f44f 5380 mov.w r3, #4096 @ 0x1000 + 80047d2: 62bb str r3, [r7, #40] @ 0x28 if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - 80046a4: f107 0328 add.w r3, r7, #40 @ 0x28 - 80046a8: 4619 mov r1, r3 - 80046aa: 4827 ldr r0, [pc, #156] @ (8004748 ) - 80046ac: f005 fa90 bl 8009bd0 - 80046b0: 4603 mov r3, r0 - 80046b2: 2b00 cmp r3, #0 - 80046b4: d001 beq.n 80046ba + 80047d4: f107 0328 add.w r3, r7, #40 @ 0x28 + 80047d8: 4619 mov r1, r3 + 80047da: 4827 ldr r0, [pc, #156] @ (8004878 ) + 80047dc: f005 fcb2 bl 800a144 + 80047e0: 4603 mov r3, r0 + 80047e2: 2b00 cmp r3, #0 + 80047e4: d001 beq.n 80047ea { Error_Handler(); - 80046b6: f7fe fd57 bl 8003168 + 80047e6: f7fe fd1b bl 8003220 } if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) - 80046ba: 4823 ldr r0, [pc, #140] @ (8004748 ) - 80046bc: f004 fd16 bl 80090ec - 80046c0: 4603 mov r3, r0 - 80046c2: 2b00 cmp r3, #0 - 80046c4: d001 beq.n 80046ca + 80047ea: 4823 ldr r0, [pc, #140] @ (8004878 ) + 80047ec: f004 fda8 bl 8009340 + 80047f0: 4603 mov r3, r0 + 80047f2: 2b00 cmp r3, #0 + 80047f4: d001 beq.n 80047fa { Error_Handler(); - 80046c6: f7fe fd4f bl 8003168 + 80047f6: f7fe fd13 bl 8003220 } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - 80046ca: 2300 movs r3, #0 - 80046cc: 623b str r3, [r7, #32] + 80047fa: 2300 movs r3, #0 + 80047fc: 623b str r3, [r7, #32] sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - 80046ce: 2300 movs r3, #0 - 80046d0: 627b str r3, [r7, #36] @ 0x24 + 80047fe: 2300 movs r3, #0 + 8004800: 627b str r3, [r7, #36] @ 0x24 if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - 80046d2: f107 0320 add.w r3, r7, #32 - 80046d6: 4619 mov r1, r3 - 80046d8: 481b ldr r0, [pc, #108] @ (8004748 ) - 80046da: f006 fa25 bl 800ab28 - 80046de: 4603 mov r3, r0 - 80046e0: 2b00 cmp r3, #0 - 80046e2: d001 beq.n 80046e8 + 8004802: f107 0320 add.w r3, r7, #32 + 8004806: 4619 mov r1, r3 + 8004808: 481b ldr r0, [pc, #108] @ (8004878 ) + 800480a: f006 fc47 bl 800b09c + 800480e: 4603 mov r3, r0 + 8004810: 2b00 cmp r3, #0 + 8004812: d001 beq.n 8004818 { Error_Handler(); - 80046e4: f7fe fd40 bl 8003168 + 8004814: f7fe fd04 bl 8003220 } sConfigOC.OCMode = TIM_OCMODE_PWM2; - 80046e8: 2370 movs r3, #112 @ 0x70 - 80046ea: 607b str r3, [r7, #4] + 8004818: 2370 movs r3, #112 @ 0x70 + 800481a: 607b str r3, [r7, #4] sConfigOC.Pulse = 0; - 80046ec: 2300 movs r3, #0 - 80046ee: 60bb str r3, [r7, #8] + 800481c: 2300 movs r3, #0 + 800481e: 60bb str r3, [r7, #8] sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - 80046f0: 2300 movs r3, #0 - 80046f2: 60fb str r3, [r7, #12] + 8004820: 2300 movs r3, #0 + 8004822: 60fb str r3, [r7, #12] sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - 80046f4: 2300 movs r3, #0 - 80046f6: 617b str r3, [r7, #20] + 8004824: 2300 movs r3, #0 + 8004826: 617b str r3, [r7, #20] if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - 80046f8: 1d3b adds r3, r7, #4 - 80046fa: 2200 movs r2, #0 - 80046fc: 4619 mov r1, r3 - 80046fe: 4812 ldr r0, [pc, #72] @ (8004748 ) - 8004700: f005 f88e bl 8009820 - 8004704: 4603 mov r3, r0 - 8004706: 2b00 cmp r3, #0 - 8004708: d001 beq.n 800470e + 8004828: 1d3b adds r3, r7, #4 + 800482a: 2200 movs r2, #0 + 800482c: 4619 mov r1, r3 + 800482e: 4812 ldr r0, [pc, #72] @ (8004878 ) + 8004830: f005 fab0 bl 8009d94 + 8004834: 4603 mov r3, r0 + 8004836: 2b00 cmp r3, #0 + 8004838: d001 beq.n 800483e { Error_Handler(); - 800470a: f7fe fd2d bl 8003168 + 800483a: f7fe fcf1 bl 8003220 } if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - 800470e: 1d3b adds r3, r7, #4 - 8004710: 2204 movs r2, #4 - 8004712: 4619 mov r1, r3 - 8004714: 480c ldr r0, [pc, #48] @ (8004748 ) - 8004716: f005 f883 bl 8009820 - 800471a: 4603 mov r3, r0 - 800471c: 2b00 cmp r3, #0 - 800471e: d001 beq.n 8004724 + 800483e: 1d3b adds r3, r7, #4 + 8004840: 2204 movs r2, #4 + 8004842: 4619 mov r1, r3 + 8004844: 480c ldr r0, [pc, #48] @ (8004878 ) + 8004846: f005 faa5 bl 8009d94 + 800484a: 4603 mov r3, r0 + 800484c: 2b00 cmp r3, #0 + 800484e: d001 beq.n 8004854 { Error_Handler(); - 8004720: f7fe fd22 bl 8003168 + 8004850: f7fe fce6 bl 8003220 } if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - 8004724: 1d3b adds r3, r7, #4 - 8004726: 2208 movs r2, #8 - 8004728: 4619 mov r1, r3 - 800472a: 4807 ldr r0, [pc, #28] @ (8004748 ) - 800472c: f005 f878 bl 8009820 - 8004730: 4603 mov r3, r0 - 8004732: 2b00 cmp r3, #0 - 8004734: d001 beq.n 800473a + 8004854: 1d3b adds r3, r7, #4 + 8004856: 2208 movs r2, #8 + 8004858: 4619 mov r1, r3 + 800485a: 4807 ldr r0, [pc, #28] @ (8004878 ) + 800485c: f005 fa9a bl 8009d94 + 8004860: 4603 mov r3, r0 + 8004862: 2b00 cmp r3, #0 + 8004864: d001 beq.n 800486a { Error_Handler(); - 8004736: f7fe fd17 bl 8003168 + 8004866: f7fe fcdb bl 8003220 } /* USER CODE BEGIN TIM3_Init 2 */ /* USER CODE END TIM3_Init 2 */ HAL_TIM_MspPostInit(&htim3); - 800473a: 4803 ldr r0, [pc, #12] @ (8004748 ) - 800473c: f000 f9fa bl 8004b34 + 800486a: 4803 ldr r0, [pc, #12] @ (8004878 ) + 800486c: f000 fa66 bl 8004d3c } - 8004740: bf00 nop - 8004742: 3738 adds r7, #56 @ 0x38 - 8004744: 46bd mov sp, r7 - 8004746: bd80 pop {r7, pc} - 8004748: 2000211c .word 0x2000211c - 800474c: 40000400 .word 0x40000400 + 8004870: bf00 nop + 8004872: 3738 adds r7, #56 @ 0x38 + 8004874: 46bd mov sp, r7 + 8004876: bd80 pop {r7, pc} + 8004878: 2000211c .word 0x2000211c + 800487c: 40000400 .word 0x40000400 -08004750 : +08004880 : /* TIM4 init function */ void MX_TIM4_Init(void) { - 8004750: b580 push {r7, lr} - 8004752: b08e sub sp, #56 @ 0x38 - 8004754: af00 add r7, sp, #0 + 8004880: b580 push {r7, lr} + 8004882: b08e sub sp, #56 @ 0x38 + 8004884: af00 add r7, sp, #0 /* USER CODE BEGIN TIM4_Init 0 */ /* USER CODE END TIM4_Init 0 */ TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - 8004756: f107 0328 add.w r3, r7, #40 @ 0x28 - 800475a: 2200 movs r2, #0 - 800475c: 601a str r2, [r3, #0] - 800475e: 605a str r2, [r3, #4] - 8004760: 609a str r2, [r3, #8] - 8004762: 60da str r2, [r3, #12] + 8004886: f107 0328 add.w r3, r7, #40 @ 0x28 + 800488a: 2200 movs r2, #0 + 800488c: 601a str r2, [r3, #0] + 800488e: 605a str r2, [r3, #4] + 8004890: 609a str r2, [r3, #8] + 8004892: 60da str r2, [r3, #12] TIM_MasterConfigTypeDef sMasterConfig = {0}; - 8004764: f107 0320 add.w r3, r7, #32 - 8004768: 2200 movs r2, #0 - 800476a: 601a str r2, [r3, #0] - 800476c: 605a str r2, [r3, #4] + 8004894: f107 0320 add.w r3, r7, #32 + 8004898: 2200 movs r2, #0 + 800489a: 601a str r2, [r3, #0] + 800489c: 605a str r2, [r3, #4] TIM_OC_InitTypeDef sConfigOC = {0}; - 800476e: 1d3b adds r3, r7, #4 - 8004770: 2200 movs r2, #0 - 8004772: 601a str r2, [r3, #0] - 8004774: 605a str r2, [r3, #4] - 8004776: 609a str r2, [r3, #8] - 8004778: 60da str r2, [r3, #12] - 800477a: 611a str r2, [r3, #16] - 800477c: 615a str r2, [r3, #20] - 800477e: 619a str r2, [r3, #24] + 800489e: 1d3b adds r3, r7, #4 + 80048a0: 2200 movs r2, #0 + 80048a2: 601a str r2, [r3, #0] + 80048a4: 605a str r2, [r3, #4] + 80048a6: 609a str r2, [r3, #8] + 80048a8: 60da str r2, [r3, #12] + 80048aa: 611a str r2, [r3, #16] + 80048ac: 615a str r2, [r3, #20] + 80048ae: 619a str r2, [r3, #24] /* USER CODE BEGIN TIM4_Init 1 */ /* USER CODE END TIM4_Init 1 */ htim4.Instance = TIM4; - 8004780: 4b37 ldr r3, [pc, #220] @ (8004860 ) - 8004782: 4a38 ldr r2, [pc, #224] @ (8004864 ) - 8004784: 601a str r2, [r3, #0] + 80048b0: 4b37 ldr r3, [pc, #220] @ (8004990 ) + 80048b2: 4a38 ldr r2, [pc, #224] @ (8004994 ) + 80048b4: 601a str r2, [r3, #0] htim4.Init.Prescaler = 0; - 8004786: 4b36 ldr r3, [pc, #216] @ (8004860 ) - 8004788: 2200 movs r2, #0 - 800478a: 605a str r2, [r3, #4] + 80048b6: 4b36 ldr r3, [pc, #216] @ (8004990 ) + 80048b8: 2200 movs r2, #0 + 80048ba: 605a str r2, [r3, #4] htim4.Init.CounterMode = TIM_COUNTERMODE_UP; - 800478c: 4b34 ldr r3, [pc, #208] @ (8004860 ) - 800478e: 2200 movs r2, #0 - 8004790: 609a str r2, [r3, #8] + 80048bc: 4b34 ldr r3, [pc, #208] @ (8004990 ) + 80048be: 2200 movs r2, #0 + 80048c0: 609a str r2, [r3, #8] htim4.Init.Period = 3000; - 8004792: 4b33 ldr r3, [pc, #204] @ (8004860 ) - 8004794: f640 32b8 movw r2, #3000 @ 0xbb8 - 8004798: 60da str r2, [r3, #12] + 80048c2: 4b33 ldr r3, [pc, #204] @ (8004990 ) + 80048c4: f640 32b8 movw r2, #3000 @ 0xbb8 + 80048c8: 60da str r2, [r3, #12] htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 800479a: 4b31 ldr r3, [pc, #196] @ (8004860 ) - 800479c: 2200 movs r2, #0 - 800479e: 611a str r2, [r3, #16] + 80048ca: 4b31 ldr r3, [pc, #196] @ (8004990 ) + 80048cc: 2200 movs r2, #0 + 80048ce: 611a str r2, [r3, #16] htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 80047a0: 4b2f ldr r3, [pc, #188] @ (8004860 ) - 80047a2: 2200 movs r2, #0 - 80047a4: 619a str r2, [r3, #24] + 80048d0: 4b2f ldr r3, [pc, #188] @ (8004990 ) + 80048d2: 2200 movs r2, #0 + 80048d4: 619a str r2, [r3, #24] if (HAL_TIM_Base_Init(&htim4) != HAL_OK) - 80047a6: 482e ldr r0, [pc, #184] @ (8004860 ) - 80047a8: f004 fac2 bl 8008d30 - 80047ac: 4603 mov r3, r0 - 80047ae: 2b00 cmp r3, #0 - 80047b0: d001 beq.n 80047b6 + 80048d6: 482e ldr r0, [pc, #184] @ (8004990 ) + 80048d8: f004 fb54 bl 8008f84 + 80048dc: 4603 mov r3, r0 + 80048de: 2b00 cmp r3, #0 + 80048e0: d001 beq.n 80048e6 { Error_Handler(); - 80047b2: f7fe fcd9 bl 8003168 + 80048e2: f7fe fc9d bl 8003220 } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - 80047b6: f44f 5380 mov.w r3, #4096 @ 0x1000 - 80047ba: 62bb str r3, [r7, #40] @ 0x28 + 80048e6: f44f 5380 mov.w r3, #4096 @ 0x1000 + 80048ea: 62bb str r3, [r7, #40] @ 0x28 if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) - 80047bc: f107 0328 add.w r3, r7, #40 @ 0x28 - 80047c0: 4619 mov r1, r3 - 80047c2: 4827 ldr r0, [pc, #156] @ (8004860 ) - 80047c4: f005 fa04 bl 8009bd0 - 80047c8: 4603 mov r3, r0 - 80047ca: 2b00 cmp r3, #0 - 80047cc: d001 beq.n 80047d2 + 80048ec: f107 0328 add.w r3, r7, #40 @ 0x28 + 80048f0: 4619 mov r1, r3 + 80048f2: 4827 ldr r0, [pc, #156] @ (8004990 ) + 80048f4: f005 fc26 bl 800a144 + 80048f8: 4603 mov r3, r0 + 80048fa: 2b00 cmp r3, #0 + 80048fc: d001 beq.n 8004902 { Error_Handler(); - 80047ce: f7fe fccb bl 8003168 + 80048fe: f7fe fc8f bl 8003220 } if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) - 80047d2: 4823 ldr r0, [pc, #140] @ (8004860 ) - 80047d4: f004 fc8a bl 80090ec - 80047d8: 4603 mov r3, r0 - 80047da: 2b00 cmp r3, #0 - 80047dc: d001 beq.n 80047e2 + 8004902: 4823 ldr r0, [pc, #140] @ (8004990 ) + 8004904: f004 fd1c bl 8009340 + 8004908: 4603 mov r3, r0 + 800490a: 2b00 cmp r3, #0 + 800490c: d001 beq.n 8004912 { Error_Handler(); - 80047de: f7fe fcc3 bl 8003168 + 800490e: f7fe fc87 bl 8003220 } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - 80047e2: 2300 movs r3, #0 - 80047e4: 623b str r3, [r7, #32] + 8004912: 2300 movs r3, #0 + 8004914: 623b str r3, [r7, #32] sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - 80047e6: 2300 movs r3, #0 - 80047e8: 627b str r3, [r7, #36] @ 0x24 + 8004916: 2300 movs r3, #0 + 8004918: 627b str r3, [r7, #36] @ 0x24 if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) - 80047ea: f107 0320 add.w r3, r7, #32 - 80047ee: 4619 mov r1, r3 - 80047f0: 481b ldr r0, [pc, #108] @ (8004860 ) - 80047f2: f006 f999 bl 800ab28 - 80047f6: 4603 mov r3, r0 - 80047f8: 2b00 cmp r3, #0 - 80047fa: d001 beq.n 8004800 + 800491a: f107 0320 add.w r3, r7, #32 + 800491e: 4619 mov r1, r3 + 8004920: 481b ldr r0, [pc, #108] @ (8004990 ) + 8004922: f006 fbbb bl 800b09c + 8004926: 4603 mov r3, r0 + 8004928: 2b00 cmp r3, #0 + 800492a: d001 beq.n 8004930 { Error_Handler(); - 80047fc: f7fe fcb4 bl 8003168 + 800492c: f7fe fc78 bl 8003220 } sConfigOC.OCMode = TIM_OCMODE_PWM2; - 8004800: 2370 movs r3, #112 @ 0x70 - 8004802: 607b str r3, [r7, #4] + 8004930: 2370 movs r3, #112 @ 0x70 + 8004932: 607b str r3, [r7, #4] sConfigOC.Pulse = 0; - 8004804: 2300 movs r3, #0 - 8004806: 60bb str r3, [r7, #8] + 8004934: 2300 movs r3, #0 + 8004936: 60bb str r3, [r7, #8] sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - 8004808: 2300 movs r3, #0 - 800480a: 60fb str r3, [r7, #12] + 8004938: 2300 movs r3, #0 + 800493a: 60fb str r3, [r7, #12] sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - 800480c: 2300 movs r3, #0 - 800480e: 617b str r3, [r7, #20] + 800493c: 2300 movs r3, #0 + 800493e: 617b str r3, [r7, #20] if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - 8004810: 1d3b adds r3, r7, #4 - 8004812: 2200 movs r2, #0 - 8004814: 4619 mov r1, r3 - 8004816: 4812 ldr r0, [pc, #72] @ (8004860 ) - 8004818: f005 f802 bl 8009820 - 800481c: 4603 mov r3, r0 - 800481e: 2b00 cmp r3, #0 - 8004820: d001 beq.n 8004826 + 8004940: 1d3b adds r3, r7, #4 + 8004942: 2200 movs r2, #0 + 8004944: 4619 mov r1, r3 + 8004946: 4812 ldr r0, [pc, #72] @ (8004990 ) + 8004948: f005 fa24 bl 8009d94 + 800494c: 4603 mov r3, r0 + 800494e: 2b00 cmp r3, #0 + 8004950: d001 beq.n 8004956 { Error_Handler(); - 8004822: f7fe fca1 bl 8003168 + 8004952: f7fe fc65 bl 8003220 } if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - 8004826: 1d3b adds r3, r7, #4 - 8004828: 2204 movs r2, #4 - 800482a: 4619 mov r1, r3 - 800482c: 480c ldr r0, [pc, #48] @ (8004860 ) - 800482e: f004 fff7 bl 8009820 - 8004832: 4603 mov r3, r0 - 8004834: 2b00 cmp r3, #0 - 8004836: d001 beq.n 800483c + 8004956: 1d3b adds r3, r7, #4 + 8004958: 2204 movs r2, #4 + 800495a: 4619 mov r1, r3 + 800495c: 480c ldr r0, [pc, #48] @ (8004990 ) + 800495e: f005 fa19 bl 8009d94 + 8004962: 4603 mov r3, r0 + 8004964: 2b00 cmp r3, #0 + 8004966: d001 beq.n 800496c { Error_Handler(); - 8004838: f7fe fc96 bl 8003168 + 8004968: f7fe fc5a bl 8003220 } if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - 800483c: 1d3b adds r3, r7, #4 - 800483e: 2208 movs r2, #8 - 8004840: 4619 mov r1, r3 - 8004842: 4807 ldr r0, [pc, #28] @ (8004860 ) - 8004844: f004 ffec bl 8009820 - 8004848: 4603 mov r3, r0 - 800484a: 2b00 cmp r3, #0 - 800484c: d001 beq.n 8004852 + 800496c: 1d3b adds r3, r7, #4 + 800496e: 2208 movs r2, #8 + 8004970: 4619 mov r1, r3 + 8004972: 4807 ldr r0, [pc, #28] @ (8004990 ) + 8004974: f005 fa0e bl 8009d94 + 8004978: 4603 mov r3, r0 + 800497a: 2b00 cmp r3, #0 + 800497c: d001 beq.n 8004982 { Error_Handler(); - 800484e: f7fe fc8b bl 8003168 + 800497e: f7fe fc4f bl 8003220 } /* USER CODE BEGIN TIM4_Init 2 */ /* USER CODE END TIM4_Init 2 */ HAL_TIM_MspPostInit(&htim4); - 8004852: 4803 ldr r0, [pc, #12] @ (8004860 ) - 8004854: f000 f96e bl 8004b34 + 8004982: 4803 ldr r0, [pc, #12] @ (8004990 ) + 8004984: f000 f9da bl 8004d3c } - 8004858: bf00 nop - 800485a: 3738 adds r7, #56 @ 0x38 - 800485c: 46bd mov sp, r7 - 800485e: bd80 pop {r7, pc} - 8004860: 20002164 .word 0x20002164 - 8004864: 40000800 .word 0x40000800 + 8004988: bf00 nop + 800498a: 3738 adds r7, #56 @ 0x38 + 800498c: 46bd mov sp, r7 + 800498e: bd80 pop {r7, pc} + 8004990: 20002164 .word 0x20002164 + 8004994: 40000800 .word 0x40000800 -08004868 : +08004998 : /* TIM6 init function */ void MX_TIM6_Init(void) { - 8004868: b580 push {r7, lr} - 800486a: b082 sub sp, #8 - 800486c: af00 add r7, sp, #0 + 8004998: b580 push {r7, lr} + 800499a: b082 sub sp, #8 + 800499c: af00 add r7, sp, #0 /* USER CODE BEGIN TIM6_Init 0 */ /* USER CODE END TIM6_Init 0 */ TIM_MasterConfigTypeDef sMasterConfig = {0}; - 800486e: 463b mov r3, r7 - 8004870: 2200 movs r2, #0 - 8004872: 601a str r2, [r3, #0] - 8004874: 605a str r2, [r3, #4] + 800499e: 463b mov r3, r7 + 80049a0: 2200 movs r2, #0 + 80049a2: 601a str r2, [r3, #0] + 80049a4: 605a str r2, [r3, #4] /* USER CODE BEGIN TIM6_Init 1 */ /* USER CODE END TIM6_Init 1 */ htim6.Instance = TIM6; - 8004876: 4b15 ldr r3, [pc, #84] @ (80048cc ) - 8004878: 4a15 ldr r2, [pc, #84] @ (80048d0 ) - 800487a: 601a str r2, [r3, #0] + 80049a6: 4b15 ldr r3, [pc, #84] @ (80049fc ) + 80049a8: 4a15 ldr r2, [pc, #84] @ (8004a00 ) + 80049aa: 601a str r2, [r3, #0] htim6.Init.Prescaler = 2; - 800487c: 4b13 ldr r3, [pc, #76] @ (80048cc ) - 800487e: 2202 movs r2, #2 - 8004880: 605a str r2, [r3, #4] + 80049ac: 4b13 ldr r3, [pc, #76] @ (80049fc ) + 80049ae: 2202 movs r2, #2 + 80049b0: 605a str r2, [r3, #4] htim6.Init.CounterMode = TIM_COUNTERMODE_UP; - 8004882: 4b12 ldr r3, [pc, #72] @ (80048cc ) - 8004884: 2200 movs r2, #0 - 8004886: 609a str r2, [r3, #8] + 80049b2: 4b12 ldr r3, [pc, #72] @ (80049fc ) + 80049b4: 2200 movs r2, #0 + 80049b6: 609a str r2, [r3, #8] htim6.Init.Period = 39999; - 8004888: 4b10 ldr r3, [pc, #64] @ (80048cc ) - 800488a: f649 423f movw r2, #39999 @ 0x9c3f - 800488e: 60da str r2, [r3, #12] + 80049b8: 4b10 ldr r3, [pc, #64] @ (80049fc ) + 80049ba: f649 423f movw r2, #39999 @ 0x9c3f + 80049be: 60da str r2, [r3, #12] htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 8004890: 4b0e ldr r3, [pc, #56] @ (80048cc ) - 8004892: 2200 movs r2, #0 - 8004894: 619a str r2, [r3, #24] + 80049c0: 4b0e ldr r3, [pc, #56] @ (80049fc ) + 80049c2: 2200 movs r2, #0 + 80049c4: 619a str r2, [r3, #24] if (HAL_TIM_Base_Init(&htim6) != HAL_OK) - 8004896: 480d ldr r0, [pc, #52] @ (80048cc ) - 8004898: f004 fa4a bl 8008d30 - 800489c: 4603 mov r3, r0 - 800489e: 2b00 cmp r3, #0 - 80048a0: d001 beq.n 80048a6 + 80049c6: 480d ldr r0, [pc, #52] @ (80049fc ) + 80049c8: f004 fadc bl 8008f84 + 80049cc: 4603 mov r3, r0 + 80049ce: 2b00 cmp r3, #0 + 80049d0: d001 beq.n 80049d6 { Error_Handler(); - 80048a2: f7fe fc61 bl 8003168 + 80049d2: f7fe fc25 bl 8003220 } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - 80048a6: 2300 movs r3, #0 - 80048a8: 603b str r3, [r7, #0] + 80049d6: 2300 movs r3, #0 + 80049d8: 603b str r3, [r7, #0] sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - 80048aa: 2300 movs r3, #0 - 80048ac: 607b str r3, [r7, #4] + 80049da: 2300 movs r3, #0 + 80049dc: 607b str r3, [r7, #4] if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK) - 80048ae: 463b mov r3, r7 - 80048b0: 4619 mov r1, r3 - 80048b2: 4806 ldr r0, [pc, #24] @ (80048cc ) - 80048b4: f006 f938 bl 800ab28 - 80048b8: 4603 mov r3, r0 - 80048ba: 2b00 cmp r3, #0 - 80048bc: d001 beq.n 80048c2 + 80049de: 463b mov r3, r7 + 80049e0: 4619 mov r1, r3 + 80049e2: 4806 ldr r0, [pc, #24] @ (80049fc ) + 80049e4: f006 fb5a bl 800b09c + 80049e8: 4603 mov r3, r0 + 80049ea: 2b00 cmp r3, #0 + 80049ec: d001 beq.n 80049f2 { Error_Handler(); - 80048be: f7fe fc53 bl 8003168 + 80049ee: f7fe fc17 bl 8003220 } /* USER CODE BEGIN TIM6_Init 2 */ /* USER CODE END TIM6_Init 2 */ } - 80048c2: bf00 nop - 80048c4: 3708 adds r7, #8 - 80048c6: 46bd mov sp, r7 - 80048c8: bd80 pop {r7, pc} - 80048ca: bf00 nop - 80048cc: 200021ac .word 0x200021ac - 80048d0: 40001000 .word 0x40001000 + 80049f2: bf00 nop + 80049f4: 3708 adds r7, #8 + 80049f6: 46bd mov sp, r7 + 80049f8: bd80 pop {r7, pc} + 80049fa: bf00 nop + 80049fc: 200021ac .word 0x200021ac + 8004a00: 40001000 .word 0x40001000 -080048d4 : +08004a04 : /* TIM9 init function */ void MX_TIM9_Init(void) { - 80048d4: b580 push {r7, lr} - 80048d6: b08c sub sp, #48 @ 0x30 - 80048d8: af00 add r7, sp, #0 + 8004a04: b580 push {r7, lr} + 8004a06: b08c sub sp, #48 @ 0x30 + 8004a08: af00 add r7, sp, #0 /* USER CODE BEGIN TIM9_Init 0 */ /* USER CODE END TIM9_Init 0 */ TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - 80048da: f107 0320 add.w r3, r7, #32 - 80048de: 2200 movs r2, #0 - 80048e0: 601a str r2, [r3, #0] - 80048e2: 605a str r2, [r3, #4] - 80048e4: 609a str r2, [r3, #8] - 80048e6: 60da str r2, [r3, #12] + 8004a0a: f107 0320 add.w r3, r7, #32 + 8004a0e: 2200 movs r2, #0 + 8004a10: 601a str r2, [r3, #0] + 8004a12: 605a str r2, [r3, #4] + 8004a14: 609a str r2, [r3, #8] + 8004a16: 60da str r2, [r3, #12] TIM_OC_InitTypeDef sConfigOC = {0}; - 80048e8: 1d3b adds r3, r7, #4 - 80048ea: 2200 movs r2, #0 - 80048ec: 601a str r2, [r3, #0] - 80048ee: 605a str r2, [r3, #4] - 80048f0: 609a str r2, [r3, #8] - 80048f2: 60da str r2, [r3, #12] - 80048f4: 611a str r2, [r3, #16] - 80048f6: 615a str r2, [r3, #20] - 80048f8: 619a str r2, [r3, #24] + 8004a18: 1d3b adds r3, r7, #4 + 8004a1a: 2200 movs r2, #0 + 8004a1c: 601a str r2, [r3, #0] + 8004a1e: 605a str r2, [r3, #4] + 8004a20: 609a str r2, [r3, #8] + 8004a22: 60da str r2, [r3, #12] + 8004a24: 611a str r2, [r3, #16] + 8004a26: 615a str r2, [r3, #20] + 8004a28: 619a str r2, [r3, #24] /* USER CODE BEGIN TIM9_Init 1 */ /* USER CODE END TIM9_Init 1 */ htim9.Instance = TIM9; - 80048fa: 4b25 ldr r3, [pc, #148] @ (8004990 ) - 80048fc: 4a25 ldr r2, [pc, #148] @ (8004994 ) - 80048fe: 601a str r2, [r3, #0] + 8004a2a: 4b25 ldr r3, [pc, #148] @ (8004ac0 ) + 8004a2c: 4a25 ldr r2, [pc, #148] @ (8004ac4 ) + 8004a2e: 601a str r2, [r3, #0] htim9.Init.Prescaler = 99; - 8004900: 4b23 ldr r3, [pc, #140] @ (8004990 ) - 8004902: 2263 movs r2, #99 @ 0x63 - 8004904: 605a str r2, [r3, #4] + 8004a30: 4b23 ldr r3, [pc, #140] @ (8004ac0 ) + 8004a32: 2263 movs r2, #99 @ 0x63 + 8004a34: 605a str r2, [r3, #4] htim9.Init.CounterMode = TIM_COUNTERMODE_UP; - 8004906: 4b22 ldr r3, [pc, #136] @ (8004990 ) - 8004908: 2200 movs r2, #0 - 800490a: 609a str r2, [r3, #8] + 8004a36: 4b22 ldr r3, [pc, #136] @ (8004ac0 ) + 8004a38: 2200 movs r2, #0 + 8004a3a: 609a str r2, [r3, #8] htim9.Init.Period = 200; - 800490c: 4b20 ldr r3, [pc, #128] @ (8004990 ) - 800490e: 22c8 movs r2, #200 @ 0xc8 - 8004910: 60da str r2, [r3, #12] + 8004a3c: 4b20 ldr r3, [pc, #128] @ (8004ac0 ) + 8004a3e: 22c8 movs r2, #200 @ 0xc8 + 8004a40: 60da str r2, [r3, #12] htim9.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 8004912: 4b1f ldr r3, [pc, #124] @ (8004990 ) - 8004914: 2200 movs r2, #0 - 8004916: 611a str r2, [r3, #16] + 8004a42: 4b1f ldr r3, [pc, #124] @ (8004ac0 ) + 8004a44: 2200 movs r2, #0 + 8004a46: 611a str r2, [r3, #16] htim9.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 8004918: 4b1d ldr r3, [pc, #116] @ (8004990 ) - 800491a: 2200 movs r2, #0 - 800491c: 619a str r2, [r3, #24] + 8004a48: 4b1d ldr r3, [pc, #116] @ (8004ac0 ) + 8004a4a: 2200 movs r2, #0 + 8004a4c: 619a str r2, [r3, #24] if (HAL_TIM_Base_Init(&htim9) != HAL_OK) - 800491e: 481c ldr r0, [pc, #112] @ (8004990 ) - 8004920: f004 fa06 bl 8008d30 - 8004924: 4603 mov r3, r0 - 8004926: 2b00 cmp r3, #0 - 8004928: d001 beq.n 800492e + 8004a4e: 481c ldr r0, [pc, #112] @ (8004ac0 ) + 8004a50: f004 fa98 bl 8008f84 + 8004a54: 4603 mov r3, r0 + 8004a56: 2b00 cmp r3, #0 + 8004a58: d001 beq.n 8004a5e { Error_Handler(); - 800492a: f7fe fc1d bl 8003168 + 8004a5a: f7fe fbe1 bl 8003220 } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - 800492e: f44f 5380 mov.w r3, #4096 @ 0x1000 - 8004932: 623b str r3, [r7, #32] + 8004a5e: f44f 5380 mov.w r3, #4096 @ 0x1000 + 8004a62: 623b str r3, [r7, #32] if (HAL_TIM_ConfigClockSource(&htim9, &sClockSourceConfig) != HAL_OK) - 8004934: f107 0320 add.w r3, r7, #32 - 8004938: 4619 mov r1, r3 - 800493a: 4815 ldr r0, [pc, #84] @ (8004990 ) - 800493c: f005 f948 bl 8009bd0 - 8004940: 4603 mov r3, r0 - 8004942: 2b00 cmp r3, #0 - 8004944: d001 beq.n 800494a + 8004a64: f107 0320 add.w r3, r7, #32 + 8004a68: 4619 mov r1, r3 + 8004a6a: 4815 ldr r0, [pc, #84] @ (8004ac0 ) + 8004a6c: f005 fb6a bl 800a144 + 8004a70: 4603 mov r3, r0 + 8004a72: 2b00 cmp r3, #0 + 8004a74: d001 beq.n 8004a7a { Error_Handler(); - 8004946: f7fe fc0f bl 8003168 + 8004a76: f7fe fbd3 bl 8003220 } if (HAL_TIM_PWM_Init(&htim9) != HAL_OK) - 800494a: 4811 ldr r0, [pc, #68] @ (8004990 ) - 800494c: f004 fbce bl 80090ec - 8004950: 4603 mov r3, r0 - 8004952: 2b00 cmp r3, #0 - 8004954: d001 beq.n 800495a + 8004a7a: 4811 ldr r0, [pc, #68] @ (8004ac0 ) + 8004a7c: f004 fc60 bl 8009340 + 8004a80: 4603 mov r3, r0 + 8004a82: 2b00 cmp r3, #0 + 8004a84: d001 beq.n 8004a8a { Error_Handler(); - 8004956: f7fe fc07 bl 8003168 + 8004a86: f7fe fbcb bl 8003220 } sConfigOC.OCMode = TIM_OCMODE_PWM1; - 800495a: 2360 movs r3, #96 @ 0x60 - 800495c: 607b str r3, [r7, #4] + 8004a8a: 2360 movs r3, #96 @ 0x60 + 8004a8c: 607b str r3, [r7, #4] sConfigOC.Pulse = 0; - 800495e: 2300 movs r3, #0 - 8004960: 60bb str r3, [r7, #8] + 8004a8e: 2300 movs r3, #0 + 8004a90: 60bb str r3, [r7, #8] sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - 8004962: 2300 movs r3, #0 - 8004964: 60fb str r3, [r7, #12] + 8004a92: 2300 movs r3, #0 + 8004a94: 60fb str r3, [r7, #12] sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - 8004966: 2300 movs r3, #0 - 8004968: 617b str r3, [r7, #20] + 8004a96: 2300 movs r3, #0 + 8004a98: 617b str r3, [r7, #20] if (HAL_TIM_PWM_ConfigChannel(&htim9, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - 800496a: 1d3b adds r3, r7, #4 - 800496c: 2204 movs r2, #4 - 800496e: 4619 mov r1, r3 - 8004970: 4807 ldr r0, [pc, #28] @ (8004990 ) - 8004972: f004 ff55 bl 8009820 - 8004976: 4603 mov r3, r0 - 8004978: 2b00 cmp r3, #0 - 800497a: d001 beq.n 8004980 + 8004a9a: 1d3b adds r3, r7, #4 + 8004a9c: 2204 movs r2, #4 + 8004a9e: 4619 mov r1, r3 + 8004aa0: 4807 ldr r0, [pc, #28] @ (8004ac0 ) + 8004aa2: f005 f977 bl 8009d94 + 8004aa6: 4603 mov r3, r0 + 8004aa8: 2b00 cmp r3, #0 + 8004aaa: d001 beq.n 8004ab0 { Error_Handler(); - 800497c: f7fe fbf4 bl 8003168 + 8004aac: f7fe fbb8 bl 8003220 } /* USER CODE BEGIN TIM9_Init 2 */ /* USER CODE END TIM9_Init 2 */ HAL_TIM_MspPostInit(&htim9); - 8004980: 4803 ldr r0, [pc, #12] @ (8004990 ) - 8004982: f000 f8d7 bl 8004b34 + 8004ab0: 4803 ldr r0, [pc, #12] @ (8004ac0 ) + 8004ab2: f000 f943 bl 8004d3c } - 8004986: bf00 nop - 8004988: 3730 adds r7, #48 @ 0x30 - 800498a: 46bd mov sp, r7 - 800498c: bd80 pop {r7, pc} - 800498e: bf00 nop - 8004990: 200021f4 .word 0x200021f4 - 8004994: 40014000 .word 0x40014000 + 8004ab6: bf00 nop + 8004ab8: 3730 adds r7, #48 @ 0x30 + 8004aba: 46bd mov sp, r7 + 8004abc: bd80 pop {r7, pc} + 8004abe: bf00 nop + 8004ac0: 200021f4 .word 0x200021f4 + 8004ac4: 40014000 .word 0x40014000 -08004998 : +08004ac8 : +/* TIM11 init function */ +void MX_TIM11_Init(void) +{ + 8004ac8: b580 push {r7, lr} + 8004aca: b088 sub sp, #32 + 8004acc: af00 add r7, sp, #0 + + /* USER CODE BEGIN TIM11_Init 0 */ + + /* USER CODE END TIM11_Init 0 */ + + TIM_OC_InitTypeDef sConfigOC = {0}; + 8004ace: 1d3b adds r3, r7, #4 + 8004ad0: 2200 movs r2, #0 + 8004ad2: 601a str r2, [r3, #0] + 8004ad4: 605a str r2, [r3, #4] + 8004ad6: 609a str r2, [r3, #8] + 8004ad8: 60da str r2, [r3, #12] + 8004ada: 611a str r2, [r3, #16] + 8004adc: 615a str r2, [r3, #20] + 8004ade: 619a str r2, [r3, #24] + + /* USER CODE BEGIN TIM11_Init 1 */ + + /* USER CODE END TIM11_Init 1 */ + htim11.Instance = TIM11; + 8004ae0: 4b22 ldr r3, [pc, #136] @ (8004b6c ) + 8004ae2: 4a23 ldr r2, [pc, #140] @ (8004b70 ) + 8004ae4: 601a str r2, [r3, #0] + htim11.Init.Prescaler = 2399; + 8004ae6: 4b21 ldr r3, [pc, #132] @ (8004b6c ) + 8004ae8: f640 125f movw r2, #2399 @ 0x95f + 8004aec: 605a str r2, [r3, #4] + htim11.Init.CounterMode = TIM_COUNTERMODE_UP; + 8004aee: 4b1f ldr r3, [pc, #124] @ (8004b6c ) + 8004af0: 2200 movs r2, #0 + 8004af2: 609a str r2, [r3, #8] + htim11.Init.Period = 29; + 8004af4: 4b1d ldr r3, [pc, #116] @ (8004b6c ) + 8004af6: 221d movs r2, #29 + 8004af8: 60da str r2, [r3, #12] + htim11.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 8004afa: 4b1c ldr r3, [pc, #112] @ (8004b6c ) + 8004afc: 2200 movs r2, #0 + 8004afe: 611a str r2, [r3, #16] + htim11.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + 8004b00: 4b1a ldr r3, [pc, #104] @ (8004b6c ) + 8004b02: 2200 movs r2, #0 + 8004b04: 619a str r2, [r3, #24] + if (HAL_TIM_Base_Init(&htim11) != HAL_OK) + 8004b06: 4819 ldr r0, [pc, #100] @ (8004b6c ) + 8004b08: f004 fa3c bl 8008f84 + 8004b0c: 4603 mov r3, r0 + 8004b0e: 2b00 cmp r3, #0 + 8004b10: d001 beq.n 8004b16 + { + Error_Handler(); + 8004b12: f7fe fb85 bl 8003220 + } + if (HAL_TIM_PWM_Init(&htim11) != HAL_OK) + 8004b16: 4815 ldr r0, [pc, #84] @ (8004b6c ) + 8004b18: f004 fc12 bl 8009340 + 8004b1c: 4603 mov r3, r0 + 8004b1e: 2b00 cmp r3, #0 + 8004b20: d001 beq.n 8004b26 + { + Error_Handler(); + 8004b22: f7fe fb7d bl 8003220 + } + if (HAL_TIM_OnePulse_Init(&htim11, TIM_OPMODE_SINGLE) != HAL_OK) + 8004b26: 2108 movs r1, #8 + 8004b28: 4810 ldr r0, [pc, #64] @ (8004b6c ) + 8004b2a: f004 feb3 bl 8009894 + 8004b2e: 4603 mov r3, r0 + 8004b30: 2b00 cmp r3, #0 + 8004b32: d001 beq.n 8004b38 + { + Error_Handler(); + 8004b34: f7fe fb74 bl 8003220 + } + sConfigOC.OCMode = TIM_OCMODE_PWM2; + 8004b38: 2370 movs r3, #112 @ 0x70 + 8004b3a: 607b str r3, [r7, #4] + sConfigOC.Pulse = 0; + 8004b3c: 2300 movs r3, #0 + 8004b3e: 60bb str r3, [r7, #8] + sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW; + 8004b40: 2302 movs r3, #2 + 8004b42: 60fb str r3, [r7, #12] + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + 8004b44: 2300 movs r3, #0 + 8004b46: 617b str r3, [r7, #20] + if (HAL_TIM_PWM_ConfigChannel(&htim11, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + 8004b48: 1d3b adds r3, r7, #4 + 8004b4a: 2200 movs r2, #0 + 8004b4c: 4619 mov r1, r3 + 8004b4e: 4807 ldr r0, [pc, #28] @ (8004b6c ) + 8004b50: f005 f920 bl 8009d94 + 8004b54: 4603 mov r3, r0 + 8004b56: 2b00 cmp r3, #0 + 8004b58: d001 beq.n 8004b5e + { + Error_Handler(); + 8004b5a: f7fe fb61 bl 8003220 + } + /* USER CODE BEGIN TIM11_Init 2 */ + + /* USER CODE END TIM11_Init 2 */ + HAL_TIM_MspPostInit(&htim11); + 8004b5e: 4803 ldr r0, [pc, #12] @ (8004b6c ) + 8004b60: f000 f8ec bl 8004d3c + +} + 8004b64: bf00 nop + 8004b66: 3720 adds r7, #32 + 8004b68: 46bd mov sp, r7 + 8004b6a: bd80 pop {r7, pc} + 8004b6c: 2000223c .word 0x2000223c + 8004b70: 40014800 .word 0x40014800 + +08004b74 : /* TIM14 init function */ void MX_TIM14_Init(void) { - 8004998: b580 push {r7, lr} - 800499a: af00 add r7, sp, #0 + 8004b74: b580 push {r7, lr} + 8004b76: af00 add r7, sp, #0 /* USER CODE END TIM14_Init 0 */ /* USER CODE BEGIN TIM14_Init 1 */ /* USER CODE END TIM14_Init 1 */ htim14.Instance = TIM14; - 800499c: 4b0e ldr r3, [pc, #56] @ (80049d8 ) - 800499e: 4a0f ldr r2, [pc, #60] @ (80049dc ) - 80049a0: 601a str r2, [r3, #0] + 8004b78: 4b0e ldr r3, [pc, #56] @ (8004bb4 ) + 8004b7a: 4a0f ldr r2, [pc, #60] @ (8004bb8 ) + 8004b7c: 601a str r2, [r3, #0] htim14.Init.Prescaler = 0; - 80049a2: 4b0d ldr r3, [pc, #52] @ (80049d8 ) - 80049a4: 2200 movs r2, #0 - 80049a6: 605a str r2, [r3, #4] + 8004b7e: 4b0d ldr r3, [pc, #52] @ (8004bb4 ) + 8004b80: 2200 movs r2, #0 + 8004b82: 605a str r2, [r3, #4] htim14.Init.CounterMode = TIM_COUNTERMODE_UP; - 80049a8: 4b0b ldr r3, [pc, #44] @ (80049d8 ) - 80049aa: 2200 movs r2, #0 - 80049ac: 609a str r2, [r3, #8] + 8004b84: 4b0b ldr r3, [pc, #44] @ (8004bb4 ) + 8004b86: 2200 movs r2, #0 + 8004b88: 609a str r2, [r3, #8] htim14.Init.Period = 65535; - 80049ae: 4b0a ldr r3, [pc, #40] @ (80049d8 ) - 80049b0: f64f 72ff movw r2, #65535 @ 0xffff - 80049b4: 60da str r2, [r3, #12] + 8004b8a: 4b0a ldr r3, [pc, #40] @ (8004bb4 ) + 8004b8c: f64f 72ff movw r2, #65535 @ 0xffff + 8004b90: 60da str r2, [r3, #12] htim14.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 80049b6: 4b08 ldr r3, [pc, #32] @ (80049d8 ) - 80049b8: 2200 movs r2, #0 - 80049ba: 611a str r2, [r3, #16] + 8004b92: 4b08 ldr r3, [pc, #32] @ (8004bb4 ) + 8004b94: 2200 movs r2, #0 + 8004b96: 611a str r2, [r3, #16] htim14.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 80049bc: 4b06 ldr r3, [pc, #24] @ (80049d8 ) - 80049be: 2200 movs r2, #0 - 80049c0: 619a str r2, [r3, #24] + 8004b98: 4b06 ldr r3, [pc, #24] @ (8004bb4 ) + 8004b9a: 2200 movs r2, #0 + 8004b9c: 619a str r2, [r3, #24] if (HAL_TIM_Base_Init(&htim14) != HAL_OK) - 80049c2: 4805 ldr r0, [pc, #20] @ (80049d8 ) - 80049c4: f004 f9b4 bl 8008d30 - 80049c8: 4603 mov r3, r0 - 80049ca: 2b00 cmp r3, #0 - 80049cc: d001 beq.n 80049d2 + 8004b9e: 4805 ldr r0, [pc, #20] @ (8004bb4 ) + 8004ba0: f004 f9f0 bl 8008f84 + 8004ba4: 4603 mov r3, r0 + 8004ba6: 2b00 cmp r3, #0 + 8004ba8: d001 beq.n 8004bae { Error_Handler(); - 80049ce: f7fe fbcb bl 8003168 + 8004baa: f7fe fb39 bl 8003220 } /* USER CODE BEGIN TIM14_Init 2 */ /* USER CODE END TIM14_Init 2 */ } - 80049d2: bf00 nop - 80049d4: bd80 pop {r7, pc} - 80049d6: bf00 nop - 80049d8: 2000223c .word 0x2000223c - 80049dc: 40002000 .word 0x40002000 + 8004bae: bf00 nop + 8004bb0: bd80 pop {r7, pc} + 8004bb2: bf00 nop + 8004bb4: 20002284 .word 0x20002284 + 8004bb8: 40002000 .word 0x40002000 -080049e0 : +08004bbc : void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) { - 80049e0: b580 push {r7, lr} - 80049e2: b08a sub sp, #40 @ 0x28 - 80049e4: af00 add r7, sp, #0 - 80049e6: 6078 str r0, [r7, #4] + 8004bbc: b580 push {r7, lr} + 8004bbe: b08a sub sp, #40 @ 0x28 + 8004bc0: af00 add r7, sp, #0 + 8004bc2: 6078 str r0, [r7, #4] if(tim_baseHandle->Instance==TIM1) - 80049e8: 687b ldr r3, [r7, #4] - 80049ea: 681b ldr r3, [r3, #0] - 80049ec: 4a4a ldr r2, [pc, #296] @ (8004b18 ) - 80049ee: 4293 cmp r3, r2 - 80049f0: d10e bne.n 8004a10 + 8004bc4: 687b ldr r3, [r7, #4] + 8004bc6: 681b ldr r3, [r3, #0] + 8004bc8: 4a54 ldr r2, [pc, #336] @ (8004d1c ) + 8004bca: 4293 cmp r3, r2 + 8004bcc: d10e bne.n 8004bec { /* USER CODE BEGIN TIM1_MspInit 0 */ /* USER CODE END TIM1_MspInit 0 */ /* TIM1 clock enable */ __HAL_RCC_TIM1_CLK_ENABLE(); - 80049f2: 2300 movs r3, #0 - 80049f4: 627b str r3, [r7, #36] @ 0x24 - 80049f6: 4b49 ldr r3, [pc, #292] @ (8004b1c ) - 80049f8: 6c5b ldr r3, [r3, #68] @ 0x44 - 80049fa: 4a48 ldr r2, [pc, #288] @ (8004b1c ) - 80049fc: f043 0301 orr.w r3, r3, #1 - 8004a00: 6453 str r3, [r2, #68] @ 0x44 - 8004a02: 4b46 ldr r3, [pc, #280] @ (8004b1c ) - 8004a04: 6c5b ldr r3, [r3, #68] @ 0x44 - 8004a06: f003 0301 and.w r3, r3, #1 - 8004a0a: 627b str r3, [r7, #36] @ 0x24 - 8004a0c: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004bce: 2300 movs r3, #0 + 8004bd0: 627b str r3, [r7, #36] @ 0x24 + 8004bd2: 4b53 ldr r3, [pc, #332] @ (8004d20 ) + 8004bd4: 6c5b ldr r3, [r3, #68] @ 0x44 + 8004bd6: 4a52 ldr r2, [pc, #328] @ (8004d20 ) + 8004bd8: f043 0301 orr.w r3, r3, #1 + 8004bdc: 6453 str r3, [r2, #68] @ 0x44 + 8004bde: 4b50 ldr r3, [pc, #320] @ (8004d20 ) + 8004be0: 6c5b ldr r3, [r3, #68] @ 0x44 + 8004be2: f003 0301 and.w r3, r3, #1 + 8004be6: 627b str r3, [r7, #36] @ 0x24 + 8004be8: 6a7b ldr r3, [r7, #36] @ 0x24 __HAL_RCC_TIM14_CLK_ENABLE(); /* USER CODE BEGIN TIM14_MspInit 1 */ /* USER CODE END TIM14_MspInit 1 */ } } - 8004a0e: e07e b.n 8004b0e + 8004bea: e092 b.n 8004d12 else if(tim_baseHandle->Instance==TIM2) - 8004a10: 687b ldr r3, [r7, #4] - 8004a12: 681b ldr r3, [r3, #0] - 8004a14: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8004a18: d10e bne.n 8004a38 + 8004bec: 687b ldr r3, [r7, #4] + 8004bee: 681b ldr r3, [r3, #0] + 8004bf0: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8004bf4: d10e bne.n 8004c14 __HAL_RCC_TIM2_CLK_ENABLE(); - 8004a1a: 2300 movs r3, #0 - 8004a1c: 623b str r3, [r7, #32] - 8004a1e: 4b3f ldr r3, [pc, #252] @ (8004b1c ) - 8004a20: 6c1b ldr r3, [r3, #64] @ 0x40 - 8004a22: 4a3e ldr r2, [pc, #248] @ (8004b1c ) - 8004a24: f043 0301 orr.w r3, r3, #1 - 8004a28: 6413 str r3, [r2, #64] @ 0x40 - 8004a2a: 4b3c ldr r3, [pc, #240] @ (8004b1c ) - 8004a2c: 6c1b ldr r3, [r3, #64] @ 0x40 - 8004a2e: f003 0301 and.w r3, r3, #1 - 8004a32: 623b str r3, [r7, #32] - 8004a34: 6a3b ldr r3, [r7, #32] + 8004bf6: 2300 movs r3, #0 + 8004bf8: 623b str r3, [r7, #32] + 8004bfa: 4b49 ldr r3, [pc, #292] @ (8004d20 ) + 8004bfc: 6c1b ldr r3, [r3, #64] @ 0x40 + 8004bfe: 4a48 ldr r2, [pc, #288] @ (8004d20 ) + 8004c00: f043 0301 orr.w r3, r3, #1 + 8004c04: 6413 str r3, [r2, #64] @ 0x40 + 8004c06: 4b46 ldr r3, [pc, #280] @ (8004d20 ) + 8004c08: 6c1b ldr r3, [r3, #64] @ 0x40 + 8004c0a: f003 0301 and.w r3, r3, #1 + 8004c0e: 623b str r3, [r7, #32] + 8004c10: 6a3b ldr r3, [r7, #32] } - 8004a36: e06a b.n 8004b0e + 8004c12: e07e b.n 8004d12 else if(tim_baseHandle->Instance==TIM3) - 8004a38: 687b ldr r3, [r7, #4] - 8004a3a: 681b ldr r3, [r3, #0] - 8004a3c: 4a38 ldr r2, [pc, #224] @ (8004b20 ) - 8004a3e: 4293 cmp r3, r2 - 8004a40: d10e bne.n 8004a60 + 8004c14: 687b ldr r3, [r7, #4] + 8004c16: 681b ldr r3, [r3, #0] + 8004c18: 4a42 ldr r2, [pc, #264] @ (8004d24 ) + 8004c1a: 4293 cmp r3, r2 + 8004c1c: d10e bne.n 8004c3c __HAL_RCC_TIM3_CLK_ENABLE(); - 8004a42: 2300 movs r3, #0 - 8004a44: 61fb str r3, [r7, #28] - 8004a46: 4b35 ldr r3, [pc, #212] @ (8004b1c ) - 8004a48: 6c1b ldr r3, [r3, #64] @ 0x40 - 8004a4a: 4a34 ldr r2, [pc, #208] @ (8004b1c ) - 8004a4c: f043 0302 orr.w r3, r3, #2 - 8004a50: 6413 str r3, [r2, #64] @ 0x40 - 8004a52: 4b32 ldr r3, [pc, #200] @ (8004b1c ) - 8004a54: 6c1b ldr r3, [r3, #64] @ 0x40 - 8004a56: f003 0302 and.w r3, r3, #2 - 8004a5a: 61fb str r3, [r7, #28] - 8004a5c: 69fb ldr r3, [r7, #28] + 8004c1e: 2300 movs r3, #0 + 8004c20: 61fb str r3, [r7, #28] + 8004c22: 4b3f ldr r3, [pc, #252] @ (8004d20 ) + 8004c24: 6c1b ldr r3, [r3, #64] @ 0x40 + 8004c26: 4a3e ldr r2, [pc, #248] @ (8004d20 ) + 8004c28: f043 0302 orr.w r3, r3, #2 + 8004c2c: 6413 str r3, [r2, #64] @ 0x40 + 8004c2e: 4b3c ldr r3, [pc, #240] @ (8004d20 ) + 8004c30: 6c1b ldr r3, [r3, #64] @ 0x40 + 8004c32: f003 0302 and.w r3, r3, #2 + 8004c36: 61fb str r3, [r7, #28] + 8004c38: 69fb ldr r3, [r7, #28] } - 8004a5e: e056 b.n 8004b0e + 8004c3a: e06a b.n 8004d12 else if(tim_baseHandle->Instance==TIM4) - 8004a60: 687b ldr r3, [r7, #4] - 8004a62: 681b ldr r3, [r3, #0] - 8004a64: 4a2f ldr r2, [pc, #188] @ (8004b24 ) - 8004a66: 4293 cmp r3, r2 - 8004a68: d10e bne.n 8004a88 + 8004c3c: 687b ldr r3, [r7, #4] + 8004c3e: 681b ldr r3, [r3, #0] + 8004c40: 4a39 ldr r2, [pc, #228] @ (8004d28 ) + 8004c42: 4293 cmp r3, r2 + 8004c44: d10e bne.n 8004c64 __HAL_RCC_TIM4_CLK_ENABLE(); - 8004a6a: 2300 movs r3, #0 - 8004a6c: 61bb str r3, [r7, #24] - 8004a6e: 4b2b ldr r3, [pc, #172] @ (8004b1c ) - 8004a70: 6c1b ldr r3, [r3, #64] @ 0x40 - 8004a72: 4a2a ldr r2, [pc, #168] @ (8004b1c ) - 8004a74: f043 0304 orr.w r3, r3, #4 - 8004a78: 6413 str r3, [r2, #64] @ 0x40 - 8004a7a: 4b28 ldr r3, [pc, #160] @ (8004b1c ) - 8004a7c: 6c1b ldr r3, [r3, #64] @ 0x40 - 8004a7e: f003 0304 and.w r3, r3, #4 - 8004a82: 61bb str r3, [r7, #24] - 8004a84: 69bb ldr r3, [r7, #24] + 8004c46: 2300 movs r3, #0 + 8004c48: 61bb str r3, [r7, #24] + 8004c4a: 4b35 ldr r3, [pc, #212] @ (8004d20 ) + 8004c4c: 6c1b ldr r3, [r3, #64] @ 0x40 + 8004c4e: 4a34 ldr r2, [pc, #208] @ (8004d20 ) + 8004c50: f043 0304 orr.w r3, r3, #4 + 8004c54: 6413 str r3, [r2, #64] @ 0x40 + 8004c56: 4b32 ldr r3, [pc, #200] @ (8004d20 ) + 8004c58: 6c1b ldr r3, [r3, #64] @ 0x40 + 8004c5a: f003 0304 and.w r3, r3, #4 + 8004c5e: 61bb str r3, [r7, #24] + 8004c60: 69bb ldr r3, [r7, #24] } - 8004a86: e042 b.n 8004b0e + 8004c62: e056 b.n 8004d12 else if(tim_baseHandle->Instance==TIM6) - 8004a88: 687b ldr r3, [r7, #4] - 8004a8a: 681b ldr r3, [r3, #0] - 8004a8c: 4a26 ldr r2, [pc, #152] @ (8004b28 ) - 8004a8e: 4293 cmp r3, r2 - 8004a90: d116 bne.n 8004ac0 + 8004c64: 687b ldr r3, [r7, #4] + 8004c66: 681b ldr r3, [r3, #0] + 8004c68: 4a30 ldr r2, [pc, #192] @ (8004d2c ) + 8004c6a: 4293 cmp r3, r2 + 8004c6c: d116 bne.n 8004c9c __HAL_RCC_TIM6_CLK_ENABLE(); - 8004a92: 2300 movs r3, #0 - 8004a94: 617b str r3, [r7, #20] - 8004a96: 4b21 ldr r3, [pc, #132] @ (8004b1c ) - 8004a98: 6c1b ldr r3, [r3, #64] @ 0x40 - 8004a9a: 4a20 ldr r2, [pc, #128] @ (8004b1c ) - 8004a9c: f043 0310 orr.w r3, r3, #16 - 8004aa0: 6413 str r3, [r2, #64] @ 0x40 - 8004aa2: 4b1e ldr r3, [pc, #120] @ (8004b1c ) - 8004aa4: 6c1b ldr r3, [r3, #64] @ 0x40 - 8004aa6: f003 0310 and.w r3, r3, #16 - 8004aaa: 617b str r3, [r7, #20] - 8004aac: 697b ldr r3, [r7, #20] + 8004c6e: 2300 movs r3, #0 + 8004c70: 617b str r3, [r7, #20] + 8004c72: 4b2b ldr r3, [pc, #172] @ (8004d20 ) + 8004c74: 6c1b ldr r3, [r3, #64] @ 0x40 + 8004c76: 4a2a ldr r2, [pc, #168] @ (8004d20 ) + 8004c78: f043 0310 orr.w r3, r3, #16 + 8004c7c: 6413 str r3, [r2, #64] @ 0x40 + 8004c7e: 4b28 ldr r3, [pc, #160] @ (8004d20 ) + 8004c80: 6c1b ldr r3, [r3, #64] @ 0x40 + 8004c82: f003 0310 and.w r3, r3, #16 + 8004c86: 617b str r3, [r7, #20] + 8004c88: 697b ldr r3, [r7, #20] HAL_NVIC_SetPriority(TIM6_DAC_IRQn, 5, 0); - 8004aae: 2200 movs r2, #0 - 8004ab0: 2105 movs r1, #5 - 8004ab2: 2036 movs r0, #54 @ 0x36 - 8004ab4: f001 fe58 bl 8006768 + 8004c8a: 2200 movs r2, #0 + 8004c8c: 2105 movs r1, #5 + 8004c8e: 2036 movs r0, #54 @ 0x36 + 8004c90: f001 fe94 bl 80069bc HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn); - 8004ab8: 2036 movs r0, #54 @ 0x36 - 8004aba: f001 fe81 bl 80067c0 + 8004c94: 2036 movs r0, #54 @ 0x36 + 8004c96: f001 febd bl 8006a14 } - 8004abe: e026 b.n 8004b0e + 8004c9a: e03a b.n 8004d12 else if(tim_baseHandle->Instance==TIM9) - 8004ac0: 687b ldr r3, [r7, #4] - 8004ac2: 681b ldr r3, [r3, #0] - 8004ac4: 4a19 ldr r2, [pc, #100] @ (8004b2c ) - 8004ac6: 4293 cmp r3, r2 - 8004ac8: d10e bne.n 8004ae8 + 8004c9c: 687b ldr r3, [r7, #4] + 8004c9e: 681b ldr r3, [r3, #0] + 8004ca0: 4a23 ldr r2, [pc, #140] @ (8004d30 ) + 8004ca2: 4293 cmp r3, r2 + 8004ca4: d10e bne.n 8004cc4 __HAL_RCC_TIM9_CLK_ENABLE(); - 8004aca: 2300 movs r3, #0 - 8004acc: 613b str r3, [r7, #16] - 8004ace: 4b13 ldr r3, [pc, #76] @ (8004b1c ) - 8004ad0: 6c5b ldr r3, [r3, #68] @ 0x44 - 8004ad2: 4a12 ldr r2, [pc, #72] @ (8004b1c ) - 8004ad4: f443 3380 orr.w r3, r3, #65536 @ 0x10000 - 8004ad8: 6453 str r3, [r2, #68] @ 0x44 - 8004ada: 4b10 ldr r3, [pc, #64] @ (8004b1c ) - 8004adc: 6c5b ldr r3, [r3, #68] @ 0x44 - 8004ade: f403 3380 and.w r3, r3, #65536 @ 0x10000 - 8004ae2: 613b str r3, [r7, #16] - 8004ae4: 693b ldr r3, [r7, #16] + 8004ca6: 2300 movs r3, #0 + 8004ca8: 613b str r3, [r7, #16] + 8004caa: 4b1d ldr r3, [pc, #116] @ (8004d20 ) + 8004cac: 6c5b ldr r3, [r3, #68] @ 0x44 + 8004cae: 4a1c ldr r2, [pc, #112] @ (8004d20 ) + 8004cb0: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 8004cb4: 6453 str r3, [r2, #68] @ 0x44 + 8004cb6: 4b1a ldr r3, [pc, #104] @ (8004d20 ) + 8004cb8: 6c5b ldr r3, [r3, #68] @ 0x44 + 8004cba: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8004cbe: 613b str r3, [r7, #16] + 8004cc0: 693b ldr r3, [r7, #16] } - 8004ae6: e012 b.n 8004b0e + 8004cc2: e026 b.n 8004d12 + else if(tim_baseHandle->Instance==TIM11) + 8004cc4: 687b ldr r3, [r7, #4] + 8004cc6: 681b ldr r3, [r3, #0] + 8004cc8: 4a1a ldr r2, [pc, #104] @ (8004d34 ) + 8004cca: 4293 cmp r3, r2 + 8004ccc: d10e bne.n 8004cec + __HAL_RCC_TIM11_CLK_ENABLE(); + 8004cce: 2300 movs r3, #0 + 8004cd0: 60fb str r3, [r7, #12] + 8004cd2: 4b13 ldr r3, [pc, #76] @ (8004d20 ) + 8004cd4: 6c5b ldr r3, [r3, #68] @ 0x44 + 8004cd6: 4a12 ldr r2, [pc, #72] @ (8004d20 ) + 8004cd8: f443 2380 orr.w r3, r3, #262144 @ 0x40000 + 8004cdc: 6453 str r3, [r2, #68] @ 0x44 + 8004cde: 4b10 ldr r3, [pc, #64] @ (8004d20 ) + 8004ce0: 6c5b ldr r3, [r3, #68] @ 0x44 + 8004ce2: f403 2380 and.w r3, r3, #262144 @ 0x40000 + 8004ce6: 60fb str r3, [r7, #12] + 8004ce8: 68fb ldr r3, [r7, #12] +} + 8004cea: e012 b.n 8004d12 else if(tim_baseHandle->Instance==TIM14) - 8004ae8: 687b ldr r3, [r7, #4] - 8004aea: 681b ldr r3, [r3, #0] - 8004aec: 4a10 ldr r2, [pc, #64] @ (8004b30 ) - 8004aee: 4293 cmp r3, r2 - 8004af0: d10d bne.n 8004b0e + 8004cec: 687b ldr r3, [r7, #4] + 8004cee: 681b ldr r3, [r3, #0] + 8004cf0: 4a11 ldr r2, [pc, #68] @ (8004d38 ) + 8004cf2: 4293 cmp r3, r2 + 8004cf4: d10d bne.n 8004d12 __HAL_RCC_TIM14_CLK_ENABLE(); - 8004af2: 2300 movs r3, #0 - 8004af4: 60fb str r3, [r7, #12] - 8004af6: 4b09 ldr r3, [pc, #36] @ (8004b1c ) - 8004af8: 6c1b ldr r3, [r3, #64] @ 0x40 - 8004afa: 4a08 ldr r2, [pc, #32] @ (8004b1c ) - 8004afc: f443 7380 orr.w r3, r3, #256 @ 0x100 - 8004b00: 6413 str r3, [r2, #64] @ 0x40 - 8004b02: 4b06 ldr r3, [pc, #24] @ (8004b1c ) - 8004b04: 6c1b ldr r3, [r3, #64] @ 0x40 - 8004b06: f403 7380 and.w r3, r3, #256 @ 0x100 - 8004b0a: 60fb str r3, [r7, #12] - 8004b0c: 68fb ldr r3, [r7, #12] + 8004cf6: 2300 movs r3, #0 + 8004cf8: 60bb str r3, [r7, #8] + 8004cfa: 4b09 ldr r3, [pc, #36] @ (8004d20 ) + 8004cfc: 6c1b ldr r3, [r3, #64] @ 0x40 + 8004cfe: 4a08 ldr r2, [pc, #32] @ (8004d20 ) + 8004d00: f443 7380 orr.w r3, r3, #256 @ 0x100 + 8004d04: 6413 str r3, [r2, #64] @ 0x40 + 8004d06: 4b06 ldr r3, [pc, #24] @ (8004d20 ) + 8004d08: 6c1b ldr r3, [r3, #64] @ 0x40 + 8004d0a: f403 7380 and.w r3, r3, #256 @ 0x100 + 8004d0e: 60bb str r3, [r7, #8] + 8004d10: 68bb ldr r3, [r7, #8] } - 8004b0e: bf00 nop - 8004b10: 3728 adds r7, #40 @ 0x28 - 8004b12: 46bd mov sp, r7 - 8004b14: bd80 pop {r7, pc} - 8004b16: bf00 nop - 8004b18: 40010000 .word 0x40010000 - 8004b1c: 40023800 .word 0x40023800 - 8004b20: 40000400 .word 0x40000400 - 8004b24: 40000800 .word 0x40000800 - 8004b28: 40001000 .word 0x40001000 - 8004b2c: 40014000 .word 0x40014000 - 8004b30: 40002000 .word 0x40002000 + 8004d12: bf00 nop + 8004d14: 3728 adds r7, #40 @ 0x28 + 8004d16: 46bd mov sp, r7 + 8004d18: bd80 pop {r7, pc} + 8004d1a: bf00 nop + 8004d1c: 40010000 .word 0x40010000 + 8004d20: 40023800 .word 0x40023800 + 8004d24: 40000400 .word 0x40000400 + 8004d28: 40000800 .word 0x40000800 + 8004d2c: 40001000 .word 0x40001000 + 8004d30: 40014000 .word 0x40014000 + 8004d34: 40014800 .word 0x40014800 + 8004d38: 40002000 .word 0x40002000 -08004b34 : +08004d3c : void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle) { - 8004b34: b580 push {r7, lr} - 8004b36: b08c sub sp, #48 @ 0x30 - 8004b38: af00 add r7, sp, #0 - 8004b3a: 6078 str r0, [r7, #4] + 8004d3c: b580 push {r7, lr} + 8004d3e: b08e sub sp, #56 @ 0x38 + 8004d40: af00 add r7, sp, #0 + 8004d42: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8004b3c: f107 031c add.w r3, r7, #28 - 8004b40: 2200 movs r2, #0 - 8004b42: 601a str r2, [r3, #0] - 8004b44: 605a str r2, [r3, #4] - 8004b46: 609a str r2, [r3, #8] - 8004b48: 60da str r2, [r3, #12] - 8004b4a: 611a str r2, [r3, #16] + 8004d44: f107 0324 add.w r3, r7, #36 @ 0x24 + 8004d48: 2200 movs r2, #0 + 8004d4a: 601a str r2, [r3, #0] + 8004d4c: 605a str r2, [r3, #4] + 8004d4e: 609a str r2, [r3, #8] + 8004d50: 60da str r2, [r3, #12] + 8004d52: 611a str r2, [r3, #16] if(timHandle->Instance==TIM1) - 8004b4c: 687b ldr r3, [r7, #4] - 8004b4e: 681b ldr r3, [r3, #0] - 8004b50: 4a64 ldr r2, [pc, #400] @ (8004ce4 ) - 8004b52: 4293 cmp r3, r2 - 8004b54: d130 bne.n 8004bb8 + 8004d54: 687b ldr r3, [r7, #4] + 8004d56: 681b ldr r3, [r3, #0] + 8004d58: 4a76 ldr r2, [pc, #472] @ (8004f34 ) + 8004d5a: 4293 cmp r3, r2 + 8004d5c: d130 bne.n 8004dc0 { /* USER CODE BEGIN TIM1_MspPostInit 0 */ /* USER CODE END TIM1_MspPostInit 0 */ __HAL_RCC_GPIOE_CLK_ENABLE(); - 8004b56: 2300 movs r3, #0 - 8004b58: 61bb str r3, [r7, #24] - 8004b5a: 4b63 ldr r3, [pc, #396] @ (8004ce8 ) - 8004b5c: 6b1b ldr r3, [r3, #48] @ 0x30 - 8004b5e: 4a62 ldr r2, [pc, #392] @ (8004ce8 ) - 8004b60: f043 0310 orr.w r3, r3, #16 - 8004b64: 6313 str r3, [r2, #48] @ 0x30 - 8004b66: 4b60 ldr r3, [pc, #384] @ (8004ce8 ) - 8004b68: 6b1b ldr r3, [r3, #48] @ 0x30 - 8004b6a: f003 0310 and.w r3, r3, #16 - 8004b6e: 61bb str r3, [r7, #24] - 8004b70: 69bb ldr r3, [r7, #24] + 8004d5e: 2300 movs r3, #0 + 8004d60: 623b str r3, [r7, #32] + 8004d62: 4b75 ldr r3, [pc, #468] @ (8004f38 ) + 8004d64: 6b1b ldr r3, [r3, #48] @ 0x30 + 8004d66: 4a74 ldr r2, [pc, #464] @ (8004f38 ) + 8004d68: f043 0310 orr.w r3, r3, #16 + 8004d6c: 6313 str r3, [r2, #48] @ 0x30 + 8004d6e: 4b72 ldr r3, [pc, #456] @ (8004f38 ) + 8004d70: 6b1b ldr r3, [r3, #48] @ 0x30 + 8004d72: f003 0310 and.w r3, r3, #16 + 8004d76: 623b str r3, [r7, #32] + 8004d78: 6a3b ldr r3, [r7, #32] PE9 ------> TIM1_CH1 PE11 ------> TIM1_CH2 PE13 ------> TIM1_CH3 PE14 ------> TIM1_CH4 */ GPIO_InitStruct.Pin = RED_PWM_Pin|GREEN_PWM_Pin|BLUE_PWM_Pin; - 8004b72: f44f 5328 mov.w r3, #10752 @ 0x2a00 - 8004b76: 61fb str r3, [r7, #28] + 8004d7a: f44f 5328 mov.w r3, #10752 @ 0x2a00 + 8004d7e: 627b str r3, [r7, #36] @ 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8004b78: 2302 movs r3, #2 - 8004b7a: 623b str r3, [r7, #32] + 8004d80: 2302 movs r3, #2 + 8004d82: 62bb str r3, [r7, #40] @ 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; - 8004b7c: 2300 movs r3, #0 - 8004b7e: 627b str r3, [r7, #36] @ 0x24 + 8004d84: 2300 movs r3, #0 + 8004d86: 62fb str r3, [r7, #44] @ 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8004b80: 2300 movs r3, #0 - 8004b82: 62bb str r3, [r7, #40] @ 0x28 + 8004d88: 2300 movs r3, #0 + 8004d8a: 633b str r3, [r7, #48] @ 0x30 GPIO_InitStruct.Alternate = GPIO_AF1_TIM1; - 8004b84: 2301 movs r3, #1 - 8004b86: 62fb str r3, [r7, #44] @ 0x2c + 8004d8c: 2301 movs r3, #1 + 8004d8e: 637b str r3, [r7, #52] @ 0x34 HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); - 8004b88: f107 031c add.w r3, r7, #28 - 8004b8c: 4619 mov r1, r3 - 8004b8e: 4857 ldr r0, [pc, #348] @ (8004cec ) - 8004b90: f002 fbd4 bl 800733c + 8004d90: f107 0324 add.w r3, r7, #36 @ 0x24 + 8004d94: 4619 mov r1, r3 + 8004d96: 4869 ldr r0, [pc, #420] @ (8004f3c ) + 8004d98: f002 fbfa bl 8007590 GPIO_InitStruct.Pin = HV_PWM_Pin; - 8004b94: f44f 4380 mov.w r3, #16384 @ 0x4000 - 8004b98: 61fb str r3, [r7, #28] + 8004d9c: f44f 4380 mov.w r3, #16384 @ 0x4000 + 8004da0: 627b str r3, [r7, #36] @ 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8004b9a: 2302 movs r3, #2 - 8004b9c: 623b str r3, [r7, #32] + 8004da2: 2302 movs r3, #2 + 8004da4: 62bb str r3, [r7, #40] @ 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; - 8004b9e: 2300 movs r3, #0 - 8004ba0: 627b str r3, [r7, #36] @ 0x24 + 8004da6: 2300 movs r3, #0 + 8004da8: 62fb str r3, [r7, #44] @ 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 8004ba2: 2303 movs r3, #3 - 8004ba4: 62bb str r3, [r7, #40] @ 0x28 + 8004daa: 2303 movs r3, #3 + 8004dac: 633b str r3, [r7, #48] @ 0x30 GPIO_InitStruct.Alternate = GPIO_AF1_TIM1; - 8004ba6: 2301 movs r3, #1 - 8004ba8: 62fb str r3, [r7, #44] @ 0x2c + 8004dae: 2301 movs r3, #1 + 8004db0: 637b str r3, [r7, #52] @ 0x34 HAL_GPIO_Init(HV_PWM_GPIO_Port, &GPIO_InitStruct); - 8004baa: f107 031c add.w r3, r7, #28 - 8004bae: 4619 mov r1, r3 - 8004bb0: 484e ldr r0, [pc, #312] @ (8004cec ) - 8004bb2: f002 fbc3 bl 800733c - /* USER CODE BEGIN TIM9_MspPostInit 1 */ + 8004db2: f107 0324 add.w r3, r7, #36 @ 0x24 + 8004db6: 4619 mov r1, r3 + 8004db8: 4860 ldr r0, [pc, #384] @ (8004f3c ) + 8004dba: f002 fbe9 bl 8007590 + /* USER CODE BEGIN TIM11_MspPostInit 1 */ - /* USER CODE END TIM9_MspPostInit 1 */ + /* USER CODE END TIM11_MspPostInit 1 */ } } - 8004bb6: e090 b.n 8004cda + 8004dbe: e0b5 b.n 8004f2c else if(timHandle->Instance==TIM2) - 8004bb8: 687b ldr r3, [r7, #4] - 8004bba: 681b ldr r3, [r3, #0] - 8004bbc: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8004bc0: d11e bne.n 8004c00 + 8004dc0: 687b ldr r3, [r7, #4] + 8004dc2: 681b ldr r3, [r3, #0] + 8004dc4: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8004dc8: d11e bne.n 8004e08 __HAL_RCC_GPIOA_CLK_ENABLE(); - 8004bc2: 2300 movs r3, #0 - 8004bc4: 617b str r3, [r7, #20] - 8004bc6: 4b48 ldr r3, [pc, #288] @ (8004ce8 ) - 8004bc8: 6b1b ldr r3, [r3, #48] @ 0x30 - 8004bca: 4a47 ldr r2, [pc, #284] @ (8004ce8 ) - 8004bcc: f043 0301 orr.w r3, r3, #1 - 8004bd0: 6313 str r3, [r2, #48] @ 0x30 - 8004bd2: 4b45 ldr r3, [pc, #276] @ (8004ce8 ) - 8004bd4: 6b1b ldr r3, [r3, #48] @ 0x30 - 8004bd6: f003 0301 and.w r3, r3, #1 - 8004bda: 617b str r3, [r7, #20] - 8004bdc: 697b ldr r3, [r7, #20] + 8004dca: 2300 movs r3, #0 + 8004dcc: 61fb str r3, [r7, #28] + 8004dce: 4b5a ldr r3, [pc, #360] @ (8004f38 ) + 8004dd0: 6b1b ldr r3, [r3, #48] @ 0x30 + 8004dd2: 4a59 ldr r2, [pc, #356] @ (8004f38 ) + 8004dd4: f043 0301 orr.w r3, r3, #1 + 8004dd8: 6313 str r3, [r2, #48] @ 0x30 + 8004dda: 4b57 ldr r3, [pc, #348] @ (8004f38 ) + 8004ddc: 6b1b ldr r3, [r3, #48] @ 0x30 + 8004dde: f003 0301 and.w r3, r3, #1 + 8004de2: 61fb str r3, [r7, #28] + 8004de4: 69fb ldr r3, [r7, #28] GPIO_InitStruct.Pin = RV_PWM_1_Pin|RV_PWM_2_Pin|RV_PWM_3_Pin; - 8004bde: 230e movs r3, #14 - 8004be0: 61fb str r3, [r7, #28] + 8004de6: 230e movs r3, #14 + 8004de8: 627b str r3, [r7, #36] @ 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8004be2: 2302 movs r3, #2 - 8004be4: 623b str r3, [r7, #32] + 8004dea: 2302 movs r3, #2 + 8004dec: 62bb str r3, [r7, #40] @ 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; - 8004be6: 2300 movs r3, #0 - 8004be8: 627b str r3, [r7, #36] @ 0x24 + 8004dee: 2300 movs r3, #0 + 8004df0: 62fb str r3, [r7, #44] @ 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8004bea: 2300 movs r3, #0 - 8004bec: 62bb str r3, [r7, #40] @ 0x28 + 8004df2: 2300 movs r3, #0 + 8004df4: 633b str r3, [r7, #48] @ 0x30 GPIO_InitStruct.Alternate = GPIO_AF1_TIM2; - 8004bee: 2301 movs r3, #1 - 8004bf0: 62fb str r3, [r7, #44] @ 0x2c + 8004df6: 2301 movs r3, #1 + 8004df8: 637b str r3, [r7, #52] @ 0x34 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 8004bf2: f107 031c add.w r3, r7, #28 - 8004bf6: 4619 mov r1, r3 - 8004bf8: 483d ldr r0, [pc, #244] @ (8004cf0 ) - 8004bfa: f002 fb9f bl 800733c + 8004dfa: f107 0324 add.w r3, r7, #36 @ 0x24 + 8004dfe: 4619 mov r1, r3 + 8004e00: 484f ldr r0, [pc, #316] @ (8004f40 ) + 8004e02: f002 fbc5 bl 8007590 } - 8004bfe: e06c b.n 8004cda + 8004e06: e091 b.n 8004f2c else if(timHandle->Instance==TIM3) - 8004c00: 687b ldr r3, [r7, #4] - 8004c02: 681b ldr r3, [r3, #0] - 8004c04: 4a3b ldr r2, [pc, #236] @ (8004cf4 ) - 8004c06: 4293 cmp r3, r2 - 8004c08: d11f bne.n 8004c4a + 8004e08: 687b ldr r3, [r7, #4] + 8004e0a: 681b ldr r3, [r3, #0] + 8004e0c: 4a4d ldr r2, [pc, #308] @ (8004f44 ) + 8004e0e: 4293 cmp r3, r2 + 8004e10: d11f bne.n 8004e52 __HAL_RCC_GPIOC_CLK_ENABLE(); - 8004c0a: 2300 movs r3, #0 - 8004c0c: 613b str r3, [r7, #16] - 8004c0e: 4b36 ldr r3, [pc, #216] @ (8004ce8 ) - 8004c10: 6b1b ldr r3, [r3, #48] @ 0x30 - 8004c12: 4a35 ldr r2, [pc, #212] @ (8004ce8 ) - 8004c14: f043 0304 orr.w r3, r3, #4 - 8004c18: 6313 str r3, [r2, #48] @ 0x30 - 8004c1a: 4b33 ldr r3, [pc, #204] @ (8004ce8 ) - 8004c1c: 6b1b ldr r3, [r3, #48] @ 0x30 - 8004c1e: f003 0304 and.w r3, r3, #4 - 8004c22: 613b str r3, [r7, #16] - 8004c24: 693b ldr r3, [r7, #16] + 8004e12: 2300 movs r3, #0 + 8004e14: 61bb str r3, [r7, #24] + 8004e16: 4b48 ldr r3, [pc, #288] @ (8004f38 ) + 8004e18: 6b1b ldr r3, [r3, #48] @ 0x30 + 8004e1a: 4a47 ldr r2, [pc, #284] @ (8004f38 ) + 8004e1c: f043 0304 orr.w r3, r3, #4 + 8004e20: 6313 str r3, [r2, #48] @ 0x30 + 8004e22: 4b45 ldr r3, [pc, #276] @ (8004f38 ) + 8004e24: 6b1b ldr r3, [r3, #48] @ 0x30 + 8004e26: f003 0304 and.w r3, r3, #4 + 8004e2a: 61bb str r3, [r7, #24] + 8004e2c: 69bb ldr r3, [r7, #24] GPIO_InitStruct.Pin = LV_PWM_1_Pin|LV_PWM_2_Pin|LV_PWM_3_Pin; - 8004c26: f44f 73e0 mov.w r3, #448 @ 0x1c0 - 8004c2a: 61fb str r3, [r7, #28] + 8004e2e: f44f 73e0 mov.w r3, #448 @ 0x1c0 + 8004e32: 627b str r3, [r7, #36] @ 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8004c2c: 2302 movs r3, #2 - 8004c2e: 623b str r3, [r7, #32] + 8004e34: 2302 movs r3, #2 + 8004e36: 62bb str r3, [r7, #40] @ 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; - 8004c30: 2300 movs r3, #0 - 8004c32: 627b str r3, [r7, #36] @ 0x24 + 8004e38: 2300 movs r3, #0 + 8004e3a: 62fb str r3, [r7, #44] @ 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8004c34: 2300 movs r3, #0 - 8004c36: 62bb str r3, [r7, #40] @ 0x28 + 8004e3c: 2300 movs r3, #0 + 8004e3e: 633b str r3, [r7, #48] @ 0x30 GPIO_InitStruct.Alternate = GPIO_AF2_TIM3; - 8004c38: 2302 movs r3, #2 - 8004c3a: 62fb str r3, [r7, #44] @ 0x2c + 8004e40: 2302 movs r3, #2 + 8004e42: 637b str r3, [r7, #52] @ 0x34 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - 8004c3c: f107 031c add.w r3, r7, #28 - 8004c40: 4619 mov r1, r3 - 8004c42: 482d ldr r0, [pc, #180] @ (8004cf8 ) - 8004c44: f002 fb7a bl 800733c + 8004e44: f107 0324 add.w r3, r7, #36 @ 0x24 + 8004e48: 4619 mov r1, r3 + 8004e4a: 483f ldr r0, [pc, #252] @ (8004f48 ) + 8004e4c: f002 fba0 bl 8007590 } - 8004c48: e047 b.n 8004cda + 8004e50: e06c b.n 8004f2c else if(timHandle->Instance==TIM4) - 8004c4a: 687b ldr r3, [r7, #4] - 8004c4c: 681b ldr r3, [r3, #0] - 8004c4e: 4a2b ldr r2, [pc, #172] @ (8004cfc ) - 8004c50: 4293 cmp r3, r2 - 8004c52: d11f bne.n 8004c94 + 8004e52: 687b ldr r3, [r7, #4] + 8004e54: 681b ldr r3, [r3, #0] + 8004e56: 4a3d ldr r2, [pc, #244] @ (8004f4c ) + 8004e58: 4293 cmp r3, r2 + 8004e5a: d11f bne.n 8004e9c __HAL_RCC_GPIOB_CLK_ENABLE(); - 8004c54: 2300 movs r3, #0 - 8004c56: 60fb str r3, [r7, #12] - 8004c58: 4b23 ldr r3, [pc, #140] @ (8004ce8 ) - 8004c5a: 6b1b ldr r3, [r3, #48] @ 0x30 - 8004c5c: 4a22 ldr r2, [pc, #136] @ (8004ce8 ) - 8004c5e: f043 0302 orr.w r3, r3, #2 - 8004c62: 6313 str r3, [r2, #48] @ 0x30 - 8004c64: 4b20 ldr r3, [pc, #128] @ (8004ce8 ) - 8004c66: 6b1b ldr r3, [r3, #48] @ 0x30 - 8004c68: f003 0302 and.w r3, r3, #2 - 8004c6c: 60fb str r3, [r7, #12] - 8004c6e: 68fb ldr r3, [r7, #12] + 8004e5c: 2300 movs r3, #0 + 8004e5e: 617b str r3, [r7, #20] + 8004e60: 4b35 ldr r3, [pc, #212] @ (8004f38 ) + 8004e62: 6b1b ldr r3, [r3, #48] @ 0x30 + 8004e64: 4a34 ldr r2, [pc, #208] @ (8004f38 ) + 8004e66: f043 0302 orr.w r3, r3, #2 + 8004e6a: 6313 str r3, [r2, #48] @ 0x30 + 8004e6c: 4b32 ldr r3, [pc, #200] @ (8004f38 ) + 8004e6e: 6b1b ldr r3, [r3, #48] @ 0x30 + 8004e70: f003 0302 and.w r3, r3, #2 + 8004e74: 617b str r3, [r7, #20] + 8004e76: 697b ldr r3, [r7, #20] GPIO_InitStruct.Pin = RA_PWM_1_Pin|RA_PWM_2_Pin|RA_PWM_3_Pin; - 8004c70: f44f 73e0 mov.w r3, #448 @ 0x1c0 - 8004c74: 61fb str r3, [r7, #28] + 8004e78: f44f 73e0 mov.w r3, #448 @ 0x1c0 + 8004e7c: 627b str r3, [r7, #36] @ 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8004c76: 2302 movs r3, #2 - 8004c78: 623b str r3, [r7, #32] + 8004e7e: 2302 movs r3, #2 + 8004e80: 62bb str r3, [r7, #40] @ 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; - 8004c7a: 2300 movs r3, #0 - 8004c7c: 627b str r3, [r7, #36] @ 0x24 + 8004e82: 2300 movs r3, #0 + 8004e84: 62fb str r3, [r7, #44] @ 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8004c7e: 2300 movs r3, #0 - 8004c80: 62bb str r3, [r7, #40] @ 0x28 + 8004e86: 2300 movs r3, #0 + 8004e88: 633b str r3, [r7, #48] @ 0x30 GPIO_InitStruct.Alternate = GPIO_AF2_TIM4; - 8004c82: 2302 movs r3, #2 - 8004c84: 62fb str r3, [r7, #44] @ 0x2c + 8004e8a: 2302 movs r3, #2 + 8004e8c: 637b str r3, [r7, #52] @ 0x34 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 8004c86: f107 031c add.w r3, r7, #28 - 8004c8a: 4619 mov r1, r3 - 8004c8c: 481c ldr r0, [pc, #112] @ (8004d00 ) - 8004c8e: f002 fb55 bl 800733c + 8004e8e: f107 0324 add.w r3, r7, #36 @ 0x24 + 8004e92: 4619 mov r1, r3 + 8004e94: 482e ldr r0, [pc, #184] @ (8004f50 ) + 8004e96: f002 fb7b bl 8007590 } - 8004c92: e022 b.n 8004cda + 8004e9a: e047 b.n 8004f2c else if(timHandle->Instance==TIM9) - 8004c94: 687b ldr r3, [r7, #4] - 8004c96: 681b ldr r3, [r3, #0] - 8004c98: 4a1a ldr r2, [pc, #104] @ (8004d04 ) - 8004c9a: 4293 cmp r3, r2 - 8004c9c: d11d bne.n 8004cda + 8004e9c: 687b ldr r3, [r7, #4] + 8004e9e: 681b ldr r3, [r3, #0] + 8004ea0: 4a2c ldr r2, [pc, #176] @ (8004f54 ) + 8004ea2: 4293 cmp r3, r2 + 8004ea4: d11e bne.n 8004ee4 __HAL_RCC_GPIOE_CLK_ENABLE(); - 8004c9e: 2300 movs r3, #0 - 8004ca0: 60bb str r3, [r7, #8] - 8004ca2: 4b11 ldr r3, [pc, #68] @ (8004ce8 ) - 8004ca4: 6b1b ldr r3, [r3, #48] @ 0x30 - 8004ca6: 4a10 ldr r2, [pc, #64] @ (8004ce8 ) - 8004ca8: f043 0310 orr.w r3, r3, #16 - 8004cac: 6313 str r3, [r2, #48] @ 0x30 - 8004cae: 4b0e ldr r3, [pc, #56] @ (8004ce8 ) - 8004cb0: 6b1b ldr r3, [r3, #48] @ 0x30 - 8004cb2: f003 0310 and.w r3, r3, #16 - 8004cb6: 60bb str r3, [r7, #8] - 8004cb8: 68bb ldr r3, [r7, #8] + 8004ea6: 2300 movs r3, #0 + 8004ea8: 613b str r3, [r7, #16] + 8004eaa: 4b23 ldr r3, [pc, #140] @ (8004f38 ) + 8004eac: 6b1b ldr r3, [r3, #48] @ 0x30 + 8004eae: 4a22 ldr r2, [pc, #136] @ (8004f38 ) + 8004eb0: f043 0310 orr.w r3, r3, #16 + 8004eb4: 6313 str r3, [r2, #48] @ 0x30 + 8004eb6: 4b20 ldr r3, [pc, #128] @ (8004f38 ) + 8004eb8: 6b1b ldr r3, [r3, #48] @ 0x30 + 8004eba: f003 0310 and.w r3, r3, #16 + 8004ebe: 613b str r3, [r7, #16] + 8004ec0: 693b ldr r3, [r7, #16] GPIO_InitStruct.Pin = BUZ_PWM_Pin; - 8004cba: 2340 movs r3, #64 @ 0x40 - 8004cbc: 61fb str r3, [r7, #28] + 8004ec2: 2340 movs r3, #64 @ 0x40 + 8004ec4: 627b str r3, [r7, #36] @ 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8004cbe: 2302 movs r3, #2 - 8004cc0: 623b str r3, [r7, #32] + 8004ec6: 2302 movs r3, #2 + 8004ec8: 62bb str r3, [r7, #40] @ 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; - 8004cc2: 2300 movs r3, #0 - 8004cc4: 627b str r3, [r7, #36] @ 0x24 + 8004eca: 2300 movs r3, #0 + 8004ecc: 62fb str r3, [r7, #44] @ 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 8004cc6: 2303 movs r3, #3 - 8004cc8: 62bb str r3, [r7, #40] @ 0x28 + 8004ece: 2303 movs r3, #3 + 8004ed0: 633b str r3, [r7, #48] @ 0x30 GPIO_InitStruct.Alternate = GPIO_AF3_TIM9; - 8004cca: 2303 movs r3, #3 - 8004ccc: 62fb str r3, [r7, #44] @ 0x2c + 8004ed2: 2303 movs r3, #3 + 8004ed4: 637b str r3, [r7, #52] @ 0x34 HAL_GPIO_Init(BUZ_PWM_GPIO_Port, &GPIO_InitStruct); - 8004cce: f107 031c add.w r3, r7, #28 - 8004cd2: 4619 mov r1, r3 - 8004cd4: 4805 ldr r0, [pc, #20] @ (8004cec ) - 8004cd6: f002 fb31 bl 800733c + 8004ed6: f107 0324 add.w r3, r7, #36 @ 0x24 + 8004eda: 4619 mov r1, r3 + 8004edc: 4817 ldr r0, [pc, #92] @ (8004f3c ) + 8004ede: f002 fb57 bl 8007590 } - 8004cda: bf00 nop - 8004cdc: 3730 adds r7, #48 @ 0x30 - 8004cde: 46bd mov sp, r7 - 8004ce0: bd80 pop {r7, pc} - 8004ce2: bf00 nop - 8004ce4: 40010000 .word 0x40010000 - 8004ce8: 40023800 .word 0x40023800 - 8004cec: 40021000 .word 0x40021000 - 8004cf0: 40020000 .word 0x40020000 - 8004cf4: 40000400 .word 0x40000400 - 8004cf8: 40020800 .word 0x40020800 - 8004cfc: 40000800 .word 0x40000800 - 8004d00: 40020400 .word 0x40020400 - 8004d04: 40014000 .word 0x40014000 + 8004ee2: e023 b.n 8004f2c + else if(timHandle->Instance==TIM11) + 8004ee4: 687b ldr r3, [r7, #4] + 8004ee6: 681b ldr r3, [r3, #0] + 8004ee8: 4a1b ldr r2, [pc, #108] @ (8004f58 ) + 8004eea: 4293 cmp r3, r2 + 8004eec: d11e bne.n 8004f2c + __HAL_RCC_GPIOB_CLK_ENABLE(); + 8004eee: 2300 movs r3, #0 + 8004ef0: 60fb str r3, [r7, #12] + 8004ef2: 4b11 ldr r3, [pc, #68] @ (8004f38 ) + 8004ef4: 6b1b ldr r3, [r3, #48] @ 0x30 + 8004ef6: 4a10 ldr r2, [pc, #64] @ (8004f38 ) + 8004ef8: f043 0302 orr.w r3, r3, #2 + 8004efc: 6313 str r3, [r2, #48] @ 0x30 + 8004efe: 4b0e ldr r3, [pc, #56] @ (8004f38 ) + 8004f00: 6b1b ldr r3, [r3, #48] @ 0x30 + 8004f02: f003 0302 and.w r3, r3, #2 + 8004f06: 60fb str r3, [r7, #12] + 8004f08: 68fb ldr r3, [r7, #12] + GPIO_InitStruct.Pin = RV_LV_SHOCK_Pin; + 8004f0a: f44f 7300 mov.w r3, #512 @ 0x200 + 8004f0e: 627b str r3, [r7, #36] @ 0x24 + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 8004f10: 2302 movs r3, #2 + 8004f12: 62bb str r3, [r7, #40] @ 0x28 + GPIO_InitStruct.Pull = GPIO_PULLUP; + 8004f14: 2301 movs r3, #1 + 8004f16: 62fb str r3, [r7, #44] @ 0x2c + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM; + 8004f18: 2301 movs r3, #1 + 8004f1a: 633b str r3, [r7, #48] @ 0x30 + GPIO_InitStruct.Alternate = GPIO_AF3_TIM11; + 8004f1c: 2303 movs r3, #3 + 8004f1e: 637b str r3, [r7, #52] @ 0x34 + HAL_GPIO_Init(RV_LV_SHOCK_GPIO_Port, &GPIO_InitStruct); + 8004f20: f107 0324 add.w r3, r7, #36 @ 0x24 + 8004f24: 4619 mov r1, r3 + 8004f26: 480a ldr r0, [pc, #40] @ (8004f50 ) + 8004f28: f002 fb32 bl 8007590 +} + 8004f2c: bf00 nop + 8004f2e: 3738 adds r7, #56 @ 0x38 + 8004f30: 46bd mov sp, r7 + 8004f32: bd80 pop {r7, pc} + 8004f34: 40010000 .word 0x40010000 + 8004f38: 40023800 .word 0x40023800 + 8004f3c: 40021000 .word 0x40021000 + 8004f40: 40020000 .word 0x40020000 + 8004f44: 40000400 .word 0x40000400 + 8004f48: 40020800 .word 0x40020800 + 8004f4c: 40000800 .word 0x40000800 + 8004f50: 40020400 .word 0x40020400 + 8004f54: 40014000 .word 0x40014000 + 8004f58: 40014800 .word 0x40014800 -08004d08 : +08004f5c : DMA_HandleTypeDef hdma_usart1_rx; /* USART1 init function */ void MX_USART1_UART_Init(void) { - 8004d08: b580 push {r7, lr} - 8004d0a: af00 add r7, sp, #0 + 8004f5c: b580 push {r7, lr} + 8004f5e: 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; - 8004d0c: 4b11 ldr r3, [pc, #68] @ (8004d54 ) - 8004d0e: 4a12 ldr r2, [pc, #72] @ (8004d58 ) - 8004d10: 601a str r2, [r3, #0] + 8004f60: 4b11 ldr r3, [pc, #68] @ (8004fa8 ) + 8004f62: 4a12 ldr r2, [pc, #72] @ (8004fac ) + 8004f64: 601a str r2, [r3, #0] huart1.Init.BaudRate = 115200; - 8004d12: 4b10 ldr r3, [pc, #64] @ (8004d54 ) - 8004d14: f44f 32e1 mov.w r2, #115200 @ 0x1c200 - 8004d18: 605a str r2, [r3, #4] + 8004f66: 4b10 ldr r3, [pc, #64] @ (8004fa8 ) + 8004f68: f44f 32e1 mov.w r2, #115200 @ 0x1c200 + 8004f6c: 605a str r2, [r3, #4] huart1.Init.WordLength = UART_WORDLENGTH_8B; - 8004d1a: 4b0e ldr r3, [pc, #56] @ (8004d54 ) - 8004d1c: 2200 movs r2, #0 - 8004d1e: 609a str r2, [r3, #8] + 8004f6e: 4b0e ldr r3, [pc, #56] @ (8004fa8 ) + 8004f70: 2200 movs r2, #0 + 8004f72: 609a str r2, [r3, #8] huart1.Init.StopBits = UART_STOPBITS_1; - 8004d20: 4b0c ldr r3, [pc, #48] @ (8004d54 ) - 8004d22: 2200 movs r2, #0 - 8004d24: 60da str r2, [r3, #12] + 8004f74: 4b0c ldr r3, [pc, #48] @ (8004fa8 ) + 8004f76: 2200 movs r2, #0 + 8004f78: 60da str r2, [r3, #12] huart1.Init.Parity = UART_PARITY_NONE; - 8004d26: 4b0b ldr r3, [pc, #44] @ (8004d54 ) - 8004d28: 2200 movs r2, #0 - 8004d2a: 611a str r2, [r3, #16] + 8004f7a: 4b0b ldr r3, [pc, #44] @ (8004fa8 ) + 8004f7c: 2200 movs r2, #0 + 8004f7e: 611a str r2, [r3, #16] huart1.Init.Mode = UART_MODE_TX_RX; - 8004d2c: 4b09 ldr r3, [pc, #36] @ (8004d54 ) - 8004d2e: 220c movs r2, #12 - 8004d30: 615a str r2, [r3, #20] + 8004f80: 4b09 ldr r3, [pc, #36] @ (8004fa8 ) + 8004f82: 220c movs r2, #12 + 8004f84: 615a str r2, [r3, #20] huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; - 8004d32: 4b08 ldr r3, [pc, #32] @ (8004d54 ) - 8004d34: 2200 movs r2, #0 - 8004d36: 619a str r2, [r3, #24] + 8004f86: 4b08 ldr r3, [pc, #32] @ (8004fa8 ) + 8004f88: 2200 movs r2, #0 + 8004f8a: 619a str r2, [r3, #24] huart1.Init.OverSampling = UART_OVERSAMPLING_16; - 8004d38: 4b06 ldr r3, [pc, #24] @ (8004d54 ) - 8004d3a: 2200 movs r2, #0 - 8004d3c: 61da str r2, [r3, #28] + 8004f8c: 4b06 ldr r3, [pc, #24] @ (8004fa8 ) + 8004f8e: 2200 movs r2, #0 + 8004f90: 61da str r2, [r3, #28] if (HAL_UART_Init(&huart1) != HAL_OK) - 8004d3e: 4805 ldr r0, [pc, #20] @ (8004d54 ) - 8004d40: f006 f8b0 bl 800aea4 - 8004d44: 4603 mov r3, r0 - 8004d46: 2b00 cmp r3, #0 - 8004d48: d001 beq.n 8004d4e + 8004f92: 4805 ldr r0, [pc, #20] @ (8004fa8 ) + 8004f94: f006 fa40 bl 800b418 + 8004f98: 4603 mov r3, r0 + 8004f9a: 2b00 cmp r3, #0 + 8004f9c: d001 beq.n 8004fa2 { Error_Handler(); - 8004d4a: f7fe fa0d bl 8003168 + 8004f9e: f7fe f93f bl 8003220 } /* USER CODE BEGIN USART1_Init 2 */ /* USER CODE END USART1_Init 2 */ } - 8004d4e: bf00 nop - 8004d50: bd80 pop {r7, pc} - 8004d52: bf00 nop - 8004d54: 200022a8 .word 0x200022a8 - 8004d58: 40011000 .word 0x40011000 + 8004fa2: bf00 nop + 8004fa4: bd80 pop {r7, pc} + 8004fa6: bf00 nop + 8004fa8: 200022f0 .word 0x200022f0 + 8004fac: 40011000 .word 0x40011000 -08004d5c : +08004fb0 : void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) { - 8004d5c: b580 push {r7, lr} - 8004d5e: b08a sub sp, #40 @ 0x28 - 8004d60: af00 add r7, sp, #0 - 8004d62: 6078 str r0, [r7, #4] + 8004fb0: b580 push {r7, lr} + 8004fb2: b08a sub sp, #40 @ 0x28 + 8004fb4: af00 add r7, sp, #0 + 8004fb6: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8004d64: f107 0314 add.w r3, r7, #20 - 8004d68: 2200 movs r2, #0 - 8004d6a: 601a str r2, [r3, #0] - 8004d6c: 605a str r2, [r3, #4] - 8004d6e: 609a str r2, [r3, #8] - 8004d70: 60da str r2, [r3, #12] - 8004d72: 611a str r2, [r3, #16] + 8004fb8: f107 0314 add.w r3, r7, #20 + 8004fbc: 2200 movs r2, #0 + 8004fbe: 601a str r2, [r3, #0] + 8004fc0: 605a str r2, [r3, #4] + 8004fc2: 609a str r2, [r3, #8] + 8004fc4: 60da str r2, [r3, #12] + 8004fc6: 611a str r2, [r3, #16] if(uartHandle->Instance==USART1) - 8004d74: 687b ldr r3, [r7, #4] - 8004d76: 681b ldr r3, [r3, #0] - 8004d78: 4a4c ldr r2, [pc, #304] @ (8004eac ) - 8004d7a: 4293 cmp r3, r2 - 8004d7c: f040 8091 bne.w 8004ea2 + 8004fc8: 687b ldr r3, [r7, #4] + 8004fca: 681b ldr r3, [r3, #0] + 8004fcc: 4a4c ldr r2, [pc, #304] @ (8005100 ) + 8004fce: 4293 cmp r3, r2 + 8004fd0: f040 8091 bne.w 80050f6 { /* USER CODE BEGIN USART1_MspInit 0 */ /* USER CODE END USART1_MspInit 0 */ /* USART1 clock enable */ __HAL_RCC_USART1_CLK_ENABLE(); - 8004d80: 2300 movs r3, #0 - 8004d82: 613b str r3, [r7, #16] - 8004d84: 4b4a ldr r3, [pc, #296] @ (8004eb0 ) - 8004d86: 6c5b ldr r3, [r3, #68] @ 0x44 - 8004d88: 4a49 ldr r2, [pc, #292] @ (8004eb0 ) - 8004d8a: f043 0310 orr.w r3, r3, #16 - 8004d8e: 6453 str r3, [r2, #68] @ 0x44 - 8004d90: 4b47 ldr r3, [pc, #284] @ (8004eb0 ) - 8004d92: 6c5b ldr r3, [r3, #68] @ 0x44 - 8004d94: f003 0310 and.w r3, r3, #16 - 8004d98: 613b str r3, [r7, #16] - 8004d9a: 693b ldr r3, [r7, #16] + 8004fd4: 2300 movs r3, #0 + 8004fd6: 613b str r3, [r7, #16] + 8004fd8: 4b4a ldr r3, [pc, #296] @ (8005104 ) + 8004fda: 6c5b ldr r3, [r3, #68] @ 0x44 + 8004fdc: 4a49 ldr r2, [pc, #292] @ (8005104 ) + 8004fde: f043 0310 orr.w r3, r3, #16 + 8004fe2: 6453 str r3, [r2, #68] @ 0x44 + 8004fe4: 4b47 ldr r3, [pc, #284] @ (8005104 ) + 8004fe6: 6c5b ldr r3, [r3, #68] @ 0x44 + 8004fe8: f003 0310 and.w r3, r3, #16 + 8004fec: 613b str r3, [r7, #16] + 8004fee: 693b ldr r3, [r7, #16] __HAL_RCC_GPIOA_CLK_ENABLE(); - 8004d9c: 2300 movs r3, #0 - 8004d9e: 60fb str r3, [r7, #12] - 8004da0: 4b43 ldr r3, [pc, #268] @ (8004eb0 ) - 8004da2: 6b1b ldr r3, [r3, #48] @ 0x30 - 8004da4: 4a42 ldr r2, [pc, #264] @ (8004eb0 ) - 8004da6: f043 0301 orr.w r3, r3, #1 - 8004daa: 6313 str r3, [r2, #48] @ 0x30 - 8004dac: 4b40 ldr r3, [pc, #256] @ (8004eb0 ) - 8004dae: 6b1b ldr r3, [r3, #48] @ 0x30 - 8004db0: f003 0301 and.w r3, r3, #1 - 8004db4: 60fb str r3, [r7, #12] - 8004db6: 68fb ldr r3, [r7, #12] + 8004ff0: 2300 movs r3, #0 + 8004ff2: 60fb str r3, [r7, #12] + 8004ff4: 4b43 ldr r3, [pc, #268] @ (8005104 ) + 8004ff6: 6b1b ldr r3, [r3, #48] @ 0x30 + 8004ff8: 4a42 ldr r2, [pc, #264] @ (8005104 ) + 8004ffa: f043 0301 orr.w r3, r3, #1 + 8004ffe: 6313 str r3, [r2, #48] @ 0x30 + 8005000: 4b40 ldr r3, [pc, #256] @ (8005104 ) + 8005002: 6b1b ldr r3, [r3, #48] @ 0x30 + 8005004: f003 0301 and.w r3, r3, #1 + 8005008: 60fb str r3, [r7, #12] + 800500a: 68fb ldr r3, [r7, #12] /**USART1 GPIO Configuration PA9 ------> USART1_TX PA10 ------> USART1_RX */ GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10; - 8004db8: f44f 63c0 mov.w r3, #1536 @ 0x600 - 8004dbc: 617b str r3, [r7, #20] + 800500c: f44f 63c0 mov.w r3, #1536 @ 0x600 + 8005010: 617b str r3, [r7, #20] GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8004dbe: 2302 movs r3, #2 - 8004dc0: 61bb str r3, [r7, #24] + 8005012: 2302 movs r3, #2 + 8005014: 61bb str r3, [r7, #24] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8004dc2: 2300 movs r3, #0 - 8004dc4: 61fb str r3, [r7, #28] + 8005016: 2300 movs r3, #0 + 8005018: 61fb str r3, [r7, #28] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 8004dc6: 2303 movs r3, #3 - 8004dc8: 623b str r3, [r7, #32] + 800501a: 2303 movs r3, #3 + 800501c: 623b str r3, [r7, #32] GPIO_InitStruct.Alternate = GPIO_AF7_USART1; - 8004dca: 2307 movs r3, #7 - 8004dcc: 627b str r3, [r7, #36] @ 0x24 + 800501e: 2307 movs r3, #7 + 8005020: 627b str r3, [r7, #36] @ 0x24 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 8004dce: f107 0314 add.w r3, r7, #20 - 8004dd2: 4619 mov r1, r3 - 8004dd4: 4837 ldr r0, [pc, #220] @ (8004eb4 ) - 8004dd6: f002 fab1 bl 800733c + 8005022: f107 0314 add.w r3, r7, #20 + 8005026: 4619 mov r1, r3 + 8005028: 4837 ldr r0, [pc, #220] @ (8005108 ) + 800502a: f002 fab1 bl 8007590 /* USART1 DMA Init */ /* USART1_TX Init */ hdma_usart1_tx.Instance = DMA2_Stream7; - 8004dda: 4b37 ldr r3, [pc, #220] @ (8004eb8 ) - 8004ddc: 4a37 ldr r2, [pc, #220] @ (8004ebc ) - 8004dde: 601a str r2, [r3, #0] + 800502e: 4b37 ldr r3, [pc, #220] @ (800510c ) + 8005030: 4a37 ldr r2, [pc, #220] @ (8005110 ) + 8005032: 601a str r2, [r3, #0] hdma_usart1_tx.Init.Channel = DMA_CHANNEL_4; - 8004de0: 4b35 ldr r3, [pc, #212] @ (8004eb8 ) - 8004de2: f04f 6200 mov.w r2, #134217728 @ 0x8000000 - 8004de6: 605a str r2, [r3, #4] + 8005034: 4b35 ldr r3, [pc, #212] @ (800510c ) + 8005036: f04f 6200 mov.w r2, #134217728 @ 0x8000000 + 800503a: 605a str r2, [r3, #4] hdma_usart1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; - 8004de8: 4b33 ldr r3, [pc, #204] @ (8004eb8 ) - 8004dea: 2240 movs r2, #64 @ 0x40 - 8004dec: 609a str r2, [r3, #8] + 800503c: 4b33 ldr r3, [pc, #204] @ (800510c ) + 800503e: 2240 movs r2, #64 @ 0x40 + 8005040: 609a str r2, [r3, #8] hdma_usart1_tx.Init.PeriphInc = DMA_PINC_DISABLE; - 8004dee: 4b32 ldr r3, [pc, #200] @ (8004eb8 ) - 8004df0: 2200 movs r2, #0 - 8004df2: 60da str r2, [r3, #12] + 8005042: 4b32 ldr r3, [pc, #200] @ (800510c ) + 8005044: 2200 movs r2, #0 + 8005046: 60da str r2, [r3, #12] hdma_usart1_tx.Init.MemInc = DMA_MINC_ENABLE; - 8004df4: 4b30 ldr r3, [pc, #192] @ (8004eb8 ) - 8004df6: f44f 6280 mov.w r2, #1024 @ 0x400 - 8004dfa: 611a str r2, [r3, #16] + 8005048: 4b30 ldr r3, [pc, #192] @ (800510c ) + 800504a: f44f 6280 mov.w r2, #1024 @ 0x400 + 800504e: 611a str r2, [r3, #16] hdma_usart1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; - 8004dfc: 4b2e ldr r3, [pc, #184] @ (8004eb8 ) - 8004dfe: 2200 movs r2, #0 - 8004e00: 615a str r2, [r3, #20] + 8005050: 4b2e ldr r3, [pc, #184] @ (800510c ) + 8005052: 2200 movs r2, #0 + 8005054: 615a str r2, [r3, #20] hdma_usart1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; - 8004e02: 4b2d ldr r3, [pc, #180] @ (8004eb8 ) - 8004e04: 2200 movs r2, #0 - 8004e06: 619a str r2, [r3, #24] + 8005056: 4b2d ldr r3, [pc, #180] @ (800510c ) + 8005058: 2200 movs r2, #0 + 800505a: 619a str r2, [r3, #24] hdma_usart1_tx.Init.Mode = DMA_NORMAL; - 8004e08: 4b2b ldr r3, [pc, #172] @ (8004eb8 ) - 8004e0a: 2200 movs r2, #0 - 8004e0c: 61da str r2, [r3, #28] + 800505c: 4b2b ldr r3, [pc, #172] @ (800510c ) + 800505e: 2200 movs r2, #0 + 8005060: 61da str r2, [r3, #28] hdma_usart1_tx.Init.Priority = DMA_PRIORITY_LOW; - 8004e0e: 4b2a ldr r3, [pc, #168] @ (8004eb8 ) - 8004e10: 2200 movs r2, #0 - 8004e12: 621a str r2, [r3, #32] + 8005062: 4b2a ldr r3, [pc, #168] @ (800510c ) + 8005064: 2200 movs r2, #0 + 8005066: 621a str r2, [r3, #32] hdma_usart1_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; - 8004e14: 4b28 ldr r3, [pc, #160] @ (8004eb8 ) - 8004e16: 2200 movs r2, #0 - 8004e18: 625a str r2, [r3, #36] @ 0x24 + 8005068: 4b28 ldr r3, [pc, #160] @ (800510c ) + 800506a: 2200 movs r2, #0 + 800506c: 625a str r2, [r3, #36] @ 0x24 if (HAL_DMA_Init(&hdma_usart1_tx) != HAL_OK) - 8004e1a: 4827 ldr r0, [pc, #156] @ (8004eb8 ) - 8004e1c: f001 fce8 bl 80067f0 - 8004e20: 4603 mov r3, r0 - 8004e22: 2b00 cmp r3, #0 - 8004e24: d001 beq.n 8004e2a + 800506e: 4827 ldr r0, [pc, #156] @ (800510c ) + 8005070: f001 fce8 bl 8006a44 + 8005074: 4603 mov r3, r0 + 8005076: 2b00 cmp r3, #0 + 8005078: d001 beq.n 800507e { Error_Handler(); - 8004e26: f7fe f99f bl 8003168 + 800507a: f7fe f8d1 bl 8003220 } __HAL_LINKDMA(uartHandle,hdmatx,hdma_usart1_tx); - 8004e2a: 687b ldr r3, [r7, #4] - 8004e2c: 4a22 ldr r2, [pc, #136] @ (8004eb8 ) - 8004e2e: 639a str r2, [r3, #56] @ 0x38 - 8004e30: 4a21 ldr r2, [pc, #132] @ (8004eb8 ) - 8004e32: 687b ldr r3, [r7, #4] - 8004e34: 6393 str r3, [r2, #56] @ 0x38 + 800507e: 687b ldr r3, [r7, #4] + 8005080: 4a22 ldr r2, [pc, #136] @ (800510c ) + 8005082: 639a str r2, [r3, #56] @ 0x38 + 8005084: 4a21 ldr r2, [pc, #132] @ (800510c ) + 8005086: 687b ldr r3, [r7, #4] + 8005088: 6393 str r3, [r2, #56] @ 0x38 /* USART1_RX Init */ hdma_usart1_rx.Instance = DMA2_Stream2; - 8004e36: 4b22 ldr r3, [pc, #136] @ (8004ec0 ) - 8004e38: 4a22 ldr r2, [pc, #136] @ (8004ec4 ) - 8004e3a: 601a str r2, [r3, #0] + 800508a: 4b22 ldr r3, [pc, #136] @ (8005114 ) + 800508c: 4a22 ldr r2, [pc, #136] @ (8005118 ) + 800508e: 601a str r2, [r3, #0] hdma_usart1_rx.Init.Channel = DMA_CHANNEL_4; - 8004e3c: 4b20 ldr r3, [pc, #128] @ (8004ec0 ) - 8004e3e: f04f 6200 mov.w r2, #134217728 @ 0x8000000 - 8004e42: 605a str r2, [r3, #4] + 8005090: 4b20 ldr r3, [pc, #128] @ (8005114 ) + 8005092: f04f 6200 mov.w r2, #134217728 @ 0x8000000 + 8005096: 605a str r2, [r3, #4] hdma_usart1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; - 8004e44: 4b1e ldr r3, [pc, #120] @ (8004ec0 ) - 8004e46: 2200 movs r2, #0 - 8004e48: 609a str r2, [r3, #8] + 8005098: 4b1e ldr r3, [pc, #120] @ (8005114 ) + 800509a: 2200 movs r2, #0 + 800509c: 609a str r2, [r3, #8] hdma_usart1_rx.Init.PeriphInc = DMA_PINC_DISABLE; - 8004e4a: 4b1d ldr r3, [pc, #116] @ (8004ec0 ) - 8004e4c: 2200 movs r2, #0 - 8004e4e: 60da str r2, [r3, #12] + 800509e: 4b1d ldr r3, [pc, #116] @ (8005114 ) + 80050a0: 2200 movs r2, #0 + 80050a2: 60da str r2, [r3, #12] hdma_usart1_rx.Init.MemInc = DMA_MINC_ENABLE; - 8004e50: 4b1b ldr r3, [pc, #108] @ (8004ec0 ) - 8004e52: f44f 6280 mov.w r2, #1024 @ 0x400 - 8004e56: 611a str r2, [r3, #16] + 80050a4: 4b1b ldr r3, [pc, #108] @ (8005114 ) + 80050a6: f44f 6280 mov.w r2, #1024 @ 0x400 + 80050aa: 611a str r2, [r3, #16] hdma_usart1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; - 8004e58: 4b19 ldr r3, [pc, #100] @ (8004ec0 ) - 8004e5a: 2200 movs r2, #0 - 8004e5c: 615a str r2, [r3, #20] + 80050ac: 4b19 ldr r3, [pc, #100] @ (8005114 ) + 80050ae: 2200 movs r2, #0 + 80050b0: 615a str r2, [r3, #20] hdma_usart1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; - 8004e5e: 4b18 ldr r3, [pc, #96] @ (8004ec0 ) - 8004e60: 2200 movs r2, #0 - 8004e62: 619a str r2, [r3, #24] + 80050b2: 4b18 ldr r3, [pc, #96] @ (8005114 ) + 80050b4: 2200 movs r2, #0 + 80050b6: 619a str r2, [r3, #24] hdma_usart1_rx.Init.Mode = DMA_NORMAL; - 8004e64: 4b16 ldr r3, [pc, #88] @ (8004ec0 ) - 8004e66: 2200 movs r2, #0 - 8004e68: 61da str r2, [r3, #28] + 80050b8: 4b16 ldr r3, [pc, #88] @ (8005114 ) + 80050ba: 2200 movs r2, #0 + 80050bc: 61da str r2, [r3, #28] hdma_usart1_rx.Init.Priority = DMA_PRIORITY_LOW; - 8004e6a: 4b15 ldr r3, [pc, #84] @ (8004ec0 ) - 8004e6c: 2200 movs r2, #0 - 8004e6e: 621a str r2, [r3, #32] + 80050be: 4b15 ldr r3, [pc, #84] @ (8005114 ) + 80050c0: 2200 movs r2, #0 + 80050c2: 621a str r2, [r3, #32] hdma_usart1_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; - 8004e70: 4b13 ldr r3, [pc, #76] @ (8004ec0 ) - 8004e72: 2200 movs r2, #0 - 8004e74: 625a str r2, [r3, #36] @ 0x24 + 80050c4: 4b13 ldr r3, [pc, #76] @ (8005114 ) + 80050c6: 2200 movs r2, #0 + 80050c8: 625a str r2, [r3, #36] @ 0x24 if (HAL_DMA_Init(&hdma_usart1_rx) != HAL_OK) - 8004e76: 4812 ldr r0, [pc, #72] @ (8004ec0 ) - 8004e78: f001 fcba bl 80067f0 - 8004e7c: 4603 mov r3, r0 - 8004e7e: 2b00 cmp r3, #0 - 8004e80: d001 beq.n 8004e86 + 80050ca: 4812 ldr r0, [pc, #72] @ (8005114 ) + 80050cc: f001 fcba bl 8006a44 + 80050d0: 4603 mov r3, r0 + 80050d2: 2b00 cmp r3, #0 + 80050d4: d001 beq.n 80050da { Error_Handler(); - 8004e82: f7fe f971 bl 8003168 + 80050d6: f7fe f8a3 bl 8003220 } __HAL_LINKDMA(uartHandle,hdmarx,hdma_usart1_rx); - 8004e86: 687b ldr r3, [r7, #4] - 8004e88: 4a0d ldr r2, [pc, #52] @ (8004ec0 ) - 8004e8a: 63da str r2, [r3, #60] @ 0x3c - 8004e8c: 4a0c ldr r2, [pc, #48] @ (8004ec0 ) - 8004e8e: 687b ldr r3, [r7, #4] - 8004e90: 6393 str r3, [r2, #56] @ 0x38 + 80050da: 687b ldr r3, [r7, #4] + 80050dc: 4a0d ldr r2, [pc, #52] @ (8005114 ) + 80050de: 63da str r2, [r3, #60] @ 0x3c + 80050e0: 4a0c ldr r2, [pc, #48] @ (8005114 ) + 80050e2: 687b ldr r3, [r7, #4] + 80050e4: 6393 str r3, [r2, #56] @ 0x38 /* USART1 interrupt Init */ HAL_NVIC_SetPriority(USART1_IRQn, 5, 0); - 8004e92: 2200 movs r2, #0 - 8004e94: 2105 movs r1, #5 - 8004e96: 2025 movs r0, #37 @ 0x25 - 8004e98: f001 fc66 bl 8006768 + 80050e6: 2200 movs r2, #0 + 80050e8: 2105 movs r1, #5 + 80050ea: 2025 movs r0, #37 @ 0x25 + 80050ec: f001 fc66 bl 80069bc HAL_NVIC_EnableIRQ(USART1_IRQn); - 8004e9c: 2025 movs r0, #37 @ 0x25 - 8004e9e: f001 fc8f bl 80067c0 + 80050f0: 2025 movs r0, #37 @ 0x25 + 80050f2: f001 fc8f bl 8006a14 /* USER CODE BEGIN USART1_MspInit 1 */ /* USER CODE END USART1_MspInit 1 */ } } - 8004ea2: bf00 nop - 8004ea4: 3728 adds r7, #40 @ 0x28 - 8004ea6: 46bd mov sp, r7 - 8004ea8: bd80 pop {r7, pc} - 8004eaa: bf00 nop - 8004eac: 40011000 .word 0x40011000 - 8004eb0: 40023800 .word 0x40023800 - 8004eb4: 40020000 .word 0x40020000 - 8004eb8: 200022f0 .word 0x200022f0 - 8004ebc: 400264b8 .word 0x400264b8 - 8004ec0: 20002350 .word 0x20002350 - 8004ec4: 40026440 .word 0x40026440 + 80050f6: bf00 nop + 80050f8: 3728 adds r7, #40 @ 0x28 + 80050fa: 46bd mov sp, r7 + 80050fc: bd80 pop {r7, pc} + 80050fe: bf00 nop + 8005100: 40011000 .word 0x40011000 + 8005104: 40023800 .word 0x40023800 + 8005108: 40020000 .word 0x40020000 + 800510c: 20002338 .word 0x20002338 + 8005110: 400264b8 .word 0x400264b8 + 8005114: 20002398 .word 0x20002398 + 8005118: 40026440 .word 0x40026440 -08004ec8 : +0800511c : } } /* USER CODE BEGIN 1 */ void print_usart(const char *pFormat, ...) { - 8004ec8: b40f push {r0, r1, r2, r3} - 8004eca: b580 push {r7, lr} - 8004ecc: b082 sub sp, #8 - 8004ece: af00 add r7, sp, #0 + 800511c: b40f push {r0, r1, r2, r3} + 800511e: b580 push {r7, lr} + 8005120: b082 sub sp, #8 + 8005122: af00 add r7, sp, #0 va_list ap; static char tbuff[256]; static HAL_StatusTypeDef res; // Forward call to vsprintf va_start(ap, pFormat); - 8004ed0: f107 0314 add.w r3, r7, #20 - 8004ed4: 607b str r3, [r7, #4] + 8005124: f107 0314 add.w r3, r7, #20 + 8005128: 607b str r3, [r7, #4] vsprintf(tbuff, pFormat, ap); - 8004ed6: 687a ldr r2, [r7, #4] - 8004ed8: 6939 ldr r1, [r7, #16] - 8004eda: 480c ldr r0, [pc, #48] @ (8004f0c ) - 8004edc: f008 fd60 bl 800d9a0 + 800512a: 687a ldr r2, [r7, #4] + 800512c: 6939 ldr r1, [r7, #16] + 800512e: 480c ldr r0, [pc, #48] @ (8005160 ) + 8005130: f008 feee bl 800df10 // HAL_UART_Transmit(&huart1, (unsigned char*)tbuff, strlen(tbuff), 10); res = HAL_UART_Transmit_DMA(&huart1, (unsigned char*)tbuff, strlen(tbuff)); - 8004ee0: 480a ldr r0, [pc, #40] @ (8004f0c ) - 8004ee2: f7fb f99d bl 8000220 - 8004ee6: 4603 mov r3, r0 - 8004ee8: b29b uxth r3, r3 - 8004eea: 461a mov r2, r3 - 8004eec: 4907 ldr r1, [pc, #28] @ (8004f0c ) - 8004eee: 4808 ldr r0, [pc, #32] @ (8004f10 ) - 8004ef0: f006 f8c8 bl 800b084 - 8004ef4: 4603 mov r3, r0 - 8004ef6: 461a mov r2, r3 - 8004ef8: 4b06 ldr r3, [pc, #24] @ (8004f14 ) - 8004efa: 701a strb r2, [r3, #0] + 8005134: 480a ldr r0, [pc, #40] @ (8005160 ) + 8005136: f7fb f873 bl 8000220 + 800513a: 4603 mov r3, r0 + 800513c: b29b uxth r3, r3 + 800513e: 461a mov r2, r3 + 8005140: 4907 ldr r1, [pc, #28] @ (8005160 ) + 8005142: 4808 ldr r0, [pc, #32] @ (8005164 ) + 8005144: f006 fa58 bl 800b5f8 + 8005148: 4603 mov r3, r0 + 800514a: 461a mov r2, r3 + 800514c: 4b06 ldr r3, [pc, #24] @ (8005168 ) + 800514e: 701a strb r2, [r3, #0] va_end(ap); } - 8004efc: bf00 nop - 8004efe: 3708 adds r7, #8 - 8004f00: 46bd mov sp, r7 - 8004f02: e8bd 4080 ldmia.w sp!, {r7, lr} - 8004f06: b004 add sp, #16 - 8004f08: 4770 bx lr - 8004f0a: bf00 nop - 8004f0c: 200023b0 .word 0x200023b0 - 8004f10: 200022a8 .word 0x200022a8 - 8004f14: 200024b0 .word 0x200024b0 + 8005150: bf00 nop + 8005152: 3708 adds r7, #8 + 8005154: 46bd mov sp, r7 + 8005156: e8bd 4080 ldmia.w sp!, {r7, lr} + 800515a: b004 add sp, #16 + 800515c: 4770 bx lr + 800515e: bf00 nop + 8005160: 200023f8 .word 0x200023f8 + 8005164: 200022f0 .word 0x200022f0 + 8005168: 200024f8 .word 0x200024f8 -08004f18 : +0800516c : void ble_control(ctrl_struct* control) { - 8004f18: b580 push {r7, lr} - 8004f1a: b082 sub sp, #8 - 8004f1c: af00 add r7, sp, #0 - 8004f1e: 6078 str r0, [r7, #4] + 800516c: b580 push {r7, lr} + 800516e: b082 sub sp, #8 + 8005170: af00 add r7, sp, #0 + 8005172: 6078 str r0, [r7, #4] if(control->ble_mode_now != control->ble_mode_set) - 8004f20: 687b ldr r3, [r7, #4] - 8004f22: 7eda ldrb r2, [r3, #27] - 8004f24: 687b ldr r3, [r7, #4] - 8004f26: 7e9b ldrb r3, [r3, #26] - 8004f28: 429a cmp r2, r3 - 8004f2a: f000 8087 beq.w 800503c + 8005174: 687b ldr r3, [r7, #4] + 8005176: 7eda ldrb r2, [r3, #27] + 8005178: 687b ldr r3, [r7, #4] + 800517a: 7e9b ldrb r3, [r3, #26] + 800517c: 429a cmp r2, r3 + 800517e: f000 8087 beq.w 8005290 { if(control->ble_mode_set == ble_off) - 8004f2e: 687b ldr r3, [r7, #4] - 8004f30: 7e9b ldrb r3, [r3, #26] - 8004f32: 2b00 cmp r3, #0 - 8004f34: d108 bne.n 8004f48 + 8005182: 687b ldr r3, [r7, #4] + 8005184: 7e9b ldrb r3, [r3, #26] + 8005186: 2b00 cmp r3, #0 + 8005188: d108 bne.n 800519c { HAL_GPIO_WritePin(BLE_PWR_GPIO_Port, BLE_PWR_Pin, SET); - 8004f36: 2201 movs r2, #1 - 8004f38: f44f 5180 mov.w r1, #4096 @ 0x1000 - 8004f3c: 4841 ldr r0, [pc, #260] @ (8005044 ) - 8004f3e: f002 fc61 bl 8007804 + 800518a: 2201 movs r2, #1 + 800518c: f44f 5180 mov.w r1, #4096 @ 0x1000 + 8005190: 4841 ldr r0, [pc, #260] @ (8005298 ) + 8005192: f002 fc61 bl 8007a58 control->ble_mode_now = ble_off; - 8004f42: 687b ldr r3, [r7, #4] - 8004f44: 2200 movs r2, #0 - 8004f46: 76da strb r2, [r3, #27] + 8005196: 687b ldr r3, [r7, #4] + 8005198: 2200 movs r2, #0 + 800519a: 76da strb r2, [r3, #27] } if(control->ble_mode_set == ble_raw) - 8004f48: 687b ldr r3, [r7, #4] - 8004f4a: 7e9b ldrb r3, [r3, #26] - 8004f4c: 2b01 cmp r3, #1 - 8004f4e: d124 bne.n 8004f9a + 800519c: 687b ldr r3, [r7, #4] + 800519e: 7e9b ldrb r3, [r3, #26] + 80051a0: 2b01 cmp r3, #1 + 80051a2: d124 bne.n 80051ee { HAL_GPIO_WritePin(BLE_PWR_GPIO_Port, BLE_PWR_Pin, SET); - 8004f50: 2201 movs r2, #1 - 8004f52: f44f 5180 mov.w r1, #4096 @ 0x1000 - 8004f56: 483b ldr r0, [pc, #236] @ (8005044 ) - 8004f58: f002 fc54 bl 8007804 + 80051a4: 2201 movs r2, #1 + 80051a6: f44f 5180 mov.w r1, #4096 @ 0x1000 + 80051aa: 483b ldr r0, [pc, #236] @ (8005298 ) + 80051ac: f002 fc54 bl 8007a58 HAL_GPIO_WritePin(BLE_PWRC_GPIO_Port, BLE_PWRC_Pin, RESET); - 8004f5c: 2200 movs r2, #0 - 8004f5e: f44f 6100 mov.w r1, #2048 @ 0x800 - 8004f62: 4838 ldr r0, [pc, #224] @ (8005044 ) - 8004f64: f002 fc4e bl 8007804 + 80051b0: 2200 movs r2, #0 + 80051b2: f44f 6100 mov.w r1, #2048 @ 0x800 + 80051b6: 4838 ldr r0, [pc, #224] @ (8005298 ) + 80051b8: f002 fc4e bl 8007a58 HAL_Delay(100); - 8004f68: 2064 movs r0, #100 @ 0x64 - 8004f6a: f000 fd7d bl 8005a68 + 80051bc: 2064 movs r0, #100 @ 0x64 + 80051be: f000 fd7d bl 8005cbc control->ble_mode_now = ble_off; - 8004f6e: 687b ldr r3, [r7, #4] - 8004f70: 2200 movs r2, #0 - 8004f72: 76da strb r2, [r3, #27] + 80051c2: 687b ldr r3, [r7, #4] + 80051c4: 2200 movs r2, #0 + 80051c6: 76da strb r2, [r3, #27] HAL_GPIO_WritePin(BLE_PWR_GPIO_Port, BLE_PWR_Pin, RESET); - 8004f74: 2200 movs r2, #0 - 8004f76: f44f 5180 mov.w r1, #4096 @ 0x1000 - 8004f7a: 4832 ldr r0, [pc, #200] @ (8005044 ) - 8004f7c: f002 fc42 bl 8007804 + 80051c8: 2200 movs r2, #0 + 80051ca: f44f 5180 mov.w r1, #4096 @ 0x1000 + 80051ce: 4832 ldr r0, [pc, #200] @ (8005298 ) + 80051d0: f002 fc42 bl 8007a58 HAL_Delay(2000); - 8004f80: f44f 60fa mov.w r0, #2000 @ 0x7d0 - 8004f84: f000 fd70 bl 8005a68 + 80051d4: f44f 60fa mov.w r0, #2000 @ 0x7d0 + 80051d8: f000 fd70 bl 8005cbc // HAL_Delay(200); // print_usart("AT+BAUD8\r\n");//slave // HAL_Delay(200); // print_usart("AT+RESET\r\n");//подтверждение настроек // HAL_Delay(1000); HAL_GPIO_WritePin(BLE_PWRC_GPIO_Port, BLE_PWRC_Pin, SET); - 8004f88: 2201 movs r2, #1 - 8004f8a: f44f 6100 mov.w r1, #2048 @ 0x800 - 8004f8e: 482d ldr r0, [pc, #180] @ (8005044 ) - 8004f90: f002 fc38 bl 8007804 + 80051dc: 2201 movs r2, #1 + 80051de: f44f 6100 mov.w r1, #2048 @ 0x800 + 80051e2: 482d ldr r0, [pc, #180] @ (8005298 ) + 80051e4: f002 fc38 bl 8007a58 control->ble_mode_now = ble_raw; - 8004f94: 687b ldr r3, [r7, #4] - 8004f96: 2201 movs r2, #1 - 8004f98: 76da strb r2, [r3, #27] + 80051e8: 687b ldr r3, [r7, #4] + 80051ea: 2201 movs r2, #1 + 80051ec: 76da strb r2, [r3, #27] } if(control->ble_mode_set == ble_mesh) - 8004f9a: 687b ldr r3, [r7, #4] - 8004f9c: 7e9b ldrb r3, [r3, #26] - 8004f9e: 2b02 cmp r3, #2 - 8004fa0: d14c bne.n 800503c + 80051ee: 687b ldr r3, [r7, #4] + 80051f0: 7e9b ldrb r3, [r3, #26] + 80051f2: 2b02 cmp r3, #2 + 80051f4: d14c bne.n 8005290 { HAL_GPIO_WritePin(BLE_PWR_GPIO_Port, BLE_PWR_Pin, SET); - 8004fa2: 2201 movs r2, #1 - 8004fa4: f44f 5180 mov.w r1, #4096 @ 0x1000 - 8004fa8: 4826 ldr r0, [pc, #152] @ (8005044 ) - 8004faa: f002 fc2b bl 8007804 + 80051f6: 2201 movs r2, #1 + 80051f8: f44f 5180 mov.w r1, #4096 @ 0x1000 + 80051fc: 4826 ldr r0, [pc, #152] @ (8005298 ) + 80051fe: f002 fc2b bl 8007a58 HAL_GPIO_WritePin(BLE_PWRC_GPIO_Port, BLE_PWRC_Pin, RESET); - 8004fae: 2200 movs r2, #0 - 8004fb0: f44f 6100 mov.w r1, #2048 @ 0x800 - 8004fb4: 4823 ldr r0, [pc, #140] @ (8005044 ) - 8004fb6: f002 fc25 bl 8007804 + 8005202: 2200 movs r2, #0 + 8005204: f44f 6100 mov.w r1, #2048 @ 0x800 + 8005208: 4823 ldr r0, [pc, #140] @ (8005298 ) + 800520a: f002 fc25 bl 8007a58 HAL_Delay(100); - 8004fba: 2064 movs r0, #100 @ 0x64 - 8004fbc: f000 fd54 bl 8005a68 + 800520e: 2064 movs r0, #100 @ 0x64 + 8005210: f000 fd54 bl 8005cbc control->ble_mode_now = ble_off; - 8004fc0: 687b ldr r3, [r7, #4] - 8004fc2: 2200 movs r2, #0 - 8004fc4: 76da strb r2, [r3, #27] + 8005214: 687b ldr r3, [r7, #4] + 8005216: 2200 movs r2, #0 + 8005218: 76da strb r2, [r3, #27] HAL_GPIO_WritePin(BLE_PWR_GPIO_Port, BLE_PWR_Pin, RESET); - 8004fc6: 2200 movs r2, #0 - 8004fc8: f44f 5180 mov.w r1, #4096 @ 0x1000 - 8004fcc: 481d ldr r0, [pc, #116] @ (8005044 ) - 8004fce: f002 fc19 bl 8007804 + 800521a: 2200 movs r2, #0 + 800521c: f44f 5180 mov.w r1, #4096 @ 0x1000 + 8005220: 481d ldr r0, [pc, #116] @ (8005298 ) + 8005222: f002 fc19 bl 8007a58 HAL_Delay(2000); - 8004fd2: f44f 60fa mov.w r0, #2000 @ 0x7d0 - 8004fd6: f000 fd47 bl 8005a68 + 8005226: f44f 60fa mov.w r0, #2000 @ 0x7d0 + 800522a: f000 fd47 bl 8005cbc print_usart("AT+ROLE5\r\n");//в режиме MESH 4мА - 8004fda: 481b ldr r0, [pc, #108] @ (8005048 ) - 8004fdc: f7ff ff74 bl 8004ec8 + 800522e: 481b ldr r0, [pc, #108] @ (800529c ) + 8005230: f7ff ff74 bl 800511c HAL_Delay(100); - 8004fe0: 2064 movs r0, #100 @ 0x64 - 8004fe2: f000 fd41 bl 8005a68 + 8005234: 2064 movs r0, #100 @ 0x64 + 8005236: f000 fd41 bl 8005cbc print_usart("AT+MADDR%04x\r\n",control->serial_number);//адрес в сети должен быть разным у всех устройств сети - 8004fe6: 687b ldr r3, [r7, #4] - 8004fe8: 6a1b ldr r3, [r3, #32] - 8004fea: 4619 mov r1, r3 - 8004fec: 4817 ldr r0, [pc, #92] @ (800504c ) - 8004fee: f7ff ff6b bl 8004ec8 + 800523a: 687b ldr r3, [r7, #4] + 800523c: 6a1b ldr r3, [r3, #32] + 800523e: 4619 mov r1, r3 + 8005240: 4817 ldr r0, [pc, #92] @ (80052a0 ) + 8005242: f7ff ff6b bl 800511c HAL_Delay(100); - 8004ff2: 2064 movs r0, #100 @ 0x64 - 8004ff4: f000 fd38 bl 8005a68 + 8005246: 2064 movs r0, #100 @ 0x64 + 8005248: f000 fd38 bl 8005cbc print_usart("AT+NETID%04x\r\n",control->mesh_netid);//номер сети должен быть одним у всех устройсв сети - 8004ff8: 687b ldr r3, [r7, #4] - 8004ffa: 6a9b ldr r3, [r3, #40] @ 0x28 - 8004ffc: 4619 mov r1, r3 - 8004ffe: 4814 ldr r0, [pc, #80] @ (8005050 ) - 8005000: f7ff ff62 bl 8004ec8 + 800524c: 687b ldr r3, [r7, #4] + 800524e: 6a9b ldr r3, [r3, #40] @ 0x28 + 8005250: 4619 mov r1, r3 + 8005252: 4814 ldr r0, [pc, #80] @ (80052a4 ) + 8005254: f7ff ff62 bl 800511c HAL_Delay(100); - 8005004: 2064 movs r0, #100 @ 0x64 - 8005006: f000 fd2f bl 8005a68 + 8005258: 2064 movs r0, #100 @ 0x64 + 800525a: f000 fd2f bl 8005cbc print_usart("AT+NAMEECG_MESH_%04x\r\n",control->serial_number);//set name - 800500a: 687b ldr r3, [r7, #4] - 800500c: 6a1b ldr r3, [r3, #32] - 800500e: 4619 mov r1, r3 - 8005010: 4810 ldr r0, [pc, #64] @ (8005054 ) - 8005012: f7ff ff59 bl 8004ec8 + 800525e: 687b ldr r3, [r7, #4] + 8005260: 6a1b ldr r3, [r3, #32] + 8005262: 4619 mov r1, r3 + 8005264: 4810 ldr r0, [pc, #64] @ (80052a8 ) + 8005266: f7ff ff59 bl 800511c HAL_Delay(100); - 8005016: 2064 movs r0, #100 @ 0x64 - 8005018: f000 fd26 bl 8005a68 + 800526a: 2064 movs r0, #100 @ 0x64 + 800526c: f000 fd26 bl 8005cbc print_usart("AT+RESET\r\n");//подтверждение настроек - 800501c: 480e ldr r0, [pc, #56] @ (8005058 ) - 800501e: f7ff ff53 bl 8004ec8 + 8005270: 480e ldr r0, [pc, #56] @ (80052ac ) + 8005272: f7ff ff53 bl 800511c HAL_Delay(1000); - 8005022: f44f 707a mov.w r0, #1000 @ 0x3e8 - 8005026: f000 fd1f bl 8005a68 + 8005276: f44f 707a mov.w r0, #1000 @ 0x3e8 + 800527a: f000 fd1f bl 8005cbc HAL_GPIO_WritePin(BLE_PWRC_GPIO_Port, BLE_PWRC_Pin, SET); - 800502a: 2201 movs r2, #1 - 800502c: f44f 6100 mov.w r1, #2048 @ 0x800 - 8005030: 4804 ldr r0, [pc, #16] @ (8005044 ) - 8005032: f002 fbe7 bl 8007804 + 800527e: 2201 movs r2, #1 + 8005280: f44f 6100 mov.w r1, #2048 @ 0x800 + 8005284: 4804 ldr r0, [pc, #16] @ (8005298 ) + 8005286: f002 fbe7 bl 8007a58 control->ble_mode_now = ble_mesh; - 8005036: 687b ldr r3, [r7, #4] - 8005038: 2202 movs r2, #2 - 800503a: 76da strb r2, [r3, #27] + 800528a: 687b ldr r3, [r7, #4] + 800528c: 2202 movs r2, #2 + 800528e: 76da strb r2, [r3, #27] } } } - 800503c: bf00 nop - 800503e: 3708 adds r7, #8 - 8005040: 46bd mov sp, r7 - 8005042: bd80 pop {r7, pc} - 8005044: 40020000 .word 0x40020000 - 8005048: 0800e6ec .word 0x0800e6ec - 800504c: 0800e6f8 .word 0x0800e6f8 - 8005050: 0800e708 .word 0x0800e708 - 8005054: 0800e718 .word 0x0800e718 - 8005058: 0800e730 .word 0x0800e730 + 8005290: bf00 nop + 8005292: 3708 adds r7, #8 + 8005294: 46bd mov sp, r7 + 8005296: bd80 pop {r7, pc} + 8005298: 40020000 .word 0x40020000 + 800529c: 0800ec5c .word 0x0800ec5c + 80052a0: 0800ec68 .word 0x0800ec68 + 80052a4: 0800ec78 .word 0x0800ec78 + 80052a8: 0800ec88 .word 0x0800ec88 + 80052ac: 0800eca0 .word 0x0800eca0 -0800505c : +080052b0 : HAL_GPIO_WritePin(BLE_PWR_GPIO_Port, BLE_PWR_Pin, SET); } void float2Bytes(float float_variable,uint8_t bytes_temp[4]) { - 800505c: b480 push {r7} - 800505e: b083 sub sp, #12 - 8005060: af00 add r7, sp, #0 - 8005062: ed87 0a01 vstr s0, [r7, #4] - 8005066: 6038 str r0, [r7, #0] + 80052b0: b480 push {r7} + 80052b2: b083 sub sp, #12 + 80052b4: af00 add r7, sp, #0 + 80052b6: ed87 0a01 vstr s0, [r7, #4] + 80052ba: 6038 str r0, [r7, #0] memcpy(bytes_temp, (unsigned char*) (&float_variable), 4); - 8005068: 687a ldr r2, [r7, #4] - 800506a: 683b ldr r3, [r7, #0] - 800506c: 601a str r2, [r3, #0] + 80052bc: 687a ldr r2, [r7, #4] + 80052be: 683b ldr r3, [r7, #0] + 80052c0: 601a str r2, [r3, #0] } - 800506e: bf00 nop - 8005070: 370c adds r7, #12 - 8005072: 46bd mov sp, r7 - 8005074: f85d 7b04 ldr.w r7, [sp], #4 - 8005078: 4770 bx lr + 80052c2: bf00 nop + 80052c4: 370c adds r7, #12 + 80052c6: 46bd mov sp, r7 + 80052c8: f85d 7b04 ldr.w r7, [sp], #4 + 80052cc: 4770 bx lr ... -0800507c : +080052d0 : void ble_HEX_new(ctrl_struct *control, icd_str *icd_str, adc_struct *adc, bool send) { - 800507c: b580 push {r7, lr} - 800507e: b084 sub sp, #16 - 8005080: af00 add r7, sp, #0 - 8005082: 60f8 str r0, [r7, #12] - 8005084: 60b9 str r1, [r7, #8] - 8005086: 607a str r2, [r7, #4] - 8005088: 70fb strb r3, [r7, #3] + 80052d0: b580 push {r7, lr} + 80052d2: b084 sub sp, #16 + 80052d4: af00 add r7, sp, #0 + 80052d6: 60f8 str r0, [r7, #12] + 80052d8: 60b9 str r1, [r7, #8] + 80052da: 607a str r2, [r7, #4] + 80052dc: 70fb strb r3, [r7, #3] TX_BUF[0] = 0x55; //стартовый байт - 800508a: 4b88 ldr r3, [pc, #544] @ (80052ac ) - 800508c: 2255 movs r2, #85 @ 0x55 - 800508e: 701a strb r2, [r3, #0] + 80052de: 4b88 ldr r3, [pc, #544] @ (8005500 ) + 80052e0: 2255 movs r2, #85 @ 0x55 + 80052e2: 701a strb r2, [r3, #0] static uint8_t bytes[4]; TX_BUF[1] = (icd_str->counter >> 24) & 0xFF; - 8005090: 68bb ldr r3, [r7, #8] - 8005092: 6edb ldr r3, [r3, #108] @ 0x6c - 8005094: 0e1b lsrs r3, r3, #24 - 8005096: b2da uxtb r2, r3 - 8005098: 4b84 ldr r3, [pc, #528] @ (80052ac ) - 800509a: 705a strb r2, [r3, #1] + 80052e4: 68bb ldr r3, [r7, #8] + 80052e6: 6edb ldr r3, [r3, #108] @ 0x6c + 80052e8: 0e1b lsrs r3, r3, #24 + 80052ea: b2da uxtb r2, r3 + 80052ec: 4b84 ldr r3, [pc, #528] @ (8005500 ) + 80052ee: 705a strb r2, [r3, #1] TX_BUF[2] = (icd_str->counter >> 16) & 0xFF; - 800509c: 68bb ldr r3, [r7, #8] - 800509e: 6edb ldr r3, [r3, #108] @ 0x6c - 80050a0: 141b asrs r3, r3, #16 - 80050a2: b2da uxtb r2, r3 - 80050a4: 4b81 ldr r3, [pc, #516] @ (80052ac ) - 80050a6: 709a strb r2, [r3, #2] + 80052f0: 68bb ldr r3, [r7, #8] + 80052f2: 6edb ldr r3, [r3, #108] @ 0x6c + 80052f4: 141b asrs r3, r3, #16 + 80052f6: b2da uxtb r2, r3 + 80052f8: 4b81 ldr r3, [pc, #516] @ (8005500 ) + 80052fa: 709a strb r2, [r3, #2] TX_BUF[3] = (icd_str->counter >> 8) & 0xFF; - 80050a8: 68bb ldr r3, [r7, #8] - 80050aa: 6edb ldr r3, [r3, #108] @ 0x6c - 80050ac: 121b asrs r3, r3, #8 - 80050ae: b2da uxtb r2, r3 - 80050b0: 4b7e ldr r3, [pc, #504] @ (80052ac ) - 80050b2: 70da strb r2, [r3, #3] + 80052fc: 68bb ldr r3, [r7, #8] + 80052fe: 6edb ldr r3, [r3, #108] @ 0x6c + 8005300: 121b asrs r3, r3, #8 + 8005302: b2da uxtb r2, r3 + 8005304: 4b7e ldr r3, [pc, #504] @ (8005500 ) + 8005306: 70da strb r2, [r3, #3] TX_BUF[4] = (icd_str->counter & 0xFF); - 80050b4: 68bb ldr r3, [r7, #8] - 80050b6: 6edb ldr r3, [r3, #108] @ 0x6c - 80050b8: b2da uxtb r2, r3 - 80050ba: 4b7c ldr r3, [pc, #496] @ (80052ac ) - 80050bc: 711a strb r2, [r3, #4] + 8005308: 68bb ldr r3, [r7, #8] + 800530a: 6edb ldr r3, [r3, #108] @ 0x6c + 800530c: b2da uxtb r2, r3 + 800530e: 4b7c ldr r3, [pc, #496] @ (8005500 ) + 8005310: 711a strb r2, [r3, #4] float2Bytes(icd_str->ecg_rv_din_treshold, &bytes[0]); //fixme временно - 80050be: 68bb ldr r3, [r7, #8] - 80050c0: edd3 7a1f vldr s15, [r3, #124] @ 0x7c - 80050c4: 487a ldr r0, [pc, #488] @ (80052b0 ) - 80050c6: eeb0 0a67 vmov.f32 s0, s15 - 80050ca: f7ff ffc7 bl 800505c + 8005312: 68bb ldr r3, [r7, #8] + 8005314: edd3 7a1f vldr s15, [r3, #124] @ 0x7c + 8005318: 487a ldr r0, [pc, #488] @ (8005504 ) + 800531a: eeb0 0a67 vmov.f32 s0, s15 + 800531e: f7ff ffc7 bl 80052b0 TX_BUF[5] = bytes[0]; - 80050ce: 4b78 ldr r3, [pc, #480] @ (80052b0 ) - 80050d0: 781a ldrb r2, [r3, #0] - 80050d2: 4b76 ldr r3, [pc, #472] @ (80052ac ) - 80050d4: 715a strb r2, [r3, #5] + 8005322: 4b78 ldr r3, [pc, #480] @ (8005504 ) + 8005324: 781a ldrb r2, [r3, #0] + 8005326: 4b76 ldr r3, [pc, #472] @ (8005500 ) + 8005328: 715a strb r2, [r3, #5] TX_BUF[6] = bytes[1]; - 80050d6: 4b76 ldr r3, [pc, #472] @ (80052b0 ) - 80050d8: 785a ldrb r2, [r3, #1] - 80050da: 4b74 ldr r3, [pc, #464] @ (80052ac ) - 80050dc: 719a strb r2, [r3, #6] + 800532a: 4b76 ldr r3, [pc, #472] @ (8005504 ) + 800532c: 785a ldrb r2, [r3, #1] + 800532e: 4b74 ldr r3, [pc, #464] @ (8005500 ) + 8005330: 719a strb r2, [r3, #6] TX_BUF[7] = bytes[2]; - 80050de: 4b74 ldr r3, [pc, #464] @ (80052b0 ) - 80050e0: 789a ldrb r2, [r3, #2] - 80050e2: 4b72 ldr r3, [pc, #456] @ (80052ac ) - 80050e4: 71da strb r2, [r3, #7] + 8005332: 4b74 ldr r3, [pc, #464] @ (8005504 ) + 8005334: 789a ldrb r2, [r3, #2] + 8005336: 4b72 ldr r3, [pc, #456] @ (8005500 ) + 8005338: 71da strb r2, [r3, #7] TX_BUF[8] = bytes[3]; - 80050e6: 4b72 ldr r3, [pc, #456] @ (80052b0 ) - 80050e8: 78da ldrb r2, [r3, #3] - 80050ea: 4b70 ldr r3, [pc, #448] @ (80052ac ) - 80050ec: 721a strb r2, [r3, #8] + 800533a: 4b72 ldr r3, [pc, #456] @ (8005504 ) + 800533c: 78da ldrb r2, [r3, #3] + 800533e: 4b70 ldr r3, [pc, #448] @ (8005500 ) + 8005340: 721a strb r2, [r3, #8] float2Bytes(icd_str->ecg_rv_pos_sig, &bytes[0]); - 80050ee: 68bb ldr r3, [r7, #8] - 80050f0: edd3 7a1e vldr s15, [r3, #120] @ 0x78 - 80050f4: 486e ldr r0, [pc, #440] @ (80052b0 ) - 80050f6: eeb0 0a67 vmov.f32 s0, s15 - 80050fa: f7ff ffaf bl 800505c + 8005342: 68bb ldr r3, [r7, #8] + 8005344: edd3 7a1e vldr s15, [r3, #120] @ 0x78 + 8005348: 486e ldr r0, [pc, #440] @ (8005504 ) + 800534a: eeb0 0a67 vmov.f32 s0, s15 + 800534e: f7ff ffaf bl 80052b0 TX_BUF[9] = bytes[0]; - 80050fe: 4b6c ldr r3, [pc, #432] @ (80052b0 ) - 8005100: 781a ldrb r2, [r3, #0] - 8005102: 4b6a ldr r3, [pc, #424] @ (80052ac ) - 8005104: 725a strb r2, [r3, #9] + 8005352: 4b6c ldr r3, [pc, #432] @ (8005504 ) + 8005354: 781a ldrb r2, [r3, #0] + 8005356: 4b6a ldr r3, [pc, #424] @ (8005500 ) + 8005358: 725a strb r2, [r3, #9] TX_BUF[10] = bytes[1]; - 8005106: 4b6a ldr r3, [pc, #424] @ (80052b0 ) - 8005108: 785a ldrb r2, [r3, #1] - 800510a: 4b68 ldr r3, [pc, #416] @ (80052ac ) - 800510c: 729a strb r2, [r3, #10] + 800535a: 4b6a ldr r3, [pc, #424] @ (8005504 ) + 800535c: 785a ldrb r2, [r3, #1] + 800535e: 4b68 ldr r3, [pc, #416] @ (8005500 ) + 8005360: 729a strb r2, [r3, #10] TX_BUF[11] = bytes[2]; - 800510e: 4b68 ldr r3, [pc, #416] @ (80052b0 ) - 8005110: 789a ldrb r2, [r3, #2] - 8005112: 4b66 ldr r3, [pc, #408] @ (80052ac ) - 8005114: 72da strb r2, [r3, #11] + 8005362: 4b68 ldr r3, [pc, #416] @ (8005504 ) + 8005364: 789a ldrb r2, [r3, #2] + 8005366: 4b66 ldr r3, [pc, #408] @ (8005500 ) + 8005368: 72da strb r2, [r3, #11] TX_BUF[12] = bytes[3]; - 8005116: 4b66 ldr r3, [pc, #408] @ (80052b0 ) - 8005118: 78da ldrb r2, [r3, #3] - 800511a: 4b64 ldr r3, [pc, #400] @ (80052ac ) - 800511c: 731a strb r2, [r3, #12] + 800536a: 4b66 ldr r3, [pc, #408] @ (8005504 ) + 800536c: 78da ldrb r2, [r3, #3] + 800536e: 4b64 ldr r3, [pc, #400] @ (8005500 ) + 8005370: 731a strb r2, [r3, #12] if (icd_str->dc_cut) - 800511e: 68bb ldr r3, [r7, #8] - 8005120: 79db ldrb r3, [r3, #7] - 8005122: 2b00 cmp r3, #0 - 8005124: d00d beq.n 8005142 + 8005372: 68bb ldr r3, [r7, #8] + 8005374: 79db ldrb r3, [r3, #7] + 8005376: 2b00 cmp r3, #0 + 8005378: d00d beq.n 8005396 float2Bytes((icd_str->ecg_rv_filt - icd_str->ecg_rv_mov_av), &bytes[0]); - 8005126: 68bb ldr r3, [r7, #8] - 8005128: ed93 7a1c vldr s14, [r3, #112] @ 0x70 - 800512c: 68bb ldr r3, [r7, #8] - 800512e: edd3 7a1d vldr s15, [r3, #116] @ 0x74 - 8005132: ee77 7a67 vsub.f32 s15, s14, s15 - 8005136: 485e ldr r0, [pc, #376] @ (80052b0 ) - 8005138: eeb0 0a67 vmov.f32 s0, s15 - 800513c: f7ff ff8e bl 800505c - 8005140: e007 b.n 8005152 + 800537a: 68bb ldr r3, [r7, #8] + 800537c: ed93 7a1c vldr s14, [r3, #112] @ 0x70 + 8005380: 68bb ldr r3, [r7, #8] + 8005382: edd3 7a1d vldr s15, [r3, #116] @ 0x74 + 8005386: ee77 7a67 vsub.f32 s15, s14, s15 + 800538a: 485e ldr r0, [pc, #376] @ (8005504 ) + 800538c: eeb0 0a67 vmov.f32 s0, s15 + 8005390: f7ff ff8e bl 80052b0 + 8005394: e007 b.n 80053a6 else float2Bytes((icd_str->ecg_rv_filt), &bytes[0]); - 8005142: 68bb ldr r3, [r7, #8] - 8005144: edd3 7a1c vldr s15, [r3, #112] @ 0x70 - 8005148: 4859 ldr r0, [pc, #356] @ (80052b0 ) - 800514a: eeb0 0a67 vmov.f32 s0, s15 - 800514e: f7ff ff85 bl 800505c + 8005396: 68bb ldr r3, [r7, #8] + 8005398: edd3 7a1c vldr s15, [r3, #112] @ 0x70 + 800539c: 4859 ldr r0, [pc, #356] @ (8005504 ) + 800539e: eeb0 0a67 vmov.f32 s0, s15 + 80053a2: f7ff ff85 bl 80052b0 TX_BUF[13] = bytes[0]; - 8005152: 4b57 ldr r3, [pc, #348] @ (80052b0 ) - 8005154: 781a ldrb r2, [r3, #0] - 8005156: 4b55 ldr r3, [pc, #340] @ (80052ac ) - 8005158: 735a strb r2, [r3, #13] + 80053a6: 4b57 ldr r3, [pc, #348] @ (8005504 ) + 80053a8: 781a ldrb r2, [r3, #0] + 80053aa: 4b55 ldr r3, [pc, #340] @ (8005500 ) + 80053ac: 735a strb r2, [r3, #13] TX_BUF[14] = bytes[1]; - 800515a: 4b55 ldr r3, [pc, #340] @ (80052b0 ) - 800515c: 785a ldrb r2, [r3, #1] - 800515e: 4b53 ldr r3, [pc, #332] @ (80052ac ) - 8005160: 739a strb r2, [r3, #14] + 80053ae: 4b55 ldr r3, [pc, #340] @ (8005504 ) + 80053b0: 785a ldrb r2, [r3, #1] + 80053b2: 4b53 ldr r3, [pc, #332] @ (8005500 ) + 80053b4: 739a strb r2, [r3, #14] TX_BUF[15] = bytes[2]; - 8005162: 4b53 ldr r3, [pc, #332] @ (80052b0 ) - 8005164: 789a ldrb r2, [r3, #2] - 8005166: 4b51 ldr r3, [pc, #324] @ (80052ac ) - 8005168: 73da strb r2, [r3, #15] + 80053b6: 4b53 ldr r3, [pc, #332] @ (8005504 ) + 80053b8: 789a ldrb r2, [r3, #2] + 80053ba: 4b51 ldr r3, [pc, #324] @ (8005500 ) + 80053bc: 73da strb r2, [r3, #15] TX_BUF[16] = bytes[3]; - 800516a: 4b51 ldr r3, [pc, #324] @ (80052b0 ) - 800516c: 78da ldrb r2, [r3, #3] - 800516e: 4b4f ldr r3, [pc, #316] @ (80052ac ) - 8005170: 741a strb r2, [r3, #16] + 80053be: 4b51 ldr r3, [pc, #324] @ (8005504 ) + 80053c0: 78da ldrb r2, [r3, #3] + 80053c2: 4b4f ldr r3, [pc, #316] @ (8005500 ) + 80053c4: 741a strb r2, [r3, #16] TX_BUF[17] = ((icd_str->last_RR_poz_rel * 5) >> 8) & 0xFF; - 8005172: 68bb ldr r3, [r7, #8] - 8005174: f9b3 3058 ldrsh.w r3, [r3, #88] @ 0x58 - 8005178: 461a mov r2, r3 - 800517a: 4613 mov r3, r2 - 800517c: 009b lsls r3, r3, #2 - 800517e: 4413 add r3, r2 - 8005180: 121b asrs r3, r3, #8 - 8005182: b2da uxtb r2, r3 - 8005184: 4b49 ldr r3, [pc, #292] @ (80052ac ) - 8005186: 745a strb r2, [r3, #17] - TX_BUF[18] = ((icd_str->last_RR_poz_rel * 5) & 0xFF); - 8005188: 68bb ldr r3, [r7, #8] - 800518a: f9b3 3058 ldrsh.w r3, [r3, #88] @ 0x58 - 800518e: b2db uxtb r3, r3 - 8005190: 461a mov r2, r3 - 8005192: 0092 lsls r2, r2, #2 - 8005194: 4413 add r3, r2 - 8005196: b2da uxtb r2, r3 - 8005198: 4b44 ldr r3, [pc, #272] @ (80052ac ) - 800519a: 749a strb r2, [r3, #18] - - TX_BUF[19] = (((uint8_t) icd_str->search_now_mode & 0x7) << 5) | (((uint8_t) icd_str->sub_mode & 0x7) << 2) - 800519c: 68bb ldr r3, [r7, #8] - 800519e: 78db ldrb r3, [r3, #3] - 80051a0: 015b lsls r3, r3, #5 - 80051a2: b25a sxtb r2, r3 - 80051a4: 68bb ldr r3, [r7, #8] - 80051a6: f893 309b ldrb.w r3, [r3, #155] @ 0x9b - 80051aa: 009b lsls r3, r3, #2 - 80051ac: b25b sxtb r3, r3 - 80051ae: f003 031c and.w r3, r3, #28 - 80051b2: b25b sxtb r3, r3 - 80051b4: 4313 orrs r3, r2 - 80051b6: b25a sxtb r2, r3 - | (((uint8_t) icd_str->terapy_now & 0x3) << 0); - 80051b8: 68bb ldr r3, [r7, #8] - 80051ba: f893 309a ldrb.w r3, [r3, #154] @ 0x9a - 80051be: b25b sxtb r3, r3 - 80051c0: f003 0303 and.w r3, r3, #3 - 80051c4: b25b sxtb r3, r3 - 80051c6: 4313 orrs r3, r2 - 80051c8: b25b sxtb r3, r3 - 80051ca: b2da uxtb r2, r3 - TX_BUF[19] = (((uint8_t) icd_str->search_now_mode & 0x7) << 5) | (((uint8_t) icd_str->sub_mode & 0x7) << 2) - 80051cc: 4b37 ldr r3, [pc, #220] @ (80052ac ) - 80051ce: 74da strb r2, [r3, #19] - - TX_BUF[20] = (((uint8_t) icd_str->filter_on & 0x1) << 7) | (((uint8_t) icd_str->work_set_mode & 0x3) << 5) - 80051d0: 68bb ldr r3, [r7, #8] - 80051d2: 791b ldrb r3, [r3, #4] - 80051d4: 01db lsls r3, r3, #7 - 80051d6: b25a sxtb r2, r3 - 80051d8: 68bb ldr r3, [r7, #8] - 80051da: 781b ldrb r3, [r3, #0] - 80051dc: 015b lsls r3, r3, #5 - 80051de: b25b sxtb r3, r3 - 80051e0: f003 0360 and.w r3, r3, #96 @ 0x60 - 80051e4: b25b sxtb r3, r3 - 80051e6: 4313 orrs r3, r2 - 80051e8: b25a sxtb r2, r3 - | (((uint8_t) icd_str->LV_on & 0x1) << 4) | (((uint8_t) icd_str->HV_on & 0x1) << 3) - 80051ea: 68bb ldr r3, [r7, #8] - 80051ec: f893 3068 ldrb.w r3, [r3, #104] @ 0x68 - 80051f0: 011b lsls r3, r3, #4 - 80051f2: b25b sxtb r3, r3 - 80051f4: 4313 orrs r3, r2 - 80051f6: b25a sxtb r2, r3 - 80051f8: 68bb ldr r3, [r7, #8] - 80051fa: f893 3069 ldrb.w r3, [r3, #105] @ 0x69 - 80051fe: 00db lsls r3, r3, #3 - 8005200: b25b sxtb r3, r3 - 8005202: 4313 orrs r3, r2 - 8005204: b25a sxtb r2, r3 - | (((uint8_t) icd_str->rr_now & 0x1) << 2) | (((uint8_t) icd_str->last_QRS & 0x3) << 0); - 8005206: 68bb ldr r3, [r7, #8] - 8005208: 7a1b ldrb r3, [r3, #8] - 800520a: 009b lsls r3, r3, #2 - 800520c: b25b sxtb r3, r3 - 800520e: 4313 orrs r3, r2 - 8005210: b25a sxtb r2, r3 - 8005212: 68bb ldr r3, [r7, #8] - 8005214: f893 304a ldrb.w r3, [r3, #74] @ 0x4a - 8005218: b25b sxtb r3, r3 - 800521a: f003 0303 and.w r3, r3, #3 - 800521e: b25b sxtb r3, r3 - 8005220: 4313 orrs r3, r2 - 8005222: b25b sxtb r3, r3 - 8005224: b2da uxtb r2, r3 - TX_BUF[20] = (((uint8_t) icd_str->filter_on & 0x1) << 7) | (((uint8_t) icd_str->work_set_mode & 0x3) << 5) - 8005226: 4b21 ldr r3, [pc, #132] @ (80052ac ) - 8005228: 751a strb r2, [r3, #20] - - //не будем выпендриваться займём 8последних байт - if (icd_str->counter % 12 == 0) - 800522a: 68bb ldr r3, [r7, #8] - 800522c: 6ed9 ldr r1, [r3, #108] @ 0x6c - 800522e: 4b21 ldr r3, [pc, #132] @ (80052b4 ) - 8005230: fb83 2301 smull r2, r3, r3, r1 - 8005234: 105a asrs r2, r3, #1 - 8005236: 17cb asrs r3, r1, #31 - 8005238: 1ad2 subs r2, r2, r3 - 800523a: 4613 mov r3, r2 - 800523c: 005b lsls r3, r3, #1 - 800523e: 4413 add r3, r2 - 8005240: 009b lsls r3, r3, #2 - 8005242: 1aca subs r2, r1, r3 - 8005244: 2a00 cmp r2, #0 - 8005246: d137 bne.n 80052b8 - { - float2Bytes(icd_str->min_tres, &bytes[0]); - 8005248: 68bb ldr r3, [r7, #8] - 800524a: edd3 7a03 vldr s15, [r3, #12] - 800524e: 4818 ldr r0, [pc, #96] @ (80052b0 ) - 8005250: eeb0 0a67 vmov.f32 s0, s15 - 8005254: f7ff ff02 bl 800505c - TX_BUF[23] = bytes[0]; - 8005258: 4b15 ldr r3, [pc, #84] @ (80052b0 ) - 800525a: 781a ldrb r2, [r3, #0] - 800525c: 4b13 ldr r3, [pc, #76] @ (80052ac ) - 800525e: 75da strb r2, [r3, #23] - TX_BUF[24] = bytes[1]; - 8005260: 4b13 ldr r3, [pc, #76] @ (80052b0 ) - 8005262: 785a ldrb r2, [r3, #1] - 8005264: 4b11 ldr r3, [pc, #68] @ (80052ac ) - 8005266: 761a strb r2, [r3, #24] - TX_BUF[25] = bytes[2]; - 8005268: 4b11 ldr r3, [pc, #68] @ (80052b0 ) - 800526a: 789a ldrb r2, [r3, #2] - 800526c: 4b0f ldr r3, [pc, #60] @ (80052ac ) - 800526e: 765a strb r2, [r3, #25] - TX_BUF[26] = bytes[3]; - 8005270: 4b0f ldr r3, [pc, #60] @ (80052b0 ) - 8005272: 78da ldrb r2, [r3, #3] - 8005274: 4b0d ldr r3, [pc, #52] @ (80052ac ) - 8005276: 769a strb r2, [r3, #26] - - float2Bytes(icd_str->max_tres, &bytes[0]); //fixme временно - 8005278: 68bb ldr r3, [r7, #8] - 800527a: edd3 7a05 vldr s15, [r3, #20] - 800527e: 480c ldr r0, [pc, #48] @ (80052b0 ) - 8005280: eeb0 0a67 vmov.f32 s0, s15 - 8005284: f7ff feea bl 800505c - TX_BUF[27] = bytes[0]; - 8005288: 4b09 ldr r3, [pc, #36] @ (80052b0 ) - 800528a: 781a ldrb r2, [r3, #0] - 800528c: 4b07 ldr r3, [pc, #28] @ (80052ac ) - 800528e: 76da strb r2, [r3, #27] - TX_BUF[28] = bytes[1]; - 8005290: 4b07 ldr r3, [pc, #28] @ (80052b0 ) - 8005292: 785a ldrb r2, [r3, #1] - 8005294: 4b05 ldr r3, [pc, #20] @ (80052ac ) - 8005296: 771a strb r2, [r3, #28] - TX_BUF[29] = bytes[2]; - 8005298: 4b05 ldr r3, [pc, #20] @ (80052b0 ) - 800529a: 789a ldrb r2, [r3, #2] - 800529c: 4b03 ldr r3, [pc, #12] @ (80052ac ) - 800529e: 775a strb r2, [r3, #29] - TX_BUF[30] = bytes[3]; - 80052a0: 4b03 ldr r3, [pc, #12] @ (80052b0 ) - 80052a2: 78da ldrb r2, [r3, #3] - 80052a4: 4b01 ldr r3, [pc, #4] @ (80052ac ) - 80052a6: 779a strb r2, [r3, #30] - 80052a8: e355 b.n 8005956 - 80052aa: bf00 nop - 80052ac: 20002284 .word 0x20002284 - 80052b0: 200024b4 .word 0x200024b4 - 80052b4: 2aaaaaab .word 0x2aaaaaab - - } - else if (icd_str->counter % 12 == 1) - 80052b8: 68bb ldr r3, [r7, #8] - 80052ba: 6ed9 ldr r1, [r3, #108] @ 0x6c - 80052bc: 4b97 ldr r3, [pc, #604] @ (800551c ) - 80052be: fb83 2301 smull r2, r3, r3, r1 - 80052c2: 105a asrs r2, r3, #1 - 80052c4: 17cb asrs r3, r1, #31 - 80052c6: 1ad2 subs r2, r2, r3 - 80052c8: 4613 mov r3, r2 - 80052ca: 005b lsls r3, r3, #1 - 80052cc: 4413 add r3, r2 - 80052ce: 009b lsls r3, r3, #2 - 80052d0: 1aca subs r2, r1, r3 - 80052d2: 2a01 cmp r2, #1 - 80052d4: d130 bne.n 8005338 - { - float2Bytes(icd_str->square_coef, &bytes[0]); - 80052d6: 68bb ldr r3, [r7, #8] - 80052d8: edd3 7a07 vldr s15, [r3, #28] - 80052dc: 4890 ldr r0, [pc, #576] @ (8005520 ) - 80052de: eeb0 0a67 vmov.f32 s0, s15 - 80052e2: f7ff febb bl 800505c - TX_BUF[23] = bytes[0]; - 80052e6: 4b8e ldr r3, [pc, #568] @ (8005520 ) - 80052e8: 781a ldrb r2, [r3, #0] - 80052ea: 4b8e ldr r3, [pc, #568] @ (8005524 ) - 80052ec: 75da strb r2, [r3, #23] - TX_BUF[24] = bytes[1]; - 80052ee: 4b8c ldr r3, [pc, #560] @ (8005520 ) - 80052f0: 785a ldrb r2, [r3, #1] - 80052f2: 4b8c ldr r3, [pc, #560] @ (8005524 ) - 80052f4: 761a strb r2, [r3, #24] - TX_BUF[25] = bytes[2]; - 80052f6: 4b8a ldr r3, [pc, #552] @ (8005520 ) - 80052f8: 789a ldrb r2, [r3, #2] - 80052fa: 4b8a ldr r3, [pc, #552] @ (8005524 ) - 80052fc: 765a strb r2, [r3, #25] - TX_BUF[26] = bytes[3]; - 80052fe: 4b88 ldr r3, [pc, #544] @ (8005520 ) - 8005300: 78da ldrb r2, [r3, #3] - 8005302: 4b88 ldr r3, [pc, #544] @ (8005524 ) - 8005304: 769a strb r2, [r3, #26] - - float2Bytes(icd_str->triangle_coef, &bytes[0]); //fixme временно - 8005306: 68bb ldr r3, [r7, #8] - 8005308: edd3 7a09 vldr s15, [r3, #36] @ 0x24 - 800530c: 4884 ldr r0, [pc, #528] @ (8005520 ) - 800530e: eeb0 0a67 vmov.f32 s0, s15 - 8005312: f7ff fea3 bl 800505c - TX_BUF[27] = bytes[0]; - 8005316: 4b82 ldr r3, [pc, #520] @ (8005520 ) - 8005318: 781a ldrb r2, [r3, #0] - 800531a: 4b82 ldr r3, [pc, #520] @ (8005524 ) - 800531c: 76da strb r2, [r3, #27] - TX_BUF[28] = bytes[1]; - 800531e: 4b80 ldr r3, [pc, #512] @ (8005520 ) - 8005320: 785a ldrb r2, [r3, #1] - 8005322: 4b80 ldr r3, [pc, #512] @ (8005524 ) - 8005324: 771a strb r2, [r3, #28] - TX_BUF[29] = bytes[2]; - 8005326: 4b7e ldr r3, [pc, #504] @ (8005520 ) - 8005328: 789a ldrb r2, [r3, #2] - 800532a: 4b7e ldr r3, [pc, #504] @ (8005524 ) - 800532c: 775a strb r2, [r3, #29] - TX_BUF[30] = bytes[3]; - 800532e: 4b7c ldr r3, [pc, #496] @ (8005520 ) - 8005330: 78da ldrb r2, [r3, #3] - 8005332: 4b7c ldr r3, [pc, #496] @ (8005524 ) - 8005334: 779a strb r2, [r3, #30] - 8005336: e30e b.n 8005956 - } - else if (icd_str->counter % 12 == 2) - 8005338: 68bb ldr r3, [r7, #8] - 800533a: 6ed9 ldr r1, [r3, #108] @ 0x6c - 800533c: 4b77 ldr r3, [pc, #476] @ (800551c ) - 800533e: fb83 2301 smull r2, r3, r3, r1 - 8005342: 105a asrs r2, r3, #1 - 8005344: 17cb asrs r3, r1, #31 - 8005346: 1ad2 subs r2, r2, r3 - 8005348: 4613 mov r3, r2 - 800534a: 005b lsls r3, r3, #1 - 800534c: 4413 add r3, r2 - 800534e: 009b lsls r3, r3, #2 - 8005350: 1aca subs r2, r1, r3 - 8005352: 2a02 cmp r2, #2 - 8005354: d14c bne.n 80053f0 - { - // время слепоты при включении - TX_BUF[23] = ((icd_str->start_up_time * 5) >> 8) & 0xFF; - 8005356: 68bb ldr r3, [r7, #8] - 8005358: 8d9b ldrh r3, [r3, #44] @ 0x2c - 800535a: 461a mov r2, r3 - 800535c: 4613 mov r3, r2 - 800535e: 009b lsls r3, r3, #2 - 8005360: 4413 add r3, r2 - 8005362: 121b asrs r3, r3, #8 - 8005364: b2da uxtb r2, r3 - 8005366: 4b6f ldr r3, [pc, #444] @ (8005524 ) - 8005368: 75da strb r2, [r3, #23] - TX_BUF[24] = ((icd_str->start_up_time * 5) & 0xFF); - 800536a: 68bb ldr r3, [r7, #8] - 800536c: 8d9b ldrh r3, [r3, #44] @ 0x2c - 800536e: b2db uxtb r3, r3 - 8005370: 461a mov r2, r3 - 8005372: 0092 lsls r2, r2, #2 - 8005374: 4413 add r3, r2 - 8005376: b2da uxtb r2, r3 - 8005378: 4b6a ldr r3, [pc, #424] @ (8005524 ) - 800537a: 761a strb r2, [r3, #24] - // время поиска в базовом режиме с минимальным порогом - TX_BUF[25] = ((icd_str->base_time * 5) >> 8) & 0xFF; - 800537c: 68bb ldr r3, [r7, #8] - 800537e: 8ddb ldrh r3, [r3, #46] @ 0x2e - 8005380: 461a mov r2, r3 - 8005382: 4613 mov r3, r2 - 8005384: 009b lsls r3, r3, #2 - 8005386: 4413 add r3, r2 - 8005388: 121b asrs r3, r3, #8 - 800538a: b2da uxtb r2, r3 - 800538c: 4b65 ldr r3, [pc, #404] @ (8005524 ) - 800538e: 765a strb r2, [r3, #25] - TX_BUF[26] = ((icd_str->base_time * 5) & 0xFF); - 8005390: 68bb ldr r3, [r7, #8] - 8005392: 8ddb ldrh r3, [r3, #46] @ 0x2e - 8005394: b2db uxtb r3, r3 - 8005396: 461a mov r2, r3 - 8005398: 0092 lsls r2, r2, #2 - 800539a: 4413 add r3, r2 - 800539c: b2da uxtb r2, r3 - 800539e: 4b61 ldr r3, [pc, #388] @ (8005524 ) - 80053a0: 769a strb r2, [r3, #26] - // Время в мс которое алгоритм ищет максимум - TX_BUF[27] = ((icd_str->max_search_time * 5) >> 8) & 0xFF; - 80053a2: 68bb ldr r3, [r7, #8] - 80053a4: 8e1b ldrh r3, [r3, #48] @ 0x30 - 80053a6: 461a mov r2, r3 - 80053a8: 4613 mov r3, r2 - 80053aa: 009b lsls r3, r3, #2 - 80053ac: 4413 add r3, r2 - 80053ae: 121b asrs r3, r3, #8 - 80053b0: b2da uxtb r2, r3 - 80053b2: 4b5c ldr r3, [pc, #368] @ (8005524 ) - 80053b4: 76da strb r2, [r3, #27] - TX_BUF[28] = ((icd_str->max_search_time * 5) & 0xFF); - 80053b6: 68bb ldr r3, [r7, #8] - 80053b8: 8e1b ldrh r3, [r3, #48] @ 0x30 - 80053ba: b2db uxtb r3, r3 - 80053bc: 461a mov r2, r3 - 80053be: 0092 lsls r2, r2, #2 - 80053c0: 4413 add r3, r2 - 80053c2: b2da uxtb r2, r3 - 80053c4: 4b57 ldr r3, [pc, #348] @ (8005524 ) - 80053c6: 771a strb r2, [r3, #28] - // Время в мс нахождения в режиме поиска квадратов - TX_BUF[29] = ((icd_str->square_time * 5) >> 8) & 0xFF; - 80053c8: 68bb ldr r3, [r7, #8] - 80053ca: 8e5b ldrh r3, [r3, #50] @ 0x32 + 80053c6: 68bb ldr r3, [r7, #8] + 80053c8: f9b3 3058 ldrsh.w r3, [r3, #88] @ 0x58 80053cc: 461a mov r2, r3 80053ce: 4613 mov r3, r2 80053d0: 009b lsls r3, r3, #2 80053d2: 4413 add r3, r2 80053d4: 121b asrs r3, r3, #8 80053d6: b2da uxtb r2, r3 - 80053d8: 4b52 ldr r3, [pc, #328] @ (8005524 ) - 80053da: 775a strb r2, [r3, #29] - TX_BUF[30] = ((icd_str->square_time * 5) & 0xFF); + 80053d8: 4b49 ldr r3, [pc, #292] @ (8005500 ) + 80053da: 745a strb r2, [r3, #17] + TX_BUF[18] = ((icd_str->last_RR_poz_rel * 5) & 0xFF); 80053dc: 68bb ldr r3, [r7, #8] - 80053de: 8e5b ldrh r3, [r3, #50] @ 0x32 - 80053e0: b2db uxtb r3, r3 - 80053e2: 461a mov r2, r3 - 80053e4: 0092 lsls r2, r2, #2 - 80053e6: 4413 add r3, r2 - 80053e8: b2da uxtb r2, r3 - 80053ea: 4b4e ldr r3, [pc, #312] @ (8005524 ) - 80053ec: 779a strb r2, [r3, #30] - 80053ee: e2b2 b.n 8005956 - } - else if (icd_str->counter % 12 == 3) + 80053de: f9b3 3058 ldrsh.w r3, [r3, #88] @ 0x58 + 80053e2: b2db uxtb r3, r3 + 80053e4: 461a mov r2, r3 + 80053e6: 0092 lsls r2, r2, #2 + 80053e8: 4413 add r3, r2 + 80053ea: b2da uxtb r2, r3 + 80053ec: 4b44 ldr r3, [pc, #272] @ (8005500 ) + 80053ee: 749a strb r2, [r3, #18] + + TX_BUF[19] = (((uint8_t) icd_str->search_now_mode & 0x7) << 5) | (((uint8_t) icd_str->sub_mode & 0x7) << 2) 80053f0: 68bb ldr r3, [r7, #8] - 80053f2: 6ed9 ldr r1, [r3, #108] @ 0x6c - 80053f4: 4b49 ldr r3, [pc, #292] @ (800551c ) - 80053f6: fb83 2301 smull r2, r3, r3, r1 - 80053fa: 105a asrs r2, r3, #1 - 80053fc: 17cb asrs r3, r1, #31 - 80053fe: 1ad2 subs r2, r2, r3 - 8005400: 4613 mov r3, r2 - 8005402: 005b lsls r3, r3, #1 - 8005404: 4413 add r3, r2 - 8005406: 009b lsls r3, r3, #2 - 8005408: 1aca subs r2, r1, r3 - 800540a: 2a03 cmp r2, #3 - 800540c: d136 bne.n 800547c - { - TX_BUF[24] = (((uint8_t) icd_str->dc_cut & 0x1) << 3) | (((uint8_t) icd_str->sd_card & 0x1) << 2) - 800540e: 68bb ldr r3, [r7, #8] - 8005410: 79db ldrb r3, [r3, #7] - 8005412: 00db lsls r3, r3, #3 - 8005414: b25a sxtb r2, r3 - 8005416: 68bb ldr r3, [r7, #8] - 8005418: 799b ldrb r3, [r3, #6] - 800541a: 009b lsls r3, r3, #2 + 80053f2: 78db ldrb r3, [r3, #3] + 80053f4: 015b lsls r3, r3, #5 + 80053f6: b25a sxtb r2, r3 + 80053f8: 68bb ldr r3, [r7, #8] + 80053fa: f893 309b ldrb.w r3, [r3, #155] @ 0x9b + 80053fe: 009b lsls r3, r3, #2 + 8005400: b25b sxtb r3, r3 + 8005402: f003 031c and.w r3, r3, #28 + 8005406: b25b sxtb r3, r3 + 8005408: 4313 orrs r3, r2 + 800540a: b25a sxtb r2, r3 + | (((uint8_t) icd_str->terapy_now & 0x3) << 0); + 800540c: 68bb ldr r3, [r7, #8] + 800540e: f893 309a ldrb.w r3, [r3, #154] @ 0x9a + 8005412: b25b sxtb r3, r3 + 8005414: f003 0303 and.w r3, r3, #3 + 8005418: b25b sxtb r3, r3 + 800541a: 4313 orrs r3, r2 800541c: b25b sxtb r3, r3 - 800541e: 4313 orrs r3, r2 - 8005420: b25a sxtb r2, r3 - | (((uint8_t) icd_str->active_ch & 0x3) << 0); - 8005422: 68bb ldr r3, [r7, #8] - 8005424: 795b ldrb r3, [r3, #5] - 8005426: b25b sxtb r3, r3 - 8005428: f003 0303 and.w r3, r3, #3 - 800542c: b25b sxtb r3, r3 - 800542e: 4313 orrs r3, r2 - 8005430: b25b sxtb r3, r3 - 8005432: b2da uxtb r2, r3 - TX_BUF[24] = (((uint8_t) icd_str->dc_cut & 0x1) << 3) | (((uint8_t) icd_str->sd_card & 0x1) << 2) - 8005434: 4b3b ldr r3, [pc, #236] @ (8005524 ) - 8005436: 761a strb r2, [r3, #24] - //сопротивление потенциометра - TX_BUF[25] = (icd_str->spi_pot_set) & 0xFF; - 8005438: 68bb ldr r3, [r7, #8] - 800543a: f893 20cc ldrb.w r2, [r3, #204] @ 0xcc - 800543e: 4b39 ldr r3, [pc, #228] @ (8005524 ) - 8005440: 765a strb r2, [r3, #25] - //напряжение в процентах - TX_BUF[26] = ((adc_str.bat_pers) & 0xFF); - 8005442: 4b39 ldr r3, [pc, #228] @ (8005528 ) - 8005444: 7b1a ldrb r2, [r3, #12] - 8005446: 4b37 ldr r3, [pc, #220] @ (8005524 ) - 8005448: 769a strb r2, [r3, #26] - //напряжение на АКБ - TX_BUF[27] = ((adc_str.bat_volt) >> 8) & 0xFF; - 800544a: 4b37 ldr r3, [pc, #220] @ (8005528 ) - 800544c: 895b ldrh r3, [r3, #10] - 800544e: 0a1b lsrs r3, r3, #8 - 8005450: b29b uxth r3, r3 - 8005452: b2da uxtb r2, r3 - 8005454: 4b33 ldr r3, [pc, #204] @ (8005524 ) - 8005456: 76da strb r2, [r3, #27] - TX_BUF[28] = ((adc_str.bat_volt) & 0xFF); - 8005458: 4b33 ldr r3, [pc, #204] @ (8005528 ) - 800545a: 895b ldrh r3, [r3, #10] - 800545c: b2da uxtb r2, r3 - 800545e: 4b31 ldr r3, [pc, #196] @ (8005524 ) - 8005460: 771a strb r2, [r3, #28] - //напряжение на конденсаторе - TX_BUF[29] = ((adc_str.hv_volt) >> 8) & 0xFF; - 8005462: 4b31 ldr r3, [pc, #196] @ (8005528 ) - 8005464: 8a1b ldrh r3, [r3, #16] - 8005466: 0a1b lsrs r3, r3, #8 - 8005468: b29b uxth r3, r3 - 800546a: b2da uxtb r2, r3 - 800546c: 4b2d ldr r3, [pc, #180] @ (8005524 ) - 800546e: 775a strb r2, [r3, #29] - TX_BUF[30] = ((adc_str.hv_volt) & 0xFF); - 8005470: 4b2d ldr r3, [pc, #180] @ (8005528 ) - 8005472: 8a1b ldrh r3, [r3, #16] - 8005474: b2da uxtb r2, r3 - 8005476: 4b2b ldr r3, [pc, #172] @ (8005524 ) - 8005478: 779a strb r2, [r3, #30] - 800547a: e26c b.n 8005956 + 800541e: b2da uxtb r2, r3 + TX_BUF[19] = (((uint8_t) icd_str->search_now_mode & 0x7) << 5) | (((uint8_t) icd_str->sub_mode & 0x7) << 2) + 8005420: 4b37 ldr r3, [pc, #220] @ (8005500 ) + 8005422: 74da strb r2, [r3, #19] + + TX_BUF[20] = (((uint8_t) icd_str->filter_on & 0x1) << 7) | (((uint8_t) icd_str->work_set_mode & 0x3) << 5) + 8005424: 68bb ldr r3, [r7, #8] + 8005426: 791b ldrb r3, [r3, #4] + 8005428: 01db lsls r3, r3, #7 + 800542a: b25a sxtb r2, r3 + 800542c: 68bb ldr r3, [r7, #8] + 800542e: 781b ldrb r3, [r3, #0] + 8005430: 015b lsls r3, r3, #5 + 8005432: b25b sxtb r3, r3 + 8005434: f003 0360 and.w r3, r3, #96 @ 0x60 + 8005438: b25b sxtb r3, r3 + 800543a: 4313 orrs r3, r2 + 800543c: b25a sxtb r2, r3 + | (((uint8_t) icd_str->LV_on & 0x1) << 4) | (((uint8_t) icd_str->HV_on & 0x1) << 3) + 800543e: 68bb ldr r3, [r7, #8] + 8005440: f893 3068 ldrb.w r3, [r3, #104] @ 0x68 + 8005444: 011b lsls r3, r3, #4 + 8005446: b25b sxtb r3, r3 + 8005448: 4313 orrs r3, r2 + 800544a: b25a sxtb r2, r3 + 800544c: 68bb ldr r3, [r7, #8] + 800544e: f893 3069 ldrb.w r3, [r3, #105] @ 0x69 + 8005452: 00db lsls r3, r3, #3 + 8005454: b25b sxtb r3, r3 + 8005456: 4313 orrs r3, r2 + 8005458: b25a sxtb r2, r3 + | (((uint8_t) icd_str->rr_now & 0x1) << 2) | (((uint8_t) icd_str->last_QRS & 0x3) << 0); + 800545a: 68bb ldr r3, [r7, #8] + 800545c: 7a1b ldrb r3, [r3, #8] + 800545e: 009b lsls r3, r3, #2 + 8005460: b25b sxtb r3, r3 + 8005462: 4313 orrs r3, r2 + 8005464: b25a sxtb r2, r3 + 8005466: 68bb ldr r3, [r7, #8] + 8005468: f893 304a ldrb.w r3, [r3, #74] @ 0x4a + 800546c: b25b sxtb r3, r3 + 800546e: f003 0303 and.w r3, r3, #3 + 8005472: b25b sxtb r3, r3 + 8005474: 4313 orrs r3, r2 + 8005476: b25b sxtb r3, r3 + 8005478: b2da uxtb r2, r3 + TX_BUF[20] = (((uint8_t) icd_str->filter_on & 0x1) << 7) | (((uint8_t) icd_str->work_set_mode & 0x3) << 5) + 800547a: 4b21 ldr r3, [pc, #132] @ (8005500 ) + 800547c: 751a strb r2, [r3, #20] + + //не будем выпендриваться займём 8последних байт + if (icd_str->counter % 12 == 0) + 800547e: 68bb ldr r3, [r7, #8] + 8005480: 6ed9 ldr r1, [r3, #108] @ 0x6c + 8005482: 4b21 ldr r3, [pc, #132] @ (8005508 ) + 8005484: fb83 2301 smull r2, r3, r3, r1 + 8005488: 105a asrs r2, r3, #1 + 800548a: 17cb asrs r3, r1, #31 + 800548c: 1ad2 subs r2, r2, r3 + 800548e: 4613 mov r3, r2 + 8005490: 005b lsls r3, r3, #1 + 8005492: 4413 add r3, r2 + 8005494: 009b lsls r3, r3, #2 + 8005496: 1aca subs r2, r1, r3 + 8005498: 2a00 cmp r2, #0 + 800549a: d137 bne.n 800550c + { + float2Bytes(icd_str->min_tres, &bytes[0]); + 800549c: 68bb ldr r3, [r7, #8] + 800549e: edd3 7a03 vldr s15, [r3, #12] + 80054a2: 4818 ldr r0, [pc, #96] @ (8005504 ) + 80054a4: eeb0 0a67 vmov.f32 s0, s15 + 80054a8: f7ff ff02 bl 80052b0 + TX_BUF[23] = bytes[0]; + 80054ac: 4b15 ldr r3, [pc, #84] @ (8005504 ) + 80054ae: 781a ldrb r2, [r3, #0] + 80054b0: 4b13 ldr r3, [pc, #76] @ (8005500 ) + 80054b2: 75da strb r2, [r3, #23] + TX_BUF[24] = bytes[1]; + 80054b4: 4b13 ldr r3, [pc, #76] @ (8005504 ) + 80054b6: 785a ldrb r2, [r3, #1] + 80054b8: 4b11 ldr r3, [pc, #68] @ (8005500 ) + 80054ba: 761a strb r2, [r3, #24] + TX_BUF[25] = bytes[2]; + 80054bc: 4b11 ldr r3, [pc, #68] @ (8005504 ) + 80054be: 789a ldrb r2, [r3, #2] + 80054c0: 4b0f ldr r3, [pc, #60] @ (8005500 ) + 80054c2: 765a strb r2, [r3, #25] + TX_BUF[26] = bytes[3]; + 80054c4: 4b0f ldr r3, [pc, #60] @ (8005504 ) + 80054c6: 78da ldrb r2, [r3, #3] + 80054c8: 4b0d ldr r3, [pc, #52] @ (8005500 ) + 80054ca: 769a strb r2, [r3, #26] + + float2Bytes(icd_str->max_tres, &bytes[0]); //fixme временно + 80054cc: 68bb ldr r3, [r7, #8] + 80054ce: edd3 7a05 vldr s15, [r3, #20] + 80054d2: 480c ldr r0, [pc, #48] @ (8005504 ) + 80054d4: eeb0 0a67 vmov.f32 s0, s15 + 80054d8: f7ff feea bl 80052b0 + TX_BUF[27] = bytes[0]; + 80054dc: 4b09 ldr r3, [pc, #36] @ (8005504 ) + 80054de: 781a ldrb r2, [r3, #0] + 80054e0: 4b07 ldr r3, [pc, #28] @ (8005500 ) + 80054e2: 76da strb r2, [r3, #27] + TX_BUF[28] = bytes[1]; + 80054e4: 4b07 ldr r3, [pc, #28] @ (8005504 ) + 80054e6: 785a ldrb r2, [r3, #1] + 80054e8: 4b05 ldr r3, [pc, #20] @ (8005500 ) + 80054ea: 771a strb r2, [r3, #28] + TX_BUF[29] = bytes[2]; + 80054ec: 4b05 ldr r3, [pc, #20] @ (8005504 ) + 80054ee: 789a ldrb r2, [r3, #2] + 80054f0: 4b03 ldr r3, [pc, #12] @ (8005500 ) + 80054f2: 775a strb r2, [r3, #29] + TX_BUF[30] = bytes[3]; + 80054f4: 4b03 ldr r3, [pc, #12] @ (8005504 ) + 80054f6: 78da ldrb r2, [r3, #3] + 80054f8: 4b01 ldr r3, [pc, #4] @ (8005500 ) + 80054fa: 779a strb r2, [r3, #30] + 80054fc: e355 b.n 8005baa + 80054fe: bf00 nop + 8005500: 200022cc .word 0x200022cc + 8005504: 200024fc .word 0x200024fc + 8005508: 2aaaaaab .word 0x2aaaaaab + } - else if (icd_str->counter % 12 == 4) - 800547c: 68bb ldr r3, [r7, #8] - 800547e: 6ed9 ldr r1, [r3, #108] @ 0x6c - 8005480: 4b26 ldr r3, [pc, #152] @ (800551c ) - 8005482: fb83 2301 smull r2, r3, r3, r1 - 8005486: 105a asrs r2, r3, #1 - 8005488: 17cb asrs r3, r1, #31 - 800548a: 1ad2 subs r2, r2, r3 - 800548c: 4613 mov r3, r2 - 800548e: 005b lsls r3, r3, #1 - 8005490: 4413 add r3, r2 - 8005492: 009b lsls r3, r3, #2 - 8005494: 1aca subs r2, r1, r3 - 8005496: 2a04 cmp r2, #4 - 8005498: d148 bne.n 800552c + else if (icd_str->counter % 12 == 1) + 800550c: 68bb ldr r3, [r7, #8] + 800550e: 6ed9 ldr r1, [r3, #108] @ 0x6c + 8005510: 4b97 ldr r3, [pc, #604] @ (8005770 ) + 8005512: fb83 2301 smull r2, r3, r3, r1 + 8005516: 105a asrs r2, r3, #1 + 8005518: 17cb asrs r3, r1, #31 + 800551a: 1ad2 subs r2, r2, r3 + 800551c: 4613 mov r3, r2 + 800551e: 005b lsls r3, r3, #1 + 8005520: 4413 add r3, r2 + 8005522: 009b lsls r3, r3, #2 + 8005524: 1aca subs r2, r1, r3 + 8005526: 2a01 cmp r2, #1 + 8005528: d130 bne.n 800558c + { + float2Bytes(icd_str->square_coef, &bytes[0]); + 800552a: 68bb ldr r3, [r7, #8] + 800552c: edd3 7a07 vldr s15, [r3, #28] + 8005530: 4890 ldr r0, [pc, #576] @ (8005774 ) + 8005532: eeb0 0a67 vmov.f32 s0, s15 + 8005536: f7ff febb bl 80052b0 + TX_BUF[23] = bytes[0]; + 800553a: 4b8e ldr r3, [pc, #568] @ (8005774 ) + 800553c: 781a ldrb r2, [r3, #0] + 800553e: 4b8e ldr r3, [pc, #568] @ (8005778 ) + 8005540: 75da strb r2, [r3, #23] + TX_BUF[24] = bytes[1]; + 8005542: 4b8c ldr r3, [pc, #560] @ (8005774 ) + 8005544: 785a ldrb r2, [r3, #1] + 8005546: 4b8c ldr r3, [pc, #560] @ (8005778 ) + 8005548: 761a strb r2, [r3, #24] + TX_BUF[25] = bytes[2]; + 800554a: 4b8a ldr r3, [pc, #552] @ (8005774 ) + 800554c: 789a ldrb r2, [r3, #2] + 800554e: 4b8a ldr r3, [pc, #552] @ (8005778 ) + 8005550: 765a strb r2, [r3, #25] + TX_BUF[26] = bytes[3]; + 8005552: 4b88 ldr r3, [pc, #544] @ (8005774 ) + 8005554: 78da ldrb r2, [r3, #3] + 8005556: 4b88 ldr r3, [pc, #544] @ (8005778 ) + 8005558: 769a strb r2, [r3, #26] + + float2Bytes(icd_str->triangle_coef, &bytes[0]); //fixme временно + 800555a: 68bb ldr r3, [r7, #8] + 800555c: edd3 7a09 vldr s15, [r3, #36] @ 0x24 + 8005560: 4884 ldr r0, [pc, #528] @ (8005774 ) + 8005562: eeb0 0a67 vmov.f32 s0, s15 + 8005566: f7ff fea3 bl 80052b0 + TX_BUF[27] = bytes[0]; + 800556a: 4b82 ldr r3, [pc, #520] @ (8005774 ) + 800556c: 781a ldrb r2, [r3, #0] + 800556e: 4b82 ldr r3, [pc, #520] @ (8005778 ) + 8005570: 76da strb r2, [r3, #27] + TX_BUF[28] = bytes[1]; + 8005572: 4b80 ldr r3, [pc, #512] @ (8005774 ) + 8005574: 785a ldrb r2, [r3, #1] + 8005576: 4b80 ldr r3, [pc, #512] @ (8005778 ) + 8005578: 771a strb r2, [r3, #28] + TX_BUF[29] = bytes[2]; + 800557a: 4b7e ldr r3, [pc, #504] @ (8005774 ) + 800557c: 789a ldrb r2, [r3, #2] + 800557e: 4b7e ldr r3, [pc, #504] @ (8005778 ) + 8005580: 775a strb r2, [r3, #29] + TX_BUF[30] = bytes[3]; + 8005582: 4b7c ldr r3, [pc, #496] @ (8005774 ) + 8005584: 78da ldrb r2, [r3, #3] + 8005586: 4b7c ldr r3, [pc, #496] @ (8005778 ) + 8005588: 779a strb r2, [r3, #30] + 800558a: e30e b.n 8005baa + } + else if (icd_str->counter % 12 == 2) + 800558c: 68bb ldr r3, [r7, #8] + 800558e: 6ed9 ldr r1, [r3, #108] @ 0x6c + 8005590: 4b77 ldr r3, [pc, #476] @ (8005770 ) + 8005592: fb83 2301 smull r2, r3, r3, r1 + 8005596: 105a asrs r2, r3, #1 + 8005598: 17cb asrs r3, r1, #31 + 800559a: 1ad2 subs r2, r2, r3 + 800559c: 4613 mov r3, r2 + 800559e: 005b lsls r3, r3, #1 + 80055a0: 4413 add r3, r2 + 80055a2: 009b lsls r3, r3, #2 + 80055a4: 1aca subs r2, r1, r3 + 80055a6: 2a02 cmp r2, #2 + 80055a8: d14c bne.n 8005644 { // время слепоты при включении - TX_BUF[23] = ((icd_str->lv_stop_time * 5) >> 8) & 0xFF; - 800549a: 68bb ldr r3, [r7, #8] - 800549c: f8b3 3046 ldrh.w r3, [r3, #70] @ 0x46 - 80054a0: 461a mov r2, r3 - 80054a2: 4613 mov r3, r2 - 80054a4: 009b lsls r3, r3, #2 - 80054a6: 4413 add r3, r2 - 80054a8: 121b asrs r3, r3, #8 - 80054aa: b2da uxtb r2, r3 - 80054ac: 4b1d ldr r3, [pc, #116] @ (8005524 ) - 80054ae: 75da strb r2, [r3, #23] - TX_BUF[24] = ((icd_str->lv_stop_time * 5) & 0xFF); - 80054b0: 68bb ldr r3, [r7, #8] - 80054b2: f8b3 3046 ldrh.w r3, [r3, #70] @ 0x46 - 80054b6: b2db uxtb r3, r3 - 80054b8: 461a mov r2, r3 - 80054ba: 0092 lsls r2, r2, #2 - 80054bc: 4413 add r3, r2 - 80054be: b2da uxtb r2, r3 - 80054c0: 4b18 ldr r3, [pc, #96] @ (8005524 ) - 80054c2: 761a strb r2, [r3, #24] - // время на весь qrs - TX_BUF[25] = ((icd_str->max_time * 5) >> 8) & 0xFF; - 80054c4: 68bb ldr r3, [r7, #8] - 80054c6: f8b3 3048 ldrh.w r3, [r3, #72] @ 0x48 - 80054ca: 461a mov r2, r3 - 80054cc: 4613 mov r3, r2 - 80054ce: 009b lsls r3, r3, #2 - 80054d0: 4413 add r3, r2 - 80054d2: 121b asrs r3, r3, #8 - 80054d4: b2da uxtb r2, r3 - 80054d6: 4b13 ldr r3, [pc, #76] @ (8005524 ) - 80054d8: 765a strb r2, [r3, #25] - TX_BUF[26] = ((icd_str->max_time * 5) & 0xFF); - 80054da: 68bb ldr r3, [r7, #8] - 80054dc: f8b3 3048 ldrh.w r3, [r3, #72] @ 0x48 - 80054e0: b2db uxtb r3, r3 - 80054e2: 461a mov r2, r3 - 80054e4: 0092 lsls r2, r2, #2 - 80054e6: 4413 add r3, r2 - 80054e8: b2da uxtb r2, r3 - 80054ea: 4b0e ldr r3, [pc, #56] @ (8005524 ) - 80054ec: 769a strb r2, [r3, #26] - // время между последним и предпоследним событием - TX_BUF[27] = ((icd_str->last_period * 5) >> 8) & 0xFF; - 80054ee: 68bb ldr r3, [r7, #8] - 80054f0: f8b3 304c ldrh.w r3, [r3, #76] @ 0x4c - 80054f4: 461a mov r2, r3 - 80054f6: 4613 mov r3, r2 - 80054f8: 009b lsls r3, r3, #2 - 80054fa: 4413 add r3, r2 - 80054fc: 121b asrs r3, r3, #8 - 80054fe: b2da uxtb r2, r3 - 8005500: 4b08 ldr r3, [pc, #32] @ (8005524 ) - 8005502: 76da strb r2, [r3, #27] - TX_BUF[28] = ((icd_str->last_period * 5) & 0xFF); - 8005504: 68bb ldr r3, [r7, #8] - 8005506: f8b3 304c ldrh.w r3, [r3, #76] @ 0x4c - 800550a: b2db uxtb r3, r3 - 800550c: 461a mov r2, r3 - 800550e: 0092 lsls r2, r2, #2 - 8005510: 4413 add r3, r2 - 8005512: b2da uxtb r2, r3 - 8005514: 4b03 ldr r3, [pc, #12] @ (8005524 ) - 8005516: 771a strb r2, [r3, #28] - 8005518: e21d b.n 8005956 - 800551a: bf00 nop - 800551c: 2aaaaaab .word 0x2aaaaaab - 8005520: 200024b4 .word 0x200024b4 - 8005524: 20002284 .word 0x20002284 - 8005528: 2000008c .word 0x2000008c - } - else if (icd_str->counter % 12 == 5) - 800552c: 68bb ldr r3, [r7, #8] - 800552e: 6ed9 ldr r1, [r3, #108] @ 0x6c - 8005530: 4b92 ldr r3, [pc, #584] @ (800577c ) - 8005532: fb83 2301 smull r2, r3, r3, r1 - 8005536: 105a asrs r2, r3, #1 - 8005538: 17cb asrs r3, r1, #31 - 800553a: 1ad2 subs r2, r2, r3 - 800553c: 4613 mov r3, r2 - 800553e: 005b lsls r3, r3, #1 - 8005540: 4413 add r3, r2 - 8005542: 009b lsls r3, r3, #2 - 8005544: 1aca subs r2, r1, r3 - 8005546: 2a05 cmp r2, #5 - 8005548: d12d bne.n 80055a6 - { - //счётчик собственных сокращений сердца 24 бита - TX_BUF[23] = ((icd_str->Vs_cnt) >> 16) & 0xFF; - 800554a: 68bb ldr r3, [r7, #8] - 800554c: 6ddb ldr r3, [r3, #92] @ 0x5c - 800554e: 0c1b lsrs r3, r3, #16 - 8005550: b2da uxtb r2, r3 - 8005552: 4b8b ldr r3, [pc, #556] @ (8005780 ) - 8005554: 75da strb r2, [r3, #23] - TX_BUF[24] = ((icd_str->Vs_cnt) >> 8) & 0xFF; - 8005556: 68bb ldr r3, [r7, #8] - 8005558: 6ddb ldr r3, [r3, #92] @ 0x5c - 800555a: 0a1b lsrs r3, r3, #8 - 800555c: b2da uxtb r2, r3 - 800555e: 4b88 ldr r3, [pc, #544] @ (8005780 ) - 8005560: 761a strb r2, [r3, #24] - TX_BUF[25] = ((icd_str->Vs_cnt) & 0xFF); - 8005562: 68bb ldr r3, [r7, #8] - 8005564: 6ddb ldr r3, [r3, #92] @ 0x5c - 8005566: b2da uxtb r2, r3 - 8005568: 4b85 ldr r3, [pc, #532] @ (8005780 ) - 800556a: 765a strb r2, [r3, #25] - //счётчик собственных сокращений которые в шуме(не детектируется - TX_BUF[26] = ((icd_str->Vn_cnt) >> 8) & 0xFF; - 800556c: 68bb ldr r3, [r7, #8] - 800556e: 6e1b ldr r3, [r3, #96] @ 0x60 - 8005570: 0a1b lsrs r3, r3, #8 - 8005572: b2da uxtb r2, r3 - 8005574: 4b82 ldr r3, [pc, #520] @ (8005780 ) - 8005576: 769a strb r2, [r3, #26] - TX_BUF[27] = ((icd_str->Vn_cnt) & 0xFF); - 8005578: 68bb ldr r3, [r7, #8] - 800557a: 6e1b ldr r3, [r3, #96] @ 0x60 - 800557c: b2da uxtb r2, r3 - 800557e: 4b80 ldr r3, [pc, #512] @ (8005780 ) - 8005580: 76da strb r2, [r3, #27] - //счётчик принудительных стимуляций сердца низким напряжением(низковольтная стимуляция) - TX_BUF[28] = ((icd_str->Vp_cnt) >> 16) & 0xFF; - 8005582: 68bb ldr r3, [r7, #8] - 8005584: 6e5b ldr r3, [r3, #100] @ 0x64 - 8005586: 0c1b lsrs r3, r3, #16 - 8005588: b2da uxtb r2, r3 - 800558a: 4b7d ldr r3, [pc, #500] @ (8005780 ) - 800558c: 771a strb r2, [r3, #28] - TX_BUF[29] = ((icd_str->Vp_cnt) >> 8) & 0xFF; - 800558e: 68bb ldr r3, [r7, #8] - 8005590: 6e5b ldr r3, [r3, #100] @ 0x64 - 8005592: 0a1b lsrs r3, r3, #8 - 8005594: b2da uxtb r2, r3 - 8005596: 4b7a ldr r3, [pc, #488] @ (8005780 ) - 8005598: 775a strb r2, [r3, #29] - TX_BUF[30] = ((icd_str->Vp_cnt) & 0xFF); - 800559a: 68bb ldr r3, [r7, #8] - 800559c: 6e5b ldr r3, [r3, #100] @ 0x64 - 800559e: b2da uxtb r2, r3 - 80055a0: 4b77 ldr r3, [pc, #476] @ (8005780 ) - 80055a2: 779a strb r2, [r3, #30] - 80055a4: e1d7 b.n 8005956 - } - else if (icd_str->counter % 12 == 6) - 80055a6: 68bb ldr r3, [r7, #8] - 80055a8: 6ed9 ldr r1, [r3, #108] @ 0x6c - 80055aa: 4b74 ldr r3, [pc, #464] @ (800577c ) - 80055ac: fb83 2301 smull r2, r3, r3, r1 - 80055b0: 105a asrs r2, r3, #1 - 80055b2: 17cb asrs r3, r1, #31 - 80055b4: 1ad2 subs r2, r2, r3 - 80055b6: 4613 mov r3, r2 - 80055b8: 005b lsls r3, r3, #1 - 80055ba: 4413 add r3, r2 - 80055bc: 009b lsls r3, r3, #2 - 80055be: 1aca subs r2, r1, r3 - 80055c0: 2a06 cmp r2, #6 - 80055c2: d14c bne.n 800565e - { - //порог периода фибриляции если период меньше, чем это число это фибриляция - TX_BUF[23] = ((icd_str->fibr_tres * 5) >> 8) & 0xFF; - 80055c4: 68bb ldr r3, [r7, #8] - 80055c6: f8b3 3080 ldrh.w r3, [r3, #128] @ 0x80 - 80055ca: 461a mov r2, r3 - 80055cc: 4613 mov r3, r2 - 80055ce: 009b lsls r3, r3, #2 - 80055d0: 4413 add r3, r2 - 80055d2: 121b asrs r3, r3, #8 - 80055d4: b2da uxtb r2, r3 - 80055d6: 4b6a ldr r3, [pc, #424] @ (8005780 ) - 80055d8: 75da strb r2, [r3, #23] - TX_BUF[24] = ((icd_str->fibr_tres * 5) & 0xFF); - 80055da: 68bb ldr r3, [r7, #8] - 80055dc: f8b3 3080 ldrh.w r3, [r3, #128] @ 0x80 - 80055e0: b2db uxtb r3, r3 - 80055e2: 461a mov r2, r3 - 80055e4: 0092 lsls r2, r2, #2 - 80055e6: 4413 add r3, r2 - 80055e8: b2da uxtb r2, r3 - 80055ea: 4b65 ldr r3, [pc, #404] @ (8005780 ) - 80055ec: 761a strb r2, [r3, #24] - //порог периода Тахикардии 2 если период меньше, чем это число это Тахикардия 2 - TX_BUF[25] = ((icd_str->tachy_2_tres * 5) >> 8) & 0xFF; - 80055ee: 68bb ldr r3, [r7, #8] - 80055f0: f8b3 3082 ldrh.w r3, [r3, #130] @ 0x82 - 80055f4: 461a mov r2, r3 - 80055f6: 4613 mov r3, r2 - 80055f8: 009b lsls r3, r3, #2 - 80055fa: 4413 add r3, r2 - 80055fc: 121b asrs r3, r3, #8 - 80055fe: b2da uxtb r2, r3 - 8005600: 4b5f ldr r3, [pc, #380] @ (8005780 ) - 8005602: 765a strb r2, [r3, #25] - TX_BUF[26] = ((icd_str->tachy_2_tres * 5) & 0xFF); - 8005604: 68bb ldr r3, [r7, #8] - 8005606: f8b3 3082 ldrh.w r3, [r3, #130] @ 0x82 - 800560a: b2db uxtb r3, r3 - 800560c: 461a mov r2, r3 - 800560e: 0092 lsls r2, r2, #2 - 8005610: 4413 add r3, r2 - 8005612: b2da uxtb r2, r3 - 8005614: 4b5a ldr r3, [pc, #360] @ (8005780 ) - 8005616: 769a strb r2, [r3, #26] - //порог периода Тахикардии 1 если период меньше, чем это число это Тахикардия 1 - TX_BUF[27] = ((icd_str->tachy_1_tres * 5) >> 8) & 0xFF; - 8005618: 68bb ldr r3, [r7, #8] - 800561a: f8b3 3084 ldrh.w r3, [r3, #132] @ 0x84 - 800561e: 461a mov r2, r3 - 8005620: 4613 mov r3, r2 - 8005622: 009b lsls r3, r3, #2 - 8005624: 4413 add r3, r2 - 8005626: 121b asrs r3, r3, #8 - 8005628: b2da uxtb r2, r3 - 800562a: 4b55 ldr r3, [pc, #340] @ (8005780 ) - 800562c: 76da strb r2, [r3, #27] - TX_BUF[28] = ((icd_str->tachy_1_tres * 5) & 0xFF); - 800562e: 68bb ldr r3, [r7, #8] - 8005630: f8b3 3084 ldrh.w r3, [r3, #132] @ 0x84 + TX_BUF[23] = ((icd_str->start_up_time * 5) >> 8) & 0xFF; + 80055aa: 68bb ldr r3, [r7, #8] + 80055ac: 8d9b ldrh r3, [r3, #44] @ 0x2c + 80055ae: 461a mov r2, r3 + 80055b0: 4613 mov r3, r2 + 80055b2: 009b lsls r3, r3, #2 + 80055b4: 4413 add r3, r2 + 80055b6: 121b asrs r3, r3, #8 + 80055b8: b2da uxtb r2, r3 + 80055ba: 4b6f ldr r3, [pc, #444] @ (8005778 ) + 80055bc: 75da strb r2, [r3, #23] + TX_BUF[24] = ((icd_str->start_up_time * 5) & 0xFF); + 80055be: 68bb ldr r3, [r7, #8] + 80055c0: 8d9b ldrh r3, [r3, #44] @ 0x2c + 80055c2: b2db uxtb r3, r3 + 80055c4: 461a mov r2, r3 + 80055c6: 0092 lsls r2, r2, #2 + 80055c8: 4413 add r3, r2 + 80055ca: b2da uxtb r2, r3 + 80055cc: 4b6a ldr r3, [pc, #424] @ (8005778 ) + 80055ce: 761a strb r2, [r3, #24] + // время поиска в базовом режиме с минимальным порогом + TX_BUF[25] = ((icd_str->base_time * 5) >> 8) & 0xFF; + 80055d0: 68bb ldr r3, [r7, #8] + 80055d2: 8ddb ldrh r3, [r3, #46] @ 0x2e + 80055d4: 461a mov r2, r3 + 80055d6: 4613 mov r3, r2 + 80055d8: 009b lsls r3, r3, #2 + 80055da: 4413 add r3, r2 + 80055dc: 121b asrs r3, r3, #8 + 80055de: b2da uxtb r2, r3 + 80055e0: 4b65 ldr r3, [pc, #404] @ (8005778 ) + 80055e2: 765a strb r2, [r3, #25] + TX_BUF[26] = ((icd_str->base_time * 5) & 0xFF); + 80055e4: 68bb ldr r3, [r7, #8] + 80055e6: 8ddb ldrh r3, [r3, #46] @ 0x2e + 80055e8: b2db uxtb r3, r3 + 80055ea: 461a mov r2, r3 + 80055ec: 0092 lsls r2, r2, #2 + 80055ee: 4413 add r3, r2 + 80055f0: b2da uxtb r2, r3 + 80055f2: 4b61 ldr r3, [pc, #388] @ (8005778 ) + 80055f4: 769a strb r2, [r3, #26] + // Время в мс которое алгоритм ищет максимум + TX_BUF[27] = ((icd_str->max_search_time * 5) >> 8) & 0xFF; + 80055f6: 68bb ldr r3, [r7, #8] + 80055f8: 8e1b ldrh r3, [r3, #48] @ 0x30 + 80055fa: 461a mov r2, r3 + 80055fc: 4613 mov r3, r2 + 80055fe: 009b lsls r3, r3, #2 + 8005600: 4413 add r3, r2 + 8005602: 121b asrs r3, r3, #8 + 8005604: b2da uxtb r2, r3 + 8005606: 4b5c ldr r3, [pc, #368] @ (8005778 ) + 8005608: 76da strb r2, [r3, #27] + TX_BUF[28] = ((icd_str->max_search_time * 5) & 0xFF); + 800560a: 68bb ldr r3, [r7, #8] + 800560c: 8e1b ldrh r3, [r3, #48] @ 0x30 + 800560e: b2db uxtb r3, r3 + 8005610: 461a mov r2, r3 + 8005612: 0092 lsls r2, r2, #2 + 8005614: 4413 add r3, r2 + 8005616: b2da uxtb r2, r3 + 8005618: 4b57 ldr r3, [pc, #348] @ (8005778 ) + 800561a: 771a strb r2, [r3, #28] + // Время в мс нахождения в режиме поиска квадратов + TX_BUF[29] = ((icd_str->square_time * 5) >> 8) & 0xFF; + 800561c: 68bb ldr r3, [r7, #8] + 800561e: 8e5b ldrh r3, [r3, #50] @ 0x32 + 8005620: 461a mov r2, r3 + 8005622: 4613 mov r3, r2 + 8005624: 009b lsls r3, r3, #2 + 8005626: 4413 add r3, r2 + 8005628: 121b asrs r3, r3, #8 + 800562a: b2da uxtb r2, r3 + 800562c: 4b52 ldr r3, [pc, #328] @ (8005778 ) + 800562e: 775a strb r2, [r3, #29] + TX_BUF[30] = ((icd_str->square_time * 5) & 0xFF); + 8005630: 68bb ldr r3, [r7, #8] + 8005632: 8e5b ldrh r3, [r3, #50] @ 0x32 8005634: b2db uxtb r3, r3 8005636: 461a mov r2, r3 8005638: 0092 lsls r2, r2, #2 800563a: 4413 add r3, r2 800563c: b2da uxtb r2, r3 - 800563e: 4b50 ldr r3, [pc, #320] @ (8005780 ) - 8005640: 771a strb r2, [r3, #28] + 800563e: 4b4e ldr r3, [pc, #312] @ (8005778 ) + 8005640: 779a strb r2, [r3, #30] + 8005642: e2b2 b.n 8005baa + } + else if (icd_str->counter % 12 == 3) + 8005644: 68bb ldr r3, [r7, #8] + 8005646: 6ed9 ldr r1, [r3, #108] @ 0x6c + 8005648: 4b49 ldr r3, [pc, #292] @ (8005770 ) + 800564a: fb83 2301 smull r2, r3, r3, r1 + 800564e: 105a asrs r2, r3, #1 + 8005650: 17cb asrs r3, r1, #31 + 8005652: 1ad2 subs r2, r2, r3 + 8005654: 4613 mov r3, r2 + 8005656: 005b lsls r3, r3, #1 + 8005658: 4413 add r3, r2 + 800565a: 009b lsls r3, r3, #2 + 800565c: 1aca subs r2, r1, r3 + 800565e: 2a03 cmp r2, #3 + 8005660: d136 bne.n 80056d0 + { + TX_BUF[24] = (((uint8_t) icd_str->dc_cut & 0x1) << 3) | (((uint8_t) icd_str->sd_card & 0x1) << 2) + 8005662: 68bb ldr r3, [r7, #8] + 8005664: 79db ldrb r3, [r3, #7] + 8005666: 00db lsls r3, r3, #3 + 8005668: b25a sxtb r2, r3 + 800566a: 68bb ldr r3, [r7, #8] + 800566c: 799b ldrb r3, [r3, #6] + 800566e: 009b lsls r3, r3, #2 + 8005670: b25b sxtb r3, r3 + 8005672: 4313 orrs r3, r2 + 8005674: b25a sxtb r2, r3 + | (((uint8_t) icd_str->active_ch & 0x3) << 0); + 8005676: 68bb ldr r3, [r7, #8] + 8005678: 795b ldrb r3, [r3, #5] + 800567a: b25b sxtb r3, r3 + 800567c: f003 0303 and.w r3, r3, #3 + 8005680: b25b sxtb r3, r3 + 8005682: 4313 orrs r3, r2 + 8005684: b25b sxtb r3, r3 + 8005686: b2da uxtb r2, r3 + TX_BUF[24] = (((uint8_t) icd_str->dc_cut & 0x1) << 3) | (((uint8_t) icd_str->sd_card & 0x1) << 2) + 8005688: 4b3b ldr r3, [pc, #236] @ (8005778 ) + 800568a: 761a strb r2, [r3, #24] + //сопротивление потенциометра + TX_BUF[25] = (icd_str->spi_pot_set) & 0xFF; + 800568c: 68bb ldr r3, [r7, #8] + 800568e: f893 20cc ldrb.w r2, [r3, #204] @ 0xcc + 8005692: 4b39 ldr r3, [pc, #228] @ (8005778 ) + 8005694: 765a strb r2, [r3, #25] + //напряжение в процентах + TX_BUF[26] = ((adc_str.bat_pers) & 0xFF); + 8005696: 4b39 ldr r3, [pc, #228] @ (800577c ) + 8005698: 7b1a ldrb r2, [r3, #12] + 800569a: 4b37 ldr r3, [pc, #220] @ (8005778 ) + 800569c: 769a strb r2, [r3, #26] + //напряжение на АКБ + TX_BUF[27] = ((adc_str.bat_volt) >> 8) & 0xFF; + 800569e: 4b37 ldr r3, [pc, #220] @ (800577c ) + 80056a0: 895b ldrh r3, [r3, #10] + 80056a2: 0a1b lsrs r3, r3, #8 + 80056a4: b29b uxth r3, r3 + 80056a6: b2da uxtb r2, r3 + 80056a8: 4b33 ldr r3, [pc, #204] @ (8005778 ) + 80056aa: 76da strb r2, [r3, #27] + TX_BUF[28] = ((adc_str.bat_volt) & 0xFF); + 80056ac: 4b33 ldr r3, [pc, #204] @ (800577c ) + 80056ae: 895b ldrh r3, [r3, #10] + 80056b0: b2da uxtb r2, r3 + 80056b2: 4b31 ldr r3, [pc, #196] @ (8005778 ) + 80056b4: 771a strb r2, [r3, #28] + //напряжение на конденсаторе + TX_BUF[29] = ((adc_str.hv_volt) >> 8) & 0xFF; + 80056b6: 4b31 ldr r3, [pc, #196] @ (800577c ) + 80056b8: 8a1b ldrh r3, [r3, #16] + 80056ba: 0a1b lsrs r3, r3, #8 + 80056bc: b29b uxth r3, r3 + 80056be: b2da uxtb r2, r3 + 80056c0: 4b2d ldr r3, [pc, #180] @ (8005778 ) + 80056c2: 775a strb r2, [r3, #29] + TX_BUF[30] = ((adc_str.hv_volt) & 0xFF); + 80056c4: 4b2d ldr r3, [pc, #180] @ (800577c ) + 80056c6: 8a1b ldrh r3, [r3, #16] + 80056c8: b2da uxtb r2, r3 + 80056ca: 4b2b ldr r3, [pc, #172] @ (8005778 ) + 80056cc: 779a strb r2, [r3, #30] + 80056ce: e26c b.n 8005baa + } + else if (icd_str->counter % 12 == 4) + 80056d0: 68bb ldr r3, [r7, #8] + 80056d2: 6ed9 ldr r1, [r3, #108] @ 0x6c + 80056d4: 4b26 ldr r3, [pc, #152] @ (8005770 ) + 80056d6: fb83 2301 smull r2, r3, r3, r1 + 80056da: 105a asrs r2, r3, #1 + 80056dc: 17cb asrs r3, r1, #31 + 80056de: 1ad2 subs r2, r2, r3 + 80056e0: 4613 mov r3, r2 + 80056e2: 005b lsls r3, r3, #1 + 80056e4: 4413 add r3, r2 + 80056e6: 009b lsls r3, r3, #2 + 80056e8: 1aca subs r2, r1, r3 + 80056ea: 2a04 cmp r2, #4 + 80056ec: d148 bne.n 8005780 + { + // время слепоты при включении + TX_BUF[23] = ((icd_str->lv_stop_time * 5) >> 8) & 0xFF; + 80056ee: 68bb ldr r3, [r7, #8] + 80056f0: f8b3 3046 ldrh.w r3, [r3, #70] @ 0x46 + 80056f4: 461a mov r2, r3 + 80056f6: 4613 mov r3, r2 + 80056f8: 009b lsls r3, r3, #2 + 80056fa: 4413 add r3, r2 + 80056fc: 121b asrs r3, r3, #8 + 80056fe: b2da uxtb r2, r3 + 8005700: 4b1d ldr r3, [pc, #116] @ (8005778 ) + 8005702: 75da strb r2, [r3, #23] + TX_BUF[24] = ((icd_str->lv_stop_time * 5) & 0xFF); + 8005704: 68bb ldr r3, [r7, #8] + 8005706: f8b3 3046 ldrh.w r3, [r3, #70] @ 0x46 + 800570a: b2db uxtb r3, r3 + 800570c: 461a mov r2, r3 + 800570e: 0092 lsls r2, r2, #2 + 8005710: 4413 add r3, r2 + 8005712: b2da uxtb r2, r3 + 8005714: 4b18 ldr r3, [pc, #96] @ (8005778 ) + 8005716: 761a strb r2, [r3, #24] + // время на весь qrs + TX_BUF[25] = ((icd_str->max_time * 5) >> 8) & 0xFF; + 8005718: 68bb ldr r3, [r7, #8] + 800571a: f8b3 3048 ldrh.w r3, [r3, #72] @ 0x48 + 800571e: 461a mov r2, r3 + 8005720: 4613 mov r3, r2 + 8005722: 009b lsls r3, r3, #2 + 8005724: 4413 add r3, r2 + 8005726: 121b asrs r3, r3, #8 + 8005728: b2da uxtb r2, r3 + 800572a: 4b13 ldr r3, [pc, #76] @ (8005778 ) + 800572c: 765a strb r2, [r3, #25] + TX_BUF[26] = ((icd_str->max_time * 5) & 0xFF); + 800572e: 68bb ldr r3, [r7, #8] + 8005730: f8b3 3048 ldrh.w r3, [r3, #72] @ 0x48 + 8005734: b2db uxtb r3, r3 + 8005736: 461a mov r2, r3 + 8005738: 0092 lsls r2, r2, #2 + 800573a: 4413 add r3, r2 + 800573c: b2da uxtb r2, r3 + 800573e: 4b0e ldr r3, [pc, #56] @ (8005778 ) + 8005740: 769a strb r2, [r3, #26] + // время между последним и предпоследним событием + TX_BUF[27] = ((icd_str->last_period * 5) >> 8) & 0xFF; + 8005742: 68bb ldr r3, [r7, #8] + 8005744: f8b3 304c ldrh.w r3, [r3, #76] @ 0x4c + 8005748: 461a mov r2, r3 + 800574a: 4613 mov r3, r2 + 800574c: 009b lsls r3, r3, #2 + 800574e: 4413 add r3, r2 + 8005750: 121b asrs r3, r3, #8 + 8005752: b2da uxtb r2, r3 + 8005754: 4b08 ldr r3, [pc, #32] @ (8005778 ) + 8005756: 76da strb r2, [r3, #27] + TX_BUF[28] = ((icd_str->last_period * 5) & 0xFF); + 8005758: 68bb ldr r3, [r7, #8] + 800575a: f8b3 304c ldrh.w r3, [r3, #76] @ 0x4c + 800575e: b2db uxtb r3, r3 + 8005760: 461a mov r2, r3 + 8005762: 0092 lsls r2, r2, #2 + 8005764: 4413 add r3, r2 + 8005766: b2da uxtb r2, r3 + 8005768: 4b03 ldr r3, [pc, #12] @ (8005778 ) + 800576a: 771a strb r2, [r3, #28] + 800576c: e21d b.n 8005baa + 800576e: bf00 nop + 8005770: 2aaaaaab .word 0x2aaaaaab + 8005774: 200024fc .word 0x200024fc + 8005778: 200022cc .word 0x200022cc + 800577c: 2000008c .word 0x2000008c + } + else if (icd_str->counter % 12 == 5) + 8005780: 68bb ldr r3, [r7, #8] + 8005782: 6ed9 ldr r1, [r3, #108] @ 0x6c + 8005784: 4b92 ldr r3, [pc, #584] @ (80059d0 ) + 8005786: fb83 2301 smull r2, r3, r3, r1 + 800578a: 105a asrs r2, r3, #1 + 800578c: 17cb asrs r3, r1, #31 + 800578e: 1ad2 subs r2, r2, r3 + 8005790: 4613 mov r3, r2 + 8005792: 005b lsls r3, r3, #1 + 8005794: 4413 add r3, r2 + 8005796: 009b lsls r3, r3, #2 + 8005798: 1aca subs r2, r1, r3 + 800579a: 2a05 cmp r2, #5 + 800579c: d12d bne.n 80057fa + { + //счётчик собственных сокращений сердца 24 бита + TX_BUF[23] = ((icd_str->Vs_cnt) >> 16) & 0xFF; + 800579e: 68bb ldr r3, [r7, #8] + 80057a0: 6ddb ldr r3, [r3, #92] @ 0x5c + 80057a2: 0c1b lsrs r3, r3, #16 + 80057a4: b2da uxtb r2, r3 + 80057a6: 4b8b ldr r3, [pc, #556] @ (80059d4 ) + 80057a8: 75da strb r2, [r3, #23] + TX_BUF[24] = ((icd_str->Vs_cnt) >> 8) & 0xFF; + 80057aa: 68bb ldr r3, [r7, #8] + 80057ac: 6ddb ldr r3, [r3, #92] @ 0x5c + 80057ae: 0a1b lsrs r3, r3, #8 + 80057b0: b2da uxtb r2, r3 + 80057b2: 4b88 ldr r3, [pc, #544] @ (80059d4 ) + 80057b4: 761a strb r2, [r3, #24] + TX_BUF[25] = ((icd_str->Vs_cnt) & 0xFF); + 80057b6: 68bb ldr r3, [r7, #8] + 80057b8: 6ddb ldr r3, [r3, #92] @ 0x5c + 80057ba: b2da uxtb r2, r3 + 80057bc: 4b85 ldr r3, [pc, #532] @ (80059d4 ) + 80057be: 765a strb r2, [r3, #25] + //счётчик собственных сокращений которые в шуме(не детектируется + TX_BUF[26] = ((icd_str->Vn_cnt) >> 8) & 0xFF; + 80057c0: 68bb ldr r3, [r7, #8] + 80057c2: 6e1b ldr r3, [r3, #96] @ 0x60 + 80057c4: 0a1b lsrs r3, r3, #8 + 80057c6: b2da uxtb r2, r3 + 80057c8: 4b82 ldr r3, [pc, #520] @ (80059d4 ) + 80057ca: 769a strb r2, [r3, #26] + TX_BUF[27] = ((icd_str->Vn_cnt) & 0xFF); + 80057cc: 68bb ldr r3, [r7, #8] + 80057ce: 6e1b ldr r3, [r3, #96] @ 0x60 + 80057d0: b2da uxtb r2, r3 + 80057d2: 4b80 ldr r3, [pc, #512] @ (80059d4 ) + 80057d4: 76da strb r2, [r3, #27] + //счётчик принудительных стимуляций сердца низким напряжением(низковольтная стимуляция) + TX_BUF[28] = ((icd_str->Vp_cnt) >> 16) & 0xFF; + 80057d6: 68bb ldr r3, [r7, #8] + 80057d8: 6e5b ldr r3, [r3, #100] @ 0x64 + 80057da: 0c1b lsrs r3, r3, #16 + 80057dc: b2da uxtb r2, r3 + 80057de: 4b7d ldr r3, [pc, #500] @ (80059d4 ) + 80057e0: 771a strb r2, [r3, #28] + TX_BUF[29] = ((icd_str->Vp_cnt) >> 8) & 0xFF; + 80057e2: 68bb ldr r3, [r7, #8] + 80057e4: 6e5b ldr r3, [r3, #100] @ 0x64 + 80057e6: 0a1b lsrs r3, r3, #8 + 80057e8: b2da uxtb r2, r3 + 80057ea: 4b7a ldr r3, [pc, #488] @ (80059d4 ) + 80057ec: 775a strb r2, [r3, #29] + TX_BUF[30] = ((icd_str->Vp_cnt) & 0xFF); + 80057ee: 68bb ldr r3, [r7, #8] + 80057f0: 6e5b ldr r3, [r3, #100] @ 0x64 + 80057f2: b2da uxtb r2, r3 + 80057f4: 4b77 ldr r3, [pc, #476] @ (80059d4 ) + 80057f6: 779a strb r2, [r3, #30] + 80057f8: e1d7 b.n 8005baa + } + else if (icd_str->counter % 12 == 6) + 80057fa: 68bb ldr r3, [r7, #8] + 80057fc: 6ed9 ldr r1, [r3, #108] @ 0x6c + 80057fe: 4b74 ldr r3, [pc, #464] @ (80059d0 ) + 8005800: fb83 2301 smull r2, r3, r3, r1 + 8005804: 105a asrs r2, r3, #1 + 8005806: 17cb asrs r3, r1, #31 + 8005808: 1ad2 subs r2, r2, r3 + 800580a: 4613 mov r3, r2 + 800580c: 005b lsls r3, r3, #1 + 800580e: 4413 add r3, r2 + 8005810: 009b lsls r3, r3, #2 + 8005812: 1aca subs r2, r1, r3 + 8005814: 2a06 cmp r2, #6 + 8005816: d14c bne.n 80058b2 + { + //порог периода фибриляции если период меньше, чем это число это фибриляция + TX_BUF[23] = ((icd_str->fibr_tres * 5) >> 8) & 0xFF; + 8005818: 68bb ldr r3, [r7, #8] + 800581a: f8b3 3080 ldrh.w r3, [r3, #128] @ 0x80 + 800581e: 461a mov r2, r3 + 8005820: 4613 mov r3, r2 + 8005822: 009b lsls r3, r3, #2 + 8005824: 4413 add r3, r2 + 8005826: 121b asrs r3, r3, #8 + 8005828: b2da uxtb r2, r3 + 800582a: 4b6a ldr r3, [pc, #424] @ (80059d4 ) + 800582c: 75da strb r2, [r3, #23] + TX_BUF[24] = ((icd_str->fibr_tres * 5) & 0xFF); + 800582e: 68bb ldr r3, [r7, #8] + 8005830: f8b3 3080 ldrh.w r3, [r3, #128] @ 0x80 + 8005834: b2db uxtb r3, r3 + 8005836: 461a mov r2, r3 + 8005838: 0092 lsls r2, r2, #2 + 800583a: 4413 add r3, r2 + 800583c: b2da uxtb r2, r3 + 800583e: 4b65 ldr r3, [pc, #404] @ (80059d4 ) + 8005840: 761a strb r2, [r3, #24] + //порог периода Тахикардии 2 если период меньше, чем это число это Тахикардия 2 + TX_BUF[25] = ((icd_str->tachy_2_tres * 5) >> 8) & 0xFF; + 8005842: 68bb ldr r3, [r7, #8] + 8005844: f8b3 3082 ldrh.w r3, [r3, #130] @ 0x82 + 8005848: 461a mov r2, r3 + 800584a: 4613 mov r3, r2 + 800584c: 009b lsls r3, r3, #2 + 800584e: 4413 add r3, r2 + 8005850: 121b asrs r3, r3, #8 + 8005852: b2da uxtb r2, r3 + 8005854: 4b5f ldr r3, [pc, #380] @ (80059d4 ) + 8005856: 765a strb r2, [r3, #25] + TX_BUF[26] = ((icd_str->tachy_2_tres * 5) & 0xFF); + 8005858: 68bb ldr r3, [r7, #8] + 800585a: f8b3 3082 ldrh.w r3, [r3, #130] @ 0x82 + 800585e: b2db uxtb r3, r3 + 8005860: 461a mov r2, r3 + 8005862: 0092 lsls r2, r2, #2 + 8005864: 4413 add r3, r2 + 8005866: b2da uxtb r2, r3 + 8005868: 4b5a ldr r3, [pc, #360] @ (80059d4 ) + 800586a: 769a strb r2, [r3, #26] + //порог периода Тахикардии 1 если период меньше, чем это число это Тахикардия 1 + TX_BUF[27] = ((icd_str->tachy_1_tres * 5) >> 8) & 0xFF; + 800586c: 68bb ldr r3, [r7, #8] + 800586e: f8b3 3084 ldrh.w r3, [r3, #132] @ 0x84 + 8005872: 461a mov r2, r3 + 8005874: 4613 mov r3, r2 + 8005876: 009b lsls r3, r3, #2 + 8005878: 4413 add r3, r2 + 800587a: 121b asrs r3, r3, #8 + 800587c: b2da uxtb r2, r3 + 800587e: 4b55 ldr r3, [pc, #340] @ (80059d4 ) + 8005880: 76da strb r2, [r3, #27] + TX_BUF[28] = ((icd_str->tachy_1_tres * 5) & 0xFF); + 8005882: 68bb ldr r3, [r7, #8] + 8005884: f8b3 3084 ldrh.w r3, [r3, #132] @ 0x84 + 8005888: b2db uxtb r3, r3 + 800588a: 461a mov r2, r3 + 800588c: 0092 lsls r2, r2, #2 + 800588e: 4413 add r3, r2 + 8005890: b2da uxtb r2, r3 + 8005892: 4b50 ldr r3, [pc, #320] @ (80059d4 ) + 8005894: 771a strb r2, [r3, #28] //сбрасываемый счётчик Vs событи TX_BUF[29] = ((icd_str->vs_cnt_last) >> 8) & 0xFF; - 8005642: 68bb ldr r3, [r7, #8] - 8005644: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 - 8005648: 0a1b lsrs r3, r3, #8 - 800564a: b2da uxtb r2, r3 - 800564c: 4b4c ldr r3, [pc, #304] @ (8005780 ) - 800564e: 775a strb r2, [r3, #29] + 8005896: 68bb ldr r3, [r7, #8] + 8005898: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 + 800589c: 0a1b lsrs r3, r3, #8 + 800589e: b2da uxtb r2, r3 + 80058a0: 4b4c ldr r3, [pc, #304] @ (80059d4 ) + 80058a2: 775a strb r2, [r3, #29] TX_BUF[30] = ((icd_str->vs_cnt_last) & 0xFF); - 8005650: 68bb ldr r3, [r7, #8] - 8005652: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 - 8005656: b2da uxtb r2, r3 - 8005658: 4b49 ldr r3, [pc, #292] @ (8005780 ) - 800565a: 779a strb r2, [r3, #30] - 800565c: e17b b.n 8005956 + 80058a4: 68bb ldr r3, [r7, #8] + 80058a6: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 + 80058aa: b2da uxtb r2, r3 + 80058ac: 4b49 ldr r3, [pc, #292] @ (80059d4 ) + 80058ae: 779a strb r2, [r3, #30] + 80058b0: e17b b.n 8005baa } else if (icd_str->counter % 12 == 7) - 800565e: 68bb ldr r3, [r7, #8] - 8005660: 6ed9 ldr r1, [r3, #108] @ 0x6c - 8005662: 4b46 ldr r3, [pc, #280] @ (800577c ) - 8005664: fb83 2301 smull r2, r3, r3, r1 - 8005668: 105a asrs r2, r3, #1 - 800566a: 17cb asrs r3, r1, #31 - 800566c: 1ad2 subs r2, r2, r3 - 800566e: 4613 mov r3, r2 - 8005670: 005b lsls r3, r3, #1 - 8005672: 4413 add r3, r2 - 8005674: 009b lsls r3, r3, #2 - 8005676: 1aca subs r2, r1, r3 - 8005678: 2a07 cmp r2, #7 - 800567a: d12e bne.n 80056da + 80058b2: 68bb ldr r3, [r7, #8] + 80058b4: 6ed9 ldr r1, [r3, #108] @ 0x6c + 80058b6: 4b46 ldr r3, [pc, #280] @ (80059d0 ) + 80058b8: fb83 2301 smull r2, r3, r3, r1 + 80058bc: 105a asrs r2, r3, #1 + 80058be: 17cb asrs r3, r1, #31 + 80058c0: 1ad2 subs r2, r2, r3 + 80058c2: 4613 mov r3, r2 + 80058c4: 005b lsls r3, r3, #1 + 80058c6: 4413 add r3, r2 + 80058c8: 009b lsls r3, r3, #2 + 80058ca: 1aca subs r2, r1, r3 + 80058cc: 2a07 cmp r2, #7 + 80058ce: d12e bne.n 800592e { //фильтрованный скользящим средним период TX_BUF[23] = ((icd_str->filt_period * 5) >> 8) & 0xFF; - 800567c: 68bb ldr r3, [r7, #8] - 800567e: f8b3 308c ldrh.w r3, [r3, #140] @ 0x8c - 8005682: 461a mov r2, r3 - 8005684: 4613 mov r3, r2 - 8005686: 009b lsls r3, r3, #2 - 8005688: 4413 add r3, r2 - 800568a: 121b asrs r3, r3, #8 - 800568c: b2da uxtb r2, r3 - 800568e: 4b3c ldr r3, [pc, #240] @ (8005780 ) - 8005690: 75da strb r2, [r3, #23] + 80058d0: 68bb ldr r3, [r7, #8] + 80058d2: f8b3 308c ldrh.w r3, [r3, #140] @ 0x8c + 80058d6: 461a mov r2, r3 + 80058d8: 4613 mov r3, r2 + 80058da: 009b lsls r3, r3, #2 + 80058dc: 4413 add r3, r2 + 80058de: 121b asrs r3, r3, #8 + 80058e0: b2da uxtb r2, r3 + 80058e2: 4b3c ldr r3, [pc, #240] @ (80059d4 ) + 80058e4: 75da strb r2, [r3, #23] TX_BUF[24] = ((icd_str->filt_period * 5) & 0xFF); - 8005692: 68bb ldr r3, [r7, #8] - 8005694: f8b3 308c ldrh.w r3, [r3, #140] @ 0x8c - 8005698: b2db uxtb r3, r3 - 800569a: 461a mov r2, r3 - 800569c: 0092 lsls r2, r2, #2 - 800569e: 4413 add r3, r2 - 80056a0: b2da uxtb r2, r3 - 80056a2: 4b37 ldr r3, [pc, #220] @ (8005780 ) - 80056a4: 761a strb r2, [r3, #24] + 80058e6: 68bb ldr r3, [r7, #8] + 80058e8: f8b3 308c ldrh.w r3, [r3, #140] @ 0x8c + 80058ec: b2db uxtb r3, r3 + 80058ee: 461a mov r2, r3 + 80058f0: 0092 lsls r2, r2, #2 + 80058f2: 4413 add r3, r2 + 80058f4: b2da uxtb r2, r3 + 80058f6: 4b37 ldr r3, [pc, #220] @ (80059d4 ) + 80058f8: 761a strb r2, [r3, #24] //счётчик фибриляции при обнаружении короткого RR он растёт TX_BUF[25] = ((icd_str->fibr_cnt) & 0xFF); - 80056a6: 68bb ldr r3, [r7, #8] - 80056a8: f893 208e ldrb.w r2, [r3, #142] @ 0x8e - 80056ac: 4b34 ldr r3, [pc, #208] @ (8005780 ) - 80056ae: 765a strb r2, [r3, #25] + 80058fa: 68bb ldr r3, [r7, #8] + 80058fc: f893 208e ldrb.w r2, [r3, #142] @ 0x8e + 8005900: 4b34 ldr r3, [pc, #208] @ (80059d4 ) + 8005902: 765a strb r2, [r3, #25] //счётчик Тахикардии 2 при обнаружении короткого RR он растёт TX_BUF[26] = ((icd_str->tachy_2_cnt) & 0xFF); - 80056b0: 68bb ldr r3, [r7, #8] - 80056b2: f893 208f ldrb.w r2, [r3, #143] @ 0x8f - 80056b6: 4b32 ldr r3, [pc, #200] @ (8005780 ) - 80056b8: 769a strb r2, [r3, #26] + 8005904: 68bb ldr r3, [r7, #8] + 8005906: f893 208f ldrb.w r2, [r3, #143] @ 0x8f + 800590a: 4b32 ldr r3, [pc, #200] @ (80059d4 ) + 800590c: 769a strb r2, [r3, #26] //счётчик Тахикардии 1 при обнаружении короткого RR он растёт TX_BUF[27] = ((icd_str->tachy_1_cnt) & 0xFF); - 80056ba: 68bb ldr r3, [r7, #8] - 80056bc: f893 2090 ldrb.w r2, [r3, #144] @ 0x90 - 80056c0: 4b2f ldr r3, [pc, #188] @ (8005780 ) - 80056c2: 76da strb r2, [r3, #27] + 800590e: 68bb ldr r3, [r7, #8] + 8005910: f893 2090 ldrb.w r2, [r3, #144] @ 0x90 + 8005914: 4b2f ldr r3, [pc, #188] @ (80059d4 ) + 8005916: 76da strb r2, [r3, #27] //счётчик нормальных событий при достижении 5 сбрасываем все корзины TX_BUF[28] = ((icd_str->norm_cnt) & 0xFF); - 80056c4: 68bb ldr r3, [r7, #8] - 80056c6: f893 2091 ldrb.w r2, [r3, #145] @ 0x91 - 80056ca: 4b2d ldr r3, [pc, #180] @ (8005780 ) - 80056cc: 771a strb r2, [r3, #28] + 8005918: 68bb ldr r3, [r7, #8] + 800591a: f893 2091 ldrb.w r2, [r3, #145] @ 0x91 + 800591e: 4b2d ldr r3, [pc, #180] @ (80059d4 ) + 8005920: 771a strb r2, [r3, #28] //порог счётчика фибриляций при котором начинаем терапию TX_BUF[29] = ((icd_str->fibr_max_tres) & 0xFF); - 80056ce: 68bb ldr r3, [r7, #8] - 80056d0: f893 2098 ldrb.w r2, [r3, #152] @ 0x98 - 80056d4: 4b2a ldr r3, [pc, #168] @ (8005780 ) - 80056d6: 775a strb r2, [r3, #29] - 80056d8: e13d b.n 8005956 + 8005922: 68bb ldr r3, [r7, #8] + 8005924: f893 2098 ldrb.w r2, [r3, #152] @ 0x98 + 8005928: 4b2a ldr r3, [pc, #168] @ (80059d4 ) + 800592a: 775a strb r2, [r3, #29] + 800592c: e13d b.n 8005baa } else if (icd_str->counter % 12 == 8) - 80056da: 68bb ldr r3, [r7, #8] - 80056dc: 6ed9 ldr r1, [r3, #108] @ 0x6c - 80056de: 4b27 ldr r3, [pc, #156] @ (800577c ) - 80056e0: fb83 2301 smull r2, r3, r3, r1 - 80056e4: 105a asrs r2, r3, #1 - 80056e6: 17cb asrs r3, r1, #31 - 80056e8: 1ad2 subs r2, r2, r3 - 80056ea: 4613 mov r3, r2 - 80056ec: 005b lsls r3, r3, #1 - 80056ee: 4413 add r3, r2 - 80056f0: 009b lsls r3, r3, #2 - 80056f2: 1aca subs r2, r1, r3 - 80056f4: 2a08 cmp r2, #8 - 80056f6: d145 bne.n 8005784 + 800592e: 68bb ldr r3, [r7, #8] + 8005930: 6ed9 ldr r1, [r3, #108] @ 0x6c + 8005932: 4b27 ldr r3, [pc, #156] @ (80059d0 ) + 8005934: fb83 2301 smull r2, r3, r3, r1 + 8005938: 105a asrs r2, r3, #1 + 800593a: 17cb asrs r3, r1, #31 + 800593c: 1ad2 subs r2, r2, r3 + 800593e: 4613 mov r3, r2 + 8005940: 005b lsls r3, r3, #1 + 8005942: 4413 add r3, r2 + 8005944: 009b lsls r3, r3, #2 + 8005946: 1aca subs r2, r1, r3 + 8005948: 2a08 cmp r2, #8 + 800594a: d145 bne.n 80059d8 { //фильтрованный скользящим средним период TX_BUF[23] = (((uint8_t) icd_str->hv_step_number & 0xF) << 4) | (((uint8_t) icd_str->hv_step_cnt & 0xF) << 0); - 80056f8: 68bb ldr r3, [r7, #8] - 80056fa: f893 309c ldrb.w r3, [r3, #156] @ 0x9c - 80056fe: 011b lsls r3, r3, #4 - 8005700: b25a sxtb r2, r3 - 8005702: 68bb ldr r3, [r7, #8] - 8005704: f893 309d ldrb.w r3, [r3, #157] @ 0x9d - 8005708: b25b sxtb r3, r3 - 800570a: f003 030f and.w r3, r3, #15 - 800570e: b25b sxtb r3, r3 - 8005710: 4313 orrs r3, r2 - 8005712: b25b sxtb r3, r3 - 8005714: b2da uxtb r2, r3 - 8005716: 4b1a ldr r3, [pc, #104] @ (8005780 ) - 8005718: 75da strb r2, [r3, #23] + 800594c: 68bb ldr r3, [r7, #8] + 800594e: f893 309c ldrb.w r3, [r3, #156] @ 0x9c + 8005952: 011b lsls r3, r3, #4 + 8005954: b25a sxtb r2, r3 + 8005956: 68bb ldr r3, [r7, #8] + 8005958: f893 309d ldrb.w r3, [r3, #157] @ 0x9d + 800595c: b25b sxtb r3, r3 + 800595e: f003 030f and.w r3, r3, #15 + 8005962: b25b sxtb r3, r3 + 8005964: 4313 orrs r3, r2 + 8005966: b25b sxtb r3, r3 + 8005968: b2da uxtb r2, r3 + 800596a: 4b1a ldr r3, [pc, #104] @ (80059d4 ) + 800596c: 75da strb r2, [r3, #23] //сколько джоулей в одном шаге считаем в зависимости от минимума и максимума. TX_BUF[24] = ((icd_str->hv_step_energy) >> 8) & 0xFF; - 800571a: 68bb ldr r3, [r7, #8] - 800571c: f8b3 30a6 ldrh.w r3, [r3, #166] @ 0xa6 - 8005720: 0a1b lsrs r3, r3, #8 - 8005722: b29b uxth r3, r3 - 8005724: b2da uxtb r2, r3 - 8005726: 4b16 ldr r3, [pc, #88] @ (8005780 ) - 8005728: 761a strb r2, [r3, #24] + 800596e: 68bb ldr r3, [r7, #8] + 8005970: f8b3 30a6 ldrh.w r3, [r3, #166] @ 0xa6 + 8005974: 0a1b lsrs r3, r3, #8 + 8005976: b29b uxth r3, r3 + 8005978: b2da uxtb r2, r3 + 800597a: 4b16 ldr r3, [pc, #88] @ (80059d4 ) + 800597c: 761a strb r2, [r3, #24] TX_BUF[25] = ((icd_str->hv_step_energy) & 0xFF); - 800572a: 68bb ldr r3, [r7, #8] - 800572c: f8b3 30a6 ldrh.w r3, [r3, #166] @ 0xa6 - 8005730: b2da uxtb r2, r3 - 8005732: 4b13 ldr r3, [pc, #76] @ (8005780 ) - 8005734: 765a strb r2, [r3, #25] + 800597e: 68bb ldr r3, [r7, #8] + 8005980: f8b3 30a6 ldrh.w r3, [r3, #166] @ 0xa6 + 8005984: b2da uxtb r2, r3 + 8005986: 4b13 ldr r3, [pc, #76] @ (80059d4 ) + 8005988: 765a strb r2, [r3, #25] //так как всегда мало потратим 1 байт TX_BUF[26] = (icd_str->min_energy) & 0xFF; - 8005736: 68bb ldr r3, [r7, #8] - 8005738: f8b3 30a8 ldrh.w r3, [r3, #168] @ 0xa8 - 800573c: b2da uxtb r2, r3 - 800573e: 4b10 ldr r3, [pc, #64] @ (8005780 ) - 8005740: 769a strb r2, [r3, #26] + 800598a: 68bb ldr r3, [r7, #8] + 800598c: f8b3 30a8 ldrh.w r3, [r3, #168] @ 0xa8 + 8005990: b2da uxtb r2, r3 + 8005992: 4b10 ldr r3, [pc, #64] @ (80059d4 ) + 8005994: 769a strb r2, [r3, #26] //текущая энергия конденсатора TX_BUF[27] = ((icd_str->now_energy) >> 8) & 0xFF; - 8005742: 68bb ldr r3, [r7, #8] - 8005744: f8b3 30aa ldrh.w r3, [r3, #170] @ 0xaa - 8005748: 0a1b lsrs r3, r3, #8 - 800574a: b29b uxth r3, r3 - 800574c: b2da uxtb r2, r3 - 800574e: 4b0c ldr r3, [pc, #48] @ (8005780 ) - 8005750: 76da strb r2, [r3, #27] + 8005996: 68bb ldr r3, [r7, #8] + 8005998: f8b3 30aa ldrh.w r3, [r3, #170] @ 0xaa + 800599c: 0a1b lsrs r3, r3, #8 + 800599e: b29b uxth r3, r3 + 80059a0: b2da uxtb r2, r3 + 80059a2: 4b0c ldr r3, [pc, #48] @ (80059d4 ) + 80059a4: 76da strb r2, [r3, #27] TX_BUF[28] = ((icd_str->now_energy) & 0xFF); - 8005752: 68bb ldr r3, [r7, #8] - 8005754: f8b3 30aa ldrh.w r3, [r3, #170] @ 0xaa - 8005758: b2da uxtb r2, r3 - 800575a: 4b09 ldr r3, [pc, #36] @ (8005780 ) - 800575c: 771a strb r2, [r3, #28] + 80059a6: 68bb ldr r3, [r7, #8] + 80059a8: f8b3 30aa ldrh.w r3, [r3, #170] @ 0xaa + 80059ac: b2da uxtb r2, r3 + 80059ae: 4b09 ldr r3, [pc, #36] @ (80059d4 ) + 80059b0: 771a strb r2, [r3, #28] //максимальная энергия конденсатора TX_BUF[29] = ((icd_str->max_energy) >> 8) & 0xFF; - 800575e: 68bb ldr r3, [r7, #8] - 8005760: f8b3 30ac ldrh.w r3, [r3, #172] @ 0xac - 8005764: 0a1b lsrs r3, r3, #8 - 8005766: b29b uxth r3, r3 - 8005768: b2da uxtb r2, r3 - 800576a: 4b05 ldr r3, [pc, #20] @ (8005780 ) - 800576c: 775a strb r2, [r3, #29] + 80059b2: 68bb ldr r3, [r7, #8] + 80059b4: f8b3 30ac ldrh.w r3, [r3, #172] @ 0xac + 80059b8: 0a1b lsrs r3, r3, #8 + 80059ba: b29b uxth r3, r3 + 80059bc: b2da uxtb r2, r3 + 80059be: 4b05 ldr r3, [pc, #20] @ (80059d4 ) + 80059c0: 775a strb r2, [r3, #29] TX_BUF[30] = ((icd_str->max_energy) & 0xFF); - 800576e: 68bb ldr r3, [r7, #8] - 8005770: f8b3 30ac ldrh.w r3, [r3, #172] @ 0xac - 8005774: b2da uxtb r2, r3 - 8005776: 4b02 ldr r3, [pc, #8] @ (8005780 ) - 8005778: 779a strb r2, [r3, #30] - 800577a: e0ec b.n 8005956 - 800577c: 2aaaaaab .word 0x2aaaaaab - 8005780: 20002284 .word 0x20002284 + 80059c2: 68bb ldr r3, [r7, #8] + 80059c4: f8b3 30ac ldrh.w r3, [r3, #172] @ 0xac + 80059c8: b2da uxtb r2, r3 + 80059ca: 4b02 ldr r3, [pc, #8] @ (80059d4 ) + 80059cc: 779a strb r2, [r3, #30] + 80059ce: e0ec b.n 8005baa + 80059d0: 2aaaaaab .word 0x2aaaaaab + 80059d4: 200022cc .word 0x200022cc } else if (icd_str->counter % 12 == 9) - 8005784: 68bb ldr r3, [r7, #8] - 8005786: 6ed9 ldr r1, [r3, #108] @ 0x6c - 8005788: 4b7e ldr r3, [pc, #504] @ (8005984 ) - 800578a: fb83 2301 smull r2, r3, r3, r1 - 800578e: 105a asrs r2, r3, #1 - 8005790: 17cb asrs r3, r1, #31 - 8005792: 1ad2 subs r2, r2, r3 - 8005794: 4613 mov r3, r2 - 8005796: 005b lsls r3, r3, #1 - 8005798: 4413 add r3, r2 - 800579a: 009b lsls r3, r3, #2 - 800579c: 1aca subs r2, r1, r3 - 800579e: 2a09 cmp r2, #9 - 80057a0: d152 bne.n 8005848 + 80059d8: 68bb ldr r3, [r7, #8] + 80059da: 6ed9 ldr r1, [r3, #108] @ 0x6c + 80059dc: 4b7e ldr r3, [pc, #504] @ (8005bd8 ) + 80059de: fb83 2301 smull r2, r3, r3, r1 + 80059e2: 105a asrs r2, r3, #1 + 80059e4: 17cb asrs r3, r1, #31 + 80059e6: 1ad2 subs r2, r2, r3 + 80059e8: 4613 mov r3, r2 + 80059ea: 005b lsls r3, r3, #1 + 80059ec: 4413 add r3, r2 + 80059ee: 009b lsls r3, r3, #2 + 80059f0: 1aca subs r2, r1, r3 + 80059f2: 2a09 cmp r2, #9 + 80059f4: d152 bne.n 8005a9c { //время которое мы слепы после HV разряда TX_BUF[23] = ((icd_str->hv_blind_time * 5) >> 8) & 0xFF; - 80057a2: 68bb ldr r3, [r7, #8] - 80057a4: f8b3 30ae ldrh.w r3, [r3, #174] @ 0xae - 80057a8: 461a mov r2, r3 - 80057aa: 4613 mov r3, r2 - 80057ac: 009b lsls r3, r3, #2 - 80057ae: 4413 add r3, r2 - 80057b0: 121b asrs r3, r3, #8 - 80057b2: b2da uxtb r2, r3 - 80057b4: 4b74 ldr r3, [pc, #464] @ (8005988 ) - 80057b6: 75da strb r2, [r3, #23] + 80059f6: 68bb ldr r3, [r7, #8] + 80059f8: f8b3 30ae ldrh.w r3, [r3, #174] @ 0xae + 80059fc: 461a mov r2, r3 + 80059fe: 4613 mov r3, r2 + 8005a00: 009b lsls r3, r3, #2 + 8005a02: 4413 add r3, r2 + 8005a04: 121b asrs r3, r3, #8 + 8005a06: b2da uxtb r2, r3 + 8005a08: 4b74 ldr r3, [pc, #464] @ (8005bdc ) + 8005a0a: 75da strb r2, [r3, #23] TX_BUF[24] = ((icd_str->hv_blind_time * 5) & 0xFF); - 80057b8: 68bb ldr r3, [r7, #8] - 80057ba: f8b3 30ae ldrh.w r3, [r3, #174] @ 0xae - 80057be: b2db uxtb r3, r3 - 80057c0: 461a mov r2, r3 - 80057c2: 0092 lsls r2, r2, #2 - 80057c4: 4413 add r3, r2 - 80057c6: b2da uxtb r2, r3 - 80057c8: 4b6f ldr r3, [pc, #444] @ (8005988 ) - 80057ca: 761a strb r2, [r3, #24] + 8005a0c: 68bb ldr r3, [r7, #8] + 8005a0e: f8b3 30ae ldrh.w r3, [r3, #174] @ 0xae + 8005a12: b2db uxtb r3, r3 + 8005a14: 461a mov r2, r3 + 8005a16: 0092 lsls r2, r2, #2 + 8005a18: 4413 add r3, r2 + 8005a1a: b2da uxtb r2, r3 + 8005a1c: 4b6f ldr r3, [pc, #444] @ (8005bdc ) + 8005a1e: 761a strb r2, [r3, #24] //какой длинны мы заполныем буффер при редетекции//сколько нам нужно плохих событий для запуска терапии TX_BUF[25] = (((uint8_t) icd_str->redet_num & 0xF) << 4) | ((uint8_t) icd_str->redet_bad & 0xF); - 80057cc: 68bb ldr r3, [r7, #8] - 80057ce: f893 30b0 ldrb.w r3, [r3, #176] @ 0xb0 - 80057d2: 011b lsls r3, r3, #4 - 80057d4: b25a sxtb r2, r3 - 80057d6: 68bb ldr r3, [r7, #8] - 80057d8: f893 30b1 ldrb.w r3, [r3, #177] @ 0xb1 - 80057dc: b25b sxtb r3, r3 - 80057de: f003 030f and.w r3, r3, #15 - 80057e2: b25b sxtb r3, r3 - 80057e4: 4313 orrs r3, r2 - 80057e6: b25b sxtb r3, r3 - 80057e8: b2da uxtb r2, r3 - 80057ea: 4b67 ldr r3, [pc, #412] @ (8005988 ) - 80057ec: 765a strb r2, [r3, #25] + 8005a20: 68bb ldr r3, [r7, #8] + 8005a22: f893 30b0 ldrb.w r3, [r3, #176] @ 0xb0 + 8005a26: 011b lsls r3, r3, #4 + 8005a28: b25a sxtb r2, r3 + 8005a2a: 68bb ldr r3, [r7, #8] + 8005a2c: f893 30b1 ldrb.w r3, [r3, #177] @ 0xb1 + 8005a30: b25b sxtb r3, r3 + 8005a32: f003 030f and.w r3, r3, #15 + 8005a36: b25b sxtb r3, r3 + 8005a38: 4313 orrs r3, r2 + 8005a3a: b25b sxtb r3, r3 + 8005a3c: b2da uxtb r2, r3 + 8005a3e: 4b67 ldr r3, [pc, #412] @ (8005bdc ) + 8005a40: 765a strb r2, [r3, #25] //сколько всего событий в редетекции//сколько реально плохих событий TX_BUF[26] = (((uint8_t) icd_str->redet_cnt & 0xF) << 4) | (((uint8_t) icd_str->redet_bad_cnt & 0xF) << 0); - 80057ee: 68bb ldr r3, [r7, #8] - 80057f0: f893 30b2 ldrb.w r3, [r3, #178] @ 0xb2 - 80057f4: 011b lsls r3, r3, #4 - 80057f6: b25a sxtb r2, r3 - 80057f8: 68bb ldr r3, [r7, #8] - 80057fa: f893 30b3 ldrb.w r3, [r3, #179] @ 0xb3 - 80057fe: b25b sxtb r3, r3 - 8005800: f003 030f and.w r3, r3, #15 - 8005804: b25b sxtb r3, r3 - 8005806: 4313 orrs r3, r2 - 8005808: b25b sxtb r3, r3 - 800580a: b2da uxtb r2, r3 - 800580c: 4b5e ldr r3, [pc, #376] @ (8005988 ) - 800580e: 769a strb r2, [r3, #26] + 8005a42: 68bb ldr r3, [r7, #8] + 8005a44: f893 30b2 ldrb.w r3, [r3, #178] @ 0xb2 + 8005a48: 011b lsls r3, r3, #4 + 8005a4a: b25a sxtb r2, r3 + 8005a4c: 68bb ldr r3, [r7, #8] + 8005a4e: f893 30b3 ldrb.w r3, [r3, #179] @ 0xb3 + 8005a52: b25b sxtb r3, r3 + 8005a54: f003 030f and.w r3, r3, #15 + 8005a58: b25b sxtb r3, r3 + 8005a5a: 4313 orrs r3, r2 + 8005a5c: b25b sxtb r3, r3 + 8005a5e: b2da uxtb r2, r3 + 8005a60: 4b5e ldr r3, [pc, #376] @ (8005bdc ) + 8005a62: 769a strb r2, [r3, #26] //время которое мы ничего не делаем если терапия не сработала TX_BUF[27] = ((icd_str->standby_timer) >> 24) & 0xFF; - 8005810: 68bb ldr r3, [r7, #8] - 8005812: f8d3 30b4 ldr.w r3, [r3, #180] @ 0xb4 - 8005816: 0e1b lsrs r3, r3, #24 - 8005818: b2da uxtb r2, r3 - 800581a: 4b5b ldr r3, [pc, #364] @ (8005988 ) - 800581c: 76da strb r2, [r3, #27] + 8005a64: 68bb ldr r3, [r7, #8] + 8005a66: f8d3 30b4 ldr.w r3, [r3, #180] @ 0xb4 + 8005a6a: 0e1b lsrs r3, r3, #24 + 8005a6c: b2da uxtb r2, r3 + 8005a6e: 4b5b ldr r3, [pc, #364] @ (8005bdc ) + 8005a70: 76da strb r2, [r3, #27] TX_BUF[28] = ((icd_str->standby_timer) >> 16) & 0xFF; - 800581e: 68bb ldr r3, [r7, #8] - 8005820: f8d3 30b4 ldr.w r3, [r3, #180] @ 0xb4 - 8005824: 0c1b lsrs r3, r3, #16 - 8005826: b2da uxtb r2, r3 - 8005828: 4b57 ldr r3, [pc, #348] @ (8005988 ) - 800582a: 771a strb r2, [r3, #28] + 8005a72: 68bb ldr r3, [r7, #8] + 8005a74: f8d3 30b4 ldr.w r3, [r3, #180] @ 0xb4 + 8005a78: 0c1b lsrs r3, r3, #16 + 8005a7a: b2da uxtb r2, r3 + 8005a7c: 4b57 ldr r3, [pc, #348] @ (8005bdc ) + 8005a7e: 771a strb r2, [r3, #28] TX_BUF[29] = ((icd_str->standby_timer) >> 8) & 0xFF; - 800582c: 68bb ldr r3, [r7, #8] - 800582e: f8d3 30b4 ldr.w r3, [r3, #180] @ 0xb4 - 8005832: 0a1b lsrs r3, r3, #8 - 8005834: b2da uxtb r2, r3 - 8005836: 4b54 ldr r3, [pc, #336] @ (8005988 ) - 8005838: 775a strb r2, [r3, #29] + 8005a80: 68bb ldr r3, [r7, #8] + 8005a82: f8d3 30b4 ldr.w r3, [r3, #180] @ 0xb4 + 8005a86: 0a1b lsrs r3, r3, #8 + 8005a88: b2da uxtb r2, r3 + 8005a8a: 4b54 ldr r3, [pc, #336] @ (8005bdc ) + 8005a8c: 775a strb r2, [r3, #29] TX_BUF[30] = ((icd_str->standby_timer) & 0xFF); - 800583a: 68bb ldr r3, [r7, #8] - 800583c: f8d3 30b4 ldr.w r3, [r3, #180] @ 0xb4 - 8005840: b2da uxtb r2, r3 - 8005842: 4b51 ldr r3, [pc, #324] @ (8005988 ) - 8005844: 779a strb r2, [r3, #30] - 8005846: e086 b.n 8005956 + 8005a8e: 68bb ldr r3, [r7, #8] + 8005a90: f8d3 30b4 ldr.w r3, [r3, #180] @ 0xb4 + 8005a94: b2da uxtb r2, r3 + 8005a96: 4b51 ldr r3, [pc, #324] @ (8005bdc ) + 8005a98: 779a strb r2, [r3, #30] + 8005a9a: e086 b.n 8005baa } else if (icd_str->counter % 12 == 10) - 8005848: 68bb ldr r3, [r7, #8] - 800584a: 6ed9 ldr r1, [r3, #108] @ 0x6c - 800584c: 4b4d ldr r3, [pc, #308] @ (8005984 ) - 800584e: fb83 2301 smull r2, r3, r3, r1 - 8005852: 105a asrs r2, r3, #1 - 8005854: 17cb asrs r3, r1, #31 - 8005856: 1ad2 subs r2, r2, r3 - 8005858: 4613 mov r3, r2 - 800585a: 005b lsls r3, r3, #1 - 800585c: 4413 add r3, r2 - 800585e: 009b lsls r3, r3, #2 - 8005860: 1aca subs r2, r1, r3 - 8005862: 2a0a cmp r2, #10 - 8005864: d13b bne.n 80058de + 8005a9c: 68bb ldr r3, [r7, #8] + 8005a9e: 6ed9 ldr r1, [r3, #108] @ 0x6c + 8005aa0: 4b4d ldr r3, [pc, #308] @ (8005bd8 ) + 8005aa2: fb83 2301 smull r2, r3, r3, r1 + 8005aa6: 105a asrs r2, r3, #1 + 8005aa8: 17cb asrs r3, r1, #31 + 8005aaa: 1ad2 subs r2, r2, r3 + 8005aac: 4613 mov r3, r2 + 8005aae: 005b lsls r3, r3, #1 + 8005ab0: 4413 add r3, r2 + 8005ab2: 009b lsls r3, r3, #2 + 8005ab4: 1aca subs r2, r1, r3 + 8005ab6: 2a0a cmp r2, #10 + 8005ab8: d13b bne.n 8005b32 { //новое про низкое напряжение TX_BUF[23] = (((uint8_t) icd_str->lv_polarity & 0x3) << 4) | (((uint8_t) icd_str->lv_mode & 0xF) << 0); - 8005866: 68bb ldr r3, [r7, #8] - 8005868: f893 3039 ldrb.w r3, [r3, #57] @ 0x39 - 800586c: 011b lsls r3, r3, #4 - 800586e: b25b sxtb r3, r3 - 8005870: f003 0330 and.w r3, r3, #48 @ 0x30 - 8005874: b25a sxtb r2, r3 - 8005876: 68bb ldr r3, [r7, #8] - 8005878: f893 303a ldrb.w r3, [r3, #58] @ 0x3a - 800587c: b25b sxtb r3, r3 - 800587e: f003 030f and.w r3, r3, #15 - 8005882: b25b sxtb r3, r3 - 8005884: 4313 orrs r3, r2 - 8005886: b25b sxtb r3, r3 - 8005888: b2da uxtb r2, r3 - 800588a: 4b3f ldr r3, [pc, #252] @ (8005988 ) - 800588c: 75da strb r2, [r3, #23] + 8005aba: 68bb ldr r3, [r7, #8] + 8005abc: f893 3039 ldrb.w r3, [r3, #57] @ 0x39 + 8005ac0: 011b lsls r3, r3, #4 + 8005ac2: b25b sxtb r3, r3 + 8005ac4: f003 0330 and.w r3, r3, #48 @ 0x30 + 8005ac8: b25a sxtb r2, r3 + 8005aca: 68bb ldr r3, [r7, #8] + 8005acc: f893 303a ldrb.w r3, [r3, #58] @ 0x3a + 8005ad0: b25b sxtb r3, r3 + 8005ad2: f003 030f and.w r3, r3, #15 + 8005ad6: b25b sxtb r3, r3 + 8005ad8: 4313 orrs r3, r2 + 8005ada: b25b sxtb r3, r3 + 8005adc: b2da uxtb r2, r3 + 8005ade: 4b3f ldr r3, [pc, #252] @ (8005bdc ) + 8005ae0: 75da strb r2, [r3, #23] TX_BUF[24] = ((icd_str->lv_shock_time) & 0xFF); //время импульса низковольной стимуляции 1-20(0,1-2мс) одна единица 0,1мс шаг 0.1мс - 800588e: 68bb ldr r3, [r7, #8] - 8005890: f893 203b ldrb.w r2, [r3, #59] @ 0x3b - 8005894: 4b3c ldr r3, [pc, #240] @ (8005988 ) - 8005896: 761a strb r2, [r3, #24] + 8005ae2: 68bb ldr r3, [r7, #8] + 8005ae4: f893 203b ldrb.w r2, [r3, #59] @ 0x3b + 8005ae8: 4b3c ldr r3, [pc, #240] @ (8005bdc ) + 8005aea: 761a strb r2, [r3, #24] TX_BUF[25] = ((icd_str->lv_relax_time) & 0xFF); //время стабилизации после удара низковольной стимуляции 0-20(0-20мс) одна единица 1мс шаг 1мс - 8005898: 68bb ldr r3, [r7, #8] - 800589a: f893 203c ldrb.w r2, [r3, #60] @ 0x3c - 800589e: 4b3a ldr r3, [pc, #232] @ (8005988 ) - 80058a0: 765a strb r2, [r3, #25] + 8005aec: 68bb ldr r3, [r7, #8] + 8005aee: f893 203c ldrb.w r2, [r3, #60] @ 0x3c + 8005af2: 4b3a ldr r3, [pc, #232] @ (8005bdc ) + 8005af4: 765a strb r2, [r3, #25] TX_BUF[26] = ((icd_str->lv_voltage) & 0xFF); //какое напряжение у импульсов 10-80(1,0-8,0В) одна единица 0,1В шаг 0,1В - 80058a2: 68bb ldr r3, [r7, #8] - 80058a4: f893 203d ldrb.w r2, [r3, #61] @ 0x3d - 80058a8: 4b37 ldr r3, [pc, #220] @ (8005988 ) - 80058aa: 769a strb r2, [r3, #26] + 8005af6: 68bb ldr r3, [r7, #8] + 8005af8: f893 203d ldrb.w r2, [r3, #61] @ 0x3d + 8005afc: 4b37 ldr r3, [pc, #220] @ (8005bdc ) + 8005afe: 769a strb r2, [r3, #26] TX_BUF[27] = ((icd_str->BURST_cnt) & 0xFF); //сколько импульсов в одной пачке 5-50 одна единица 1 импульс шаг 1 импульс - 80058ac: 68bb ldr r3, [r7, #8] - 80058ae: f893 203e ldrb.w r2, [r3, #62] @ 0x3e - 80058b2: 4b35 ldr r3, [pc, #212] @ (8005988 ) - 80058b4: 76da strb r2, [r3, #27] + 8005b00: 68bb ldr r3, [r7, #8] + 8005b02: f893 203e ldrb.w r2, [r3, #62] @ 0x3e + 8005b06: 4b35 ldr r3, [pc, #212] @ (8005bdc ) + 8005b08: 76da strb r2, [r3, #27] TX_BUF[28] = ((icd_str->BURST_voltage) & 0xFF); //какое напряжение у импульсов 10-80(1,0-8,0В) одна единица 0,1В шаг 0,1В - 80058b6: 68bb ldr r3, [r7, #8] - 80058b8: f893 203f ldrb.w r2, [r3, #63] @ 0x3f - 80058bc: 4b32 ldr r3, [pc, #200] @ (8005988 ) - 80058be: 771a strb r2, [r3, #28] + 8005b0a: 68bb ldr r3, [r7, #8] + 8005b0c: f893 203f ldrb.w r2, [r3, #63] @ 0x3f + 8005b10: 4b32 ldr r3, [pc, #200] @ (8005bdc ) + 8005b12: 771a strb r2, [r3, #28] //период следования импульсов в мс 150-500мс одна единица 1мс шаг 10 мс на ползунке TX_BUF[29] = ((icd_str->BURST_period) >> 8) & 0xFF; - 80058c0: 68bb ldr r3, [r7, #8] - 80058c2: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 - 80058c6: 0a1b lsrs r3, r3, #8 - 80058c8: b29b uxth r3, r3 - 80058ca: b2da uxtb r2, r3 - 80058cc: 4b2e ldr r3, [pc, #184] @ (8005988 ) - 80058ce: 775a strb r2, [r3, #29] + 8005b14: 68bb ldr r3, [r7, #8] + 8005b16: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 + 8005b1a: 0a1b lsrs r3, r3, #8 + 8005b1c: b29b uxth r3, r3 + 8005b1e: b2da uxtb r2, r3 + 8005b20: 4b2e ldr r3, [pc, #184] @ (8005bdc ) + 8005b22: 775a strb r2, [r3, #29] TX_BUF[30] = ((icd_str->BURST_period) & 0xFF); - 80058d0: 68bb ldr r3, [r7, #8] - 80058d2: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 - 80058d6: b2da uxtb r2, r3 - 80058d8: 4b2b ldr r3, [pc, #172] @ (8005988 ) - 80058da: 779a strb r2, [r3, #30] - 80058dc: e03b b.n 8005956 + 8005b24: 68bb ldr r3, [r7, #8] + 8005b26: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 + 8005b2a: b2da uxtb r2, r3 + 8005b2c: 4b2b ldr r3, [pc, #172] @ (8005bdc ) + 8005b2e: 779a strb r2, [r3, #30] + 8005b30: e03b b.n 8005baa } else if (icd_str->counter % 12 == 11) - 80058de: 68bb ldr r3, [r7, #8] - 80058e0: 6ed9 ldr r1, [r3, #108] @ 0x6c - 80058e2: 4b28 ldr r3, [pc, #160] @ (8005984 ) - 80058e4: fb83 2301 smull r2, r3, r3, r1 - 80058e8: 105a asrs r2, r3, #1 - 80058ea: 17cb asrs r3, r1, #31 - 80058ec: 1ad2 subs r2, r2, r3 - 80058ee: 4613 mov r3, r2 - 80058f0: 005b lsls r3, r3, #1 - 80058f2: 4413 add r3, r2 - 80058f4: 009b lsls r3, r3, #2 - 80058f6: 1aca subs r2, r1, r3 - 80058f8: 2a0b cmp r2, #11 - 80058fa: d12c bne.n 8005956 + 8005b32: 68bb ldr r3, [r7, #8] + 8005b34: 6ed9 ldr r1, [r3, #108] @ 0x6c + 8005b36: 4b28 ldr r3, [pc, #160] @ (8005bd8 ) + 8005b38: fb83 2301 smull r2, r3, r3, r1 + 8005b3c: 105a asrs r2, r3, #1 + 8005b3e: 17cb asrs r3, r1, #31 + 8005b40: 1ad2 subs r2, r2, r3 + 8005b42: 4613 mov r3, r2 + 8005b44: 005b lsls r3, r3, #1 + 8005b46: 4413 add r3, r2 + 8005b48: 009b lsls r3, r3, #2 + 8005b4a: 1aca subs r2, r1, r3 + 8005b4c: 2a0b cmp r2, #11 + 8005b4e: d12c bne.n 8005baa { //новое про высокое напряжение TX_BUF[23] = (((uint8_t) icd_str->hv_polarity & 0x3) << 2) | (((uint8_t) icd_str->hv_mode & 0x3) << 0); - 80058fc: 68bb ldr r3, [r7, #8] - 80058fe: f893 309f ldrb.w r3, [r3, #159] @ 0x9f - 8005902: 009b lsls r3, r3, #2 - 8005904: b25b sxtb r3, r3 - 8005906: f003 030c and.w r3, r3, #12 - 800590a: b25a sxtb r2, r3 - 800590c: 68bb ldr r3, [r7, #8] - 800590e: f893 30a0 ldrb.w r3, [r3, #160] @ 0xa0 - 8005912: b25b sxtb r3, r3 - 8005914: f003 0303 and.w r3, r3, #3 - 8005918: b25b sxtb r3, r3 - 800591a: 4313 orrs r3, r2 - 800591c: b25b sxtb r3, r3 - 800591e: b2da uxtb r2, r3 - 8005920: 4b19 ldr r3, [pc, #100] @ (8005988 ) - 8005922: 75da strb r2, [r3, #23] + 8005b50: 68bb ldr r3, [r7, #8] + 8005b52: f893 309f ldrb.w r3, [r3, #159] @ 0x9f + 8005b56: 009b lsls r3, r3, #2 + 8005b58: b25b sxtb r3, r3 + 8005b5a: f003 030c and.w r3, r3, #12 + 8005b5e: b25a sxtb r2, r3 + 8005b60: 68bb ldr r3, [r7, #8] + 8005b62: f893 30a0 ldrb.w r3, [r3, #160] @ 0xa0 + 8005b66: b25b sxtb r3, r3 + 8005b68: f003 0303 and.w r3, r3, #3 + 8005b6c: b25b sxtb r3, r3 + 8005b6e: 4313 orrs r3, r2 + 8005b70: b25b sxtb r3, r3 + 8005b72: b2da uxtb r2, r3 + 8005b74: 4b19 ldr r3, [pc, #100] @ (8005bdc ) + 8005b76: 75da strb r2, [r3, #23] TX_BUF[24] = ((icd_str->hv_phase_1_duration) & 0xFF);// время в десятых мс приходящееся на 1 фазу 30-120(3-12мс) одна единица 0,1мс - 8005924: 68bb ldr r3, [r7, #8] - 8005926: f893 20a1 ldrb.w r2, [r3, #161] @ 0xa1 - 800592a: 4b17 ldr r3, [pc, #92] @ (8005988 ) - 800592c: 761a strb r2, [r3, #24] + 8005b78: 68bb ldr r3, [r7, #8] + 8005b7a: f893 20a1 ldrb.w r2, [r3, #161] @ 0xa1 + 8005b7e: 4b17 ldr r3, [pc, #92] @ (8005bdc ) + 8005b80: 761a strb r2, [r3, #24] TX_BUF[25] = ((icd_str->hv_phase_2_duration) & 0xFF);// время в десятых мс приходящееся на 2 фазу 20-100(2-10мс) одна единица 0,1мс - 800592e: 68bb ldr r3, [r7, #8] - 8005930: f893 20a2 ldrb.w r2, [r3, #162] @ 0xa2 - 8005934: 4b14 ldr r3, [pc, #80] @ (8005988 ) - 8005936: 765a strb r2, [r3, #25] + 8005b82: 68bb ldr r3, [r7, #8] + 8005b84: f893 20a2 ldrb.w r2, [r3, #162] @ 0xa2 + 8005b88: 4b14 ldr r3, [pc, #80] @ (8005bdc ) + 8005b8a: 765a strb r2, [r3, #25] TX_BUF[26] = ((icd_str->hv_switch_duration) & 0xFF);// время в десятых мс приходящееся на переключение между фазами 10-30(1-3мс) одна единица 0,1мс - 8005938: 68bb ldr r3, [r7, #8] - 800593a: f893 20a3 ldrb.w r2, [r3, #163] @ 0xa3 - 800593e: 4b12 ldr r3, [pc, #72] @ (8005988 ) - 8005940: 769a strb r2, [r3, #26] + 8005b8c: 68bb ldr r3, [r7, #8] + 8005b8e: f893 20a3 ldrb.w r2, [r3, #163] @ 0xa3 + 8005b92: 4b12 ldr r3, [pc, #72] @ (8005bdc ) + 8005b94: 769a strb r2, [r3, #26] TX_BUF[27] = ((icd_str->hv_switching_voltage) & 0xFF);//процент напряжения при котором происходит завешение 1 фазы при адаптивном режиме (20-80) одна единица 1% - 8005942: 68bb ldr r3, [r7, #8] - 8005944: f893 20a4 ldrb.w r2, [r3, #164] @ 0xa4 - 8005948: 4b0f ldr r3, [pc, #60] @ (8005988 ) - 800594a: 76da strb r2, [r3, #27] + 8005b96: 68bb ldr r3, [r7, #8] + 8005b98: f893 20a4 ldrb.w r2, [r3, #164] @ 0xa4 + 8005b9c: 4b0f ldr r3, [pc, #60] @ (8005bdc ) + 8005b9e: 76da strb r2, [r3, #27] TX_BUF[28] = ((icd_str->hv_cutoff_voltage) & 0xFF); //процент напряжения при котором происходит завешение 2 фазы при адаптивном режиме (5-50) одна единица 1% - 800594c: 68bb ldr r3, [r7, #8] - 800594e: f893 20a5 ldrb.w r2, [r3, #165] @ 0xa5 - 8005952: 4b0d ldr r3, [pc, #52] @ (8005988 ) - 8005954: 771a strb r2, [r3, #28] + 8005ba0: 68bb ldr r3, [r7, #8] + 8005ba2: f893 20a5 ldrb.w r2, [r3, #165] @ 0xa5 + 8005ba6: 4b0d ldr r3, [pc, #52] @ (8005bdc ) + 8005ba8: 771a strb r2, [r3, #28] } TX_BUF[31] = 0x77; //конечный байт - 8005956: 4b0c ldr r3, [pc, #48] @ (8005988 ) - 8005958: 2277 movs r2, #119 @ 0x77 - 800595a: 77da strb r2, [r3, #31] + 8005baa: 4b0c ldr r3, [pc, #48] @ (8005bdc ) + 8005bac: 2277 movs r2, #119 @ 0x77 + 8005bae: 77da strb r2, [r3, #31] //данные шлём не всегда. if ((control->ble_mode_set == ble_raw) && (control->ble_mode_now == ble_raw)) - 800595c: 68fb ldr r3, [r7, #12] - 800595e: 7e9b ldrb r3, [r3, #26] - 8005960: 2b01 cmp r3, #1 - 8005962: d10b bne.n 800597c - 8005964: 68fb ldr r3, [r7, #12] - 8005966: 7edb ldrb r3, [r3, #27] - 8005968: 2b01 cmp r3, #1 - 800596a: d107 bne.n 800597c + 8005bb0: 68fb ldr r3, [r7, #12] + 8005bb2: 7e9b ldrb r3, [r3, #26] + 8005bb4: 2b01 cmp r3, #1 + 8005bb6: d10b bne.n 8005bd0 + 8005bb8: 68fb ldr r3, [r7, #12] + 8005bba: 7edb ldrb r3, [r3, #27] + 8005bbc: 2b01 cmp r3, #1 + 8005bbe: d107 bne.n 8005bd0 if (send) - 800596c: 78fb ldrb r3, [r7, #3] - 800596e: 2b00 cmp r3, #0 - 8005970: d004 beq.n 800597c + 8005bc0: 78fb ldrb r3, [r7, #3] + 8005bc2: 2b00 cmp r3, #0 + 8005bc4: d004 beq.n 8005bd0 HAL_UART_Transmit_DMA(&huart1, TX_BUF, TX_PLOAD_WIDTH); //TX_PLOAD_WIDTH);//было до этого TX_PLOAD_WIDTH+1 но работало не очень - 8005972: 2220 movs r2, #32 - 8005974: 4904 ldr r1, [pc, #16] @ (8005988 ) - 8005976: 4805 ldr r0, [pc, #20] @ (800598c ) - 8005978: f005 fb84 bl 800b084 + 8005bc6: 2220 movs r2, #32 + 8005bc8: 4904 ldr r1, [pc, #16] @ (8005bdc ) + 8005bca: 4805 ldr r0, [pc, #20] @ (8005be0 ) + 8005bcc: f005 fd14 bl 800b5f8 } - 800597c: bf00 nop - 800597e: 3710 adds r7, #16 - 8005980: 46bd mov sp, r7 - 8005982: bd80 pop {r7, pc} - 8005984: 2aaaaaab .word 0x2aaaaaab - 8005988: 20002284 .word 0x20002284 - 800598c: 200022a8 .word 0x200022a8 + 8005bd0: bf00 nop + 8005bd2: 3710 adds r7, #16 + 8005bd4: 46bd mov sp, r7 + 8005bd6: bd80 pop {r7, pc} + 8005bd8: 2aaaaaab .word 0x2aaaaaab + 8005bdc: 200022cc .word 0x200022cc + 8005be0: 200022f0 .word 0x200022f0 -08005990 : +08005be4 : .section .text.Reset_Handler .weak Reset_Handler .type Reset_Handler, %function Reset_Handler: ldr sp, =_estack /* set stack pointer */ - 8005990: f8df d034 ldr.w sp, [pc, #52] @ 80059c8 + 8005be4: f8df d034 ldr.w sp, [pc, #52] @ 8005c1c /* Call the clock system initialization function.*/ bl SystemInit - 8005994: f7fe fcee bl 8004374 + 8005be8: f7fe fc5c bl 80044a4 /* Copy the data segment initializers from flash to SRAM */ ldr r0, =_sdata - 8005998: 480c ldr r0, [pc, #48] @ (80059cc ) + 8005bec: 480c ldr r0, [pc, #48] @ (8005c20 ) ldr r1, =_edata - 800599a: 490d ldr r1, [pc, #52] @ (80059d0 ) + 8005bee: 490d ldr r1, [pc, #52] @ (8005c24 ) ldr r2, =_sidata - 800599c: 4a0d ldr r2, [pc, #52] @ (80059d4 ) + 8005bf0: 4a0d ldr r2, [pc, #52] @ (8005c28 ) movs r3, #0 - 800599e: 2300 movs r3, #0 + 8005bf2: 2300 movs r3, #0 b LoopCopyDataInit - 80059a0: e002 b.n 80059a8 + 8005bf4: e002 b.n 8005bfc -080059a2 : +08005bf6 : CopyDataInit: ldr r4, [r2, r3] - 80059a2: 58d4 ldr r4, [r2, r3] + 8005bf6: 58d4 ldr r4, [r2, r3] str r4, [r0, r3] - 80059a4: 50c4 str r4, [r0, r3] + 8005bf8: 50c4 str r4, [r0, r3] adds r3, r3, #4 - 80059a6: 3304 adds r3, #4 + 8005bfa: 3304 adds r3, #4 -080059a8 : +08005bfc : LoopCopyDataInit: adds r4, r0, r3 - 80059a8: 18c4 adds r4, r0, r3 + 8005bfc: 18c4 adds r4, r0, r3 cmp r4, r1 - 80059aa: 428c cmp r4, r1 + 8005bfe: 428c cmp r4, r1 bcc CopyDataInit - 80059ac: d3f9 bcc.n 80059a2 + 8005c00: d3f9 bcc.n 8005bf6 /* Zero fill the bss segment. */ ldr r2, =_sbss - 80059ae: 4a0a ldr r2, [pc, #40] @ (80059d8 ) + 8005c02: 4a0a ldr r2, [pc, #40] @ (8005c2c ) ldr r4, =_ebss - 80059b0: 4c0a ldr r4, [pc, #40] @ (80059dc ) + 8005c04: 4c0a ldr r4, [pc, #40] @ (8005c30 ) movs r3, #0 - 80059b2: 2300 movs r3, #0 + 8005c06: 2300 movs r3, #0 b LoopFillZerobss - 80059b4: e001 b.n 80059ba + 8005c08: e001 b.n 8005c0e -080059b6 : +08005c0a : FillZerobss: str r3, [r2] - 80059b6: 6013 str r3, [r2, #0] + 8005c0a: 6013 str r3, [r2, #0] adds r2, r2, #4 - 80059b8: 3204 adds r2, #4 + 8005c0c: 3204 adds r2, #4 -080059ba : +08005c0e : LoopFillZerobss: cmp r2, r4 - 80059ba: 42a2 cmp r2, r4 + 8005c0e: 42a2 cmp r2, r4 bcc FillZerobss - 80059bc: d3fb bcc.n 80059b6 + 8005c10: d3fb bcc.n 8005c0a /* Call static constructors */ bl __libc_init_array - 80059be: f008 f85d bl 800da7c <__libc_init_array> + 8005c12: f008 f9eb bl 800dfec <__libc_init_array> /* Call the application's entry point.*/ bl main - 80059c2: f7fd fabb bl 8002f3c
+ 8005c16: f7fd f9e5 bl 8002fe4
bx lr - 80059c6: 4770 bx lr + 8005c1a: 4770 bx lr ldr sp, =_estack /* set stack pointer */ - 80059c8: 20050000 .word 0x20050000 + 8005c1c: 20050000 .word 0x20050000 ldr r0, =_sdata - 80059cc: 20000000 .word 0x20000000 + 8005c20: 20000000 .word 0x20000000 ldr r1, =_edata - 80059d0: 20000070 .word 0x20000070 + 8005c24: 20000070 .word 0x20000070 ldr r2, =_sidata - 80059d4: 0800ea24 .word 0x0800ea24 + 8005c28: 0800ef94 .word 0x0800ef94 ldr r2, =_sbss - 80059d8: 20000070 .word 0x20000070 + 8005c2c: 20000070 .word 0x20000070 ldr r4, =_ebss - 80059dc: 200111b8 .word 0x200111b8 + 8005c30: 20011200 .word 0x20011200 -080059e0 : +08005c34 : * @retval None */ .section .text.Default_Handler,"ax",%progbits Default_Handler: Infinite_Loop: b Infinite_Loop - 80059e0: e7fe b.n 80059e0 + 8005c34: e7fe b.n 8005c34 ... -080059e4 : +08005c38 : * 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) { - 80059e4: b580 push {r7, lr} - 80059e6: af00 add r7, sp, #0 + 8005c38: b580 push {r7, lr} + 8005c3a: af00 add r7, sp, #0 /* Configure Flash prefetch, Instruction cache, Data cache */ #if (INSTRUCTION_CACHE_ENABLE != 0U) __HAL_FLASH_INSTRUCTION_CACHE_ENABLE(); - 80059e8: 4b0e ldr r3, [pc, #56] @ (8005a24 ) - 80059ea: 681b ldr r3, [r3, #0] - 80059ec: 4a0d ldr r2, [pc, #52] @ (8005a24 ) - 80059ee: f443 7300 orr.w r3, r3, #512 @ 0x200 - 80059f2: 6013 str r3, [r2, #0] + 8005c3c: 4b0e ldr r3, [pc, #56] @ (8005c78 ) + 8005c3e: 681b ldr r3, [r3, #0] + 8005c40: 4a0d ldr r2, [pc, #52] @ (8005c78 ) + 8005c42: f443 7300 orr.w r3, r3, #512 @ 0x200 + 8005c46: 6013 str r3, [r2, #0] #endif /* INSTRUCTION_CACHE_ENABLE */ #if (DATA_CACHE_ENABLE != 0U) __HAL_FLASH_DATA_CACHE_ENABLE(); - 80059f4: 4b0b ldr r3, [pc, #44] @ (8005a24 ) - 80059f6: 681b ldr r3, [r3, #0] - 80059f8: 4a0a ldr r2, [pc, #40] @ (8005a24 ) - 80059fa: f443 6380 orr.w r3, r3, #1024 @ 0x400 - 80059fe: 6013 str r3, [r2, #0] + 8005c48: 4b0b ldr r3, [pc, #44] @ (8005c78 ) + 8005c4a: 681b ldr r3, [r3, #0] + 8005c4c: 4a0a ldr r2, [pc, #40] @ (8005c78 ) + 8005c4e: f443 6380 orr.w r3, r3, #1024 @ 0x400 + 8005c52: 6013 str r3, [r2, #0] #endif /* DATA_CACHE_ENABLE */ #if (PREFETCH_ENABLE != 0U) __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); - 8005a00: 4b08 ldr r3, [pc, #32] @ (8005a24 ) - 8005a02: 681b ldr r3, [r3, #0] - 8005a04: 4a07 ldr r2, [pc, #28] @ (8005a24 ) - 8005a06: f443 7380 orr.w r3, r3, #256 @ 0x100 - 8005a0a: 6013 str r3, [r2, #0] + 8005c54: 4b08 ldr r3, [pc, #32] @ (8005c78 ) + 8005c56: 681b ldr r3, [r3, #0] + 8005c58: 4a07 ldr r2, [pc, #28] @ (8005c78 ) + 8005c5a: f443 7380 orr.w r3, r3, #256 @ 0x100 + 8005c5e: 6013 str r3, [r2, #0] #endif /* PREFETCH_ENABLE */ /* Set Interrupt Group Priority */ HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); - 8005a0c: 2003 movs r0, #3 - 8005a0e: f000 fe8b bl 8006728 + 8005c60: 2003 movs r0, #3 + 8005c62: f000 fe8b bl 800697c /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */ HAL_InitTick(TICK_INT_PRIORITY); - 8005a12: 200f movs r0, #15 - 8005a14: f7fe fb5c bl 80040d0 + 8005c66: 200f movs r0, #15 + 8005c68: f7fe faca bl 8004200 /* Init the low level hardware */ HAL_MspInit(); - 8005a18: f7fe fb2e bl 8004078 + 8005c6c: f7fe fa9c bl 80041a8 /* Return function status */ return HAL_OK; - 8005a1c: 2300 movs r3, #0 + 8005c70: 2300 movs r3, #0 } - 8005a1e: 4618 mov r0, r3 - 8005a20: bd80 pop {r7, pc} - 8005a22: bf00 nop - 8005a24: 40023c00 .word 0x40023c00 + 8005c72: 4618 mov r0, r3 + 8005c74: bd80 pop {r7, pc} + 8005c76: bf00 nop + 8005c78: 40023c00 .word 0x40023c00 -08005a28 : +08005c7c : * @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) { - 8005a28: b480 push {r7} - 8005a2a: af00 add r7, sp, #0 + 8005c7c: b480 push {r7} + 8005c7e: af00 add r7, sp, #0 uwTick += uwTickFreq; - 8005a2c: 4b06 ldr r3, [pc, #24] @ (8005a48 ) - 8005a2e: 781b ldrb r3, [r3, #0] - 8005a30: 461a mov r2, r3 - 8005a32: 4b06 ldr r3, [pc, #24] @ (8005a4c ) - 8005a34: 681b ldr r3, [r3, #0] - 8005a36: 4413 add r3, r2 - 8005a38: 4a04 ldr r2, [pc, #16] @ (8005a4c ) - 8005a3a: 6013 str r3, [r2, #0] + 8005c80: 4b06 ldr r3, [pc, #24] @ (8005c9c ) + 8005c82: 781b ldrb r3, [r3, #0] + 8005c84: 461a mov r2, r3 + 8005c86: 4b06 ldr r3, [pc, #24] @ (8005ca0 ) + 8005c88: 681b ldr r3, [r3, #0] + 8005c8a: 4413 add r3, r2 + 8005c8c: 4a04 ldr r2, [pc, #16] @ (8005ca0 ) + 8005c8e: 6013 str r3, [r2, #0] } - 8005a3c: bf00 nop - 8005a3e: 46bd mov sp, r7 - 8005a40: f85d 7b04 ldr.w r7, [sp], #4 - 8005a44: 4770 bx lr - 8005a46: bf00 nop - 8005a48: 20000008 .word 0x20000008 - 8005a4c: 200024b8 .word 0x200024b8 + 8005c90: bf00 nop + 8005c92: 46bd mov sp, r7 + 8005c94: f85d 7b04 ldr.w r7, [sp], #4 + 8005c98: 4770 bx lr + 8005c9a: bf00 nop + 8005c9c: 20000008 .word 0x20000008 + 8005ca0: 20002500 .word 0x20002500 -08005a50 : +08005ca4 : * @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) { - 8005a50: b480 push {r7} - 8005a52: af00 add r7, sp, #0 + 8005ca4: b480 push {r7} + 8005ca6: af00 add r7, sp, #0 return uwTick; - 8005a54: 4b03 ldr r3, [pc, #12] @ (8005a64 ) - 8005a56: 681b ldr r3, [r3, #0] + 8005ca8: 4b03 ldr r3, [pc, #12] @ (8005cb8 ) + 8005caa: 681b ldr r3, [r3, #0] } - 8005a58: 4618 mov r0, r3 - 8005a5a: 46bd mov sp, r7 - 8005a5c: f85d 7b04 ldr.w r7, [sp], #4 - 8005a60: 4770 bx lr - 8005a62: bf00 nop - 8005a64: 200024b8 .word 0x200024b8 + 8005cac: 4618 mov r0, r3 + 8005cae: 46bd mov sp, r7 + 8005cb0: f85d 7b04 ldr.w r7, [sp], #4 + 8005cb4: 4770 bx lr + 8005cb6: bf00 nop + 8005cb8: 20002500 .word 0x20002500 -08005a68 : +08005cbc : * implementations in user file. * @param Delay specifies the delay time length, in milliseconds. * @retval None */ __weak void HAL_Delay(uint32_t Delay) { - 8005a68: b580 push {r7, lr} - 8005a6a: b084 sub sp, #16 - 8005a6c: af00 add r7, sp, #0 - 8005a6e: 6078 str r0, [r7, #4] + 8005cbc: b580 push {r7, lr} + 8005cbe: b084 sub sp, #16 + 8005cc0: af00 add r7, sp, #0 + 8005cc2: 6078 str r0, [r7, #4] uint32_t tickstart = HAL_GetTick(); - 8005a70: f7ff ffee bl 8005a50 - 8005a74: 60b8 str r0, [r7, #8] + 8005cc4: f7ff ffee bl 8005ca4 + 8005cc8: 60b8 str r0, [r7, #8] uint32_t wait = Delay; - 8005a76: 687b ldr r3, [r7, #4] - 8005a78: 60fb str r3, [r7, #12] + 8005cca: 687b ldr r3, [r7, #4] + 8005ccc: 60fb str r3, [r7, #12] /* Add a freq to guarantee minimum wait */ if (wait < HAL_MAX_DELAY) - 8005a7a: 68fb ldr r3, [r7, #12] - 8005a7c: f1b3 3fff cmp.w r3, #4294967295 - 8005a80: d005 beq.n 8005a8e + 8005cce: 68fb ldr r3, [r7, #12] + 8005cd0: f1b3 3fff cmp.w r3, #4294967295 + 8005cd4: d005 beq.n 8005ce2 { wait += (uint32_t)(uwTickFreq); - 8005a82: 4b0a ldr r3, [pc, #40] @ (8005aac ) - 8005a84: 781b ldrb r3, [r3, #0] - 8005a86: 461a mov r2, r3 - 8005a88: 68fb ldr r3, [r7, #12] - 8005a8a: 4413 add r3, r2 - 8005a8c: 60fb str r3, [r7, #12] + 8005cd6: 4b0a ldr r3, [pc, #40] @ (8005d00 ) + 8005cd8: 781b ldrb r3, [r3, #0] + 8005cda: 461a mov r2, r3 + 8005cdc: 68fb ldr r3, [r7, #12] + 8005cde: 4413 add r3, r2 + 8005ce0: 60fb str r3, [r7, #12] } while((HAL_GetTick() - tickstart) < wait) - 8005a8e: bf00 nop - 8005a90: f7ff ffde bl 8005a50 - 8005a94: 4602 mov r2, r0 - 8005a96: 68bb ldr r3, [r7, #8] - 8005a98: 1ad3 subs r3, r2, r3 - 8005a9a: 68fa ldr r2, [r7, #12] - 8005a9c: 429a cmp r2, r3 - 8005a9e: d8f7 bhi.n 8005a90 + 8005ce2: bf00 nop + 8005ce4: f7ff ffde bl 8005ca4 + 8005ce8: 4602 mov r2, r0 + 8005cea: 68bb ldr r3, [r7, #8] + 8005cec: 1ad3 subs r3, r2, r3 + 8005cee: 68fa ldr r2, [r7, #12] + 8005cf0: 429a cmp r2, r3 + 8005cf2: d8f7 bhi.n 8005ce4 { } } - 8005aa0: bf00 nop - 8005aa2: bf00 nop - 8005aa4: 3710 adds r7, #16 - 8005aa6: 46bd mov sp, r7 - 8005aa8: bd80 pop {r7, pc} - 8005aaa: bf00 nop - 8005aac: 20000008 .word 0x20000008 + 8005cf4: bf00 nop + 8005cf6: bf00 nop + 8005cf8: 3710 adds r7, #16 + 8005cfa: 46bd mov sp, r7 + 8005cfc: bd80 pop {r7, pc} + 8005cfe: bf00 nop + 8005d00: 20000008 .word 0x20000008 -08005ab0 : +08005d04 : * @param hadc pointer to a ADC_HandleTypeDef structure that contains * the configuration information for the specified ADC. * @retval HAL status */ HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef *hadc) { - 8005ab0: b580 push {r7, lr} - 8005ab2: b084 sub sp, #16 - 8005ab4: af00 add r7, sp, #0 - 8005ab6: 6078 str r0, [r7, #4] + 8005d04: b580 push {r7, lr} + 8005d06: b084 sub sp, #16 + 8005d08: af00 add r7, sp, #0 + 8005d0a: 6078 str r0, [r7, #4] HAL_StatusTypeDef tmp_hal_status = HAL_OK; - 8005ab8: 2300 movs r3, #0 - 8005aba: 73fb strb r3, [r7, #15] + 8005d0c: 2300 movs r3, #0 + 8005d0e: 73fb strb r3, [r7, #15] /* Check ADC handle */ if (hadc == NULL) - 8005abc: 687b ldr r3, [r7, #4] - 8005abe: 2b00 cmp r3, #0 - 8005ac0: d101 bne.n 8005ac6 + 8005d10: 687b ldr r3, [r7, #4] + 8005d12: 2b00 cmp r3, #0 + 8005d14: d101 bne.n 8005d1a { return HAL_ERROR; - 8005ac2: 2301 movs r3, #1 - 8005ac4: e14e b.n 8005d64 + 8005d16: 2301 movs r3, #1 + 8005d18: e14e b.n 8005fb8 } /* Check the parameters */ assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); - 8005ac6: 687b ldr r3, [r7, #4] - 8005ac8: 681b ldr r3, [r3, #0] - 8005aca: 4a90 ldr r2, [pc, #576] @ (8005d0c ) - 8005acc: 4293 cmp r3, r2 - 8005ace: d004 beq.n 8005ada - 8005ad0: f44f 71a1 mov.w r1, #322 @ 0x142 - 8005ad4: 488e ldr r0, [pc, #568] @ (8005d10 ) - 8005ad6: f7fd fb4d bl 8003174 + 8005d1a: 687b ldr r3, [r7, #4] + 8005d1c: 681b ldr r3, [r3, #0] + 8005d1e: 4a90 ldr r2, [pc, #576] @ (8005f60 ) + 8005d20: 4293 cmp r3, r2 + 8005d22: d004 beq.n 8005d2e + 8005d24: f44f 71a1 mov.w r1, #322 @ 0x142 + 8005d28: 488e ldr r0, [pc, #568] @ (8005f64 ) + 8005d2a: f7fd fa7f bl 800322c assert_param(IS_ADC_CLOCKPRESCALER(hadc->Init.ClockPrescaler)); - 8005ada: 687b ldr r3, [r7, #4] - 8005adc: 685b ldr r3, [r3, #4] - 8005ade: 2b00 cmp r3, #0 - 8005ae0: d013 beq.n 8005b0a - 8005ae2: 687b ldr r3, [r7, #4] - 8005ae4: 685b ldr r3, [r3, #4] - 8005ae6: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8005aea: d00e beq.n 8005b0a - 8005aec: 687b ldr r3, [r7, #4] - 8005aee: 685b ldr r3, [r3, #4] - 8005af0: f5b3 3f00 cmp.w r3, #131072 @ 0x20000 - 8005af4: d009 beq.n 8005b0a - 8005af6: 687b ldr r3, [r7, #4] - 8005af8: 685b ldr r3, [r3, #4] - 8005afa: f5b3 3f40 cmp.w r3, #196608 @ 0x30000 - 8005afe: d004 beq.n 8005b0a - 8005b00: f240 1143 movw r1, #323 @ 0x143 - 8005b04: 4882 ldr r0, [pc, #520] @ (8005d10 ) - 8005b06: f7fd fb35 bl 8003174 + 8005d2e: 687b ldr r3, [r7, #4] + 8005d30: 685b ldr r3, [r3, #4] + 8005d32: 2b00 cmp r3, #0 + 8005d34: d013 beq.n 8005d5e + 8005d36: 687b ldr r3, [r7, #4] + 8005d38: 685b ldr r3, [r3, #4] + 8005d3a: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 8005d3e: d00e beq.n 8005d5e + 8005d40: 687b ldr r3, [r7, #4] + 8005d42: 685b ldr r3, [r3, #4] + 8005d44: f5b3 3f00 cmp.w r3, #131072 @ 0x20000 + 8005d48: d009 beq.n 8005d5e + 8005d4a: 687b ldr r3, [r7, #4] + 8005d4c: 685b ldr r3, [r3, #4] + 8005d4e: f5b3 3f40 cmp.w r3, #196608 @ 0x30000 + 8005d52: d004 beq.n 8005d5e + 8005d54: f240 1143 movw r1, #323 @ 0x143 + 8005d58: 4882 ldr r0, [pc, #520] @ (8005f64 ) + 8005d5a: f7fd fa67 bl 800322c assert_param(IS_ADC_RESOLUTION(hadc->Init.Resolution)); - 8005b0a: 687b ldr r3, [r7, #4] - 8005b0c: 689b ldr r3, [r3, #8] - 8005b0e: 2b00 cmp r3, #0 - 8005b10: d013 beq.n 8005b3a - 8005b12: 687b ldr r3, [r7, #4] - 8005b14: 689b ldr r3, [r3, #8] - 8005b16: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 - 8005b1a: d00e beq.n 8005b3a - 8005b1c: 687b ldr r3, [r7, #4] - 8005b1e: 689b ldr r3, [r3, #8] - 8005b20: f1b3 7f00 cmp.w r3, #33554432 @ 0x2000000 - 8005b24: d009 beq.n 8005b3a - 8005b26: 687b ldr r3, [r7, #4] - 8005b28: 689b ldr r3, [r3, #8] - 8005b2a: f1b3 7f40 cmp.w r3, #50331648 @ 0x3000000 - 8005b2e: d004 beq.n 8005b3a - 8005b30: f44f 71a2 mov.w r1, #324 @ 0x144 - 8005b34: 4876 ldr r0, [pc, #472] @ (8005d10 ) - 8005b36: f7fd fb1d bl 8003174 + 8005d5e: 687b ldr r3, [r7, #4] + 8005d60: 689b ldr r3, [r3, #8] + 8005d62: 2b00 cmp r3, #0 + 8005d64: d013 beq.n 8005d8e + 8005d66: 687b ldr r3, [r7, #4] + 8005d68: 689b ldr r3, [r3, #8] + 8005d6a: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 + 8005d6e: d00e beq.n 8005d8e + 8005d70: 687b ldr r3, [r7, #4] + 8005d72: 689b ldr r3, [r3, #8] + 8005d74: f1b3 7f00 cmp.w r3, #33554432 @ 0x2000000 + 8005d78: d009 beq.n 8005d8e + 8005d7a: 687b ldr r3, [r7, #4] + 8005d7c: 689b ldr r3, [r3, #8] + 8005d7e: f1b3 7f40 cmp.w r3, #50331648 @ 0x3000000 + 8005d82: d004 beq.n 8005d8e + 8005d84: f44f 71a2 mov.w r1, #324 @ 0x144 + 8005d88: 4876 ldr r0, [pc, #472] @ (8005f64 ) + 8005d8a: f7fd fa4f bl 800322c assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ScanConvMode)); - 8005b3a: 687b ldr r3, [r7, #4] - 8005b3c: 691b ldr r3, [r3, #16] - 8005b3e: 2b00 cmp r3, #0 - 8005b40: d008 beq.n 8005b54 - 8005b42: 687b ldr r3, [r7, #4] - 8005b44: 691b ldr r3, [r3, #16] - 8005b46: 2b01 cmp r3, #1 - 8005b48: d004 beq.n 8005b54 - 8005b4a: f240 1145 movw r1, #325 @ 0x145 - 8005b4e: 4870 ldr r0, [pc, #448] @ (8005d10 ) - 8005b50: f7fd fb10 bl 8003174 + 8005d8e: 687b ldr r3, [r7, #4] + 8005d90: 691b ldr r3, [r3, #16] + 8005d92: 2b00 cmp r3, #0 + 8005d94: d008 beq.n 8005da8 + 8005d96: 687b ldr r3, [r7, #4] + 8005d98: 691b ldr r3, [r3, #16] + 8005d9a: 2b01 cmp r3, #1 + 8005d9c: d004 beq.n 8005da8 + 8005d9e: f240 1145 movw r1, #325 @ 0x145 + 8005da2: 4870 ldr r0, [pc, #448] @ (8005f64 ) + 8005da4: f7fd fa42 bl 800322c assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode)); - 8005b54: 687b ldr r3, [r7, #4] - 8005b56: 7e1b ldrb r3, [r3, #24] - 8005b58: 2b00 cmp r3, #0 - 8005b5a: d008 beq.n 8005b6e - 8005b5c: 687b ldr r3, [r7, #4] - 8005b5e: 7e1b ldrb r3, [r3, #24] - 8005b60: 2b01 cmp r3, #1 - 8005b62: d004 beq.n 8005b6e - 8005b64: f44f 71a3 mov.w r1, #326 @ 0x146 - 8005b68: 4869 ldr r0, [pc, #420] @ (8005d10 ) - 8005b6a: f7fd fb03 bl 8003174 + 8005da8: 687b ldr r3, [r7, #4] + 8005daa: 7e1b ldrb r3, [r3, #24] + 8005dac: 2b00 cmp r3, #0 + 8005dae: d008 beq.n 8005dc2 + 8005db0: 687b ldr r3, [r7, #4] + 8005db2: 7e1b ldrb r3, [r3, #24] + 8005db4: 2b01 cmp r3, #1 + 8005db6: d004 beq.n 8005dc2 + 8005db8: f44f 71a3 mov.w r1, #326 @ 0x146 + 8005dbc: 4869 ldr r0, [pc, #420] @ (8005f64 ) + 8005dbe: f7fd fa35 bl 800322c assert_param(IS_ADC_EXT_TRIG(hadc->Init.ExternalTrigConv)); - 8005b6e: 687b ldr r3, [r7, #4] - 8005b70: 6a9b ldr r3, [r3, #40] @ 0x28 - 8005b72: 2b00 cmp r3, #0 - 8005b74: d054 beq.n 8005c20 - 8005b76: 687b ldr r3, [r7, #4] - 8005b78: 6a9b ldr r3, [r3, #40] @ 0x28 - 8005b7a: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 - 8005b7e: d04f beq.n 8005c20 - 8005b80: 687b ldr r3, [r7, #4] - 8005b82: 6a9b ldr r3, [r3, #40] @ 0x28 - 8005b84: f1b3 7f00 cmp.w r3, #33554432 @ 0x2000000 - 8005b88: d04a beq.n 8005c20 - 8005b8a: 687b ldr r3, [r7, #4] - 8005b8c: 6a9b ldr r3, [r3, #40] @ 0x28 - 8005b8e: f1b3 7f40 cmp.w r3, #50331648 @ 0x3000000 - 8005b92: d045 beq.n 8005c20 - 8005b94: 687b ldr r3, [r7, #4] - 8005b96: 6a9b ldr r3, [r3, #40] @ 0x28 - 8005b98: f1b3 6f80 cmp.w r3, #67108864 @ 0x4000000 - 8005b9c: d040 beq.n 8005c20 - 8005b9e: 687b ldr r3, [r7, #4] - 8005ba0: 6a9b ldr r3, [r3, #40] @ 0x28 - 8005ba2: f1b3 6fa0 cmp.w r3, #83886080 @ 0x5000000 - 8005ba6: d03b beq.n 8005c20 - 8005ba8: 687b ldr r3, [r7, #4] - 8005baa: 6a9b ldr r3, [r3, #40] @ 0x28 - 8005bac: f1b3 6fc0 cmp.w r3, #100663296 @ 0x6000000 - 8005bb0: d036 beq.n 8005c20 - 8005bb2: 687b ldr r3, [r7, #4] - 8005bb4: 6a9b ldr r3, [r3, #40] @ 0x28 - 8005bb6: f1b3 6fe0 cmp.w r3, #117440512 @ 0x7000000 - 8005bba: d031 beq.n 8005c20 - 8005bbc: 687b ldr r3, [r7, #4] - 8005bbe: 6a9b ldr r3, [r3, #40] @ 0x28 - 8005bc0: f1b3 6f00 cmp.w r3, #134217728 @ 0x8000000 - 8005bc4: d02c beq.n 8005c20 - 8005bc6: 687b ldr r3, [r7, #4] - 8005bc8: 6a9b ldr r3, [r3, #40] @ 0x28 - 8005bca: f1b3 6f10 cmp.w r3, #150994944 @ 0x9000000 - 8005bce: d027 beq.n 8005c20 - 8005bd0: 687b ldr r3, [r7, #4] - 8005bd2: 6a9b ldr r3, [r3, #40] @ 0x28 - 8005bd4: f1b3 6f20 cmp.w r3, #167772160 @ 0xa000000 - 8005bd8: d022 beq.n 8005c20 - 8005bda: 687b ldr r3, [r7, #4] - 8005bdc: 6a9b ldr r3, [r3, #40] @ 0x28 - 8005bde: f1b3 6f30 cmp.w r3, #184549376 @ 0xb000000 - 8005be2: d01d beq.n 8005c20 - 8005be4: 687b ldr r3, [r7, #4] - 8005be6: 6a9b ldr r3, [r3, #40] @ 0x28 - 8005be8: f1b3 6f40 cmp.w r3, #201326592 @ 0xc000000 - 8005bec: d018 beq.n 8005c20 - 8005bee: 687b ldr r3, [r7, #4] - 8005bf0: 6a9b ldr r3, [r3, #40] @ 0x28 - 8005bf2: f1b3 6f50 cmp.w r3, #218103808 @ 0xd000000 - 8005bf6: d013 beq.n 8005c20 - 8005bf8: 687b ldr r3, [r7, #4] - 8005bfa: 6a9b ldr r3, [r3, #40] @ 0x28 - 8005bfc: f1b3 6f60 cmp.w r3, #234881024 @ 0xe000000 - 8005c00: d00e beq.n 8005c20 - 8005c02: 687b ldr r3, [r7, #4] - 8005c04: 6a9b ldr r3, [r3, #40] @ 0x28 - 8005c06: f1b3 6f70 cmp.w r3, #251658240 @ 0xf000000 - 8005c0a: d009 beq.n 8005c20 - 8005c0c: 687b ldr r3, [r7, #4] - 8005c0e: 6a9b ldr r3, [r3, #40] @ 0x28 - 8005c10: 4a40 ldr r2, [pc, #256] @ (8005d14 ) - 8005c12: 4293 cmp r3, r2 - 8005c14: d004 beq.n 8005c20 - 8005c16: f240 1147 movw r1, #327 @ 0x147 - 8005c1a: 483d ldr r0, [pc, #244] @ (8005d10 ) - 8005c1c: f7fd faaa bl 8003174 + 8005dc2: 687b ldr r3, [r7, #4] + 8005dc4: 6a9b ldr r3, [r3, #40] @ 0x28 + 8005dc6: 2b00 cmp r3, #0 + 8005dc8: d054 beq.n 8005e74 + 8005dca: 687b ldr r3, [r7, #4] + 8005dcc: 6a9b ldr r3, [r3, #40] @ 0x28 + 8005dce: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 + 8005dd2: d04f beq.n 8005e74 + 8005dd4: 687b ldr r3, [r7, #4] + 8005dd6: 6a9b ldr r3, [r3, #40] @ 0x28 + 8005dd8: f1b3 7f00 cmp.w r3, #33554432 @ 0x2000000 + 8005ddc: d04a beq.n 8005e74 + 8005dde: 687b ldr r3, [r7, #4] + 8005de0: 6a9b ldr r3, [r3, #40] @ 0x28 + 8005de2: f1b3 7f40 cmp.w r3, #50331648 @ 0x3000000 + 8005de6: d045 beq.n 8005e74 + 8005de8: 687b ldr r3, [r7, #4] + 8005dea: 6a9b ldr r3, [r3, #40] @ 0x28 + 8005dec: f1b3 6f80 cmp.w r3, #67108864 @ 0x4000000 + 8005df0: d040 beq.n 8005e74 + 8005df2: 687b ldr r3, [r7, #4] + 8005df4: 6a9b ldr r3, [r3, #40] @ 0x28 + 8005df6: f1b3 6fa0 cmp.w r3, #83886080 @ 0x5000000 + 8005dfa: d03b beq.n 8005e74 + 8005dfc: 687b ldr r3, [r7, #4] + 8005dfe: 6a9b ldr r3, [r3, #40] @ 0x28 + 8005e00: f1b3 6fc0 cmp.w r3, #100663296 @ 0x6000000 + 8005e04: d036 beq.n 8005e74 + 8005e06: 687b ldr r3, [r7, #4] + 8005e08: 6a9b ldr r3, [r3, #40] @ 0x28 + 8005e0a: f1b3 6fe0 cmp.w r3, #117440512 @ 0x7000000 + 8005e0e: d031 beq.n 8005e74 + 8005e10: 687b ldr r3, [r7, #4] + 8005e12: 6a9b ldr r3, [r3, #40] @ 0x28 + 8005e14: f1b3 6f00 cmp.w r3, #134217728 @ 0x8000000 + 8005e18: d02c beq.n 8005e74 + 8005e1a: 687b ldr r3, [r7, #4] + 8005e1c: 6a9b ldr r3, [r3, #40] @ 0x28 + 8005e1e: f1b3 6f10 cmp.w r3, #150994944 @ 0x9000000 + 8005e22: d027 beq.n 8005e74 + 8005e24: 687b ldr r3, [r7, #4] + 8005e26: 6a9b ldr r3, [r3, #40] @ 0x28 + 8005e28: f1b3 6f20 cmp.w r3, #167772160 @ 0xa000000 + 8005e2c: d022 beq.n 8005e74 + 8005e2e: 687b ldr r3, [r7, #4] + 8005e30: 6a9b ldr r3, [r3, #40] @ 0x28 + 8005e32: f1b3 6f30 cmp.w r3, #184549376 @ 0xb000000 + 8005e36: d01d beq.n 8005e74 + 8005e38: 687b ldr r3, [r7, #4] + 8005e3a: 6a9b ldr r3, [r3, #40] @ 0x28 + 8005e3c: f1b3 6f40 cmp.w r3, #201326592 @ 0xc000000 + 8005e40: d018 beq.n 8005e74 + 8005e42: 687b ldr r3, [r7, #4] + 8005e44: 6a9b ldr r3, [r3, #40] @ 0x28 + 8005e46: f1b3 6f50 cmp.w r3, #218103808 @ 0xd000000 + 8005e4a: d013 beq.n 8005e74 + 8005e4c: 687b ldr r3, [r7, #4] + 8005e4e: 6a9b ldr r3, [r3, #40] @ 0x28 + 8005e50: f1b3 6f60 cmp.w r3, #234881024 @ 0xe000000 + 8005e54: d00e beq.n 8005e74 + 8005e56: 687b ldr r3, [r7, #4] + 8005e58: 6a9b ldr r3, [r3, #40] @ 0x28 + 8005e5a: f1b3 6f70 cmp.w r3, #251658240 @ 0xf000000 + 8005e5e: d009 beq.n 8005e74 + 8005e60: 687b ldr r3, [r7, #4] + 8005e62: 6a9b ldr r3, [r3, #40] @ 0x28 + 8005e64: 4a40 ldr r2, [pc, #256] @ (8005f68 ) + 8005e66: 4293 cmp r3, r2 + 8005e68: d004 beq.n 8005e74 + 8005e6a: f240 1147 movw r1, #327 @ 0x147 + 8005e6e: 483d ldr r0, [pc, #244] @ (8005f64 ) + 8005e70: f7fd f9dc bl 800322c assert_param(IS_ADC_DATA_ALIGN(hadc->Init.DataAlign)); - 8005c20: 687b ldr r3, [r7, #4] - 8005c22: 68db ldr r3, [r3, #12] - 8005c24: 2b00 cmp r3, #0 - 8005c26: d009 beq.n 8005c3c - 8005c28: 687b ldr r3, [r7, #4] - 8005c2a: 68db ldr r3, [r3, #12] - 8005c2c: f5b3 6f00 cmp.w r3, #2048 @ 0x800 - 8005c30: d004 beq.n 8005c3c - 8005c32: f44f 71a4 mov.w r1, #328 @ 0x148 - 8005c36: 4836 ldr r0, [pc, #216] @ (8005d10 ) - 8005c38: f7fd fa9c bl 8003174 + 8005e74: 687b ldr r3, [r7, #4] + 8005e76: 68db ldr r3, [r3, #12] + 8005e78: 2b00 cmp r3, #0 + 8005e7a: d009 beq.n 8005e90 + 8005e7c: 687b ldr r3, [r7, #4] + 8005e7e: 68db ldr r3, [r3, #12] + 8005e80: f5b3 6f00 cmp.w r3, #2048 @ 0x800 + 8005e84: d004 beq.n 8005e90 + 8005e86: f44f 71a4 mov.w r1, #328 @ 0x148 + 8005e8a: 4836 ldr r0, [pc, #216] @ (8005f64 ) + 8005e8c: f7fd f9ce bl 800322c assert_param(IS_ADC_REGULAR_LENGTH(hadc->Init.NbrOfConversion)); - 8005c3c: 687b ldr r3, [r7, #4] - 8005c3e: 69db ldr r3, [r3, #28] - 8005c40: 2b00 cmp r3, #0 - 8005c42: d003 beq.n 8005c4c - 8005c44: 687b ldr r3, [r7, #4] - 8005c46: 69db ldr r3, [r3, #28] - 8005c48: 2b10 cmp r3, #16 - 8005c4a: d904 bls.n 8005c56 - 8005c4c: f240 1149 movw r1, #329 @ 0x149 - 8005c50: 482f ldr r0, [pc, #188] @ (8005d10 ) - 8005c52: f7fd fa8f bl 8003174 + 8005e90: 687b ldr r3, [r7, #4] + 8005e92: 69db ldr r3, [r3, #28] + 8005e94: 2b00 cmp r3, #0 + 8005e96: d003 beq.n 8005ea0 + 8005e98: 687b ldr r3, [r7, #4] + 8005e9a: 69db ldr r3, [r3, #28] + 8005e9c: 2b10 cmp r3, #16 + 8005e9e: d904 bls.n 8005eaa + 8005ea0: f240 1149 movw r1, #329 @ 0x149 + 8005ea4: 482f ldr r0, [pc, #188] @ (8005f64 ) + 8005ea6: f7fd f9c1 bl 800322c assert_param(IS_FUNCTIONAL_STATE(hadc->Init.DMAContinuousRequests)); - 8005c56: 687b ldr r3, [r7, #4] - 8005c58: f893 3030 ldrb.w r3, [r3, #48] @ 0x30 - 8005c5c: 2b00 cmp r3, #0 - 8005c5e: d009 beq.n 8005c74 - 8005c60: 687b ldr r3, [r7, #4] - 8005c62: f893 3030 ldrb.w r3, [r3, #48] @ 0x30 - 8005c66: 2b01 cmp r3, #1 - 8005c68: d004 beq.n 8005c74 - 8005c6a: f44f 71a5 mov.w r1, #330 @ 0x14a - 8005c6e: 4828 ldr r0, [pc, #160] @ (8005d10 ) - 8005c70: f7fd fa80 bl 8003174 + 8005eaa: 687b ldr r3, [r7, #4] + 8005eac: f893 3030 ldrb.w r3, [r3, #48] @ 0x30 + 8005eb0: 2b00 cmp r3, #0 + 8005eb2: d009 beq.n 8005ec8 + 8005eb4: 687b ldr r3, [r7, #4] + 8005eb6: f893 3030 ldrb.w r3, [r3, #48] @ 0x30 + 8005eba: 2b01 cmp r3, #1 + 8005ebc: d004 beq.n 8005ec8 + 8005ebe: f44f 71a5 mov.w r1, #330 @ 0x14a + 8005ec2: 4828 ldr r0, [pc, #160] @ (8005f64 ) + 8005ec4: f7fd f9b2 bl 800322c assert_param(IS_ADC_EOCSelection(hadc->Init.EOCSelection)); - 8005c74: 687b ldr r3, [r7, #4] - 8005c76: 695b ldr r3, [r3, #20] - 8005c78: 2b01 cmp r3, #1 - 8005c7a: d00c beq.n 8005c96 - 8005c7c: 687b ldr r3, [r7, #4] - 8005c7e: 695b ldr r3, [r3, #20] - 8005c80: 2b00 cmp r3, #0 - 8005c82: d008 beq.n 8005c96 - 8005c84: 687b ldr r3, [r7, #4] - 8005c86: 695b ldr r3, [r3, #20] - 8005c88: 2b02 cmp r3, #2 - 8005c8a: d004 beq.n 8005c96 - 8005c8c: f240 114b movw r1, #331 @ 0x14b - 8005c90: 481f ldr r0, [pc, #124] @ (8005d10 ) - 8005c92: f7fd fa6f bl 8003174 + 8005ec8: 687b ldr r3, [r7, #4] + 8005eca: 695b ldr r3, [r3, #20] + 8005ecc: 2b01 cmp r3, #1 + 8005ece: d00c beq.n 8005eea + 8005ed0: 687b ldr r3, [r7, #4] + 8005ed2: 695b ldr r3, [r3, #20] + 8005ed4: 2b00 cmp r3, #0 + 8005ed6: d008 beq.n 8005eea + 8005ed8: 687b ldr r3, [r7, #4] + 8005eda: 695b ldr r3, [r3, #20] + 8005edc: 2b02 cmp r3, #2 + 8005ede: d004 beq.n 8005eea + 8005ee0: f240 114b movw r1, #331 @ 0x14b + 8005ee4: 481f ldr r0, [pc, #124] @ (8005f64 ) + 8005ee6: f7fd f9a1 bl 800322c assert_param(IS_FUNCTIONAL_STATE(hadc->Init.DiscontinuousConvMode)); - 8005c96: 687b ldr r3, [r7, #4] - 8005c98: f893 3020 ldrb.w r3, [r3, #32] - 8005c9c: 2b00 cmp r3, #0 - 8005c9e: d009 beq.n 8005cb4 - 8005ca0: 687b ldr r3, [r7, #4] - 8005ca2: f893 3020 ldrb.w r3, [r3, #32] - 8005ca6: 2b01 cmp r3, #1 - 8005ca8: d004 beq.n 8005cb4 - 8005caa: f44f 71a6 mov.w r1, #332 @ 0x14c - 8005cae: 4818 ldr r0, [pc, #96] @ (8005d10 ) - 8005cb0: f7fd fa60 bl 8003174 + 8005eea: 687b ldr r3, [r7, #4] + 8005eec: f893 3020 ldrb.w r3, [r3, #32] + 8005ef0: 2b00 cmp r3, #0 + 8005ef2: d009 beq.n 8005f08 + 8005ef4: 687b ldr r3, [r7, #4] + 8005ef6: f893 3020 ldrb.w r3, [r3, #32] + 8005efa: 2b01 cmp r3, #1 + 8005efc: d004 beq.n 8005f08 + 8005efe: f44f 71a6 mov.w r1, #332 @ 0x14c + 8005f02: 4818 ldr r0, [pc, #96] @ (8005f64 ) + 8005f04: f7fd f992 bl 800322c if (hadc->Init.ExternalTrigConv != ADC_SOFTWARE_START) - 8005cb4: 687b ldr r3, [r7, #4] - 8005cb6: 6a9b ldr r3, [r3, #40] @ 0x28 - 8005cb8: 4a16 ldr r2, [pc, #88] @ (8005d14 ) - 8005cba: 4293 cmp r3, r2 - 8005cbc: d017 beq.n 8005cee + 8005f08: 687b ldr r3, [r7, #4] + 8005f0a: 6a9b ldr r3, [r3, #40] @ 0x28 + 8005f0c: 4a16 ldr r2, [pc, #88] @ (8005f68 ) + 8005f0e: 4293 cmp r3, r2 + 8005f10: d017 beq.n 8005f42 { assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge)); - 8005cbe: 687b ldr r3, [r7, #4] - 8005cc0: 6adb ldr r3, [r3, #44] @ 0x2c - 8005cc2: 2b00 cmp r3, #0 - 8005cc4: d013 beq.n 8005cee - 8005cc6: 687b ldr r3, [r7, #4] - 8005cc8: 6adb ldr r3, [r3, #44] @ 0x2c - 8005cca: f1b3 5f80 cmp.w r3, #268435456 @ 0x10000000 - 8005cce: d00e beq.n 8005cee - 8005cd0: 687b ldr r3, [r7, #4] - 8005cd2: 6adb ldr r3, [r3, #44] @ 0x2c - 8005cd4: f1b3 5f00 cmp.w r3, #536870912 @ 0x20000000 - 8005cd8: d009 beq.n 8005cee - 8005cda: 687b ldr r3, [r7, #4] - 8005cdc: 6adb ldr r3, [r3, #44] @ 0x2c - 8005cde: f1b3 5f40 cmp.w r3, #805306368 @ 0x30000000 - 8005ce2: d004 beq.n 8005cee - 8005ce4: f44f 71a8 mov.w r1, #336 @ 0x150 - 8005ce8: 4809 ldr r0, [pc, #36] @ (8005d10 ) - 8005cea: f7fd fa43 bl 8003174 + 8005f12: 687b ldr r3, [r7, #4] + 8005f14: 6adb ldr r3, [r3, #44] @ 0x2c + 8005f16: 2b00 cmp r3, #0 + 8005f18: d013 beq.n 8005f42 + 8005f1a: 687b ldr r3, [r7, #4] + 8005f1c: 6adb ldr r3, [r3, #44] @ 0x2c + 8005f1e: f1b3 5f80 cmp.w r3, #268435456 @ 0x10000000 + 8005f22: d00e beq.n 8005f42 + 8005f24: 687b ldr r3, [r7, #4] + 8005f26: 6adb ldr r3, [r3, #44] @ 0x2c + 8005f28: f1b3 5f00 cmp.w r3, #536870912 @ 0x20000000 + 8005f2c: d009 beq.n 8005f42 + 8005f2e: 687b ldr r3, [r7, #4] + 8005f30: 6adb ldr r3, [r3, #44] @ 0x2c + 8005f32: f1b3 5f40 cmp.w r3, #805306368 @ 0x30000000 + 8005f36: d004 beq.n 8005f42 + 8005f38: f44f 71a8 mov.w r1, #336 @ 0x150 + 8005f3c: 4809 ldr r0, [pc, #36] @ (8005f64 ) + 8005f3e: f7fd f975 bl 800322c } if (hadc->State == HAL_ADC_STATE_RESET) - 8005cee: 687b ldr r3, [r7, #4] - 8005cf0: 6c1b ldr r3, [r3, #64] @ 0x40 - 8005cf2: 2b00 cmp r3, #0 - 8005cf4: d110 bne.n 8005d18 + 8005f42: 687b ldr r3, [r7, #4] + 8005f44: 6c1b ldr r3, [r3, #64] @ 0x40 + 8005f46: 2b00 cmp r3, #0 + 8005f48: d110 bne.n 8005f6c /* Init the low level hardware */ hadc->MspInitCallback(hadc); #else /* Init the low level hardware */ HAL_ADC_MspInit(hadc); - 8005cf6: 6878 ldr r0, [r7, #4] - 8005cf8: f7fb f9f4 bl 80010e4 + 8005f4a: 6878 ldr r0, [r7, #4] + 8005f4c: f7fb f8ca bl 80010e4 #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ /* Initialize ADC error code */ ADC_CLEAR_ERRORCODE(hadc); - 8005cfc: 687b ldr r3, [r7, #4] - 8005cfe: 2200 movs r2, #0 - 8005d00: 645a str r2, [r3, #68] @ 0x44 + 8005f50: 687b ldr r3, [r7, #4] + 8005f52: 2200 movs r2, #0 + 8005f54: 645a str r2, [r3, #68] @ 0x44 /* Allocate lock resource and initialize it */ hadc->Lock = HAL_UNLOCKED; - 8005d02: 687b ldr r3, [r7, #4] - 8005d04: 2200 movs r2, #0 - 8005d06: f883 203c strb.w r2, [r3, #60] @ 0x3c - 8005d0a: e005 b.n 8005d18 - 8005d0c: 40012000 .word 0x40012000 - 8005d10: 0800e73c .word 0x0800e73c - 8005d14: 0f000001 .word 0x0f000001 + 8005f56: 687b ldr r3, [r7, #4] + 8005f58: 2200 movs r2, #0 + 8005f5a: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8005f5e: e005 b.n 8005f6c + 8005f60: 40012000 .word 0x40012000 + 8005f64: 0800ecac .word 0x0800ecac + 8005f68: 0f000001 .word 0x0f000001 } /* Configuration of ADC parameters if previous preliminary actions are */ /* correctly completed. */ if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL)) - 8005d18: 687b ldr r3, [r7, #4] - 8005d1a: 6c1b ldr r3, [r3, #64] @ 0x40 - 8005d1c: f003 0310 and.w r3, r3, #16 - 8005d20: 2b00 cmp r3, #0 - 8005d22: d118 bne.n 8005d56 + 8005f6c: 687b ldr r3, [r7, #4] + 8005f6e: 6c1b ldr r3, [r3, #64] @ 0x40 + 8005f70: f003 0310 and.w r3, r3, #16 + 8005f74: 2b00 cmp r3, #0 + 8005f76: d118 bne.n 8005faa { /* Set ADC state */ ADC_STATE_CLR_SET(hadc->State, - 8005d24: 687b ldr r3, [r7, #4] - 8005d26: 6c1b ldr r3, [r3, #64] @ 0x40 - 8005d28: f423 5388 bic.w r3, r3, #4352 @ 0x1100 - 8005d2c: f023 0302 bic.w r3, r3, #2 - 8005d30: f043 0202 orr.w r2, r3, #2 - 8005d34: 687b ldr r3, [r7, #4] - 8005d36: 641a str r2, [r3, #64] @ 0x40 + 8005f78: 687b ldr r3, [r7, #4] + 8005f7a: 6c1b ldr r3, [r3, #64] @ 0x40 + 8005f7c: f423 5388 bic.w r3, r3, #4352 @ 0x1100 + 8005f80: f023 0302 bic.w r3, r3, #2 + 8005f84: f043 0202 orr.w r2, r3, #2 + 8005f88: 687b ldr r3, [r7, #4] + 8005f8a: 641a str r2, [r3, #64] @ 0x40 HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, HAL_ADC_STATE_BUSY_INTERNAL); /* Set ADC parameters */ ADC_Init(hadc); - 8005d38: 6878 ldr r0, [r7, #4] - 8005d3a: f000 fb3d bl 80063b8 + 8005f8c: 6878 ldr r0, [r7, #4] + 8005f8e: f000 fb3d bl 800660c /* Set ADC error code to none */ ADC_CLEAR_ERRORCODE(hadc); - 8005d3e: 687b ldr r3, [r7, #4] - 8005d40: 2200 movs r2, #0 - 8005d42: 645a str r2, [r3, #68] @ 0x44 + 8005f92: 687b ldr r3, [r7, #4] + 8005f94: 2200 movs r2, #0 + 8005f96: 645a str r2, [r3, #68] @ 0x44 /* Set the ADC state */ ADC_STATE_CLR_SET(hadc->State, - 8005d44: 687b ldr r3, [r7, #4] - 8005d46: 6c1b ldr r3, [r3, #64] @ 0x40 - 8005d48: f023 0303 bic.w r3, r3, #3 - 8005d4c: f043 0201 orr.w r2, r3, #1 - 8005d50: 687b ldr r3, [r7, #4] - 8005d52: 641a str r2, [r3, #64] @ 0x40 - 8005d54: e001 b.n 8005d5a + 8005f98: 687b ldr r3, [r7, #4] + 8005f9a: 6c1b ldr r3, [r3, #64] @ 0x40 + 8005f9c: f023 0303 bic.w r3, r3, #3 + 8005fa0: f043 0201 orr.w r2, r3, #1 + 8005fa4: 687b ldr r3, [r7, #4] + 8005fa6: 641a str r2, [r3, #64] @ 0x40 + 8005fa8: e001 b.n 8005fae HAL_ADC_STATE_BUSY_INTERNAL, HAL_ADC_STATE_READY); } else { tmp_hal_status = HAL_ERROR; - 8005d56: 2301 movs r3, #1 - 8005d58: 73fb strb r3, [r7, #15] + 8005faa: 2301 movs r3, #1 + 8005fac: 73fb strb r3, [r7, #15] } /* Release Lock */ __HAL_UNLOCK(hadc); - 8005d5a: 687b ldr r3, [r7, #4] - 8005d5c: 2200 movs r2, #0 - 8005d5e: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8005fae: 687b ldr r3, [r7, #4] + 8005fb0: 2200 movs r2, #0 + 8005fb2: f883 203c strb.w r2, [r3, #60] @ 0x3c /* Return function status */ return tmp_hal_status; - 8005d62: 7bfb ldrb r3, [r7, #15] + 8005fb6: 7bfb ldrb r3, [r7, #15] } - 8005d64: 4618 mov r0, r3 - 8005d66: 3710 adds r7, #16 - 8005d68: 46bd mov sp, r7 - 8005d6a: bd80 pop {r7, pc} + 8005fb8: 4618 mov r0, r3 + 8005fba: 3710 adds r7, #16 + 8005fbc: 46bd mov sp, r7 + 8005fbe: bd80 pop {r7, pc} -08005d6c : +08005fc0 : * @param hadc pointer to a ADC_HandleTypeDef structure that contains * the configuration information for the specified ADC. * @retval HAL status */ HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef *hadc) { - 8005d6c: b580 push {r7, lr} - 8005d6e: b084 sub sp, #16 - 8005d70: af00 add r7, sp, #0 - 8005d72: 6078 str r0, [r7, #4] + 8005fc0: b580 push {r7, lr} + 8005fc2: b084 sub sp, #16 + 8005fc4: af00 add r7, sp, #0 + 8005fc6: 6078 str r0, [r7, #4] __IO uint32_t counter = 0U; - 8005d74: 2300 movs r3, #0 - 8005d76: 60bb str r3, [r7, #8] + 8005fc8: 2300 movs r3, #0 + 8005fca: 60bb str r3, [r7, #8] ADC_Common_TypeDef *tmpADC_Common; /* Check the parameters */ assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode)); - 8005d78: 687b ldr r3, [r7, #4] - 8005d7a: 7e1b ldrb r3, [r3, #24] - 8005d7c: 2b00 cmp r3, #0 - 8005d7e: d008 beq.n 8005d92 - 8005d80: 687b ldr r3, [r7, #4] - 8005d82: 7e1b ldrb r3, [r3, #24] - 8005d84: 2b01 cmp r3, #1 - 8005d86: d004 beq.n 8005d92 - 8005d88: f240 21d2 movw r1, #722 @ 0x2d2 - 8005d8c: 485e ldr r0, [pc, #376] @ (8005f08 ) - 8005d8e: f7fd f9f1 bl 8003174 + 8005fcc: 687b ldr r3, [r7, #4] + 8005fce: 7e1b ldrb r3, [r3, #24] + 8005fd0: 2b00 cmp r3, #0 + 8005fd2: d008 beq.n 8005fe6 + 8005fd4: 687b ldr r3, [r7, #4] + 8005fd6: 7e1b ldrb r3, [r3, #24] + 8005fd8: 2b01 cmp r3, #1 + 8005fda: d004 beq.n 8005fe6 + 8005fdc: f240 21d2 movw r1, #722 @ 0x2d2 + 8005fe0: 485e ldr r0, [pc, #376] @ (800615c ) + 8005fe2: f7fd f923 bl 800322c assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge)); - 8005d92: 687b ldr r3, [r7, #4] - 8005d94: 6adb ldr r3, [r3, #44] @ 0x2c - 8005d96: 2b00 cmp r3, #0 - 8005d98: d013 beq.n 8005dc2 - 8005d9a: 687b ldr r3, [r7, #4] - 8005d9c: 6adb ldr r3, [r3, #44] @ 0x2c - 8005d9e: f1b3 5f80 cmp.w r3, #268435456 @ 0x10000000 - 8005da2: d00e beq.n 8005dc2 - 8005da4: 687b ldr r3, [r7, #4] - 8005da6: 6adb ldr r3, [r3, #44] @ 0x2c - 8005da8: f1b3 5f00 cmp.w r3, #536870912 @ 0x20000000 - 8005dac: d009 beq.n 8005dc2 - 8005dae: 687b ldr r3, [r7, #4] - 8005db0: 6adb ldr r3, [r3, #44] @ 0x2c - 8005db2: f1b3 5f40 cmp.w r3, #805306368 @ 0x30000000 - 8005db6: d004 beq.n 8005dc2 - 8005db8: f240 21d3 movw r1, #723 @ 0x2d3 - 8005dbc: 4852 ldr r0, [pc, #328] @ (8005f08 ) - 8005dbe: f7fd f9d9 bl 8003174 + 8005fe6: 687b ldr r3, [r7, #4] + 8005fe8: 6adb ldr r3, [r3, #44] @ 0x2c + 8005fea: 2b00 cmp r3, #0 + 8005fec: d013 beq.n 8006016 + 8005fee: 687b ldr r3, [r7, #4] + 8005ff0: 6adb ldr r3, [r3, #44] @ 0x2c + 8005ff2: f1b3 5f80 cmp.w r3, #268435456 @ 0x10000000 + 8005ff6: d00e beq.n 8006016 + 8005ff8: 687b ldr r3, [r7, #4] + 8005ffa: 6adb ldr r3, [r3, #44] @ 0x2c + 8005ffc: f1b3 5f00 cmp.w r3, #536870912 @ 0x20000000 + 8006000: d009 beq.n 8006016 + 8006002: 687b ldr r3, [r7, #4] + 8006004: 6adb ldr r3, [r3, #44] @ 0x2c + 8006006: f1b3 5f40 cmp.w r3, #805306368 @ 0x30000000 + 800600a: d004 beq.n 8006016 + 800600c: f240 21d3 movw r1, #723 @ 0x2d3 + 8006010: 4852 ldr r0, [pc, #328] @ (800615c ) + 8006012: f7fd f90b bl 800322c /* Process locked */ __HAL_LOCK(hadc); - 8005dc2: 687b ldr r3, [r7, #4] - 8005dc4: f893 303c ldrb.w r3, [r3, #60] @ 0x3c - 8005dc8: 2b01 cmp r3, #1 - 8005dca: d101 bne.n 8005dd0 - 8005dcc: 2302 movs r3, #2 - 8005dce: e097 b.n 8005f00 - 8005dd0: 687b ldr r3, [r7, #4] - 8005dd2: 2201 movs r2, #1 - 8005dd4: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8006016: 687b ldr r3, [r7, #4] + 8006018: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 800601c: 2b01 cmp r3, #1 + 800601e: d101 bne.n 8006024 + 8006020: 2302 movs r3, #2 + 8006022: e097 b.n 8006154 + 8006024: 687b ldr r3, [r7, #4] + 8006026: 2201 movs r2, #1 + 8006028: f883 203c strb.w r2, [r3, #60] @ 0x3c /* Enable the ADC peripheral */ /* Check if ADC peripheral is disabled in order to enable it and wait during Tstab time the ADC's stabilization */ if ((hadc->Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON) - 8005dd8: 687b ldr r3, [r7, #4] - 8005dda: 681b ldr r3, [r3, #0] - 8005ddc: 689b ldr r3, [r3, #8] - 8005dde: f003 0301 and.w r3, r3, #1 - 8005de2: 2b01 cmp r3, #1 - 8005de4: d018 beq.n 8005e18 + 800602c: 687b ldr r3, [r7, #4] + 800602e: 681b ldr r3, [r3, #0] + 8006030: 689b ldr r3, [r3, #8] + 8006032: f003 0301 and.w r3, r3, #1 + 8006036: 2b01 cmp r3, #1 + 8006038: d018 beq.n 800606c { /* Enable the Peripheral */ __HAL_ADC_ENABLE(hadc); - 8005de6: 687b ldr r3, [r7, #4] - 8005de8: 681b ldr r3, [r3, #0] - 8005dea: 689a ldr r2, [r3, #8] - 8005dec: 687b ldr r3, [r7, #4] - 8005dee: 681b ldr r3, [r3, #0] - 8005df0: f042 0201 orr.w r2, r2, #1 - 8005df4: 609a str r2, [r3, #8] + 800603a: 687b ldr r3, [r7, #4] + 800603c: 681b ldr r3, [r3, #0] + 800603e: 689a ldr r2, [r3, #8] + 8006040: 687b ldr r3, [r7, #4] + 8006042: 681b ldr r3, [r3, #0] + 8006044: f042 0201 orr.w r2, r2, #1 + 8006048: 609a str r2, [r3, #8] /* Delay for ADC stabilization time */ /* Compute number of CPU cycles to wait for */ counter = (ADC_STAB_DELAY_US * (SystemCoreClock / 1000000U)); - 8005df6: 4b45 ldr r3, [pc, #276] @ (8005f0c ) - 8005df8: 681b ldr r3, [r3, #0] - 8005dfa: 4a45 ldr r2, [pc, #276] @ (8005f10 ) - 8005dfc: fba2 2303 umull r2, r3, r2, r3 - 8005e00: 0c9a lsrs r2, r3, #18 - 8005e02: 4613 mov r3, r2 - 8005e04: 005b lsls r3, r3, #1 - 8005e06: 4413 add r3, r2 - 8005e08: 60bb str r3, [r7, #8] + 800604a: 4b45 ldr r3, [pc, #276] @ (8006160 ) + 800604c: 681b ldr r3, [r3, #0] + 800604e: 4a45 ldr r2, [pc, #276] @ (8006164 ) + 8006050: fba2 2303 umull r2, r3, r2, r3 + 8006054: 0c9a lsrs r2, r3, #18 + 8006056: 4613 mov r3, r2 + 8006058: 005b lsls r3, r3, #1 + 800605a: 4413 add r3, r2 + 800605c: 60bb str r3, [r7, #8] while (counter != 0U) - 8005e0a: e002 b.n 8005e12 + 800605e: e002 b.n 8006066 { counter--; - 8005e0c: 68bb ldr r3, [r7, #8] - 8005e0e: 3b01 subs r3, #1 - 8005e10: 60bb str r3, [r7, #8] + 8006060: 68bb ldr r3, [r7, #8] + 8006062: 3b01 subs r3, #1 + 8006064: 60bb str r3, [r7, #8] while (counter != 0U) - 8005e12: 68bb ldr r3, [r7, #8] - 8005e14: 2b00 cmp r3, #0 - 8005e16: d1f9 bne.n 8005e0c + 8006066: 68bb ldr r3, [r7, #8] + 8006068: 2b00 cmp r3, #0 + 800606a: d1f9 bne.n 8006060 } } /* Start conversion if ADC is effectively enabled */ if (HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_ADON)) - 8005e18: 687b ldr r3, [r7, #4] - 8005e1a: 681b ldr r3, [r3, #0] - 8005e1c: 689b ldr r3, [r3, #8] - 8005e1e: f003 0301 and.w r3, r3, #1 - 8005e22: 2b01 cmp r3, #1 - 8005e24: d15f bne.n 8005ee6 + 800606c: 687b ldr r3, [r7, #4] + 800606e: 681b ldr r3, [r3, #0] + 8006070: 689b ldr r3, [r3, #8] + 8006072: f003 0301 and.w r3, r3, #1 + 8006076: 2b01 cmp r3, #1 + 8006078: d15f bne.n 800613a { /* Set ADC state */ /* - Clear state bitfield related to regular group conversion results */ /* - Set state bitfield related to regular group operation */ ADC_STATE_CLR_SET(hadc->State, - 8005e26: 687b ldr r3, [r7, #4] - 8005e28: 6c1b ldr r3, [r3, #64] @ 0x40 - 8005e2a: f423 63e0 bic.w r3, r3, #1792 @ 0x700 - 8005e2e: f023 0301 bic.w r3, r3, #1 - 8005e32: f443 7280 orr.w r2, r3, #256 @ 0x100 - 8005e36: 687b ldr r3, [r7, #4] - 8005e38: 641a str r2, [r3, #64] @ 0x40 + 800607a: 687b ldr r3, [r7, #4] + 800607c: 6c1b ldr r3, [r3, #64] @ 0x40 + 800607e: f423 63e0 bic.w r3, r3, #1792 @ 0x700 + 8006082: f023 0301 bic.w r3, r3, #1 + 8006086: f443 7280 orr.w r2, r3, #256 @ 0x100 + 800608a: 687b ldr r3, [r7, #4] + 800608c: 641a str r2, [r3, #64] @ 0x40 HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR, HAL_ADC_STATE_REG_BUSY); /* If conversions on group regular are also triggering group injected, */ /* update ADC state. */ if (READ_BIT(hadc->Instance->CR1, ADC_CR1_JAUTO) != RESET) - 8005e3a: 687b ldr r3, [r7, #4] - 8005e3c: 681b ldr r3, [r3, #0] - 8005e3e: 685b ldr r3, [r3, #4] - 8005e40: f403 6380 and.w r3, r3, #1024 @ 0x400 - 8005e44: 2b00 cmp r3, #0 - 8005e46: d007 beq.n 8005e58 + 800608e: 687b ldr r3, [r7, #4] + 8006090: 681b ldr r3, [r3, #0] + 8006092: 685b ldr r3, [r3, #4] + 8006094: f403 6380 and.w r3, r3, #1024 @ 0x400 + 8006098: 2b00 cmp r3, #0 + 800609a: d007 beq.n 80060ac { ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_EOC, HAL_ADC_STATE_INJ_BUSY); - 8005e48: 687b ldr r3, [r7, #4] - 8005e4a: 6c1b ldr r3, [r3, #64] @ 0x40 - 8005e4c: f423 5340 bic.w r3, r3, #12288 @ 0x3000 - 8005e50: f443 5280 orr.w r2, r3, #4096 @ 0x1000 - 8005e54: 687b ldr r3, [r7, #4] - 8005e56: 641a str r2, [r3, #64] @ 0x40 + 800609c: 687b ldr r3, [r7, #4] + 800609e: 6c1b ldr r3, [r3, #64] @ 0x40 + 80060a0: f423 5340 bic.w r3, r3, #12288 @ 0x3000 + 80060a4: f443 5280 orr.w r2, r3, #4096 @ 0x1000 + 80060a8: 687b ldr r3, [r7, #4] + 80060aa: 641a str r2, [r3, #64] @ 0x40 } /* State machine update: Check if an injected conversion is ongoing */ if (HAL_IS_BIT_SET(hadc->State, HAL_ADC_STATE_INJ_BUSY)) - 8005e58: 687b ldr r3, [r7, #4] - 8005e5a: 6c1b ldr r3, [r3, #64] @ 0x40 - 8005e5c: f403 5380 and.w r3, r3, #4096 @ 0x1000 - 8005e60: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 8005e64: d106 bne.n 8005e74 + 80060ac: 687b ldr r3, [r7, #4] + 80060ae: 6c1b ldr r3, [r3, #64] @ 0x40 + 80060b0: f403 5380 and.w r3, r3, #4096 @ 0x1000 + 80060b4: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 80060b8: d106 bne.n 80060c8 { /* Reset ADC error code fields related to conversions on group regular */ CLEAR_BIT(hadc->ErrorCode, (HAL_ADC_ERROR_OVR | HAL_ADC_ERROR_DMA)); - 8005e66: 687b ldr r3, [r7, #4] - 8005e68: 6c5b ldr r3, [r3, #68] @ 0x44 - 8005e6a: f023 0206 bic.w r2, r3, #6 - 8005e6e: 687b ldr r3, [r7, #4] - 8005e70: 645a str r2, [r3, #68] @ 0x44 - 8005e72: e002 b.n 8005e7a + 80060ba: 687b ldr r3, [r7, #4] + 80060bc: 6c5b ldr r3, [r3, #68] @ 0x44 + 80060be: f023 0206 bic.w r2, r3, #6 + 80060c2: 687b ldr r3, [r7, #4] + 80060c4: 645a str r2, [r3, #68] @ 0x44 + 80060c6: e002 b.n 80060ce } else { /* Reset ADC all error code fields */ ADC_CLEAR_ERRORCODE(hadc); - 8005e74: 687b ldr r3, [r7, #4] - 8005e76: 2200 movs r2, #0 - 8005e78: 645a str r2, [r3, #68] @ 0x44 + 80060c8: 687b ldr r3, [r7, #4] + 80060ca: 2200 movs r2, #0 + 80060cc: 645a str r2, [r3, #68] @ 0x44 } /* Process unlocked */ /* Unlock before starting ADC conversions: in case of potential */ /* interruption, to let the process to ADC IRQ Handler. */ __HAL_UNLOCK(hadc); - 8005e7a: 687b ldr r3, [r7, #4] - 8005e7c: 2200 movs r2, #0 - 8005e7e: f883 203c strb.w r2, [r3, #60] @ 0x3c + 80060ce: 687b ldr r3, [r7, #4] + 80060d0: 2200 movs r2, #0 + 80060d2: f883 203c strb.w r2, [r3, #60] @ 0x3c /* Pointer to the common control register to which is belonging hadc */ /* (Depending on STM32F4 product, there may be up to 3 ADCs and 1 common */ /* control register) */ tmpADC_Common = ADC_COMMON_REGISTER(hadc); - 8005e82: 4b24 ldr r3, [pc, #144] @ (8005f14 ) - 8005e84: 60fb str r3, [r7, #12] + 80060d6: 4b24 ldr r3, [pc, #144] @ (8006168 ) + 80060d8: 60fb str r3, [r7, #12] /* Clear regular group conversion flag and overrun flag */ /* (To ensure of no unknown state from potential previous ADC operations) */ __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_EOC | ADC_FLAG_OVR); - 8005e86: 687b ldr r3, [r7, #4] - 8005e88: 681b ldr r3, [r3, #0] - 8005e8a: f06f 0222 mvn.w r2, #34 @ 0x22 - 8005e8e: 601a str r2, [r3, #0] + 80060da: 687b ldr r3, [r7, #4] + 80060dc: 681b ldr r3, [r3, #0] + 80060de: f06f 0222 mvn.w r2, #34 @ 0x22 + 80060e2: 601a str r2, [r3, #0] /* Check if Multimode enabled */ if (HAL_IS_BIT_CLR(tmpADC_Common->CCR, ADC_CCR_MULTI)) - 8005e90: 68fb ldr r3, [r7, #12] - 8005e92: 685b ldr r3, [r3, #4] - 8005e94: f003 031f and.w r3, r3, #31 - 8005e98: 2b00 cmp r3, #0 - 8005e9a: d10f bne.n 8005ebc + 80060e4: 68fb ldr r3, [r7, #12] + 80060e6: 685b ldr r3, [r3, #4] + 80060e8: f003 031f and.w r3, r3, #31 + 80060ec: 2b00 cmp r3, #0 + 80060ee: d10f bne.n 8006110 if ((hadc->Instance == ADC1) || ((hadc->Instance == ADC2) && ((ADC->CCR & ADC_CCR_MULTI_Msk) < ADC_CCR_MULTI_0)) \ || ((hadc->Instance == ADC3) && ((ADC->CCR & ADC_CCR_MULTI_Msk) < ADC_CCR_MULTI_4))) { #endif /* ADC2 || ADC3 */ /* if no external trigger present enable software conversion of regular channels */ if ((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET) - 8005e9c: 687b ldr r3, [r7, #4] - 8005e9e: 681b ldr r3, [r3, #0] - 8005ea0: 689b ldr r3, [r3, #8] - 8005ea2: f003 5340 and.w r3, r3, #805306368 @ 0x30000000 - 8005ea6: 2b00 cmp r3, #0 - 8005ea8: d129 bne.n 8005efe + 80060f0: 687b ldr r3, [r7, #4] + 80060f2: 681b ldr r3, [r3, #0] + 80060f4: 689b ldr r3, [r3, #8] + 80060f6: f003 5340 and.w r3, r3, #805306368 @ 0x30000000 + 80060fa: 2b00 cmp r3, #0 + 80060fc: d129 bne.n 8006152 { /* Enable the selected ADC software conversion for regular group */ hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; - 8005eaa: 687b ldr r3, [r7, #4] - 8005eac: 681b ldr r3, [r3, #0] - 8005eae: 689a ldr r2, [r3, #8] - 8005eb0: 687b ldr r3, [r7, #4] - 8005eb2: 681b ldr r3, [r3, #0] - 8005eb4: f042 4280 orr.w r2, r2, #1073741824 @ 0x40000000 - 8005eb8: 609a str r2, [r3, #8] - 8005eba: e020 b.n 8005efe + 80060fe: 687b ldr r3, [r7, #4] + 8006100: 681b ldr r3, [r3, #0] + 8006102: 689a ldr r2, [r3, #8] + 8006104: 687b ldr r3, [r7, #4] + 8006106: 681b ldr r3, [r3, #0] + 8006108: f042 4280 orr.w r2, r2, #1073741824 @ 0x40000000 + 800610c: 609a str r2, [r3, #8] + 800610e: e020 b.n 8006152 #endif /* ADC2 || ADC3 */ } else { /* if instance of handle correspond to ADC1 and no external trigger present enable software conversion of regular channels */ if ((hadc->Instance == ADC1) && ((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET)) - 8005ebc: 687b ldr r3, [r7, #4] - 8005ebe: 681b ldr r3, [r3, #0] - 8005ec0: 4a15 ldr r2, [pc, #84] @ (8005f18 ) - 8005ec2: 4293 cmp r3, r2 - 8005ec4: d11b bne.n 8005efe - 8005ec6: 687b ldr r3, [r7, #4] - 8005ec8: 681b ldr r3, [r3, #0] - 8005eca: 689b ldr r3, [r3, #8] - 8005ecc: f003 5340 and.w r3, r3, #805306368 @ 0x30000000 - 8005ed0: 2b00 cmp r3, #0 - 8005ed2: d114 bne.n 8005efe + 8006110: 687b ldr r3, [r7, #4] + 8006112: 681b ldr r3, [r3, #0] + 8006114: 4a15 ldr r2, [pc, #84] @ (800616c ) + 8006116: 4293 cmp r3, r2 + 8006118: d11b bne.n 8006152 + 800611a: 687b ldr r3, [r7, #4] + 800611c: 681b ldr r3, [r3, #0] + 800611e: 689b ldr r3, [r3, #8] + 8006120: f003 5340 and.w r3, r3, #805306368 @ 0x30000000 + 8006124: 2b00 cmp r3, #0 + 8006126: d114 bne.n 8006152 { /* Enable the selected ADC software conversion for regular group */ hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; - 8005ed4: 687b ldr r3, [r7, #4] - 8005ed6: 681b ldr r3, [r3, #0] - 8005ed8: 689a ldr r2, [r3, #8] - 8005eda: 687b ldr r3, [r7, #4] - 8005edc: 681b ldr r3, [r3, #0] - 8005ede: f042 4280 orr.w r2, r2, #1073741824 @ 0x40000000 - 8005ee2: 609a str r2, [r3, #8] - 8005ee4: e00b b.n 8005efe + 8006128: 687b ldr r3, [r7, #4] + 800612a: 681b ldr r3, [r3, #0] + 800612c: 689a ldr r2, [r3, #8] + 800612e: 687b ldr r3, [r7, #4] + 8006130: 681b ldr r3, [r3, #0] + 8006132: f042 4280 orr.w r2, r2, #1073741824 @ 0x40000000 + 8006136: 609a str r2, [r3, #8] + 8006138: e00b b.n 8006152 } } else { /* Update ADC state machine to error */ SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); - 8005ee6: 687b ldr r3, [r7, #4] - 8005ee8: 6c1b ldr r3, [r3, #64] @ 0x40 - 8005eea: f043 0210 orr.w r2, r3, #16 - 8005eee: 687b ldr r3, [r7, #4] - 8005ef0: 641a str r2, [r3, #64] @ 0x40 + 800613a: 687b ldr r3, [r7, #4] + 800613c: 6c1b ldr r3, [r3, #64] @ 0x40 + 800613e: f043 0210 orr.w r2, r3, #16 + 8006142: 687b ldr r3, [r7, #4] + 8006144: 641a str r2, [r3, #64] @ 0x40 /* Set ADC error code to ADC IP internal error */ SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); - 8005ef2: 687b ldr r3, [r7, #4] - 8005ef4: 6c5b ldr r3, [r3, #68] @ 0x44 - 8005ef6: f043 0201 orr.w r2, r3, #1 - 8005efa: 687b ldr r3, [r7, #4] - 8005efc: 645a str r2, [r3, #68] @ 0x44 + 8006146: 687b ldr r3, [r7, #4] + 8006148: 6c5b ldr r3, [r3, #68] @ 0x44 + 800614a: f043 0201 orr.w r2, r3, #1 + 800614e: 687b ldr r3, [r7, #4] + 8006150: 645a str r2, [r3, #68] @ 0x44 } /* Return function status */ return HAL_OK; - 8005efe: 2300 movs r3, #0 + 8006152: 2300 movs r3, #0 } - 8005f00: 4618 mov r0, r3 - 8005f02: 3710 adds r7, #16 - 8005f04: 46bd mov sp, r7 - 8005f06: bd80 pop {r7, pc} - 8005f08: 0800e73c .word 0x0800e73c - 8005f0c: 20000000 .word 0x20000000 - 8005f10: 431bde83 .word 0x431bde83 - 8005f14: 40012300 .word 0x40012300 - 8005f18: 40012000 .word 0x40012000 + 8006154: 4618 mov r0, r3 + 8006156: 3710 adds r7, #16 + 8006158: 46bd mov sp, r7 + 800615a: bd80 pop {r7, pc} + 800615c: 0800ecac .word 0x0800ecac + 8006160: 20000000 .word 0x20000000 + 8006164: 431bde83 .word 0x431bde83 + 8006168: 40012300 .word 0x40012300 + 800616c: 40012000 .word 0x40012000 -08005f1c : +08006170 : * the configuration information for the specified ADC. * * @retval HAL status. */ HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef *hadc) { - 8005f1c: b580 push {r7, lr} - 8005f1e: b082 sub sp, #8 - 8005f20: af00 add r7, sp, #0 - 8005f22: 6078 str r0, [r7, #4] + 8006170: b580 push {r7, lr} + 8006172: b082 sub sp, #8 + 8006174: af00 add r7, sp, #0 + 8006176: 6078 str r0, [r7, #4] /* Check the parameters */ assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); - 8005f24: 687b ldr r3, [r7, #4] - 8005f26: 681b ldr r3, [r3, #0] - 8005f28: 4a1a ldr r2, [pc, #104] @ (8005f94 ) - 8005f2a: 4293 cmp r3, r2 - 8005f2c: d004 beq.n 8005f38 - 8005f2e: f240 314a movw r1, #842 @ 0x34a - 8005f32: 4819 ldr r0, [pc, #100] @ (8005f98 ) - 8005f34: f7fd f91e bl 8003174 + 8006178: 687b ldr r3, [r7, #4] + 800617a: 681b ldr r3, [r3, #0] + 800617c: 4a1a ldr r2, [pc, #104] @ (80061e8 ) + 800617e: 4293 cmp r3, r2 + 8006180: d004 beq.n 800618c + 8006182: f240 314a movw r1, #842 @ 0x34a + 8006186: 4819 ldr r0, [pc, #100] @ (80061ec ) + 8006188: f7fd f850 bl 800322c /* Process locked */ __HAL_LOCK(hadc); - 8005f38: 687b ldr r3, [r7, #4] - 8005f3a: f893 303c ldrb.w r3, [r3, #60] @ 0x3c - 8005f3e: 2b01 cmp r3, #1 - 8005f40: d101 bne.n 8005f46 - 8005f42: 2302 movs r3, #2 - 8005f44: e021 b.n 8005f8a - 8005f46: 687b ldr r3, [r7, #4] - 8005f48: 2201 movs r2, #1 - 8005f4a: f883 203c strb.w r2, [r3, #60] @ 0x3c + 800618c: 687b ldr r3, [r7, #4] + 800618e: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 8006192: 2b01 cmp r3, #1 + 8006194: d101 bne.n 800619a + 8006196: 2302 movs r3, #2 + 8006198: e021 b.n 80061de + 800619a: 687b ldr r3, [r7, #4] + 800619c: 2201 movs r2, #1 + 800619e: f883 203c strb.w r2, [r3, #60] @ 0x3c /* Stop potential conversion on going, on regular and injected groups */ /* Disable ADC peripheral */ __HAL_ADC_DISABLE(hadc); - 8005f4e: 687b ldr r3, [r7, #4] - 8005f50: 681b ldr r3, [r3, #0] - 8005f52: 689a ldr r2, [r3, #8] - 8005f54: 687b ldr r3, [r7, #4] - 8005f56: 681b ldr r3, [r3, #0] - 8005f58: f022 0201 bic.w r2, r2, #1 - 8005f5c: 609a str r2, [r3, #8] + 80061a2: 687b ldr r3, [r7, #4] + 80061a4: 681b ldr r3, [r3, #0] + 80061a6: 689a ldr r2, [r3, #8] + 80061a8: 687b ldr r3, [r7, #4] + 80061aa: 681b ldr r3, [r3, #0] + 80061ac: f022 0201 bic.w r2, r2, #1 + 80061b0: 609a str r2, [r3, #8] /* Check if ADC is effectively disabled */ if (HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_ADON)) - 8005f5e: 687b ldr r3, [r7, #4] - 8005f60: 681b ldr r3, [r3, #0] - 8005f62: 689b ldr r3, [r3, #8] - 8005f64: f003 0301 and.w r3, r3, #1 - 8005f68: 2b00 cmp r3, #0 - 8005f6a: d109 bne.n 8005f80 + 80061b2: 687b ldr r3, [r7, #4] + 80061b4: 681b ldr r3, [r3, #0] + 80061b6: 689b ldr r3, [r3, #8] + 80061b8: f003 0301 and.w r3, r3, #1 + 80061bc: 2b00 cmp r3, #0 + 80061be: d109 bne.n 80061d4 { /* Set ADC state */ ADC_STATE_CLR_SET(hadc->State, - 8005f6c: 687b ldr r3, [r7, #4] - 8005f6e: 6c1b ldr r3, [r3, #64] @ 0x40 - 8005f70: f423 5388 bic.w r3, r3, #4352 @ 0x1100 - 8005f74: f023 0301 bic.w r3, r3, #1 - 8005f78: f043 0201 orr.w r2, r3, #1 - 8005f7c: 687b ldr r3, [r7, #4] - 8005f7e: 641a str r2, [r3, #64] @ 0x40 + 80061c0: 687b ldr r3, [r7, #4] + 80061c2: 6c1b ldr r3, [r3, #64] @ 0x40 + 80061c4: f423 5388 bic.w r3, r3, #4352 @ 0x1100 + 80061c8: f023 0301 bic.w r3, r3, #1 + 80061cc: f043 0201 orr.w r2, r3, #1 + 80061d0: 687b ldr r3, [r7, #4] + 80061d2: 641a str r2, [r3, #64] @ 0x40 HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, HAL_ADC_STATE_READY); } /* Process unlocked */ __HAL_UNLOCK(hadc); - 8005f80: 687b ldr r3, [r7, #4] - 8005f82: 2200 movs r2, #0 - 8005f84: f883 203c strb.w r2, [r3, #60] @ 0x3c + 80061d4: 687b ldr r3, [r7, #4] + 80061d6: 2200 movs r2, #0 + 80061d8: f883 203c strb.w r2, [r3, #60] @ 0x3c /* Return function status */ return HAL_OK; - 8005f88: 2300 movs r3, #0 + 80061dc: 2300 movs r3, #0 } - 8005f8a: 4618 mov r0, r3 - 8005f8c: 3708 adds r7, #8 - 8005f8e: 46bd mov sp, r7 - 8005f90: bd80 pop {r7, pc} - 8005f92: bf00 nop - 8005f94: 40012000 .word 0x40012000 - 8005f98: 0800e73c .word 0x0800e73c + 80061de: 4618 mov r0, r3 + 80061e0: 3708 adds r7, #8 + 80061e2: 46bd mov sp, r7 + 80061e4: bd80 pop {r7, pc} + 80061e6: bf00 nop + 80061e8: 40012000 .word 0x40012000 + 80061ec: 0800ecac .word 0x0800ecac -08005f9c : +080061f0 : * the configuration information for the specified ADC. * @param Timeout Timeout value in millisecond. * @retval HAL status */ HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef *hadc, uint32_t Timeout) { - 8005f9c: b580 push {r7, lr} - 8005f9e: b084 sub sp, #16 - 8005fa0: af00 add r7, sp, #0 - 8005fa2: 6078 str r0, [r7, #4] - 8005fa4: 6039 str r1, [r7, #0] + 80061f0: b580 push {r7, lr} + 80061f2: b084 sub sp, #16 + 80061f4: af00 add r7, sp, #0 + 80061f6: 6078 str r0, [r7, #4] + 80061f8: 6039 str r1, [r7, #0] uint32_t tickstart = 0U; - 8005fa6: 2300 movs r3, #0 - 8005fa8: 60fb str r3, [r7, #12] + 80061fa: 2300 movs r3, #0 + 80061fc: 60fb str r3, [r7, #12] /* each conversion: */ /* Particular case is ADC configured in DMA mode and ADC sequencer with */ /* several ranks and polling for end of each conversion. */ /* For code simplicity sake, this particular case is generalized to */ /* ADC configured in DMA mode and polling for end of each conversion. */ if (HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_EOCS) && - 8005faa: 687b ldr r3, [r7, #4] - 8005fac: 681b ldr r3, [r3, #0] - 8005fae: 689b ldr r3, [r3, #8] - 8005fb0: f403 6380 and.w r3, r3, #1024 @ 0x400 - 8005fb4: f5b3 6f80 cmp.w r3, #1024 @ 0x400 - 8005fb8: d113 bne.n 8005fe2 + 80061fe: 687b ldr r3, [r7, #4] + 8006200: 681b ldr r3, [r3, #0] + 8006202: 689b ldr r3, [r3, #8] + 8006204: f403 6380 and.w r3, r3, #1024 @ 0x400 + 8006208: f5b3 6f80 cmp.w r3, #1024 @ 0x400 + 800620c: d113 bne.n 8006236 HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_DMA)) - 8005fba: 687b ldr r3, [r7, #4] - 8005fbc: 681b ldr r3, [r3, #0] - 8005fbe: 689b ldr r3, [r3, #8] - 8005fc0: f403 7380 and.w r3, r3, #256 @ 0x100 + 800620e: 687b ldr r3, [r7, #4] + 8006210: 681b ldr r3, [r3, #0] + 8006212: 689b ldr r3, [r3, #8] + 8006214: f403 7380 and.w r3, r3, #256 @ 0x100 if (HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_EOCS) && - 8005fc4: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 8005fc8: d10b bne.n 8005fe2 + 8006218: f5b3 7f80 cmp.w r3, #256 @ 0x100 + 800621c: d10b bne.n 8006236 { /* Update ADC state machine to error */ SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); - 8005fca: 687b ldr r3, [r7, #4] - 8005fcc: 6c1b ldr r3, [r3, #64] @ 0x40 - 8005fce: f043 0220 orr.w r2, r3, #32 - 8005fd2: 687b ldr r3, [r7, #4] - 8005fd4: 641a str r2, [r3, #64] @ 0x40 + 800621e: 687b ldr r3, [r7, #4] + 8006220: 6c1b ldr r3, [r3, #64] @ 0x40 + 8006222: f043 0220 orr.w r2, r3, #32 + 8006226: 687b ldr r3, [r7, #4] + 8006228: 641a str r2, [r3, #64] @ 0x40 /* Process unlocked */ __HAL_UNLOCK(hadc); - 8005fd6: 687b ldr r3, [r7, #4] - 8005fd8: 2200 movs r2, #0 - 8005fda: f883 203c strb.w r2, [r3, #60] @ 0x3c + 800622a: 687b ldr r3, [r7, #4] + 800622c: 2200 movs r2, #0 + 800622e: f883 203c strb.w r2, [r3, #60] @ 0x3c return HAL_ERROR; - 8005fde: 2301 movs r3, #1 - 8005fe0: e063 b.n 80060aa + 8006232: 2301 movs r3, #1 + 8006234: e063 b.n 80062fe } /* Get tick */ tickstart = HAL_GetTick(); - 8005fe2: f7ff fd35 bl 8005a50 - 8005fe6: 60f8 str r0, [r7, #12] + 8006236: f7ff fd35 bl 8005ca4 + 800623a: 60f8 str r0, [r7, #12] /* Check End of conversion flag */ while (!(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_EOC))) - 8005fe8: e021 b.n 800602e + 800623c: e021 b.n 8006282 { /* Check if timeout is disabled (set to infinite wait) */ if (Timeout != HAL_MAX_DELAY) - 8005fea: 683b ldr r3, [r7, #0] - 8005fec: f1b3 3fff cmp.w r3, #4294967295 - 8005ff0: d01d beq.n 800602e + 800623e: 683b ldr r3, [r7, #0] + 8006240: f1b3 3fff cmp.w r3, #4294967295 + 8006244: d01d beq.n 8006282 { if ((Timeout == 0U) || ((HAL_GetTick() - tickstart) > Timeout)) - 8005ff2: 683b ldr r3, [r7, #0] - 8005ff4: 2b00 cmp r3, #0 - 8005ff6: d007 beq.n 8006008 - 8005ff8: f7ff fd2a bl 8005a50 - 8005ffc: 4602 mov r2, r0 - 8005ffe: 68fb ldr r3, [r7, #12] - 8006000: 1ad3 subs r3, r2, r3 - 8006002: 683a ldr r2, [r7, #0] - 8006004: 429a cmp r2, r3 - 8006006: d212 bcs.n 800602e + 8006246: 683b ldr r3, [r7, #0] + 8006248: 2b00 cmp r3, #0 + 800624a: d007 beq.n 800625c + 800624c: f7ff fd2a bl 8005ca4 + 8006250: 4602 mov r2, r0 + 8006252: 68fb ldr r3, [r7, #12] + 8006254: 1ad3 subs r3, r2, r3 + 8006256: 683a ldr r2, [r7, #0] + 8006258: 429a cmp r2, r3 + 800625a: d212 bcs.n 8006282 { /* New check to avoid false timeout detection in case of preemption */ if (!(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_EOC))) - 8006008: 687b ldr r3, [r7, #4] - 800600a: 681b ldr r3, [r3, #0] - 800600c: 681b ldr r3, [r3, #0] - 800600e: f003 0302 and.w r3, r3, #2 - 8006012: 2b02 cmp r3, #2 - 8006014: d00b beq.n 800602e + 800625c: 687b ldr r3, [r7, #4] + 800625e: 681b ldr r3, [r3, #0] + 8006260: 681b ldr r3, [r3, #0] + 8006262: f003 0302 and.w r3, r3, #2 + 8006266: 2b02 cmp r3, #2 + 8006268: d00b beq.n 8006282 { /* Update ADC state machine to timeout */ SET_BIT(hadc->State, HAL_ADC_STATE_TIMEOUT); - 8006016: 687b ldr r3, [r7, #4] - 8006018: 6c1b ldr r3, [r3, #64] @ 0x40 - 800601a: f043 0204 orr.w r2, r3, #4 - 800601e: 687b ldr r3, [r7, #4] - 8006020: 641a str r2, [r3, #64] @ 0x40 + 800626a: 687b ldr r3, [r7, #4] + 800626c: 6c1b ldr r3, [r3, #64] @ 0x40 + 800626e: f043 0204 orr.w r2, r3, #4 + 8006272: 687b ldr r3, [r7, #4] + 8006274: 641a str r2, [r3, #64] @ 0x40 /* Process unlocked */ __HAL_UNLOCK(hadc); - 8006022: 687b ldr r3, [r7, #4] - 8006024: 2200 movs r2, #0 - 8006026: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8006276: 687b ldr r3, [r7, #4] + 8006278: 2200 movs r2, #0 + 800627a: f883 203c strb.w r2, [r3, #60] @ 0x3c return HAL_TIMEOUT; - 800602a: 2303 movs r3, #3 - 800602c: e03d b.n 80060aa + 800627e: 2303 movs r3, #3 + 8006280: e03d b.n 80062fe while (!(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_EOC))) - 800602e: 687b ldr r3, [r7, #4] - 8006030: 681b ldr r3, [r3, #0] - 8006032: 681b ldr r3, [r3, #0] - 8006034: f003 0302 and.w r3, r3, #2 - 8006038: 2b02 cmp r3, #2 - 800603a: d1d6 bne.n 8005fea + 8006282: 687b ldr r3, [r7, #4] + 8006284: 681b ldr r3, [r3, #0] + 8006286: 681b ldr r3, [r3, #0] + 8006288: f003 0302 and.w r3, r3, #2 + 800628c: 2b02 cmp r3, #2 + 800628e: d1d6 bne.n 800623e } } } /* Clear regular group conversion flag */ __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_STRT | ADC_FLAG_EOC); - 800603c: 687b ldr r3, [r7, #4] - 800603e: 681b ldr r3, [r3, #0] - 8006040: f06f 0212 mvn.w r2, #18 - 8006044: 601a str r2, [r3, #0] + 8006290: 687b ldr r3, [r7, #4] + 8006292: 681b ldr r3, [r3, #0] + 8006294: f06f 0212 mvn.w r2, #18 + 8006298: 601a str r2, [r3, #0] /* Update ADC state machine */ SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOC); - 8006046: 687b ldr r3, [r7, #4] - 8006048: 6c1b ldr r3, [r3, #64] @ 0x40 - 800604a: f443 7200 orr.w r2, r3, #512 @ 0x200 - 800604e: 687b ldr r3, [r7, #4] - 8006050: 641a str r2, [r3, #64] @ 0x40 + 800629a: 687b ldr r3, [r7, #4] + 800629c: 6c1b ldr r3, [r3, #64] @ 0x40 + 800629e: f443 7200 orr.w r2, r3, #512 @ 0x200 + 80062a2: 687b ldr r3, [r7, #4] + 80062a4: 641a str r2, [r3, #64] @ 0x40 /* by external trigger, continuous mode or scan sequence on going. */ /* Note: On STM32F4, there is no independent flag of end of sequence. */ /* The test of scan sequence on going is done either with scan */ /* sequence disabled or with end of conversion flag set to */ /* of end of sequence. */ if (ADC_IS_SOFTWARE_START_REGULAR(hadc) && - 8006052: 687b ldr r3, [r7, #4] - 8006054: 681b ldr r3, [r3, #0] - 8006056: 689b ldr r3, [r3, #8] - 8006058: f003 5340 and.w r3, r3, #805306368 @ 0x30000000 - 800605c: 2b00 cmp r3, #0 - 800605e: d123 bne.n 80060a8 + 80062a6: 687b ldr r3, [r7, #4] + 80062a8: 681b ldr r3, [r3, #0] + 80062aa: 689b ldr r3, [r3, #8] + 80062ac: f003 5340 and.w r3, r3, #805306368 @ 0x30000000 + 80062b0: 2b00 cmp r3, #0 + 80062b2: d123 bne.n 80062fc (hadc->Init.ContinuousConvMode == DISABLE) && - 8006060: 687b ldr r3, [r7, #4] - 8006062: 7e1b ldrb r3, [r3, #24] + 80062b4: 687b ldr r3, [r7, #4] + 80062b6: 7e1b ldrb r3, [r3, #24] if (ADC_IS_SOFTWARE_START_REGULAR(hadc) && - 8006064: 2b00 cmp r3, #0 - 8006066: d11f bne.n 80060a8 + 80062b8: 2b00 cmp r3, #0 + 80062ba: d11f bne.n 80062fc (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) || - 8006068: 687b ldr r3, [r7, #4] - 800606a: 681b ldr r3, [r3, #0] - 800606c: 6adb ldr r3, [r3, #44] @ 0x2c - 800606e: f403 0370 and.w r3, r3, #15728640 @ 0xf00000 + 80062bc: 687b ldr r3, [r7, #4] + 80062be: 681b ldr r3, [r3, #0] + 80062c0: 6adb ldr r3, [r3, #44] @ 0x2c + 80062c2: f403 0370 and.w r3, r3, #15728640 @ 0xf00000 (hadc->Init.ContinuousConvMode == DISABLE) && - 8006072: 2b00 cmp r3, #0 - 8006074: d006 beq.n 8006084 + 80062c6: 2b00 cmp r3, #0 + 80062c8: d006 beq.n 80062d8 HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS))) - 8006076: 687b ldr r3, [r7, #4] - 8006078: 681b ldr r3, [r3, #0] - 800607a: 689b ldr r3, [r3, #8] - 800607c: f403 6380 and.w r3, r3, #1024 @ 0x400 + 80062ca: 687b ldr r3, [r7, #4] + 80062cc: 681b ldr r3, [r3, #0] + 80062ce: 689b ldr r3, [r3, #8] + 80062d0: f403 6380 and.w r3, r3, #1024 @ 0x400 (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) || - 8006080: 2b00 cmp r3, #0 - 8006082: d111 bne.n 80060a8 + 80062d4: 2b00 cmp r3, #0 + 80062d6: d111 bne.n 80062fc { /* Set ADC state */ CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY); - 8006084: 687b ldr r3, [r7, #4] - 8006086: 6c1b ldr r3, [r3, #64] @ 0x40 - 8006088: f423 7280 bic.w r2, r3, #256 @ 0x100 - 800608c: 687b ldr r3, [r7, #4] - 800608e: 641a str r2, [r3, #64] @ 0x40 + 80062d8: 687b ldr r3, [r7, #4] + 80062da: 6c1b ldr r3, [r3, #64] @ 0x40 + 80062dc: f423 7280 bic.w r2, r3, #256 @ 0x100 + 80062e0: 687b ldr r3, [r7, #4] + 80062e2: 641a str r2, [r3, #64] @ 0x40 if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_INJ_BUSY)) - 8006090: 687b ldr r3, [r7, #4] - 8006092: 6c1b ldr r3, [r3, #64] @ 0x40 - 8006094: f403 5380 and.w r3, r3, #4096 @ 0x1000 - 8006098: 2b00 cmp r3, #0 - 800609a: d105 bne.n 80060a8 + 80062e4: 687b ldr r3, [r7, #4] + 80062e6: 6c1b ldr r3, [r3, #64] @ 0x40 + 80062e8: f403 5380 and.w r3, r3, #4096 @ 0x1000 + 80062ec: 2b00 cmp r3, #0 + 80062ee: d105 bne.n 80062fc { SET_BIT(hadc->State, HAL_ADC_STATE_READY); - 800609c: 687b ldr r3, [r7, #4] - 800609e: 6c1b ldr r3, [r3, #64] @ 0x40 - 80060a0: f043 0201 orr.w r2, r3, #1 - 80060a4: 687b ldr r3, [r7, #4] - 80060a6: 641a str r2, [r3, #64] @ 0x40 + 80062f0: 687b ldr r3, [r7, #4] + 80062f2: 6c1b ldr r3, [r3, #64] @ 0x40 + 80062f4: f043 0201 orr.w r2, r3, #1 + 80062f8: 687b ldr r3, [r7, #4] + 80062fa: 641a str r2, [r3, #64] @ 0x40 } } /* Return ADC state */ return HAL_OK; - 80060a8: 2300 movs r3, #0 + 80062fc: 2300 movs r3, #0 } - 80060aa: 4618 mov r0, r3 - 80060ac: 3710 adds r7, #16 - 80060ae: 46bd mov sp, r7 - 80060b0: bd80 pop {r7, pc} + 80062fe: 4618 mov r0, r3 + 8006300: 3710 adds r7, #16 + 8006302: 46bd mov sp, r7 + 8006304: bd80 pop {r7, pc} -080060b2 : +08006306 : * @param hadc pointer to a ADC_HandleTypeDef structure that contains * the configuration information for the specified ADC. * @retval Converted value */ uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef *hadc) { - 80060b2: b480 push {r7} - 80060b4: b083 sub sp, #12 - 80060b6: af00 add r7, sp, #0 - 80060b8: 6078 str r0, [r7, #4] + 8006306: b480 push {r7} + 8006308: b083 sub sp, #12 + 800630a: af00 add r7, sp, #0 + 800630c: 6078 str r0, [r7, #4] /* Return the selected ADC converted value */ return hadc->Instance->DR; - 80060ba: 687b ldr r3, [r7, #4] - 80060bc: 681b ldr r3, [r3, #0] - 80060be: 6cdb ldr r3, [r3, #76] @ 0x4c + 800630e: 687b ldr r3, [r7, #4] + 8006310: 681b ldr r3, [r3, #0] + 8006312: 6cdb ldr r3, [r3, #76] @ 0x4c } - 80060c0: 4618 mov r0, r3 - 80060c2: 370c adds r7, #12 - 80060c4: 46bd mov sp, r7 - 80060c6: f85d 7b04 ldr.w r7, [sp], #4 - 80060ca: 4770 bx lr + 8006314: 4618 mov r0, r3 + 8006316: 370c adds r7, #12 + 8006318: 46bd mov sp, r7 + 800631a: f85d 7b04 ldr.w r7, [sp], #4 + 800631e: 4770 bx lr -080060cc : +08006320 : * the configuration information for the specified ADC. * @param sConfig ADC configuration structure. * @retval HAL status */ HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef *hadc, ADC_ChannelConfTypeDef *sConfig) { - 80060cc: b580 push {r7, lr} - 80060ce: b084 sub sp, #16 - 80060d0: af00 add r7, sp, #0 - 80060d2: 6078 str r0, [r7, #4] - 80060d4: 6039 str r1, [r7, #0] + 8006320: b580 push {r7, lr} + 8006322: b084 sub sp, #16 + 8006324: af00 add r7, sp, #0 + 8006326: 6078 str r0, [r7, #4] + 8006328: 6039 str r1, [r7, #0] __IO uint32_t counter = 0U; - 80060d6: 2300 movs r3, #0 - 80060d8: 60bb str r3, [r7, #8] + 800632a: 2300 movs r3, #0 + 800632c: 60bb str r3, [r7, #8] ADC_Common_TypeDef *tmpADC_Common; /* Check the parameters */ assert_param(IS_ADC_CHANNEL(sConfig->Channel)); - 80060da: 683b ldr r3, [r7, #0] - 80060dc: 681b ldr r3, [r3, #0] - 80060de: 2b12 cmp r3, #18 - 80060e0: d909 bls.n 80060f6 - 80060e2: 683b ldr r3, [r7, #0] - 80060e4: 681b ldr r3, [r3, #0] - 80060e6: 4a72 ldr r2, [pc, #456] @ (80062b0 ) - 80060e8: 4293 cmp r3, r2 - 80060ea: d004 beq.n 80060f6 - 80060ec: f240 618b movw r1, #1675 @ 0x68b - 80060f0: 4870 ldr r0, [pc, #448] @ (80062b4 ) - 80060f2: f7fd f83f bl 8003174 + 800632e: 683b ldr r3, [r7, #0] + 8006330: 681b ldr r3, [r3, #0] + 8006332: 2b12 cmp r3, #18 + 8006334: d909 bls.n 800634a + 8006336: 683b ldr r3, [r7, #0] + 8006338: 681b ldr r3, [r3, #0] + 800633a: 4a72 ldr r2, [pc, #456] @ (8006504 ) + 800633c: 4293 cmp r3, r2 + 800633e: d004 beq.n 800634a + 8006340: f240 618b movw r1, #1675 @ 0x68b + 8006344: 4870 ldr r0, [pc, #448] @ (8006508 ) + 8006346: f7fc ff71 bl 800322c assert_param(IS_ADC_REGULAR_RANK(sConfig->Rank)); - 80060f6: 683b ldr r3, [r7, #0] - 80060f8: 685b ldr r3, [r3, #4] - 80060fa: 2b00 cmp r3, #0 - 80060fc: d003 beq.n 8006106 - 80060fe: 683b ldr r3, [r7, #0] - 8006100: 685b ldr r3, [r3, #4] - 8006102: 2b10 cmp r3, #16 - 8006104: d904 bls.n 8006110 - 8006106: f240 618c movw r1, #1676 @ 0x68c - 800610a: 486a ldr r0, [pc, #424] @ (80062b4 ) - 800610c: f7fd f832 bl 8003174 + 800634a: 683b ldr r3, [r7, #0] + 800634c: 685b ldr r3, [r3, #4] + 800634e: 2b00 cmp r3, #0 + 8006350: d003 beq.n 800635a + 8006352: 683b ldr r3, [r7, #0] + 8006354: 685b ldr r3, [r3, #4] + 8006356: 2b10 cmp r3, #16 + 8006358: d904 bls.n 8006364 + 800635a: f240 618c movw r1, #1676 @ 0x68c + 800635e: 486a ldr r0, [pc, #424] @ (8006508 ) + 8006360: f7fc ff64 bl 800322c assert_param(IS_ADC_SAMPLE_TIME(sConfig->SamplingTime)); - 8006110: 683b ldr r3, [r7, #0] - 8006112: 689b ldr r3, [r3, #8] - 8006114: 2b00 cmp r3, #0 - 8006116: d020 beq.n 800615a - 8006118: 683b ldr r3, [r7, #0] - 800611a: 689b ldr r3, [r3, #8] - 800611c: 2b01 cmp r3, #1 - 800611e: d01c beq.n 800615a - 8006120: 683b ldr r3, [r7, #0] - 8006122: 689b ldr r3, [r3, #8] - 8006124: 2b02 cmp r3, #2 - 8006126: d018 beq.n 800615a - 8006128: 683b ldr r3, [r7, #0] - 800612a: 689b ldr r3, [r3, #8] - 800612c: 2b03 cmp r3, #3 - 800612e: d014 beq.n 800615a - 8006130: 683b ldr r3, [r7, #0] - 8006132: 689b ldr r3, [r3, #8] - 8006134: 2b04 cmp r3, #4 - 8006136: d010 beq.n 800615a - 8006138: 683b ldr r3, [r7, #0] - 800613a: 689b ldr r3, [r3, #8] - 800613c: 2b05 cmp r3, #5 - 800613e: d00c beq.n 800615a - 8006140: 683b ldr r3, [r7, #0] - 8006142: 689b ldr r3, [r3, #8] - 8006144: 2b06 cmp r3, #6 - 8006146: d008 beq.n 800615a - 8006148: 683b ldr r3, [r7, #0] - 800614a: 689b ldr r3, [r3, #8] - 800614c: 2b07 cmp r3, #7 - 800614e: d004 beq.n 800615a - 8006150: f240 618d movw r1, #1677 @ 0x68d - 8006154: 4857 ldr r0, [pc, #348] @ (80062b4 ) - 8006156: f7fd f80d bl 8003174 + 8006364: 683b ldr r3, [r7, #0] + 8006366: 689b ldr r3, [r3, #8] + 8006368: 2b00 cmp r3, #0 + 800636a: d020 beq.n 80063ae + 800636c: 683b ldr r3, [r7, #0] + 800636e: 689b ldr r3, [r3, #8] + 8006370: 2b01 cmp r3, #1 + 8006372: d01c beq.n 80063ae + 8006374: 683b ldr r3, [r7, #0] + 8006376: 689b ldr r3, [r3, #8] + 8006378: 2b02 cmp r3, #2 + 800637a: d018 beq.n 80063ae + 800637c: 683b ldr r3, [r7, #0] + 800637e: 689b ldr r3, [r3, #8] + 8006380: 2b03 cmp r3, #3 + 8006382: d014 beq.n 80063ae + 8006384: 683b ldr r3, [r7, #0] + 8006386: 689b ldr r3, [r3, #8] + 8006388: 2b04 cmp r3, #4 + 800638a: d010 beq.n 80063ae + 800638c: 683b ldr r3, [r7, #0] + 800638e: 689b ldr r3, [r3, #8] + 8006390: 2b05 cmp r3, #5 + 8006392: d00c beq.n 80063ae + 8006394: 683b ldr r3, [r7, #0] + 8006396: 689b ldr r3, [r3, #8] + 8006398: 2b06 cmp r3, #6 + 800639a: d008 beq.n 80063ae + 800639c: 683b ldr r3, [r7, #0] + 800639e: 689b ldr r3, [r3, #8] + 80063a0: 2b07 cmp r3, #7 + 80063a2: d004 beq.n 80063ae + 80063a4: f240 618d movw r1, #1677 @ 0x68d + 80063a8: 4857 ldr r0, [pc, #348] @ (8006508 ) + 80063aa: f7fc ff3f bl 800322c /* Process locked */ __HAL_LOCK(hadc); - 800615a: 687b ldr r3, [r7, #4] - 800615c: f893 303c ldrb.w r3, [r3, #60] @ 0x3c - 8006160: 2b01 cmp r3, #1 - 8006162: d101 bne.n 8006168 - 8006164: 2302 movs r3, #2 - 8006166: e118 b.n 800639a - 8006168: 687b ldr r3, [r7, #4] - 800616a: 2201 movs r2, #1 - 800616c: f883 203c strb.w r2, [r3, #60] @ 0x3c + 80063ae: 687b ldr r3, [r7, #4] + 80063b0: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 80063b4: 2b01 cmp r3, #1 + 80063b6: d101 bne.n 80063bc + 80063b8: 2302 movs r3, #2 + 80063ba: e118 b.n 80065ee + 80063bc: 687b ldr r3, [r7, #4] + 80063be: 2201 movs r2, #1 + 80063c0: f883 203c strb.w r2, [r3, #60] @ 0x3c /* if ADC_Channel_10 ... ADC_Channel_18 is selected */ if (sConfig->Channel > ADC_CHANNEL_9) - 8006170: 683b ldr r3, [r7, #0] - 8006172: 681b ldr r3, [r3, #0] - 8006174: 2b09 cmp r3, #9 - 8006176: d925 bls.n 80061c4 + 80063c4: 683b ldr r3, [r7, #0] + 80063c6: 681b ldr r3, [r3, #0] + 80063c8: 2b09 cmp r3, #9 + 80063ca: d925 bls.n 8006418 { /* Clear the old sample time */ hadc->Instance->SMPR1 &= ~ADC_SMPR1(ADC_SMPR1_SMP10, sConfig->Channel); - 8006178: 687b ldr r3, [r7, #4] - 800617a: 681b ldr r3, [r3, #0] - 800617c: 68d9 ldr r1, [r3, #12] - 800617e: 683b ldr r3, [r7, #0] - 8006180: 681b ldr r3, [r3, #0] - 8006182: b29b uxth r3, r3 - 8006184: 461a mov r2, r3 - 8006186: 4613 mov r3, r2 - 8006188: 005b lsls r3, r3, #1 - 800618a: 4413 add r3, r2 - 800618c: 3b1e subs r3, #30 - 800618e: 2207 movs r2, #7 - 8006190: fa02 f303 lsl.w r3, r2, r3 - 8006194: 43da mvns r2, r3 - 8006196: 687b ldr r3, [r7, #4] - 8006198: 681b ldr r3, [r3, #0] - 800619a: 400a ands r2, r1 - 800619c: 60da str r2, [r3, #12] + 80063cc: 687b ldr r3, [r7, #4] + 80063ce: 681b ldr r3, [r3, #0] + 80063d0: 68d9 ldr r1, [r3, #12] + 80063d2: 683b ldr r3, [r7, #0] + 80063d4: 681b ldr r3, [r3, #0] + 80063d6: b29b uxth r3, r3 + 80063d8: 461a mov r2, r3 + 80063da: 4613 mov r3, r2 + 80063dc: 005b lsls r3, r3, #1 + 80063de: 4413 add r3, r2 + 80063e0: 3b1e subs r3, #30 + 80063e2: 2207 movs r2, #7 + 80063e4: fa02 f303 lsl.w r3, r2, r3 + 80063e8: 43da mvns r2, r3 + 80063ea: 687b ldr r3, [r7, #4] + 80063ec: 681b ldr r3, [r3, #0] + 80063ee: 400a ands r2, r1 + 80063f0: 60da str r2, [r3, #12] /* Set the new sample time */ hadc->Instance->SMPR1 |= ADC_SMPR1(sConfig->SamplingTime, sConfig->Channel); - 800619e: 687b ldr r3, [r7, #4] - 80061a0: 681b ldr r3, [r3, #0] - 80061a2: 68d9 ldr r1, [r3, #12] - 80061a4: 683b ldr r3, [r7, #0] - 80061a6: 689a ldr r2, [r3, #8] - 80061a8: 683b ldr r3, [r7, #0] - 80061aa: 681b ldr r3, [r3, #0] - 80061ac: b29b uxth r3, r3 - 80061ae: 4618 mov r0, r3 - 80061b0: 4603 mov r3, r0 - 80061b2: 005b lsls r3, r3, #1 - 80061b4: 4403 add r3, r0 - 80061b6: 3b1e subs r3, #30 - 80061b8: 409a lsls r2, r3 - 80061ba: 687b ldr r3, [r7, #4] - 80061bc: 681b ldr r3, [r3, #0] - 80061be: 430a orrs r2, r1 - 80061c0: 60da str r2, [r3, #12] - 80061c2: e022 b.n 800620a + 80063f2: 687b ldr r3, [r7, #4] + 80063f4: 681b ldr r3, [r3, #0] + 80063f6: 68d9 ldr r1, [r3, #12] + 80063f8: 683b ldr r3, [r7, #0] + 80063fa: 689a ldr r2, [r3, #8] + 80063fc: 683b ldr r3, [r7, #0] + 80063fe: 681b ldr r3, [r3, #0] + 8006400: b29b uxth r3, r3 + 8006402: 4618 mov r0, r3 + 8006404: 4603 mov r3, r0 + 8006406: 005b lsls r3, r3, #1 + 8006408: 4403 add r3, r0 + 800640a: 3b1e subs r3, #30 + 800640c: 409a lsls r2, r3 + 800640e: 687b ldr r3, [r7, #4] + 8006410: 681b ldr r3, [r3, #0] + 8006412: 430a orrs r2, r1 + 8006414: 60da str r2, [r3, #12] + 8006416: e022 b.n 800645e } else /* ADC_Channel include in ADC_Channel_[0..9] */ { /* Clear the old sample time */ hadc->Instance->SMPR2 &= ~ADC_SMPR2(ADC_SMPR2_SMP0, sConfig->Channel); - 80061c4: 687b ldr r3, [r7, #4] - 80061c6: 681b ldr r3, [r3, #0] - 80061c8: 6919 ldr r1, [r3, #16] - 80061ca: 683b ldr r3, [r7, #0] - 80061cc: 681b ldr r3, [r3, #0] - 80061ce: b29b uxth r3, r3 - 80061d0: 461a mov r2, r3 - 80061d2: 4613 mov r3, r2 - 80061d4: 005b lsls r3, r3, #1 - 80061d6: 4413 add r3, r2 - 80061d8: 2207 movs r2, #7 - 80061da: fa02 f303 lsl.w r3, r2, r3 - 80061de: 43da mvns r2, r3 - 80061e0: 687b ldr r3, [r7, #4] - 80061e2: 681b ldr r3, [r3, #0] - 80061e4: 400a ands r2, r1 - 80061e6: 611a str r2, [r3, #16] + 8006418: 687b ldr r3, [r7, #4] + 800641a: 681b ldr r3, [r3, #0] + 800641c: 6919 ldr r1, [r3, #16] + 800641e: 683b ldr r3, [r7, #0] + 8006420: 681b ldr r3, [r3, #0] + 8006422: b29b uxth r3, r3 + 8006424: 461a mov r2, r3 + 8006426: 4613 mov r3, r2 + 8006428: 005b lsls r3, r3, #1 + 800642a: 4413 add r3, r2 + 800642c: 2207 movs r2, #7 + 800642e: fa02 f303 lsl.w r3, r2, r3 + 8006432: 43da mvns r2, r3 + 8006434: 687b ldr r3, [r7, #4] + 8006436: 681b ldr r3, [r3, #0] + 8006438: 400a ands r2, r1 + 800643a: 611a str r2, [r3, #16] /* Set the new sample time */ hadc->Instance->SMPR2 |= ADC_SMPR2(sConfig->SamplingTime, sConfig->Channel); - 80061e8: 687b ldr r3, [r7, #4] - 80061ea: 681b ldr r3, [r3, #0] - 80061ec: 6919 ldr r1, [r3, #16] - 80061ee: 683b ldr r3, [r7, #0] - 80061f0: 689a ldr r2, [r3, #8] - 80061f2: 683b ldr r3, [r7, #0] - 80061f4: 681b ldr r3, [r3, #0] - 80061f6: b29b uxth r3, r3 - 80061f8: 4618 mov r0, r3 - 80061fa: 4603 mov r3, r0 - 80061fc: 005b lsls r3, r3, #1 - 80061fe: 4403 add r3, r0 - 8006200: 409a lsls r2, r3 - 8006202: 687b ldr r3, [r7, #4] - 8006204: 681b ldr r3, [r3, #0] - 8006206: 430a orrs r2, r1 - 8006208: 611a str r2, [r3, #16] + 800643c: 687b ldr r3, [r7, #4] + 800643e: 681b ldr r3, [r3, #0] + 8006440: 6919 ldr r1, [r3, #16] + 8006442: 683b ldr r3, [r7, #0] + 8006444: 689a ldr r2, [r3, #8] + 8006446: 683b ldr r3, [r7, #0] + 8006448: 681b ldr r3, [r3, #0] + 800644a: b29b uxth r3, r3 + 800644c: 4618 mov r0, r3 + 800644e: 4603 mov r3, r0 + 8006450: 005b lsls r3, r3, #1 + 8006452: 4403 add r3, r0 + 8006454: 409a lsls r2, r3 + 8006456: 687b ldr r3, [r7, #4] + 8006458: 681b ldr r3, [r3, #0] + 800645a: 430a orrs r2, r1 + 800645c: 611a str r2, [r3, #16] } /* For Rank 1 to 6 */ if (sConfig->Rank < 7U) - 800620a: 683b ldr r3, [r7, #0] - 800620c: 685b ldr r3, [r3, #4] - 800620e: 2b06 cmp r3, #6 - 8006210: d824 bhi.n 800625c + 800645e: 683b ldr r3, [r7, #0] + 8006460: 685b ldr r3, [r3, #4] + 8006462: 2b06 cmp r3, #6 + 8006464: d824 bhi.n 80064b0 { /* Clear the old SQx bits for the selected rank */ hadc->Instance->SQR3 &= ~ADC_SQR3_RK(ADC_SQR3_SQ1, sConfig->Rank); - 8006212: 687b ldr r3, [r7, #4] - 8006214: 681b ldr r3, [r3, #0] - 8006216: 6b59 ldr r1, [r3, #52] @ 0x34 - 8006218: 683b ldr r3, [r7, #0] - 800621a: 685a ldr r2, [r3, #4] - 800621c: 4613 mov r3, r2 - 800621e: 009b lsls r3, r3, #2 - 8006220: 4413 add r3, r2 - 8006222: 3b05 subs r3, #5 - 8006224: 221f movs r2, #31 - 8006226: fa02 f303 lsl.w r3, r2, r3 - 800622a: 43da mvns r2, r3 - 800622c: 687b ldr r3, [r7, #4] - 800622e: 681b ldr r3, [r3, #0] - 8006230: 400a ands r2, r1 - 8006232: 635a str r2, [r3, #52] @ 0x34 + 8006466: 687b ldr r3, [r7, #4] + 8006468: 681b ldr r3, [r3, #0] + 800646a: 6b59 ldr r1, [r3, #52] @ 0x34 + 800646c: 683b ldr r3, [r7, #0] + 800646e: 685a ldr r2, [r3, #4] + 8006470: 4613 mov r3, r2 + 8006472: 009b lsls r3, r3, #2 + 8006474: 4413 add r3, r2 + 8006476: 3b05 subs r3, #5 + 8006478: 221f movs r2, #31 + 800647a: fa02 f303 lsl.w r3, r2, r3 + 800647e: 43da mvns r2, r3 + 8006480: 687b ldr r3, [r7, #4] + 8006482: 681b ldr r3, [r3, #0] + 8006484: 400a ands r2, r1 + 8006486: 635a str r2, [r3, #52] @ 0x34 /* Set the SQx bits for the selected rank */ hadc->Instance->SQR3 |= ADC_SQR3_RK(sConfig->Channel, sConfig->Rank); - 8006234: 687b ldr r3, [r7, #4] - 8006236: 681b ldr r3, [r3, #0] - 8006238: 6b59 ldr r1, [r3, #52] @ 0x34 - 800623a: 683b ldr r3, [r7, #0] - 800623c: 681b ldr r3, [r3, #0] - 800623e: b29b uxth r3, r3 - 8006240: 4618 mov r0, r3 - 8006242: 683b ldr r3, [r7, #0] - 8006244: 685a ldr r2, [r3, #4] - 8006246: 4613 mov r3, r2 - 8006248: 009b lsls r3, r3, #2 - 800624a: 4413 add r3, r2 - 800624c: 3b05 subs r3, #5 - 800624e: fa00 f203 lsl.w r2, r0, r3 - 8006252: 687b ldr r3, [r7, #4] - 8006254: 681b ldr r3, [r3, #0] - 8006256: 430a orrs r2, r1 - 8006258: 635a str r2, [r3, #52] @ 0x34 - 800625a: e051 b.n 8006300 + 8006488: 687b ldr r3, [r7, #4] + 800648a: 681b ldr r3, [r3, #0] + 800648c: 6b59 ldr r1, [r3, #52] @ 0x34 + 800648e: 683b ldr r3, [r7, #0] + 8006490: 681b ldr r3, [r3, #0] + 8006492: b29b uxth r3, r3 + 8006494: 4618 mov r0, r3 + 8006496: 683b ldr r3, [r7, #0] + 8006498: 685a ldr r2, [r3, #4] + 800649a: 4613 mov r3, r2 + 800649c: 009b lsls r3, r3, #2 + 800649e: 4413 add r3, r2 + 80064a0: 3b05 subs r3, #5 + 80064a2: fa00 f203 lsl.w r2, r0, r3 + 80064a6: 687b ldr r3, [r7, #4] + 80064a8: 681b ldr r3, [r3, #0] + 80064aa: 430a orrs r2, r1 + 80064ac: 635a str r2, [r3, #52] @ 0x34 + 80064ae: e051 b.n 8006554 } /* For Rank 7 to 12 */ else if (sConfig->Rank < 13U) - 800625c: 683b ldr r3, [r7, #0] - 800625e: 685b ldr r3, [r3, #4] - 8006260: 2b0c cmp r3, #12 - 8006262: d829 bhi.n 80062b8 + 80064b0: 683b ldr r3, [r7, #0] + 80064b2: 685b ldr r3, [r3, #4] + 80064b4: 2b0c cmp r3, #12 + 80064b6: d829 bhi.n 800650c { /* Clear the old SQx bits for the selected rank */ hadc->Instance->SQR2 &= ~ADC_SQR2_RK(ADC_SQR2_SQ7, sConfig->Rank); - 8006264: 687b ldr r3, [r7, #4] - 8006266: 681b ldr r3, [r3, #0] - 8006268: 6b19 ldr r1, [r3, #48] @ 0x30 - 800626a: 683b ldr r3, [r7, #0] - 800626c: 685a ldr r2, [r3, #4] - 800626e: 4613 mov r3, r2 - 8006270: 009b lsls r3, r3, #2 - 8006272: 4413 add r3, r2 - 8006274: 3b23 subs r3, #35 @ 0x23 - 8006276: 221f movs r2, #31 - 8006278: fa02 f303 lsl.w r3, r2, r3 - 800627c: 43da mvns r2, r3 - 800627e: 687b ldr r3, [r7, #4] - 8006280: 681b ldr r3, [r3, #0] - 8006282: 400a ands r2, r1 - 8006284: 631a str r2, [r3, #48] @ 0x30 + 80064b8: 687b ldr r3, [r7, #4] + 80064ba: 681b ldr r3, [r3, #0] + 80064bc: 6b19 ldr r1, [r3, #48] @ 0x30 + 80064be: 683b ldr r3, [r7, #0] + 80064c0: 685a ldr r2, [r3, #4] + 80064c2: 4613 mov r3, r2 + 80064c4: 009b lsls r3, r3, #2 + 80064c6: 4413 add r3, r2 + 80064c8: 3b23 subs r3, #35 @ 0x23 + 80064ca: 221f movs r2, #31 + 80064cc: fa02 f303 lsl.w r3, r2, r3 + 80064d0: 43da mvns r2, r3 + 80064d2: 687b ldr r3, [r7, #4] + 80064d4: 681b ldr r3, [r3, #0] + 80064d6: 400a ands r2, r1 + 80064d8: 631a str r2, [r3, #48] @ 0x30 /* Set the SQx bits for the selected rank */ hadc->Instance->SQR2 |= ADC_SQR2_RK(sConfig->Channel, sConfig->Rank); - 8006286: 687b ldr r3, [r7, #4] - 8006288: 681b ldr r3, [r3, #0] - 800628a: 6b19 ldr r1, [r3, #48] @ 0x30 - 800628c: 683b ldr r3, [r7, #0] - 800628e: 681b ldr r3, [r3, #0] - 8006290: b29b uxth r3, r3 - 8006292: 4618 mov r0, r3 - 8006294: 683b ldr r3, [r7, #0] - 8006296: 685a ldr r2, [r3, #4] - 8006298: 4613 mov r3, r2 - 800629a: 009b lsls r3, r3, #2 - 800629c: 4413 add r3, r2 - 800629e: 3b23 subs r3, #35 @ 0x23 - 80062a0: fa00 f203 lsl.w r2, r0, r3 - 80062a4: 687b ldr r3, [r7, #4] - 80062a6: 681b ldr r3, [r3, #0] - 80062a8: 430a orrs r2, r1 - 80062aa: 631a str r2, [r3, #48] @ 0x30 - 80062ac: e028 b.n 8006300 - 80062ae: bf00 nop - 80062b0: 10000012 .word 0x10000012 - 80062b4: 0800e73c .word 0x0800e73c + 80064da: 687b ldr r3, [r7, #4] + 80064dc: 681b ldr r3, [r3, #0] + 80064de: 6b19 ldr r1, [r3, #48] @ 0x30 + 80064e0: 683b ldr r3, [r7, #0] + 80064e2: 681b ldr r3, [r3, #0] + 80064e4: b29b uxth r3, r3 + 80064e6: 4618 mov r0, r3 + 80064e8: 683b ldr r3, [r7, #0] + 80064ea: 685a ldr r2, [r3, #4] + 80064ec: 4613 mov r3, r2 + 80064ee: 009b lsls r3, r3, #2 + 80064f0: 4413 add r3, r2 + 80064f2: 3b23 subs r3, #35 @ 0x23 + 80064f4: fa00 f203 lsl.w r2, r0, r3 + 80064f8: 687b ldr r3, [r7, #4] + 80064fa: 681b ldr r3, [r3, #0] + 80064fc: 430a orrs r2, r1 + 80064fe: 631a str r2, [r3, #48] @ 0x30 + 8006500: e028 b.n 8006554 + 8006502: bf00 nop + 8006504: 10000012 .word 0x10000012 + 8006508: 0800ecac .word 0x0800ecac } /* For Rank 13 to 16 */ else { /* Clear the old SQx bits for the selected rank */ hadc->Instance->SQR1 &= ~ADC_SQR1_RK(ADC_SQR1_SQ13, sConfig->Rank); - 80062b8: 687b ldr r3, [r7, #4] - 80062ba: 681b ldr r3, [r3, #0] - 80062bc: 6ad9 ldr r1, [r3, #44] @ 0x2c - 80062be: 683b ldr r3, [r7, #0] - 80062c0: 685a ldr r2, [r3, #4] - 80062c2: 4613 mov r3, r2 - 80062c4: 009b lsls r3, r3, #2 - 80062c6: 4413 add r3, r2 - 80062c8: 3b41 subs r3, #65 @ 0x41 - 80062ca: 221f movs r2, #31 - 80062cc: fa02 f303 lsl.w r3, r2, r3 - 80062d0: 43da mvns r2, r3 - 80062d2: 687b ldr r3, [r7, #4] - 80062d4: 681b ldr r3, [r3, #0] - 80062d6: 400a ands r2, r1 - 80062d8: 62da str r2, [r3, #44] @ 0x2c + 800650c: 687b ldr r3, [r7, #4] + 800650e: 681b ldr r3, [r3, #0] + 8006510: 6ad9 ldr r1, [r3, #44] @ 0x2c + 8006512: 683b ldr r3, [r7, #0] + 8006514: 685a ldr r2, [r3, #4] + 8006516: 4613 mov r3, r2 + 8006518: 009b lsls r3, r3, #2 + 800651a: 4413 add r3, r2 + 800651c: 3b41 subs r3, #65 @ 0x41 + 800651e: 221f movs r2, #31 + 8006520: fa02 f303 lsl.w r3, r2, r3 + 8006524: 43da mvns r2, r3 + 8006526: 687b ldr r3, [r7, #4] + 8006528: 681b ldr r3, [r3, #0] + 800652a: 400a ands r2, r1 + 800652c: 62da str r2, [r3, #44] @ 0x2c /* Set the SQx bits for the selected rank */ hadc->Instance->SQR1 |= ADC_SQR1_RK(sConfig->Channel, sConfig->Rank); - 80062da: 687b ldr r3, [r7, #4] - 80062dc: 681b ldr r3, [r3, #0] - 80062de: 6ad9 ldr r1, [r3, #44] @ 0x2c - 80062e0: 683b ldr r3, [r7, #0] - 80062e2: 681b ldr r3, [r3, #0] - 80062e4: b29b uxth r3, r3 - 80062e6: 4618 mov r0, r3 - 80062e8: 683b ldr r3, [r7, #0] - 80062ea: 685a ldr r2, [r3, #4] - 80062ec: 4613 mov r3, r2 - 80062ee: 009b lsls r3, r3, #2 - 80062f0: 4413 add r3, r2 - 80062f2: 3b41 subs r3, #65 @ 0x41 - 80062f4: fa00 f203 lsl.w r2, r0, r3 - 80062f8: 687b ldr r3, [r7, #4] - 80062fa: 681b ldr r3, [r3, #0] - 80062fc: 430a orrs r2, r1 - 80062fe: 62da str r2, [r3, #44] @ 0x2c + 800652e: 687b ldr r3, [r7, #4] + 8006530: 681b ldr r3, [r3, #0] + 8006532: 6ad9 ldr r1, [r3, #44] @ 0x2c + 8006534: 683b ldr r3, [r7, #0] + 8006536: 681b ldr r3, [r3, #0] + 8006538: b29b uxth r3, r3 + 800653a: 4618 mov r0, r3 + 800653c: 683b ldr r3, [r7, #0] + 800653e: 685a ldr r2, [r3, #4] + 8006540: 4613 mov r3, r2 + 8006542: 009b lsls r3, r3, #2 + 8006544: 4413 add r3, r2 + 8006546: 3b41 subs r3, #65 @ 0x41 + 8006548: fa00 f203 lsl.w r2, r0, r3 + 800654c: 687b ldr r3, [r7, #4] + 800654e: 681b ldr r3, [r3, #0] + 8006550: 430a orrs r2, r1 + 8006552: 62da str r2, [r3, #44] @ 0x2c } /* Pointer to the common control register to which is belonging hadc */ /* (Depending on STM32F4 product, there may be up to 3 ADCs and 1 common */ /* control register) */ tmpADC_Common = ADC_COMMON_REGISTER(hadc); - 8006300: 4b28 ldr r3, [pc, #160] @ (80063a4 ) - 8006302: 60fb str r3, [r7, #12] + 8006554: 4b28 ldr r3, [pc, #160] @ (80065f8 ) + 8006556: 60fb str r3, [r7, #12] /* if ADC1 Channel_18 is selected for VBAT Channel ennable VBATE */ if ((hadc->Instance == ADC1) && (sConfig->Channel == ADC_CHANNEL_VBAT)) - 8006304: 687b ldr r3, [r7, #4] - 8006306: 681b ldr r3, [r3, #0] - 8006308: 4a27 ldr r2, [pc, #156] @ (80063a8 ) - 800630a: 4293 cmp r3, r2 - 800630c: d10f bne.n 800632e - 800630e: 683b ldr r3, [r7, #0] - 8006310: 681b ldr r3, [r3, #0] - 8006312: 2b12 cmp r3, #18 - 8006314: d10b bne.n 800632e + 8006558: 687b ldr r3, [r7, #4] + 800655a: 681b ldr r3, [r3, #0] + 800655c: 4a27 ldr r2, [pc, #156] @ (80065fc ) + 800655e: 4293 cmp r3, r2 + 8006560: d10f bne.n 8006582 + 8006562: 683b ldr r3, [r7, #0] + 8006564: 681b ldr r3, [r3, #0] + 8006566: 2b12 cmp r3, #18 + 8006568: d10b bne.n 8006582 { /* Disable the TEMPSENSOR channel in case of using board with multiplixed ADC_CHANNEL_VBAT & ADC_CHANNEL_TEMPSENSOR*/ if ((uint16_t)ADC_CHANNEL_TEMPSENSOR == (uint16_t)ADC_CHANNEL_VBAT) { tmpADC_Common->CCR &= ~ADC_CCR_TSVREFE; - 8006316: 68fb ldr r3, [r7, #12] - 8006318: 685b ldr r3, [r3, #4] - 800631a: f423 0200 bic.w r2, r3, #8388608 @ 0x800000 - 800631e: 68fb ldr r3, [r7, #12] - 8006320: 605a str r2, [r3, #4] + 800656a: 68fb ldr r3, [r7, #12] + 800656c: 685b ldr r3, [r3, #4] + 800656e: f423 0200 bic.w r2, r3, #8388608 @ 0x800000 + 8006572: 68fb ldr r3, [r7, #12] + 8006574: 605a str r2, [r3, #4] } /* Enable the VBAT channel*/ tmpADC_Common->CCR |= ADC_CCR_VBATE; - 8006322: 68fb ldr r3, [r7, #12] - 8006324: 685b ldr r3, [r3, #4] - 8006326: f443 0280 orr.w r2, r3, #4194304 @ 0x400000 - 800632a: 68fb ldr r3, [r7, #12] - 800632c: 605a str r2, [r3, #4] + 8006576: 68fb ldr r3, [r7, #12] + 8006578: 685b ldr r3, [r3, #4] + 800657a: f443 0280 orr.w r2, r3, #4194304 @ 0x400000 + 800657e: 68fb ldr r3, [r7, #12] + 8006580: 605a str r2, [r3, #4] } /* if ADC1 Channel_16 or Channel_18 is selected for Temperature sensor or Channel_17 is selected for VREFINT enable TSVREFE */ if ((hadc->Instance == ADC1) && ((sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) || (sConfig->Channel == ADC_CHANNEL_VREFINT))) - 800632e: 687b ldr r3, [r7, #4] - 8006330: 681b ldr r3, [r3, #0] - 8006332: 4a1d ldr r2, [pc, #116] @ (80063a8 ) - 8006334: 4293 cmp r3, r2 - 8006336: d12b bne.n 8006390 - 8006338: 683b ldr r3, [r7, #0] - 800633a: 681b ldr r3, [r3, #0] - 800633c: 4a1b ldr r2, [pc, #108] @ (80063ac ) - 800633e: 4293 cmp r3, r2 - 8006340: d003 beq.n 800634a - 8006342: 683b ldr r3, [r7, #0] - 8006344: 681b ldr r3, [r3, #0] - 8006346: 2b11 cmp r3, #17 - 8006348: d122 bne.n 8006390 + 8006582: 687b ldr r3, [r7, #4] + 8006584: 681b ldr r3, [r3, #0] + 8006586: 4a1d ldr r2, [pc, #116] @ (80065fc ) + 8006588: 4293 cmp r3, r2 + 800658a: d12b bne.n 80065e4 + 800658c: 683b ldr r3, [r7, #0] + 800658e: 681b ldr r3, [r3, #0] + 8006590: 4a1b ldr r2, [pc, #108] @ (8006600 ) + 8006592: 4293 cmp r3, r2 + 8006594: d003 beq.n 800659e + 8006596: 683b ldr r3, [r7, #0] + 8006598: 681b ldr r3, [r3, #0] + 800659a: 2b11 cmp r3, #17 + 800659c: d122 bne.n 80065e4 { /* Disable the VBAT channel in case of using board with multiplixed ADC_CHANNEL_VBAT & ADC_CHANNEL_TEMPSENSOR*/ if ((uint16_t)ADC_CHANNEL_TEMPSENSOR == (uint16_t)ADC_CHANNEL_VBAT) { tmpADC_Common->CCR &= ~ADC_CCR_VBATE; - 800634a: 68fb ldr r3, [r7, #12] - 800634c: 685b ldr r3, [r3, #4] - 800634e: f423 0280 bic.w r2, r3, #4194304 @ 0x400000 - 8006352: 68fb ldr r3, [r7, #12] - 8006354: 605a str r2, [r3, #4] + 800659e: 68fb ldr r3, [r7, #12] + 80065a0: 685b ldr r3, [r3, #4] + 80065a2: f423 0280 bic.w r2, r3, #4194304 @ 0x400000 + 80065a6: 68fb ldr r3, [r7, #12] + 80065a8: 605a str r2, [r3, #4] } /* Enable the Temperature sensor and VREFINT channel*/ tmpADC_Common->CCR |= ADC_CCR_TSVREFE; - 8006356: 68fb ldr r3, [r7, #12] - 8006358: 685b ldr r3, [r3, #4] - 800635a: f443 0200 orr.w r2, r3, #8388608 @ 0x800000 - 800635e: 68fb ldr r3, [r7, #12] - 8006360: 605a str r2, [r3, #4] + 80065aa: 68fb ldr r3, [r7, #12] + 80065ac: 685b ldr r3, [r3, #4] + 80065ae: f443 0200 orr.w r2, r3, #8388608 @ 0x800000 + 80065b2: 68fb ldr r3, [r7, #12] + 80065b4: 605a str r2, [r3, #4] if (sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) - 8006362: 683b ldr r3, [r7, #0] - 8006364: 681b ldr r3, [r3, #0] - 8006366: 4a11 ldr r2, [pc, #68] @ (80063ac ) - 8006368: 4293 cmp r3, r2 - 800636a: d111 bne.n 8006390 + 80065b6: 683b ldr r3, [r7, #0] + 80065b8: 681b ldr r3, [r3, #0] + 80065ba: 4a11 ldr r2, [pc, #68] @ (8006600 ) + 80065bc: 4293 cmp r3, r2 + 80065be: d111 bne.n 80065e4 { /* Delay for temperature sensor stabilization time */ /* Compute number of CPU cycles to wait for */ counter = (ADC_TEMPSENSOR_DELAY_US * (SystemCoreClock / 1000000U)); - 800636c: 4b10 ldr r3, [pc, #64] @ (80063b0 ) - 800636e: 681b ldr r3, [r3, #0] - 8006370: 4a10 ldr r2, [pc, #64] @ (80063b4 ) - 8006372: fba2 2303 umull r2, r3, r2, r3 - 8006376: 0c9a lsrs r2, r3, #18 - 8006378: 4613 mov r3, r2 - 800637a: 009b lsls r3, r3, #2 - 800637c: 4413 add r3, r2 - 800637e: 005b lsls r3, r3, #1 - 8006380: 60bb str r3, [r7, #8] + 80065c0: 4b10 ldr r3, [pc, #64] @ (8006604 ) + 80065c2: 681b ldr r3, [r3, #0] + 80065c4: 4a10 ldr r2, [pc, #64] @ (8006608 ) + 80065c6: fba2 2303 umull r2, r3, r2, r3 + 80065ca: 0c9a lsrs r2, r3, #18 + 80065cc: 4613 mov r3, r2 + 80065ce: 009b lsls r3, r3, #2 + 80065d0: 4413 add r3, r2 + 80065d2: 005b lsls r3, r3, #1 + 80065d4: 60bb str r3, [r7, #8] while (counter != 0U) - 8006382: e002 b.n 800638a + 80065d6: e002 b.n 80065de { counter--; - 8006384: 68bb ldr r3, [r7, #8] - 8006386: 3b01 subs r3, #1 - 8006388: 60bb str r3, [r7, #8] + 80065d8: 68bb ldr r3, [r7, #8] + 80065da: 3b01 subs r3, #1 + 80065dc: 60bb str r3, [r7, #8] while (counter != 0U) - 800638a: 68bb ldr r3, [r7, #8] - 800638c: 2b00 cmp r3, #0 - 800638e: d1f9 bne.n 8006384 + 80065de: 68bb ldr r3, [r7, #8] + 80065e0: 2b00 cmp r3, #0 + 80065e2: d1f9 bne.n 80065d8 } } } /* Process unlocked */ __HAL_UNLOCK(hadc); - 8006390: 687b ldr r3, [r7, #4] - 8006392: 2200 movs r2, #0 - 8006394: f883 203c strb.w r2, [r3, #60] @ 0x3c + 80065e4: 687b ldr r3, [r7, #4] + 80065e6: 2200 movs r2, #0 + 80065e8: f883 203c strb.w r2, [r3, #60] @ 0x3c /* Return function status */ return HAL_OK; - 8006398: 2300 movs r3, #0 + 80065ec: 2300 movs r3, #0 } - 800639a: 4618 mov r0, r3 - 800639c: 3710 adds r7, #16 - 800639e: 46bd mov sp, r7 - 80063a0: bd80 pop {r7, pc} - 80063a2: bf00 nop - 80063a4: 40012300 .word 0x40012300 - 80063a8: 40012000 .word 0x40012000 - 80063ac: 10000012 .word 0x10000012 - 80063b0: 20000000 .word 0x20000000 - 80063b4: 431bde83 .word 0x431bde83 + 80065ee: 4618 mov r0, r3 + 80065f0: 3710 adds r7, #16 + 80065f2: 46bd mov sp, r7 + 80065f4: bd80 pop {r7, pc} + 80065f6: bf00 nop + 80065f8: 40012300 .word 0x40012300 + 80065fc: 40012000 .word 0x40012000 + 8006600: 10000012 .word 0x10000012 + 8006604: 20000000 .word 0x20000000 + 8006608: 431bde83 .word 0x431bde83 -080063b8 : +0800660c : * @param hadc pointer to a ADC_HandleTypeDef structure that contains * the configuration information for the specified ADC. * @retval None */ static void ADC_Init(ADC_HandleTypeDef *hadc) { - 80063b8: b580 push {r7, lr} - 80063ba: b084 sub sp, #16 - 80063bc: af00 add r7, sp, #0 - 80063be: 6078 str r0, [r7, #4] + 800660c: b580 push {r7, lr} + 800660e: b084 sub sp, #16 + 8006610: af00 add r7, sp, #0 + 8006612: 6078 str r0, [r7, #4] /* Set ADC parameters */ /* Pointer to the common control register to which is belonging hadc */ /* (Depending on STM32F4 product, there may be up to 3 ADCs and 1 common */ /* control register) */ tmpADC_Common = ADC_COMMON_REGISTER(hadc); - 80063c0: 4b7f ldr r3, [pc, #508] @ (80065c0 ) - 80063c2: 60fb str r3, [r7, #12] + 8006614: 4b7f ldr r3, [pc, #508] @ (8006814 ) + 8006616: 60fb str r3, [r7, #12] /* Set the ADC clock prescaler */ tmpADC_Common->CCR &= ~(ADC_CCR_ADCPRE); - 80063c4: 68fb ldr r3, [r7, #12] - 80063c6: 685b ldr r3, [r3, #4] - 80063c8: f423 3240 bic.w r2, r3, #196608 @ 0x30000 - 80063cc: 68fb ldr r3, [r7, #12] - 80063ce: 605a str r2, [r3, #4] + 8006618: 68fb ldr r3, [r7, #12] + 800661a: 685b ldr r3, [r3, #4] + 800661c: f423 3240 bic.w r2, r3, #196608 @ 0x30000 + 8006620: 68fb ldr r3, [r7, #12] + 8006622: 605a str r2, [r3, #4] tmpADC_Common->CCR |= hadc->Init.ClockPrescaler; - 80063d0: 68fb ldr r3, [r7, #12] - 80063d2: 685a ldr r2, [r3, #4] - 80063d4: 687b ldr r3, [r7, #4] - 80063d6: 685b ldr r3, [r3, #4] - 80063d8: 431a orrs r2, r3 - 80063da: 68fb ldr r3, [r7, #12] - 80063dc: 605a str r2, [r3, #4] + 8006624: 68fb ldr r3, [r7, #12] + 8006626: 685a ldr r2, [r3, #4] + 8006628: 687b ldr r3, [r7, #4] + 800662a: 685b ldr r3, [r3, #4] + 800662c: 431a orrs r2, r3 + 800662e: 68fb ldr r3, [r7, #12] + 8006630: 605a str r2, [r3, #4] /* Set ADC scan mode */ hadc->Instance->CR1 &= ~(ADC_CR1_SCAN); - 80063de: 687b ldr r3, [r7, #4] - 80063e0: 681b ldr r3, [r3, #0] - 80063e2: 685a ldr r2, [r3, #4] - 80063e4: 687b ldr r3, [r7, #4] - 80063e6: 681b ldr r3, [r3, #0] - 80063e8: f422 7280 bic.w r2, r2, #256 @ 0x100 - 80063ec: 605a str r2, [r3, #4] + 8006632: 687b ldr r3, [r7, #4] + 8006634: 681b ldr r3, [r3, #0] + 8006636: 685a ldr r2, [r3, #4] + 8006638: 687b ldr r3, [r7, #4] + 800663a: 681b ldr r3, [r3, #0] + 800663c: f422 7280 bic.w r2, r2, #256 @ 0x100 + 8006640: 605a str r2, [r3, #4] hadc->Instance->CR1 |= ADC_CR1_SCANCONV(hadc->Init.ScanConvMode); - 80063ee: 687b ldr r3, [r7, #4] - 80063f0: 681b ldr r3, [r3, #0] - 80063f2: 6859 ldr r1, [r3, #4] - 80063f4: 687b ldr r3, [r7, #4] - 80063f6: 691b ldr r3, [r3, #16] - 80063f8: 021a lsls r2, r3, #8 - 80063fa: 687b ldr r3, [r7, #4] - 80063fc: 681b ldr r3, [r3, #0] - 80063fe: 430a orrs r2, r1 - 8006400: 605a str r2, [r3, #4] + 8006642: 687b ldr r3, [r7, #4] + 8006644: 681b ldr r3, [r3, #0] + 8006646: 6859 ldr r1, [r3, #4] + 8006648: 687b ldr r3, [r7, #4] + 800664a: 691b ldr r3, [r3, #16] + 800664c: 021a lsls r2, r3, #8 + 800664e: 687b ldr r3, [r7, #4] + 8006650: 681b ldr r3, [r3, #0] + 8006652: 430a orrs r2, r1 + 8006654: 605a str r2, [r3, #4] /* Set ADC resolution */ hadc->Instance->CR1 &= ~(ADC_CR1_RES); - 8006402: 687b ldr r3, [r7, #4] - 8006404: 681b ldr r3, [r3, #0] - 8006406: 685a ldr r2, [r3, #4] - 8006408: 687b ldr r3, [r7, #4] - 800640a: 681b ldr r3, [r3, #0] - 800640c: f022 7240 bic.w r2, r2, #50331648 @ 0x3000000 - 8006410: 605a str r2, [r3, #4] + 8006656: 687b ldr r3, [r7, #4] + 8006658: 681b ldr r3, [r3, #0] + 800665a: 685a ldr r2, [r3, #4] + 800665c: 687b ldr r3, [r7, #4] + 800665e: 681b ldr r3, [r3, #0] + 8006660: f022 7240 bic.w r2, r2, #50331648 @ 0x3000000 + 8006664: 605a str r2, [r3, #4] hadc->Instance->CR1 |= hadc->Init.Resolution; - 8006412: 687b ldr r3, [r7, #4] - 8006414: 681b ldr r3, [r3, #0] - 8006416: 6859 ldr r1, [r3, #4] - 8006418: 687b ldr r3, [r7, #4] - 800641a: 689a ldr r2, [r3, #8] - 800641c: 687b ldr r3, [r7, #4] - 800641e: 681b ldr r3, [r3, #0] - 8006420: 430a orrs r2, r1 - 8006422: 605a str r2, [r3, #4] + 8006666: 687b ldr r3, [r7, #4] + 8006668: 681b ldr r3, [r3, #0] + 800666a: 6859 ldr r1, [r3, #4] + 800666c: 687b ldr r3, [r7, #4] + 800666e: 689a ldr r2, [r3, #8] + 8006670: 687b ldr r3, [r7, #4] + 8006672: 681b ldr r3, [r3, #0] + 8006674: 430a orrs r2, r1 + 8006676: 605a str r2, [r3, #4] /* Set ADC data alignment */ hadc->Instance->CR2 &= ~(ADC_CR2_ALIGN); - 8006424: 687b ldr r3, [r7, #4] - 8006426: 681b ldr r3, [r3, #0] - 8006428: 689a ldr r2, [r3, #8] - 800642a: 687b ldr r3, [r7, #4] - 800642c: 681b ldr r3, [r3, #0] - 800642e: f422 6200 bic.w r2, r2, #2048 @ 0x800 - 8006432: 609a str r2, [r3, #8] + 8006678: 687b ldr r3, [r7, #4] + 800667a: 681b ldr r3, [r3, #0] + 800667c: 689a ldr r2, [r3, #8] + 800667e: 687b ldr r3, [r7, #4] + 8006680: 681b ldr r3, [r3, #0] + 8006682: f422 6200 bic.w r2, r2, #2048 @ 0x800 + 8006686: 609a str r2, [r3, #8] hadc->Instance->CR2 |= hadc->Init.DataAlign; - 8006434: 687b ldr r3, [r7, #4] - 8006436: 681b ldr r3, [r3, #0] - 8006438: 6899 ldr r1, [r3, #8] - 800643a: 687b ldr r3, [r7, #4] - 800643c: 68da ldr r2, [r3, #12] - 800643e: 687b ldr r3, [r7, #4] - 8006440: 681b ldr r3, [r3, #0] - 8006442: 430a orrs r2, r1 - 8006444: 609a str r2, [r3, #8] + 8006688: 687b ldr r3, [r7, #4] + 800668a: 681b ldr r3, [r3, #0] + 800668c: 6899 ldr r1, [r3, #8] + 800668e: 687b ldr r3, [r7, #4] + 8006690: 68da ldr r2, [r3, #12] + 8006692: 687b ldr r3, [r7, #4] + 8006694: 681b ldr r3, [r3, #0] + 8006696: 430a orrs r2, r1 + 8006698: 609a str r2, [r3, #8] /* Enable external trigger if trigger selection is different of software */ /* start. */ /* Note: This configuration keeps the hardware feature of parameter */ /* ExternalTrigConvEdge "trigger edge none" equivalent to */ /* software start. */ if (hadc->Init.ExternalTrigConv != ADC_SOFTWARE_START) - 8006446: 687b ldr r3, [r7, #4] - 8006448: 6a9b ldr r3, [r3, #40] @ 0x28 - 800644a: 4a5e ldr r2, [pc, #376] @ (80065c4 ) - 800644c: 4293 cmp r3, r2 - 800644e: d022 beq.n 8006496 + 800669a: 687b ldr r3, [r7, #4] + 800669c: 6a9b ldr r3, [r3, #40] @ 0x28 + 800669e: 4a5e ldr r2, [pc, #376] @ (8006818 ) + 80066a0: 4293 cmp r3, r2 + 80066a2: d022 beq.n 80066ea { /* Select external trigger to start conversion */ hadc->Instance->CR2 &= ~(ADC_CR2_EXTSEL); - 8006450: 687b ldr r3, [r7, #4] - 8006452: 681b ldr r3, [r3, #0] - 8006454: 689a ldr r2, [r3, #8] - 8006456: 687b ldr r3, [r7, #4] - 8006458: 681b ldr r3, [r3, #0] - 800645a: f022 6270 bic.w r2, r2, #251658240 @ 0xf000000 - 800645e: 609a str r2, [r3, #8] + 80066a4: 687b ldr r3, [r7, #4] + 80066a6: 681b ldr r3, [r3, #0] + 80066a8: 689a ldr r2, [r3, #8] + 80066aa: 687b ldr r3, [r7, #4] + 80066ac: 681b ldr r3, [r3, #0] + 80066ae: f022 6270 bic.w r2, r2, #251658240 @ 0xf000000 + 80066b2: 609a str r2, [r3, #8] hadc->Instance->CR2 |= hadc->Init.ExternalTrigConv; - 8006460: 687b ldr r3, [r7, #4] - 8006462: 681b ldr r3, [r3, #0] - 8006464: 6899 ldr r1, [r3, #8] - 8006466: 687b ldr r3, [r7, #4] - 8006468: 6a9a ldr r2, [r3, #40] @ 0x28 - 800646a: 687b ldr r3, [r7, #4] - 800646c: 681b ldr r3, [r3, #0] - 800646e: 430a orrs r2, r1 - 8006470: 609a str r2, [r3, #8] + 80066b4: 687b ldr r3, [r7, #4] + 80066b6: 681b ldr r3, [r3, #0] + 80066b8: 6899 ldr r1, [r3, #8] + 80066ba: 687b ldr r3, [r7, #4] + 80066bc: 6a9a ldr r2, [r3, #40] @ 0x28 + 80066be: 687b ldr r3, [r7, #4] + 80066c0: 681b ldr r3, [r3, #0] + 80066c2: 430a orrs r2, r1 + 80066c4: 609a str r2, [r3, #8] /* Select external trigger polarity */ hadc->Instance->CR2 &= ~(ADC_CR2_EXTEN); - 8006472: 687b ldr r3, [r7, #4] - 8006474: 681b ldr r3, [r3, #0] - 8006476: 689a ldr r2, [r3, #8] - 8006478: 687b ldr r3, [r7, #4] - 800647a: 681b ldr r3, [r3, #0] - 800647c: f022 5240 bic.w r2, r2, #805306368 @ 0x30000000 - 8006480: 609a str r2, [r3, #8] + 80066c6: 687b ldr r3, [r7, #4] + 80066c8: 681b ldr r3, [r3, #0] + 80066ca: 689a ldr r2, [r3, #8] + 80066cc: 687b ldr r3, [r7, #4] + 80066ce: 681b ldr r3, [r3, #0] + 80066d0: f022 5240 bic.w r2, r2, #805306368 @ 0x30000000 + 80066d4: 609a str r2, [r3, #8] hadc->Instance->CR2 |= hadc->Init.ExternalTrigConvEdge; - 8006482: 687b ldr r3, [r7, #4] - 8006484: 681b ldr r3, [r3, #0] - 8006486: 6899 ldr r1, [r3, #8] - 8006488: 687b ldr r3, [r7, #4] - 800648a: 6ada ldr r2, [r3, #44] @ 0x2c - 800648c: 687b ldr r3, [r7, #4] - 800648e: 681b ldr r3, [r3, #0] - 8006490: 430a orrs r2, r1 - 8006492: 609a str r2, [r3, #8] - 8006494: e00f b.n 80064b6 + 80066d6: 687b ldr r3, [r7, #4] + 80066d8: 681b ldr r3, [r3, #0] + 80066da: 6899 ldr r1, [r3, #8] + 80066dc: 687b ldr r3, [r7, #4] + 80066de: 6ada ldr r2, [r3, #44] @ 0x2c + 80066e0: 687b ldr r3, [r7, #4] + 80066e2: 681b ldr r3, [r3, #0] + 80066e4: 430a orrs r2, r1 + 80066e6: 609a str r2, [r3, #8] + 80066e8: e00f b.n 800670a } else { /* Reset the external trigger */ hadc->Instance->CR2 &= ~(ADC_CR2_EXTSEL); - 8006496: 687b ldr r3, [r7, #4] - 8006498: 681b ldr r3, [r3, #0] - 800649a: 689a ldr r2, [r3, #8] - 800649c: 687b ldr r3, [r7, #4] - 800649e: 681b ldr r3, [r3, #0] - 80064a0: f022 6270 bic.w r2, r2, #251658240 @ 0xf000000 - 80064a4: 609a str r2, [r3, #8] + 80066ea: 687b ldr r3, [r7, #4] + 80066ec: 681b ldr r3, [r3, #0] + 80066ee: 689a ldr r2, [r3, #8] + 80066f0: 687b ldr r3, [r7, #4] + 80066f2: 681b ldr r3, [r3, #0] + 80066f4: f022 6270 bic.w r2, r2, #251658240 @ 0xf000000 + 80066f8: 609a str r2, [r3, #8] hadc->Instance->CR2 &= ~(ADC_CR2_EXTEN); - 80064a6: 687b ldr r3, [r7, #4] - 80064a8: 681b ldr r3, [r3, #0] - 80064aa: 689a ldr r2, [r3, #8] - 80064ac: 687b ldr r3, [r7, #4] - 80064ae: 681b ldr r3, [r3, #0] - 80064b0: f022 5240 bic.w r2, r2, #805306368 @ 0x30000000 - 80064b4: 609a str r2, [r3, #8] + 80066fa: 687b ldr r3, [r7, #4] + 80066fc: 681b ldr r3, [r3, #0] + 80066fe: 689a ldr r2, [r3, #8] + 8006700: 687b ldr r3, [r7, #4] + 8006702: 681b ldr r3, [r3, #0] + 8006704: f022 5240 bic.w r2, r2, #805306368 @ 0x30000000 + 8006708: 609a str r2, [r3, #8] } /* Enable or disable ADC continuous conversion mode */ hadc->Instance->CR2 &= ~(ADC_CR2_CONT); - 80064b6: 687b ldr r3, [r7, #4] - 80064b8: 681b ldr r3, [r3, #0] - 80064ba: 689a ldr r2, [r3, #8] - 80064bc: 687b ldr r3, [r7, #4] - 80064be: 681b ldr r3, [r3, #0] - 80064c0: f022 0202 bic.w r2, r2, #2 - 80064c4: 609a str r2, [r3, #8] + 800670a: 687b ldr r3, [r7, #4] + 800670c: 681b ldr r3, [r3, #0] + 800670e: 689a ldr r2, [r3, #8] + 8006710: 687b ldr r3, [r7, #4] + 8006712: 681b ldr r3, [r3, #0] + 8006714: f022 0202 bic.w r2, r2, #2 + 8006718: 609a str r2, [r3, #8] hadc->Instance->CR2 |= ADC_CR2_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode); - 80064c6: 687b ldr r3, [r7, #4] - 80064c8: 681b ldr r3, [r3, #0] - 80064ca: 6899 ldr r1, [r3, #8] - 80064cc: 687b ldr r3, [r7, #4] - 80064ce: 7e1b ldrb r3, [r3, #24] - 80064d0: 005a lsls r2, r3, #1 - 80064d2: 687b ldr r3, [r7, #4] - 80064d4: 681b ldr r3, [r3, #0] - 80064d6: 430a orrs r2, r1 - 80064d8: 609a str r2, [r3, #8] + 800671a: 687b ldr r3, [r7, #4] + 800671c: 681b ldr r3, [r3, #0] + 800671e: 6899 ldr r1, [r3, #8] + 8006720: 687b ldr r3, [r7, #4] + 8006722: 7e1b ldrb r3, [r3, #24] + 8006724: 005a lsls r2, r3, #1 + 8006726: 687b ldr r3, [r7, #4] + 8006728: 681b ldr r3, [r3, #0] + 800672a: 430a orrs r2, r1 + 800672c: 609a str r2, [r3, #8] if (hadc->Init.DiscontinuousConvMode != DISABLE) - 80064da: 687b ldr r3, [r7, #4] - 80064dc: f893 3020 ldrb.w r3, [r3, #32] - 80064e0: 2b00 cmp r3, #0 - 80064e2: d028 beq.n 8006536 + 800672e: 687b ldr r3, [r7, #4] + 8006730: f893 3020 ldrb.w r3, [r3, #32] + 8006734: 2b00 cmp r3, #0 + 8006736: d028 beq.n 800678a { assert_param(IS_ADC_REGULAR_DISC_NUMBER(hadc->Init.NbrOfDiscConversion)); - 80064e4: 687b ldr r3, [r7, #4] - 80064e6: 6a5b ldr r3, [r3, #36] @ 0x24 - 80064e8: 2b00 cmp r3, #0 - 80064ea: d003 beq.n 80064f4 - 80064ec: 687b ldr r3, [r7, #4] - 80064ee: 6a5b ldr r3, [r3, #36] @ 0x24 - 80064f0: 2b08 cmp r3, #8 - 80064f2: d904 bls.n 80064fe - 80064f4: f44f 61f5 mov.w r1, #1960 @ 0x7a8 - 80064f8: 4833 ldr r0, [pc, #204] @ (80065c8 ) - 80064fa: f7fc fe3b bl 8003174 + 8006738: 687b ldr r3, [r7, #4] + 800673a: 6a5b ldr r3, [r3, #36] @ 0x24 + 800673c: 2b00 cmp r3, #0 + 800673e: d003 beq.n 8006748 + 8006740: 687b ldr r3, [r7, #4] + 8006742: 6a5b ldr r3, [r3, #36] @ 0x24 + 8006744: 2b08 cmp r3, #8 + 8006746: d904 bls.n 8006752 + 8006748: f44f 61f5 mov.w r1, #1960 @ 0x7a8 + 800674c: 4833 ldr r0, [pc, #204] @ (800681c ) + 800674e: f7fc fd6d bl 800322c /* Enable the selected ADC regular discontinuous mode */ hadc->Instance->CR1 |= (uint32_t)ADC_CR1_DISCEN; - 80064fe: 687b ldr r3, [r7, #4] - 8006500: 681b ldr r3, [r3, #0] - 8006502: 685a ldr r2, [r3, #4] - 8006504: 687b ldr r3, [r7, #4] - 8006506: 681b ldr r3, [r3, #0] - 8006508: f442 6200 orr.w r2, r2, #2048 @ 0x800 - 800650c: 605a str r2, [r3, #4] + 8006752: 687b ldr r3, [r7, #4] + 8006754: 681b ldr r3, [r3, #0] + 8006756: 685a ldr r2, [r3, #4] + 8006758: 687b ldr r3, [r7, #4] + 800675a: 681b ldr r3, [r3, #0] + 800675c: f442 6200 orr.w r2, r2, #2048 @ 0x800 + 8006760: 605a str r2, [r3, #4] /* Set the number of channels to be converted in discontinuous mode */ hadc->Instance->CR1 &= ~(ADC_CR1_DISCNUM); - 800650e: 687b ldr r3, [r7, #4] - 8006510: 681b ldr r3, [r3, #0] - 8006512: 685a ldr r2, [r3, #4] - 8006514: 687b ldr r3, [r7, #4] - 8006516: 681b ldr r3, [r3, #0] - 8006518: f422 4260 bic.w r2, r2, #57344 @ 0xe000 - 800651c: 605a str r2, [r3, #4] + 8006762: 687b ldr r3, [r7, #4] + 8006764: 681b ldr r3, [r3, #0] + 8006766: 685a ldr r2, [r3, #4] + 8006768: 687b ldr r3, [r7, #4] + 800676a: 681b ldr r3, [r3, #0] + 800676c: f422 4260 bic.w r2, r2, #57344 @ 0xe000 + 8006770: 605a str r2, [r3, #4] hadc->Instance->CR1 |= ADC_CR1_DISCONTINUOUS(hadc->Init.NbrOfDiscConversion); - 800651e: 687b ldr r3, [r7, #4] - 8006520: 681b ldr r3, [r3, #0] - 8006522: 6859 ldr r1, [r3, #4] - 8006524: 687b ldr r3, [r7, #4] - 8006526: 6a5b ldr r3, [r3, #36] @ 0x24 - 8006528: 3b01 subs r3, #1 - 800652a: 035a lsls r2, r3, #13 - 800652c: 687b ldr r3, [r7, #4] - 800652e: 681b ldr r3, [r3, #0] - 8006530: 430a orrs r2, r1 - 8006532: 605a str r2, [r3, #4] - 8006534: e007 b.n 8006546 + 8006772: 687b ldr r3, [r7, #4] + 8006774: 681b ldr r3, [r3, #0] + 8006776: 6859 ldr r1, [r3, #4] + 8006778: 687b ldr r3, [r7, #4] + 800677a: 6a5b ldr r3, [r3, #36] @ 0x24 + 800677c: 3b01 subs r3, #1 + 800677e: 035a lsls r2, r3, #13 + 8006780: 687b ldr r3, [r7, #4] + 8006782: 681b ldr r3, [r3, #0] + 8006784: 430a orrs r2, r1 + 8006786: 605a str r2, [r3, #4] + 8006788: e007 b.n 800679a } else { /* Disable the selected ADC regular discontinuous mode */ hadc->Instance->CR1 &= ~(ADC_CR1_DISCEN); - 8006536: 687b ldr r3, [r7, #4] - 8006538: 681b ldr r3, [r3, #0] - 800653a: 685a ldr r2, [r3, #4] - 800653c: 687b ldr r3, [r7, #4] - 800653e: 681b ldr r3, [r3, #0] - 8006540: f422 6200 bic.w r2, r2, #2048 @ 0x800 - 8006544: 605a str r2, [r3, #4] + 800678a: 687b ldr r3, [r7, #4] + 800678c: 681b ldr r3, [r3, #0] + 800678e: 685a ldr r2, [r3, #4] + 8006790: 687b ldr r3, [r7, #4] + 8006792: 681b ldr r3, [r3, #0] + 8006794: f422 6200 bic.w r2, r2, #2048 @ 0x800 + 8006798: 605a str r2, [r3, #4] } /* Set ADC number of conversion */ hadc->Instance->SQR1 &= ~(ADC_SQR1_L); - 8006546: 687b ldr r3, [r7, #4] - 8006548: 681b ldr r3, [r3, #0] - 800654a: 6ada ldr r2, [r3, #44] @ 0x2c - 800654c: 687b ldr r3, [r7, #4] - 800654e: 681b ldr r3, [r3, #0] - 8006550: f422 0270 bic.w r2, r2, #15728640 @ 0xf00000 - 8006554: 62da str r2, [r3, #44] @ 0x2c + 800679a: 687b ldr r3, [r7, #4] + 800679c: 681b ldr r3, [r3, #0] + 800679e: 6ada ldr r2, [r3, #44] @ 0x2c + 80067a0: 687b ldr r3, [r7, #4] + 80067a2: 681b ldr r3, [r3, #0] + 80067a4: f422 0270 bic.w r2, r2, #15728640 @ 0xf00000 + 80067a8: 62da str r2, [r3, #44] @ 0x2c hadc->Instance->SQR1 |= ADC_SQR1(hadc->Init.NbrOfConversion); - 8006556: 687b ldr r3, [r7, #4] - 8006558: 681b ldr r3, [r3, #0] - 800655a: 6ad9 ldr r1, [r3, #44] @ 0x2c - 800655c: 687b ldr r3, [r7, #4] - 800655e: 69db ldr r3, [r3, #28] - 8006560: 3b01 subs r3, #1 - 8006562: 051a lsls r2, r3, #20 - 8006564: 687b ldr r3, [r7, #4] - 8006566: 681b ldr r3, [r3, #0] - 8006568: 430a orrs r2, r1 - 800656a: 62da str r2, [r3, #44] @ 0x2c + 80067aa: 687b ldr r3, [r7, #4] + 80067ac: 681b ldr r3, [r3, #0] + 80067ae: 6ad9 ldr r1, [r3, #44] @ 0x2c + 80067b0: 687b ldr r3, [r7, #4] + 80067b2: 69db ldr r3, [r3, #28] + 80067b4: 3b01 subs r3, #1 + 80067b6: 051a lsls r2, r3, #20 + 80067b8: 687b ldr r3, [r7, #4] + 80067ba: 681b ldr r3, [r3, #0] + 80067bc: 430a orrs r2, r1 + 80067be: 62da str r2, [r3, #44] @ 0x2c /* Enable or disable ADC DMA continuous request */ hadc->Instance->CR2 &= ~(ADC_CR2_DDS); - 800656c: 687b ldr r3, [r7, #4] - 800656e: 681b ldr r3, [r3, #0] - 8006570: 689a ldr r2, [r3, #8] - 8006572: 687b ldr r3, [r7, #4] - 8006574: 681b ldr r3, [r3, #0] - 8006576: f422 7200 bic.w r2, r2, #512 @ 0x200 - 800657a: 609a str r2, [r3, #8] + 80067c0: 687b ldr r3, [r7, #4] + 80067c2: 681b ldr r3, [r3, #0] + 80067c4: 689a ldr r2, [r3, #8] + 80067c6: 687b ldr r3, [r7, #4] + 80067c8: 681b ldr r3, [r3, #0] + 80067ca: f422 7200 bic.w r2, r2, #512 @ 0x200 + 80067ce: 609a str r2, [r3, #8] hadc->Instance->CR2 |= ADC_CR2_DMAContReq((uint32_t)hadc->Init.DMAContinuousRequests); - 800657c: 687b ldr r3, [r7, #4] - 800657e: 681b ldr r3, [r3, #0] - 8006580: 6899 ldr r1, [r3, #8] - 8006582: 687b ldr r3, [r7, #4] - 8006584: f893 3030 ldrb.w r3, [r3, #48] @ 0x30 - 8006588: 025a lsls r2, r3, #9 - 800658a: 687b ldr r3, [r7, #4] - 800658c: 681b ldr r3, [r3, #0] - 800658e: 430a orrs r2, r1 - 8006590: 609a str r2, [r3, #8] + 80067d0: 687b ldr r3, [r7, #4] + 80067d2: 681b ldr r3, [r3, #0] + 80067d4: 6899 ldr r1, [r3, #8] + 80067d6: 687b ldr r3, [r7, #4] + 80067d8: f893 3030 ldrb.w r3, [r3, #48] @ 0x30 + 80067dc: 025a lsls r2, r3, #9 + 80067de: 687b ldr r3, [r7, #4] + 80067e0: 681b ldr r3, [r3, #0] + 80067e2: 430a orrs r2, r1 + 80067e4: 609a str r2, [r3, #8] /* Enable or disable ADC end of conversion selection */ hadc->Instance->CR2 &= ~(ADC_CR2_EOCS); - 8006592: 687b ldr r3, [r7, #4] - 8006594: 681b ldr r3, [r3, #0] - 8006596: 689a ldr r2, [r3, #8] - 8006598: 687b ldr r3, [r7, #4] - 800659a: 681b ldr r3, [r3, #0] - 800659c: f422 6280 bic.w r2, r2, #1024 @ 0x400 - 80065a0: 609a str r2, [r3, #8] + 80067e6: 687b ldr r3, [r7, #4] + 80067e8: 681b ldr r3, [r3, #0] + 80067ea: 689a ldr r2, [r3, #8] + 80067ec: 687b ldr r3, [r7, #4] + 80067ee: 681b ldr r3, [r3, #0] + 80067f0: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 80067f4: 609a str r2, [r3, #8] hadc->Instance->CR2 |= ADC_CR2_EOCSelection(hadc->Init.EOCSelection); - 80065a2: 687b ldr r3, [r7, #4] - 80065a4: 681b ldr r3, [r3, #0] - 80065a6: 6899 ldr r1, [r3, #8] - 80065a8: 687b ldr r3, [r7, #4] - 80065aa: 695b ldr r3, [r3, #20] - 80065ac: 029a lsls r2, r3, #10 - 80065ae: 687b ldr r3, [r7, #4] - 80065b0: 681b ldr r3, [r3, #0] - 80065b2: 430a orrs r2, r1 - 80065b4: 609a str r2, [r3, #8] + 80067f6: 687b ldr r3, [r7, #4] + 80067f8: 681b ldr r3, [r3, #0] + 80067fa: 6899 ldr r1, [r3, #8] + 80067fc: 687b ldr r3, [r7, #4] + 80067fe: 695b ldr r3, [r3, #20] + 8006800: 029a lsls r2, r3, #10 + 8006802: 687b ldr r3, [r7, #4] + 8006804: 681b ldr r3, [r3, #0] + 8006806: 430a orrs r2, r1 + 8006808: 609a str r2, [r3, #8] } - 80065b6: bf00 nop - 80065b8: 3710 adds r7, #16 - 80065ba: 46bd mov sp, r7 - 80065bc: bd80 pop {r7, pc} - 80065be: bf00 nop - 80065c0: 40012300 .word 0x40012300 - 80065c4: 0f000001 .word 0x0f000001 - 80065c8: 0800e73c .word 0x0800e73c + 800680a: bf00 nop + 800680c: 3710 adds r7, #16 + 800680e: 46bd mov sp, r7 + 8006810: bd80 pop {r7, pc} + 8006812: bf00 nop + 8006814: 40012300 .word 0x40012300 + 8006818: 0f000001 .word 0x0f000001 + 800681c: 0800ecac .word 0x0800ecac -080065cc <__NVIC_SetPriorityGrouping>: +08006820 <__NVIC_SetPriorityGrouping>: { - 80065cc: b480 push {r7} - 80065ce: b085 sub sp, #20 - 80065d0: af00 add r7, sp, #0 - 80065d2: 6078 str r0, [r7, #4] + 8006820: b480 push {r7} + 8006822: b085 sub sp, #20 + 8006824: af00 add r7, sp, #0 + 8006826: 6078 str r0, [r7, #4] uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ - 80065d4: 687b ldr r3, [r7, #4] - 80065d6: f003 0307 and.w r3, r3, #7 - 80065da: 60fb str r3, [r7, #12] + 8006828: 687b ldr r3, [r7, #4] + 800682a: f003 0307 and.w r3, r3, #7 + 800682e: 60fb str r3, [r7, #12] reg_value = SCB->AIRCR; /* read old register configuration */ - 80065dc: 4b0c ldr r3, [pc, #48] @ (8006610 <__NVIC_SetPriorityGrouping+0x44>) - 80065de: 68db ldr r3, [r3, #12] - 80065e0: 60bb str r3, [r7, #8] + 8006830: 4b0c ldr r3, [pc, #48] @ (8006864 <__NVIC_SetPriorityGrouping+0x44>) + 8006832: 68db ldr r3, [r3, #12] + 8006834: 60bb str r3, [r7, #8] reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ - 80065e2: 68ba ldr r2, [r7, #8] - 80065e4: f64f 03ff movw r3, #63743 @ 0xf8ff - 80065e8: 4013 ands r3, r2 - 80065ea: 60bb str r3, [r7, #8] + 8006836: 68ba ldr r2, [r7, #8] + 8006838: f64f 03ff movw r3, #63743 @ 0xf8ff + 800683c: 4013 ands r3, r2 + 800683e: 60bb str r3, [r7, #8] (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ - 80065ec: 68fb ldr r3, [r7, #12] - 80065ee: 021a lsls r2, r3, #8 + 8006840: 68fb ldr r3, [r7, #12] + 8006842: 021a lsls r2, r3, #8 ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | - 80065f0: 68bb ldr r3, [r7, #8] - 80065f2: 4313 orrs r3, r2 + 8006844: 68bb ldr r3, [r7, #8] + 8006846: 4313 orrs r3, r2 reg_value = (reg_value | - 80065f4: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 - 80065f8: f443 3300 orr.w r3, r3, #131072 @ 0x20000 - 80065fc: 60bb str r3, [r7, #8] + 8006848: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 + 800684c: f443 3300 orr.w r3, r3, #131072 @ 0x20000 + 8006850: 60bb str r3, [r7, #8] SCB->AIRCR = reg_value; - 80065fe: 4a04 ldr r2, [pc, #16] @ (8006610 <__NVIC_SetPriorityGrouping+0x44>) - 8006600: 68bb ldr r3, [r7, #8] - 8006602: 60d3 str r3, [r2, #12] + 8006852: 4a04 ldr r2, [pc, #16] @ (8006864 <__NVIC_SetPriorityGrouping+0x44>) + 8006854: 68bb ldr r3, [r7, #8] + 8006856: 60d3 str r3, [r2, #12] } - 8006604: bf00 nop - 8006606: 3714 adds r7, #20 - 8006608: 46bd mov sp, r7 - 800660a: f85d 7b04 ldr.w r7, [sp], #4 - 800660e: 4770 bx lr - 8006610: e000ed00 .word 0xe000ed00 + 8006858: bf00 nop + 800685a: 3714 adds r7, #20 + 800685c: 46bd mov sp, r7 + 800685e: f85d 7b04 ldr.w r7, [sp], #4 + 8006862: 4770 bx lr + 8006864: e000ed00 .word 0xe000ed00 -08006614 <__NVIC_GetPriorityGrouping>: +08006868 <__NVIC_GetPriorityGrouping>: { - 8006614: b480 push {r7} - 8006616: af00 add r7, sp, #0 + 8006868: b480 push {r7} + 800686a: af00 add r7, sp, #0 return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); - 8006618: 4b04 ldr r3, [pc, #16] @ (800662c <__NVIC_GetPriorityGrouping+0x18>) - 800661a: 68db ldr r3, [r3, #12] - 800661c: 0a1b lsrs r3, r3, #8 - 800661e: f003 0307 and.w r3, r3, #7 + 800686c: 4b04 ldr r3, [pc, #16] @ (8006880 <__NVIC_GetPriorityGrouping+0x18>) + 800686e: 68db ldr r3, [r3, #12] + 8006870: 0a1b lsrs r3, r3, #8 + 8006872: f003 0307 and.w r3, r3, #7 } - 8006622: 4618 mov r0, r3 - 8006624: 46bd mov sp, r7 - 8006626: f85d 7b04 ldr.w r7, [sp], #4 - 800662a: 4770 bx lr - 800662c: e000ed00 .word 0xe000ed00 + 8006876: 4618 mov r0, r3 + 8006878: 46bd mov sp, r7 + 800687a: f85d 7b04 ldr.w r7, [sp], #4 + 800687e: 4770 bx lr + 8006880: e000ed00 .word 0xe000ed00 -08006630 <__NVIC_EnableIRQ>: +08006884 <__NVIC_EnableIRQ>: { - 8006630: b480 push {r7} - 8006632: b083 sub sp, #12 - 8006634: af00 add r7, sp, #0 - 8006636: 4603 mov r3, r0 - 8006638: 71fb strb r3, [r7, #7] + 8006884: b480 push {r7} + 8006886: b083 sub sp, #12 + 8006888: af00 add r7, sp, #0 + 800688a: 4603 mov r3, r0 + 800688c: 71fb strb r3, [r7, #7] if ((int32_t)(IRQn) >= 0) - 800663a: f997 3007 ldrsb.w r3, [r7, #7] - 800663e: 2b00 cmp r3, #0 - 8006640: db0b blt.n 800665a <__NVIC_EnableIRQ+0x2a> + 800688e: f997 3007 ldrsb.w r3, [r7, #7] + 8006892: 2b00 cmp r3, #0 + 8006894: db0b blt.n 80068ae <__NVIC_EnableIRQ+0x2a> NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); - 8006642: 79fb ldrb r3, [r7, #7] - 8006644: f003 021f and.w r2, r3, #31 - 8006648: 4907 ldr r1, [pc, #28] @ (8006668 <__NVIC_EnableIRQ+0x38>) - 800664a: f997 3007 ldrsb.w r3, [r7, #7] - 800664e: 095b lsrs r3, r3, #5 - 8006650: 2001 movs r0, #1 - 8006652: fa00 f202 lsl.w r2, r0, r2 - 8006656: f841 2023 str.w r2, [r1, r3, lsl #2] + 8006896: 79fb ldrb r3, [r7, #7] + 8006898: f003 021f and.w r2, r3, #31 + 800689c: 4907 ldr r1, [pc, #28] @ (80068bc <__NVIC_EnableIRQ+0x38>) + 800689e: f997 3007 ldrsb.w r3, [r7, #7] + 80068a2: 095b lsrs r3, r3, #5 + 80068a4: 2001 movs r0, #1 + 80068a6: fa00 f202 lsl.w r2, r0, r2 + 80068aa: f841 2023 str.w r2, [r1, r3, lsl #2] } - 800665a: bf00 nop - 800665c: 370c adds r7, #12 - 800665e: 46bd mov sp, r7 - 8006660: f85d 7b04 ldr.w r7, [sp], #4 - 8006664: 4770 bx lr - 8006666: bf00 nop - 8006668: e000e100 .word 0xe000e100 + 80068ae: bf00 nop + 80068b0: 370c adds r7, #12 + 80068b2: 46bd mov sp, r7 + 80068b4: f85d 7b04 ldr.w r7, [sp], #4 + 80068b8: 4770 bx lr + 80068ba: bf00 nop + 80068bc: e000e100 .word 0xe000e100 -0800666c <__NVIC_SetPriority>: +080068c0 <__NVIC_SetPriority>: { - 800666c: b480 push {r7} - 800666e: b083 sub sp, #12 - 8006670: af00 add r7, sp, #0 - 8006672: 4603 mov r3, r0 - 8006674: 6039 str r1, [r7, #0] - 8006676: 71fb strb r3, [r7, #7] + 80068c0: b480 push {r7} + 80068c2: b083 sub sp, #12 + 80068c4: af00 add r7, sp, #0 + 80068c6: 4603 mov r3, r0 + 80068c8: 6039 str r1, [r7, #0] + 80068ca: 71fb strb r3, [r7, #7] if ((int32_t)(IRQn) >= 0) - 8006678: f997 3007 ldrsb.w r3, [r7, #7] - 800667c: 2b00 cmp r3, #0 - 800667e: db0a blt.n 8006696 <__NVIC_SetPriority+0x2a> + 80068cc: f997 3007 ldrsb.w r3, [r7, #7] + 80068d0: 2b00 cmp r3, #0 + 80068d2: db0a blt.n 80068ea <__NVIC_SetPriority+0x2a> NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); - 8006680: 683b ldr r3, [r7, #0] - 8006682: b2da uxtb r2, r3 - 8006684: 490c ldr r1, [pc, #48] @ (80066b8 <__NVIC_SetPriority+0x4c>) - 8006686: f997 3007 ldrsb.w r3, [r7, #7] - 800668a: 0112 lsls r2, r2, #4 - 800668c: b2d2 uxtb r2, r2 - 800668e: 440b add r3, r1 - 8006690: f883 2300 strb.w r2, [r3, #768] @ 0x300 + 80068d4: 683b ldr r3, [r7, #0] + 80068d6: b2da uxtb r2, r3 + 80068d8: 490c ldr r1, [pc, #48] @ (800690c <__NVIC_SetPriority+0x4c>) + 80068da: f997 3007 ldrsb.w r3, [r7, #7] + 80068de: 0112 lsls r2, r2, #4 + 80068e0: b2d2 uxtb r2, r2 + 80068e2: 440b add r3, r1 + 80068e4: f883 2300 strb.w r2, [r3, #768] @ 0x300 } - 8006694: e00a b.n 80066ac <__NVIC_SetPriority+0x40> + 80068e8: e00a b.n 8006900 <__NVIC_SetPriority+0x40> SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); - 8006696: 683b ldr r3, [r7, #0] - 8006698: b2da uxtb r2, r3 - 800669a: 4908 ldr r1, [pc, #32] @ (80066bc <__NVIC_SetPriority+0x50>) - 800669c: 79fb ldrb r3, [r7, #7] - 800669e: f003 030f and.w r3, r3, #15 - 80066a2: 3b04 subs r3, #4 - 80066a4: 0112 lsls r2, r2, #4 - 80066a6: b2d2 uxtb r2, r2 - 80066a8: 440b add r3, r1 - 80066aa: 761a strb r2, [r3, #24] + 80068ea: 683b ldr r3, [r7, #0] + 80068ec: b2da uxtb r2, r3 + 80068ee: 4908 ldr r1, [pc, #32] @ (8006910 <__NVIC_SetPriority+0x50>) + 80068f0: 79fb ldrb r3, [r7, #7] + 80068f2: f003 030f and.w r3, r3, #15 + 80068f6: 3b04 subs r3, #4 + 80068f8: 0112 lsls r2, r2, #4 + 80068fa: b2d2 uxtb r2, r2 + 80068fc: 440b add r3, r1 + 80068fe: 761a strb r2, [r3, #24] } - 80066ac: bf00 nop - 80066ae: 370c adds r7, #12 - 80066b0: 46bd mov sp, r7 - 80066b2: f85d 7b04 ldr.w r7, [sp], #4 - 80066b6: 4770 bx lr - 80066b8: e000e100 .word 0xe000e100 - 80066bc: e000ed00 .word 0xe000ed00 + 8006900: bf00 nop + 8006902: 370c adds r7, #12 + 8006904: 46bd mov sp, r7 + 8006906: f85d 7b04 ldr.w r7, [sp], #4 + 800690a: 4770 bx lr + 800690c: e000e100 .word 0xe000e100 + 8006910: e000ed00 .word 0xe000ed00 -080066c0 : +08006914 : { - 80066c0: b480 push {r7} - 80066c2: b089 sub sp, #36 @ 0x24 - 80066c4: af00 add r7, sp, #0 - 80066c6: 60f8 str r0, [r7, #12] - 80066c8: 60b9 str r1, [r7, #8] - 80066ca: 607a str r2, [r7, #4] + 8006914: b480 push {r7} + 8006916: b089 sub sp, #36 @ 0x24 + 8006918: af00 add r7, sp, #0 + 800691a: 60f8 str r0, [r7, #12] + 800691c: 60b9 str r1, [r7, #8] + 800691e: 607a str r2, [r7, #4] uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ - 80066cc: 68fb ldr r3, [r7, #12] - 80066ce: f003 0307 and.w r3, r3, #7 - 80066d2: 61fb str r3, [r7, #28] + 8006920: 68fb ldr r3, [r7, #12] + 8006922: f003 0307 and.w r3, r3, #7 + 8006926: 61fb str r3, [r7, #28] PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); - 80066d4: 69fb ldr r3, [r7, #28] - 80066d6: f1c3 0307 rsb r3, r3, #7 - 80066da: 2b04 cmp r3, #4 - 80066dc: bf28 it cs - 80066de: 2304 movcs r3, #4 - 80066e0: 61bb str r3, [r7, #24] + 8006928: 69fb ldr r3, [r7, #28] + 800692a: f1c3 0307 rsb r3, r3, #7 + 800692e: 2b04 cmp r3, #4 + 8006930: bf28 it cs + 8006932: 2304 movcs r3, #4 + 8006934: 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)); - 80066e2: 69fb ldr r3, [r7, #28] - 80066e4: 3304 adds r3, #4 - 80066e6: 2b06 cmp r3, #6 - 80066e8: d902 bls.n 80066f0 - 80066ea: 69fb ldr r3, [r7, #28] - 80066ec: 3b03 subs r3, #3 - 80066ee: e000 b.n 80066f2 - 80066f0: 2300 movs r3, #0 - 80066f2: 617b str r3, [r7, #20] + 8006936: 69fb ldr r3, [r7, #28] + 8006938: 3304 adds r3, #4 + 800693a: 2b06 cmp r3, #6 + 800693c: d902 bls.n 8006944 + 800693e: 69fb ldr r3, [r7, #28] + 8006940: 3b03 subs r3, #3 + 8006942: e000 b.n 8006946 + 8006944: 2300 movs r3, #0 + 8006946: 617b str r3, [r7, #20] ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | - 80066f4: f04f 32ff mov.w r2, #4294967295 - 80066f8: 69bb ldr r3, [r7, #24] - 80066fa: fa02 f303 lsl.w r3, r2, r3 - 80066fe: 43da mvns r2, r3 - 8006700: 68bb ldr r3, [r7, #8] - 8006702: 401a ands r2, r3 - 8006704: 697b ldr r3, [r7, #20] - 8006706: 409a lsls r2, r3 + 8006948: f04f 32ff mov.w r2, #4294967295 + 800694c: 69bb ldr r3, [r7, #24] + 800694e: fa02 f303 lsl.w r3, r2, r3 + 8006952: 43da mvns r2, r3 + 8006954: 68bb ldr r3, [r7, #8] + 8006956: 401a ands r2, r3 + 8006958: 697b ldr r3, [r7, #20] + 800695a: 409a lsls r2, r3 ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) - 8006708: f04f 31ff mov.w r1, #4294967295 - 800670c: 697b ldr r3, [r7, #20] - 800670e: fa01 f303 lsl.w r3, r1, r3 - 8006712: 43d9 mvns r1, r3 - 8006714: 687b ldr r3, [r7, #4] - 8006716: 400b ands r3, r1 + 800695c: f04f 31ff mov.w r1, #4294967295 + 8006960: 697b ldr r3, [r7, #20] + 8006962: fa01 f303 lsl.w r3, r1, r3 + 8006966: 43d9 mvns r1, r3 + 8006968: 687b ldr r3, [r7, #4] + 800696a: 400b ands r3, r1 ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | - 8006718: 4313 orrs r3, r2 + 800696c: 4313 orrs r3, r2 } - 800671a: 4618 mov r0, r3 - 800671c: 3724 adds r7, #36 @ 0x24 - 800671e: 46bd mov sp, r7 - 8006720: f85d 7b04 ldr.w r7, [sp], #4 - 8006724: 4770 bx lr + 800696e: 4618 mov r0, r3 + 8006970: 3724 adds r7, #36 @ 0x24 + 8006972: 46bd mov sp, r7 + 8006974: f85d 7b04 ldr.w r7, [sp], #4 + 8006978: 4770 bx lr ... -08006728 : +0800697c : * @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) { - 8006728: b580 push {r7, lr} - 800672a: b082 sub sp, #8 - 800672c: af00 add r7, sp, #0 - 800672e: 6078 str r0, [r7, #4] + 800697c: b580 push {r7, lr} + 800697e: b082 sub sp, #8 + 8006980: af00 add r7, sp, #0 + 8006982: 6078 str r0, [r7, #4] /* Check the parameters */ assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); - 8006730: 687b ldr r3, [r7, #4] - 8006732: 2b07 cmp r3, #7 - 8006734: d00f beq.n 8006756 - 8006736: 687b ldr r3, [r7, #4] - 8006738: 2b06 cmp r3, #6 - 800673a: d00c beq.n 8006756 - 800673c: 687b ldr r3, [r7, #4] - 800673e: 2b05 cmp r3, #5 - 8006740: d009 beq.n 8006756 - 8006742: 687b ldr r3, [r7, #4] - 8006744: 2b04 cmp r3, #4 - 8006746: d006 beq.n 8006756 - 8006748: 687b ldr r3, [r7, #4] - 800674a: 2b03 cmp r3, #3 - 800674c: d003 beq.n 8006756 - 800674e: 2190 movs r1, #144 @ 0x90 - 8006750: 4804 ldr r0, [pc, #16] @ (8006764 ) - 8006752: f7fc fd0f bl 8003174 + 8006984: 687b ldr r3, [r7, #4] + 8006986: 2b07 cmp r3, #7 + 8006988: d00f beq.n 80069aa + 800698a: 687b ldr r3, [r7, #4] + 800698c: 2b06 cmp r3, #6 + 800698e: d00c beq.n 80069aa + 8006990: 687b ldr r3, [r7, #4] + 8006992: 2b05 cmp r3, #5 + 8006994: d009 beq.n 80069aa + 8006996: 687b ldr r3, [r7, #4] + 8006998: 2b04 cmp r3, #4 + 800699a: d006 beq.n 80069aa + 800699c: 687b ldr r3, [r7, #4] + 800699e: 2b03 cmp r3, #3 + 80069a0: d003 beq.n 80069aa + 80069a2: 2190 movs r1, #144 @ 0x90 + 80069a4: 4804 ldr r0, [pc, #16] @ (80069b8 ) + 80069a6: f7fc fc41 bl 800322c /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */ NVIC_SetPriorityGrouping(PriorityGroup); - 8006756: 6878 ldr r0, [r7, #4] - 8006758: f7ff ff38 bl 80065cc <__NVIC_SetPriorityGrouping> + 80069aa: 6878 ldr r0, [r7, #4] + 80069ac: f7ff ff38 bl 8006820 <__NVIC_SetPriorityGrouping> } - 800675c: bf00 nop - 800675e: 3708 adds r7, #8 - 8006760: 46bd mov sp, r7 - 8006762: bd80 pop {r7, pc} - 8006764: 0800e774 .word 0x0800e774 + 80069b0: bf00 nop + 80069b2: 3708 adds r7, #8 + 80069b4: 46bd mov sp, r7 + 80069b6: bd80 pop {r7, pc} + 80069b8: 0800ece4 .word 0x0800ece4 -08006768 : +080069bc : * 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) { - 8006768: b580 push {r7, lr} - 800676a: b086 sub sp, #24 - 800676c: af00 add r7, sp, #0 - 800676e: 4603 mov r3, r0 - 8006770: 60b9 str r1, [r7, #8] - 8006772: 607a str r2, [r7, #4] - 8006774: 73fb strb r3, [r7, #15] + 80069bc: b580 push {r7, lr} + 80069be: b086 sub sp, #24 + 80069c0: af00 add r7, sp, #0 + 80069c2: 4603 mov r3, r0 + 80069c4: 60b9 str r1, [r7, #8] + 80069c6: 607a str r2, [r7, #4] + 80069c8: 73fb strb r3, [r7, #15] uint32_t prioritygroup = 0x00U; - 8006776: 2300 movs r3, #0 - 8006778: 617b str r3, [r7, #20] + 80069ca: 2300 movs r3, #0 + 80069cc: 617b str r3, [r7, #20] /* Check the parameters */ assert_param(IS_NVIC_SUB_PRIORITY(SubPriority)); - 800677a: 687b ldr r3, [r7, #4] - 800677c: 2b0f cmp r3, #15 - 800677e: d903 bls.n 8006788 - 8006780: 21a8 movs r1, #168 @ 0xa8 - 8006782: 480e ldr r0, [pc, #56] @ (80067bc ) - 8006784: f7fc fcf6 bl 8003174 + 80069ce: 687b ldr r3, [r7, #4] + 80069d0: 2b0f cmp r3, #15 + 80069d2: d903 bls.n 80069dc + 80069d4: 21a8 movs r1, #168 @ 0xa8 + 80069d6: 480e ldr r0, [pc, #56] @ (8006a10 ) + 80069d8: f7fc fc28 bl 800322c assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); - 8006788: 68bb ldr r3, [r7, #8] - 800678a: 2b0f cmp r3, #15 - 800678c: d903 bls.n 8006796 - 800678e: 21a9 movs r1, #169 @ 0xa9 - 8006790: 480a ldr r0, [pc, #40] @ (80067bc ) - 8006792: f7fc fcef bl 8003174 + 80069dc: 68bb ldr r3, [r7, #8] + 80069de: 2b0f cmp r3, #15 + 80069e0: d903 bls.n 80069ea + 80069e2: 21a9 movs r1, #169 @ 0xa9 + 80069e4: 480a ldr r0, [pc, #40] @ (8006a10 ) + 80069e6: f7fc fc21 bl 800322c prioritygroup = NVIC_GetPriorityGrouping(); - 8006796: f7ff ff3d bl 8006614 <__NVIC_GetPriorityGrouping> - 800679a: 6178 str r0, [r7, #20] + 80069ea: f7ff ff3d bl 8006868 <__NVIC_GetPriorityGrouping> + 80069ee: 6178 str r0, [r7, #20] NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); - 800679c: 687a ldr r2, [r7, #4] - 800679e: 68b9 ldr r1, [r7, #8] - 80067a0: 6978 ldr r0, [r7, #20] - 80067a2: f7ff ff8d bl 80066c0 - 80067a6: 4602 mov r2, r0 - 80067a8: f997 300f ldrsb.w r3, [r7, #15] - 80067ac: 4611 mov r1, r2 - 80067ae: 4618 mov r0, r3 - 80067b0: f7ff ff5c bl 800666c <__NVIC_SetPriority> + 80069f0: 687a ldr r2, [r7, #4] + 80069f2: 68b9 ldr r1, [r7, #8] + 80069f4: 6978 ldr r0, [r7, #20] + 80069f6: f7ff ff8d bl 8006914 + 80069fa: 4602 mov r2, r0 + 80069fc: f997 300f ldrsb.w r3, [r7, #15] + 8006a00: 4611 mov r1, r2 + 8006a02: 4618 mov r0, r3 + 8006a04: f7ff ff5c bl 80068c0 <__NVIC_SetPriority> } - 80067b4: bf00 nop - 80067b6: 3718 adds r7, #24 - 80067b8: 46bd mov sp, r7 - 80067ba: bd80 pop {r7, pc} - 80067bc: 0800e774 .word 0x0800e774 + 8006a08: bf00 nop + 8006a0a: 3718 adds r7, #24 + 8006a0c: 46bd mov sp, r7 + 8006a0e: bd80 pop {r7, pc} + 8006a10: 0800ece4 .word 0x0800ece4 -080067c0 : +08006a14 : * 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 (stm32f4xxxx.h)) * @retval None */ void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) { - 80067c0: b580 push {r7, lr} - 80067c2: b082 sub sp, #8 - 80067c4: af00 add r7, sp, #0 - 80067c6: 4603 mov r3, r0 - 80067c8: 71fb strb r3, [r7, #7] + 8006a14: b580 push {r7, lr} + 8006a16: b082 sub sp, #8 + 8006a18: af00 add r7, sp, #0 + 8006a1a: 4603 mov r3, r0 + 8006a1c: 71fb strb r3, [r7, #7] /* Check the parameters */ assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); - 80067ca: f997 3007 ldrsb.w r3, [r7, #7] - 80067ce: 2b00 cmp r3, #0 - 80067d0: da03 bge.n 80067da - 80067d2: 21bc movs r1, #188 @ 0xbc - 80067d4: 4805 ldr r0, [pc, #20] @ (80067ec ) - 80067d6: f7fc fccd bl 8003174 + 8006a1e: f997 3007 ldrsb.w r3, [r7, #7] + 8006a22: 2b00 cmp r3, #0 + 8006a24: da03 bge.n 8006a2e + 8006a26: 21bc movs r1, #188 @ 0xbc + 8006a28: 4805 ldr r0, [pc, #20] @ (8006a40 ) + 8006a2a: f7fc fbff bl 800322c /* Enable interrupt */ NVIC_EnableIRQ(IRQn); - 80067da: f997 3007 ldrsb.w r3, [r7, #7] - 80067de: 4618 mov r0, r3 - 80067e0: f7ff ff26 bl 8006630 <__NVIC_EnableIRQ> + 8006a2e: f997 3007 ldrsb.w r3, [r7, #7] + 8006a32: 4618 mov r0, r3 + 8006a34: f7ff ff26 bl 8006884 <__NVIC_EnableIRQ> } - 80067e4: bf00 nop - 80067e6: 3708 adds r7, #8 - 80067e8: 46bd mov sp, r7 - 80067ea: bd80 pop {r7, pc} - 80067ec: 0800e774 .word 0x0800e774 + 8006a38: bf00 nop + 8006a3a: 3708 adds r7, #8 + 8006a3c: 46bd mov sp, r7 + 8006a3e: bd80 pop {r7, pc} + 8006a40: 0800ece4 .word 0x0800ece4 -080067f0 : +08006a44 : * @param hdma Pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA Stream. * @retval HAL status */ HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma) { - 80067f0: b580 push {r7, lr} - 80067f2: b086 sub sp, #24 - 80067f4: af00 add r7, sp, #0 - 80067f6: 6078 str r0, [r7, #4] + 8006a44: b580 push {r7, lr} + 8006a46: b086 sub sp, #24 + 8006a48: af00 add r7, sp, #0 + 8006a4a: 6078 str r0, [r7, #4] uint32_t tmp = 0U; - 80067f8: 2300 movs r3, #0 - 80067fa: 617b str r3, [r7, #20] + 8006a4c: 2300 movs r3, #0 + 8006a4e: 617b str r3, [r7, #20] uint32_t tickstart = HAL_GetTick(); - 80067fc: f7ff f928 bl 8005a50 - 8006800: 6138 str r0, [r7, #16] + 8006a50: f7ff f928 bl 8005ca4 + 8006a54: 6138 str r0, [r7, #16] DMA_Base_Registers *regs; /* Check the DMA peripheral state */ if(hdma == NULL) - 8006802: 687b ldr r3, [r7, #4] - 8006804: 2b00 cmp r3, #0 - 8006806: d101 bne.n 800680c + 8006a56: 687b ldr r3, [r7, #4] + 8006a58: 2b00 cmp r3, #0 + 8006a5a: d101 bne.n 8006a60 { return HAL_ERROR; - 8006808: 2301 movs r3, #1 - 800680a: e22c b.n 8006c66 + 8006a5c: 2301 movs r3, #1 + 8006a5e: e22c b.n 8006eba } /* Check the parameters */ assert_param(IS_DMA_STREAM_ALL_INSTANCE(hdma->Instance)); - 800680c: 687b ldr r3, [r7, #4] - 800680e: 681b ldr r3, [r3, #0] - 8006810: 4a82 ldr r2, [pc, #520] @ (8006a1c ) - 8006812: 4293 cmp r3, r2 - 8006814: d04e beq.n 80068b4 - 8006816: 687b ldr r3, [r7, #4] - 8006818: 681b ldr r3, [r3, #0] - 800681a: 4a81 ldr r2, [pc, #516] @ (8006a20 ) - 800681c: 4293 cmp r3, r2 - 800681e: d049 beq.n 80068b4 - 8006820: 687b ldr r3, [r7, #4] - 8006822: 681b ldr r3, [r3, #0] - 8006824: 4a7f ldr r2, [pc, #508] @ (8006a24 ) - 8006826: 4293 cmp r3, r2 - 8006828: d044 beq.n 80068b4 - 800682a: 687b ldr r3, [r7, #4] - 800682c: 681b ldr r3, [r3, #0] - 800682e: 4a7e ldr r2, [pc, #504] @ (8006a28 ) - 8006830: 4293 cmp r3, r2 - 8006832: d03f beq.n 80068b4 - 8006834: 687b ldr r3, [r7, #4] - 8006836: 681b ldr r3, [r3, #0] - 8006838: 4a7c ldr r2, [pc, #496] @ (8006a2c ) - 800683a: 4293 cmp r3, r2 - 800683c: d03a beq.n 80068b4 - 800683e: 687b ldr r3, [r7, #4] - 8006840: 681b ldr r3, [r3, #0] - 8006842: 4a7b ldr r2, [pc, #492] @ (8006a30 ) - 8006844: 4293 cmp r3, r2 - 8006846: d035 beq.n 80068b4 - 8006848: 687b ldr r3, [r7, #4] - 800684a: 681b ldr r3, [r3, #0] - 800684c: 4a79 ldr r2, [pc, #484] @ (8006a34 ) - 800684e: 4293 cmp r3, r2 - 8006850: d030 beq.n 80068b4 - 8006852: 687b ldr r3, [r7, #4] - 8006854: 681b ldr r3, [r3, #0] - 8006856: 4a78 ldr r2, [pc, #480] @ (8006a38 ) - 8006858: 4293 cmp r3, r2 - 800685a: d02b beq.n 80068b4 - 800685c: 687b ldr r3, [r7, #4] - 800685e: 681b ldr r3, [r3, #0] - 8006860: 4a76 ldr r2, [pc, #472] @ (8006a3c ) - 8006862: 4293 cmp r3, r2 - 8006864: d026 beq.n 80068b4 - 8006866: 687b ldr r3, [r7, #4] - 8006868: 681b ldr r3, [r3, #0] - 800686a: 4a75 ldr r2, [pc, #468] @ (8006a40 ) - 800686c: 4293 cmp r3, r2 - 800686e: d021 beq.n 80068b4 - 8006870: 687b ldr r3, [r7, #4] - 8006872: 681b ldr r3, [r3, #0] - 8006874: 4a73 ldr r2, [pc, #460] @ (8006a44 ) - 8006876: 4293 cmp r3, r2 - 8006878: d01c beq.n 80068b4 - 800687a: 687b ldr r3, [r7, #4] - 800687c: 681b ldr r3, [r3, #0] - 800687e: 4a72 ldr r2, [pc, #456] @ (8006a48 ) - 8006880: 4293 cmp r3, r2 - 8006882: d017 beq.n 80068b4 - 8006884: 687b ldr r3, [r7, #4] - 8006886: 681b ldr r3, [r3, #0] - 8006888: 4a70 ldr r2, [pc, #448] @ (8006a4c ) - 800688a: 4293 cmp r3, r2 - 800688c: d012 beq.n 80068b4 - 800688e: 687b ldr r3, [r7, #4] - 8006890: 681b ldr r3, [r3, #0] - 8006892: 4a6f ldr r2, [pc, #444] @ (8006a50 ) - 8006894: 4293 cmp r3, r2 - 8006896: d00d beq.n 80068b4 - 8006898: 687b ldr r3, [r7, #4] - 800689a: 681b ldr r3, [r3, #0] - 800689c: 4a6d ldr r2, [pc, #436] @ (8006a54 ) - 800689e: 4293 cmp r3, r2 - 80068a0: d008 beq.n 80068b4 - 80068a2: 687b ldr r3, [r7, #4] - 80068a4: 681b ldr r3, [r3, #0] - 80068a6: 4a6c ldr r2, [pc, #432] @ (8006a58 ) - 80068a8: 4293 cmp r3, r2 - 80068aa: d003 beq.n 80068b4 - 80068ac: 21b7 movs r1, #183 @ 0xb7 - 80068ae: 486b ldr r0, [pc, #428] @ (8006a5c ) - 80068b0: f7fc fc60 bl 8003174 - assert_param(IS_DMA_CHANNEL(hdma->Init.Channel)); - 80068b4: 687b ldr r3, [r7, #4] - 80068b6: 685b ldr r3, [r3, #4] - 80068b8: 2b00 cmp r3, #0 - 80068ba: d04e beq.n 800695a - 80068bc: 687b ldr r3, [r7, #4] - 80068be: 685b ldr r3, [r3, #4] - 80068c0: f1b3 7f00 cmp.w r3, #33554432 @ 0x2000000 - 80068c4: d049 beq.n 800695a - 80068c6: 687b ldr r3, [r7, #4] - 80068c8: 685b ldr r3, [r3, #4] - 80068ca: f1b3 6f80 cmp.w r3, #67108864 @ 0x4000000 - 80068ce: d044 beq.n 800695a - 80068d0: 687b ldr r3, [r7, #4] - 80068d2: 685b ldr r3, [r3, #4] - 80068d4: f1b3 6fc0 cmp.w r3, #100663296 @ 0x6000000 - 80068d8: d03f beq.n 800695a - 80068da: 687b ldr r3, [r7, #4] - 80068dc: 685b ldr r3, [r3, #4] - 80068de: f1b3 6f00 cmp.w r3, #134217728 @ 0x8000000 - 80068e2: d03a beq.n 800695a - 80068e4: 687b ldr r3, [r7, #4] - 80068e6: 685b ldr r3, [r3, #4] - 80068e8: f1b3 6f20 cmp.w r3, #167772160 @ 0xa000000 - 80068ec: d035 beq.n 800695a - 80068ee: 687b ldr r3, [r7, #4] - 80068f0: 685b ldr r3, [r3, #4] - 80068f2: f1b3 6f40 cmp.w r3, #201326592 @ 0xc000000 - 80068f6: d030 beq.n 800695a - 80068f8: 687b ldr r3, [r7, #4] - 80068fa: 685b ldr r3, [r3, #4] - 80068fc: f1b3 6f60 cmp.w r3, #234881024 @ 0xe000000 - 8006900: d02b beq.n 800695a - 8006902: 687b ldr r3, [r7, #4] - 8006904: 685b ldr r3, [r3, #4] - 8006906: f1b3 5f80 cmp.w r3, #268435456 @ 0x10000000 - 800690a: d026 beq.n 800695a - 800690c: 687b ldr r3, [r7, #4] - 800690e: 685b ldr r3, [r3, #4] - 8006910: f1b3 5f90 cmp.w r3, #301989888 @ 0x12000000 - 8006914: d021 beq.n 800695a - 8006916: 687b ldr r3, [r7, #4] - 8006918: 685b ldr r3, [r3, #4] - 800691a: f1b3 5fa0 cmp.w r3, #335544320 @ 0x14000000 - 800691e: d01c beq.n 800695a - 8006920: 687b ldr r3, [r7, #4] - 8006922: 685b ldr r3, [r3, #4] - 8006924: f1b3 5fb0 cmp.w r3, #369098752 @ 0x16000000 - 8006928: d017 beq.n 800695a - 800692a: 687b ldr r3, [r7, #4] - 800692c: 685b ldr r3, [r3, #4] - 800692e: f1b3 5fc0 cmp.w r3, #402653184 @ 0x18000000 - 8006932: d012 beq.n 800695a - 8006934: 687b ldr r3, [r7, #4] - 8006936: 685b ldr r3, [r3, #4] - 8006938: f1b3 5fd0 cmp.w r3, #436207616 @ 0x1a000000 - 800693c: d00d beq.n 800695a - 800693e: 687b ldr r3, [r7, #4] - 8006940: 685b ldr r3, [r3, #4] - 8006942: f1b3 5fe0 cmp.w r3, #469762048 @ 0x1c000000 - 8006946: d008 beq.n 800695a - 8006948: 687b ldr r3, [r7, #4] - 800694a: 685b ldr r3, [r3, #4] - 800694c: f1b3 5ff0 cmp.w r3, #503316480 @ 0x1e000000 - 8006950: d003 beq.n 800695a - 8006952: 21b8 movs r1, #184 @ 0xb8 - 8006954: 4841 ldr r0, [pc, #260] @ (8006a5c ) - 8006956: f7fc fc0d bl 8003174 - assert_param(IS_DMA_DIRECTION(hdma->Init.Direction)); - 800695a: 687b ldr r3, [r7, #4] - 800695c: 689b ldr r3, [r3, #8] - 800695e: 2b00 cmp r3, #0 - 8006960: d00b beq.n 800697a - 8006962: 687b ldr r3, [r7, #4] - 8006964: 689b ldr r3, [r3, #8] - 8006966: 2b40 cmp r3, #64 @ 0x40 - 8006968: d007 beq.n 800697a - 800696a: 687b ldr r3, [r7, #4] - 800696c: 689b ldr r3, [r3, #8] - 800696e: 2b80 cmp r3, #128 @ 0x80 - 8006970: d003 beq.n 800697a - 8006972: 21b9 movs r1, #185 @ 0xb9 - 8006974: 4839 ldr r0, [pc, #228] @ (8006a5c ) - 8006976: f7fc fbfd bl 8003174 - assert_param(IS_DMA_PERIPHERAL_INC_STATE(hdma->Init.PeriphInc)); - 800697a: 687b ldr r3, [r7, #4] - 800697c: 68db ldr r3, [r3, #12] - 800697e: f5b3 7f00 cmp.w r3, #512 @ 0x200 - 8006982: d007 beq.n 8006994 - 8006984: 687b ldr r3, [r7, #4] - 8006986: 68db ldr r3, [r3, #12] - 8006988: 2b00 cmp r3, #0 - 800698a: d003 beq.n 8006994 - 800698c: 21ba movs r1, #186 @ 0xba - 800698e: 4833 ldr r0, [pc, #204] @ (8006a5c ) - 8006990: f7fc fbf0 bl 8003174 - assert_param(IS_DMA_MEMORY_INC_STATE(hdma->Init.MemInc)); - 8006994: 687b ldr r3, [r7, #4] - 8006996: 691b ldr r3, [r3, #16] - 8006998: f5b3 6f80 cmp.w r3, #1024 @ 0x400 - 800699c: d007 beq.n 80069ae - 800699e: 687b ldr r3, [r7, #4] - 80069a0: 691b ldr r3, [r3, #16] - 80069a2: 2b00 cmp r3, #0 - 80069a4: d003 beq.n 80069ae - 80069a6: 21bb movs r1, #187 @ 0xbb - 80069a8: 482c ldr r0, [pc, #176] @ (8006a5c ) - 80069aa: f7fc fbe3 bl 8003174 - assert_param(IS_DMA_PERIPHERAL_DATA_SIZE(hdma->Init.PeriphDataAlignment)); - 80069ae: 687b ldr r3, [r7, #4] - 80069b0: 695b ldr r3, [r3, #20] - 80069b2: 2b00 cmp r3, #0 - 80069b4: d00d beq.n 80069d2 - 80069b6: 687b ldr r3, [r7, #4] - 80069b8: 695b ldr r3, [r3, #20] - 80069ba: f5b3 6f00 cmp.w r3, #2048 @ 0x800 - 80069be: d008 beq.n 80069d2 - 80069c0: 687b ldr r3, [r7, #4] - 80069c2: 695b ldr r3, [r3, #20] - 80069c4: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 80069c8: d003 beq.n 80069d2 - 80069ca: 21bc movs r1, #188 @ 0xbc - 80069cc: 4823 ldr r0, [pc, #140] @ (8006a5c ) - 80069ce: f7fc fbd1 bl 8003174 - assert_param(IS_DMA_MEMORY_DATA_SIZE(hdma->Init.MemDataAlignment)); - 80069d2: 687b ldr r3, [r7, #4] - 80069d4: 699b ldr r3, [r3, #24] - 80069d6: 2b00 cmp r3, #0 - 80069d8: d00d beq.n 80069f6 - 80069da: 687b ldr r3, [r7, #4] - 80069dc: 699b ldr r3, [r3, #24] - 80069de: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 - 80069e2: d008 beq.n 80069f6 - 80069e4: 687b ldr r3, [r7, #4] - 80069e6: 699b ldr r3, [r3, #24] - 80069e8: f5b3 4f80 cmp.w r3, #16384 @ 0x4000 - 80069ec: d003 beq.n 80069f6 - 80069ee: 21bd movs r1, #189 @ 0xbd - 80069f0: 481a ldr r0, [pc, #104] @ (8006a5c ) - 80069f2: f7fc fbbf bl 8003174 - assert_param(IS_DMA_MODE(hdma->Init.Mode)); - 80069f6: 687b ldr r3, [r7, #4] - 80069f8: 69db ldr r3, [r3, #28] - 80069fa: 2b00 cmp r3, #0 - 80069fc: d030 beq.n 8006a60 - 80069fe: 687b ldr r3, [r7, #4] - 8006a00: 69db ldr r3, [r3, #28] - 8006a02: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 8006a06: d02b beq.n 8006a60 - 8006a08: 687b ldr r3, [r7, #4] - 8006a0a: 69db ldr r3, [r3, #28] - 8006a0c: 2b20 cmp r3, #32 - 8006a0e: d027 beq.n 8006a60 - 8006a10: 21be movs r1, #190 @ 0xbe - 8006a12: 4812 ldr r0, [pc, #72] @ (8006a5c ) - 8006a14: f7fc fbae bl 8003174 - 8006a18: e022 b.n 8006a60 - 8006a1a: bf00 nop - 8006a1c: 40026010 .word 0x40026010 - 8006a20: 40026028 .word 0x40026028 - 8006a24: 40026040 .word 0x40026040 - 8006a28: 40026058 .word 0x40026058 - 8006a2c: 40026070 .word 0x40026070 - 8006a30: 40026088 .word 0x40026088 - 8006a34: 400260a0 .word 0x400260a0 - 8006a38: 400260b8 .word 0x400260b8 - 8006a3c: 40026410 .word 0x40026410 - 8006a40: 40026428 .word 0x40026428 - 8006a44: 40026440 .word 0x40026440 - 8006a48: 40026458 .word 0x40026458 - 8006a4c: 40026470 .word 0x40026470 - 8006a50: 40026488 .word 0x40026488 - 8006a54: 400264a0 .word 0x400264a0 - 8006a58: 400264b8 .word 0x400264b8 - 8006a5c: 0800e7b0 .word 0x0800e7b0 - assert_param(IS_DMA_PRIORITY(hdma->Init.Priority)); 8006a60: 687b ldr r3, [r7, #4] - 8006a62: 6a1b ldr r3, [r3, #32] - 8006a64: 2b00 cmp r3, #0 - 8006a66: d012 beq.n 8006a8e - 8006a68: 687b ldr r3, [r7, #4] - 8006a6a: 6a1b ldr r3, [r3, #32] - 8006a6c: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8006a70: d00d beq.n 8006a8e - 8006a72: 687b ldr r3, [r7, #4] - 8006a74: 6a1b ldr r3, [r3, #32] - 8006a76: f5b3 3f00 cmp.w r3, #131072 @ 0x20000 - 8006a7a: d008 beq.n 8006a8e - 8006a7c: 687b ldr r3, [r7, #4] - 8006a7e: 6a1b ldr r3, [r3, #32] - 8006a80: f5b3 3f40 cmp.w r3, #196608 @ 0x30000 - 8006a84: d003 beq.n 8006a8e - 8006a86: 21bf movs r1, #191 @ 0xbf - 8006a88: 4879 ldr r0, [pc, #484] @ (8006c70 ) - 8006a8a: f7fc fb73 bl 8003174 + 8006a62: 681b ldr r3, [r3, #0] + 8006a64: 4a82 ldr r2, [pc, #520] @ (8006c70 ) + 8006a66: 4293 cmp r3, r2 + 8006a68: d04e beq.n 8006b08 + 8006a6a: 687b ldr r3, [r7, #4] + 8006a6c: 681b ldr r3, [r3, #0] + 8006a6e: 4a81 ldr r2, [pc, #516] @ (8006c74 ) + 8006a70: 4293 cmp r3, r2 + 8006a72: d049 beq.n 8006b08 + 8006a74: 687b ldr r3, [r7, #4] + 8006a76: 681b ldr r3, [r3, #0] + 8006a78: 4a7f ldr r2, [pc, #508] @ (8006c78 ) + 8006a7a: 4293 cmp r3, r2 + 8006a7c: d044 beq.n 8006b08 + 8006a7e: 687b ldr r3, [r7, #4] + 8006a80: 681b ldr r3, [r3, #0] + 8006a82: 4a7e ldr r2, [pc, #504] @ (8006c7c ) + 8006a84: 4293 cmp r3, r2 + 8006a86: d03f beq.n 8006b08 + 8006a88: 687b ldr r3, [r7, #4] + 8006a8a: 681b ldr r3, [r3, #0] + 8006a8c: 4a7c ldr r2, [pc, #496] @ (8006c80 ) + 8006a8e: 4293 cmp r3, r2 + 8006a90: d03a beq.n 8006b08 + 8006a92: 687b ldr r3, [r7, #4] + 8006a94: 681b ldr r3, [r3, #0] + 8006a96: 4a7b ldr r2, [pc, #492] @ (8006c84 ) + 8006a98: 4293 cmp r3, r2 + 8006a9a: d035 beq.n 8006b08 + 8006a9c: 687b ldr r3, [r7, #4] + 8006a9e: 681b ldr r3, [r3, #0] + 8006aa0: 4a79 ldr r2, [pc, #484] @ (8006c88 ) + 8006aa2: 4293 cmp r3, r2 + 8006aa4: d030 beq.n 8006b08 + 8006aa6: 687b ldr r3, [r7, #4] + 8006aa8: 681b ldr r3, [r3, #0] + 8006aaa: 4a78 ldr r2, [pc, #480] @ (8006c8c ) + 8006aac: 4293 cmp r3, r2 + 8006aae: d02b beq.n 8006b08 + 8006ab0: 687b ldr r3, [r7, #4] + 8006ab2: 681b ldr r3, [r3, #0] + 8006ab4: 4a76 ldr r2, [pc, #472] @ (8006c90 ) + 8006ab6: 4293 cmp r3, r2 + 8006ab8: d026 beq.n 8006b08 + 8006aba: 687b ldr r3, [r7, #4] + 8006abc: 681b ldr r3, [r3, #0] + 8006abe: 4a75 ldr r2, [pc, #468] @ (8006c94 ) + 8006ac0: 4293 cmp r3, r2 + 8006ac2: d021 beq.n 8006b08 + 8006ac4: 687b ldr r3, [r7, #4] + 8006ac6: 681b ldr r3, [r3, #0] + 8006ac8: 4a73 ldr r2, [pc, #460] @ (8006c98 ) + 8006aca: 4293 cmp r3, r2 + 8006acc: d01c beq.n 8006b08 + 8006ace: 687b ldr r3, [r7, #4] + 8006ad0: 681b ldr r3, [r3, #0] + 8006ad2: 4a72 ldr r2, [pc, #456] @ (8006c9c ) + 8006ad4: 4293 cmp r3, r2 + 8006ad6: d017 beq.n 8006b08 + 8006ad8: 687b ldr r3, [r7, #4] + 8006ada: 681b ldr r3, [r3, #0] + 8006adc: 4a70 ldr r2, [pc, #448] @ (8006ca0 ) + 8006ade: 4293 cmp r3, r2 + 8006ae0: d012 beq.n 8006b08 + 8006ae2: 687b ldr r3, [r7, #4] + 8006ae4: 681b ldr r3, [r3, #0] + 8006ae6: 4a6f ldr r2, [pc, #444] @ (8006ca4 ) + 8006ae8: 4293 cmp r3, r2 + 8006aea: d00d beq.n 8006b08 + 8006aec: 687b ldr r3, [r7, #4] + 8006aee: 681b ldr r3, [r3, #0] + 8006af0: 4a6d ldr r2, [pc, #436] @ (8006ca8 ) + 8006af2: 4293 cmp r3, r2 + 8006af4: d008 beq.n 8006b08 + 8006af6: 687b ldr r3, [r7, #4] + 8006af8: 681b ldr r3, [r3, #0] + 8006afa: 4a6c ldr r2, [pc, #432] @ (8006cac ) + 8006afc: 4293 cmp r3, r2 + 8006afe: d003 beq.n 8006b08 + 8006b00: 21b7 movs r1, #183 @ 0xb7 + 8006b02: 486b ldr r0, [pc, #428] @ (8006cb0 ) + 8006b04: f7fc fb92 bl 800322c + assert_param(IS_DMA_CHANNEL(hdma->Init.Channel)); + 8006b08: 687b ldr r3, [r7, #4] + 8006b0a: 685b ldr r3, [r3, #4] + 8006b0c: 2b00 cmp r3, #0 + 8006b0e: d04e beq.n 8006bae + 8006b10: 687b ldr r3, [r7, #4] + 8006b12: 685b ldr r3, [r3, #4] + 8006b14: f1b3 7f00 cmp.w r3, #33554432 @ 0x2000000 + 8006b18: d049 beq.n 8006bae + 8006b1a: 687b ldr r3, [r7, #4] + 8006b1c: 685b ldr r3, [r3, #4] + 8006b1e: f1b3 6f80 cmp.w r3, #67108864 @ 0x4000000 + 8006b22: d044 beq.n 8006bae + 8006b24: 687b ldr r3, [r7, #4] + 8006b26: 685b ldr r3, [r3, #4] + 8006b28: f1b3 6fc0 cmp.w r3, #100663296 @ 0x6000000 + 8006b2c: d03f beq.n 8006bae + 8006b2e: 687b ldr r3, [r7, #4] + 8006b30: 685b ldr r3, [r3, #4] + 8006b32: f1b3 6f00 cmp.w r3, #134217728 @ 0x8000000 + 8006b36: d03a beq.n 8006bae + 8006b38: 687b ldr r3, [r7, #4] + 8006b3a: 685b ldr r3, [r3, #4] + 8006b3c: f1b3 6f20 cmp.w r3, #167772160 @ 0xa000000 + 8006b40: d035 beq.n 8006bae + 8006b42: 687b ldr r3, [r7, #4] + 8006b44: 685b ldr r3, [r3, #4] + 8006b46: f1b3 6f40 cmp.w r3, #201326592 @ 0xc000000 + 8006b4a: d030 beq.n 8006bae + 8006b4c: 687b ldr r3, [r7, #4] + 8006b4e: 685b ldr r3, [r3, #4] + 8006b50: f1b3 6f60 cmp.w r3, #234881024 @ 0xe000000 + 8006b54: d02b beq.n 8006bae + 8006b56: 687b ldr r3, [r7, #4] + 8006b58: 685b ldr r3, [r3, #4] + 8006b5a: f1b3 5f80 cmp.w r3, #268435456 @ 0x10000000 + 8006b5e: d026 beq.n 8006bae + 8006b60: 687b ldr r3, [r7, #4] + 8006b62: 685b ldr r3, [r3, #4] + 8006b64: f1b3 5f90 cmp.w r3, #301989888 @ 0x12000000 + 8006b68: d021 beq.n 8006bae + 8006b6a: 687b ldr r3, [r7, #4] + 8006b6c: 685b ldr r3, [r3, #4] + 8006b6e: f1b3 5fa0 cmp.w r3, #335544320 @ 0x14000000 + 8006b72: d01c beq.n 8006bae + 8006b74: 687b ldr r3, [r7, #4] + 8006b76: 685b ldr r3, [r3, #4] + 8006b78: f1b3 5fb0 cmp.w r3, #369098752 @ 0x16000000 + 8006b7c: d017 beq.n 8006bae + 8006b7e: 687b ldr r3, [r7, #4] + 8006b80: 685b ldr r3, [r3, #4] + 8006b82: f1b3 5fc0 cmp.w r3, #402653184 @ 0x18000000 + 8006b86: d012 beq.n 8006bae + 8006b88: 687b ldr r3, [r7, #4] + 8006b8a: 685b ldr r3, [r3, #4] + 8006b8c: f1b3 5fd0 cmp.w r3, #436207616 @ 0x1a000000 + 8006b90: d00d beq.n 8006bae + 8006b92: 687b ldr r3, [r7, #4] + 8006b94: 685b ldr r3, [r3, #4] + 8006b96: f1b3 5fe0 cmp.w r3, #469762048 @ 0x1c000000 + 8006b9a: d008 beq.n 8006bae + 8006b9c: 687b ldr r3, [r7, #4] + 8006b9e: 685b ldr r3, [r3, #4] + 8006ba0: f1b3 5ff0 cmp.w r3, #503316480 @ 0x1e000000 + 8006ba4: d003 beq.n 8006bae + 8006ba6: 21b8 movs r1, #184 @ 0xb8 + 8006ba8: 4841 ldr r0, [pc, #260] @ (8006cb0 ) + 8006baa: f7fc fb3f bl 800322c + assert_param(IS_DMA_DIRECTION(hdma->Init.Direction)); + 8006bae: 687b ldr r3, [r7, #4] + 8006bb0: 689b ldr r3, [r3, #8] + 8006bb2: 2b00 cmp r3, #0 + 8006bb4: d00b beq.n 8006bce + 8006bb6: 687b ldr r3, [r7, #4] + 8006bb8: 689b ldr r3, [r3, #8] + 8006bba: 2b40 cmp r3, #64 @ 0x40 + 8006bbc: d007 beq.n 8006bce + 8006bbe: 687b ldr r3, [r7, #4] + 8006bc0: 689b ldr r3, [r3, #8] + 8006bc2: 2b80 cmp r3, #128 @ 0x80 + 8006bc4: d003 beq.n 8006bce + 8006bc6: 21b9 movs r1, #185 @ 0xb9 + 8006bc8: 4839 ldr r0, [pc, #228] @ (8006cb0 ) + 8006bca: f7fc fb2f bl 800322c + assert_param(IS_DMA_PERIPHERAL_INC_STATE(hdma->Init.PeriphInc)); + 8006bce: 687b ldr r3, [r7, #4] + 8006bd0: 68db ldr r3, [r3, #12] + 8006bd2: f5b3 7f00 cmp.w r3, #512 @ 0x200 + 8006bd6: d007 beq.n 8006be8 + 8006bd8: 687b ldr r3, [r7, #4] + 8006bda: 68db ldr r3, [r3, #12] + 8006bdc: 2b00 cmp r3, #0 + 8006bde: d003 beq.n 8006be8 + 8006be0: 21ba movs r1, #186 @ 0xba + 8006be2: 4833 ldr r0, [pc, #204] @ (8006cb0 ) + 8006be4: f7fc fb22 bl 800322c + assert_param(IS_DMA_MEMORY_INC_STATE(hdma->Init.MemInc)); + 8006be8: 687b ldr r3, [r7, #4] + 8006bea: 691b ldr r3, [r3, #16] + 8006bec: f5b3 6f80 cmp.w r3, #1024 @ 0x400 + 8006bf0: d007 beq.n 8006c02 + 8006bf2: 687b ldr r3, [r7, #4] + 8006bf4: 691b ldr r3, [r3, #16] + 8006bf6: 2b00 cmp r3, #0 + 8006bf8: d003 beq.n 8006c02 + 8006bfa: 21bb movs r1, #187 @ 0xbb + 8006bfc: 482c ldr r0, [pc, #176] @ (8006cb0 ) + 8006bfe: f7fc fb15 bl 800322c + assert_param(IS_DMA_PERIPHERAL_DATA_SIZE(hdma->Init.PeriphDataAlignment)); + 8006c02: 687b ldr r3, [r7, #4] + 8006c04: 695b ldr r3, [r3, #20] + 8006c06: 2b00 cmp r3, #0 + 8006c08: d00d beq.n 8006c26 + 8006c0a: 687b ldr r3, [r7, #4] + 8006c0c: 695b ldr r3, [r3, #20] + 8006c0e: f5b3 6f00 cmp.w r3, #2048 @ 0x800 + 8006c12: d008 beq.n 8006c26 + 8006c14: 687b ldr r3, [r7, #4] + 8006c16: 695b ldr r3, [r3, #20] + 8006c18: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 8006c1c: d003 beq.n 8006c26 + 8006c1e: 21bc movs r1, #188 @ 0xbc + 8006c20: 4823 ldr r0, [pc, #140] @ (8006cb0 ) + 8006c22: f7fc fb03 bl 800322c + assert_param(IS_DMA_MEMORY_DATA_SIZE(hdma->Init.MemDataAlignment)); + 8006c26: 687b ldr r3, [r7, #4] + 8006c28: 699b ldr r3, [r3, #24] + 8006c2a: 2b00 cmp r3, #0 + 8006c2c: d00d beq.n 8006c4a + 8006c2e: 687b ldr r3, [r7, #4] + 8006c30: 699b ldr r3, [r3, #24] + 8006c32: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 8006c36: d008 beq.n 8006c4a + 8006c38: 687b ldr r3, [r7, #4] + 8006c3a: 699b ldr r3, [r3, #24] + 8006c3c: f5b3 4f80 cmp.w r3, #16384 @ 0x4000 + 8006c40: d003 beq.n 8006c4a + 8006c42: 21bd movs r1, #189 @ 0xbd + 8006c44: 481a ldr r0, [pc, #104] @ (8006cb0 ) + 8006c46: f7fc faf1 bl 800322c + assert_param(IS_DMA_MODE(hdma->Init.Mode)); + 8006c4a: 687b ldr r3, [r7, #4] + 8006c4c: 69db ldr r3, [r3, #28] + 8006c4e: 2b00 cmp r3, #0 + 8006c50: d030 beq.n 8006cb4 + 8006c52: 687b ldr r3, [r7, #4] + 8006c54: 69db ldr r3, [r3, #28] + 8006c56: f5b3 7f80 cmp.w r3, #256 @ 0x100 + 8006c5a: d02b beq.n 8006cb4 + 8006c5c: 687b ldr r3, [r7, #4] + 8006c5e: 69db ldr r3, [r3, #28] + 8006c60: 2b20 cmp r3, #32 + 8006c62: d027 beq.n 8006cb4 + 8006c64: 21be movs r1, #190 @ 0xbe + 8006c66: 4812 ldr r0, [pc, #72] @ (8006cb0 ) + 8006c68: f7fc fae0 bl 800322c + 8006c6c: e022 b.n 8006cb4 + 8006c6e: bf00 nop + 8006c70: 40026010 .word 0x40026010 + 8006c74: 40026028 .word 0x40026028 + 8006c78: 40026040 .word 0x40026040 + 8006c7c: 40026058 .word 0x40026058 + 8006c80: 40026070 .word 0x40026070 + 8006c84: 40026088 .word 0x40026088 + 8006c88: 400260a0 .word 0x400260a0 + 8006c8c: 400260b8 .word 0x400260b8 + 8006c90: 40026410 .word 0x40026410 + 8006c94: 40026428 .word 0x40026428 + 8006c98: 40026440 .word 0x40026440 + 8006c9c: 40026458 .word 0x40026458 + 8006ca0: 40026470 .word 0x40026470 + 8006ca4: 40026488 .word 0x40026488 + 8006ca8: 400264a0 .word 0x400264a0 + 8006cac: 400264b8 .word 0x400264b8 + 8006cb0: 0800ed20 .word 0x0800ed20 + assert_param(IS_DMA_PRIORITY(hdma->Init.Priority)); + 8006cb4: 687b ldr r3, [r7, #4] + 8006cb6: 6a1b ldr r3, [r3, #32] + 8006cb8: 2b00 cmp r3, #0 + 8006cba: d012 beq.n 8006ce2 + 8006cbc: 687b ldr r3, [r7, #4] + 8006cbe: 6a1b ldr r3, [r3, #32] + 8006cc0: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 8006cc4: d00d beq.n 8006ce2 + 8006cc6: 687b ldr r3, [r7, #4] + 8006cc8: 6a1b ldr r3, [r3, #32] + 8006cca: f5b3 3f00 cmp.w r3, #131072 @ 0x20000 + 8006cce: d008 beq.n 8006ce2 + 8006cd0: 687b ldr r3, [r7, #4] + 8006cd2: 6a1b ldr r3, [r3, #32] + 8006cd4: f5b3 3f40 cmp.w r3, #196608 @ 0x30000 + 8006cd8: d003 beq.n 8006ce2 + 8006cda: 21bf movs r1, #191 @ 0xbf + 8006cdc: 4879 ldr r0, [pc, #484] @ (8006ec4 ) + 8006cde: f7fc faa5 bl 800322c assert_param(IS_DMA_FIFO_MODE_STATE(hdma->Init.FIFOMode)); - 8006a8e: 687b ldr r3, [r7, #4] - 8006a90: 6a5b ldr r3, [r3, #36] @ 0x24 - 8006a92: 2b00 cmp r3, #0 - 8006a94: d007 beq.n 8006aa6 - 8006a96: 687b ldr r3, [r7, #4] - 8006a98: 6a5b ldr r3, [r3, #36] @ 0x24 - 8006a9a: 2b04 cmp r3, #4 - 8006a9c: d003 beq.n 8006aa6 - 8006a9e: 21c0 movs r1, #192 @ 0xc0 - 8006aa0: 4873 ldr r0, [pc, #460] @ (8006c70 ) - 8006aa2: f7fc fb67 bl 8003174 + 8006ce2: 687b ldr r3, [r7, #4] + 8006ce4: 6a5b ldr r3, [r3, #36] @ 0x24 + 8006ce6: 2b00 cmp r3, #0 + 8006ce8: d007 beq.n 8006cfa + 8006cea: 687b ldr r3, [r7, #4] + 8006cec: 6a5b ldr r3, [r3, #36] @ 0x24 + 8006cee: 2b04 cmp r3, #4 + 8006cf0: d003 beq.n 8006cfa + 8006cf2: 21c0 movs r1, #192 @ 0xc0 + 8006cf4: 4873 ldr r0, [pc, #460] @ (8006ec4 ) + 8006cf6: f7fc fa99 bl 800322c /* Check the memory burst, peripheral burst and FIFO threshold parameters only when FIFO mode is enabled */ if(hdma->Init.FIFOMode != DMA_FIFOMODE_DISABLE) - 8006aa6: 687b ldr r3, [r7, #4] - 8006aa8: 6a5b ldr r3, [r3, #36] @ 0x24 - 8006aaa: 2b00 cmp r3, #0 - 8006aac: d041 beq.n 8006b32 + 8006cfa: 687b ldr r3, [r7, #4] + 8006cfc: 6a5b ldr r3, [r3, #36] @ 0x24 + 8006cfe: 2b00 cmp r3, #0 + 8006d00: d041 beq.n 8006d86 { assert_param(IS_DMA_FIFO_THRESHOLD(hdma->Init.FIFOThreshold)); - 8006aae: 687b ldr r3, [r7, #4] - 8006ab0: 6a9b ldr r3, [r3, #40] @ 0x28 - 8006ab2: 2b00 cmp r3, #0 - 8006ab4: d00f beq.n 8006ad6 - 8006ab6: 687b ldr r3, [r7, #4] - 8006ab8: 6a9b ldr r3, [r3, #40] @ 0x28 - 8006aba: 2b01 cmp r3, #1 - 8006abc: d00b beq.n 8006ad6 - 8006abe: 687b ldr r3, [r7, #4] - 8006ac0: 6a9b ldr r3, [r3, #40] @ 0x28 - 8006ac2: 2b02 cmp r3, #2 - 8006ac4: d007 beq.n 8006ad6 - 8006ac6: 687b ldr r3, [r7, #4] - 8006ac8: 6a9b ldr r3, [r3, #40] @ 0x28 - 8006aca: 2b03 cmp r3, #3 - 8006acc: d003 beq.n 8006ad6 - 8006ace: 21c5 movs r1, #197 @ 0xc5 - 8006ad0: 4867 ldr r0, [pc, #412] @ (8006c70 ) - 8006ad2: f7fc fb4f bl 8003174 + 8006d02: 687b ldr r3, [r7, #4] + 8006d04: 6a9b ldr r3, [r3, #40] @ 0x28 + 8006d06: 2b00 cmp r3, #0 + 8006d08: d00f beq.n 8006d2a + 8006d0a: 687b ldr r3, [r7, #4] + 8006d0c: 6a9b ldr r3, [r3, #40] @ 0x28 + 8006d0e: 2b01 cmp r3, #1 + 8006d10: d00b beq.n 8006d2a + 8006d12: 687b ldr r3, [r7, #4] + 8006d14: 6a9b ldr r3, [r3, #40] @ 0x28 + 8006d16: 2b02 cmp r3, #2 + 8006d18: d007 beq.n 8006d2a + 8006d1a: 687b ldr r3, [r7, #4] + 8006d1c: 6a9b ldr r3, [r3, #40] @ 0x28 + 8006d1e: 2b03 cmp r3, #3 + 8006d20: d003 beq.n 8006d2a + 8006d22: 21c5 movs r1, #197 @ 0xc5 + 8006d24: 4867 ldr r0, [pc, #412] @ (8006ec4 ) + 8006d26: f7fc fa81 bl 800322c assert_param(IS_DMA_MEMORY_BURST(hdma->Init.MemBurst)); - 8006ad6: 687b ldr r3, [r7, #4] - 8006ad8: 6adb ldr r3, [r3, #44] @ 0x2c - 8006ada: 2b00 cmp r3, #0 - 8006adc: d012 beq.n 8006b04 - 8006ade: 687b ldr r3, [r7, #4] - 8006ae0: 6adb ldr r3, [r3, #44] @ 0x2c - 8006ae2: f5b3 0f00 cmp.w r3, #8388608 @ 0x800000 - 8006ae6: d00d beq.n 8006b04 - 8006ae8: 687b ldr r3, [r7, #4] - 8006aea: 6adb ldr r3, [r3, #44] @ 0x2c - 8006aec: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 - 8006af0: d008 beq.n 8006b04 - 8006af2: 687b ldr r3, [r7, #4] - 8006af4: 6adb ldr r3, [r3, #44] @ 0x2c - 8006af6: f1b3 7fc0 cmp.w r3, #25165824 @ 0x1800000 - 8006afa: d003 beq.n 8006b04 - 8006afc: 21c6 movs r1, #198 @ 0xc6 - 8006afe: 485c ldr r0, [pc, #368] @ (8006c70 ) - 8006b00: f7fc fb38 bl 8003174 + 8006d2a: 687b ldr r3, [r7, #4] + 8006d2c: 6adb ldr r3, [r3, #44] @ 0x2c + 8006d2e: 2b00 cmp r3, #0 + 8006d30: d012 beq.n 8006d58 + 8006d32: 687b ldr r3, [r7, #4] + 8006d34: 6adb ldr r3, [r3, #44] @ 0x2c + 8006d36: f5b3 0f00 cmp.w r3, #8388608 @ 0x800000 + 8006d3a: d00d beq.n 8006d58 + 8006d3c: 687b ldr r3, [r7, #4] + 8006d3e: 6adb ldr r3, [r3, #44] @ 0x2c + 8006d40: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 + 8006d44: d008 beq.n 8006d58 + 8006d46: 687b ldr r3, [r7, #4] + 8006d48: 6adb ldr r3, [r3, #44] @ 0x2c + 8006d4a: f1b3 7fc0 cmp.w r3, #25165824 @ 0x1800000 + 8006d4e: d003 beq.n 8006d58 + 8006d50: 21c6 movs r1, #198 @ 0xc6 + 8006d52: 485c ldr r0, [pc, #368] @ (8006ec4 ) + 8006d54: f7fc fa6a bl 800322c assert_param(IS_DMA_PERIPHERAL_BURST(hdma->Init.PeriphBurst)); - 8006b04: 687b ldr r3, [r7, #4] - 8006b06: 6b1b ldr r3, [r3, #48] @ 0x30 - 8006b08: 2b00 cmp r3, #0 - 8006b0a: d012 beq.n 8006b32 - 8006b0c: 687b ldr r3, [r7, #4] - 8006b0e: 6b1b ldr r3, [r3, #48] @ 0x30 - 8006b10: f5b3 1f00 cmp.w r3, #2097152 @ 0x200000 - 8006b14: d00d beq.n 8006b32 - 8006b16: 687b ldr r3, [r7, #4] - 8006b18: 6b1b ldr r3, [r3, #48] @ 0x30 - 8006b1a: f5b3 0f80 cmp.w r3, #4194304 @ 0x400000 - 8006b1e: d008 beq.n 8006b32 - 8006b20: 687b ldr r3, [r7, #4] - 8006b22: 6b1b ldr r3, [r3, #48] @ 0x30 - 8006b24: f5b3 0fc0 cmp.w r3, #6291456 @ 0x600000 - 8006b28: d003 beq.n 8006b32 - 8006b2a: 21c7 movs r1, #199 @ 0xc7 - 8006b2c: 4850 ldr r0, [pc, #320] @ (8006c70 ) - 8006b2e: f7fc fb21 bl 8003174 + 8006d58: 687b ldr r3, [r7, #4] + 8006d5a: 6b1b ldr r3, [r3, #48] @ 0x30 + 8006d5c: 2b00 cmp r3, #0 + 8006d5e: d012 beq.n 8006d86 + 8006d60: 687b ldr r3, [r7, #4] + 8006d62: 6b1b ldr r3, [r3, #48] @ 0x30 + 8006d64: f5b3 1f00 cmp.w r3, #2097152 @ 0x200000 + 8006d68: d00d beq.n 8006d86 + 8006d6a: 687b ldr r3, [r7, #4] + 8006d6c: 6b1b ldr r3, [r3, #48] @ 0x30 + 8006d6e: f5b3 0f80 cmp.w r3, #4194304 @ 0x400000 + 8006d72: d008 beq.n 8006d86 + 8006d74: 687b ldr r3, [r7, #4] + 8006d76: 6b1b ldr r3, [r3, #48] @ 0x30 + 8006d78: f5b3 0fc0 cmp.w r3, #6291456 @ 0x600000 + 8006d7c: d003 beq.n 8006d86 + 8006d7e: 21c7 movs r1, #199 @ 0xc7 + 8006d80: 4850 ldr r0, [pc, #320] @ (8006ec4 ) + 8006d82: f7fc fa53 bl 800322c } /* Change DMA peripheral state */ hdma->State = HAL_DMA_STATE_BUSY; - 8006b32: 687b ldr r3, [r7, #4] - 8006b34: 2202 movs r2, #2 - 8006b36: f883 2035 strb.w r2, [r3, #53] @ 0x35 + 8006d86: 687b ldr r3, [r7, #4] + 8006d88: 2202 movs r2, #2 + 8006d8a: f883 2035 strb.w r2, [r3, #53] @ 0x35 /* Allocate lock resource */ __HAL_UNLOCK(hdma); - 8006b3a: 687b ldr r3, [r7, #4] - 8006b3c: 2200 movs r2, #0 - 8006b3e: f883 2034 strb.w r2, [r3, #52] @ 0x34 + 8006d8e: 687b ldr r3, [r7, #4] + 8006d90: 2200 movs r2, #0 + 8006d92: f883 2034 strb.w r2, [r3, #52] @ 0x34 /* Disable the peripheral */ __HAL_DMA_DISABLE(hdma); - 8006b42: 687b ldr r3, [r7, #4] - 8006b44: 681b ldr r3, [r3, #0] - 8006b46: 681a ldr r2, [r3, #0] - 8006b48: 687b ldr r3, [r7, #4] - 8006b4a: 681b ldr r3, [r3, #0] - 8006b4c: f022 0201 bic.w r2, r2, #1 - 8006b50: 601a str r2, [r3, #0] + 8006d96: 687b ldr r3, [r7, #4] + 8006d98: 681b ldr r3, [r3, #0] + 8006d9a: 681a ldr r2, [r3, #0] + 8006d9c: 687b ldr r3, [r7, #4] + 8006d9e: 681b ldr r3, [r3, #0] + 8006da0: f022 0201 bic.w r2, r2, #1 + 8006da4: 601a str r2, [r3, #0] /* Check if the DMA Stream is effectively disabled */ while((hdma->Instance->CR & DMA_SxCR_EN) != RESET) - 8006b52: e00f b.n 8006b74 + 8006da6: e00f b.n 8006dc8 { /* Check for the Timeout */ if((HAL_GetTick() - tickstart ) > HAL_TIMEOUT_DMA_ABORT) - 8006b54: f7fe ff7c bl 8005a50 - 8006b58: 4602 mov r2, r0 - 8006b5a: 693b ldr r3, [r7, #16] - 8006b5c: 1ad3 subs r3, r2, r3 - 8006b5e: 2b05 cmp r3, #5 - 8006b60: d908 bls.n 8006b74 + 8006da8: f7fe ff7c bl 8005ca4 + 8006dac: 4602 mov r2, r0 + 8006dae: 693b ldr r3, [r7, #16] + 8006db0: 1ad3 subs r3, r2, r3 + 8006db2: 2b05 cmp r3, #5 + 8006db4: d908 bls.n 8006dc8 { /* Update error code */ hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT; - 8006b62: 687b ldr r3, [r7, #4] - 8006b64: 2220 movs r2, #32 - 8006b66: 655a str r2, [r3, #84] @ 0x54 + 8006db6: 687b ldr r3, [r7, #4] + 8006db8: 2220 movs r2, #32 + 8006dba: 655a str r2, [r3, #84] @ 0x54 /* Change the DMA state */ hdma->State = HAL_DMA_STATE_TIMEOUT; - 8006b68: 687b ldr r3, [r7, #4] - 8006b6a: 2203 movs r2, #3 - 8006b6c: f883 2035 strb.w r2, [r3, #53] @ 0x35 + 8006dbc: 687b ldr r3, [r7, #4] + 8006dbe: 2203 movs r2, #3 + 8006dc0: f883 2035 strb.w r2, [r3, #53] @ 0x35 return HAL_TIMEOUT; - 8006b70: 2303 movs r3, #3 - 8006b72: e078 b.n 8006c66 + 8006dc4: 2303 movs r3, #3 + 8006dc6: e078 b.n 8006eba while((hdma->Instance->CR & DMA_SxCR_EN) != RESET) - 8006b74: 687b ldr r3, [r7, #4] - 8006b76: 681b ldr r3, [r3, #0] - 8006b78: 681b ldr r3, [r3, #0] - 8006b7a: f003 0301 and.w r3, r3, #1 - 8006b7e: 2b00 cmp r3, #0 - 8006b80: d1e8 bne.n 8006b54 + 8006dc8: 687b ldr r3, [r7, #4] + 8006dca: 681b ldr r3, [r3, #0] + 8006dcc: 681b ldr r3, [r3, #0] + 8006dce: f003 0301 and.w r3, r3, #1 + 8006dd2: 2b00 cmp r3, #0 + 8006dd4: d1e8 bne.n 8006da8 } } /* Get the CR register value */ tmp = hdma->Instance->CR; - 8006b82: 687b ldr r3, [r7, #4] - 8006b84: 681b ldr r3, [r3, #0] - 8006b86: 681b ldr r3, [r3, #0] - 8006b88: 617b str r3, [r7, #20] + 8006dd6: 687b ldr r3, [r7, #4] + 8006dd8: 681b ldr r3, [r3, #0] + 8006dda: 681b ldr r3, [r3, #0] + 8006ddc: 617b str r3, [r7, #20] /* Clear CHSEL, MBURST, PBURST, PL, MSIZE, PSIZE, MINC, PINC, CIRC, DIR, CT and DBM bits */ tmp &= ((uint32_t)~(DMA_SxCR_CHSEL | DMA_SxCR_MBURST | DMA_SxCR_PBURST | \ - 8006b8a: 697a ldr r2, [r7, #20] - 8006b8c: 4b39 ldr r3, [pc, #228] @ (8006c74 ) - 8006b8e: 4013 ands r3, r2 - 8006b90: 617b str r3, [r7, #20] + 8006dde: 697a ldr r2, [r7, #20] + 8006de0: 4b39 ldr r3, [pc, #228] @ (8006ec8 ) + 8006de2: 4013 ands r3, r2 + 8006de4: 617b str r3, [r7, #20] DMA_SxCR_PL | DMA_SxCR_MSIZE | DMA_SxCR_PSIZE | \ DMA_SxCR_MINC | DMA_SxCR_PINC | DMA_SxCR_CIRC | \ DMA_SxCR_DIR | DMA_SxCR_CT | DMA_SxCR_DBM)); /* Prepare the DMA Stream configuration */ tmp |= hdma->Init.Channel | hdma->Init.Direction | - 8006b92: 687b ldr r3, [r7, #4] - 8006b94: 685a ldr r2, [r3, #4] - 8006b96: 687b ldr r3, [r7, #4] - 8006b98: 689b ldr r3, [r3, #8] - 8006b9a: 431a orrs r2, r3 + 8006de6: 687b ldr r3, [r7, #4] + 8006de8: 685a ldr r2, [r3, #4] + 8006dea: 687b ldr r3, [r7, #4] + 8006dec: 689b ldr r3, [r3, #8] + 8006dee: 431a orrs r2, r3 hdma->Init.PeriphInc | hdma->Init.MemInc | - 8006b9c: 687b ldr r3, [r7, #4] - 8006b9e: 68db ldr r3, [r3, #12] + 8006df0: 687b ldr r3, [r7, #4] + 8006df2: 68db ldr r3, [r3, #12] tmp |= hdma->Init.Channel | hdma->Init.Direction | - 8006ba0: 431a orrs r2, r3 + 8006df4: 431a orrs r2, r3 hdma->Init.PeriphInc | hdma->Init.MemInc | - 8006ba2: 687b ldr r3, [r7, #4] - 8006ba4: 691b ldr r3, [r3, #16] - 8006ba6: 431a orrs r2, r3 + 8006df6: 687b ldr r3, [r7, #4] + 8006df8: 691b ldr r3, [r3, #16] + 8006dfa: 431a orrs r2, r3 hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment | - 8006ba8: 687b ldr r3, [r7, #4] - 8006baa: 695b ldr r3, [r3, #20] + 8006dfc: 687b ldr r3, [r7, #4] + 8006dfe: 695b ldr r3, [r3, #20] hdma->Init.PeriphInc | hdma->Init.MemInc | - 8006bac: 431a orrs r2, r3 + 8006e00: 431a orrs r2, r3 hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment | - 8006bae: 687b ldr r3, [r7, #4] - 8006bb0: 699b ldr r3, [r3, #24] - 8006bb2: 431a orrs r2, r3 + 8006e02: 687b ldr r3, [r7, #4] + 8006e04: 699b ldr r3, [r3, #24] + 8006e06: 431a orrs r2, r3 hdma->Init.Mode | hdma->Init.Priority; - 8006bb4: 687b ldr r3, [r7, #4] - 8006bb6: 69db ldr r3, [r3, #28] + 8006e08: 687b ldr r3, [r7, #4] + 8006e0a: 69db ldr r3, [r3, #28] hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment | - 8006bb8: 431a orrs r2, r3 + 8006e0c: 431a orrs r2, r3 hdma->Init.Mode | hdma->Init.Priority; - 8006bba: 687b ldr r3, [r7, #4] - 8006bbc: 6a1b ldr r3, [r3, #32] - 8006bbe: 4313 orrs r3, r2 + 8006e0e: 687b ldr r3, [r7, #4] + 8006e10: 6a1b ldr r3, [r3, #32] + 8006e12: 4313 orrs r3, r2 tmp |= hdma->Init.Channel | hdma->Init.Direction | - 8006bc0: 697a ldr r2, [r7, #20] - 8006bc2: 4313 orrs r3, r2 - 8006bc4: 617b str r3, [r7, #20] + 8006e14: 697a ldr r2, [r7, #20] + 8006e16: 4313 orrs r3, r2 + 8006e18: 617b str r3, [r7, #20] /* the Memory burst and peripheral burst are not used when the FIFO is disabled */ if(hdma->Init.FIFOMode == DMA_FIFOMODE_ENABLE) - 8006bc6: 687b ldr r3, [r7, #4] - 8006bc8: 6a5b ldr r3, [r3, #36] @ 0x24 - 8006bca: 2b04 cmp r3, #4 - 8006bcc: d107 bne.n 8006bde + 8006e1a: 687b ldr r3, [r7, #4] + 8006e1c: 6a5b ldr r3, [r3, #36] @ 0x24 + 8006e1e: 2b04 cmp r3, #4 + 8006e20: d107 bne.n 8006e32 { /* Get memory burst and peripheral burst */ tmp |= hdma->Init.MemBurst | hdma->Init.PeriphBurst; - 8006bce: 687b ldr r3, [r7, #4] - 8006bd0: 6ada ldr r2, [r3, #44] @ 0x2c - 8006bd2: 687b ldr r3, [r7, #4] - 8006bd4: 6b1b ldr r3, [r3, #48] @ 0x30 - 8006bd6: 4313 orrs r3, r2 - 8006bd8: 697a ldr r2, [r7, #20] - 8006bda: 4313 orrs r3, r2 - 8006bdc: 617b str r3, [r7, #20] + 8006e22: 687b ldr r3, [r7, #4] + 8006e24: 6ada ldr r2, [r3, #44] @ 0x2c + 8006e26: 687b ldr r3, [r7, #4] + 8006e28: 6b1b ldr r3, [r3, #48] @ 0x30 + 8006e2a: 4313 orrs r3, r2 + 8006e2c: 697a ldr r2, [r7, #20] + 8006e2e: 4313 orrs r3, r2 + 8006e30: 617b str r3, [r7, #20] } /* Write to DMA Stream CR register */ hdma->Instance->CR = tmp; - 8006bde: 687b ldr r3, [r7, #4] - 8006be0: 681b ldr r3, [r3, #0] - 8006be2: 697a ldr r2, [r7, #20] - 8006be4: 601a str r2, [r3, #0] + 8006e32: 687b ldr r3, [r7, #4] + 8006e34: 681b ldr r3, [r3, #0] + 8006e36: 697a ldr r2, [r7, #20] + 8006e38: 601a str r2, [r3, #0] /* Get the FCR register value */ tmp = hdma->Instance->FCR; - 8006be6: 687b ldr r3, [r7, #4] - 8006be8: 681b ldr r3, [r3, #0] - 8006bea: 695b ldr r3, [r3, #20] - 8006bec: 617b str r3, [r7, #20] + 8006e3a: 687b ldr r3, [r7, #4] + 8006e3c: 681b ldr r3, [r3, #0] + 8006e3e: 695b ldr r3, [r3, #20] + 8006e40: 617b str r3, [r7, #20] /* Clear Direct mode and FIFO threshold bits */ tmp &= (uint32_t)~(DMA_SxFCR_DMDIS | DMA_SxFCR_FTH); - 8006bee: 697b ldr r3, [r7, #20] - 8006bf0: f023 0307 bic.w r3, r3, #7 - 8006bf4: 617b str r3, [r7, #20] + 8006e42: 697b ldr r3, [r7, #20] + 8006e44: f023 0307 bic.w r3, r3, #7 + 8006e48: 617b str r3, [r7, #20] /* Prepare the DMA Stream FIFO configuration */ tmp |= hdma->Init.FIFOMode; - 8006bf6: 687b ldr r3, [r7, #4] - 8006bf8: 6a5b ldr r3, [r3, #36] @ 0x24 - 8006bfa: 697a ldr r2, [r7, #20] - 8006bfc: 4313 orrs r3, r2 - 8006bfe: 617b str r3, [r7, #20] + 8006e4a: 687b ldr r3, [r7, #4] + 8006e4c: 6a5b ldr r3, [r3, #36] @ 0x24 + 8006e4e: 697a ldr r2, [r7, #20] + 8006e50: 4313 orrs r3, r2 + 8006e52: 617b str r3, [r7, #20] /* The FIFO threshold is not used when the FIFO mode is disabled */ if(hdma->Init.FIFOMode == DMA_FIFOMODE_ENABLE) - 8006c00: 687b ldr r3, [r7, #4] - 8006c02: 6a5b ldr r3, [r3, #36] @ 0x24 - 8006c04: 2b04 cmp r3, #4 - 8006c06: d117 bne.n 8006c38 + 8006e54: 687b ldr r3, [r7, #4] + 8006e56: 6a5b ldr r3, [r3, #36] @ 0x24 + 8006e58: 2b04 cmp r3, #4 + 8006e5a: d117 bne.n 8006e8c { /* Get the FIFO threshold */ tmp |= hdma->Init.FIFOThreshold; - 8006c08: 687b ldr r3, [r7, #4] - 8006c0a: 6a9b ldr r3, [r3, #40] @ 0x28 - 8006c0c: 697a ldr r2, [r7, #20] - 8006c0e: 4313 orrs r3, r2 - 8006c10: 617b str r3, [r7, #20] + 8006e5c: 687b ldr r3, [r7, #4] + 8006e5e: 6a9b ldr r3, [r3, #40] @ 0x28 + 8006e60: 697a ldr r2, [r7, #20] + 8006e62: 4313 orrs r3, r2 + 8006e64: 617b str r3, [r7, #20] /* Check compatibility between FIFO threshold level and size of the memory burst */ /* for INCR4, INCR8, INCR16 bursts */ if (hdma->Init.MemBurst != DMA_MBURST_SINGLE) - 8006c12: 687b ldr r3, [r7, #4] - 8006c14: 6adb ldr r3, [r3, #44] @ 0x2c - 8006c16: 2b00 cmp r3, #0 - 8006c18: d00e beq.n 8006c38 + 8006e66: 687b ldr r3, [r7, #4] + 8006e68: 6adb ldr r3, [r3, #44] @ 0x2c + 8006e6a: 2b00 cmp r3, #0 + 8006e6c: d00e beq.n 8006e8c { if (DMA_CheckFifoParam(hdma) != HAL_OK) - 8006c1a: 6878 ldr r0, [r7, #4] - 8006c1c: f000 fb12 bl 8007244 - 8006c20: 4603 mov r3, r0 - 8006c22: 2b00 cmp r3, #0 - 8006c24: d008 beq.n 8006c38 + 8006e6e: 6878 ldr r0, [r7, #4] + 8006e70: f000 fb12 bl 8007498 + 8006e74: 4603 mov r3, r0 + 8006e76: 2b00 cmp r3, #0 + 8006e78: d008 beq.n 8006e8c { /* Update error code */ hdma->ErrorCode = HAL_DMA_ERROR_PARAM; - 8006c26: 687b ldr r3, [r7, #4] - 8006c28: 2240 movs r2, #64 @ 0x40 - 8006c2a: 655a str r2, [r3, #84] @ 0x54 + 8006e7a: 687b ldr r3, [r7, #4] + 8006e7c: 2240 movs r2, #64 @ 0x40 + 8006e7e: 655a str r2, [r3, #84] @ 0x54 /* Change the DMA state */ hdma->State = HAL_DMA_STATE_READY; - 8006c2c: 687b ldr r3, [r7, #4] - 8006c2e: 2201 movs r2, #1 - 8006c30: f883 2035 strb.w r2, [r3, #53] @ 0x35 + 8006e80: 687b ldr r3, [r7, #4] + 8006e82: 2201 movs r2, #1 + 8006e84: f883 2035 strb.w r2, [r3, #53] @ 0x35 return HAL_ERROR; - 8006c34: 2301 movs r3, #1 - 8006c36: e016 b.n 8006c66 + 8006e88: 2301 movs r3, #1 + 8006e8a: e016 b.n 8006eba } } } /* Write to DMA Stream FCR */ hdma->Instance->FCR = tmp; - 8006c38: 687b ldr r3, [r7, #4] - 8006c3a: 681b ldr r3, [r3, #0] - 8006c3c: 697a ldr r2, [r7, #20] - 8006c3e: 615a str r2, [r3, #20] + 8006e8c: 687b ldr r3, [r7, #4] + 8006e8e: 681b ldr r3, [r3, #0] + 8006e90: 697a ldr r2, [r7, #20] + 8006e92: 615a str r2, [r3, #20] /* Initialize StreamBaseAddress and StreamIndex parameters to be used to calculate DMA steam Base Address needed by HAL_DMA_IRQHandler() and HAL_DMA_PollForTransfer() */ regs = (DMA_Base_Registers *)DMA_CalcBaseAndBitshift(hdma); - 8006c40: 6878 ldr r0, [r7, #4] - 8006c42: f000 fac9 bl 80071d8 - 8006c46: 4603 mov r3, r0 - 8006c48: 60fb str r3, [r7, #12] + 8006e94: 6878 ldr r0, [r7, #4] + 8006e96: f000 fac9 bl 800742c + 8006e9a: 4603 mov r3, r0 + 8006e9c: 60fb str r3, [r7, #12] /* Clear all interrupt flags */ regs->IFCR = 0x3FU << hdma->StreamIndex; - 8006c4a: 687b ldr r3, [r7, #4] - 8006c4c: 6ddb ldr r3, [r3, #92] @ 0x5c - 8006c4e: 223f movs r2, #63 @ 0x3f - 8006c50: 409a lsls r2, r3 - 8006c52: 68fb ldr r3, [r7, #12] - 8006c54: 609a str r2, [r3, #8] + 8006e9e: 687b ldr r3, [r7, #4] + 8006ea0: 6ddb ldr r3, [r3, #92] @ 0x5c + 8006ea2: 223f movs r2, #63 @ 0x3f + 8006ea4: 409a lsls r2, r3 + 8006ea6: 68fb ldr r3, [r7, #12] + 8006ea8: 609a str r2, [r3, #8] /* Initialize the error code */ hdma->ErrorCode = HAL_DMA_ERROR_NONE; - 8006c56: 687b ldr r3, [r7, #4] - 8006c58: 2200 movs r2, #0 - 8006c5a: 655a str r2, [r3, #84] @ 0x54 + 8006eaa: 687b ldr r3, [r7, #4] + 8006eac: 2200 movs r2, #0 + 8006eae: 655a str r2, [r3, #84] @ 0x54 /* Initialize the DMA state */ hdma->State = HAL_DMA_STATE_READY; - 8006c5c: 687b ldr r3, [r7, #4] - 8006c5e: 2201 movs r2, #1 - 8006c60: f883 2035 strb.w r2, [r3, #53] @ 0x35 + 8006eb0: 687b ldr r3, [r7, #4] + 8006eb2: 2201 movs r2, #1 + 8006eb4: f883 2035 strb.w r2, [r3, #53] @ 0x35 return HAL_OK; - 8006c64: 2300 movs r3, #0 + 8006eb8: 2300 movs r3, #0 } - 8006c66: 4618 mov r0, r3 - 8006c68: 3718 adds r7, #24 - 8006c6a: 46bd mov sp, r7 - 8006c6c: bd80 pop {r7, pc} - 8006c6e: bf00 nop - 8006c70: 0800e7b0 .word 0x0800e7b0 - 8006c74: e010803f .word 0xe010803f + 8006eba: 4618 mov r0, r3 + 8006ebc: 3718 adds r7, #24 + 8006ebe: 46bd mov sp, r7 + 8006ec0: bd80 pop {r7, pc} + 8006ec2: bf00 nop + 8006ec4: 0800ed20 .word 0x0800ed20 + 8006ec8: e010803f .word 0xe010803f -08006c78 : +08006ecc : * @param DstAddress The destination memory Buffer address * @param DataLength The length of data to be transferred from source to destination * @retval HAL status */ HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength) { - 8006c78: b580 push {r7, lr} - 8006c7a: b086 sub sp, #24 - 8006c7c: af00 add r7, sp, #0 - 8006c7e: 60f8 str r0, [r7, #12] - 8006c80: 60b9 str r1, [r7, #8] - 8006c82: 607a str r2, [r7, #4] - 8006c84: 603b str r3, [r7, #0] + 8006ecc: b580 push {r7, lr} + 8006ece: b086 sub sp, #24 + 8006ed0: af00 add r7, sp, #0 + 8006ed2: 60f8 str r0, [r7, #12] + 8006ed4: 60b9 str r1, [r7, #8] + 8006ed6: 607a str r2, [r7, #4] + 8006ed8: 603b str r3, [r7, #0] HAL_StatusTypeDef status = HAL_OK; - 8006c86: 2300 movs r3, #0 - 8006c88: 75fb strb r3, [r7, #23] + 8006eda: 2300 movs r3, #0 + 8006edc: 75fb strb r3, [r7, #23] /* calculate DMA base and stream number */ DMA_Base_Registers *regs = (DMA_Base_Registers *)hdma->StreamBaseAddress; - 8006c8a: 68fb ldr r3, [r7, #12] - 8006c8c: 6d9b ldr r3, [r3, #88] @ 0x58 - 8006c8e: 613b str r3, [r7, #16] + 8006ede: 68fb ldr r3, [r7, #12] + 8006ee0: 6d9b ldr r3, [r3, #88] @ 0x58 + 8006ee2: 613b str r3, [r7, #16] /* Check the parameters */ assert_param(IS_DMA_BUFFER_SIZE(DataLength)); - 8006c90: 683b ldr r3, [r7, #0] - 8006c92: 2b00 cmp r3, #0 - 8006c94: d003 beq.n 8006c9e - 8006c96: 683b ldr r3, [r7, #0] - 8006c98: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8006c9c: d304 bcc.n 8006ca8 - 8006c9e: f240 11cb movw r1, #459 @ 0x1cb - 8006ca2: 4827 ldr r0, [pc, #156] @ (8006d40 ) - 8006ca4: f7fc fa66 bl 8003174 + 8006ee4: 683b ldr r3, [r7, #0] + 8006ee6: 2b00 cmp r3, #0 + 8006ee8: d003 beq.n 8006ef2 + 8006eea: 683b ldr r3, [r7, #0] + 8006eec: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 8006ef0: d304 bcc.n 8006efc + 8006ef2: f240 11cb movw r1, #459 @ 0x1cb + 8006ef6: 4827 ldr r0, [pc, #156] @ (8006f94 ) + 8006ef8: f7fc f998 bl 800322c /* Process locked */ __HAL_LOCK(hdma); - 8006ca8: 68fb ldr r3, [r7, #12] - 8006caa: f893 3034 ldrb.w r3, [r3, #52] @ 0x34 - 8006cae: 2b01 cmp r3, #1 - 8006cb0: d101 bne.n 8006cb6 - 8006cb2: 2302 movs r3, #2 - 8006cb4: e040 b.n 8006d38 - 8006cb6: 68fb ldr r3, [r7, #12] - 8006cb8: 2201 movs r2, #1 - 8006cba: f883 2034 strb.w r2, [r3, #52] @ 0x34 + 8006efc: 68fb ldr r3, [r7, #12] + 8006efe: f893 3034 ldrb.w r3, [r3, #52] @ 0x34 + 8006f02: 2b01 cmp r3, #1 + 8006f04: d101 bne.n 8006f0a + 8006f06: 2302 movs r3, #2 + 8006f08: e040 b.n 8006f8c + 8006f0a: 68fb ldr r3, [r7, #12] + 8006f0c: 2201 movs r2, #1 + 8006f0e: f883 2034 strb.w r2, [r3, #52] @ 0x34 if(HAL_DMA_STATE_READY == hdma->State) - 8006cbe: 68fb ldr r3, [r7, #12] - 8006cc0: f893 3035 ldrb.w r3, [r3, #53] @ 0x35 - 8006cc4: b2db uxtb r3, r3 - 8006cc6: 2b01 cmp r3, #1 - 8006cc8: d12f bne.n 8006d2a + 8006f12: 68fb ldr r3, [r7, #12] + 8006f14: f893 3035 ldrb.w r3, [r3, #53] @ 0x35 + 8006f18: b2db uxtb r3, r3 + 8006f1a: 2b01 cmp r3, #1 + 8006f1c: d12f bne.n 8006f7e { /* Change DMA peripheral state */ hdma->State = HAL_DMA_STATE_BUSY; - 8006cca: 68fb ldr r3, [r7, #12] - 8006ccc: 2202 movs r2, #2 - 8006cce: f883 2035 strb.w r2, [r3, #53] @ 0x35 + 8006f1e: 68fb ldr r3, [r7, #12] + 8006f20: 2202 movs r2, #2 + 8006f22: f883 2035 strb.w r2, [r3, #53] @ 0x35 /* Initialize the error code */ hdma->ErrorCode = HAL_DMA_ERROR_NONE; - 8006cd2: 68fb ldr r3, [r7, #12] - 8006cd4: 2200 movs r2, #0 - 8006cd6: 655a str r2, [r3, #84] @ 0x54 + 8006f26: 68fb ldr r3, [r7, #12] + 8006f28: 2200 movs r2, #0 + 8006f2a: 655a str r2, [r3, #84] @ 0x54 /* Configure the source, destination address and the data length */ DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); - 8006cd8: 683b ldr r3, [r7, #0] - 8006cda: 687a ldr r2, [r7, #4] - 8006cdc: 68b9 ldr r1, [r7, #8] - 8006cde: 68f8 ldr r0, [r7, #12] - 8006ce0: f000 fa4c bl 800717c + 8006f2c: 683b ldr r3, [r7, #0] + 8006f2e: 687a ldr r2, [r7, #4] + 8006f30: 68b9 ldr r1, [r7, #8] + 8006f32: 68f8 ldr r0, [r7, #12] + 8006f34: f000 fa4c bl 80073d0 /* Clear all interrupt flags at correct offset within the register */ regs->IFCR = 0x3FU << hdma->StreamIndex; - 8006ce4: 68fb ldr r3, [r7, #12] - 8006ce6: 6ddb ldr r3, [r3, #92] @ 0x5c - 8006ce8: 223f movs r2, #63 @ 0x3f - 8006cea: 409a lsls r2, r3 - 8006cec: 693b ldr r3, [r7, #16] - 8006cee: 609a str r2, [r3, #8] + 8006f38: 68fb ldr r3, [r7, #12] + 8006f3a: 6ddb ldr r3, [r3, #92] @ 0x5c + 8006f3c: 223f movs r2, #63 @ 0x3f + 8006f3e: 409a lsls r2, r3 + 8006f40: 693b ldr r3, [r7, #16] + 8006f42: 609a str r2, [r3, #8] /* Enable Common interrupts*/ hdma->Instance->CR |= DMA_IT_TC | DMA_IT_TE | DMA_IT_DME; - 8006cf0: 68fb ldr r3, [r7, #12] - 8006cf2: 681b ldr r3, [r3, #0] - 8006cf4: 681a ldr r2, [r3, #0] - 8006cf6: 68fb ldr r3, [r7, #12] - 8006cf8: 681b ldr r3, [r3, #0] - 8006cfa: f042 0216 orr.w r2, r2, #22 - 8006cfe: 601a str r2, [r3, #0] + 8006f44: 68fb ldr r3, [r7, #12] + 8006f46: 681b ldr r3, [r3, #0] + 8006f48: 681a ldr r2, [r3, #0] + 8006f4a: 68fb ldr r3, [r7, #12] + 8006f4c: 681b ldr r3, [r3, #0] + 8006f4e: f042 0216 orr.w r2, r2, #22 + 8006f52: 601a str r2, [r3, #0] if(hdma->XferHalfCpltCallback != NULL) - 8006d00: 68fb ldr r3, [r7, #12] - 8006d02: 6c1b ldr r3, [r3, #64] @ 0x40 - 8006d04: 2b00 cmp r3, #0 - 8006d06: d007 beq.n 8006d18 + 8006f54: 68fb ldr r3, [r7, #12] + 8006f56: 6c1b ldr r3, [r3, #64] @ 0x40 + 8006f58: 2b00 cmp r3, #0 + 8006f5a: d007 beq.n 8006f6c { hdma->Instance->CR |= DMA_IT_HT; - 8006d08: 68fb ldr r3, [r7, #12] - 8006d0a: 681b ldr r3, [r3, #0] - 8006d0c: 681a ldr r2, [r3, #0] - 8006d0e: 68fb ldr r3, [r7, #12] - 8006d10: 681b ldr r3, [r3, #0] - 8006d12: f042 0208 orr.w r2, r2, #8 - 8006d16: 601a str r2, [r3, #0] + 8006f5c: 68fb ldr r3, [r7, #12] + 8006f5e: 681b ldr r3, [r3, #0] + 8006f60: 681a ldr r2, [r3, #0] + 8006f62: 68fb ldr r3, [r7, #12] + 8006f64: 681b ldr r3, [r3, #0] + 8006f66: f042 0208 orr.w r2, r2, #8 + 8006f6a: 601a str r2, [r3, #0] } /* Enable the Peripheral */ __HAL_DMA_ENABLE(hdma); - 8006d18: 68fb ldr r3, [r7, #12] - 8006d1a: 681b ldr r3, [r3, #0] - 8006d1c: 681a ldr r2, [r3, #0] - 8006d1e: 68fb ldr r3, [r7, #12] - 8006d20: 681b ldr r3, [r3, #0] - 8006d22: f042 0201 orr.w r2, r2, #1 - 8006d26: 601a str r2, [r3, #0] - 8006d28: e005 b.n 8006d36 + 8006f6c: 68fb ldr r3, [r7, #12] + 8006f6e: 681b ldr r3, [r3, #0] + 8006f70: 681a ldr r2, [r3, #0] + 8006f72: 68fb ldr r3, [r7, #12] + 8006f74: 681b ldr r3, [r3, #0] + 8006f76: f042 0201 orr.w r2, r2, #1 + 8006f7a: 601a str r2, [r3, #0] + 8006f7c: e005 b.n 8006f8a } else { /* Process unlocked */ __HAL_UNLOCK(hdma); - 8006d2a: 68fb ldr r3, [r7, #12] - 8006d2c: 2200 movs r2, #0 - 8006d2e: f883 2034 strb.w r2, [r3, #52] @ 0x34 + 8006f7e: 68fb ldr r3, [r7, #12] + 8006f80: 2200 movs r2, #0 + 8006f82: f883 2034 strb.w r2, [r3, #52] @ 0x34 /* Return error status */ status = HAL_BUSY; - 8006d32: 2302 movs r3, #2 - 8006d34: 75fb strb r3, [r7, #23] + 8006f86: 2302 movs r3, #2 + 8006f88: 75fb strb r3, [r7, #23] } return status; - 8006d36: 7dfb ldrb r3, [r7, #23] + 8006f8a: 7dfb ldrb r3, [r7, #23] } - 8006d38: 4618 mov r0, r3 - 8006d3a: 3718 adds r7, #24 - 8006d3c: 46bd mov sp, r7 - 8006d3e: bd80 pop {r7, pc} - 8006d40: 0800e7b0 .word 0x0800e7b0 + 8006f8c: 4618 mov r0, r3 + 8006f8e: 3718 adds r7, #24 + 8006f90: 46bd mov sp, r7 + 8006f92: bd80 pop {r7, pc} + 8006f94: 0800ed20 .word 0x0800ed20 -08006d44 : +08006f98 : * and the Stream will be effectively disabled only after the transfer of * this single data is finished. * @retval HAL status */ HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma) { - 8006d44: b580 push {r7, lr} - 8006d46: b084 sub sp, #16 - 8006d48: af00 add r7, sp, #0 - 8006d4a: 6078 str r0, [r7, #4] + 8006f98: b580 push {r7, lr} + 8006f9a: b084 sub sp, #16 + 8006f9c: af00 add r7, sp, #0 + 8006f9e: 6078 str r0, [r7, #4] /* calculate DMA base and stream number */ DMA_Base_Registers *regs = (DMA_Base_Registers *)hdma->StreamBaseAddress; - 8006d4c: 687b ldr r3, [r7, #4] - 8006d4e: 6d9b ldr r3, [r3, #88] @ 0x58 - 8006d50: 60fb str r3, [r7, #12] + 8006fa0: 687b ldr r3, [r7, #4] + 8006fa2: 6d9b ldr r3, [r3, #88] @ 0x58 + 8006fa4: 60fb str r3, [r7, #12] uint32_t tickstart = HAL_GetTick(); - 8006d52: f7fe fe7d bl 8005a50 - 8006d56: 60b8 str r0, [r7, #8] + 8006fa6: f7fe fe7d bl 8005ca4 + 8006faa: 60b8 str r0, [r7, #8] if(hdma->State != HAL_DMA_STATE_BUSY) - 8006d58: 687b ldr r3, [r7, #4] - 8006d5a: f893 3035 ldrb.w r3, [r3, #53] @ 0x35 - 8006d5e: b2db uxtb r3, r3 - 8006d60: 2b02 cmp r3, #2 - 8006d62: d008 beq.n 8006d76 + 8006fac: 687b ldr r3, [r7, #4] + 8006fae: f893 3035 ldrb.w r3, [r3, #53] @ 0x35 + 8006fb2: b2db uxtb r3, r3 + 8006fb4: 2b02 cmp r3, #2 + 8006fb6: d008 beq.n 8006fca { hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; - 8006d64: 687b ldr r3, [r7, #4] - 8006d66: 2280 movs r2, #128 @ 0x80 - 8006d68: 655a str r2, [r3, #84] @ 0x54 + 8006fb8: 687b ldr r3, [r7, #4] + 8006fba: 2280 movs r2, #128 @ 0x80 + 8006fbc: 655a str r2, [r3, #84] @ 0x54 /* Process Unlocked */ __HAL_UNLOCK(hdma); - 8006d6a: 687b ldr r3, [r7, #4] - 8006d6c: 2200 movs r2, #0 - 8006d6e: f883 2034 strb.w r2, [r3, #52] @ 0x34 + 8006fbe: 687b ldr r3, [r7, #4] + 8006fc0: 2200 movs r2, #0 + 8006fc2: f883 2034 strb.w r2, [r3, #52] @ 0x34 return HAL_ERROR; - 8006d72: 2301 movs r3, #1 - 8006d74: e052 b.n 8006e1c + 8006fc6: 2301 movs r3, #1 + 8006fc8: e052 b.n 8007070 } else { /* Disable all the transfer interrupts */ hdma->Instance->CR &= ~(DMA_IT_TC | DMA_IT_TE | DMA_IT_DME); - 8006d76: 687b ldr r3, [r7, #4] - 8006d78: 681b ldr r3, [r3, #0] - 8006d7a: 681a ldr r2, [r3, #0] - 8006d7c: 687b ldr r3, [r7, #4] - 8006d7e: 681b ldr r3, [r3, #0] - 8006d80: f022 0216 bic.w r2, r2, #22 - 8006d84: 601a str r2, [r3, #0] + 8006fca: 687b ldr r3, [r7, #4] + 8006fcc: 681b ldr r3, [r3, #0] + 8006fce: 681a ldr r2, [r3, #0] + 8006fd0: 687b ldr r3, [r7, #4] + 8006fd2: 681b ldr r3, [r3, #0] + 8006fd4: f022 0216 bic.w r2, r2, #22 + 8006fd8: 601a str r2, [r3, #0] hdma->Instance->FCR &= ~(DMA_IT_FE); - 8006d86: 687b ldr r3, [r7, #4] - 8006d88: 681b ldr r3, [r3, #0] - 8006d8a: 695a ldr r2, [r3, #20] - 8006d8c: 687b ldr r3, [r7, #4] - 8006d8e: 681b ldr r3, [r3, #0] - 8006d90: f022 0280 bic.w r2, r2, #128 @ 0x80 - 8006d94: 615a str r2, [r3, #20] + 8006fda: 687b ldr r3, [r7, #4] + 8006fdc: 681b ldr r3, [r3, #0] + 8006fde: 695a ldr r2, [r3, #20] + 8006fe0: 687b ldr r3, [r7, #4] + 8006fe2: 681b ldr r3, [r3, #0] + 8006fe4: f022 0280 bic.w r2, r2, #128 @ 0x80 + 8006fe8: 615a str r2, [r3, #20] if((hdma->XferHalfCpltCallback != NULL) || (hdma->XferM1HalfCpltCallback != NULL)) - 8006d96: 687b ldr r3, [r7, #4] - 8006d98: 6c1b ldr r3, [r3, #64] @ 0x40 - 8006d9a: 2b00 cmp r3, #0 - 8006d9c: d103 bne.n 8006da6 - 8006d9e: 687b ldr r3, [r7, #4] - 8006da0: 6c9b ldr r3, [r3, #72] @ 0x48 - 8006da2: 2b00 cmp r3, #0 - 8006da4: d007 beq.n 8006db6 + 8006fea: 687b ldr r3, [r7, #4] + 8006fec: 6c1b ldr r3, [r3, #64] @ 0x40 + 8006fee: 2b00 cmp r3, #0 + 8006ff0: d103 bne.n 8006ffa + 8006ff2: 687b ldr r3, [r7, #4] + 8006ff4: 6c9b ldr r3, [r3, #72] @ 0x48 + 8006ff6: 2b00 cmp r3, #0 + 8006ff8: d007 beq.n 800700a { hdma->Instance->CR &= ~(DMA_IT_HT); - 8006da6: 687b ldr r3, [r7, #4] - 8006da8: 681b ldr r3, [r3, #0] - 8006daa: 681a ldr r2, [r3, #0] - 8006dac: 687b ldr r3, [r7, #4] - 8006dae: 681b ldr r3, [r3, #0] - 8006db0: f022 0208 bic.w r2, r2, #8 - 8006db4: 601a str r2, [r3, #0] + 8006ffa: 687b ldr r3, [r7, #4] + 8006ffc: 681b ldr r3, [r3, #0] + 8006ffe: 681a ldr r2, [r3, #0] + 8007000: 687b ldr r3, [r7, #4] + 8007002: 681b ldr r3, [r3, #0] + 8007004: f022 0208 bic.w r2, r2, #8 + 8007008: 601a str r2, [r3, #0] } /* Disable the stream */ __HAL_DMA_DISABLE(hdma); - 8006db6: 687b ldr r3, [r7, #4] - 8006db8: 681b ldr r3, [r3, #0] - 8006dba: 681a ldr r2, [r3, #0] - 8006dbc: 687b ldr r3, [r7, #4] - 8006dbe: 681b ldr r3, [r3, #0] - 8006dc0: f022 0201 bic.w r2, r2, #1 - 8006dc4: 601a str r2, [r3, #0] + 800700a: 687b ldr r3, [r7, #4] + 800700c: 681b ldr r3, [r3, #0] + 800700e: 681a ldr r2, [r3, #0] + 8007010: 687b ldr r3, [r7, #4] + 8007012: 681b ldr r3, [r3, #0] + 8007014: f022 0201 bic.w r2, r2, #1 + 8007018: 601a str r2, [r3, #0] /* Check if the DMA Stream is effectively disabled */ while((hdma->Instance->CR & DMA_SxCR_EN) != RESET) - 8006dc6: e013 b.n 8006df0 + 800701a: e013 b.n 8007044 { /* Check for the Timeout */ if((HAL_GetTick() - tickstart ) > HAL_TIMEOUT_DMA_ABORT) - 8006dc8: f7fe fe42 bl 8005a50 - 8006dcc: 4602 mov r2, r0 - 8006dce: 68bb ldr r3, [r7, #8] - 8006dd0: 1ad3 subs r3, r2, r3 - 8006dd2: 2b05 cmp r3, #5 - 8006dd4: d90c bls.n 8006df0 + 800701c: f7fe fe42 bl 8005ca4 + 8007020: 4602 mov r2, r0 + 8007022: 68bb ldr r3, [r7, #8] + 8007024: 1ad3 subs r3, r2, r3 + 8007026: 2b05 cmp r3, #5 + 8007028: d90c bls.n 8007044 { /* Update error code */ hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT; - 8006dd6: 687b ldr r3, [r7, #4] - 8006dd8: 2220 movs r2, #32 - 8006dda: 655a str r2, [r3, #84] @ 0x54 + 800702a: 687b ldr r3, [r7, #4] + 800702c: 2220 movs r2, #32 + 800702e: 655a str r2, [r3, #84] @ 0x54 /* Change the DMA state */ hdma->State = HAL_DMA_STATE_TIMEOUT; - 8006ddc: 687b ldr r3, [r7, #4] - 8006dde: 2203 movs r2, #3 - 8006de0: f883 2035 strb.w r2, [r3, #53] @ 0x35 + 8007030: 687b ldr r3, [r7, #4] + 8007032: 2203 movs r2, #3 + 8007034: f883 2035 strb.w r2, [r3, #53] @ 0x35 /* Process Unlocked */ __HAL_UNLOCK(hdma); - 8006de4: 687b ldr r3, [r7, #4] - 8006de6: 2200 movs r2, #0 - 8006de8: f883 2034 strb.w r2, [r3, #52] @ 0x34 + 8007038: 687b ldr r3, [r7, #4] + 800703a: 2200 movs r2, #0 + 800703c: f883 2034 strb.w r2, [r3, #52] @ 0x34 return HAL_TIMEOUT; - 8006dec: 2303 movs r3, #3 - 8006dee: e015 b.n 8006e1c + 8007040: 2303 movs r3, #3 + 8007042: e015 b.n 8007070 while((hdma->Instance->CR & DMA_SxCR_EN) != RESET) - 8006df0: 687b ldr r3, [r7, #4] - 8006df2: 681b ldr r3, [r3, #0] - 8006df4: 681b ldr r3, [r3, #0] - 8006df6: f003 0301 and.w r3, r3, #1 - 8006dfa: 2b00 cmp r3, #0 - 8006dfc: d1e4 bne.n 8006dc8 + 8007044: 687b ldr r3, [r7, #4] + 8007046: 681b ldr r3, [r3, #0] + 8007048: 681b ldr r3, [r3, #0] + 800704a: f003 0301 and.w r3, r3, #1 + 800704e: 2b00 cmp r3, #0 + 8007050: d1e4 bne.n 800701c } } /* Clear all interrupt flags at correct offset within the register */ regs->IFCR = 0x3FU << hdma->StreamIndex; - 8006dfe: 687b ldr r3, [r7, #4] - 8006e00: 6ddb ldr r3, [r3, #92] @ 0x5c - 8006e02: 223f movs r2, #63 @ 0x3f - 8006e04: 409a lsls r2, r3 - 8006e06: 68fb ldr r3, [r7, #12] - 8006e08: 609a str r2, [r3, #8] + 8007052: 687b ldr r3, [r7, #4] + 8007054: 6ddb ldr r3, [r3, #92] @ 0x5c + 8007056: 223f movs r2, #63 @ 0x3f + 8007058: 409a lsls r2, r3 + 800705a: 68fb ldr r3, [r7, #12] + 800705c: 609a str r2, [r3, #8] /* Change the DMA state*/ hdma->State = HAL_DMA_STATE_READY; - 8006e0a: 687b ldr r3, [r7, #4] - 8006e0c: 2201 movs r2, #1 - 8006e0e: f883 2035 strb.w r2, [r3, #53] @ 0x35 + 800705e: 687b ldr r3, [r7, #4] + 8007060: 2201 movs r2, #1 + 8007062: f883 2035 strb.w r2, [r3, #53] @ 0x35 /* Process Unlocked */ __HAL_UNLOCK(hdma); - 8006e12: 687b ldr r3, [r7, #4] - 8006e14: 2200 movs r2, #0 - 8006e16: f883 2034 strb.w r2, [r3, #52] @ 0x34 + 8007066: 687b ldr r3, [r7, #4] + 8007068: 2200 movs r2, #0 + 800706a: f883 2034 strb.w r2, [r3, #52] @ 0x34 } return HAL_OK; - 8006e1a: 2300 movs r3, #0 + 800706e: 2300 movs r3, #0 } - 8006e1c: 4618 mov r0, r3 - 8006e1e: 3710 adds r7, #16 - 8006e20: 46bd mov sp, r7 - 8006e22: bd80 pop {r7, pc} + 8007070: 4618 mov r0, r3 + 8007072: 3710 adds r7, #16 + 8007074: 46bd mov sp, r7 + 8007076: bd80 pop {r7, pc} -08006e24 : +08007078 : * @param hdma pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA Stream. * @retval HAL status */ HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma) { - 8006e24: b480 push {r7} - 8006e26: b083 sub sp, #12 - 8006e28: af00 add r7, sp, #0 - 8006e2a: 6078 str r0, [r7, #4] + 8007078: b480 push {r7} + 800707a: b083 sub sp, #12 + 800707c: af00 add r7, sp, #0 + 800707e: 6078 str r0, [r7, #4] if(hdma->State != HAL_DMA_STATE_BUSY) - 8006e2c: 687b ldr r3, [r7, #4] - 8006e2e: f893 3035 ldrb.w r3, [r3, #53] @ 0x35 - 8006e32: b2db uxtb r3, r3 - 8006e34: 2b02 cmp r3, #2 - 8006e36: d004 beq.n 8006e42 + 8007080: 687b ldr r3, [r7, #4] + 8007082: f893 3035 ldrb.w r3, [r3, #53] @ 0x35 + 8007086: b2db uxtb r3, r3 + 8007088: 2b02 cmp r3, #2 + 800708a: d004 beq.n 8007096 { hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; - 8006e38: 687b ldr r3, [r7, #4] - 8006e3a: 2280 movs r2, #128 @ 0x80 - 8006e3c: 655a str r2, [r3, #84] @ 0x54 + 800708c: 687b ldr r3, [r7, #4] + 800708e: 2280 movs r2, #128 @ 0x80 + 8007090: 655a str r2, [r3, #84] @ 0x54 return HAL_ERROR; - 8006e3e: 2301 movs r3, #1 - 8006e40: e00c b.n 8006e5c + 8007092: 2301 movs r3, #1 + 8007094: e00c b.n 80070b0 } else { /* Set Abort State */ hdma->State = HAL_DMA_STATE_ABORT; - 8006e42: 687b ldr r3, [r7, #4] - 8006e44: 2205 movs r2, #5 - 8006e46: f883 2035 strb.w r2, [r3, #53] @ 0x35 + 8007096: 687b ldr r3, [r7, #4] + 8007098: 2205 movs r2, #5 + 800709a: f883 2035 strb.w r2, [r3, #53] @ 0x35 /* Disable the stream */ __HAL_DMA_DISABLE(hdma); - 8006e4a: 687b ldr r3, [r7, #4] - 8006e4c: 681b ldr r3, [r3, #0] - 8006e4e: 681a ldr r2, [r3, #0] - 8006e50: 687b ldr r3, [r7, #4] - 8006e52: 681b ldr r3, [r3, #0] - 8006e54: f022 0201 bic.w r2, r2, #1 - 8006e58: 601a str r2, [r3, #0] + 800709e: 687b ldr r3, [r7, #4] + 80070a0: 681b ldr r3, [r3, #0] + 80070a2: 681a ldr r2, [r3, #0] + 80070a4: 687b ldr r3, [r7, #4] + 80070a6: 681b ldr r3, [r3, #0] + 80070a8: f022 0201 bic.w r2, r2, #1 + 80070ac: 601a str r2, [r3, #0] } return HAL_OK; - 8006e5a: 2300 movs r3, #0 + 80070ae: 2300 movs r3, #0 } - 8006e5c: 4618 mov r0, r3 - 8006e5e: 370c adds r7, #12 - 8006e60: 46bd mov sp, r7 - 8006e62: f85d 7b04 ldr.w r7, [sp], #4 - 8006e66: 4770 bx lr + 80070b0: 4618 mov r0, r3 + 80070b2: 370c adds r7, #12 + 80070b4: 46bd mov sp, r7 + 80070b6: f85d 7b04 ldr.w r7, [sp], #4 + 80070ba: 4770 bx lr -08006e68 : +080070bc : * @param hdma pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA Stream. * @retval None */ void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma) { - 8006e68: b580 push {r7, lr} - 8006e6a: b086 sub sp, #24 - 8006e6c: af00 add r7, sp, #0 - 8006e6e: 6078 str r0, [r7, #4] + 80070bc: b580 push {r7, lr} + 80070be: b086 sub sp, #24 + 80070c0: af00 add r7, sp, #0 + 80070c2: 6078 str r0, [r7, #4] uint32_t tmpisr; __IO uint32_t count = 0U; - 8006e70: 2300 movs r3, #0 - 8006e72: 60bb str r3, [r7, #8] + 80070c4: 2300 movs r3, #0 + 80070c6: 60bb str r3, [r7, #8] uint32_t timeout = SystemCoreClock / 9600U; - 8006e74: 4b8e ldr r3, [pc, #568] @ (80070b0 ) - 8006e76: 681b ldr r3, [r3, #0] - 8006e78: 4a8e ldr r2, [pc, #568] @ (80070b4 ) - 8006e7a: fba2 2303 umull r2, r3, r2, r3 - 8006e7e: 0a9b lsrs r3, r3, #10 - 8006e80: 617b str r3, [r7, #20] + 80070c8: 4b8e ldr r3, [pc, #568] @ (8007304 ) + 80070ca: 681b ldr r3, [r3, #0] + 80070cc: 4a8e ldr r2, [pc, #568] @ (8007308 ) + 80070ce: fba2 2303 umull r2, r3, r2, r3 + 80070d2: 0a9b lsrs r3, r3, #10 + 80070d4: 617b str r3, [r7, #20] /* calculate DMA base and stream number */ DMA_Base_Registers *regs = (DMA_Base_Registers *)hdma->StreamBaseAddress; - 8006e82: 687b ldr r3, [r7, #4] - 8006e84: 6d9b ldr r3, [r3, #88] @ 0x58 - 8006e86: 613b str r3, [r7, #16] + 80070d6: 687b ldr r3, [r7, #4] + 80070d8: 6d9b ldr r3, [r3, #88] @ 0x58 + 80070da: 613b str r3, [r7, #16] tmpisr = regs->ISR; - 8006e88: 693b ldr r3, [r7, #16] - 8006e8a: 681b ldr r3, [r3, #0] - 8006e8c: 60fb str r3, [r7, #12] + 80070dc: 693b ldr r3, [r7, #16] + 80070de: 681b ldr r3, [r3, #0] + 80070e0: 60fb str r3, [r7, #12] /* Transfer Error Interrupt management ***************************************/ if ((tmpisr & (DMA_FLAG_TEIF0_4 << hdma->StreamIndex)) != RESET) - 8006e8e: 687b ldr r3, [r7, #4] - 8006e90: 6ddb ldr r3, [r3, #92] @ 0x5c - 8006e92: 2208 movs r2, #8 - 8006e94: 409a lsls r2, r3 - 8006e96: 68fb ldr r3, [r7, #12] - 8006e98: 4013 ands r3, r2 - 8006e9a: 2b00 cmp r3, #0 - 8006e9c: d01a beq.n 8006ed4 + 80070e2: 687b ldr r3, [r7, #4] + 80070e4: 6ddb ldr r3, [r3, #92] @ 0x5c + 80070e6: 2208 movs r2, #8 + 80070e8: 409a lsls r2, r3 + 80070ea: 68fb ldr r3, [r7, #12] + 80070ec: 4013 ands r3, r2 + 80070ee: 2b00 cmp r3, #0 + 80070f0: d01a beq.n 8007128 { if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_TE) != RESET) - 8006e9e: 687b ldr r3, [r7, #4] - 8006ea0: 681b ldr r3, [r3, #0] - 8006ea2: 681b ldr r3, [r3, #0] - 8006ea4: f003 0304 and.w r3, r3, #4 - 8006ea8: 2b00 cmp r3, #0 - 8006eaa: d013 beq.n 8006ed4 + 80070f2: 687b ldr r3, [r7, #4] + 80070f4: 681b ldr r3, [r3, #0] + 80070f6: 681b ldr r3, [r3, #0] + 80070f8: f003 0304 and.w r3, r3, #4 + 80070fc: 2b00 cmp r3, #0 + 80070fe: d013 beq.n 8007128 { /* Disable the transfer error interrupt */ hdma->Instance->CR &= ~(DMA_IT_TE); - 8006eac: 687b ldr r3, [r7, #4] - 8006eae: 681b ldr r3, [r3, #0] - 8006eb0: 681a ldr r2, [r3, #0] - 8006eb2: 687b ldr r3, [r7, #4] - 8006eb4: 681b ldr r3, [r3, #0] - 8006eb6: f022 0204 bic.w r2, r2, #4 - 8006eba: 601a str r2, [r3, #0] + 8007100: 687b ldr r3, [r7, #4] + 8007102: 681b ldr r3, [r3, #0] + 8007104: 681a ldr r2, [r3, #0] + 8007106: 687b ldr r3, [r7, #4] + 8007108: 681b ldr r3, [r3, #0] + 800710a: f022 0204 bic.w r2, r2, #4 + 800710e: 601a str r2, [r3, #0] /* Clear the transfer error flag */ regs->IFCR = DMA_FLAG_TEIF0_4 << hdma->StreamIndex; - 8006ebc: 687b ldr r3, [r7, #4] - 8006ebe: 6ddb ldr r3, [r3, #92] @ 0x5c - 8006ec0: 2208 movs r2, #8 - 8006ec2: 409a lsls r2, r3 - 8006ec4: 693b ldr r3, [r7, #16] - 8006ec6: 609a str r2, [r3, #8] + 8007110: 687b ldr r3, [r7, #4] + 8007112: 6ddb ldr r3, [r3, #92] @ 0x5c + 8007114: 2208 movs r2, #8 + 8007116: 409a lsls r2, r3 + 8007118: 693b ldr r3, [r7, #16] + 800711a: 609a str r2, [r3, #8] /* Update error code */ hdma->ErrorCode |= HAL_DMA_ERROR_TE; - 8006ec8: 687b ldr r3, [r7, #4] - 8006eca: 6d5b ldr r3, [r3, #84] @ 0x54 - 8006ecc: f043 0201 orr.w r2, r3, #1 - 8006ed0: 687b ldr r3, [r7, #4] - 8006ed2: 655a str r2, [r3, #84] @ 0x54 + 800711c: 687b ldr r3, [r7, #4] + 800711e: 6d5b ldr r3, [r3, #84] @ 0x54 + 8007120: f043 0201 orr.w r2, r3, #1 + 8007124: 687b ldr r3, [r7, #4] + 8007126: 655a str r2, [r3, #84] @ 0x54 } } /* FIFO Error Interrupt management ******************************************/ if ((tmpisr & (DMA_FLAG_FEIF0_4 << hdma->StreamIndex)) != RESET) - 8006ed4: 687b ldr r3, [r7, #4] - 8006ed6: 6ddb ldr r3, [r3, #92] @ 0x5c - 8006ed8: 2201 movs r2, #1 - 8006eda: 409a lsls r2, r3 - 8006edc: 68fb ldr r3, [r7, #12] - 8006ede: 4013 ands r3, r2 - 8006ee0: 2b00 cmp r3, #0 - 8006ee2: d012 beq.n 8006f0a + 8007128: 687b ldr r3, [r7, #4] + 800712a: 6ddb ldr r3, [r3, #92] @ 0x5c + 800712c: 2201 movs r2, #1 + 800712e: 409a lsls r2, r3 + 8007130: 68fb ldr r3, [r7, #12] + 8007132: 4013 ands r3, r2 + 8007134: 2b00 cmp r3, #0 + 8007136: d012 beq.n 800715e { if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_FE) != RESET) - 8006ee4: 687b ldr r3, [r7, #4] - 8006ee6: 681b ldr r3, [r3, #0] - 8006ee8: 695b ldr r3, [r3, #20] - 8006eea: f003 0380 and.w r3, r3, #128 @ 0x80 - 8006eee: 2b00 cmp r3, #0 - 8006ef0: d00b beq.n 8006f0a + 8007138: 687b ldr r3, [r7, #4] + 800713a: 681b ldr r3, [r3, #0] + 800713c: 695b ldr r3, [r3, #20] + 800713e: f003 0380 and.w r3, r3, #128 @ 0x80 + 8007142: 2b00 cmp r3, #0 + 8007144: d00b beq.n 800715e { /* Clear the FIFO error flag */ regs->IFCR = DMA_FLAG_FEIF0_4 << hdma->StreamIndex; - 8006ef2: 687b ldr r3, [r7, #4] - 8006ef4: 6ddb ldr r3, [r3, #92] @ 0x5c - 8006ef6: 2201 movs r2, #1 - 8006ef8: 409a lsls r2, r3 - 8006efa: 693b ldr r3, [r7, #16] - 8006efc: 609a str r2, [r3, #8] + 8007146: 687b ldr r3, [r7, #4] + 8007148: 6ddb ldr r3, [r3, #92] @ 0x5c + 800714a: 2201 movs r2, #1 + 800714c: 409a lsls r2, r3 + 800714e: 693b ldr r3, [r7, #16] + 8007150: 609a str r2, [r3, #8] /* Update error code */ hdma->ErrorCode |= HAL_DMA_ERROR_FE; - 8006efe: 687b ldr r3, [r7, #4] - 8006f00: 6d5b ldr r3, [r3, #84] @ 0x54 - 8006f02: f043 0202 orr.w r2, r3, #2 - 8006f06: 687b ldr r3, [r7, #4] - 8006f08: 655a str r2, [r3, #84] @ 0x54 + 8007152: 687b ldr r3, [r7, #4] + 8007154: 6d5b ldr r3, [r3, #84] @ 0x54 + 8007156: f043 0202 orr.w r2, r3, #2 + 800715a: 687b ldr r3, [r7, #4] + 800715c: 655a str r2, [r3, #84] @ 0x54 } } /* Direct Mode Error Interrupt management ***********************************/ if ((tmpisr & (DMA_FLAG_DMEIF0_4 << hdma->StreamIndex)) != RESET) - 8006f0a: 687b ldr r3, [r7, #4] - 8006f0c: 6ddb ldr r3, [r3, #92] @ 0x5c - 8006f0e: 2204 movs r2, #4 - 8006f10: 409a lsls r2, r3 - 8006f12: 68fb ldr r3, [r7, #12] - 8006f14: 4013 ands r3, r2 - 8006f16: 2b00 cmp r3, #0 - 8006f18: d012 beq.n 8006f40 + 800715e: 687b ldr r3, [r7, #4] + 8007160: 6ddb ldr r3, [r3, #92] @ 0x5c + 8007162: 2204 movs r2, #4 + 8007164: 409a lsls r2, r3 + 8007166: 68fb ldr r3, [r7, #12] + 8007168: 4013 ands r3, r2 + 800716a: 2b00 cmp r3, #0 + 800716c: d012 beq.n 8007194 { if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_DME) != RESET) - 8006f1a: 687b ldr r3, [r7, #4] - 8006f1c: 681b ldr r3, [r3, #0] - 8006f1e: 681b ldr r3, [r3, #0] - 8006f20: f003 0302 and.w r3, r3, #2 - 8006f24: 2b00 cmp r3, #0 - 8006f26: d00b beq.n 8006f40 + 800716e: 687b ldr r3, [r7, #4] + 8007170: 681b ldr r3, [r3, #0] + 8007172: 681b ldr r3, [r3, #0] + 8007174: f003 0302 and.w r3, r3, #2 + 8007178: 2b00 cmp r3, #0 + 800717a: d00b beq.n 8007194 { /* Clear the direct mode error flag */ regs->IFCR = DMA_FLAG_DMEIF0_4 << hdma->StreamIndex; - 8006f28: 687b ldr r3, [r7, #4] - 8006f2a: 6ddb ldr r3, [r3, #92] @ 0x5c - 8006f2c: 2204 movs r2, #4 - 8006f2e: 409a lsls r2, r3 - 8006f30: 693b ldr r3, [r7, #16] - 8006f32: 609a str r2, [r3, #8] + 800717c: 687b ldr r3, [r7, #4] + 800717e: 6ddb ldr r3, [r3, #92] @ 0x5c + 8007180: 2204 movs r2, #4 + 8007182: 409a lsls r2, r3 + 8007184: 693b ldr r3, [r7, #16] + 8007186: 609a str r2, [r3, #8] /* Update error code */ hdma->ErrorCode |= HAL_DMA_ERROR_DME; - 8006f34: 687b ldr r3, [r7, #4] - 8006f36: 6d5b ldr r3, [r3, #84] @ 0x54 - 8006f38: f043 0204 orr.w r2, r3, #4 - 8006f3c: 687b ldr r3, [r7, #4] - 8006f3e: 655a str r2, [r3, #84] @ 0x54 + 8007188: 687b ldr r3, [r7, #4] + 800718a: 6d5b ldr r3, [r3, #84] @ 0x54 + 800718c: f043 0204 orr.w r2, r3, #4 + 8007190: 687b ldr r3, [r7, #4] + 8007192: 655a str r2, [r3, #84] @ 0x54 } } /* Half Transfer Complete Interrupt management ******************************/ if ((tmpisr & (DMA_FLAG_HTIF0_4 << hdma->StreamIndex)) != RESET) - 8006f40: 687b ldr r3, [r7, #4] - 8006f42: 6ddb ldr r3, [r3, #92] @ 0x5c - 8006f44: 2210 movs r2, #16 - 8006f46: 409a lsls r2, r3 - 8006f48: 68fb ldr r3, [r7, #12] - 8006f4a: 4013 ands r3, r2 - 8006f4c: 2b00 cmp r3, #0 - 8006f4e: d043 beq.n 8006fd8 + 8007194: 687b ldr r3, [r7, #4] + 8007196: 6ddb ldr r3, [r3, #92] @ 0x5c + 8007198: 2210 movs r2, #16 + 800719a: 409a lsls r2, r3 + 800719c: 68fb ldr r3, [r7, #12] + 800719e: 4013 ands r3, r2 + 80071a0: 2b00 cmp r3, #0 + 80071a2: d043 beq.n 800722c { if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_HT) != RESET) - 8006f50: 687b ldr r3, [r7, #4] - 8006f52: 681b ldr r3, [r3, #0] - 8006f54: 681b ldr r3, [r3, #0] - 8006f56: f003 0308 and.w r3, r3, #8 - 8006f5a: 2b00 cmp r3, #0 - 8006f5c: d03c beq.n 8006fd8 + 80071a4: 687b ldr r3, [r7, #4] + 80071a6: 681b ldr r3, [r3, #0] + 80071a8: 681b ldr r3, [r3, #0] + 80071aa: f003 0308 and.w r3, r3, #8 + 80071ae: 2b00 cmp r3, #0 + 80071b0: d03c beq.n 800722c { /* Clear the half transfer complete flag */ regs->IFCR = DMA_FLAG_HTIF0_4 << hdma->StreamIndex; - 8006f5e: 687b ldr r3, [r7, #4] - 8006f60: 6ddb ldr r3, [r3, #92] @ 0x5c - 8006f62: 2210 movs r2, #16 - 8006f64: 409a lsls r2, r3 - 8006f66: 693b ldr r3, [r7, #16] - 8006f68: 609a str r2, [r3, #8] + 80071b2: 687b ldr r3, [r7, #4] + 80071b4: 6ddb ldr r3, [r3, #92] @ 0x5c + 80071b6: 2210 movs r2, #16 + 80071b8: 409a lsls r2, r3 + 80071ba: 693b ldr r3, [r7, #16] + 80071bc: 609a str r2, [r3, #8] /* Multi_Buffering mode enabled */ if(((hdma->Instance->CR) & (uint32_t)(DMA_SxCR_DBM)) != RESET) - 8006f6a: 687b ldr r3, [r7, #4] - 8006f6c: 681b ldr r3, [r3, #0] - 8006f6e: 681b ldr r3, [r3, #0] - 8006f70: f403 2380 and.w r3, r3, #262144 @ 0x40000 - 8006f74: 2b00 cmp r3, #0 - 8006f76: d018 beq.n 8006faa + 80071be: 687b ldr r3, [r7, #4] + 80071c0: 681b ldr r3, [r3, #0] + 80071c2: 681b ldr r3, [r3, #0] + 80071c4: f403 2380 and.w r3, r3, #262144 @ 0x40000 + 80071c8: 2b00 cmp r3, #0 + 80071ca: d018 beq.n 80071fe { /* Current memory buffer used is Memory 0 */ if((hdma->Instance->CR & DMA_SxCR_CT) == RESET) - 8006f78: 687b ldr r3, [r7, #4] - 8006f7a: 681b ldr r3, [r3, #0] - 8006f7c: 681b ldr r3, [r3, #0] - 8006f7e: f403 2300 and.w r3, r3, #524288 @ 0x80000 - 8006f82: 2b00 cmp r3, #0 - 8006f84: d108 bne.n 8006f98 + 80071cc: 687b ldr r3, [r7, #4] + 80071ce: 681b ldr r3, [r3, #0] + 80071d0: 681b ldr r3, [r3, #0] + 80071d2: f403 2300 and.w r3, r3, #524288 @ 0x80000 + 80071d6: 2b00 cmp r3, #0 + 80071d8: d108 bne.n 80071ec { if(hdma->XferHalfCpltCallback != NULL) - 8006f86: 687b ldr r3, [r7, #4] - 8006f88: 6c1b ldr r3, [r3, #64] @ 0x40 - 8006f8a: 2b00 cmp r3, #0 - 8006f8c: d024 beq.n 8006fd8 + 80071da: 687b ldr r3, [r7, #4] + 80071dc: 6c1b ldr r3, [r3, #64] @ 0x40 + 80071de: 2b00 cmp r3, #0 + 80071e0: d024 beq.n 800722c { /* Half transfer callback */ hdma->XferHalfCpltCallback(hdma); - 8006f8e: 687b ldr r3, [r7, #4] - 8006f90: 6c1b ldr r3, [r3, #64] @ 0x40 - 8006f92: 6878 ldr r0, [r7, #4] - 8006f94: 4798 blx r3 - 8006f96: e01f b.n 8006fd8 + 80071e2: 687b ldr r3, [r7, #4] + 80071e4: 6c1b ldr r3, [r3, #64] @ 0x40 + 80071e6: 6878 ldr r0, [r7, #4] + 80071e8: 4798 blx r3 + 80071ea: e01f b.n 800722c } } /* Current memory buffer used is Memory 1 */ else { if(hdma->XferM1HalfCpltCallback != NULL) - 8006f98: 687b ldr r3, [r7, #4] - 8006f9a: 6c9b ldr r3, [r3, #72] @ 0x48 - 8006f9c: 2b00 cmp r3, #0 - 8006f9e: d01b beq.n 8006fd8 + 80071ec: 687b ldr r3, [r7, #4] + 80071ee: 6c9b ldr r3, [r3, #72] @ 0x48 + 80071f0: 2b00 cmp r3, #0 + 80071f2: d01b beq.n 800722c { /* Half transfer callback */ hdma->XferM1HalfCpltCallback(hdma); - 8006fa0: 687b ldr r3, [r7, #4] - 8006fa2: 6c9b ldr r3, [r3, #72] @ 0x48 - 8006fa4: 6878 ldr r0, [r7, #4] - 8006fa6: 4798 blx r3 - 8006fa8: e016 b.n 8006fd8 + 80071f4: 687b ldr r3, [r7, #4] + 80071f6: 6c9b ldr r3, [r3, #72] @ 0x48 + 80071f8: 6878 ldr r0, [r7, #4] + 80071fa: 4798 blx r3 + 80071fc: e016 b.n 800722c } } else { /* Disable the half transfer interrupt if the DMA mode is not CIRCULAR */ if((hdma->Instance->CR & DMA_SxCR_CIRC) == RESET) - 8006faa: 687b ldr r3, [r7, #4] - 8006fac: 681b ldr r3, [r3, #0] - 8006fae: 681b ldr r3, [r3, #0] - 8006fb0: f403 7380 and.w r3, r3, #256 @ 0x100 - 8006fb4: 2b00 cmp r3, #0 - 8006fb6: d107 bne.n 8006fc8 + 80071fe: 687b ldr r3, [r7, #4] + 8007200: 681b ldr r3, [r3, #0] + 8007202: 681b ldr r3, [r3, #0] + 8007204: f403 7380 and.w r3, r3, #256 @ 0x100 + 8007208: 2b00 cmp r3, #0 + 800720a: d107 bne.n 800721c { /* Disable the half transfer interrupt */ hdma->Instance->CR &= ~(DMA_IT_HT); - 8006fb8: 687b ldr r3, [r7, #4] - 8006fba: 681b ldr r3, [r3, #0] - 8006fbc: 681a ldr r2, [r3, #0] - 8006fbe: 687b ldr r3, [r7, #4] - 8006fc0: 681b ldr r3, [r3, #0] - 8006fc2: f022 0208 bic.w r2, r2, #8 - 8006fc6: 601a str r2, [r3, #0] + 800720c: 687b ldr r3, [r7, #4] + 800720e: 681b ldr r3, [r3, #0] + 8007210: 681a ldr r2, [r3, #0] + 8007212: 687b ldr r3, [r7, #4] + 8007214: 681b ldr r3, [r3, #0] + 8007216: f022 0208 bic.w r2, r2, #8 + 800721a: 601a str r2, [r3, #0] } if(hdma->XferHalfCpltCallback != NULL) - 8006fc8: 687b ldr r3, [r7, #4] - 8006fca: 6c1b ldr r3, [r3, #64] @ 0x40 - 8006fcc: 2b00 cmp r3, #0 - 8006fce: d003 beq.n 8006fd8 + 800721c: 687b ldr r3, [r7, #4] + 800721e: 6c1b ldr r3, [r3, #64] @ 0x40 + 8007220: 2b00 cmp r3, #0 + 8007222: d003 beq.n 800722c { /* Half transfer callback */ hdma->XferHalfCpltCallback(hdma); - 8006fd0: 687b ldr r3, [r7, #4] - 8006fd2: 6c1b ldr r3, [r3, #64] @ 0x40 - 8006fd4: 6878 ldr r0, [r7, #4] - 8006fd6: 4798 blx r3 + 8007224: 687b ldr r3, [r7, #4] + 8007226: 6c1b ldr r3, [r3, #64] @ 0x40 + 8007228: 6878 ldr r0, [r7, #4] + 800722a: 4798 blx r3 } } } } /* Transfer Complete Interrupt management ***********************************/ if ((tmpisr & (DMA_FLAG_TCIF0_4 << hdma->StreamIndex)) != RESET) - 8006fd8: 687b ldr r3, [r7, #4] - 8006fda: 6ddb ldr r3, [r3, #92] @ 0x5c - 8006fdc: 2220 movs r2, #32 - 8006fde: 409a lsls r2, r3 - 8006fe0: 68fb ldr r3, [r7, #12] - 8006fe2: 4013 ands r3, r2 - 8006fe4: 2b00 cmp r3, #0 - 8006fe6: f000 808f beq.w 8007108 + 800722c: 687b ldr r3, [r7, #4] + 800722e: 6ddb ldr r3, [r3, #92] @ 0x5c + 8007230: 2220 movs r2, #32 + 8007232: 409a lsls r2, r3 + 8007234: 68fb ldr r3, [r7, #12] + 8007236: 4013 ands r3, r2 + 8007238: 2b00 cmp r3, #0 + 800723a: f000 808f beq.w 800735c { if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_TC) != RESET) - 8006fea: 687b ldr r3, [r7, #4] - 8006fec: 681b ldr r3, [r3, #0] - 8006fee: 681b ldr r3, [r3, #0] - 8006ff0: f003 0310 and.w r3, r3, #16 - 8006ff4: 2b00 cmp r3, #0 - 8006ff6: f000 8087 beq.w 8007108 + 800723e: 687b ldr r3, [r7, #4] + 8007240: 681b ldr r3, [r3, #0] + 8007242: 681b ldr r3, [r3, #0] + 8007244: f003 0310 and.w r3, r3, #16 + 8007248: 2b00 cmp r3, #0 + 800724a: f000 8087 beq.w 800735c { /* Clear the transfer complete flag */ regs->IFCR = DMA_FLAG_TCIF0_4 << hdma->StreamIndex; - 8006ffa: 687b ldr r3, [r7, #4] - 8006ffc: 6ddb ldr r3, [r3, #92] @ 0x5c - 8006ffe: 2220 movs r2, #32 - 8007000: 409a lsls r2, r3 - 8007002: 693b ldr r3, [r7, #16] - 8007004: 609a str r2, [r3, #8] + 800724e: 687b ldr r3, [r7, #4] + 8007250: 6ddb ldr r3, [r3, #92] @ 0x5c + 8007252: 2220 movs r2, #32 + 8007254: 409a lsls r2, r3 + 8007256: 693b ldr r3, [r7, #16] + 8007258: 609a str r2, [r3, #8] if(HAL_DMA_STATE_ABORT == hdma->State) - 8007006: 687b ldr r3, [r7, #4] - 8007008: f893 3035 ldrb.w r3, [r3, #53] @ 0x35 - 800700c: b2db uxtb r3, r3 - 800700e: 2b05 cmp r3, #5 - 8007010: d136 bne.n 8007080 + 800725a: 687b ldr r3, [r7, #4] + 800725c: f893 3035 ldrb.w r3, [r3, #53] @ 0x35 + 8007260: b2db uxtb r3, r3 + 8007262: 2b05 cmp r3, #5 + 8007264: d136 bne.n 80072d4 { /* Disable all the transfer interrupts */ hdma->Instance->CR &= ~(DMA_IT_TC | DMA_IT_TE | DMA_IT_DME); - 8007012: 687b ldr r3, [r7, #4] - 8007014: 681b ldr r3, [r3, #0] - 8007016: 681a ldr r2, [r3, #0] - 8007018: 687b ldr r3, [r7, #4] - 800701a: 681b ldr r3, [r3, #0] - 800701c: f022 0216 bic.w r2, r2, #22 - 8007020: 601a str r2, [r3, #0] + 8007266: 687b ldr r3, [r7, #4] + 8007268: 681b ldr r3, [r3, #0] + 800726a: 681a ldr r2, [r3, #0] + 800726c: 687b ldr r3, [r7, #4] + 800726e: 681b ldr r3, [r3, #0] + 8007270: f022 0216 bic.w r2, r2, #22 + 8007274: 601a str r2, [r3, #0] hdma->Instance->FCR &= ~(DMA_IT_FE); - 8007022: 687b ldr r3, [r7, #4] - 8007024: 681b ldr r3, [r3, #0] - 8007026: 695a ldr r2, [r3, #20] - 8007028: 687b ldr r3, [r7, #4] - 800702a: 681b ldr r3, [r3, #0] - 800702c: f022 0280 bic.w r2, r2, #128 @ 0x80 - 8007030: 615a str r2, [r3, #20] + 8007276: 687b ldr r3, [r7, #4] + 8007278: 681b ldr r3, [r3, #0] + 800727a: 695a ldr r2, [r3, #20] + 800727c: 687b ldr r3, [r7, #4] + 800727e: 681b ldr r3, [r3, #0] + 8007280: f022 0280 bic.w r2, r2, #128 @ 0x80 + 8007284: 615a str r2, [r3, #20] if((hdma->XferHalfCpltCallback != NULL) || (hdma->XferM1HalfCpltCallback != NULL)) - 8007032: 687b ldr r3, [r7, #4] - 8007034: 6c1b ldr r3, [r3, #64] @ 0x40 - 8007036: 2b00 cmp r3, #0 - 8007038: d103 bne.n 8007042 - 800703a: 687b ldr r3, [r7, #4] - 800703c: 6c9b ldr r3, [r3, #72] @ 0x48 - 800703e: 2b00 cmp r3, #0 - 8007040: d007 beq.n 8007052 + 8007286: 687b ldr r3, [r7, #4] + 8007288: 6c1b ldr r3, [r3, #64] @ 0x40 + 800728a: 2b00 cmp r3, #0 + 800728c: d103 bne.n 8007296 + 800728e: 687b ldr r3, [r7, #4] + 8007290: 6c9b ldr r3, [r3, #72] @ 0x48 + 8007292: 2b00 cmp r3, #0 + 8007294: d007 beq.n 80072a6 { hdma->Instance->CR &= ~(DMA_IT_HT); - 8007042: 687b ldr r3, [r7, #4] - 8007044: 681b ldr r3, [r3, #0] - 8007046: 681a ldr r2, [r3, #0] - 8007048: 687b ldr r3, [r7, #4] - 800704a: 681b ldr r3, [r3, #0] - 800704c: f022 0208 bic.w r2, r2, #8 - 8007050: 601a str r2, [r3, #0] + 8007296: 687b ldr r3, [r7, #4] + 8007298: 681b ldr r3, [r3, #0] + 800729a: 681a ldr r2, [r3, #0] + 800729c: 687b ldr r3, [r7, #4] + 800729e: 681b ldr r3, [r3, #0] + 80072a0: f022 0208 bic.w r2, r2, #8 + 80072a4: 601a str r2, [r3, #0] } /* Clear all interrupt flags at correct offset within the register */ regs->IFCR = 0x3FU << hdma->StreamIndex; - 8007052: 687b ldr r3, [r7, #4] - 8007054: 6ddb ldr r3, [r3, #92] @ 0x5c - 8007056: 223f movs r2, #63 @ 0x3f - 8007058: 409a lsls r2, r3 - 800705a: 693b ldr r3, [r7, #16] - 800705c: 609a str r2, [r3, #8] + 80072a6: 687b ldr r3, [r7, #4] + 80072a8: 6ddb ldr r3, [r3, #92] @ 0x5c + 80072aa: 223f movs r2, #63 @ 0x3f + 80072ac: 409a lsls r2, r3 + 80072ae: 693b ldr r3, [r7, #16] + 80072b0: 609a str r2, [r3, #8] /* Change the DMA state */ hdma->State = HAL_DMA_STATE_READY; - 800705e: 687b ldr r3, [r7, #4] - 8007060: 2201 movs r2, #1 - 8007062: f883 2035 strb.w r2, [r3, #53] @ 0x35 + 80072b2: 687b ldr r3, [r7, #4] + 80072b4: 2201 movs r2, #1 + 80072b6: f883 2035 strb.w r2, [r3, #53] @ 0x35 /* Process Unlocked */ __HAL_UNLOCK(hdma); - 8007066: 687b ldr r3, [r7, #4] - 8007068: 2200 movs r2, #0 - 800706a: f883 2034 strb.w r2, [r3, #52] @ 0x34 + 80072ba: 687b ldr r3, [r7, #4] + 80072bc: 2200 movs r2, #0 + 80072be: f883 2034 strb.w r2, [r3, #52] @ 0x34 if(hdma->XferAbortCallback != NULL) - 800706e: 687b ldr r3, [r7, #4] - 8007070: 6d1b ldr r3, [r3, #80] @ 0x50 - 8007072: 2b00 cmp r3, #0 - 8007074: d07e beq.n 8007174 + 80072c2: 687b ldr r3, [r7, #4] + 80072c4: 6d1b ldr r3, [r3, #80] @ 0x50 + 80072c6: 2b00 cmp r3, #0 + 80072c8: d07e beq.n 80073c8 { hdma->XferAbortCallback(hdma); - 8007076: 687b ldr r3, [r7, #4] - 8007078: 6d1b ldr r3, [r3, #80] @ 0x50 - 800707a: 6878 ldr r0, [r7, #4] - 800707c: 4798 blx r3 + 80072ca: 687b ldr r3, [r7, #4] + 80072cc: 6d1b ldr r3, [r3, #80] @ 0x50 + 80072ce: 6878 ldr r0, [r7, #4] + 80072d0: 4798 blx r3 } return; - 800707e: e079 b.n 8007174 + 80072d2: e079 b.n 80073c8 } if(((hdma->Instance->CR) & (uint32_t)(DMA_SxCR_DBM)) != RESET) - 8007080: 687b ldr r3, [r7, #4] - 8007082: 681b ldr r3, [r3, #0] - 8007084: 681b ldr r3, [r3, #0] - 8007086: f403 2380 and.w r3, r3, #262144 @ 0x40000 - 800708a: 2b00 cmp r3, #0 - 800708c: d01d beq.n 80070ca + 80072d4: 687b ldr r3, [r7, #4] + 80072d6: 681b ldr r3, [r3, #0] + 80072d8: 681b ldr r3, [r3, #0] + 80072da: f403 2380 and.w r3, r3, #262144 @ 0x40000 + 80072de: 2b00 cmp r3, #0 + 80072e0: d01d beq.n 800731e { /* Current memory buffer used is Memory 0 */ if((hdma->Instance->CR & DMA_SxCR_CT) == RESET) - 800708e: 687b ldr r3, [r7, #4] - 8007090: 681b ldr r3, [r3, #0] - 8007092: 681b ldr r3, [r3, #0] - 8007094: f403 2300 and.w r3, r3, #524288 @ 0x80000 - 8007098: 2b00 cmp r3, #0 - 800709a: d10d bne.n 80070b8 + 80072e2: 687b ldr r3, [r7, #4] + 80072e4: 681b ldr r3, [r3, #0] + 80072e6: 681b ldr r3, [r3, #0] + 80072e8: f403 2300 and.w r3, r3, #524288 @ 0x80000 + 80072ec: 2b00 cmp r3, #0 + 80072ee: d10d bne.n 800730c { if(hdma->XferM1CpltCallback != NULL) - 800709c: 687b ldr r3, [r7, #4] - 800709e: 6c5b ldr r3, [r3, #68] @ 0x44 - 80070a0: 2b00 cmp r3, #0 - 80070a2: d031 beq.n 8007108 + 80072f0: 687b ldr r3, [r7, #4] + 80072f2: 6c5b ldr r3, [r3, #68] @ 0x44 + 80072f4: 2b00 cmp r3, #0 + 80072f6: d031 beq.n 800735c { /* Transfer complete Callback for memory1 */ hdma->XferM1CpltCallback(hdma); - 80070a4: 687b ldr r3, [r7, #4] - 80070a6: 6c5b ldr r3, [r3, #68] @ 0x44 - 80070a8: 6878 ldr r0, [r7, #4] - 80070aa: 4798 blx r3 - 80070ac: e02c b.n 8007108 - 80070ae: bf00 nop - 80070b0: 20000000 .word 0x20000000 - 80070b4: 1b4e81b5 .word 0x1b4e81b5 + 80072f8: 687b ldr r3, [r7, #4] + 80072fa: 6c5b ldr r3, [r3, #68] @ 0x44 + 80072fc: 6878 ldr r0, [r7, #4] + 80072fe: 4798 blx r3 + 8007300: e02c b.n 800735c + 8007302: bf00 nop + 8007304: 20000000 .word 0x20000000 + 8007308: 1b4e81b5 .word 0x1b4e81b5 } } /* Current memory buffer used is Memory 1 */ else { if(hdma->XferCpltCallback != NULL) - 80070b8: 687b ldr r3, [r7, #4] - 80070ba: 6bdb ldr r3, [r3, #60] @ 0x3c - 80070bc: 2b00 cmp r3, #0 - 80070be: d023 beq.n 8007108 + 800730c: 687b ldr r3, [r7, #4] + 800730e: 6bdb ldr r3, [r3, #60] @ 0x3c + 8007310: 2b00 cmp r3, #0 + 8007312: d023 beq.n 800735c { /* Transfer complete Callback for memory0 */ hdma->XferCpltCallback(hdma); - 80070c0: 687b ldr r3, [r7, #4] - 80070c2: 6bdb ldr r3, [r3, #60] @ 0x3c - 80070c4: 6878 ldr r0, [r7, #4] - 80070c6: 4798 blx r3 - 80070c8: e01e b.n 8007108 + 8007314: 687b ldr r3, [r7, #4] + 8007316: 6bdb ldr r3, [r3, #60] @ 0x3c + 8007318: 6878 ldr r0, [r7, #4] + 800731a: 4798 blx r3 + 800731c: e01e b.n 800735c } } /* Disable the transfer complete interrupt if the DMA mode is not CIRCULAR */ else { if((hdma->Instance->CR & DMA_SxCR_CIRC) == RESET) - 80070ca: 687b ldr r3, [r7, #4] - 80070cc: 681b ldr r3, [r3, #0] - 80070ce: 681b ldr r3, [r3, #0] - 80070d0: f403 7380 and.w r3, r3, #256 @ 0x100 - 80070d4: 2b00 cmp r3, #0 - 80070d6: d10f bne.n 80070f8 + 800731e: 687b ldr r3, [r7, #4] + 8007320: 681b ldr r3, [r3, #0] + 8007322: 681b ldr r3, [r3, #0] + 8007324: f403 7380 and.w r3, r3, #256 @ 0x100 + 8007328: 2b00 cmp r3, #0 + 800732a: d10f bne.n 800734c { /* Disable the transfer complete interrupt */ hdma->Instance->CR &= ~(DMA_IT_TC); - 80070d8: 687b ldr r3, [r7, #4] - 80070da: 681b ldr r3, [r3, #0] - 80070dc: 681a ldr r2, [r3, #0] - 80070de: 687b ldr r3, [r7, #4] - 80070e0: 681b ldr r3, [r3, #0] - 80070e2: f022 0210 bic.w r2, r2, #16 - 80070e6: 601a str r2, [r3, #0] + 800732c: 687b ldr r3, [r7, #4] + 800732e: 681b ldr r3, [r3, #0] + 8007330: 681a ldr r2, [r3, #0] + 8007332: 687b ldr r3, [r7, #4] + 8007334: 681b ldr r3, [r3, #0] + 8007336: f022 0210 bic.w r2, r2, #16 + 800733a: 601a str r2, [r3, #0] /* Change the DMA state */ hdma->State = HAL_DMA_STATE_READY; - 80070e8: 687b ldr r3, [r7, #4] - 80070ea: 2201 movs r2, #1 - 80070ec: f883 2035 strb.w r2, [r3, #53] @ 0x35 + 800733c: 687b ldr r3, [r7, #4] + 800733e: 2201 movs r2, #1 + 8007340: f883 2035 strb.w r2, [r3, #53] @ 0x35 /* Process Unlocked */ __HAL_UNLOCK(hdma); - 80070f0: 687b ldr r3, [r7, #4] - 80070f2: 2200 movs r2, #0 - 80070f4: f883 2034 strb.w r2, [r3, #52] @ 0x34 + 8007344: 687b ldr r3, [r7, #4] + 8007346: 2200 movs r2, #0 + 8007348: f883 2034 strb.w r2, [r3, #52] @ 0x34 } if(hdma->XferCpltCallback != NULL) - 80070f8: 687b ldr r3, [r7, #4] - 80070fa: 6bdb ldr r3, [r3, #60] @ 0x3c - 80070fc: 2b00 cmp r3, #0 - 80070fe: d003 beq.n 8007108 + 800734c: 687b ldr r3, [r7, #4] + 800734e: 6bdb ldr r3, [r3, #60] @ 0x3c + 8007350: 2b00 cmp r3, #0 + 8007352: d003 beq.n 800735c { /* Transfer complete callback */ hdma->XferCpltCallback(hdma); - 8007100: 687b ldr r3, [r7, #4] - 8007102: 6bdb ldr r3, [r3, #60] @ 0x3c - 8007104: 6878 ldr r0, [r7, #4] - 8007106: 4798 blx r3 + 8007354: 687b ldr r3, [r7, #4] + 8007356: 6bdb ldr r3, [r3, #60] @ 0x3c + 8007358: 6878 ldr r0, [r7, #4] + 800735a: 4798 blx r3 } } } /* manage error case */ if(hdma->ErrorCode != HAL_DMA_ERROR_NONE) - 8007108: 687b ldr r3, [r7, #4] - 800710a: 6d5b ldr r3, [r3, #84] @ 0x54 - 800710c: 2b00 cmp r3, #0 - 800710e: d032 beq.n 8007176 + 800735c: 687b ldr r3, [r7, #4] + 800735e: 6d5b ldr r3, [r3, #84] @ 0x54 + 8007360: 2b00 cmp r3, #0 + 8007362: d032 beq.n 80073ca { if((hdma->ErrorCode & HAL_DMA_ERROR_TE) != RESET) - 8007110: 687b ldr r3, [r7, #4] - 8007112: 6d5b ldr r3, [r3, #84] @ 0x54 - 8007114: f003 0301 and.w r3, r3, #1 - 8007118: 2b00 cmp r3, #0 - 800711a: d022 beq.n 8007162 + 8007364: 687b ldr r3, [r7, #4] + 8007366: 6d5b ldr r3, [r3, #84] @ 0x54 + 8007368: f003 0301 and.w r3, r3, #1 + 800736c: 2b00 cmp r3, #0 + 800736e: d022 beq.n 80073b6 { hdma->State = HAL_DMA_STATE_ABORT; - 800711c: 687b ldr r3, [r7, #4] - 800711e: 2205 movs r2, #5 - 8007120: f883 2035 strb.w r2, [r3, #53] @ 0x35 + 8007370: 687b ldr r3, [r7, #4] + 8007372: 2205 movs r2, #5 + 8007374: f883 2035 strb.w r2, [r3, #53] @ 0x35 /* Disable the stream */ __HAL_DMA_DISABLE(hdma); - 8007124: 687b ldr r3, [r7, #4] - 8007126: 681b ldr r3, [r3, #0] - 8007128: 681a ldr r2, [r3, #0] - 800712a: 687b ldr r3, [r7, #4] - 800712c: 681b ldr r3, [r3, #0] - 800712e: f022 0201 bic.w r2, r2, #1 - 8007132: 601a str r2, [r3, #0] + 8007378: 687b ldr r3, [r7, #4] + 800737a: 681b ldr r3, [r3, #0] + 800737c: 681a ldr r2, [r3, #0] + 800737e: 687b ldr r3, [r7, #4] + 8007380: 681b ldr r3, [r3, #0] + 8007382: f022 0201 bic.w r2, r2, #1 + 8007386: 601a str r2, [r3, #0] do { if (++count > timeout) - 8007134: 68bb ldr r3, [r7, #8] - 8007136: 3301 adds r3, #1 - 8007138: 60bb str r3, [r7, #8] - 800713a: 697a ldr r2, [r7, #20] - 800713c: 429a cmp r2, r3 - 800713e: d307 bcc.n 8007150 + 8007388: 68bb ldr r3, [r7, #8] + 800738a: 3301 adds r3, #1 + 800738c: 60bb str r3, [r7, #8] + 800738e: 697a ldr r2, [r7, #20] + 8007390: 429a cmp r2, r3 + 8007392: d307 bcc.n 80073a4 { break; } } while((hdma->Instance->CR & DMA_SxCR_EN) != RESET); - 8007140: 687b ldr r3, [r7, #4] - 8007142: 681b ldr r3, [r3, #0] - 8007144: 681b ldr r3, [r3, #0] - 8007146: f003 0301 and.w r3, r3, #1 - 800714a: 2b00 cmp r3, #0 - 800714c: d1f2 bne.n 8007134 - 800714e: e000 b.n 8007152 + 8007394: 687b ldr r3, [r7, #4] + 8007396: 681b ldr r3, [r3, #0] + 8007398: 681b ldr r3, [r3, #0] + 800739a: f003 0301 and.w r3, r3, #1 + 800739e: 2b00 cmp r3, #0 + 80073a0: d1f2 bne.n 8007388 + 80073a2: e000 b.n 80073a6 break; - 8007150: bf00 nop + 80073a4: bf00 nop /* Change the DMA state */ hdma->State = HAL_DMA_STATE_READY; - 8007152: 687b ldr r3, [r7, #4] - 8007154: 2201 movs r2, #1 - 8007156: f883 2035 strb.w r2, [r3, #53] @ 0x35 + 80073a6: 687b ldr r3, [r7, #4] + 80073a8: 2201 movs r2, #1 + 80073aa: f883 2035 strb.w r2, [r3, #53] @ 0x35 /* Process Unlocked */ __HAL_UNLOCK(hdma); - 800715a: 687b ldr r3, [r7, #4] - 800715c: 2200 movs r2, #0 - 800715e: f883 2034 strb.w r2, [r3, #52] @ 0x34 + 80073ae: 687b ldr r3, [r7, #4] + 80073b0: 2200 movs r2, #0 + 80073b2: f883 2034 strb.w r2, [r3, #52] @ 0x34 } if(hdma->XferErrorCallback != NULL) - 8007162: 687b ldr r3, [r7, #4] - 8007164: 6cdb ldr r3, [r3, #76] @ 0x4c - 8007166: 2b00 cmp r3, #0 - 8007168: d005 beq.n 8007176 + 80073b6: 687b ldr r3, [r7, #4] + 80073b8: 6cdb ldr r3, [r3, #76] @ 0x4c + 80073ba: 2b00 cmp r3, #0 + 80073bc: d005 beq.n 80073ca { /* Transfer error callback */ hdma->XferErrorCallback(hdma); - 800716a: 687b ldr r3, [r7, #4] - 800716c: 6cdb ldr r3, [r3, #76] @ 0x4c - 800716e: 6878 ldr r0, [r7, #4] - 8007170: 4798 blx r3 - 8007172: e000 b.n 8007176 + 80073be: 687b ldr r3, [r7, #4] + 80073c0: 6cdb ldr r3, [r3, #76] @ 0x4c + 80073c2: 6878 ldr r0, [r7, #4] + 80073c4: 4798 blx r3 + 80073c6: e000 b.n 80073ca return; - 8007174: bf00 nop + 80073c8: bf00 nop } } } - 8007176: 3718 adds r7, #24 - 8007178: 46bd mov sp, r7 - 800717a: bd80 pop {r7, pc} + 80073ca: 3718 adds r7, #24 + 80073cc: 46bd mov sp, r7 + 80073ce: bd80 pop {r7, pc} -0800717c : +080073d0 : * @param DstAddress The destination memory Buffer address * @param DataLength The length of data to be transferred from source to destination * @retval HAL status */ static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength) { - 800717c: b480 push {r7} - 800717e: b085 sub sp, #20 - 8007180: af00 add r7, sp, #0 - 8007182: 60f8 str r0, [r7, #12] - 8007184: 60b9 str r1, [r7, #8] - 8007186: 607a str r2, [r7, #4] - 8007188: 603b str r3, [r7, #0] + 80073d0: b480 push {r7} + 80073d2: b085 sub sp, #20 + 80073d4: af00 add r7, sp, #0 + 80073d6: 60f8 str r0, [r7, #12] + 80073d8: 60b9 str r1, [r7, #8] + 80073da: 607a str r2, [r7, #4] + 80073dc: 603b str r3, [r7, #0] /* Clear DBM bit */ hdma->Instance->CR &= (uint32_t)(~DMA_SxCR_DBM); - 800718a: 68fb ldr r3, [r7, #12] - 800718c: 681b ldr r3, [r3, #0] - 800718e: 681a ldr r2, [r3, #0] - 8007190: 68fb ldr r3, [r7, #12] - 8007192: 681b ldr r3, [r3, #0] - 8007194: f422 2280 bic.w r2, r2, #262144 @ 0x40000 - 8007198: 601a str r2, [r3, #0] + 80073de: 68fb ldr r3, [r7, #12] + 80073e0: 681b ldr r3, [r3, #0] + 80073e2: 681a ldr r2, [r3, #0] + 80073e4: 68fb ldr r3, [r7, #12] + 80073e6: 681b ldr r3, [r3, #0] + 80073e8: f422 2280 bic.w r2, r2, #262144 @ 0x40000 + 80073ec: 601a str r2, [r3, #0] /* Configure DMA Stream data length */ hdma->Instance->NDTR = DataLength; - 800719a: 68fb ldr r3, [r7, #12] - 800719c: 681b ldr r3, [r3, #0] - 800719e: 683a ldr r2, [r7, #0] - 80071a0: 605a str r2, [r3, #4] + 80073ee: 68fb ldr r3, [r7, #12] + 80073f0: 681b ldr r3, [r3, #0] + 80073f2: 683a ldr r2, [r7, #0] + 80073f4: 605a str r2, [r3, #4] /* Memory to Peripheral */ if((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH) - 80071a2: 68fb ldr r3, [r7, #12] - 80071a4: 689b ldr r3, [r3, #8] - 80071a6: 2b40 cmp r3, #64 @ 0x40 - 80071a8: d108 bne.n 80071bc + 80073f6: 68fb ldr r3, [r7, #12] + 80073f8: 689b ldr r3, [r3, #8] + 80073fa: 2b40 cmp r3, #64 @ 0x40 + 80073fc: d108 bne.n 8007410 { /* Configure DMA Stream destination address */ hdma->Instance->PAR = DstAddress; - 80071aa: 68fb ldr r3, [r7, #12] - 80071ac: 681b ldr r3, [r3, #0] - 80071ae: 687a ldr r2, [r7, #4] - 80071b0: 609a str r2, [r3, #8] + 80073fe: 68fb ldr r3, [r7, #12] + 8007400: 681b ldr r3, [r3, #0] + 8007402: 687a ldr r2, [r7, #4] + 8007404: 609a str r2, [r3, #8] /* Configure DMA Stream source address */ hdma->Instance->M0AR = SrcAddress; - 80071b2: 68fb ldr r3, [r7, #12] - 80071b4: 681b ldr r3, [r3, #0] - 80071b6: 68ba ldr r2, [r7, #8] - 80071b8: 60da str r2, [r3, #12] + 8007406: 68fb ldr r3, [r7, #12] + 8007408: 681b ldr r3, [r3, #0] + 800740a: 68ba ldr r2, [r7, #8] + 800740c: 60da str r2, [r3, #12] hdma->Instance->PAR = SrcAddress; /* Configure DMA Stream destination address */ hdma->Instance->M0AR = DstAddress; } } - 80071ba: e007 b.n 80071cc + 800740e: e007 b.n 8007420 hdma->Instance->PAR = SrcAddress; - 80071bc: 68fb ldr r3, [r7, #12] - 80071be: 681b ldr r3, [r3, #0] - 80071c0: 68ba ldr r2, [r7, #8] - 80071c2: 609a str r2, [r3, #8] + 8007410: 68fb ldr r3, [r7, #12] + 8007412: 681b ldr r3, [r3, #0] + 8007414: 68ba ldr r2, [r7, #8] + 8007416: 609a str r2, [r3, #8] hdma->Instance->M0AR = DstAddress; - 80071c4: 68fb ldr r3, [r7, #12] - 80071c6: 681b ldr r3, [r3, #0] - 80071c8: 687a ldr r2, [r7, #4] - 80071ca: 60da str r2, [r3, #12] + 8007418: 68fb ldr r3, [r7, #12] + 800741a: 681b ldr r3, [r3, #0] + 800741c: 687a ldr r2, [r7, #4] + 800741e: 60da str r2, [r3, #12] } - 80071cc: bf00 nop - 80071ce: 3714 adds r7, #20 - 80071d0: 46bd mov sp, r7 - 80071d2: f85d 7b04 ldr.w r7, [sp], #4 - 80071d6: 4770 bx lr + 8007420: bf00 nop + 8007422: 3714 adds r7, #20 + 8007424: 46bd mov sp, r7 + 8007426: f85d 7b04 ldr.w r7, [sp], #4 + 800742a: 4770 bx lr -080071d8 : +0800742c : * @param hdma pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA Stream. * @retval Stream base address */ static uint32_t DMA_CalcBaseAndBitshift(DMA_HandleTypeDef *hdma) { - 80071d8: b480 push {r7} - 80071da: b085 sub sp, #20 - 80071dc: af00 add r7, sp, #0 - 80071de: 6078 str r0, [r7, #4] + 800742c: b480 push {r7} + 800742e: b085 sub sp, #20 + 8007430: af00 add r7, sp, #0 + 8007432: 6078 str r0, [r7, #4] uint32_t stream_number = (((uint32_t)hdma->Instance & 0xFFU) - 16U) / 24U; - 80071e0: 687b ldr r3, [r7, #4] - 80071e2: 681b ldr r3, [r3, #0] - 80071e4: b2db uxtb r3, r3 - 80071e6: 3b10 subs r3, #16 - 80071e8: 4a14 ldr r2, [pc, #80] @ (800723c ) - 80071ea: fba2 2303 umull r2, r3, r2, r3 - 80071ee: 091b lsrs r3, r3, #4 - 80071f0: 60fb str r3, [r7, #12] + 8007434: 687b ldr r3, [r7, #4] + 8007436: 681b ldr r3, [r3, #0] + 8007438: b2db uxtb r3, r3 + 800743a: 3b10 subs r3, #16 + 800743c: 4a14 ldr r2, [pc, #80] @ (8007490 ) + 800743e: fba2 2303 umull r2, r3, r2, r3 + 8007442: 091b lsrs r3, r3, #4 + 8007444: 60fb str r3, [r7, #12] /* lookup table for necessary bitshift of flags within status registers */ static const uint8_t flagBitshiftOffset[8U] = {0U, 6U, 16U, 22U, 0U, 6U, 16U, 22U}; hdma->StreamIndex = flagBitshiftOffset[stream_number]; - 80071f2: 4a13 ldr r2, [pc, #76] @ (8007240 ) - 80071f4: 68fb ldr r3, [r7, #12] - 80071f6: 4413 add r3, r2 - 80071f8: 781b ldrb r3, [r3, #0] - 80071fa: 461a mov r2, r3 - 80071fc: 687b ldr r3, [r7, #4] - 80071fe: 65da str r2, [r3, #92] @ 0x5c + 8007446: 4a13 ldr r2, [pc, #76] @ (8007494 ) + 8007448: 68fb ldr r3, [r7, #12] + 800744a: 4413 add r3, r2 + 800744c: 781b ldrb r3, [r3, #0] + 800744e: 461a mov r2, r3 + 8007450: 687b ldr r3, [r7, #4] + 8007452: 65da str r2, [r3, #92] @ 0x5c if (stream_number > 3U) - 8007200: 68fb ldr r3, [r7, #12] - 8007202: 2b03 cmp r3, #3 - 8007204: d909 bls.n 800721a + 8007454: 68fb ldr r3, [r7, #12] + 8007456: 2b03 cmp r3, #3 + 8007458: d909 bls.n 800746e { /* return pointer to HISR and HIFCR */ hdma->StreamBaseAddress = (((uint32_t)hdma->Instance & (uint32_t)(~0x3FFU)) + 4U); - 8007206: 687b ldr r3, [r7, #4] - 8007208: 681b ldr r3, [r3, #0] - 800720a: f423 737f bic.w r3, r3, #1020 @ 0x3fc - 800720e: f023 0303 bic.w r3, r3, #3 - 8007212: 1d1a adds r2, r3, #4 - 8007214: 687b ldr r3, [r7, #4] - 8007216: 659a str r2, [r3, #88] @ 0x58 - 8007218: e007 b.n 800722a + 800745a: 687b ldr r3, [r7, #4] + 800745c: 681b ldr r3, [r3, #0] + 800745e: f423 737f bic.w r3, r3, #1020 @ 0x3fc + 8007462: f023 0303 bic.w r3, r3, #3 + 8007466: 1d1a adds r2, r3, #4 + 8007468: 687b ldr r3, [r7, #4] + 800746a: 659a str r2, [r3, #88] @ 0x58 + 800746c: e007 b.n 800747e } else { /* return pointer to LISR and LIFCR */ hdma->StreamBaseAddress = ((uint32_t)hdma->Instance & (uint32_t)(~0x3FFU)); - 800721a: 687b ldr r3, [r7, #4] - 800721c: 681b ldr r3, [r3, #0] - 800721e: f423 737f bic.w r3, r3, #1020 @ 0x3fc - 8007222: f023 0303 bic.w r3, r3, #3 - 8007226: 687a ldr r2, [r7, #4] - 8007228: 6593 str r3, [r2, #88] @ 0x58 + 800746e: 687b ldr r3, [r7, #4] + 8007470: 681b ldr r3, [r3, #0] + 8007472: f423 737f bic.w r3, r3, #1020 @ 0x3fc + 8007476: f023 0303 bic.w r3, r3, #3 + 800747a: 687a ldr r2, [r7, #4] + 800747c: 6593 str r3, [r2, #88] @ 0x58 } return hdma->StreamBaseAddress; - 800722a: 687b ldr r3, [r7, #4] - 800722c: 6d9b ldr r3, [r3, #88] @ 0x58 + 800747e: 687b ldr r3, [r7, #4] + 8007480: 6d9b ldr r3, [r3, #88] @ 0x58 } - 800722e: 4618 mov r0, r3 - 8007230: 3714 adds r7, #20 - 8007232: 46bd mov sp, r7 - 8007234: f85d 7b04 ldr.w r7, [sp], #4 - 8007238: 4770 bx lr - 800723a: bf00 nop - 800723c: aaaaaaab .word 0xaaaaaaab - 8007240: 0800e9d8 .word 0x0800e9d8 + 8007482: 4618 mov r0, r3 + 8007484: 3714 adds r7, #20 + 8007486: 46bd mov sp, r7 + 8007488: f85d 7b04 ldr.w r7, [sp], #4 + 800748c: 4770 bx lr + 800748e: bf00 nop + 8007490: aaaaaaab .word 0xaaaaaaab + 8007494: 0800ef48 .word 0x0800ef48 -08007244 : +08007498 : * @param hdma pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA Stream. * @retval HAL status */ static HAL_StatusTypeDef DMA_CheckFifoParam(DMA_HandleTypeDef *hdma) { - 8007244: b480 push {r7} - 8007246: b085 sub sp, #20 - 8007248: af00 add r7, sp, #0 - 800724a: 6078 str r0, [r7, #4] + 8007498: b480 push {r7} + 800749a: b085 sub sp, #20 + 800749c: af00 add r7, sp, #0 + 800749e: 6078 str r0, [r7, #4] HAL_StatusTypeDef status = HAL_OK; - 800724c: 2300 movs r3, #0 - 800724e: 73fb strb r3, [r7, #15] + 80074a0: 2300 movs r3, #0 + 80074a2: 73fb strb r3, [r7, #15] uint32_t tmp = hdma->Init.FIFOThreshold; - 8007250: 687b ldr r3, [r7, #4] - 8007252: 6a9b ldr r3, [r3, #40] @ 0x28 - 8007254: 60bb str r3, [r7, #8] + 80074a4: 687b ldr r3, [r7, #4] + 80074a6: 6a9b ldr r3, [r3, #40] @ 0x28 + 80074a8: 60bb str r3, [r7, #8] /* Memory Data size equal to Byte */ if(hdma->Init.MemDataAlignment == DMA_MDATAALIGN_BYTE) - 8007256: 687b ldr r3, [r7, #4] - 8007258: 699b ldr r3, [r3, #24] - 800725a: 2b00 cmp r3, #0 - 800725c: d11f bne.n 800729e + 80074aa: 687b ldr r3, [r7, #4] + 80074ac: 699b ldr r3, [r3, #24] + 80074ae: 2b00 cmp r3, #0 + 80074b0: d11f bne.n 80074f2 { switch (tmp) - 800725e: 68bb ldr r3, [r7, #8] - 8007260: 2b03 cmp r3, #3 - 8007262: d856 bhi.n 8007312 - 8007264: a201 add r2, pc, #4 @ (adr r2, 800726c ) - 8007266: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 800726a: bf00 nop - 800726c: 0800727d .word 0x0800727d - 8007270: 0800728f .word 0x0800728f - 8007274: 0800727d .word 0x0800727d - 8007278: 08007313 .word 0x08007313 + 80074b2: 68bb ldr r3, [r7, #8] + 80074b4: 2b03 cmp r3, #3 + 80074b6: d856 bhi.n 8007566 + 80074b8: a201 add r2, pc, #4 @ (adr r2, 80074c0 ) + 80074ba: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 80074be: bf00 nop + 80074c0: 080074d1 .word 0x080074d1 + 80074c4: 080074e3 .word 0x080074e3 + 80074c8: 080074d1 .word 0x080074d1 + 80074cc: 08007567 .word 0x08007567 { case DMA_FIFO_THRESHOLD_1QUARTERFULL: case DMA_FIFO_THRESHOLD_3QUARTERSFULL: if ((hdma->Init.MemBurst & DMA_SxCR_MBURST_1) == DMA_SxCR_MBURST_1) - 800727c: 687b ldr r3, [r7, #4] - 800727e: 6adb ldr r3, [r3, #44] @ 0x2c - 8007280: f003 7380 and.w r3, r3, #16777216 @ 0x1000000 - 8007284: 2b00 cmp r3, #0 - 8007286: d046 beq.n 8007316 + 80074d0: 687b ldr r3, [r7, #4] + 80074d2: 6adb ldr r3, [r3, #44] @ 0x2c + 80074d4: f003 7380 and.w r3, r3, #16777216 @ 0x1000000 + 80074d8: 2b00 cmp r3, #0 + 80074da: d046 beq.n 800756a { status = HAL_ERROR; - 8007288: 2301 movs r3, #1 - 800728a: 73fb strb r3, [r7, #15] + 80074dc: 2301 movs r3, #1 + 80074de: 73fb strb r3, [r7, #15] } break; - 800728c: e043 b.n 8007316 + 80074e0: e043 b.n 800756a case DMA_FIFO_THRESHOLD_HALFFULL: if (hdma->Init.MemBurst == DMA_MBURST_INC16) - 800728e: 687b ldr r3, [r7, #4] - 8007290: 6adb ldr r3, [r3, #44] @ 0x2c - 8007292: f1b3 7fc0 cmp.w r3, #25165824 @ 0x1800000 - 8007296: d140 bne.n 800731a + 80074e2: 687b ldr r3, [r7, #4] + 80074e4: 6adb ldr r3, [r3, #44] @ 0x2c + 80074e6: f1b3 7fc0 cmp.w r3, #25165824 @ 0x1800000 + 80074ea: d140 bne.n 800756e { status = HAL_ERROR; - 8007298: 2301 movs r3, #1 - 800729a: 73fb strb r3, [r7, #15] + 80074ec: 2301 movs r3, #1 + 80074ee: 73fb strb r3, [r7, #15] } break; - 800729c: e03d b.n 800731a + 80074f0: e03d b.n 800756e break; } } /* Memory Data size equal to Half-Word */ else if (hdma->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) - 800729e: 687b ldr r3, [r7, #4] - 80072a0: 699b ldr r3, [r3, #24] - 80072a2: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 - 80072a6: d121 bne.n 80072ec + 80074f2: 687b ldr r3, [r7, #4] + 80074f4: 699b ldr r3, [r3, #24] + 80074f6: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 80074fa: d121 bne.n 8007540 { switch (tmp) - 80072a8: 68bb ldr r3, [r7, #8] - 80072aa: 2b03 cmp r3, #3 - 80072ac: d837 bhi.n 800731e - 80072ae: a201 add r2, pc, #4 @ (adr r2, 80072b4 ) - 80072b0: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 80072b4: 080072c5 .word 0x080072c5 - 80072b8: 080072cb .word 0x080072cb - 80072bc: 080072c5 .word 0x080072c5 - 80072c0: 080072dd .word 0x080072dd + 80074fc: 68bb ldr r3, [r7, #8] + 80074fe: 2b03 cmp r3, #3 + 8007500: d837 bhi.n 8007572 + 8007502: a201 add r2, pc, #4 @ (adr r2, 8007508 ) + 8007504: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8007508: 08007519 .word 0x08007519 + 800750c: 0800751f .word 0x0800751f + 8007510: 08007519 .word 0x08007519 + 8007514: 08007531 .word 0x08007531 { case DMA_FIFO_THRESHOLD_1QUARTERFULL: case DMA_FIFO_THRESHOLD_3QUARTERSFULL: status = HAL_ERROR; - 80072c4: 2301 movs r3, #1 - 80072c6: 73fb strb r3, [r7, #15] + 8007518: 2301 movs r3, #1 + 800751a: 73fb strb r3, [r7, #15] break; - 80072c8: e030 b.n 800732c + 800751c: e030 b.n 8007580 case DMA_FIFO_THRESHOLD_HALFFULL: if ((hdma->Init.MemBurst & DMA_SxCR_MBURST_1) == DMA_SxCR_MBURST_1) - 80072ca: 687b ldr r3, [r7, #4] - 80072cc: 6adb ldr r3, [r3, #44] @ 0x2c - 80072ce: f003 7380 and.w r3, r3, #16777216 @ 0x1000000 - 80072d2: 2b00 cmp r3, #0 - 80072d4: d025 beq.n 8007322 + 800751e: 687b ldr r3, [r7, #4] + 8007520: 6adb ldr r3, [r3, #44] @ 0x2c + 8007522: f003 7380 and.w r3, r3, #16777216 @ 0x1000000 + 8007526: 2b00 cmp r3, #0 + 8007528: d025 beq.n 8007576 { status = HAL_ERROR; - 80072d6: 2301 movs r3, #1 - 80072d8: 73fb strb r3, [r7, #15] + 800752a: 2301 movs r3, #1 + 800752c: 73fb strb r3, [r7, #15] } break; - 80072da: e022 b.n 8007322 + 800752e: e022 b.n 8007576 case DMA_FIFO_THRESHOLD_FULL: if (hdma->Init.MemBurst == DMA_MBURST_INC16) - 80072dc: 687b ldr r3, [r7, #4] - 80072de: 6adb ldr r3, [r3, #44] @ 0x2c - 80072e0: f1b3 7fc0 cmp.w r3, #25165824 @ 0x1800000 - 80072e4: d11f bne.n 8007326 + 8007530: 687b ldr r3, [r7, #4] + 8007532: 6adb ldr r3, [r3, #44] @ 0x2c + 8007534: f1b3 7fc0 cmp.w r3, #25165824 @ 0x1800000 + 8007538: d11f bne.n 800757a { status = HAL_ERROR; - 80072e6: 2301 movs r3, #1 - 80072e8: 73fb strb r3, [r7, #15] + 800753a: 2301 movs r3, #1 + 800753c: 73fb strb r3, [r7, #15] } break; - 80072ea: e01c b.n 8007326 + 800753e: e01c b.n 800757a } /* Memory Data size equal to Word */ else { switch (tmp) - 80072ec: 68bb ldr r3, [r7, #8] - 80072ee: 2b02 cmp r3, #2 - 80072f0: d903 bls.n 80072fa - 80072f2: 68bb ldr r3, [r7, #8] - 80072f4: 2b03 cmp r3, #3 - 80072f6: d003 beq.n 8007300 + 8007540: 68bb ldr r3, [r7, #8] + 8007542: 2b02 cmp r3, #2 + 8007544: d903 bls.n 800754e + 8007546: 68bb ldr r3, [r7, #8] + 8007548: 2b03 cmp r3, #3 + 800754a: d003 beq.n 8007554 { status = HAL_ERROR; } break; default: break; - 80072f8: e018 b.n 800732c + 800754c: e018 b.n 8007580 status = HAL_ERROR; - 80072fa: 2301 movs r3, #1 - 80072fc: 73fb strb r3, [r7, #15] + 800754e: 2301 movs r3, #1 + 8007550: 73fb strb r3, [r7, #15] break; - 80072fe: e015 b.n 800732c + 8007552: e015 b.n 8007580 if ((hdma->Init.MemBurst & DMA_SxCR_MBURST_1) == DMA_SxCR_MBURST_1) - 8007300: 687b ldr r3, [r7, #4] - 8007302: 6adb ldr r3, [r3, #44] @ 0x2c - 8007304: f003 7380 and.w r3, r3, #16777216 @ 0x1000000 - 8007308: 2b00 cmp r3, #0 - 800730a: d00e beq.n 800732a + 8007554: 687b ldr r3, [r7, #4] + 8007556: 6adb ldr r3, [r3, #44] @ 0x2c + 8007558: f003 7380 and.w r3, r3, #16777216 @ 0x1000000 + 800755c: 2b00 cmp r3, #0 + 800755e: d00e beq.n 800757e status = HAL_ERROR; - 800730c: 2301 movs r3, #1 - 800730e: 73fb strb r3, [r7, #15] + 8007560: 2301 movs r3, #1 + 8007562: 73fb strb r3, [r7, #15] break; - 8007310: e00b b.n 800732a + 8007564: e00b b.n 800757e break; - 8007312: bf00 nop - 8007314: e00a b.n 800732c + 8007566: bf00 nop + 8007568: e00a b.n 8007580 break; - 8007316: bf00 nop - 8007318: e008 b.n 800732c + 800756a: bf00 nop + 800756c: e008 b.n 8007580 break; - 800731a: bf00 nop - 800731c: e006 b.n 800732c + 800756e: bf00 nop + 8007570: e006 b.n 8007580 break; - 800731e: bf00 nop - 8007320: e004 b.n 800732c + 8007572: bf00 nop + 8007574: e004 b.n 8007580 break; - 8007322: bf00 nop - 8007324: e002 b.n 800732c + 8007576: bf00 nop + 8007578: e002 b.n 8007580 break; - 8007326: bf00 nop - 8007328: e000 b.n 800732c + 800757a: bf00 nop + 800757c: e000 b.n 8007580 break; - 800732a: bf00 nop + 800757e: bf00 nop } } return status; - 800732c: 7bfb ldrb r3, [r7, #15] + 8007580: 7bfb ldrb r3, [r7, #15] } - 800732e: 4618 mov r0, r3 - 8007330: 3714 adds r7, #20 - 8007332: 46bd mov sp, r7 - 8007334: f85d 7b04 ldr.w r7, [sp], #4 - 8007338: 4770 bx lr - 800733a: bf00 nop + 8007582: 4618 mov r0, r3 + 8007584: 3714 adds r7, #20 + 8007586: 46bd mov sp, r7 + 8007588: f85d 7b04 ldr.w r7, [sp], #4 + 800758c: 4770 bx lr + 800758e: bf00 nop -0800733c : +08007590 : * @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) { - 800733c: b580 push {r7, lr} - 800733e: b088 sub sp, #32 - 8007340: af00 add r7, sp, #0 - 8007342: 6078 str r0, [r7, #4] - 8007344: 6039 str r1, [r7, #0] + 8007590: b580 push {r7, lr} + 8007592: b088 sub sp, #32 + 8007594: af00 add r7, sp, #0 + 8007596: 6078 str r0, [r7, #4] + 8007598: 6039 str r1, [r7, #0] uint32_t position; uint32_t ioposition = 0x00U; - 8007346: 2300 movs r3, #0 - 8007348: 617b str r3, [r7, #20] + 800759a: 2300 movs r3, #0 + 800759c: 617b str r3, [r7, #20] uint32_t iocurrent = 0x00U; - 800734a: 2300 movs r3, #0 - 800734c: 613b str r3, [r7, #16] + 800759e: 2300 movs r3, #0 + 80075a0: 613b str r3, [r7, #16] uint32_t temp = 0x00U; - 800734e: 2300 movs r3, #0 - 8007350: 61bb str r3, [r7, #24] + 80075a2: 2300 movs r3, #0 + 80075a4: 61bb str r3, [r7, #24] /* Check the parameters */ assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); - 8007352: 687b ldr r3, [r7, #4] - 8007354: 4a36 ldr r2, [pc, #216] @ (8007430 ) - 8007356: 4293 cmp r3, r2 - 8007358: d01f beq.n 800739a - 800735a: 687b ldr r3, [r7, #4] - 800735c: 4a35 ldr r2, [pc, #212] @ (8007434 ) - 800735e: 4293 cmp r3, r2 - 8007360: d01b beq.n 800739a - 8007362: 687b ldr r3, [r7, #4] - 8007364: 4a34 ldr r2, [pc, #208] @ (8007438 ) - 8007366: 4293 cmp r3, r2 - 8007368: d017 beq.n 800739a - 800736a: 687b ldr r3, [r7, #4] - 800736c: 4a33 ldr r2, [pc, #204] @ (800743c ) - 800736e: 4293 cmp r3, r2 - 8007370: d013 beq.n 800739a - 8007372: 687b ldr r3, [r7, #4] - 8007374: 4a32 ldr r2, [pc, #200] @ (8007440 ) - 8007376: 4293 cmp r3, r2 - 8007378: d00f beq.n 800739a - 800737a: 687b ldr r3, [r7, #4] - 800737c: 4a31 ldr r2, [pc, #196] @ (8007444 ) - 800737e: 4293 cmp r3, r2 - 8007380: d00b beq.n 800739a - 8007382: 687b ldr r3, [r7, #4] - 8007384: 4a30 ldr r2, [pc, #192] @ (8007448 ) - 8007386: 4293 cmp r3, r2 - 8007388: d007 beq.n 800739a - 800738a: 687b ldr r3, [r7, #4] - 800738c: 4a2f ldr r2, [pc, #188] @ (800744c ) - 800738e: 4293 cmp r3, r2 - 8007390: d003 beq.n 800739a - 8007392: 21ac movs r1, #172 @ 0xac - 8007394: 482e ldr r0, [pc, #184] @ (8007450 ) - 8007396: f7fb feed bl 8003174 + 80075a6: 687b ldr r3, [r7, #4] + 80075a8: 4a36 ldr r2, [pc, #216] @ (8007684 ) + 80075aa: 4293 cmp r3, r2 + 80075ac: d01f beq.n 80075ee + 80075ae: 687b ldr r3, [r7, #4] + 80075b0: 4a35 ldr r2, [pc, #212] @ (8007688 ) + 80075b2: 4293 cmp r3, r2 + 80075b4: d01b beq.n 80075ee + 80075b6: 687b ldr r3, [r7, #4] + 80075b8: 4a34 ldr r2, [pc, #208] @ (800768c ) + 80075ba: 4293 cmp r3, r2 + 80075bc: d017 beq.n 80075ee + 80075be: 687b ldr r3, [r7, #4] + 80075c0: 4a33 ldr r2, [pc, #204] @ (8007690 ) + 80075c2: 4293 cmp r3, r2 + 80075c4: d013 beq.n 80075ee + 80075c6: 687b ldr r3, [r7, #4] + 80075c8: 4a32 ldr r2, [pc, #200] @ (8007694 ) + 80075ca: 4293 cmp r3, r2 + 80075cc: d00f beq.n 80075ee + 80075ce: 687b ldr r3, [r7, #4] + 80075d0: 4a31 ldr r2, [pc, #196] @ (8007698 ) + 80075d2: 4293 cmp r3, r2 + 80075d4: d00b beq.n 80075ee + 80075d6: 687b ldr r3, [r7, #4] + 80075d8: 4a30 ldr r2, [pc, #192] @ (800769c ) + 80075da: 4293 cmp r3, r2 + 80075dc: d007 beq.n 80075ee + 80075de: 687b ldr r3, [r7, #4] + 80075e0: 4a2f ldr r2, [pc, #188] @ (80076a0 ) + 80075e2: 4293 cmp r3, r2 + 80075e4: d003 beq.n 80075ee + 80075e6: 21ac movs r1, #172 @ 0xac + 80075e8: 482e ldr r0, [pc, #184] @ (80076a4 ) + 80075ea: f7fb fe1f bl 800322c assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); - 800739a: 683b ldr r3, [r7, #0] - 800739c: 681b ldr r3, [r3, #0] - 800739e: b29b uxth r3, r3 - 80073a0: 2b00 cmp r3, #0 - 80073a2: d004 beq.n 80073ae - 80073a4: 683b ldr r3, [r7, #0] - 80073a6: 681b ldr r3, [r3, #0] - 80073a8: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 80073ac: d303 bcc.n 80073b6 - 80073ae: 21ad movs r1, #173 @ 0xad - 80073b0: 4827 ldr r0, [pc, #156] @ (8007450 ) - 80073b2: f7fb fedf bl 8003174 + 80075ee: 683b ldr r3, [r7, #0] + 80075f0: 681b ldr r3, [r3, #0] + 80075f2: b29b uxth r3, r3 + 80075f4: 2b00 cmp r3, #0 + 80075f6: d004 beq.n 8007602 + 80075f8: 683b ldr r3, [r7, #0] + 80075fa: 681b ldr r3, [r3, #0] + 80075fc: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 8007600: d303 bcc.n 800760a + 8007602: 21ad movs r1, #173 @ 0xad + 8007604: 4827 ldr r0, [pc, #156] @ (80076a4 ) + 8007606: f7fb fe11 bl 800322c assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); - 80073b6: 683b ldr r3, [r7, #0] - 80073b8: 685b ldr r3, [r3, #4] - 80073ba: 2b00 cmp r3, #0 - 80073bc: d035 beq.n 800742a - 80073be: 683b ldr r3, [r7, #0] - 80073c0: 685b ldr r3, [r3, #4] - 80073c2: 2b01 cmp r3, #1 - 80073c4: d031 beq.n 800742a - 80073c6: 683b ldr r3, [r7, #0] - 80073c8: 685b ldr r3, [r3, #4] - 80073ca: 2b11 cmp r3, #17 - 80073cc: d02d beq.n 800742a - 80073ce: 683b ldr r3, [r7, #0] - 80073d0: 685b ldr r3, [r3, #4] - 80073d2: 2b02 cmp r3, #2 - 80073d4: d029 beq.n 800742a - 80073d6: 683b ldr r3, [r7, #0] - 80073d8: 685b ldr r3, [r3, #4] - 80073da: 2b12 cmp r3, #18 - 80073dc: d025 beq.n 800742a - 80073de: 683b ldr r3, [r7, #0] - 80073e0: 685b ldr r3, [r3, #4] - 80073e2: f5b3 1f88 cmp.w r3, #1114112 @ 0x110000 - 80073e6: d020 beq.n 800742a - 80073e8: 683b ldr r3, [r7, #0] - 80073ea: 685b ldr r3, [r3, #4] - 80073ec: f5b3 1f04 cmp.w r3, #2162688 @ 0x210000 - 80073f0: d01b beq.n 800742a - 80073f2: 683b ldr r3, [r7, #0] - 80073f4: 685b ldr r3, [r3, #4] - 80073f6: f5b3 1f44 cmp.w r3, #3211264 @ 0x310000 - 80073fa: d016 beq.n 800742a - 80073fc: 683b ldr r3, [r7, #0] - 80073fe: 685b ldr r3, [r3, #4] - 8007400: f5b3 1f90 cmp.w r3, #1179648 @ 0x120000 - 8007404: d011 beq.n 800742a - 8007406: 683b ldr r3, [r7, #0] - 8007408: 685b ldr r3, [r3, #4] - 800740a: f5b3 1f08 cmp.w r3, #2228224 @ 0x220000 - 800740e: d00c beq.n 800742a - 8007410: 683b ldr r3, [r7, #0] - 8007412: 685b ldr r3, [r3, #4] - 8007414: f5b3 1f48 cmp.w r3, #3276800 @ 0x320000 - 8007418: d007 beq.n 800742a - 800741a: 683b ldr r3, [r7, #0] - 800741c: 685b ldr r3, [r3, #4] - 800741e: 2b03 cmp r3, #3 - 8007420: d003 beq.n 800742a - 8007422: 21ae movs r1, #174 @ 0xae - 8007424: 480a ldr r0, [pc, #40] @ (8007450 ) - 8007426: f7fb fea5 bl 8003174 + 800760a: 683b ldr r3, [r7, #0] + 800760c: 685b ldr r3, [r3, #4] + 800760e: 2b00 cmp r3, #0 + 8007610: d035 beq.n 800767e + 8007612: 683b ldr r3, [r7, #0] + 8007614: 685b ldr r3, [r3, #4] + 8007616: 2b01 cmp r3, #1 + 8007618: d031 beq.n 800767e + 800761a: 683b ldr r3, [r7, #0] + 800761c: 685b ldr r3, [r3, #4] + 800761e: 2b11 cmp r3, #17 + 8007620: d02d beq.n 800767e + 8007622: 683b ldr r3, [r7, #0] + 8007624: 685b ldr r3, [r3, #4] + 8007626: 2b02 cmp r3, #2 + 8007628: d029 beq.n 800767e + 800762a: 683b ldr r3, [r7, #0] + 800762c: 685b ldr r3, [r3, #4] + 800762e: 2b12 cmp r3, #18 + 8007630: d025 beq.n 800767e + 8007632: 683b ldr r3, [r7, #0] + 8007634: 685b ldr r3, [r3, #4] + 8007636: f5b3 1f88 cmp.w r3, #1114112 @ 0x110000 + 800763a: d020 beq.n 800767e + 800763c: 683b ldr r3, [r7, #0] + 800763e: 685b ldr r3, [r3, #4] + 8007640: f5b3 1f04 cmp.w r3, #2162688 @ 0x210000 + 8007644: d01b beq.n 800767e + 8007646: 683b ldr r3, [r7, #0] + 8007648: 685b ldr r3, [r3, #4] + 800764a: f5b3 1f44 cmp.w r3, #3211264 @ 0x310000 + 800764e: d016 beq.n 800767e + 8007650: 683b ldr r3, [r7, #0] + 8007652: 685b ldr r3, [r3, #4] + 8007654: f5b3 1f90 cmp.w r3, #1179648 @ 0x120000 + 8007658: d011 beq.n 800767e + 800765a: 683b ldr r3, [r7, #0] + 800765c: 685b ldr r3, [r3, #4] + 800765e: f5b3 1f08 cmp.w r3, #2228224 @ 0x220000 + 8007662: d00c beq.n 800767e + 8007664: 683b ldr r3, [r7, #0] + 8007666: 685b ldr r3, [r3, #4] + 8007668: f5b3 1f48 cmp.w r3, #3276800 @ 0x320000 + 800766c: d007 beq.n 800767e + 800766e: 683b ldr r3, [r7, #0] + 8007670: 685b ldr r3, [r3, #4] + 8007672: 2b03 cmp r3, #3 + 8007674: d003 beq.n 800767e + 8007676: 21ae movs r1, #174 @ 0xae + 8007678: 480a ldr r0, [pc, #40] @ (80076a4 ) + 800767a: f7fb fdd7 bl 800322c /* Configure the port pins */ for(position = 0U; position < GPIO_NUMBER; position++) - 800742a: 2300 movs r3, #0 - 800742c: 61fb str r3, [r7, #28] - 800742e: e1bc b.n 80077aa - 8007430: 40020000 .word 0x40020000 - 8007434: 40020400 .word 0x40020400 - 8007438: 40020800 .word 0x40020800 - 800743c: 40020c00 .word 0x40020c00 - 8007440: 40021000 .word 0x40021000 - 8007444: 40021400 .word 0x40021400 - 8007448: 40021800 .word 0x40021800 - 800744c: 40021c00 .word 0x40021c00 - 8007450: 0800e7e8 .word 0x0800e7e8 + 800767e: 2300 movs r3, #0 + 8007680: 61fb str r3, [r7, #28] + 8007682: e1bc b.n 80079fe + 8007684: 40020000 .word 0x40020000 + 8007688: 40020400 .word 0x40020400 + 800768c: 40020800 .word 0x40020800 + 8007690: 40020c00 .word 0x40020c00 + 8007694: 40021000 .word 0x40021000 + 8007698: 40021400 .word 0x40021400 + 800769c: 40021800 .word 0x40021800 + 80076a0: 40021c00 .word 0x40021c00 + 80076a4: 0800ed58 .word 0x0800ed58 { /* Get the IO position */ ioposition = 0x01U << position; - 8007454: 2201 movs r2, #1 - 8007456: 69fb ldr r3, [r7, #28] - 8007458: fa02 f303 lsl.w r3, r2, r3 - 800745c: 617b str r3, [r7, #20] + 80076a8: 2201 movs r2, #1 + 80076aa: 69fb ldr r3, [r7, #28] + 80076ac: fa02 f303 lsl.w r3, r2, r3 + 80076b0: 617b str r3, [r7, #20] /* Get the current IO position */ iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition; - 800745e: 683b ldr r3, [r7, #0] - 8007460: 681b ldr r3, [r3, #0] - 8007462: 697a ldr r2, [r7, #20] - 8007464: 4013 ands r3, r2 - 8007466: 613b str r3, [r7, #16] + 80076b2: 683b ldr r3, [r7, #0] + 80076b4: 681b ldr r3, [r3, #0] + 80076b6: 697a ldr r2, [r7, #20] + 80076b8: 4013 ands r3, r2 + 80076ba: 613b str r3, [r7, #16] if(iocurrent == ioposition) - 8007468: 693a ldr r2, [r7, #16] - 800746a: 697b ldr r3, [r7, #20] - 800746c: 429a cmp r2, r3 - 800746e: f040 8199 bne.w 80077a4 + 80076bc: 693a ldr r2, [r7, #16] + 80076be: 697b ldr r3, [r7, #20] + 80076c0: 429a cmp r2, r3 + 80076c2: f040 8199 bne.w 80079f8 { /*--------------------- GPIO Mode Configuration ------------------------*/ /* In case of Output or Alternate function mode selection */ if(((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || \ - 8007472: 683b ldr r3, [r7, #0] - 8007474: 685b ldr r3, [r3, #4] - 8007476: f003 0303 and.w r3, r3, #3 - 800747a: 2b01 cmp r3, #1 - 800747c: d005 beq.n 800748a + 80076c6: 683b ldr r3, [r7, #0] + 80076c8: 685b ldr r3, [r3, #4] + 80076ca: f003 0303 and.w r3, r3, #3 + 80076ce: 2b01 cmp r3, #1 + 80076d0: d005 beq.n 80076de (GPIO_Init->Mode & GPIO_MODE) == MODE_AF) - 800747e: 683b ldr r3, [r7, #0] - 8007480: 685b ldr r3, [r3, #4] - 8007482: f003 0303 and.w r3, r3, #3 + 80076d2: 683b ldr r3, [r7, #0] + 80076d4: 685b ldr r3, [r3, #4] + 80076d6: f003 0303 and.w r3, r3, #3 if(((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || \ - 8007486: 2b02 cmp r3, #2 - 8007488: d144 bne.n 8007514 + 80076da: 2b02 cmp r3, #2 + 80076dc: d144 bne.n 8007768 { /* Check the Speed parameter */ assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); - 800748a: 683b ldr r3, [r7, #0] - 800748c: 68db ldr r3, [r3, #12] - 800748e: 2b00 cmp r3, #0 - 8007490: d00f beq.n 80074b2 - 8007492: 683b ldr r3, [r7, #0] - 8007494: 68db ldr r3, [r3, #12] - 8007496: 2b01 cmp r3, #1 - 8007498: d00b beq.n 80074b2 - 800749a: 683b ldr r3, [r7, #0] - 800749c: 68db ldr r3, [r3, #12] - 800749e: 2b02 cmp r3, #2 - 80074a0: d007 beq.n 80074b2 - 80074a2: 683b ldr r3, [r7, #0] - 80074a4: 68db ldr r3, [r3, #12] - 80074a6: 2b03 cmp r3, #3 - 80074a8: d003 beq.n 80074b2 - 80074aa: 21c0 movs r1, #192 @ 0xc0 - 80074ac: 4881 ldr r0, [pc, #516] @ (80076b4 ) - 80074ae: f7fb fe61 bl 8003174 + 80076de: 683b ldr r3, [r7, #0] + 80076e0: 68db ldr r3, [r3, #12] + 80076e2: 2b00 cmp r3, #0 + 80076e4: d00f beq.n 8007706 + 80076e6: 683b ldr r3, [r7, #0] + 80076e8: 68db ldr r3, [r3, #12] + 80076ea: 2b01 cmp r3, #1 + 80076ec: d00b beq.n 8007706 + 80076ee: 683b ldr r3, [r7, #0] + 80076f0: 68db ldr r3, [r3, #12] + 80076f2: 2b02 cmp r3, #2 + 80076f4: d007 beq.n 8007706 + 80076f6: 683b ldr r3, [r7, #0] + 80076f8: 68db ldr r3, [r3, #12] + 80076fa: 2b03 cmp r3, #3 + 80076fc: d003 beq.n 8007706 + 80076fe: 21c0 movs r1, #192 @ 0xc0 + 8007700: 4881 ldr r0, [pc, #516] @ (8007908 ) + 8007702: f7fb fd93 bl 800322c /* Configure the IO Speed */ temp = GPIOx->OSPEEDR; - 80074b2: 687b ldr r3, [r7, #4] - 80074b4: 689b ldr r3, [r3, #8] - 80074b6: 61bb str r3, [r7, #24] + 8007706: 687b ldr r3, [r7, #4] + 8007708: 689b ldr r3, [r3, #8] + 800770a: 61bb str r3, [r7, #24] temp &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2U)); - 80074b8: 69fb ldr r3, [r7, #28] - 80074ba: 005b lsls r3, r3, #1 - 80074bc: 2203 movs r2, #3 - 80074be: fa02 f303 lsl.w r3, r2, r3 - 80074c2: 43db mvns r3, r3 - 80074c4: 69ba ldr r2, [r7, #24] - 80074c6: 4013 ands r3, r2 - 80074c8: 61bb str r3, [r7, #24] + 800770c: 69fb ldr r3, [r7, #28] + 800770e: 005b lsls r3, r3, #1 + 8007710: 2203 movs r2, #3 + 8007712: fa02 f303 lsl.w r3, r2, r3 + 8007716: 43db mvns r3, r3 + 8007718: 69ba ldr r2, [r7, #24] + 800771a: 4013 ands r3, r2 + 800771c: 61bb str r3, [r7, #24] temp |= (GPIO_Init->Speed << (position * 2U)); - 80074ca: 683b ldr r3, [r7, #0] - 80074cc: 68da ldr r2, [r3, #12] - 80074ce: 69fb ldr r3, [r7, #28] - 80074d0: 005b lsls r3, r3, #1 - 80074d2: fa02 f303 lsl.w r3, r2, r3 - 80074d6: 69ba ldr r2, [r7, #24] - 80074d8: 4313 orrs r3, r2 - 80074da: 61bb str r3, [r7, #24] + 800771e: 683b ldr r3, [r7, #0] + 8007720: 68da ldr r2, [r3, #12] + 8007722: 69fb ldr r3, [r7, #28] + 8007724: 005b lsls r3, r3, #1 + 8007726: fa02 f303 lsl.w r3, r2, r3 + 800772a: 69ba ldr r2, [r7, #24] + 800772c: 4313 orrs r3, r2 + 800772e: 61bb str r3, [r7, #24] GPIOx->OSPEEDR = temp; - 80074dc: 687b ldr r3, [r7, #4] - 80074de: 69ba ldr r2, [r7, #24] - 80074e0: 609a str r2, [r3, #8] + 8007730: 687b ldr r3, [r7, #4] + 8007732: 69ba ldr r2, [r7, #24] + 8007734: 609a str r2, [r3, #8] /* Configure the IO Output Type */ temp = GPIOx->OTYPER; - 80074e2: 687b ldr r3, [r7, #4] - 80074e4: 685b ldr r3, [r3, #4] - 80074e6: 61bb str r3, [r7, #24] + 8007736: 687b ldr r3, [r7, #4] + 8007738: 685b ldr r3, [r3, #4] + 800773a: 61bb str r3, [r7, #24] temp &= ~(GPIO_OTYPER_OT_0 << position) ; - 80074e8: 2201 movs r2, #1 - 80074ea: 69fb ldr r3, [r7, #28] - 80074ec: fa02 f303 lsl.w r3, r2, r3 - 80074f0: 43db mvns r3, r3 - 80074f2: 69ba ldr r2, [r7, #24] - 80074f4: 4013 ands r3, r2 - 80074f6: 61bb str r3, [r7, #24] + 800773c: 2201 movs r2, #1 + 800773e: 69fb ldr r3, [r7, #28] + 8007740: fa02 f303 lsl.w r3, r2, r3 + 8007744: 43db mvns r3, r3 + 8007746: 69ba ldr r2, [r7, #24] + 8007748: 4013 ands r3, r2 + 800774a: 61bb str r3, [r7, #24] temp |= (((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); - 80074f8: 683b ldr r3, [r7, #0] - 80074fa: 685b ldr r3, [r3, #4] - 80074fc: 091b lsrs r3, r3, #4 - 80074fe: f003 0201 and.w r2, r3, #1 - 8007502: 69fb ldr r3, [r7, #28] - 8007504: fa02 f303 lsl.w r3, r2, r3 - 8007508: 69ba ldr r2, [r7, #24] - 800750a: 4313 orrs r3, r2 - 800750c: 61bb str r3, [r7, #24] + 800774c: 683b ldr r3, [r7, #0] + 800774e: 685b ldr r3, [r3, #4] + 8007750: 091b lsrs r3, r3, #4 + 8007752: f003 0201 and.w r2, r3, #1 + 8007756: 69fb ldr r3, [r7, #28] + 8007758: fa02 f303 lsl.w r3, r2, r3 + 800775c: 69ba ldr r2, [r7, #24] + 800775e: 4313 orrs r3, r2 + 8007760: 61bb str r3, [r7, #24] GPIOx->OTYPER = temp; - 800750e: 687b ldr r3, [r7, #4] - 8007510: 69ba ldr r2, [r7, #24] - 8007512: 605a str r2, [r3, #4] + 8007762: 687b ldr r3, [r7, #4] + 8007764: 69ba ldr r2, [r7, #24] + 8007766: 605a str r2, [r3, #4] } if((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) - 8007514: 683b ldr r3, [r7, #0] - 8007516: 685b ldr r3, [r3, #4] - 8007518: f003 0303 and.w r3, r3, #3 - 800751c: 2b03 cmp r3, #3 - 800751e: d027 beq.n 8007570 + 8007768: 683b ldr r3, [r7, #0] + 800776a: 685b ldr r3, [r3, #4] + 800776c: f003 0303 and.w r3, r3, #3 + 8007770: 2b03 cmp r3, #3 + 8007772: d027 beq.n 80077c4 { /* Check the parameters */ assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); - 8007520: 683b ldr r3, [r7, #0] - 8007522: 689b ldr r3, [r3, #8] - 8007524: 2b00 cmp r3, #0 - 8007526: d00b beq.n 8007540 - 8007528: 683b ldr r3, [r7, #0] - 800752a: 689b ldr r3, [r3, #8] - 800752c: 2b01 cmp r3, #1 - 800752e: d007 beq.n 8007540 - 8007530: 683b ldr r3, [r7, #0] - 8007532: 689b ldr r3, [r3, #8] - 8007534: 2b02 cmp r3, #2 - 8007536: d003 beq.n 8007540 - 8007538: 21d1 movs r1, #209 @ 0xd1 - 800753a: 485e ldr r0, [pc, #376] @ (80076b4 ) - 800753c: f7fb fe1a bl 8003174 + 8007774: 683b ldr r3, [r7, #0] + 8007776: 689b ldr r3, [r3, #8] + 8007778: 2b00 cmp r3, #0 + 800777a: d00b beq.n 8007794 + 800777c: 683b ldr r3, [r7, #0] + 800777e: 689b ldr r3, [r3, #8] + 8007780: 2b01 cmp r3, #1 + 8007782: d007 beq.n 8007794 + 8007784: 683b ldr r3, [r7, #0] + 8007786: 689b ldr r3, [r3, #8] + 8007788: 2b02 cmp r3, #2 + 800778a: d003 beq.n 8007794 + 800778c: 21d1 movs r1, #209 @ 0xd1 + 800778e: 485e ldr r0, [pc, #376] @ (8007908 ) + 8007790: f7fb fd4c bl 800322c /* Activate the Pull-up or Pull down resistor for the current IO */ temp = GPIOx->PUPDR; - 8007540: 687b ldr r3, [r7, #4] - 8007542: 68db ldr r3, [r3, #12] - 8007544: 61bb str r3, [r7, #24] + 8007794: 687b ldr r3, [r7, #4] + 8007796: 68db ldr r3, [r3, #12] + 8007798: 61bb str r3, [r7, #24] temp &= ~(GPIO_PUPDR_PUPDR0 << (position * 2U)); - 8007546: 69fb ldr r3, [r7, #28] - 8007548: 005b lsls r3, r3, #1 - 800754a: 2203 movs r2, #3 - 800754c: fa02 f303 lsl.w r3, r2, r3 - 8007550: 43db mvns r3, r3 - 8007552: 69ba ldr r2, [r7, #24] - 8007554: 4013 ands r3, r2 - 8007556: 61bb str r3, [r7, #24] + 800779a: 69fb ldr r3, [r7, #28] + 800779c: 005b lsls r3, r3, #1 + 800779e: 2203 movs r2, #3 + 80077a0: fa02 f303 lsl.w r3, r2, r3 + 80077a4: 43db mvns r3, r3 + 80077a6: 69ba ldr r2, [r7, #24] + 80077a8: 4013 ands r3, r2 + 80077aa: 61bb str r3, [r7, #24] temp |= ((GPIO_Init->Pull) << (position * 2U)); - 8007558: 683b ldr r3, [r7, #0] - 800755a: 689a ldr r2, [r3, #8] - 800755c: 69fb ldr r3, [r7, #28] - 800755e: 005b lsls r3, r3, #1 - 8007560: fa02 f303 lsl.w r3, r2, r3 - 8007564: 69ba ldr r2, [r7, #24] - 8007566: 4313 orrs r3, r2 - 8007568: 61bb str r3, [r7, #24] + 80077ac: 683b ldr r3, [r7, #0] + 80077ae: 689a ldr r2, [r3, #8] + 80077b0: 69fb ldr r3, [r7, #28] + 80077b2: 005b lsls r3, r3, #1 + 80077b4: fa02 f303 lsl.w r3, r2, r3 + 80077b8: 69ba ldr r2, [r7, #24] + 80077ba: 4313 orrs r3, r2 + 80077bc: 61bb str r3, [r7, #24] GPIOx->PUPDR = temp; - 800756a: 687b ldr r3, [r7, #4] - 800756c: 69ba ldr r2, [r7, #24] - 800756e: 60da str r2, [r3, #12] + 80077be: 687b ldr r3, [r7, #4] + 80077c0: 69ba ldr r2, [r7, #24] + 80077c2: 60da str r2, [r3, #12] } /* In case of Alternate function mode selection */ if((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) - 8007570: 683b ldr r3, [r7, #0] - 8007572: 685b ldr r3, [r3, #4] - 8007574: f003 0303 and.w r3, r3, #3 - 8007578: 2b02 cmp r3, #2 - 800757a: d12f bne.n 80075dc + 80077c4: 683b ldr r3, [r7, #0] + 80077c6: 685b ldr r3, [r3, #4] + 80077c8: f003 0303 and.w r3, r3, #3 + 80077cc: 2b02 cmp r3, #2 + 80077ce: d12f bne.n 8007830 { /* Check the Alternate function parameter */ assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); - 800757c: 683b ldr r3, [r7, #0] - 800757e: 691b ldr r3, [r3, #16] - 8007580: 2b0f cmp r3, #15 - 8007582: d803 bhi.n 800758c - 8007584: 683b ldr r3, [r7, #0] - 8007586: 691b ldr r3, [r3, #16] - 8007588: 2b0d cmp r3, #13 - 800758a: d103 bne.n 8007594 - 800758c: 21de movs r1, #222 @ 0xde - 800758e: 4849 ldr r0, [pc, #292] @ (80076b4 ) - 8007590: f7fb fdf0 bl 8003174 + 80077d0: 683b ldr r3, [r7, #0] + 80077d2: 691b ldr r3, [r3, #16] + 80077d4: 2b0f cmp r3, #15 + 80077d6: d803 bhi.n 80077e0 + 80077d8: 683b ldr r3, [r7, #0] + 80077da: 691b ldr r3, [r3, #16] + 80077dc: 2b0d cmp r3, #13 + 80077de: d103 bne.n 80077e8 + 80077e0: 21de movs r1, #222 @ 0xde + 80077e2: 4849 ldr r0, [pc, #292] @ (8007908 ) + 80077e4: f7fb fd22 bl 800322c /* Configure Alternate function mapped with the current IO */ temp = GPIOx->AFR[position >> 3U]; - 8007594: 69fb ldr r3, [r7, #28] - 8007596: 08da lsrs r2, r3, #3 - 8007598: 687b ldr r3, [r7, #4] - 800759a: 3208 adds r2, #8 - 800759c: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 80075a0: 61bb str r3, [r7, #24] + 80077e8: 69fb ldr r3, [r7, #28] + 80077ea: 08da lsrs r2, r3, #3 + 80077ec: 687b ldr r3, [r7, #4] + 80077ee: 3208 adds r2, #8 + 80077f0: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 80077f4: 61bb str r3, [r7, #24] temp &= ~(0xFU << ((uint32_t)(position & 0x07U) * 4U)) ; - 80075a2: 69fb ldr r3, [r7, #28] - 80075a4: f003 0307 and.w r3, r3, #7 - 80075a8: 009b lsls r3, r3, #2 - 80075aa: 220f movs r2, #15 - 80075ac: fa02 f303 lsl.w r3, r2, r3 - 80075b0: 43db mvns r3, r3 - 80075b2: 69ba ldr r2, [r7, #24] - 80075b4: 4013 ands r3, r2 - 80075b6: 61bb str r3, [r7, #24] + 80077f6: 69fb ldr r3, [r7, #28] + 80077f8: f003 0307 and.w r3, r3, #7 + 80077fc: 009b lsls r3, r3, #2 + 80077fe: 220f movs r2, #15 + 8007800: fa02 f303 lsl.w r3, r2, r3 + 8007804: 43db mvns r3, r3 + 8007806: 69ba ldr r2, [r7, #24] + 8007808: 4013 ands r3, r2 + 800780a: 61bb str r3, [r7, #24] temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & 0x07U) * 4U)); - 80075b8: 683b ldr r3, [r7, #0] - 80075ba: 691a ldr r2, [r3, #16] - 80075bc: 69fb ldr r3, [r7, #28] - 80075be: f003 0307 and.w r3, r3, #7 - 80075c2: 009b lsls r3, r3, #2 - 80075c4: fa02 f303 lsl.w r3, r2, r3 - 80075c8: 69ba ldr r2, [r7, #24] - 80075ca: 4313 orrs r3, r2 - 80075cc: 61bb str r3, [r7, #24] + 800780c: 683b ldr r3, [r7, #0] + 800780e: 691a ldr r2, [r3, #16] + 8007810: 69fb ldr r3, [r7, #28] + 8007812: f003 0307 and.w r3, r3, #7 + 8007816: 009b lsls r3, r3, #2 + 8007818: fa02 f303 lsl.w r3, r2, r3 + 800781c: 69ba ldr r2, [r7, #24] + 800781e: 4313 orrs r3, r2 + 8007820: 61bb str r3, [r7, #24] GPIOx->AFR[position >> 3U] = temp; - 80075ce: 69fb ldr r3, [r7, #28] - 80075d0: 08da lsrs r2, r3, #3 - 80075d2: 687b ldr r3, [r7, #4] - 80075d4: 3208 adds r2, #8 - 80075d6: 69b9 ldr r1, [r7, #24] - 80075d8: f843 1022 str.w r1, [r3, r2, lsl #2] + 8007822: 69fb ldr r3, [r7, #28] + 8007824: 08da lsrs r2, r3, #3 + 8007826: 687b ldr r3, [r7, #4] + 8007828: 3208 adds r2, #8 + 800782a: 69b9 ldr r1, [r7, #24] + 800782c: f843 1022 str.w r1, [r3, r2, lsl #2] } /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ temp = GPIOx->MODER; - 80075dc: 687b ldr r3, [r7, #4] - 80075de: 681b ldr r3, [r3, #0] - 80075e0: 61bb str r3, [r7, #24] + 8007830: 687b ldr r3, [r7, #4] + 8007832: 681b ldr r3, [r3, #0] + 8007834: 61bb str r3, [r7, #24] temp &= ~(GPIO_MODER_MODER0 << (position * 2U)); - 80075e2: 69fb ldr r3, [r7, #28] - 80075e4: 005b lsls r3, r3, #1 - 80075e6: 2203 movs r2, #3 - 80075e8: fa02 f303 lsl.w r3, r2, r3 - 80075ec: 43db mvns r3, r3 - 80075ee: 69ba ldr r2, [r7, #24] - 80075f0: 4013 ands r3, r2 - 80075f2: 61bb str r3, [r7, #24] + 8007836: 69fb ldr r3, [r7, #28] + 8007838: 005b lsls r3, r3, #1 + 800783a: 2203 movs r2, #3 + 800783c: fa02 f303 lsl.w r3, r2, r3 + 8007840: 43db mvns r3, r3 + 8007842: 69ba ldr r2, [r7, #24] + 8007844: 4013 ands r3, r2 + 8007846: 61bb str r3, [r7, #24] temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U)); - 80075f4: 683b ldr r3, [r7, #0] - 80075f6: 685b ldr r3, [r3, #4] - 80075f8: f003 0203 and.w r2, r3, #3 - 80075fc: 69fb ldr r3, [r7, #28] - 80075fe: 005b lsls r3, r3, #1 - 8007600: fa02 f303 lsl.w r3, r2, r3 - 8007604: 69ba ldr r2, [r7, #24] - 8007606: 4313 orrs r3, r2 - 8007608: 61bb str r3, [r7, #24] + 8007848: 683b ldr r3, [r7, #0] + 800784a: 685b ldr r3, [r3, #4] + 800784c: f003 0203 and.w r2, r3, #3 + 8007850: 69fb ldr r3, [r7, #28] + 8007852: 005b lsls r3, r3, #1 + 8007854: fa02 f303 lsl.w r3, r2, r3 + 8007858: 69ba ldr r2, [r7, #24] + 800785a: 4313 orrs r3, r2 + 800785c: 61bb str r3, [r7, #24] GPIOx->MODER = temp; - 800760a: 687b ldr r3, [r7, #4] - 800760c: 69ba ldr r2, [r7, #24] - 800760e: 601a str r2, [r3, #0] + 800785e: 687b ldr r3, [r7, #4] + 8007860: 69ba ldr r2, [r7, #24] + 8007862: 601a str r2, [r3, #0] /*--------------------- EXTI Mode Configuration ------------------------*/ /* Configure the External Interrupt or event for the current IO */ if((GPIO_Init->Mode & EXTI_MODE) != 0x00U) - 8007610: 683b ldr r3, [r7, #0] - 8007612: 685b ldr r3, [r3, #4] - 8007614: f403 3340 and.w r3, r3, #196608 @ 0x30000 - 8007618: 2b00 cmp r3, #0 - 800761a: f000 80c3 beq.w 80077a4 + 8007864: 683b ldr r3, [r7, #0] + 8007866: 685b ldr r3, [r3, #4] + 8007868: f403 3340 and.w r3, r3, #196608 @ 0x30000 + 800786c: 2b00 cmp r3, #0 + 800786e: f000 80c3 beq.w 80079f8 { /* Enable SYSCFG Clock */ __HAL_RCC_SYSCFG_CLK_ENABLE(); - 800761e: 2300 movs r3, #0 - 8007620: 60fb str r3, [r7, #12] - 8007622: 4b25 ldr r3, [pc, #148] @ (80076b8 ) - 8007624: 6c5b ldr r3, [r3, #68] @ 0x44 - 8007626: 4a24 ldr r2, [pc, #144] @ (80076b8 ) - 8007628: f443 4380 orr.w r3, r3, #16384 @ 0x4000 - 800762c: 6453 str r3, [r2, #68] @ 0x44 - 800762e: 4b22 ldr r3, [pc, #136] @ (80076b8 ) - 8007630: 6c5b ldr r3, [r3, #68] @ 0x44 - 8007632: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8007636: 60fb str r3, [r7, #12] - 8007638: 68fb ldr r3, [r7, #12] + 8007872: 2300 movs r3, #0 + 8007874: 60fb str r3, [r7, #12] + 8007876: 4b25 ldr r3, [pc, #148] @ (800790c ) + 8007878: 6c5b ldr r3, [r3, #68] @ 0x44 + 800787a: 4a24 ldr r2, [pc, #144] @ (800790c ) + 800787c: f443 4380 orr.w r3, r3, #16384 @ 0x4000 + 8007880: 6453 str r3, [r2, #68] @ 0x44 + 8007882: 4b22 ldr r3, [pc, #136] @ (800790c ) + 8007884: 6c5b ldr r3, [r3, #68] @ 0x44 + 8007886: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 800788a: 60fb str r3, [r7, #12] + 800788c: 68fb ldr r3, [r7, #12] temp = SYSCFG->EXTICR[position >> 2U]; - 800763a: 4a20 ldr r2, [pc, #128] @ (80076bc ) - 800763c: 69fb ldr r3, [r7, #28] - 800763e: 089b lsrs r3, r3, #2 - 8007640: 3302 adds r3, #2 - 8007642: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 8007646: 61bb str r3, [r7, #24] + 800788e: 4a20 ldr r2, [pc, #128] @ (8007910 ) + 8007890: 69fb ldr r3, [r7, #28] + 8007892: 089b lsrs r3, r3, #2 + 8007894: 3302 adds r3, #2 + 8007896: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 800789a: 61bb str r3, [r7, #24] temp &= ~(0x0FU << (4U * (position & 0x03U))); - 8007648: 69fb ldr r3, [r7, #28] - 800764a: f003 0303 and.w r3, r3, #3 - 800764e: 009b lsls r3, r3, #2 - 8007650: 220f movs r2, #15 - 8007652: fa02 f303 lsl.w r3, r2, r3 - 8007656: 43db mvns r3, r3 - 8007658: 69ba ldr r2, [r7, #24] - 800765a: 4013 ands r3, r2 - 800765c: 61bb str r3, [r7, #24] + 800789c: 69fb ldr r3, [r7, #28] + 800789e: f003 0303 and.w r3, r3, #3 + 80078a2: 009b lsls r3, r3, #2 + 80078a4: 220f movs r2, #15 + 80078a6: fa02 f303 lsl.w r3, r2, r3 + 80078aa: 43db mvns r3, r3 + 80078ac: 69ba ldr r2, [r7, #24] + 80078ae: 4013 ands r3, r2 + 80078b0: 61bb str r3, [r7, #24] temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4U * (position & 0x03U))); - 800765e: 687b ldr r3, [r7, #4] - 8007660: 4a17 ldr r2, [pc, #92] @ (80076c0 ) - 8007662: 4293 cmp r3, r2 - 8007664: d03a beq.n 80076dc - 8007666: 687b ldr r3, [r7, #4] - 8007668: 4a16 ldr r2, [pc, #88] @ (80076c4 ) - 800766a: 4293 cmp r3, r2 - 800766c: d01f beq.n 80076ae - 800766e: 687b ldr r3, [r7, #4] - 8007670: 4a15 ldr r2, [pc, #84] @ (80076c8 ) - 8007672: 4293 cmp r3, r2 - 8007674: d019 beq.n 80076aa - 8007676: 687b ldr r3, [r7, #4] - 8007678: 4a14 ldr r2, [pc, #80] @ (80076cc ) - 800767a: 4293 cmp r3, r2 - 800767c: d013 beq.n 80076a6 - 800767e: 687b ldr r3, [r7, #4] - 8007680: 4a13 ldr r2, [pc, #76] @ (80076d0 ) - 8007682: 4293 cmp r3, r2 - 8007684: d00d beq.n 80076a2 - 8007686: 687b ldr r3, [r7, #4] - 8007688: 4a12 ldr r2, [pc, #72] @ (80076d4 ) - 800768a: 4293 cmp r3, r2 - 800768c: d007 beq.n 800769e - 800768e: 687b ldr r3, [r7, #4] - 8007690: 4a11 ldr r2, [pc, #68] @ (80076d8 ) - 8007692: 4293 cmp r3, r2 - 8007694: d101 bne.n 800769a - 8007696: 2306 movs r3, #6 - 8007698: e021 b.n 80076de - 800769a: 2307 movs r3, #7 - 800769c: e01f b.n 80076de - 800769e: 2305 movs r3, #5 - 80076a0: e01d b.n 80076de - 80076a2: 2304 movs r3, #4 - 80076a4: e01b b.n 80076de - 80076a6: 2303 movs r3, #3 - 80076a8: e019 b.n 80076de - 80076aa: 2302 movs r3, #2 - 80076ac: e017 b.n 80076de - 80076ae: 2301 movs r3, #1 - 80076b0: e015 b.n 80076de - 80076b2: bf00 nop - 80076b4: 0800e7e8 .word 0x0800e7e8 - 80076b8: 40023800 .word 0x40023800 - 80076bc: 40013800 .word 0x40013800 - 80076c0: 40020000 .word 0x40020000 - 80076c4: 40020400 .word 0x40020400 - 80076c8: 40020800 .word 0x40020800 - 80076cc: 40020c00 .word 0x40020c00 - 80076d0: 40021000 .word 0x40021000 - 80076d4: 40021400 .word 0x40021400 - 80076d8: 40021800 .word 0x40021800 - 80076dc: 2300 movs r3, #0 - 80076de: 69fa ldr r2, [r7, #28] - 80076e0: f002 0203 and.w r2, r2, #3 - 80076e4: 0092 lsls r2, r2, #2 - 80076e6: 4093 lsls r3, r2 - 80076e8: 69ba ldr r2, [r7, #24] - 80076ea: 4313 orrs r3, r2 - 80076ec: 61bb str r3, [r7, #24] + 80078b2: 687b ldr r3, [r7, #4] + 80078b4: 4a17 ldr r2, [pc, #92] @ (8007914 ) + 80078b6: 4293 cmp r3, r2 + 80078b8: d03a beq.n 8007930 + 80078ba: 687b ldr r3, [r7, #4] + 80078bc: 4a16 ldr r2, [pc, #88] @ (8007918 ) + 80078be: 4293 cmp r3, r2 + 80078c0: d01f beq.n 8007902 + 80078c2: 687b ldr r3, [r7, #4] + 80078c4: 4a15 ldr r2, [pc, #84] @ (800791c ) + 80078c6: 4293 cmp r3, r2 + 80078c8: d019 beq.n 80078fe + 80078ca: 687b ldr r3, [r7, #4] + 80078cc: 4a14 ldr r2, [pc, #80] @ (8007920 ) + 80078ce: 4293 cmp r3, r2 + 80078d0: d013 beq.n 80078fa + 80078d2: 687b ldr r3, [r7, #4] + 80078d4: 4a13 ldr r2, [pc, #76] @ (8007924 ) + 80078d6: 4293 cmp r3, r2 + 80078d8: d00d beq.n 80078f6 + 80078da: 687b ldr r3, [r7, #4] + 80078dc: 4a12 ldr r2, [pc, #72] @ (8007928 ) + 80078de: 4293 cmp r3, r2 + 80078e0: d007 beq.n 80078f2 + 80078e2: 687b ldr r3, [r7, #4] + 80078e4: 4a11 ldr r2, [pc, #68] @ (800792c ) + 80078e6: 4293 cmp r3, r2 + 80078e8: d101 bne.n 80078ee + 80078ea: 2306 movs r3, #6 + 80078ec: e021 b.n 8007932 + 80078ee: 2307 movs r3, #7 + 80078f0: e01f b.n 8007932 + 80078f2: 2305 movs r3, #5 + 80078f4: e01d b.n 8007932 + 80078f6: 2304 movs r3, #4 + 80078f8: e01b b.n 8007932 + 80078fa: 2303 movs r3, #3 + 80078fc: e019 b.n 8007932 + 80078fe: 2302 movs r3, #2 + 8007900: e017 b.n 8007932 + 8007902: 2301 movs r3, #1 + 8007904: e015 b.n 8007932 + 8007906: bf00 nop + 8007908: 0800ed58 .word 0x0800ed58 + 800790c: 40023800 .word 0x40023800 + 8007910: 40013800 .word 0x40013800 + 8007914: 40020000 .word 0x40020000 + 8007918: 40020400 .word 0x40020400 + 800791c: 40020800 .word 0x40020800 + 8007920: 40020c00 .word 0x40020c00 + 8007924: 40021000 .word 0x40021000 + 8007928: 40021400 .word 0x40021400 + 800792c: 40021800 .word 0x40021800 + 8007930: 2300 movs r3, #0 + 8007932: 69fa ldr r2, [r7, #28] + 8007934: f002 0203 and.w r2, r2, #3 + 8007938: 0092 lsls r2, r2, #2 + 800793a: 4093 lsls r3, r2 + 800793c: 69ba ldr r2, [r7, #24] + 800793e: 4313 orrs r3, r2 + 8007940: 61bb str r3, [r7, #24] SYSCFG->EXTICR[position >> 2U] = temp; - 80076ee: 4933 ldr r1, [pc, #204] @ (80077bc ) - 80076f0: 69fb ldr r3, [r7, #28] - 80076f2: 089b lsrs r3, r3, #2 - 80076f4: 3302 adds r3, #2 - 80076f6: 69ba ldr r2, [r7, #24] - 80076f8: f841 2023 str.w r2, [r1, r3, lsl #2] + 8007942: 4933 ldr r1, [pc, #204] @ (8007a10 ) + 8007944: 69fb ldr r3, [r7, #28] + 8007946: 089b lsrs r3, r3, #2 + 8007948: 3302 adds r3, #2 + 800794a: 69ba ldr r2, [r7, #24] + 800794c: f841 2023 str.w r2, [r1, r3, lsl #2] /* Clear Rising Falling edge configuration */ temp = EXTI->RTSR; - 80076fc: 4b30 ldr r3, [pc, #192] @ (80077c0 ) - 80076fe: 689b ldr r3, [r3, #8] - 8007700: 61bb str r3, [r7, #24] + 8007950: 4b30 ldr r3, [pc, #192] @ (8007a14 ) + 8007952: 689b ldr r3, [r3, #8] + 8007954: 61bb str r3, [r7, #24] temp &= ~((uint32_t)iocurrent); - 8007702: 693b ldr r3, [r7, #16] - 8007704: 43db mvns r3, r3 - 8007706: 69ba ldr r2, [r7, #24] - 8007708: 4013 ands r3, r2 - 800770a: 61bb str r3, [r7, #24] + 8007956: 693b ldr r3, [r7, #16] + 8007958: 43db mvns r3, r3 + 800795a: 69ba ldr r2, [r7, #24] + 800795c: 4013 ands r3, r2 + 800795e: 61bb str r3, [r7, #24] if((GPIO_Init->Mode & TRIGGER_RISING) != 0x00U) - 800770c: 683b ldr r3, [r7, #0] - 800770e: 685b ldr r3, [r3, #4] - 8007710: f403 1380 and.w r3, r3, #1048576 @ 0x100000 - 8007714: 2b00 cmp r3, #0 - 8007716: d003 beq.n 8007720 + 8007960: 683b ldr r3, [r7, #0] + 8007962: 685b ldr r3, [r3, #4] + 8007964: f403 1380 and.w r3, r3, #1048576 @ 0x100000 + 8007968: 2b00 cmp r3, #0 + 800796a: d003 beq.n 8007974 { temp |= iocurrent; - 8007718: 69ba ldr r2, [r7, #24] - 800771a: 693b ldr r3, [r7, #16] - 800771c: 4313 orrs r3, r2 - 800771e: 61bb str r3, [r7, #24] + 800796c: 69ba ldr r2, [r7, #24] + 800796e: 693b ldr r3, [r7, #16] + 8007970: 4313 orrs r3, r2 + 8007972: 61bb str r3, [r7, #24] } EXTI->RTSR = temp; - 8007720: 4a27 ldr r2, [pc, #156] @ (80077c0 ) - 8007722: 69bb ldr r3, [r7, #24] - 8007724: 6093 str r3, [r2, #8] + 8007974: 4a27 ldr r2, [pc, #156] @ (8007a14 ) + 8007976: 69bb ldr r3, [r7, #24] + 8007978: 6093 str r3, [r2, #8] temp = EXTI->FTSR; - 8007726: 4b26 ldr r3, [pc, #152] @ (80077c0 ) - 8007728: 68db ldr r3, [r3, #12] - 800772a: 61bb str r3, [r7, #24] + 800797a: 4b26 ldr r3, [pc, #152] @ (8007a14 ) + 800797c: 68db ldr r3, [r3, #12] + 800797e: 61bb str r3, [r7, #24] temp &= ~((uint32_t)iocurrent); - 800772c: 693b ldr r3, [r7, #16] - 800772e: 43db mvns r3, r3 - 8007730: 69ba ldr r2, [r7, #24] - 8007732: 4013 ands r3, r2 - 8007734: 61bb str r3, [r7, #24] + 8007980: 693b ldr r3, [r7, #16] + 8007982: 43db mvns r3, r3 + 8007984: 69ba ldr r2, [r7, #24] + 8007986: 4013 ands r3, r2 + 8007988: 61bb str r3, [r7, #24] if((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00U) - 8007736: 683b ldr r3, [r7, #0] - 8007738: 685b ldr r3, [r3, #4] - 800773a: f403 1300 and.w r3, r3, #2097152 @ 0x200000 - 800773e: 2b00 cmp r3, #0 - 8007740: d003 beq.n 800774a + 800798a: 683b ldr r3, [r7, #0] + 800798c: 685b ldr r3, [r3, #4] + 800798e: f403 1300 and.w r3, r3, #2097152 @ 0x200000 + 8007992: 2b00 cmp r3, #0 + 8007994: d003 beq.n 800799e { temp |= iocurrent; - 8007742: 69ba ldr r2, [r7, #24] - 8007744: 693b ldr r3, [r7, #16] - 8007746: 4313 orrs r3, r2 - 8007748: 61bb str r3, [r7, #24] + 8007996: 69ba ldr r2, [r7, #24] + 8007998: 693b ldr r3, [r7, #16] + 800799a: 4313 orrs r3, r2 + 800799c: 61bb str r3, [r7, #24] } EXTI->FTSR = temp; - 800774a: 4a1d ldr r2, [pc, #116] @ (80077c0 ) - 800774c: 69bb ldr r3, [r7, #24] - 800774e: 60d3 str r3, [r2, #12] + 800799e: 4a1d ldr r2, [pc, #116] @ (8007a14 ) + 80079a0: 69bb ldr r3, [r7, #24] + 80079a2: 60d3 str r3, [r2, #12] temp = EXTI->EMR; - 8007750: 4b1b ldr r3, [pc, #108] @ (80077c0 ) - 8007752: 685b ldr r3, [r3, #4] - 8007754: 61bb str r3, [r7, #24] + 80079a4: 4b1b ldr r3, [pc, #108] @ (8007a14 ) + 80079a6: 685b ldr r3, [r3, #4] + 80079a8: 61bb str r3, [r7, #24] temp &= ~((uint32_t)iocurrent); - 8007756: 693b ldr r3, [r7, #16] - 8007758: 43db mvns r3, r3 - 800775a: 69ba ldr r2, [r7, #24] - 800775c: 4013 ands r3, r2 - 800775e: 61bb str r3, [r7, #24] + 80079aa: 693b ldr r3, [r7, #16] + 80079ac: 43db mvns r3, r3 + 80079ae: 69ba ldr r2, [r7, #24] + 80079b0: 4013 ands r3, r2 + 80079b2: 61bb str r3, [r7, #24] if((GPIO_Init->Mode & EXTI_EVT) != 0x00U) - 8007760: 683b ldr r3, [r7, #0] - 8007762: 685b ldr r3, [r3, #4] - 8007764: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 8007768: 2b00 cmp r3, #0 - 800776a: d003 beq.n 8007774 + 80079b4: 683b ldr r3, [r7, #0] + 80079b6: 685b ldr r3, [r3, #4] + 80079b8: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 80079bc: 2b00 cmp r3, #0 + 80079be: d003 beq.n 80079c8 { temp |= iocurrent; - 800776c: 69ba ldr r2, [r7, #24] - 800776e: 693b ldr r3, [r7, #16] - 8007770: 4313 orrs r3, r2 - 8007772: 61bb str r3, [r7, #24] + 80079c0: 69ba ldr r2, [r7, #24] + 80079c2: 693b ldr r3, [r7, #16] + 80079c4: 4313 orrs r3, r2 + 80079c6: 61bb str r3, [r7, #24] } EXTI->EMR = temp; - 8007774: 4a12 ldr r2, [pc, #72] @ (80077c0 ) - 8007776: 69bb ldr r3, [r7, #24] - 8007778: 6053 str r3, [r2, #4] + 80079c8: 4a12 ldr r2, [pc, #72] @ (8007a14 ) + 80079ca: 69bb ldr r3, [r7, #24] + 80079cc: 6053 str r3, [r2, #4] /* Clear EXTI line configuration */ temp = EXTI->IMR; - 800777a: 4b11 ldr r3, [pc, #68] @ (80077c0 ) - 800777c: 681b ldr r3, [r3, #0] - 800777e: 61bb str r3, [r7, #24] + 80079ce: 4b11 ldr r3, [pc, #68] @ (8007a14 ) + 80079d0: 681b ldr r3, [r3, #0] + 80079d2: 61bb str r3, [r7, #24] temp &= ~((uint32_t)iocurrent); - 8007780: 693b ldr r3, [r7, #16] - 8007782: 43db mvns r3, r3 - 8007784: 69ba ldr r2, [r7, #24] - 8007786: 4013 ands r3, r2 - 8007788: 61bb str r3, [r7, #24] + 80079d4: 693b ldr r3, [r7, #16] + 80079d6: 43db mvns r3, r3 + 80079d8: 69ba ldr r2, [r7, #24] + 80079da: 4013 ands r3, r2 + 80079dc: 61bb str r3, [r7, #24] if((GPIO_Init->Mode & EXTI_IT) != 0x00U) - 800778a: 683b ldr r3, [r7, #0] - 800778c: 685b ldr r3, [r3, #4] - 800778e: f403 3380 and.w r3, r3, #65536 @ 0x10000 - 8007792: 2b00 cmp r3, #0 - 8007794: d003 beq.n 800779e + 80079de: 683b ldr r3, [r7, #0] + 80079e0: 685b ldr r3, [r3, #4] + 80079e2: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 80079e6: 2b00 cmp r3, #0 + 80079e8: d003 beq.n 80079f2 { temp |= iocurrent; - 8007796: 69ba ldr r2, [r7, #24] - 8007798: 693b ldr r3, [r7, #16] - 800779a: 4313 orrs r3, r2 - 800779c: 61bb str r3, [r7, #24] + 80079ea: 69ba ldr r2, [r7, #24] + 80079ec: 693b ldr r3, [r7, #16] + 80079ee: 4313 orrs r3, r2 + 80079f0: 61bb str r3, [r7, #24] } EXTI->IMR = temp; - 800779e: 4a08 ldr r2, [pc, #32] @ (80077c0 ) - 80077a0: 69bb ldr r3, [r7, #24] - 80077a2: 6013 str r3, [r2, #0] + 80079f2: 4a08 ldr r2, [pc, #32] @ (8007a14 ) + 80079f4: 69bb ldr r3, [r7, #24] + 80079f6: 6013 str r3, [r2, #0] for(position = 0U; position < GPIO_NUMBER; position++) - 80077a4: 69fb ldr r3, [r7, #28] - 80077a6: 3301 adds r3, #1 - 80077a8: 61fb str r3, [r7, #28] - 80077aa: 69fb ldr r3, [r7, #28] - 80077ac: 2b0f cmp r3, #15 - 80077ae: f67f ae51 bls.w 8007454 + 80079f8: 69fb ldr r3, [r7, #28] + 80079fa: 3301 adds r3, #1 + 80079fc: 61fb str r3, [r7, #28] + 80079fe: 69fb ldr r3, [r7, #28] + 8007a00: 2b0f cmp r3, #15 + 8007a02: f67f ae51 bls.w 80076a8 } } } } - 80077b2: bf00 nop - 80077b4: bf00 nop - 80077b6: 3720 adds r7, #32 - 80077b8: 46bd mov sp, r7 - 80077ba: bd80 pop {r7, pc} - 80077bc: 40013800 .word 0x40013800 - 80077c0: 40013c00 .word 0x40013c00 + 8007a06: bf00 nop + 8007a08: bf00 nop + 8007a0a: 3720 adds r7, #32 + 8007a0c: 46bd mov sp, r7 + 8007a0e: bd80 pop {r7, pc} + 8007a10: 40013800 .word 0x40013800 + 8007a14: 40013c00 .word 0x40013c00 -080077c4 : +08007a18 : * @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) { - 80077c4: b580 push {r7, lr} - 80077c6: b084 sub sp, #16 - 80077c8: af00 add r7, sp, #0 - 80077ca: 6078 str r0, [r7, #4] - 80077cc: 460b mov r3, r1 - 80077ce: 807b strh r3, [r7, #2] + 8007a18: b580 push {r7, lr} + 8007a1a: b084 sub sp, #16 + 8007a1c: af00 add r7, sp, #0 + 8007a1e: 6078 str r0, [r7, #4] + 8007a20: 460b mov r3, r1 + 8007a22: 807b strh r3, [r7, #2] GPIO_PinState bitstatus; /* Check the parameters */ assert_param(IS_GPIO_PIN(GPIO_Pin)); - 80077d0: 887b ldrh r3, [r7, #2] - 80077d2: 2b00 cmp r3, #0 - 80077d4: d104 bne.n 80077e0 - 80077d6: f44f 71be mov.w r1, #380 @ 0x17c - 80077da: 4809 ldr r0, [pc, #36] @ (8007800 ) - 80077dc: f7fb fcca bl 8003174 + 8007a24: 887b ldrh r3, [r7, #2] + 8007a26: 2b00 cmp r3, #0 + 8007a28: d104 bne.n 8007a34 + 8007a2a: f44f 71be mov.w r1, #380 @ 0x17c + 8007a2e: 4809 ldr r0, [pc, #36] @ (8007a54 ) + 8007a30: f7fb fbfc bl 800322c if((GPIOx->IDR & GPIO_Pin) != (uint32_t)GPIO_PIN_RESET) - 80077e0: 687b ldr r3, [r7, #4] - 80077e2: 691a ldr r2, [r3, #16] - 80077e4: 887b ldrh r3, [r7, #2] - 80077e6: 4013 ands r3, r2 - 80077e8: 2b00 cmp r3, #0 - 80077ea: d002 beq.n 80077f2 + 8007a34: 687b ldr r3, [r7, #4] + 8007a36: 691a ldr r2, [r3, #16] + 8007a38: 887b ldrh r3, [r7, #2] + 8007a3a: 4013 ands r3, r2 + 8007a3c: 2b00 cmp r3, #0 + 8007a3e: d002 beq.n 8007a46 { bitstatus = GPIO_PIN_SET; - 80077ec: 2301 movs r3, #1 - 80077ee: 73fb strb r3, [r7, #15] - 80077f0: e001 b.n 80077f6 + 8007a40: 2301 movs r3, #1 + 8007a42: 73fb strb r3, [r7, #15] + 8007a44: e001 b.n 8007a4a } else { bitstatus = GPIO_PIN_RESET; - 80077f2: 2300 movs r3, #0 - 80077f4: 73fb strb r3, [r7, #15] + 8007a46: 2300 movs r3, #0 + 8007a48: 73fb strb r3, [r7, #15] } return bitstatus; - 80077f6: 7bfb ldrb r3, [r7, #15] + 8007a4a: 7bfb ldrb r3, [r7, #15] } - 80077f8: 4618 mov r0, r3 - 80077fa: 3710 adds r7, #16 - 80077fc: 46bd mov sp, r7 - 80077fe: bd80 pop {r7, pc} - 8007800: 0800e7e8 .word 0x0800e7e8 + 8007a4c: 4618 mov r0, r3 + 8007a4e: 3710 adds r7, #16 + 8007a50: 46bd mov sp, r7 + 8007a52: bd80 pop {r7, pc} + 8007a54: 0800ed58 .word 0x0800ed58 -08007804 : +08007a58 : * @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) { - 8007804: b580 push {r7, lr} - 8007806: b082 sub sp, #8 - 8007808: af00 add r7, sp, #0 - 800780a: 6078 str r0, [r7, #4] - 800780c: 460b mov r3, r1 - 800780e: 807b strh r3, [r7, #2] - 8007810: 4613 mov r3, r2 - 8007812: 707b strb r3, [r7, #1] + 8007a58: b580 push {r7, lr} + 8007a5a: b082 sub sp, #8 + 8007a5c: af00 add r7, sp, #0 + 8007a5e: 6078 str r0, [r7, #4] + 8007a60: 460b mov r3, r1 + 8007a62: 807b strh r3, [r7, #2] + 8007a64: 4613 mov r3, r2 + 8007a66: 707b strb r3, [r7, #1] /* Check the parameters */ assert_param(IS_GPIO_PIN(GPIO_Pin)); - 8007814: 887b ldrh r3, [r7, #2] - 8007816: 2b00 cmp r3, #0 - 8007818: d104 bne.n 8007824 - 800781a: f240 119d movw r1, #413 @ 0x19d - 800781e: 480e ldr r0, [pc, #56] @ (8007858 ) - 8007820: f7fb fca8 bl 8003174 + 8007a68: 887b ldrh r3, [r7, #2] + 8007a6a: 2b00 cmp r3, #0 + 8007a6c: d104 bne.n 8007a78 + 8007a6e: f240 119d movw r1, #413 @ 0x19d + 8007a72: 480e ldr r0, [pc, #56] @ (8007aac ) + 8007a74: f7fb fbda bl 800322c assert_param(IS_GPIO_PIN_ACTION(PinState)); - 8007824: 787b ldrb r3, [r7, #1] - 8007826: 2b00 cmp r3, #0 - 8007828: d007 beq.n 800783a - 800782a: 787b ldrb r3, [r7, #1] - 800782c: 2b01 cmp r3, #1 - 800782e: d004 beq.n 800783a - 8007830: f44f 71cf mov.w r1, #414 @ 0x19e - 8007834: 4808 ldr r0, [pc, #32] @ (8007858 ) - 8007836: f7fb fc9d bl 8003174 + 8007a78: 787b ldrb r3, [r7, #1] + 8007a7a: 2b00 cmp r3, #0 + 8007a7c: d007 beq.n 8007a8e + 8007a7e: 787b ldrb r3, [r7, #1] + 8007a80: 2b01 cmp r3, #1 + 8007a82: d004 beq.n 8007a8e + 8007a84: f44f 71cf mov.w r1, #414 @ 0x19e + 8007a88: 4808 ldr r0, [pc, #32] @ (8007aac ) + 8007a8a: f7fb fbcf bl 800322c if(PinState != GPIO_PIN_RESET) - 800783a: 787b ldrb r3, [r7, #1] - 800783c: 2b00 cmp r3, #0 - 800783e: d003 beq.n 8007848 + 8007a8e: 787b ldrb r3, [r7, #1] + 8007a90: 2b00 cmp r3, #0 + 8007a92: d003 beq.n 8007a9c { GPIOx->BSRR = GPIO_Pin; - 8007840: 887a ldrh r2, [r7, #2] - 8007842: 687b ldr r3, [r7, #4] - 8007844: 619a str r2, [r3, #24] + 8007a94: 887a ldrh r2, [r7, #2] + 8007a96: 687b ldr r3, [r7, #4] + 8007a98: 619a str r2, [r3, #24] } else { GPIOx->BSRR = (uint32_t)GPIO_Pin << 16U; } } - 8007846: e003 b.n 8007850 + 8007a9a: e003 b.n 8007aa4 GPIOx->BSRR = (uint32_t)GPIO_Pin << 16U; - 8007848: 887b ldrh r3, [r7, #2] - 800784a: 041a lsls r2, r3, #16 - 800784c: 687b ldr r3, [r7, #4] - 800784e: 619a str r2, [r3, #24] + 8007a9c: 887b ldrh r3, [r7, #2] + 8007a9e: 041a lsls r2, r3, #16 + 8007aa0: 687b ldr r3, [r7, #4] + 8007aa2: 619a str r2, [r3, #24] } - 8007850: bf00 nop - 8007852: 3708 adds r7, #8 - 8007854: 46bd mov sp, r7 - 8007856: bd80 pop {r7, pc} - 8007858: 0800e7e8 .word 0x0800e7e8 + 8007aa4: bf00 nop + 8007aa6: 3708 adds r7, #8 + 8007aa8: 46bd mov sp, r7 + 8007aaa: bd80 pop {r7, pc} + 8007aac: 0800ed58 .word 0x0800ed58 -0800785c : +08007ab0 : * @arg PWR_WAKEUP_PIN2 available only on STM32F410xx/STM32F446xx/STM32F412xx/STM32F413xx/STM32F423xx devices * @arg PWR_WAKEUP_PIN3 available only on STM32F410xx/STM32F412xx/STM32F413xx/STM32F423xx devices * @retval None */ void HAL_PWR_EnableWakeUpPin(uint32_t WakeUpPinx) { - 800785c: b580 push {r7, lr} - 800785e: b082 sub sp, #8 - 8007860: af00 add r7, sp, #0 - 8007862: 6078 str r0, [r7, #4] + 8007ab0: b580 push {r7, lr} + 8007ab2: b082 sub sp, #8 + 8007ab4: af00 add r7, sp, #0 + 8007ab6: 6078 str r0, [r7, #4] /* Check the parameter */ assert_param(IS_PWR_WAKEUP_PIN(WakeUpPinx)); - 8007864: 687b ldr r3, [r7, #4] - 8007866: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 800786a: d00a beq.n 8007882 - 800786c: 687b ldr r3, [r7, #4] - 800786e: 2b80 cmp r3, #128 @ 0x80 - 8007870: d007 beq.n 8007882 - 8007872: 687b ldr r3, [r7, #4] - 8007874: 2b40 cmp r3, #64 @ 0x40 - 8007876: d004 beq.n 8007882 - 8007878: f44f 71ac mov.w r1, #344 @ 0x158 - 800787c: 4806 ldr r0, [pc, #24] @ (8007898 ) - 800787e: f7fb fc79 bl 8003174 + 8007ab8: 687b ldr r3, [r7, #4] + 8007aba: f5b3 7f80 cmp.w r3, #256 @ 0x100 + 8007abe: d00a beq.n 8007ad6 + 8007ac0: 687b ldr r3, [r7, #4] + 8007ac2: 2b80 cmp r3, #128 @ 0x80 + 8007ac4: d007 beq.n 8007ad6 + 8007ac6: 687b ldr r3, [r7, #4] + 8007ac8: 2b40 cmp r3, #64 @ 0x40 + 8007aca: d004 beq.n 8007ad6 + 8007acc: f44f 71ac mov.w r1, #344 @ 0x158 + 8007ad0: 4806 ldr r0, [pc, #24] @ (8007aec ) + 8007ad2: f7fb fbab bl 800322c /* Enable the wake up pin */ SET_BIT(PWR->CSR, WakeUpPinx); - 8007882: 4b06 ldr r3, [pc, #24] @ (800789c ) - 8007884: 685a ldr r2, [r3, #4] - 8007886: 4905 ldr r1, [pc, #20] @ (800789c ) - 8007888: 687b ldr r3, [r7, #4] - 800788a: 4313 orrs r3, r2 - 800788c: 604b str r3, [r1, #4] + 8007ad6: 4b06 ldr r3, [pc, #24] @ (8007af0 ) + 8007ad8: 685a ldr r2, [r3, #4] + 8007ada: 4905 ldr r1, [pc, #20] @ (8007af0 ) + 8007adc: 687b ldr r3, [r7, #4] + 8007ade: 4313 orrs r3, r2 + 8007ae0: 604b str r3, [r1, #4] } - 800788e: bf00 nop - 8007890: 3708 adds r7, #8 - 8007892: 46bd mov sp, r7 - 8007894: bd80 pop {r7, pc} - 8007896: bf00 nop - 8007898: 0800e824 .word 0x0800e824 - 800789c: 40007000 .word 0x40007000 + 8007ae2: bf00 nop + 8007ae4: 3708 adds r7, #8 + 8007ae6: 46bd mov sp, r7 + 8007ae8: bd80 pop {r7, pc} + 8007aea: bf00 nop + 8007aec: 0800ed94 .word 0x0800ed94 + 8007af0: 40007000 .word 0x40007000 -080078a0 : +08007af4 : * @arg PWR_WAKEUP_PIN2 available only on STM32F410xx/STM32F446xx/STM32F412xx/STM32F413xx/STM32F423xx devices * @arg PWR_WAKEUP_PIN3 available only on STM32F410xx/STM32F412xx/STM32F413xx/STM32F423xx devices * @retval None */ void HAL_PWR_DisableWakeUpPin(uint32_t WakeUpPinx) { - 80078a0: b580 push {r7, lr} - 80078a2: b082 sub sp, #8 - 80078a4: af00 add r7, sp, #0 - 80078a6: 6078 str r0, [r7, #4] + 8007af4: b580 push {r7, lr} + 8007af6: b082 sub sp, #8 + 8007af8: af00 add r7, sp, #0 + 8007afa: 6078 str r0, [r7, #4] /* Check the parameter */ assert_param(IS_PWR_WAKEUP_PIN(WakeUpPinx)); - 80078a8: 687b ldr r3, [r7, #4] - 80078aa: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 80078ae: d00a beq.n 80078c6 - 80078b0: 687b ldr r3, [r7, #4] - 80078b2: 2b80 cmp r3, #128 @ 0x80 - 80078b4: d007 beq.n 80078c6 - 80078b6: 687b ldr r3, [r7, #4] - 80078b8: 2b40 cmp r3, #64 @ 0x40 - 80078ba: d004 beq.n 80078c6 - 80078bc: f44f 71b5 mov.w r1, #362 @ 0x16a - 80078c0: 4806 ldr r0, [pc, #24] @ (80078dc ) - 80078c2: f7fb fc57 bl 8003174 + 8007afc: 687b ldr r3, [r7, #4] + 8007afe: f5b3 7f80 cmp.w r3, #256 @ 0x100 + 8007b02: d00a beq.n 8007b1a + 8007b04: 687b ldr r3, [r7, #4] + 8007b06: 2b80 cmp r3, #128 @ 0x80 + 8007b08: d007 beq.n 8007b1a + 8007b0a: 687b ldr r3, [r7, #4] + 8007b0c: 2b40 cmp r3, #64 @ 0x40 + 8007b0e: d004 beq.n 8007b1a + 8007b10: f44f 71b5 mov.w r1, #362 @ 0x16a + 8007b14: 4806 ldr r0, [pc, #24] @ (8007b30 ) + 8007b16: f7fb fb89 bl 800322c /* Disable the wake up pin */ CLEAR_BIT(PWR->CSR, WakeUpPinx); - 80078c6: 4b06 ldr r3, [pc, #24] @ (80078e0 ) - 80078c8: 685a ldr r2, [r3, #4] - 80078ca: 687b ldr r3, [r7, #4] - 80078cc: 43db mvns r3, r3 - 80078ce: 4904 ldr r1, [pc, #16] @ (80078e0 ) - 80078d0: 4013 ands r3, r2 - 80078d2: 604b str r3, [r1, #4] + 8007b1a: 4b06 ldr r3, [pc, #24] @ (8007b34 ) + 8007b1c: 685a ldr r2, [r3, #4] + 8007b1e: 687b ldr r3, [r7, #4] + 8007b20: 43db mvns r3, r3 + 8007b22: 4904 ldr r1, [pc, #16] @ (8007b34 ) + 8007b24: 4013 ands r3, r2 + 8007b26: 604b str r3, [r1, #4] } - 80078d4: bf00 nop - 80078d6: 3708 adds r7, #8 - 80078d8: 46bd mov sp, r7 - 80078da: bd80 pop {r7, pc} - 80078dc: 0800e824 .word 0x0800e824 - 80078e0: 40007000 .word 0x40007000 + 8007b28: bf00 nop + 8007b2a: 3708 adds r7, #8 + 8007b2c: 46bd mov sp, r7 + 8007b2e: bd80 pop {r7, pc} + 8007b30: 0800ed94 .word 0x0800ed94 + 8007b34: 40007000 .word 0x40007000 -080078e4 : +08007b38 : * - RTC_AF2 pin (PI8) if configured for tamper or time-stamp. * - WKUP pin 1 (PA0) if enabled. * @retval None */ void HAL_PWR_EnterSTANDBYMode(void) { - 80078e4: b480 push {r7} - 80078e6: af00 add r7, sp, #0 + 8007b38: b480 push {r7} + 8007b3a: af00 add r7, sp, #0 /* Select Standby mode */ SET_BIT(PWR->CR, PWR_CR_PDDS); - 80078e8: 4b08 ldr r3, [pc, #32] @ (800790c ) - 80078ea: 681b ldr r3, [r3, #0] - 80078ec: 4a07 ldr r2, [pc, #28] @ (800790c ) - 80078ee: f043 0302 orr.w r3, r3, #2 - 80078f2: 6013 str r3, [r2, #0] + 8007b3c: 4b08 ldr r3, [pc, #32] @ (8007b60 ) + 8007b3e: 681b ldr r3, [r3, #0] + 8007b40: 4a07 ldr r2, [pc, #28] @ (8007b60 ) + 8007b42: f043 0302 orr.w r3, r3, #2 + 8007b46: 6013 str r3, [r2, #0] /* Set SLEEPDEEP bit of Cortex System Control Register */ SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); - 80078f4: 4b06 ldr r3, [pc, #24] @ (8007910 ) - 80078f6: 691b ldr r3, [r3, #16] - 80078f8: 4a05 ldr r2, [pc, #20] @ (8007910 ) - 80078fa: f043 0304 orr.w r3, r3, #4 - 80078fe: 6113 str r3, [r2, #16] + 8007b48: 4b06 ldr r3, [pc, #24] @ (8007b64 ) + 8007b4a: 691b ldr r3, [r3, #16] + 8007b4c: 4a05 ldr r2, [pc, #20] @ (8007b64 ) + 8007b4e: f043 0304 orr.w r3, r3, #4 + 8007b52: 6113 str r3, [r2, #16] /* This option is used to ensure that store operations are completed */ #if defined ( __CC_ARM) __force_stores(); #endif /* Request Wait For Interrupt */ __WFI(); - 8007900: bf30 wfi + 8007b54: bf30 wfi } - 8007902: bf00 nop - 8007904: 46bd mov sp, r7 - 8007906: f85d 7b04 ldr.w r7, [sp], #4 - 800790a: 4770 bx lr - 800790c: 40007000 .word 0x40007000 - 8007910: e000ed00 .word 0xe000ed00 + 8007b56: bf00 nop + 8007b58: 46bd mov sp, r7 + 8007b5a: f85d 7b04 ldr.w r7, [sp], #4 + 8007b5e: 4770 bx lr + 8007b60: 40007000 .word 0x40007000 + 8007b64: e000ed00 .word 0xe000ed00 -08007914 : +08007b68 : * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency * (for more details refer to section above "Initialization/de-initialization functions") * @retval None */ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) { - 8007914: b580 push {r7, lr} - 8007916: b084 sub sp, #16 - 8007918: af00 add r7, sp, #0 - 800791a: 6078 str r0, [r7, #4] - 800791c: 6039 str r1, [r7, #0] + 8007b68: b580 push {r7, lr} + 8007b6a: b084 sub sp, #16 + 8007b6c: af00 add r7, sp, #0 + 8007b6e: 6078 str r0, [r7, #4] + 8007b70: 6039 str r1, [r7, #0] uint32_t tickstart; /* Check Null pointer */ if(RCC_ClkInitStruct == NULL) - 800791e: 687b ldr r3, [r7, #4] - 8007920: 2b00 cmp r3, #0 - 8007922: d101 bne.n 8007928 + 8007b72: 687b ldr r3, [r7, #4] + 8007b74: 2b00 cmp r3, #0 + 8007b76: d101 bne.n 8007b7c { return HAL_ERROR; - 8007924: 2301 movs r3, #1 - 8007926: e174 b.n 8007c12 + 8007b78: 2301 movs r3, #1 + 8007b7a: e174 b.n 8007e66 } /* Check the parameters */ assert_param(IS_RCC_CLOCKTYPE(RCC_ClkInitStruct->ClockType)); - 8007928: 687b ldr r3, [r7, #4] - 800792a: 681b ldr r3, [r3, #0] - 800792c: 2b00 cmp r3, #0 - 800792e: d003 beq.n 8007938 - 8007930: 687b ldr r3, [r7, #4] - 8007932: 681b ldr r3, [r3, #0] - 8007934: 2b0f cmp r3, #15 - 8007936: d904 bls.n 8007942 - 8007938: f240 215a movw r1, #602 @ 0x25a - 800793c: 487b ldr r0, [pc, #492] @ (8007b2c ) - 800793e: f7fb fc19 bl 8003174 + 8007b7c: 687b ldr r3, [r7, #4] + 8007b7e: 681b ldr r3, [r3, #0] + 8007b80: 2b00 cmp r3, #0 + 8007b82: d003 beq.n 8007b8c + 8007b84: 687b ldr r3, [r7, #4] + 8007b86: 681b ldr r3, [r3, #0] + 8007b88: 2b0f cmp r3, #15 + 8007b8a: d904 bls.n 8007b96 + 8007b8c: f240 215a movw r1, #602 @ 0x25a + 8007b90: 487b ldr r0, [pc, #492] @ (8007d80 ) + 8007b92: f7fb fb4b bl 800322c assert_param(IS_FLASH_LATENCY(FLatency)); - 8007942: 683b ldr r3, [r7, #0] - 8007944: 2b00 cmp r3, #0 - 8007946: d019 beq.n 800797c - 8007948: 683b ldr r3, [r7, #0] - 800794a: 2b01 cmp r3, #1 - 800794c: d016 beq.n 800797c - 800794e: 683b ldr r3, [r7, #0] - 8007950: 2b02 cmp r3, #2 - 8007952: d013 beq.n 800797c - 8007954: 683b ldr r3, [r7, #0] - 8007956: 2b03 cmp r3, #3 - 8007958: d010 beq.n 800797c - 800795a: 683b ldr r3, [r7, #0] - 800795c: 2b04 cmp r3, #4 - 800795e: d00d beq.n 800797c - 8007960: 683b ldr r3, [r7, #0] - 8007962: 2b05 cmp r3, #5 - 8007964: d00a beq.n 800797c - 8007966: 683b ldr r3, [r7, #0] - 8007968: 2b06 cmp r3, #6 - 800796a: d007 beq.n 800797c - 800796c: 683b ldr r3, [r7, #0] - 800796e: 2b07 cmp r3, #7 - 8007970: d004 beq.n 800797c - 8007972: f240 215b movw r1, #603 @ 0x25b - 8007976: 486d ldr r0, [pc, #436] @ (8007b2c ) - 8007978: f7fb fbfc bl 8003174 + 8007b96: 683b ldr r3, [r7, #0] + 8007b98: 2b00 cmp r3, #0 + 8007b9a: d019 beq.n 8007bd0 + 8007b9c: 683b ldr r3, [r7, #0] + 8007b9e: 2b01 cmp r3, #1 + 8007ba0: d016 beq.n 8007bd0 + 8007ba2: 683b ldr r3, [r7, #0] + 8007ba4: 2b02 cmp r3, #2 + 8007ba6: d013 beq.n 8007bd0 + 8007ba8: 683b ldr r3, [r7, #0] + 8007baa: 2b03 cmp r3, #3 + 8007bac: d010 beq.n 8007bd0 + 8007bae: 683b ldr r3, [r7, #0] + 8007bb0: 2b04 cmp r3, #4 + 8007bb2: d00d beq.n 8007bd0 + 8007bb4: 683b ldr r3, [r7, #0] + 8007bb6: 2b05 cmp r3, #5 + 8007bb8: d00a beq.n 8007bd0 + 8007bba: 683b ldr r3, [r7, #0] + 8007bbc: 2b06 cmp r3, #6 + 8007bbe: d007 beq.n 8007bd0 + 8007bc0: 683b ldr r3, [r7, #0] + 8007bc2: 2b07 cmp r3, #7 + 8007bc4: d004 beq.n 8007bd0 + 8007bc6: f240 215b movw r1, #603 @ 0x25b + 8007bca: 486d ldr r0, [pc, #436] @ (8007d80 ) + 8007bcc: f7fb fb2e bl 800322c /* To correctly read data from FLASH memory, the number of wait states (LATENCY) must be correctly programmed according to the frequency of the CPU clock (HCLK) and the supply voltage of the device. */ /* Increasing the number of wait states because of higher CPU frequency */ if(FLatency > __HAL_FLASH_GET_LATENCY()) - 800797c: 4b6c ldr r3, [pc, #432] @ (8007b30 ) - 800797e: 681b ldr r3, [r3, #0] - 8007980: f003 0307 and.w r3, r3, #7 - 8007984: 683a ldr r2, [r7, #0] - 8007986: 429a cmp r2, r3 - 8007988: d90c bls.n 80079a4 + 8007bd0: 4b6c ldr r3, [pc, #432] @ (8007d84 ) + 8007bd2: 681b ldr r3, [r3, #0] + 8007bd4: f003 0307 and.w r3, r3, #7 + 8007bd8: 683a ldr r2, [r7, #0] + 8007bda: 429a cmp r2, r3 + 8007bdc: d90c bls.n 8007bf8 { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); - 800798a: 4b69 ldr r3, [pc, #420] @ (8007b30 ) - 800798c: 683a ldr r2, [r7, #0] - 800798e: b2d2 uxtb r2, r2 - 8007990: 701a strb r2, [r3, #0] + 8007bde: 4b69 ldr r3, [pc, #420] @ (8007d84 ) + 8007be0: 683a ldr r2, [r7, #0] + 8007be2: b2d2 uxtb r2, r2 + 8007be4: 701a strb r2, [r3, #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) - 8007992: 4b67 ldr r3, [pc, #412] @ (8007b30 ) - 8007994: 681b ldr r3, [r3, #0] - 8007996: f003 0307 and.w r3, r3, #7 - 800799a: 683a ldr r2, [r7, #0] - 800799c: 429a cmp r2, r3 - 800799e: d001 beq.n 80079a4 + 8007be6: 4b67 ldr r3, [pc, #412] @ (8007d84 ) + 8007be8: 681b ldr r3, [r3, #0] + 8007bea: f003 0307 and.w r3, r3, #7 + 8007bee: 683a ldr r2, [r7, #0] + 8007bf0: 429a cmp r2, r3 + 8007bf2: d001 beq.n 8007bf8 { return HAL_ERROR; - 80079a0: 2301 movs r3, #1 - 80079a2: e136 b.n 8007c12 + 8007bf4: 2301 movs r3, #1 + 8007bf6: e136 b.n 8007e66 } } /*-------------------------- HCLK Configuration --------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) - 80079a4: 687b ldr r3, [r7, #4] - 80079a6: 681b ldr r3, [r3, #0] - 80079a8: f003 0302 and.w r3, r3, #2 - 80079ac: 2b00 cmp r3, #0 - 80079ae: d049 beq.n 8007a44 + 8007bf8: 687b ldr r3, [r7, #4] + 8007bfa: 681b ldr r3, [r3, #0] + 8007bfc: f003 0302 and.w r3, r3, #2 + 8007c00: 2b00 cmp r3, #0 + 8007c02: d049 beq.n 8007c98 { /* 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) - 80079b0: 687b ldr r3, [r7, #4] - 80079b2: 681b ldr r3, [r3, #0] - 80079b4: f003 0304 and.w r3, r3, #4 - 80079b8: 2b00 cmp r3, #0 - 80079ba: d005 beq.n 80079c8 + 8007c04: 687b ldr r3, [r7, #4] + 8007c06: 681b ldr r3, [r3, #0] + 8007c08: f003 0304 and.w r3, r3, #4 + 8007c0c: 2b00 cmp r3, #0 + 8007c0e: d005 beq.n 8007c1c { MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16); - 80079bc: 4b5d ldr r3, [pc, #372] @ (8007b34 ) - 80079be: 689b ldr r3, [r3, #8] - 80079c0: 4a5c ldr r2, [pc, #368] @ (8007b34 ) - 80079c2: f443 53e0 orr.w r3, r3, #7168 @ 0x1c00 - 80079c6: 6093 str r3, [r2, #8] + 8007c10: 4b5d ldr r3, [pc, #372] @ (8007d88 ) + 8007c12: 689b ldr r3, [r3, #8] + 8007c14: 4a5c ldr r2, [pc, #368] @ (8007d88 ) + 8007c16: f443 53e0 orr.w r3, r3, #7168 @ 0x1c00 + 8007c1a: 6093 str r3, [r2, #8] } if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) - 80079c8: 687b ldr r3, [r7, #4] - 80079ca: 681b ldr r3, [r3, #0] - 80079cc: f003 0308 and.w r3, r3, #8 - 80079d0: 2b00 cmp r3, #0 - 80079d2: d005 beq.n 80079e0 + 8007c1c: 687b ldr r3, [r7, #4] + 8007c1e: 681b ldr r3, [r3, #0] + 8007c20: f003 0308 and.w r3, r3, #8 + 8007c24: 2b00 cmp r3, #0 + 8007c26: d005 beq.n 8007c34 { MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3)); - 80079d4: 4b57 ldr r3, [pc, #348] @ (8007b34 ) - 80079d6: 689b ldr r3, [r3, #8] - 80079d8: 4a56 ldr r2, [pc, #344] @ (8007b34 ) - 80079da: f443 4360 orr.w r3, r3, #57344 @ 0xe000 - 80079de: 6093 str r3, [r2, #8] + 8007c28: 4b57 ldr r3, [pc, #348] @ (8007d88 ) + 8007c2a: 689b ldr r3, [r3, #8] + 8007c2c: 4a56 ldr r2, [pc, #344] @ (8007d88 ) + 8007c2e: f443 4360 orr.w r3, r3, #57344 @ 0xe000 + 8007c32: 6093 str r3, [r2, #8] } assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); - 80079e0: 687b ldr r3, [r7, #4] - 80079e2: 689b ldr r3, [r3, #8] - 80079e4: 2b00 cmp r3, #0 - 80079e6: d024 beq.n 8007a32 - 80079e8: 687b ldr r3, [r7, #4] - 80079ea: 689b ldr r3, [r3, #8] - 80079ec: 2b80 cmp r3, #128 @ 0x80 - 80079ee: d020 beq.n 8007a32 - 80079f0: 687b ldr r3, [r7, #4] - 80079f2: 689b ldr r3, [r3, #8] - 80079f4: 2b90 cmp r3, #144 @ 0x90 - 80079f6: d01c beq.n 8007a32 - 80079f8: 687b ldr r3, [r7, #4] - 80079fa: 689b ldr r3, [r3, #8] - 80079fc: 2ba0 cmp r3, #160 @ 0xa0 - 80079fe: d018 beq.n 8007a32 - 8007a00: 687b ldr r3, [r7, #4] - 8007a02: 689b ldr r3, [r3, #8] - 8007a04: 2bb0 cmp r3, #176 @ 0xb0 - 8007a06: d014 beq.n 8007a32 - 8007a08: 687b ldr r3, [r7, #4] - 8007a0a: 689b ldr r3, [r3, #8] - 8007a0c: 2bc0 cmp r3, #192 @ 0xc0 - 8007a0e: d010 beq.n 8007a32 - 8007a10: 687b ldr r3, [r7, #4] - 8007a12: 689b ldr r3, [r3, #8] - 8007a14: 2bd0 cmp r3, #208 @ 0xd0 - 8007a16: d00c beq.n 8007a32 - 8007a18: 687b ldr r3, [r7, #4] - 8007a1a: 689b ldr r3, [r3, #8] - 8007a1c: 2be0 cmp r3, #224 @ 0xe0 - 8007a1e: d008 beq.n 8007a32 - 8007a20: 687b ldr r3, [r7, #4] - 8007a22: 689b ldr r3, [r3, #8] - 8007a24: 2bf0 cmp r3, #240 @ 0xf0 - 8007a26: d004 beq.n 8007a32 - 8007a28: f240 217e movw r1, #638 @ 0x27e - 8007a2c: 483f ldr r0, [pc, #252] @ (8007b2c ) - 8007a2e: f7fb fba1 bl 8003174 + 8007c34: 687b ldr r3, [r7, #4] + 8007c36: 689b ldr r3, [r3, #8] + 8007c38: 2b00 cmp r3, #0 + 8007c3a: d024 beq.n 8007c86 + 8007c3c: 687b ldr r3, [r7, #4] + 8007c3e: 689b ldr r3, [r3, #8] + 8007c40: 2b80 cmp r3, #128 @ 0x80 + 8007c42: d020 beq.n 8007c86 + 8007c44: 687b ldr r3, [r7, #4] + 8007c46: 689b ldr r3, [r3, #8] + 8007c48: 2b90 cmp r3, #144 @ 0x90 + 8007c4a: d01c beq.n 8007c86 + 8007c4c: 687b ldr r3, [r7, #4] + 8007c4e: 689b ldr r3, [r3, #8] + 8007c50: 2ba0 cmp r3, #160 @ 0xa0 + 8007c52: d018 beq.n 8007c86 + 8007c54: 687b ldr r3, [r7, #4] + 8007c56: 689b ldr r3, [r3, #8] + 8007c58: 2bb0 cmp r3, #176 @ 0xb0 + 8007c5a: d014 beq.n 8007c86 + 8007c5c: 687b ldr r3, [r7, #4] + 8007c5e: 689b ldr r3, [r3, #8] + 8007c60: 2bc0 cmp r3, #192 @ 0xc0 + 8007c62: d010 beq.n 8007c86 + 8007c64: 687b ldr r3, [r7, #4] + 8007c66: 689b ldr r3, [r3, #8] + 8007c68: 2bd0 cmp r3, #208 @ 0xd0 + 8007c6a: d00c beq.n 8007c86 + 8007c6c: 687b ldr r3, [r7, #4] + 8007c6e: 689b ldr r3, [r3, #8] + 8007c70: 2be0 cmp r3, #224 @ 0xe0 + 8007c72: d008 beq.n 8007c86 + 8007c74: 687b ldr r3, [r7, #4] + 8007c76: 689b ldr r3, [r3, #8] + 8007c78: 2bf0 cmp r3, #240 @ 0xf0 + 8007c7a: d004 beq.n 8007c86 + 8007c7c: f240 217e movw r1, #638 @ 0x27e + 8007c80: 483f ldr r0, [pc, #252] @ (8007d80 ) + 8007c82: f7fb fad3 bl 800322c MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); - 8007a32: 4b40 ldr r3, [pc, #256] @ (8007b34 ) - 8007a34: 689b ldr r3, [r3, #8] - 8007a36: f023 02f0 bic.w r2, r3, #240 @ 0xf0 - 8007a3a: 687b ldr r3, [r7, #4] - 8007a3c: 689b ldr r3, [r3, #8] - 8007a3e: 493d ldr r1, [pc, #244] @ (8007b34 ) - 8007a40: 4313 orrs r3, r2 - 8007a42: 608b str r3, [r1, #8] + 8007c86: 4b40 ldr r3, [pc, #256] @ (8007d88 ) + 8007c88: 689b ldr r3, [r3, #8] + 8007c8a: f023 02f0 bic.w r2, r3, #240 @ 0xf0 + 8007c8e: 687b ldr r3, [r7, #4] + 8007c90: 689b ldr r3, [r3, #8] + 8007c92: 493d ldr r1, [pc, #244] @ (8007d88 ) + 8007c94: 4313 orrs r3, r2 + 8007c96: 608b str r3, [r1, #8] } /*------------------------- SYSCLK Configuration ---------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) - 8007a44: 687b ldr r3, [r7, #4] - 8007a46: 681b ldr r3, [r3, #0] - 8007a48: f003 0301 and.w r3, r3, #1 - 8007a4c: 2b00 cmp r3, #0 - 8007a4e: d059 beq.n 8007b04 + 8007c98: 687b ldr r3, [r7, #4] + 8007c9a: 681b ldr r3, [r3, #0] + 8007c9c: f003 0301 and.w r3, r3, #1 + 8007ca0: 2b00 cmp r3, #0 + 8007ca2: d059 beq.n 8007d58 { assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); - 8007a50: 687b ldr r3, [r7, #4] - 8007a52: 685b ldr r3, [r3, #4] - 8007a54: 2b00 cmp r3, #0 - 8007a56: d010 beq.n 8007a7a - 8007a58: 687b ldr r3, [r7, #4] - 8007a5a: 685b ldr r3, [r3, #4] - 8007a5c: 2b01 cmp r3, #1 - 8007a5e: d00c beq.n 8007a7a - 8007a60: 687b ldr r3, [r7, #4] - 8007a62: 685b ldr r3, [r3, #4] - 8007a64: 2b02 cmp r3, #2 - 8007a66: d008 beq.n 8007a7a - 8007a68: 687b ldr r3, [r7, #4] - 8007a6a: 685b ldr r3, [r3, #4] - 8007a6c: 2b03 cmp r3, #3 - 8007a6e: d004 beq.n 8007a7a - 8007a70: f240 2185 movw r1, #645 @ 0x285 - 8007a74: 482d ldr r0, [pc, #180] @ (8007b2c ) - 8007a76: f7fb fb7d bl 8003174 + 8007ca4: 687b ldr r3, [r7, #4] + 8007ca6: 685b ldr r3, [r3, #4] + 8007ca8: 2b00 cmp r3, #0 + 8007caa: d010 beq.n 8007cce + 8007cac: 687b ldr r3, [r7, #4] + 8007cae: 685b ldr r3, [r3, #4] + 8007cb0: 2b01 cmp r3, #1 + 8007cb2: d00c beq.n 8007cce + 8007cb4: 687b ldr r3, [r7, #4] + 8007cb6: 685b ldr r3, [r3, #4] + 8007cb8: 2b02 cmp r3, #2 + 8007cba: d008 beq.n 8007cce + 8007cbc: 687b ldr r3, [r7, #4] + 8007cbe: 685b ldr r3, [r3, #4] + 8007cc0: 2b03 cmp r3, #3 + 8007cc2: d004 beq.n 8007cce + 8007cc4: f240 2185 movw r1, #645 @ 0x285 + 8007cc8: 482d ldr r0, [pc, #180] @ (8007d80 ) + 8007cca: f7fb faaf bl 800322c /* HSE is selected as System Clock Source */ if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) - 8007a7a: 687b ldr r3, [r7, #4] - 8007a7c: 685b ldr r3, [r3, #4] - 8007a7e: 2b01 cmp r3, #1 - 8007a80: d107 bne.n 8007a92 + 8007cce: 687b ldr r3, [r7, #4] + 8007cd0: 685b ldr r3, [r3, #4] + 8007cd2: 2b01 cmp r3, #1 + 8007cd4: d107 bne.n 8007ce6 { /* Check the HSE ready flag */ if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 8007a82: 4b2c ldr r3, [pc, #176] @ (8007b34 ) - 8007a84: 681b ldr r3, [r3, #0] - 8007a86: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 8007a8a: 2b00 cmp r3, #0 - 8007a8c: d119 bne.n 8007ac2 + 8007cd6: 4b2c ldr r3, [pc, #176] @ (8007d88 ) + 8007cd8: 681b ldr r3, [r3, #0] + 8007cda: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8007cde: 2b00 cmp r3, #0 + 8007ce0: d119 bne.n 8007d16 { return HAL_ERROR; - 8007a8e: 2301 movs r3, #1 - 8007a90: e0bf b.n 8007c12 + 8007ce2: 2301 movs r3, #1 + 8007ce4: e0bf b.n 8007e66 } } /* PLL is selected as System Clock Source */ else if((RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) || - 8007a92: 687b ldr r3, [r7, #4] - 8007a94: 685b ldr r3, [r3, #4] - 8007a96: 2b02 cmp r3, #2 - 8007a98: d003 beq.n 8007aa2 + 8007ce6: 687b ldr r3, [r7, #4] + 8007ce8: 685b ldr r3, [r3, #4] + 8007cea: 2b02 cmp r3, #2 + 8007cec: d003 beq.n 8007cf6 (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLRCLK)) - 8007a9a: 687b ldr r3, [r7, #4] - 8007a9c: 685b ldr r3, [r3, #4] + 8007cee: 687b ldr r3, [r7, #4] + 8007cf0: 685b ldr r3, [r3, #4] else if((RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) || - 8007a9e: 2b03 cmp r3, #3 - 8007aa0: d107 bne.n 8007ab2 + 8007cf2: 2b03 cmp r3, #3 + 8007cf4: d107 bne.n 8007d06 { /* Check the PLL ready flag */ if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 8007aa2: 4b24 ldr r3, [pc, #144] @ (8007b34 ) - 8007aa4: 681b ldr r3, [r3, #0] - 8007aa6: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 8007aaa: 2b00 cmp r3, #0 - 8007aac: d109 bne.n 8007ac2 + 8007cf6: 4b24 ldr r3, [pc, #144] @ (8007d88 ) + 8007cf8: 681b ldr r3, [r3, #0] + 8007cfa: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8007cfe: 2b00 cmp r3, #0 + 8007d00: d109 bne.n 8007d16 { return HAL_ERROR; - 8007aae: 2301 movs r3, #1 - 8007ab0: e0af b.n 8007c12 + 8007d02: 2301 movs r3, #1 + 8007d04: e0af b.n 8007e66 } /* HSI is selected as System Clock Source */ else { /* Check the HSI ready flag */ if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 8007ab2: 4b20 ldr r3, [pc, #128] @ (8007b34 ) - 8007ab4: 681b ldr r3, [r3, #0] - 8007ab6: f003 0302 and.w r3, r3, #2 - 8007aba: 2b00 cmp r3, #0 - 8007abc: d101 bne.n 8007ac2 + 8007d06: 4b20 ldr r3, [pc, #128] @ (8007d88 ) + 8007d08: 681b ldr r3, [r3, #0] + 8007d0a: f003 0302 and.w r3, r3, #2 + 8007d0e: 2b00 cmp r3, #0 + 8007d10: d101 bne.n 8007d16 { return HAL_ERROR; - 8007abe: 2301 movs r3, #1 - 8007ac0: e0a7 b.n 8007c12 + 8007d12: 2301 movs r3, #1 + 8007d14: e0a7 b.n 8007e66 } } __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); - 8007ac2: 4b1c ldr r3, [pc, #112] @ (8007b34 ) - 8007ac4: 689b ldr r3, [r3, #8] - 8007ac6: f023 0203 bic.w r2, r3, #3 - 8007aca: 687b ldr r3, [r7, #4] - 8007acc: 685b ldr r3, [r3, #4] - 8007ace: 4919 ldr r1, [pc, #100] @ (8007b34 ) - 8007ad0: 4313 orrs r3, r2 - 8007ad2: 608b str r3, [r1, #8] + 8007d16: 4b1c ldr r3, [pc, #112] @ (8007d88 ) + 8007d18: 689b ldr r3, [r3, #8] + 8007d1a: f023 0203 bic.w r2, r3, #3 + 8007d1e: 687b ldr r3, [r7, #4] + 8007d20: 685b ldr r3, [r3, #4] + 8007d22: 4919 ldr r1, [pc, #100] @ (8007d88 ) + 8007d24: 4313 orrs r3, r2 + 8007d26: 608b str r3, [r1, #8] /* Get Start Tick */ tickstart = HAL_GetTick(); - 8007ad4: f7fd ffbc bl 8005a50 - 8007ad8: 60f8 str r0, [r7, #12] + 8007d28: f7fd ffbc bl 8005ca4 + 8007d2c: 60f8 str r0, [r7, #12] while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 8007ada: e00a b.n 8007af2 + 8007d2e: e00a b.n 8007d46 { if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) - 8007adc: f7fd ffb8 bl 8005a50 - 8007ae0: 4602 mov r2, r0 - 8007ae2: 68fb ldr r3, [r7, #12] - 8007ae4: 1ad3 subs r3, r2, r3 - 8007ae6: f241 3288 movw r2, #5000 @ 0x1388 - 8007aea: 4293 cmp r3, r2 - 8007aec: d901 bls.n 8007af2 + 8007d30: f7fd ffb8 bl 8005ca4 + 8007d34: 4602 mov r2, r0 + 8007d36: 68fb ldr r3, [r7, #12] + 8007d38: 1ad3 subs r3, r2, r3 + 8007d3a: f241 3288 movw r2, #5000 @ 0x1388 + 8007d3e: 4293 cmp r3, r2 + 8007d40: d901 bls.n 8007d46 { return HAL_TIMEOUT; - 8007aee: 2303 movs r3, #3 - 8007af0: e08f b.n 8007c12 + 8007d42: 2303 movs r3, #3 + 8007d44: e08f b.n 8007e66 while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 8007af2: 4b10 ldr r3, [pc, #64] @ (8007b34 ) - 8007af4: 689b ldr r3, [r3, #8] - 8007af6: f003 020c and.w r2, r3, #12 - 8007afa: 687b ldr r3, [r7, #4] - 8007afc: 685b ldr r3, [r3, #4] - 8007afe: 009b lsls r3, r3, #2 - 8007b00: 429a cmp r2, r3 - 8007b02: d1eb bne.n 8007adc + 8007d46: 4b10 ldr r3, [pc, #64] @ (8007d88 ) + 8007d48: 689b ldr r3, [r3, #8] + 8007d4a: f003 020c and.w r2, r3, #12 + 8007d4e: 687b ldr r3, [r7, #4] + 8007d50: 685b ldr r3, [r3, #4] + 8007d52: 009b lsls r3, r3, #2 + 8007d54: 429a cmp r2, r3 + 8007d56: d1eb bne.n 8007d30 } } } /* Decreasing the number of wait states because of lower CPU frequency */ if(FLatency < __HAL_FLASH_GET_LATENCY()) - 8007b04: 4b0a ldr r3, [pc, #40] @ (8007b30 ) - 8007b06: 681b ldr r3, [r3, #0] - 8007b08: f003 0307 and.w r3, r3, #7 - 8007b0c: 683a ldr r2, [r7, #0] - 8007b0e: 429a cmp r2, r3 - 8007b10: d212 bcs.n 8007b38 + 8007d58: 4b0a ldr r3, [pc, #40] @ (8007d84 ) + 8007d5a: 681b ldr r3, [r3, #0] + 8007d5c: f003 0307 and.w r3, r3, #7 + 8007d60: 683a ldr r2, [r7, #0] + 8007d62: 429a cmp r2, r3 + 8007d64: d212 bcs.n 8007d8c { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); - 8007b12: 4b07 ldr r3, [pc, #28] @ (8007b30 ) - 8007b14: 683a ldr r2, [r7, #0] - 8007b16: b2d2 uxtb r2, r2 - 8007b18: 701a strb r2, [r3, #0] + 8007d66: 4b07 ldr r3, [pc, #28] @ (8007d84 ) + 8007d68: 683a ldr r2, [r7, #0] + 8007d6a: b2d2 uxtb r2, r2 + 8007d6c: 701a strb r2, [r3, #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) - 8007b1a: 4b05 ldr r3, [pc, #20] @ (8007b30 ) - 8007b1c: 681b ldr r3, [r3, #0] - 8007b1e: f003 0307 and.w r3, r3, #7 - 8007b22: 683a ldr r2, [r7, #0] - 8007b24: 429a cmp r2, r3 - 8007b26: d007 beq.n 8007b38 + 8007d6e: 4b05 ldr r3, [pc, #20] @ (8007d84 ) + 8007d70: 681b ldr r3, [r3, #0] + 8007d72: f003 0307 and.w r3, r3, #7 + 8007d76: 683a ldr r2, [r7, #0] + 8007d78: 429a cmp r2, r3 + 8007d7a: d007 beq.n 8007d8c { return HAL_ERROR; - 8007b28: 2301 movs r3, #1 - 8007b2a: e072 b.n 8007c12 - 8007b2c: 0800e85c .word 0x0800e85c - 8007b30: 40023c00 .word 0x40023c00 - 8007b34: 40023800 .word 0x40023800 + 8007d7c: 2301 movs r3, #1 + 8007d7e: e072 b.n 8007e66 + 8007d80: 0800edcc .word 0x0800edcc + 8007d84: 40023c00 .word 0x40023c00 + 8007d88: 40023800 .word 0x40023800 } } /*-------------------------- PCLK1 Configuration ---------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) - 8007b38: 687b ldr r3, [r7, #4] - 8007b3a: 681b ldr r3, [r3, #0] - 8007b3c: f003 0304 and.w r3, r3, #4 - 8007b40: 2b00 cmp r3, #0 - 8007b42: d025 beq.n 8007b90 + 8007d8c: 687b ldr r3, [r7, #4] + 8007d8e: 681b ldr r3, [r3, #0] + 8007d90: f003 0304 and.w r3, r3, #4 + 8007d94: 2b00 cmp r3, #0 + 8007d96: d025 beq.n 8007de4 { assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); - 8007b44: 687b ldr r3, [r7, #4] - 8007b46: 68db ldr r3, [r3, #12] - 8007b48: 2b00 cmp r3, #0 - 8007b4a: d018 beq.n 8007b7e - 8007b4c: 687b ldr r3, [r7, #4] - 8007b4e: 68db ldr r3, [r3, #12] - 8007b50: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 8007b54: d013 beq.n 8007b7e - 8007b56: 687b ldr r3, [r7, #4] - 8007b58: 68db ldr r3, [r3, #12] - 8007b5a: f5b3 5fa0 cmp.w r3, #5120 @ 0x1400 - 8007b5e: d00e beq.n 8007b7e - 8007b60: 687b ldr r3, [r7, #4] - 8007b62: 68db ldr r3, [r3, #12] - 8007b64: f5b3 5fc0 cmp.w r3, #6144 @ 0x1800 - 8007b68: d009 beq.n 8007b7e - 8007b6a: 687b ldr r3, [r7, #4] - 8007b6c: 68db ldr r3, [r3, #12] - 8007b6e: f5b3 5fe0 cmp.w r3, #7168 @ 0x1c00 - 8007b72: d004 beq.n 8007b7e - 8007b74: f240 21c3 movw r1, #707 @ 0x2c3 - 8007b78: 4828 ldr r0, [pc, #160] @ (8007c1c ) - 8007b7a: f7fb fafb bl 8003174 + 8007d98: 687b ldr r3, [r7, #4] + 8007d9a: 68db ldr r3, [r3, #12] + 8007d9c: 2b00 cmp r3, #0 + 8007d9e: d018 beq.n 8007dd2 + 8007da0: 687b ldr r3, [r7, #4] + 8007da2: 68db ldr r3, [r3, #12] + 8007da4: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 8007da8: d013 beq.n 8007dd2 + 8007daa: 687b ldr r3, [r7, #4] + 8007dac: 68db ldr r3, [r3, #12] + 8007dae: f5b3 5fa0 cmp.w r3, #5120 @ 0x1400 + 8007db2: d00e beq.n 8007dd2 + 8007db4: 687b ldr r3, [r7, #4] + 8007db6: 68db ldr r3, [r3, #12] + 8007db8: f5b3 5fc0 cmp.w r3, #6144 @ 0x1800 + 8007dbc: d009 beq.n 8007dd2 + 8007dbe: 687b ldr r3, [r7, #4] + 8007dc0: 68db ldr r3, [r3, #12] + 8007dc2: f5b3 5fe0 cmp.w r3, #7168 @ 0x1c00 + 8007dc6: d004 beq.n 8007dd2 + 8007dc8: f240 21c3 movw r1, #707 @ 0x2c3 + 8007dcc: 4828 ldr r0, [pc, #160] @ (8007e70 ) + 8007dce: f7fb fa2d bl 800322c MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); - 8007b7e: 4b28 ldr r3, [pc, #160] @ (8007c20 ) - 8007b80: 689b ldr r3, [r3, #8] - 8007b82: f423 52e0 bic.w r2, r3, #7168 @ 0x1c00 - 8007b86: 687b ldr r3, [r7, #4] - 8007b88: 68db ldr r3, [r3, #12] - 8007b8a: 4925 ldr r1, [pc, #148] @ (8007c20 ) - 8007b8c: 4313 orrs r3, r2 - 8007b8e: 608b str r3, [r1, #8] + 8007dd2: 4b28 ldr r3, [pc, #160] @ (8007e74 ) + 8007dd4: 689b ldr r3, [r3, #8] + 8007dd6: f423 52e0 bic.w r2, r3, #7168 @ 0x1c00 + 8007dda: 687b ldr r3, [r7, #4] + 8007ddc: 68db ldr r3, [r3, #12] + 8007dde: 4925 ldr r1, [pc, #148] @ (8007e74 ) + 8007de0: 4313 orrs r3, r2 + 8007de2: 608b str r3, [r1, #8] } /*-------------------------- PCLK2 Configuration ---------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) - 8007b90: 687b ldr r3, [r7, #4] - 8007b92: 681b ldr r3, [r3, #0] - 8007b94: f003 0308 and.w r3, r3, #8 - 8007b98: 2b00 cmp r3, #0 - 8007b9a: d026 beq.n 8007bea + 8007de4: 687b ldr r3, [r7, #4] + 8007de6: 681b ldr r3, [r3, #0] + 8007de8: f003 0308 and.w r3, r3, #8 + 8007dec: 2b00 cmp r3, #0 + 8007dee: d026 beq.n 8007e3e { assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); - 8007b9c: 687b ldr r3, [r7, #4] - 8007b9e: 691b ldr r3, [r3, #16] - 8007ba0: 2b00 cmp r3, #0 - 8007ba2: d018 beq.n 8007bd6 - 8007ba4: 687b ldr r3, [r7, #4] - 8007ba6: 691b ldr r3, [r3, #16] - 8007ba8: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 8007bac: d013 beq.n 8007bd6 - 8007bae: 687b ldr r3, [r7, #4] - 8007bb0: 691b ldr r3, [r3, #16] - 8007bb2: f5b3 5fa0 cmp.w r3, #5120 @ 0x1400 - 8007bb6: d00e beq.n 8007bd6 - 8007bb8: 687b ldr r3, [r7, #4] - 8007bba: 691b ldr r3, [r3, #16] - 8007bbc: f5b3 5fc0 cmp.w r3, #6144 @ 0x1800 - 8007bc0: d009 beq.n 8007bd6 - 8007bc2: 687b ldr r3, [r7, #4] - 8007bc4: 691b ldr r3, [r3, #16] - 8007bc6: f5b3 5fe0 cmp.w r3, #7168 @ 0x1c00 - 8007bca: d004 beq.n 8007bd6 - 8007bcc: f240 21ca movw r1, #714 @ 0x2ca - 8007bd0: 4812 ldr r0, [pc, #72] @ (8007c1c ) - 8007bd2: f7fb facf bl 8003174 + 8007df0: 687b ldr r3, [r7, #4] + 8007df2: 691b ldr r3, [r3, #16] + 8007df4: 2b00 cmp r3, #0 + 8007df6: d018 beq.n 8007e2a + 8007df8: 687b ldr r3, [r7, #4] + 8007dfa: 691b ldr r3, [r3, #16] + 8007dfc: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 8007e00: d013 beq.n 8007e2a + 8007e02: 687b ldr r3, [r7, #4] + 8007e04: 691b ldr r3, [r3, #16] + 8007e06: f5b3 5fa0 cmp.w r3, #5120 @ 0x1400 + 8007e0a: d00e beq.n 8007e2a + 8007e0c: 687b ldr r3, [r7, #4] + 8007e0e: 691b ldr r3, [r3, #16] + 8007e10: f5b3 5fc0 cmp.w r3, #6144 @ 0x1800 + 8007e14: d009 beq.n 8007e2a + 8007e16: 687b ldr r3, [r7, #4] + 8007e18: 691b ldr r3, [r3, #16] + 8007e1a: f5b3 5fe0 cmp.w r3, #7168 @ 0x1c00 + 8007e1e: d004 beq.n 8007e2a + 8007e20: f240 21ca movw r1, #714 @ 0x2ca + 8007e24: 4812 ldr r0, [pc, #72] @ (8007e70 ) + 8007e26: f7fb fa01 bl 800322c MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3U)); - 8007bd6: 4b12 ldr r3, [pc, #72] @ (8007c20 ) - 8007bd8: 689b ldr r3, [r3, #8] - 8007bda: f423 4260 bic.w r2, r3, #57344 @ 0xe000 - 8007bde: 687b ldr r3, [r7, #4] - 8007be0: 691b ldr r3, [r3, #16] - 8007be2: 00db lsls r3, r3, #3 - 8007be4: 490e ldr r1, [pc, #56] @ (8007c20 ) - 8007be6: 4313 orrs r3, r2 - 8007be8: 608b str r3, [r1, #8] + 8007e2a: 4b12 ldr r3, [pc, #72] @ (8007e74 ) + 8007e2c: 689b ldr r3, [r3, #8] + 8007e2e: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 8007e32: 687b ldr r3, [r7, #4] + 8007e34: 691b ldr r3, [r3, #16] + 8007e36: 00db lsls r3, r3, #3 + 8007e38: 490e ldr r1, [pc, #56] @ (8007e74 ) + 8007e3a: 4313 orrs r3, r2 + 8007e3c: 608b str r3, [r1, #8] } /* Update the SystemCoreClock global variable */ SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos]; - 8007bea: f000 f821 bl 8007c30 - 8007bee: 4602 mov r2, r0 - 8007bf0: 4b0b ldr r3, [pc, #44] @ (8007c20 ) - 8007bf2: 689b ldr r3, [r3, #8] - 8007bf4: 091b lsrs r3, r3, #4 - 8007bf6: f003 030f and.w r3, r3, #15 - 8007bfa: 490a ldr r1, [pc, #40] @ (8007c24 ) - 8007bfc: 5ccb ldrb r3, [r1, r3] - 8007bfe: fa22 f303 lsr.w r3, r2, r3 - 8007c02: 4a09 ldr r2, [pc, #36] @ (8007c28 ) - 8007c04: 6013 str r3, [r2, #0] + 8007e3e: f000 f821 bl 8007e84 + 8007e42: 4602 mov r2, r0 + 8007e44: 4b0b ldr r3, [pc, #44] @ (8007e74 ) + 8007e46: 689b ldr r3, [r3, #8] + 8007e48: 091b lsrs r3, r3, #4 + 8007e4a: f003 030f and.w r3, r3, #15 + 8007e4e: 490a ldr r1, [pc, #40] @ (8007e78 ) + 8007e50: 5ccb ldrb r3, [r1, r3] + 8007e52: fa22 f303 lsr.w r3, r2, r3 + 8007e56: 4a09 ldr r2, [pc, #36] @ (8007e7c ) + 8007e58: 6013 str r3, [r2, #0] /* Configure the source of time base considering new system clocks settings */ HAL_InitTick (uwTickPrio); - 8007c06: 4b09 ldr r3, [pc, #36] @ (8007c2c ) - 8007c08: 681b ldr r3, [r3, #0] - 8007c0a: 4618 mov r0, r3 - 8007c0c: f7fc fa60 bl 80040d0 + 8007e5a: 4b09 ldr r3, [pc, #36] @ (8007e80 ) + 8007e5c: 681b ldr r3, [r3, #0] + 8007e5e: 4618 mov r0, r3 + 8007e60: f7fc f9ce bl 8004200 return HAL_OK; - 8007c10: 2300 movs r3, #0 + 8007e64: 2300 movs r3, #0 } - 8007c12: 4618 mov r0, r3 - 8007c14: 3710 adds r7, #16 - 8007c16: 46bd mov sp, r7 - 8007c18: bd80 pop {r7, pc} - 8007c1a: bf00 nop - 8007c1c: 0800e85c .word 0x0800e85c - 8007c20: 40023800 .word 0x40023800 - 8007c24: 0800e9c0 .word 0x0800e9c0 - 8007c28: 20000000 .word 0x20000000 - 8007c2c: 20000004 .word 0x20000004 + 8007e66: 4618 mov r0, r3 + 8007e68: 3710 adds r7, #16 + 8007e6a: 46bd mov sp, r7 + 8007e6c: bd80 pop {r7, pc} + 8007e6e: bf00 nop + 8007e70: 0800edcc .word 0x0800edcc + 8007e74: 40023800 .word 0x40023800 + 8007e78: 0800ef30 .word 0x0800ef30 + 8007e7c: 20000000 .word 0x20000000 + 8007e80: 20000004 .word 0x20000004 -08007c30 : +08007e84 : * * * @retval SYSCLK frequency */ __weak uint32_t HAL_RCC_GetSysClockFreq(void) { - 8007c30: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} - 8007c34: b094 sub sp, #80 @ 0x50 - 8007c36: af00 add r7, sp, #0 + 8007e84: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} + 8007e88: b094 sub sp, #80 @ 0x50 + 8007e8a: af00 add r7, sp, #0 uint32_t pllm = 0U, pllvco = 0U, pllp = 0U; - 8007c38: 2300 movs r3, #0 - 8007c3a: 647b str r3, [r7, #68] @ 0x44 - 8007c3c: 2300 movs r3, #0 - 8007c3e: 64fb str r3, [r7, #76] @ 0x4c - 8007c40: 2300 movs r3, #0 - 8007c42: 643b str r3, [r7, #64] @ 0x40 + 8007e8c: 2300 movs r3, #0 + 8007e8e: 647b str r3, [r7, #68] @ 0x44 + 8007e90: 2300 movs r3, #0 + 8007e92: 64fb str r3, [r7, #76] @ 0x4c + 8007e94: 2300 movs r3, #0 + 8007e96: 643b str r3, [r7, #64] @ 0x40 uint32_t sysclockfreq = 0U; - 8007c44: 2300 movs r3, #0 - 8007c46: 64bb str r3, [r7, #72] @ 0x48 + 8007e98: 2300 movs r3, #0 + 8007e9a: 64bb str r3, [r7, #72] @ 0x48 /* Get SYSCLK source -------------------------------------------------------*/ switch (RCC->CFGR & RCC_CFGR_SWS) - 8007c48: 4b79 ldr r3, [pc, #484] @ (8007e30 ) - 8007c4a: 689b ldr r3, [r3, #8] - 8007c4c: f003 030c and.w r3, r3, #12 - 8007c50: 2b08 cmp r3, #8 - 8007c52: d00d beq.n 8007c70 - 8007c54: 2b08 cmp r3, #8 - 8007c56: f200 80e1 bhi.w 8007e1c - 8007c5a: 2b00 cmp r3, #0 - 8007c5c: d002 beq.n 8007c64 - 8007c5e: 2b04 cmp r3, #4 - 8007c60: d003 beq.n 8007c6a - 8007c62: e0db b.n 8007e1c + 8007e9c: 4b79 ldr r3, [pc, #484] @ (8008084 ) + 8007e9e: 689b ldr r3, [r3, #8] + 8007ea0: f003 030c and.w r3, r3, #12 + 8007ea4: 2b08 cmp r3, #8 + 8007ea6: d00d beq.n 8007ec4 + 8007ea8: 2b08 cmp r3, #8 + 8007eaa: f200 80e1 bhi.w 8008070 + 8007eae: 2b00 cmp r3, #0 + 8007eb0: d002 beq.n 8007eb8 + 8007eb2: 2b04 cmp r3, #4 + 8007eb4: d003 beq.n 8007ebe + 8007eb6: e0db b.n 8008070 { case RCC_CFGR_SWS_HSI: /* HSI used as system clock source */ { sysclockfreq = HSI_VALUE; - 8007c64: 4b73 ldr r3, [pc, #460] @ (8007e34 ) - 8007c66: 64bb str r3, [r7, #72] @ 0x48 + 8007eb8: 4b73 ldr r3, [pc, #460] @ (8008088 ) + 8007eba: 64bb str r3, [r7, #72] @ 0x48 break; - 8007c68: e0db b.n 8007e22 + 8007ebc: e0db b.n 8008076 } case RCC_CFGR_SWS_HSE: /* HSE used as system clock source */ { sysclockfreq = HSE_VALUE; - 8007c6a: 4b73 ldr r3, [pc, #460] @ (8007e38 ) - 8007c6c: 64bb str r3, [r7, #72] @ 0x48 + 8007ebe: 4b73 ldr r3, [pc, #460] @ (800808c ) + 8007ec0: 64bb str r3, [r7, #72] @ 0x48 break; - 8007c6e: e0d8 b.n 8007e22 + 8007ec2: e0d8 b.n 8008076 } case RCC_CFGR_SWS_PLL: /* PLL used as system clock source */ { /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN SYSCLK = PLL_VCO / PLLP */ pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; - 8007c70: 4b6f ldr r3, [pc, #444] @ (8007e30 ) - 8007c72: 685b ldr r3, [r3, #4] - 8007c74: f003 033f and.w r3, r3, #63 @ 0x3f - 8007c78: 647b str r3, [r7, #68] @ 0x44 + 8007ec4: 4b6f ldr r3, [pc, #444] @ (8008084 ) + 8007ec6: 685b ldr r3, [r3, #4] + 8007ec8: f003 033f and.w r3, r3, #63 @ 0x3f + 8007ecc: 647b str r3, [r7, #68] @ 0x44 if(__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_HSI) - 8007c7a: 4b6d ldr r3, [pc, #436] @ (8007e30 ) - 8007c7c: 685b ldr r3, [r3, #4] - 8007c7e: f403 0380 and.w r3, r3, #4194304 @ 0x400000 - 8007c82: 2b00 cmp r3, #0 - 8007c84: d063 beq.n 8007d4e + 8007ece: 4b6d ldr r3, [pc, #436] @ (8008084 ) + 8007ed0: 685b ldr r3, [r3, #4] + 8007ed2: f403 0380 and.w r3, r3, #4194304 @ 0x400000 + 8007ed6: 2b00 cmp r3, #0 + 8007ed8: d063 beq.n 8007fa2 { /* HSE used as PLL clock source */ pllvco = (uint32_t) ((((uint64_t) HSE_VALUE * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm); - 8007c86: 4b6a ldr r3, [pc, #424] @ (8007e30 ) - 8007c88: 685b ldr r3, [r3, #4] - 8007c8a: 099b lsrs r3, r3, #6 - 8007c8c: 2200 movs r2, #0 - 8007c8e: 63bb str r3, [r7, #56] @ 0x38 - 8007c90: 63fa str r2, [r7, #60] @ 0x3c - 8007c92: 6bbb ldr r3, [r7, #56] @ 0x38 - 8007c94: f3c3 0308 ubfx r3, r3, #0, #9 - 8007c98: 633b str r3, [r7, #48] @ 0x30 - 8007c9a: 2300 movs r3, #0 - 8007c9c: 637b str r3, [r7, #52] @ 0x34 - 8007c9e: e9d7 450c ldrd r4, r5, [r7, #48] @ 0x30 - 8007ca2: 4622 mov r2, r4 - 8007ca4: 462b mov r3, r5 - 8007ca6: f04f 0000 mov.w r0, #0 - 8007caa: f04f 0100 mov.w r1, #0 - 8007cae: 0159 lsls r1, r3, #5 - 8007cb0: ea41 61d2 orr.w r1, r1, r2, lsr #27 - 8007cb4: 0150 lsls r0, r2, #5 - 8007cb6: 4602 mov r2, r0 - 8007cb8: 460b mov r3, r1 - 8007cba: 4621 mov r1, r4 - 8007cbc: 1a51 subs r1, r2, r1 - 8007cbe: 6139 str r1, [r7, #16] - 8007cc0: 4629 mov r1, r5 - 8007cc2: eb63 0301 sbc.w r3, r3, r1 - 8007cc6: 617b str r3, [r7, #20] - 8007cc8: f04f 0200 mov.w r2, #0 - 8007ccc: f04f 0300 mov.w r3, #0 - 8007cd0: e9d7 ab04 ldrd sl, fp, [r7, #16] - 8007cd4: 4659 mov r1, fp - 8007cd6: 018b lsls r3, r1, #6 - 8007cd8: 4651 mov r1, sl - 8007cda: ea43 6391 orr.w r3, r3, r1, lsr #26 - 8007cde: 4651 mov r1, sl - 8007ce0: 018a lsls r2, r1, #6 - 8007ce2: 4651 mov r1, sl - 8007ce4: ebb2 0801 subs.w r8, r2, r1 - 8007ce8: 4659 mov r1, fp - 8007cea: eb63 0901 sbc.w r9, r3, r1 - 8007cee: f04f 0200 mov.w r2, #0 - 8007cf2: f04f 0300 mov.w r3, #0 - 8007cf6: ea4f 03c9 mov.w r3, r9, lsl #3 - 8007cfa: ea43 7358 orr.w r3, r3, r8, lsr #29 - 8007cfe: ea4f 02c8 mov.w r2, r8, lsl #3 - 8007d02: 4690 mov r8, r2 - 8007d04: 4699 mov r9, r3 - 8007d06: 4623 mov r3, r4 - 8007d08: eb18 0303 adds.w r3, r8, r3 - 8007d0c: 60bb str r3, [r7, #8] - 8007d0e: 462b mov r3, r5 - 8007d10: eb49 0303 adc.w r3, r9, r3 - 8007d14: 60fb str r3, [r7, #12] - 8007d16: f04f 0200 mov.w r2, #0 - 8007d1a: f04f 0300 mov.w r3, #0 - 8007d1e: e9d7 4502 ldrd r4, r5, [r7, #8] - 8007d22: 4629 mov r1, r5 - 8007d24: 024b lsls r3, r1, #9 - 8007d26: 4621 mov r1, r4 - 8007d28: ea43 53d1 orr.w r3, r3, r1, lsr #23 - 8007d2c: 4621 mov r1, r4 - 8007d2e: 024a lsls r2, r1, #9 - 8007d30: 4610 mov r0, r2 - 8007d32: 4619 mov r1, r3 - 8007d34: 6c7b ldr r3, [r7, #68] @ 0x44 - 8007d36: 2200 movs r2, #0 - 8007d38: 62bb str r3, [r7, #40] @ 0x28 - 8007d3a: 62fa str r2, [r7, #44] @ 0x2c - 8007d3c: e9d7 230a ldrd r2, r3, [r7, #40] @ 0x28 - 8007d40: f7f8 ffa2 bl 8000c88 <__aeabi_uldivmod> - 8007d44: 4602 mov r2, r0 - 8007d46: 460b mov r3, r1 - 8007d48: 4613 mov r3, r2 - 8007d4a: 64fb str r3, [r7, #76] @ 0x4c - 8007d4c: e058 b.n 8007e00 + 8007eda: 4b6a ldr r3, [pc, #424] @ (8008084 ) + 8007edc: 685b ldr r3, [r3, #4] + 8007ede: 099b lsrs r3, r3, #6 + 8007ee0: 2200 movs r2, #0 + 8007ee2: 63bb str r3, [r7, #56] @ 0x38 + 8007ee4: 63fa str r2, [r7, #60] @ 0x3c + 8007ee6: 6bbb ldr r3, [r7, #56] @ 0x38 + 8007ee8: f3c3 0308 ubfx r3, r3, #0, #9 + 8007eec: 633b str r3, [r7, #48] @ 0x30 + 8007eee: 2300 movs r3, #0 + 8007ef0: 637b str r3, [r7, #52] @ 0x34 + 8007ef2: e9d7 450c ldrd r4, r5, [r7, #48] @ 0x30 + 8007ef6: 4622 mov r2, r4 + 8007ef8: 462b mov r3, r5 + 8007efa: f04f 0000 mov.w r0, #0 + 8007efe: f04f 0100 mov.w r1, #0 + 8007f02: 0159 lsls r1, r3, #5 + 8007f04: ea41 61d2 orr.w r1, r1, r2, lsr #27 + 8007f08: 0150 lsls r0, r2, #5 + 8007f0a: 4602 mov r2, r0 + 8007f0c: 460b mov r3, r1 + 8007f0e: 4621 mov r1, r4 + 8007f10: 1a51 subs r1, r2, r1 + 8007f12: 6139 str r1, [r7, #16] + 8007f14: 4629 mov r1, r5 + 8007f16: eb63 0301 sbc.w r3, r3, r1 + 8007f1a: 617b str r3, [r7, #20] + 8007f1c: f04f 0200 mov.w r2, #0 + 8007f20: f04f 0300 mov.w r3, #0 + 8007f24: e9d7 ab04 ldrd sl, fp, [r7, #16] + 8007f28: 4659 mov r1, fp + 8007f2a: 018b lsls r3, r1, #6 + 8007f2c: 4651 mov r1, sl + 8007f2e: ea43 6391 orr.w r3, r3, r1, lsr #26 + 8007f32: 4651 mov r1, sl + 8007f34: 018a lsls r2, r1, #6 + 8007f36: 4651 mov r1, sl + 8007f38: ebb2 0801 subs.w r8, r2, r1 + 8007f3c: 4659 mov r1, fp + 8007f3e: eb63 0901 sbc.w r9, r3, r1 + 8007f42: f04f 0200 mov.w r2, #0 + 8007f46: f04f 0300 mov.w r3, #0 + 8007f4a: ea4f 03c9 mov.w r3, r9, lsl #3 + 8007f4e: ea43 7358 orr.w r3, r3, r8, lsr #29 + 8007f52: ea4f 02c8 mov.w r2, r8, lsl #3 + 8007f56: 4690 mov r8, r2 + 8007f58: 4699 mov r9, r3 + 8007f5a: 4623 mov r3, r4 + 8007f5c: eb18 0303 adds.w r3, r8, r3 + 8007f60: 60bb str r3, [r7, #8] + 8007f62: 462b mov r3, r5 + 8007f64: eb49 0303 adc.w r3, r9, r3 + 8007f68: 60fb str r3, [r7, #12] + 8007f6a: f04f 0200 mov.w r2, #0 + 8007f6e: f04f 0300 mov.w r3, #0 + 8007f72: e9d7 4502 ldrd r4, r5, [r7, #8] + 8007f76: 4629 mov r1, r5 + 8007f78: 024b lsls r3, r1, #9 + 8007f7a: 4621 mov r1, r4 + 8007f7c: ea43 53d1 orr.w r3, r3, r1, lsr #23 + 8007f80: 4621 mov r1, r4 + 8007f82: 024a lsls r2, r1, #9 + 8007f84: 4610 mov r0, r2 + 8007f86: 4619 mov r1, r3 + 8007f88: 6c7b ldr r3, [r7, #68] @ 0x44 + 8007f8a: 2200 movs r2, #0 + 8007f8c: 62bb str r3, [r7, #40] @ 0x28 + 8007f8e: 62fa str r2, [r7, #44] @ 0x2c + 8007f90: e9d7 230a ldrd r2, r3, [r7, #40] @ 0x28 + 8007f94: f7f8 fe78 bl 8000c88 <__aeabi_uldivmod> + 8007f98: 4602 mov r2, r0 + 8007f9a: 460b mov r3, r1 + 8007f9c: 4613 mov r3, r2 + 8007f9e: 64fb str r3, [r7, #76] @ 0x4c + 8007fa0: e058 b.n 8008054 } else { /* HSI used as PLL clock source */ pllvco = (uint32_t) ((((uint64_t) HSI_VALUE * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm); - 8007d4e: 4b38 ldr r3, [pc, #224] @ (8007e30 ) - 8007d50: 685b ldr r3, [r3, #4] - 8007d52: 099b lsrs r3, r3, #6 - 8007d54: 2200 movs r2, #0 - 8007d56: 4618 mov r0, r3 - 8007d58: 4611 mov r1, r2 - 8007d5a: f3c0 0308 ubfx r3, r0, #0, #9 - 8007d5e: 623b str r3, [r7, #32] - 8007d60: 2300 movs r3, #0 - 8007d62: 627b str r3, [r7, #36] @ 0x24 - 8007d64: e9d7 8908 ldrd r8, r9, [r7, #32] - 8007d68: 4642 mov r2, r8 - 8007d6a: 464b mov r3, r9 - 8007d6c: f04f 0000 mov.w r0, #0 - 8007d70: f04f 0100 mov.w r1, #0 - 8007d74: 0159 lsls r1, r3, #5 - 8007d76: ea41 61d2 orr.w r1, r1, r2, lsr #27 - 8007d7a: 0150 lsls r0, r2, #5 - 8007d7c: 4602 mov r2, r0 - 8007d7e: 460b mov r3, r1 - 8007d80: 4641 mov r1, r8 - 8007d82: ebb2 0a01 subs.w sl, r2, r1 - 8007d86: 4649 mov r1, r9 - 8007d88: eb63 0b01 sbc.w fp, r3, r1 - 8007d8c: f04f 0200 mov.w r2, #0 - 8007d90: f04f 0300 mov.w r3, #0 - 8007d94: ea4f 138b mov.w r3, fp, lsl #6 - 8007d98: ea43 639a orr.w r3, r3, sl, lsr #26 - 8007d9c: ea4f 128a mov.w r2, sl, lsl #6 - 8007da0: ebb2 040a subs.w r4, r2, sl - 8007da4: eb63 050b sbc.w r5, r3, fp - 8007da8: f04f 0200 mov.w r2, #0 - 8007dac: f04f 0300 mov.w r3, #0 - 8007db0: 00eb lsls r3, r5, #3 - 8007db2: ea43 7354 orr.w r3, r3, r4, lsr #29 - 8007db6: 00e2 lsls r2, r4, #3 - 8007db8: 4614 mov r4, r2 - 8007dba: 461d mov r5, r3 - 8007dbc: 4643 mov r3, r8 - 8007dbe: 18e3 adds r3, r4, r3 - 8007dc0: 603b str r3, [r7, #0] - 8007dc2: 464b mov r3, r9 - 8007dc4: eb45 0303 adc.w r3, r5, r3 - 8007dc8: 607b str r3, [r7, #4] - 8007dca: f04f 0200 mov.w r2, #0 - 8007dce: f04f 0300 mov.w r3, #0 - 8007dd2: e9d7 4500 ldrd r4, r5, [r7] - 8007dd6: 4629 mov r1, r5 - 8007dd8: 028b lsls r3, r1, #10 - 8007dda: 4621 mov r1, r4 - 8007ddc: ea43 5391 orr.w r3, r3, r1, lsr #22 - 8007de0: 4621 mov r1, r4 - 8007de2: 028a lsls r2, r1, #10 - 8007de4: 4610 mov r0, r2 - 8007de6: 4619 mov r1, r3 - 8007de8: 6c7b ldr r3, [r7, #68] @ 0x44 - 8007dea: 2200 movs r2, #0 - 8007dec: 61bb str r3, [r7, #24] - 8007dee: 61fa str r2, [r7, #28] - 8007df0: e9d7 2306 ldrd r2, r3, [r7, #24] - 8007df4: f7f8 ff48 bl 8000c88 <__aeabi_uldivmod> - 8007df8: 4602 mov r2, r0 - 8007dfa: 460b mov r3, r1 - 8007dfc: 4613 mov r3, r2 - 8007dfe: 64fb str r3, [r7, #76] @ 0x4c + 8007fa2: 4b38 ldr r3, [pc, #224] @ (8008084 ) + 8007fa4: 685b ldr r3, [r3, #4] + 8007fa6: 099b lsrs r3, r3, #6 + 8007fa8: 2200 movs r2, #0 + 8007faa: 4618 mov r0, r3 + 8007fac: 4611 mov r1, r2 + 8007fae: f3c0 0308 ubfx r3, r0, #0, #9 + 8007fb2: 623b str r3, [r7, #32] + 8007fb4: 2300 movs r3, #0 + 8007fb6: 627b str r3, [r7, #36] @ 0x24 + 8007fb8: e9d7 8908 ldrd r8, r9, [r7, #32] + 8007fbc: 4642 mov r2, r8 + 8007fbe: 464b mov r3, r9 + 8007fc0: f04f 0000 mov.w r0, #0 + 8007fc4: f04f 0100 mov.w r1, #0 + 8007fc8: 0159 lsls r1, r3, #5 + 8007fca: ea41 61d2 orr.w r1, r1, r2, lsr #27 + 8007fce: 0150 lsls r0, r2, #5 + 8007fd0: 4602 mov r2, r0 + 8007fd2: 460b mov r3, r1 + 8007fd4: 4641 mov r1, r8 + 8007fd6: ebb2 0a01 subs.w sl, r2, r1 + 8007fda: 4649 mov r1, r9 + 8007fdc: eb63 0b01 sbc.w fp, r3, r1 + 8007fe0: f04f 0200 mov.w r2, #0 + 8007fe4: f04f 0300 mov.w r3, #0 + 8007fe8: ea4f 138b mov.w r3, fp, lsl #6 + 8007fec: ea43 639a orr.w r3, r3, sl, lsr #26 + 8007ff0: ea4f 128a mov.w r2, sl, lsl #6 + 8007ff4: ebb2 040a subs.w r4, r2, sl + 8007ff8: eb63 050b sbc.w r5, r3, fp + 8007ffc: f04f 0200 mov.w r2, #0 + 8008000: f04f 0300 mov.w r3, #0 + 8008004: 00eb lsls r3, r5, #3 + 8008006: ea43 7354 orr.w r3, r3, r4, lsr #29 + 800800a: 00e2 lsls r2, r4, #3 + 800800c: 4614 mov r4, r2 + 800800e: 461d mov r5, r3 + 8008010: 4643 mov r3, r8 + 8008012: 18e3 adds r3, r4, r3 + 8008014: 603b str r3, [r7, #0] + 8008016: 464b mov r3, r9 + 8008018: eb45 0303 adc.w r3, r5, r3 + 800801c: 607b str r3, [r7, #4] + 800801e: f04f 0200 mov.w r2, #0 + 8008022: f04f 0300 mov.w r3, #0 + 8008026: e9d7 4500 ldrd r4, r5, [r7] + 800802a: 4629 mov r1, r5 + 800802c: 028b lsls r3, r1, #10 + 800802e: 4621 mov r1, r4 + 8008030: ea43 5391 orr.w r3, r3, r1, lsr #22 + 8008034: 4621 mov r1, r4 + 8008036: 028a lsls r2, r1, #10 + 8008038: 4610 mov r0, r2 + 800803a: 4619 mov r1, r3 + 800803c: 6c7b ldr r3, [r7, #68] @ 0x44 + 800803e: 2200 movs r2, #0 + 8008040: 61bb str r3, [r7, #24] + 8008042: 61fa str r2, [r7, #28] + 8008044: e9d7 2306 ldrd r2, r3, [r7, #24] + 8008048: f7f8 fe1e bl 8000c88 <__aeabi_uldivmod> + 800804c: 4602 mov r2, r0 + 800804e: 460b mov r3, r1 + 8008050: 4613 mov r3, r2 + 8008052: 64fb str r3, [r7, #76] @ 0x4c } pllp = ((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1U) *2U); - 8007e00: 4b0b ldr r3, [pc, #44] @ (8007e30 ) - 8007e02: 685b ldr r3, [r3, #4] - 8007e04: 0c1b lsrs r3, r3, #16 - 8007e06: f003 0303 and.w r3, r3, #3 - 8007e0a: 3301 adds r3, #1 - 8007e0c: 005b lsls r3, r3, #1 - 8007e0e: 643b str r3, [r7, #64] @ 0x40 + 8008054: 4b0b ldr r3, [pc, #44] @ (8008084 ) + 8008056: 685b ldr r3, [r3, #4] + 8008058: 0c1b lsrs r3, r3, #16 + 800805a: f003 0303 and.w r3, r3, #3 + 800805e: 3301 adds r3, #1 + 8008060: 005b lsls r3, r3, #1 + 8008062: 643b str r3, [r7, #64] @ 0x40 sysclockfreq = pllvco/pllp; - 8007e10: 6cfa ldr r2, [r7, #76] @ 0x4c - 8007e12: 6c3b ldr r3, [r7, #64] @ 0x40 - 8007e14: fbb2 f3f3 udiv r3, r2, r3 - 8007e18: 64bb str r3, [r7, #72] @ 0x48 + 8008064: 6cfa ldr r2, [r7, #76] @ 0x4c + 8008066: 6c3b ldr r3, [r7, #64] @ 0x40 + 8008068: fbb2 f3f3 udiv r3, r2, r3 + 800806c: 64bb str r3, [r7, #72] @ 0x48 break; - 8007e1a: e002 b.n 8007e22 + 800806e: e002 b.n 8008076 } default: { sysclockfreq = HSI_VALUE; - 8007e1c: 4b05 ldr r3, [pc, #20] @ (8007e34 ) - 8007e1e: 64bb str r3, [r7, #72] @ 0x48 + 8008070: 4b05 ldr r3, [pc, #20] @ (8008088 ) + 8008072: 64bb str r3, [r7, #72] @ 0x48 break; - 8007e20: bf00 nop + 8008074: bf00 nop } } return sysclockfreq; - 8007e22: 6cbb ldr r3, [r7, #72] @ 0x48 + 8008076: 6cbb ldr r3, [r7, #72] @ 0x48 } - 8007e24: 4618 mov r0, r3 - 8007e26: 3750 adds r7, #80 @ 0x50 - 8007e28: 46bd mov sp, r7 - 8007e2a: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} - 8007e2e: bf00 nop - 8007e30: 40023800 .word 0x40023800 - 8007e34: 00f42400 .word 0x00f42400 - 8007e38: 007a1200 .word 0x007a1200 + 8008078: 4618 mov r0, r3 + 800807a: 3750 adds r7, #80 @ 0x50 + 800807c: 46bd mov sp, r7 + 800807e: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} + 8008082: bf00 nop + 8008084: 40023800 .word 0x40023800 + 8008088: 00f42400 .word 0x00f42400 + 800808c: 007a1200 .word 0x007a1200 -08007e3c : +08008090 : * @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) { - 8007e3c: b480 push {r7} - 8007e3e: af00 add r7, sp, #0 + 8008090: b480 push {r7} + 8008092: af00 add r7, sp, #0 return SystemCoreClock; - 8007e40: 4b03 ldr r3, [pc, #12] @ (8007e50 ) - 8007e42: 681b ldr r3, [r3, #0] + 8008094: 4b03 ldr r3, [pc, #12] @ (80080a4 ) + 8008096: 681b ldr r3, [r3, #0] } - 8007e44: 4618 mov r0, r3 - 8007e46: 46bd mov sp, r7 - 8007e48: f85d 7b04 ldr.w r7, [sp], #4 - 8007e4c: 4770 bx lr - 8007e4e: bf00 nop - 8007e50: 20000000 .word 0x20000000 + 8008098: 4618 mov r0, r3 + 800809a: 46bd mov sp, r7 + 800809c: f85d 7b04 ldr.w r7, [sp], #4 + 80080a0: 4770 bx lr + 80080a2: bf00 nop + 80080a4: 20000000 .word 0x20000000 -08007e54 : +080080a8 : * @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) { - 8007e54: b580 push {r7, lr} - 8007e56: af00 add r7, sp, #0 + 80080a8: b580 push {r7, lr} + 80080aa: 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]); - 8007e58: f7ff fff0 bl 8007e3c - 8007e5c: 4602 mov r2, r0 - 8007e5e: 4b05 ldr r3, [pc, #20] @ (8007e74 ) - 8007e60: 689b ldr r3, [r3, #8] - 8007e62: 0a9b lsrs r3, r3, #10 - 8007e64: f003 0307 and.w r3, r3, #7 - 8007e68: 4903 ldr r1, [pc, #12] @ (8007e78 ) - 8007e6a: 5ccb ldrb r3, [r1, r3] - 8007e6c: fa22 f303 lsr.w r3, r2, r3 + 80080ac: f7ff fff0 bl 8008090 + 80080b0: 4602 mov r2, r0 + 80080b2: 4b05 ldr r3, [pc, #20] @ (80080c8 ) + 80080b4: 689b ldr r3, [r3, #8] + 80080b6: 0a9b lsrs r3, r3, #10 + 80080b8: f003 0307 and.w r3, r3, #7 + 80080bc: 4903 ldr r1, [pc, #12] @ (80080cc ) + 80080be: 5ccb ldrb r3, [r1, r3] + 80080c0: fa22 f303 lsr.w r3, r2, r3 } - 8007e70: 4618 mov r0, r3 - 8007e72: bd80 pop {r7, pc} - 8007e74: 40023800 .word 0x40023800 - 8007e78: 0800e9d0 .word 0x0800e9d0 + 80080c4: 4618 mov r0, r3 + 80080c6: bd80 pop {r7, pc} + 80080c8: 40023800 .word 0x40023800 + 80080cc: 0800ef40 .word 0x0800ef40 -08007e7c : +080080d0 : * @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) { - 8007e7c: b580 push {r7, lr} - 8007e7e: af00 add r7, sp, #0 + 80080d0: b580 push {r7, lr} + 80080d2: 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]); - 8007e80: f7ff ffdc bl 8007e3c - 8007e84: 4602 mov r2, r0 - 8007e86: 4b05 ldr r3, [pc, #20] @ (8007e9c ) - 8007e88: 689b ldr r3, [r3, #8] - 8007e8a: 0b5b lsrs r3, r3, #13 - 8007e8c: f003 0307 and.w r3, r3, #7 - 8007e90: 4903 ldr r1, [pc, #12] @ (8007ea0 ) - 8007e92: 5ccb ldrb r3, [r1, r3] - 8007e94: fa22 f303 lsr.w r3, r2, r3 + 80080d4: f7ff ffdc bl 8008090 + 80080d8: 4602 mov r2, r0 + 80080da: 4b05 ldr r3, [pc, #20] @ (80080f0 ) + 80080dc: 689b ldr r3, [r3, #8] + 80080de: 0b5b lsrs r3, r3, #13 + 80080e0: f003 0307 and.w r3, r3, #7 + 80080e4: 4903 ldr r1, [pc, #12] @ (80080f4 ) + 80080e6: 5ccb ldrb r3, [r1, r3] + 80080e8: fa22 f303 lsr.w r3, r2, r3 } - 8007e98: 4618 mov r0, r3 - 8007e9a: bd80 pop {r7, pc} - 8007e9c: 40023800 .word 0x40023800 - 8007ea0: 0800e9d0 .word 0x0800e9d0 + 80080ec: 4618 mov r0, r3 + 80080ee: bd80 pop {r7, pc} + 80080f0: 40023800 .word 0x40023800 + 80080f4: 0800ef40 .word 0x0800ef40 -08007ea4 : +080080f8 : * will be configured. * @param pFLatency Pointer on the Flash Latency. * @retval None */ void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency) { - 8007ea4: b480 push {r7} - 8007ea6: b083 sub sp, #12 - 8007ea8: af00 add r7, sp, #0 - 8007eaa: 6078 str r0, [r7, #4] - 8007eac: 6039 str r1, [r7, #0] + 80080f8: b480 push {r7} + 80080fa: b083 sub sp, #12 + 80080fc: af00 add r7, sp, #0 + 80080fe: 6078 str r0, [r7, #4] + 8008100: 6039 str r1, [r7, #0] /* Set all possible values for the Clock type parameter --------------------*/ RCC_ClkInitStruct->ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; - 8007eae: 687b ldr r3, [r7, #4] - 8007eb0: 220f movs r2, #15 - 8007eb2: 601a str r2, [r3, #0] + 8008102: 687b ldr r3, [r7, #4] + 8008104: 220f movs r2, #15 + 8008106: 601a str r2, [r3, #0] /* Get the SYSCLK configuration --------------------------------------------*/ RCC_ClkInitStruct->SYSCLKSource = (uint32_t)(RCC->CFGR & RCC_CFGR_SW); - 8007eb4: 4b12 ldr r3, [pc, #72] @ (8007f00 ) - 8007eb6: 689b ldr r3, [r3, #8] - 8007eb8: f003 0203 and.w r2, r3, #3 - 8007ebc: 687b ldr r3, [r7, #4] - 8007ebe: 605a str r2, [r3, #4] + 8008108: 4b12 ldr r3, [pc, #72] @ (8008154 ) + 800810a: 689b ldr r3, [r3, #8] + 800810c: f003 0203 and.w r2, r3, #3 + 8008110: 687b ldr r3, [r7, #4] + 8008112: 605a str r2, [r3, #4] /* Get the HCLK configuration ----------------------------------------------*/ RCC_ClkInitStruct->AHBCLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_HPRE); - 8007ec0: 4b0f ldr r3, [pc, #60] @ (8007f00 ) - 8007ec2: 689b ldr r3, [r3, #8] - 8007ec4: f003 02f0 and.w r2, r3, #240 @ 0xf0 - 8007ec8: 687b ldr r3, [r7, #4] - 8007eca: 609a str r2, [r3, #8] + 8008114: 4b0f ldr r3, [pc, #60] @ (8008154 ) + 8008116: 689b ldr r3, [r3, #8] + 8008118: f003 02f0 and.w r2, r3, #240 @ 0xf0 + 800811c: 687b ldr r3, [r7, #4] + 800811e: 609a str r2, [r3, #8] /* Get the APB1 configuration ----------------------------------------------*/ RCC_ClkInitStruct->APB1CLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_PPRE1); - 8007ecc: 4b0c ldr r3, [pc, #48] @ (8007f00 ) - 8007ece: 689b ldr r3, [r3, #8] - 8007ed0: f403 52e0 and.w r2, r3, #7168 @ 0x1c00 - 8007ed4: 687b ldr r3, [r7, #4] - 8007ed6: 60da str r2, [r3, #12] + 8008120: 4b0c ldr r3, [pc, #48] @ (8008154 ) + 8008122: 689b ldr r3, [r3, #8] + 8008124: f403 52e0 and.w r2, r3, #7168 @ 0x1c00 + 8008128: 687b ldr r3, [r7, #4] + 800812a: 60da str r2, [r3, #12] /* Get the APB2 configuration ----------------------------------------------*/ RCC_ClkInitStruct->APB2CLKDivider = (uint32_t)((RCC->CFGR & RCC_CFGR_PPRE2) >> 3U); - 8007ed8: 4b09 ldr r3, [pc, #36] @ (8007f00 ) - 8007eda: 689b ldr r3, [r3, #8] - 8007edc: 08db lsrs r3, r3, #3 - 8007ede: f403 52e0 and.w r2, r3, #7168 @ 0x1c00 - 8007ee2: 687b ldr r3, [r7, #4] - 8007ee4: 611a str r2, [r3, #16] + 800812c: 4b09 ldr r3, [pc, #36] @ (8008154 ) + 800812e: 689b ldr r3, [r3, #8] + 8008130: 08db lsrs r3, r3, #3 + 8008132: f403 52e0 and.w r2, r3, #7168 @ 0x1c00 + 8008136: 687b ldr r3, [r7, #4] + 8008138: 611a str r2, [r3, #16] /* Get the Flash Wait State (Latency) configuration ------------------------*/ *pFLatency = (uint32_t)(FLASH->ACR & FLASH_ACR_LATENCY); - 8007ee6: 4b07 ldr r3, [pc, #28] @ (8007f04 ) - 8007ee8: 681b ldr r3, [r3, #0] - 8007eea: f003 0207 and.w r2, r3, #7 - 8007eee: 683b ldr r3, [r7, #0] - 8007ef0: 601a str r2, [r3, #0] + 800813a: 4b07 ldr r3, [pc, #28] @ (8008158 ) + 800813c: 681b ldr r3, [r3, #0] + 800813e: f003 0207 and.w r2, r3, #7 + 8008142: 683b ldr r3, [r7, #0] + 8008144: 601a str r2, [r3, #0] } - 8007ef2: bf00 nop - 8007ef4: 370c adds r7, #12 - 8007ef6: 46bd mov sp, r7 - 8007ef8: f85d 7b04 ldr.w r7, [sp], #4 - 8007efc: 4770 bx lr - 8007efe: bf00 nop - 8007f00: 40023800 .word 0x40023800 - 8007f04: 40023c00 .word 0x40023c00 + 8008146: bf00 nop + 8008148: 370c adds r7, #12 + 800814a: 46bd mov sp, r7 + 800814c: f85d 7b04 ldr.w r7, [sp], #4 + 8008150: 4770 bx lr + 8008152: bf00 nop + 8008154: 40023800 .word 0x40023800 + 8008158: 40023c00 .word 0x40023c00 -08007f08 : +0800815c : * @note This function add the PLL/PLLR factor management during PLL configuration this feature * is only available in STM32F410xx/STM32F446xx/STM32F469xx/STM32F479xx/STM32F412Zx/STM32F412Vx/STM32F412Rx/STM32F412Cx devices * @retval HAL status */ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) { - 8007f08: b580 push {r7, lr} - 8007f0a: b086 sub sp, #24 - 8007f0c: af00 add r7, sp, #0 - 8007f0e: 6078 str r0, [r7, #4] + 800815c: b580 push {r7, lr} + 800815e: b086 sub sp, #24 + 8008160: af00 add r7, sp, #0 + 8008162: 6078 str r0, [r7, #4] uint32_t tickstart, pll_config; /* Check Null pointer */ if(RCC_OscInitStruct == NULL) - 8007f10: 687b ldr r3, [r7, #4] - 8007f12: 2b00 cmp r3, #0 - 8007f14: d101 bne.n 8007f1a + 8008164: 687b ldr r3, [r7, #4] + 8008166: 2b00 cmp r3, #0 + 8008168: d101 bne.n 800816e { return HAL_ERROR; - 8007f16: 2301 movs r3, #1 - 8007f18: e333 b.n 8008582 + 800816a: 2301 movs r3, #1 + 800816c: e333 b.n 80087d6 } /* Check the parameters */ assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); - 8007f1a: 687b ldr r3, [r7, #4] - 8007f1c: 681b ldr r3, [r3, #0] - 8007f1e: 2b0f cmp r3, #15 - 8007f20: d904 bls.n 8007f2c - 8007f22: f640 5128 movw r1, #3368 @ 0xd28 - 8007f26: 4898 ldr r0, [pc, #608] @ (8008188 ) - 8007f28: f7fb f924 bl 8003174 + 800816e: 687b ldr r3, [r7, #4] + 8008170: 681b ldr r3, [r3, #0] + 8008172: 2b0f cmp r3, #15 + 8008174: d904 bls.n 8008180 + 8008176: f640 5128 movw r1, #3368 @ 0xd28 + 800817a: 4898 ldr r0, [pc, #608] @ (80083dc ) + 800817c: f7fb f856 bl 800322c /*------------------------------- HSE Configuration ------------------------*/ if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) - 8007f2c: 687b ldr r3, [r7, #4] - 8007f2e: 681b ldr r3, [r3, #0] - 8007f30: f003 0301 and.w r3, r3, #1 - 8007f34: 2b00 cmp r3, #0 - 8007f36: f000 8089 beq.w 800804c + 8008180: 687b ldr r3, [r7, #4] + 8008182: 681b ldr r3, [r3, #0] + 8008184: f003 0301 and.w r3, r3, #1 + 8008188: 2b00 cmp r3, #0 + 800818a: f000 8089 beq.w 80082a0 { /* Check the parameters */ assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); - 8007f3a: 687b ldr r3, [r7, #4] - 8007f3c: 685b ldr r3, [r3, #4] - 8007f3e: 2b00 cmp r3, #0 - 8007f40: d00e beq.n 8007f60 - 8007f42: 687b ldr r3, [r7, #4] - 8007f44: 685b ldr r3, [r3, #4] - 8007f46: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8007f4a: d009 beq.n 8007f60 - 8007f4c: 687b ldr r3, [r7, #4] - 8007f4e: 685b ldr r3, [r3, #4] - 8007f50: f5b3 2fa0 cmp.w r3, #327680 @ 0x50000 - 8007f54: d004 beq.n 8007f60 - 8007f56: f640 512d movw r1, #3373 @ 0xd2d - 8007f5a: 488b ldr r0, [pc, #556] @ (8008188 ) - 8007f5c: f7fb f90a bl 8003174 + 800818e: 687b ldr r3, [r7, #4] + 8008190: 685b ldr r3, [r3, #4] + 8008192: 2b00 cmp r3, #0 + 8008194: d00e beq.n 80081b4 + 8008196: 687b ldr r3, [r7, #4] + 8008198: 685b ldr r3, [r3, #4] + 800819a: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 800819e: d009 beq.n 80081b4 + 80081a0: 687b ldr r3, [r7, #4] + 80081a2: 685b ldr r3, [r3, #4] + 80081a4: f5b3 2fa0 cmp.w r3, #327680 @ 0x50000 + 80081a8: d004 beq.n 80081b4 + 80081aa: f640 512d movw r1, #3373 @ 0xd2d + 80081ae: 488b ldr r0, [pc, #556] @ (80083dc ) + 80081b0: f7fb f83c bl 800322c #if defined(STM32F446xx) if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSE) ||\ ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE)) ||\ ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLLR) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE))) #else if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSE) ||\ - 8007f60: 4b8a ldr r3, [pc, #552] @ (800818c ) - 8007f62: 689b ldr r3, [r3, #8] - 8007f64: f003 030c and.w r3, r3, #12 - 8007f68: 2b04 cmp r3, #4 - 8007f6a: d00c beq.n 8007f86 + 80081b4: 4b8a ldr r3, [pc, #552] @ (80083e0 ) + 80081b6: 689b ldr r3, [r3, #8] + 80081b8: f003 030c and.w r3, r3, #12 + 80081bc: 2b04 cmp r3, #4 + 80081be: d00c beq.n 80081da ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE))) - 8007f6c: 4b87 ldr r3, [pc, #540] @ (800818c ) - 8007f6e: 689b ldr r3, [r3, #8] - 8007f70: f003 030c and.w r3, r3, #12 + 80081c0: 4b87 ldr r3, [pc, #540] @ (80083e0 ) + 80081c2: 689b ldr r3, [r3, #8] + 80081c4: f003 030c and.w r3, r3, #12 if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSE) ||\ - 8007f74: 2b08 cmp r3, #8 - 8007f76: d112 bne.n 8007f9e + 80081c8: 2b08 cmp r3, #8 + 80081ca: d112 bne.n 80081f2 ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE))) - 8007f78: 4b84 ldr r3, [pc, #528] @ (800818c ) - 8007f7a: 685b ldr r3, [r3, #4] - 8007f7c: f403 0380 and.w r3, r3, #4194304 @ 0x400000 - 8007f80: f5b3 0f80 cmp.w r3, #4194304 @ 0x400000 - 8007f84: d10b bne.n 8007f9e + 80081cc: 4b84 ldr r3, [pc, #528] @ (80083e0 ) + 80081ce: 685b ldr r3, [r3, #4] + 80081d0: f403 0380 and.w r3, r3, #4194304 @ 0x400000 + 80081d4: f5b3 0f80 cmp.w r3, #4194304 @ 0x400000 + 80081d8: d10b bne.n 80081f2 #endif /* STM32F446xx */ { if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 8007f86: 4b81 ldr r3, [pc, #516] @ (800818c ) - 8007f88: 681b ldr r3, [r3, #0] - 8007f8a: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 8007f8e: 2b00 cmp r3, #0 - 8007f90: d05b beq.n 800804a - 8007f92: 687b ldr r3, [r7, #4] - 8007f94: 685b ldr r3, [r3, #4] - 8007f96: 2b00 cmp r3, #0 - 8007f98: d157 bne.n 800804a + 80081da: 4b81 ldr r3, [pc, #516] @ (80083e0 ) + 80081dc: 681b ldr r3, [r3, #0] + 80081de: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 80081e2: 2b00 cmp r3, #0 + 80081e4: d05b beq.n 800829e + 80081e6: 687b ldr r3, [r7, #4] + 80081e8: 685b ldr r3, [r3, #4] + 80081ea: 2b00 cmp r3, #0 + 80081ec: d157 bne.n 800829e { return HAL_ERROR; - 8007f9a: 2301 movs r3, #1 - 8007f9c: e2f1 b.n 8008582 + 80081ee: 2301 movs r3, #1 + 80081f0: e2f1 b.n 80087d6 } } else { /* Set the new HSE configuration ---------------------------------------*/ __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); - 8007f9e: 687b ldr r3, [r7, #4] - 8007fa0: 685b ldr r3, [r3, #4] - 8007fa2: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8007fa6: d106 bne.n 8007fb6 - 8007fa8: 4b78 ldr r3, [pc, #480] @ (800818c ) - 8007faa: 681b ldr r3, [r3, #0] - 8007fac: 4a77 ldr r2, [pc, #476] @ (800818c ) - 8007fae: f443 3380 orr.w r3, r3, #65536 @ 0x10000 - 8007fb2: 6013 str r3, [r2, #0] - 8007fb4: e01d b.n 8007ff2 - 8007fb6: 687b ldr r3, [r7, #4] - 8007fb8: 685b ldr r3, [r3, #4] - 8007fba: f5b3 2fa0 cmp.w r3, #327680 @ 0x50000 - 8007fbe: d10c bne.n 8007fda - 8007fc0: 4b72 ldr r3, [pc, #456] @ (800818c ) - 8007fc2: 681b ldr r3, [r3, #0] - 8007fc4: 4a71 ldr r2, [pc, #452] @ (800818c ) - 8007fc6: f443 2380 orr.w r3, r3, #262144 @ 0x40000 - 8007fca: 6013 str r3, [r2, #0] - 8007fcc: 4b6f ldr r3, [pc, #444] @ (800818c ) - 8007fce: 681b ldr r3, [r3, #0] - 8007fd0: 4a6e ldr r2, [pc, #440] @ (800818c ) - 8007fd2: f443 3380 orr.w r3, r3, #65536 @ 0x10000 - 8007fd6: 6013 str r3, [r2, #0] - 8007fd8: e00b b.n 8007ff2 - 8007fda: 4b6c ldr r3, [pc, #432] @ (800818c ) - 8007fdc: 681b ldr r3, [r3, #0] - 8007fde: 4a6b ldr r2, [pc, #428] @ (800818c ) - 8007fe0: f423 3380 bic.w r3, r3, #65536 @ 0x10000 - 8007fe4: 6013 str r3, [r2, #0] - 8007fe6: 4b69 ldr r3, [pc, #420] @ (800818c ) - 8007fe8: 681b ldr r3, [r3, #0] - 8007fea: 4a68 ldr r2, [pc, #416] @ (800818c ) - 8007fec: f423 2380 bic.w r3, r3, #262144 @ 0x40000 - 8007ff0: 6013 str r3, [r2, #0] + 80081f2: 687b ldr r3, [r7, #4] + 80081f4: 685b ldr r3, [r3, #4] + 80081f6: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 80081fa: d106 bne.n 800820a + 80081fc: 4b78 ldr r3, [pc, #480] @ (80083e0 ) + 80081fe: 681b ldr r3, [r3, #0] + 8008200: 4a77 ldr r2, [pc, #476] @ (80083e0 ) + 8008202: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 8008206: 6013 str r3, [r2, #0] + 8008208: e01d b.n 8008246 + 800820a: 687b ldr r3, [r7, #4] + 800820c: 685b ldr r3, [r3, #4] + 800820e: f5b3 2fa0 cmp.w r3, #327680 @ 0x50000 + 8008212: d10c bne.n 800822e + 8008214: 4b72 ldr r3, [pc, #456] @ (80083e0 ) + 8008216: 681b ldr r3, [r3, #0] + 8008218: 4a71 ldr r2, [pc, #452] @ (80083e0 ) + 800821a: f443 2380 orr.w r3, r3, #262144 @ 0x40000 + 800821e: 6013 str r3, [r2, #0] + 8008220: 4b6f ldr r3, [pc, #444] @ (80083e0 ) + 8008222: 681b ldr r3, [r3, #0] + 8008224: 4a6e ldr r2, [pc, #440] @ (80083e0 ) + 8008226: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 800822a: 6013 str r3, [r2, #0] + 800822c: e00b b.n 8008246 + 800822e: 4b6c ldr r3, [pc, #432] @ (80083e0 ) + 8008230: 681b ldr r3, [r3, #0] + 8008232: 4a6b ldr r2, [pc, #428] @ (80083e0 ) + 8008234: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 8008238: 6013 str r3, [r2, #0] + 800823a: 4b69 ldr r3, [pc, #420] @ (80083e0 ) + 800823c: 681b ldr r3, [r3, #0] + 800823e: 4a68 ldr r2, [pc, #416] @ (80083e0 ) + 8008240: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 8008244: 6013 str r3, [r2, #0] /* Check the HSE State */ if((RCC_OscInitStruct->HSEState) != RCC_HSE_OFF) - 8007ff2: 687b ldr r3, [r7, #4] - 8007ff4: 685b ldr r3, [r3, #4] - 8007ff6: 2b00 cmp r3, #0 - 8007ff8: d013 beq.n 8008022 + 8008246: 687b ldr r3, [r7, #4] + 8008248: 685b ldr r3, [r3, #4] + 800824a: 2b00 cmp r3, #0 + 800824c: d013 beq.n 8008276 { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8007ffa: f7fd fd29 bl 8005a50 - 8007ffe: 6138 str r0, [r7, #16] + 800824e: f7fd fd29 bl 8005ca4 + 8008252: 6138 str r0, [r7, #16] /* Wait till HSE is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 8008000: e008 b.n 8008014 + 8008254: e008 b.n 8008268 { if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) - 8008002: f7fd fd25 bl 8005a50 - 8008006: 4602 mov r2, r0 - 8008008: 693b ldr r3, [r7, #16] - 800800a: 1ad3 subs r3, r2, r3 - 800800c: 2b64 cmp r3, #100 @ 0x64 - 800800e: d901 bls.n 8008014 + 8008256: f7fd fd25 bl 8005ca4 + 800825a: 4602 mov r2, r0 + 800825c: 693b ldr r3, [r7, #16] + 800825e: 1ad3 subs r3, r2, r3 + 8008260: 2b64 cmp r3, #100 @ 0x64 + 8008262: d901 bls.n 8008268 { return HAL_TIMEOUT; - 8008010: 2303 movs r3, #3 - 8008012: e2b6 b.n 8008582 + 8008264: 2303 movs r3, #3 + 8008266: e2b6 b.n 80087d6 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 8008014: 4b5d ldr r3, [pc, #372] @ (800818c ) - 8008016: 681b ldr r3, [r3, #0] - 8008018: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 800801c: 2b00 cmp r3, #0 - 800801e: d0f0 beq.n 8008002 - 8008020: e014 b.n 800804c + 8008268: 4b5d ldr r3, [pc, #372] @ (80083e0 ) + 800826a: 681b ldr r3, [r3, #0] + 800826c: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8008270: 2b00 cmp r3, #0 + 8008272: d0f0 beq.n 8008256 + 8008274: e014 b.n 80082a0 } } else { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8008022: f7fd fd15 bl 8005a50 - 8008026: 6138 str r0, [r7, #16] + 8008276: f7fd fd15 bl 8005ca4 + 800827a: 6138 str r0, [r7, #16] /* Wait till HSE is bypassed or disabled */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) - 8008028: e008 b.n 800803c + 800827c: e008 b.n 8008290 { if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) - 800802a: f7fd fd11 bl 8005a50 - 800802e: 4602 mov r2, r0 - 8008030: 693b ldr r3, [r7, #16] - 8008032: 1ad3 subs r3, r2, r3 - 8008034: 2b64 cmp r3, #100 @ 0x64 - 8008036: d901 bls.n 800803c + 800827e: f7fd fd11 bl 8005ca4 + 8008282: 4602 mov r2, r0 + 8008284: 693b ldr r3, [r7, #16] + 8008286: 1ad3 subs r3, r2, r3 + 8008288: 2b64 cmp r3, #100 @ 0x64 + 800828a: d901 bls.n 8008290 { return HAL_TIMEOUT; - 8008038: 2303 movs r3, #3 - 800803a: e2a2 b.n 8008582 + 800828c: 2303 movs r3, #3 + 800828e: e2a2 b.n 80087d6 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) - 800803c: 4b53 ldr r3, [pc, #332] @ (800818c ) - 800803e: 681b ldr r3, [r3, #0] - 8008040: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 8008044: 2b00 cmp r3, #0 - 8008046: d1f0 bne.n 800802a - 8008048: e000 b.n 800804c + 8008290: 4b53 ldr r3, [pc, #332] @ (80083e0 ) + 8008292: 681b ldr r3, [r3, #0] + 8008294: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8008298: 2b00 cmp r3, #0 + 800829a: d1f0 bne.n 800827e + 800829c: e000 b.n 80082a0 if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 800804a: bf00 nop + 800829e: bf00 nop } } } } /*----------------------------- HSI Configuration --------------------------*/ if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) - 800804c: 687b ldr r3, [r7, #4] - 800804e: 681b ldr r3, [r3, #0] - 8008050: f003 0302 and.w r3, r3, #2 - 8008054: 2b00 cmp r3, #0 - 8008056: d079 beq.n 800814c + 80082a0: 687b ldr r3, [r7, #4] + 80082a2: 681b ldr r3, [r3, #0] + 80082a4: f003 0302 and.w r3, r3, #2 + 80082a8: 2b00 cmp r3, #0 + 80082aa: d079 beq.n 80083a0 { /* Check the parameters */ assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); - 8008058: 687b ldr r3, [r7, #4] - 800805a: 68db ldr r3, [r3, #12] - 800805c: 2b00 cmp r3, #0 - 800805e: d008 beq.n 8008072 - 8008060: 687b ldr r3, [r7, #4] - 8008062: 68db ldr r3, [r3, #12] - 8008064: 2b01 cmp r3, #1 - 8008066: d004 beq.n 8008072 - 8008068: f640 5165 movw r1, #3429 @ 0xd65 - 800806c: 4846 ldr r0, [pc, #280] @ (8008188 ) - 800806e: f7fb f881 bl 8003174 + 80082ac: 687b ldr r3, [r7, #4] + 80082ae: 68db ldr r3, [r3, #12] + 80082b0: 2b00 cmp r3, #0 + 80082b2: d008 beq.n 80082c6 + 80082b4: 687b ldr r3, [r7, #4] + 80082b6: 68db ldr r3, [r3, #12] + 80082b8: 2b01 cmp r3, #1 + 80082ba: d004 beq.n 80082c6 + 80082bc: f640 5165 movw r1, #3429 @ 0xd65 + 80082c0: 4846 ldr r0, [pc, #280] @ (80083dc ) + 80082c2: f7fa ffb3 bl 800322c assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); - 8008072: 687b ldr r3, [r7, #4] - 8008074: 691b ldr r3, [r3, #16] - 8008076: 2b1f cmp r3, #31 - 8008078: d904 bls.n 8008084 - 800807a: f640 5166 movw r1, #3430 @ 0xd66 - 800807e: 4842 ldr r0, [pc, #264] @ (8008188 ) - 8008080: f7fb f878 bl 8003174 + 80082c6: 687b ldr r3, [r7, #4] + 80082c8: 691b ldr r3, [r3, #16] + 80082ca: 2b1f cmp r3, #31 + 80082cc: d904 bls.n 80082d8 + 80082ce: f640 5166 movw r1, #3430 @ 0xd66 + 80082d2: 4842 ldr r0, [pc, #264] @ (80083dc ) + 80082d4: f7fa ffaa bl 800322c #if defined(STM32F446xx) if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSI) ||\ ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI)) ||\ ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLLR) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI))) #else if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSI) ||\ - 8008084: 4b41 ldr r3, [pc, #260] @ (800818c ) - 8008086: 689b ldr r3, [r3, #8] - 8008088: f003 030c and.w r3, r3, #12 - 800808c: 2b00 cmp r3, #0 - 800808e: d00b beq.n 80080a8 + 80082d8: 4b41 ldr r3, [pc, #260] @ (80083e0 ) + 80082da: 689b ldr r3, [r3, #8] + 80082dc: f003 030c and.w r3, r3, #12 + 80082e0: 2b00 cmp r3, #0 + 80082e2: d00b beq.n 80082fc ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI))) - 8008090: 4b3e ldr r3, [pc, #248] @ (800818c ) - 8008092: 689b ldr r3, [r3, #8] - 8008094: f003 030c and.w r3, r3, #12 + 80082e4: 4b3e ldr r3, [pc, #248] @ (80083e0 ) + 80082e6: 689b ldr r3, [r3, #8] + 80082e8: f003 030c and.w r3, r3, #12 if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSI) ||\ - 8008098: 2b08 cmp r3, #8 - 800809a: d11c bne.n 80080d6 + 80082ec: 2b08 cmp r3, #8 + 80082ee: d11c bne.n 800832a ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI))) - 800809c: 4b3b ldr r3, [pc, #236] @ (800818c ) - 800809e: 685b ldr r3, [r3, #4] - 80080a0: f403 0380 and.w r3, r3, #4194304 @ 0x400000 - 80080a4: 2b00 cmp r3, #0 - 80080a6: d116 bne.n 80080d6 + 80082f0: 4b3b ldr r3, [pc, #236] @ (80083e0 ) + 80082f2: 685b ldr r3, [r3, #4] + 80082f4: f403 0380 and.w r3, r3, #4194304 @ 0x400000 + 80082f8: 2b00 cmp r3, #0 + 80082fa: d116 bne.n 800832a #endif /* STM32F446xx */ { /* 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)) - 80080a8: 4b38 ldr r3, [pc, #224] @ (800818c ) - 80080aa: 681b ldr r3, [r3, #0] - 80080ac: f003 0302 and.w r3, r3, #2 - 80080b0: 2b00 cmp r3, #0 - 80080b2: d005 beq.n 80080c0 - 80080b4: 687b ldr r3, [r7, #4] - 80080b6: 68db ldr r3, [r3, #12] - 80080b8: 2b01 cmp r3, #1 - 80080ba: d001 beq.n 80080c0 + 80082fc: 4b38 ldr r3, [pc, #224] @ (80083e0 ) + 80082fe: 681b ldr r3, [r3, #0] + 8008300: f003 0302 and.w r3, r3, #2 + 8008304: 2b00 cmp r3, #0 + 8008306: d005 beq.n 8008314 + 8008308: 687b ldr r3, [r7, #4] + 800830a: 68db ldr r3, [r3, #12] + 800830c: 2b01 cmp r3, #1 + 800830e: d001 beq.n 8008314 { return HAL_ERROR; - 80080bc: 2301 movs r3, #1 - 80080be: e260 b.n 8008582 + 8008310: 2301 movs r3, #1 + 8008312: e260 b.n 80087d6 } /* Otherwise, just the calibration is allowed */ else { /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 80080c0: 4b32 ldr r3, [pc, #200] @ (800818c ) - 80080c2: 681b ldr r3, [r3, #0] - 80080c4: f023 02f8 bic.w r2, r3, #248 @ 0xf8 - 80080c8: 687b ldr r3, [r7, #4] - 80080ca: 691b ldr r3, [r3, #16] - 80080cc: 00db lsls r3, r3, #3 - 80080ce: 492f ldr r1, [pc, #188] @ (800818c ) - 80080d0: 4313 orrs r3, r2 - 80080d2: 600b str r3, [r1, #0] + 8008314: 4b32 ldr r3, [pc, #200] @ (80083e0 ) + 8008316: 681b ldr r3, [r3, #0] + 8008318: f023 02f8 bic.w r2, r3, #248 @ 0xf8 + 800831c: 687b ldr r3, [r7, #4] + 800831e: 691b ldr r3, [r3, #16] + 8008320: 00db lsls r3, r3, #3 + 8008322: 492f ldr r1, [pc, #188] @ (80083e0 ) + 8008324: 4313 orrs r3, r2 + 8008326: 600b str r3, [r1, #0] if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) - 80080d4: e03a b.n 800814c + 8008328: e03a b.n 80083a0 } } else { /* Check the HSI State */ if((RCC_OscInitStruct->HSIState)!= RCC_HSI_OFF) - 80080d6: 687b ldr r3, [r7, #4] - 80080d8: 68db ldr r3, [r3, #12] - 80080da: 2b00 cmp r3, #0 - 80080dc: d020 beq.n 8008120 + 800832a: 687b ldr r3, [r7, #4] + 800832c: 68db ldr r3, [r3, #12] + 800832e: 2b00 cmp r3, #0 + 8008330: d020 beq.n 8008374 { /* Enable the Internal High Speed oscillator (HSI). */ __HAL_RCC_HSI_ENABLE(); - 80080de: 4b2c ldr r3, [pc, #176] @ (8008190 ) - 80080e0: 2201 movs r2, #1 - 80080e2: 601a str r2, [r3, #0] + 8008332: 4b2c ldr r3, [pc, #176] @ (80083e4 ) + 8008334: 2201 movs r2, #1 + 8008336: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80080e4: f7fd fcb4 bl 8005a50 - 80080e8: 6138 str r0, [r7, #16] + 8008338: f7fd fcb4 bl 8005ca4 + 800833c: 6138 str r0, [r7, #16] /* Wait till HSI is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 80080ea: e008 b.n 80080fe + 800833e: e008 b.n 8008352 { if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) - 80080ec: f7fd fcb0 bl 8005a50 - 80080f0: 4602 mov r2, r0 - 80080f2: 693b ldr r3, [r7, #16] - 80080f4: 1ad3 subs r3, r2, r3 - 80080f6: 2b02 cmp r3, #2 - 80080f8: d901 bls.n 80080fe + 8008340: f7fd fcb0 bl 8005ca4 + 8008344: 4602 mov r2, r0 + 8008346: 693b ldr r3, [r7, #16] + 8008348: 1ad3 subs r3, r2, r3 + 800834a: 2b02 cmp r3, #2 + 800834c: d901 bls.n 8008352 { return HAL_TIMEOUT; - 80080fa: 2303 movs r3, #3 - 80080fc: e241 b.n 8008582 + 800834e: 2303 movs r3, #3 + 8008350: e241 b.n 80087d6 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 80080fe: 4b23 ldr r3, [pc, #140] @ (800818c ) - 8008100: 681b ldr r3, [r3, #0] - 8008102: f003 0302 and.w r3, r3, #2 - 8008106: 2b00 cmp r3, #0 - 8008108: d0f0 beq.n 80080ec + 8008352: 4b23 ldr r3, [pc, #140] @ (80083e0 ) + 8008354: 681b ldr r3, [r3, #0] + 8008356: f003 0302 and.w r3, r3, #2 + 800835a: 2b00 cmp r3, #0 + 800835c: d0f0 beq.n 8008340 } } /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 800810a: 4b20 ldr r3, [pc, #128] @ (800818c ) - 800810c: 681b ldr r3, [r3, #0] - 800810e: f023 02f8 bic.w r2, r3, #248 @ 0xf8 - 8008112: 687b ldr r3, [r7, #4] - 8008114: 691b ldr r3, [r3, #16] - 8008116: 00db lsls r3, r3, #3 - 8008118: 491c ldr r1, [pc, #112] @ (800818c ) - 800811a: 4313 orrs r3, r2 - 800811c: 600b str r3, [r1, #0] - 800811e: e015 b.n 800814c + 800835e: 4b20 ldr r3, [pc, #128] @ (80083e0 ) + 8008360: 681b ldr r3, [r3, #0] + 8008362: f023 02f8 bic.w r2, r3, #248 @ 0xf8 + 8008366: 687b ldr r3, [r7, #4] + 8008368: 691b ldr r3, [r3, #16] + 800836a: 00db lsls r3, r3, #3 + 800836c: 491c ldr r1, [pc, #112] @ (80083e0 ) + 800836e: 4313 orrs r3, r2 + 8008370: 600b str r3, [r1, #0] + 8008372: e015 b.n 80083a0 } else { /* Disable the Internal High Speed oscillator (HSI). */ __HAL_RCC_HSI_DISABLE(); - 8008120: 4b1b ldr r3, [pc, #108] @ (8008190 ) - 8008122: 2200 movs r2, #0 - 8008124: 601a str r2, [r3, #0] + 8008374: 4b1b ldr r3, [pc, #108] @ (80083e4 ) + 8008376: 2200 movs r2, #0 + 8008378: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8008126: f7fd fc93 bl 8005a50 - 800812a: 6138 str r0, [r7, #16] + 800837a: f7fd fc93 bl 8005ca4 + 800837e: 6138 str r0, [r7, #16] /* Wait till HSI is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) - 800812c: e008 b.n 8008140 + 8008380: e008 b.n 8008394 { if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) - 800812e: f7fd fc8f bl 8005a50 - 8008132: 4602 mov r2, r0 - 8008134: 693b ldr r3, [r7, #16] - 8008136: 1ad3 subs r3, r2, r3 - 8008138: 2b02 cmp r3, #2 - 800813a: d901 bls.n 8008140 + 8008382: f7fd fc8f bl 8005ca4 + 8008386: 4602 mov r2, r0 + 8008388: 693b ldr r3, [r7, #16] + 800838a: 1ad3 subs r3, r2, r3 + 800838c: 2b02 cmp r3, #2 + 800838e: d901 bls.n 8008394 { return HAL_TIMEOUT; - 800813c: 2303 movs r3, #3 - 800813e: e220 b.n 8008582 + 8008390: 2303 movs r3, #3 + 8008392: e220 b.n 80087d6 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) - 8008140: 4b12 ldr r3, [pc, #72] @ (800818c ) - 8008142: 681b ldr r3, [r3, #0] - 8008144: f003 0302 and.w r3, r3, #2 - 8008148: 2b00 cmp r3, #0 - 800814a: d1f0 bne.n 800812e + 8008394: 4b12 ldr r3, [pc, #72] @ (80083e0 ) + 8008396: 681b ldr r3, [r3, #0] + 8008398: f003 0302 and.w r3, r3, #2 + 800839c: 2b00 cmp r3, #0 + 800839e: d1f0 bne.n 8008382 } } } } /*------------------------------ LSI Configuration -------------------------*/ if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) - 800814c: 687b ldr r3, [r7, #4] - 800814e: 681b ldr r3, [r3, #0] - 8008150: f003 0308 and.w r3, r3, #8 - 8008154: 2b00 cmp r3, #0 - 8008156: d045 beq.n 80081e4 + 80083a0: 687b ldr r3, [r7, #4] + 80083a2: 681b ldr r3, [r3, #0] + 80083a4: f003 0308 and.w r3, r3, #8 + 80083a8: 2b00 cmp r3, #0 + 80083aa: d045 beq.n 8008438 { /* Check the parameters */ assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); - 8008158: 687b ldr r3, [r7, #4] - 800815a: 695b ldr r3, [r3, #20] - 800815c: 2b00 cmp r3, #0 - 800815e: d008 beq.n 8008172 - 8008160: 687b ldr r3, [r7, #4] - 8008162: 695b ldr r3, [r3, #20] - 8008164: 2b01 cmp r3, #1 - 8008166: d004 beq.n 8008172 - 8008168: f640 51ac movw r1, #3500 @ 0xdac - 800816c: 4806 ldr r0, [pc, #24] @ (8008188 ) - 800816e: f7fb f801 bl 8003174 + 80083ac: 687b ldr r3, [r7, #4] + 80083ae: 695b ldr r3, [r3, #20] + 80083b0: 2b00 cmp r3, #0 + 80083b2: d008 beq.n 80083c6 + 80083b4: 687b ldr r3, [r7, #4] + 80083b6: 695b ldr r3, [r3, #20] + 80083b8: 2b01 cmp r3, #1 + 80083ba: d004 beq.n 80083c6 + 80083bc: f640 51ac movw r1, #3500 @ 0xdac + 80083c0: 4806 ldr r0, [pc, #24] @ (80083dc ) + 80083c2: f7fa ff33 bl 800322c /* Check the LSI State */ if((RCC_OscInitStruct->LSIState)!= RCC_LSI_OFF) - 8008172: 687b ldr r3, [r7, #4] - 8008174: 695b ldr r3, [r3, #20] - 8008176: 2b00 cmp r3, #0 - 8008178: d01e beq.n 80081b8 + 80083c6: 687b ldr r3, [r7, #4] + 80083c8: 695b ldr r3, [r3, #20] + 80083ca: 2b00 cmp r3, #0 + 80083cc: d01e beq.n 800840c { /* Enable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_ENABLE(); - 800817a: 4b06 ldr r3, [pc, #24] @ (8008194 ) - 800817c: 2201 movs r2, #1 - 800817e: 601a str r2, [r3, #0] + 80083ce: 4b06 ldr r3, [pc, #24] @ (80083e8 ) + 80083d0: 2201 movs r2, #1 + 80083d2: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8008180: f7fd fc66 bl 8005a50 - 8008184: 6138 str r0, [r7, #16] + 80083d4: f7fd fc66 bl 8005ca4 + 80083d8: 6138 str r0, [r7, #16] /* Wait till LSI is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) - 8008186: e010 b.n 80081aa - 8008188: 0800e894 .word 0x0800e894 - 800818c: 40023800 .word 0x40023800 - 8008190: 42470000 .word 0x42470000 - 8008194: 42470e80 .word 0x42470e80 + 80083da: e010 b.n 80083fe + 80083dc: 0800ee04 .word 0x0800ee04 + 80083e0: 40023800 .word 0x40023800 + 80083e4: 42470000 .word 0x42470000 + 80083e8: 42470e80 .word 0x42470e80 { if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) - 8008198: f7fd fc5a bl 8005a50 - 800819c: 4602 mov r2, r0 - 800819e: 693b ldr r3, [r7, #16] - 80081a0: 1ad3 subs r3, r2, r3 - 80081a2: 2b02 cmp r3, #2 - 80081a4: d901 bls.n 80081aa + 80083ec: f7fd fc5a bl 8005ca4 + 80083f0: 4602 mov r2, r0 + 80083f2: 693b ldr r3, [r7, #16] + 80083f4: 1ad3 subs r3, r2, r3 + 80083f6: 2b02 cmp r3, #2 + 80083f8: d901 bls.n 80083fe { return HAL_TIMEOUT; - 80081a6: 2303 movs r3, #3 - 80081a8: e1eb b.n 8008582 + 80083fa: 2303 movs r3, #3 + 80083fc: e1eb b.n 80087d6 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) - 80081aa: 4b5e ldr r3, [pc, #376] @ (8008324 ) - 80081ac: 6f5b ldr r3, [r3, #116] @ 0x74 - 80081ae: f003 0302 and.w r3, r3, #2 - 80081b2: 2b00 cmp r3, #0 - 80081b4: d0f0 beq.n 8008198 - 80081b6: e015 b.n 80081e4 + 80083fe: 4b5e ldr r3, [pc, #376] @ (8008578 ) + 8008400: 6f5b ldr r3, [r3, #116] @ 0x74 + 8008402: f003 0302 and.w r3, r3, #2 + 8008406: 2b00 cmp r3, #0 + 8008408: d0f0 beq.n 80083ec + 800840a: e015 b.n 8008438 } } else { /* Disable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_DISABLE(); - 80081b8: 4b5b ldr r3, [pc, #364] @ (8008328 ) - 80081ba: 2200 movs r2, #0 - 80081bc: 601a str r2, [r3, #0] + 800840c: 4b5b ldr r3, [pc, #364] @ (800857c ) + 800840e: 2200 movs r2, #0 + 8008410: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80081be: f7fd fc47 bl 8005a50 - 80081c2: 6138 str r0, [r7, #16] + 8008412: f7fd fc47 bl 8005ca4 + 8008416: 6138 str r0, [r7, #16] /* Wait till LSI is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) - 80081c4: e008 b.n 80081d8 + 8008418: e008 b.n 800842c { if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) - 80081c6: f7fd fc43 bl 8005a50 - 80081ca: 4602 mov r2, r0 - 80081cc: 693b ldr r3, [r7, #16] - 80081ce: 1ad3 subs r3, r2, r3 - 80081d0: 2b02 cmp r3, #2 - 80081d2: d901 bls.n 80081d8 + 800841a: f7fd fc43 bl 8005ca4 + 800841e: 4602 mov r2, r0 + 8008420: 693b ldr r3, [r7, #16] + 8008422: 1ad3 subs r3, r2, r3 + 8008424: 2b02 cmp r3, #2 + 8008426: d901 bls.n 800842c { return HAL_TIMEOUT; - 80081d4: 2303 movs r3, #3 - 80081d6: e1d4 b.n 8008582 + 8008428: 2303 movs r3, #3 + 800842a: e1d4 b.n 80087d6 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) - 80081d8: 4b52 ldr r3, [pc, #328] @ (8008324 ) - 80081da: 6f5b ldr r3, [r3, #116] @ 0x74 - 80081dc: f003 0302 and.w r3, r3, #2 - 80081e0: 2b00 cmp r3, #0 - 80081e2: d1f0 bne.n 80081c6 + 800842c: 4b52 ldr r3, [pc, #328] @ (8008578 ) + 800842e: 6f5b ldr r3, [r3, #116] @ 0x74 + 8008430: f003 0302 and.w r3, r3, #2 + 8008434: 2b00 cmp r3, #0 + 8008436: d1f0 bne.n 800841a } } } } /*------------------------------ LSE Configuration -------------------------*/ if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) - 80081e4: 687b ldr r3, [r7, #4] - 80081e6: 681b ldr r3, [r3, #0] - 80081e8: f003 0304 and.w r3, r3, #4 - 80081ec: 2b00 cmp r3, #0 - 80081ee: f000 80b0 beq.w 8008352 + 8008438: 687b ldr r3, [r7, #4] + 800843a: 681b ldr r3, [r3, #0] + 800843c: f003 0304 and.w r3, r3, #4 + 8008440: 2b00 cmp r3, #0 + 8008442: f000 80b0 beq.w 80085a6 { FlagStatus pwrclkchanged = RESET; - 80081f2: 2300 movs r3, #0 - 80081f4: 75fb strb r3, [r7, #23] + 8008446: 2300 movs r3, #0 + 8008448: 75fb strb r3, [r7, #23] /* Check the parameters */ assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState)); - 80081f6: 687b ldr r3, [r7, #4] - 80081f8: 689b ldr r3, [r3, #8] - 80081fa: 2b00 cmp r3, #0 - 80081fc: d00c beq.n 8008218 - 80081fe: 687b ldr r3, [r7, #4] - 8008200: 689b ldr r3, [r3, #8] - 8008202: 2b01 cmp r3, #1 - 8008204: d008 beq.n 8008218 - 8008206: 687b ldr r3, [r7, #4] - 8008208: 689b ldr r3, [r3, #8] - 800820a: 2b05 cmp r3, #5 - 800820c: d004 beq.n 8008218 - 800820e: f640 51d8 movw r1, #3544 @ 0xdd8 - 8008212: 4846 ldr r0, [pc, #280] @ (800832c ) - 8008214: f7fa ffae bl 8003174 + 800844a: 687b ldr r3, [r7, #4] + 800844c: 689b ldr r3, [r3, #8] + 800844e: 2b00 cmp r3, #0 + 8008450: d00c beq.n 800846c + 8008452: 687b ldr r3, [r7, #4] + 8008454: 689b ldr r3, [r3, #8] + 8008456: 2b01 cmp r3, #1 + 8008458: d008 beq.n 800846c + 800845a: 687b ldr r3, [r7, #4] + 800845c: 689b ldr r3, [r3, #8] + 800845e: 2b05 cmp r3, #5 + 8008460: d004 beq.n 800846c + 8008462: f640 51d8 movw r1, #3544 @ 0xdd8 + 8008466: 4846 ldr r0, [pc, #280] @ (8008580 ) + 8008468: f7fa fee0 bl 800322c /* 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()) - 8008218: 4b42 ldr r3, [pc, #264] @ (8008324 ) - 800821a: 6c1b ldr r3, [r3, #64] @ 0x40 - 800821c: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 8008220: 2b00 cmp r3, #0 - 8008222: d10f bne.n 8008244 + 800846c: 4b42 ldr r3, [pc, #264] @ (8008578 ) + 800846e: 6c1b ldr r3, [r3, #64] @ 0x40 + 8008470: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8008474: 2b00 cmp r3, #0 + 8008476: d10f bne.n 8008498 { __HAL_RCC_PWR_CLK_ENABLE(); - 8008224: 2300 movs r3, #0 - 8008226: 60bb str r3, [r7, #8] - 8008228: 4b3e ldr r3, [pc, #248] @ (8008324 ) - 800822a: 6c1b ldr r3, [r3, #64] @ 0x40 - 800822c: 4a3d ldr r2, [pc, #244] @ (8008324 ) - 800822e: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 - 8008232: 6413 str r3, [r2, #64] @ 0x40 - 8008234: 4b3b ldr r3, [pc, #236] @ (8008324 ) - 8008236: 6c1b ldr r3, [r3, #64] @ 0x40 - 8008238: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 800823c: 60bb str r3, [r7, #8] - 800823e: 68bb ldr r3, [r7, #8] + 8008478: 2300 movs r3, #0 + 800847a: 60bb str r3, [r7, #8] + 800847c: 4b3e ldr r3, [pc, #248] @ (8008578 ) + 800847e: 6c1b ldr r3, [r3, #64] @ 0x40 + 8008480: 4a3d ldr r2, [pc, #244] @ (8008578 ) + 8008482: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8008486: 6413 str r3, [r2, #64] @ 0x40 + 8008488: 4b3b ldr r3, [pc, #236] @ (8008578 ) + 800848a: 6c1b ldr r3, [r3, #64] @ 0x40 + 800848c: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8008490: 60bb str r3, [r7, #8] + 8008492: 68bb ldr r3, [r7, #8] pwrclkchanged = SET; - 8008240: 2301 movs r3, #1 - 8008242: 75fb strb r3, [r7, #23] + 8008494: 2301 movs r3, #1 + 8008496: 75fb strb r3, [r7, #23] } if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 8008244: 4b3a ldr r3, [pc, #232] @ (8008330 ) - 8008246: 681b ldr r3, [r3, #0] - 8008248: f403 7380 and.w r3, r3, #256 @ 0x100 - 800824c: 2b00 cmp r3, #0 - 800824e: d118 bne.n 8008282 + 8008498: 4b3a ldr r3, [pc, #232] @ (8008584 ) + 800849a: 681b ldr r3, [r3, #0] + 800849c: f403 7380 and.w r3, r3, #256 @ 0x100 + 80084a0: 2b00 cmp r3, #0 + 80084a2: d118 bne.n 80084d6 { /* Enable write access to Backup domain */ SET_BIT(PWR->CR, PWR_CR_DBP); - 8008250: 4b37 ldr r3, [pc, #220] @ (8008330 ) - 8008252: 681b ldr r3, [r3, #0] - 8008254: 4a36 ldr r2, [pc, #216] @ (8008330 ) - 8008256: f443 7380 orr.w r3, r3, #256 @ 0x100 - 800825a: 6013 str r3, [r2, #0] + 80084a4: 4b37 ldr r3, [pc, #220] @ (8008584 ) + 80084a6: 681b ldr r3, [r3, #0] + 80084a8: 4a36 ldr r2, [pc, #216] @ (8008584 ) + 80084aa: f443 7380 orr.w r3, r3, #256 @ 0x100 + 80084ae: 6013 str r3, [r2, #0] /* Wait for Backup domain Write protection disable */ tickstart = HAL_GetTick(); - 800825c: f7fd fbf8 bl 8005a50 - 8008260: 6138 str r0, [r7, #16] + 80084b0: f7fd fbf8 bl 8005ca4 + 80084b4: 6138 str r0, [r7, #16] while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 8008262: e008 b.n 8008276 + 80084b6: e008 b.n 80084ca { if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 8008264: f7fd fbf4 bl 8005a50 - 8008268: 4602 mov r2, r0 - 800826a: 693b ldr r3, [r7, #16] - 800826c: 1ad3 subs r3, r2, r3 - 800826e: 2b02 cmp r3, #2 - 8008270: d901 bls.n 8008276 + 80084b8: f7fd fbf4 bl 8005ca4 + 80084bc: 4602 mov r2, r0 + 80084be: 693b ldr r3, [r7, #16] + 80084c0: 1ad3 subs r3, r2, r3 + 80084c2: 2b02 cmp r3, #2 + 80084c4: d901 bls.n 80084ca { return HAL_TIMEOUT; - 8008272: 2303 movs r3, #3 - 8008274: e185 b.n 8008582 + 80084c6: 2303 movs r3, #3 + 80084c8: e185 b.n 80087d6 while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 8008276: 4b2e ldr r3, [pc, #184] @ (8008330 ) - 8008278: 681b ldr r3, [r3, #0] - 800827a: f403 7380 and.w r3, r3, #256 @ 0x100 - 800827e: 2b00 cmp r3, #0 - 8008280: d0f0 beq.n 8008264 + 80084ca: 4b2e ldr r3, [pc, #184] @ (8008584 ) + 80084cc: 681b ldr r3, [r3, #0] + 80084ce: f403 7380 and.w r3, r3, #256 @ 0x100 + 80084d2: 2b00 cmp r3, #0 + 80084d4: d0f0 beq.n 80084b8 } } } /* Set the new LSE configuration -----------------------------------------*/ __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); - 8008282: 687b ldr r3, [r7, #4] - 8008284: 689b ldr r3, [r3, #8] - 8008286: 2b01 cmp r3, #1 - 8008288: d106 bne.n 8008298 - 800828a: 4b26 ldr r3, [pc, #152] @ (8008324 ) - 800828c: 6f1b ldr r3, [r3, #112] @ 0x70 - 800828e: 4a25 ldr r2, [pc, #148] @ (8008324 ) - 8008290: f043 0301 orr.w r3, r3, #1 - 8008294: 6713 str r3, [r2, #112] @ 0x70 - 8008296: e01c b.n 80082d2 - 8008298: 687b ldr r3, [r7, #4] - 800829a: 689b ldr r3, [r3, #8] - 800829c: 2b05 cmp r3, #5 - 800829e: d10c bne.n 80082ba - 80082a0: 4b20 ldr r3, [pc, #128] @ (8008324 ) - 80082a2: 6f1b ldr r3, [r3, #112] @ 0x70 - 80082a4: 4a1f ldr r2, [pc, #124] @ (8008324 ) - 80082a6: f043 0304 orr.w r3, r3, #4 - 80082aa: 6713 str r3, [r2, #112] @ 0x70 - 80082ac: 4b1d ldr r3, [pc, #116] @ (8008324 ) - 80082ae: 6f1b ldr r3, [r3, #112] @ 0x70 - 80082b0: 4a1c ldr r2, [pc, #112] @ (8008324 ) - 80082b2: f043 0301 orr.w r3, r3, #1 - 80082b6: 6713 str r3, [r2, #112] @ 0x70 - 80082b8: e00b b.n 80082d2 - 80082ba: 4b1a ldr r3, [pc, #104] @ (8008324 ) - 80082bc: 6f1b ldr r3, [r3, #112] @ 0x70 - 80082be: 4a19 ldr r2, [pc, #100] @ (8008324 ) - 80082c0: f023 0301 bic.w r3, r3, #1 - 80082c4: 6713 str r3, [r2, #112] @ 0x70 - 80082c6: 4b17 ldr r3, [pc, #92] @ (8008324 ) - 80082c8: 6f1b ldr r3, [r3, #112] @ 0x70 - 80082ca: 4a16 ldr r2, [pc, #88] @ (8008324 ) - 80082cc: f023 0304 bic.w r3, r3, #4 - 80082d0: 6713 str r3, [r2, #112] @ 0x70 + 80084d6: 687b ldr r3, [r7, #4] + 80084d8: 689b ldr r3, [r3, #8] + 80084da: 2b01 cmp r3, #1 + 80084dc: d106 bne.n 80084ec + 80084de: 4b26 ldr r3, [pc, #152] @ (8008578 ) + 80084e0: 6f1b ldr r3, [r3, #112] @ 0x70 + 80084e2: 4a25 ldr r2, [pc, #148] @ (8008578 ) + 80084e4: f043 0301 orr.w r3, r3, #1 + 80084e8: 6713 str r3, [r2, #112] @ 0x70 + 80084ea: e01c b.n 8008526 + 80084ec: 687b ldr r3, [r7, #4] + 80084ee: 689b ldr r3, [r3, #8] + 80084f0: 2b05 cmp r3, #5 + 80084f2: d10c bne.n 800850e + 80084f4: 4b20 ldr r3, [pc, #128] @ (8008578 ) + 80084f6: 6f1b ldr r3, [r3, #112] @ 0x70 + 80084f8: 4a1f ldr r2, [pc, #124] @ (8008578 ) + 80084fa: f043 0304 orr.w r3, r3, #4 + 80084fe: 6713 str r3, [r2, #112] @ 0x70 + 8008500: 4b1d ldr r3, [pc, #116] @ (8008578 ) + 8008502: 6f1b ldr r3, [r3, #112] @ 0x70 + 8008504: 4a1c ldr r2, [pc, #112] @ (8008578 ) + 8008506: f043 0301 orr.w r3, r3, #1 + 800850a: 6713 str r3, [r2, #112] @ 0x70 + 800850c: e00b b.n 8008526 + 800850e: 4b1a ldr r3, [pc, #104] @ (8008578 ) + 8008510: 6f1b ldr r3, [r3, #112] @ 0x70 + 8008512: 4a19 ldr r2, [pc, #100] @ (8008578 ) + 8008514: f023 0301 bic.w r3, r3, #1 + 8008518: 6713 str r3, [r2, #112] @ 0x70 + 800851a: 4b17 ldr r3, [pc, #92] @ (8008578 ) + 800851c: 6f1b ldr r3, [r3, #112] @ 0x70 + 800851e: 4a16 ldr r2, [pc, #88] @ (8008578 ) + 8008520: f023 0304 bic.w r3, r3, #4 + 8008524: 6713 str r3, [r2, #112] @ 0x70 /* Check the LSE State */ if((RCC_OscInitStruct->LSEState) != RCC_LSE_OFF) - 80082d2: 687b ldr r3, [r7, #4] - 80082d4: 689b ldr r3, [r3, #8] - 80082d6: 2b00 cmp r3, #0 - 80082d8: d015 beq.n 8008306 + 8008526: 687b ldr r3, [r7, #4] + 8008528: 689b ldr r3, [r3, #8] + 800852a: 2b00 cmp r3, #0 + 800852c: d015 beq.n 800855a { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80082da: f7fd fbb9 bl 8005a50 - 80082de: 6138 str r0, [r7, #16] + 800852e: f7fd fbb9 bl 8005ca4 + 8008532: 6138 str r0, [r7, #16] /* Wait till LSE is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 80082e0: e00a b.n 80082f8 + 8008534: e00a b.n 800854c { if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) - 80082e2: f7fd fbb5 bl 8005a50 - 80082e6: 4602 mov r2, r0 - 80082e8: 693b ldr r3, [r7, #16] - 80082ea: 1ad3 subs r3, r2, r3 - 80082ec: f241 3288 movw r2, #5000 @ 0x1388 - 80082f0: 4293 cmp r3, r2 - 80082f2: d901 bls.n 80082f8 + 8008536: f7fd fbb5 bl 8005ca4 + 800853a: 4602 mov r2, r0 + 800853c: 693b ldr r3, [r7, #16] + 800853e: 1ad3 subs r3, r2, r3 + 8008540: f241 3288 movw r2, #5000 @ 0x1388 + 8008544: 4293 cmp r3, r2 + 8008546: d901 bls.n 800854c { return HAL_TIMEOUT; - 80082f4: 2303 movs r3, #3 - 80082f6: e144 b.n 8008582 + 8008548: 2303 movs r3, #3 + 800854a: e144 b.n 80087d6 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 80082f8: 4b0a ldr r3, [pc, #40] @ (8008324 ) - 80082fa: 6f1b ldr r3, [r3, #112] @ 0x70 - 80082fc: f003 0302 and.w r3, r3, #2 - 8008300: 2b00 cmp r3, #0 - 8008302: d0ee beq.n 80082e2 - 8008304: e01c b.n 8008340 + 800854c: 4b0a ldr r3, [pc, #40] @ (8008578 ) + 800854e: 6f1b ldr r3, [r3, #112] @ 0x70 + 8008550: f003 0302 and.w r3, r3, #2 + 8008554: 2b00 cmp r3, #0 + 8008556: d0ee beq.n 8008536 + 8008558: e01c b.n 8008594 } } else { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8008306: f7fd fba3 bl 8005a50 - 800830a: 6138 str r0, [r7, #16] + 800855a: f7fd fba3 bl 8005ca4 + 800855e: 6138 str r0, [r7, #16] /* Wait till LSE is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) - 800830c: e012 b.n 8008334 + 8008560: e012 b.n 8008588 { if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) - 800830e: f7fd fb9f bl 8005a50 - 8008312: 4602 mov r2, r0 - 8008314: 693b ldr r3, [r7, #16] - 8008316: 1ad3 subs r3, r2, r3 - 8008318: f241 3288 movw r2, #5000 @ 0x1388 - 800831c: 4293 cmp r3, r2 - 800831e: d909 bls.n 8008334 + 8008562: f7fd fb9f bl 8005ca4 + 8008566: 4602 mov r2, r0 + 8008568: 693b ldr r3, [r7, #16] + 800856a: 1ad3 subs r3, r2, r3 + 800856c: f241 3288 movw r2, #5000 @ 0x1388 + 8008570: 4293 cmp r3, r2 + 8008572: d909 bls.n 8008588 { return HAL_TIMEOUT; - 8008320: 2303 movs r3, #3 - 8008322: e12e b.n 8008582 - 8008324: 40023800 .word 0x40023800 - 8008328: 42470e80 .word 0x42470e80 - 800832c: 0800e894 .word 0x0800e894 - 8008330: 40007000 .word 0x40007000 + 8008574: 2303 movs r3, #3 + 8008576: e12e b.n 80087d6 + 8008578: 40023800 .word 0x40023800 + 800857c: 42470e80 .word 0x42470e80 + 8008580: 0800ee04 .word 0x0800ee04 + 8008584: 40007000 .word 0x40007000 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) - 8008334: 4b95 ldr r3, [pc, #596] @ (800858c ) - 8008336: 6f1b ldr r3, [r3, #112] @ 0x70 - 8008338: f003 0302 and.w r3, r3, #2 - 800833c: 2b00 cmp r3, #0 - 800833e: d1e6 bne.n 800830e + 8008588: 4b95 ldr r3, [pc, #596] @ (80087e0 ) + 800858a: 6f1b ldr r3, [r3, #112] @ 0x70 + 800858c: f003 0302 and.w r3, r3, #2 + 8008590: 2b00 cmp r3, #0 + 8008592: d1e6 bne.n 8008562 } } } /* Restore clock configuration if changed */ if(pwrclkchanged == SET) - 8008340: 7dfb ldrb r3, [r7, #23] - 8008342: 2b01 cmp r3, #1 - 8008344: d105 bne.n 8008352 + 8008594: 7dfb ldrb r3, [r7, #23] + 8008596: 2b01 cmp r3, #1 + 8008598: d105 bne.n 80085a6 { __HAL_RCC_PWR_CLK_DISABLE(); - 8008346: 4b91 ldr r3, [pc, #580] @ (800858c ) - 8008348: 6c1b ldr r3, [r3, #64] @ 0x40 - 800834a: 4a90 ldr r2, [pc, #576] @ (800858c ) - 800834c: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 - 8008350: 6413 str r3, [r2, #64] @ 0x40 + 800859a: 4b91 ldr r3, [pc, #580] @ (80087e0 ) + 800859c: 6c1b ldr r3, [r3, #64] @ 0x40 + 800859e: 4a90 ldr r2, [pc, #576] @ (80087e0 ) + 80085a0: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 80085a4: 6413 str r3, [r2, #64] @ 0x40 } } /*-------------------------------- PLL Configuration -----------------------*/ /* Check the parameters */ assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); - 8008352: 687b ldr r3, [r7, #4] - 8008354: 699b ldr r3, [r3, #24] - 8008356: 2b00 cmp r3, #0 - 8008358: d00c beq.n 8008374 - 800835a: 687b ldr r3, [r7, #4] - 800835c: 699b ldr r3, [r3, #24] - 800835e: 2b01 cmp r3, #1 - 8008360: d008 beq.n 8008374 - 8008362: 687b ldr r3, [r7, #4] - 8008364: 699b ldr r3, [r3, #24] - 8008366: 2b02 cmp r3, #2 - 8008368: d004 beq.n 8008374 - 800836a: f640 611b movw r1, #3611 @ 0xe1b - 800836e: 4888 ldr r0, [pc, #544] @ (8008590 ) - 8008370: f7fa ff00 bl 8003174 + 80085a6: 687b ldr r3, [r7, #4] + 80085a8: 699b ldr r3, [r3, #24] + 80085aa: 2b00 cmp r3, #0 + 80085ac: d00c beq.n 80085c8 + 80085ae: 687b ldr r3, [r7, #4] + 80085b0: 699b ldr r3, [r3, #24] + 80085b2: 2b01 cmp r3, #1 + 80085b4: d008 beq.n 80085c8 + 80085b6: 687b ldr r3, [r7, #4] + 80085b8: 699b ldr r3, [r3, #24] + 80085ba: 2b02 cmp r3, #2 + 80085bc: d004 beq.n 80085c8 + 80085be: f640 611b movw r1, #3611 @ 0xe1b + 80085c2: 4888 ldr r0, [pc, #544] @ (80087e4 ) + 80085c4: f7fa fe32 bl 800322c if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) - 8008374: 687b ldr r3, [r7, #4] - 8008376: 699b ldr r3, [r3, #24] - 8008378: 2b00 cmp r3, #0 - 800837a: f000 8101 beq.w 8008580 + 80085c8: 687b ldr r3, [r7, #4] + 80085ca: 699b ldr r3, [r3, #24] + 80085cc: 2b00 cmp r3, #0 + 80085ce: f000 8101 beq.w 80087d4 { /* Check if the PLL is used as system clock or not */ if(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_CFGR_SWS_PLL) - 800837e: 4b83 ldr r3, [pc, #524] @ (800858c ) - 8008380: 689b ldr r3, [r3, #8] - 8008382: f003 030c and.w r3, r3, #12 - 8008386: 2b08 cmp r3, #8 - 8008388: f000 80ba beq.w 8008500 + 80085d2: 4b83 ldr r3, [pc, #524] @ (80087e0 ) + 80085d4: 689b ldr r3, [r3, #8] + 80085d6: f003 030c and.w r3, r3, #12 + 80085da: 2b08 cmp r3, #8 + 80085dc: f000 80ba beq.w 8008754 { if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) - 800838c: 687b ldr r3, [r7, #4] - 800838e: 699b ldr r3, [r3, #24] - 8008390: 2b02 cmp r3, #2 - 8008392: f040 809e bne.w 80084d2 + 80085e0: 687b ldr r3, [r7, #4] + 80085e2: 699b ldr r3, [r3, #24] + 80085e4: 2b02 cmp r3, #2 + 80085e6: f040 809e bne.w 8008726 { /* Check the parameters */ assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource)); - 8008396: 687b ldr r3, [r7, #4] - 8008398: 69db ldr r3, [r3, #28] - 800839a: 2b00 cmp r3, #0 - 800839c: d009 beq.n 80083b2 - 800839e: 687b ldr r3, [r7, #4] - 80083a0: 69db ldr r3, [r3, #28] - 80083a2: f5b3 0f80 cmp.w r3, #4194304 @ 0x400000 - 80083a6: d004 beq.n 80083b2 - 80083a8: f640 6124 movw r1, #3620 @ 0xe24 - 80083ac: 4878 ldr r0, [pc, #480] @ (8008590 ) - 80083ae: f7fa fee1 bl 8003174 + 80085ea: 687b ldr r3, [r7, #4] + 80085ec: 69db ldr r3, [r3, #28] + 80085ee: 2b00 cmp r3, #0 + 80085f0: d009 beq.n 8008606 + 80085f2: 687b ldr r3, [r7, #4] + 80085f4: 69db ldr r3, [r3, #28] + 80085f6: f5b3 0f80 cmp.w r3, #4194304 @ 0x400000 + 80085fa: d004 beq.n 8008606 + 80085fc: f640 6124 movw r1, #3620 @ 0xe24 + 8008600: 4878 ldr r0, [pc, #480] @ (80087e4 ) + 8008602: f7fa fe13 bl 800322c assert_param(IS_RCC_PLLM_VALUE(RCC_OscInitStruct->PLL.PLLM)); - 80083b2: 687b ldr r3, [r7, #4] - 80083b4: 6a1b ldr r3, [r3, #32] - 80083b6: 2b01 cmp r3, #1 - 80083b8: d903 bls.n 80083c2 - 80083ba: 687b ldr r3, [r7, #4] - 80083bc: 6a1b ldr r3, [r3, #32] - 80083be: 2b3f cmp r3, #63 @ 0x3f - 80083c0: d904 bls.n 80083cc - 80083c2: f640 6125 movw r1, #3621 @ 0xe25 - 80083c6: 4872 ldr r0, [pc, #456] @ (8008590 ) - 80083c8: f7fa fed4 bl 8003174 + 8008606: 687b ldr r3, [r7, #4] + 8008608: 6a1b ldr r3, [r3, #32] + 800860a: 2b01 cmp r3, #1 + 800860c: d903 bls.n 8008616 + 800860e: 687b ldr r3, [r7, #4] + 8008610: 6a1b ldr r3, [r3, #32] + 8008612: 2b3f cmp r3, #63 @ 0x3f + 8008614: d904 bls.n 8008620 + 8008616: f640 6125 movw r1, #3621 @ 0xe25 + 800861a: 4872 ldr r0, [pc, #456] @ (80087e4 ) + 800861c: f7fa fe06 bl 800322c assert_param(IS_RCC_PLLN_VALUE(RCC_OscInitStruct->PLL.PLLN)); - 80083cc: 687b ldr r3, [r7, #4] - 80083ce: 6a5b ldr r3, [r3, #36] @ 0x24 - 80083d0: 2b31 cmp r3, #49 @ 0x31 - 80083d2: d904 bls.n 80083de - 80083d4: 687b ldr r3, [r7, #4] - 80083d6: 6a5b ldr r3, [r3, #36] @ 0x24 - 80083d8: f5b3 7fd8 cmp.w r3, #432 @ 0x1b0 - 80083dc: d904 bls.n 80083e8 - 80083de: f640 6126 movw r1, #3622 @ 0xe26 - 80083e2: 486b ldr r0, [pc, #428] @ (8008590 ) - 80083e4: f7fa fec6 bl 8003174 + 8008620: 687b ldr r3, [r7, #4] + 8008622: 6a5b ldr r3, [r3, #36] @ 0x24 + 8008624: 2b31 cmp r3, #49 @ 0x31 + 8008626: d904 bls.n 8008632 + 8008628: 687b ldr r3, [r7, #4] + 800862a: 6a5b ldr r3, [r3, #36] @ 0x24 + 800862c: f5b3 7fd8 cmp.w r3, #432 @ 0x1b0 + 8008630: d904 bls.n 800863c + 8008632: f640 6126 movw r1, #3622 @ 0xe26 + 8008636: 486b ldr r0, [pc, #428] @ (80087e4 ) + 8008638: f7fa fdf8 bl 800322c assert_param(IS_RCC_PLLP_VALUE(RCC_OscInitStruct->PLL.PLLP)); - 80083e8: 687b ldr r3, [r7, #4] - 80083ea: 6a9b ldr r3, [r3, #40] @ 0x28 - 80083ec: 2b02 cmp r3, #2 - 80083ee: d010 beq.n 8008412 - 80083f0: 687b ldr r3, [r7, #4] - 80083f2: 6a9b ldr r3, [r3, #40] @ 0x28 - 80083f4: 2b04 cmp r3, #4 - 80083f6: d00c beq.n 8008412 - 80083f8: 687b ldr r3, [r7, #4] - 80083fa: 6a9b ldr r3, [r3, #40] @ 0x28 - 80083fc: 2b06 cmp r3, #6 - 80083fe: d008 beq.n 8008412 - 8008400: 687b ldr r3, [r7, #4] - 8008402: 6a9b ldr r3, [r3, #40] @ 0x28 - 8008404: 2b08 cmp r3, #8 - 8008406: d004 beq.n 8008412 - 8008408: f640 6127 movw r1, #3623 @ 0xe27 - 800840c: 4860 ldr r0, [pc, #384] @ (8008590 ) - 800840e: f7fa feb1 bl 8003174 + 800863c: 687b ldr r3, [r7, #4] + 800863e: 6a9b ldr r3, [r3, #40] @ 0x28 + 8008640: 2b02 cmp r3, #2 + 8008642: d010 beq.n 8008666 + 8008644: 687b ldr r3, [r7, #4] + 8008646: 6a9b ldr r3, [r3, #40] @ 0x28 + 8008648: 2b04 cmp r3, #4 + 800864a: d00c beq.n 8008666 + 800864c: 687b ldr r3, [r7, #4] + 800864e: 6a9b ldr r3, [r3, #40] @ 0x28 + 8008650: 2b06 cmp r3, #6 + 8008652: d008 beq.n 8008666 + 8008654: 687b ldr r3, [r7, #4] + 8008656: 6a9b ldr r3, [r3, #40] @ 0x28 + 8008658: 2b08 cmp r3, #8 + 800865a: d004 beq.n 8008666 + 800865c: f640 6127 movw r1, #3623 @ 0xe27 + 8008660: 4860 ldr r0, [pc, #384] @ (80087e4 ) + 8008662: f7fa fde3 bl 800322c assert_param(IS_RCC_PLLQ_VALUE(RCC_OscInitStruct->PLL.PLLQ)); - 8008412: 687b ldr r3, [r7, #4] - 8008414: 6adb ldr r3, [r3, #44] @ 0x2c - 8008416: 2b01 cmp r3, #1 - 8008418: d903 bls.n 8008422 - 800841a: 687b ldr r3, [r7, #4] - 800841c: 6adb ldr r3, [r3, #44] @ 0x2c - 800841e: 2b0f cmp r3, #15 - 8008420: d904 bls.n 800842c - 8008422: f640 6128 movw r1, #3624 @ 0xe28 - 8008426: 485a ldr r0, [pc, #360] @ (8008590 ) - 8008428: f7fa fea4 bl 8003174 + 8008666: 687b ldr r3, [r7, #4] + 8008668: 6adb ldr r3, [r3, #44] @ 0x2c + 800866a: 2b01 cmp r3, #1 + 800866c: d903 bls.n 8008676 + 800866e: 687b ldr r3, [r7, #4] + 8008670: 6adb ldr r3, [r3, #44] @ 0x2c + 8008672: 2b0f cmp r3, #15 + 8008674: d904 bls.n 8008680 + 8008676: f640 6128 movw r1, #3624 @ 0xe28 + 800867a: 485a ldr r0, [pc, #360] @ (80087e4 ) + 800867c: f7fa fdd6 bl 800322c assert_param(IS_RCC_PLLR_VALUE(RCC_OscInitStruct->PLL.PLLR)); - 800842c: 687b ldr r3, [r7, #4] - 800842e: 6b1b ldr r3, [r3, #48] @ 0x30 - 8008430: 2b01 cmp r3, #1 - 8008432: d903 bls.n 800843c - 8008434: 687b ldr r3, [r7, #4] - 8008436: 6b1b ldr r3, [r3, #48] @ 0x30 - 8008438: 2b07 cmp r3, #7 - 800843a: d904 bls.n 8008446 - 800843c: f640 6129 movw r1, #3625 @ 0xe29 - 8008440: 4853 ldr r0, [pc, #332] @ (8008590 ) - 8008442: f7fa fe97 bl 8003174 + 8008680: 687b ldr r3, [r7, #4] + 8008682: 6b1b ldr r3, [r3, #48] @ 0x30 + 8008684: 2b01 cmp r3, #1 + 8008686: d903 bls.n 8008690 + 8008688: 687b ldr r3, [r7, #4] + 800868a: 6b1b ldr r3, [r3, #48] @ 0x30 + 800868c: 2b07 cmp r3, #7 + 800868e: d904 bls.n 800869a + 8008690: f640 6129 movw r1, #3625 @ 0xe29 + 8008694: 4853 ldr r0, [pc, #332] @ (80087e4 ) + 8008696: f7fa fdc9 bl 800322c /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); - 8008446: 4b53 ldr r3, [pc, #332] @ (8008594 ) - 8008448: 2200 movs r2, #0 - 800844a: 601a str r2, [r3, #0] + 800869a: 4b53 ldr r3, [pc, #332] @ (80087e8 ) + 800869c: 2200 movs r2, #0 + 800869e: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 800844c: f7fd fb00 bl 8005a50 - 8008450: 6138 str r0, [r7, #16] + 80086a0: f7fd fb00 bl 8005ca4 + 80086a4: 6138 str r0, [r7, #16] /* Wait till PLL is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 8008452: e008 b.n 8008466 + 80086a6: e008 b.n 80086ba { if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) - 8008454: f7fd fafc bl 8005a50 - 8008458: 4602 mov r2, r0 - 800845a: 693b ldr r3, [r7, #16] - 800845c: 1ad3 subs r3, r2, r3 - 800845e: 2b02 cmp r3, #2 - 8008460: d901 bls.n 8008466 + 80086a8: f7fd fafc bl 8005ca4 + 80086ac: 4602 mov r2, r0 + 80086ae: 693b ldr r3, [r7, #16] + 80086b0: 1ad3 subs r3, r2, r3 + 80086b2: 2b02 cmp r3, #2 + 80086b4: d901 bls.n 80086ba { return HAL_TIMEOUT; - 8008462: 2303 movs r3, #3 - 8008464: e08d b.n 8008582 + 80086b6: 2303 movs r3, #3 + 80086b8: e08d b.n 80087d6 while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 8008466: 4b49 ldr r3, [pc, #292] @ (800858c ) - 8008468: 681b ldr r3, [r3, #0] - 800846a: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 800846e: 2b00 cmp r3, #0 - 8008470: d1f0 bne.n 8008454 + 80086ba: 4b49 ldr r3, [pc, #292] @ (80087e0 ) + 80086bc: 681b ldr r3, [r3, #0] + 80086be: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 80086c2: 2b00 cmp r3, #0 + 80086c4: d1f0 bne.n 80086a8 } } /* Configure the main PLL clock source, multiplication and division factors. */ WRITE_REG(RCC->PLLCFGR, (RCC_OscInitStruct->PLL.PLLSource | \ - 8008472: 687b ldr r3, [r7, #4] - 8008474: 69da ldr r2, [r3, #28] - 8008476: 687b ldr r3, [r7, #4] - 8008478: 6a1b ldr r3, [r3, #32] - 800847a: 431a orrs r2, r3 - 800847c: 687b ldr r3, [r7, #4] - 800847e: 6a5b ldr r3, [r3, #36] @ 0x24 - 8008480: 019b lsls r3, r3, #6 - 8008482: 431a orrs r2, r3 - 8008484: 687b ldr r3, [r7, #4] - 8008486: 6a9b ldr r3, [r3, #40] @ 0x28 - 8008488: 085b lsrs r3, r3, #1 - 800848a: 3b01 subs r3, #1 - 800848c: 041b lsls r3, r3, #16 - 800848e: 431a orrs r2, r3 - 8008490: 687b ldr r3, [r7, #4] - 8008492: 6adb ldr r3, [r3, #44] @ 0x2c - 8008494: 061b lsls r3, r3, #24 - 8008496: 431a orrs r2, r3 - 8008498: 687b ldr r3, [r7, #4] - 800849a: 6b1b ldr r3, [r3, #48] @ 0x30 - 800849c: 071b lsls r3, r3, #28 - 800849e: 493b ldr r1, [pc, #236] @ (800858c ) - 80084a0: 4313 orrs r3, r2 - 80084a2: 604b str r3, [r1, #4] + 80086c6: 687b ldr r3, [r7, #4] + 80086c8: 69da ldr r2, [r3, #28] + 80086ca: 687b ldr r3, [r7, #4] + 80086cc: 6a1b ldr r3, [r3, #32] + 80086ce: 431a orrs r2, r3 + 80086d0: 687b ldr r3, [r7, #4] + 80086d2: 6a5b ldr r3, [r3, #36] @ 0x24 + 80086d4: 019b lsls r3, r3, #6 + 80086d6: 431a orrs r2, r3 + 80086d8: 687b ldr r3, [r7, #4] + 80086da: 6a9b ldr r3, [r3, #40] @ 0x28 + 80086dc: 085b lsrs r3, r3, #1 + 80086de: 3b01 subs r3, #1 + 80086e0: 041b lsls r3, r3, #16 + 80086e2: 431a orrs r2, r3 + 80086e4: 687b ldr r3, [r7, #4] + 80086e6: 6adb ldr r3, [r3, #44] @ 0x2c + 80086e8: 061b lsls r3, r3, #24 + 80086ea: 431a orrs r2, r3 + 80086ec: 687b ldr r3, [r7, #4] + 80086ee: 6b1b ldr r3, [r3, #48] @ 0x30 + 80086f0: 071b lsls r3, r3, #28 + 80086f2: 493b ldr r1, [pc, #236] @ (80087e0 ) + 80086f4: 4313 orrs r3, r2 + 80086f6: 604b str r3, [r1, #4] (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos) | \ (((RCC_OscInitStruct->PLL.PLLP >> 1U) - 1U) << RCC_PLLCFGR_PLLP_Pos) | \ (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos) | \ (RCC_OscInitStruct->PLL.PLLR << RCC_PLLCFGR_PLLR_Pos))); /* Enable the main PLL. */ __HAL_RCC_PLL_ENABLE(); - 80084a4: 4b3b ldr r3, [pc, #236] @ (8008594 ) - 80084a6: 2201 movs r2, #1 - 80084a8: 601a str r2, [r3, #0] + 80086f8: 4b3b ldr r3, [pc, #236] @ (80087e8 ) + 80086fa: 2201 movs r2, #1 + 80086fc: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80084aa: f7fd fad1 bl 8005a50 - 80084ae: 6138 str r0, [r7, #16] + 80086fe: f7fd fad1 bl 8005ca4 + 8008702: 6138 str r0, [r7, #16] /* Wait till PLL is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 80084b0: e008 b.n 80084c4 + 8008704: e008 b.n 8008718 { if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) - 80084b2: f7fd facd bl 8005a50 - 80084b6: 4602 mov r2, r0 - 80084b8: 693b ldr r3, [r7, #16] - 80084ba: 1ad3 subs r3, r2, r3 - 80084bc: 2b02 cmp r3, #2 - 80084be: d901 bls.n 80084c4 + 8008706: f7fd facd bl 8005ca4 + 800870a: 4602 mov r2, r0 + 800870c: 693b ldr r3, [r7, #16] + 800870e: 1ad3 subs r3, r2, r3 + 8008710: 2b02 cmp r3, #2 + 8008712: d901 bls.n 8008718 { return HAL_TIMEOUT; - 80084c0: 2303 movs r3, #3 - 80084c2: e05e b.n 8008582 + 8008714: 2303 movs r3, #3 + 8008716: e05e b.n 80087d6 while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 80084c4: 4b31 ldr r3, [pc, #196] @ (800858c ) - 80084c6: 681b ldr r3, [r3, #0] - 80084c8: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 80084cc: 2b00 cmp r3, #0 - 80084ce: d0f0 beq.n 80084b2 - 80084d0: e056 b.n 8008580 + 8008718: 4b31 ldr r3, [pc, #196] @ (80087e0 ) + 800871a: 681b ldr r3, [r3, #0] + 800871c: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8008720: 2b00 cmp r3, #0 + 8008722: d0f0 beq.n 8008706 + 8008724: e056 b.n 80087d4 } } else { /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); - 80084d2: 4b30 ldr r3, [pc, #192] @ (8008594 ) - 80084d4: 2200 movs r2, #0 - 80084d6: 601a str r2, [r3, #0] + 8008726: 4b30 ldr r3, [pc, #192] @ (80087e8 ) + 8008728: 2200 movs r2, #0 + 800872a: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80084d8: f7fd faba bl 8005a50 - 80084dc: 6138 str r0, [r7, #16] + 800872c: f7fd faba bl 8005ca4 + 8008730: 6138 str r0, [r7, #16] /* Wait till PLL is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 80084de: e008 b.n 80084f2 + 8008732: e008 b.n 8008746 { if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) - 80084e0: f7fd fab6 bl 8005a50 - 80084e4: 4602 mov r2, r0 - 80084e6: 693b ldr r3, [r7, #16] - 80084e8: 1ad3 subs r3, r2, r3 - 80084ea: 2b02 cmp r3, #2 - 80084ec: d901 bls.n 80084f2 + 8008734: f7fd fab6 bl 8005ca4 + 8008738: 4602 mov r2, r0 + 800873a: 693b ldr r3, [r7, #16] + 800873c: 1ad3 subs r3, r2, r3 + 800873e: 2b02 cmp r3, #2 + 8008740: d901 bls.n 8008746 { return HAL_TIMEOUT; - 80084ee: 2303 movs r3, #3 - 80084f0: e047 b.n 8008582 + 8008742: 2303 movs r3, #3 + 8008744: e047 b.n 80087d6 while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 80084f2: 4b26 ldr r3, [pc, #152] @ (800858c ) - 80084f4: 681b ldr r3, [r3, #0] - 80084f6: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 80084fa: 2b00 cmp r3, #0 - 80084fc: d1f0 bne.n 80084e0 - 80084fe: e03f b.n 8008580 + 8008746: 4b26 ldr r3, [pc, #152] @ (80087e0 ) + 8008748: 681b ldr r3, [r3, #0] + 800874a: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 800874e: 2b00 cmp r3, #0 + 8008750: d1f0 bne.n 8008734 + 8008752: e03f b.n 80087d4 } } else { /* Check if there is a request to disable the PLL used as System clock source */ if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) - 8008500: 687b ldr r3, [r7, #4] - 8008502: 699b ldr r3, [r3, #24] - 8008504: 2b01 cmp r3, #1 - 8008506: d101 bne.n 800850c + 8008754: 687b ldr r3, [r7, #4] + 8008756: 699b ldr r3, [r3, #24] + 8008758: 2b01 cmp r3, #1 + 800875a: d101 bne.n 8008760 { return HAL_ERROR; - 8008508: 2301 movs r3, #1 - 800850a: e03a b.n 8008582 + 800875c: 2301 movs r3, #1 + 800875e: e03a b.n 80087d6 } else { /* Do not return HAL_ERROR if request repeats the current configuration */ pll_config = RCC->PLLCFGR; - 800850c: 4b1f ldr r3, [pc, #124] @ (800858c ) - 800850e: 685b ldr r3, [r3, #4] - 8008510: 60fb str r3, [r7, #12] + 8008760: 4b1f ldr r3, [pc, #124] @ (80087e0 ) + 8008762: 685b ldr r3, [r3, #4] + 8008764: 60fb str r3, [r7, #12] #if defined (RCC_PLLCFGR_PLLR) if (((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) || - 8008512: 687b ldr r3, [r7, #4] - 8008514: 699b ldr r3, [r3, #24] - 8008516: 2b01 cmp r3, #1 - 8008518: d030 beq.n 800857c + 8008766: 687b ldr r3, [r7, #4] + 8008768: 699b ldr r3, [r3, #24] + 800876a: 2b01 cmp r3, #1 + 800876c: d030 beq.n 80087d0 (READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 800851a: 68fb ldr r3, [r7, #12] - 800851c: f403 0280 and.w r2, r3, #4194304 @ 0x400000 - 8008520: 687b ldr r3, [r7, #4] - 8008522: 69db ldr r3, [r3, #28] + 800876e: 68fb ldr r3, [r7, #12] + 8008770: f403 0280 and.w r2, r3, #4194304 @ 0x400000 + 8008774: 687b ldr r3, [r7, #4] + 8008776: 69db ldr r3, [r3, #28] if (((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) || - 8008524: 429a cmp r2, r3 - 8008526: d129 bne.n 800857c + 8008778: 429a cmp r2, r3 + 800877a: d129 bne.n 80087d0 (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != (RCC_OscInitStruct->PLL.PLLM) << RCC_PLLCFGR_PLLM_Pos) || - 8008528: 68fb ldr r3, [r7, #12] - 800852a: f003 023f and.w r2, r3, #63 @ 0x3f - 800852e: 687b ldr r3, [r7, #4] - 8008530: 6a1b ldr r3, [r3, #32] + 800877c: 68fb ldr r3, [r7, #12] + 800877e: f003 023f and.w r2, r3, #63 @ 0x3f + 8008782: 687b ldr r3, [r7, #4] + 8008784: 6a1b ldr r3, [r3, #32] (READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 8008532: 429a cmp r2, r3 - 8008534: d122 bne.n 800857c + 8008786: 429a cmp r2, r3 + 8008788: d122 bne.n 80087d0 (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN) << RCC_PLLCFGR_PLLN_Pos) || - 8008536: 68fa ldr r2, [r7, #12] - 8008538: f647 73c0 movw r3, #32704 @ 0x7fc0 - 800853c: 4013 ands r3, r2 - 800853e: 687a ldr r2, [r7, #4] - 8008540: 6a52 ldr r2, [r2, #36] @ 0x24 - 8008542: 0192 lsls r2, r2, #6 + 800878a: 68fa ldr r2, [r7, #12] + 800878c: f647 73c0 movw r3, #32704 @ 0x7fc0 + 8008790: 4013 ands r3, r2 + 8008792: 687a ldr r2, [r7, #4] + 8008794: 6a52 ldr r2, [r2, #36] @ 0x24 + 8008796: 0192 lsls r2, r2, #6 (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != (RCC_OscInitStruct->PLL.PLLM) << RCC_PLLCFGR_PLLM_Pos) || - 8008544: 4293 cmp r3, r2 - 8008546: d119 bne.n 800857c + 8008798: 4293 cmp r3, r2 + 800879a: d119 bne.n 80087d0 (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != (((RCC_OscInitStruct->PLL.PLLP >> 1U) - 1U)) << RCC_PLLCFGR_PLLP_Pos) || - 8008548: 68fb ldr r3, [r7, #12] - 800854a: f403 3240 and.w r2, r3, #196608 @ 0x30000 - 800854e: 687b ldr r3, [r7, #4] - 8008550: 6a9b ldr r3, [r3, #40] @ 0x28 - 8008552: 085b lsrs r3, r3, #1 - 8008554: 3b01 subs r3, #1 - 8008556: 041b lsls r3, r3, #16 + 800879c: 68fb ldr r3, [r7, #12] + 800879e: f403 3240 and.w r2, r3, #196608 @ 0x30000 + 80087a2: 687b ldr r3, [r7, #4] + 80087a4: 6a9b ldr r3, [r3, #40] @ 0x28 + 80087a6: 085b lsrs r3, r3, #1 + 80087a8: 3b01 subs r3, #1 + 80087aa: 041b lsls r3, r3, #16 (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN) << RCC_PLLCFGR_PLLN_Pos) || - 8008558: 429a cmp r2, r3 - 800855a: d10f bne.n 800857c + 80087ac: 429a cmp r2, r3 + 80087ae: d10f bne.n 80087d0 (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos)) || - 800855c: 68fb ldr r3, [r7, #12] - 800855e: f003 6270 and.w r2, r3, #251658240 @ 0xf000000 - 8008562: 687b ldr r3, [r7, #4] - 8008564: 6adb ldr r3, [r3, #44] @ 0x2c - 8008566: 061b lsls r3, r3, #24 + 80087b0: 68fb ldr r3, [r7, #12] + 80087b2: f003 6270 and.w r2, r3, #251658240 @ 0xf000000 + 80087b6: 687b ldr r3, [r7, #4] + 80087b8: 6adb ldr r3, [r3, #44] @ 0x2c + 80087ba: 061b lsls r3, r3, #24 (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != (((RCC_OscInitStruct->PLL.PLLP >> 1U) - 1U)) << RCC_PLLCFGR_PLLP_Pos) || - 8008568: 429a cmp r2, r3 - 800856a: d107 bne.n 800857c + 80087bc: 429a cmp r2, r3 + 80087be: d107 bne.n 80087d0 (READ_BIT(pll_config, RCC_PLLCFGR_PLLR) != (RCC_OscInitStruct->PLL.PLLR << RCC_PLLCFGR_PLLR_Pos))) - 800856c: 68fb ldr r3, [r7, #12] - 800856e: f003 42e0 and.w r2, r3, #1879048192 @ 0x70000000 - 8008572: 687b ldr r3, [r7, #4] - 8008574: 6b1b ldr r3, [r3, #48] @ 0x30 - 8008576: 071b lsls r3, r3, #28 + 80087c0: 68fb ldr r3, [r7, #12] + 80087c2: f003 42e0 and.w r2, r3, #1879048192 @ 0x70000000 + 80087c6: 687b ldr r3, [r7, #4] + 80087c8: 6b1b ldr r3, [r3, #48] @ 0x30 + 80087ca: 071b lsls r3, r3, #28 (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos)) || - 8008578: 429a cmp r2, r3 - 800857a: d001 beq.n 8008580 + 80087cc: 429a cmp r2, r3 + 80087ce: d001 beq.n 80087d4 (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN) << RCC_PLLCFGR_PLLN_Pos) || (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != (((RCC_OscInitStruct->PLL.PLLP >> 1U) - 1U)) << RCC_PLLCFGR_PLLP_Pos) || (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos))) #endif { return HAL_ERROR; - 800857c: 2301 movs r3, #1 - 800857e: e000 b.n 8008582 + 80087d0: 2301 movs r3, #1 + 80087d2: e000 b.n 80087d6 } } } } return HAL_OK; - 8008580: 2300 movs r3, #0 + 80087d4: 2300 movs r3, #0 } - 8008582: 4618 mov r0, r3 - 8008584: 3718 adds r7, #24 - 8008586: 46bd mov sp, r7 - 8008588: bd80 pop {r7, pc} - 800858a: bf00 nop - 800858c: 40023800 .word 0x40023800 - 8008590: 0800e894 .word 0x0800e894 - 8008594: 42470060 .word 0x42470060 + 80087d6: 4618 mov r0, r3 + 80087d8: 3718 adds r7, #24 + 80087da: 46bd mov sp, r7 + 80087dc: bd80 pop {r7, pc} + 80087de: bf00 nop + 80087e0: 40023800 .word 0x40023800 + 80087e4: 0800ee04 .word 0x0800ee04 + 80087e8: 42470060 .word 0x42470060 -08008598 : +080087ec : * @param hspi pointer to a SPI_HandleTypeDef structure that contains * the configuration information for SPI module. * @retval HAL status */ HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) { - 8008598: b580 push {r7, lr} - 800859a: b082 sub sp, #8 - 800859c: af00 add r7, sp, #0 - 800859e: 6078 str r0, [r7, #4] + 80087ec: b580 push {r7, lr} + 80087ee: b082 sub sp, #8 + 80087f0: af00 add r7, sp, #0 + 80087f2: 6078 str r0, [r7, #4] /* Check the SPI handle allocation */ if (hspi == NULL) - 80085a0: 687b ldr r3, [r7, #4] - 80085a2: 2b00 cmp r3, #0 - 80085a4: d101 bne.n 80085aa + 80087f4: 687b ldr r3, [r7, #4] + 80087f6: 2b00 cmp r3, #0 + 80087f8: d101 bne.n 80087fe { return HAL_ERROR; - 80085a6: 2301 movs r3, #1 - 80085a8: e18c b.n 80088c4 + 80087fa: 2301 movs r3, #1 + 80087fc: e18c b.n 8008b18 } /* Check the parameters */ assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); - 80085aa: 687b ldr r3, [r7, #4] - 80085ac: 681b ldr r3, [r3, #0] - 80085ae: 4a75 ldr r2, [pc, #468] @ (8008784 ) - 80085b0: 4293 cmp r3, r2 - 80085b2: d018 beq.n 80085e6 - 80085b4: 687b ldr r3, [r7, #4] - 80085b6: 681b ldr r3, [r3, #0] - 80085b8: 4a73 ldr r2, [pc, #460] @ (8008788 ) - 80085ba: 4293 cmp r3, r2 - 80085bc: d013 beq.n 80085e6 - 80085be: 687b ldr r3, [r7, #4] - 80085c0: 681b ldr r3, [r3, #0] - 80085c2: 4a72 ldr r2, [pc, #456] @ (800878c ) - 80085c4: 4293 cmp r3, r2 - 80085c6: d00e beq.n 80085e6 - 80085c8: 687b ldr r3, [r7, #4] - 80085ca: 681b ldr r3, [r3, #0] - 80085cc: 4a70 ldr r2, [pc, #448] @ (8008790 ) - 80085ce: 4293 cmp r3, r2 - 80085d0: d009 beq.n 80085e6 - 80085d2: 687b ldr r3, [r7, #4] - 80085d4: 681b ldr r3, [r3, #0] - 80085d6: 4a6f ldr r2, [pc, #444] @ (8008794 ) - 80085d8: 4293 cmp r3, r2 - 80085da: d004 beq.n 80085e6 - 80085dc: f44f 71a0 mov.w r1, #320 @ 0x140 - 80085e0: 486d ldr r0, [pc, #436] @ (8008798 ) - 80085e2: f7fa fdc7 bl 8003174 + 80087fe: 687b ldr r3, [r7, #4] + 8008800: 681b ldr r3, [r3, #0] + 8008802: 4a75 ldr r2, [pc, #468] @ (80089d8 ) + 8008804: 4293 cmp r3, r2 + 8008806: d018 beq.n 800883a + 8008808: 687b ldr r3, [r7, #4] + 800880a: 681b ldr r3, [r3, #0] + 800880c: 4a73 ldr r2, [pc, #460] @ (80089dc ) + 800880e: 4293 cmp r3, r2 + 8008810: d013 beq.n 800883a + 8008812: 687b ldr r3, [r7, #4] + 8008814: 681b ldr r3, [r3, #0] + 8008816: 4a72 ldr r2, [pc, #456] @ (80089e0 ) + 8008818: 4293 cmp r3, r2 + 800881a: d00e beq.n 800883a + 800881c: 687b ldr r3, [r7, #4] + 800881e: 681b ldr r3, [r3, #0] + 8008820: 4a70 ldr r2, [pc, #448] @ (80089e4 ) + 8008822: 4293 cmp r3, r2 + 8008824: d009 beq.n 800883a + 8008826: 687b ldr r3, [r7, #4] + 8008828: 681b ldr r3, [r3, #0] + 800882a: 4a6f ldr r2, [pc, #444] @ (80089e8 ) + 800882c: 4293 cmp r3, r2 + 800882e: d004 beq.n 800883a + 8008830: f44f 71a0 mov.w r1, #320 @ 0x140 + 8008834: 486d ldr r0, [pc, #436] @ (80089ec ) + 8008836: f7fa fcf9 bl 800322c assert_param(IS_SPI_MODE(hspi->Init.Mode)); - 80085e6: 687b ldr r3, [r7, #4] - 80085e8: 685b ldr r3, [r3, #4] - 80085ea: 2b00 cmp r3, #0 - 80085ec: d009 beq.n 8008602 - 80085ee: 687b ldr r3, [r7, #4] - 80085f0: 685b ldr r3, [r3, #4] - 80085f2: f5b3 7f82 cmp.w r3, #260 @ 0x104 - 80085f6: d004 beq.n 8008602 - 80085f8: f240 1141 movw r1, #321 @ 0x141 - 80085fc: 4866 ldr r0, [pc, #408] @ (8008798 ) - 80085fe: f7fa fdb9 bl 8003174 + 800883a: 687b ldr r3, [r7, #4] + 800883c: 685b ldr r3, [r3, #4] + 800883e: 2b00 cmp r3, #0 + 8008840: d009 beq.n 8008856 + 8008842: 687b ldr r3, [r7, #4] + 8008844: 685b ldr r3, [r3, #4] + 8008846: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 800884a: d004 beq.n 8008856 + 800884c: f240 1141 movw r1, #321 @ 0x141 + 8008850: 4866 ldr r0, [pc, #408] @ (80089ec ) + 8008852: f7fa fceb bl 800322c assert_param(IS_SPI_DIRECTION(hspi->Init.Direction)); - 8008602: 687b ldr r3, [r7, #4] - 8008604: 689b ldr r3, [r3, #8] - 8008606: 2b00 cmp r3, #0 - 8008608: d00e beq.n 8008628 - 800860a: 687b ldr r3, [r7, #4] - 800860c: 689b ldr r3, [r3, #8] - 800860e: f5b3 6f80 cmp.w r3, #1024 @ 0x400 - 8008612: d009 beq.n 8008628 - 8008614: 687b ldr r3, [r7, #4] - 8008616: 689b ldr r3, [r3, #8] - 8008618: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 - 800861c: d004 beq.n 8008628 - 800861e: f44f 71a1 mov.w r1, #322 @ 0x142 - 8008622: 485d ldr r0, [pc, #372] @ (8008798 ) - 8008624: f7fa fda6 bl 8003174 + 8008856: 687b ldr r3, [r7, #4] + 8008858: 689b ldr r3, [r3, #8] + 800885a: 2b00 cmp r3, #0 + 800885c: d00e beq.n 800887c + 800885e: 687b ldr r3, [r7, #4] + 8008860: 689b ldr r3, [r3, #8] + 8008862: f5b3 6f80 cmp.w r3, #1024 @ 0x400 + 8008866: d009 beq.n 800887c + 8008868: 687b ldr r3, [r7, #4] + 800886a: 689b ldr r3, [r3, #8] + 800886c: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 8008870: d004 beq.n 800887c + 8008872: f44f 71a1 mov.w r1, #322 @ 0x142 + 8008876: 485d ldr r0, [pc, #372] @ (80089ec ) + 8008878: f7fa fcd8 bl 800322c assert_param(IS_SPI_DATASIZE(hspi->Init.DataSize)); - 8008628: 687b ldr r3, [r7, #4] - 800862a: 68db ldr r3, [r3, #12] - 800862c: f5b3 6f00 cmp.w r3, #2048 @ 0x800 - 8008630: d008 beq.n 8008644 - 8008632: 687b ldr r3, [r7, #4] - 8008634: 68db ldr r3, [r3, #12] - 8008636: 2b00 cmp r3, #0 - 8008638: d004 beq.n 8008644 - 800863a: f240 1143 movw r1, #323 @ 0x143 - 800863e: 4856 ldr r0, [pc, #344] @ (8008798 ) - 8008640: f7fa fd98 bl 8003174 + 800887c: 687b ldr r3, [r7, #4] + 800887e: 68db ldr r3, [r3, #12] + 8008880: f5b3 6f00 cmp.w r3, #2048 @ 0x800 + 8008884: d008 beq.n 8008898 + 8008886: 687b ldr r3, [r7, #4] + 8008888: 68db ldr r3, [r3, #12] + 800888a: 2b00 cmp r3, #0 + 800888c: d004 beq.n 8008898 + 800888e: f240 1143 movw r1, #323 @ 0x143 + 8008892: 4856 ldr r0, [pc, #344] @ (80089ec ) + 8008894: f7fa fcca bl 800322c assert_param(IS_SPI_NSS(hspi->Init.NSS)); - 8008644: 687b ldr r3, [r7, #4] - 8008646: 699b ldr r3, [r3, #24] - 8008648: f5b3 7f00 cmp.w r3, #512 @ 0x200 - 800864c: d00d beq.n 800866a - 800864e: 687b ldr r3, [r7, #4] - 8008650: 699b ldr r3, [r3, #24] - 8008652: 2b00 cmp r3, #0 - 8008654: d009 beq.n 800866a - 8008656: 687b ldr r3, [r7, #4] - 8008658: 699b ldr r3, [r3, #24] - 800865a: f5b3 2f80 cmp.w r3, #262144 @ 0x40000 - 800865e: d004 beq.n 800866a - 8008660: f44f 71a2 mov.w r1, #324 @ 0x144 - 8008664: 484c ldr r0, [pc, #304] @ (8008798 ) - 8008666: f7fa fd85 bl 8003174 + 8008898: 687b ldr r3, [r7, #4] + 800889a: 699b ldr r3, [r3, #24] + 800889c: f5b3 7f00 cmp.w r3, #512 @ 0x200 + 80088a0: d00d beq.n 80088be + 80088a2: 687b ldr r3, [r7, #4] + 80088a4: 699b ldr r3, [r3, #24] + 80088a6: 2b00 cmp r3, #0 + 80088a8: d009 beq.n 80088be + 80088aa: 687b ldr r3, [r7, #4] + 80088ac: 699b ldr r3, [r3, #24] + 80088ae: f5b3 2f80 cmp.w r3, #262144 @ 0x40000 + 80088b2: d004 beq.n 80088be + 80088b4: f44f 71a2 mov.w r1, #324 @ 0x144 + 80088b8: 484c ldr r0, [pc, #304] @ (80089ec ) + 80088ba: f7fa fcb7 bl 800322c assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); - 800866a: 687b ldr r3, [r7, #4] - 800866c: 69db ldr r3, [r3, #28] - 800866e: 2b00 cmp r3, #0 - 8008670: d020 beq.n 80086b4 - 8008672: 687b ldr r3, [r7, #4] - 8008674: 69db ldr r3, [r3, #28] - 8008676: 2b08 cmp r3, #8 - 8008678: d01c beq.n 80086b4 - 800867a: 687b ldr r3, [r7, #4] - 800867c: 69db ldr r3, [r3, #28] - 800867e: 2b10 cmp r3, #16 - 8008680: d018 beq.n 80086b4 - 8008682: 687b ldr r3, [r7, #4] - 8008684: 69db ldr r3, [r3, #28] - 8008686: 2b18 cmp r3, #24 - 8008688: d014 beq.n 80086b4 - 800868a: 687b ldr r3, [r7, #4] - 800868c: 69db ldr r3, [r3, #28] - 800868e: 2b20 cmp r3, #32 - 8008690: d010 beq.n 80086b4 - 8008692: 687b ldr r3, [r7, #4] - 8008694: 69db ldr r3, [r3, #28] - 8008696: 2b28 cmp r3, #40 @ 0x28 - 8008698: d00c beq.n 80086b4 - 800869a: 687b ldr r3, [r7, #4] - 800869c: 69db ldr r3, [r3, #28] - 800869e: 2b30 cmp r3, #48 @ 0x30 - 80086a0: d008 beq.n 80086b4 - 80086a2: 687b ldr r3, [r7, #4] - 80086a4: 69db ldr r3, [r3, #28] - 80086a6: 2b38 cmp r3, #56 @ 0x38 - 80086a8: d004 beq.n 80086b4 - 80086aa: f240 1145 movw r1, #325 @ 0x145 - 80086ae: 483a ldr r0, [pc, #232] @ (8008798 ) - 80086b0: f7fa fd60 bl 8003174 + 80088be: 687b ldr r3, [r7, #4] + 80088c0: 69db ldr r3, [r3, #28] + 80088c2: 2b00 cmp r3, #0 + 80088c4: d020 beq.n 8008908 + 80088c6: 687b ldr r3, [r7, #4] + 80088c8: 69db ldr r3, [r3, #28] + 80088ca: 2b08 cmp r3, #8 + 80088cc: d01c beq.n 8008908 + 80088ce: 687b ldr r3, [r7, #4] + 80088d0: 69db ldr r3, [r3, #28] + 80088d2: 2b10 cmp r3, #16 + 80088d4: d018 beq.n 8008908 + 80088d6: 687b ldr r3, [r7, #4] + 80088d8: 69db ldr r3, [r3, #28] + 80088da: 2b18 cmp r3, #24 + 80088dc: d014 beq.n 8008908 + 80088de: 687b ldr r3, [r7, #4] + 80088e0: 69db ldr r3, [r3, #28] + 80088e2: 2b20 cmp r3, #32 + 80088e4: d010 beq.n 8008908 + 80088e6: 687b ldr r3, [r7, #4] + 80088e8: 69db ldr r3, [r3, #28] + 80088ea: 2b28 cmp r3, #40 @ 0x28 + 80088ec: d00c beq.n 8008908 + 80088ee: 687b ldr r3, [r7, #4] + 80088f0: 69db ldr r3, [r3, #28] + 80088f2: 2b30 cmp r3, #48 @ 0x30 + 80088f4: d008 beq.n 8008908 + 80088f6: 687b ldr r3, [r7, #4] + 80088f8: 69db ldr r3, [r3, #28] + 80088fa: 2b38 cmp r3, #56 @ 0x38 + 80088fc: d004 beq.n 8008908 + 80088fe: f240 1145 movw r1, #325 @ 0x145 + 8008902: 483a ldr r0, [pc, #232] @ (80089ec ) + 8008904: f7fa fc92 bl 800322c assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); - 80086b4: 687b ldr r3, [r7, #4] - 80086b6: 6a1b ldr r3, [r3, #32] - 80086b8: 2b00 cmp r3, #0 - 80086ba: d008 beq.n 80086ce - 80086bc: 687b ldr r3, [r7, #4] - 80086be: 6a1b ldr r3, [r3, #32] - 80086c0: 2b80 cmp r3, #128 @ 0x80 - 80086c2: d004 beq.n 80086ce - 80086c4: f44f 71a3 mov.w r1, #326 @ 0x146 - 80086c8: 4833 ldr r0, [pc, #204] @ (8008798 ) - 80086ca: f7fa fd53 bl 8003174 + 8008908: 687b ldr r3, [r7, #4] + 800890a: 6a1b ldr r3, [r3, #32] + 800890c: 2b00 cmp r3, #0 + 800890e: d008 beq.n 8008922 + 8008910: 687b ldr r3, [r7, #4] + 8008912: 6a1b ldr r3, [r3, #32] + 8008914: 2b80 cmp r3, #128 @ 0x80 + 8008916: d004 beq.n 8008922 + 8008918: f44f 71a3 mov.w r1, #326 @ 0x146 + 800891c: 4833 ldr r0, [pc, #204] @ (80089ec ) + 800891e: f7fa fc85 bl 800322c assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); - 80086ce: 687b ldr r3, [r7, #4] - 80086d0: 6a5b ldr r3, [r3, #36] @ 0x24 - 80086d2: 2b00 cmp r3, #0 - 80086d4: d008 beq.n 80086e8 - 80086d6: 687b ldr r3, [r7, #4] - 80086d8: 6a5b ldr r3, [r3, #36] @ 0x24 - 80086da: 2b10 cmp r3, #16 - 80086dc: d004 beq.n 80086e8 - 80086de: f240 1147 movw r1, #327 @ 0x147 - 80086e2: 482d ldr r0, [pc, #180] @ (8008798 ) - 80086e4: f7fa fd46 bl 8003174 + 8008922: 687b ldr r3, [r7, #4] + 8008924: 6a5b ldr r3, [r3, #36] @ 0x24 + 8008926: 2b00 cmp r3, #0 + 8008928: d008 beq.n 800893c + 800892a: 687b ldr r3, [r7, #4] + 800892c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800892e: 2b10 cmp r3, #16 + 8008930: d004 beq.n 800893c + 8008932: f240 1147 movw r1, #327 @ 0x147 + 8008936: 482d ldr r0, [pc, #180] @ (80089ec ) + 8008938: f7fa fc78 bl 800322c if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) - 80086e8: 687b ldr r3, [r7, #4] - 80086ea: 6a5b ldr r3, [r3, #36] @ 0x24 - 80086ec: 2b00 cmp r3, #0 - 80086ee: d155 bne.n 800879c + 800893c: 687b ldr r3, [r7, #4] + 800893e: 6a5b ldr r3, [r3, #36] @ 0x24 + 8008940: 2b00 cmp r3, #0 + 8008942: d155 bne.n 80089f0 { assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); - 80086f0: 687b ldr r3, [r7, #4] - 80086f2: 691b ldr r3, [r3, #16] - 80086f4: 2b00 cmp r3, #0 - 80086f6: d008 beq.n 800870a - 80086f8: 687b ldr r3, [r7, #4] - 80086fa: 691b ldr r3, [r3, #16] - 80086fc: 2b02 cmp r3, #2 - 80086fe: d004 beq.n 800870a - 8008700: f44f 71a5 mov.w r1, #330 @ 0x14a - 8008704: 4824 ldr r0, [pc, #144] @ (8008798 ) - 8008706: f7fa fd35 bl 8003174 + 8008944: 687b ldr r3, [r7, #4] + 8008946: 691b ldr r3, [r3, #16] + 8008948: 2b00 cmp r3, #0 + 800894a: d008 beq.n 800895e + 800894c: 687b ldr r3, [r7, #4] + 800894e: 691b ldr r3, [r3, #16] + 8008950: 2b02 cmp r3, #2 + 8008952: d004 beq.n 800895e + 8008954: f44f 71a5 mov.w r1, #330 @ 0x14a + 8008958: 4824 ldr r0, [pc, #144] @ (80089ec ) + 800895a: f7fa fc67 bl 800322c assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); - 800870a: 687b ldr r3, [r7, #4] - 800870c: 695b ldr r3, [r3, #20] - 800870e: 2b00 cmp r3, #0 - 8008710: d008 beq.n 8008724 - 8008712: 687b ldr r3, [r7, #4] - 8008714: 695b ldr r3, [r3, #20] - 8008716: 2b01 cmp r3, #1 - 8008718: d004 beq.n 8008724 - 800871a: f240 114b movw r1, #331 @ 0x14b - 800871e: 481e ldr r0, [pc, #120] @ (8008798 ) - 8008720: f7fa fd28 bl 8003174 + 800895e: 687b ldr r3, [r7, #4] + 8008960: 695b ldr r3, [r3, #20] + 8008962: 2b00 cmp r3, #0 + 8008964: d008 beq.n 8008978 + 8008966: 687b ldr r3, [r7, #4] + 8008968: 695b ldr r3, [r3, #20] + 800896a: 2b01 cmp r3, #1 + 800896c: d004 beq.n 8008978 + 800896e: f240 114b movw r1, #331 @ 0x14b + 8008972: 481e ldr r0, [pc, #120] @ (80089ec ) + 8008974: f7fa fc5a bl 800322c if (hspi->Init.Mode == SPI_MODE_MASTER) - 8008724: 687b ldr r3, [r7, #4] - 8008726: 685b ldr r3, [r3, #4] - 8008728: f5b3 7f82 cmp.w r3, #260 @ 0x104 - 800872c: d125 bne.n 800877a + 8008978: 687b ldr r3, [r7, #4] + 800897a: 685b ldr r3, [r3, #4] + 800897c: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8008980: d125 bne.n 80089ce { assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); - 800872e: 687b ldr r3, [r7, #4] - 8008730: 69db ldr r3, [r3, #28] - 8008732: 2b00 cmp r3, #0 - 8008734: d05d beq.n 80087f2 - 8008736: 687b ldr r3, [r7, #4] - 8008738: 69db ldr r3, [r3, #28] - 800873a: 2b08 cmp r3, #8 - 800873c: d059 beq.n 80087f2 - 800873e: 687b ldr r3, [r7, #4] - 8008740: 69db ldr r3, [r3, #28] - 8008742: 2b10 cmp r3, #16 - 8008744: d055 beq.n 80087f2 - 8008746: 687b ldr r3, [r7, #4] - 8008748: 69db ldr r3, [r3, #28] - 800874a: 2b18 cmp r3, #24 - 800874c: d051 beq.n 80087f2 - 800874e: 687b ldr r3, [r7, #4] - 8008750: 69db ldr r3, [r3, #28] - 8008752: 2b20 cmp r3, #32 - 8008754: d04d beq.n 80087f2 - 8008756: 687b ldr r3, [r7, #4] - 8008758: 69db ldr r3, [r3, #28] - 800875a: 2b28 cmp r3, #40 @ 0x28 - 800875c: d049 beq.n 80087f2 - 800875e: 687b ldr r3, [r7, #4] - 8008760: 69db ldr r3, [r3, #28] - 8008762: 2b30 cmp r3, #48 @ 0x30 - 8008764: d045 beq.n 80087f2 - 8008766: 687b ldr r3, [r7, #4] - 8008768: 69db ldr r3, [r3, #28] - 800876a: 2b38 cmp r3, #56 @ 0x38 - 800876c: d041 beq.n 80087f2 - 800876e: f240 114f movw r1, #335 @ 0x14f - 8008772: 4809 ldr r0, [pc, #36] @ (8008798 ) - 8008774: f7fa fcfe bl 8003174 - 8008778: e03b b.n 80087f2 + 8008982: 687b ldr r3, [r7, #4] + 8008984: 69db ldr r3, [r3, #28] + 8008986: 2b00 cmp r3, #0 + 8008988: d05d beq.n 8008a46 + 800898a: 687b ldr r3, [r7, #4] + 800898c: 69db ldr r3, [r3, #28] + 800898e: 2b08 cmp r3, #8 + 8008990: d059 beq.n 8008a46 + 8008992: 687b ldr r3, [r7, #4] + 8008994: 69db ldr r3, [r3, #28] + 8008996: 2b10 cmp r3, #16 + 8008998: d055 beq.n 8008a46 + 800899a: 687b ldr r3, [r7, #4] + 800899c: 69db ldr r3, [r3, #28] + 800899e: 2b18 cmp r3, #24 + 80089a0: d051 beq.n 8008a46 + 80089a2: 687b ldr r3, [r7, #4] + 80089a4: 69db ldr r3, [r3, #28] + 80089a6: 2b20 cmp r3, #32 + 80089a8: d04d beq.n 8008a46 + 80089aa: 687b ldr r3, [r7, #4] + 80089ac: 69db ldr r3, [r3, #28] + 80089ae: 2b28 cmp r3, #40 @ 0x28 + 80089b0: d049 beq.n 8008a46 + 80089b2: 687b ldr r3, [r7, #4] + 80089b4: 69db ldr r3, [r3, #28] + 80089b6: 2b30 cmp r3, #48 @ 0x30 + 80089b8: d045 beq.n 8008a46 + 80089ba: 687b ldr r3, [r7, #4] + 80089bc: 69db ldr r3, [r3, #28] + 80089be: 2b38 cmp r3, #56 @ 0x38 + 80089c0: d041 beq.n 8008a46 + 80089c2: f240 114f movw r1, #335 @ 0x14f + 80089c6: 4809 ldr r0, [pc, #36] @ (80089ec ) + 80089c8: f7fa fc30 bl 800322c + 80089cc: e03b b.n 8008a46 } else { /* Baudrate prescaler not use in Motoraola Slave mode. force to default value */ hspi->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; - 800877a: 687b ldr r3, [r7, #4] - 800877c: 2200 movs r2, #0 - 800877e: 61da str r2, [r3, #28] - 8008780: e037 b.n 80087f2 - 8008782: bf00 nop - 8008784: 40013000 .word 0x40013000 - 8008788: 40003800 .word 0x40003800 - 800878c: 40003c00 .word 0x40003c00 - 8008790: 40013400 .word 0x40013400 - 8008794: 40015000 .word 0x40015000 - 8008798: 0800e8d0 .word 0x0800e8d0 + 80089ce: 687b ldr r3, [r7, #4] + 80089d0: 2200 movs r2, #0 + 80089d2: 61da str r2, [r3, #28] + 80089d4: e037 b.n 8008a46 + 80089d6: bf00 nop + 80089d8: 40013000 .word 0x40013000 + 80089dc: 40003800 .word 0x40003800 + 80089e0: 40003c00 .word 0x40003c00 + 80089e4: 40013400 .word 0x40013400 + 80089e8: 40015000 .word 0x40015000 + 80089ec: 0800ee40 .word 0x0800ee40 } } else { assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); - 800879c: 687b ldr r3, [r7, #4] - 800879e: 69db ldr r3, [r3, #28] - 80087a0: 2b00 cmp r3, #0 - 80087a2: d020 beq.n 80087e6 - 80087a4: 687b ldr r3, [r7, #4] - 80087a6: 69db ldr r3, [r3, #28] - 80087a8: 2b08 cmp r3, #8 - 80087aa: d01c beq.n 80087e6 - 80087ac: 687b ldr r3, [r7, #4] - 80087ae: 69db ldr r3, [r3, #28] - 80087b0: 2b10 cmp r3, #16 - 80087b2: d018 beq.n 80087e6 - 80087b4: 687b ldr r3, [r7, #4] - 80087b6: 69db ldr r3, [r3, #28] - 80087b8: 2b18 cmp r3, #24 - 80087ba: d014 beq.n 80087e6 - 80087bc: 687b ldr r3, [r7, #4] - 80087be: 69db ldr r3, [r3, #28] - 80087c0: 2b20 cmp r3, #32 - 80087c2: d010 beq.n 80087e6 - 80087c4: 687b ldr r3, [r7, #4] - 80087c6: 69db ldr r3, [r3, #28] - 80087c8: 2b28 cmp r3, #40 @ 0x28 - 80087ca: d00c beq.n 80087e6 - 80087cc: 687b ldr r3, [r7, #4] - 80087ce: 69db ldr r3, [r3, #28] - 80087d0: 2b30 cmp r3, #48 @ 0x30 - 80087d2: d008 beq.n 80087e6 - 80087d4: 687b ldr r3, [r7, #4] - 80087d6: 69db ldr r3, [r3, #28] - 80087d8: 2b38 cmp r3, #56 @ 0x38 - 80087da: d004 beq.n 80087e6 - 80087dc: f240 1159 movw r1, #345 @ 0x159 - 80087e0: 483a ldr r0, [pc, #232] @ (80088cc ) - 80087e2: f7fa fcc7 bl 8003174 + 80089f0: 687b ldr r3, [r7, #4] + 80089f2: 69db ldr r3, [r3, #28] + 80089f4: 2b00 cmp r3, #0 + 80089f6: d020 beq.n 8008a3a + 80089f8: 687b ldr r3, [r7, #4] + 80089fa: 69db ldr r3, [r3, #28] + 80089fc: 2b08 cmp r3, #8 + 80089fe: d01c beq.n 8008a3a + 8008a00: 687b ldr r3, [r7, #4] + 8008a02: 69db ldr r3, [r3, #28] + 8008a04: 2b10 cmp r3, #16 + 8008a06: d018 beq.n 8008a3a + 8008a08: 687b ldr r3, [r7, #4] + 8008a0a: 69db ldr r3, [r3, #28] + 8008a0c: 2b18 cmp r3, #24 + 8008a0e: d014 beq.n 8008a3a + 8008a10: 687b ldr r3, [r7, #4] + 8008a12: 69db ldr r3, [r3, #28] + 8008a14: 2b20 cmp r3, #32 + 8008a16: d010 beq.n 8008a3a + 8008a18: 687b ldr r3, [r7, #4] + 8008a1a: 69db ldr r3, [r3, #28] + 8008a1c: 2b28 cmp r3, #40 @ 0x28 + 8008a1e: d00c beq.n 8008a3a + 8008a20: 687b ldr r3, [r7, #4] + 8008a22: 69db ldr r3, [r3, #28] + 8008a24: 2b30 cmp r3, #48 @ 0x30 + 8008a26: d008 beq.n 8008a3a + 8008a28: 687b ldr r3, [r7, #4] + 8008a2a: 69db ldr r3, [r3, #28] + 8008a2c: 2b38 cmp r3, #56 @ 0x38 + 8008a2e: d004 beq.n 8008a3a + 8008a30: f240 1159 movw r1, #345 @ 0x159 + 8008a34: 483a ldr r0, [pc, #232] @ (8008b20 ) + 8008a36: f7fa fbf9 bl 800322c /* Force polarity and phase to TI protocaol requirements */ hspi->Init.CLKPolarity = SPI_POLARITY_LOW; - 80087e6: 687b ldr r3, [r7, #4] - 80087e8: 2200 movs r2, #0 - 80087ea: 611a str r2, [r3, #16] + 8008a3a: 687b ldr r3, [r7, #4] + 8008a3c: 2200 movs r2, #0 + 8008a3e: 611a str r2, [r3, #16] hspi->Init.CLKPhase = SPI_PHASE_1EDGE; - 80087ec: 687b ldr r3, [r7, #4] - 80087ee: 2200 movs r2, #0 - 80087f0: 615a str r2, [r3, #20] + 8008a40: 687b ldr r3, [r7, #4] + 8008a42: 2200 movs r2, #0 + 8008a44: 615a str r2, [r3, #20] if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) { assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); } #else hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; - 80087f2: 687b ldr r3, [r7, #4] - 80087f4: 2200 movs r2, #0 - 80087f6: 629a str r2, [r3, #40] @ 0x28 + 8008a46: 687b ldr r3, [r7, #4] + 8008a48: 2200 movs r2, #0 + 8008a4a: 629a str r2, [r3, #40] @ 0x28 #endif /* USE_SPI_CRC */ if (hspi->State == HAL_SPI_STATE_RESET) - 80087f8: 687b ldr r3, [r7, #4] - 80087fa: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 - 80087fe: b2db uxtb r3, r3 - 8008800: 2b00 cmp r3, #0 - 8008802: d106 bne.n 8008812 + 8008a4c: 687b ldr r3, [r7, #4] + 8008a4e: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 + 8008a52: b2db uxtb r3, r3 + 8008a54: 2b00 cmp r3, #0 + 8008a56: d106 bne.n 8008a66 { /* Allocate lock resource and initialize it */ hspi->Lock = HAL_UNLOCKED; - 8008804: 687b ldr r3, [r7, #4] - 8008806: 2200 movs r2, #0 - 8008808: f883 2050 strb.w r2, [r3, #80] @ 0x50 + 8008a58: 687b ldr r3, [r7, #4] + 8008a5a: 2200 movs r2, #0 + 8008a5c: f883 2050 strb.w r2, [r3, #80] @ 0x50 /* Init the low level hardware : GPIO, CLOCK, NVIC... */ hspi->MspInitCallback(hspi); #else /* Init the low level hardware : GPIO, CLOCK, NVIC... */ HAL_SPI_MspInit(hspi); - 800880c: 6878 ldr r0, [r7, #4] - 800880e: f7fb fb8d bl 8003f2c + 8008a60: 6878 ldr r0, [r7, #4] + 8008a62: f7fb fafb bl 800405c #endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ } hspi->State = HAL_SPI_STATE_BUSY; - 8008812: 687b ldr r3, [r7, #4] - 8008814: 2202 movs r2, #2 - 8008816: f883 2051 strb.w r2, [r3, #81] @ 0x51 + 8008a66: 687b ldr r3, [r7, #4] + 8008a68: 2202 movs r2, #2 + 8008a6a: f883 2051 strb.w r2, [r3, #81] @ 0x51 /* Disable the selected SPI peripheral */ __HAL_SPI_DISABLE(hspi); - 800881a: 687b ldr r3, [r7, #4] - 800881c: 681b ldr r3, [r3, #0] - 800881e: 681a ldr r2, [r3, #0] - 8008820: 687b ldr r3, [r7, #4] - 8008822: 681b ldr r3, [r3, #0] - 8008824: f022 0240 bic.w r2, r2, #64 @ 0x40 - 8008828: 601a str r2, [r3, #0] + 8008a6e: 687b ldr r3, [r7, #4] + 8008a70: 681b ldr r3, [r3, #0] + 8008a72: 681a ldr r2, [r3, #0] + 8008a74: 687b ldr r3, [r7, #4] + 8008a76: 681b ldr r3, [r3, #0] + 8008a78: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8008a7c: 601a str r2, [r3, #0] /*----------------------- SPIx CR1 & CR2 Configuration ---------------------*/ /* Configure : SPI Mode, Communication Mode, Data size, Clock polarity and phase, NSS management, Communication speed, First bit and CRC calculation state */ WRITE_REG(hspi->Instance->CR1, ((hspi->Init.Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) | - 800882a: 687b ldr r3, [r7, #4] - 800882c: 685b ldr r3, [r3, #4] - 800882e: f403 7282 and.w r2, r3, #260 @ 0x104 - 8008832: 687b ldr r3, [r7, #4] - 8008834: 689b ldr r3, [r3, #8] - 8008836: f403 4304 and.w r3, r3, #33792 @ 0x8400 - 800883a: 431a orrs r2, r3 - 800883c: 687b ldr r3, [r7, #4] - 800883e: 68db ldr r3, [r3, #12] - 8008840: f403 6300 and.w r3, r3, #2048 @ 0x800 - 8008844: 431a orrs r2, r3 - 8008846: 687b ldr r3, [r7, #4] - 8008848: 691b ldr r3, [r3, #16] - 800884a: f003 0302 and.w r3, r3, #2 - 800884e: 431a orrs r2, r3 - 8008850: 687b ldr r3, [r7, #4] - 8008852: 695b ldr r3, [r3, #20] - 8008854: f003 0301 and.w r3, r3, #1 - 8008858: 431a orrs r2, r3 - 800885a: 687b ldr r3, [r7, #4] - 800885c: 699b ldr r3, [r3, #24] - 800885e: f403 7300 and.w r3, r3, #512 @ 0x200 - 8008862: 431a orrs r2, r3 - 8008864: 687b ldr r3, [r7, #4] - 8008866: 69db ldr r3, [r3, #28] - 8008868: f003 0338 and.w r3, r3, #56 @ 0x38 - 800886c: 431a orrs r2, r3 - 800886e: 687b ldr r3, [r7, #4] - 8008870: 6a1b ldr r3, [r3, #32] - 8008872: f003 0380 and.w r3, r3, #128 @ 0x80 - 8008876: ea42 0103 orr.w r1, r2, r3 - 800887a: 687b ldr r3, [r7, #4] - 800887c: 6a9b ldr r3, [r3, #40] @ 0x28 - 800887e: f403 5200 and.w r2, r3, #8192 @ 0x2000 - 8008882: 687b ldr r3, [r7, #4] - 8008884: 681b ldr r3, [r3, #0] - 8008886: 430a orrs r2, r1 - 8008888: 601a str r2, [r3, #0] + 8008a7e: 687b ldr r3, [r7, #4] + 8008a80: 685b ldr r3, [r3, #4] + 8008a82: f403 7282 and.w r2, r3, #260 @ 0x104 + 8008a86: 687b ldr r3, [r7, #4] + 8008a88: 689b ldr r3, [r3, #8] + 8008a8a: f403 4304 and.w r3, r3, #33792 @ 0x8400 + 8008a8e: 431a orrs r2, r3 + 8008a90: 687b ldr r3, [r7, #4] + 8008a92: 68db ldr r3, [r3, #12] + 8008a94: f403 6300 and.w r3, r3, #2048 @ 0x800 + 8008a98: 431a orrs r2, r3 + 8008a9a: 687b ldr r3, [r7, #4] + 8008a9c: 691b ldr r3, [r3, #16] + 8008a9e: f003 0302 and.w r3, r3, #2 + 8008aa2: 431a orrs r2, r3 + 8008aa4: 687b ldr r3, [r7, #4] + 8008aa6: 695b ldr r3, [r3, #20] + 8008aa8: f003 0301 and.w r3, r3, #1 + 8008aac: 431a orrs r2, r3 + 8008aae: 687b ldr r3, [r7, #4] + 8008ab0: 699b ldr r3, [r3, #24] + 8008ab2: f403 7300 and.w r3, r3, #512 @ 0x200 + 8008ab6: 431a orrs r2, r3 + 8008ab8: 687b ldr r3, [r7, #4] + 8008aba: 69db ldr r3, [r3, #28] + 8008abc: f003 0338 and.w r3, r3, #56 @ 0x38 + 8008ac0: 431a orrs r2, r3 + 8008ac2: 687b ldr r3, [r7, #4] + 8008ac4: 6a1b ldr r3, [r3, #32] + 8008ac6: f003 0380 and.w r3, r3, #128 @ 0x80 + 8008aca: ea42 0103 orr.w r1, r2, r3 + 8008ace: 687b ldr r3, [r7, #4] + 8008ad0: 6a9b ldr r3, [r3, #40] @ 0x28 + 8008ad2: f403 5200 and.w r2, r3, #8192 @ 0x2000 + 8008ad6: 687b ldr r3, [r7, #4] + 8008ad8: 681b ldr r3, [r3, #0] + 8008ada: 430a orrs r2, r1 + 8008adc: 601a str r2, [r3, #0] (hspi->Init.BaudRatePrescaler & SPI_CR1_BR_Msk) | (hspi->Init.FirstBit & SPI_CR1_LSBFIRST) | (hspi->Init.CRCCalculation & SPI_CR1_CRCEN))); /* Configure : NSS management, TI Mode */ WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | (hspi->Init.TIMode & SPI_CR2_FRF))); - 800888a: 687b ldr r3, [r7, #4] - 800888c: 699b ldr r3, [r3, #24] - 800888e: 0c1b lsrs r3, r3, #16 - 8008890: f003 0104 and.w r1, r3, #4 - 8008894: 687b ldr r3, [r7, #4] - 8008896: 6a5b ldr r3, [r3, #36] @ 0x24 - 8008898: f003 0210 and.w r2, r3, #16 - 800889c: 687b ldr r3, [r7, #4] - 800889e: 681b ldr r3, [r3, #0] - 80088a0: 430a orrs r2, r1 - 80088a2: 605a str r2, [r3, #4] + 8008ade: 687b ldr r3, [r7, #4] + 8008ae0: 699b ldr r3, [r3, #24] + 8008ae2: 0c1b lsrs r3, r3, #16 + 8008ae4: f003 0104 and.w r1, r3, #4 + 8008ae8: 687b ldr r3, [r7, #4] + 8008aea: 6a5b ldr r3, [r3, #36] @ 0x24 + 8008aec: f003 0210 and.w r2, r3, #16 + 8008af0: 687b ldr r3, [r7, #4] + 8008af2: 681b ldr r3, [r3, #0] + 8008af4: 430a orrs r2, r1 + 8008af6: 605a str r2, [r3, #4] } #endif /* USE_SPI_CRC */ #if defined(SPI_I2SCFGR_I2SMOD) /* Activate the SPI mode (Make sure that I2SMOD bit in I2SCFGR register is reset) */ CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); - 80088a4: 687b ldr r3, [r7, #4] - 80088a6: 681b ldr r3, [r3, #0] - 80088a8: 69da ldr r2, [r3, #28] - 80088aa: 687b ldr r3, [r7, #4] - 80088ac: 681b ldr r3, [r3, #0] - 80088ae: f422 6200 bic.w r2, r2, #2048 @ 0x800 - 80088b2: 61da str r2, [r3, #28] + 8008af8: 687b ldr r3, [r7, #4] + 8008afa: 681b ldr r3, [r3, #0] + 8008afc: 69da ldr r2, [r3, #28] + 8008afe: 687b ldr r3, [r7, #4] + 8008b00: 681b ldr r3, [r3, #0] + 8008b02: f422 6200 bic.w r2, r2, #2048 @ 0x800 + 8008b06: 61da str r2, [r3, #28] #endif /* SPI_I2SCFGR_I2SMOD */ hspi->ErrorCode = HAL_SPI_ERROR_NONE; - 80088b4: 687b ldr r3, [r7, #4] - 80088b6: 2200 movs r2, #0 - 80088b8: 655a str r2, [r3, #84] @ 0x54 + 8008b08: 687b ldr r3, [r7, #4] + 8008b0a: 2200 movs r2, #0 + 8008b0c: 655a str r2, [r3, #84] @ 0x54 hspi->State = HAL_SPI_STATE_READY; - 80088ba: 687b ldr r3, [r7, #4] - 80088bc: 2201 movs r2, #1 - 80088be: f883 2051 strb.w r2, [r3, #81] @ 0x51 + 8008b0e: 687b ldr r3, [r7, #4] + 8008b10: 2201 movs r2, #1 + 8008b12: f883 2051 strb.w r2, [r3, #81] @ 0x51 return HAL_OK; - 80088c2: 2300 movs r3, #0 + 8008b16: 2300 movs r3, #0 } - 80088c4: 4618 mov r0, r3 - 80088c6: 3708 adds r7, #8 - 80088c8: 46bd mov sp, r7 - 80088ca: bd80 pop {r7, pc} - 80088cc: 0800e8d0 .word 0x0800e8d0 + 8008b18: 4618 mov r0, r3 + 8008b1a: 3708 adds r7, #8 + 8008b1c: 46bd mov sp, r7 + 8008b1e: bd80 pop {r7, pc} + 8008b20: 0800ee40 .word 0x0800ee40 -080088d0 : +08008b24 : * @param Size amount of data to be sent * @param Timeout Timeout duration * @retval HAL status */ HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout) { - 80088d0: b580 push {r7, lr} - 80088d2: b088 sub sp, #32 - 80088d4: af00 add r7, sp, #0 - 80088d6: 60f8 str r0, [r7, #12] - 80088d8: 60b9 str r1, [r7, #8] - 80088da: 603b str r3, [r7, #0] - 80088dc: 4613 mov r3, r2 - 80088de: 80fb strh r3, [r7, #6] + 8008b24: b580 push {r7, lr} + 8008b26: b088 sub sp, #32 + 8008b28: af00 add r7, sp, #0 + 8008b2a: 60f8 str r0, [r7, #12] + 8008b2c: 60b9 str r1, [r7, #8] + 8008b2e: 603b str r3, [r7, #0] + 8008b30: 4613 mov r3, r2 + 8008b32: 80fb strh r3, [r7, #6] uint32_t tickstart; HAL_StatusTypeDef errorcode = HAL_OK; - 80088e0: 2300 movs r3, #0 - 80088e2: 77fb strb r3, [r7, #31] + 8008b34: 2300 movs r3, #0 + 8008b36: 77fb strb r3, [r7, #31] uint16_t initial_TxXferCount; /* Check Direction parameter */ assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); - 80088e4: 68fb ldr r3, [r7, #12] - 80088e6: 689b ldr r3, [r3, #8] - 80088e8: 2b00 cmp r3, #0 - 80088ea: d009 beq.n 8008900 - 80088ec: 68fb ldr r3, [r7, #12] - 80088ee: 689b ldr r3, [r3, #8] - 80088f0: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 - 80088f4: d004 beq.n 8008900 - 80088f6: f44f 7142 mov.w r1, #776 @ 0x308 - 80088fa: 4884 ldr r0, [pc, #528] @ (8008b0c ) - 80088fc: f7fa fc3a bl 8003174 + 8008b38: 68fb ldr r3, [r7, #12] + 8008b3a: 689b ldr r3, [r3, #8] + 8008b3c: 2b00 cmp r3, #0 + 8008b3e: d009 beq.n 8008b54 + 8008b40: 68fb ldr r3, [r7, #12] + 8008b42: 689b ldr r3, [r3, #8] + 8008b44: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 8008b48: d004 beq.n 8008b54 + 8008b4a: f44f 7142 mov.w r1, #776 @ 0x308 + 8008b4e: 4884 ldr r0, [pc, #528] @ (8008d60 ) + 8008b50: f7fa fb6c bl 800322c /* Process Locked */ __HAL_LOCK(hspi); - 8008900: 68fb ldr r3, [r7, #12] - 8008902: f893 3050 ldrb.w r3, [r3, #80] @ 0x50 - 8008906: 2b01 cmp r3, #1 - 8008908: d101 bne.n 800890e - 800890a: 2302 movs r3, #2 - 800890c: e12f b.n 8008b6e - 800890e: 68fb ldr r3, [r7, #12] - 8008910: 2201 movs r2, #1 - 8008912: f883 2050 strb.w r2, [r3, #80] @ 0x50 + 8008b54: 68fb ldr r3, [r7, #12] + 8008b56: f893 3050 ldrb.w r3, [r3, #80] @ 0x50 + 8008b5a: 2b01 cmp r3, #1 + 8008b5c: d101 bne.n 8008b62 + 8008b5e: 2302 movs r3, #2 + 8008b60: e12f b.n 8008dc2 + 8008b62: 68fb ldr r3, [r7, #12] + 8008b64: 2201 movs r2, #1 + 8008b66: f883 2050 strb.w r2, [r3, #80] @ 0x50 /* Init tickstart for timeout management*/ tickstart = HAL_GetTick(); - 8008916: f7fd f89b bl 8005a50 - 800891a: 61b8 str r0, [r7, #24] + 8008b6a: f7fd f89b bl 8005ca4 + 8008b6e: 61b8 str r0, [r7, #24] initial_TxXferCount = Size; - 800891c: 88fb ldrh r3, [r7, #6] - 800891e: 82fb strh r3, [r7, #22] + 8008b70: 88fb ldrh r3, [r7, #6] + 8008b72: 82fb strh r3, [r7, #22] if (hspi->State != HAL_SPI_STATE_READY) - 8008920: 68fb ldr r3, [r7, #12] - 8008922: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 - 8008926: b2db uxtb r3, r3 - 8008928: 2b01 cmp r3, #1 - 800892a: d002 beq.n 8008932 + 8008b74: 68fb ldr r3, [r7, #12] + 8008b76: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 + 8008b7a: b2db uxtb r3, r3 + 8008b7c: 2b01 cmp r3, #1 + 8008b7e: d002 beq.n 8008b86 { errorcode = HAL_BUSY; - 800892c: 2302 movs r3, #2 - 800892e: 77fb strb r3, [r7, #31] + 8008b80: 2302 movs r3, #2 + 8008b82: 77fb strb r3, [r7, #31] goto error; - 8008930: e118 b.n 8008b64 + 8008b84: e118 b.n 8008db8 } if ((pData == NULL) || (Size == 0U)) - 8008932: 68bb ldr r3, [r7, #8] - 8008934: 2b00 cmp r3, #0 - 8008936: d002 beq.n 800893e - 8008938: 88fb ldrh r3, [r7, #6] - 800893a: 2b00 cmp r3, #0 - 800893c: d102 bne.n 8008944 + 8008b86: 68bb ldr r3, [r7, #8] + 8008b88: 2b00 cmp r3, #0 + 8008b8a: d002 beq.n 8008b92 + 8008b8c: 88fb ldrh r3, [r7, #6] + 8008b8e: 2b00 cmp r3, #0 + 8008b90: d102 bne.n 8008b98 { errorcode = HAL_ERROR; - 800893e: 2301 movs r3, #1 - 8008940: 77fb strb r3, [r7, #31] + 8008b92: 2301 movs r3, #1 + 8008b94: 77fb strb r3, [r7, #31] goto error; - 8008942: e10f b.n 8008b64 + 8008b96: e10f b.n 8008db8 } /* Set the transaction information */ hspi->State = HAL_SPI_STATE_BUSY_TX; - 8008944: 68fb ldr r3, [r7, #12] - 8008946: 2203 movs r2, #3 - 8008948: f883 2051 strb.w r2, [r3, #81] @ 0x51 + 8008b98: 68fb ldr r3, [r7, #12] + 8008b9a: 2203 movs r2, #3 + 8008b9c: f883 2051 strb.w r2, [r3, #81] @ 0x51 hspi->ErrorCode = HAL_SPI_ERROR_NONE; - 800894c: 68fb ldr r3, [r7, #12] - 800894e: 2200 movs r2, #0 - 8008950: 655a str r2, [r3, #84] @ 0x54 + 8008ba0: 68fb ldr r3, [r7, #12] + 8008ba2: 2200 movs r2, #0 + 8008ba4: 655a str r2, [r3, #84] @ 0x54 hspi->pTxBuffPtr = (uint8_t *)pData; - 8008952: 68fb ldr r3, [r7, #12] - 8008954: 68ba ldr r2, [r7, #8] - 8008956: 631a str r2, [r3, #48] @ 0x30 + 8008ba6: 68fb ldr r3, [r7, #12] + 8008ba8: 68ba ldr r2, [r7, #8] + 8008baa: 631a str r2, [r3, #48] @ 0x30 hspi->TxXferSize = Size; - 8008958: 68fb ldr r3, [r7, #12] - 800895a: 88fa ldrh r2, [r7, #6] - 800895c: 869a strh r2, [r3, #52] @ 0x34 + 8008bac: 68fb ldr r3, [r7, #12] + 8008bae: 88fa ldrh r2, [r7, #6] + 8008bb0: 869a strh r2, [r3, #52] @ 0x34 hspi->TxXferCount = Size; - 800895e: 68fb ldr r3, [r7, #12] - 8008960: 88fa ldrh r2, [r7, #6] - 8008962: 86da strh r2, [r3, #54] @ 0x36 + 8008bb2: 68fb ldr r3, [r7, #12] + 8008bb4: 88fa ldrh r2, [r7, #6] + 8008bb6: 86da strh r2, [r3, #54] @ 0x36 /*Init field not used in handle to zero */ hspi->pRxBuffPtr = (uint8_t *)NULL; - 8008964: 68fb ldr r3, [r7, #12] - 8008966: 2200 movs r2, #0 - 8008968: 639a str r2, [r3, #56] @ 0x38 + 8008bb8: 68fb ldr r3, [r7, #12] + 8008bba: 2200 movs r2, #0 + 8008bbc: 639a str r2, [r3, #56] @ 0x38 hspi->RxXferSize = 0U; - 800896a: 68fb ldr r3, [r7, #12] - 800896c: 2200 movs r2, #0 - 800896e: 879a strh r2, [r3, #60] @ 0x3c + 8008bbe: 68fb ldr r3, [r7, #12] + 8008bc0: 2200 movs r2, #0 + 8008bc2: 879a strh r2, [r3, #60] @ 0x3c hspi->RxXferCount = 0U; - 8008970: 68fb ldr r3, [r7, #12] - 8008972: 2200 movs r2, #0 - 8008974: 87da strh r2, [r3, #62] @ 0x3e + 8008bc4: 68fb ldr r3, [r7, #12] + 8008bc6: 2200 movs r2, #0 + 8008bc8: 87da strh r2, [r3, #62] @ 0x3e hspi->TxISR = NULL; - 8008976: 68fb ldr r3, [r7, #12] - 8008978: 2200 movs r2, #0 - 800897a: 645a str r2, [r3, #68] @ 0x44 + 8008bca: 68fb ldr r3, [r7, #12] + 8008bcc: 2200 movs r2, #0 + 8008bce: 645a str r2, [r3, #68] @ 0x44 hspi->RxISR = NULL; - 800897c: 68fb ldr r3, [r7, #12] - 800897e: 2200 movs r2, #0 - 8008980: 641a str r2, [r3, #64] @ 0x40 + 8008bd0: 68fb ldr r3, [r7, #12] + 8008bd2: 2200 movs r2, #0 + 8008bd4: 641a str r2, [r3, #64] @ 0x40 /* Configure communication direction : 1Line */ if (hspi->Init.Direction == SPI_DIRECTION_1LINE) - 8008982: 68fb ldr r3, [r7, #12] - 8008984: 689b ldr r3, [r3, #8] - 8008986: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 - 800898a: d10f bne.n 80089ac + 8008bd6: 68fb ldr r3, [r7, #12] + 8008bd8: 689b ldr r3, [r3, #8] + 8008bda: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 8008bde: d10f bne.n 8008c00 { /* Disable SPI Peripheral before set 1Line direction (BIDIOE bit) */ __HAL_SPI_DISABLE(hspi); - 800898c: 68fb ldr r3, [r7, #12] - 800898e: 681b ldr r3, [r3, #0] - 8008990: 681a ldr r2, [r3, #0] - 8008992: 68fb ldr r3, [r7, #12] - 8008994: 681b ldr r3, [r3, #0] - 8008996: f022 0240 bic.w r2, r2, #64 @ 0x40 - 800899a: 601a str r2, [r3, #0] + 8008be0: 68fb ldr r3, [r7, #12] + 8008be2: 681b ldr r3, [r3, #0] + 8008be4: 681a ldr r2, [r3, #0] + 8008be6: 68fb ldr r3, [r7, #12] + 8008be8: 681b ldr r3, [r3, #0] + 8008bea: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8008bee: 601a str r2, [r3, #0] SPI_1LINE_TX(hspi); - 800899c: 68fb ldr r3, [r7, #12] - 800899e: 681b ldr r3, [r3, #0] - 80089a0: 681a ldr r2, [r3, #0] - 80089a2: 68fb ldr r3, [r7, #12] - 80089a4: 681b ldr r3, [r3, #0] - 80089a6: f442 4280 orr.w r2, r2, #16384 @ 0x4000 - 80089aa: 601a str r2, [r3, #0] + 8008bf0: 68fb ldr r3, [r7, #12] + 8008bf2: 681b ldr r3, [r3, #0] + 8008bf4: 681a ldr r2, [r3, #0] + 8008bf6: 68fb ldr r3, [r7, #12] + 8008bf8: 681b ldr r3, [r3, #0] + 8008bfa: f442 4280 orr.w r2, r2, #16384 @ 0x4000 + 8008bfe: 601a str r2, [r3, #0] SPI_RESET_CRC(hspi); } #endif /* USE_SPI_CRC */ /* Check if the SPI is already enabled */ if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) - 80089ac: 68fb ldr r3, [r7, #12] - 80089ae: 681b ldr r3, [r3, #0] - 80089b0: 681b ldr r3, [r3, #0] - 80089b2: f003 0340 and.w r3, r3, #64 @ 0x40 - 80089b6: 2b40 cmp r3, #64 @ 0x40 - 80089b8: d007 beq.n 80089ca + 8008c00: 68fb ldr r3, [r7, #12] + 8008c02: 681b ldr r3, [r3, #0] + 8008c04: 681b ldr r3, [r3, #0] + 8008c06: f003 0340 and.w r3, r3, #64 @ 0x40 + 8008c0a: 2b40 cmp r3, #64 @ 0x40 + 8008c0c: d007 beq.n 8008c1e { /* Enable SPI peripheral */ __HAL_SPI_ENABLE(hspi); - 80089ba: 68fb ldr r3, [r7, #12] - 80089bc: 681b ldr r3, [r3, #0] - 80089be: 681a ldr r2, [r3, #0] - 80089c0: 68fb ldr r3, [r7, #12] - 80089c2: 681b ldr r3, [r3, #0] - 80089c4: f042 0240 orr.w r2, r2, #64 @ 0x40 - 80089c8: 601a str r2, [r3, #0] + 8008c0e: 68fb ldr r3, [r7, #12] + 8008c10: 681b ldr r3, [r3, #0] + 8008c12: 681a ldr r2, [r3, #0] + 8008c14: 68fb ldr r3, [r7, #12] + 8008c16: 681b ldr r3, [r3, #0] + 8008c18: f042 0240 orr.w r2, r2, #64 @ 0x40 + 8008c1c: 601a str r2, [r3, #0] } /* Transmit data in 16 Bit mode */ if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) - 80089ca: 68fb ldr r3, [r7, #12] - 80089cc: 68db ldr r3, [r3, #12] - 80089ce: f5b3 6f00 cmp.w r3, #2048 @ 0x800 - 80089d2: d14f bne.n 8008a74 + 8008c1e: 68fb ldr r3, [r7, #12] + 8008c20: 68db ldr r3, [r3, #12] + 8008c22: f5b3 6f00 cmp.w r3, #2048 @ 0x800 + 8008c26: d14f bne.n 8008cc8 { if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) - 80089d4: 68fb ldr r3, [r7, #12] - 80089d6: 685b ldr r3, [r3, #4] - 80089d8: 2b00 cmp r3, #0 - 80089da: d002 beq.n 80089e2 - 80089dc: 8afb ldrh r3, [r7, #22] - 80089de: 2b01 cmp r3, #1 - 80089e0: d142 bne.n 8008a68 + 8008c28: 68fb ldr r3, [r7, #12] + 8008c2a: 685b ldr r3, [r3, #4] + 8008c2c: 2b00 cmp r3, #0 + 8008c2e: d002 beq.n 8008c36 + 8008c30: 8afb ldrh r3, [r7, #22] + 8008c32: 2b01 cmp r3, #1 + 8008c34: d142 bne.n 8008cbc { hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); - 80089e2: 68fb ldr r3, [r7, #12] - 80089e4: 6b1b ldr r3, [r3, #48] @ 0x30 - 80089e6: 881a ldrh r2, [r3, #0] - 80089e8: 68fb ldr r3, [r7, #12] - 80089ea: 681b ldr r3, [r3, #0] - 80089ec: 60da str r2, [r3, #12] + 8008c36: 68fb ldr r3, [r7, #12] + 8008c38: 6b1b ldr r3, [r3, #48] @ 0x30 + 8008c3a: 881a ldrh r2, [r3, #0] + 8008c3c: 68fb ldr r3, [r7, #12] + 8008c3e: 681b ldr r3, [r3, #0] + 8008c40: 60da str r2, [r3, #12] hspi->pTxBuffPtr += sizeof(uint16_t); - 80089ee: 68fb ldr r3, [r7, #12] - 80089f0: 6b1b ldr r3, [r3, #48] @ 0x30 - 80089f2: 1c9a adds r2, r3, #2 - 80089f4: 68fb ldr r3, [r7, #12] - 80089f6: 631a str r2, [r3, #48] @ 0x30 + 8008c42: 68fb ldr r3, [r7, #12] + 8008c44: 6b1b ldr r3, [r3, #48] @ 0x30 + 8008c46: 1c9a adds r2, r3, #2 + 8008c48: 68fb ldr r3, [r7, #12] + 8008c4a: 631a str r2, [r3, #48] @ 0x30 hspi->TxXferCount--; - 80089f8: 68fb ldr r3, [r7, #12] - 80089fa: 8edb ldrh r3, [r3, #54] @ 0x36 - 80089fc: b29b uxth r3, r3 - 80089fe: 3b01 subs r3, #1 - 8008a00: b29a uxth r2, r3 - 8008a02: 68fb ldr r3, [r7, #12] - 8008a04: 86da strh r2, [r3, #54] @ 0x36 + 8008c4c: 68fb ldr r3, [r7, #12] + 8008c4e: 8edb ldrh r3, [r3, #54] @ 0x36 + 8008c50: b29b uxth r3, r3 + 8008c52: 3b01 subs r3, #1 + 8008c54: b29a uxth r2, r3 + 8008c56: 68fb ldr r3, [r7, #12] + 8008c58: 86da strh r2, [r3, #54] @ 0x36 } /* Transmit data in 16 Bit mode */ while (hspi->TxXferCount > 0U) - 8008a06: e02f b.n 8008a68 + 8008c5a: e02f b.n 8008cbc { /* Wait until TXE flag is set to send data */ if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) - 8008a08: 68fb ldr r3, [r7, #12] - 8008a0a: 681b ldr r3, [r3, #0] - 8008a0c: 689b ldr r3, [r3, #8] - 8008a0e: f003 0302 and.w r3, r3, #2 - 8008a12: 2b02 cmp r3, #2 - 8008a14: d112 bne.n 8008a3c + 8008c5c: 68fb ldr r3, [r7, #12] + 8008c5e: 681b ldr r3, [r3, #0] + 8008c60: 689b ldr r3, [r3, #8] + 8008c62: f003 0302 and.w r3, r3, #2 + 8008c66: 2b02 cmp r3, #2 + 8008c68: d112 bne.n 8008c90 { hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); - 8008a16: 68fb ldr r3, [r7, #12] - 8008a18: 6b1b ldr r3, [r3, #48] @ 0x30 - 8008a1a: 881a ldrh r2, [r3, #0] - 8008a1c: 68fb ldr r3, [r7, #12] - 8008a1e: 681b ldr r3, [r3, #0] - 8008a20: 60da str r2, [r3, #12] + 8008c6a: 68fb ldr r3, [r7, #12] + 8008c6c: 6b1b ldr r3, [r3, #48] @ 0x30 + 8008c6e: 881a ldrh r2, [r3, #0] + 8008c70: 68fb ldr r3, [r7, #12] + 8008c72: 681b ldr r3, [r3, #0] + 8008c74: 60da str r2, [r3, #12] hspi->pTxBuffPtr += sizeof(uint16_t); - 8008a22: 68fb ldr r3, [r7, #12] - 8008a24: 6b1b ldr r3, [r3, #48] @ 0x30 - 8008a26: 1c9a adds r2, r3, #2 - 8008a28: 68fb ldr r3, [r7, #12] - 8008a2a: 631a str r2, [r3, #48] @ 0x30 + 8008c76: 68fb ldr r3, [r7, #12] + 8008c78: 6b1b ldr r3, [r3, #48] @ 0x30 + 8008c7a: 1c9a adds r2, r3, #2 + 8008c7c: 68fb ldr r3, [r7, #12] + 8008c7e: 631a str r2, [r3, #48] @ 0x30 hspi->TxXferCount--; - 8008a2c: 68fb ldr r3, [r7, #12] - 8008a2e: 8edb ldrh r3, [r3, #54] @ 0x36 - 8008a30: b29b uxth r3, r3 - 8008a32: 3b01 subs r3, #1 - 8008a34: b29a uxth r2, r3 - 8008a36: 68fb ldr r3, [r7, #12] - 8008a38: 86da strh r2, [r3, #54] @ 0x36 - 8008a3a: e015 b.n 8008a68 + 8008c80: 68fb ldr r3, [r7, #12] + 8008c82: 8edb ldrh r3, [r3, #54] @ 0x36 + 8008c84: b29b uxth r3, r3 + 8008c86: 3b01 subs r3, #1 + 8008c88: b29a uxth r2, r3 + 8008c8a: 68fb ldr r3, [r7, #12] + 8008c8c: 86da strh r2, [r3, #54] @ 0x36 + 8008c8e: e015 b.n 8008cbc } else { /* Timeout management */ if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) - 8008a3c: f7fd f808 bl 8005a50 - 8008a40: 4602 mov r2, r0 - 8008a42: 69bb ldr r3, [r7, #24] - 8008a44: 1ad3 subs r3, r2, r3 - 8008a46: 683a ldr r2, [r7, #0] - 8008a48: 429a cmp r2, r3 - 8008a4a: d803 bhi.n 8008a54 - 8008a4c: 683b ldr r3, [r7, #0] - 8008a4e: f1b3 3fff cmp.w r3, #4294967295 - 8008a52: d102 bne.n 8008a5a - 8008a54: 683b ldr r3, [r7, #0] - 8008a56: 2b00 cmp r3, #0 - 8008a58: d106 bne.n 8008a68 + 8008c90: f7fd f808 bl 8005ca4 + 8008c94: 4602 mov r2, r0 + 8008c96: 69bb ldr r3, [r7, #24] + 8008c98: 1ad3 subs r3, r2, r3 + 8008c9a: 683a ldr r2, [r7, #0] + 8008c9c: 429a cmp r2, r3 + 8008c9e: d803 bhi.n 8008ca8 + 8008ca0: 683b ldr r3, [r7, #0] + 8008ca2: f1b3 3fff cmp.w r3, #4294967295 + 8008ca6: d102 bne.n 8008cae + 8008ca8: 683b ldr r3, [r7, #0] + 8008caa: 2b00 cmp r3, #0 + 8008cac: d106 bne.n 8008cbc { errorcode = HAL_TIMEOUT; - 8008a5a: 2303 movs r3, #3 - 8008a5c: 77fb strb r3, [r7, #31] + 8008cae: 2303 movs r3, #3 + 8008cb0: 77fb strb r3, [r7, #31] hspi->State = HAL_SPI_STATE_READY; - 8008a5e: 68fb ldr r3, [r7, #12] - 8008a60: 2201 movs r2, #1 - 8008a62: f883 2051 strb.w r2, [r3, #81] @ 0x51 + 8008cb2: 68fb ldr r3, [r7, #12] + 8008cb4: 2201 movs r2, #1 + 8008cb6: f883 2051 strb.w r2, [r3, #81] @ 0x51 goto error; - 8008a66: e07d b.n 8008b64 + 8008cba: e07d b.n 8008db8 while (hspi->TxXferCount > 0U) - 8008a68: 68fb ldr r3, [r7, #12] - 8008a6a: 8edb ldrh r3, [r3, #54] @ 0x36 - 8008a6c: b29b uxth r3, r3 - 8008a6e: 2b00 cmp r3, #0 - 8008a70: d1ca bne.n 8008a08 - 8008a72: e052 b.n 8008b1a + 8008cbc: 68fb ldr r3, [r7, #12] + 8008cbe: 8edb ldrh r3, [r3, #54] @ 0x36 + 8008cc0: b29b uxth r3, r3 + 8008cc2: 2b00 cmp r3, #0 + 8008cc4: d1ca bne.n 8008c5c + 8008cc6: e052 b.n 8008d6e } } /* Transmit data in 8 Bit mode */ else { if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) - 8008a74: 68fb ldr r3, [r7, #12] - 8008a76: 685b ldr r3, [r3, #4] - 8008a78: 2b00 cmp r3, #0 - 8008a7a: d002 beq.n 8008a82 - 8008a7c: 8afb ldrh r3, [r7, #22] - 8008a7e: 2b01 cmp r3, #1 - 8008a80: d146 bne.n 8008b10 + 8008cc8: 68fb ldr r3, [r7, #12] + 8008cca: 685b ldr r3, [r3, #4] + 8008ccc: 2b00 cmp r3, #0 + 8008cce: d002 beq.n 8008cd6 + 8008cd0: 8afb ldrh r3, [r7, #22] + 8008cd2: 2b01 cmp r3, #1 + 8008cd4: d146 bne.n 8008d64 { *((__IO uint8_t *)&hspi->Instance->DR) = (*hspi->pTxBuffPtr); - 8008a82: 68fb ldr r3, [r7, #12] - 8008a84: 6b1a ldr r2, [r3, #48] @ 0x30 - 8008a86: 68fb ldr r3, [r7, #12] - 8008a88: 681b ldr r3, [r3, #0] - 8008a8a: 330c adds r3, #12 - 8008a8c: 7812 ldrb r2, [r2, #0] - 8008a8e: 701a strb r2, [r3, #0] + 8008cd6: 68fb ldr r3, [r7, #12] + 8008cd8: 6b1a ldr r2, [r3, #48] @ 0x30 + 8008cda: 68fb ldr r3, [r7, #12] + 8008cdc: 681b ldr r3, [r3, #0] + 8008cde: 330c adds r3, #12 + 8008ce0: 7812 ldrb r2, [r2, #0] + 8008ce2: 701a strb r2, [r3, #0] hspi->pTxBuffPtr += sizeof(uint8_t); - 8008a90: 68fb ldr r3, [r7, #12] - 8008a92: 6b1b ldr r3, [r3, #48] @ 0x30 - 8008a94: 1c5a adds r2, r3, #1 - 8008a96: 68fb ldr r3, [r7, #12] - 8008a98: 631a str r2, [r3, #48] @ 0x30 + 8008ce4: 68fb ldr r3, [r7, #12] + 8008ce6: 6b1b ldr r3, [r3, #48] @ 0x30 + 8008ce8: 1c5a adds r2, r3, #1 + 8008cea: 68fb ldr r3, [r7, #12] + 8008cec: 631a str r2, [r3, #48] @ 0x30 hspi->TxXferCount--; - 8008a9a: 68fb ldr r3, [r7, #12] - 8008a9c: 8edb ldrh r3, [r3, #54] @ 0x36 - 8008a9e: b29b uxth r3, r3 - 8008aa0: 3b01 subs r3, #1 - 8008aa2: b29a uxth r2, r3 - 8008aa4: 68fb ldr r3, [r7, #12] - 8008aa6: 86da strh r2, [r3, #54] @ 0x36 + 8008cee: 68fb ldr r3, [r7, #12] + 8008cf0: 8edb ldrh r3, [r3, #54] @ 0x36 + 8008cf2: b29b uxth r3, r3 + 8008cf4: 3b01 subs r3, #1 + 8008cf6: b29a uxth r2, r3 + 8008cf8: 68fb ldr r3, [r7, #12] + 8008cfa: 86da strh r2, [r3, #54] @ 0x36 } while (hspi->TxXferCount > 0U) - 8008aa8: e032 b.n 8008b10 + 8008cfc: e032 b.n 8008d64 { /* Wait until TXE flag is set to send data */ if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) - 8008aaa: 68fb ldr r3, [r7, #12] - 8008aac: 681b ldr r3, [r3, #0] - 8008aae: 689b ldr r3, [r3, #8] - 8008ab0: f003 0302 and.w r3, r3, #2 - 8008ab4: 2b02 cmp r3, #2 - 8008ab6: d113 bne.n 8008ae0 + 8008cfe: 68fb ldr r3, [r7, #12] + 8008d00: 681b ldr r3, [r3, #0] + 8008d02: 689b ldr r3, [r3, #8] + 8008d04: f003 0302 and.w r3, r3, #2 + 8008d08: 2b02 cmp r3, #2 + 8008d0a: d113 bne.n 8008d34 { *((__IO uint8_t *)&hspi->Instance->DR) = (*hspi->pTxBuffPtr); - 8008ab8: 68fb ldr r3, [r7, #12] - 8008aba: 6b1a ldr r2, [r3, #48] @ 0x30 - 8008abc: 68fb ldr r3, [r7, #12] - 8008abe: 681b ldr r3, [r3, #0] - 8008ac0: 330c adds r3, #12 - 8008ac2: 7812 ldrb r2, [r2, #0] - 8008ac4: 701a strb r2, [r3, #0] + 8008d0c: 68fb ldr r3, [r7, #12] + 8008d0e: 6b1a ldr r2, [r3, #48] @ 0x30 + 8008d10: 68fb ldr r3, [r7, #12] + 8008d12: 681b ldr r3, [r3, #0] + 8008d14: 330c adds r3, #12 + 8008d16: 7812 ldrb r2, [r2, #0] + 8008d18: 701a strb r2, [r3, #0] hspi->pTxBuffPtr += sizeof(uint8_t); - 8008ac6: 68fb ldr r3, [r7, #12] - 8008ac8: 6b1b ldr r3, [r3, #48] @ 0x30 - 8008aca: 1c5a adds r2, r3, #1 - 8008acc: 68fb ldr r3, [r7, #12] - 8008ace: 631a str r2, [r3, #48] @ 0x30 + 8008d1a: 68fb ldr r3, [r7, #12] + 8008d1c: 6b1b ldr r3, [r3, #48] @ 0x30 + 8008d1e: 1c5a adds r2, r3, #1 + 8008d20: 68fb ldr r3, [r7, #12] + 8008d22: 631a str r2, [r3, #48] @ 0x30 hspi->TxXferCount--; - 8008ad0: 68fb ldr r3, [r7, #12] - 8008ad2: 8edb ldrh r3, [r3, #54] @ 0x36 - 8008ad4: b29b uxth r3, r3 - 8008ad6: 3b01 subs r3, #1 - 8008ad8: b29a uxth r2, r3 - 8008ada: 68fb ldr r3, [r7, #12] - 8008adc: 86da strh r2, [r3, #54] @ 0x36 - 8008ade: e017 b.n 8008b10 + 8008d24: 68fb ldr r3, [r7, #12] + 8008d26: 8edb ldrh r3, [r3, #54] @ 0x36 + 8008d28: b29b uxth r3, r3 + 8008d2a: 3b01 subs r3, #1 + 8008d2c: b29a uxth r2, r3 + 8008d2e: 68fb ldr r3, [r7, #12] + 8008d30: 86da strh r2, [r3, #54] @ 0x36 + 8008d32: e017 b.n 8008d64 } else { /* Timeout management */ if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) - 8008ae0: f7fc ffb6 bl 8005a50 - 8008ae4: 4602 mov r2, r0 - 8008ae6: 69bb ldr r3, [r7, #24] - 8008ae8: 1ad3 subs r3, r2, r3 - 8008aea: 683a ldr r2, [r7, #0] - 8008aec: 429a cmp r2, r3 - 8008aee: d803 bhi.n 8008af8 - 8008af0: 683b ldr r3, [r7, #0] - 8008af2: f1b3 3fff cmp.w r3, #4294967295 - 8008af6: d102 bne.n 8008afe - 8008af8: 683b ldr r3, [r7, #0] - 8008afa: 2b00 cmp r3, #0 - 8008afc: d108 bne.n 8008b10 + 8008d34: f7fc ffb6 bl 8005ca4 + 8008d38: 4602 mov r2, r0 + 8008d3a: 69bb ldr r3, [r7, #24] + 8008d3c: 1ad3 subs r3, r2, r3 + 8008d3e: 683a ldr r2, [r7, #0] + 8008d40: 429a cmp r2, r3 + 8008d42: d803 bhi.n 8008d4c + 8008d44: 683b ldr r3, [r7, #0] + 8008d46: f1b3 3fff cmp.w r3, #4294967295 + 8008d4a: d102 bne.n 8008d52 + 8008d4c: 683b ldr r3, [r7, #0] + 8008d4e: 2b00 cmp r3, #0 + 8008d50: d108 bne.n 8008d64 { errorcode = HAL_TIMEOUT; - 8008afe: 2303 movs r3, #3 - 8008b00: 77fb strb r3, [r7, #31] + 8008d52: 2303 movs r3, #3 + 8008d54: 77fb strb r3, [r7, #31] hspi->State = HAL_SPI_STATE_READY; - 8008b02: 68fb ldr r3, [r7, #12] - 8008b04: 2201 movs r2, #1 - 8008b06: f883 2051 strb.w r2, [r3, #81] @ 0x51 + 8008d56: 68fb ldr r3, [r7, #12] + 8008d58: 2201 movs r2, #1 + 8008d5a: f883 2051 strb.w r2, [r3, #81] @ 0x51 goto error; - 8008b0a: e02b b.n 8008b64 - 8008b0c: 0800e8d0 .word 0x0800e8d0 + 8008d5e: e02b b.n 8008db8 + 8008d60: 0800ee40 .word 0x0800ee40 while (hspi->TxXferCount > 0U) - 8008b10: 68fb ldr r3, [r7, #12] - 8008b12: 8edb ldrh r3, [r3, #54] @ 0x36 - 8008b14: b29b uxth r3, r3 - 8008b16: 2b00 cmp r3, #0 - 8008b18: d1c7 bne.n 8008aaa + 8008d64: 68fb ldr r3, [r7, #12] + 8008d66: 8edb ldrh r3, [r3, #54] @ 0x36 + 8008d68: b29b uxth r3, r3 + 8008d6a: 2b00 cmp r3, #0 + 8008d6c: d1c7 bne.n 8008cfe SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); } #endif /* USE_SPI_CRC */ /* Check the end of the transaction */ if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) - 8008b1a: 69ba ldr r2, [r7, #24] - 8008b1c: 6839 ldr r1, [r7, #0] - 8008b1e: 68f8 ldr r0, [r7, #12] - 8008b20: f000 f8b2 bl 8008c88 - 8008b24: 4603 mov r3, r0 - 8008b26: 2b00 cmp r3, #0 - 8008b28: d002 beq.n 8008b30 + 8008d6e: 69ba ldr r2, [r7, #24] + 8008d70: 6839 ldr r1, [r7, #0] + 8008d72: 68f8 ldr r0, [r7, #12] + 8008d74: f000 f8b2 bl 8008edc + 8008d78: 4603 mov r3, r0 + 8008d7a: 2b00 cmp r3, #0 + 8008d7c: d002 beq.n 8008d84 { hspi->ErrorCode = HAL_SPI_ERROR_FLAG; - 8008b2a: 68fb ldr r3, [r7, #12] - 8008b2c: 2220 movs r2, #32 - 8008b2e: 655a str r2, [r3, #84] @ 0x54 + 8008d7e: 68fb ldr r3, [r7, #12] + 8008d80: 2220 movs r2, #32 + 8008d82: 655a str r2, [r3, #84] @ 0x54 } /* Clear overrun flag in 2 Lines communication mode because received is not read */ if (hspi->Init.Direction == SPI_DIRECTION_2LINES) - 8008b30: 68fb ldr r3, [r7, #12] - 8008b32: 689b ldr r3, [r3, #8] - 8008b34: 2b00 cmp r3, #0 - 8008b36: d10a bne.n 8008b4e + 8008d84: 68fb ldr r3, [r7, #12] + 8008d86: 689b ldr r3, [r3, #8] + 8008d88: 2b00 cmp r3, #0 + 8008d8a: d10a bne.n 8008da2 { __HAL_SPI_CLEAR_OVRFLAG(hspi); - 8008b38: 2300 movs r3, #0 - 8008b3a: 613b str r3, [r7, #16] - 8008b3c: 68fb ldr r3, [r7, #12] - 8008b3e: 681b ldr r3, [r3, #0] - 8008b40: 68db ldr r3, [r3, #12] - 8008b42: 613b str r3, [r7, #16] - 8008b44: 68fb ldr r3, [r7, #12] - 8008b46: 681b ldr r3, [r3, #0] - 8008b48: 689b ldr r3, [r3, #8] - 8008b4a: 613b str r3, [r7, #16] - 8008b4c: 693b ldr r3, [r7, #16] + 8008d8c: 2300 movs r3, #0 + 8008d8e: 613b str r3, [r7, #16] + 8008d90: 68fb ldr r3, [r7, #12] + 8008d92: 681b ldr r3, [r3, #0] + 8008d94: 68db ldr r3, [r3, #12] + 8008d96: 613b str r3, [r7, #16] + 8008d98: 68fb ldr r3, [r7, #12] + 8008d9a: 681b ldr r3, [r3, #0] + 8008d9c: 689b ldr r3, [r3, #8] + 8008d9e: 613b str r3, [r7, #16] + 8008da0: 693b ldr r3, [r7, #16] } if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) - 8008b4e: 68fb ldr r3, [r7, #12] - 8008b50: 6d5b ldr r3, [r3, #84] @ 0x54 - 8008b52: 2b00 cmp r3, #0 - 8008b54: d002 beq.n 8008b5c + 8008da2: 68fb ldr r3, [r7, #12] + 8008da4: 6d5b ldr r3, [r3, #84] @ 0x54 + 8008da6: 2b00 cmp r3, #0 + 8008da8: d002 beq.n 8008db0 { errorcode = HAL_ERROR; - 8008b56: 2301 movs r3, #1 - 8008b58: 77fb strb r3, [r7, #31] - 8008b5a: e003 b.n 8008b64 + 8008daa: 2301 movs r3, #1 + 8008dac: 77fb strb r3, [r7, #31] + 8008dae: e003 b.n 8008db8 } else { hspi->State = HAL_SPI_STATE_READY; - 8008b5c: 68fb ldr r3, [r7, #12] - 8008b5e: 2201 movs r2, #1 - 8008b60: f883 2051 strb.w r2, [r3, #81] @ 0x51 + 8008db0: 68fb ldr r3, [r7, #12] + 8008db2: 2201 movs r2, #1 + 8008db4: f883 2051 strb.w r2, [r3, #81] @ 0x51 } error: /* Process Unlocked */ __HAL_UNLOCK(hspi); - 8008b64: 68fb ldr r3, [r7, #12] - 8008b66: 2200 movs r2, #0 - 8008b68: f883 2050 strb.w r2, [r3, #80] @ 0x50 + 8008db8: 68fb ldr r3, [r7, #12] + 8008dba: 2200 movs r2, #0 + 8008dbc: f883 2050 strb.w r2, [r3, #80] @ 0x50 return errorcode; - 8008b6c: 7ffb ldrb r3, [r7, #31] + 8008dc0: 7ffb ldrb r3, [r7, #31] } - 8008b6e: 4618 mov r0, r3 - 8008b70: 3720 adds r7, #32 - 8008b72: 46bd mov sp, r7 - 8008b74: bd80 pop {r7, pc} - 8008b76: bf00 nop + 8008dc2: 4618 mov r0, r3 + 8008dc4: 3720 adds r7, #32 + 8008dc6: 46bd mov sp, r7 + 8008dc8: bd80 pop {r7, pc} + 8008dca: bf00 nop -08008b78 : +08008dcc : * @param Tickstart tick start value * @retval HAL status */ static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, FlagStatus State, uint32_t Timeout, uint32_t Tickstart) { - 8008b78: b580 push {r7, lr} - 8008b7a: b088 sub sp, #32 - 8008b7c: af00 add r7, sp, #0 - 8008b7e: 60f8 str r0, [r7, #12] - 8008b80: 60b9 str r1, [r7, #8] - 8008b82: 603b str r3, [r7, #0] - 8008b84: 4613 mov r3, r2 - 8008b86: 71fb strb r3, [r7, #7] + 8008dcc: b580 push {r7, lr} + 8008dce: b088 sub sp, #32 + 8008dd0: af00 add r7, sp, #0 + 8008dd2: 60f8 str r0, [r7, #12] + 8008dd4: 60b9 str r1, [r7, #8] + 8008dd6: 603b str r3, [r7, #0] + 8008dd8: 4613 mov r3, r2 + 8008dda: 71fb strb r3, [r7, #7] __IO uint32_t count; uint32_t tmp_timeout; uint32_t tmp_tickstart; /* Adjust Timeout value in case of end of transfer */ tmp_timeout = Timeout - (HAL_GetTick() - Tickstart); - 8008b88: f7fc ff62 bl 8005a50 - 8008b8c: 4602 mov r2, r0 - 8008b8e: 6abb ldr r3, [r7, #40] @ 0x28 - 8008b90: 1a9b subs r3, r3, r2 - 8008b92: 683a ldr r2, [r7, #0] - 8008b94: 4413 add r3, r2 - 8008b96: 61fb str r3, [r7, #28] + 8008ddc: f7fc ff62 bl 8005ca4 + 8008de0: 4602 mov r2, r0 + 8008de2: 6abb ldr r3, [r7, #40] @ 0x28 + 8008de4: 1a9b subs r3, r3, r2 + 8008de6: 683a ldr r2, [r7, #0] + 8008de8: 4413 add r3, r2 + 8008dea: 61fb str r3, [r7, #28] tmp_tickstart = HAL_GetTick(); - 8008b98: f7fc ff5a bl 8005a50 - 8008b9c: 61b8 str r0, [r7, #24] + 8008dec: f7fc ff5a bl 8005ca4 + 8008df0: 61b8 str r0, [r7, #24] /* Calculate Timeout based on a software loop to avoid blocking issue if Systick is disabled */ count = tmp_timeout * ((SystemCoreClock * 32U) >> 20U); - 8008b9e: 4b39 ldr r3, [pc, #228] @ (8008c84 ) - 8008ba0: 681b ldr r3, [r3, #0] - 8008ba2: 015b lsls r3, r3, #5 - 8008ba4: 0d1b lsrs r3, r3, #20 - 8008ba6: 69fa ldr r2, [r7, #28] - 8008ba8: fb02 f303 mul.w r3, r2, r3 - 8008bac: 617b str r3, [r7, #20] + 8008df2: 4b39 ldr r3, [pc, #228] @ (8008ed8 ) + 8008df4: 681b ldr r3, [r3, #0] + 8008df6: 015b lsls r3, r3, #5 + 8008df8: 0d1b lsrs r3, r3, #20 + 8008dfa: 69fa ldr r2, [r7, #28] + 8008dfc: fb02 f303 mul.w r3, r2, r3 + 8008e00: 617b str r3, [r7, #20] while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) - 8008bae: e054 b.n 8008c5a + 8008e02: e054 b.n 8008eae { if (Timeout != HAL_MAX_DELAY) - 8008bb0: 683b ldr r3, [r7, #0] - 8008bb2: f1b3 3fff cmp.w r3, #4294967295 - 8008bb6: d050 beq.n 8008c5a + 8008e04: 683b ldr r3, [r7, #0] + 8008e06: f1b3 3fff cmp.w r3, #4294967295 + 8008e0a: d050 beq.n 8008eae { if (((HAL_GetTick() - tmp_tickstart) >= tmp_timeout) || (tmp_timeout == 0U)) - 8008bb8: f7fc ff4a bl 8005a50 - 8008bbc: 4602 mov r2, r0 - 8008bbe: 69bb ldr r3, [r7, #24] - 8008bc0: 1ad3 subs r3, r2, r3 - 8008bc2: 69fa ldr r2, [r7, #28] - 8008bc4: 429a cmp r2, r3 - 8008bc6: d902 bls.n 8008bce - 8008bc8: 69fb ldr r3, [r7, #28] - 8008bca: 2b00 cmp r3, #0 - 8008bcc: d13d bne.n 8008c4a + 8008e0c: f7fc ff4a bl 8005ca4 + 8008e10: 4602 mov r2, r0 + 8008e12: 69bb ldr r3, [r7, #24] + 8008e14: 1ad3 subs r3, r2, r3 + 8008e16: 69fa ldr r2, [r7, #28] + 8008e18: 429a cmp r2, r3 + 8008e1a: d902 bls.n 8008e22 + 8008e1c: 69fb ldr r3, [r7, #28] + 8008e1e: 2b00 cmp r3, #0 + 8008e20: d13d bne.n 8008e9e /* Disable the SPI and reset the CRC: the CRC value should be cleared on both master and slave sides in order to resynchronize the master and slave for their respective CRC calculation */ /* Disable TXE, RXNE and ERR interrupts for the interrupt process */ __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); - 8008bce: 68fb ldr r3, [r7, #12] - 8008bd0: 681b ldr r3, [r3, #0] - 8008bd2: 685a ldr r2, [r3, #4] - 8008bd4: 68fb ldr r3, [r7, #12] - 8008bd6: 681b ldr r3, [r3, #0] - 8008bd8: f022 02e0 bic.w r2, r2, #224 @ 0xe0 - 8008bdc: 605a str r2, [r3, #4] + 8008e22: 68fb ldr r3, [r7, #12] + 8008e24: 681b ldr r3, [r3, #0] + 8008e26: 685a ldr r2, [r3, #4] + 8008e28: 68fb ldr r3, [r7, #12] + 8008e2a: 681b ldr r3, [r3, #0] + 8008e2c: f022 02e0 bic.w r2, r2, #224 @ 0xe0 + 8008e30: 605a str r2, [r3, #4] if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) - 8008bde: 68fb ldr r3, [r7, #12] - 8008be0: 685b ldr r3, [r3, #4] - 8008be2: f5b3 7f82 cmp.w r3, #260 @ 0x104 - 8008be6: d111 bne.n 8008c0c - 8008be8: 68fb ldr r3, [r7, #12] - 8008bea: 689b ldr r3, [r3, #8] - 8008bec: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 - 8008bf0: d004 beq.n 8008bfc + 8008e32: 68fb ldr r3, [r7, #12] + 8008e34: 685b ldr r3, [r3, #4] + 8008e36: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8008e3a: d111 bne.n 8008e60 + 8008e3c: 68fb ldr r3, [r7, #12] + 8008e3e: 689b ldr r3, [r3, #8] + 8008e40: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 8008e44: d004 beq.n 8008e50 || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) - 8008bf2: 68fb ldr r3, [r7, #12] - 8008bf4: 689b ldr r3, [r3, #8] - 8008bf6: f5b3 6f80 cmp.w r3, #1024 @ 0x400 - 8008bfa: d107 bne.n 8008c0c + 8008e46: 68fb ldr r3, [r7, #12] + 8008e48: 689b ldr r3, [r3, #8] + 8008e4a: f5b3 6f80 cmp.w r3, #1024 @ 0x400 + 8008e4e: d107 bne.n 8008e60 { /* Disable SPI peripheral */ __HAL_SPI_DISABLE(hspi); - 8008bfc: 68fb ldr r3, [r7, #12] - 8008bfe: 681b ldr r3, [r3, #0] - 8008c00: 681a ldr r2, [r3, #0] - 8008c02: 68fb ldr r3, [r7, #12] - 8008c04: 681b ldr r3, [r3, #0] - 8008c06: f022 0240 bic.w r2, r2, #64 @ 0x40 - 8008c0a: 601a str r2, [r3, #0] + 8008e50: 68fb ldr r3, [r7, #12] + 8008e52: 681b ldr r3, [r3, #0] + 8008e54: 681a ldr r2, [r3, #0] + 8008e56: 68fb ldr r3, [r7, #12] + 8008e58: 681b ldr r3, [r3, #0] + 8008e5a: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8008e5e: 601a str r2, [r3, #0] } /* Reset CRC Calculation */ if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) - 8008c0c: 68fb ldr r3, [r7, #12] - 8008c0e: 6a9b ldr r3, [r3, #40] @ 0x28 - 8008c10: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 - 8008c14: d10f bne.n 8008c36 + 8008e60: 68fb ldr r3, [r7, #12] + 8008e62: 6a9b ldr r3, [r3, #40] @ 0x28 + 8008e64: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 8008e68: d10f bne.n 8008e8a { SPI_RESET_CRC(hspi); - 8008c16: 68fb ldr r3, [r7, #12] - 8008c18: 681b ldr r3, [r3, #0] - 8008c1a: 681a ldr r2, [r3, #0] - 8008c1c: 68fb ldr r3, [r7, #12] - 8008c1e: 681b ldr r3, [r3, #0] - 8008c20: f422 5200 bic.w r2, r2, #8192 @ 0x2000 - 8008c24: 601a str r2, [r3, #0] - 8008c26: 68fb ldr r3, [r7, #12] - 8008c28: 681b ldr r3, [r3, #0] - 8008c2a: 681a ldr r2, [r3, #0] - 8008c2c: 68fb ldr r3, [r7, #12] - 8008c2e: 681b ldr r3, [r3, #0] - 8008c30: f442 5200 orr.w r2, r2, #8192 @ 0x2000 - 8008c34: 601a str r2, [r3, #0] + 8008e6a: 68fb ldr r3, [r7, #12] + 8008e6c: 681b ldr r3, [r3, #0] + 8008e6e: 681a ldr r2, [r3, #0] + 8008e70: 68fb ldr r3, [r7, #12] + 8008e72: 681b ldr r3, [r3, #0] + 8008e74: f422 5200 bic.w r2, r2, #8192 @ 0x2000 + 8008e78: 601a str r2, [r3, #0] + 8008e7a: 68fb ldr r3, [r7, #12] + 8008e7c: 681b ldr r3, [r3, #0] + 8008e7e: 681a ldr r2, [r3, #0] + 8008e80: 68fb ldr r3, [r7, #12] + 8008e82: 681b ldr r3, [r3, #0] + 8008e84: f442 5200 orr.w r2, r2, #8192 @ 0x2000 + 8008e88: 601a str r2, [r3, #0] } hspi->State = HAL_SPI_STATE_READY; - 8008c36: 68fb ldr r3, [r7, #12] - 8008c38: 2201 movs r2, #1 - 8008c3a: f883 2051 strb.w r2, [r3, #81] @ 0x51 + 8008e8a: 68fb ldr r3, [r7, #12] + 8008e8c: 2201 movs r2, #1 + 8008e8e: f883 2051 strb.w r2, [r3, #81] @ 0x51 /* Process Unlocked */ __HAL_UNLOCK(hspi); - 8008c3e: 68fb ldr r3, [r7, #12] - 8008c40: 2200 movs r2, #0 - 8008c42: f883 2050 strb.w r2, [r3, #80] @ 0x50 + 8008e92: 68fb ldr r3, [r7, #12] + 8008e94: 2200 movs r2, #0 + 8008e96: f883 2050 strb.w r2, [r3, #80] @ 0x50 return HAL_TIMEOUT; - 8008c46: 2303 movs r3, #3 - 8008c48: e017 b.n 8008c7a + 8008e9a: 2303 movs r3, #3 + 8008e9c: e017 b.n 8008ece } /* If Systick is disabled or not incremented, deactivate timeout to go in disable loop procedure */ if (count == 0U) - 8008c4a: 697b ldr r3, [r7, #20] - 8008c4c: 2b00 cmp r3, #0 - 8008c4e: d101 bne.n 8008c54 + 8008e9e: 697b ldr r3, [r7, #20] + 8008ea0: 2b00 cmp r3, #0 + 8008ea2: d101 bne.n 8008ea8 { tmp_timeout = 0U; - 8008c50: 2300 movs r3, #0 - 8008c52: 61fb str r3, [r7, #28] + 8008ea4: 2300 movs r3, #0 + 8008ea6: 61fb str r3, [r7, #28] } count--; - 8008c54: 697b ldr r3, [r7, #20] - 8008c56: 3b01 subs r3, #1 - 8008c58: 617b str r3, [r7, #20] + 8008ea8: 697b ldr r3, [r7, #20] + 8008eaa: 3b01 subs r3, #1 + 8008eac: 617b str r3, [r7, #20] while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) - 8008c5a: 68fb ldr r3, [r7, #12] - 8008c5c: 681b ldr r3, [r3, #0] - 8008c5e: 689a ldr r2, [r3, #8] - 8008c60: 68bb ldr r3, [r7, #8] - 8008c62: 4013 ands r3, r2 - 8008c64: 68ba ldr r2, [r7, #8] - 8008c66: 429a cmp r2, r3 - 8008c68: bf0c ite eq - 8008c6a: 2301 moveq r3, #1 - 8008c6c: 2300 movne r3, #0 - 8008c6e: b2db uxtb r3, r3 - 8008c70: 461a mov r2, r3 - 8008c72: 79fb ldrb r3, [r7, #7] - 8008c74: 429a cmp r2, r3 - 8008c76: d19b bne.n 8008bb0 + 8008eae: 68fb ldr r3, [r7, #12] + 8008eb0: 681b ldr r3, [r3, #0] + 8008eb2: 689a ldr r2, [r3, #8] + 8008eb4: 68bb ldr r3, [r7, #8] + 8008eb6: 4013 ands r3, r2 + 8008eb8: 68ba ldr r2, [r7, #8] + 8008eba: 429a cmp r2, r3 + 8008ebc: bf0c ite eq + 8008ebe: 2301 moveq r3, #1 + 8008ec0: 2300 movne r3, #0 + 8008ec2: b2db uxtb r3, r3 + 8008ec4: 461a mov r2, r3 + 8008ec6: 79fb ldrb r3, [r7, #7] + 8008ec8: 429a cmp r2, r3 + 8008eca: d19b bne.n 8008e04 } } return HAL_OK; - 8008c78: 2300 movs r3, #0 + 8008ecc: 2300 movs r3, #0 } - 8008c7a: 4618 mov r0, r3 - 8008c7c: 3720 adds r7, #32 - 8008c7e: 46bd mov sp, r7 - 8008c80: bd80 pop {r7, pc} - 8008c82: bf00 nop - 8008c84: 20000000 .word 0x20000000 + 8008ece: 4618 mov r0, r3 + 8008ed0: 3720 adds r7, #32 + 8008ed2: 46bd mov sp, r7 + 8008ed4: bd80 pop {r7, pc} + 8008ed6: bf00 nop + 8008ed8: 20000000 .word 0x20000000 -08008c88 : +08008edc : * @param Timeout Timeout duration * @param Tickstart tick start value * @retval HAL status */ static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t Tickstart) { - 8008c88: b580 push {r7, lr} - 8008c8a: b088 sub sp, #32 - 8008c8c: af02 add r7, sp, #8 - 8008c8e: 60f8 str r0, [r7, #12] - 8008c90: 60b9 str r1, [r7, #8] - 8008c92: 607a str r2, [r7, #4] + 8008edc: b580 push {r7, lr} + 8008ede: b088 sub sp, #32 + 8008ee0: af02 add r7, sp, #8 + 8008ee2: 60f8 str r0, [r7, #12] + 8008ee4: 60b9 str r1, [r7, #8] + 8008ee6: 607a str r2, [r7, #4] /* Wait until TXE flag */ if(SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_TXE, SET, Timeout, Tickstart) != HAL_OK) - 8008c94: 687b ldr r3, [r7, #4] - 8008c96: 9300 str r3, [sp, #0] - 8008c98: 68bb ldr r3, [r7, #8] - 8008c9a: 2201 movs r2, #1 - 8008c9c: 2102 movs r1, #2 - 8008c9e: 68f8 ldr r0, [r7, #12] - 8008ca0: f7ff ff6a bl 8008b78 - 8008ca4: 4603 mov r3, r0 - 8008ca6: 2b00 cmp r3, #0 - 8008ca8: d007 beq.n 8008cba + 8008ee8: 687b ldr r3, [r7, #4] + 8008eea: 9300 str r3, [sp, #0] + 8008eec: 68bb ldr r3, [r7, #8] + 8008eee: 2201 movs r2, #1 + 8008ef0: 2102 movs r1, #2 + 8008ef2: 68f8 ldr r0, [r7, #12] + 8008ef4: f7ff ff6a bl 8008dcc + 8008ef8: 4603 mov r3, r0 + 8008efa: 2b00 cmp r3, #0 + 8008efc: d007 beq.n 8008f0e { SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); - 8008caa: 68fb ldr r3, [r7, #12] - 8008cac: 6d5b ldr r3, [r3, #84] @ 0x54 - 8008cae: f043 0220 orr.w r2, r3, #32 - 8008cb2: 68fb ldr r3, [r7, #12] - 8008cb4: 655a str r2, [r3, #84] @ 0x54 + 8008efe: 68fb ldr r3, [r7, #12] + 8008f00: 6d5b ldr r3, [r3, #84] @ 0x54 + 8008f02: f043 0220 orr.w r2, r3, #32 + 8008f06: 68fb ldr r3, [r7, #12] + 8008f08: 655a str r2, [r3, #84] @ 0x54 return HAL_TIMEOUT; - 8008cb6: 2303 movs r3, #3 - 8008cb8: e032 b.n 8008d20 + 8008f0a: 2303 movs r3, #3 + 8008f0c: e032 b.n 8008f74 } /* Timeout in µs */ __IO uint32_t count = SPI_BSY_FLAG_WORKAROUND_TIMEOUT * (SystemCoreClock / 24U / 1000000U); - 8008cba: 4b1b ldr r3, [pc, #108] @ (8008d28 ) - 8008cbc: 681b ldr r3, [r3, #0] - 8008cbe: 4a1b ldr r2, [pc, #108] @ (8008d2c ) - 8008cc0: fba2 2303 umull r2, r3, r2, r3 - 8008cc4: 0d5b lsrs r3, r3, #21 - 8008cc6: f44f 727a mov.w r2, #1000 @ 0x3e8 - 8008cca: fb02 f303 mul.w r3, r2, r3 - 8008cce: 617b str r3, [r7, #20] + 8008f0e: 4b1b ldr r3, [pc, #108] @ (8008f7c ) + 8008f10: 681b ldr r3, [r3, #0] + 8008f12: 4a1b ldr r2, [pc, #108] @ (8008f80 ) + 8008f14: fba2 2303 umull r2, r3, r2, r3 + 8008f18: 0d5b lsrs r3, r3, #21 + 8008f1a: f44f 727a mov.w r2, #1000 @ 0x3e8 + 8008f1e: fb02 f303 mul.w r3, r2, r3 + 8008f22: 617b str r3, [r7, #20] /* Erratasheet: BSY bit may stay high at the end of a data transfer in Slave mode */ if (hspi->Init.Mode == SPI_MODE_MASTER) - 8008cd0: 68fb ldr r3, [r7, #12] - 8008cd2: 685b ldr r3, [r3, #4] - 8008cd4: f5b3 7f82 cmp.w r3, #260 @ 0x104 - 8008cd8: d112 bne.n 8008d00 + 8008f24: 68fb ldr r3, [r7, #12] + 8008f26: 685b ldr r3, [r3, #4] + 8008f28: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8008f2c: d112 bne.n 8008f54 { /* Control the BSY flag */ if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) - 8008cda: 687b ldr r3, [r7, #4] - 8008cdc: 9300 str r3, [sp, #0] - 8008cde: 68bb ldr r3, [r7, #8] - 8008ce0: 2200 movs r2, #0 - 8008ce2: 2180 movs r1, #128 @ 0x80 - 8008ce4: 68f8 ldr r0, [r7, #12] - 8008ce6: f7ff ff47 bl 8008b78 - 8008cea: 4603 mov r3, r0 - 8008cec: 2b00 cmp r3, #0 - 8008cee: d016 beq.n 8008d1e + 8008f2e: 687b ldr r3, [r7, #4] + 8008f30: 9300 str r3, [sp, #0] + 8008f32: 68bb ldr r3, [r7, #8] + 8008f34: 2200 movs r2, #0 + 8008f36: 2180 movs r1, #128 @ 0x80 + 8008f38: 68f8 ldr r0, [r7, #12] + 8008f3a: f7ff ff47 bl 8008dcc + 8008f3e: 4603 mov r3, r0 + 8008f40: 2b00 cmp r3, #0 + 8008f42: d016 beq.n 8008f72 { SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); - 8008cf0: 68fb ldr r3, [r7, #12] - 8008cf2: 6d5b ldr r3, [r3, #84] @ 0x54 - 8008cf4: f043 0220 orr.w r2, r3, #32 - 8008cf8: 68fb ldr r3, [r7, #12] - 8008cfa: 655a str r2, [r3, #84] @ 0x54 + 8008f44: 68fb ldr r3, [r7, #12] + 8008f46: 6d5b ldr r3, [r3, #84] @ 0x54 + 8008f48: f043 0220 orr.w r2, r3, #32 + 8008f4c: 68fb ldr r3, [r7, #12] + 8008f4e: 655a str r2, [r3, #84] @ 0x54 return HAL_TIMEOUT; - 8008cfc: 2303 movs r3, #3 - 8008cfe: e00f b.n 8008d20 + 8008f50: 2303 movs r3, #3 + 8008f52: e00f b.n 8008f74 * User have to calculate the timeout value to fit with the time of 1 byte transfer. * This time is directly link with the SPI clock from Master device. */ do { if (count == 0U) - 8008d00: 697b ldr r3, [r7, #20] - 8008d02: 2b00 cmp r3, #0 - 8008d04: d00a beq.n 8008d1c + 8008f54: 697b ldr r3, [r7, #20] + 8008f56: 2b00 cmp r3, #0 + 8008f58: d00a beq.n 8008f70 { break; } count--; - 8008d06: 697b ldr r3, [r7, #20] - 8008d08: 3b01 subs r3, #1 - 8008d0a: 617b str r3, [r7, #20] + 8008f5a: 697b ldr r3, [r7, #20] + 8008f5c: 3b01 subs r3, #1 + 8008f5e: 617b str r3, [r7, #20] } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_BSY) != RESET); - 8008d0c: 68fb ldr r3, [r7, #12] - 8008d0e: 681b ldr r3, [r3, #0] - 8008d10: 689b ldr r3, [r3, #8] - 8008d12: f003 0380 and.w r3, r3, #128 @ 0x80 - 8008d16: 2b80 cmp r3, #128 @ 0x80 - 8008d18: d0f2 beq.n 8008d00 - 8008d1a: e000 b.n 8008d1e + 8008f60: 68fb ldr r3, [r7, #12] + 8008f62: 681b ldr r3, [r3, #0] + 8008f64: 689b ldr r3, [r3, #8] + 8008f66: f003 0380 and.w r3, r3, #128 @ 0x80 + 8008f6a: 2b80 cmp r3, #128 @ 0x80 + 8008f6c: d0f2 beq.n 8008f54 + 8008f6e: e000 b.n 8008f72 break; - 8008d1c: bf00 nop + 8008f70: bf00 nop } return HAL_OK; - 8008d1e: 2300 movs r3, #0 + 8008f72: 2300 movs r3, #0 } - 8008d20: 4618 mov r0, r3 - 8008d22: 3718 adds r7, #24 - 8008d24: 46bd mov sp, r7 - 8008d26: bd80 pop {r7, pc} - 8008d28: 20000000 .word 0x20000000 - 8008d2c: 165e9f81 .word 0x165e9f81 + 8008f74: 4618 mov r0, r3 + 8008f76: 3718 adds r7, #24 + 8008f78: 46bd mov sp, r7 + 8008f7a: bd80 pop {r7, pc} + 8008f7c: 20000000 .word 0x20000000 + 8008f80: 165e9f81 .word 0x165e9f81 -08008d30 : +08008f84 : * 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) { - 8008d30: b580 push {r7, lr} - 8008d32: b082 sub sp, #8 - 8008d34: af00 add r7, sp, #0 - 8008d36: 6078 str r0, [r7, #4] + 8008f84: b580 push {r7, lr} + 8008f86: b082 sub sp, #8 + 8008f88: af00 add r7, sp, #0 + 8008f8a: 6078 str r0, [r7, #4] /* Check the TIM handle allocation */ if (htim == NULL) - 8008d38: 687b ldr r3, [r7, #4] - 8008d3a: 2b00 cmp r3, #0 - 8008d3c: d101 bne.n 8008d42 + 8008f8c: 687b ldr r3, [r7, #4] + 8008f8e: 2b00 cmp r3, #0 + 8008f90: d101 bne.n 8008f96 { return HAL_ERROR; - 8008d3e: 2301 movs r3, #1 - 8008d40: e0ed b.n 8008f1e + 8008f92: 2301 movs r3, #1 + 8008f94: e0ed b.n 8009172 } /* Check the parameters */ assert_param(IS_TIM_INSTANCE(htim->Instance)); - 8008d42: 687b ldr r3, [r7, #4] - 8008d44: 681b ldr r3, [r3, #0] - 8008d46: 4a78 ldr r2, [pc, #480] @ (8008f28 ) - 8008d48: 4293 cmp r3, r2 - 8008d4a: d045 beq.n 8008dd8 - 8008d4c: 687b ldr r3, [r7, #4] - 8008d4e: 681b ldr r3, [r3, #0] - 8008d50: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8008d54: d040 beq.n 8008dd8 - 8008d56: 687b ldr r3, [r7, #4] - 8008d58: 681b ldr r3, [r3, #0] - 8008d5a: 4a74 ldr r2, [pc, #464] @ (8008f2c ) - 8008d5c: 4293 cmp r3, r2 - 8008d5e: d03b beq.n 8008dd8 - 8008d60: 687b ldr r3, [r7, #4] - 8008d62: 681b ldr r3, [r3, #0] - 8008d64: 4a72 ldr r2, [pc, #456] @ (8008f30 ) - 8008d66: 4293 cmp r3, r2 - 8008d68: d036 beq.n 8008dd8 - 8008d6a: 687b ldr r3, [r7, #4] - 8008d6c: 681b ldr r3, [r3, #0] - 8008d6e: 4a71 ldr r2, [pc, #452] @ (8008f34 ) - 8008d70: 4293 cmp r3, r2 - 8008d72: d031 beq.n 8008dd8 - 8008d74: 687b ldr r3, [r7, #4] - 8008d76: 681b ldr r3, [r3, #0] - 8008d78: 4a6f ldr r2, [pc, #444] @ (8008f38 ) - 8008d7a: 4293 cmp r3, r2 - 8008d7c: d02c beq.n 8008dd8 - 8008d7e: 687b ldr r3, [r7, #4] - 8008d80: 681b ldr r3, [r3, #0] - 8008d82: 4a6e ldr r2, [pc, #440] @ (8008f3c ) - 8008d84: 4293 cmp r3, r2 - 8008d86: d027 beq.n 8008dd8 - 8008d88: 687b ldr r3, [r7, #4] - 8008d8a: 681b ldr r3, [r3, #0] - 8008d8c: 4a6c ldr r2, [pc, #432] @ (8008f40 ) - 8008d8e: 4293 cmp r3, r2 - 8008d90: d022 beq.n 8008dd8 - 8008d92: 687b ldr r3, [r7, #4] - 8008d94: 681b ldr r3, [r3, #0] - 8008d96: 4a6b ldr r2, [pc, #428] @ (8008f44 ) - 8008d98: 4293 cmp r3, r2 - 8008d9a: d01d beq.n 8008dd8 - 8008d9c: 687b ldr r3, [r7, #4] - 8008d9e: 681b ldr r3, [r3, #0] - 8008da0: 4a69 ldr r2, [pc, #420] @ (8008f48 ) - 8008da2: 4293 cmp r3, r2 - 8008da4: d018 beq.n 8008dd8 - 8008da6: 687b ldr r3, [r7, #4] - 8008da8: 681b ldr r3, [r3, #0] - 8008daa: 4a68 ldr r2, [pc, #416] @ (8008f4c ) - 8008dac: 4293 cmp r3, r2 - 8008dae: d013 beq.n 8008dd8 - 8008db0: 687b ldr r3, [r7, #4] - 8008db2: 681b ldr r3, [r3, #0] - 8008db4: 4a66 ldr r2, [pc, #408] @ (8008f50 ) - 8008db6: 4293 cmp r3, r2 - 8008db8: d00e beq.n 8008dd8 - 8008dba: 687b ldr r3, [r7, #4] - 8008dbc: 681b ldr r3, [r3, #0] - 8008dbe: 4a65 ldr r2, [pc, #404] @ (8008f54 ) - 8008dc0: 4293 cmp r3, r2 - 8008dc2: d009 beq.n 8008dd8 - 8008dc4: 687b ldr r3, [r7, #4] - 8008dc6: 681b ldr r3, [r3, #0] - 8008dc8: 4a63 ldr r2, [pc, #396] @ (8008f58 ) - 8008dca: 4293 cmp r3, r2 - 8008dcc: d004 beq.n 8008dd8 - 8008dce: f240 1113 movw r1, #275 @ 0x113 - 8008dd2: 4862 ldr r0, [pc, #392] @ (8008f5c ) - 8008dd4: f7fa f9ce bl 8003174 + 8008f96: 687b ldr r3, [r7, #4] + 8008f98: 681b ldr r3, [r3, #0] + 8008f9a: 4a78 ldr r2, [pc, #480] @ (800917c ) + 8008f9c: 4293 cmp r3, r2 + 8008f9e: d045 beq.n 800902c + 8008fa0: 687b ldr r3, [r7, #4] + 8008fa2: 681b ldr r3, [r3, #0] + 8008fa4: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8008fa8: d040 beq.n 800902c + 8008faa: 687b ldr r3, [r7, #4] + 8008fac: 681b ldr r3, [r3, #0] + 8008fae: 4a74 ldr r2, [pc, #464] @ (8009180 ) + 8008fb0: 4293 cmp r3, r2 + 8008fb2: d03b beq.n 800902c + 8008fb4: 687b ldr r3, [r7, #4] + 8008fb6: 681b ldr r3, [r3, #0] + 8008fb8: 4a72 ldr r2, [pc, #456] @ (8009184 ) + 8008fba: 4293 cmp r3, r2 + 8008fbc: d036 beq.n 800902c + 8008fbe: 687b ldr r3, [r7, #4] + 8008fc0: 681b ldr r3, [r3, #0] + 8008fc2: 4a71 ldr r2, [pc, #452] @ (8009188 ) + 8008fc4: 4293 cmp r3, r2 + 8008fc6: d031 beq.n 800902c + 8008fc8: 687b ldr r3, [r7, #4] + 8008fca: 681b ldr r3, [r3, #0] + 8008fcc: 4a6f ldr r2, [pc, #444] @ (800918c ) + 8008fce: 4293 cmp r3, r2 + 8008fd0: d02c beq.n 800902c + 8008fd2: 687b ldr r3, [r7, #4] + 8008fd4: 681b ldr r3, [r3, #0] + 8008fd6: 4a6e ldr r2, [pc, #440] @ (8009190 ) + 8008fd8: 4293 cmp r3, r2 + 8008fda: d027 beq.n 800902c + 8008fdc: 687b ldr r3, [r7, #4] + 8008fde: 681b ldr r3, [r3, #0] + 8008fe0: 4a6c ldr r2, [pc, #432] @ (8009194 ) + 8008fe2: 4293 cmp r3, r2 + 8008fe4: d022 beq.n 800902c + 8008fe6: 687b ldr r3, [r7, #4] + 8008fe8: 681b ldr r3, [r3, #0] + 8008fea: 4a6b ldr r2, [pc, #428] @ (8009198 ) + 8008fec: 4293 cmp r3, r2 + 8008fee: d01d beq.n 800902c + 8008ff0: 687b ldr r3, [r7, #4] + 8008ff2: 681b ldr r3, [r3, #0] + 8008ff4: 4a69 ldr r2, [pc, #420] @ (800919c ) + 8008ff6: 4293 cmp r3, r2 + 8008ff8: d018 beq.n 800902c + 8008ffa: 687b ldr r3, [r7, #4] + 8008ffc: 681b ldr r3, [r3, #0] + 8008ffe: 4a68 ldr r2, [pc, #416] @ (80091a0 ) + 8009000: 4293 cmp r3, r2 + 8009002: d013 beq.n 800902c + 8009004: 687b ldr r3, [r7, #4] + 8009006: 681b ldr r3, [r3, #0] + 8009008: 4a66 ldr r2, [pc, #408] @ (80091a4 ) + 800900a: 4293 cmp r3, r2 + 800900c: d00e beq.n 800902c + 800900e: 687b ldr r3, [r7, #4] + 8009010: 681b ldr r3, [r3, #0] + 8009012: 4a65 ldr r2, [pc, #404] @ (80091a8 ) + 8009014: 4293 cmp r3, r2 + 8009016: d009 beq.n 800902c + 8009018: 687b ldr r3, [r7, #4] + 800901a: 681b ldr r3, [r3, #0] + 800901c: 4a63 ldr r2, [pc, #396] @ (80091ac ) + 800901e: 4293 cmp r3, r2 + 8009020: d004 beq.n 800902c + 8009022: f240 1113 movw r1, #275 @ 0x113 + 8009026: 4862 ldr r0, [pc, #392] @ (80091b0 ) + 8009028: f7fa f900 bl 800322c assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); - 8008dd8: 687b ldr r3, [r7, #4] - 8008dda: 689b ldr r3, [r3, #8] - 8008ddc: 2b00 cmp r3, #0 - 8008dde: d014 beq.n 8008e0a - 8008de0: 687b ldr r3, [r7, #4] - 8008de2: 689b ldr r3, [r3, #8] - 8008de4: 2b10 cmp r3, #16 - 8008de6: d010 beq.n 8008e0a - 8008de8: 687b ldr r3, [r7, #4] - 8008dea: 689b ldr r3, [r3, #8] - 8008dec: 2b20 cmp r3, #32 - 8008dee: d00c beq.n 8008e0a - 8008df0: 687b ldr r3, [r7, #4] - 8008df2: 689b ldr r3, [r3, #8] - 8008df4: 2b40 cmp r3, #64 @ 0x40 - 8008df6: d008 beq.n 8008e0a - 8008df8: 687b ldr r3, [r7, #4] - 8008dfa: 689b ldr r3, [r3, #8] - 8008dfc: 2b60 cmp r3, #96 @ 0x60 - 8008dfe: d004 beq.n 8008e0a - 8008e00: f44f 718a mov.w r1, #276 @ 0x114 - 8008e04: 4855 ldr r0, [pc, #340] @ (8008f5c ) - 8008e06: f7fa f9b5 bl 8003174 + 800902c: 687b ldr r3, [r7, #4] + 800902e: 689b ldr r3, [r3, #8] + 8009030: 2b00 cmp r3, #0 + 8009032: d014 beq.n 800905e + 8009034: 687b ldr r3, [r7, #4] + 8009036: 689b ldr r3, [r3, #8] + 8009038: 2b10 cmp r3, #16 + 800903a: d010 beq.n 800905e + 800903c: 687b ldr r3, [r7, #4] + 800903e: 689b ldr r3, [r3, #8] + 8009040: 2b20 cmp r3, #32 + 8009042: d00c beq.n 800905e + 8009044: 687b ldr r3, [r7, #4] + 8009046: 689b ldr r3, [r3, #8] + 8009048: 2b40 cmp r3, #64 @ 0x40 + 800904a: d008 beq.n 800905e + 800904c: 687b ldr r3, [r7, #4] + 800904e: 689b ldr r3, [r3, #8] + 8009050: 2b60 cmp r3, #96 @ 0x60 + 8009052: d004 beq.n 800905e + 8009054: f44f 718a mov.w r1, #276 @ 0x114 + 8009058: 4855 ldr r0, [pc, #340] @ (80091b0 ) + 800905a: f7fa f8e7 bl 800322c assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); - 8008e0a: 687b ldr r3, [r7, #4] - 8008e0c: 691b ldr r3, [r3, #16] - 8008e0e: 2b00 cmp r3, #0 - 8008e10: d00e beq.n 8008e30 - 8008e12: 687b ldr r3, [r7, #4] - 8008e14: 691b ldr r3, [r3, #16] - 8008e16: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 8008e1a: d009 beq.n 8008e30 - 8008e1c: 687b ldr r3, [r7, #4] - 8008e1e: 691b ldr r3, [r3, #16] - 8008e20: f5b3 7f00 cmp.w r3, #512 @ 0x200 - 8008e24: d004 beq.n 8008e30 - 8008e26: f240 1115 movw r1, #277 @ 0x115 - 8008e2a: 484c ldr r0, [pc, #304] @ (8008f5c ) - 8008e2c: f7fa f9a2 bl 8003174 + 800905e: 687b ldr r3, [r7, #4] + 8009060: 691b ldr r3, [r3, #16] + 8009062: 2b00 cmp r3, #0 + 8009064: d00e beq.n 8009084 + 8009066: 687b ldr r3, [r7, #4] + 8009068: 691b ldr r3, [r3, #16] + 800906a: f5b3 7f80 cmp.w r3, #256 @ 0x100 + 800906e: d009 beq.n 8009084 + 8009070: 687b ldr r3, [r7, #4] + 8009072: 691b ldr r3, [r3, #16] + 8009074: f5b3 7f00 cmp.w r3, #512 @ 0x200 + 8009078: d004 beq.n 8009084 + 800907a: f240 1115 movw r1, #277 @ 0x115 + 800907e: 484c ldr r0, [pc, #304] @ (80091b0 ) + 8009080: f7fa f8d4 bl 800322c assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); - 8008e30: 687b ldr r3, [r7, #4] - 8008e32: 681b ldr r3, [r3, #0] - 8008e34: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8008e38: d004 beq.n 8008e44 - 8008e3a: 687b ldr r3, [r7, #4] - 8008e3c: 681b ldr r3, [r3, #0] - 8008e3e: 4a3d ldr r2, [pc, #244] @ (8008f34 ) - 8008e40: 4293 cmp r3, r2 - 8008e42: d107 bne.n 8008e54 - 8008e44: 687b ldr r3, [r7, #4] - 8008e46: 68db ldr r3, [r3, #12] - 8008e48: 2b00 cmp r3, #0 - 8008e4a: bf14 ite ne - 8008e4c: 2301 movne r3, #1 - 8008e4e: 2300 moveq r3, #0 - 8008e50: b2db uxtb r3, r3 - 8008e52: e00e b.n 8008e72 - 8008e54: 687b ldr r3, [r7, #4] - 8008e56: 68db ldr r3, [r3, #12] - 8008e58: 2b00 cmp r3, #0 - 8008e5a: d006 beq.n 8008e6a - 8008e5c: 687b ldr r3, [r7, #4] - 8008e5e: 68db ldr r3, [r3, #12] - 8008e60: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8008e64: d201 bcs.n 8008e6a - 8008e66: 2301 movs r3, #1 - 8008e68: e000 b.n 8008e6c - 8008e6a: 2300 movs r3, #0 - 8008e6c: f003 0301 and.w r3, r3, #1 - 8008e70: b2db uxtb r3, r3 - 8008e72: 2b00 cmp r3, #0 - 8008e74: d104 bne.n 8008e80 - 8008e76: f44f 718b mov.w r1, #278 @ 0x116 - 8008e7a: 4838 ldr r0, [pc, #224] @ (8008f5c ) - 8008e7c: f7fa f97a bl 8003174 + 8009084: 687b ldr r3, [r7, #4] + 8009086: 681b ldr r3, [r3, #0] + 8009088: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 800908c: d004 beq.n 8009098 + 800908e: 687b ldr r3, [r7, #4] + 8009090: 681b ldr r3, [r3, #0] + 8009092: 4a3d ldr r2, [pc, #244] @ (8009188 ) + 8009094: 4293 cmp r3, r2 + 8009096: d107 bne.n 80090a8 + 8009098: 687b ldr r3, [r7, #4] + 800909a: 68db ldr r3, [r3, #12] + 800909c: 2b00 cmp r3, #0 + 800909e: bf14 ite ne + 80090a0: 2301 movne r3, #1 + 80090a2: 2300 moveq r3, #0 + 80090a4: b2db uxtb r3, r3 + 80090a6: e00e b.n 80090c6 + 80090a8: 687b ldr r3, [r7, #4] + 80090aa: 68db ldr r3, [r3, #12] + 80090ac: 2b00 cmp r3, #0 + 80090ae: d006 beq.n 80090be + 80090b0: 687b ldr r3, [r7, #4] + 80090b2: 68db ldr r3, [r3, #12] + 80090b4: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 80090b8: d201 bcs.n 80090be + 80090ba: 2301 movs r3, #1 + 80090bc: e000 b.n 80090c0 + 80090be: 2300 movs r3, #0 + 80090c0: f003 0301 and.w r3, r3, #1 + 80090c4: b2db uxtb r3, r3 + 80090c6: 2b00 cmp r3, #0 + 80090c8: d104 bne.n 80090d4 + 80090ca: f44f 718b mov.w r1, #278 @ 0x116 + 80090ce: 4838 ldr r0, [pc, #224] @ (80091b0 ) + 80090d0: f7fa f8ac bl 800322c assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); - 8008e80: 687b ldr r3, [r7, #4] - 8008e82: 699b ldr r3, [r3, #24] - 8008e84: 2b00 cmp r3, #0 - 8008e86: d008 beq.n 8008e9a - 8008e88: 687b ldr r3, [r7, #4] - 8008e8a: 699b ldr r3, [r3, #24] - 8008e8c: 2b80 cmp r3, #128 @ 0x80 - 8008e8e: d004 beq.n 8008e9a - 8008e90: f240 1117 movw r1, #279 @ 0x117 - 8008e94: 4831 ldr r0, [pc, #196] @ (8008f5c ) - 8008e96: f7fa f96d bl 8003174 + 80090d4: 687b ldr r3, [r7, #4] + 80090d6: 699b ldr r3, [r3, #24] + 80090d8: 2b00 cmp r3, #0 + 80090da: d008 beq.n 80090ee + 80090dc: 687b ldr r3, [r7, #4] + 80090de: 699b ldr r3, [r3, #24] + 80090e0: 2b80 cmp r3, #128 @ 0x80 + 80090e2: d004 beq.n 80090ee + 80090e4: f240 1117 movw r1, #279 @ 0x117 + 80090e8: 4831 ldr r0, [pc, #196] @ (80091b0 ) + 80090ea: f7fa f89f bl 800322c if (htim->State == HAL_TIM_STATE_RESET) - 8008e9a: 687b ldr r3, [r7, #4] - 8008e9c: f893 303d ldrb.w r3, [r3, #61] @ 0x3d - 8008ea0: b2db uxtb r3, r3 - 8008ea2: 2b00 cmp r3, #0 - 8008ea4: d106 bne.n 8008eb4 + 80090ee: 687b ldr r3, [r7, #4] + 80090f0: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 80090f4: b2db uxtb r3, r3 + 80090f6: 2b00 cmp r3, #0 + 80090f8: d106 bne.n 8009108 { /* Allocate lock resource and initialize it */ htim->Lock = HAL_UNLOCKED; - 8008ea6: 687b ldr r3, [r7, #4] - 8008ea8: 2200 movs r2, #0 - 8008eaa: f883 203c strb.w r2, [r3, #60] @ 0x3c + 80090fa: 687b ldr r3, [r7, #4] + 80090fc: 2200 movs r2, #0 + 80090fe: 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); - 8008eae: 6878 ldr r0, [r7, #4] - 8008eb0: f7fb fd96 bl 80049e0 + 8009102: 6878 ldr r0, [r7, #4] + 8009104: f7fb fd5a bl 8004bbc #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } /* Set the TIM state */ htim->State = HAL_TIM_STATE_BUSY; - 8008eb4: 687b ldr r3, [r7, #4] - 8008eb6: 2202 movs r2, #2 - 8008eb8: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8009108: 687b ldr r3, [r7, #4] + 800910a: 2202 movs r2, #2 + 800910c: f883 203d strb.w r2, [r3, #61] @ 0x3d /* Set the Time Base configuration */ TIM_Base_SetConfig(htim->Instance, &htim->Init); - 8008ebc: 687b ldr r3, [r7, #4] - 8008ebe: 681a ldr r2, [r3, #0] - 8008ec0: 687b ldr r3, [r7, #4] - 8008ec2: 3304 adds r3, #4 - 8008ec4: 4619 mov r1, r3 - 8008ec6: 4610 mov r0, r2 - 8008ec8: f001 fa2a bl 800a320 + 8009110: 687b ldr r3, [r7, #4] + 8009112: 681a ldr r2, [r3, #0] + 8009114: 687b ldr r3, [r7, #4] + 8009116: 3304 adds r3, #4 + 8009118: 4619 mov r1, r3 + 800911a: 4610 mov r0, r2 + 800911c: f001 fbba bl 800a894 /* Initialize the DMA burst operation state */ htim->DMABurstState = HAL_DMA_BURST_STATE_READY; - 8008ecc: 687b ldr r3, [r7, #4] - 8008ece: 2201 movs r2, #1 - 8008ed0: f883 2046 strb.w r2, [r3, #70] @ 0x46 + 8009120: 687b ldr r3, [r7, #4] + 8009122: 2201 movs r2, #1 + 8009124: f883 2046 strb.w r2, [r3, #70] @ 0x46 /* Initialize the TIM channels state */ TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 8008ed4: 687b ldr r3, [r7, #4] - 8008ed6: 2201 movs r2, #1 - 8008ed8: f883 203e strb.w r2, [r3, #62] @ 0x3e - 8008edc: 687b ldr r3, [r7, #4] - 8008ede: 2201 movs r2, #1 - 8008ee0: f883 203f strb.w r2, [r3, #63] @ 0x3f - 8008ee4: 687b ldr r3, [r7, #4] - 8008ee6: 2201 movs r2, #1 - 8008ee8: f883 2040 strb.w r2, [r3, #64] @ 0x40 - 8008eec: 687b ldr r3, [r7, #4] - 8008eee: 2201 movs r2, #1 - 8008ef0: f883 2041 strb.w r2, [r3, #65] @ 0x41 + 8009128: 687b ldr r3, [r7, #4] + 800912a: 2201 movs r2, #1 + 800912c: f883 203e strb.w r2, [r3, #62] @ 0x3e + 8009130: 687b ldr r3, [r7, #4] + 8009132: 2201 movs r2, #1 + 8009134: f883 203f strb.w r2, [r3, #63] @ 0x3f + 8009138: 687b ldr r3, [r7, #4] + 800913a: 2201 movs r2, #1 + 800913c: f883 2040 strb.w r2, [r3, #64] @ 0x40 + 8009140: 687b ldr r3, [r7, #4] + 8009142: 2201 movs r2, #1 + 8009144: f883 2041 strb.w r2, [r3, #65] @ 0x41 TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 8008ef4: 687b ldr r3, [r7, #4] - 8008ef6: 2201 movs r2, #1 - 8008ef8: f883 2042 strb.w r2, [r3, #66] @ 0x42 - 8008efc: 687b ldr r3, [r7, #4] - 8008efe: 2201 movs r2, #1 - 8008f00: f883 2043 strb.w r2, [r3, #67] @ 0x43 - 8008f04: 687b ldr r3, [r7, #4] - 8008f06: 2201 movs r2, #1 - 8008f08: f883 2044 strb.w r2, [r3, #68] @ 0x44 - 8008f0c: 687b ldr r3, [r7, #4] - 8008f0e: 2201 movs r2, #1 - 8008f10: f883 2045 strb.w r2, [r3, #69] @ 0x45 + 8009148: 687b ldr r3, [r7, #4] + 800914a: 2201 movs r2, #1 + 800914c: f883 2042 strb.w r2, [r3, #66] @ 0x42 + 8009150: 687b ldr r3, [r7, #4] + 8009152: 2201 movs r2, #1 + 8009154: f883 2043 strb.w r2, [r3, #67] @ 0x43 + 8009158: 687b ldr r3, [r7, #4] + 800915a: 2201 movs r2, #1 + 800915c: f883 2044 strb.w r2, [r3, #68] @ 0x44 + 8009160: 687b ldr r3, [r7, #4] + 8009162: 2201 movs r2, #1 + 8009164: f883 2045 strb.w r2, [r3, #69] @ 0x45 /* Initialize the TIM state*/ htim->State = HAL_TIM_STATE_READY; - 8008f14: 687b ldr r3, [r7, #4] - 8008f16: 2201 movs r2, #1 - 8008f18: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8009168: 687b ldr r3, [r7, #4] + 800916a: 2201 movs r2, #1 + 800916c: f883 203d strb.w r2, [r3, #61] @ 0x3d return HAL_OK; - 8008f1c: 2300 movs r3, #0 + 8009170: 2300 movs r3, #0 } - 8008f1e: 4618 mov r0, r3 - 8008f20: 3708 adds r7, #8 - 8008f22: 46bd mov sp, r7 - 8008f24: bd80 pop {r7, pc} - 8008f26: bf00 nop - 8008f28: 40010000 .word 0x40010000 - 8008f2c: 40000400 .word 0x40000400 - 8008f30: 40000800 .word 0x40000800 - 8008f34: 40000c00 .word 0x40000c00 - 8008f38: 40001000 .word 0x40001000 - 8008f3c: 40001400 .word 0x40001400 - 8008f40: 40010400 .word 0x40010400 - 8008f44: 40014000 .word 0x40014000 - 8008f48: 40014400 .word 0x40014400 - 8008f4c: 40014800 .word 0x40014800 - 8008f50: 40001800 .word 0x40001800 - 8008f54: 40001c00 .word 0x40001c00 - 8008f58: 40002000 .word 0x40002000 - 8008f5c: 0800e908 .word 0x0800e908 + 8009172: 4618 mov r0, r3 + 8009174: 3708 adds r7, #8 + 8009176: 46bd mov sp, r7 + 8009178: bd80 pop {r7, pc} + 800917a: bf00 nop + 800917c: 40010000 .word 0x40010000 + 8009180: 40000400 .word 0x40000400 + 8009184: 40000800 .word 0x40000800 + 8009188: 40000c00 .word 0x40000c00 + 800918c: 40001000 .word 0x40001000 + 8009190: 40001400 .word 0x40001400 + 8009194: 40010400 .word 0x40010400 + 8009198: 40014000 .word 0x40014000 + 800919c: 40014400 .word 0x40014400 + 80091a0: 40014800 .word 0x40014800 + 80091a4: 40001800 .word 0x40001800 + 80091a8: 40001c00 .word 0x40001c00 + 80091ac: 40002000 .word 0x40002000 + 80091b0: 0800ee78 .word 0x0800ee78 -08008f60 : +080091b4 : * @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) { - 8008f60: b580 push {r7, lr} - 8008f62: b084 sub sp, #16 - 8008f64: af00 add r7, sp, #0 - 8008f66: 6078 str r0, [r7, #4] + 80091b4: b580 push {r7, lr} + 80091b6: b084 sub sp, #16 + 80091b8: af00 add r7, sp, #0 + 80091ba: 6078 str r0, [r7, #4] uint32_t tmpsmcr; /* Check the parameters */ assert_param(IS_TIM_INSTANCE(htim->Instance)); - 8008f68: 687b ldr r3, [r7, #4] - 8008f6a: 681b ldr r3, [r3, #0] - 8008f6c: 4a51 ldr r2, [pc, #324] @ (80090b4 ) - 8008f6e: 4293 cmp r3, r2 - 8008f70: d045 beq.n 8008ffe - 8008f72: 687b ldr r3, [r7, #4] - 8008f74: 681b ldr r3, [r3, #0] - 8008f76: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8008f7a: d040 beq.n 8008ffe - 8008f7c: 687b ldr r3, [r7, #4] - 8008f7e: 681b ldr r3, [r3, #0] - 8008f80: 4a4d ldr r2, [pc, #308] @ (80090b8 ) - 8008f82: 4293 cmp r3, r2 - 8008f84: d03b beq.n 8008ffe - 8008f86: 687b ldr r3, [r7, #4] - 8008f88: 681b ldr r3, [r3, #0] - 8008f8a: 4a4c ldr r2, [pc, #304] @ (80090bc ) - 8008f8c: 4293 cmp r3, r2 - 8008f8e: d036 beq.n 8008ffe - 8008f90: 687b ldr r3, [r7, #4] - 8008f92: 681b ldr r3, [r3, #0] - 8008f94: 4a4a ldr r2, [pc, #296] @ (80090c0 ) - 8008f96: 4293 cmp r3, r2 - 8008f98: d031 beq.n 8008ffe - 8008f9a: 687b ldr r3, [r7, #4] - 8008f9c: 681b ldr r3, [r3, #0] - 8008f9e: 4a49 ldr r2, [pc, #292] @ (80090c4 ) - 8008fa0: 4293 cmp r3, r2 - 8008fa2: d02c beq.n 8008ffe - 8008fa4: 687b ldr r3, [r7, #4] - 8008fa6: 681b ldr r3, [r3, #0] - 8008fa8: 4a47 ldr r2, [pc, #284] @ (80090c8 ) - 8008faa: 4293 cmp r3, r2 - 8008fac: d027 beq.n 8008ffe - 8008fae: 687b ldr r3, [r7, #4] - 8008fb0: 681b ldr r3, [r3, #0] - 8008fb2: 4a46 ldr r2, [pc, #280] @ (80090cc ) - 8008fb4: 4293 cmp r3, r2 - 8008fb6: d022 beq.n 8008ffe - 8008fb8: 687b ldr r3, [r7, #4] - 8008fba: 681b ldr r3, [r3, #0] - 8008fbc: 4a44 ldr r2, [pc, #272] @ (80090d0 ) - 8008fbe: 4293 cmp r3, r2 - 8008fc0: d01d beq.n 8008ffe - 8008fc2: 687b ldr r3, [r7, #4] - 8008fc4: 681b ldr r3, [r3, #0] - 8008fc6: 4a43 ldr r2, [pc, #268] @ (80090d4 ) - 8008fc8: 4293 cmp r3, r2 - 8008fca: d018 beq.n 8008ffe - 8008fcc: 687b ldr r3, [r7, #4] - 8008fce: 681b ldr r3, [r3, #0] - 8008fd0: 4a41 ldr r2, [pc, #260] @ (80090d8 ) - 8008fd2: 4293 cmp r3, r2 - 8008fd4: d013 beq.n 8008ffe - 8008fd6: 687b ldr r3, [r7, #4] - 8008fd8: 681b ldr r3, [r3, #0] - 8008fda: 4a40 ldr r2, [pc, #256] @ (80090dc ) - 8008fdc: 4293 cmp r3, r2 - 8008fde: d00e beq.n 8008ffe - 8008fe0: 687b ldr r3, [r7, #4] - 8008fe2: 681b ldr r3, [r3, #0] - 8008fe4: 4a3e ldr r2, [pc, #248] @ (80090e0 ) - 8008fe6: 4293 cmp r3, r2 - 8008fe8: d009 beq.n 8008ffe - 8008fea: 687b ldr r3, [r7, #4] - 8008fec: 681b ldr r3, [r3, #0] - 8008fee: 4a3d ldr r2, [pc, #244] @ (80090e4 ) - 8008ff0: 4293 cmp r3, r2 - 8008ff2: d004 beq.n 8008ffe - 8008ff4: f44f 71e8 mov.w r1, #464 @ 0x1d0 - 8008ff8: 483b ldr r0, [pc, #236] @ (80090e8 ) - 8008ffa: f7fa f8bb bl 8003174 + 80091bc: 687b ldr r3, [r7, #4] + 80091be: 681b ldr r3, [r3, #0] + 80091c0: 4a51 ldr r2, [pc, #324] @ (8009308 ) + 80091c2: 4293 cmp r3, r2 + 80091c4: d045 beq.n 8009252 + 80091c6: 687b ldr r3, [r7, #4] + 80091c8: 681b ldr r3, [r3, #0] + 80091ca: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 80091ce: d040 beq.n 8009252 + 80091d0: 687b ldr r3, [r7, #4] + 80091d2: 681b ldr r3, [r3, #0] + 80091d4: 4a4d ldr r2, [pc, #308] @ (800930c ) + 80091d6: 4293 cmp r3, r2 + 80091d8: d03b beq.n 8009252 + 80091da: 687b ldr r3, [r7, #4] + 80091dc: 681b ldr r3, [r3, #0] + 80091de: 4a4c ldr r2, [pc, #304] @ (8009310 ) + 80091e0: 4293 cmp r3, r2 + 80091e2: d036 beq.n 8009252 + 80091e4: 687b ldr r3, [r7, #4] + 80091e6: 681b ldr r3, [r3, #0] + 80091e8: 4a4a ldr r2, [pc, #296] @ (8009314 ) + 80091ea: 4293 cmp r3, r2 + 80091ec: d031 beq.n 8009252 + 80091ee: 687b ldr r3, [r7, #4] + 80091f0: 681b ldr r3, [r3, #0] + 80091f2: 4a49 ldr r2, [pc, #292] @ (8009318 ) + 80091f4: 4293 cmp r3, r2 + 80091f6: d02c beq.n 8009252 + 80091f8: 687b ldr r3, [r7, #4] + 80091fa: 681b ldr r3, [r3, #0] + 80091fc: 4a47 ldr r2, [pc, #284] @ (800931c ) + 80091fe: 4293 cmp r3, r2 + 8009200: d027 beq.n 8009252 + 8009202: 687b ldr r3, [r7, #4] + 8009204: 681b ldr r3, [r3, #0] + 8009206: 4a46 ldr r2, [pc, #280] @ (8009320 ) + 8009208: 4293 cmp r3, r2 + 800920a: d022 beq.n 8009252 + 800920c: 687b ldr r3, [r7, #4] + 800920e: 681b ldr r3, [r3, #0] + 8009210: 4a44 ldr r2, [pc, #272] @ (8009324 ) + 8009212: 4293 cmp r3, r2 + 8009214: d01d beq.n 8009252 + 8009216: 687b ldr r3, [r7, #4] + 8009218: 681b ldr r3, [r3, #0] + 800921a: 4a43 ldr r2, [pc, #268] @ (8009328 ) + 800921c: 4293 cmp r3, r2 + 800921e: d018 beq.n 8009252 + 8009220: 687b ldr r3, [r7, #4] + 8009222: 681b ldr r3, [r3, #0] + 8009224: 4a41 ldr r2, [pc, #260] @ (800932c ) + 8009226: 4293 cmp r3, r2 + 8009228: d013 beq.n 8009252 + 800922a: 687b ldr r3, [r7, #4] + 800922c: 681b ldr r3, [r3, #0] + 800922e: 4a40 ldr r2, [pc, #256] @ (8009330 ) + 8009230: 4293 cmp r3, r2 + 8009232: d00e beq.n 8009252 + 8009234: 687b ldr r3, [r7, #4] + 8009236: 681b ldr r3, [r3, #0] + 8009238: 4a3e ldr r2, [pc, #248] @ (8009334 ) + 800923a: 4293 cmp r3, r2 + 800923c: d009 beq.n 8009252 + 800923e: 687b ldr r3, [r7, #4] + 8009240: 681b ldr r3, [r3, #0] + 8009242: 4a3d ldr r2, [pc, #244] @ (8009338 ) + 8009244: 4293 cmp r3, r2 + 8009246: d004 beq.n 8009252 + 8009248: f44f 71e8 mov.w r1, #464 @ 0x1d0 + 800924c: 483b ldr r0, [pc, #236] @ (800933c ) + 800924e: f7f9 ffed bl 800322c /* Check the TIM state */ if (htim->State != HAL_TIM_STATE_READY) - 8008ffe: 687b ldr r3, [r7, #4] - 8009000: f893 303d ldrb.w r3, [r3, #61] @ 0x3d - 8009004: b2db uxtb r3, r3 - 8009006: 2b01 cmp r3, #1 - 8009008: d001 beq.n 800900e + 8009252: 687b ldr r3, [r7, #4] + 8009254: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 8009258: b2db uxtb r3, r3 + 800925a: 2b01 cmp r3, #1 + 800925c: d001 beq.n 8009262 { return HAL_ERROR; - 800900a: 2301 movs r3, #1 - 800900c: e04e b.n 80090ac + 800925e: 2301 movs r3, #1 + 8009260: e04e b.n 8009300 } /* Set the TIM state */ htim->State = HAL_TIM_STATE_BUSY; - 800900e: 687b ldr r3, [r7, #4] - 8009010: 2202 movs r2, #2 - 8009012: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8009262: 687b ldr r3, [r7, #4] + 8009264: 2202 movs r2, #2 + 8009266: f883 203d strb.w r2, [r3, #61] @ 0x3d /* Enable the TIM Update interrupt */ __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE); - 8009016: 687b ldr r3, [r7, #4] - 8009018: 681b ldr r3, [r3, #0] - 800901a: 68da ldr r2, [r3, #12] - 800901c: 687b ldr r3, [r7, #4] - 800901e: 681b ldr r3, [r3, #0] - 8009020: f042 0201 orr.w r2, r2, #1 - 8009024: 60da str r2, [r3, #12] + 800926a: 687b ldr r3, [r7, #4] + 800926c: 681b ldr r3, [r3, #0] + 800926e: 68da ldr r2, [r3, #12] + 8009270: 687b ldr r3, [r7, #4] + 8009272: 681b ldr r3, [r3, #0] + 8009274: f042 0201 orr.w r2, r2, #1 + 8009278: 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)) - 8009026: 687b ldr r3, [r7, #4] - 8009028: 681b ldr r3, [r3, #0] - 800902a: 4a22 ldr r2, [pc, #136] @ (80090b4 ) - 800902c: 4293 cmp r3, r2 - 800902e: d022 beq.n 8009076 - 8009030: 687b ldr r3, [r7, #4] - 8009032: 681b ldr r3, [r3, #0] - 8009034: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8009038: d01d beq.n 8009076 - 800903a: 687b ldr r3, [r7, #4] - 800903c: 681b ldr r3, [r3, #0] - 800903e: 4a1e ldr r2, [pc, #120] @ (80090b8 ) - 8009040: 4293 cmp r3, r2 - 8009042: d018 beq.n 8009076 - 8009044: 687b ldr r3, [r7, #4] - 8009046: 681b ldr r3, [r3, #0] - 8009048: 4a1c ldr r2, [pc, #112] @ (80090bc ) - 800904a: 4293 cmp r3, r2 - 800904c: d013 beq.n 8009076 - 800904e: 687b ldr r3, [r7, #4] - 8009050: 681b ldr r3, [r3, #0] - 8009052: 4a1b ldr r2, [pc, #108] @ (80090c0 ) - 8009054: 4293 cmp r3, r2 - 8009056: d00e beq.n 8009076 - 8009058: 687b ldr r3, [r7, #4] - 800905a: 681b ldr r3, [r3, #0] - 800905c: 4a1b ldr r2, [pc, #108] @ (80090cc ) - 800905e: 4293 cmp r3, r2 - 8009060: d009 beq.n 8009076 - 8009062: 687b ldr r3, [r7, #4] - 8009064: 681b ldr r3, [r3, #0] - 8009066: 4a1a ldr r2, [pc, #104] @ (80090d0 ) - 8009068: 4293 cmp r3, r2 - 800906a: d004 beq.n 8009076 - 800906c: 687b ldr r3, [r7, #4] - 800906e: 681b ldr r3, [r3, #0] - 8009070: 4a1a ldr r2, [pc, #104] @ (80090dc ) - 8009072: 4293 cmp r3, r2 - 8009074: d111 bne.n 800909a + 800927a: 687b ldr r3, [r7, #4] + 800927c: 681b ldr r3, [r3, #0] + 800927e: 4a22 ldr r2, [pc, #136] @ (8009308 ) + 8009280: 4293 cmp r3, r2 + 8009282: d022 beq.n 80092ca + 8009284: 687b ldr r3, [r7, #4] + 8009286: 681b ldr r3, [r3, #0] + 8009288: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 800928c: d01d beq.n 80092ca + 800928e: 687b ldr r3, [r7, #4] + 8009290: 681b ldr r3, [r3, #0] + 8009292: 4a1e ldr r2, [pc, #120] @ (800930c ) + 8009294: 4293 cmp r3, r2 + 8009296: d018 beq.n 80092ca + 8009298: 687b ldr r3, [r7, #4] + 800929a: 681b ldr r3, [r3, #0] + 800929c: 4a1c ldr r2, [pc, #112] @ (8009310 ) + 800929e: 4293 cmp r3, r2 + 80092a0: d013 beq.n 80092ca + 80092a2: 687b ldr r3, [r7, #4] + 80092a4: 681b ldr r3, [r3, #0] + 80092a6: 4a1b ldr r2, [pc, #108] @ (8009314 ) + 80092a8: 4293 cmp r3, r2 + 80092aa: d00e beq.n 80092ca + 80092ac: 687b ldr r3, [r7, #4] + 80092ae: 681b ldr r3, [r3, #0] + 80092b0: 4a1b ldr r2, [pc, #108] @ (8009320 ) + 80092b2: 4293 cmp r3, r2 + 80092b4: d009 beq.n 80092ca + 80092b6: 687b ldr r3, [r7, #4] + 80092b8: 681b ldr r3, [r3, #0] + 80092ba: 4a1a ldr r2, [pc, #104] @ (8009324 ) + 80092bc: 4293 cmp r3, r2 + 80092be: d004 beq.n 80092ca + 80092c0: 687b ldr r3, [r7, #4] + 80092c2: 681b ldr r3, [r3, #0] + 80092c4: 4a1a ldr r2, [pc, #104] @ (8009330 ) + 80092c6: 4293 cmp r3, r2 + 80092c8: d111 bne.n 80092ee { tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; - 8009076: 687b ldr r3, [r7, #4] - 8009078: 681b ldr r3, [r3, #0] - 800907a: 689b ldr r3, [r3, #8] - 800907c: f003 0307 and.w r3, r3, #7 - 8009080: 60fb str r3, [r7, #12] + 80092ca: 687b ldr r3, [r7, #4] + 80092cc: 681b ldr r3, [r3, #0] + 80092ce: 689b ldr r3, [r3, #8] + 80092d0: f003 0307 and.w r3, r3, #7 + 80092d4: 60fb str r3, [r7, #12] if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 8009082: 68fb ldr r3, [r7, #12] - 8009084: 2b06 cmp r3, #6 - 8009086: d010 beq.n 80090aa + 80092d6: 68fb ldr r3, [r7, #12] + 80092d8: 2b06 cmp r3, #6 + 80092da: d010 beq.n 80092fe { __HAL_TIM_ENABLE(htim); - 8009088: 687b ldr r3, [r7, #4] - 800908a: 681b ldr r3, [r3, #0] - 800908c: 681a ldr r2, [r3, #0] - 800908e: 687b ldr r3, [r7, #4] - 8009090: 681b ldr r3, [r3, #0] - 8009092: f042 0201 orr.w r2, r2, #1 - 8009096: 601a str r2, [r3, #0] + 80092dc: 687b ldr r3, [r7, #4] + 80092de: 681b ldr r3, [r3, #0] + 80092e0: 681a ldr r2, [r3, #0] + 80092e2: 687b ldr r3, [r7, #4] + 80092e4: 681b ldr r3, [r3, #0] + 80092e6: f042 0201 orr.w r2, r2, #1 + 80092ea: 601a str r2, [r3, #0] if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 8009098: e007 b.n 80090aa + 80092ec: e007 b.n 80092fe } } else { __HAL_TIM_ENABLE(htim); - 800909a: 687b ldr r3, [r7, #4] - 800909c: 681b ldr r3, [r3, #0] - 800909e: 681a ldr r2, [r3, #0] - 80090a0: 687b ldr r3, [r7, #4] - 80090a2: 681b ldr r3, [r3, #0] - 80090a4: f042 0201 orr.w r2, r2, #1 - 80090a8: 601a str r2, [r3, #0] + 80092ee: 687b ldr r3, [r7, #4] + 80092f0: 681b ldr r3, [r3, #0] + 80092f2: 681a ldr r2, [r3, #0] + 80092f4: 687b ldr r3, [r7, #4] + 80092f6: 681b ldr r3, [r3, #0] + 80092f8: f042 0201 orr.w r2, r2, #1 + 80092fc: 601a str r2, [r3, #0] } /* Return function status */ return HAL_OK; - 80090aa: 2300 movs r3, #0 + 80092fe: 2300 movs r3, #0 } - 80090ac: 4618 mov r0, r3 - 80090ae: 3710 adds r7, #16 - 80090b0: 46bd mov sp, r7 - 80090b2: bd80 pop {r7, pc} - 80090b4: 40010000 .word 0x40010000 - 80090b8: 40000400 .word 0x40000400 - 80090bc: 40000800 .word 0x40000800 - 80090c0: 40000c00 .word 0x40000c00 - 80090c4: 40001000 .word 0x40001000 - 80090c8: 40001400 .word 0x40001400 - 80090cc: 40010400 .word 0x40010400 - 80090d0: 40014000 .word 0x40014000 - 80090d4: 40014400 .word 0x40014400 - 80090d8: 40014800 .word 0x40014800 - 80090dc: 40001800 .word 0x40001800 - 80090e0: 40001c00 .word 0x40001c00 - 80090e4: 40002000 .word 0x40002000 - 80090e8: 0800e908 .word 0x0800e908 + 8009300: 4618 mov r0, r3 + 8009302: 3710 adds r7, #16 + 8009304: 46bd mov sp, r7 + 8009306: bd80 pop {r7, pc} + 8009308: 40010000 .word 0x40010000 + 800930c: 40000400 .word 0x40000400 + 8009310: 40000800 .word 0x40000800 + 8009314: 40000c00 .word 0x40000c00 + 8009318: 40001000 .word 0x40001000 + 800931c: 40001400 .word 0x40001400 + 8009320: 40010400 .word 0x40010400 + 8009324: 40014000 .word 0x40014000 + 8009328: 40014400 .word 0x40014400 + 800932c: 40014800 .word 0x40014800 + 8009330: 40001800 .word 0x40001800 + 8009334: 40001c00 .word 0x40001c00 + 8009338: 40002000 .word 0x40002000 + 800933c: 0800ee78 .word 0x0800ee78 -080090ec : +08009340 : * Ex: call @ref HAL_TIM_PWM_DeInit() before HAL_TIM_PWM_Init() * @param htim TIM PWM handle * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim) { - 80090ec: b580 push {r7, lr} - 80090ee: b082 sub sp, #8 - 80090f0: af00 add r7, sp, #0 - 80090f2: 6078 str r0, [r7, #4] + 8009340: b580 push {r7, lr} + 8009342: b082 sub sp, #8 + 8009344: af00 add r7, sp, #0 + 8009346: 6078 str r0, [r7, #4] /* Check the TIM handle allocation */ if (htim == NULL) - 80090f4: 687b ldr r3, [r7, #4] - 80090f6: 2b00 cmp r3, #0 - 80090f8: d101 bne.n 80090fe + 8009348: 687b ldr r3, [r7, #4] + 800934a: 2b00 cmp r3, #0 + 800934c: d101 bne.n 8009352 { return HAL_ERROR; - 80090fa: 2301 movs r3, #1 - 80090fc: e0ed b.n 80092da + 800934e: 2301 movs r3, #1 + 8009350: e0ed b.n 800952e } /* Check the parameters */ assert_param(IS_TIM_INSTANCE(htim->Instance)); - 80090fe: 687b ldr r3, [r7, #4] - 8009100: 681b ldr r3, [r3, #0] - 8009102: 4a78 ldr r2, [pc, #480] @ (80092e4 ) - 8009104: 4293 cmp r3, r2 - 8009106: d045 beq.n 8009194 - 8009108: 687b ldr r3, [r7, #4] - 800910a: 681b ldr r3, [r3, #0] - 800910c: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8009110: d040 beq.n 8009194 - 8009112: 687b ldr r3, [r7, #4] - 8009114: 681b ldr r3, [r3, #0] - 8009116: 4a74 ldr r2, [pc, #464] @ (80092e8 ) - 8009118: 4293 cmp r3, r2 - 800911a: d03b beq.n 8009194 - 800911c: 687b ldr r3, [r7, #4] - 800911e: 681b ldr r3, [r3, #0] - 8009120: 4a72 ldr r2, [pc, #456] @ (80092ec ) - 8009122: 4293 cmp r3, r2 - 8009124: d036 beq.n 8009194 - 8009126: 687b ldr r3, [r7, #4] - 8009128: 681b ldr r3, [r3, #0] - 800912a: 4a71 ldr r2, [pc, #452] @ (80092f0 ) - 800912c: 4293 cmp r3, r2 - 800912e: d031 beq.n 8009194 - 8009130: 687b ldr r3, [r7, #4] - 8009132: 681b ldr r3, [r3, #0] - 8009134: 4a6f ldr r2, [pc, #444] @ (80092f4 ) - 8009136: 4293 cmp r3, r2 - 8009138: d02c beq.n 8009194 - 800913a: 687b ldr r3, [r7, #4] - 800913c: 681b ldr r3, [r3, #0] - 800913e: 4a6e ldr r2, [pc, #440] @ (80092f8 ) - 8009140: 4293 cmp r3, r2 - 8009142: d027 beq.n 8009194 - 8009144: 687b ldr r3, [r7, #4] - 8009146: 681b ldr r3, [r3, #0] - 8009148: 4a6c ldr r2, [pc, #432] @ (80092fc ) - 800914a: 4293 cmp r3, r2 - 800914c: d022 beq.n 8009194 - 800914e: 687b ldr r3, [r7, #4] - 8009150: 681b ldr r3, [r3, #0] - 8009152: 4a6b ldr r2, [pc, #428] @ (8009300 ) - 8009154: 4293 cmp r3, r2 - 8009156: d01d beq.n 8009194 - 8009158: 687b ldr r3, [r7, #4] - 800915a: 681b ldr r3, [r3, #0] - 800915c: 4a69 ldr r2, [pc, #420] @ (8009304 ) - 800915e: 4293 cmp r3, r2 - 8009160: d018 beq.n 8009194 - 8009162: 687b ldr r3, [r7, #4] - 8009164: 681b ldr r3, [r3, #0] - 8009166: 4a68 ldr r2, [pc, #416] @ (8009308 ) - 8009168: 4293 cmp r3, r2 - 800916a: d013 beq.n 8009194 - 800916c: 687b ldr r3, [r7, #4] - 800916e: 681b ldr r3, [r3, #0] - 8009170: 4a66 ldr r2, [pc, #408] @ (800930c ) - 8009172: 4293 cmp r3, r2 - 8009174: d00e beq.n 8009194 - 8009176: 687b ldr r3, [r7, #4] - 8009178: 681b ldr r3, [r3, #0] - 800917a: 4a65 ldr r2, [pc, #404] @ (8009310 ) - 800917c: 4293 cmp r3, r2 - 800917e: d009 beq.n 8009194 - 8009180: 687b ldr r3, [r7, #4] - 8009182: 681b ldr r3, [r3, #0] - 8009184: 4a63 ldr r2, [pc, #396] @ (8009314 ) - 8009186: 4293 cmp r3, r2 - 8009188: d004 beq.n 8009194 - 800918a: f240 512c movw r1, #1324 @ 0x52c - 800918e: 4862 ldr r0, [pc, #392] @ (8009318 ) - 8009190: f7f9 fff0 bl 8003174 + 8009352: 687b ldr r3, [r7, #4] + 8009354: 681b ldr r3, [r3, #0] + 8009356: 4a78 ldr r2, [pc, #480] @ (8009538 ) + 8009358: 4293 cmp r3, r2 + 800935a: d045 beq.n 80093e8 + 800935c: 687b ldr r3, [r7, #4] + 800935e: 681b ldr r3, [r3, #0] + 8009360: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8009364: d040 beq.n 80093e8 + 8009366: 687b ldr r3, [r7, #4] + 8009368: 681b ldr r3, [r3, #0] + 800936a: 4a74 ldr r2, [pc, #464] @ (800953c ) + 800936c: 4293 cmp r3, r2 + 800936e: d03b beq.n 80093e8 + 8009370: 687b ldr r3, [r7, #4] + 8009372: 681b ldr r3, [r3, #0] + 8009374: 4a72 ldr r2, [pc, #456] @ (8009540 ) + 8009376: 4293 cmp r3, r2 + 8009378: d036 beq.n 80093e8 + 800937a: 687b ldr r3, [r7, #4] + 800937c: 681b ldr r3, [r3, #0] + 800937e: 4a71 ldr r2, [pc, #452] @ (8009544 ) + 8009380: 4293 cmp r3, r2 + 8009382: d031 beq.n 80093e8 + 8009384: 687b ldr r3, [r7, #4] + 8009386: 681b ldr r3, [r3, #0] + 8009388: 4a6f ldr r2, [pc, #444] @ (8009548 ) + 800938a: 4293 cmp r3, r2 + 800938c: d02c beq.n 80093e8 + 800938e: 687b ldr r3, [r7, #4] + 8009390: 681b ldr r3, [r3, #0] + 8009392: 4a6e ldr r2, [pc, #440] @ (800954c ) + 8009394: 4293 cmp r3, r2 + 8009396: d027 beq.n 80093e8 + 8009398: 687b ldr r3, [r7, #4] + 800939a: 681b ldr r3, [r3, #0] + 800939c: 4a6c ldr r2, [pc, #432] @ (8009550 ) + 800939e: 4293 cmp r3, r2 + 80093a0: d022 beq.n 80093e8 + 80093a2: 687b ldr r3, [r7, #4] + 80093a4: 681b ldr r3, [r3, #0] + 80093a6: 4a6b ldr r2, [pc, #428] @ (8009554 ) + 80093a8: 4293 cmp r3, r2 + 80093aa: d01d beq.n 80093e8 + 80093ac: 687b ldr r3, [r7, #4] + 80093ae: 681b ldr r3, [r3, #0] + 80093b0: 4a69 ldr r2, [pc, #420] @ (8009558 ) + 80093b2: 4293 cmp r3, r2 + 80093b4: d018 beq.n 80093e8 + 80093b6: 687b ldr r3, [r7, #4] + 80093b8: 681b ldr r3, [r3, #0] + 80093ba: 4a68 ldr r2, [pc, #416] @ (800955c ) + 80093bc: 4293 cmp r3, r2 + 80093be: d013 beq.n 80093e8 + 80093c0: 687b ldr r3, [r7, #4] + 80093c2: 681b ldr r3, [r3, #0] + 80093c4: 4a66 ldr r2, [pc, #408] @ (8009560 ) + 80093c6: 4293 cmp r3, r2 + 80093c8: d00e beq.n 80093e8 + 80093ca: 687b ldr r3, [r7, #4] + 80093cc: 681b ldr r3, [r3, #0] + 80093ce: 4a65 ldr r2, [pc, #404] @ (8009564 ) + 80093d0: 4293 cmp r3, r2 + 80093d2: d009 beq.n 80093e8 + 80093d4: 687b ldr r3, [r7, #4] + 80093d6: 681b ldr r3, [r3, #0] + 80093d8: 4a63 ldr r2, [pc, #396] @ (8009568 ) + 80093da: 4293 cmp r3, r2 + 80093dc: d004 beq.n 80093e8 + 80093de: f240 512c movw r1, #1324 @ 0x52c + 80093e2: 4862 ldr r0, [pc, #392] @ (800956c ) + 80093e4: f7f9 ff22 bl 800322c assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); - 8009194: 687b ldr r3, [r7, #4] - 8009196: 689b ldr r3, [r3, #8] - 8009198: 2b00 cmp r3, #0 - 800919a: d014 beq.n 80091c6 - 800919c: 687b ldr r3, [r7, #4] - 800919e: 689b ldr r3, [r3, #8] - 80091a0: 2b10 cmp r3, #16 - 80091a2: d010 beq.n 80091c6 - 80091a4: 687b ldr r3, [r7, #4] - 80091a6: 689b ldr r3, [r3, #8] - 80091a8: 2b20 cmp r3, #32 - 80091aa: d00c beq.n 80091c6 - 80091ac: 687b ldr r3, [r7, #4] - 80091ae: 689b ldr r3, [r3, #8] - 80091b0: 2b40 cmp r3, #64 @ 0x40 - 80091b2: d008 beq.n 80091c6 - 80091b4: 687b ldr r3, [r7, #4] - 80091b6: 689b ldr r3, [r3, #8] - 80091b8: 2b60 cmp r3, #96 @ 0x60 - 80091ba: d004 beq.n 80091c6 - 80091bc: f240 512d movw r1, #1325 @ 0x52d - 80091c0: 4855 ldr r0, [pc, #340] @ (8009318 ) - 80091c2: f7f9 ffd7 bl 8003174 + 80093e8: 687b ldr r3, [r7, #4] + 80093ea: 689b ldr r3, [r3, #8] + 80093ec: 2b00 cmp r3, #0 + 80093ee: d014 beq.n 800941a + 80093f0: 687b ldr r3, [r7, #4] + 80093f2: 689b ldr r3, [r3, #8] + 80093f4: 2b10 cmp r3, #16 + 80093f6: d010 beq.n 800941a + 80093f8: 687b ldr r3, [r7, #4] + 80093fa: 689b ldr r3, [r3, #8] + 80093fc: 2b20 cmp r3, #32 + 80093fe: d00c beq.n 800941a + 8009400: 687b ldr r3, [r7, #4] + 8009402: 689b ldr r3, [r3, #8] + 8009404: 2b40 cmp r3, #64 @ 0x40 + 8009406: d008 beq.n 800941a + 8009408: 687b ldr r3, [r7, #4] + 800940a: 689b ldr r3, [r3, #8] + 800940c: 2b60 cmp r3, #96 @ 0x60 + 800940e: d004 beq.n 800941a + 8009410: f240 512d movw r1, #1325 @ 0x52d + 8009414: 4855 ldr r0, [pc, #340] @ (800956c ) + 8009416: f7f9 ff09 bl 800322c assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); - 80091c6: 687b ldr r3, [r7, #4] - 80091c8: 691b ldr r3, [r3, #16] - 80091ca: 2b00 cmp r3, #0 - 80091cc: d00e beq.n 80091ec - 80091ce: 687b ldr r3, [r7, #4] - 80091d0: 691b ldr r3, [r3, #16] - 80091d2: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 80091d6: d009 beq.n 80091ec - 80091d8: 687b ldr r3, [r7, #4] - 80091da: 691b ldr r3, [r3, #16] - 80091dc: f5b3 7f00 cmp.w r3, #512 @ 0x200 - 80091e0: d004 beq.n 80091ec - 80091e2: f240 512e movw r1, #1326 @ 0x52e - 80091e6: 484c ldr r0, [pc, #304] @ (8009318 ) - 80091e8: f7f9 ffc4 bl 8003174 + 800941a: 687b ldr r3, [r7, #4] + 800941c: 691b ldr r3, [r3, #16] + 800941e: 2b00 cmp r3, #0 + 8009420: d00e beq.n 8009440 + 8009422: 687b ldr r3, [r7, #4] + 8009424: 691b ldr r3, [r3, #16] + 8009426: f5b3 7f80 cmp.w r3, #256 @ 0x100 + 800942a: d009 beq.n 8009440 + 800942c: 687b ldr r3, [r7, #4] + 800942e: 691b ldr r3, [r3, #16] + 8009430: f5b3 7f00 cmp.w r3, #512 @ 0x200 + 8009434: d004 beq.n 8009440 + 8009436: f240 512e movw r1, #1326 @ 0x52e + 800943a: 484c ldr r0, [pc, #304] @ (800956c ) + 800943c: f7f9 fef6 bl 800322c assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); - 80091ec: 687b ldr r3, [r7, #4] - 80091ee: 681b ldr r3, [r3, #0] - 80091f0: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 80091f4: d004 beq.n 8009200 - 80091f6: 687b ldr r3, [r7, #4] - 80091f8: 681b ldr r3, [r3, #0] - 80091fa: 4a3d ldr r2, [pc, #244] @ (80092f0 ) - 80091fc: 4293 cmp r3, r2 - 80091fe: d107 bne.n 8009210 - 8009200: 687b ldr r3, [r7, #4] - 8009202: 68db ldr r3, [r3, #12] - 8009204: 2b00 cmp r3, #0 - 8009206: bf14 ite ne - 8009208: 2301 movne r3, #1 - 800920a: 2300 moveq r3, #0 - 800920c: b2db uxtb r3, r3 - 800920e: e00e b.n 800922e - 8009210: 687b ldr r3, [r7, #4] - 8009212: 68db ldr r3, [r3, #12] - 8009214: 2b00 cmp r3, #0 - 8009216: d006 beq.n 8009226 - 8009218: 687b ldr r3, [r7, #4] - 800921a: 68db ldr r3, [r3, #12] - 800921c: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8009220: d201 bcs.n 8009226 - 8009222: 2301 movs r3, #1 - 8009224: e000 b.n 8009228 - 8009226: 2300 movs r3, #0 - 8009228: f003 0301 and.w r3, r3, #1 - 800922c: b2db uxtb r3, r3 - 800922e: 2b00 cmp r3, #0 - 8009230: d104 bne.n 800923c - 8009232: f240 512f movw r1, #1327 @ 0x52f - 8009236: 4838 ldr r0, [pc, #224] @ (8009318 ) - 8009238: f7f9 ff9c bl 8003174 + 8009440: 687b ldr r3, [r7, #4] + 8009442: 681b ldr r3, [r3, #0] + 8009444: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8009448: d004 beq.n 8009454 + 800944a: 687b ldr r3, [r7, #4] + 800944c: 681b ldr r3, [r3, #0] + 800944e: 4a3d ldr r2, [pc, #244] @ (8009544 ) + 8009450: 4293 cmp r3, r2 + 8009452: d107 bne.n 8009464 + 8009454: 687b ldr r3, [r7, #4] + 8009456: 68db ldr r3, [r3, #12] + 8009458: 2b00 cmp r3, #0 + 800945a: bf14 ite ne + 800945c: 2301 movne r3, #1 + 800945e: 2300 moveq r3, #0 + 8009460: b2db uxtb r3, r3 + 8009462: e00e b.n 8009482 + 8009464: 687b ldr r3, [r7, #4] + 8009466: 68db ldr r3, [r3, #12] + 8009468: 2b00 cmp r3, #0 + 800946a: d006 beq.n 800947a + 800946c: 687b ldr r3, [r7, #4] + 800946e: 68db ldr r3, [r3, #12] + 8009470: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 8009474: d201 bcs.n 800947a + 8009476: 2301 movs r3, #1 + 8009478: e000 b.n 800947c + 800947a: 2300 movs r3, #0 + 800947c: f003 0301 and.w r3, r3, #1 + 8009480: b2db uxtb r3, r3 + 8009482: 2b00 cmp r3, #0 + 8009484: d104 bne.n 8009490 + 8009486: f240 512f movw r1, #1327 @ 0x52f + 800948a: 4838 ldr r0, [pc, #224] @ (800956c ) + 800948c: f7f9 fece bl 800322c assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); - 800923c: 687b ldr r3, [r7, #4] - 800923e: 699b ldr r3, [r3, #24] - 8009240: 2b00 cmp r3, #0 - 8009242: d008 beq.n 8009256 - 8009244: 687b ldr r3, [r7, #4] - 8009246: 699b ldr r3, [r3, #24] - 8009248: 2b80 cmp r3, #128 @ 0x80 - 800924a: d004 beq.n 8009256 - 800924c: f44f 61a6 mov.w r1, #1328 @ 0x530 - 8009250: 4831 ldr r0, [pc, #196] @ (8009318 ) - 8009252: f7f9 ff8f bl 8003174 + 8009490: 687b ldr r3, [r7, #4] + 8009492: 699b ldr r3, [r3, #24] + 8009494: 2b00 cmp r3, #0 + 8009496: d008 beq.n 80094aa + 8009498: 687b ldr r3, [r7, #4] + 800949a: 699b ldr r3, [r3, #24] + 800949c: 2b80 cmp r3, #128 @ 0x80 + 800949e: d004 beq.n 80094aa + 80094a0: f44f 61a6 mov.w r1, #1328 @ 0x530 + 80094a4: 4831 ldr r0, [pc, #196] @ (800956c ) + 80094a6: f7f9 fec1 bl 800322c if (htim->State == HAL_TIM_STATE_RESET) - 8009256: 687b ldr r3, [r7, #4] - 8009258: f893 303d ldrb.w r3, [r3, #61] @ 0x3d - 800925c: b2db uxtb r3, r3 - 800925e: 2b00 cmp r3, #0 - 8009260: d106 bne.n 8009270 + 80094aa: 687b ldr r3, [r7, #4] + 80094ac: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 80094b0: b2db uxtb r3, r3 + 80094b2: 2b00 cmp r3, #0 + 80094b4: d106 bne.n 80094c4 { /* Allocate lock resource and initialize it */ htim->Lock = HAL_UNLOCKED; - 8009262: 687b ldr r3, [r7, #4] - 8009264: 2200 movs r2, #0 - 8009266: f883 203c strb.w r2, [r3, #60] @ 0x3c + 80094b6: 687b ldr r3, [r7, #4] + 80094b8: 2200 movs r2, #0 + 80094ba: f883 203c strb.w r2, [r3, #60] @ 0x3c } /* Init the low level hardware : GPIO, CLOCK, NVIC */ htim->PWM_MspInitCallback(htim); #else /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ HAL_TIM_PWM_MspInit(htim); - 800926a: 6878 ldr r0, [r7, #4] - 800926c: f000 f856 bl 800931c + 80094be: 6878 ldr r0, [r7, #4] + 80094c0: f000 f856 bl 8009570 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } /* Set the TIM state */ htim->State = HAL_TIM_STATE_BUSY; - 8009270: 687b ldr r3, [r7, #4] - 8009272: 2202 movs r2, #2 - 8009274: f883 203d strb.w r2, [r3, #61] @ 0x3d + 80094c4: 687b ldr r3, [r7, #4] + 80094c6: 2202 movs r2, #2 + 80094c8: f883 203d strb.w r2, [r3, #61] @ 0x3d /* Init the base time for the PWM */ TIM_Base_SetConfig(htim->Instance, &htim->Init); - 8009278: 687b ldr r3, [r7, #4] - 800927a: 681a ldr r2, [r3, #0] - 800927c: 687b ldr r3, [r7, #4] - 800927e: 3304 adds r3, #4 - 8009280: 4619 mov r1, r3 - 8009282: 4610 mov r0, r2 - 8009284: f001 f84c bl 800a320 + 80094cc: 687b ldr r3, [r7, #4] + 80094ce: 681a ldr r2, [r3, #0] + 80094d0: 687b ldr r3, [r7, #4] + 80094d2: 3304 adds r3, #4 + 80094d4: 4619 mov r1, r3 + 80094d6: 4610 mov r0, r2 + 80094d8: f001 f9dc bl 800a894 /* Initialize the DMA burst operation state */ htim->DMABurstState = HAL_DMA_BURST_STATE_READY; - 8009288: 687b ldr r3, [r7, #4] - 800928a: 2201 movs r2, #1 - 800928c: f883 2046 strb.w r2, [r3, #70] @ 0x46 + 80094dc: 687b ldr r3, [r7, #4] + 80094de: 2201 movs r2, #1 + 80094e0: f883 2046 strb.w r2, [r3, #70] @ 0x46 /* Initialize the TIM channels state */ TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 8009290: 687b ldr r3, [r7, #4] - 8009292: 2201 movs r2, #1 - 8009294: f883 203e strb.w r2, [r3, #62] @ 0x3e - 8009298: 687b ldr r3, [r7, #4] - 800929a: 2201 movs r2, #1 - 800929c: f883 203f strb.w r2, [r3, #63] @ 0x3f - 80092a0: 687b ldr r3, [r7, #4] - 80092a2: 2201 movs r2, #1 - 80092a4: f883 2040 strb.w r2, [r3, #64] @ 0x40 - 80092a8: 687b ldr r3, [r7, #4] - 80092aa: 2201 movs r2, #1 - 80092ac: f883 2041 strb.w r2, [r3, #65] @ 0x41 + 80094e4: 687b ldr r3, [r7, #4] + 80094e6: 2201 movs r2, #1 + 80094e8: f883 203e strb.w r2, [r3, #62] @ 0x3e + 80094ec: 687b ldr r3, [r7, #4] + 80094ee: 2201 movs r2, #1 + 80094f0: f883 203f strb.w r2, [r3, #63] @ 0x3f + 80094f4: 687b ldr r3, [r7, #4] + 80094f6: 2201 movs r2, #1 + 80094f8: f883 2040 strb.w r2, [r3, #64] @ 0x40 + 80094fc: 687b ldr r3, [r7, #4] + 80094fe: 2201 movs r2, #1 + 8009500: f883 2041 strb.w r2, [r3, #65] @ 0x41 TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 80092b0: 687b ldr r3, [r7, #4] - 80092b2: 2201 movs r2, #1 - 80092b4: f883 2042 strb.w r2, [r3, #66] @ 0x42 - 80092b8: 687b ldr r3, [r7, #4] - 80092ba: 2201 movs r2, #1 - 80092bc: f883 2043 strb.w r2, [r3, #67] @ 0x43 - 80092c0: 687b ldr r3, [r7, #4] - 80092c2: 2201 movs r2, #1 - 80092c4: f883 2044 strb.w r2, [r3, #68] @ 0x44 - 80092c8: 687b ldr r3, [r7, #4] - 80092ca: 2201 movs r2, #1 - 80092cc: f883 2045 strb.w r2, [r3, #69] @ 0x45 + 8009504: 687b ldr r3, [r7, #4] + 8009506: 2201 movs r2, #1 + 8009508: f883 2042 strb.w r2, [r3, #66] @ 0x42 + 800950c: 687b ldr r3, [r7, #4] + 800950e: 2201 movs r2, #1 + 8009510: f883 2043 strb.w r2, [r3, #67] @ 0x43 + 8009514: 687b ldr r3, [r7, #4] + 8009516: 2201 movs r2, #1 + 8009518: f883 2044 strb.w r2, [r3, #68] @ 0x44 + 800951c: 687b ldr r3, [r7, #4] + 800951e: 2201 movs r2, #1 + 8009520: f883 2045 strb.w r2, [r3, #69] @ 0x45 /* Initialize the TIM state*/ htim->State = HAL_TIM_STATE_READY; - 80092d0: 687b ldr r3, [r7, #4] - 80092d2: 2201 movs r2, #1 - 80092d4: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8009524: 687b ldr r3, [r7, #4] + 8009526: 2201 movs r2, #1 + 8009528: f883 203d strb.w r2, [r3, #61] @ 0x3d return HAL_OK; - 80092d8: 2300 movs r3, #0 + 800952c: 2300 movs r3, #0 } - 80092da: 4618 mov r0, r3 - 80092dc: 3708 adds r7, #8 - 80092de: 46bd mov sp, r7 - 80092e0: bd80 pop {r7, pc} - 80092e2: bf00 nop - 80092e4: 40010000 .word 0x40010000 - 80092e8: 40000400 .word 0x40000400 - 80092ec: 40000800 .word 0x40000800 - 80092f0: 40000c00 .word 0x40000c00 - 80092f4: 40001000 .word 0x40001000 - 80092f8: 40001400 .word 0x40001400 - 80092fc: 40010400 .word 0x40010400 - 8009300: 40014000 .word 0x40014000 - 8009304: 40014400 .word 0x40014400 - 8009308: 40014800 .word 0x40014800 - 800930c: 40001800 .word 0x40001800 - 8009310: 40001c00 .word 0x40001c00 - 8009314: 40002000 .word 0x40002000 - 8009318: 0800e908 .word 0x0800e908 + 800952e: 4618 mov r0, r3 + 8009530: 3708 adds r7, #8 + 8009532: 46bd mov sp, r7 + 8009534: bd80 pop {r7, pc} + 8009536: bf00 nop + 8009538: 40010000 .word 0x40010000 + 800953c: 40000400 .word 0x40000400 + 8009540: 40000800 .word 0x40000800 + 8009544: 40000c00 .word 0x40000c00 + 8009548: 40001000 .word 0x40001000 + 800954c: 40001400 .word 0x40001400 + 8009550: 40010400 .word 0x40010400 + 8009554: 40014000 .word 0x40014000 + 8009558: 40014400 .word 0x40014400 + 800955c: 40014800 .word 0x40014800 + 8009560: 40001800 .word 0x40001800 + 8009564: 40001c00 .word 0x40001c00 + 8009568: 40002000 .word 0x40002000 + 800956c: 0800ee78 .word 0x0800ee78 -0800931c : +08009570 : * @brief Initializes the TIM PWM MSP. * @param htim TIM PWM handle * @retval None */ __weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim) { - 800931c: b480 push {r7} - 800931e: b083 sub sp, #12 - 8009320: af00 add r7, sp, #0 - 8009322: 6078 str r0, [r7, #4] + 8009570: b480 push {r7} + 8009572: b083 sub sp, #12 + 8009574: af00 add r7, sp, #0 + 8009576: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIM_PWM_MspInit could be implemented in the user file */ } - 8009324: bf00 nop - 8009326: 370c adds r7, #12 - 8009328: 46bd mov sp, r7 - 800932a: f85d 7b04 ldr.w r7, [sp], #4 - 800932e: 4770 bx lr + 8009578: bf00 nop + 800957a: 370c adds r7, #12 + 800957c: 46bd mov sp, r7 + 800957e: f85d 7b04 ldr.w r7, [sp], #4 + 8009582: 4770 bx lr -08009330 : +08009584 : * @arg TIM_CHANNEL_3: TIM Channel 3 selected * @arg TIM_CHANNEL_4: TIM Channel 4 selected * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel) { - 8009330: b580 push {r7, lr} - 8009332: b084 sub sp, #16 - 8009334: af00 add r7, sp, #0 - 8009336: 6078 str r0, [r7, #4] - 8009338: 6039 str r1, [r7, #0] + 8009584: b580 push {r7, lr} + 8009586: b084 sub sp, #16 + 8009588: af00 add r7, sp, #0 + 800958a: 6078 str r0, [r7, #4] + 800958c: 6039 str r1, [r7, #0] uint32_t tmpsmcr; /* Check the parameters */ assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); - 800933a: 687b ldr r3, [r7, #4] - 800933c: 681b ldr r3, [r3, #0] - 800933e: 4a84 ldr r2, [pc, #528] @ (8009550 ) - 8009340: 4293 cmp r3, r2 - 8009342: d10f bne.n 8009364 - 8009344: 683b ldr r3, [r7, #0] - 8009346: 2b00 cmp r3, #0 - 8009348: f000 809f beq.w 800948a - 800934c: 683b ldr r3, [r7, #0] - 800934e: 2b04 cmp r3, #4 - 8009350: f000 809b beq.w 800948a - 8009354: 683b ldr r3, [r7, #0] - 8009356: 2b08 cmp r3, #8 - 8009358: f000 8097 beq.w 800948a - 800935c: 683b ldr r3, [r7, #0] - 800935e: 2b0c cmp r3, #12 - 8009360: f000 8093 beq.w 800948a - 8009364: 687b ldr r3, [r7, #4] - 8009366: 681b ldr r3, [r3, #0] - 8009368: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 800936c: d10e bne.n 800938c - 800936e: 683b ldr r3, [r7, #0] - 8009370: 2b00 cmp r3, #0 - 8009372: f000 808a beq.w 800948a - 8009376: 683b ldr r3, [r7, #0] - 8009378: 2b04 cmp r3, #4 - 800937a: f000 8086 beq.w 800948a - 800937e: 683b ldr r3, [r7, #0] - 8009380: 2b08 cmp r3, #8 - 8009382: f000 8082 beq.w 800948a - 8009386: 683b ldr r3, [r7, #0] - 8009388: 2b0c cmp r3, #12 - 800938a: d07e beq.n 800948a - 800938c: 687b ldr r3, [r7, #4] - 800938e: 681b ldr r3, [r3, #0] - 8009390: 4a70 ldr r2, [pc, #448] @ (8009554 ) - 8009392: 4293 cmp r3, r2 - 8009394: d10b bne.n 80093ae - 8009396: 683b ldr r3, [r7, #0] - 8009398: 2b00 cmp r3, #0 - 800939a: d076 beq.n 800948a - 800939c: 683b ldr r3, [r7, #0] - 800939e: 2b04 cmp r3, #4 - 80093a0: d073 beq.n 800948a - 80093a2: 683b ldr r3, [r7, #0] - 80093a4: 2b08 cmp r3, #8 - 80093a6: d070 beq.n 800948a - 80093a8: 683b ldr r3, [r7, #0] - 80093aa: 2b0c cmp r3, #12 - 80093ac: d06d beq.n 800948a - 80093ae: 687b ldr r3, [r7, #4] - 80093b0: 681b ldr r3, [r3, #0] - 80093b2: 4a69 ldr r2, [pc, #420] @ (8009558 ) - 80093b4: 4293 cmp r3, r2 - 80093b6: d10b bne.n 80093d0 - 80093b8: 683b ldr r3, [r7, #0] - 80093ba: 2b00 cmp r3, #0 - 80093bc: d065 beq.n 800948a - 80093be: 683b ldr r3, [r7, #0] - 80093c0: 2b04 cmp r3, #4 - 80093c2: d062 beq.n 800948a - 80093c4: 683b ldr r3, [r7, #0] - 80093c6: 2b08 cmp r3, #8 - 80093c8: d05f beq.n 800948a - 80093ca: 683b ldr r3, [r7, #0] - 80093cc: 2b0c cmp r3, #12 - 80093ce: d05c beq.n 800948a - 80093d0: 687b ldr r3, [r7, #4] - 80093d2: 681b ldr r3, [r3, #0] - 80093d4: 4a61 ldr r2, [pc, #388] @ (800955c ) - 80093d6: 4293 cmp r3, r2 - 80093d8: d10b bne.n 80093f2 - 80093da: 683b ldr r3, [r7, #0] - 80093dc: 2b00 cmp r3, #0 - 80093de: d054 beq.n 800948a - 80093e0: 683b ldr r3, [r7, #0] - 80093e2: 2b04 cmp r3, #4 - 80093e4: d051 beq.n 800948a - 80093e6: 683b ldr r3, [r7, #0] - 80093e8: 2b08 cmp r3, #8 - 80093ea: d04e beq.n 800948a - 80093ec: 683b ldr r3, [r7, #0] - 80093ee: 2b0c cmp r3, #12 - 80093f0: d04b beq.n 800948a - 80093f2: 687b ldr r3, [r7, #4] - 80093f4: 681b ldr r3, [r3, #0] - 80093f6: 4a5a ldr r2, [pc, #360] @ (8009560 ) - 80093f8: 4293 cmp r3, r2 - 80093fa: d10b bne.n 8009414 - 80093fc: 683b ldr r3, [r7, #0] - 80093fe: 2b00 cmp r3, #0 - 8009400: d043 beq.n 800948a - 8009402: 683b ldr r3, [r7, #0] - 8009404: 2b04 cmp r3, #4 - 8009406: d040 beq.n 800948a - 8009408: 683b ldr r3, [r7, #0] - 800940a: 2b08 cmp r3, #8 - 800940c: d03d beq.n 800948a - 800940e: 683b ldr r3, [r7, #0] - 8009410: 2b0c cmp r3, #12 - 8009412: d03a beq.n 800948a - 8009414: 687b ldr r3, [r7, #4] - 8009416: 681b ldr r3, [r3, #0] - 8009418: 4a52 ldr r2, [pc, #328] @ (8009564 ) - 800941a: 4293 cmp r3, r2 - 800941c: d105 bne.n 800942a - 800941e: 683b ldr r3, [r7, #0] - 8009420: 2b00 cmp r3, #0 - 8009422: d032 beq.n 800948a - 8009424: 683b ldr r3, [r7, #0] - 8009426: 2b04 cmp r3, #4 - 8009428: d02f beq.n 800948a - 800942a: 687b ldr r3, [r7, #4] - 800942c: 681b ldr r3, [r3, #0] - 800942e: 4a4e ldr r2, [pc, #312] @ (8009568 ) - 8009430: 4293 cmp r3, r2 - 8009432: d102 bne.n 800943a - 8009434: 683b ldr r3, [r7, #0] - 8009436: 2b00 cmp r3, #0 - 8009438: d027 beq.n 800948a - 800943a: 687b ldr r3, [r7, #4] - 800943c: 681b ldr r3, [r3, #0] - 800943e: 4a4b ldr r2, [pc, #300] @ (800956c ) - 8009440: 4293 cmp r3, r2 - 8009442: d102 bne.n 800944a - 8009444: 683b ldr r3, [r7, #0] - 8009446: 2b00 cmp r3, #0 - 8009448: d01f beq.n 800948a - 800944a: 687b ldr r3, [r7, #4] - 800944c: 681b ldr r3, [r3, #0] - 800944e: 4a48 ldr r2, [pc, #288] @ (8009570 ) - 8009450: 4293 cmp r3, r2 - 8009452: d105 bne.n 8009460 - 8009454: 683b ldr r3, [r7, #0] - 8009456: 2b00 cmp r3, #0 - 8009458: d017 beq.n 800948a - 800945a: 683b ldr r3, [r7, #0] - 800945c: 2b04 cmp r3, #4 - 800945e: d014 beq.n 800948a - 8009460: 687b ldr r3, [r7, #4] - 8009462: 681b ldr r3, [r3, #0] - 8009464: 4a43 ldr r2, [pc, #268] @ (8009574 ) - 8009466: 4293 cmp r3, r2 - 8009468: d102 bne.n 8009470 - 800946a: 683b ldr r3, [r7, #0] - 800946c: 2b00 cmp r3, #0 - 800946e: d00c beq.n 800948a - 8009470: 687b ldr r3, [r7, #4] - 8009472: 681b ldr r3, [r3, #0] - 8009474: 4a40 ldr r2, [pc, #256] @ (8009578 ) - 8009476: 4293 cmp r3, r2 - 8009478: d102 bne.n 8009480 - 800947a: 683b ldr r3, [r7, #0] - 800947c: 2b00 cmp r3, #0 - 800947e: d004 beq.n 800948a - 8009480: f240 51b3 movw r1, #1459 @ 0x5b3 - 8009484: 483d ldr r0, [pc, #244] @ (800957c ) - 8009486: f7f9 fe75 bl 8003174 + 800958e: 687b ldr r3, [r7, #4] + 8009590: 681b ldr r3, [r3, #0] + 8009592: 4a84 ldr r2, [pc, #528] @ (80097a4 ) + 8009594: 4293 cmp r3, r2 + 8009596: d10f bne.n 80095b8 + 8009598: 683b ldr r3, [r7, #0] + 800959a: 2b00 cmp r3, #0 + 800959c: f000 809f beq.w 80096de + 80095a0: 683b ldr r3, [r7, #0] + 80095a2: 2b04 cmp r3, #4 + 80095a4: f000 809b beq.w 80096de + 80095a8: 683b ldr r3, [r7, #0] + 80095aa: 2b08 cmp r3, #8 + 80095ac: f000 8097 beq.w 80096de + 80095b0: 683b ldr r3, [r7, #0] + 80095b2: 2b0c cmp r3, #12 + 80095b4: f000 8093 beq.w 80096de + 80095b8: 687b ldr r3, [r7, #4] + 80095ba: 681b ldr r3, [r3, #0] + 80095bc: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 80095c0: d10e bne.n 80095e0 + 80095c2: 683b ldr r3, [r7, #0] + 80095c4: 2b00 cmp r3, #0 + 80095c6: f000 808a beq.w 80096de + 80095ca: 683b ldr r3, [r7, #0] + 80095cc: 2b04 cmp r3, #4 + 80095ce: f000 8086 beq.w 80096de + 80095d2: 683b ldr r3, [r7, #0] + 80095d4: 2b08 cmp r3, #8 + 80095d6: f000 8082 beq.w 80096de + 80095da: 683b ldr r3, [r7, #0] + 80095dc: 2b0c cmp r3, #12 + 80095de: d07e beq.n 80096de + 80095e0: 687b ldr r3, [r7, #4] + 80095e2: 681b ldr r3, [r3, #0] + 80095e4: 4a70 ldr r2, [pc, #448] @ (80097a8 ) + 80095e6: 4293 cmp r3, r2 + 80095e8: d10b bne.n 8009602 + 80095ea: 683b ldr r3, [r7, #0] + 80095ec: 2b00 cmp r3, #0 + 80095ee: d076 beq.n 80096de + 80095f0: 683b ldr r3, [r7, #0] + 80095f2: 2b04 cmp r3, #4 + 80095f4: d073 beq.n 80096de + 80095f6: 683b ldr r3, [r7, #0] + 80095f8: 2b08 cmp r3, #8 + 80095fa: d070 beq.n 80096de + 80095fc: 683b ldr r3, [r7, #0] + 80095fe: 2b0c cmp r3, #12 + 8009600: d06d beq.n 80096de + 8009602: 687b ldr r3, [r7, #4] + 8009604: 681b ldr r3, [r3, #0] + 8009606: 4a69 ldr r2, [pc, #420] @ (80097ac ) + 8009608: 4293 cmp r3, r2 + 800960a: d10b bne.n 8009624 + 800960c: 683b ldr r3, [r7, #0] + 800960e: 2b00 cmp r3, #0 + 8009610: d065 beq.n 80096de + 8009612: 683b ldr r3, [r7, #0] + 8009614: 2b04 cmp r3, #4 + 8009616: d062 beq.n 80096de + 8009618: 683b ldr r3, [r7, #0] + 800961a: 2b08 cmp r3, #8 + 800961c: d05f beq.n 80096de + 800961e: 683b ldr r3, [r7, #0] + 8009620: 2b0c cmp r3, #12 + 8009622: d05c beq.n 80096de + 8009624: 687b ldr r3, [r7, #4] + 8009626: 681b ldr r3, [r3, #0] + 8009628: 4a61 ldr r2, [pc, #388] @ (80097b0 ) + 800962a: 4293 cmp r3, r2 + 800962c: d10b bne.n 8009646 + 800962e: 683b ldr r3, [r7, #0] + 8009630: 2b00 cmp r3, #0 + 8009632: d054 beq.n 80096de + 8009634: 683b ldr r3, [r7, #0] + 8009636: 2b04 cmp r3, #4 + 8009638: d051 beq.n 80096de + 800963a: 683b ldr r3, [r7, #0] + 800963c: 2b08 cmp r3, #8 + 800963e: d04e beq.n 80096de + 8009640: 683b ldr r3, [r7, #0] + 8009642: 2b0c cmp r3, #12 + 8009644: d04b beq.n 80096de + 8009646: 687b ldr r3, [r7, #4] + 8009648: 681b ldr r3, [r3, #0] + 800964a: 4a5a ldr r2, [pc, #360] @ (80097b4 ) + 800964c: 4293 cmp r3, r2 + 800964e: d10b bne.n 8009668 + 8009650: 683b ldr r3, [r7, #0] + 8009652: 2b00 cmp r3, #0 + 8009654: d043 beq.n 80096de + 8009656: 683b ldr r3, [r7, #0] + 8009658: 2b04 cmp r3, #4 + 800965a: d040 beq.n 80096de + 800965c: 683b ldr r3, [r7, #0] + 800965e: 2b08 cmp r3, #8 + 8009660: d03d beq.n 80096de + 8009662: 683b ldr r3, [r7, #0] + 8009664: 2b0c cmp r3, #12 + 8009666: d03a beq.n 80096de + 8009668: 687b ldr r3, [r7, #4] + 800966a: 681b ldr r3, [r3, #0] + 800966c: 4a52 ldr r2, [pc, #328] @ (80097b8 ) + 800966e: 4293 cmp r3, r2 + 8009670: d105 bne.n 800967e + 8009672: 683b ldr r3, [r7, #0] + 8009674: 2b00 cmp r3, #0 + 8009676: d032 beq.n 80096de + 8009678: 683b ldr r3, [r7, #0] + 800967a: 2b04 cmp r3, #4 + 800967c: d02f beq.n 80096de + 800967e: 687b ldr r3, [r7, #4] + 8009680: 681b ldr r3, [r3, #0] + 8009682: 4a4e ldr r2, [pc, #312] @ (80097bc ) + 8009684: 4293 cmp r3, r2 + 8009686: d102 bne.n 800968e + 8009688: 683b ldr r3, [r7, #0] + 800968a: 2b00 cmp r3, #0 + 800968c: d027 beq.n 80096de + 800968e: 687b ldr r3, [r7, #4] + 8009690: 681b ldr r3, [r3, #0] + 8009692: 4a4b ldr r2, [pc, #300] @ (80097c0 ) + 8009694: 4293 cmp r3, r2 + 8009696: d102 bne.n 800969e + 8009698: 683b ldr r3, [r7, #0] + 800969a: 2b00 cmp r3, #0 + 800969c: d01f beq.n 80096de + 800969e: 687b ldr r3, [r7, #4] + 80096a0: 681b ldr r3, [r3, #0] + 80096a2: 4a48 ldr r2, [pc, #288] @ (80097c4 ) + 80096a4: 4293 cmp r3, r2 + 80096a6: d105 bne.n 80096b4 + 80096a8: 683b ldr r3, [r7, #0] + 80096aa: 2b00 cmp r3, #0 + 80096ac: d017 beq.n 80096de + 80096ae: 683b ldr r3, [r7, #0] + 80096b0: 2b04 cmp r3, #4 + 80096b2: d014 beq.n 80096de + 80096b4: 687b ldr r3, [r7, #4] + 80096b6: 681b ldr r3, [r3, #0] + 80096b8: 4a43 ldr r2, [pc, #268] @ (80097c8 ) + 80096ba: 4293 cmp r3, r2 + 80096bc: d102 bne.n 80096c4 + 80096be: 683b ldr r3, [r7, #0] + 80096c0: 2b00 cmp r3, #0 + 80096c2: d00c beq.n 80096de + 80096c4: 687b ldr r3, [r7, #4] + 80096c6: 681b ldr r3, [r3, #0] + 80096c8: 4a40 ldr r2, [pc, #256] @ (80097cc ) + 80096ca: 4293 cmp r3, r2 + 80096cc: d102 bne.n 80096d4 + 80096ce: 683b ldr r3, [r7, #0] + 80096d0: 2b00 cmp r3, #0 + 80096d2: d004 beq.n 80096de + 80096d4: f240 51b3 movw r1, #1459 @ 0x5b3 + 80096d8: 483d ldr r0, [pc, #244] @ (80097d0 ) + 80096da: f7f9 fda7 bl 800322c /* Check the TIM channel state */ if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) - 800948a: 683b ldr r3, [r7, #0] - 800948c: 2b00 cmp r3, #0 - 800948e: d109 bne.n 80094a4 - 8009490: 687b ldr r3, [r7, #4] - 8009492: f893 303e ldrb.w r3, [r3, #62] @ 0x3e - 8009496: b2db uxtb r3, r3 - 8009498: 2b01 cmp r3, #1 - 800949a: bf14 ite ne - 800949c: 2301 movne r3, #1 - 800949e: 2300 moveq r3, #0 - 80094a0: b2db uxtb r3, r3 - 80094a2: e022 b.n 80094ea - 80094a4: 683b ldr r3, [r7, #0] - 80094a6: 2b04 cmp r3, #4 - 80094a8: d109 bne.n 80094be - 80094aa: 687b ldr r3, [r7, #4] - 80094ac: f893 303f ldrb.w r3, [r3, #63] @ 0x3f - 80094b0: b2db uxtb r3, r3 - 80094b2: 2b01 cmp r3, #1 - 80094b4: bf14 ite ne - 80094b6: 2301 movne r3, #1 - 80094b8: 2300 moveq r3, #0 - 80094ba: b2db uxtb r3, r3 - 80094bc: e015 b.n 80094ea - 80094be: 683b ldr r3, [r7, #0] - 80094c0: 2b08 cmp r3, #8 - 80094c2: d109 bne.n 80094d8 - 80094c4: 687b ldr r3, [r7, #4] - 80094c6: f893 3040 ldrb.w r3, [r3, #64] @ 0x40 - 80094ca: b2db uxtb r3, r3 - 80094cc: 2b01 cmp r3, #1 - 80094ce: bf14 ite ne - 80094d0: 2301 movne r3, #1 - 80094d2: 2300 moveq r3, #0 - 80094d4: b2db uxtb r3, r3 - 80094d6: e008 b.n 80094ea - 80094d8: 687b ldr r3, [r7, #4] - 80094da: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 - 80094de: b2db uxtb r3, r3 - 80094e0: 2b01 cmp r3, #1 - 80094e2: bf14 ite ne - 80094e4: 2301 movne r3, #1 - 80094e6: 2300 moveq r3, #0 - 80094e8: b2db uxtb r3, r3 - 80094ea: 2b00 cmp r3, #0 - 80094ec: d001 beq.n 80094f2 + 80096de: 683b ldr r3, [r7, #0] + 80096e0: 2b00 cmp r3, #0 + 80096e2: d109 bne.n 80096f8 + 80096e4: 687b ldr r3, [r7, #4] + 80096e6: f893 303e ldrb.w r3, [r3, #62] @ 0x3e + 80096ea: b2db uxtb r3, r3 + 80096ec: 2b01 cmp r3, #1 + 80096ee: bf14 ite ne + 80096f0: 2301 movne r3, #1 + 80096f2: 2300 moveq r3, #0 + 80096f4: b2db uxtb r3, r3 + 80096f6: e022 b.n 800973e + 80096f8: 683b ldr r3, [r7, #0] + 80096fa: 2b04 cmp r3, #4 + 80096fc: d109 bne.n 8009712 + 80096fe: 687b ldr r3, [r7, #4] + 8009700: f893 303f ldrb.w r3, [r3, #63] @ 0x3f + 8009704: b2db uxtb r3, r3 + 8009706: 2b01 cmp r3, #1 + 8009708: bf14 ite ne + 800970a: 2301 movne r3, #1 + 800970c: 2300 moveq r3, #0 + 800970e: b2db uxtb r3, r3 + 8009710: e015 b.n 800973e + 8009712: 683b ldr r3, [r7, #0] + 8009714: 2b08 cmp r3, #8 + 8009716: d109 bne.n 800972c + 8009718: 687b ldr r3, [r7, #4] + 800971a: f893 3040 ldrb.w r3, [r3, #64] @ 0x40 + 800971e: b2db uxtb r3, r3 + 8009720: 2b01 cmp r3, #1 + 8009722: bf14 ite ne + 8009724: 2301 movne r3, #1 + 8009726: 2300 moveq r3, #0 + 8009728: b2db uxtb r3, r3 + 800972a: e008 b.n 800973e + 800972c: 687b ldr r3, [r7, #4] + 800972e: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 + 8009732: b2db uxtb r3, r3 + 8009734: 2b01 cmp r3, #1 + 8009736: bf14 ite ne + 8009738: 2301 movne r3, #1 + 800973a: 2300 moveq r3, #0 + 800973c: b2db uxtb r3, r3 + 800973e: 2b00 cmp r3, #0 + 8009740: d001 beq.n 8009746 { return HAL_ERROR; - 80094ee: 2301 movs r3, #1 - 80094f0: e094 b.n 800961c + 8009742: 2301 movs r3, #1 + 8009744: e094 b.n 8009870 } /* Set the TIM channel state */ TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); - 80094f2: 683b ldr r3, [r7, #0] - 80094f4: 2b00 cmp r3, #0 - 80094f6: d104 bne.n 8009502 - 80094f8: 687b ldr r3, [r7, #4] - 80094fa: 2202 movs r2, #2 - 80094fc: f883 203e strb.w r2, [r3, #62] @ 0x3e - 8009500: e013 b.n 800952a - 8009502: 683b ldr r3, [r7, #0] - 8009504: 2b04 cmp r3, #4 - 8009506: d104 bne.n 8009512 - 8009508: 687b ldr r3, [r7, #4] - 800950a: 2202 movs r2, #2 - 800950c: f883 203f strb.w r2, [r3, #63] @ 0x3f - 8009510: e00b b.n 800952a - 8009512: 683b ldr r3, [r7, #0] - 8009514: 2b08 cmp r3, #8 - 8009516: d104 bne.n 8009522 - 8009518: 687b ldr r3, [r7, #4] - 800951a: 2202 movs r2, #2 - 800951c: f883 2040 strb.w r2, [r3, #64] @ 0x40 - 8009520: e003 b.n 800952a - 8009522: 687b ldr r3, [r7, #4] - 8009524: 2202 movs r2, #2 - 8009526: f883 2041 strb.w r2, [r3, #65] @ 0x41 + 8009746: 683b ldr r3, [r7, #0] + 8009748: 2b00 cmp r3, #0 + 800974a: d104 bne.n 8009756 + 800974c: 687b ldr r3, [r7, #4] + 800974e: 2202 movs r2, #2 + 8009750: f883 203e strb.w r2, [r3, #62] @ 0x3e + 8009754: e013 b.n 800977e + 8009756: 683b ldr r3, [r7, #0] + 8009758: 2b04 cmp r3, #4 + 800975a: d104 bne.n 8009766 + 800975c: 687b ldr r3, [r7, #4] + 800975e: 2202 movs r2, #2 + 8009760: f883 203f strb.w r2, [r3, #63] @ 0x3f + 8009764: e00b b.n 800977e + 8009766: 683b ldr r3, [r7, #0] + 8009768: 2b08 cmp r3, #8 + 800976a: d104 bne.n 8009776 + 800976c: 687b ldr r3, [r7, #4] + 800976e: 2202 movs r2, #2 + 8009770: f883 2040 strb.w r2, [r3, #64] @ 0x40 + 8009774: e003 b.n 800977e + 8009776: 687b ldr r3, [r7, #4] + 8009778: 2202 movs r2, #2 + 800977a: f883 2041 strb.w r2, [r3, #65] @ 0x41 /* Enable the Capture compare channel */ TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); - 800952a: 687b ldr r3, [r7, #4] - 800952c: 681b ldr r3, [r3, #0] - 800952e: 2201 movs r2, #1 - 8009530: 6839 ldr r1, [r7, #0] - 8009532: 4618 mov r0, r3 - 8009534: f001 fa74 bl 800aa20 + 800977e: 687b ldr r3, [r7, #4] + 8009780: 681b ldr r3, [r3, #0] + 8009782: 2201 movs r2, #1 + 8009784: 6839 ldr r1, [r7, #0] + 8009786: 4618 mov r0, r3 + 8009788: f001 fc04 bl 800af94 if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) - 8009538: 687b ldr r3, [r7, #4] - 800953a: 681b ldr r3, [r3, #0] - 800953c: 4a04 ldr r2, [pc, #16] @ (8009550 ) - 800953e: 4293 cmp r3, r2 - 8009540: d004 beq.n 800954c - 8009542: 687b ldr r3, [r7, #4] - 8009544: 681b ldr r3, [r3, #0] - 8009546: 4a06 ldr r2, [pc, #24] @ (8009560 ) - 8009548: 4293 cmp r3, r2 - 800954a: d119 bne.n 8009580 - 800954c: 2301 movs r3, #1 - 800954e: e018 b.n 8009582 - 8009550: 40010000 .word 0x40010000 - 8009554: 40000400 .word 0x40000400 - 8009558: 40000800 .word 0x40000800 - 800955c: 40000c00 .word 0x40000c00 - 8009560: 40010400 .word 0x40010400 - 8009564: 40014000 .word 0x40014000 - 8009568: 40014400 .word 0x40014400 - 800956c: 40014800 .word 0x40014800 - 8009570: 40001800 .word 0x40001800 - 8009574: 40001c00 .word 0x40001c00 - 8009578: 40002000 .word 0x40002000 - 800957c: 0800e908 .word 0x0800e908 - 8009580: 2300 movs r3, #0 - 8009582: 2b00 cmp r3, #0 - 8009584: d007 beq.n 8009596 + 800978c: 687b ldr r3, [r7, #4] + 800978e: 681b ldr r3, [r3, #0] + 8009790: 4a04 ldr r2, [pc, #16] @ (80097a4 ) + 8009792: 4293 cmp r3, r2 + 8009794: d004 beq.n 80097a0 + 8009796: 687b ldr r3, [r7, #4] + 8009798: 681b ldr r3, [r3, #0] + 800979a: 4a06 ldr r2, [pc, #24] @ (80097b4 ) + 800979c: 4293 cmp r3, r2 + 800979e: d119 bne.n 80097d4 + 80097a0: 2301 movs r3, #1 + 80097a2: e018 b.n 80097d6 + 80097a4: 40010000 .word 0x40010000 + 80097a8: 40000400 .word 0x40000400 + 80097ac: 40000800 .word 0x40000800 + 80097b0: 40000c00 .word 0x40000c00 + 80097b4: 40010400 .word 0x40010400 + 80097b8: 40014000 .word 0x40014000 + 80097bc: 40014400 .word 0x40014400 + 80097c0: 40014800 .word 0x40014800 + 80097c4: 40001800 .word 0x40001800 + 80097c8: 40001c00 .word 0x40001c00 + 80097cc: 40002000 .word 0x40002000 + 80097d0: 0800ee78 .word 0x0800ee78 + 80097d4: 2300 movs r3, #0 + 80097d6: 2b00 cmp r3, #0 + 80097d8: d007 beq.n 80097ea { /* Enable the main output */ __HAL_TIM_MOE_ENABLE(htim); - 8009586: 687b ldr r3, [r7, #4] - 8009588: 681b ldr r3, [r3, #0] - 800958a: 6c5a ldr r2, [r3, #68] @ 0x44 - 800958c: 687b ldr r3, [r7, #4] - 800958e: 681b ldr r3, [r3, #0] - 8009590: f442 4200 orr.w r2, r2, #32768 @ 0x8000 - 8009594: 645a str r2, [r3, #68] @ 0x44 + 80097da: 687b ldr r3, [r7, #4] + 80097dc: 681b ldr r3, [r3, #0] + 80097de: 6c5a ldr r2, [r3, #68] @ 0x44 + 80097e0: 687b ldr r3, [r7, #4] + 80097e2: 681b ldr r3, [r3, #0] + 80097e4: f442 4200 orr.w r2, r2, #32768 @ 0x8000 + 80097e8: 645a str r2, [r3, #68] @ 0x44 } /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) - 8009596: 687b ldr r3, [r7, #4] - 8009598: 681b ldr r3, [r3, #0] - 800959a: 4a22 ldr r2, [pc, #136] @ (8009624 ) - 800959c: 4293 cmp r3, r2 - 800959e: d022 beq.n 80095e6 - 80095a0: 687b ldr r3, [r7, #4] - 80095a2: 681b ldr r3, [r3, #0] - 80095a4: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 80095a8: d01d beq.n 80095e6 - 80095aa: 687b ldr r3, [r7, #4] - 80095ac: 681b ldr r3, [r3, #0] - 80095ae: 4a1e ldr r2, [pc, #120] @ (8009628 ) - 80095b0: 4293 cmp r3, r2 - 80095b2: d018 beq.n 80095e6 - 80095b4: 687b ldr r3, [r7, #4] - 80095b6: 681b ldr r3, [r3, #0] - 80095b8: 4a1c ldr r2, [pc, #112] @ (800962c ) - 80095ba: 4293 cmp r3, r2 - 80095bc: d013 beq.n 80095e6 - 80095be: 687b ldr r3, [r7, #4] - 80095c0: 681b ldr r3, [r3, #0] - 80095c2: 4a1b ldr r2, [pc, #108] @ (8009630 ) - 80095c4: 4293 cmp r3, r2 - 80095c6: d00e beq.n 80095e6 - 80095c8: 687b ldr r3, [r7, #4] - 80095ca: 681b ldr r3, [r3, #0] - 80095cc: 4a19 ldr r2, [pc, #100] @ (8009634 ) - 80095ce: 4293 cmp r3, r2 - 80095d0: d009 beq.n 80095e6 - 80095d2: 687b ldr r3, [r7, #4] - 80095d4: 681b ldr r3, [r3, #0] - 80095d6: 4a18 ldr r2, [pc, #96] @ (8009638 ) - 80095d8: 4293 cmp r3, r2 - 80095da: d004 beq.n 80095e6 - 80095dc: 687b ldr r3, [r7, #4] - 80095de: 681b ldr r3, [r3, #0] - 80095e0: 4a16 ldr r2, [pc, #88] @ (800963c ) - 80095e2: 4293 cmp r3, r2 - 80095e4: d111 bne.n 800960a + 80097ea: 687b ldr r3, [r7, #4] + 80097ec: 681b ldr r3, [r3, #0] + 80097ee: 4a22 ldr r2, [pc, #136] @ (8009878 ) + 80097f0: 4293 cmp r3, r2 + 80097f2: d022 beq.n 800983a + 80097f4: 687b ldr r3, [r7, #4] + 80097f6: 681b ldr r3, [r3, #0] + 80097f8: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 80097fc: d01d beq.n 800983a + 80097fe: 687b ldr r3, [r7, #4] + 8009800: 681b ldr r3, [r3, #0] + 8009802: 4a1e ldr r2, [pc, #120] @ (800987c ) + 8009804: 4293 cmp r3, r2 + 8009806: d018 beq.n 800983a + 8009808: 687b ldr r3, [r7, #4] + 800980a: 681b ldr r3, [r3, #0] + 800980c: 4a1c ldr r2, [pc, #112] @ (8009880 ) + 800980e: 4293 cmp r3, r2 + 8009810: d013 beq.n 800983a + 8009812: 687b ldr r3, [r7, #4] + 8009814: 681b ldr r3, [r3, #0] + 8009816: 4a1b ldr r2, [pc, #108] @ (8009884 ) + 8009818: 4293 cmp r3, r2 + 800981a: d00e beq.n 800983a + 800981c: 687b ldr r3, [r7, #4] + 800981e: 681b ldr r3, [r3, #0] + 8009820: 4a19 ldr r2, [pc, #100] @ (8009888 ) + 8009822: 4293 cmp r3, r2 + 8009824: d009 beq.n 800983a + 8009826: 687b ldr r3, [r7, #4] + 8009828: 681b ldr r3, [r3, #0] + 800982a: 4a18 ldr r2, [pc, #96] @ (800988c ) + 800982c: 4293 cmp r3, r2 + 800982e: d004 beq.n 800983a + 8009830: 687b ldr r3, [r7, #4] + 8009832: 681b ldr r3, [r3, #0] + 8009834: 4a16 ldr r2, [pc, #88] @ (8009890 ) + 8009836: 4293 cmp r3, r2 + 8009838: d111 bne.n 800985e { tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; - 80095e6: 687b ldr r3, [r7, #4] - 80095e8: 681b ldr r3, [r3, #0] - 80095ea: 689b ldr r3, [r3, #8] - 80095ec: f003 0307 and.w r3, r3, #7 - 80095f0: 60fb str r3, [r7, #12] + 800983a: 687b ldr r3, [r7, #4] + 800983c: 681b ldr r3, [r3, #0] + 800983e: 689b ldr r3, [r3, #8] + 8009840: f003 0307 and.w r3, r3, #7 + 8009844: 60fb str r3, [r7, #12] if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 80095f2: 68fb ldr r3, [r7, #12] - 80095f4: 2b06 cmp r3, #6 - 80095f6: d010 beq.n 800961a + 8009846: 68fb ldr r3, [r7, #12] + 8009848: 2b06 cmp r3, #6 + 800984a: d010 beq.n 800986e { __HAL_TIM_ENABLE(htim); - 80095f8: 687b ldr r3, [r7, #4] - 80095fa: 681b ldr r3, [r3, #0] - 80095fc: 681a ldr r2, [r3, #0] - 80095fe: 687b ldr r3, [r7, #4] - 8009600: 681b ldr r3, [r3, #0] - 8009602: f042 0201 orr.w r2, r2, #1 - 8009606: 601a str r2, [r3, #0] + 800984c: 687b ldr r3, [r7, #4] + 800984e: 681b ldr r3, [r3, #0] + 8009850: 681a ldr r2, [r3, #0] + 8009852: 687b ldr r3, [r7, #4] + 8009854: 681b ldr r3, [r3, #0] + 8009856: f042 0201 orr.w r2, r2, #1 + 800985a: 601a str r2, [r3, #0] if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 8009608: e007 b.n 800961a + 800985c: e007 b.n 800986e } } else { __HAL_TIM_ENABLE(htim); - 800960a: 687b ldr r3, [r7, #4] - 800960c: 681b ldr r3, [r3, #0] - 800960e: 681a ldr r2, [r3, #0] - 8009610: 687b ldr r3, [r7, #4] - 8009612: 681b ldr r3, [r3, #0] - 8009614: f042 0201 orr.w r2, r2, #1 - 8009618: 601a str r2, [r3, #0] + 800985e: 687b ldr r3, [r7, #4] + 8009860: 681b ldr r3, [r3, #0] + 8009862: 681a ldr r2, [r3, #0] + 8009864: 687b ldr r3, [r7, #4] + 8009866: 681b ldr r3, [r3, #0] + 8009868: f042 0201 orr.w r2, r2, #1 + 800986c: 601a str r2, [r3, #0] } /* Return function status */ return HAL_OK; - 800961a: 2300 movs r3, #0 + 800986e: 2300 movs r3, #0 } - 800961c: 4618 mov r0, r3 - 800961e: 3710 adds r7, #16 - 8009620: 46bd mov sp, r7 - 8009622: bd80 pop {r7, pc} - 8009624: 40010000 .word 0x40010000 - 8009628: 40000400 .word 0x40000400 - 800962c: 40000800 .word 0x40000800 - 8009630: 40000c00 .word 0x40000c00 - 8009634: 40010400 .word 0x40010400 - 8009638: 40014000 .word 0x40014000 - 800963c: 40001800 .word 0x40001800 + 8009870: 4618 mov r0, r3 + 8009872: 3710 adds r7, #16 + 8009874: 46bd mov sp, r7 + 8009876: bd80 pop {r7, pc} + 8009878: 40010000 .word 0x40010000 + 800987c: 40000400 .word 0x40000400 + 8009880: 40000800 .word 0x40000800 + 8009884: 40000c00 .word 0x40000c00 + 8009888: 40010400 .word 0x40010400 + 800988c: 40014000 .word 0x40014000 + 8009890: 40001800 .word 0x40001800 -08009640 : +08009894 : + * @arg TIM_OPMODE_SINGLE: Only one pulse will be generated. + * @arg TIM_OPMODE_REPETITIVE: Repetitive pulses will be generated. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OnePulse_Init(TIM_HandleTypeDef *htim, uint32_t OnePulseMode) +{ + 8009894: b580 push {r7, lr} + 8009896: b082 sub sp, #8 + 8009898: af00 add r7, sp, #0 + 800989a: 6078 str r0, [r7, #4] + 800989c: 6039 str r1, [r7, #0] + /* Check the TIM handle allocation */ + if (htim == NULL) + 800989e: 687b ldr r3, [r7, #4] + 80098a0: 2b00 cmp r3, #0 + 80098a2: d101 bne.n 80098a8 + { + return HAL_ERROR; + 80098a4: 2301 movs r3, #1 + 80098a6: e0f8 b.n 8009a9a + } + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + 80098a8: 687b ldr r3, [r7, #4] + 80098aa: 681b ldr r3, [r3, #0] + 80098ac: 4a7d ldr r2, [pc, #500] @ (8009aa4 ) + 80098ae: 4293 cmp r3, r2 + 80098b0: d045 beq.n 800993e + 80098b2: 687b ldr r3, [r7, #4] + 80098b4: 681b ldr r3, [r3, #0] + 80098b6: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 80098ba: d040 beq.n 800993e + 80098bc: 687b ldr r3, [r7, #4] + 80098be: 681b ldr r3, [r3, #0] + 80098c0: 4a79 ldr r2, [pc, #484] @ (8009aa8 ) + 80098c2: 4293 cmp r3, r2 + 80098c4: d03b beq.n 800993e + 80098c6: 687b ldr r3, [r7, #4] + 80098c8: 681b ldr r3, [r3, #0] + 80098ca: 4a78 ldr r2, [pc, #480] @ (8009aac ) + 80098cc: 4293 cmp r3, r2 + 80098ce: d036 beq.n 800993e + 80098d0: 687b ldr r3, [r7, #4] + 80098d2: 681b ldr r3, [r3, #0] + 80098d4: 4a76 ldr r2, [pc, #472] @ (8009ab0 ) + 80098d6: 4293 cmp r3, r2 + 80098d8: d031 beq.n 800993e + 80098da: 687b ldr r3, [r7, #4] + 80098dc: 681b ldr r3, [r3, #0] + 80098de: 4a75 ldr r2, [pc, #468] @ (8009ab4 ) + 80098e0: 4293 cmp r3, r2 + 80098e2: d02c beq.n 800993e + 80098e4: 687b ldr r3, [r7, #4] + 80098e6: 681b ldr r3, [r3, #0] + 80098e8: 4a73 ldr r2, [pc, #460] @ (8009ab8 ) + 80098ea: 4293 cmp r3, r2 + 80098ec: d027 beq.n 800993e + 80098ee: 687b ldr r3, [r7, #4] + 80098f0: 681b ldr r3, [r3, #0] + 80098f2: 4a72 ldr r2, [pc, #456] @ (8009abc ) + 80098f4: 4293 cmp r3, r2 + 80098f6: d022 beq.n 800993e + 80098f8: 687b ldr r3, [r7, #4] + 80098fa: 681b ldr r3, [r3, #0] + 80098fc: 4a70 ldr r2, [pc, #448] @ (8009ac0 ) + 80098fe: 4293 cmp r3, r2 + 8009900: d01d beq.n 800993e + 8009902: 687b ldr r3, [r7, #4] + 8009904: 681b ldr r3, [r3, #0] + 8009906: 4a6f ldr r2, [pc, #444] @ (8009ac4 ) + 8009908: 4293 cmp r3, r2 + 800990a: d018 beq.n 800993e + 800990c: 687b ldr r3, [r7, #4] + 800990e: 681b ldr r3, [r3, #0] + 8009910: 4a6d ldr r2, [pc, #436] @ (8009ac8 ) + 8009912: 4293 cmp r3, r2 + 8009914: d013 beq.n 800993e + 8009916: 687b ldr r3, [r7, #4] + 8009918: 681b ldr r3, [r3, #0] + 800991a: 4a6c ldr r2, [pc, #432] @ (8009acc ) + 800991c: 4293 cmp r3, r2 + 800991e: d00e beq.n 800993e + 8009920: 687b ldr r3, [r7, #4] + 8009922: 681b ldr r3, [r3, #0] + 8009924: 4a6a ldr r2, [pc, #424] @ (8009ad0 ) + 8009926: 4293 cmp r3, r2 + 8009928: d009 beq.n 800993e + 800992a: 687b ldr r3, [r7, #4] + 800992c: 681b ldr r3, [r3, #0] + 800992e: 4a69 ldr r2, [pc, #420] @ (8009ad4 ) + 8009930: 4293 cmp r3, r2 + 8009932: d004 beq.n 800993e + 8009934: f640 214d movw r1, #2637 @ 0xa4d + 8009938: 4867 ldr r0, [pc, #412] @ (8009ad8 ) + 800993a: f7f9 fc77 bl 800322c + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + 800993e: 687b ldr r3, [r7, #4] + 8009940: 689b ldr r3, [r3, #8] + 8009942: 2b00 cmp r3, #0 + 8009944: d014 beq.n 8009970 + 8009946: 687b ldr r3, [r7, #4] + 8009948: 689b ldr r3, [r3, #8] + 800994a: 2b10 cmp r3, #16 + 800994c: d010 beq.n 8009970 + 800994e: 687b ldr r3, [r7, #4] + 8009950: 689b ldr r3, [r3, #8] + 8009952: 2b20 cmp r3, #32 + 8009954: d00c beq.n 8009970 + 8009956: 687b ldr r3, [r7, #4] + 8009958: 689b ldr r3, [r3, #8] + 800995a: 2b40 cmp r3, #64 @ 0x40 + 800995c: d008 beq.n 8009970 + 800995e: 687b ldr r3, [r7, #4] + 8009960: 689b ldr r3, [r3, #8] + 8009962: 2b60 cmp r3, #96 @ 0x60 + 8009964: d004 beq.n 8009970 + 8009966: f640 214e movw r1, #2638 @ 0xa4e + 800996a: 485b ldr r0, [pc, #364] @ (8009ad8 ) + 800996c: f7f9 fc5e bl 800322c + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + 8009970: 687b ldr r3, [r7, #4] + 8009972: 691b ldr r3, [r3, #16] + 8009974: 2b00 cmp r3, #0 + 8009976: d00e beq.n 8009996 + 8009978: 687b ldr r3, [r7, #4] + 800997a: 691b ldr r3, [r3, #16] + 800997c: f5b3 7f80 cmp.w r3, #256 @ 0x100 + 8009980: d009 beq.n 8009996 + 8009982: 687b ldr r3, [r7, #4] + 8009984: 691b ldr r3, [r3, #16] + 8009986: f5b3 7f00 cmp.w r3, #512 @ 0x200 + 800998a: d004 beq.n 8009996 + 800998c: f640 214f movw r1, #2639 @ 0xa4f + 8009990: 4851 ldr r0, [pc, #324] @ (8009ad8 ) + 8009992: f7f9 fc4b bl 800322c + assert_param(IS_TIM_OPM_MODE(OnePulseMode)); + 8009996: 683b ldr r3, [r7, #0] + 8009998: 2b08 cmp r3, #8 + 800999a: d007 beq.n 80099ac + 800999c: 683b ldr r3, [r7, #0] + 800999e: 2b00 cmp r3, #0 + 80099a0: d004 beq.n 80099ac + 80099a2: f44f 6125 mov.w r1, #2640 @ 0xa50 + 80099a6: 484c ldr r0, [pc, #304] @ (8009ad8 ) + 80099a8: f7f9 fc40 bl 800322c + assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + 80099ac: 687b ldr r3, [r7, #4] + 80099ae: 681b ldr r3, [r3, #0] + 80099b0: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 80099b4: d004 beq.n 80099c0 + 80099b6: 687b ldr r3, [r7, #4] + 80099b8: 681b ldr r3, [r3, #0] + 80099ba: 4a3d ldr r2, [pc, #244] @ (8009ab0 ) + 80099bc: 4293 cmp r3, r2 + 80099be: d107 bne.n 80099d0 + 80099c0: 687b ldr r3, [r7, #4] + 80099c2: 68db ldr r3, [r3, #12] + 80099c4: 2b00 cmp r3, #0 + 80099c6: bf14 ite ne + 80099c8: 2301 movne r3, #1 + 80099ca: 2300 moveq r3, #0 + 80099cc: b2db uxtb r3, r3 + 80099ce: e00e b.n 80099ee + 80099d0: 687b ldr r3, [r7, #4] + 80099d2: 68db ldr r3, [r3, #12] + 80099d4: 2b00 cmp r3, #0 + 80099d6: d006 beq.n 80099e6 + 80099d8: 687b ldr r3, [r7, #4] + 80099da: 68db ldr r3, [r3, #12] + 80099dc: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 80099e0: d201 bcs.n 80099e6 + 80099e2: 2301 movs r3, #1 + 80099e4: e000 b.n 80099e8 + 80099e6: 2300 movs r3, #0 + 80099e8: f003 0301 and.w r3, r3, #1 + 80099ec: b2db uxtb r3, r3 + 80099ee: 2b00 cmp r3, #0 + 80099f0: d104 bne.n 80099fc + 80099f2: f640 2151 movw r1, #2641 @ 0xa51 + 80099f6: 4838 ldr r0, [pc, #224] @ (8009ad8 ) + 80099f8: f7f9 fc18 bl 800322c + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + 80099fc: 687b ldr r3, [r7, #4] + 80099fe: 699b ldr r3, [r3, #24] + 8009a00: 2b00 cmp r3, #0 + 8009a02: d008 beq.n 8009a16 + 8009a04: 687b ldr r3, [r7, #4] + 8009a06: 699b ldr r3, [r3, #24] + 8009a08: 2b80 cmp r3, #128 @ 0x80 + 8009a0a: d004 beq.n 8009a16 + 8009a0c: f640 2152 movw r1, #2642 @ 0xa52 + 8009a10: 4831 ldr r0, [pc, #196] @ (8009ad8 ) + 8009a12: f7f9 fc0b bl 800322c + + if (htim->State == HAL_TIM_STATE_RESET) + 8009a16: 687b ldr r3, [r7, #4] + 8009a18: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 8009a1c: b2db uxtb r3, r3 + 8009a1e: 2b00 cmp r3, #0 + 8009a20: d106 bne.n 8009a30 + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + 8009a22: 687b ldr r3, [r7, #4] + 8009a24: 2200 movs r2, #0 + 8009a26: f883 203c strb.w r2, [r3, #60] @ 0x3c + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->OnePulse_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_OnePulse_MspInit(htim); + 8009a2a: 6878 ldr r0, [r7, #4] + 8009a2c: f000 f856 bl 8009adc +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + 8009a30: 687b ldr r3, [r7, #4] + 8009a32: 2202 movs r2, #2 + 8009a34: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Configure the Time base in the One Pulse Mode */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + 8009a38: 687b ldr r3, [r7, #4] + 8009a3a: 681a ldr r2, [r3, #0] + 8009a3c: 687b ldr r3, [r7, #4] + 8009a3e: 3304 adds r3, #4 + 8009a40: 4619 mov r1, r3 + 8009a42: 4610 mov r0, r2 + 8009a44: f000 ff26 bl 800a894 + + /* Reset the OPM Bit */ + htim->Instance->CR1 &= ~TIM_CR1_OPM; + 8009a48: 687b ldr r3, [r7, #4] + 8009a4a: 681b ldr r3, [r3, #0] + 8009a4c: 681a ldr r2, [r3, #0] + 8009a4e: 687b ldr r3, [r7, #4] + 8009a50: 681b ldr r3, [r3, #0] + 8009a52: f022 0208 bic.w r2, r2, #8 + 8009a56: 601a str r2, [r3, #0] + + /* Configure the OPM Mode */ + htim->Instance->CR1 |= OnePulseMode; + 8009a58: 687b ldr r3, [r7, #4] + 8009a5a: 681b ldr r3, [r3, #0] + 8009a5c: 6819 ldr r1, [r3, #0] + 8009a5e: 687b ldr r3, [r7, #4] + 8009a60: 681b ldr r3, [r3, #0] + 8009a62: 683a ldr r2, [r7, #0] + 8009a64: 430a orrs r2, r1 + 8009a66: 601a str r2, [r3, #0] + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + 8009a68: 687b ldr r3, [r7, #4] + 8009a6a: 2201 movs r2, #1 + 8009a6c: f883 2046 strb.w r2, [r3, #70] @ 0x46 + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 8009a70: 687b ldr r3, [r7, #4] + 8009a72: 2201 movs r2, #1 + 8009a74: f883 203e strb.w r2, [r3, #62] @ 0x3e + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 8009a78: 687b ldr r3, [r7, #4] + 8009a7a: 2201 movs r2, #1 + 8009a7c: f883 203f strb.w r2, [r3, #63] @ 0x3f + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 8009a80: 687b ldr r3, [r7, #4] + 8009a82: 2201 movs r2, #1 + 8009a84: f883 2042 strb.w r2, [r3, #66] @ 0x42 + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 8009a88: 687b ldr r3, [r7, #4] + 8009a8a: 2201 movs r2, #1 + 8009a8c: f883 2043 strb.w r2, [r3, #67] @ 0x43 + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + 8009a90: 687b ldr r3, [r7, #4] + 8009a92: 2201 movs r2, #1 + 8009a94: f883 203d strb.w r2, [r3, #61] @ 0x3d + + return HAL_OK; + 8009a98: 2300 movs r3, #0 +} + 8009a9a: 4618 mov r0, r3 + 8009a9c: 3708 adds r7, #8 + 8009a9e: 46bd mov sp, r7 + 8009aa0: bd80 pop {r7, pc} + 8009aa2: bf00 nop + 8009aa4: 40010000 .word 0x40010000 + 8009aa8: 40000400 .word 0x40000400 + 8009aac: 40000800 .word 0x40000800 + 8009ab0: 40000c00 .word 0x40000c00 + 8009ab4: 40001000 .word 0x40001000 + 8009ab8: 40001400 .word 0x40001400 + 8009abc: 40010400 .word 0x40010400 + 8009ac0: 40014000 .word 0x40014000 + 8009ac4: 40014400 .word 0x40014400 + 8009ac8: 40014800 .word 0x40014800 + 8009acc: 40001800 .word 0x40001800 + 8009ad0: 40001c00 .word 0x40001c00 + 8009ad4: 40002000 .word 0x40002000 + 8009ad8: 0800ee78 .word 0x0800ee78 + +08009adc : + * @brief Initializes the TIM One Pulse MSP. + * @param htim TIM One Pulse handle + * @retval None + */ +__weak void HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef *htim) +{ + 8009adc: b480 push {r7} + 8009ade: b083 sub sp, #12 + 8009ae0: af00 add r7, sp, #0 + 8009ae2: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_OnePulse_MspInit could be implemented in the user file + */ +} + 8009ae4: bf00 nop + 8009ae6: 370c adds r7, #12 + 8009ae8: 46bd mov sp, r7 + 8009aea: f85d 7b04 ldr.w r7, [sp], #4 + 8009aee: 4770 bx lr + +08009af0 : + * @param htim TIM One Pulse handle + * @param OutputChannel See note above + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OnePulse_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +{ + 8009af0: b580 push {r7, lr} + 8009af2: b084 sub sp, #16 + 8009af4: af00 add r7, sp, #0 + 8009af6: 6078 str r0, [r7, #4] + 8009af8: 6039 str r1, [r7, #0] + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 8009afa: 687b ldr r3, [r7, #4] + 8009afc: f893 303e ldrb.w r3, [r3, #62] @ 0x3e + 8009b00: 73fb strb r3, [r7, #15] + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 8009b02: 687b ldr r3, [r7, #4] + 8009b04: f893 303f ldrb.w r3, [r3, #63] @ 0x3f + 8009b08: 73bb strb r3, [r7, #14] + HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1); + 8009b0a: 687b ldr r3, [r7, #4] + 8009b0c: f893 3042 ldrb.w r3, [r3, #66] @ 0x42 + 8009b10: 737b strb r3, [r7, #13] + HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2); + 8009b12: 687b ldr r3, [r7, #4] + 8009b14: f893 3043 ldrb.w r3, [r3, #67] @ 0x43 + 8009b18: 733b strb r3, [r7, #12] + + /* Prevent unused argument(s) compilation warning */ + UNUSED(OutputChannel); + + /* Check the TIM channels state */ + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + 8009b1a: 7bfb ldrb r3, [r7, #15] + 8009b1c: 2b01 cmp r3, #1 + 8009b1e: d108 bne.n 8009b32 + || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + 8009b20: 7bbb ldrb r3, [r7, #14] + 8009b22: 2b01 cmp r3, #1 + 8009b24: d105 bne.n 8009b32 + || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + 8009b26: 7b7b ldrb r3, [r7, #13] + 8009b28: 2b01 cmp r3, #1 + 8009b2a: d102 bne.n 8009b32 + || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + 8009b2c: 7b3b ldrb r3, [r7, #12] + 8009b2e: 2b01 cmp r3, #1 + 8009b30: d001 beq.n 8009b36 + { + return HAL_ERROR; + 8009b32: 2301 movs r3, #1 + 8009b34: e035 b.n 8009ba2 + } + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 8009b36: 687b ldr r3, [r7, #4] + 8009b38: 2202 movs r2, #2 + 8009b3a: f883 203e strb.w r2, [r3, #62] @ 0x3e + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 8009b3e: 687b ldr r3, [r7, #4] + 8009b40: 2202 movs r2, #2 + 8009b42: f883 203f strb.w r2, [r3, #63] @ 0x3f + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 8009b46: 687b ldr r3, [r7, #4] + 8009b48: 2202 movs r2, #2 + 8009b4a: f883 2042 strb.w r2, [r3, #66] @ 0x42 + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 8009b4e: 687b ldr r3, [r7, #4] + 8009b50: 2202 movs r2, #2 + 8009b52: f883 2043 strb.w r2, [r3, #67] @ 0x43 + whatever the combination, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be enabled together + + No need to enable the counter, it's enabled automatically by hardware + (the counter starts in response to a stimulus and generate a pulse */ + + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + 8009b56: 687b ldr r3, [r7, #4] + 8009b58: 681b ldr r3, [r3, #0] + 8009b5a: 2201 movs r2, #1 + 8009b5c: 2100 movs r1, #0 + 8009b5e: 4618 mov r0, r3 + 8009b60: f001 fa18 bl 800af94 + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + 8009b64: 687b ldr r3, [r7, #4] + 8009b66: 681b ldr r3, [r3, #0] + 8009b68: 2201 movs r2, #1 + 8009b6a: 2104 movs r1, #4 + 8009b6c: 4618 mov r0, r3 + 8009b6e: f001 fa11 bl 800af94 + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + 8009b72: 687b ldr r3, [r7, #4] + 8009b74: 681b ldr r3, [r3, #0] + 8009b76: 4a0d ldr r2, [pc, #52] @ (8009bac ) + 8009b78: 4293 cmp r3, r2 + 8009b7a: d004 beq.n 8009b86 + 8009b7c: 687b ldr r3, [r7, #4] + 8009b7e: 681b ldr r3, [r3, #0] + 8009b80: 4a0b ldr r2, [pc, #44] @ (8009bb0 ) + 8009b82: 4293 cmp r3, r2 + 8009b84: d101 bne.n 8009b8a + 8009b86: 2301 movs r3, #1 + 8009b88: e000 b.n 8009b8c + 8009b8a: 2300 movs r3, #0 + 8009b8c: 2b00 cmp r3, #0 + 8009b8e: d007 beq.n 8009ba0 + { + /* Enable the main output */ + __HAL_TIM_MOE_ENABLE(htim); + 8009b90: 687b ldr r3, [r7, #4] + 8009b92: 681b ldr r3, [r3, #0] + 8009b94: 6c5a ldr r2, [r3, #68] @ 0x44 + 8009b96: 687b ldr r3, [r7, #4] + 8009b98: 681b ldr r3, [r3, #0] + 8009b9a: f442 4200 orr.w r2, r2, #32768 @ 0x8000 + 8009b9e: 645a str r2, [r3, #68] @ 0x44 + } + + /* Return function status */ + return HAL_OK; + 8009ba0: 2300 movs r3, #0 +} + 8009ba2: 4618 mov r0, r3 + 8009ba4: 3710 adds r7, #16 + 8009ba6: 46bd mov sp, r7 + 8009ba8: bd80 pop {r7, pc} + 8009baa: bf00 nop + 8009bac: 40010000 .word 0x40010000 + 8009bb0: 40010400 .word 0x40010400 + +08009bb4 : * @brief This function handles TIM interrupts requests. * @param htim TIM handle * @retval None */ void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim) { - 8009640: b580 push {r7, lr} - 8009642: b084 sub sp, #16 - 8009644: af00 add r7, sp, #0 - 8009646: 6078 str r0, [r7, #4] + 8009bb4: b580 push {r7, lr} + 8009bb6: b084 sub sp, #16 + 8009bb8: af00 add r7, sp, #0 + 8009bba: 6078 str r0, [r7, #4] uint32_t itsource = htim->Instance->DIER; - 8009648: 687b ldr r3, [r7, #4] - 800964a: 681b ldr r3, [r3, #0] - 800964c: 68db ldr r3, [r3, #12] - 800964e: 60fb str r3, [r7, #12] + 8009bbc: 687b ldr r3, [r7, #4] + 8009bbe: 681b ldr r3, [r3, #0] + 8009bc0: 68db ldr r3, [r3, #12] + 8009bc2: 60fb str r3, [r7, #12] uint32_t itflag = htim->Instance->SR; - 8009650: 687b ldr r3, [r7, #4] - 8009652: 681b ldr r3, [r3, #0] - 8009654: 691b ldr r3, [r3, #16] - 8009656: 60bb str r3, [r7, #8] + 8009bc4: 687b ldr r3, [r7, #4] + 8009bc6: 681b ldr r3, [r3, #0] + 8009bc8: 691b ldr r3, [r3, #16] + 8009bca: 60bb str r3, [r7, #8] /* Capture compare 1 event */ if ((itflag & (TIM_FLAG_CC1)) == (TIM_FLAG_CC1)) - 8009658: 68bb ldr r3, [r7, #8] - 800965a: f003 0302 and.w r3, r3, #2 - 800965e: 2b00 cmp r3, #0 - 8009660: d020 beq.n 80096a4 + 8009bcc: 68bb ldr r3, [r7, #8] + 8009bce: f003 0302 and.w r3, r3, #2 + 8009bd2: 2b00 cmp r3, #0 + 8009bd4: d020 beq.n 8009c18 { if ((itsource & (TIM_IT_CC1)) == (TIM_IT_CC1)) - 8009662: 68fb ldr r3, [r7, #12] - 8009664: f003 0302 and.w r3, r3, #2 - 8009668: 2b00 cmp r3, #0 - 800966a: d01b beq.n 80096a4 + 8009bd6: 68fb ldr r3, [r7, #12] + 8009bd8: f003 0302 and.w r3, r3, #2 + 8009bdc: 2b00 cmp r3, #0 + 8009bde: d01b beq.n 8009c18 { { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC1); - 800966c: 687b ldr r3, [r7, #4] - 800966e: 681b ldr r3, [r3, #0] - 8009670: f06f 0202 mvn.w r2, #2 - 8009674: 611a str r2, [r3, #16] + 8009be0: 687b ldr r3, [r7, #4] + 8009be2: 681b ldr r3, [r3, #0] + 8009be4: f06f 0202 mvn.w r2, #2 + 8009be8: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; - 8009676: 687b ldr r3, [r7, #4] - 8009678: 2201 movs r2, #1 - 800967a: 771a strb r2, [r3, #28] + 8009bea: 687b ldr r3, [r7, #4] + 8009bec: 2201 movs r2, #1 + 8009bee: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U) - 800967c: 687b ldr r3, [r7, #4] - 800967e: 681b ldr r3, [r3, #0] - 8009680: 699b ldr r3, [r3, #24] - 8009682: f003 0303 and.w r3, r3, #3 - 8009686: 2b00 cmp r3, #0 - 8009688: d003 beq.n 8009692 + 8009bf0: 687b ldr r3, [r7, #4] + 8009bf2: 681b ldr r3, [r3, #0] + 8009bf4: 699b ldr r3, [r3, #24] + 8009bf6: f003 0303 and.w r3, r3, #3 + 8009bfa: 2b00 cmp r3, #0 + 8009bfc: d003 beq.n 8009c06 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 800968a: 6878 ldr r0, [r7, #4] - 800968c: f000 fe2a bl 800a2e4 - 8009690: e005 b.n 800969e + 8009bfe: 6878 ldr r0, [r7, #4] + 8009c00: f000 fe2a bl 800a858 + 8009c04: e005 b.n 8009c12 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 8009692: 6878 ldr r0, [r7, #4] - 8009694: f000 fe1c bl 800a2d0 + 8009c06: 6878 ldr r0, [r7, #4] + 8009c08: f000 fe1c bl 800a844 HAL_TIM_PWM_PulseFinishedCallback(htim); - 8009698: 6878 ldr r0, [r7, #4] - 800969a: f000 fe2d bl 800a2f8 + 8009c0c: 6878 ldr r0, [r7, #4] + 8009c0e: f000 fe2d bl 800a86c #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 800969e: 687b ldr r3, [r7, #4] - 80096a0: 2200 movs r2, #0 - 80096a2: 771a strb r2, [r3, #28] + 8009c12: 687b ldr r3, [r7, #4] + 8009c14: 2200 movs r2, #0 + 8009c16: 771a strb r2, [r3, #28] } } } /* Capture compare 2 event */ if ((itflag & (TIM_FLAG_CC2)) == (TIM_FLAG_CC2)) - 80096a4: 68bb ldr r3, [r7, #8] - 80096a6: f003 0304 and.w r3, r3, #4 - 80096aa: 2b00 cmp r3, #0 - 80096ac: d020 beq.n 80096f0 + 8009c18: 68bb ldr r3, [r7, #8] + 8009c1a: f003 0304 and.w r3, r3, #4 + 8009c1e: 2b00 cmp r3, #0 + 8009c20: d020 beq.n 8009c64 { if ((itsource & (TIM_IT_CC2)) == (TIM_IT_CC2)) - 80096ae: 68fb ldr r3, [r7, #12] - 80096b0: f003 0304 and.w r3, r3, #4 - 80096b4: 2b00 cmp r3, #0 - 80096b6: d01b beq.n 80096f0 + 8009c22: 68fb ldr r3, [r7, #12] + 8009c24: f003 0304 and.w r3, r3, #4 + 8009c28: 2b00 cmp r3, #0 + 8009c2a: d01b beq.n 8009c64 { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC2); - 80096b8: 687b ldr r3, [r7, #4] - 80096ba: 681b ldr r3, [r3, #0] - 80096bc: f06f 0204 mvn.w r2, #4 - 80096c0: 611a str r2, [r3, #16] + 8009c2c: 687b ldr r3, [r7, #4] + 8009c2e: 681b ldr r3, [r3, #0] + 8009c30: f06f 0204 mvn.w r2, #4 + 8009c34: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; - 80096c2: 687b ldr r3, [r7, #4] - 80096c4: 2202 movs r2, #2 - 80096c6: 771a strb r2, [r3, #28] + 8009c36: 687b ldr r3, [r7, #4] + 8009c38: 2202 movs r2, #2 + 8009c3a: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U) - 80096c8: 687b ldr r3, [r7, #4] - 80096ca: 681b ldr r3, [r3, #0] - 80096cc: 699b ldr r3, [r3, #24] - 80096ce: f403 7340 and.w r3, r3, #768 @ 0x300 - 80096d2: 2b00 cmp r3, #0 - 80096d4: d003 beq.n 80096de + 8009c3c: 687b ldr r3, [r7, #4] + 8009c3e: 681b ldr r3, [r3, #0] + 8009c40: 699b ldr r3, [r3, #24] + 8009c42: f403 7340 and.w r3, r3, #768 @ 0x300 + 8009c46: 2b00 cmp r3, #0 + 8009c48: d003 beq.n 8009c52 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 80096d6: 6878 ldr r0, [r7, #4] - 80096d8: f000 fe04 bl 800a2e4 - 80096dc: e005 b.n 80096ea + 8009c4a: 6878 ldr r0, [r7, #4] + 8009c4c: f000 fe04 bl 800a858 + 8009c50: e005 b.n 8009c5e { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 80096de: 6878 ldr r0, [r7, #4] - 80096e0: f000 fdf6 bl 800a2d0 + 8009c52: 6878 ldr r0, [r7, #4] + 8009c54: f000 fdf6 bl 800a844 HAL_TIM_PWM_PulseFinishedCallback(htim); - 80096e4: 6878 ldr r0, [r7, #4] - 80096e6: f000 fe07 bl 800a2f8 + 8009c58: 6878 ldr r0, [r7, #4] + 8009c5a: f000 fe07 bl 800a86c #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 80096ea: 687b ldr r3, [r7, #4] - 80096ec: 2200 movs r2, #0 - 80096ee: 771a strb r2, [r3, #28] + 8009c5e: 687b ldr r3, [r7, #4] + 8009c60: 2200 movs r2, #0 + 8009c62: 771a strb r2, [r3, #28] } } /* Capture compare 3 event */ if ((itflag & (TIM_FLAG_CC3)) == (TIM_FLAG_CC3)) - 80096f0: 68bb ldr r3, [r7, #8] - 80096f2: f003 0308 and.w r3, r3, #8 - 80096f6: 2b00 cmp r3, #0 - 80096f8: d020 beq.n 800973c + 8009c64: 68bb ldr r3, [r7, #8] + 8009c66: f003 0308 and.w r3, r3, #8 + 8009c6a: 2b00 cmp r3, #0 + 8009c6c: d020 beq.n 8009cb0 { if ((itsource & (TIM_IT_CC3)) == (TIM_IT_CC3)) - 80096fa: 68fb ldr r3, [r7, #12] - 80096fc: f003 0308 and.w r3, r3, #8 - 8009700: 2b00 cmp r3, #0 - 8009702: d01b beq.n 800973c + 8009c6e: 68fb ldr r3, [r7, #12] + 8009c70: f003 0308 and.w r3, r3, #8 + 8009c74: 2b00 cmp r3, #0 + 8009c76: d01b beq.n 8009cb0 { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC3); - 8009704: 687b ldr r3, [r7, #4] - 8009706: 681b ldr r3, [r3, #0] - 8009708: f06f 0208 mvn.w r2, #8 - 800970c: 611a str r2, [r3, #16] + 8009c78: 687b ldr r3, [r7, #4] + 8009c7a: 681b ldr r3, [r3, #0] + 8009c7c: f06f 0208 mvn.w r2, #8 + 8009c80: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; - 800970e: 687b ldr r3, [r7, #4] - 8009710: 2204 movs r2, #4 - 8009712: 771a strb r2, [r3, #28] + 8009c82: 687b ldr r3, [r7, #4] + 8009c84: 2204 movs r2, #4 + 8009c86: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U) - 8009714: 687b ldr r3, [r7, #4] - 8009716: 681b ldr r3, [r3, #0] - 8009718: 69db ldr r3, [r3, #28] - 800971a: f003 0303 and.w r3, r3, #3 - 800971e: 2b00 cmp r3, #0 - 8009720: d003 beq.n 800972a + 8009c88: 687b ldr r3, [r7, #4] + 8009c8a: 681b ldr r3, [r3, #0] + 8009c8c: 69db ldr r3, [r3, #28] + 8009c8e: f003 0303 and.w r3, r3, #3 + 8009c92: 2b00 cmp r3, #0 + 8009c94: d003 beq.n 8009c9e { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 8009722: 6878 ldr r0, [r7, #4] - 8009724: f000 fdde bl 800a2e4 - 8009728: e005 b.n 8009736 + 8009c96: 6878 ldr r0, [r7, #4] + 8009c98: f000 fdde bl 800a858 + 8009c9c: e005 b.n 8009caa { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 800972a: 6878 ldr r0, [r7, #4] - 800972c: f000 fdd0 bl 800a2d0 + 8009c9e: 6878 ldr r0, [r7, #4] + 8009ca0: f000 fdd0 bl 800a844 HAL_TIM_PWM_PulseFinishedCallback(htim); - 8009730: 6878 ldr r0, [r7, #4] - 8009732: f000 fde1 bl 800a2f8 + 8009ca4: 6878 ldr r0, [r7, #4] + 8009ca6: f000 fde1 bl 800a86c #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 8009736: 687b ldr r3, [r7, #4] - 8009738: 2200 movs r2, #0 - 800973a: 771a strb r2, [r3, #28] + 8009caa: 687b ldr r3, [r7, #4] + 8009cac: 2200 movs r2, #0 + 8009cae: 771a strb r2, [r3, #28] } } /* Capture compare 4 event */ if ((itflag & (TIM_FLAG_CC4)) == (TIM_FLAG_CC4)) - 800973c: 68bb ldr r3, [r7, #8] - 800973e: f003 0310 and.w r3, r3, #16 - 8009742: 2b00 cmp r3, #0 - 8009744: d020 beq.n 8009788 + 8009cb0: 68bb ldr r3, [r7, #8] + 8009cb2: f003 0310 and.w r3, r3, #16 + 8009cb6: 2b00 cmp r3, #0 + 8009cb8: d020 beq.n 8009cfc { if ((itsource & (TIM_IT_CC4)) == (TIM_IT_CC4)) - 8009746: 68fb ldr r3, [r7, #12] - 8009748: f003 0310 and.w r3, r3, #16 - 800974c: 2b00 cmp r3, #0 - 800974e: d01b beq.n 8009788 + 8009cba: 68fb ldr r3, [r7, #12] + 8009cbc: f003 0310 and.w r3, r3, #16 + 8009cc0: 2b00 cmp r3, #0 + 8009cc2: d01b beq.n 8009cfc { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC4); - 8009750: 687b ldr r3, [r7, #4] - 8009752: 681b ldr r3, [r3, #0] - 8009754: f06f 0210 mvn.w r2, #16 - 8009758: 611a str r2, [r3, #16] + 8009cc4: 687b ldr r3, [r7, #4] + 8009cc6: 681b ldr r3, [r3, #0] + 8009cc8: f06f 0210 mvn.w r2, #16 + 8009ccc: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; - 800975a: 687b ldr r3, [r7, #4] - 800975c: 2208 movs r2, #8 - 800975e: 771a strb r2, [r3, #28] + 8009cce: 687b ldr r3, [r7, #4] + 8009cd0: 2208 movs r2, #8 + 8009cd2: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U) - 8009760: 687b ldr r3, [r7, #4] - 8009762: 681b ldr r3, [r3, #0] - 8009764: 69db ldr r3, [r3, #28] - 8009766: f403 7340 and.w r3, r3, #768 @ 0x300 - 800976a: 2b00 cmp r3, #0 - 800976c: d003 beq.n 8009776 + 8009cd4: 687b ldr r3, [r7, #4] + 8009cd6: 681b ldr r3, [r3, #0] + 8009cd8: 69db ldr r3, [r3, #28] + 8009cda: f403 7340 and.w r3, r3, #768 @ 0x300 + 8009cde: 2b00 cmp r3, #0 + 8009ce0: d003 beq.n 8009cea { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 800976e: 6878 ldr r0, [r7, #4] - 8009770: f000 fdb8 bl 800a2e4 - 8009774: e005 b.n 8009782 + 8009ce2: 6878 ldr r0, [r7, #4] + 8009ce4: f000 fdb8 bl 800a858 + 8009ce8: e005 b.n 8009cf6 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 8009776: 6878 ldr r0, [r7, #4] - 8009778: f000 fdaa bl 800a2d0 + 8009cea: 6878 ldr r0, [r7, #4] + 8009cec: f000 fdaa bl 800a844 HAL_TIM_PWM_PulseFinishedCallback(htim); - 800977c: 6878 ldr r0, [r7, #4] - 800977e: f000 fdbb bl 800a2f8 + 8009cf0: 6878 ldr r0, [r7, #4] + 8009cf2: f000 fdbb bl 800a86c #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 8009782: 687b ldr r3, [r7, #4] - 8009784: 2200 movs r2, #0 - 8009786: 771a strb r2, [r3, #28] + 8009cf6: 687b ldr r3, [r7, #4] + 8009cf8: 2200 movs r2, #0 + 8009cfa: 771a strb r2, [r3, #28] } } /* TIM Update event */ if ((itflag & (TIM_FLAG_UPDATE)) == (TIM_FLAG_UPDATE)) - 8009788: 68bb ldr r3, [r7, #8] - 800978a: f003 0301 and.w r3, r3, #1 - 800978e: 2b00 cmp r3, #0 - 8009790: d00c beq.n 80097ac + 8009cfc: 68bb ldr r3, [r7, #8] + 8009cfe: f003 0301 and.w r3, r3, #1 + 8009d02: 2b00 cmp r3, #0 + 8009d04: d00c beq.n 8009d20 { if ((itsource & (TIM_IT_UPDATE)) == (TIM_IT_UPDATE)) - 8009792: 68fb ldr r3, [r7, #12] - 8009794: f003 0301 and.w r3, r3, #1 - 8009798: 2b00 cmp r3, #0 - 800979a: d007 beq.n 80097ac + 8009d06: 68fb ldr r3, [r7, #12] + 8009d08: f003 0301 and.w r3, r3, #1 + 8009d0c: 2b00 cmp r3, #0 + 8009d0e: d007 beq.n 8009d20 { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_UPDATE); - 800979c: 687b ldr r3, [r7, #4] - 800979e: 681b ldr r3, [r3, #0] - 80097a0: f06f 0201 mvn.w r2, #1 - 80097a4: 611a str r2, [r3, #16] + 8009d10: 687b ldr r3, [r7, #4] + 8009d12: 681b ldr r3, [r3, #0] + 8009d14: f06f 0201 mvn.w r2, #1 + 8009d18: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->PeriodElapsedCallback(htim); #else HAL_TIM_PeriodElapsedCallback(htim); - 80097a6: 6878 ldr r0, [r7, #4] - 80097a8: f7f9 fccc bl 8003144 + 8009d1a: 6878 ldr r0, [r7, #4] + 8009d1c: f7f9 fa6e bl 80031fc #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM Break input event */ if ((itflag & (TIM_FLAG_BREAK)) == (TIM_FLAG_BREAK)) - 80097ac: 68bb ldr r3, [r7, #8] - 80097ae: f003 0380 and.w r3, r3, #128 @ 0x80 - 80097b2: 2b00 cmp r3, #0 - 80097b4: d00c beq.n 80097d0 + 8009d20: 68bb ldr r3, [r7, #8] + 8009d22: f003 0380 and.w r3, r3, #128 @ 0x80 + 8009d26: 2b00 cmp r3, #0 + 8009d28: d00c beq.n 8009d44 { if ((itsource & (TIM_IT_BREAK)) == (TIM_IT_BREAK)) - 80097b6: 68fb ldr r3, [r7, #12] - 80097b8: f003 0380 and.w r3, r3, #128 @ 0x80 - 80097bc: 2b00 cmp r3, #0 - 80097be: d007 beq.n 80097d0 + 8009d2a: 68fb ldr r3, [r7, #12] + 8009d2c: f003 0380 and.w r3, r3, #128 @ 0x80 + 8009d30: 2b00 cmp r3, #0 + 8009d32: d007 beq.n 8009d44 { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_BREAK); - 80097c0: 687b ldr r3, [r7, #4] - 80097c2: 681b ldr r3, [r3, #0] - 80097c4: f06f 0280 mvn.w r2, #128 @ 0x80 - 80097c8: 611a str r2, [r3, #16] + 8009d34: 687b ldr r3, [r7, #4] + 8009d36: 681b ldr r3, [r3, #0] + 8009d38: f06f 0280 mvn.w r2, #128 @ 0x80 + 8009d3c: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->BreakCallback(htim); #else HAL_TIMEx_BreakCallback(htim); - 80097ca: 6878 ldr r0, [r7, #4] - 80097cc: f001 fb60 bl 800ae90 + 8009d3e: 6878 ldr r0, [r7, #4] + 8009d40: f001 fb60 bl 800b404 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM Trigger detection event */ if ((itflag & (TIM_FLAG_TRIGGER)) == (TIM_FLAG_TRIGGER)) - 80097d0: 68bb ldr r3, [r7, #8] - 80097d2: f003 0340 and.w r3, r3, #64 @ 0x40 - 80097d6: 2b00 cmp r3, #0 - 80097d8: d00c beq.n 80097f4 + 8009d44: 68bb ldr r3, [r7, #8] + 8009d46: f003 0340 and.w r3, r3, #64 @ 0x40 + 8009d4a: 2b00 cmp r3, #0 + 8009d4c: d00c beq.n 8009d68 { if ((itsource & (TIM_IT_TRIGGER)) == (TIM_IT_TRIGGER)) - 80097da: 68fb ldr r3, [r7, #12] - 80097dc: f003 0340 and.w r3, r3, #64 @ 0x40 - 80097e0: 2b00 cmp r3, #0 - 80097e2: d007 beq.n 80097f4 + 8009d4e: 68fb ldr r3, [r7, #12] + 8009d50: f003 0340 and.w r3, r3, #64 @ 0x40 + 8009d54: 2b00 cmp r3, #0 + 8009d56: d007 beq.n 8009d68 { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_TRIGGER); - 80097e4: 687b ldr r3, [r7, #4] - 80097e6: 681b ldr r3, [r3, #0] - 80097e8: f06f 0240 mvn.w r2, #64 @ 0x40 - 80097ec: 611a str r2, [r3, #16] + 8009d58: 687b ldr r3, [r7, #4] + 8009d5a: 681b ldr r3, [r3, #0] + 8009d5c: f06f 0240 mvn.w r2, #64 @ 0x40 + 8009d60: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->TriggerCallback(htim); #else HAL_TIM_TriggerCallback(htim); - 80097ee: 6878 ldr r0, [r7, #4] - 80097f0: f000 fd8c bl 800a30c + 8009d62: 6878 ldr r0, [r7, #4] + 8009d64: f000 fd8c bl 800a880 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM commutation event */ if ((itflag & (TIM_FLAG_COM)) == (TIM_FLAG_COM)) - 80097f4: 68bb ldr r3, [r7, #8] - 80097f6: f003 0320 and.w r3, r3, #32 - 80097fa: 2b00 cmp r3, #0 - 80097fc: d00c beq.n 8009818 + 8009d68: 68bb ldr r3, [r7, #8] + 8009d6a: f003 0320 and.w r3, r3, #32 + 8009d6e: 2b00 cmp r3, #0 + 8009d70: d00c beq.n 8009d8c { if ((itsource & (TIM_IT_COM)) == (TIM_IT_COM)) - 80097fe: 68fb ldr r3, [r7, #12] - 8009800: f003 0320 and.w r3, r3, #32 - 8009804: 2b00 cmp r3, #0 - 8009806: d007 beq.n 8009818 + 8009d72: 68fb ldr r3, [r7, #12] + 8009d74: f003 0320 and.w r3, r3, #32 + 8009d78: 2b00 cmp r3, #0 + 8009d7a: d007 beq.n 8009d8c { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_COM); - 8009808: 687b ldr r3, [r7, #4] - 800980a: 681b ldr r3, [r3, #0] - 800980c: f06f 0220 mvn.w r2, #32 - 8009810: 611a str r2, [r3, #16] + 8009d7c: 687b ldr r3, [r7, #4] + 8009d7e: 681b ldr r3, [r3, #0] + 8009d80: f06f 0220 mvn.w r2, #32 + 8009d84: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->CommutationCallback(htim); #else HAL_TIMEx_CommutCallback(htim); - 8009812: 6878 ldr r0, [r7, #4] - 8009814: f001 fb32 bl 800ae7c + 8009d86: 6878 ldr r0, [r7, #4] + 8009d88: f001 fb32 bl 800b3f0 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } } - 8009818: bf00 nop - 800981a: 3710 adds r7, #16 - 800981c: 46bd mov sp, r7 - 800981e: bd80 pop {r7, pc} + 8009d8c: bf00 nop + 8009d8e: 3710 adds r7, #16 + 8009d90: 46bd mov sp, r7 + 8009d92: bd80 pop {r7, pc} -08009820 : +08009d94 : * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, const TIM_OC_InitTypeDef *sConfig, uint32_t Channel) { - 8009820: b580 push {r7, lr} - 8009822: b086 sub sp, #24 - 8009824: af00 add r7, sp, #0 - 8009826: 60f8 str r0, [r7, #12] - 8009828: 60b9 str r1, [r7, #8] - 800982a: 607a str r2, [r7, #4] + 8009d94: b580 push {r7, lr} + 8009d96: b086 sub sp, #24 + 8009d98: af00 add r7, sp, #0 + 8009d9a: 60f8 str r0, [r7, #12] + 8009d9c: 60b9 str r1, [r7, #8] + 8009d9e: 607a str r2, [r7, #4] HAL_StatusTypeDef status = HAL_OK; - 800982c: 2300 movs r3, #0 - 800982e: 75fb strb r3, [r7, #23] + 8009da0: 2300 movs r3, #0 + 8009da2: 75fb strb r3, [r7, #23] /* Check the parameters */ assert_param(IS_TIM_CHANNELS(Channel)); - 8009830: 687b ldr r3, [r7, #4] - 8009832: 2b00 cmp r3, #0 - 8009834: d010 beq.n 8009858 - 8009836: 687b ldr r3, [r7, #4] - 8009838: 2b04 cmp r3, #4 - 800983a: d00d beq.n 8009858 - 800983c: 687b ldr r3, [r7, #4] - 800983e: 2b08 cmp r3, #8 - 8009840: d00a beq.n 8009858 - 8009842: 687b ldr r3, [r7, #4] - 8009844: 2b0c cmp r3, #12 - 8009846: d007 beq.n 8009858 - 8009848: 687b ldr r3, [r7, #4] - 800984a: 2b3c cmp r3, #60 @ 0x3c - 800984c: d004 beq.n 8009858 - 800984e: f241 0182 movw r1, #4226 @ 0x1082 - 8009852: 4883 ldr r0, [pc, #524] @ (8009a60 ) - 8009854: f7f9 fc8e bl 8003174 + 8009da4: 687b ldr r3, [r7, #4] + 8009da6: 2b00 cmp r3, #0 + 8009da8: d010 beq.n 8009dcc + 8009daa: 687b ldr r3, [r7, #4] + 8009dac: 2b04 cmp r3, #4 + 8009dae: d00d beq.n 8009dcc + 8009db0: 687b ldr r3, [r7, #4] + 8009db2: 2b08 cmp r3, #8 + 8009db4: d00a beq.n 8009dcc + 8009db6: 687b ldr r3, [r7, #4] + 8009db8: 2b0c cmp r3, #12 + 8009dba: d007 beq.n 8009dcc + 8009dbc: 687b ldr r3, [r7, #4] + 8009dbe: 2b3c cmp r3, #60 @ 0x3c + 8009dc0: d004 beq.n 8009dcc + 8009dc2: f241 0182 movw r1, #4226 @ 0x1082 + 8009dc6: 4883 ldr r0, [pc, #524] @ (8009fd4 ) + 8009dc8: f7f9 fa30 bl 800322c assert_param(IS_TIM_PWM_MODE(sConfig->OCMode)); - 8009858: 68bb ldr r3, [r7, #8] - 800985a: 681b ldr r3, [r3, #0] - 800985c: 2b60 cmp r3, #96 @ 0x60 - 800985e: d008 beq.n 8009872 - 8009860: 68bb ldr r3, [r7, #8] - 8009862: 681b ldr r3, [r3, #0] - 8009864: 2b70 cmp r3, #112 @ 0x70 - 8009866: d004 beq.n 8009872 - 8009868: f241 0183 movw r1, #4227 @ 0x1083 - 800986c: 487c ldr r0, [pc, #496] @ (8009a60 ) - 800986e: f7f9 fc81 bl 8003174 + 8009dcc: 68bb ldr r3, [r7, #8] + 8009dce: 681b ldr r3, [r3, #0] + 8009dd0: 2b60 cmp r3, #96 @ 0x60 + 8009dd2: d008 beq.n 8009de6 + 8009dd4: 68bb ldr r3, [r7, #8] + 8009dd6: 681b ldr r3, [r3, #0] + 8009dd8: 2b70 cmp r3, #112 @ 0x70 + 8009dda: d004 beq.n 8009de6 + 8009ddc: f241 0183 movw r1, #4227 @ 0x1083 + 8009de0: 487c ldr r0, [pc, #496] @ (8009fd4 ) + 8009de2: f7f9 fa23 bl 800322c assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity)); - 8009872: 68bb ldr r3, [r7, #8] - 8009874: 689b ldr r3, [r3, #8] - 8009876: 2b00 cmp r3, #0 - 8009878: d008 beq.n 800988c - 800987a: 68bb ldr r3, [r7, #8] - 800987c: 689b ldr r3, [r3, #8] - 800987e: 2b02 cmp r3, #2 - 8009880: d004 beq.n 800988c - 8009882: f241 0184 movw r1, #4228 @ 0x1084 - 8009886: 4876 ldr r0, [pc, #472] @ (8009a60 ) - 8009888: f7f9 fc74 bl 8003174 + 8009de6: 68bb ldr r3, [r7, #8] + 8009de8: 689b ldr r3, [r3, #8] + 8009dea: 2b00 cmp r3, #0 + 8009dec: d008 beq.n 8009e00 + 8009dee: 68bb ldr r3, [r7, #8] + 8009df0: 689b ldr r3, [r3, #8] + 8009df2: 2b02 cmp r3, #2 + 8009df4: d004 beq.n 8009e00 + 8009df6: f241 0184 movw r1, #4228 @ 0x1084 + 8009dfa: 4876 ldr r0, [pc, #472] @ (8009fd4 ) + 8009dfc: f7f9 fa16 bl 800322c assert_param(IS_TIM_FAST_STATE(sConfig->OCFastMode)); - 800988c: 68bb ldr r3, [r7, #8] - 800988e: 691b ldr r3, [r3, #16] - 8009890: 2b00 cmp r3, #0 - 8009892: d008 beq.n 80098a6 - 8009894: 68bb ldr r3, [r7, #8] - 8009896: 691b ldr r3, [r3, #16] - 8009898: 2b04 cmp r3, #4 - 800989a: d004 beq.n 80098a6 - 800989c: f241 0185 movw r1, #4229 @ 0x1085 - 80098a0: 486f ldr r0, [pc, #444] @ (8009a60 ) - 80098a2: f7f9 fc67 bl 8003174 + 8009e00: 68bb ldr r3, [r7, #8] + 8009e02: 691b ldr r3, [r3, #16] + 8009e04: 2b00 cmp r3, #0 + 8009e06: d008 beq.n 8009e1a + 8009e08: 68bb ldr r3, [r7, #8] + 8009e0a: 691b ldr r3, [r3, #16] + 8009e0c: 2b04 cmp r3, #4 + 8009e0e: d004 beq.n 8009e1a + 8009e10: f241 0185 movw r1, #4229 @ 0x1085 + 8009e14: 486f ldr r0, [pc, #444] @ (8009fd4 ) + 8009e16: f7f9 fa09 bl 800322c /* Process Locked */ __HAL_LOCK(htim); - 80098a6: 68fb ldr r3, [r7, #12] - 80098a8: f893 303c ldrb.w r3, [r3, #60] @ 0x3c - 80098ac: 2b01 cmp r3, #1 - 80098ae: d101 bne.n 80098b4 - 80098b0: 2302 movs r3, #2 - 80098b2: e17c b.n 8009bae - 80098b4: 68fb ldr r3, [r7, #12] - 80098b6: 2201 movs r2, #1 - 80098b8: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8009e1a: 68fb ldr r3, [r7, #12] + 8009e1c: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 8009e20: 2b01 cmp r3, #1 + 8009e22: d101 bne.n 8009e28 + 8009e24: 2302 movs r3, #2 + 8009e26: e17c b.n 800a122 + 8009e28: 68fb ldr r3, [r7, #12] + 8009e2a: 2201 movs r2, #1 + 8009e2c: f883 203c strb.w r2, [r3, #60] @ 0x3c switch (Channel) - 80098bc: 687b ldr r3, [r7, #4] - 80098be: 2b0c cmp r3, #12 - 80098c0: f200 816d bhi.w 8009b9e - 80098c4: a201 add r2, pc, #4 @ (adr r2, 80098cc ) - 80098c6: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 80098ca: bf00 nop - 80098cc: 08009901 .word 0x08009901 - 80098d0: 08009b9f .word 0x08009b9f - 80098d4: 08009b9f .word 0x08009b9f - 80098d8: 08009b9f .word 0x08009b9f - 80098dc: 080099c3 .word 0x080099c3 - 80098e0: 08009b9f .word 0x08009b9f - 80098e4: 08009b9f .word 0x08009b9f - 80098e8: 08009b9f .word 0x08009b9f - 80098ec: 08009a91 .word 0x08009a91 - 80098f0: 08009b9f .word 0x08009b9f - 80098f4: 08009b9f .word 0x08009b9f - 80098f8: 08009b9f .word 0x08009b9f - 80098fc: 08009b17 .word 0x08009b17 + 8009e30: 687b ldr r3, [r7, #4] + 8009e32: 2b0c cmp r3, #12 + 8009e34: f200 816d bhi.w 800a112 + 8009e38: a201 add r2, pc, #4 @ (adr r2, 8009e40 ) + 8009e3a: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8009e3e: bf00 nop + 8009e40: 08009e75 .word 0x08009e75 + 8009e44: 0800a113 .word 0x0800a113 + 8009e48: 0800a113 .word 0x0800a113 + 8009e4c: 0800a113 .word 0x0800a113 + 8009e50: 08009f37 .word 0x08009f37 + 8009e54: 0800a113 .word 0x0800a113 + 8009e58: 0800a113 .word 0x0800a113 + 8009e5c: 0800a113 .word 0x0800a113 + 8009e60: 0800a005 .word 0x0800a005 + 8009e64: 0800a113 .word 0x0800a113 + 8009e68: 0800a113 .word 0x0800a113 + 8009e6c: 0800a113 .word 0x0800a113 + 8009e70: 0800a08b .word 0x0800a08b { case TIM_CHANNEL_1: { /* Check the parameters */ assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); - 8009900: 68fb ldr r3, [r7, #12] - 8009902: 681b ldr r3, [r3, #0] - 8009904: 4a57 ldr r2, [pc, #348] @ (8009a64 ) - 8009906: 4293 cmp r3, r2 - 8009908: d03b beq.n 8009982 - 800990a: 68fb ldr r3, [r7, #12] - 800990c: 681b ldr r3, [r3, #0] - 800990e: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8009912: d036 beq.n 8009982 - 8009914: 68fb ldr r3, [r7, #12] - 8009916: 681b ldr r3, [r3, #0] - 8009918: 4a53 ldr r2, [pc, #332] @ (8009a68 ) - 800991a: 4293 cmp r3, r2 - 800991c: d031 beq.n 8009982 - 800991e: 68fb ldr r3, [r7, #12] - 8009920: 681b ldr r3, [r3, #0] - 8009922: 4a52 ldr r2, [pc, #328] @ (8009a6c ) - 8009924: 4293 cmp r3, r2 - 8009926: d02c beq.n 8009982 - 8009928: 68fb ldr r3, [r7, #12] - 800992a: 681b ldr r3, [r3, #0] - 800992c: 4a50 ldr r2, [pc, #320] @ (8009a70 ) - 800992e: 4293 cmp r3, r2 - 8009930: d027 beq.n 8009982 - 8009932: 68fb ldr r3, [r7, #12] - 8009934: 681b ldr r3, [r3, #0] - 8009936: 4a4f ldr r2, [pc, #316] @ (8009a74 ) - 8009938: 4293 cmp r3, r2 - 800993a: d022 beq.n 8009982 - 800993c: 68fb ldr r3, [r7, #12] - 800993e: 681b ldr r3, [r3, #0] - 8009940: 4a4d ldr r2, [pc, #308] @ (8009a78 ) - 8009942: 4293 cmp r3, r2 - 8009944: d01d beq.n 8009982 - 8009946: 68fb ldr r3, [r7, #12] - 8009948: 681b ldr r3, [r3, #0] - 800994a: 4a4c ldr r2, [pc, #304] @ (8009a7c ) - 800994c: 4293 cmp r3, r2 - 800994e: d018 beq.n 8009982 - 8009950: 68fb ldr r3, [r7, #12] - 8009952: 681b ldr r3, [r3, #0] - 8009954: 4a4a ldr r2, [pc, #296] @ (8009a80 ) - 8009956: 4293 cmp r3, r2 - 8009958: d013 beq.n 8009982 - 800995a: 68fb ldr r3, [r7, #12] - 800995c: 681b ldr r3, [r3, #0] - 800995e: 4a49 ldr r2, [pc, #292] @ (8009a84 ) - 8009960: 4293 cmp r3, r2 - 8009962: d00e beq.n 8009982 - 8009964: 68fb ldr r3, [r7, #12] - 8009966: 681b ldr r3, [r3, #0] - 8009968: 4a47 ldr r2, [pc, #284] @ (8009a88 ) - 800996a: 4293 cmp r3, r2 - 800996c: d009 beq.n 8009982 - 800996e: 68fb ldr r3, [r7, #12] - 8009970: 681b ldr r3, [r3, #0] - 8009972: 4a46 ldr r2, [pc, #280] @ (8009a8c ) - 8009974: 4293 cmp r3, r2 - 8009976: d004 beq.n 8009982 - 8009978: f241 018f movw r1, #4239 @ 0x108f - 800997c: 4838 ldr r0, [pc, #224] @ (8009a60 ) - 800997e: f7f9 fbf9 bl 8003174 + 8009e74: 68fb ldr r3, [r7, #12] + 8009e76: 681b ldr r3, [r3, #0] + 8009e78: 4a57 ldr r2, [pc, #348] @ (8009fd8 ) + 8009e7a: 4293 cmp r3, r2 + 8009e7c: d03b beq.n 8009ef6 + 8009e7e: 68fb ldr r3, [r7, #12] + 8009e80: 681b ldr r3, [r3, #0] + 8009e82: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8009e86: d036 beq.n 8009ef6 + 8009e88: 68fb ldr r3, [r7, #12] + 8009e8a: 681b ldr r3, [r3, #0] + 8009e8c: 4a53 ldr r2, [pc, #332] @ (8009fdc ) + 8009e8e: 4293 cmp r3, r2 + 8009e90: d031 beq.n 8009ef6 + 8009e92: 68fb ldr r3, [r7, #12] + 8009e94: 681b ldr r3, [r3, #0] + 8009e96: 4a52 ldr r2, [pc, #328] @ (8009fe0 ) + 8009e98: 4293 cmp r3, r2 + 8009e9a: d02c beq.n 8009ef6 + 8009e9c: 68fb ldr r3, [r7, #12] + 8009e9e: 681b ldr r3, [r3, #0] + 8009ea0: 4a50 ldr r2, [pc, #320] @ (8009fe4 ) + 8009ea2: 4293 cmp r3, r2 + 8009ea4: d027 beq.n 8009ef6 + 8009ea6: 68fb ldr r3, [r7, #12] + 8009ea8: 681b ldr r3, [r3, #0] + 8009eaa: 4a4f ldr r2, [pc, #316] @ (8009fe8 ) + 8009eac: 4293 cmp r3, r2 + 8009eae: d022 beq.n 8009ef6 + 8009eb0: 68fb ldr r3, [r7, #12] + 8009eb2: 681b ldr r3, [r3, #0] + 8009eb4: 4a4d ldr r2, [pc, #308] @ (8009fec ) + 8009eb6: 4293 cmp r3, r2 + 8009eb8: d01d beq.n 8009ef6 + 8009eba: 68fb ldr r3, [r7, #12] + 8009ebc: 681b ldr r3, [r3, #0] + 8009ebe: 4a4c ldr r2, [pc, #304] @ (8009ff0 ) + 8009ec0: 4293 cmp r3, r2 + 8009ec2: d018 beq.n 8009ef6 + 8009ec4: 68fb ldr r3, [r7, #12] + 8009ec6: 681b ldr r3, [r3, #0] + 8009ec8: 4a4a ldr r2, [pc, #296] @ (8009ff4 ) + 8009eca: 4293 cmp r3, r2 + 8009ecc: d013 beq.n 8009ef6 + 8009ece: 68fb ldr r3, [r7, #12] + 8009ed0: 681b ldr r3, [r3, #0] + 8009ed2: 4a49 ldr r2, [pc, #292] @ (8009ff8 ) + 8009ed4: 4293 cmp r3, r2 + 8009ed6: d00e beq.n 8009ef6 + 8009ed8: 68fb ldr r3, [r7, #12] + 8009eda: 681b ldr r3, [r3, #0] + 8009edc: 4a47 ldr r2, [pc, #284] @ (8009ffc ) + 8009ede: 4293 cmp r3, r2 + 8009ee0: d009 beq.n 8009ef6 + 8009ee2: 68fb ldr r3, [r7, #12] + 8009ee4: 681b ldr r3, [r3, #0] + 8009ee6: 4a46 ldr r2, [pc, #280] @ (800a000 ) + 8009ee8: 4293 cmp r3, r2 + 8009eea: d004 beq.n 8009ef6 + 8009eec: f241 018f movw r1, #4239 @ 0x108f + 8009ef0: 4838 ldr r0, [pc, #224] @ (8009fd4 ) + 8009ef2: f7f9 f99b bl 800322c /* Configure the Channel 1 in PWM mode */ TIM_OC1_SetConfig(htim->Instance, sConfig); - 8009982: 68fb ldr r3, [r7, #12] - 8009984: 681b ldr r3, [r3, #0] - 8009986: 68b9 ldr r1, [r7, #8] - 8009988: 4618 mov r0, r3 - 800998a: f000 fd75 bl 800a478 + 8009ef6: 68fb ldr r3, [r7, #12] + 8009ef8: 681b ldr r3, [r3, #0] + 8009efa: 68b9 ldr r1, [r7, #8] + 8009efc: 4618 mov r0, r3 + 8009efe: f000 fd75 bl 800a9ec /* Set the Preload enable bit for channel1 */ htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE; - 800998e: 68fb ldr r3, [r7, #12] - 8009990: 681b ldr r3, [r3, #0] - 8009992: 699a ldr r2, [r3, #24] - 8009994: 68fb ldr r3, [r7, #12] - 8009996: 681b ldr r3, [r3, #0] - 8009998: f042 0208 orr.w r2, r2, #8 - 800999c: 619a str r2, [r3, #24] + 8009f02: 68fb ldr r3, [r7, #12] + 8009f04: 681b ldr r3, [r3, #0] + 8009f06: 699a ldr r2, [r3, #24] + 8009f08: 68fb ldr r3, [r7, #12] + 8009f0a: 681b ldr r3, [r3, #0] + 8009f0c: f042 0208 orr.w r2, r2, #8 + 8009f10: 619a str r2, [r3, #24] /* Configure the Output Fast mode */ htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE; - 800999e: 68fb ldr r3, [r7, #12] - 80099a0: 681b ldr r3, [r3, #0] - 80099a2: 699a ldr r2, [r3, #24] - 80099a4: 68fb ldr r3, [r7, #12] - 80099a6: 681b ldr r3, [r3, #0] - 80099a8: f022 0204 bic.w r2, r2, #4 - 80099ac: 619a str r2, [r3, #24] + 8009f12: 68fb ldr r3, [r7, #12] + 8009f14: 681b ldr r3, [r3, #0] + 8009f16: 699a ldr r2, [r3, #24] + 8009f18: 68fb ldr r3, [r7, #12] + 8009f1a: 681b ldr r3, [r3, #0] + 8009f1c: f022 0204 bic.w r2, r2, #4 + 8009f20: 619a str r2, [r3, #24] htim->Instance->CCMR1 |= sConfig->OCFastMode; - 80099ae: 68fb ldr r3, [r7, #12] - 80099b0: 681b ldr r3, [r3, #0] - 80099b2: 6999 ldr r1, [r3, #24] - 80099b4: 68bb ldr r3, [r7, #8] - 80099b6: 691a ldr r2, [r3, #16] - 80099b8: 68fb ldr r3, [r7, #12] - 80099ba: 681b ldr r3, [r3, #0] - 80099bc: 430a orrs r2, r1 - 80099be: 619a str r2, [r3, #24] + 8009f22: 68fb ldr r3, [r7, #12] + 8009f24: 681b ldr r3, [r3, #0] + 8009f26: 6999 ldr r1, [r3, #24] + 8009f28: 68bb ldr r3, [r7, #8] + 8009f2a: 691a ldr r2, [r3, #16] + 8009f2c: 68fb ldr r3, [r7, #12] + 8009f2e: 681b ldr r3, [r3, #0] + 8009f30: 430a orrs r2, r1 + 8009f32: 619a str r2, [r3, #24] break; - 80099c0: e0f0 b.n 8009ba4 + 8009f34: e0f0 b.n 800a118 } case TIM_CHANNEL_2: { /* Check the parameters */ assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); - 80099c2: 68fb ldr r3, [r7, #12] - 80099c4: 681b ldr r3, [r3, #0] - 80099c6: 4a27 ldr r2, [pc, #156] @ (8009a64 ) - 80099c8: 4293 cmp r3, r2 - 80099ca: d027 beq.n 8009a1c - 80099cc: 68fb ldr r3, [r7, #12] - 80099ce: 681b ldr r3, [r3, #0] - 80099d0: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 80099d4: d022 beq.n 8009a1c - 80099d6: 68fb ldr r3, [r7, #12] - 80099d8: 681b ldr r3, [r3, #0] - 80099da: 4a23 ldr r2, [pc, #140] @ (8009a68 ) - 80099dc: 4293 cmp r3, r2 - 80099de: d01d beq.n 8009a1c - 80099e0: 68fb ldr r3, [r7, #12] - 80099e2: 681b ldr r3, [r3, #0] - 80099e4: 4a21 ldr r2, [pc, #132] @ (8009a6c ) - 80099e6: 4293 cmp r3, r2 - 80099e8: d018 beq.n 8009a1c - 80099ea: 68fb ldr r3, [r7, #12] - 80099ec: 681b ldr r3, [r3, #0] - 80099ee: 4a20 ldr r2, [pc, #128] @ (8009a70 ) - 80099f0: 4293 cmp r3, r2 - 80099f2: d013 beq.n 8009a1c - 80099f4: 68fb ldr r3, [r7, #12] - 80099f6: 681b ldr r3, [r3, #0] - 80099f8: 4a1e ldr r2, [pc, #120] @ (8009a74 ) - 80099fa: 4293 cmp r3, r2 - 80099fc: d00e beq.n 8009a1c - 80099fe: 68fb ldr r3, [r7, #12] - 8009a00: 681b ldr r3, [r3, #0] - 8009a02: 4a1d ldr r2, [pc, #116] @ (8009a78 ) - 8009a04: 4293 cmp r3, r2 - 8009a06: d009 beq.n 8009a1c - 8009a08: 68fb ldr r3, [r7, #12] - 8009a0a: 681b ldr r3, [r3, #0] - 8009a0c: 4a1d ldr r2, [pc, #116] @ (8009a84 ) - 8009a0e: 4293 cmp r3, r2 - 8009a10: d004 beq.n 8009a1c - 8009a12: f44f 5185 mov.w r1, #4256 @ 0x10a0 - 8009a16: 4812 ldr r0, [pc, #72] @ (8009a60 ) - 8009a18: f7f9 fbac bl 8003174 + 8009f36: 68fb ldr r3, [r7, #12] + 8009f38: 681b ldr r3, [r3, #0] + 8009f3a: 4a27 ldr r2, [pc, #156] @ (8009fd8 ) + 8009f3c: 4293 cmp r3, r2 + 8009f3e: d027 beq.n 8009f90 + 8009f40: 68fb ldr r3, [r7, #12] + 8009f42: 681b ldr r3, [r3, #0] + 8009f44: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8009f48: d022 beq.n 8009f90 + 8009f4a: 68fb ldr r3, [r7, #12] + 8009f4c: 681b ldr r3, [r3, #0] + 8009f4e: 4a23 ldr r2, [pc, #140] @ (8009fdc ) + 8009f50: 4293 cmp r3, r2 + 8009f52: d01d beq.n 8009f90 + 8009f54: 68fb ldr r3, [r7, #12] + 8009f56: 681b ldr r3, [r3, #0] + 8009f58: 4a21 ldr r2, [pc, #132] @ (8009fe0 ) + 8009f5a: 4293 cmp r3, r2 + 8009f5c: d018 beq.n 8009f90 + 8009f5e: 68fb ldr r3, [r7, #12] + 8009f60: 681b ldr r3, [r3, #0] + 8009f62: 4a20 ldr r2, [pc, #128] @ (8009fe4 ) + 8009f64: 4293 cmp r3, r2 + 8009f66: d013 beq.n 8009f90 + 8009f68: 68fb ldr r3, [r7, #12] + 8009f6a: 681b ldr r3, [r3, #0] + 8009f6c: 4a1e ldr r2, [pc, #120] @ (8009fe8 ) + 8009f6e: 4293 cmp r3, r2 + 8009f70: d00e beq.n 8009f90 + 8009f72: 68fb ldr r3, [r7, #12] + 8009f74: 681b ldr r3, [r3, #0] + 8009f76: 4a1d ldr r2, [pc, #116] @ (8009fec ) + 8009f78: 4293 cmp r3, r2 + 8009f7a: d009 beq.n 8009f90 + 8009f7c: 68fb ldr r3, [r7, #12] + 8009f7e: 681b ldr r3, [r3, #0] + 8009f80: 4a1d ldr r2, [pc, #116] @ (8009ff8 ) + 8009f82: 4293 cmp r3, r2 + 8009f84: d004 beq.n 8009f90 + 8009f86: f44f 5185 mov.w r1, #4256 @ 0x10a0 + 8009f8a: 4812 ldr r0, [pc, #72] @ (8009fd4 ) + 8009f8c: f7f9 f94e bl 800322c /* Configure the Channel 2 in PWM mode */ TIM_OC2_SetConfig(htim->Instance, sConfig); - 8009a1c: 68fb ldr r3, [r7, #12] - 8009a1e: 681b ldr r3, [r3, #0] - 8009a20: 68b9 ldr r1, [r7, #8] - 8009a22: 4618 mov r0, r3 - 8009a24: f000 fdc2 bl 800a5ac + 8009f90: 68fb ldr r3, [r7, #12] + 8009f92: 681b ldr r3, [r3, #0] + 8009f94: 68b9 ldr r1, [r7, #8] + 8009f96: 4618 mov r0, r3 + 8009f98: f000 fdc2 bl 800ab20 /* Set the Preload enable bit for channel2 */ htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE; - 8009a28: 68fb ldr r3, [r7, #12] - 8009a2a: 681b ldr r3, [r3, #0] - 8009a2c: 699a ldr r2, [r3, #24] - 8009a2e: 68fb ldr r3, [r7, #12] - 8009a30: 681b ldr r3, [r3, #0] - 8009a32: f442 6200 orr.w r2, r2, #2048 @ 0x800 - 8009a36: 619a str r2, [r3, #24] + 8009f9c: 68fb ldr r3, [r7, #12] + 8009f9e: 681b ldr r3, [r3, #0] + 8009fa0: 699a ldr r2, [r3, #24] + 8009fa2: 68fb ldr r3, [r7, #12] + 8009fa4: 681b ldr r3, [r3, #0] + 8009fa6: f442 6200 orr.w r2, r2, #2048 @ 0x800 + 8009faa: 619a str r2, [r3, #24] /* Configure the Output Fast mode */ htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE; - 8009a38: 68fb ldr r3, [r7, #12] - 8009a3a: 681b ldr r3, [r3, #0] - 8009a3c: 699a ldr r2, [r3, #24] - 8009a3e: 68fb ldr r3, [r7, #12] - 8009a40: 681b ldr r3, [r3, #0] - 8009a42: f422 6280 bic.w r2, r2, #1024 @ 0x400 - 8009a46: 619a str r2, [r3, #24] + 8009fac: 68fb ldr r3, [r7, #12] + 8009fae: 681b ldr r3, [r3, #0] + 8009fb0: 699a ldr r2, [r3, #24] + 8009fb2: 68fb ldr r3, [r7, #12] + 8009fb4: 681b ldr r3, [r3, #0] + 8009fb6: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 8009fba: 619a str r2, [r3, #24] htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U; - 8009a48: 68fb ldr r3, [r7, #12] - 8009a4a: 681b ldr r3, [r3, #0] - 8009a4c: 6999 ldr r1, [r3, #24] - 8009a4e: 68bb ldr r3, [r7, #8] - 8009a50: 691b ldr r3, [r3, #16] - 8009a52: 021a lsls r2, r3, #8 - 8009a54: 68fb ldr r3, [r7, #12] - 8009a56: 681b ldr r3, [r3, #0] - 8009a58: 430a orrs r2, r1 - 8009a5a: 619a str r2, [r3, #24] + 8009fbc: 68fb ldr r3, [r7, #12] + 8009fbe: 681b ldr r3, [r3, #0] + 8009fc0: 6999 ldr r1, [r3, #24] + 8009fc2: 68bb ldr r3, [r7, #8] + 8009fc4: 691b ldr r3, [r3, #16] + 8009fc6: 021a lsls r2, r3, #8 + 8009fc8: 68fb ldr r3, [r7, #12] + 8009fca: 681b ldr r3, [r3, #0] + 8009fcc: 430a orrs r2, r1 + 8009fce: 619a str r2, [r3, #24] break; - 8009a5c: e0a2 b.n 8009ba4 - 8009a5e: bf00 nop - 8009a60: 0800e908 .word 0x0800e908 - 8009a64: 40010000 .word 0x40010000 - 8009a68: 40000400 .word 0x40000400 - 8009a6c: 40000800 .word 0x40000800 - 8009a70: 40000c00 .word 0x40000c00 - 8009a74: 40010400 .word 0x40010400 - 8009a78: 40014000 .word 0x40014000 - 8009a7c: 40014400 .word 0x40014400 - 8009a80: 40014800 .word 0x40014800 - 8009a84: 40001800 .word 0x40001800 - 8009a88: 40001c00 .word 0x40001c00 - 8009a8c: 40002000 .word 0x40002000 + 8009fd0: e0a2 b.n 800a118 + 8009fd2: bf00 nop + 8009fd4: 0800ee78 .word 0x0800ee78 + 8009fd8: 40010000 .word 0x40010000 + 8009fdc: 40000400 .word 0x40000400 + 8009fe0: 40000800 .word 0x40000800 + 8009fe4: 40000c00 .word 0x40000c00 + 8009fe8: 40010400 .word 0x40010400 + 8009fec: 40014000 .word 0x40014000 + 8009ff0: 40014400 .word 0x40014400 + 8009ff4: 40014800 .word 0x40014800 + 8009ff8: 40001800 .word 0x40001800 + 8009ffc: 40001c00 .word 0x40001c00 + 800a000: 40002000 .word 0x40002000 } case TIM_CHANNEL_3: { /* Check the parameters */ assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); - 8009a90: 68fb ldr r3, [r7, #12] - 8009a92: 681b ldr r3, [r3, #0] - 8009a94: 4a48 ldr r2, [pc, #288] @ (8009bb8 ) - 8009a96: 4293 cmp r3, r2 - 8009a98: d01d beq.n 8009ad6 - 8009a9a: 68fb ldr r3, [r7, #12] - 8009a9c: 681b ldr r3, [r3, #0] - 8009a9e: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8009aa2: d018 beq.n 8009ad6 - 8009aa4: 68fb ldr r3, [r7, #12] - 8009aa6: 681b ldr r3, [r3, #0] - 8009aa8: 4a44 ldr r2, [pc, #272] @ (8009bbc ) - 8009aaa: 4293 cmp r3, r2 - 8009aac: d013 beq.n 8009ad6 - 8009aae: 68fb ldr r3, [r7, #12] - 8009ab0: 681b ldr r3, [r3, #0] - 8009ab2: 4a43 ldr r2, [pc, #268] @ (8009bc0 ) - 8009ab4: 4293 cmp r3, r2 - 8009ab6: d00e beq.n 8009ad6 - 8009ab8: 68fb ldr r3, [r7, #12] - 8009aba: 681b ldr r3, [r3, #0] - 8009abc: 4a41 ldr r2, [pc, #260] @ (8009bc4 ) - 8009abe: 4293 cmp r3, r2 - 8009ac0: d009 beq.n 8009ad6 - 8009ac2: 68fb ldr r3, [r7, #12] - 8009ac4: 681b ldr r3, [r3, #0] - 8009ac6: 4a40 ldr r2, [pc, #256] @ (8009bc8 ) - 8009ac8: 4293 cmp r3, r2 - 8009aca: d004 beq.n 8009ad6 - 8009acc: f241 01b1 movw r1, #4273 @ 0x10b1 - 8009ad0: 483e ldr r0, [pc, #248] @ (8009bcc ) - 8009ad2: f7f9 fb4f bl 8003174 + 800a004: 68fb ldr r3, [r7, #12] + 800a006: 681b ldr r3, [r3, #0] + 800a008: 4a48 ldr r2, [pc, #288] @ (800a12c ) + 800a00a: 4293 cmp r3, r2 + 800a00c: d01d beq.n 800a04a + 800a00e: 68fb ldr r3, [r7, #12] + 800a010: 681b ldr r3, [r3, #0] + 800a012: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 800a016: d018 beq.n 800a04a + 800a018: 68fb ldr r3, [r7, #12] + 800a01a: 681b ldr r3, [r3, #0] + 800a01c: 4a44 ldr r2, [pc, #272] @ (800a130 ) + 800a01e: 4293 cmp r3, r2 + 800a020: d013 beq.n 800a04a + 800a022: 68fb ldr r3, [r7, #12] + 800a024: 681b ldr r3, [r3, #0] + 800a026: 4a43 ldr r2, [pc, #268] @ (800a134 ) + 800a028: 4293 cmp r3, r2 + 800a02a: d00e beq.n 800a04a + 800a02c: 68fb ldr r3, [r7, #12] + 800a02e: 681b ldr r3, [r3, #0] + 800a030: 4a41 ldr r2, [pc, #260] @ (800a138 ) + 800a032: 4293 cmp r3, r2 + 800a034: d009 beq.n 800a04a + 800a036: 68fb ldr r3, [r7, #12] + 800a038: 681b ldr r3, [r3, #0] + 800a03a: 4a40 ldr r2, [pc, #256] @ (800a13c ) + 800a03c: 4293 cmp r3, r2 + 800a03e: d004 beq.n 800a04a + 800a040: f241 01b1 movw r1, #4273 @ 0x10b1 + 800a044: 483e ldr r0, [pc, #248] @ (800a140 ) + 800a046: f7f9 f8f1 bl 800322c /* Configure the Channel 3 in PWM mode */ TIM_OC3_SetConfig(htim->Instance, sConfig); - 8009ad6: 68fb ldr r3, [r7, #12] - 8009ad8: 681b ldr r3, [r3, #0] - 8009ada: 68b9 ldr r1, [r7, #8] - 8009adc: 4618 mov r0, r3 - 8009ade: f000 fe03 bl 800a6e8 + 800a04a: 68fb ldr r3, [r7, #12] + 800a04c: 681b ldr r3, [r3, #0] + 800a04e: 68b9 ldr r1, [r7, #8] + 800a050: 4618 mov r0, r3 + 800a052: f000 fe03 bl 800ac5c /* Set the Preload enable bit for channel3 */ htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE; - 8009ae2: 68fb ldr r3, [r7, #12] - 8009ae4: 681b ldr r3, [r3, #0] - 8009ae6: 69da ldr r2, [r3, #28] - 8009ae8: 68fb ldr r3, [r7, #12] - 8009aea: 681b ldr r3, [r3, #0] - 8009aec: f042 0208 orr.w r2, r2, #8 - 8009af0: 61da str r2, [r3, #28] + 800a056: 68fb ldr r3, [r7, #12] + 800a058: 681b ldr r3, [r3, #0] + 800a05a: 69da ldr r2, [r3, #28] + 800a05c: 68fb ldr r3, [r7, #12] + 800a05e: 681b ldr r3, [r3, #0] + 800a060: f042 0208 orr.w r2, r2, #8 + 800a064: 61da str r2, [r3, #28] /* Configure the Output Fast mode */ htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE; - 8009af2: 68fb ldr r3, [r7, #12] - 8009af4: 681b ldr r3, [r3, #0] - 8009af6: 69da ldr r2, [r3, #28] - 8009af8: 68fb ldr r3, [r7, #12] - 8009afa: 681b ldr r3, [r3, #0] - 8009afc: f022 0204 bic.w r2, r2, #4 - 8009b00: 61da str r2, [r3, #28] + 800a066: 68fb ldr r3, [r7, #12] + 800a068: 681b ldr r3, [r3, #0] + 800a06a: 69da ldr r2, [r3, #28] + 800a06c: 68fb ldr r3, [r7, #12] + 800a06e: 681b ldr r3, [r3, #0] + 800a070: f022 0204 bic.w r2, r2, #4 + 800a074: 61da str r2, [r3, #28] htim->Instance->CCMR2 |= sConfig->OCFastMode; - 8009b02: 68fb ldr r3, [r7, #12] - 8009b04: 681b ldr r3, [r3, #0] - 8009b06: 69d9 ldr r1, [r3, #28] - 8009b08: 68bb ldr r3, [r7, #8] - 8009b0a: 691a ldr r2, [r3, #16] - 8009b0c: 68fb ldr r3, [r7, #12] - 8009b0e: 681b ldr r3, [r3, #0] - 8009b10: 430a orrs r2, r1 - 8009b12: 61da str r2, [r3, #28] + 800a076: 68fb ldr r3, [r7, #12] + 800a078: 681b ldr r3, [r3, #0] + 800a07a: 69d9 ldr r1, [r3, #28] + 800a07c: 68bb ldr r3, [r7, #8] + 800a07e: 691a ldr r2, [r3, #16] + 800a080: 68fb ldr r3, [r7, #12] + 800a082: 681b ldr r3, [r3, #0] + 800a084: 430a orrs r2, r1 + 800a086: 61da str r2, [r3, #28] break; - 8009b14: e046 b.n 8009ba4 + 800a088: e046 b.n 800a118 } case TIM_CHANNEL_4: { /* Check the parameters */ assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); - 8009b16: 68fb ldr r3, [r7, #12] - 8009b18: 681b ldr r3, [r3, #0] - 8009b1a: 4a27 ldr r2, [pc, #156] @ (8009bb8 ) - 8009b1c: 4293 cmp r3, r2 - 8009b1e: d01d beq.n 8009b5c - 8009b20: 68fb ldr r3, [r7, #12] - 8009b22: 681b ldr r3, [r3, #0] - 8009b24: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8009b28: d018 beq.n 8009b5c - 8009b2a: 68fb ldr r3, [r7, #12] - 8009b2c: 681b ldr r3, [r3, #0] - 8009b2e: 4a23 ldr r2, [pc, #140] @ (8009bbc ) - 8009b30: 4293 cmp r3, r2 - 8009b32: d013 beq.n 8009b5c - 8009b34: 68fb ldr r3, [r7, #12] - 8009b36: 681b ldr r3, [r3, #0] - 8009b38: 4a21 ldr r2, [pc, #132] @ (8009bc0 ) - 8009b3a: 4293 cmp r3, r2 - 8009b3c: d00e beq.n 8009b5c - 8009b3e: 68fb ldr r3, [r7, #12] - 8009b40: 681b ldr r3, [r3, #0] - 8009b42: 4a20 ldr r2, [pc, #128] @ (8009bc4 ) - 8009b44: 4293 cmp r3, r2 - 8009b46: d009 beq.n 8009b5c - 8009b48: 68fb ldr r3, [r7, #12] - 8009b4a: 681b ldr r3, [r3, #0] - 8009b4c: 4a1e ldr r2, [pc, #120] @ (8009bc8 ) - 8009b4e: 4293 cmp r3, r2 - 8009b50: d004 beq.n 8009b5c - 8009b52: f241 01c2 movw r1, #4290 @ 0x10c2 - 8009b56: 481d ldr r0, [pc, #116] @ (8009bcc ) - 8009b58: f7f9 fb0c bl 8003174 + 800a08a: 68fb ldr r3, [r7, #12] + 800a08c: 681b ldr r3, [r3, #0] + 800a08e: 4a27 ldr r2, [pc, #156] @ (800a12c ) + 800a090: 4293 cmp r3, r2 + 800a092: d01d beq.n 800a0d0 + 800a094: 68fb ldr r3, [r7, #12] + 800a096: 681b ldr r3, [r3, #0] + 800a098: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 800a09c: d018 beq.n 800a0d0 + 800a09e: 68fb ldr r3, [r7, #12] + 800a0a0: 681b ldr r3, [r3, #0] + 800a0a2: 4a23 ldr r2, [pc, #140] @ (800a130 ) + 800a0a4: 4293 cmp r3, r2 + 800a0a6: d013 beq.n 800a0d0 + 800a0a8: 68fb ldr r3, [r7, #12] + 800a0aa: 681b ldr r3, [r3, #0] + 800a0ac: 4a21 ldr r2, [pc, #132] @ (800a134 ) + 800a0ae: 4293 cmp r3, r2 + 800a0b0: d00e beq.n 800a0d0 + 800a0b2: 68fb ldr r3, [r7, #12] + 800a0b4: 681b ldr r3, [r3, #0] + 800a0b6: 4a20 ldr r2, [pc, #128] @ (800a138 ) + 800a0b8: 4293 cmp r3, r2 + 800a0ba: d009 beq.n 800a0d0 + 800a0bc: 68fb ldr r3, [r7, #12] + 800a0be: 681b ldr r3, [r3, #0] + 800a0c0: 4a1e ldr r2, [pc, #120] @ (800a13c ) + 800a0c2: 4293 cmp r3, r2 + 800a0c4: d004 beq.n 800a0d0 + 800a0c6: f241 01c2 movw r1, #4290 @ 0x10c2 + 800a0ca: 481d ldr r0, [pc, #116] @ (800a140 ) + 800a0cc: f7f9 f8ae bl 800322c /* Configure the Channel 4 in PWM mode */ TIM_OC4_SetConfig(htim->Instance, sConfig); - 8009b5c: 68fb ldr r3, [r7, #12] - 8009b5e: 681b ldr r3, [r3, #0] - 8009b60: 68b9 ldr r1, [r7, #8] - 8009b62: 4618 mov r0, r3 - 8009b64: f000 fe5e bl 800a824 + 800a0d0: 68fb ldr r3, [r7, #12] + 800a0d2: 681b ldr r3, [r3, #0] + 800a0d4: 68b9 ldr r1, [r7, #8] + 800a0d6: 4618 mov r0, r3 + 800a0d8: f000 fe5e bl 800ad98 /* Set the Preload enable bit for channel4 */ htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE; - 8009b68: 68fb ldr r3, [r7, #12] - 8009b6a: 681b ldr r3, [r3, #0] - 8009b6c: 69da ldr r2, [r3, #28] - 8009b6e: 68fb ldr r3, [r7, #12] - 8009b70: 681b ldr r3, [r3, #0] - 8009b72: f442 6200 orr.w r2, r2, #2048 @ 0x800 - 8009b76: 61da str r2, [r3, #28] + 800a0dc: 68fb ldr r3, [r7, #12] + 800a0de: 681b ldr r3, [r3, #0] + 800a0e0: 69da ldr r2, [r3, #28] + 800a0e2: 68fb ldr r3, [r7, #12] + 800a0e4: 681b ldr r3, [r3, #0] + 800a0e6: f442 6200 orr.w r2, r2, #2048 @ 0x800 + 800a0ea: 61da str r2, [r3, #28] /* Configure the Output Fast mode */ htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE; - 8009b78: 68fb ldr r3, [r7, #12] - 8009b7a: 681b ldr r3, [r3, #0] - 8009b7c: 69da ldr r2, [r3, #28] - 8009b7e: 68fb ldr r3, [r7, #12] - 8009b80: 681b ldr r3, [r3, #0] - 8009b82: f422 6280 bic.w r2, r2, #1024 @ 0x400 - 8009b86: 61da str r2, [r3, #28] + 800a0ec: 68fb ldr r3, [r7, #12] + 800a0ee: 681b ldr r3, [r3, #0] + 800a0f0: 69da ldr r2, [r3, #28] + 800a0f2: 68fb ldr r3, [r7, #12] + 800a0f4: 681b ldr r3, [r3, #0] + 800a0f6: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 800a0fa: 61da str r2, [r3, #28] htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U; - 8009b88: 68fb ldr r3, [r7, #12] - 8009b8a: 681b ldr r3, [r3, #0] - 8009b8c: 69d9 ldr r1, [r3, #28] - 8009b8e: 68bb ldr r3, [r7, #8] - 8009b90: 691b ldr r3, [r3, #16] - 8009b92: 021a lsls r2, r3, #8 - 8009b94: 68fb ldr r3, [r7, #12] - 8009b96: 681b ldr r3, [r3, #0] - 8009b98: 430a orrs r2, r1 - 8009b9a: 61da str r2, [r3, #28] + 800a0fc: 68fb ldr r3, [r7, #12] + 800a0fe: 681b ldr r3, [r3, #0] + 800a100: 69d9 ldr r1, [r3, #28] + 800a102: 68bb ldr r3, [r7, #8] + 800a104: 691b ldr r3, [r3, #16] + 800a106: 021a lsls r2, r3, #8 + 800a108: 68fb ldr r3, [r7, #12] + 800a10a: 681b ldr r3, [r3, #0] + 800a10c: 430a orrs r2, r1 + 800a10e: 61da str r2, [r3, #28] break; - 8009b9c: e002 b.n 8009ba4 + 800a110: e002 b.n 800a118 } default: status = HAL_ERROR; - 8009b9e: 2301 movs r3, #1 - 8009ba0: 75fb strb r3, [r7, #23] + 800a112: 2301 movs r3, #1 + 800a114: 75fb strb r3, [r7, #23] break; - 8009ba2: bf00 nop + 800a116: bf00 nop } __HAL_UNLOCK(htim); - 8009ba4: 68fb ldr r3, [r7, #12] - 8009ba6: 2200 movs r2, #0 - 8009ba8: f883 203c strb.w r2, [r3, #60] @ 0x3c + 800a118: 68fb ldr r3, [r7, #12] + 800a11a: 2200 movs r2, #0 + 800a11c: f883 203c strb.w r2, [r3, #60] @ 0x3c return status; - 8009bac: 7dfb ldrb r3, [r7, #23] + 800a120: 7dfb ldrb r3, [r7, #23] } - 8009bae: 4618 mov r0, r3 - 8009bb0: 3718 adds r7, #24 - 8009bb2: 46bd mov sp, r7 - 8009bb4: bd80 pop {r7, pc} - 8009bb6: bf00 nop - 8009bb8: 40010000 .word 0x40010000 - 8009bbc: 40000400 .word 0x40000400 - 8009bc0: 40000800 .word 0x40000800 - 8009bc4: 40000c00 .word 0x40000c00 - 8009bc8: 40010400 .word 0x40010400 - 8009bcc: 0800e908 .word 0x0800e908 + 800a122: 4618 mov r0, r3 + 800a124: 3718 adds r7, #24 + 800a126: 46bd mov sp, r7 + 800a128: bd80 pop {r7, pc} + 800a12a: bf00 nop + 800a12c: 40010000 .word 0x40010000 + 800a130: 40000400 .word 0x40000400 + 800a134: 40000800 .word 0x40000800 + 800a138: 40000c00 .word 0x40000c00 + 800a13c: 40010400 .word 0x40010400 + 800a140: 0800ee78 .word 0x0800ee78 -08009bd0 : +0800a144 : * @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) { - 8009bd0: b580 push {r7, lr} - 8009bd2: b084 sub sp, #16 - 8009bd4: af00 add r7, sp, #0 - 8009bd6: 6078 str r0, [r7, #4] - 8009bd8: 6039 str r1, [r7, #0] + 800a144: b580 push {r7, lr} + 800a146: b084 sub sp, #16 + 800a148: af00 add r7, sp, #0 + 800a14a: 6078 str r0, [r7, #4] + 800a14c: 6039 str r1, [r7, #0] HAL_StatusTypeDef status = HAL_OK; - 8009bda: 2300 movs r3, #0 - 8009bdc: 73fb strb r3, [r7, #15] + 800a14e: 2300 movs r3, #0 + 800a150: 73fb strb r3, [r7, #15] uint32_t tmpsmcr; /* Process Locked */ __HAL_LOCK(htim); - 8009bde: 687b ldr r3, [r7, #4] - 8009be0: f893 303c ldrb.w r3, [r3, #60] @ 0x3c - 8009be4: 2b01 cmp r3, #1 - 8009be6: d101 bne.n 8009bec - 8009be8: 2302 movs r3, #2 - 8009bea: e35c b.n 800a2a6 - 8009bec: 687b ldr r3, [r7, #4] - 8009bee: 2201 movs r2, #1 - 8009bf0: f883 203c strb.w r2, [r3, #60] @ 0x3c + 800a152: 687b ldr r3, [r7, #4] + 800a154: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 800a158: 2b01 cmp r3, #1 + 800a15a: d101 bne.n 800a160 + 800a15c: 2302 movs r3, #2 + 800a15e: e35c b.n 800a81a + 800a160: 687b ldr r3, [r7, #4] + 800a162: 2201 movs r2, #1 + 800a164: f883 203c strb.w r2, [r3, #60] @ 0x3c htim->State = HAL_TIM_STATE_BUSY; - 8009bf4: 687b ldr r3, [r7, #4] - 8009bf6: 2202 movs r2, #2 - 8009bf8: f883 203d strb.w r2, [r3, #61] @ 0x3d + 800a168: 687b ldr r3, [r7, #4] + 800a16a: 2202 movs r2, #2 + 800a16c: f883 203d strb.w r2, [r3, #61] @ 0x3d /* Check the parameters */ assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource)); - 8009bfc: 683b ldr r3, [r7, #0] - 8009bfe: 681b ldr r3, [r3, #0] - 8009c00: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 8009c04: d029 beq.n 8009c5a - 8009c06: 683b ldr r3, [r7, #0] - 8009c08: 681b ldr r3, [r3, #0] - 8009c0a: 2b70 cmp r3, #112 @ 0x70 - 8009c0c: d025 beq.n 8009c5a - 8009c0e: 683b ldr r3, [r7, #0] - 8009c10: 681b ldr r3, [r3, #0] - 8009c12: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 - 8009c16: d020 beq.n 8009c5a - 8009c18: 683b ldr r3, [r7, #0] - 8009c1a: 681b ldr r3, [r3, #0] - 8009c1c: 2b40 cmp r3, #64 @ 0x40 - 8009c1e: d01c beq.n 8009c5a - 8009c20: 683b ldr r3, [r7, #0] - 8009c22: 681b ldr r3, [r3, #0] - 8009c24: 2b50 cmp r3, #80 @ 0x50 - 8009c26: d018 beq.n 8009c5a - 8009c28: 683b ldr r3, [r7, #0] - 8009c2a: 681b ldr r3, [r3, #0] - 8009c2c: 2b60 cmp r3, #96 @ 0x60 - 8009c2e: d014 beq.n 8009c5a - 8009c30: 683b ldr r3, [r7, #0] - 8009c32: 681b ldr r3, [r3, #0] - 8009c34: 2b00 cmp r3, #0 - 8009c36: d010 beq.n 8009c5a - 8009c38: 683b ldr r3, [r7, #0] - 8009c3a: 681b ldr r3, [r3, #0] - 8009c3c: 2b10 cmp r3, #16 - 8009c3e: d00c beq.n 8009c5a - 8009c40: 683b ldr r3, [r7, #0] - 8009c42: 681b ldr r3, [r3, #0] - 8009c44: 2b20 cmp r3, #32 - 8009c46: d008 beq.n 8009c5a - 8009c48: 683b ldr r3, [r7, #0] - 8009c4a: 681b ldr r3, [r3, #0] - 8009c4c: 2b30 cmp r3, #48 @ 0x30 - 8009c4e: d004 beq.n 8009c5a - 8009c50: f241 41c3 movw r1, #5315 @ 0x14c3 - 8009c54: 4893 ldr r0, [pc, #588] @ (8009ea4 ) - 8009c56: f7f9 fa8d bl 8003174 + 800a170: 683b ldr r3, [r7, #0] + 800a172: 681b ldr r3, [r3, #0] + 800a174: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 800a178: d029 beq.n 800a1ce + 800a17a: 683b ldr r3, [r7, #0] + 800a17c: 681b ldr r3, [r3, #0] + 800a17e: 2b70 cmp r3, #112 @ 0x70 + 800a180: d025 beq.n 800a1ce + 800a182: 683b ldr r3, [r7, #0] + 800a184: 681b ldr r3, [r3, #0] + 800a186: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 800a18a: d020 beq.n 800a1ce + 800a18c: 683b ldr r3, [r7, #0] + 800a18e: 681b ldr r3, [r3, #0] + 800a190: 2b40 cmp r3, #64 @ 0x40 + 800a192: d01c beq.n 800a1ce + 800a194: 683b ldr r3, [r7, #0] + 800a196: 681b ldr r3, [r3, #0] + 800a198: 2b50 cmp r3, #80 @ 0x50 + 800a19a: d018 beq.n 800a1ce + 800a19c: 683b ldr r3, [r7, #0] + 800a19e: 681b ldr r3, [r3, #0] + 800a1a0: 2b60 cmp r3, #96 @ 0x60 + 800a1a2: d014 beq.n 800a1ce + 800a1a4: 683b ldr r3, [r7, #0] + 800a1a6: 681b ldr r3, [r3, #0] + 800a1a8: 2b00 cmp r3, #0 + 800a1aa: d010 beq.n 800a1ce + 800a1ac: 683b ldr r3, [r7, #0] + 800a1ae: 681b ldr r3, [r3, #0] + 800a1b0: 2b10 cmp r3, #16 + 800a1b2: d00c beq.n 800a1ce + 800a1b4: 683b ldr r3, [r7, #0] + 800a1b6: 681b ldr r3, [r3, #0] + 800a1b8: 2b20 cmp r3, #32 + 800a1ba: d008 beq.n 800a1ce + 800a1bc: 683b ldr r3, [r7, #0] + 800a1be: 681b ldr r3, [r3, #0] + 800a1c0: 2b30 cmp r3, #48 @ 0x30 + 800a1c2: d004 beq.n 800a1ce + 800a1c4: f241 41c3 movw r1, #5315 @ 0x14c3 + 800a1c8: 4893 ldr r0, [pc, #588] @ (800a418 ) + 800a1ca: f7f9 f82f bl 800322c /* Reset the SMS, TS, ECE, ETPS and ETRF bits */ tmpsmcr = htim->Instance->SMCR; - 8009c5a: 687b ldr r3, [r7, #4] - 8009c5c: 681b ldr r3, [r3, #0] - 8009c5e: 689b ldr r3, [r3, #8] - 8009c60: 60bb str r3, [r7, #8] + 800a1ce: 687b ldr r3, [r7, #4] + 800a1d0: 681b ldr r3, [r3, #0] + 800a1d2: 689b ldr r3, [r3, #8] + 800a1d4: 60bb str r3, [r7, #8] tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); - 8009c62: 68bb ldr r3, [r7, #8] - 8009c64: f023 0377 bic.w r3, r3, #119 @ 0x77 - 8009c68: 60bb str r3, [r7, #8] + 800a1d6: 68bb ldr r3, [r7, #8] + 800a1d8: f023 0377 bic.w r3, r3, #119 @ 0x77 + 800a1dc: 60bb str r3, [r7, #8] tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); - 8009c6a: 68bb ldr r3, [r7, #8] - 8009c6c: f423 437f bic.w r3, r3, #65280 @ 0xff00 - 8009c70: 60bb str r3, [r7, #8] + 800a1de: 68bb ldr r3, [r7, #8] + 800a1e0: f423 437f bic.w r3, r3, #65280 @ 0xff00 + 800a1e4: 60bb str r3, [r7, #8] htim->Instance->SMCR = tmpsmcr; - 8009c72: 687b ldr r3, [r7, #4] - 8009c74: 681b ldr r3, [r3, #0] - 8009c76: 68ba ldr r2, [r7, #8] - 8009c78: 609a str r2, [r3, #8] + 800a1e6: 687b ldr r3, [r7, #4] + 800a1e8: 681b ldr r3, [r3, #0] + 800a1ea: 68ba ldr r2, [r7, #8] + 800a1ec: 609a str r2, [r3, #8] switch (sClockSourceConfig->ClockSource) - 8009c7a: 683b ldr r3, [r7, #0] - 8009c7c: 681b ldr r3, [r3, #0] - 8009c7e: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 - 8009c82: f000 812b beq.w 8009edc - 8009c86: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 - 8009c8a: f200 82ff bhi.w 800a28c - 8009c8e: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 8009c92: d02e beq.n 8009cf2 - 8009c94: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 8009c98: f200 82f8 bhi.w 800a28c - 8009c9c: 2b70 cmp r3, #112 @ 0x70 - 8009c9e: f000 8082 beq.w 8009da6 - 8009ca2: 2b70 cmp r3, #112 @ 0x70 - 8009ca4: f200 82f2 bhi.w 800a28c - 8009ca8: 2b60 cmp r3, #96 @ 0x60 - 8009caa: f000 81f9 beq.w 800a0a0 - 8009cae: 2b60 cmp r3, #96 @ 0x60 - 8009cb0: f200 82ec bhi.w 800a28c - 8009cb4: 2b50 cmp r3, #80 @ 0x50 - 8009cb6: f000 8182 beq.w 8009fbe - 8009cba: 2b50 cmp r3, #80 @ 0x50 - 8009cbc: f200 82e6 bhi.w 800a28c - 8009cc0: 2b40 cmp r3, #64 @ 0x40 - 8009cc2: f000 824d beq.w 800a160 - 8009cc6: 2b40 cmp r3, #64 @ 0x40 - 8009cc8: f200 82e0 bhi.w 800a28c - 8009ccc: 2b30 cmp r3, #48 @ 0x30 - 8009cce: f000 82a7 beq.w 800a220 - 8009cd2: 2b30 cmp r3, #48 @ 0x30 - 8009cd4: f200 82da bhi.w 800a28c - 8009cd8: 2b20 cmp r3, #32 - 8009cda: f000 82a1 beq.w 800a220 - 8009cde: 2b20 cmp r3, #32 - 8009ce0: f200 82d4 bhi.w 800a28c - 8009ce4: 2b00 cmp r3, #0 - 8009ce6: f000 829b beq.w 800a220 - 8009cea: 2b10 cmp r3, #16 - 8009cec: f000 8298 beq.w 800a220 - 8009cf0: e2cc b.n 800a28c + 800a1ee: 683b ldr r3, [r7, #0] + 800a1f0: 681b ldr r3, [r3, #0] + 800a1f2: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 800a1f6: f000 812b beq.w 800a450 + 800a1fa: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 800a1fe: f200 82ff bhi.w 800a800 + 800a202: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 800a206: d02e beq.n 800a266 + 800a208: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 800a20c: f200 82f8 bhi.w 800a800 + 800a210: 2b70 cmp r3, #112 @ 0x70 + 800a212: f000 8082 beq.w 800a31a + 800a216: 2b70 cmp r3, #112 @ 0x70 + 800a218: f200 82f2 bhi.w 800a800 + 800a21c: 2b60 cmp r3, #96 @ 0x60 + 800a21e: f000 81f9 beq.w 800a614 + 800a222: 2b60 cmp r3, #96 @ 0x60 + 800a224: f200 82ec bhi.w 800a800 + 800a228: 2b50 cmp r3, #80 @ 0x50 + 800a22a: f000 8182 beq.w 800a532 + 800a22e: 2b50 cmp r3, #80 @ 0x50 + 800a230: f200 82e6 bhi.w 800a800 + 800a234: 2b40 cmp r3, #64 @ 0x40 + 800a236: f000 824d beq.w 800a6d4 + 800a23a: 2b40 cmp r3, #64 @ 0x40 + 800a23c: f200 82e0 bhi.w 800a800 + 800a240: 2b30 cmp r3, #48 @ 0x30 + 800a242: f000 82a7 beq.w 800a794 + 800a246: 2b30 cmp r3, #48 @ 0x30 + 800a248: f200 82da bhi.w 800a800 + 800a24c: 2b20 cmp r3, #32 + 800a24e: f000 82a1 beq.w 800a794 + 800a252: 2b20 cmp r3, #32 + 800a254: f200 82d4 bhi.w 800a800 + 800a258: 2b00 cmp r3, #0 + 800a25a: f000 829b beq.w 800a794 + 800a25e: 2b10 cmp r3, #16 + 800a260: f000 8298 beq.w 800a794 + 800a264: e2cc b.n 800a800 { case TIM_CLOCKSOURCE_INTERNAL: { assert_param(IS_TIM_INSTANCE(htim->Instance)); - 8009cf2: 687b ldr r3, [r7, #4] - 8009cf4: 681b ldr r3, [r3, #0] - 8009cf6: 4a6c ldr r2, [pc, #432] @ (8009ea8 ) - 8009cf8: 4293 cmp r3, r2 - 8009cfa: f000 82ca beq.w 800a292 - 8009cfe: 687b ldr r3, [r7, #4] - 8009d00: 681b ldr r3, [r3, #0] - 8009d02: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8009d06: f000 82c4 beq.w 800a292 - 8009d0a: 687b ldr r3, [r7, #4] - 8009d0c: 681b ldr r3, [r3, #0] - 8009d0e: 4a67 ldr r2, [pc, #412] @ (8009eac ) - 8009d10: 4293 cmp r3, r2 - 8009d12: f000 82be beq.w 800a292 - 8009d16: 687b ldr r3, [r7, #4] - 8009d18: 681b ldr r3, [r3, #0] - 8009d1a: 4a65 ldr r2, [pc, #404] @ (8009eb0 ) - 8009d1c: 4293 cmp r3, r2 - 8009d1e: f000 82b8 beq.w 800a292 - 8009d22: 687b ldr r3, [r7, #4] - 8009d24: 681b ldr r3, [r3, #0] - 8009d26: 4a63 ldr r2, [pc, #396] @ (8009eb4 ) - 8009d28: 4293 cmp r3, r2 - 8009d2a: f000 82b2 beq.w 800a292 - 8009d2e: 687b ldr r3, [r7, #4] - 8009d30: 681b ldr r3, [r3, #0] - 8009d32: 4a61 ldr r2, [pc, #388] @ (8009eb8 ) - 8009d34: 4293 cmp r3, r2 - 8009d36: f000 82ac beq.w 800a292 - 8009d3a: 687b ldr r3, [r7, #4] - 8009d3c: 681b ldr r3, [r3, #0] - 8009d3e: 4a5f ldr r2, [pc, #380] @ (8009ebc ) - 8009d40: 4293 cmp r3, r2 - 8009d42: f000 82a6 beq.w 800a292 - 8009d46: 687b ldr r3, [r7, #4] - 8009d48: 681b ldr r3, [r3, #0] - 8009d4a: 4a5d ldr r2, [pc, #372] @ (8009ec0 ) - 8009d4c: 4293 cmp r3, r2 - 8009d4e: f000 82a0 beq.w 800a292 - 8009d52: 687b ldr r3, [r7, #4] - 8009d54: 681b ldr r3, [r3, #0] - 8009d56: 4a5b ldr r2, [pc, #364] @ (8009ec4 ) - 8009d58: 4293 cmp r3, r2 - 8009d5a: f000 829a beq.w 800a292 - 8009d5e: 687b ldr r3, [r7, #4] - 8009d60: 681b ldr r3, [r3, #0] - 8009d62: 4a59 ldr r2, [pc, #356] @ (8009ec8 ) - 8009d64: 4293 cmp r3, r2 - 8009d66: f000 8294 beq.w 800a292 - 8009d6a: 687b ldr r3, [r7, #4] - 8009d6c: 681b ldr r3, [r3, #0] - 8009d6e: 4a57 ldr r2, [pc, #348] @ (8009ecc ) - 8009d70: 4293 cmp r3, r2 - 8009d72: f000 828e beq.w 800a292 - 8009d76: 687b ldr r3, [r7, #4] - 8009d78: 681b ldr r3, [r3, #0] - 8009d7a: 4a55 ldr r2, [pc, #340] @ (8009ed0 ) - 8009d7c: 4293 cmp r3, r2 - 8009d7e: f000 8288 beq.w 800a292 - 8009d82: 687b ldr r3, [r7, #4] - 8009d84: 681b ldr r3, [r3, #0] - 8009d86: 4a53 ldr r2, [pc, #332] @ (8009ed4 ) - 8009d88: 4293 cmp r3, r2 - 8009d8a: f000 8282 beq.w 800a292 - 8009d8e: 687b ldr r3, [r7, #4] - 8009d90: 681b ldr r3, [r3, #0] - 8009d92: 4a51 ldr r2, [pc, #324] @ (8009ed8 ) - 8009d94: 4293 cmp r3, r2 - 8009d96: f000 827c beq.w 800a292 - 8009d9a: f241 41cf movw r1, #5327 @ 0x14cf - 8009d9e: 4841 ldr r0, [pc, #260] @ (8009ea4 ) - 8009da0: f7f9 f9e8 bl 8003174 + 800a266: 687b ldr r3, [r7, #4] + 800a268: 681b ldr r3, [r3, #0] + 800a26a: 4a6c ldr r2, [pc, #432] @ (800a41c ) + 800a26c: 4293 cmp r3, r2 + 800a26e: f000 82ca beq.w 800a806 + 800a272: 687b ldr r3, [r7, #4] + 800a274: 681b ldr r3, [r3, #0] + 800a276: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 800a27a: f000 82c4 beq.w 800a806 + 800a27e: 687b ldr r3, [r7, #4] + 800a280: 681b ldr r3, [r3, #0] + 800a282: 4a67 ldr r2, [pc, #412] @ (800a420 ) + 800a284: 4293 cmp r3, r2 + 800a286: f000 82be beq.w 800a806 + 800a28a: 687b ldr r3, [r7, #4] + 800a28c: 681b ldr r3, [r3, #0] + 800a28e: 4a65 ldr r2, [pc, #404] @ (800a424 ) + 800a290: 4293 cmp r3, r2 + 800a292: f000 82b8 beq.w 800a806 + 800a296: 687b ldr r3, [r7, #4] + 800a298: 681b ldr r3, [r3, #0] + 800a29a: 4a63 ldr r2, [pc, #396] @ (800a428 ) + 800a29c: 4293 cmp r3, r2 + 800a29e: f000 82b2 beq.w 800a806 + 800a2a2: 687b ldr r3, [r7, #4] + 800a2a4: 681b ldr r3, [r3, #0] + 800a2a6: 4a61 ldr r2, [pc, #388] @ (800a42c ) + 800a2a8: 4293 cmp r3, r2 + 800a2aa: f000 82ac beq.w 800a806 + 800a2ae: 687b ldr r3, [r7, #4] + 800a2b0: 681b ldr r3, [r3, #0] + 800a2b2: 4a5f ldr r2, [pc, #380] @ (800a430 ) + 800a2b4: 4293 cmp r3, r2 + 800a2b6: f000 82a6 beq.w 800a806 + 800a2ba: 687b ldr r3, [r7, #4] + 800a2bc: 681b ldr r3, [r3, #0] + 800a2be: 4a5d ldr r2, [pc, #372] @ (800a434 ) + 800a2c0: 4293 cmp r3, r2 + 800a2c2: f000 82a0 beq.w 800a806 + 800a2c6: 687b ldr r3, [r7, #4] + 800a2c8: 681b ldr r3, [r3, #0] + 800a2ca: 4a5b ldr r2, [pc, #364] @ (800a438 ) + 800a2cc: 4293 cmp r3, r2 + 800a2ce: f000 829a beq.w 800a806 + 800a2d2: 687b ldr r3, [r7, #4] + 800a2d4: 681b ldr r3, [r3, #0] + 800a2d6: 4a59 ldr r2, [pc, #356] @ (800a43c ) + 800a2d8: 4293 cmp r3, r2 + 800a2da: f000 8294 beq.w 800a806 + 800a2de: 687b ldr r3, [r7, #4] + 800a2e0: 681b ldr r3, [r3, #0] + 800a2e2: 4a57 ldr r2, [pc, #348] @ (800a440 ) + 800a2e4: 4293 cmp r3, r2 + 800a2e6: f000 828e beq.w 800a806 + 800a2ea: 687b ldr r3, [r7, #4] + 800a2ec: 681b ldr r3, [r3, #0] + 800a2ee: 4a55 ldr r2, [pc, #340] @ (800a444 ) + 800a2f0: 4293 cmp r3, r2 + 800a2f2: f000 8288 beq.w 800a806 + 800a2f6: 687b ldr r3, [r7, #4] + 800a2f8: 681b ldr r3, [r3, #0] + 800a2fa: 4a53 ldr r2, [pc, #332] @ (800a448 ) + 800a2fc: 4293 cmp r3, r2 + 800a2fe: f000 8282 beq.w 800a806 + 800a302: 687b ldr r3, [r7, #4] + 800a304: 681b ldr r3, [r3, #0] + 800a306: 4a51 ldr r2, [pc, #324] @ (800a44c ) + 800a308: 4293 cmp r3, r2 + 800a30a: f000 827c beq.w 800a806 + 800a30e: f241 41cf movw r1, #5327 @ 0x14cf + 800a312: 4841 ldr r0, [pc, #260] @ (800a418 ) + 800a314: f7f8 ff8a bl 800322c break; - 8009da4: e275 b.n 800a292 + 800a318: e275 b.n 800a806 } case TIM_CLOCKSOURCE_ETRMODE1: { /* Check whether or not the timer instance supports external trigger input mode 1 (ETRF)*/ assert_param(IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(htim->Instance)); - 8009da6: 687b ldr r3, [r7, #4] - 8009da8: 681b ldr r3, [r3, #0] - 8009daa: 4a3f ldr r2, [pc, #252] @ (8009ea8 ) - 8009dac: 4293 cmp r3, r2 - 8009dae: d027 beq.n 8009e00 - 8009db0: 687b ldr r3, [r7, #4] - 8009db2: 681b ldr r3, [r3, #0] - 8009db4: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8009db8: d022 beq.n 8009e00 - 8009dba: 687b ldr r3, [r7, #4] - 8009dbc: 681b ldr r3, [r3, #0] - 8009dbe: 4a3b ldr r2, [pc, #236] @ (8009eac ) - 8009dc0: 4293 cmp r3, r2 - 8009dc2: d01d beq.n 8009e00 - 8009dc4: 687b ldr r3, [r7, #4] - 8009dc6: 681b ldr r3, [r3, #0] - 8009dc8: 4a39 ldr r2, [pc, #228] @ (8009eb0 ) - 8009dca: 4293 cmp r3, r2 - 8009dcc: d018 beq.n 8009e00 - 8009dce: 687b ldr r3, [r7, #4] - 8009dd0: 681b ldr r3, [r3, #0] - 8009dd2: 4a38 ldr r2, [pc, #224] @ (8009eb4 ) - 8009dd4: 4293 cmp r3, r2 - 8009dd6: d013 beq.n 8009e00 - 8009dd8: 687b ldr r3, [r7, #4] - 8009dda: 681b ldr r3, [r3, #0] - 8009ddc: 4a38 ldr r2, [pc, #224] @ (8009ec0 ) - 8009dde: 4293 cmp r3, r2 - 8009de0: d00e beq.n 8009e00 - 8009de2: 687b ldr r3, [r7, #4] - 8009de4: 681b ldr r3, [r3, #0] - 8009de6: 4a37 ldr r2, [pc, #220] @ (8009ec4 ) - 8009de8: 4293 cmp r3, r2 - 8009dea: d009 beq.n 8009e00 - 8009dec: 687b ldr r3, [r7, #4] - 8009dee: 681b ldr r3, [r3, #0] - 8009df0: 4a37 ldr r2, [pc, #220] @ (8009ed0 ) - 8009df2: 4293 cmp r3, r2 - 8009df4: d004 beq.n 8009e00 - 8009df6: f241 41d6 movw r1, #5334 @ 0x14d6 - 8009dfa: 482a ldr r0, [pc, #168] @ (8009ea4 ) - 8009dfc: f7f9 f9ba bl 8003174 + 800a31a: 687b ldr r3, [r7, #4] + 800a31c: 681b ldr r3, [r3, #0] + 800a31e: 4a3f ldr r2, [pc, #252] @ (800a41c ) + 800a320: 4293 cmp r3, r2 + 800a322: d027 beq.n 800a374 + 800a324: 687b ldr r3, [r7, #4] + 800a326: 681b ldr r3, [r3, #0] + 800a328: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 800a32c: d022 beq.n 800a374 + 800a32e: 687b ldr r3, [r7, #4] + 800a330: 681b ldr r3, [r3, #0] + 800a332: 4a3b ldr r2, [pc, #236] @ (800a420 ) + 800a334: 4293 cmp r3, r2 + 800a336: d01d beq.n 800a374 + 800a338: 687b ldr r3, [r7, #4] + 800a33a: 681b ldr r3, [r3, #0] + 800a33c: 4a39 ldr r2, [pc, #228] @ (800a424 ) + 800a33e: 4293 cmp r3, r2 + 800a340: d018 beq.n 800a374 + 800a342: 687b ldr r3, [r7, #4] + 800a344: 681b ldr r3, [r3, #0] + 800a346: 4a38 ldr r2, [pc, #224] @ (800a428 ) + 800a348: 4293 cmp r3, r2 + 800a34a: d013 beq.n 800a374 + 800a34c: 687b ldr r3, [r7, #4] + 800a34e: 681b ldr r3, [r3, #0] + 800a350: 4a38 ldr r2, [pc, #224] @ (800a434 ) + 800a352: 4293 cmp r3, r2 + 800a354: d00e beq.n 800a374 + 800a356: 687b ldr r3, [r7, #4] + 800a358: 681b ldr r3, [r3, #0] + 800a35a: 4a37 ldr r2, [pc, #220] @ (800a438 ) + 800a35c: 4293 cmp r3, r2 + 800a35e: d009 beq.n 800a374 + 800a360: 687b ldr r3, [r7, #4] + 800a362: 681b ldr r3, [r3, #0] + 800a364: 4a37 ldr r2, [pc, #220] @ (800a444 ) + 800a366: 4293 cmp r3, r2 + 800a368: d004 beq.n 800a374 + 800a36a: f241 41d6 movw r1, #5334 @ 0x14d6 + 800a36e: 482a ldr r0, [pc, #168] @ (800a418 ) + 800a370: f7f8 ff5c bl 800322c /* Check ETR input conditioning related parameters */ assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); - 8009e00: 683b ldr r3, [r7, #0] - 8009e02: 689b ldr r3, [r3, #8] - 8009e04: 2b00 cmp r3, #0 - 8009e06: d013 beq.n 8009e30 - 8009e08: 683b ldr r3, [r7, #0] - 8009e0a: 689b ldr r3, [r3, #8] - 8009e0c: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 8009e10: d00e beq.n 8009e30 - 8009e12: 683b ldr r3, [r7, #0] - 8009e14: 689b ldr r3, [r3, #8] - 8009e16: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 - 8009e1a: d009 beq.n 8009e30 - 8009e1c: 683b ldr r3, [r7, #0] - 8009e1e: 689b ldr r3, [r3, #8] - 8009e20: f5b3 5f40 cmp.w r3, #12288 @ 0x3000 - 8009e24: d004 beq.n 8009e30 - 8009e26: f241 41d9 movw r1, #5337 @ 0x14d9 - 8009e2a: 481e ldr r0, [pc, #120] @ (8009ea4 ) - 8009e2c: f7f9 f9a2 bl 8003174 + 800a374: 683b ldr r3, [r7, #0] + 800a376: 689b ldr r3, [r3, #8] + 800a378: 2b00 cmp r3, #0 + 800a37a: d013 beq.n 800a3a4 + 800a37c: 683b ldr r3, [r7, #0] + 800a37e: 689b ldr r3, [r3, #8] + 800a380: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 800a384: d00e beq.n 800a3a4 + 800a386: 683b ldr r3, [r7, #0] + 800a388: 689b ldr r3, [r3, #8] + 800a38a: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 800a38e: d009 beq.n 800a3a4 + 800a390: 683b ldr r3, [r7, #0] + 800a392: 689b ldr r3, [r3, #8] + 800a394: f5b3 5f40 cmp.w r3, #12288 @ 0x3000 + 800a398: d004 beq.n 800a3a4 + 800a39a: f241 41d9 movw r1, #5337 @ 0x14d9 + 800a39e: 481e ldr r0, [pc, #120] @ (800a418 ) + 800a3a0: f7f8 ff44 bl 800322c assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); - 8009e30: 683b ldr r3, [r7, #0] - 8009e32: 685b ldr r3, [r3, #4] - 8009e34: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 - 8009e38: d014 beq.n 8009e64 - 8009e3a: 683b ldr r3, [r7, #0] - 8009e3c: 685b ldr r3, [r3, #4] - 8009e3e: 2b00 cmp r3, #0 - 8009e40: d010 beq.n 8009e64 - 8009e42: 683b ldr r3, [r7, #0] - 8009e44: 685b ldr r3, [r3, #4] - 8009e46: 2b00 cmp r3, #0 - 8009e48: d00c beq.n 8009e64 - 8009e4a: 683b ldr r3, [r7, #0] - 8009e4c: 685b ldr r3, [r3, #4] - 8009e4e: 2b02 cmp r3, #2 - 8009e50: d008 beq.n 8009e64 - 8009e52: 683b ldr r3, [r7, #0] - 8009e54: 685b ldr r3, [r3, #4] - 8009e56: 2b0a cmp r3, #10 - 8009e58: d004 beq.n 8009e64 - 8009e5a: f241 41da movw r1, #5338 @ 0x14da - 8009e5e: 4811 ldr r0, [pc, #68] @ (8009ea4 ) - 8009e60: f7f9 f988 bl 8003174 + 800a3a4: 683b ldr r3, [r7, #0] + 800a3a6: 685b ldr r3, [r3, #4] + 800a3a8: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 800a3ac: d014 beq.n 800a3d8 + 800a3ae: 683b ldr r3, [r7, #0] + 800a3b0: 685b ldr r3, [r3, #4] + 800a3b2: 2b00 cmp r3, #0 + 800a3b4: d010 beq.n 800a3d8 + 800a3b6: 683b ldr r3, [r7, #0] + 800a3b8: 685b ldr r3, [r3, #4] + 800a3ba: 2b00 cmp r3, #0 + 800a3bc: d00c beq.n 800a3d8 + 800a3be: 683b ldr r3, [r7, #0] + 800a3c0: 685b ldr r3, [r3, #4] + 800a3c2: 2b02 cmp r3, #2 + 800a3c4: d008 beq.n 800a3d8 + 800a3c6: 683b ldr r3, [r7, #0] + 800a3c8: 685b ldr r3, [r3, #4] + 800a3ca: 2b0a cmp r3, #10 + 800a3cc: d004 beq.n 800a3d8 + 800a3ce: f241 41da movw r1, #5338 @ 0x14da + 800a3d2: 4811 ldr r0, [pc, #68] @ (800a418 ) + 800a3d4: f7f8 ff2a bl 800322c assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); - 8009e64: 683b ldr r3, [r7, #0] - 8009e66: 68db ldr r3, [r3, #12] - 8009e68: 2b0f cmp r3, #15 - 8009e6a: d904 bls.n 8009e76 - 8009e6c: f241 41db movw r1, #5339 @ 0x14db - 8009e70: 480c ldr r0, [pc, #48] @ (8009ea4 ) - 8009e72: f7f9 f97f bl 8003174 + 800a3d8: 683b ldr r3, [r7, #0] + 800a3da: 68db ldr r3, [r3, #12] + 800a3dc: 2b0f cmp r3, #15 + 800a3de: d904 bls.n 800a3ea + 800a3e0: f241 41db movw r1, #5339 @ 0x14db + 800a3e4: 480c ldr r0, [pc, #48] @ (800a418 ) + 800a3e6: f7f8 ff21 bl 800322c /* Configure the ETR Clock source */ TIM_ETR_SetConfig(htim->Instance, - 8009e76: 687b ldr r3, [r7, #4] - 8009e78: 6818 ldr r0, [r3, #0] + 800a3ea: 687b ldr r3, [r7, #4] + 800a3ec: 6818 ldr r0, [r3, #0] sClockSourceConfig->ClockPrescaler, - 8009e7a: 683b ldr r3, [r7, #0] - 8009e7c: 6899 ldr r1, [r3, #8] + 800a3ee: 683b ldr r3, [r7, #0] + 800a3f0: 6899 ldr r1, [r3, #8] sClockSourceConfig->ClockPolarity, - 8009e7e: 683b ldr r3, [r7, #0] - 8009e80: 685a ldr r2, [r3, #4] + 800a3f2: 683b ldr r3, [r7, #0] + 800a3f4: 685a ldr r2, [r3, #4] sClockSourceConfig->ClockFilter); - 8009e82: 683b ldr r3, [r7, #0] - 8009e84: 68db ldr r3, [r3, #12] + 800a3f6: 683b ldr r3, [r7, #0] + 800a3f8: 68db ldr r3, [r3, #12] TIM_ETR_SetConfig(htim->Instance, - 8009e86: f000 fdab bl 800a9e0 + 800a3fa: f000 fdab bl 800af54 /* Select the External clock mode1 and the ETRF trigger */ tmpsmcr = htim->Instance->SMCR; - 8009e8a: 687b ldr r3, [r7, #4] - 8009e8c: 681b ldr r3, [r3, #0] - 8009e8e: 689b ldr r3, [r3, #8] - 8009e90: 60bb str r3, [r7, #8] + 800a3fe: 687b ldr r3, [r7, #4] + 800a400: 681b ldr r3, [r3, #0] + 800a402: 689b ldr r3, [r3, #8] + 800a404: 60bb str r3, [r7, #8] tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); - 8009e92: 68bb ldr r3, [r7, #8] - 8009e94: f043 0377 orr.w r3, r3, #119 @ 0x77 - 8009e98: 60bb str r3, [r7, #8] + 800a406: 68bb ldr r3, [r7, #8] + 800a408: f043 0377 orr.w r3, r3, #119 @ 0x77 + 800a40c: 60bb str r3, [r7, #8] /* Write to TIMx SMCR */ htim->Instance->SMCR = tmpsmcr; - 8009e9a: 687b ldr r3, [r7, #4] - 8009e9c: 681b ldr r3, [r3, #0] - 8009e9e: 68ba ldr r2, [r7, #8] - 8009ea0: 609a str r2, [r3, #8] + 800a40e: 687b ldr r3, [r7, #4] + 800a410: 681b ldr r3, [r3, #0] + 800a412: 68ba ldr r2, [r7, #8] + 800a414: 609a str r2, [r3, #8] break; - 8009ea2: e1f7 b.n 800a294 - 8009ea4: 0800e908 .word 0x0800e908 - 8009ea8: 40010000 .word 0x40010000 - 8009eac: 40000400 .word 0x40000400 - 8009eb0: 40000800 .word 0x40000800 - 8009eb4: 40000c00 .word 0x40000c00 - 8009eb8: 40001000 .word 0x40001000 - 8009ebc: 40001400 .word 0x40001400 - 8009ec0: 40010400 .word 0x40010400 - 8009ec4: 40014000 .word 0x40014000 - 8009ec8: 40014400 .word 0x40014400 - 8009ecc: 40014800 .word 0x40014800 - 8009ed0: 40001800 .word 0x40001800 - 8009ed4: 40001c00 .word 0x40001c00 - 8009ed8: 40002000 .word 0x40002000 + 800a416: e1f7 b.n 800a808 + 800a418: 0800ee78 .word 0x0800ee78 + 800a41c: 40010000 .word 0x40010000 + 800a420: 40000400 .word 0x40000400 + 800a424: 40000800 .word 0x40000800 + 800a428: 40000c00 .word 0x40000c00 + 800a42c: 40001000 .word 0x40001000 + 800a430: 40001400 .word 0x40001400 + 800a434: 40010400 .word 0x40010400 + 800a438: 40014000 .word 0x40014000 + 800a43c: 40014400 .word 0x40014400 + 800a440: 40014800 .word 0x40014800 + 800a444: 40001800 .word 0x40001800 + 800a448: 40001c00 .word 0x40001c00 + 800a44c: 40002000 .word 0x40002000 } case TIM_CLOCKSOURCE_ETRMODE2: { /* Check whether or not the timer instance supports external trigger input mode 2 (ETRF)*/ assert_param(IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(htim->Instance)); - 8009edc: 687b ldr r3, [r7, #4] - 8009ede: 681b ldr r3, [r3, #0] - 8009ee0: 4a67 ldr r2, [pc, #412] @ (800a080 ) - 8009ee2: 4293 cmp r3, r2 - 8009ee4: d01d beq.n 8009f22 - 8009ee6: 687b ldr r3, [r7, #4] - 8009ee8: 681b ldr r3, [r3, #0] - 8009eea: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8009eee: d018 beq.n 8009f22 - 8009ef0: 687b ldr r3, [r7, #4] - 8009ef2: 681b ldr r3, [r3, #0] - 8009ef4: 4a63 ldr r2, [pc, #396] @ (800a084 ) - 8009ef6: 4293 cmp r3, r2 - 8009ef8: d013 beq.n 8009f22 - 8009efa: 687b ldr r3, [r7, #4] - 8009efc: 681b ldr r3, [r3, #0] - 8009efe: 4a62 ldr r2, [pc, #392] @ (800a088 ) - 8009f00: 4293 cmp r3, r2 - 8009f02: d00e beq.n 8009f22 - 8009f04: 687b ldr r3, [r7, #4] - 8009f06: 681b ldr r3, [r3, #0] - 8009f08: 4a60 ldr r2, [pc, #384] @ (800a08c ) - 8009f0a: 4293 cmp r3, r2 - 8009f0c: d009 beq.n 8009f22 - 8009f0e: 687b ldr r3, [r7, #4] - 8009f10: 681b ldr r3, [r3, #0] - 8009f12: 4a5f ldr r2, [pc, #380] @ (800a090 ) - 8009f14: 4293 cmp r3, r2 - 8009f16: d004 beq.n 8009f22 - 8009f18: f241 41ee movw r1, #5358 @ 0x14ee - 8009f1c: 485d ldr r0, [pc, #372] @ (800a094 ) - 8009f1e: f7f9 f929 bl 8003174 + 800a450: 687b ldr r3, [r7, #4] + 800a452: 681b ldr r3, [r3, #0] + 800a454: 4a67 ldr r2, [pc, #412] @ (800a5f4 ) + 800a456: 4293 cmp r3, r2 + 800a458: d01d beq.n 800a496 + 800a45a: 687b ldr r3, [r7, #4] + 800a45c: 681b ldr r3, [r3, #0] + 800a45e: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 800a462: d018 beq.n 800a496 + 800a464: 687b ldr r3, [r7, #4] + 800a466: 681b ldr r3, [r3, #0] + 800a468: 4a63 ldr r2, [pc, #396] @ (800a5f8 ) + 800a46a: 4293 cmp r3, r2 + 800a46c: d013 beq.n 800a496 + 800a46e: 687b ldr r3, [r7, #4] + 800a470: 681b ldr r3, [r3, #0] + 800a472: 4a62 ldr r2, [pc, #392] @ (800a5fc ) + 800a474: 4293 cmp r3, r2 + 800a476: d00e beq.n 800a496 + 800a478: 687b ldr r3, [r7, #4] + 800a47a: 681b ldr r3, [r3, #0] + 800a47c: 4a60 ldr r2, [pc, #384] @ (800a600 ) + 800a47e: 4293 cmp r3, r2 + 800a480: d009 beq.n 800a496 + 800a482: 687b ldr r3, [r7, #4] + 800a484: 681b ldr r3, [r3, #0] + 800a486: 4a5f ldr r2, [pc, #380] @ (800a604 ) + 800a488: 4293 cmp r3, r2 + 800a48a: d004 beq.n 800a496 + 800a48c: f241 41ee movw r1, #5358 @ 0x14ee + 800a490: 485d ldr r0, [pc, #372] @ (800a608 ) + 800a492: f7f8 fecb bl 800322c /* Check ETR input conditioning related parameters */ assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); - 8009f22: 683b ldr r3, [r7, #0] - 8009f24: 689b ldr r3, [r3, #8] - 8009f26: 2b00 cmp r3, #0 - 8009f28: d013 beq.n 8009f52 - 8009f2a: 683b ldr r3, [r7, #0] - 8009f2c: 689b ldr r3, [r3, #8] - 8009f2e: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 8009f32: d00e beq.n 8009f52 - 8009f34: 683b ldr r3, [r7, #0] - 8009f36: 689b ldr r3, [r3, #8] - 8009f38: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 - 8009f3c: d009 beq.n 8009f52 - 8009f3e: 683b ldr r3, [r7, #0] - 8009f40: 689b ldr r3, [r3, #8] - 8009f42: f5b3 5f40 cmp.w r3, #12288 @ 0x3000 - 8009f46: d004 beq.n 8009f52 - 8009f48: f241 41f1 movw r1, #5361 @ 0x14f1 - 8009f4c: 4851 ldr r0, [pc, #324] @ (800a094 ) - 8009f4e: f7f9 f911 bl 8003174 + 800a496: 683b ldr r3, [r7, #0] + 800a498: 689b ldr r3, [r3, #8] + 800a49a: 2b00 cmp r3, #0 + 800a49c: d013 beq.n 800a4c6 + 800a49e: 683b ldr r3, [r7, #0] + 800a4a0: 689b ldr r3, [r3, #8] + 800a4a2: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 800a4a6: d00e beq.n 800a4c6 + 800a4a8: 683b ldr r3, [r7, #0] + 800a4aa: 689b ldr r3, [r3, #8] + 800a4ac: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 800a4b0: d009 beq.n 800a4c6 + 800a4b2: 683b ldr r3, [r7, #0] + 800a4b4: 689b ldr r3, [r3, #8] + 800a4b6: f5b3 5f40 cmp.w r3, #12288 @ 0x3000 + 800a4ba: d004 beq.n 800a4c6 + 800a4bc: f241 41f1 movw r1, #5361 @ 0x14f1 + 800a4c0: 4851 ldr r0, [pc, #324] @ (800a608 ) + 800a4c2: f7f8 feb3 bl 800322c assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); - 8009f52: 683b ldr r3, [r7, #0] - 8009f54: 685b ldr r3, [r3, #4] - 8009f56: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 - 8009f5a: d014 beq.n 8009f86 - 8009f5c: 683b ldr r3, [r7, #0] - 8009f5e: 685b ldr r3, [r3, #4] - 8009f60: 2b00 cmp r3, #0 - 8009f62: d010 beq.n 8009f86 - 8009f64: 683b ldr r3, [r7, #0] - 8009f66: 685b ldr r3, [r3, #4] - 8009f68: 2b00 cmp r3, #0 - 8009f6a: d00c beq.n 8009f86 - 8009f6c: 683b ldr r3, [r7, #0] - 8009f6e: 685b ldr r3, [r3, #4] - 8009f70: 2b02 cmp r3, #2 - 8009f72: d008 beq.n 8009f86 - 8009f74: 683b ldr r3, [r7, #0] - 8009f76: 685b ldr r3, [r3, #4] - 8009f78: 2b0a cmp r3, #10 - 8009f7a: d004 beq.n 8009f86 - 8009f7c: f241 41f2 movw r1, #5362 @ 0x14f2 - 8009f80: 4844 ldr r0, [pc, #272] @ (800a094 ) - 8009f82: f7f9 f8f7 bl 8003174 + 800a4c6: 683b ldr r3, [r7, #0] + 800a4c8: 685b ldr r3, [r3, #4] + 800a4ca: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 800a4ce: d014 beq.n 800a4fa + 800a4d0: 683b ldr r3, [r7, #0] + 800a4d2: 685b ldr r3, [r3, #4] + 800a4d4: 2b00 cmp r3, #0 + 800a4d6: d010 beq.n 800a4fa + 800a4d8: 683b ldr r3, [r7, #0] + 800a4da: 685b ldr r3, [r3, #4] + 800a4dc: 2b00 cmp r3, #0 + 800a4de: d00c beq.n 800a4fa + 800a4e0: 683b ldr r3, [r7, #0] + 800a4e2: 685b ldr r3, [r3, #4] + 800a4e4: 2b02 cmp r3, #2 + 800a4e6: d008 beq.n 800a4fa + 800a4e8: 683b ldr r3, [r7, #0] + 800a4ea: 685b ldr r3, [r3, #4] + 800a4ec: 2b0a cmp r3, #10 + 800a4ee: d004 beq.n 800a4fa + 800a4f0: f241 41f2 movw r1, #5362 @ 0x14f2 + 800a4f4: 4844 ldr r0, [pc, #272] @ (800a608 ) + 800a4f6: f7f8 fe99 bl 800322c assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); - 8009f86: 683b ldr r3, [r7, #0] - 8009f88: 68db ldr r3, [r3, #12] - 8009f8a: 2b0f cmp r3, #15 - 8009f8c: d904 bls.n 8009f98 - 8009f8e: f241 41f3 movw r1, #5363 @ 0x14f3 - 8009f92: 4840 ldr r0, [pc, #256] @ (800a094 ) - 8009f94: f7f9 f8ee bl 8003174 + 800a4fa: 683b ldr r3, [r7, #0] + 800a4fc: 68db ldr r3, [r3, #12] + 800a4fe: 2b0f cmp r3, #15 + 800a500: d904 bls.n 800a50c + 800a502: f241 41f3 movw r1, #5363 @ 0x14f3 + 800a506: 4840 ldr r0, [pc, #256] @ (800a608 ) + 800a508: f7f8 fe90 bl 800322c /* Configure the ETR Clock source */ TIM_ETR_SetConfig(htim->Instance, - 8009f98: 687b ldr r3, [r7, #4] - 8009f9a: 6818 ldr r0, [r3, #0] + 800a50c: 687b ldr r3, [r7, #4] + 800a50e: 6818 ldr r0, [r3, #0] sClockSourceConfig->ClockPrescaler, - 8009f9c: 683b ldr r3, [r7, #0] - 8009f9e: 6899 ldr r1, [r3, #8] + 800a510: 683b ldr r3, [r7, #0] + 800a512: 6899 ldr r1, [r3, #8] sClockSourceConfig->ClockPolarity, - 8009fa0: 683b ldr r3, [r7, #0] - 8009fa2: 685a ldr r2, [r3, #4] + 800a514: 683b ldr r3, [r7, #0] + 800a516: 685a ldr r2, [r3, #4] sClockSourceConfig->ClockFilter); - 8009fa4: 683b ldr r3, [r7, #0] - 8009fa6: 68db ldr r3, [r3, #12] + 800a518: 683b ldr r3, [r7, #0] + 800a51a: 68db ldr r3, [r3, #12] TIM_ETR_SetConfig(htim->Instance, - 8009fa8: f000 fd1a bl 800a9e0 + 800a51c: f000 fd1a bl 800af54 /* Enable the External clock mode2 */ htim->Instance->SMCR |= TIM_SMCR_ECE; - 8009fac: 687b ldr r3, [r7, #4] - 8009fae: 681b ldr r3, [r3, #0] - 8009fb0: 689a ldr r2, [r3, #8] - 8009fb2: 687b ldr r3, [r7, #4] - 8009fb4: 681b ldr r3, [r3, #0] - 8009fb6: f442 4280 orr.w r2, r2, #16384 @ 0x4000 - 8009fba: 609a str r2, [r3, #8] + 800a520: 687b ldr r3, [r7, #4] + 800a522: 681b ldr r3, [r3, #0] + 800a524: 689a ldr r2, [r3, #8] + 800a526: 687b ldr r3, [r7, #4] + 800a528: 681b ldr r3, [r3, #0] + 800a52a: f442 4280 orr.w r2, r2, #16384 @ 0x4000 + 800a52e: 609a str r2, [r3, #8] break; - 8009fbc: e16a b.n 800a294 + 800a530: e16a b.n 800a808 } case TIM_CLOCKSOURCE_TI1: { /* Check whether or not the timer instance supports external clock mode 1 */ assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance)); - 8009fbe: 687b ldr r3, [r7, #4] - 8009fc0: 681b ldr r3, [r3, #0] - 8009fc2: 4a2f ldr r2, [pc, #188] @ (800a080 ) - 8009fc4: 4293 cmp r3, r2 - 8009fc6: d027 beq.n 800a018 - 8009fc8: 687b ldr r3, [r7, #4] - 8009fca: 681b ldr r3, [r3, #0] - 8009fcc: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8009fd0: d022 beq.n 800a018 - 8009fd2: 687b ldr r3, [r7, #4] - 8009fd4: 681b ldr r3, [r3, #0] - 8009fd6: 4a2b ldr r2, [pc, #172] @ (800a084 ) - 8009fd8: 4293 cmp r3, r2 - 8009fda: d01d beq.n 800a018 - 8009fdc: 687b ldr r3, [r7, #4] - 8009fde: 681b ldr r3, [r3, #0] - 8009fe0: 4a29 ldr r2, [pc, #164] @ (800a088 ) - 8009fe2: 4293 cmp r3, r2 - 8009fe4: d018 beq.n 800a018 - 8009fe6: 687b ldr r3, [r7, #4] - 8009fe8: 681b ldr r3, [r3, #0] - 8009fea: 4a28 ldr r2, [pc, #160] @ (800a08c ) - 8009fec: 4293 cmp r3, r2 - 8009fee: d013 beq.n 800a018 - 8009ff0: 687b ldr r3, [r7, #4] - 8009ff2: 681b ldr r3, [r3, #0] - 8009ff4: 4a26 ldr r2, [pc, #152] @ (800a090 ) - 8009ff6: 4293 cmp r3, r2 - 8009ff8: d00e beq.n 800a018 - 8009ffa: 687b ldr r3, [r7, #4] - 8009ffc: 681b ldr r3, [r3, #0] - 8009ffe: 4a26 ldr r2, [pc, #152] @ (800a098 ) - 800a000: 4293 cmp r3, r2 - 800a002: d009 beq.n 800a018 - 800a004: 687b ldr r3, [r7, #4] - 800a006: 681b ldr r3, [r3, #0] - 800a008: 4a24 ldr r2, [pc, #144] @ (800a09c ) - 800a00a: 4293 cmp r3, r2 - 800a00c: d004 beq.n 800a018 - 800a00e: f241 5102 movw r1, #5378 @ 0x1502 - 800a012: 4820 ldr r0, [pc, #128] @ (800a094 ) - 800a014: f7f9 f8ae bl 8003174 + 800a532: 687b ldr r3, [r7, #4] + 800a534: 681b ldr r3, [r3, #0] + 800a536: 4a2f ldr r2, [pc, #188] @ (800a5f4 ) + 800a538: 4293 cmp r3, r2 + 800a53a: d027 beq.n 800a58c + 800a53c: 687b ldr r3, [r7, #4] + 800a53e: 681b ldr r3, [r3, #0] + 800a540: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 800a544: d022 beq.n 800a58c + 800a546: 687b ldr r3, [r7, #4] + 800a548: 681b ldr r3, [r3, #0] + 800a54a: 4a2b ldr r2, [pc, #172] @ (800a5f8 ) + 800a54c: 4293 cmp r3, r2 + 800a54e: d01d beq.n 800a58c + 800a550: 687b ldr r3, [r7, #4] + 800a552: 681b ldr r3, [r3, #0] + 800a554: 4a29 ldr r2, [pc, #164] @ (800a5fc ) + 800a556: 4293 cmp r3, r2 + 800a558: d018 beq.n 800a58c + 800a55a: 687b ldr r3, [r7, #4] + 800a55c: 681b ldr r3, [r3, #0] + 800a55e: 4a28 ldr r2, [pc, #160] @ (800a600 ) + 800a560: 4293 cmp r3, r2 + 800a562: d013 beq.n 800a58c + 800a564: 687b ldr r3, [r7, #4] + 800a566: 681b ldr r3, [r3, #0] + 800a568: 4a26 ldr r2, [pc, #152] @ (800a604 ) + 800a56a: 4293 cmp r3, r2 + 800a56c: d00e beq.n 800a58c + 800a56e: 687b ldr r3, [r7, #4] + 800a570: 681b ldr r3, [r3, #0] + 800a572: 4a26 ldr r2, [pc, #152] @ (800a60c ) + 800a574: 4293 cmp r3, r2 + 800a576: d009 beq.n 800a58c + 800a578: 687b ldr r3, [r7, #4] + 800a57a: 681b ldr r3, [r3, #0] + 800a57c: 4a24 ldr r2, [pc, #144] @ (800a610 ) + 800a57e: 4293 cmp r3, r2 + 800a580: d004 beq.n 800a58c + 800a582: f241 5102 movw r1, #5378 @ 0x1502 + 800a586: 4820 ldr r0, [pc, #128] @ (800a608 ) + 800a588: f7f8 fe50 bl 800322c /* Check TI1 input conditioning related parameters */ assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); - 800a018: 683b ldr r3, [r7, #0] - 800a01a: 685b ldr r3, [r3, #4] - 800a01c: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 - 800a020: d014 beq.n 800a04c - 800a022: 683b ldr r3, [r7, #0] - 800a024: 685b ldr r3, [r3, #4] - 800a026: 2b00 cmp r3, #0 - 800a028: d010 beq.n 800a04c - 800a02a: 683b ldr r3, [r7, #0] - 800a02c: 685b ldr r3, [r3, #4] - 800a02e: 2b00 cmp r3, #0 - 800a030: d00c beq.n 800a04c - 800a032: 683b ldr r3, [r7, #0] - 800a034: 685b ldr r3, [r3, #4] - 800a036: 2b02 cmp r3, #2 - 800a038: d008 beq.n 800a04c - 800a03a: 683b ldr r3, [r7, #0] - 800a03c: 685b ldr r3, [r3, #4] - 800a03e: 2b0a cmp r3, #10 - 800a040: d004 beq.n 800a04c - 800a042: f241 5105 movw r1, #5381 @ 0x1505 - 800a046: 4813 ldr r0, [pc, #76] @ (800a094 ) - 800a048: f7f9 f894 bl 8003174 + 800a58c: 683b ldr r3, [r7, #0] + 800a58e: 685b ldr r3, [r3, #4] + 800a590: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 800a594: d014 beq.n 800a5c0 + 800a596: 683b ldr r3, [r7, #0] + 800a598: 685b ldr r3, [r3, #4] + 800a59a: 2b00 cmp r3, #0 + 800a59c: d010 beq.n 800a5c0 + 800a59e: 683b ldr r3, [r7, #0] + 800a5a0: 685b ldr r3, [r3, #4] + 800a5a2: 2b00 cmp r3, #0 + 800a5a4: d00c beq.n 800a5c0 + 800a5a6: 683b ldr r3, [r7, #0] + 800a5a8: 685b ldr r3, [r3, #4] + 800a5aa: 2b02 cmp r3, #2 + 800a5ac: d008 beq.n 800a5c0 + 800a5ae: 683b ldr r3, [r7, #0] + 800a5b0: 685b ldr r3, [r3, #4] + 800a5b2: 2b0a cmp r3, #10 + 800a5b4: d004 beq.n 800a5c0 + 800a5b6: f241 5105 movw r1, #5381 @ 0x1505 + 800a5ba: 4813 ldr r0, [pc, #76] @ (800a608 ) + 800a5bc: f7f8 fe36 bl 800322c assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); - 800a04c: 683b ldr r3, [r7, #0] - 800a04e: 68db ldr r3, [r3, #12] - 800a050: 2b0f cmp r3, #15 - 800a052: d904 bls.n 800a05e - 800a054: f241 5106 movw r1, #5382 @ 0x1506 - 800a058: 480e ldr r0, [pc, #56] @ (800a094 ) - 800a05a: f7f9 f88b bl 8003174 + 800a5c0: 683b ldr r3, [r7, #0] + 800a5c2: 68db ldr r3, [r3, #12] + 800a5c4: 2b0f cmp r3, #15 + 800a5c6: d904 bls.n 800a5d2 + 800a5c8: f241 5106 movw r1, #5382 @ 0x1506 + 800a5cc: 480e ldr r0, [pc, #56] @ (800a608 ) + 800a5ce: f7f8 fe2d bl 800322c TIM_TI1_ConfigInputStage(htim->Instance, - 800a05e: 687b ldr r3, [r7, #4] - 800a060: 6818 ldr r0, [r3, #0] + 800a5d2: 687b ldr r3, [r7, #4] + 800a5d4: 6818 ldr r0, [r3, #0] sClockSourceConfig->ClockPolarity, - 800a062: 683b ldr r3, [r7, #0] - 800a064: 6859 ldr r1, [r3, #4] + 800a5d6: 683b ldr r3, [r7, #0] + 800a5d8: 6859 ldr r1, [r3, #4] sClockSourceConfig->ClockFilter); - 800a066: 683b ldr r3, [r7, #0] - 800a068: 68db ldr r3, [r3, #12] + 800a5da: 683b ldr r3, [r7, #0] + 800a5dc: 68db ldr r3, [r3, #12] TIM_TI1_ConfigInputStage(htim->Instance, - 800a06a: 461a mov r2, r3 - 800a06c: f000 fc3e bl 800a8ec + 800a5de: 461a mov r2, r3 + 800a5e0: f000 fc3e bl 800ae60 TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); - 800a070: 687b ldr r3, [r7, #4] - 800a072: 681b ldr r3, [r3, #0] - 800a074: 2150 movs r1, #80 @ 0x50 - 800a076: 4618 mov r0, r3 - 800a078: f000 fc97 bl 800a9aa + 800a5e4: 687b ldr r3, [r7, #4] + 800a5e6: 681b ldr r3, [r3, #0] + 800a5e8: 2150 movs r1, #80 @ 0x50 + 800a5ea: 4618 mov r0, r3 + 800a5ec: f000 fc97 bl 800af1e break; - 800a07c: e10a b.n 800a294 - 800a07e: bf00 nop - 800a080: 40010000 .word 0x40010000 - 800a084: 40000400 .word 0x40000400 - 800a088: 40000800 .word 0x40000800 - 800a08c: 40000c00 .word 0x40000c00 - 800a090: 40010400 .word 0x40010400 - 800a094: 0800e908 .word 0x0800e908 - 800a098: 40014000 .word 0x40014000 - 800a09c: 40001800 .word 0x40001800 + 800a5f0: e10a b.n 800a808 + 800a5f2: bf00 nop + 800a5f4: 40010000 .word 0x40010000 + 800a5f8: 40000400 .word 0x40000400 + 800a5fc: 40000800 .word 0x40000800 + 800a600: 40000c00 .word 0x40000c00 + 800a604: 40010400 .word 0x40010400 + 800a608: 0800ee78 .word 0x0800ee78 + 800a60c: 40014000 .word 0x40014000 + 800a610: 40001800 .word 0x40001800 } case TIM_CLOCKSOURCE_TI2: { /* Check whether or not the timer instance supports external clock mode 1 (ETRF)*/ assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance)); - 800a0a0: 687b ldr r3, [r7, #4] - 800a0a2: 681b ldr r3, [r3, #0] - 800a0a4: 4a82 ldr r2, [pc, #520] @ (800a2b0 ) - 800a0a6: 4293 cmp r3, r2 - 800a0a8: d027 beq.n 800a0fa - 800a0aa: 687b ldr r3, [r7, #4] - 800a0ac: 681b ldr r3, [r3, #0] - 800a0ae: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 800a0b2: d022 beq.n 800a0fa - 800a0b4: 687b ldr r3, [r7, #4] - 800a0b6: 681b ldr r3, [r3, #0] - 800a0b8: 4a7e ldr r2, [pc, #504] @ (800a2b4 ) - 800a0ba: 4293 cmp r3, r2 - 800a0bc: d01d beq.n 800a0fa - 800a0be: 687b ldr r3, [r7, #4] - 800a0c0: 681b ldr r3, [r3, #0] - 800a0c2: 4a7d ldr r2, [pc, #500] @ (800a2b8 ) - 800a0c4: 4293 cmp r3, r2 - 800a0c6: d018 beq.n 800a0fa - 800a0c8: 687b ldr r3, [r7, #4] - 800a0ca: 681b ldr r3, [r3, #0] - 800a0cc: 4a7b ldr r2, [pc, #492] @ (800a2bc ) - 800a0ce: 4293 cmp r3, r2 - 800a0d0: d013 beq.n 800a0fa - 800a0d2: 687b ldr r3, [r7, #4] - 800a0d4: 681b ldr r3, [r3, #0] - 800a0d6: 4a7a ldr r2, [pc, #488] @ (800a2c0 ) - 800a0d8: 4293 cmp r3, r2 - 800a0da: d00e beq.n 800a0fa - 800a0dc: 687b ldr r3, [r7, #4] - 800a0de: 681b ldr r3, [r3, #0] - 800a0e0: 4a78 ldr r2, [pc, #480] @ (800a2c4 ) - 800a0e2: 4293 cmp r3, r2 - 800a0e4: d009 beq.n 800a0fa - 800a0e6: 687b ldr r3, [r7, #4] - 800a0e8: 681b ldr r3, [r3, #0] - 800a0ea: 4a77 ldr r2, [pc, #476] @ (800a2c8 ) - 800a0ec: 4293 cmp r3, r2 - 800a0ee: d004 beq.n 800a0fa - 800a0f0: f241 5112 movw r1, #5394 @ 0x1512 - 800a0f4: 4875 ldr r0, [pc, #468] @ (800a2cc ) - 800a0f6: f7f9 f83d bl 8003174 + 800a614: 687b ldr r3, [r7, #4] + 800a616: 681b ldr r3, [r3, #0] + 800a618: 4a82 ldr r2, [pc, #520] @ (800a824 ) + 800a61a: 4293 cmp r3, r2 + 800a61c: d027 beq.n 800a66e + 800a61e: 687b ldr r3, [r7, #4] + 800a620: 681b ldr r3, [r3, #0] + 800a622: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 800a626: d022 beq.n 800a66e + 800a628: 687b ldr r3, [r7, #4] + 800a62a: 681b ldr r3, [r3, #0] + 800a62c: 4a7e ldr r2, [pc, #504] @ (800a828 ) + 800a62e: 4293 cmp r3, r2 + 800a630: d01d beq.n 800a66e + 800a632: 687b ldr r3, [r7, #4] + 800a634: 681b ldr r3, [r3, #0] + 800a636: 4a7d ldr r2, [pc, #500] @ (800a82c ) + 800a638: 4293 cmp r3, r2 + 800a63a: d018 beq.n 800a66e + 800a63c: 687b ldr r3, [r7, #4] + 800a63e: 681b ldr r3, [r3, #0] + 800a640: 4a7b ldr r2, [pc, #492] @ (800a830 ) + 800a642: 4293 cmp r3, r2 + 800a644: d013 beq.n 800a66e + 800a646: 687b ldr r3, [r7, #4] + 800a648: 681b ldr r3, [r3, #0] + 800a64a: 4a7a ldr r2, [pc, #488] @ (800a834 ) + 800a64c: 4293 cmp r3, r2 + 800a64e: d00e beq.n 800a66e + 800a650: 687b ldr r3, [r7, #4] + 800a652: 681b ldr r3, [r3, #0] + 800a654: 4a78 ldr r2, [pc, #480] @ (800a838 ) + 800a656: 4293 cmp r3, r2 + 800a658: d009 beq.n 800a66e + 800a65a: 687b ldr r3, [r7, #4] + 800a65c: 681b ldr r3, [r3, #0] + 800a65e: 4a77 ldr r2, [pc, #476] @ (800a83c ) + 800a660: 4293 cmp r3, r2 + 800a662: d004 beq.n 800a66e + 800a664: f241 5112 movw r1, #5394 @ 0x1512 + 800a668: 4875 ldr r0, [pc, #468] @ (800a840 ) + 800a66a: f7f8 fddf bl 800322c /* Check TI2 input conditioning related parameters */ assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); - 800a0fa: 683b ldr r3, [r7, #0] - 800a0fc: 685b ldr r3, [r3, #4] - 800a0fe: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 - 800a102: d014 beq.n 800a12e - 800a104: 683b ldr r3, [r7, #0] - 800a106: 685b ldr r3, [r3, #4] - 800a108: 2b00 cmp r3, #0 - 800a10a: d010 beq.n 800a12e - 800a10c: 683b ldr r3, [r7, #0] - 800a10e: 685b ldr r3, [r3, #4] - 800a110: 2b00 cmp r3, #0 - 800a112: d00c beq.n 800a12e - 800a114: 683b ldr r3, [r7, #0] - 800a116: 685b ldr r3, [r3, #4] - 800a118: 2b02 cmp r3, #2 - 800a11a: d008 beq.n 800a12e - 800a11c: 683b ldr r3, [r7, #0] - 800a11e: 685b ldr r3, [r3, #4] - 800a120: 2b0a cmp r3, #10 - 800a122: d004 beq.n 800a12e - 800a124: f241 5115 movw r1, #5397 @ 0x1515 - 800a128: 4868 ldr r0, [pc, #416] @ (800a2cc ) - 800a12a: f7f9 f823 bl 8003174 + 800a66e: 683b ldr r3, [r7, #0] + 800a670: 685b ldr r3, [r3, #4] + 800a672: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 800a676: d014 beq.n 800a6a2 + 800a678: 683b ldr r3, [r7, #0] + 800a67a: 685b ldr r3, [r3, #4] + 800a67c: 2b00 cmp r3, #0 + 800a67e: d010 beq.n 800a6a2 + 800a680: 683b ldr r3, [r7, #0] + 800a682: 685b ldr r3, [r3, #4] + 800a684: 2b00 cmp r3, #0 + 800a686: d00c beq.n 800a6a2 + 800a688: 683b ldr r3, [r7, #0] + 800a68a: 685b ldr r3, [r3, #4] + 800a68c: 2b02 cmp r3, #2 + 800a68e: d008 beq.n 800a6a2 + 800a690: 683b ldr r3, [r7, #0] + 800a692: 685b ldr r3, [r3, #4] + 800a694: 2b0a cmp r3, #10 + 800a696: d004 beq.n 800a6a2 + 800a698: f241 5115 movw r1, #5397 @ 0x1515 + 800a69c: 4868 ldr r0, [pc, #416] @ (800a840 ) + 800a69e: f7f8 fdc5 bl 800322c assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); - 800a12e: 683b ldr r3, [r7, #0] - 800a130: 68db ldr r3, [r3, #12] - 800a132: 2b0f cmp r3, #15 - 800a134: d904 bls.n 800a140 - 800a136: f241 5116 movw r1, #5398 @ 0x1516 - 800a13a: 4864 ldr r0, [pc, #400] @ (800a2cc ) - 800a13c: f7f9 f81a bl 8003174 + 800a6a2: 683b ldr r3, [r7, #0] + 800a6a4: 68db ldr r3, [r3, #12] + 800a6a6: 2b0f cmp r3, #15 + 800a6a8: d904 bls.n 800a6b4 + 800a6aa: f241 5116 movw r1, #5398 @ 0x1516 + 800a6ae: 4864 ldr r0, [pc, #400] @ (800a840 ) + 800a6b0: f7f8 fdbc bl 800322c TIM_TI2_ConfigInputStage(htim->Instance, - 800a140: 687b ldr r3, [r7, #4] - 800a142: 6818 ldr r0, [r3, #0] + 800a6b4: 687b ldr r3, [r7, #4] + 800a6b6: 6818 ldr r0, [r3, #0] sClockSourceConfig->ClockPolarity, - 800a144: 683b ldr r3, [r7, #0] - 800a146: 6859 ldr r1, [r3, #4] + 800a6b8: 683b ldr r3, [r7, #0] + 800a6ba: 6859 ldr r1, [r3, #4] sClockSourceConfig->ClockFilter); - 800a148: 683b ldr r3, [r7, #0] - 800a14a: 68db ldr r3, [r3, #12] + 800a6bc: 683b ldr r3, [r7, #0] + 800a6be: 68db ldr r3, [r3, #12] TIM_TI2_ConfigInputStage(htim->Instance, - 800a14c: 461a mov r2, r3 - 800a14e: f000 fbfc bl 800a94a + 800a6c0: 461a mov r2, r3 + 800a6c2: f000 fbfc bl 800aebe TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); - 800a152: 687b ldr r3, [r7, #4] - 800a154: 681b ldr r3, [r3, #0] - 800a156: 2160 movs r1, #96 @ 0x60 - 800a158: 4618 mov r0, r3 - 800a15a: f000 fc26 bl 800a9aa + 800a6c6: 687b ldr r3, [r7, #4] + 800a6c8: 681b ldr r3, [r3, #0] + 800a6ca: 2160 movs r1, #96 @ 0x60 + 800a6cc: 4618 mov r0, r3 + 800a6ce: f000 fc26 bl 800af1e break; - 800a15e: e099 b.n 800a294 + 800a6d2: e099 b.n 800a808 } case TIM_CLOCKSOURCE_TI1ED: { /* Check whether or not the timer instance supports external clock mode 1 */ assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance)); - 800a160: 687b ldr r3, [r7, #4] - 800a162: 681b ldr r3, [r3, #0] - 800a164: 4a52 ldr r2, [pc, #328] @ (800a2b0 ) - 800a166: 4293 cmp r3, r2 - 800a168: d027 beq.n 800a1ba - 800a16a: 687b ldr r3, [r7, #4] - 800a16c: 681b ldr r3, [r3, #0] - 800a16e: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 800a172: d022 beq.n 800a1ba - 800a174: 687b ldr r3, [r7, #4] - 800a176: 681b ldr r3, [r3, #0] - 800a178: 4a4e ldr r2, [pc, #312] @ (800a2b4 ) - 800a17a: 4293 cmp r3, r2 - 800a17c: d01d beq.n 800a1ba - 800a17e: 687b ldr r3, [r7, #4] - 800a180: 681b ldr r3, [r3, #0] - 800a182: 4a4d ldr r2, [pc, #308] @ (800a2b8 ) - 800a184: 4293 cmp r3, r2 - 800a186: d018 beq.n 800a1ba - 800a188: 687b ldr r3, [r7, #4] - 800a18a: 681b ldr r3, [r3, #0] - 800a18c: 4a4b ldr r2, [pc, #300] @ (800a2bc ) - 800a18e: 4293 cmp r3, r2 - 800a190: d013 beq.n 800a1ba - 800a192: 687b ldr r3, [r7, #4] - 800a194: 681b ldr r3, [r3, #0] - 800a196: 4a4a ldr r2, [pc, #296] @ (800a2c0 ) - 800a198: 4293 cmp r3, r2 - 800a19a: d00e beq.n 800a1ba - 800a19c: 687b ldr r3, [r7, #4] - 800a19e: 681b ldr r3, [r3, #0] - 800a1a0: 4a48 ldr r2, [pc, #288] @ (800a2c4 ) - 800a1a2: 4293 cmp r3, r2 - 800a1a4: d009 beq.n 800a1ba - 800a1a6: 687b ldr r3, [r7, #4] - 800a1a8: 681b ldr r3, [r3, #0] - 800a1aa: 4a47 ldr r2, [pc, #284] @ (800a2c8 ) - 800a1ac: 4293 cmp r3, r2 - 800a1ae: d004 beq.n 800a1ba - 800a1b0: f241 5122 movw r1, #5410 @ 0x1522 - 800a1b4: 4845 ldr r0, [pc, #276] @ (800a2cc ) - 800a1b6: f7f8 ffdd bl 8003174 + 800a6d4: 687b ldr r3, [r7, #4] + 800a6d6: 681b ldr r3, [r3, #0] + 800a6d8: 4a52 ldr r2, [pc, #328] @ (800a824 ) + 800a6da: 4293 cmp r3, r2 + 800a6dc: d027 beq.n 800a72e + 800a6de: 687b ldr r3, [r7, #4] + 800a6e0: 681b ldr r3, [r3, #0] + 800a6e2: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 800a6e6: d022 beq.n 800a72e + 800a6e8: 687b ldr r3, [r7, #4] + 800a6ea: 681b ldr r3, [r3, #0] + 800a6ec: 4a4e ldr r2, [pc, #312] @ (800a828 ) + 800a6ee: 4293 cmp r3, r2 + 800a6f0: d01d beq.n 800a72e + 800a6f2: 687b ldr r3, [r7, #4] + 800a6f4: 681b ldr r3, [r3, #0] + 800a6f6: 4a4d ldr r2, [pc, #308] @ (800a82c ) + 800a6f8: 4293 cmp r3, r2 + 800a6fa: d018 beq.n 800a72e + 800a6fc: 687b ldr r3, [r7, #4] + 800a6fe: 681b ldr r3, [r3, #0] + 800a700: 4a4b ldr r2, [pc, #300] @ (800a830 ) + 800a702: 4293 cmp r3, r2 + 800a704: d013 beq.n 800a72e + 800a706: 687b ldr r3, [r7, #4] + 800a708: 681b ldr r3, [r3, #0] + 800a70a: 4a4a ldr r2, [pc, #296] @ (800a834 ) + 800a70c: 4293 cmp r3, r2 + 800a70e: d00e beq.n 800a72e + 800a710: 687b ldr r3, [r7, #4] + 800a712: 681b ldr r3, [r3, #0] + 800a714: 4a48 ldr r2, [pc, #288] @ (800a838 ) + 800a716: 4293 cmp r3, r2 + 800a718: d009 beq.n 800a72e + 800a71a: 687b ldr r3, [r7, #4] + 800a71c: 681b ldr r3, [r3, #0] + 800a71e: 4a47 ldr r2, [pc, #284] @ (800a83c ) + 800a720: 4293 cmp r3, r2 + 800a722: d004 beq.n 800a72e + 800a724: f241 5122 movw r1, #5410 @ 0x1522 + 800a728: 4845 ldr r0, [pc, #276] @ (800a840 ) + 800a72a: f7f8 fd7f bl 800322c /* Check TI1 input conditioning related parameters */ assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); - 800a1ba: 683b ldr r3, [r7, #0] - 800a1bc: 685b ldr r3, [r3, #4] - 800a1be: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 - 800a1c2: d014 beq.n 800a1ee - 800a1c4: 683b ldr r3, [r7, #0] - 800a1c6: 685b ldr r3, [r3, #4] - 800a1c8: 2b00 cmp r3, #0 - 800a1ca: d010 beq.n 800a1ee - 800a1cc: 683b ldr r3, [r7, #0] - 800a1ce: 685b ldr r3, [r3, #4] - 800a1d0: 2b00 cmp r3, #0 - 800a1d2: d00c beq.n 800a1ee - 800a1d4: 683b ldr r3, [r7, #0] - 800a1d6: 685b ldr r3, [r3, #4] - 800a1d8: 2b02 cmp r3, #2 - 800a1da: d008 beq.n 800a1ee - 800a1dc: 683b ldr r3, [r7, #0] - 800a1de: 685b ldr r3, [r3, #4] - 800a1e0: 2b0a cmp r3, #10 - 800a1e2: d004 beq.n 800a1ee - 800a1e4: f241 5125 movw r1, #5413 @ 0x1525 - 800a1e8: 4838 ldr r0, [pc, #224] @ (800a2cc ) - 800a1ea: f7f8 ffc3 bl 8003174 + 800a72e: 683b ldr r3, [r7, #0] + 800a730: 685b ldr r3, [r3, #4] + 800a732: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 800a736: d014 beq.n 800a762 + 800a738: 683b ldr r3, [r7, #0] + 800a73a: 685b ldr r3, [r3, #4] + 800a73c: 2b00 cmp r3, #0 + 800a73e: d010 beq.n 800a762 + 800a740: 683b ldr r3, [r7, #0] + 800a742: 685b ldr r3, [r3, #4] + 800a744: 2b00 cmp r3, #0 + 800a746: d00c beq.n 800a762 + 800a748: 683b ldr r3, [r7, #0] + 800a74a: 685b ldr r3, [r3, #4] + 800a74c: 2b02 cmp r3, #2 + 800a74e: d008 beq.n 800a762 + 800a750: 683b ldr r3, [r7, #0] + 800a752: 685b ldr r3, [r3, #4] + 800a754: 2b0a cmp r3, #10 + 800a756: d004 beq.n 800a762 + 800a758: f241 5125 movw r1, #5413 @ 0x1525 + 800a75c: 4838 ldr r0, [pc, #224] @ (800a840 ) + 800a75e: f7f8 fd65 bl 800322c assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); - 800a1ee: 683b ldr r3, [r7, #0] - 800a1f0: 68db ldr r3, [r3, #12] - 800a1f2: 2b0f cmp r3, #15 - 800a1f4: d904 bls.n 800a200 - 800a1f6: f241 5126 movw r1, #5414 @ 0x1526 - 800a1fa: 4834 ldr r0, [pc, #208] @ (800a2cc ) - 800a1fc: f7f8 ffba bl 8003174 + 800a762: 683b ldr r3, [r7, #0] + 800a764: 68db ldr r3, [r3, #12] + 800a766: 2b0f cmp r3, #15 + 800a768: d904 bls.n 800a774 + 800a76a: f241 5126 movw r1, #5414 @ 0x1526 + 800a76e: 4834 ldr r0, [pc, #208] @ (800a840 ) + 800a770: f7f8 fd5c bl 800322c TIM_TI1_ConfigInputStage(htim->Instance, - 800a200: 687b ldr r3, [r7, #4] - 800a202: 6818 ldr r0, [r3, #0] + 800a774: 687b ldr r3, [r7, #4] + 800a776: 6818 ldr r0, [r3, #0] sClockSourceConfig->ClockPolarity, - 800a204: 683b ldr r3, [r7, #0] - 800a206: 6859 ldr r1, [r3, #4] + 800a778: 683b ldr r3, [r7, #0] + 800a77a: 6859 ldr r1, [r3, #4] sClockSourceConfig->ClockFilter); - 800a208: 683b ldr r3, [r7, #0] - 800a20a: 68db ldr r3, [r3, #12] + 800a77c: 683b ldr r3, [r7, #0] + 800a77e: 68db ldr r3, [r3, #12] TIM_TI1_ConfigInputStage(htim->Instance, - 800a20c: 461a mov r2, r3 - 800a20e: f000 fb6d bl 800a8ec + 800a780: 461a mov r2, r3 + 800a782: f000 fb6d bl 800ae60 TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED); - 800a212: 687b ldr r3, [r7, #4] - 800a214: 681b ldr r3, [r3, #0] - 800a216: 2140 movs r1, #64 @ 0x40 - 800a218: 4618 mov r0, r3 - 800a21a: f000 fbc6 bl 800a9aa + 800a786: 687b ldr r3, [r7, #4] + 800a788: 681b ldr r3, [r3, #0] + 800a78a: 2140 movs r1, #64 @ 0x40 + 800a78c: 4618 mov r0, r3 + 800a78e: f000 fbc6 bl 800af1e break; - 800a21e: e039 b.n 800a294 + 800a792: e039 b.n 800a808 case TIM_CLOCKSOURCE_ITR1: case TIM_CLOCKSOURCE_ITR2: case TIM_CLOCKSOURCE_ITR3: { /* Check whether or not the timer instance supports internal trigger input */ assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance)); - 800a220: 687b ldr r3, [r7, #4] - 800a222: 681b ldr r3, [r3, #0] - 800a224: 4a22 ldr r2, [pc, #136] @ (800a2b0 ) - 800a226: 4293 cmp r3, r2 - 800a228: d027 beq.n 800a27a - 800a22a: 687b ldr r3, [r7, #4] - 800a22c: 681b ldr r3, [r3, #0] - 800a22e: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 800a232: d022 beq.n 800a27a - 800a234: 687b ldr r3, [r7, #4] - 800a236: 681b ldr r3, [r3, #0] - 800a238: 4a1e ldr r2, [pc, #120] @ (800a2b4 ) - 800a23a: 4293 cmp r3, r2 - 800a23c: d01d beq.n 800a27a - 800a23e: 687b ldr r3, [r7, #4] - 800a240: 681b ldr r3, [r3, #0] - 800a242: 4a1d ldr r2, [pc, #116] @ (800a2b8 ) - 800a244: 4293 cmp r3, r2 - 800a246: d018 beq.n 800a27a - 800a248: 687b ldr r3, [r7, #4] - 800a24a: 681b ldr r3, [r3, #0] - 800a24c: 4a1b ldr r2, [pc, #108] @ (800a2bc ) - 800a24e: 4293 cmp r3, r2 - 800a250: d013 beq.n 800a27a - 800a252: 687b ldr r3, [r7, #4] - 800a254: 681b ldr r3, [r3, #0] - 800a256: 4a1a ldr r2, [pc, #104] @ (800a2c0 ) - 800a258: 4293 cmp r3, r2 - 800a25a: d00e beq.n 800a27a - 800a25c: 687b ldr r3, [r7, #4] - 800a25e: 681b ldr r3, [r3, #0] - 800a260: 4a18 ldr r2, [pc, #96] @ (800a2c4 ) - 800a262: 4293 cmp r3, r2 - 800a264: d009 beq.n 800a27a - 800a266: 687b ldr r3, [r7, #4] - 800a268: 681b ldr r3, [r3, #0] - 800a26a: 4a17 ldr r2, [pc, #92] @ (800a2c8 ) - 800a26c: 4293 cmp r3, r2 - 800a26e: d004 beq.n 800a27a - 800a270: f241 5135 movw r1, #5429 @ 0x1535 - 800a274: 4815 ldr r0, [pc, #84] @ (800a2cc ) - 800a276: f7f8 ff7d bl 8003174 + 800a794: 687b ldr r3, [r7, #4] + 800a796: 681b ldr r3, [r3, #0] + 800a798: 4a22 ldr r2, [pc, #136] @ (800a824 ) + 800a79a: 4293 cmp r3, r2 + 800a79c: d027 beq.n 800a7ee + 800a79e: 687b ldr r3, [r7, #4] + 800a7a0: 681b ldr r3, [r3, #0] + 800a7a2: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 800a7a6: d022 beq.n 800a7ee + 800a7a8: 687b ldr r3, [r7, #4] + 800a7aa: 681b ldr r3, [r3, #0] + 800a7ac: 4a1e ldr r2, [pc, #120] @ (800a828 ) + 800a7ae: 4293 cmp r3, r2 + 800a7b0: d01d beq.n 800a7ee + 800a7b2: 687b ldr r3, [r7, #4] + 800a7b4: 681b ldr r3, [r3, #0] + 800a7b6: 4a1d ldr r2, [pc, #116] @ (800a82c ) + 800a7b8: 4293 cmp r3, r2 + 800a7ba: d018 beq.n 800a7ee + 800a7bc: 687b ldr r3, [r7, #4] + 800a7be: 681b ldr r3, [r3, #0] + 800a7c0: 4a1b ldr r2, [pc, #108] @ (800a830 ) + 800a7c2: 4293 cmp r3, r2 + 800a7c4: d013 beq.n 800a7ee + 800a7c6: 687b ldr r3, [r7, #4] + 800a7c8: 681b ldr r3, [r3, #0] + 800a7ca: 4a1a ldr r2, [pc, #104] @ (800a834 ) + 800a7cc: 4293 cmp r3, r2 + 800a7ce: d00e beq.n 800a7ee + 800a7d0: 687b ldr r3, [r7, #4] + 800a7d2: 681b ldr r3, [r3, #0] + 800a7d4: 4a18 ldr r2, [pc, #96] @ (800a838 ) + 800a7d6: 4293 cmp r3, r2 + 800a7d8: d009 beq.n 800a7ee + 800a7da: 687b ldr r3, [r7, #4] + 800a7dc: 681b ldr r3, [r3, #0] + 800a7de: 4a17 ldr r2, [pc, #92] @ (800a83c ) + 800a7e0: 4293 cmp r3, r2 + 800a7e2: d004 beq.n 800a7ee + 800a7e4: f241 5135 movw r1, #5429 @ 0x1535 + 800a7e8: 4815 ldr r0, [pc, #84] @ (800a840 ) + 800a7ea: f7f8 fd1f bl 800322c TIM_ITRx_SetConfig(htim->Instance, sClockSourceConfig->ClockSource); - 800a27a: 687b ldr r3, [r7, #4] - 800a27c: 681a ldr r2, [r3, #0] - 800a27e: 683b ldr r3, [r7, #0] - 800a280: 681b ldr r3, [r3, #0] - 800a282: 4619 mov r1, r3 - 800a284: 4610 mov r0, r2 - 800a286: f000 fb90 bl 800a9aa + 800a7ee: 687b ldr r3, [r7, #4] + 800a7f0: 681a ldr r2, [r3, #0] + 800a7f2: 683b ldr r3, [r7, #0] + 800a7f4: 681b ldr r3, [r3, #0] + 800a7f6: 4619 mov r1, r3 + 800a7f8: 4610 mov r0, r2 + 800a7fa: f000 fb90 bl 800af1e break; - 800a28a: e003 b.n 800a294 + 800a7fe: e003 b.n 800a808 } default: status = HAL_ERROR; - 800a28c: 2301 movs r3, #1 - 800a28e: 73fb strb r3, [r7, #15] + 800a800: 2301 movs r3, #1 + 800a802: 73fb strb r3, [r7, #15] break; - 800a290: e000 b.n 800a294 + 800a804: e000 b.n 800a808 break; - 800a292: bf00 nop + 800a806: bf00 nop } htim->State = HAL_TIM_STATE_READY; - 800a294: 687b ldr r3, [r7, #4] - 800a296: 2201 movs r2, #1 - 800a298: f883 203d strb.w r2, [r3, #61] @ 0x3d + 800a808: 687b ldr r3, [r7, #4] + 800a80a: 2201 movs r2, #1 + 800a80c: f883 203d strb.w r2, [r3, #61] @ 0x3d __HAL_UNLOCK(htim); - 800a29c: 687b ldr r3, [r7, #4] - 800a29e: 2200 movs r2, #0 - 800a2a0: f883 203c strb.w r2, [r3, #60] @ 0x3c + 800a810: 687b ldr r3, [r7, #4] + 800a812: 2200 movs r2, #0 + 800a814: f883 203c strb.w r2, [r3, #60] @ 0x3c return status; - 800a2a4: 7bfb ldrb r3, [r7, #15] + 800a818: 7bfb ldrb r3, [r7, #15] } - 800a2a6: 4618 mov r0, r3 - 800a2a8: 3710 adds r7, #16 - 800a2aa: 46bd mov sp, r7 - 800a2ac: bd80 pop {r7, pc} - 800a2ae: bf00 nop - 800a2b0: 40010000 .word 0x40010000 - 800a2b4: 40000400 .word 0x40000400 - 800a2b8: 40000800 .word 0x40000800 - 800a2bc: 40000c00 .word 0x40000c00 - 800a2c0: 40010400 .word 0x40010400 - 800a2c4: 40014000 .word 0x40014000 - 800a2c8: 40001800 .word 0x40001800 - 800a2cc: 0800e908 .word 0x0800e908 + 800a81a: 4618 mov r0, r3 + 800a81c: 3710 adds r7, #16 + 800a81e: 46bd mov sp, r7 + 800a820: bd80 pop {r7, pc} + 800a822: bf00 nop + 800a824: 40010000 .word 0x40010000 + 800a828: 40000400 .word 0x40000400 + 800a82c: 40000800 .word 0x40000800 + 800a830: 40000c00 .word 0x40000c00 + 800a834: 40010400 .word 0x40010400 + 800a838: 40014000 .word 0x40014000 + 800a83c: 40001800 .word 0x40001800 + 800a840: 0800ee78 .word 0x0800ee78 -0800a2d0 : +0800a844 : * @brief Output Compare callback in non-blocking mode * @param htim TIM OC handle * @retval None */ __weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim) { - 800a2d0: b480 push {r7} - 800a2d2: b083 sub sp, #12 - 800a2d4: af00 add r7, sp, #0 - 800a2d6: 6078 str r0, [r7, #4] + 800a844: b480 push {r7} + 800a846: b083 sub sp, #12 + 800a848: af00 add r7, sp, #0 + 800a84a: 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 */ } - 800a2d8: bf00 nop - 800a2da: 370c adds r7, #12 - 800a2dc: 46bd mov sp, r7 - 800a2de: f85d 7b04 ldr.w r7, [sp], #4 - 800a2e2: 4770 bx lr + 800a84c: bf00 nop + 800a84e: 370c adds r7, #12 + 800a850: 46bd mov sp, r7 + 800a852: f85d 7b04 ldr.w r7, [sp], #4 + 800a856: 4770 bx lr -0800a2e4 : +0800a858 : * @brief Input Capture callback in non-blocking mode * @param htim TIM IC handle * @retval None */ __weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) { - 800a2e4: b480 push {r7} - 800a2e6: b083 sub sp, #12 - 800a2e8: af00 add r7, sp, #0 - 800a2ea: 6078 str r0, [r7, #4] + 800a858: b480 push {r7} + 800a85a: b083 sub sp, #12 + 800a85c: af00 add r7, sp, #0 + 800a85e: 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 */ } - 800a2ec: bf00 nop - 800a2ee: 370c adds r7, #12 - 800a2f0: 46bd mov sp, r7 - 800a2f2: f85d 7b04 ldr.w r7, [sp], #4 - 800a2f6: 4770 bx lr + 800a860: bf00 nop + 800a862: 370c adds r7, #12 + 800a864: 46bd mov sp, r7 + 800a866: f85d 7b04 ldr.w r7, [sp], #4 + 800a86a: 4770 bx lr -0800a2f8 : +0800a86c : * @brief PWM Pulse finished callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) { - 800a2f8: b480 push {r7} - 800a2fa: b083 sub sp, #12 - 800a2fc: af00 add r7, sp, #0 - 800a2fe: 6078 str r0, [r7, #4] + 800a86c: b480 push {r7} + 800a86e: b083 sub sp, #12 + 800a870: af00 add r7, sp, #0 + 800a872: 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 */ } - 800a300: bf00 nop - 800a302: 370c adds r7, #12 - 800a304: 46bd mov sp, r7 - 800a306: f85d 7b04 ldr.w r7, [sp], #4 - 800a30a: 4770 bx lr + 800a874: bf00 nop + 800a876: 370c adds r7, #12 + 800a878: 46bd mov sp, r7 + 800a87a: f85d 7b04 ldr.w r7, [sp], #4 + 800a87e: 4770 bx lr -0800a30c : +0800a880 : * @brief Hall Trigger detection callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim) { - 800a30c: b480 push {r7} - 800a30e: b083 sub sp, #12 - 800a310: af00 add r7, sp, #0 - 800a312: 6078 str r0, [r7, #4] + 800a880: b480 push {r7} + 800a882: b083 sub sp, #12 + 800a884: af00 add r7, sp, #0 + 800a886: 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 */ } - 800a314: bf00 nop - 800a316: 370c adds r7, #12 - 800a318: 46bd mov sp, r7 - 800a31a: f85d 7b04 ldr.w r7, [sp], #4 - 800a31e: 4770 bx lr + 800a888: bf00 nop + 800a88a: 370c adds r7, #12 + 800a88c: 46bd mov sp, r7 + 800a88e: f85d 7b04 ldr.w r7, [sp], #4 + 800a892: 4770 bx lr -0800a320 : +0800a894 : * @param TIMx TIM peripheral * @param Structure TIM Base configuration structure * @retval None */ void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure) { - 800a320: b480 push {r7} - 800a322: b085 sub sp, #20 - 800a324: af00 add r7, sp, #0 - 800a326: 6078 str r0, [r7, #4] - 800a328: 6039 str r1, [r7, #0] + 800a894: b480 push {r7} + 800a896: b085 sub sp, #20 + 800a898: af00 add r7, sp, #0 + 800a89a: 6078 str r0, [r7, #4] + 800a89c: 6039 str r1, [r7, #0] uint32_t tmpcr1; tmpcr1 = TIMx->CR1; - 800a32a: 687b ldr r3, [r7, #4] - 800a32c: 681b ldr r3, [r3, #0] - 800a32e: 60fb str r3, [r7, #12] + 800a89e: 687b ldr r3, [r7, #4] + 800a8a0: 681b ldr r3, [r3, #0] + 800a8a2: 60fb str r3, [r7, #12] /* Set TIM Time Base Unit parameters ---------------------------------------*/ if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) - 800a330: 687b ldr r3, [r7, #4] - 800a332: 4a46 ldr r2, [pc, #280] @ (800a44c ) - 800a334: 4293 cmp r3, r2 - 800a336: d013 beq.n 800a360 - 800a338: 687b ldr r3, [r7, #4] - 800a33a: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 800a33e: d00f beq.n 800a360 - 800a340: 687b ldr r3, [r7, #4] - 800a342: 4a43 ldr r2, [pc, #268] @ (800a450 ) - 800a344: 4293 cmp r3, r2 - 800a346: d00b beq.n 800a360 - 800a348: 687b ldr r3, [r7, #4] - 800a34a: 4a42 ldr r2, [pc, #264] @ (800a454 ) - 800a34c: 4293 cmp r3, r2 - 800a34e: d007 beq.n 800a360 - 800a350: 687b ldr r3, [r7, #4] - 800a352: 4a41 ldr r2, [pc, #260] @ (800a458 ) - 800a354: 4293 cmp r3, r2 - 800a356: d003 beq.n 800a360 - 800a358: 687b ldr r3, [r7, #4] - 800a35a: 4a40 ldr r2, [pc, #256] @ (800a45c ) - 800a35c: 4293 cmp r3, r2 - 800a35e: d108 bne.n 800a372 + 800a8a4: 687b ldr r3, [r7, #4] + 800a8a6: 4a46 ldr r2, [pc, #280] @ (800a9c0 ) + 800a8a8: 4293 cmp r3, r2 + 800a8aa: d013 beq.n 800a8d4 + 800a8ac: 687b ldr r3, [r7, #4] + 800a8ae: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 800a8b2: d00f beq.n 800a8d4 + 800a8b4: 687b ldr r3, [r7, #4] + 800a8b6: 4a43 ldr r2, [pc, #268] @ (800a9c4 ) + 800a8b8: 4293 cmp r3, r2 + 800a8ba: d00b beq.n 800a8d4 + 800a8bc: 687b ldr r3, [r7, #4] + 800a8be: 4a42 ldr r2, [pc, #264] @ (800a9c8 ) + 800a8c0: 4293 cmp r3, r2 + 800a8c2: d007 beq.n 800a8d4 + 800a8c4: 687b ldr r3, [r7, #4] + 800a8c6: 4a41 ldr r2, [pc, #260] @ (800a9cc ) + 800a8c8: 4293 cmp r3, r2 + 800a8ca: d003 beq.n 800a8d4 + 800a8cc: 687b ldr r3, [r7, #4] + 800a8ce: 4a40 ldr r2, [pc, #256] @ (800a9d0 ) + 800a8d0: 4293 cmp r3, r2 + 800a8d2: d108 bne.n 800a8e6 { /* Select the Counter Mode */ tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); - 800a360: 68fb ldr r3, [r7, #12] - 800a362: f023 0370 bic.w r3, r3, #112 @ 0x70 - 800a366: 60fb str r3, [r7, #12] + 800a8d4: 68fb ldr r3, [r7, #12] + 800a8d6: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800a8da: 60fb str r3, [r7, #12] tmpcr1 |= Structure->CounterMode; - 800a368: 683b ldr r3, [r7, #0] - 800a36a: 685b ldr r3, [r3, #4] - 800a36c: 68fa ldr r2, [r7, #12] - 800a36e: 4313 orrs r3, r2 - 800a370: 60fb str r3, [r7, #12] + 800a8dc: 683b ldr r3, [r7, #0] + 800a8de: 685b ldr r3, [r3, #4] + 800a8e0: 68fa ldr r2, [r7, #12] + 800a8e2: 4313 orrs r3, r2 + 800a8e4: 60fb str r3, [r7, #12] } if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) - 800a372: 687b ldr r3, [r7, #4] - 800a374: 4a35 ldr r2, [pc, #212] @ (800a44c ) - 800a376: 4293 cmp r3, r2 - 800a378: d02b beq.n 800a3d2 - 800a37a: 687b ldr r3, [r7, #4] - 800a37c: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 800a380: d027 beq.n 800a3d2 - 800a382: 687b ldr r3, [r7, #4] - 800a384: 4a32 ldr r2, [pc, #200] @ (800a450 ) - 800a386: 4293 cmp r3, r2 - 800a388: d023 beq.n 800a3d2 - 800a38a: 687b ldr r3, [r7, #4] - 800a38c: 4a31 ldr r2, [pc, #196] @ (800a454 ) - 800a38e: 4293 cmp r3, r2 - 800a390: d01f beq.n 800a3d2 - 800a392: 687b ldr r3, [r7, #4] - 800a394: 4a30 ldr r2, [pc, #192] @ (800a458 ) - 800a396: 4293 cmp r3, r2 - 800a398: d01b beq.n 800a3d2 - 800a39a: 687b ldr r3, [r7, #4] - 800a39c: 4a2f ldr r2, [pc, #188] @ (800a45c ) - 800a39e: 4293 cmp r3, r2 - 800a3a0: d017 beq.n 800a3d2 - 800a3a2: 687b ldr r3, [r7, #4] - 800a3a4: 4a2e ldr r2, [pc, #184] @ (800a460 ) - 800a3a6: 4293 cmp r3, r2 - 800a3a8: d013 beq.n 800a3d2 - 800a3aa: 687b ldr r3, [r7, #4] - 800a3ac: 4a2d ldr r2, [pc, #180] @ (800a464 ) - 800a3ae: 4293 cmp r3, r2 - 800a3b0: d00f beq.n 800a3d2 - 800a3b2: 687b ldr r3, [r7, #4] - 800a3b4: 4a2c ldr r2, [pc, #176] @ (800a468 ) - 800a3b6: 4293 cmp r3, r2 - 800a3b8: d00b beq.n 800a3d2 - 800a3ba: 687b ldr r3, [r7, #4] - 800a3bc: 4a2b ldr r2, [pc, #172] @ (800a46c ) - 800a3be: 4293 cmp r3, r2 - 800a3c0: d007 beq.n 800a3d2 - 800a3c2: 687b ldr r3, [r7, #4] - 800a3c4: 4a2a ldr r2, [pc, #168] @ (800a470 ) - 800a3c6: 4293 cmp r3, r2 - 800a3c8: d003 beq.n 800a3d2 - 800a3ca: 687b ldr r3, [r7, #4] - 800a3cc: 4a29 ldr r2, [pc, #164] @ (800a474 ) - 800a3ce: 4293 cmp r3, r2 - 800a3d0: d108 bne.n 800a3e4 + 800a8e6: 687b ldr r3, [r7, #4] + 800a8e8: 4a35 ldr r2, [pc, #212] @ (800a9c0 ) + 800a8ea: 4293 cmp r3, r2 + 800a8ec: d02b beq.n 800a946 + 800a8ee: 687b ldr r3, [r7, #4] + 800a8f0: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 800a8f4: d027 beq.n 800a946 + 800a8f6: 687b ldr r3, [r7, #4] + 800a8f8: 4a32 ldr r2, [pc, #200] @ (800a9c4 ) + 800a8fa: 4293 cmp r3, r2 + 800a8fc: d023 beq.n 800a946 + 800a8fe: 687b ldr r3, [r7, #4] + 800a900: 4a31 ldr r2, [pc, #196] @ (800a9c8 ) + 800a902: 4293 cmp r3, r2 + 800a904: d01f beq.n 800a946 + 800a906: 687b ldr r3, [r7, #4] + 800a908: 4a30 ldr r2, [pc, #192] @ (800a9cc ) + 800a90a: 4293 cmp r3, r2 + 800a90c: d01b beq.n 800a946 + 800a90e: 687b ldr r3, [r7, #4] + 800a910: 4a2f ldr r2, [pc, #188] @ (800a9d0 ) + 800a912: 4293 cmp r3, r2 + 800a914: d017 beq.n 800a946 + 800a916: 687b ldr r3, [r7, #4] + 800a918: 4a2e ldr r2, [pc, #184] @ (800a9d4 ) + 800a91a: 4293 cmp r3, r2 + 800a91c: d013 beq.n 800a946 + 800a91e: 687b ldr r3, [r7, #4] + 800a920: 4a2d ldr r2, [pc, #180] @ (800a9d8 ) + 800a922: 4293 cmp r3, r2 + 800a924: d00f beq.n 800a946 + 800a926: 687b ldr r3, [r7, #4] + 800a928: 4a2c ldr r2, [pc, #176] @ (800a9dc ) + 800a92a: 4293 cmp r3, r2 + 800a92c: d00b beq.n 800a946 + 800a92e: 687b ldr r3, [r7, #4] + 800a930: 4a2b ldr r2, [pc, #172] @ (800a9e0 ) + 800a932: 4293 cmp r3, r2 + 800a934: d007 beq.n 800a946 + 800a936: 687b ldr r3, [r7, #4] + 800a938: 4a2a ldr r2, [pc, #168] @ (800a9e4 ) + 800a93a: 4293 cmp r3, r2 + 800a93c: d003 beq.n 800a946 + 800a93e: 687b ldr r3, [r7, #4] + 800a940: 4a29 ldr r2, [pc, #164] @ (800a9e8 ) + 800a942: 4293 cmp r3, r2 + 800a944: d108 bne.n 800a958 { /* Set the clock division */ tmpcr1 &= ~TIM_CR1_CKD; - 800a3d2: 68fb ldr r3, [r7, #12] - 800a3d4: f423 7340 bic.w r3, r3, #768 @ 0x300 - 800a3d8: 60fb str r3, [r7, #12] + 800a946: 68fb ldr r3, [r7, #12] + 800a948: f423 7340 bic.w r3, r3, #768 @ 0x300 + 800a94c: 60fb str r3, [r7, #12] tmpcr1 |= (uint32_t)Structure->ClockDivision; - 800a3da: 683b ldr r3, [r7, #0] - 800a3dc: 68db ldr r3, [r3, #12] - 800a3de: 68fa ldr r2, [r7, #12] - 800a3e0: 4313 orrs r3, r2 - 800a3e2: 60fb str r3, [r7, #12] + 800a94e: 683b ldr r3, [r7, #0] + 800a950: 68db ldr r3, [r3, #12] + 800a952: 68fa ldr r2, [r7, #12] + 800a954: 4313 orrs r3, r2 + 800a956: 60fb str r3, [r7, #12] } /* Set the auto-reload preload */ MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); - 800a3e4: 68fb ldr r3, [r7, #12] - 800a3e6: f023 0280 bic.w r2, r3, #128 @ 0x80 - 800a3ea: 683b ldr r3, [r7, #0] - 800a3ec: 695b ldr r3, [r3, #20] - 800a3ee: 4313 orrs r3, r2 - 800a3f0: 60fb str r3, [r7, #12] + 800a958: 68fb ldr r3, [r7, #12] + 800a95a: f023 0280 bic.w r2, r3, #128 @ 0x80 + 800a95e: 683b ldr r3, [r7, #0] + 800a960: 695b ldr r3, [r3, #20] + 800a962: 4313 orrs r3, r2 + 800a964: 60fb str r3, [r7, #12] TIMx->CR1 = tmpcr1; - 800a3f2: 687b ldr r3, [r7, #4] - 800a3f4: 68fa ldr r2, [r7, #12] - 800a3f6: 601a str r2, [r3, #0] + 800a966: 687b ldr r3, [r7, #4] + 800a968: 68fa ldr r2, [r7, #12] + 800a96a: 601a str r2, [r3, #0] /* Set the Autoreload value */ TIMx->ARR = (uint32_t)Structure->Period ; - 800a3f8: 683b ldr r3, [r7, #0] - 800a3fa: 689a ldr r2, [r3, #8] - 800a3fc: 687b ldr r3, [r7, #4] - 800a3fe: 62da str r2, [r3, #44] @ 0x2c + 800a96c: 683b ldr r3, [r7, #0] + 800a96e: 689a ldr r2, [r3, #8] + 800a970: 687b ldr r3, [r7, #4] + 800a972: 62da str r2, [r3, #44] @ 0x2c /* Set the Prescaler value */ TIMx->PSC = Structure->Prescaler; - 800a400: 683b ldr r3, [r7, #0] - 800a402: 681a ldr r2, [r3, #0] - 800a404: 687b ldr r3, [r7, #4] - 800a406: 629a str r2, [r3, #40] @ 0x28 + 800a974: 683b ldr r3, [r7, #0] + 800a976: 681a ldr r2, [r3, #0] + 800a978: 687b ldr r3, [r7, #4] + 800a97a: 629a str r2, [r3, #40] @ 0x28 if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx)) - 800a408: 687b ldr r3, [r7, #4] - 800a40a: 4a10 ldr r2, [pc, #64] @ (800a44c ) - 800a40c: 4293 cmp r3, r2 - 800a40e: d003 beq.n 800a418 - 800a410: 687b ldr r3, [r7, #4] - 800a412: 4a12 ldr r2, [pc, #72] @ (800a45c ) - 800a414: 4293 cmp r3, r2 - 800a416: d103 bne.n 800a420 + 800a97c: 687b ldr r3, [r7, #4] + 800a97e: 4a10 ldr r2, [pc, #64] @ (800a9c0 ) + 800a980: 4293 cmp r3, r2 + 800a982: d003 beq.n 800a98c + 800a984: 687b ldr r3, [r7, #4] + 800a986: 4a12 ldr r2, [pc, #72] @ (800a9d0 ) + 800a988: 4293 cmp r3, r2 + 800a98a: d103 bne.n 800a994 { /* Set the Repetition Counter value */ TIMx->RCR = Structure->RepetitionCounter; - 800a418: 683b ldr r3, [r7, #0] - 800a41a: 691a ldr r2, [r3, #16] - 800a41c: 687b ldr r3, [r7, #4] - 800a41e: 631a str r2, [r3, #48] @ 0x30 + 800a98c: 683b ldr r3, [r7, #0] + 800a98e: 691a ldr r2, [r3, #16] + 800a990: 687b ldr r3, [r7, #4] + 800a992: 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; - 800a420: 687b ldr r3, [r7, #4] - 800a422: 2201 movs r2, #1 - 800a424: 615a str r2, [r3, #20] + 800a994: 687b ldr r3, [r7, #4] + 800a996: 2201 movs r2, #1 + 800a998: 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)) - 800a426: 687b ldr r3, [r7, #4] - 800a428: 691b ldr r3, [r3, #16] - 800a42a: f003 0301 and.w r3, r3, #1 - 800a42e: 2b01 cmp r3, #1 - 800a430: d105 bne.n 800a43e + 800a99a: 687b ldr r3, [r7, #4] + 800a99c: 691b ldr r3, [r3, #16] + 800a99e: f003 0301 and.w r3, r3, #1 + 800a9a2: 2b01 cmp r3, #1 + 800a9a4: d105 bne.n 800a9b2 { /* Clear the update flag */ CLEAR_BIT(TIMx->SR, TIM_FLAG_UPDATE); - 800a432: 687b ldr r3, [r7, #4] - 800a434: 691b ldr r3, [r3, #16] - 800a436: f023 0201 bic.w r2, r3, #1 - 800a43a: 687b ldr r3, [r7, #4] - 800a43c: 611a str r2, [r3, #16] + 800a9a6: 687b ldr r3, [r7, #4] + 800a9a8: 691b ldr r3, [r3, #16] + 800a9aa: f023 0201 bic.w r2, r3, #1 + 800a9ae: 687b ldr r3, [r7, #4] + 800a9b0: 611a str r2, [r3, #16] } } - 800a43e: bf00 nop - 800a440: 3714 adds r7, #20 - 800a442: 46bd mov sp, r7 - 800a444: f85d 7b04 ldr.w r7, [sp], #4 - 800a448: 4770 bx lr - 800a44a: bf00 nop - 800a44c: 40010000 .word 0x40010000 - 800a450: 40000400 .word 0x40000400 - 800a454: 40000800 .word 0x40000800 - 800a458: 40000c00 .word 0x40000c00 - 800a45c: 40010400 .word 0x40010400 - 800a460: 40014000 .word 0x40014000 - 800a464: 40014400 .word 0x40014400 - 800a468: 40014800 .word 0x40014800 - 800a46c: 40001800 .word 0x40001800 - 800a470: 40001c00 .word 0x40001c00 - 800a474: 40002000 .word 0x40002000 + 800a9b2: bf00 nop + 800a9b4: 3714 adds r7, #20 + 800a9b6: 46bd mov sp, r7 + 800a9b8: f85d 7b04 ldr.w r7, [sp], #4 + 800a9bc: 4770 bx lr + 800a9be: bf00 nop + 800a9c0: 40010000 .word 0x40010000 + 800a9c4: 40000400 .word 0x40000400 + 800a9c8: 40000800 .word 0x40000800 + 800a9cc: 40000c00 .word 0x40000c00 + 800a9d0: 40010400 .word 0x40010400 + 800a9d4: 40014000 .word 0x40014000 + 800a9d8: 40014400 .word 0x40014400 + 800a9dc: 40014800 .word 0x40014800 + 800a9e0: 40001800 .word 0x40001800 + 800a9e4: 40001c00 .word 0x40001c00 + 800a9e8: 40002000 .word 0x40002000 -0800a478 : +0800a9ec : * @param TIMx to select the TIM peripheral * @param OC_Config The output configuration structure * @retval None */ static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) { - 800a478: b580 push {r7, lr} - 800a47a: b086 sub sp, #24 - 800a47c: af00 add r7, sp, #0 - 800a47e: 6078 str r0, [r7, #4] - 800a480: 6039 str r1, [r7, #0] + 800a9ec: b580 push {r7, lr} + 800a9ee: b086 sub sp, #24 + 800a9f0: af00 add r7, sp, #0 + 800a9f2: 6078 str r0, [r7, #4] + 800a9f4: 6039 str r1, [r7, #0] uint32_t tmpccmrx; uint32_t tmpccer; uint32_t tmpcr2; /* Get the TIMx CCER register value */ tmpccer = TIMx->CCER; - 800a482: 687b ldr r3, [r7, #4] - 800a484: 6a1b ldr r3, [r3, #32] - 800a486: 617b str r3, [r7, #20] + 800a9f6: 687b ldr r3, [r7, #4] + 800a9f8: 6a1b ldr r3, [r3, #32] + 800a9fa: 617b str r3, [r7, #20] /* Disable the Channel 1: Reset the CC1E Bit */ TIMx->CCER &= ~TIM_CCER_CC1E; - 800a488: 687b ldr r3, [r7, #4] - 800a48a: 6a1b ldr r3, [r3, #32] - 800a48c: f023 0201 bic.w r2, r3, #1 - 800a490: 687b ldr r3, [r7, #4] - 800a492: 621a str r2, [r3, #32] + 800a9fc: 687b ldr r3, [r7, #4] + 800a9fe: 6a1b ldr r3, [r3, #32] + 800aa00: f023 0201 bic.w r2, r3, #1 + 800aa04: 687b ldr r3, [r7, #4] + 800aa06: 621a str r2, [r3, #32] /* Get the TIMx CR2 register value */ tmpcr2 = TIMx->CR2; - 800a494: 687b ldr r3, [r7, #4] - 800a496: 685b ldr r3, [r3, #4] - 800a498: 613b str r3, [r7, #16] + 800aa08: 687b ldr r3, [r7, #4] + 800aa0a: 685b ldr r3, [r3, #4] + 800aa0c: 613b str r3, [r7, #16] /* Get the TIMx CCMR1 register value */ tmpccmrx = TIMx->CCMR1; - 800a49a: 687b ldr r3, [r7, #4] - 800a49c: 699b ldr r3, [r3, #24] - 800a49e: 60fb str r3, [r7, #12] + 800aa0e: 687b ldr r3, [r7, #4] + 800aa10: 699b ldr r3, [r3, #24] + 800aa12: 60fb str r3, [r7, #12] /* Reset the Output Compare Mode Bits */ tmpccmrx &= ~TIM_CCMR1_OC1M; - 800a4a0: 68fb ldr r3, [r7, #12] - 800a4a2: f023 0370 bic.w r3, r3, #112 @ 0x70 - 800a4a6: 60fb str r3, [r7, #12] + 800aa14: 68fb ldr r3, [r7, #12] + 800aa16: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800aa1a: 60fb str r3, [r7, #12] tmpccmrx &= ~TIM_CCMR1_CC1S; - 800a4a8: 68fb ldr r3, [r7, #12] - 800a4aa: f023 0303 bic.w r3, r3, #3 - 800a4ae: 60fb str r3, [r7, #12] + 800aa1c: 68fb ldr r3, [r7, #12] + 800aa1e: f023 0303 bic.w r3, r3, #3 + 800aa22: 60fb str r3, [r7, #12] /* Select the Output Compare Mode */ tmpccmrx |= OC_Config->OCMode; - 800a4b0: 683b ldr r3, [r7, #0] - 800a4b2: 681b ldr r3, [r3, #0] - 800a4b4: 68fa ldr r2, [r7, #12] - 800a4b6: 4313 orrs r3, r2 - 800a4b8: 60fb str r3, [r7, #12] + 800aa24: 683b ldr r3, [r7, #0] + 800aa26: 681b ldr r3, [r3, #0] + 800aa28: 68fa ldr r2, [r7, #12] + 800aa2a: 4313 orrs r3, r2 + 800aa2c: 60fb str r3, [r7, #12] /* Reset the Output Polarity level */ tmpccer &= ~TIM_CCER_CC1P; - 800a4ba: 697b ldr r3, [r7, #20] - 800a4bc: f023 0302 bic.w r3, r3, #2 - 800a4c0: 617b str r3, [r7, #20] + 800aa2e: 697b ldr r3, [r7, #20] + 800aa30: f023 0302 bic.w r3, r3, #2 + 800aa34: 617b str r3, [r7, #20] /* Set the Output Compare Polarity */ tmpccer |= OC_Config->OCPolarity; - 800a4c2: 683b ldr r3, [r7, #0] - 800a4c4: 689b ldr r3, [r3, #8] - 800a4c6: 697a ldr r2, [r7, #20] - 800a4c8: 4313 orrs r3, r2 - 800a4ca: 617b str r3, [r7, #20] + 800aa36: 683b ldr r3, [r7, #0] + 800aa38: 689b ldr r3, [r3, #8] + 800aa3a: 697a ldr r2, [r7, #20] + 800aa3c: 4313 orrs r3, r2 + 800aa3e: 617b str r3, [r7, #20] if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_1)) - 800a4cc: 687b ldr r3, [r7, #4] - 800a4ce: 4a34 ldr r2, [pc, #208] @ (800a5a0 ) - 800a4d0: 4293 cmp r3, r2 - 800a4d2: d003 beq.n 800a4dc - 800a4d4: 687b ldr r3, [r7, #4] - 800a4d6: 4a33 ldr r2, [pc, #204] @ (800a5a4 ) - 800a4d8: 4293 cmp r3, r2 - 800a4da: d119 bne.n 800a510 + 800aa40: 687b ldr r3, [r7, #4] + 800aa42: 4a34 ldr r2, [pc, #208] @ (800ab14 ) + 800aa44: 4293 cmp r3, r2 + 800aa46: d003 beq.n 800aa50 + 800aa48: 687b ldr r3, [r7, #4] + 800aa4a: 4a33 ldr r2, [pc, #204] @ (800ab18 ) + 800aa4c: 4293 cmp r3, r2 + 800aa4e: d119 bne.n 800aa84 { /* Check parameters */ assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); - 800a4dc: 683b ldr r3, [r7, #0] - 800a4de: 68db ldr r3, [r3, #12] - 800a4e0: 2b00 cmp r3, #0 - 800a4e2: d008 beq.n 800a4f6 - 800a4e4: 683b ldr r3, [r7, #0] - 800a4e6: 68db ldr r3, [r3, #12] - 800a4e8: 2b08 cmp r3, #8 - 800a4ea: d004 beq.n 800a4f6 - 800a4ec: f641 21d0 movw r1, #6864 @ 0x1ad0 - 800a4f0: 482d ldr r0, [pc, #180] @ (800a5a8 ) - 800a4f2: f7f8 fe3f bl 8003174 + 800aa50: 683b ldr r3, [r7, #0] + 800aa52: 68db ldr r3, [r3, #12] + 800aa54: 2b00 cmp r3, #0 + 800aa56: d008 beq.n 800aa6a + 800aa58: 683b ldr r3, [r7, #0] + 800aa5a: 68db ldr r3, [r3, #12] + 800aa5c: 2b08 cmp r3, #8 + 800aa5e: d004 beq.n 800aa6a + 800aa60: f641 21d0 movw r1, #6864 @ 0x1ad0 + 800aa64: 482d ldr r0, [pc, #180] @ (800ab1c ) + 800aa66: f7f8 fbe1 bl 800322c /* Reset the Output N Polarity level */ tmpccer &= ~TIM_CCER_CC1NP; - 800a4f6: 697b ldr r3, [r7, #20] - 800a4f8: f023 0308 bic.w r3, r3, #8 - 800a4fc: 617b str r3, [r7, #20] + 800aa6a: 697b ldr r3, [r7, #20] + 800aa6c: f023 0308 bic.w r3, r3, #8 + 800aa70: 617b str r3, [r7, #20] /* Set the Output N Polarity */ tmpccer |= OC_Config->OCNPolarity; - 800a4fe: 683b ldr r3, [r7, #0] - 800a500: 68db ldr r3, [r3, #12] - 800a502: 697a ldr r2, [r7, #20] - 800a504: 4313 orrs r3, r2 - 800a506: 617b str r3, [r7, #20] + 800aa72: 683b ldr r3, [r7, #0] + 800aa74: 68db ldr r3, [r3, #12] + 800aa76: 697a ldr r2, [r7, #20] + 800aa78: 4313 orrs r3, r2 + 800aa7a: 617b str r3, [r7, #20] /* Reset the Output N State */ tmpccer &= ~TIM_CCER_CC1NE; - 800a508: 697b ldr r3, [r7, #20] - 800a50a: f023 0304 bic.w r3, r3, #4 - 800a50e: 617b str r3, [r7, #20] + 800aa7c: 697b ldr r3, [r7, #20] + 800aa7e: f023 0304 bic.w r3, r3, #4 + 800aa82: 617b str r3, [r7, #20] } if (IS_TIM_BREAK_INSTANCE(TIMx)) - 800a510: 687b ldr r3, [r7, #4] - 800a512: 4a23 ldr r2, [pc, #140] @ (800a5a0 ) - 800a514: 4293 cmp r3, r2 - 800a516: d003 beq.n 800a520 - 800a518: 687b ldr r3, [r7, #4] - 800a51a: 4a22 ldr r2, [pc, #136] @ (800a5a4 ) - 800a51c: 4293 cmp r3, r2 - 800a51e: d12d bne.n 800a57c + 800aa84: 687b ldr r3, [r7, #4] + 800aa86: 4a23 ldr r2, [pc, #140] @ (800ab14 ) + 800aa88: 4293 cmp r3, r2 + 800aa8a: d003 beq.n 800aa94 + 800aa8c: 687b ldr r3, [r7, #4] + 800aa8e: 4a22 ldr r2, [pc, #136] @ (800ab18 ) + 800aa90: 4293 cmp r3, r2 + 800aa92: d12d bne.n 800aaf0 { /* Check parameters */ assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); - 800a520: 683b ldr r3, [r7, #0] - 800a522: 699b ldr r3, [r3, #24] - 800a524: f5b3 7f00 cmp.w r3, #512 @ 0x200 - 800a528: d008 beq.n 800a53c - 800a52a: 683b ldr r3, [r7, #0] - 800a52c: 699b ldr r3, [r3, #24] - 800a52e: 2b00 cmp r3, #0 - 800a530: d004 beq.n 800a53c - 800a532: f641 21dd movw r1, #6877 @ 0x1add - 800a536: 481c ldr r0, [pc, #112] @ (800a5a8 ) - 800a538: f7f8 fe1c bl 8003174 + 800aa94: 683b ldr r3, [r7, #0] + 800aa96: 699b ldr r3, [r3, #24] + 800aa98: f5b3 7f00 cmp.w r3, #512 @ 0x200 + 800aa9c: d008 beq.n 800aab0 + 800aa9e: 683b ldr r3, [r7, #0] + 800aaa0: 699b ldr r3, [r3, #24] + 800aaa2: 2b00 cmp r3, #0 + 800aaa4: d004 beq.n 800aab0 + 800aaa6: f641 21dd movw r1, #6877 @ 0x1add + 800aaaa: 481c ldr r0, [pc, #112] @ (800ab1c ) + 800aaac: f7f8 fbbe bl 800322c assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); - 800a53c: 683b ldr r3, [r7, #0] - 800a53e: 695b ldr r3, [r3, #20] - 800a540: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 800a544: d008 beq.n 800a558 - 800a546: 683b ldr r3, [r7, #0] - 800a548: 695b ldr r3, [r3, #20] - 800a54a: 2b00 cmp r3, #0 - 800a54c: d004 beq.n 800a558 - 800a54e: f641 21de movw r1, #6878 @ 0x1ade - 800a552: 4815 ldr r0, [pc, #84] @ (800a5a8 ) - 800a554: f7f8 fe0e bl 8003174 + 800aab0: 683b ldr r3, [r7, #0] + 800aab2: 695b ldr r3, [r3, #20] + 800aab4: f5b3 7f80 cmp.w r3, #256 @ 0x100 + 800aab8: d008 beq.n 800aacc + 800aaba: 683b ldr r3, [r7, #0] + 800aabc: 695b ldr r3, [r3, #20] + 800aabe: 2b00 cmp r3, #0 + 800aac0: d004 beq.n 800aacc + 800aac2: f641 21de movw r1, #6878 @ 0x1ade + 800aac6: 4815 ldr r0, [pc, #84] @ (800ab1c ) + 800aac8: f7f8 fbb0 bl 800322c /* Reset the Output Compare and Output Compare N IDLE State */ tmpcr2 &= ~TIM_CR2_OIS1; - 800a558: 693b ldr r3, [r7, #16] - 800a55a: f423 7380 bic.w r3, r3, #256 @ 0x100 - 800a55e: 613b str r3, [r7, #16] + 800aacc: 693b ldr r3, [r7, #16] + 800aace: f423 7380 bic.w r3, r3, #256 @ 0x100 + 800aad2: 613b str r3, [r7, #16] tmpcr2 &= ~TIM_CR2_OIS1N; - 800a560: 693b ldr r3, [r7, #16] - 800a562: f423 7300 bic.w r3, r3, #512 @ 0x200 - 800a566: 613b str r3, [r7, #16] + 800aad4: 693b ldr r3, [r7, #16] + 800aad6: f423 7300 bic.w r3, r3, #512 @ 0x200 + 800aada: 613b str r3, [r7, #16] /* Set the Output Idle state */ tmpcr2 |= OC_Config->OCIdleState; - 800a568: 683b ldr r3, [r7, #0] - 800a56a: 695b ldr r3, [r3, #20] - 800a56c: 693a ldr r2, [r7, #16] - 800a56e: 4313 orrs r3, r2 - 800a570: 613b str r3, [r7, #16] + 800aadc: 683b ldr r3, [r7, #0] + 800aade: 695b ldr r3, [r3, #20] + 800aae0: 693a ldr r2, [r7, #16] + 800aae2: 4313 orrs r3, r2 + 800aae4: 613b str r3, [r7, #16] /* Set the Output N Idle state */ tmpcr2 |= OC_Config->OCNIdleState; - 800a572: 683b ldr r3, [r7, #0] - 800a574: 699b ldr r3, [r3, #24] - 800a576: 693a ldr r2, [r7, #16] - 800a578: 4313 orrs r3, r2 - 800a57a: 613b str r3, [r7, #16] + 800aae6: 683b ldr r3, [r7, #0] + 800aae8: 699b ldr r3, [r3, #24] + 800aaea: 693a ldr r2, [r7, #16] + 800aaec: 4313 orrs r3, r2 + 800aaee: 613b str r3, [r7, #16] } /* Write to TIMx CR2 */ TIMx->CR2 = tmpcr2; - 800a57c: 687b ldr r3, [r7, #4] - 800a57e: 693a ldr r2, [r7, #16] - 800a580: 605a str r2, [r3, #4] + 800aaf0: 687b ldr r3, [r7, #4] + 800aaf2: 693a ldr r2, [r7, #16] + 800aaf4: 605a str r2, [r3, #4] /* Write to TIMx CCMR1 */ TIMx->CCMR1 = tmpccmrx; - 800a582: 687b ldr r3, [r7, #4] - 800a584: 68fa ldr r2, [r7, #12] - 800a586: 619a str r2, [r3, #24] + 800aaf6: 687b ldr r3, [r7, #4] + 800aaf8: 68fa ldr r2, [r7, #12] + 800aafa: 619a str r2, [r3, #24] /* Set the Capture Compare Register value */ TIMx->CCR1 = OC_Config->Pulse; - 800a588: 683b ldr r3, [r7, #0] - 800a58a: 685a ldr r2, [r3, #4] - 800a58c: 687b ldr r3, [r7, #4] - 800a58e: 635a str r2, [r3, #52] @ 0x34 + 800aafc: 683b ldr r3, [r7, #0] + 800aafe: 685a ldr r2, [r3, #4] + 800ab00: 687b ldr r3, [r7, #4] + 800ab02: 635a str r2, [r3, #52] @ 0x34 /* Write to TIMx CCER */ TIMx->CCER = tmpccer; - 800a590: 687b ldr r3, [r7, #4] - 800a592: 697a ldr r2, [r7, #20] - 800a594: 621a str r2, [r3, #32] + 800ab04: 687b ldr r3, [r7, #4] + 800ab06: 697a ldr r2, [r7, #20] + 800ab08: 621a str r2, [r3, #32] } - 800a596: bf00 nop - 800a598: 3718 adds r7, #24 - 800a59a: 46bd mov sp, r7 - 800a59c: bd80 pop {r7, pc} - 800a59e: bf00 nop - 800a5a0: 40010000 .word 0x40010000 - 800a5a4: 40010400 .word 0x40010400 - 800a5a8: 0800e908 .word 0x0800e908 + 800ab0a: bf00 nop + 800ab0c: 3718 adds r7, #24 + 800ab0e: 46bd mov sp, r7 + 800ab10: bd80 pop {r7, pc} + 800ab12: bf00 nop + 800ab14: 40010000 .word 0x40010000 + 800ab18: 40010400 .word 0x40010400 + 800ab1c: 0800ee78 .word 0x0800ee78 -0800a5ac : +0800ab20 : * @param TIMx to select the TIM peripheral * @param OC_Config The output configuration structure * @retval None */ void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) { - 800a5ac: b580 push {r7, lr} - 800a5ae: b086 sub sp, #24 - 800a5b0: af00 add r7, sp, #0 - 800a5b2: 6078 str r0, [r7, #4] - 800a5b4: 6039 str r1, [r7, #0] + 800ab20: b580 push {r7, lr} + 800ab22: b086 sub sp, #24 + 800ab24: af00 add r7, sp, #0 + 800ab26: 6078 str r0, [r7, #4] + 800ab28: 6039 str r1, [r7, #0] uint32_t tmpccmrx; uint32_t tmpccer; uint32_t tmpcr2; /* Get the TIMx CCER register value */ tmpccer = TIMx->CCER; - 800a5b6: 687b ldr r3, [r7, #4] - 800a5b8: 6a1b ldr r3, [r3, #32] - 800a5ba: 617b str r3, [r7, #20] + 800ab2a: 687b ldr r3, [r7, #4] + 800ab2c: 6a1b ldr r3, [r3, #32] + 800ab2e: 617b str r3, [r7, #20] /* Disable the Channel 2: Reset the CC2E Bit */ TIMx->CCER &= ~TIM_CCER_CC2E; - 800a5bc: 687b ldr r3, [r7, #4] - 800a5be: 6a1b ldr r3, [r3, #32] - 800a5c0: f023 0210 bic.w r2, r3, #16 - 800a5c4: 687b ldr r3, [r7, #4] - 800a5c6: 621a str r2, [r3, #32] + 800ab30: 687b ldr r3, [r7, #4] + 800ab32: 6a1b ldr r3, [r3, #32] + 800ab34: f023 0210 bic.w r2, r3, #16 + 800ab38: 687b ldr r3, [r7, #4] + 800ab3a: 621a str r2, [r3, #32] /* Get the TIMx CR2 register value */ tmpcr2 = TIMx->CR2; - 800a5c8: 687b ldr r3, [r7, #4] - 800a5ca: 685b ldr r3, [r3, #4] - 800a5cc: 613b str r3, [r7, #16] + 800ab3c: 687b ldr r3, [r7, #4] + 800ab3e: 685b ldr r3, [r3, #4] + 800ab40: 613b str r3, [r7, #16] /* Get the TIMx CCMR1 register value */ tmpccmrx = TIMx->CCMR1; - 800a5ce: 687b ldr r3, [r7, #4] - 800a5d0: 699b ldr r3, [r3, #24] - 800a5d2: 60fb str r3, [r7, #12] + 800ab42: 687b ldr r3, [r7, #4] + 800ab44: 699b ldr r3, [r3, #24] + 800ab46: 60fb str r3, [r7, #12] /* Reset the Output Compare mode and Capture/Compare selection Bits */ tmpccmrx &= ~TIM_CCMR1_OC2M; - 800a5d4: 68fb ldr r3, [r7, #12] - 800a5d6: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 800a5da: 60fb str r3, [r7, #12] + 800ab48: 68fb ldr r3, [r7, #12] + 800ab4a: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 800ab4e: 60fb str r3, [r7, #12] tmpccmrx &= ~TIM_CCMR1_CC2S; - 800a5dc: 68fb ldr r3, [r7, #12] - 800a5de: f423 7340 bic.w r3, r3, #768 @ 0x300 - 800a5e2: 60fb str r3, [r7, #12] + 800ab50: 68fb ldr r3, [r7, #12] + 800ab52: f423 7340 bic.w r3, r3, #768 @ 0x300 + 800ab56: 60fb str r3, [r7, #12] /* Select the Output Compare Mode */ tmpccmrx |= (OC_Config->OCMode << 8U); - 800a5e4: 683b ldr r3, [r7, #0] - 800a5e6: 681b ldr r3, [r3, #0] - 800a5e8: 021b lsls r3, r3, #8 - 800a5ea: 68fa ldr r2, [r7, #12] - 800a5ec: 4313 orrs r3, r2 - 800a5ee: 60fb str r3, [r7, #12] + 800ab58: 683b ldr r3, [r7, #0] + 800ab5a: 681b ldr r3, [r3, #0] + 800ab5c: 021b lsls r3, r3, #8 + 800ab5e: 68fa ldr r2, [r7, #12] + 800ab60: 4313 orrs r3, r2 + 800ab62: 60fb str r3, [r7, #12] /* Reset the Output Polarity level */ tmpccer &= ~TIM_CCER_CC2P; - 800a5f0: 697b ldr r3, [r7, #20] - 800a5f2: f023 0320 bic.w r3, r3, #32 - 800a5f6: 617b str r3, [r7, #20] + 800ab64: 697b ldr r3, [r7, #20] + 800ab66: f023 0320 bic.w r3, r3, #32 + 800ab6a: 617b str r3, [r7, #20] /* Set the Output Compare Polarity */ tmpccer |= (OC_Config->OCPolarity << 4U); - 800a5f8: 683b ldr r3, [r7, #0] - 800a5fa: 689b ldr r3, [r3, #8] - 800a5fc: 011b lsls r3, r3, #4 - 800a5fe: 697a ldr r2, [r7, #20] - 800a600: 4313 orrs r3, r2 - 800a602: 617b str r3, [r7, #20] + 800ab6c: 683b ldr r3, [r7, #0] + 800ab6e: 689b ldr r3, [r3, #8] + 800ab70: 011b lsls r3, r3, #4 + 800ab72: 697a ldr r2, [r7, #20] + 800ab74: 4313 orrs r3, r2 + 800ab76: 617b str r3, [r7, #20] if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_2)) - 800a604: 687b ldr r3, [r7, #4] - 800a606: 4a35 ldr r2, [pc, #212] @ (800a6dc ) - 800a608: 4293 cmp r3, r2 - 800a60a: d003 beq.n 800a614 - 800a60c: 687b ldr r3, [r7, #4] - 800a60e: 4a34 ldr r2, [pc, #208] @ (800a6e0 ) - 800a610: 4293 cmp r3, r2 - 800a612: d11a bne.n 800a64a + 800ab78: 687b ldr r3, [r7, #4] + 800ab7a: 4a35 ldr r2, [pc, #212] @ (800ac50 ) + 800ab7c: 4293 cmp r3, r2 + 800ab7e: d003 beq.n 800ab88 + 800ab80: 687b ldr r3, [r7, #4] + 800ab82: 4a34 ldr r2, [pc, #208] @ (800ac54 ) + 800ab84: 4293 cmp r3, r2 + 800ab86: d11a bne.n 800abbe { assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); - 800a614: 683b ldr r3, [r7, #0] - 800a616: 68db ldr r3, [r3, #12] - 800a618: 2b00 cmp r3, #0 - 800a61a: d008 beq.n 800a62e - 800a61c: 683b ldr r3, [r7, #0] - 800a61e: 68db ldr r3, [r3, #12] - 800a620: 2b08 cmp r3, #8 - 800a622: d004 beq.n 800a62e - 800a624: f641 311c movw r1, #6940 @ 0x1b1c - 800a628: 482e ldr r0, [pc, #184] @ (800a6e4 ) - 800a62a: f7f8 fda3 bl 8003174 + 800ab88: 683b ldr r3, [r7, #0] + 800ab8a: 68db ldr r3, [r3, #12] + 800ab8c: 2b00 cmp r3, #0 + 800ab8e: d008 beq.n 800aba2 + 800ab90: 683b ldr r3, [r7, #0] + 800ab92: 68db ldr r3, [r3, #12] + 800ab94: 2b08 cmp r3, #8 + 800ab96: d004 beq.n 800aba2 + 800ab98: f641 311c movw r1, #6940 @ 0x1b1c + 800ab9c: 482e ldr r0, [pc, #184] @ (800ac58 ) + 800ab9e: f7f8 fb45 bl 800322c /* Reset the Output N Polarity level */ tmpccer &= ~TIM_CCER_CC2NP; - 800a62e: 697b ldr r3, [r7, #20] - 800a630: f023 0380 bic.w r3, r3, #128 @ 0x80 - 800a634: 617b str r3, [r7, #20] + 800aba2: 697b ldr r3, [r7, #20] + 800aba4: f023 0380 bic.w r3, r3, #128 @ 0x80 + 800aba8: 617b str r3, [r7, #20] /* Set the Output N Polarity */ tmpccer |= (OC_Config->OCNPolarity << 4U); - 800a636: 683b ldr r3, [r7, #0] - 800a638: 68db ldr r3, [r3, #12] - 800a63a: 011b lsls r3, r3, #4 - 800a63c: 697a ldr r2, [r7, #20] - 800a63e: 4313 orrs r3, r2 - 800a640: 617b str r3, [r7, #20] + 800abaa: 683b ldr r3, [r7, #0] + 800abac: 68db ldr r3, [r3, #12] + 800abae: 011b lsls r3, r3, #4 + 800abb0: 697a ldr r2, [r7, #20] + 800abb2: 4313 orrs r3, r2 + 800abb4: 617b str r3, [r7, #20] /* Reset the Output N State */ tmpccer &= ~TIM_CCER_CC2NE; - 800a642: 697b ldr r3, [r7, #20] - 800a644: f023 0340 bic.w r3, r3, #64 @ 0x40 - 800a648: 617b str r3, [r7, #20] + 800abb6: 697b ldr r3, [r7, #20] + 800abb8: f023 0340 bic.w r3, r3, #64 @ 0x40 + 800abbc: 617b str r3, [r7, #20] } if (IS_TIM_BREAK_INSTANCE(TIMx)) - 800a64a: 687b ldr r3, [r7, #4] - 800a64c: 4a23 ldr r2, [pc, #140] @ (800a6dc ) - 800a64e: 4293 cmp r3, r2 - 800a650: d003 beq.n 800a65a - 800a652: 687b ldr r3, [r7, #4] - 800a654: 4a22 ldr r2, [pc, #136] @ (800a6e0 ) - 800a656: 4293 cmp r3, r2 - 800a658: d12f bne.n 800a6ba + 800abbe: 687b ldr r3, [r7, #4] + 800abc0: 4a23 ldr r2, [pc, #140] @ (800ac50 ) + 800abc2: 4293 cmp r3, r2 + 800abc4: d003 beq.n 800abce + 800abc6: 687b ldr r3, [r7, #4] + 800abc8: 4a22 ldr r2, [pc, #136] @ (800ac54 ) + 800abca: 4293 cmp r3, r2 + 800abcc: d12f bne.n 800ac2e { /* Check parameters */ assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); - 800a65a: 683b ldr r3, [r7, #0] - 800a65c: 699b ldr r3, [r3, #24] - 800a65e: f5b3 7f00 cmp.w r3, #512 @ 0x200 - 800a662: d008 beq.n 800a676 - 800a664: 683b ldr r3, [r7, #0] - 800a666: 699b ldr r3, [r3, #24] - 800a668: 2b00 cmp r3, #0 - 800a66a: d004 beq.n 800a676 - 800a66c: f641 3129 movw r1, #6953 @ 0x1b29 - 800a670: 481c ldr r0, [pc, #112] @ (800a6e4 ) - 800a672: f7f8 fd7f bl 8003174 + 800abce: 683b ldr r3, [r7, #0] + 800abd0: 699b ldr r3, [r3, #24] + 800abd2: f5b3 7f00 cmp.w r3, #512 @ 0x200 + 800abd6: d008 beq.n 800abea + 800abd8: 683b ldr r3, [r7, #0] + 800abda: 699b ldr r3, [r3, #24] + 800abdc: 2b00 cmp r3, #0 + 800abde: d004 beq.n 800abea + 800abe0: f641 3129 movw r1, #6953 @ 0x1b29 + 800abe4: 481c ldr r0, [pc, #112] @ (800ac58 ) + 800abe6: f7f8 fb21 bl 800322c assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); - 800a676: 683b ldr r3, [r7, #0] - 800a678: 695b ldr r3, [r3, #20] - 800a67a: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 800a67e: d008 beq.n 800a692 - 800a680: 683b ldr r3, [r7, #0] - 800a682: 695b ldr r3, [r3, #20] - 800a684: 2b00 cmp r3, #0 - 800a686: d004 beq.n 800a692 - 800a688: f641 312a movw r1, #6954 @ 0x1b2a - 800a68c: 4815 ldr r0, [pc, #84] @ (800a6e4 ) - 800a68e: f7f8 fd71 bl 8003174 + 800abea: 683b ldr r3, [r7, #0] + 800abec: 695b ldr r3, [r3, #20] + 800abee: f5b3 7f80 cmp.w r3, #256 @ 0x100 + 800abf2: d008 beq.n 800ac06 + 800abf4: 683b ldr r3, [r7, #0] + 800abf6: 695b ldr r3, [r3, #20] + 800abf8: 2b00 cmp r3, #0 + 800abfa: d004 beq.n 800ac06 + 800abfc: f641 312a movw r1, #6954 @ 0x1b2a + 800ac00: 4815 ldr r0, [pc, #84] @ (800ac58 ) + 800ac02: f7f8 fb13 bl 800322c /* Reset the Output Compare and Output Compare N IDLE State */ tmpcr2 &= ~TIM_CR2_OIS2; - 800a692: 693b ldr r3, [r7, #16] - 800a694: f423 6380 bic.w r3, r3, #1024 @ 0x400 - 800a698: 613b str r3, [r7, #16] + 800ac06: 693b ldr r3, [r7, #16] + 800ac08: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 800ac0c: 613b str r3, [r7, #16] tmpcr2 &= ~TIM_CR2_OIS2N; - 800a69a: 693b ldr r3, [r7, #16] - 800a69c: f423 6300 bic.w r3, r3, #2048 @ 0x800 - 800a6a0: 613b str r3, [r7, #16] + 800ac0e: 693b ldr r3, [r7, #16] + 800ac10: f423 6300 bic.w r3, r3, #2048 @ 0x800 + 800ac14: 613b str r3, [r7, #16] /* Set the Output Idle state */ tmpcr2 |= (OC_Config->OCIdleState << 2U); - 800a6a2: 683b ldr r3, [r7, #0] - 800a6a4: 695b ldr r3, [r3, #20] - 800a6a6: 009b lsls r3, r3, #2 - 800a6a8: 693a ldr r2, [r7, #16] - 800a6aa: 4313 orrs r3, r2 - 800a6ac: 613b str r3, [r7, #16] + 800ac16: 683b ldr r3, [r7, #0] + 800ac18: 695b ldr r3, [r3, #20] + 800ac1a: 009b lsls r3, r3, #2 + 800ac1c: 693a ldr r2, [r7, #16] + 800ac1e: 4313 orrs r3, r2 + 800ac20: 613b str r3, [r7, #16] /* Set the Output N Idle state */ tmpcr2 |= (OC_Config->OCNIdleState << 2U); - 800a6ae: 683b ldr r3, [r7, #0] - 800a6b0: 699b ldr r3, [r3, #24] - 800a6b2: 009b lsls r3, r3, #2 - 800a6b4: 693a ldr r2, [r7, #16] - 800a6b6: 4313 orrs r3, r2 - 800a6b8: 613b str r3, [r7, #16] + 800ac22: 683b ldr r3, [r7, #0] + 800ac24: 699b ldr r3, [r3, #24] + 800ac26: 009b lsls r3, r3, #2 + 800ac28: 693a ldr r2, [r7, #16] + 800ac2a: 4313 orrs r3, r2 + 800ac2c: 613b str r3, [r7, #16] } /* Write to TIMx CR2 */ TIMx->CR2 = tmpcr2; - 800a6ba: 687b ldr r3, [r7, #4] - 800a6bc: 693a ldr r2, [r7, #16] - 800a6be: 605a str r2, [r3, #4] + 800ac2e: 687b ldr r3, [r7, #4] + 800ac30: 693a ldr r2, [r7, #16] + 800ac32: 605a str r2, [r3, #4] /* Write to TIMx CCMR1 */ TIMx->CCMR1 = tmpccmrx; - 800a6c0: 687b ldr r3, [r7, #4] - 800a6c2: 68fa ldr r2, [r7, #12] - 800a6c4: 619a str r2, [r3, #24] + 800ac34: 687b ldr r3, [r7, #4] + 800ac36: 68fa ldr r2, [r7, #12] + 800ac38: 619a str r2, [r3, #24] /* Set the Capture Compare Register value */ TIMx->CCR2 = OC_Config->Pulse; - 800a6c6: 683b ldr r3, [r7, #0] - 800a6c8: 685a ldr r2, [r3, #4] - 800a6ca: 687b ldr r3, [r7, #4] - 800a6cc: 639a str r2, [r3, #56] @ 0x38 + 800ac3a: 683b ldr r3, [r7, #0] + 800ac3c: 685a ldr r2, [r3, #4] + 800ac3e: 687b ldr r3, [r7, #4] + 800ac40: 639a str r2, [r3, #56] @ 0x38 /* Write to TIMx CCER */ TIMx->CCER = tmpccer; - 800a6ce: 687b ldr r3, [r7, #4] - 800a6d0: 697a ldr r2, [r7, #20] - 800a6d2: 621a str r2, [r3, #32] + 800ac42: 687b ldr r3, [r7, #4] + 800ac44: 697a ldr r2, [r7, #20] + 800ac46: 621a str r2, [r3, #32] } - 800a6d4: bf00 nop - 800a6d6: 3718 adds r7, #24 - 800a6d8: 46bd mov sp, r7 - 800a6da: bd80 pop {r7, pc} - 800a6dc: 40010000 .word 0x40010000 - 800a6e0: 40010400 .word 0x40010400 - 800a6e4: 0800e908 .word 0x0800e908 + 800ac48: bf00 nop + 800ac4a: 3718 adds r7, #24 + 800ac4c: 46bd mov sp, r7 + 800ac4e: bd80 pop {r7, pc} + 800ac50: 40010000 .word 0x40010000 + 800ac54: 40010400 .word 0x40010400 + 800ac58: 0800ee78 .word 0x0800ee78 -0800a6e8 : +0800ac5c : * @param TIMx to select the TIM peripheral * @param OC_Config The output configuration structure * @retval None */ static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) { - 800a6e8: b580 push {r7, lr} - 800a6ea: b086 sub sp, #24 - 800a6ec: af00 add r7, sp, #0 - 800a6ee: 6078 str r0, [r7, #4] - 800a6f0: 6039 str r1, [r7, #0] + 800ac5c: b580 push {r7, lr} + 800ac5e: b086 sub sp, #24 + 800ac60: af00 add r7, sp, #0 + 800ac62: 6078 str r0, [r7, #4] + 800ac64: 6039 str r1, [r7, #0] uint32_t tmpccmrx; uint32_t tmpccer; uint32_t tmpcr2; /* Get the TIMx CCER register value */ tmpccer = TIMx->CCER; - 800a6f2: 687b ldr r3, [r7, #4] - 800a6f4: 6a1b ldr r3, [r3, #32] - 800a6f6: 617b str r3, [r7, #20] + 800ac66: 687b ldr r3, [r7, #4] + 800ac68: 6a1b ldr r3, [r3, #32] + 800ac6a: 617b str r3, [r7, #20] /* Disable the Channel 3: Reset the CC2E Bit */ TIMx->CCER &= ~TIM_CCER_CC3E; - 800a6f8: 687b ldr r3, [r7, #4] - 800a6fa: 6a1b ldr r3, [r3, #32] - 800a6fc: f423 7280 bic.w r2, r3, #256 @ 0x100 - 800a700: 687b ldr r3, [r7, #4] - 800a702: 621a str r2, [r3, #32] + 800ac6c: 687b ldr r3, [r7, #4] + 800ac6e: 6a1b ldr r3, [r3, #32] + 800ac70: f423 7280 bic.w r2, r3, #256 @ 0x100 + 800ac74: 687b ldr r3, [r7, #4] + 800ac76: 621a str r2, [r3, #32] /* Get the TIMx CR2 register value */ tmpcr2 = TIMx->CR2; - 800a704: 687b ldr r3, [r7, #4] - 800a706: 685b ldr r3, [r3, #4] - 800a708: 613b str r3, [r7, #16] + 800ac78: 687b ldr r3, [r7, #4] + 800ac7a: 685b ldr r3, [r3, #4] + 800ac7c: 613b str r3, [r7, #16] /* Get the TIMx CCMR2 register value */ tmpccmrx = TIMx->CCMR2; - 800a70a: 687b ldr r3, [r7, #4] - 800a70c: 69db ldr r3, [r3, #28] - 800a70e: 60fb str r3, [r7, #12] + 800ac7e: 687b ldr r3, [r7, #4] + 800ac80: 69db ldr r3, [r3, #28] + 800ac82: 60fb str r3, [r7, #12] /* Reset the Output Compare mode and Capture/Compare selection Bits */ tmpccmrx &= ~TIM_CCMR2_OC3M; - 800a710: 68fb ldr r3, [r7, #12] - 800a712: f023 0370 bic.w r3, r3, #112 @ 0x70 - 800a716: 60fb str r3, [r7, #12] + 800ac84: 68fb ldr r3, [r7, #12] + 800ac86: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800ac8a: 60fb str r3, [r7, #12] tmpccmrx &= ~TIM_CCMR2_CC3S; - 800a718: 68fb ldr r3, [r7, #12] - 800a71a: f023 0303 bic.w r3, r3, #3 - 800a71e: 60fb str r3, [r7, #12] + 800ac8c: 68fb ldr r3, [r7, #12] + 800ac8e: f023 0303 bic.w r3, r3, #3 + 800ac92: 60fb str r3, [r7, #12] /* Select the Output Compare Mode */ tmpccmrx |= OC_Config->OCMode; - 800a720: 683b ldr r3, [r7, #0] - 800a722: 681b ldr r3, [r3, #0] - 800a724: 68fa ldr r2, [r7, #12] - 800a726: 4313 orrs r3, r2 - 800a728: 60fb str r3, [r7, #12] + 800ac94: 683b ldr r3, [r7, #0] + 800ac96: 681b ldr r3, [r3, #0] + 800ac98: 68fa ldr r2, [r7, #12] + 800ac9a: 4313 orrs r3, r2 + 800ac9c: 60fb str r3, [r7, #12] /* Reset the Output Polarity level */ tmpccer &= ~TIM_CCER_CC3P; - 800a72a: 697b ldr r3, [r7, #20] - 800a72c: f423 7300 bic.w r3, r3, #512 @ 0x200 - 800a730: 617b str r3, [r7, #20] + 800ac9e: 697b ldr r3, [r7, #20] + 800aca0: f423 7300 bic.w r3, r3, #512 @ 0x200 + 800aca4: 617b str r3, [r7, #20] /* Set the Output Compare Polarity */ tmpccer |= (OC_Config->OCPolarity << 8U); - 800a732: 683b ldr r3, [r7, #0] - 800a734: 689b ldr r3, [r3, #8] - 800a736: 021b lsls r3, r3, #8 - 800a738: 697a ldr r2, [r7, #20] - 800a73a: 4313 orrs r3, r2 - 800a73c: 617b str r3, [r7, #20] + 800aca6: 683b ldr r3, [r7, #0] + 800aca8: 689b ldr r3, [r3, #8] + 800acaa: 021b lsls r3, r3, #8 + 800acac: 697a ldr r2, [r7, #20] + 800acae: 4313 orrs r3, r2 + 800acb0: 617b str r3, [r7, #20] if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_3)) - 800a73e: 687b ldr r3, [r7, #4] - 800a740: 4a35 ldr r2, [pc, #212] @ (800a818 ) - 800a742: 4293 cmp r3, r2 - 800a744: d003 beq.n 800a74e - 800a746: 687b ldr r3, [r7, #4] - 800a748: 4a34 ldr r2, [pc, #208] @ (800a81c ) - 800a74a: 4293 cmp r3, r2 - 800a74c: d11a bne.n 800a784 + 800acb2: 687b ldr r3, [r7, #4] + 800acb4: 4a35 ldr r2, [pc, #212] @ (800ad8c ) + 800acb6: 4293 cmp r3, r2 + 800acb8: d003 beq.n 800acc2 + 800acba: 687b ldr r3, [r7, #4] + 800acbc: 4a34 ldr r2, [pc, #208] @ (800ad90 ) + 800acbe: 4293 cmp r3, r2 + 800acc0: d11a bne.n 800acf8 { assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); - 800a74e: 683b ldr r3, [r7, #0] - 800a750: 68db ldr r3, [r3, #12] - 800a752: 2b00 cmp r3, #0 - 800a754: d008 beq.n 800a768 - 800a756: 683b ldr r3, [r7, #0] - 800a758: 68db ldr r3, [r3, #12] - 800a75a: 2b08 cmp r3, #8 - 800a75c: d004 beq.n 800a768 - 800a75e: f641 3167 movw r1, #7015 @ 0x1b67 - 800a762: 482f ldr r0, [pc, #188] @ (800a820 ) - 800a764: f7f8 fd06 bl 8003174 + 800acc2: 683b ldr r3, [r7, #0] + 800acc4: 68db ldr r3, [r3, #12] + 800acc6: 2b00 cmp r3, #0 + 800acc8: d008 beq.n 800acdc + 800acca: 683b ldr r3, [r7, #0] + 800accc: 68db ldr r3, [r3, #12] + 800acce: 2b08 cmp r3, #8 + 800acd0: d004 beq.n 800acdc + 800acd2: f641 3167 movw r1, #7015 @ 0x1b67 + 800acd6: 482f ldr r0, [pc, #188] @ (800ad94 ) + 800acd8: f7f8 faa8 bl 800322c /* Reset the Output N Polarity level */ tmpccer &= ~TIM_CCER_CC3NP; - 800a768: 697b ldr r3, [r7, #20] - 800a76a: f423 6300 bic.w r3, r3, #2048 @ 0x800 - 800a76e: 617b str r3, [r7, #20] + 800acdc: 697b ldr r3, [r7, #20] + 800acde: f423 6300 bic.w r3, r3, #2048 @ 0x800 + 800ace2: 617b str r3, [r7, #20] /* Set the Output N Polarity */ tmpccer |= (OC_Config->OCNPolarity << 8U); - 800a770: 683b ldr r3, [r7, #0] - 800a772: 68db ldr r3, [r3, #12] - 800a774: 021b lsls r3, r3, #8 - 800a776: 697a ldr r2, [r7, #20] - 800a778: 4313 orrs r3, r2 - 800a77a: 617b str r3, [r7, #20] + 800ace4: 683b ldr r3, [r7, #0] + 800ace6: 68db ldr r3, [r3, #12] + 800ace8: 021b lsls r3, r3, #8 + 800acea: 697a ldr r2, [r7, #20] + 800acec: 4313 orrs r3, r2 + 800acee: 617b str r3, [r7, #20] /* Reset the Output N State */ tmpccer &= ~TIM_CCER_CC3NE; - 800a77c: 697b ldr r3, [r7, #20] - 800a77e: f423 6380 bic.w r3, r3, #1024 @ 0x400 - 800a782: 617b str r3, [r7, #20] + 800acf0: 697b ldr r3, [r7, #20] + 800acf2: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 800acf6: 617b str r3, [r7, #20] } if (IS_TIM_BREAK_INSTANCE(TIMx)) - 800a784: 687b ldr r3, [r7, #4] - 800a786: 4a24 ldr r2, [pc, #144] @ (800a818 ) - 800a788: 4293 cmp r3, r2 - 800a78a: d003 beq.n 800a794 - 800a78c: 687b ldr r3, [r7, #4] - 800a78e: 4a23 ldr r2, [pc, #140] @ (800a81c ) - 800a790: 4293 cmp r3, r2 - 800a792: d12f bne.n 800a7f4 + 800acf8: 687b ldr r3, [r7, #4] + 800acfa: 4a24 ldr r2, [pc, #144] @ (800ad8c ) + 800acfc: 4293 cmp r3, r2 + 800acfe: d003 beq.n 800ad08 + 800ad00: 687b ldr r3, [r7, #4] + 800ad02: 4a23 ldr r2, [pc, #140] @ (800ad90 ) + 800ad04: 4293 cmp r3, r2 + 800ad06: d12f bne.n 800ad68 { /* Check parameters */ assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); - 800a794: 683b ldr r3, [r7, #0] - 800a796: 699b ldr r3, [r3, #24] - 800a798: f5b3 7f00 cmp.w r3, #512 @ 0x200 - 800a79c: d008 beq.n 800a7b0 - 800a79e: 683b ldr r3, [r7, #0] - 800a7a0: 699b ldr r3, [r3, #24] - 800a7a2: 2b00 cmp r3, #0 - 800a7a4: d004 beq.n 800a7b0 - 800a7a6: f641 3174 movw r1, #7028 @ 0x1b74 - 800a7aa: 481d ldr r0, [pc, #116] @ (800a820 ) - 800a7ac: f7f8 fce2 bl 8003174 + 800ad08: 683b ldr r3, [r7, #0] + 800ad0a: 699b ldr r3, [r3, #24] + 800ad0c: f5b3 7f00 cmp.w r3, #512 @ 0x200 + 800ad10: d008 beq.n 800ad24 + 800ad12: 683b ldr r3, [r7, #0] + 800ad14: 699b ldr r3, [r3, #24] + 800ad16: 2b00 cmp r3, #0 + 800ad18: d004 beq.n 800ad24 + 800ad1a: f641 3174 movw r1, #7028 @ 0x1b74 + 800ad1e: 481d ldr r0, [pc, #116] @ (800ad94 ) + 800ad20: f7f8 fa84 bl 800322c assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); - 800a7b0: 683b ldr r3, [r7, #0] - 800a7b2: 695b ldr r3, [r3, #20] - 800a7b4: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 800a7b8: d008 beq.n 800a7cc - 800a7ba: 683b ldr r3, [r7, #0] - 800a7bc: 695b ldr r3, [r3, #20] - 800a7be: 2b00 cmp r3, #0 - 800a7c0: d004 beq.n 800a7cc - 800a7c2: f641 3175 movw r1, #7029 @ 0x1b75 - 800a7c6: 4816 ldr r0, [pc, #88] @ (800a820 ) - 800a7c8: f7f8 fcd4 bl 8003174 + 800ad24: 683b ldr r3, [r7, #0] + 800ad26: 695b ldr r3, [r3, #20] + 800ad28: f5b3 7f80 cmp.w r3, #256 @ 0x100 + 800ad2c: d008 beq.n 800ad40 + 800ad2e: 683b ldr r3, [r7, #0] + 800ad30: 695b ldr r3, [r3, #20] + 800ad32: 2b00 cmp r3, #0 + 800ad34: d004 beq.n 800ad40 + 800ad36: f641 3175 movw r1, #7029 @ 0x1b75 + 800ad3a: 4816 ldr r0, [pc, #88] @ (800ad94 ) + 800ad3c: f7f8 fa76 bl 800322c /* Reset the Output Compare and Output Compare N IDLE State */ tmpcr2 &= ~TIM_CR2_OIS3; - 800a7cc: 693b ldr r3, [r7, #16] - 800a7ce: f423 5380 bic.w r3, r3, #4096 @ 0x1000 - 800a7d2: 613b str r3, [r7, #16] + 800ad40: 693b ldr r3, [r7, #16] + 800ad42: f423 5380 bic.w r3, r3, #4096 @ 0x1000 + 800ad46: 613b str r3, [r7, #16] tmpcr2 &= ~TIM_CR2_OIS3N; - 800a7d4: 693b ldr r3, [r7, #16] - 800a7d6: f423 5300 bic.w r3, r3, #8192 @ 0x2000 - 800a7da: 613b str r3, [r7, #16] + 800ad48: 693b ldr r3, [r7, #16] + 800ad4a: f423 5300 bic.w r3, r3, #8192 @ 0x2000 + 800ad4e: 613b str r3, [r7, #16] /* Set the Output Idle state */ tmpcr2 |= (OC_Config->OCIdleState << 4U); - 800a7dc: 683b ldr r3, [r7, #0] - 800a7de: 695b ldr r3, [r3, #20] - 800a7e0: 011b lsls r3, r3, #4 - 800a7e2: 693a ldr r2, [r7, #16] - 800a7e4: 4313 orrs r3, r2 - 800a7e6: 613b str r3, [r7, #16] + 800ad50: 683b ldr r3, [r7, #0] + 800ad52: 695b ldr r3, [r3, #20] + 800ad54: 011b lsls r3, r3, #4 + 800ad56: 693a ldr r2, [r7, #16] + 800ad58: 4313 orrs r3, r2 + 800ad5a: 613b str r3, [r7, #16] /* Set the Output N Idle state */ tmpcr2 |= (OC_Config->OCNIdleState << 4U); - 800a7e8: 683b ldr r3, [r7, #0] - 800a7ea: 699b ldr r3, [r3, #24] - 800a7ec: 011b lsls r3, r3, #4 - 800a7ee: 693a ldr r2, [r7, #16] - 800a7f0: 4313 orrs r3, r2 - 800a7f2: 613b str r3, [r7, #16] + 800ad5c: 683b ldr r3, [r7, #0] + 800ad5e: 699b ldr r3, [r3, #24] + 800ad60: 011b lsls r3, r3, #4 + 800ad62: 693a ldr r2, [r7, #16] + 800ad64: 4313 orrs r3, r2 + 800ad66: 613b str r3, [r7, #16] } /* Write to TIMx CR2 */ TIMx->CR2 = tmpcr2; - 800a7f4: 687b ldr r3, [r7, #4] - 800a7f6: 693a ldr r2, [r7, #16] - 800a7f8: 605a str r2, [r3, #4] + 800ad68: 687b ldr r3, [r7, #4] + 800ad6a: 693a ldr r2, [r7, #16] + 800ad6c: 605a str r2, [r3, #4] /* Write to TIMx CCMR2 */ TIMx->CCMR2 = tmpccmrx; - 800a7fa: 687b ldr r3, [r7, #4] - 800a7fc: 68fa ldr r2, [r7, #12] - 800a7fe: 61da str r2, [r3, #28] + 800ad6e: 687b ldr r3, [r7, #4] + 800ad70: 68fa ldr r2, [r7, #12] + 800ad72: 61da str r2, [r3, #28] /* Set the Capture Compare Register value */ TIMx->CCR3 = OC_Config->Pulse; - 800a800: 683b ldr r3, [r7, #0] - 800a802: 685a ldr r2, [r3, #4] - 800a804: 687b ldr r3, [r7, #4] - 800a806: 63da str r2, [r3, #60] @ 0x3c + 800ad74: 683b ldr r3, [r7, #0] + 800ad76: 685a ldr r2, [r3, #4] + 800ad78: 687b ldr r3, [r7, #4] + 800ad7a: 63da str r2, [r3, #60] @ 0x3c /* Write to TIMx CCER */ TIMx->CCER = tmpccer; - 800a808: 687b ldr r3, [r7, #4] - 800a80a: 697a ldr r2, [r7, #20] - 800a80c: 621a str r2, [r3, #32] + 800ad7c: 687b ldr r3, [r7, #4] + 800ad7e: 697a ldr r2, [r7, #20] + 800ad80: 621a str r2, [r3, #32] } - 800a80e: bf00 nop - 800a810: 3718 adds r7, #24 - 800a812: 46bd mov sp, r7 - 800a814: bd80 pop {r7, pc} - 800a816: bf00 nop - 800a818: 40010000 .word 0x40010000 - 800a81c: 40010400 .word 0x40010400 - 800a820: 0800e908 .word 0x0800e908 + 800ad82: bf00 nop + 800ad84: 3718 adds r7, #24 + 800ad86: 46bd mov sp, r7 + 800ad88: bd80 pop {r7, pc} + 800ad8a: bf00 nop + 800ad8c: 40010000 .word 0x40010000 + 800ad90: 40010400 .word 0x40010400 + 800ad94: 0800ee78 .word 0x0800ee78 -0800a824 : +0800ad98 : * @param TIMx to select the TIM peripheral * @param OC_Config The output configuration structure * @retval None */ static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) { - 800a824: b580 push {r7, lr} - 800a826: b086 sub sp, #24 - 800a828: af00 add r7, sp, #0 - 800a82a: 6078 str r0, [r7, #4] - 800a82c: 6039 str r1, [r7, #0] + 800ad98: b580 push {r7, lr} + 800ad9a: b086 sub sp, #24 + 800ad9c: af00 add r7, sp, #0 + 800ad9e: 6078 str r0, [r7, #4] + 800ada0: 6039 str r1, [r7, #0] uint32_t tmpccmrx; uint32_t tmpccer; uint32_t tmpcr2; /* Get the TIMx CCER register value */ tmpccer = TIMx->CCER; - 800a82e: 687b ldr r3, [r7, #4] - 800a830: 6a1b ldr r3, [r3, #32] - 800a832: 613b str r3, [r7, #16] + 800ada2: 687b ldr r3, [r7, #4] + 800ada4: 6a1b ldr r3, [r3, #32] + 800ada6: 613b str r3, [r7, #16] /* Disable the Channel 4: Reset the CC4E Bit */ TIMx->CCER &= ~TIM_CCER_CC4E; - 800a834: 687b ldr r3, [r7, #4] - 800a836: 6a1b ldr r3, [r3, #32] - 800a838: f423 5280 bic.w r2, r3, #4096 @ 0x1000 - 800a83c: 687b ldr r3, [r7, #4] - 800a83e: 621a str r2, [r3, #32] + 800ada8: 687b ldr r3, [r7, #4] + 800adaa: 6a1b ldr r3, [r3, #32] + 800adac: f423 5280 bic.w r2, r3, #4096 @ 0x1000 + 800adb0: 687b ldr r3, [r7, #4] + 800adb2: 621a str r2, [r3, #32] /* Get the TIMx CR2 register value */ tmpcr2 = TIMx->CR2; - 800a840: 687b ldr r3, [r7, #4] - 800a842: 685b ldr r3, [r3, #4] - 800a844: 617b str r3, [r7, #20] + 800adb4: 687b ldr r3, [r7, #4] + 800adb6: 685b ldr r3, [r3, #4] + 800adb8: 617b str r3, [r7, #20] /* Get the TIMx CCMR2 register value */ tmpccmrx = TIMx->CCMR2; - 800a846: 687b ldr r3, [r7, #4] - 800a848: 69db ldr r3, [r3, #28] - 800a84a: 60fb str r3, [r7, #12] + 800adba: 687b ldr r3, [r7, #4] + 800adbc: 69db ldr r3, [r3, #28] + 800adbe: 60fb str r3, [r7, #12] /* Reset the Output Compare mode and Capture/Compare selection Bits */ tmpccmrx &= ~TIM_CCMR2_OC4M; - 800a84c: 68fb ldr r3, [r7, #12] - 800a84e: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 800a852: 60fb str r3, [r7, #12] + 800adc0: 68fb ldr r3, [r7, #12] + 800adc2: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 800adc6: 60fb str r3, [r7, #12] tmpccmrx &= ~TIM_CCMR2_CC4S; - 800a854: 68fb ldr r3, [r7, #12] - 800a856: f423 7340 bic.w r3, r3, #768 @ 0x300 - 800a85a: 60fb str r3, [r7, #12] + 800adc8: 68fb ldr r3, [r7, #12] + 800adca: f423 7340 bic.w r3, r3, #768 @ 0x300 + 800adce: 60fb str r3, [r7, #12] /* Select the Output Compare Mode */ tmpccmrx |= (OC_Config->OCMode << 8U); - 800a85c: 683b ldr r3, [r7, #0] - 800a85e: 681b ldr r3, [r3, #0] - 800a860: 021b lsls r3, r3, #8 - 800a862: 68fa ldr r2, [r7, #12] - 800a864: 4313 orrs r3, r2 - 800a866: 60fb str r3, [r7, #12] + 800add0: 683b ldr r3, [r7, #0] + 800add2: 681b ldr r3, [r3, #0] + 800add4: 021b lsls r3, r3, #8 + 800add6: 68fa ldr r2, [r7, #12] + 800add8: 4313 orrs r3, r2 + 800adda: 60fb str r3, [r7, #12] /* Reset the Output Polarity level */ tmpccer &= ~TIM_CCER_CC4P; - 800a868: 693b ldr r3, [r7, #16] - 800a86a: f423 5300 bic.w r3, r3, #8192 @ 0x2000 - 800a86e: 613b str r3, [r7, #16] + 800addc: 693b ldr r3, [r7, #16] + 800adde: f423 5300 bic.w r3, r3, #8192 @ 0x2000 + 800ade2: 613b str r3, [r7, #16] /* Set the Output Compare Polarity */ tmpccer |= (OC_Config->OCPolarity << 12U); - 800a870: 683b ldr r3, [r7, #0] - 800a872: 689b ldr r3, [r3, #8] - 800a874: 031b lsls r3, r3, #12 - 800a876: 693a ldr r2, [r7, #16] - 800a878: 4313 orrs r3, r2 - 800a87a: 613b str r3, [r7, #16] + 800ade4: 683b ldr r3, [r7, #0] + 800ade6: 689b ldr r3, [r3, #8] + 800ade8: 031b lsls r3, r3, #12 + 800adea: 693a ldr r2, [r7, #16] + 800adec: 4313 orrs r3, r2 + 800adee: 613b str r3, [r7, #16] if (IS_TIM_BREAK_INSTANCE(TIMx)) - 800a87c: 687b ldr r3, [r7, #4] - 800a87e: 4a18 ldr r2, [pc, #96] @ (800a8e0 ) - 800a880: 4293 cmp r3, r2 - 800a882: d003 beq.n 800a88c - 800a884: 687b ldr r3, [r7, #4] - 800a886: 4a17 ldr r2, [pc, #92] @ (800a8e4 ) - 800a888: 4293 cmp r3, r2 - 800a88a: d117 bne.n 800a8bc + 800adf0: 687b ldr r3, [r7, #4] + 800adf2: 4a18 ldr r2, [pc, #96] @ (800ae54 ) + 800adf4: 4293 cmp r3, r2 + 800adf6: d003 beq.n 800ae00 + 800adf8: 687b ldr r3, [r7, #4] + 800adfa: 4a17 ldr r2, [pc, #92] @ (800ae58 ) + 800adfc: 4293 cmp r3, r2 + 800adfe: d117 bne.n 800ae30 { /* Check parameters */ assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); - 800a88c: 683b ldr r3, [r7, #0] - 800a88e: 695b ldr r3, [r3, #20] - 800a890: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 800a894: d008 beq.n 800a8a8 - 800a896: 683b ldr r3, [r7, #0] - 800a898: 695b ldr r3, [r3, #20] - 800a89a: 2b00 cmp r3, #0 - 800a89c: d004 beq.n 800a8a8 - 800a89e: f641 31b4 movw r1, #7092 @ 0x1bb4 - 800a8a2: 4811 ldr r0, [pc, #68] @ (800a8e8 ) - 800a8a4: f7f8 fc66 bl 8003174 + 800ae00: 683b ldr r3, [r7, #0] + 800ae02: 695b ldr r3, [r3, #20] + 800ae04: f5b3 7f80 cmp.w r3, #256 @ 0x100 + 800ae08: d008 beq.n 800ae1c + 800ae0a: 683b ldr r3, [r7, #0] + 800ae0c: 695b ldr r3, [r3, #20] + 800ae0e: 2b00 cmp r3, #0 + 800ae10: d004 beq.n 800ae1c + 800ae12: f641 31b4 movw r1, #7092 @ 0x1bb4 + 800ae16: 4811 ldr r0, [pc, #68] @ (800ae5c ) + 800ae18: f7f8 fa08 bl 800322c /* Reset the Output Compare IDLE State */ tmpcr2 &= ~TIM_CR2_OIS4; - 800a8a8: 697b ldr r3, [r7, #20] - 800a8aa: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 800a8ae: 617b str r3, [r7, #20] + 800ae1c: 697b ldr r3, [r7, #20] + 800ae1e: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 800ae22: 617b str r3, [r7, #20] /* Set the Output Idle state */ tmpcr2 |= (OC_Config->OCIdleState << 6U); - 800a8b0: 683b ldr r3, [r7, #0] - 800a8b2: 695b ldr r3, [r3, #20] - 800a8b4: 019b lsls r3, r3, #6 - 800a8b6: 697a ldr r2, [r7, #20] - 800a8b8: 4313 orrs r3, r2 - 800a8ba: 617b str r3, [r7, #20] + 800ae24: 683b ldr r3, [r7, #0] + 800ae26: 695b ldr r3, [r3, #20] + 800ae28: 019b lsls r3, r3, #6 + 800ae2a: 697a ldr r2, [r7, #20] + 800ae2c: 4313 orrs r3, r2 + 800ae2e: 617b str r3, [r7, #20] } /* Write to TIMx CR2 */ TIMx->CR2 = tmpcr2; - 800a8bc: 687b ldr r3, [r7, #4] - 800a8be: 697a ldr r2, [r7, #20] - 800a8c0: 605a str r2, [r3, #4] + 800ae30: 687b ldr r3, [r7, #4] + 800ae32: 697a ldr r2, [r7, #20] + 800ae34: 605a str r2, [r3, #4] /* Write to TIMx CCMR2 */ TIMx->CCMR2 = tmpccmrx; - 800a8c2: 687b ldr r3, [r7, #4] - 800a8c4: 68fa ldr r2, [r7, #12] - 800a8c6: 61da str r2, [r3, #28] + 800ae36: 687b ldr r3, [r7, #4] + 800ae38: 68fa ldr r2, [r7, #12] + 800ae3a: 61da str r2, [r3, #28] /* Set the Capture Compare Register value */ TIMx->CCR4 = OC_Config->Pulse; - 800a8c8: 683b ldr r3, [r7, #0] - 800a8ca: 685a ldr r2, [r3, #4] - 800a8cc: 687b ldr r3, [r7, #4] - 800a8ce: 641a str r2, [r3, #64] @ 0x40 + 800ae3c: 683b ldr r3, [r7, #0] + 800ae3e: 685a ldr r2, [r3, #4] + 800ae40: 687b ldr r3, [r7, #4] + 800ae42: 641a str r2, [r3, #64] @ 0x40 /* Write to TIMx CCER */ TIMx->CCER = tmpccer; - 800a8d0: 687b ldr r3, [r7, #4] - 800a8d2: 693a ldr r2, [r7, #16] - 800a8d4: 621a str r2, [r3, #32] + 800ae44: 687b ldr r3, [r7, #4] + 800ae46: 693a ldr r2, [r7, #16] + 800ae48: 621a str r2, [r3, #32] } - 800a8d6: bf00 nop - 800a8d8: 3718 adds r7, #24 - 800a8da: 46bd mov sp, r7 - 800a8dc: bd80 pop {r7, pc} - 800a8de: bf00 nop - 800a8e0: 40010000 .word 0x40010000 - 800a8e4: 40010400 .word 0x40010400 - 800a8e8: 0800e908 .word 0x0800e908 + 800ae4a: bf00 nop + 800ae4c: 3718 adds r7, #24 + 800ae4e: 46bd mov sp, r7 + 800ae50: bd80 pop {r7, pc} + 800ae52: bf00 nop + 800ae54: 40010000 .word 0x40010000 + 800ae58: 40010400 .word 0x40010400 + 800ae5c: 0800ee78 .word 0x0800ee78 -0800a8ec : +0800ae60 : * @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) { - 800a8ec: b480 push {r7} - 800a8ee: b087 sub sp, #28 - 800a8f0: af00 add r7, sp, #0 - 800a8f2: 60f8 str r0, [r7, #12] - 800a8f4: 60b9 str r1, [r7, #8] - 800a8f6: 607a str r2, [r7, #4] + 800ae60: b480 push {r7} + 800ae62: b087 sub sp, #28 + 800ae64: af00 add r7, sp, #0 + 800ae66: 60f8 str r0, [r7, #12] + 800ae68: 60b9 str r1, [r7, #8] + 800ae6a: 607a str r2, [r7, #4] uint32_t tmpccmr1; uint32_t tmpccer; /* Disable the Channel 1: Reset the CC1E Bit */ tmpccer = TIMx->CCER; - 800a8f8: 68fb ldr r3, [r7, #12] - 800a8fa: 6a1b ldr r3, [r3, #32] - 800a8fc: 617b str r3, [r7, #20] + 800ae6c: 68fb ldr r3, [r7, #12] + 800ae6e: 6a1b ldr r3, [r3, #32] + 800ae70: 617b str r3, [r7, #20] TIMx->CCER &= ~TIM_CCER_CC1E; - 800a8fe: 68fb ldr r3, [r7, #12] - 800a900: 6a1b ldr r3, [r3, #32] - 800a902: f023 0201 bic.w r2, r3, #1 - 800a906: 68fb ldr r3, [r7, #12] - 800a908: 621a str r2, [r3, #32] + 800ae72: 68fb ldr r3, [r7, #12] + 800ae74: 6a1b ldr r3, [r3, #32] + 800ae76: f023 0201 bic.w r2, r3, #1 + 800ae7a: 68fb ldr r3, [r7, #12] + 800ae7c: 621a str r2, [r3, #32] tmpccmr1 = TIMx->CCMR1; - 800a90a: 68fb ldr r3, [r7, #12] - 800a90c: 699b ldr r3, [r3, #24] - 800a90e: 613b str r3, [r7, #16] + 800ae7e: 68fb ldr r3, [r7, #12] + 800ae80: 699b ldr r3, [r3, #24] + 800ae82: 613b str r3, [r7, #16] /* Set the filter */ tmpccmr1 &= ~TIM_CCMR1_IC1F; - 800a910: 693b ldr r3, [r7, #16] - 800a912: f023 03f0 bic.w r3, r3, #240 @ 0xf0 - 800a916: 613b str r3, [r7, #16] + 800ae84: 693b ldr r3, [r7, #16] + 800ae86: f023 03f0 bic.w r3, r3, #240 @ 0xf0 + 800ae8a: 613b str r3, [r7, #16] tmpccmr1 |= (TIM_ICFilter << 4U); - 800a918: 687b ldr r3, [r7, #4] - 800a91a: 011b lsls r3, r3, #4 - 800a91c: 693a ldr r2, [r7, #16] - 800a91e: 4313 orrs r3, r2 - 800a920: 613b str r3, [r7, #16] + 800ae8c: 687b ldr r3, [r7, #4] + 800ae8e: 011b lsls r3, r3, #4 + 800ae90: 693a ldr r2, [r7, #16] + 800ae92: 4313 orrs r3, r2 + 800ae94: 613b str r3, [r7, #16] /* Select the Polarity and set the CC1E Bit */ tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); - 800a922: 697b ldr r3, [r7, #20] - 800a924: f023 030a bic.w r3, r3, #10 - 800a928: 617b str r3, [r7, #20] + 800ae96: 697b ldr r3, [r7, #20] + 800ae98: f023 030a bic.w r3, r3, #10 + 800ae9c: 617b str r3, [r7, #20] tmpccer |= TIM_ICPolarity; - 800a92a: 697a ldr r2, [r7, #20] - 800a92c: 68bb ldr r3, [r7, #8] - 800a92e: 4313 orrs r3, r2 - 800a930: 617b str r3, [r7, #20] + 800ae9e: 697a ldr r2, [r7, #20] + 800aea0: 68bb ldr r3, [r7, #8] + 800aea2: 4313 orrs r3, r2 + 800aea4: 617b str r3, [r7, #20] /* Write to TIMx CCMR1 and CCER registers */ TIMx->CCMR1 = tmpccmr1; - 800a932: 68fb ldr r3, [r7, #12] - 800a934: 693a ldr r2, [r7, #16] - 800a936: 619a str r2, [r3, #24] + 800aea6: 68fb ldr r3, [r7, #12] + 800aea8: 693a ldr r2, [r7, #16] + 800aeaa: 619a str r2, [r3, #24] TIMx->CCER = tmpccer; - 800a938: 68fb ldr r3, [r7, #12] - 800a93a: 697a ldr r2, [r7, #20] - 800a93c: 621a str r2, [r3, #32] + 800aeac: 68fb ldr r3, [r7, #12] + 800aeae: 697a ldr r2, [r7, #20] + 800aeb0: 621a str r2, [r3, #32] } - 800a93e: bf00 nop - 800a940: 371c adds r7, #28 - 800a942: 46bd mov sp, r7 - 800a944: f85d 7b04 ldr.w r7, [sp], #4 - 800a948: 4770 bx lr + 800aeb2: bf00 nop + 800aeb4: 371c adds r7, #28 + 800aeb6: 46bd mov sp, r7 + 800aeb8: f85d 7b04 ldr.w r7, [sp], #4 + 800aebc: 4770 bx lr -0800a94a : +0800aebe : * @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) { - 800a94a: b480 push {r7} - 800a94c: b087 sub sp, #28 - 800a94e: af00 add r7, sp, #0 - 800a950: 60f8 str r0, [r7, #12] - 800a952: 60b9 str r1, [r7, #8] - 800a954: 607a str r2, [r7, #4] + 800aebe: b480 push {r7} + 800aec0: b087 sub sp, #28 + 800aec2: af00 add r7, sp, #0 + 800aec4: 60f8 str r0, [r7, #12] + 800aec6: 60b9 str r1, [r7, #8] + 800aec8: 607a str r2, [r7, #4] uint32_t tmpccmr1; uint32_t tmpccer; /* Disable the Channel 2: Reset the CC2E Bit */ tmpccer = TIMx->CCER; - 800a956: 68fb ldr r3, [r7, #12] - 800a958: 6a1b ldr r3, [r3, #32] - 800a95a: 617b str r3, [r7, #20] + 800aeca: 68fb ldr r3, [r7, #12] + 800aecc: 6a1b ldr r3, [r3, #32] + 800aece: 617b str r3, [r7, #20] TIMx->CCER &= ~TIM_CCER_CC2E; - 800a95c: 68fb ldr r3, [r7, #12] - 800a95e: 6a1b ldr r3, [r3, #32] - 800a960: f023 0210 bic.w r2, r3, #16 - 800a964: 68fb ldr r3, [r7, #12] - 800a966: 621a str r2, [r3, #32] + 800aed0: 68fb ldr r3, [r7, #12] + 800aed2: 6a1b ldr r3, [r3, #32] + 800aed4: f023 0210 bic.w r2, r3, #16 + 800aed8: 68fb ldr r3, [r7, #12] + 800aeda: 621a str r2, [r3, #32] tmpccmr1 = TIMx->CCMR1; - 800a968: 68fb ldr r3, [r7, #12] - 800a96a: 699b ldr r3, [r3, #24] - 800a96c: 613b str r3, [r7, #16] + 800aedc: 68fb ldr r3, [r7, #12] + 800aede: 699b ldr r3, [r3, #24] + 800aee0: 613b str r3, [r7, #16] /* Set the filter */ tmpccmr1 &= ~TIM_CCMR1_IC2F; - 800a96e: 693b ldr r3, [r7, #16] - 800a970: f423 4370 bic.w r3, r3, #61440 @ 0xf000 - 800a974: 613b str r3, [r7, #16] + 800aee2: 693b ldr r3, [r7, #16] + 800aee4: f423 4370 bic.w r3, r3, #61440 @ 0xf000 + 800aee8: 613b str r3, [r7, #16] tmpccmr1 |= (TIM_ICFilter << 12U); - 800a976: 687b ldr r3, [r7, #4] - 800a978: 031b lsls r3, r3, #12 - 800a97a: 693a ldr r2, [r7, #16] - 800a97c: 4313 orrs r3, r2 - 800a97e: 613b str r3, [r7, #16] + 800aeea: 687b ldr r3, [r7, #4] + 800aeec: 031b lsls r3, r3, #12 + 800aeee: 693a ldr r2, [r7, #16] + 800aef0: 4313 orrs r3, r2 + 800aef2: 613b str r3, [r7, #16] /* Select the Polarity and set the CC2E Bit */ tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); - 800a980: 697b ldr r3, [r7, #20] - 800a982: f023 03a0 bic.w r3, r3, #160 @ 0xa0 - 800a986: 617b str r3, [r7, #20] + 800aef4: 697b ldr r3, [r7, #20] + 800aef6: f023 03a0 bic.w r3, r3, #160 @ 0xa0 + 800aefa: 617b str r3, [r7, #20] tmpccer |= (TIM_ICPolarity << 4U); - 800a988: 68bb ldr r3, [r7, #8] - 800a98a: 011b lsls r3, r3, #4 - 800a98c: 697a ldr r2, [r7, #20] - 800a98e: 4313 orrs r3, r2 - 800a990: 617b str r3, [r7, #20] + 800aefc: 68bb ldr r3, [r7, #8] + 800aefe: 011b lsls r3, r3, #4 + 800af00: 697a ldr r2, [r7, #20] + 800af02: 4313 orrs r3, r2 + 800af04: 617b str r3, [r7, #20] /* Write to TIMx CCMR1 and CCER registers */ TIMx->CCMR1 = tmpccmr1 ; - 800a992: 68fb ldr r3, [r7, #12] - 800a994: 693a ldr r2, [r7, #16] - 800a996: 619a str r2, [r3, #24] + 800af06: 68fb ldr r3, [r7, #12] + 800af08: 693a ldr r2, [r7, #16] + 800af0a: 619a str r2, [r3, #24] TIMx->CCER = tmpccer; - 800a998: 68fb ldr r3, [r7, #12] - 800a99a: 697a ldr r2, [r7, #20] - 800a99c: 621a str r2, [r3, #32] + 800af0c: 68fb ldr r3, [r7, #12] + 800af0e: 697a ldr r2, [r7, #20] + 800af10: 621a str r2, [r3, #32] } - 800a99e: bf00 nop - 800a9a0: 371c adds r7, #28 - 800a9a2: 46bd mov sp, r7 - 800a9a4: f85d 7b04 ldr.w r7, [sp], #4 - 800a9a8: 4770 bx lr + 800af12: bf00 nop + 800af14: 371c adds r7, #28 + 800af16: 46bd mov sp, r7 + 800af18: f85d 7b04 ldr.w r7, [sp], #4 + 800af1c: 4770 bx lr -0800a9aa : +0800af1e : * @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) { - 800a9aa: b480 push {r7} - 800a9ac: b085 sub sp, #20 - 800a9ae: af00 add r7, sp, #0 - 800a9b0: 6078 str r0, [r7, #4] - 800a9b2: 6039 str r1, [r7, #0] + 800af1e: b480 push {r7} + 800af20: b085 sub sp, #20 + 800af22: af00 add r7, sp, #0 + 800af24: 6078 str r0, [r7, #4] + 800af26: 6039 str r1, [r7, #0] uint32_t tmpsmcr; /* Get the TIMx SMCR register value */ tmpsmcr = TIMx->SMCR; - 800a9b4: 687b ldr r3, [r7, #4] - 800a9b6: 689b ldr r3, [r3, #8] - 800a9b8: 60fb str r3, [r7, #12] + 800af28: 687b ldr r3, [r7, #4] + 800af2a: 689b ldr r3, [r3, #8] + 800af2c: 60fb str r3, [r7, #12] /* Reset the TS Bits */ tmpsmcr &= ~TIM_SMCR_TS; - 800a9ba: 68fb ldr r3, [r7, #12] - 800a9bc: f023 0370 bic.w r3, r3, #112 @ 0x70 - 800a9c0: 60fb str r3, [r7, #12] + 800af2e: 68fb ldr r3, [r7, #12] + 800af30: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800af34: 60fb str r3, [r7, #12] /* Set the Input Trigger source and the slave mode*/ tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1); - 800a9c2: 683a ldr r2, [r7, #0] - 800a9c4: 68fb ldr r3, [r7, #12] - 800a9c6: 4313 orrs r3, r2 - 800a9c8: f043 0307 orr.w r3, r3, #7 - 800a9cc: 60fb str r3, [r7, #12] + 800af36: 683a ldr r2, [r7, #0] + 800af38: 68fb ldr r3, [r7, #12] + 800af3a: 4313 orrs r3, r2 + 800af3c: f043 0307 orr.w r3, r3, #7 + 800af40: 60fb str r3, [r7, #12] /* Write to TIMx SMCR */ TIMx->SMCR = tmpsmcr; - 800a9ce: 687b ldr r3, [r7, #4] - 800a9d0: 68fa ldr r2, [r7, #12] - 800a9d2: 609a str r2, [r3, #8] + 800af42: 687b ldr r3, [r7, #4] + 800af44: 68fa ldr r2, [r7, #12] + 800af46: 609a str r2, [r3, #8] } - 800a9d4: bf00 nop - 800a9d6: 3714 adds r7, #20 - 800a9d8: 46bd mov sp, r7 - 800a9da: f85d 7b04 ldr.w r7, [sp], #4 - 800a9de: 4770 bx lr + 800af48: bf00 nop + 800af4a: 3714 adds r7, #20 + 800af4c: 46bd mov sp, r7 + 800af4e: f85d 7b04 ldr.w r7, [sp], #4 + 800af52: 4770 bx lr -0800a9e0 : +0800af54 : * 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) { - 800a9e0: b480 push {r7} - 800a9e2: b087 sub sp, #28 - 800a9e4: af00 add r7, sp, #0 - 800a9e6: 60f8 str r0, [r7, #12] - 800a9e8: 60b9 str r1, [r7, #8] - 800a9ea: 607a str r2, [r7, #4] - 800a9ec: 603b str r3, [r7, #0] + 800af54: b480 push {r7} + 800af56: b087 sub sp, #28 + 800af58: af00 add r7, sp, #0 + 800af5a: 60f8 str r0, [r7, #12] + 800af5c: 60b9 str r1, [r7, #8] + 800af5e: 607a str r2, [r7, #4] + 800af60: 603b str r3, [r7, #0] uint32_t tmpsmcr; tmpsmcr = TIMx->SMCR; - 800a9ee: 68fb ldr r3, [r7, #12] - 800a9f0: 689b ldr r3, [r3, #8] - 800a9f2: 617b str r3, [r7, #20] + 800af62: 68fb ldr r3, [r7, #12] + 800af64: 689b ldr r3, [r3, #8] + 800af66: 617b str r3, [r7, #20] /* Reset the ETR Bits */ tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); - 800a9f4: 697b ldr r3, [r7, #20] - 800a9f6: f423 437f bic.w r3, r3, #65280 @ 0xff00 - 800a9fa: 617b str r3, [r7, #20] + 800af68: 697b ldr r3, [r7, #20] + 800af6a: f423 437f bic.w r3, r3, #65280 @ 0xff00 + 800af6e: 617b str r3, [r7, #20] /* Set the Prescaler, the Filter value and the Polarity */ tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U))); - 800a9fc: 683b ldr r3, [r7, #0] - 800a9fe: 021a lsls r2, r3, #8 - 800aa00: 687b ldr r3, [r7, #4] - 800aa02: 431a orrs r2, r3 - 800aa04: 68bb ldr r3, [r7, #8] - 800aa06: 4313 orrs r3, r2 - 800aa08: 697a ldr r2, [r7, #20] - 800aa0a: 4313 orrs r3, r2 - 800aa0c: 617b str r3, [r7, #20] + 800af70: 683b ldr r3, [r7, #0] + 800af72: 021a lsls r2, r3, #8 + 800af74: 687b ldr r3, [r7, #4] + 800af76: 431a orrs r2, r3 + 800af78: 68bb ldr r3, [r7, #8] + 800af7a: 4313 orrs r3, r2 + 800af7c: 697a ldr r2, [r7, #20] + 800af7e: 4313 orrs r3, r2 + 800af80: 617b str r3, [r7, #20] /* Write to TIMx SMCR */ TIMx->SMCR = tmpsmcr; - 800aa0e: 68fb ldr r3, [r7, #12] - 800aa10: 697a ldr r2, [r7, #20] - 800aa12: 609a str r2, [r3, #8] + 800af82: 68fb ldr r3, [r7, #12] + 800af84: 697a ldr r2, [r7, #20] + 800af86: 609a str r2, [r3, #8] } - 800aa14: bf00 nop - 800aa16: 371c adds r7, #28 - 800aa18: 46bd mov sp, r7 - 800aa1a: f85d 7b04 ldr.w r7, [sp], #4 - 800aa1e: 4770 bx lr + 800af88: bf00 nop + 800af8a: 371c adds r7, #28 + 800af8c: 46bd mov sp, r7 + 800af8e: f85d 7b04 ldr.w r7, [sp], #4 + 800af92: 4770 bx lr -0800aa20 : +0800af94 : * @param ChannelState specifies the TIM Channel CCxE bit new state. * This parameter can be: TIM_CCx_ENABLE or TIM_CCx_DISABLE. * @retval None */ void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState) { - 800aa20: b580 push {r7, lr} - 800aa22: b086 sub sp, #24 - 800aa24: af00 add r7, sp, #0 - 800aa26: 60f8 str r0, [r7, #12] - 800aa28: 60b9 str r1, [r7, #8] - 800aa2a: 607a str r2, [r7, #4] + 800af94: b580 push {r7, lr} + 800af96: b086 sub sp, #24 + 800af98: af00 add r7, sp, #0 + 800af9a: 60f8 str r0, [r7, #12] + 800af9c: 60b9 str r1, [r7, #8] + 800af9e: 607a str r2, [r7, #4] uint32_t tmp; /* Check the parameters */ assert_param(IS_TIM_CC1_INSTANCE(TIMx)); - 800aa2c: 68fb ldr r3, [r7, #12] - 800aa2e: 4a32 ldr r2, [pc, #200] @ (800aaf8 ) - 800aa30: 4293 cmp r3, r2 - 800aa32: d030 beq.n 800aa96 - 800aa34: 68fb ldr r3, [r7, #12] - 800aa36: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 800aa3a: d02c beq.n 800aa96 - 800aa3c: 68fb ldr r3, [r7, #12] - 800aa3e: 4a2f ldr r2, [pc, #188] @ (800aafc ) - 800aa40: 4293 cmp r3, r2 - 800aa42: d028 beq.n 800aa96 - 800aa44: 68fb ldr r3, [r7, #12] - 800aa46: 4a2e ldr r2, [pc, #184] @ (800ab00 ) - 800aa48: 4293 cmp r3, r2 - 800aa4a: d024 beq.n 800aa96 - 800aa4c: 68fb ldr r3, [r7, #12] - 800aa4e: 4a2d ldr r2, [pc, #180] @ (800ab04 ) - 800aa50: 4293 cmp r3, r2 - 800aa52: d020 beq.n 800aa96 - 800aa54: 68fb ldr r3, [r7, #12] - 800aa56: 4a2c ldr r2, [pc, #176] @ (800ab08 ) - 800aa58: 4293 cmp r3, r2 - 800aa5a: d01c beq.n 800aa96 - 800aa5c: 68fb ldr r3, [r7, #12] - 800aa5e: 4a2b ldr r2, [pc, #172] @ (800ab0c ) - 800aa60: 4293 cmp r3, r2 - 800aa62: d018 beq.n 800aa96 - 800aa64: 68fb ldr r3, [r7, #12] - 800aa66: 4a2a ldr r2, [pc, #168] @ (800ab10 ) - 800aa68: 4293 cmp r3, r2 - 800aa6a: d014 beq.n 800aa96 - 800aa6c: 68fb ldr r3, [r7, #12] - 800aa6e: 4a29 ldr r2, [pc, #164] @ (800ab14 ) - 800aa70: 4293 cmp r3, r2 - 800aa72: d010 beq.n 800aa96 - 800aa74: 68fb ldr r3, [r7, #12] - 800aa76: 4a28 ldr r2, [pc, #160] @ (800ab18 ) - 800aa78: 4293 cmp r3, r2 - 800aa7a: d00c beq.n 800aa96 - 800aa7c: 68fb ldr r3, [r7, #12] - 800aa7e: 4a27 ldr r2, [pc, #156] @ (800ab1c ) - 800aa80: 4293 cmp r3, r2 - 800aa82: d008 beq.n 800aa96 - 800aa84: 68fb ldr r3, [r7, #12] - 800aa86: 4a26 ldr r2, [pc, #152] @ (800ab20 ) - 800aa88: 4293 cmp r3, r2 - 800aa8a: d004 beq.n 800aa96 - 800aa8c: f641 519f movw r1, #7583 @ 0x1d9f - 800aa90: 4824 ldr r0, [pc, #144] @ (800ab24 ) - 800aa92: f7f8 fb6f bl 8003174 + 800afa0: 68fb ldr r3, [r7, #12] + 800afa2: 4a32 ldr r2, [pc, #200] @ (800b06c ) + 800afa4: 4293 cmp r3, r2 + 800afa6: d030 beq.n 800b00a + 800afa8: 68fb ldr r3, [r7, #12] + 800afaa: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 800afae: d02c beq.n 800b00a + 800afb0: 68fb ldr r3, [r7, #12] + 800afb2: 4a2f ldr r2, [pc, #188] @ (800b070 ) + 800afb4: 4293 cmp r3, r2 + 800afb6: d028 beq.n 800b00a + 800afb8: 68fb ldr r3, [r7, #12] + 800afba: 4a2e ldr r2, [pc, #184] @ (800b074 ) + 800afbc: 4293 cmp r3, r2 + 800afbe: d024 beq.n 800b00a + 800afc0: 68fb ldr r3, [r7, #12] + 800afc2: 4a2d ldr r2, [pc, #180] @ (800b078 ) + 800afc4: 4293 cmp r3, r2 + 800afc6: d020 beq.n 800b00a + 800afc8: 68fb ldr r3, [r7, #12] + 800afca: 4a2c ldr r2, [pc, #176] @ (800b07c ) + 800afcc: 4293 cmp r3, r2 + 800afce: d01c beq.n 800b00a + 800afd0: 68fb ldr r3, [r7, #12] + 800afd2: 4a2b ldr r2, [pc, #172] @ (800b080 ) + 800afd4: 4293 cmp r3, r2 + 800afd6: d018 beq.n 800b00a + 800afd8: 68fb ldr r3, [r7, #12] + 800afda: 4a2a ldr r2, [pc, #168] @ (800b084 ) + 800afdc: 4293 cmp r3, r2 + 800afde: d014 beq.n 800b00a + 800afe0: 68fb ldr r3, [r7, #12] + 800afe2: 4a29 ldr r2, [pc, #164] @ (800b088 ) + 800afe4: 4293 cmp r3, r2 + 800afe6: d010 beq.n 800b00a + 800afe8: 68fb ldr r3, [r7, #12] + 800afea: 4a28 ldr r2, [pc, #160] @ (800b08c ) + 800afec: 4293 cmp r3, r2 + 800afee: d00c beq.n 800b00a + 800aff0: 68fb ldr r3, [r7, #12] + 800aff2: 4a27 ldr r2, [pc, #156] @ (800b090 ) + 800aff4: 4293 cmp r3, r2 + 800aff6: d008 beq.n 800b00a + 800aff8: 68fb ldr r3, [r7, #12] + 800affa: 4a26 ldr r2, [pc, #152] @ (800b094 ) + 800affc: 4293 cmp r3, r2 + 800affe: d004 beq.n 800b00a + 800b000: f641 519f movw r1, #7583 @ 0x1d9f + 800b004: 4824 ldr r0, [pc, #144] @ (800b098 ) + 800b006: f7f8 f911 bl 800322c assert_param(IS_TIM_CHANNELS(Channel)); - 800aa96: 68bb ldr r3, [r7, #8] - 800aa98: 2b00 cmp r3, #0 - 800aa9a: d010 beq.n 800aabe - 800aa9c: 68bb ldr r3, [r7, #8] - 800aa9e: 2b04 cmp r3, #4 - 800aaa0: d00d beq.n 800aabe - 800aaa2: 68bb ldr r3, [r7, #8] - 800aaa4: 2b08 cmp r3, #8 - 800aaa6: d00a beq.n 800aabe - 800aaa8: 68bb ldr r3, [r7, #8] - 800aaaa: 2b0c cmp r3, #12 - 800aaac: d007 beq.n 800aabe - 800aaae: 68bb ldr r3, [r7, #8] - 800aab0: 2b3c cmp r3, #60 @ 0x3c - 800aab2: d004 beq.n 800aabe - 800aab4: f44f 51ed mov.w r1, #7584 @ 0x1da0 - 800aab8: 481a ldr r0, [pc, #104] @ (800ab24 ) - 800aaba: f7f8 fb5b bl 8003174 + 800b00a: 68bb ldr r3, [r7, #8] + 800b00c: 2b00 cmp r3, #0 + 800b00e: d010 beq.n 800b032 + 800b010: 68bb ldr r3, [r7, #8] + 800b012: 2b04 cmp r3, #4 + 800b014: d00d beq.n 800b032 + 800b016: 68bb ldr r3, [r7, #8] + 800b018: 2b08 cmp r3, #8 + 800b01a: d00a beq.n 800b032 + 800b01c: 68bb ldr r3, [r7, #8] + 800b01e: 2b0c cmp r3, #12 + 800b020: d007 beq.n 800b032 + 800b022: 68bb ldr r3, [r7, #8] + 800b024: 2b3c cmp r3, #60 @ 0x3c + 800b026: d004 beq.n 800b032 + 800b028: f44f 51ed mov.w r1, #7584 @ 0x1da0 + 800b02c: 481a ldr r0, [pc, #104] @ (800b098 ) + 800b02e: f7f8 f8fd bl 800322c tmp = TIM_CCER_CC1E << (Channel & 0x1FU); /* 0x1FU = 31 bits max shift */ - 800aabe: 68bb ldr r3, [r7, #8] - 800aac0: f003 031f and.w r3, r3, #31 - 800aac4: 2201 movs r2, #1 - 800aac6: fa02 f303 lsl.w r3, r2, r3 - 800aaca: 617b str r3, [r7, #20] + 800b032: 68bb ldr r3, [r7, #8] + 800b034: f003 031f and.w r3, r3, #31 + 800b038: 2201 movs r2, #1 + 800b03a: fa02 f303 lsl.w r3, r2, r3 + 800b03e: 617b str r3, [r7, #20] /* Reset the CCxE Bit */ TIMx->CCER &= ~tmp; - 800aacc: 68fb ldr r3, [r7, #12] - 800aace: 6a1a ldr r2, [r3, #32] - 800aad0: 697b ldr r3, [r7, #20] - 800aad2: 43db mvns r3, r3 - 800aad4: 401a ands r2, r3 - 800aad6: 68fb ldr r3, [r7, #12] - 800aad8: 621a str r2, [r3, #32] + 800b040: 68fb ldr r3, [r7, #12] + 800b042: 6a1a ldr r2, [r3, #32] + 800b044: 697b ldr r3, [r7, #20] + 800b046: 43db mvns r3, r3 + 800b048: 401a ands r2, r3 + 800b04a: 68fb ldr r3, [r7, #12] + 800b04c: 621a str r2, [r3, #32] /* Set or reset the CCxE Bit */ TIMx->CCER |= (uint32_t)(ChannelState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */ - 800aada: 68fb ldr r3, [r7, #12] - 800aadc: 6a1a ldr r2, [r3, #32] - 800aade: 68bb ldr r3, [r7, #8] - 800aae0: f003 031f and.w r3, r3, #31 - 800aae4: 6879 ldr r1, [r7, #4] - 800aae6: fa01 f303 lsl.w r3, r1, r3 - 800aaea: 431a orrs r2, r3 - 800aaec: 68fb ldr r3, [r7, #12] - 800aaee: 621a str r2, [r3, #32] + 800b04e: 68fb ldr r3, [r7, #12] + 800b050: 6a1a ldr r2, [r3, #32] + 800b052: 68bb ldr r3, [r7, #8] + 800b054: f003 031f and.w r3, r3, #31 + 800b058: 6879 ldr r1, [r7, #4] + 800b05a: fa01 f303 lsl.w r3, r1, r3 + 800b05e: 431a orrs r2, r3 + 800b060: 68fb ldr r3, [r7, #12] + 800b062: 621a str r2, [r3, #32] } - 800aaf0: bf00 nop - 800aaf2: 3718 adds r7, #24 - 800aaf4: 46bd mov sp, r7 - 800aaf6: bd80 pop {r7, pc} - 800aaf8: 40010000 .word 0x40010000 - 800aafc: 40000400 .word 0x40000400 - 800ab00: 40000800 .word 0x40000800 - 800ab04: 40000c00 .word 0x40000c00 - 800ab08: 40010400 .word 0x40010400 - 800ab0c: 40014000 .word 0x40014000 - 800ab10: 40014400 .word 0x40014400 - 800ab14: 40014800 .word 0x40014800 - 800ab18: 40001800 .word 0x40001800 - 800ab1c: 40001c00 .word 0x40001c00 - 800ab20: 40002000 .word 0x40002000 - 800ab24: 0800e908 .word 0x0800e908 + 800b064: bf00 nop + 800b066: 3718 adds r7, #24 + 800b068: 46bd mov sp, r7 + 800b06a: bd80 pop {r7, pc} + 800b06c: 40010000 .word 0x40010000 + 800b070: 40000400 .word 0x40000400 + 800b074: 40000800 .word 0x40000800 + 800b078: 40000c00 .word 0x40000c00 + 800b07c: 40010400 .word 0x40010400 + 800b080: 40014000 .word 0x40014000 + 800b084: 40014400 .word 0x40014400 + 800b088: 40014800 .word 0x40014800 + 800b08c: 40001800 .word 0x40001800 + 800b090: 40001c00 .word 0x40001c00 + 800b094: 40002000 .word 0x40002000 + 800b098: 0800ee78 .word 0x0800ee78 -0800ab28 : +0800b09c : * mode. * @retval HAL status */ HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, const TIM_MasterConfigTypeDef *sMasterConfig) { - 800ab28: b580 push {r7, lr} - 800ab2a: b084 sub sp, #16 - 800ab2c: af00 add r7, sp, #0 - 800ab2e: 6078 str r0, [r7, #4] - 800ab30: 6039 str r1, [r7, #0] + 800b09c: b580 push {r7, lr} + 800b09e: b084 sub sp, #16 + 800b0a0: af00 add r7, sp, #0 + 800b0a2: 6078 str r0, [r7, #4] + 800b0a4: 6039 str r1, [r7, #0] uint32_t tmpcr2; uint32_t tmpsmcr; /* Check the parameters */ assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance)); - 800ab32: 687b ldr r3, [r7, #4] - 800ab34: 681b ldr r3, [r3, #0] - 800ab36: 4a61 ldr r2, [pc, #388] @ (800acbc ) - 800ab38: 4293 cmp r3, r2 - 800ab3a: d027 beq.n 800ab8c - 800ab3c: 687b ldr r3, [r7, #4] - 800ab3e: 681b ldr r3, [r3, #0] - 800ab40: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 800ab44: d022 beq.n 800ab8c - 800ab46: 687b ldr r3, [r7, #4] - 800ab48: 681b ldr r3, [r3, #0] - 800ab4a: 4a5d ldr r2, [pc, #372] @ (800acc0 ) - 800ab4c: 4293 cmp r3, r2 - 800ab4e: d01d beq.n 800ab8c - 800ab50: 687b ldr r3, [r7, #4] - 800ab52: 681b ldr r3, [r3, #0] - 800ab54: 4a5b ldr r2, [pc, #364] @ (800acc4 ) - 800ab56: 4293 cmp r3, r2 - 800ab58: d018 beq.n 800ab8c - 800ab5a: 687b ldr r3, [r7, #4] - 800ab5c: 681b ldr r3, [r3, #0] - 800ab5e: 4a5a ldr r2, [pc, #360] @ (800acc8 ) - 800ab60: 4293 cmp r3, r2 - 800ab62: d013 beq.n 800ab8c - 800ab64: 687b ldr r3, [r7, #4] - 800ab66: 681b ldr r3, [r3, #0] - 800ab68: 4a58 ldr r2, [pc, #352] @ (800accc ) - 800ab6a: 4293 cmp r3, r2 - 800ab6c: d00e beq.n 800ab8c - 800ab6e: 687b ldr r3, [r7, #4] - 800ab70: 681b ldr r3, [r3, #0] - 800ab72: 4a57 ldr r2, [pc, #348] @ (800acd0 ) - 800ab74: 4293 cmp r3, r2 - 800ab76: d009 beq.n 800ab8c - 800ab78: 687b ldr r3, [r7, #4] - 800ab7a: 681b ldr r3, [r3, #0] - 800ab7c: 4a55 ldr r2, [pc, #340] @ (800acd4 ) - 800ab7e: 4293 cmp r3, r2 - 800ab80: d004 beq.n 800ab8c - 800ab82: f240 71a9 movw r1, #1961 @ 0x7a9 - 800ab86: 4854 ldr r0, [pc, #336] @ (800acd8 ) - 800ab88: f7f8 faf4 bl 8003174 + 800b0a6: 687b ldr r3, [r7, #4] + 800b0a8: 681b ldr r3, [r3, #0] + 800b0aa: 4a61 ldr r2, [pc, #388] @ (800b230 ) + 800b0ac: 4293 cmp r3, r2 + 800b0ae: d027 beq.n 800b100 + 800b0b0: 687b ldr r3, [r7, #4] + 800b0b2: 681b ldr r3, [r3, #0] + 800b0b4: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 800b0b8: d022 beq.n 800b100 + 800b0ba: 687b ldr r3, [r7, #4] + 800b0bc: 681b ldr r3, [r3, #0] + 800b0be: 4a5d ldr r2, [pc, #372] @ (800b234 ) + 800b0c0: 4293 cmp r3, r2 + 800b0c2: d01d beq.n 800b100 + 800b0c4: 687b ldr r3, [r7, #4] + 800b0c6: 681b ldr r3, [r3, #0] + 800b0c8: 4a5b ldr r2, [pc, #364] @ (800b238 ) + 800b0ca: 4293 cmp r3, r2 + 800b0cc: d018 beq.n 800b100 + 800b0ce: 687b ldr r3, [r7, #4] + 800b0d0: 681b ldr r3, [r3, #0] + 800b0d2: 4a5a ldr r2, [pc, #360] @ (800b23c ) + 800b0d4: 4293 cmp r3, r2 + 800b0d6: d013 beq.n 800b100 + 800b0d8: 687b ldr r3, [r7, #4] + 800b0da: 681b ldr r3, [r3, #0] + 800b0dc: 4a58 ldr r2, [pc, #352] @ (800b240 ) + 800b0de: 4293 cmp r3, r2 + 800b0e0: d00e beq.n 800b100 + 800b0e2: 687b ldr r3, [r7, #4] + 800b0e4: 681b ldr r3, [r3, #0] + 800b0e6: 4a57 ldr r2, [pc, #348] @ (800b244 ) + 800b0e8: 4293 cmp r3, r2 + 800b0ea: d009 beq.n 800b100 + 800b0ec: 687b ldr r3, [r7, #4] + 800b0ee: 681b ldr r3, [r3, #0] + 800b0f0: 4a55 ldr r2, [pc, #340] @ (800b248 ) + 800b0f2: 4293 cmp r3, r2 + 800b0f4: d004 beq.n 800b100 + 800b0f6: f240 71a9 movw r1, #1961 @ 0x7a9 + 800b0fa: 4854 ldr r0, [pc, #336] @ (800b24c ) + 800b0fc: f7f8 f896 bl 800322c assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger)); - 800ab8c: 683b ldr r3, [r7, #0] - 800ab8e: 681b ldr r3, [r3, #0] - 800ab90: 2b00 cmp r3, #0 - 800ab92: d020 beq.n 800abd6 - 800ab94: 683b ldr r3, [r7, #0] - 800ab96: 681b ldr r3, [r3, #0] - 800ab98: 2b10 cmp r3, #16 - 800ab9a: d01c beq.n 800abd6 - 800ab9c: 683b ldr r3, [r7, #0] - 800ab9e: 681b ldr r3, [r3, #0] - 800aba0: 2b20 cmp r3, #32 - 800aba2: d018 beq.n 800abd6 - 800aba4: 683b ldr r3, [r7, #0] - 800aba6: 681b ldr r3, [r3, #0] - 800aba8: 2b30 cmp r3, #48 @ 0x30 - 800abaa: d014 beq.n 800abd6 - 800abac: 683b ldr r3, [r7, #0] - 800abae: 681b ldr r3, [r3, #0] - 800abb0: 2b40 cmp r3, #64 @ 0x40 - 800abb2: d010 beq.n 800abd6 - 800abb4: 683b ldr r3, [r7, #0] - 800abb6: 681b ldr r3, [r3, #0] - 800abb8: 2b50 cmp r3, #80 @ 0x50 - 800abba: d00c beq.n 800abd6 - 800abbc: 683b ldr r3, [r7, #0] - 800abbe: 681b ldr r3, [r3, #0] - 800abc0: 2b60 cmp r3, #96 @ 0x60 - 800abc2: d008 beq.n 800abd6 - 800abc4: 683b ldr r3, [r7, #0] - 800abc6: 681b ldr r3, [r3, #0] - 800abc8: 2b70 cmp r3, #112 @ 0x70 - 800abca: d004 beq.n 800abd6 - 800abcc: f240 71aa movw r1, #1962 @ 0x7aa - 800abd0: 4841 ldr r0, [pc, #260] @ (800acd8 ) - 800abd2: f7f8 facf bl 8003174 + 800b100: 683b ldr r3, [r7, #0] + 800b102: 681b ldr r3, [r3, #0] + 800b104: 2b00 cmp r3, #0 + 800b106: d020 beq.n 800b14a + 800b108: 683b ldr r3, [r7, #0] + 800b10a: 681b ldr r3, [r3, #0] + 800b10c: 2b10 cmp r3, #16 + 800b10e: d01c beq.n 800b14a + 800b110: 683b ldr r3, [r7, #0] + 800b112: 681b ldr r3, [r3, #0] + 800b114: 2b20 cmp r3, #32 + 800b116: d018 beq.n 800b14a + 800b118: 683b ldr r3, [r7, #0] + 800b11a: 681b ldr r3, [r3, #0] + 800b11c: 2b30 cmp r3, #48 @ 0x30 + 800b11e: d014 beq.n 800b14a + 800b120: 683b ldr r3, [r7, #0] + 800b122: 681b ldr r3, [r3, #0] + 800b124: 2b40 cmp r3, #64 @ 0x40 + 800b126: d010 beq.n 800b14a + 800b128: 683b ldr r3, [r7, #0] + 800b12a: 681b ldr r3, [r3, #0] + 800b12c: 2b50 cmp r3, #80 @ 0x50 + 800b12e: d00c beq.n 800b14a + 800b130: 683b ldr r3, [r7, #0] + 800b132: 681b ldr r3, [r3, #0] + 800b134: 2b60 cmp r3, #96 @ 0x60 + 800b136: d008 beq.n 800b14a + 800b138: 683b ldr r3, [r7, #0] + 800b13a: 681b ldr r3, [r3, #0] + 800b13c: 2b70 cmp r3, #112 @ 0x70 + 800b13e: d004 beq.n 800b14a + 800b140: f240 71aa movw r1, #1962 @ 0x7aa + 800b144: 4841 ldr r0, [pc, #260] @ (800b24c ) + 800b146: f7f8 f871 bl 800322c assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode)); - 800abd6: 683b ldr r3, [r7, #0] - 800abd8: 685b ldr r3, [r3, #4] - 800abda: 2b80 cmp r3, #128 @ 0x80 - 800abdc: d008 beq.n 800abf0 - 800abde: 683b ldr r3, [r7, #0] - 800abe0: 685b ldr r3, [r3, #4] - 800abe2: 2b00 cmp r3, #0 - 800abe4: d004 beq.n 800abf0 - 800abe6: f240 71ab movw r1, #1963 @ 0x7ab - 800abea: 483b ldr r0, [pc, #236] @ (800acd8 ) - 800abec: f7f8 fac2 bl 8003174 + 800b14a: 683b ldr r3, [r7, #0] + 800b14c: 685b ldr r3, [r3, #4] + 800b14e: 2b80 cmp r3, #128 @ 0x80 + 800b150: d008 beq.n 800b164 + 800b152: 683b ldr r3, [r7, #0] + 800b154: 685b ldr r3, [r3, #4] + 800b156: 2b00 cmp r3, #0 + 800b158: d004 beq.n 800b164 + 800b15a: f240 71ab movw r1, #1963 @ 0x7ab + 800b15e: 483b ldr r0, [pc, #236] @ (800b24c ) + 800b160: f7f8 f864 bl 800322c /* Check input state */ __HAL_LOCK(htim); - 800abf0: 687b ldr r3, [r7, #4] - 800abf2: f893 303c ldrb.w r3, [r3, #60] @ 0x3c - 800abf6: 2b01 cmp r3, #1 - 800abf8: d101 bne.n 800abfe - 800abfa: 2302 movs r3, #2 - 800abfc: e05a b.n 800acb4 - 800abfe: 687b ldr r3, [r7, #4] - 800ac00: 2201 movs r2, #1 - 800ac02: f883 203c strb.w r2, [r3, #60] @ 0x3c + 800b164: 687b ldr r3, [r7, #4] + 800b166: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 800b16a: 2b01 cmp r3, #1 + 800b16c: d101 bne.n 800b172 + 800b16e: 2302 movs r3, #2 + 800b170: e05a b.n 800b228 + 800b172: 687b ldr r3, [r7, #4] + 800b174: 2201 movs r2, #1 + 800b176: f883 203c strb.w r2, [r3, #60] @ 0x3c /* Change the handler state */ htim->State = HAL_TIM_STATE_BUSY; - 800ac06: 687b ldr r3, [r7, #4] - 800ac08: 2202 movs r2, #2 - 800ac0a: f883 203d strb.w r2, [r3, #61] @ 0x3d + 800b17a: 687b ldr r3, [r7, #4] + 800b17c: 2202 movs r2, #2 + 800b17e: f883 203d strb.w r2, [r3, #61] @ 0x3d /* Get the TIMx CR2 register value */ tmpcr2 = htim->Instance->CR2; - 800ac0e: 687b ldr r3, [r7, #4] - 800ac10: 681b ldr r3, [r3, #0] - 800ac12: 685b ldr r3, [r3, #4] - 800ac14: 60fb str r3, [r7, #12] + 800b182: 687b ldr r3, [r7, #4] + 800b184: 681b ldr r3, [r3, #0] + 800b186: 685b ldr r3, [r3, #4] + 800b188: 60fb str r3, [r7, #12] /* Get the TIMx SMCR register value */ tmpsmcr = htim->Instance->SMCR; - 800ac16: 687b ldr r3, [r7, #4] - 800ac18: 681b ldr r3, [r3, #0] - 800ac1a: 689b ldr r3, [r3, #8] - 800ac1c: 60bb str r3, [r7, #8] + 800b18a: 687b ldr r3, [r7, #4] + 800b18c: 681b ldr r3, [r3, #0] + 800b18e: 689b ldr r3, [r3, #8] + 800b190: 60bb str r3, [r7, #8] /* Reset the MMS Bits */ tmpcr2 &= ~TIM_CR2_MMS; - 800ac1e: 68fb ldr r3, [r7, #12] - 800ac20: f023 0370 bic.w r3, r3, #112 @ 0x70 - 800ac24: 60fb str r3, [r7, #12] + 800b192: 68fb ldr r3, [r7, #12] + 800b194: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800b198: 60fb str r3, [r7, #12] /* Select the TRGO source */ tmpcr2 |= sMasterConfig->MasterOutputTrigger; - 800ac26: 683b ldr r3, [r7, #0] - 800ac28: 681b ldr r3, [r3, #0] - 800ac2a: 68fa ldr r2, [r7, #12] - 800ac2c: 4313 orrs r3, r2 - 800ac2e: 60fb str r3, [r7, #12] + 800b19a: 683b ldr r3, [r7, #0] + 800b19c: 681b ldr r3, [r3, #0] + 800b19e: 68fa ldr r2, [r7, #12] + 800b1a0: 4313 orrs r3, r2 + 800b1a2: 60fb str r3, [r7, #12] /* Update TIMx CR2 */ htim->Instance->CR2 = tmpcr2; - 800ac30: 687b ldr r3, [r7, #4] - 800ac32: 681b ldr r3, [r3, #0] - 800ac34: 68fa ldr r2, [r7, #12] - 800ac36: 605a str r2, [r3, #4] + 800b1a4: 687b ldr r3, [r7, #4] + 800b1a6: 681b ldr r3, [r3, #0] + 800b1a8: 68fa ldr r2, [r7, #12] + 800b1aa: 605a str r2, [r3, #4] if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) - 800ac38: 687b ldr r3, [r7, #4] - 800ac3a: 681b ldr r3, [r3, #0] - 800ac3c: 4a1f ldr r2, [pc, #124] @ (800acbc ) - 800ac3e: 4293 cmp r3, r2 - 800ac40: d022 beq.n 800ac88 - 800ac42: 687b ldr r3, [r7, #4] - 800ac44: 681b ldr r3, [r3, #0] - 800ac46: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 800ac4a: d01d beq.n 800ac88 - 800ac4c: 687b ldr r3, [r7, #4] - 800ac4e: 681b ldr r3, [r3, #0] - 800ac50: 4a1b ldr r2, [pc, #108] @ (800acc0 ) - 800ac52: 4293 cmp r3, r2 - 800ac54: d018 beq.n 800ac88 - 800ac56: 687b ldr r3, [r7, #4] - 800ac58: 681b ldr r3, [r3, #0] - 800ac5a: 4a1a ldr r2, [pc, #104] @ (800acc4 ) - 800ac5c: 4293 cmp r3, r2 - 800ac5e: d013 beq.n 800ac88 - 800ac60: 687b ldr r3, [r7, #4] - 800ac62: 681b ldr r3, [r3, #0] - 800ac64: 4a18 ldr r2, [pc, #96] @ (800acc8 ) - 800ac66: 4293 cmp r3, r2 - 800ac68: d00e beq.n 800ac88 - 800ac6a: 687b ldr r3, [r7, #4] - 800ac6c: 681b ldr r3, [r3, #0] - 800ac6e: 4a19 ldr r2, [pc, #100] @ (800acd4 ) - 800ac70: 4293 cmp r3, r2 - 800ac72: d009 beq.n 800ac88 - 800ac74: 687b ldr r3, [r7, #4] - 800ac76: 681b ldr r3, [r3, #0] - 800ac78: 4a18 ldr r2, [pc, #96] @ (800acdc ) - 800ac7a: 4293 cmp r3, r2 - 800ac7c: d004 beq.n 800ac88 - 800ac7e: 687b ldr r3, [r7, #4] - 800ac80: 681b ldr r3, [r3, #0] - 800ac82: 4a17 ldr r2, [pc, #92] @ (800ace0 ) - 800ac84: 4293 cmp r3, r2 - 800ac86: d10c bne.n 800aca2 + 800b1ac: 687b ldr r3, [r7, #4] + 800b1ae: 681b ldr r3, [r3, #0] + 800b1b0: 4a1f ldr r2, [pc, #124] @ (800b230 ) + 800b1b2: 4293 cmp r3, r2 + 800b1b4: d022 beq.n 800b1fc + 800b1b6: 687b ldr r3, [r7, #4] + 800b1b8: 681b ldr r3, [r3, #0] + 800b1ba: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 800b1be: d01d beq.n 800b1fc + 800b1c0: 687b ldr r3, [r7, #4] + 800b1c2: 681b ldr r3, [r3, #0] + 800b1c4: 4a1b ldr r2, [pc, #108] @ (800b234 ) + 800b1c6: 4293 cmp r3, r2 + 800b1c8: d018 beq.n 800b1fc + 800b1ca: 687b ldr r3, [r7, #4] + 800b1cc: 681b ldr r3, [r3, #0] + 800b1ce: 4a1a ldr r2, [pc, #104] @ (800b238 ) + 800b1d0: 4293 cmp r3, r2 + 800b1d2: d013 beq.n 800b1fc + 800b1d4: 687b ldr r3, [r7, #4] + 800b1d6: 681b ldr r3, [r3, #0] + 800b1d8: 4a18 ldr r2, [pc, #96] @ (800b23c ) + 800b1da: 4293 cmp r3, r2 + 800b1dc: d00e beq.n 800b1fc + 800b1de: 687b ldr r3, [r7, #4] + 800b1e0: 681b ldr r3, [r3, #0] + 800b1e2: 4a19 ldr r2, [pc, #100] @ (800b248 ) + 800b1e4: 4293 cmp r3, r2 + 800b1e6: d009 beq.n 800b1fc + 800b1e8: 687b ldr r3, [r7, #4] + 800b1ea: 681b ldr r3, [r3, #0] + 800b1ec: 4a18 ldr r2, [pc, #96] @ (800b250 ) + 800b1ee: 4293 cmp r3, r2 + 800b1f0: d004 beq.n 800b1fc + 800b1f2: 687b ldr r3, [r7, #4] + 800b1f4: 681b ldr r3, [r3, #0] + 800b1f6: 4a17 ldr r2, [pc, #92] @ (800b254 ) + 800b1f8: 4293 cmp r3, r2 + 800b1fa: d10c bne.n 800b216 { /* Reset the MSM Bit */ tmpsmcr &= ~TIM_SMCR_MSM; - 800ac88: 68bb ldr r3, [r7, #8] - 800ac8a: f023 0380 bic.w r3, r3, #128 @ 0x80 - 800ac8e: 60bb str r3, [r7, #8] + 800b1fc: 68bb ldr r3, [r7, #8] + 800b1fe: f023 0380 bic.w r3, r3, #128 @ 0x80 + 800b202: 60bb str r3, [r7, #8] /* Set master mode */ tmpsmcr |= sMasterConfig->MasterSlaveMode; - 800ac90: 683b ldr r3, [r7, #0] - 800ac92: 685b ldr r3, [r3, #4] - 800ac94: 68ba ldr r2, [r7, #8] - 800ac96: 4313 orrs r3, r2 - 800ac98: 60bb str r3, [r7, #8] + 800b204: 683b ldr r3, [r7, #0] + 800b206: 685b ldr r3, [r3, #4] + 800b208: 68ba ldr r2, [r7, #8] + 800b20a: 4313 orrs r3, r2 + 800b20c: 60bb str r3, [r7, #8] /* Update TIMx SMCR */ htim->Instance->SMCR = tmpsmcr; - 800ac9a: 687b ldr r3, [r7, #4] - 800ac9c: 681b ldr r3, [r3, #0] - 800ac9e: 68ba ldr r2, [r7, #8] - 800aca0: 609a str r2, [r3, #8] + 800b20e: 687b ldr r3, [r7, #4] + 800b210: 681b ldr r3, [r3, #0] + 800b212: 68ba ldr r2, [r7, #8] + 800b214: 609a str r2, [r3, #8] } /* Change the htim state */ htim->State = HAL_TIM_STATE_READY; - 800aca2: 687b ldr r3, [r7, #4] - 800aca4: 2201 movs r2, #1 - 800aca6: f883 203d strb.w r2, [r3, #61] @ 0x3d + 800b216: 687b ldr r3, [r7, #4] + 800b218: 2201 movs r2, #1 + 800b21a: f883 203d strb.w r2, [r3, #61] @ 0x3d __HAL_UNLOCK(htim); - 800acaa: 687b ldr r3, [r7, #4] - 800acac: 2200 movs r2, #0 - 800acae: f883 203c strb.w r2, [r3, #60] @ 0x3c + 800b21e: 687b ldr r3, [r7, #4] + 800b220: 2200 movs r2, #0 + 800b222: f883 203c strb.w r2, [r3, #60] @ 0x3c return HAL_OK; - 800acb2: 2300 movs r3, #0 + 800b226: 2300 movs r3, #0 } - 800acb4: 4618 mov r0, r3 - 800acb6: 3710 adds r7, #16 - 800acb8: 46bd mov sp, r7 - 800acba: bd80 pop {r7, pc} - 800acbc: 40010000 .word 0x40010000 - 800acc0: 40000400 .word 0x40000400 - 800acc4: 40000800 .word 0x40000800 - 800acc8: 40000c00 .word 0x40000c00 - 800accc: 40001000 .word 0x40001000 - 800acd0: 40001400 .word 0x40001400 - 800acd4: 40010400 .word 0x40010400 - 800acd8: 0800e940 .word 0x0800e940 - 800acdc: 40014000 .word 0x40014000 - 800ace0: 40001800 .word 0x40001800 + 800b228: 4618 mov r0, r3 + 800b22a: 3710 adds r7, #16 + 800b22c: 46bd mov sp, r7 + 800b22e: bd80 pop {r7, pc} + 800b230: 40010000 .word 0x40010000 + 800b234: 40000400 .word 0x40000400 + 800b238: 40000800 .word 0x40000800 + 800b23c: 40000c00 .word 0x40000c00 + 800b240: 40001000 .word 0x40001000 + 800b244: 40001400 .word 0x40001400 + 800b248: 40010400 .word 0x40010400 + 800b24c: 0800eeb0 .word 0x0800eeb0 + 800b250: 40014000 .word 0x40014000 + 800b254: 40001800 .word 0x40001800 -0800ace4 : +0800b258 : * interrupt can be enabled by calling the @ref __HAL_TIM_ENABLE_IT macro. * @retval HAL status */ HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim, const TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig) { - 800ace4: b580 push {r7, lr} - 800ace6: b084 sub sp, #16 - 800ace8: af00 add r7, sp, #0 - 800acea: 6078 str r0, [r7, #4] - 800acec: 6039 str r1, [r7, #0] + 800b258: b580 push {r7, lr} + 800b25a: b084 sub sp, #16 + 800b25c: af00 add r7, sp, #0 + 800b25e: 6078 str r0, [r7, #4] + 800b260: 6039 str r1, [r7, #0] /* Keep this variable initialized to 0 as it is used to configure BDTR register */ uint32_t tmpbdtr = 0U; - 800acee: 2300 movs r3, #0 - 800acf0: 60fb str r3, [r7, #12] + 800b262: 2300 movs r3, #0 + 800b264: 60fb str r3, [r7, #12] /* Check the parameters */ assert_param(IS_TIM_BREAK_INSTANCE(htim->Instance)); - 800acf2: 687b ldr r3, [r7, #4] - 800acf4: 681b ldr r3, [r3, #0] - 800acf6: 4a5e ldr r2, [pc, #376] @ (800ae70 ) - 800acf8: 4293 cmp r3, r2 - 800acfa: d009 beq.n 800ad10 - 800acfc: 687b ldr r3, [r7, #4] - 800acfe: 681b ldr r3, [r3, #0] - 800ad00: 4a5c ldr r2, [pc, #368] @ (800ae74 ) - 800ad02: 4293 cmp r3, r2 - 800ad04: d004 beq.n 800ad10 - 800ad06: f240 71e6 movw r1, #2022 @ 0x7e6 - 800ad0a: 485b ldr r0, [pc, #364] @ (800ae78 ) - 800ad0c: f7f8 fa32 bl 8003174 + 800b266: 687b ldr r3, [r7, #4] + 800b268: 681b ldr r3, [r3, #0] + 800b26a: 4a5e ldr r2, [pc, #376] @ (800b3e4 ) + 800b26c: 4293 cmp r3, r2 + 800b26e: d009 beq.n 800b284 + 800b270: 687b ldr r3, [r7, #4] + 800b272: 681b ldr r3, [r3, #0] + 800b274: 4a5c ldr r2, [pc, #368] @ (800b3e8 ) + 800b276: 4293 cmp r3, r2 + 800b278: d004 beq.n 800b284 + 800b27a: f240 71e6 movw r1, #2022 @ 0x7e6 + 800b27e: 485b ldr r0, [pc, #364] @ (800b3ec ) + 800b280: f7f7 ffd4 bl 800322c assert_param(IS_TIM_OSSR_STATE(sBreakDeadTimeConfig->OffStateRunMode)); - 800ad10: 683b ldr r3, [r7, #0] - 800ad12: 681b ldr r3, [r3, #0] - 800ad14: f5b3 6f00 cmp.w r3, #2048 @ 0x800 - 800ad18: d008 beq.n 800ad2c - 800ad1a: 683b ldr r3, [r7, #0] - 800ad1c: 681b ldr r3, [r3, #0] - 800ad1e: 2b00 cmp r3, #0 - 800ad20: d004 beq.n 800ad2c - 800ad22: f240 71e7 movw r1, #2023 @ 0x7e7 - 800ad26: 4854 ldr r0, [pc, #336] @ (800ae78 ) - 800ad28: f7f8 fa24 bl 8003174 + 800b284: 683b ldr r3, [r7, #0] + 800b286: 681b ldr r3, [r3, #0] + 800b288: f5b3 6f00 cmp.w r3, #2048 @ 0x800 + 800b28c: d008 beq.n 800b2a0 + 800b28e: 683b ldr r3, [r7, #0] + 800b290: 681b ldr r3, [r3, #0] + 800b292: 2b00 cmp r3, #0 + 800b294: d004 beq.n 800b2a0 + 800b296: f240 71e7 movw r1, #2023 @ 0x7e7 + 800b29a: 4854 ldr r0, [pc, #336] @ (800b3ec ) + 800b29c: f7f7 ffc6 bl 800322c assert_param(IS_TIM_OSSI_STATE(sBreakDeadTimeConfig->OffStateIDLEMode)); - 800ad2c: 683b ldr r3, [r7, #0] - 800ad2e: 685b ldr r3, [r3, #4] - 800ad30: f5b3 6f80 cmp.w r3, #1024 @ 0x400 - 800ad34: d008 beq.n 800ad48 - 800ad36: 683b ldr r3, [r7, #0] - 800ad38: 685b ldr r3, [r3, #4] - 800ad3a: 2b00 cmp r3, #0 - 800ad3c: d004 beq.n 800ad48 - 800ad3e: f44f 61fd mov.w r1, #2024 @ 0x7e8 - 800ad42: 484d ldr r0, [pc, #308] @ (800ae78 ) - 800ad44: f7f8 fa16 bl 8003174 + 800b2a0: 683b ldr r3, [r7, #0] + 800b2a2: 685b ldr r3, [r3, #4] + 800b2a4: f5b3 6f80 cmp.w r3, #1024 @ 0x400 + 800b2a8: d008 beq.n 800b2bc + 800b2aa: 683b ldr r3, [r7, #0] + 800b2ac: 685b ldr r3, [r3, #4] + 800b2ae: 2b00 cmp r3, #0 + 800b2b0: d004 beq.n 800b2bc + 800b2b2: f44f 61fd mov.w r1, #2024 @ 0x7e8 + 800b2b6: 484d ldr r0, [pc, #308] @ (800b3ec ) + 800b2b8: f7f7 ffb8 bl 800322c assert_param(IS_TIM_LOCK_LEVEL(sBreakDeadTimeConfig->LockLevel)); - 800ad48: 683b ldr r3, [r7, #0] - 800ad4a: 689b ldr r3, [r3, #8] - 800ad4c: 2b00 cmp r3, #0 - 800ad4e: d013 beq.n 800ad78 - 800ad50: 683b ldr r3, [r7, #0] - 800ad52: 689b ldr r3, [r3, #8] - 800ad54: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 800ad58: d00e beq.n 800ad78 - 800ad5a: 683b ldr r3, [r7, #0] - 800ad5c: 689b ldr r3, [r3, #8] - 800ad5e: f5b3 7f00 cmp.w r3, #512 @ 0x200 - 800ad62: d009 beq.n 800ad78 - 800ad64: 683b ldr r3, [r7, #0] - 800ad66: 689b ldr r3, [r3, #8] - 800ad68: f5b3 7f40 cmp.w r3, #768 @ 0x300 - 800ad6c: d004 beq.n 800ad78 - 800ad6e: f240 71e9 movw r1, #2025 @ 0x7e9 - 800ad72: 4841 ldr r0, [pc, #260] @ (800ae78 ) - 800ad74: f7f8 f9fe bl 8003174 + 800b2bc: 683b ldr r3, [r7, #0] + 800b2be: 689b ldr r3, [r3, #8] + 800b2c0: 2b00 cmp r3, #0 + 800b2c2: d013 beq.n 800b2ec + 800b2c4: 683b ldr r3, [r7, #0] + 800b2c6: 689b ldr r3, [r3, #8] + 800b2c8: f5b3 7f80 cmp.w r3, #256 @ 0x100 + 800b2cc: d00e beq.n 800b2ec + 800b2ce: 683b ldr r3, [r7, #0] + 800b2d0: 689b ldr r3, [r3, #8] + 800b2d2: f5b3 7f00 cmp.w r3, #512 @ 0x200 + 800b2d6: d009 beq.n 800b2ec + 800b2d8: 683b ldr r3, [r7, #0] + 800b2da: 689b ldr r3, [r3, #8] + 800b2dc: f5b3 7f40 cmp.w r3, #768 @ 0x300 + 800b2e0: d004 beq.n 800b2ec + 800b2e2: f240 71e9 movw r1, #2025 @ 0x7e9 + 800b2e6: 4841 ldr r0, [pc, #260] @ (800b3ec ) + 800b2e8: f7f7 ffa0 bl 800322c assert_param(IS_TIM_DEADTIME(sBreakDeadTimeConfig->DeadTime)); - 800ad78: 683b ldr r3, [r7, #0] - 800ad7a: 68db ldr r3, [r3, #12] - 800ad7c: 2bff cmp r3, #255 @ 0xff - 800ad7e: d904 bls.n 800ad8a - 800ad80: f240 71ea movw r1, #2026 @ 0x7ea - 800ad84: 483c ldr r0, [pc, #240] @ (800ae78 ) - 800ad86: f7f8 f9f5 bl 8003174 + 800b2ec: 683b ldr r3, [r7, #0] + 800b2ee: 68db ldr r3, [r3, #12] + 800b2f0: 2bff cmp r3, #255 @ 0xff + 800b2f2: d904 bls.n 800b2fe + 800b2f4: f240 71ea movw r1, #2026 @ 0x7ea + 800b2f8: 483c ldr r0, [pc, #240] @ (800b3ec ) + 800b2fa: f7f7 ff97 bl 800322c assert_param(IS_TIM_BREAK_STATE(sBreakDeadTimeConfig->BreakState)); - 800ad8a: 683b ldr r3, [r7, #0] - 800ad8c: 691b ldr r3, [r3, #16] - 800ad8e: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 800ad92: d008 beq.n 800ada6 - 800ad94: 683b ldr r3, [r7, #0] - 800ad96: 691b ldr r3, [r3, #16] - 800ad98: 2b00 cmp r3, #0 - 800ad9a: d004 beq.n 800ada6 - 800ad9c: f240 71eb movw r1, #2027 @ 0x7eb - 800ada0: 4835 ldr r0, [pc, #212] @ (800ae78 ) - 800ada2: f7f8 f9e7 bl 8003174 + 800b2fe: 683b ldr r3, [r7, #0] + 800b300: 691b ldr r3, [r3, #16] + 800b302: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 800b306: d008 beq.n 800b31a + 800b308: 683b ldr r3, [r7, #0] + 800b30a: 691b ldr r3, [r3, #16] + 800b30c: 2b00 cmp r3, #0 + 800b30e: d004 beq.n 800b31a + 800b310: f240 71eb movw r1, #2027 @ 0x7eb + 800b314: 4835 ldr r0, [pc, #212] @ (800b3ec ) + 800b316: f7f7 ff89 bl 800322c assert_param(IS_TIM_BREAK_POLARITY(sBreakDeadTimeConfig->BreakPolarity)); - 800ada6: 683b ldr r3, [r7, #0] - 800ada8: 695b ldr r3, [r3, #20] - 800adaa: 2b00 cmp r3, #0 - 800adac: d009 beq.n 800adc2 - 800adae: 683b ldr r3, [r7, #0] - 800adb0: 695b ldr r3, [r3, #20] - 800adb2: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 - 800adb6: d004 beq.n 800adc2 - 800adb8: f240 71ec movw r1, #2028 @ 0x7ec - 800adbc: 482e ldr r0, [pc, #184] @ (800ae78 ) - 800adbe: f7f8 f9d9 bl 8003174 + 800b31a: 683b ldr r3, [r7, #0] + 800b31c: 695b ldr r3, [r3, #20] + 800b31e: 2b00 cmp r3, #0 + 800b320: d009 beq.n 800b336 + 800b322: 683b ldr r3, [r7, #0] + 800b324: 695b ldr r3, [r3, #20] + 800b326: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 800b32a: d004 beq.n 800b336 + 800b32c: f240 71ec movw r1, #2028 @ 0x7ec + 800b330: 482e ldr r0, [pc, #184] @ (800b3ec ) + 800b332: f7f7 ff7b bl 800322c assert_param(IS_TIM_AUTOMATIC_OUTPUT_STATE(sBreakDeadTimeConfig->AutomaticOutput)); - 800adc2: 683b ldr r3, [r7, #0] - 800adc4: 69db ldr r3, [r3, #28] - 800adc6: f5b3 4f80 cmp.w r3, #16384 @ 0x4000 - 800adca: d008 beq.n 800adde - 800adcc: 683b ldr r3, [r7, #0] - 800adce: 69db ldr r3, [r3, #28] - 800add0: 2b00 cmp r3, #0 - 800add2: d004 beq.n 800adde - 800add4: f240 71ed movw r1, #2029 @ 0x7ed - 800add8: 4827 ldr r0, [pc, #156] @ (800ae78 ) - 800adda: f7f8 f9cb bl 8003174 + 800b336: 683b ldr r3, [r7, #0] + 800b338: 69db ldr r3, [r3, #28] + 800b33a: f5b3 4f80 cmp.w r3, #16384 @ 0x4000 + 800b33e: d008 beq.n 800b352 + 800b340: 683b ldr r3, [r7, #0] + 800b342: 69db ldr r3, [r3, #28] + 800b344: 2b00 cmp r3, #0 + 800b346: d004 beq.n 800b352 + 800b348: f240 71ed movw r1, #2029 @ 0x7ed + 800b34c: 4827 ldr r0, [pc, #156] @ (800b3ec ) + 800b34e: f7f7 ff6d bl 800322c /* Check input state */ __HAL_LOCK(htim); - 800adde: 687b ldr r3, [r7, #4] - 800ade0: f893 303c ldrb.w r3, [r3, #60] @ 0x3c - 800ade4: 2b01 cmp r3, #1 - 800ade6: d101 bne.n 800adec - 800ade8: 2302 movs r3, #2 - 800adea: e03d b.n 800ae68 - 800adec: 687b ldr r3, [r7, #4] - 800adee: 2201 movs r2, #1 - 800adf0: f883 203c strb.w r2, [r3, #60] @ 0x3c + 800b352: 687b ldr r3, [r7, #4] + 800b354: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 800b358: 2b01 cmp r3, #1 + 800b35a: d101 bne.n 800b360 + 800b35c: 2302 movs r3, #2 + 800b35e: e03d b.n 800b3dc + 800b360: 687b ldr r3, [r7, #4] + 800b362: 2201 movs r2, #1 + 800b364: f883 203c strb.w r2, [r3, #60] @ 0x3c /* Set the Lock level, the Break enable Bit and the Polarity, the OSSR State, the OSSI State, the dead time value and the Automatic Output Enable Bit */ /* Set the BDTR bits */ MODIFY_REG(tmpbdtr, TIM_BDTR_DTG, sBreakDeadTimeConfig->DeadTime); - 800adf4: 68fb ldr r3, [r7, #12] - 800adf6: f023 02ff bic.w r2, r3, #255 @ 0xff - 800adfa: 683b ldr r3, [r7, #0] - 800adfc: 68db ldr r3, [r3, #12] - 800adfe: 4313 orrs r3, r2 - 800ae00: 60fb str r3, [r7, #12] + 800b368: 68fb ldr r3, [r7, #12] + 800b36a: f023 02ff bic.w r2, r3, #255 @ 0xff + 800b36e: 683b ldr r3, [r7, #0] + 800b370: 68db ldr r3, [r3, #12] + 800b372: 4313 orrs r3, r2 + 800b374: 60fb str r3, [r7, #12] MODIFY_REG(tmpbdtr, TIM_BDTR_LOCK, sBreakDeadTimeConfig->LockLevel); - 800ae02: 68fb ldr r3, [r7, #12] - 800ae04: f423 7240 bic.w r2, r3, #768 @ 0x300 - 800ae08: 683b ldr r3, [r7, #0] - 800ae0a: 689b ldr r3, [r3, #8] - 800ae0c: 4313 orrs r3, r2 - 800ae0e: 60fb str r3, [r7, #12] + 800b376: 68fb ldr r3, [r7, #12] + 800b378: f423 7240 bic.w r2, r3, #768 @ 0x300 + 800b37c: 683b ldr r3, [r7, #0] + 800b37e: 689b ldr r3, [r3, #8] + 800b380: 4313 orrs r3, r2 + 800b382: 60fb str r3, [r7, #12] MODIFY_REG(tmpbdtr, TIM_BDTR_OSSI, sBreakDeadTimeConfig->OffStateIDLEMode); - 800ae10: 68fb ldr r3, [r7, #12] - 800ae12: f423 6280 bic.w r2, r3, #1024 @ 0x400 - 800ae16: 683b ldr r3, [r7, #0] - 800ae18: 685b ldr r3, [r3, #4] - 800ae1a: 4313 orrs r3, r2 - 800ae1c: 60fb str r3, [r7, #12] + 800b384: 68fb ldr r3, [r7, #12] + 800b386: f423 6280 bic.w r2, r3, #1024 @ 0x400 + 800b38a: 683b ldr r3, [r7, #0] + 800b38c: 685b ldr r3, [r3, #4] + 800b38e: 4313 orrs r3, r2 + 800b390: 60fb str r3, [r7, #12] MODIFY_REG(tmpbdtr, TIM_BDTR_OSSR, sBreakDeadTimeConfig->OffStateRunMode); - 800ae1e: 68fb ldr r3, [r7, #12] - 800ae20: f423 6200 bic.w r2, r3, #2048 @ 0x800 - 800ae24: 683b ldr r3, [r7, #0] - 800ae26: 681b ldr r3, [r3, #0] - 800ae28: 4313 orrs r3, r2 - 800ae2a: 60fb str r3, [r7, #12] + 800b392: 68fb ldr r3, [r7, #12] + 800b394: f423 6200 bic.w r2, r3, #2048 @ 0x800 + 800b398: 683b ldr r3, [r7, #0] + 800b39a: 681b ldr r3, [r3, #0] + 800b39c: 4313 orrs r3, r2 + 800b39e: 60fb str r3, [r7, #12] MODIFY_REG(tmpbdtr, TIM_BDTR_BKE, sBreakDeadTimeConfig->BreakState); - 800ae2c: 68fb ldr r3, [r7, #12] - 800ae2e: f423 5280 bic.w r2, r3, #4096 @ 0x1000 - 800ae32: 683b ldr r3, [r7, #0] - 800ae34: 691b ldr r3, [r3, #16] - 800ae36: 4313 orrs r3, r2 - 800ae38: 60fb str r3, [r7, #12] + 800b3a0: 68fb ldr r3, [r7, #12] + 800b3a2: f423 5280 bic.w r2, r3, #4096 @ 0x1000 + 800b3a6: 683b ldr r3, [r7, #0] + 800b3a8: 691b ldr r3, [r3, #16] + 800b3aa: 4313 orrs r3, r2 + 800b3ac: 60fb str r3, [r7, #12] MODIFY_REG(tmpbdtr, TIM_BDTR_BKP, sBreakDeadTimeConfig->BreakPolarity); - 800ae3a: 68fb ldr r3, [r7, #12] - 800ae3c: f423 5200 bic.w r2, r3, #8192 @ 0x2000 - 800ae40: 683b ldr r3, [r7, #0] - 800ae42: 695b ldr r3, [r3, #20] - 800ae44: 4313 orrs r3, r2 - 800ae46: 60fb str r3, [r7, #12] + 800b3ae: 68fb ldr r3, [r7, #12] + 800b3b0: f423 5200 bic.w r2, r3, #8192 @ 0x2000 + 800b3b4: 683b ldr r3, [r7, #0] + 800b3b6: 695b ldr r3, [r3, #20] + 800b3b8: 4313 orrs r3, r2 + 800b3ba: 60fb str r3, [r7, #12] MODIFY_REG(tmpbdtr, TIM_BDTR_AOE, sBreakDeadTimeConfig->AutomaticOutput); - 800ae48: 68fb ldr r3, [r7, #12] - 800ae4a: f423 4280 bic.w r2, r3, #16384 @ 0x4000 - 800ae4e: 683b ldr r3, [r7, #0] - 800ae50: 69db ldr r3, [r3, #28] - 800ae52: 4313 orrs r3, r2 - 800ae54: 60fb str r3, [r7, #12] + 800b3bc: 68fb ldr r3, [r7, #12] + 800b3be: f423 4280 bic.w r2, r3, #16384 @ 0x4000 + 800b3c2: 683b ldr r3, [r7, #0] + 800b3c4: 69db ldr r3, [r3, #28] + 800b3c6: 4313 orrs r3, r2 + 800b3c8: 60fb str r3, [r7, #12] /* Set TIMx_BDTR */ htim->Instance->BDTR = tmpbdtr; - 800ae56: 687b ldr r3, [r7, #4] - 800ae58: 681b ldr r3, [r3, #0] - 800ae5a: 68fa ldr r2, [r7, #12] - 800ae5c: 645a str r2, [r3, #68] @ 0x44 + 800b3ca: 687b ldr r3, [r7, #4] + 800b3cc: 681b ldr r3, [r3, #0] + 800b3ce: 68fa ldr r2, [r7, #12] + 800b3d0: 645a str r2, [r3, #68] @ 0x44 __HAL_UNLOCK(htim); - 800ae5e: 687b ldr r3, [r7, #4] - 800ae60: 2200 movs r2, #0 - 800ae62: f883 203c strb.w r2, [r3, #60] @ 0x3c + 800b3d2: 687b ldr r3, [r7, #4] + 800b3d4: 2200 movs r2, #0 + 800b3d6: f883 203c strb.w r2, [r3, #60] @ 0x3c return HAL_OK; - 800ae66: 2300 movs r3, #0 + 800b3da: 2300 movs r3, #0 } - 800ae68: 4618 mov r0, r3 - 800ae6a: 3710 adds r7, #16 - 800ae6c: 46bd mov sp, r7 - 800ae6e: bd80 pop {r7, pc} - 800ae70: 40010000 .word 0x40010000 - 800ae74: 40010400 .word 0x40010400 - 800ae78: 0800e940 .word 0x0800e940 + 800b3dc: 4618 mov r0, r3 + 800b3de: 3710 adds r7, #16 + 800b3e0: 46bd mov sp, r7 + 800b3e2: bd80 pop {r7, pc} + 800b3e4: 40010000 .word 0x40010000 + 800b3e8: 40010400 .word 0x40010400 + 800b3ec: 0800eeb0 .word 0x0800eeb0 -0800ae7c : +0800b3f0 : * @brief Commutation callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim) { - 800ae7c: b480 push {r7} - 800ae7e: b083 sub sp, #12 - 800ae80: af00 add r7, sp, #0 - 800ae82: 6078 str r0, [r7, #4] + 800b3f0: b480 push {r7} + 800b3f2: b083 sub sp, #12 + 800b3f4: af00 add r7, sp, #0 + 800b3f6: 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 */ } - 800ae84: bf00 nop - 800ae86: 370c adds r7, #12 - 800ae88: 46bd mov sp, r7 - 800ae8a: f85d 7b04 ldr.w r7, [sp], #4 - 800ae8e: 4770 bx lr + 800b3f8: bf00 nop + 800b3fa: 370c adds r7, #12 + 800b3fc: 46bd mov sp, r7 + 800b3fe: f85d 7b04 ldr.w r7, [sp], #4 + 800b402: 4770 bx lr -0800ae90 : +0800b404 : * @brief Break detection callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim) { - 800ae90: b480 push {r7} - 800ae92: b083 sub sp, #12 - 800ae94: af00 add r7, sp, #0 - 800ae96: 6078 str r0, [r7, #4] + 800b404: b480 push {r7} + 800b406: b083 sub sp, #12 + 800b408: af00 add r7, sp, #0 + 800b40a: 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 */ } - 800ae98: bf00 nop - 800ae9a: 370c adds r7, #12 - 800ae9c: 46bd mov sp, r7 - 800ae9e: f85d 7b04 ldr.w r7, [sp], #4 - 800aea2: 4770 bx lr + 800b40c: bf00 nop + 800b40e: 370c adds r7, #12 + 800b410: 46bd mov sp, r7 + 800b412: f85d 7b04 ldr.w r7, [sp], #4 + 800b416: 4770 bx lr -0800aea4 : +0800b418 : * @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) { - 800aea4: b580 push {r7, lr} - 800aea6: b082 sub sp, #8 - 800aea8: af00 add r7, sp, #0 - 800aeaa: 6078 str r0, [r7, #4] + 800b418: b580 push {r7, lr} + 800b41a: b082 sub sp, #8 + 800b41c: af00 add r7, sp, #0 + 800b41e: 6078 str r0, [r7, #4] /* Check the UART handle allocation */ if (huart == NULL) - 800aeac: 687b ldr r3, [r7, #4] - 800aeae: 2b00 cmp r3, #0 - 800aeb0: d101 bne.n 800aeb6 + 800b420: 687b ldr r3, [r7, #4] + 800b422: 2b00 cmp r3, #0 + 800b424: d101 bne.n 800b42a { return HAL_ERROR; - 800aeb2: 2301 movs r3, #1 - 800aeb4: e0cb b.n 800b04e + 800b426: 2301 movs r3, #1 + 800b428: e0cb b.n 800b5c2 } /* Check the parameters */ if (huart->Init.HwFlowCtl != UART_HWCONTROL_NONE) - 800aeb6: 687b ldr r3, [r7, #4] - 800aeb8: 699b ldr r3, [r3, #24] - 800aeba: 2b00 cmp r3, #0 - 800aebc: d031 beq.n 800af22 + 800b42a: 687b ldr r3, [r7, #4] + 800b42c: 699b ldr r3, [r3, #24] + 800b42e: 2b00 cmp r3, #0 + 800b430: d031 beq.n 800b496 { /* The hardware flow control is available only for USART1, USART2, USART3 and USART6. Except for STM32F446xx devices, that is available for USART1, USART2, USART3, USART6, UART4 and UART5. */ assert_param(IS_UART_HWFLOW_INSTANCE(huart->Instance)); - 800aebe: 687b ldr r3, [r7, #4] - 800aec0: 681b ldr r3, [r3, #0] - 800aec2: 4a65 ldr r2, [pc, #404] @ (800b058 ) - 800aec4: 4293 cmp r3, r2 - 800aec6: d013 beq.n 800aef0 - 800aec8: 687b ldr r3, [r7, #4] - 800aeca: 681b ldr r3, [r3, #0] - 800aecc: 4a63 ldr r2, [pc, #396] @ (800b05c ) - 800aece: 4293 cmp r3, r2 - 800aed0: d00e beq.n 800aef0 - 800aed2: 687b ldr r3, [r7, #4] - 800aed4: 681b ldr r3, [r3, #0] - 800aed6: 4a62 ldr r2, [pc, #392] @ (800b060 ) - 800aed8: 4293 cmp r3, r2 - 800aeda: d009 beq.n 800aef0 - 800aedc: 687b ldr r3, [r7, #4] - 800aede: 681b ldr r3, [r3, #0] - 800aee0: 4a60 ldr r2, [pc, #384] @ (800b064 ) - 800aee2: 4293 cmp r3, r2 - 800aee4: d004 beq.n 800aef0 - 800aee6: f240 1173 movw r1, #371 @ 0x173 - 800aeea: 485f ldr r0, [pc, #380] @ (800b068 ) - 800aeec: f7f8 f942 bl 8003174 + 800b432: 687b ldr r3, [r7, #4] + 800b434: 681b ldr r3, [r3, #0] + 800b436: 4a65 ldr r2, [pc, #404] @ (800b5cc ) + 800b438: 4293 cmp r3, r2 + 800b43a: d013 beq.n 800b464 + 800b43c: 687b ldr r3, [r7, #4] + 800b43e: 681b ldr r3, [r3, #0] + 800b440: 4a63 ldr r2, [pc, #396] @ (800b5d0 ) + 800b442: 4293 cmp r3, r2 + 800b444: d00e beq.n 800b464 + 800b446: 687b ldr r3, [r7, #4] + 800b448: 681b ldr r3, [r3, #0] + 800b44a: 4a62 ldr r2, [pc, #392] @ (800b5d4 ) + 800b44c: 4293 cmp r3, r2 + 800b44e: d009 beq.n 800b464 + 800b450: 687b ldr r3, [r7, #4] + 800b452: 681b ldr r3, [r3, #0] + 800b454: 4a60 ldr r2, [pc, #384] @ (800b5d8 ) + 800b456: 4293 cmp r3, r2 + 800b458: d004 beq.n 800b464 + 800b45a: f240 1173 movw r1, #371 @ 0x173 + 800b45e: 485f ldr r0, [pc, #380] @ (800b5dc ) + 800b460: f7f7 fee4 bl 800322c assert_param(IS_UART_HARDWARE_FLOW_CONTROL(huart->Init.HwFlowCtl)); - 800aef0: 687b ldr r3, [r7, #4] - 800aef2: 699b ldr r3, [r3, #24] - 800aef4: 2b00 cmp r3, #0 - 800aef6: d04b beq.n 800af90 - 800aef8: 687b ldr r3, [r7, #4] - 800aefa: 699b ldr r3, [r3, #24] - 800aefc: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 800af00: d046 beq.n 800af90 - 800af02: 687b ldr r3, [r7, #4] - 800af04: 699b ldr r3, [r3, #24] - 800af06: f5b3 7f00 cmp.w r3, #512 @ 0x200 - 800af0a: d041 beq.n 800af90 - 800af0c: 687b ldr r3, [r7, #4] - 800af0e: 699b ldr r3, [r3, #24] - 800af10: f5b3 7f40 cmp.w r3, #768 @ 0x300 - 800af14: d03c beq.n 800af90 - 800af16: f44f 71ba mov.w r1, #372 @ 0x174 - 800af1a: 4853 ldr r0, [pc, #332] @ (800b068 ) - 800af1c: f7f8 f92a bl 8003174 - 800af20: e036 b.n 800af90 + 800b464: 687b ldr r3, [r7, #4] + 800b466: 699b ldr r3, [r3, #24] + 800b468: 2b00 cmp r3, #0 + 800b46a: d04b beq.n 800b504 + 800b46c: 687b ldr r3, [r7, #4] + 800b46e: 699b ldr r3, [r3, #24] + 800b470: f5b3 7f80 cmp.w r3, #256 @ 0x100 + 800b474: d046 beq.n 800b504 + 800b476: 687b ldr r3, [r7, #4] + 800b478: 699b ldr r3, [r3, #24] + 800b47a: f5b3 7f00 cmp.w r3, #512 @ 0x200 + 800b47e: d041 beq.n 800b504 + 800b480: 687b ldr r3, [r7, #4] + 800b482: 699b ldr r3, [r3, #24] + 800b484: f5b3 7f40 cmp.w r3, #768 @ 0x300 + 800b488: d03c beq.n 800b504 + 800b48a: f44f 71ba mov.w r1, #372 @ 0x174 + 800b48e: 4853 ldr r0, [pc, #332] @ (800b5dc ) + 800b490: f7f7 fecc bl 800322c + 800b494: e036 b.n 800b504 } else { assert_param(IS_UART_INSTANCE(huart->Instance)); - 800af22: 687b ldr r3, [r7, #4] - 800af24: 681b ldr r3, [r3, #0] - 800af26: 4a4c ldr r2, [pc, #304] @ (800b058 ) - 800af28: 4293 cmp r3, r2 - 800af2a: d031 beq.n 800af90 - 800af2c: 687b ldr r3, [r7, #4] - 800af2e: 681b ldr r3, [r3, #0] - 800af30: 4a4a ldr r2, [pc, #296] @ (800b05c ) - 800af32: 4293 cmp r3, r2 - 800af34: d02c beq.n 800af90 - 800af36: 687b ldr r3, [r7, #4] - 800af38: 681b ldr r3, [r3, #0] - 800af3a: 4a49 ldr r2, [pc, #292] @ (800b060 ) - 800af3c: 4293 cmp r3, r2 - 800af3e: d027 beq.n 800af90 - 800af40: 687b ldr r3, [r7, #4] - 800af42: 681b ldr r3, [r3, #0] - 800af44: 4a49 ldr r2, [pc, #292] @ (800b06c ) - 800af46: 4293 cmp r3, r2 - 800af48: d022 beq.n 800af90 - 800af4a: 687b ldr r3, [r7, #4] - 800af4c: 681b ldr r3, [r3, #0] - 800af4e: 4a48 ldr r2, [pc, #288] @ (800b070 ) - 800af50: 4293 cmp r3, r2 - 800af52: d01d beq.n 800af90 - 800af54: 687b ldr r3, [r7, #4] - 800af56: 681b ldr r3, [r3, #0] - 800af58: 4a42 ldr r2, [pc, #264] @ (800b064 ) - 800af5a: 4293 cmp r3, r2 - 800af5c: d018 beq.n 800af90 - 800af5e: 687b ldr r3, [r7, #4] - 800af60: 681b ldr r3, [r3, #0] - 800af62: 4a44 ldr r2, [pc, #272] @ (800b074 ) - 800af64: 4293 cmp r3, r2 - 800af66: d013 beq.n 800af90 - 800af68: 687b ldr r3, [r7, #4] - 800af6a: 681b ldr r3, [r3, #0] - 800af6c: 4a42 ldr r2, [pc, #264] @ (800b078 ) - 800af6e: 4293 cmp r3, r2 - 800af70: d00e beq.n 800af90 - 800af72: 687b ldr r3, [r7, #4] - 800af74: 681b ldr r3, [r3, #0] - 800af76: 4a41 ldr r2, [pc, #260] @ (800b07c ) - 800af78: 4293 cmp r3, r2 - 800af7a: d009 beq.n 800af90 - 800af7c: 687b ldr r3, [r7, #4] - 800af7e: 681b ldr r3, [r3, #0] - 800af80: 4a3f ldr r2, [pc, #252] @ (800b080 ) - 800af82: 4293 cmp r3, r2 - 800af84: d004 beq.n 800af90 - 800af86: f44f 71bc mov.w r1, #376 @ 0x178 - 800af8a: 4837 ldr r0, [pc, #220] @ (800b068 ) - 800af8c: f7f8 f8f2 bl 8003174 + 800b496: 687b ldr r3, [r7, #4] + 800b498: 681b ldr r3, [r3, #0] + 800b49a: 4a4c ldr r2, [pc, #304] @ (800b5cc ) + 800b49c: 4293 cmp r3, r2 + 800b49e: d031 beq.n 800b504 + 800b4a0: 687b ldr r3, [r7, #4] + 800b4a2: 681b ldr r3, [r3, #0] + 800b4a4: 4a4a ldr r2, [pc, #296] @ (800b5d0 ) + 800b4a6: 4293 cmp r3, r2 + 800b4a8: d02c beq.n 800b504 + 800b4aa: 687b ldr r3, [r7, #4] + 800b4ac: 681b ldr r3, [r3, #0] + 800b4ae: 4a49 ldr r2, [pc, #292] @ (800b5d4 ) + 800b4b0: 4293 cmp r3, r2 + 800b4b2: d027 beq.n 800b504 + 800b4b4: 687b ldr r3, [r7, #4] + 800b4b6: 681b ldr r3, [r3, #0] + 800b4b8: 4a49 ldr r2, [pc, #292] @ (800b5e0 ) + 800b4ba: 4293 cmp r3, r2 + 800b4bc: d022 beq.n 800b504 + 800b4be: 687b ldr r3, [r7, #4] + 800b4c0: 681b ldr r3, [r3, #0] + 800b4c2: 4a48 ldr r2, [pc, #288] @ (800b5e4 ) + 800b4c4: 4293 cmp r3, r2 + 800b4c6: d01d beq.n 800b504 + 800b4c8: 687b ldr r3, [r7, #4] + 800b4ca: 681b ldr r3, [r3, #0] + 800b4cc: 4a42 ldr r2, [pc, #264] @ (800b5d8 ) + 800b4ce: 4293 cmp r3, r2 + 800b4d0: d018 beq.n 800b504 + 800b4d2: 687b ldr r3, [r7, #4] + 800b4d4: 681b ldr r3, [r3, #0] + 800b4d6: 4a44 ldr r2, [pc, #272] @ (800b5e8 ) + 800b4d8: 4293 cmp r3, r2 + 800b4da: d013 beq.n 800b504 + 800b4dc: 687b ldr r3, [r7, #4] + 800b4de: 681b ldr r3, [r3, #0] + 800b4e0: 4a42 ldr r2, [pc, #264] @ (800b5ec ) + 800b4e2: 4293 cmp r3, r2 + 800b4e4: d00e beq.n 800b504 + 800b4e6: 687b ldr r3, [r7, #4] + 800b4e8: 681b ldr r3, [r3, #0] + 800b4ea: 4a41 ldr r2, [pc, #260] @ (800b5f0 ) + 800b4ec: 4293 cmp r3, r2 + 800b4ee: d009 beq.n 800b504 + 800b4f0: 687b ldr r3, [r7, #4] + 800b4f2: 681b ldr r3, [r3, #0] + 800b4f4: 4a3f ldr r2, [pc, #252] @ (800b5f4 ) + 800b4f6: 4293 cmp r3, r2 + 800b4f8: d004 beq.n 800b504 + 800b4fa: f44f 71bc mov.w r1, #376 @ 0x178 + 800b4fe: 4837 ldr r0, [pc, #220] @ (800b5dc ) + 800b500: f7f7 fe94 bl 800322c } assert_param(IS_UART_WORD_LENGTH(huart->Init.WordLength)); - 800af90: 687b ldr r3, [r7, #4] - 800af92: 689b ldr r3, [r3, #8] - 800af94: 2b00 cmp r3, #0 - 800af96: d009 beq.n 800afac - 800af98: 687b ldr r3, [r7, #4] - 800af9a: 689b ldr r3, [r3, #8] - 800af9c: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 800afa0: d004 beq.n 800afac - 800afa2: f44f 71bd mov.w r1, #378 @ 0x17a - 800afa6: 4830 ldr r0, [pc, #192] @ (800b068 ) - 800afa8: f7f8 f8e4 bl 8003174 + 800b504: 687b ldr r3, [r7, #4] + 800b506: 689b ldr r3, [r3, #8] + 800b508: 2b00 cmp r3, #0 + 800b50a: d009 beq.n 800b520 + 800b50c: 687b ldr r3, [r7, #4] + 800b50e: 689b ldr r3, [r3, #8] + 800b510: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 800b514: d004 beq.n 800b520 + 800b516: f44f 71bd mov.w r1, #378 @ 0x17a + 800b51a: 4830 ldr r0, [pc, #192] @ (800b5dc ) + 800b51c: f7f7 fe86 bl 800322c assert_param(IS_UART_OVERSAMPLING(huart->Init.OverSampling)); - 800afac: 687b ldr r3, [r7, #4] - 800afae: 69db ldr r3, [r3, #28] - 800afb0: 2b00 cmp r3, #0 - 800afb2: d009 beq.n 800afc8 - 800afb4: 687b ldr r3, [r7, #4] - 800afb6: 69db ldr r3, [r3, #28] - 800afb8: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 - 800afbc: d004 beq.n 800afc8 - 800afbe: f240 117b movw r1, #379 @ 0x17b - 800afc2: 4829 ldr r0, [pc, #164] @ (800b068 ) - 800afc4: f7f8 f8d6 bl 8003174 + 800b520: 687b ldr r3, [r7, #4] + 800b522: 69db ldr r3, [r3, #28] + 800b524: 2b00 cmp r3, #0 + 800b526: d009 beq.n 800b53c + 800b528: 687b ldr r3, [r7, #4] + 800b52a: 69db ldr r3, [r3, #28] + 800b52c: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 800b530: d004 beq.n 800b53c + 800b532: f240 117b movw r1, #379 @ 0x17b + 800b536: 4829 ldr r0, [pc, #164] @ (800b5dc ) + 800b538: f7f7 fe78 bl 800322c if (huart->gState == HAL_UART_STATE_RESET) - 800afc8: 687b ldr r3, [r7, #4] - 800afca: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 - 800afce: b2db uxtb r3, r3 - 800afd0: 2b00 cmp r3, #0 - 800afd2: d106 bne.n 800afe2 + 800b53c: 687b ldr r3, [r7, #4] + 800b53e: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 + 800b542: b2db uxtb r3, r3 + 800b544: 2b00 cmp r3, #0 + 800b546: d106 bne.n 800b556 { /* Allocate lock resource and initialize it */ huart->Lock = HAL_UNLOCKED; - 800afd4: 687b ldr r3, [r7, #4] - 800afd6: 2200 movs r2, #0 - 800afd8: f883 2040 strb.w r2, [r3, #64] @ 0x40 + 800b548: 687b ldr r3, [r7, #4] + 800b54a: 2200 movs r2, #0 + 800b54c: 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); - 800afdc: 6878 ldr r0, [r7, #4] - 800afde: f7f9 febd bl 8004d5c + 800b550: 6878 ldr r0, [r7, #4] + 800b552: f7f9 fd2d bl 8004fb0 #endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ } huart->gState = HAL_UART_STATE_BUSY; - 800afe2: 687b ldr r3, [r7, #4] - 800afe4: 2224 movs r2, #36 @ 0x24 - 800afe6: f883 2041 strb.w r2, [r3, #65] @ 0x41 + 800b556: 687b ldr r3, [r7, #4] + 800b558: 2224 movs r2, #36 @ 0x24 + 800b55a: f883 2041 strb.w r2, [r3, #65] @ 0x41 /* Disable the peripheral */ __HAL_UART_DISABLE(huart); - 800afea: 687b ldr r3, [r7, #4] - 800afec: 681b ldr r3, [r3, #0] - 800afee: 68da ldr r2, [r3, #12] - 800aff0: 687b ldr r3, [r7, #4] - 800aff2: 681b ldr r3, [r3, #0] - 800aff4: f422 5200 bic.w r2, r2, #8192 @ 0x2000 - 800aff8: 60da str r2, [r3, #12] + 800b55e: 687b ldr r3, [r7, #4] + 800b560: 681b ldr r3, [r3, #0] + 800b562: 68da ldr r2, [r3, #12] + 800b564: 687b ldr r3, [r7, #4] + 800b566: 681b ldr r3, [r3, #0] + 800b568: f422 5200 bic.w r2, r2, #8192 @ 0x2000 + 800b56c: 60da str r2, [r3, #12] /* Set the UART Communication parameters */ UART_SetConfig(huart); - 800affa: 6878 ldr r0, [r7, #4] - 800affc: f000 ff62 bl 800bec4 + 800b56e: 6878 ldr r0, [r7, #4] + 800b570: f000 ff62 bl 800c438 /* 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)); - 800b000: 687b ldr r3, [r7, #4] - 800b002: 681b ldr r3, [r3, #0] - 800b004: 691a ldr r2, [r3, #16] - 800b006: 687b ldr r3, [r7, #4] - 800b008: 681b ldr r3, [r3, #0] - 800b00a: f422 4290 bic.w r2, r2, #18432 @ 0x4800 - 800b00e: 611a str r2, [r3, #16] + 800b574: 687b ldr r3, [r7, #4] + 800b576: 681b ldr r3, [r3, #0] + 800b578: 691a ldr r2, [r3, #16] + 800b57a: 687b ldr r3, [r7, #4] + 800b57c: 681b ldr r3, [r3, #0] + 800b57e: f422 4290 bic.w r2, r2, #18432 @ 0x4800 + 800b582: 611a str r2, [r3, #16] CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN)); - 800b010: 687b ldr r3, [r7, #4] - 800b012: 681b ldr r3, [r3, #0] - 800b014: 695a ldr r2, [r3, #20] - 800b016: 687b ldr r3, [r7, #4] - 800b018: 681b ldr r3, [r3, #0] - 800b01a: f022 022a bic.w r2, r2, #42 @ 0x2a - 800b01e: 615a str r2, [r3, #20] + 800b584: 687b ldr r3, [r7, #4] + 800b586: 681b ldr r3, [r3, #0] + 800b588: 695a ldr r2, [r3, #20] + 800b58a: 687b ldr r3, [r7, #4] + 800b58c: 681b ldr r3, [r3, #0] + 800b58e: f022 022a bic.w r2, r2, #42 @ 0x2a + 800b592: 615a str r2, [r3, #20] /* Enable the peripheral */ __HAL_UART_ENABLE(huart); - 800b020: 687b ldr r3, [r7, #4] - 800b022: 681b ldr r3, [r3, #0] - 800b024: 68da ldr r2, [r3, #12] - 800b026: 687b ldr r3, [r7, #4] - 800b028: 681b ldr r3, [r3, #0] - 800b02a: f442 5200 orr.w r2, r2, #8192 @ 0x2000 - 800b02e: 60da str r2, [r3, #12] + 800b594: 687b ldr r3, [r7, #4] + 800b596: 681b ldr r3, [r3, #0] + 800b598: 68da ldr r2, [r3, #12] + 800b59a: 687b ldr r3, [r7, #4] + 800b59c: 681b ldr r3, [r3, #0] + 800b59e: f442 5200 orr.w r2, r2, #8192 @ 0x2000 + 800b5a2: 60da str r2, [r3, #12] /* Initialize the UART state */ huart->ErrorCode = HAL_UART_ERROR_NONE; - 800b030: 687b ldr r3, [r7, #4] - 800b032: 2200 movs r2, #0 - 800b034: 645a str r2, [r3, #68] @ 0x44 + 800b5a4: 687b ldr r3, [r7, #4] + 800b5a6: 2200 movs r2, #0 + 800b5a8: 645a str r2, [r3, #68] @ 0x44 huart->gState = HAL_UART_STATE_READY; - 800b036: 687b ldr r3, [r7, #4] - 800b038: 2220 movs r2, #32 - 800b03a: f883 2041 strb.w r2, [r3, #65] @ 0x41 + 800b5aa: 687b ldr r3, [r7, #4] + 800b5ac: 2220 movs r2, #32 + 800b5ae: f883 2041 strb.w r2, [r3, #65] @ 0x41 huart->RxState = HAL_UART_STATE_READY; - 800b03e: 687b ldr r3, [r7, #4] - 800b040: 2220 movs r2, #32 - 800b042: f883 2042 strb.w r2, [r3, #66] @ 0x42 + 800b5b2: 687b ldr r3, [r7, #4] + 800b5b4: 2220 movs r2, #32 + 800b5b6: f883 2042 strb.w r2, [r3, #66] @ 0x42 huart->RxEventType = HAL_UART_RXEVENT_TC; - 800b046: 687b ldr r3, [r7, #4] - 800b048: 2200 movs r2, #0 - 800b04a: 635a str r2, [r3, #52] @ 0x34 + 800b5ba: 687b ldr r3, [r7, #4] + 800b5bc: 2200 movs r2, #0 + 800b5be: 635a str r2, [r3, #52] @ 0x34 return HAL_OK; - 800b04c: 2300 movs r3, #0 + 800b5c0: 2300 movs r3, #0 } - 800b04e: 4618 mov r0, r3 - 800b050: 3708 adds r7, #8 - 800b052: 46bd mov sp, r7 - 800b054: bd80 pop {r7, pc} - 800b056: bf00 nop - 800b058: 40011000 .word 0x40011000 - 800b05c: 40004400 .word 0x40004400 - 800b060: 40004800 .word 0x40004800 - 800b064: 40011400 .word 0x40011400 - 800b068: 0800e97c .word 0x0800e97c - 800b06c: 40004c00 .word 0x40004c00 - 800b070: 40005000 .word 0x40005000 - 800b074: 40007800 .word 0x40007800 - 800b078: 40007c00 .word 0x40007c00 - 800b07c: 40011800 .word 0x40011800 - 800b080: 40011c00 .word 0x40011c00 + 800b5c2: 4618 mov r0, r3 + 800b5c4: 3708 adds r7, #8 + 800b5c6: 46bd mov sp, r7 + 800b5c8: bd80 pop {r7, pc} + 800b5ca: bf00 nop + 800b5cc: 40011000 .word 0x40011000 + 800b5d0: 40004400 .word 0x40004400 + 800b5d4: 40004800 .word 0x40004800 + 800b5d8: 40011400 .word 0x40011400 + 800b5dc: 0800eeec .word 0x0800eeec + 800b5e0: 40004c00 .word 0x40004c00 + 800b5e4: 40005000 .word 0x40005000 + 800b5e8: 40007800 .word 0x40007800 + 800b5ec: 40007c00 .word 0x40007c00 + 800b5f0: 40011800 .word 0x40011800 + 800b5f4: 40011c00 .word 0x40011c00 -0800b084 : +0800b5f8 : * @param pData Pointer to data buffer (u8 or u16 data elements). * @param Size Amount of data elements (u8 or u16) to be sent * @retval HAL status */ HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size) { - 800b084: b580 push {r7, lr} - 800b086: b08c sub sp, #48 @ 0x30 - 800b088: af00 add r7, sp, #0 - 800b08a: 60f8 str r0, [r7, #12] - 800b08c: 60b9 str r1, [r7, #8] - 800b08e: 4613 mov r3, r2 - 800b090: 80fb strh r3, [r7, #6] + 800b5f8: b580 push {r7, lr} + 800b5fa: b08c sub sp, #48 @ 0x30 + 800b5fc: af00 add r7, sp, #0 + 800b5fe: 60f8 str r0, [r7, #12] + 800b600: 60b9 str r1, [r7, #8] + 800b602: 4613 mov r3, r2 + 800b604: 80fb strh r3, [r7, #6] const uint32_t *tmp; /* Check that a Tx process is not already ongoing */ if (huart->gState == HAL_UART_STATE_READY) - 800b092: 68fb ldr r3, [r7, #12] - 800b094: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 - 800b098: b2db uxtb r3, r3 - 800b09a: 2b20 cmp r3, #32 - 800b09c: d156 bne.n 800b14c + 800b606: 68fb ldr r3, [r7, #12] + 800b608: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 + 800b60c: b2db uxtb r3, r3 + 800b60e: 2b20 cmp r3, #32 + 800b610: d156 bne.n 800b6c0 { if ((pData == NULL) || (Size == 0U)) - 800b09e: 68bb ldr r3, [r7, #8] - 800b0a0: 2b00 cmp r3, #0 - 800b0a2: d002 beq.n 800b0aa - 800b0a4: 88fb ldrh r3, [r7, #6] - 800b0a6: 2b00 cmp r3, #0 - 800b0a8: d101 bne.n 800b0ae + 800b612: 68bb ldr r3, [r7, #8] + 800b614: 2b00 cmp r3, #0 + 800b616: d002 beq.n 800b61e + 800b618: 88fb ldrh r3, [r7, #6] + 800b61a: 2b00 cmp r3, #0 + 800b61c: d101 bne.n 800b622 { return HAL_ERROR; - 800b0aa: 2301 movs r3, #1 - 800b0ac: e04f b.n 800b14e + 800b61e: 2301 movs r3, #1 + 800b620: e04f b.n 800b6c2 } huart->pTxBuffPtr = pData; - 800b0ae: 68ba ldr r2, [r7, #8] - 800b0b0: 68fb ldr r3, [r7, #12] - 800b0b2: 621a str r2, [r3, #32] + 800b622: 68ba ldr r2, [r7, #8] + 800b624: 68fb ldr r3, [r7, #12] + 800b626: 621a str r2, [r3, #32] huart->TxXferSize = Size; - 800b0b4: 68fb ldr r3, [r7, #12] - 800b0b6: 88fa ldrh r2, [r7, #6] - 800b0b8: 849a strh r2, [r3, #36] @ 0x24 + 800b628: 68fb ldr r3, [r7, #12] + 800b62a: 88fa ldrh r2, [r7, #6] + 800b62c: 849a strh r2, [r3, #36] @ 0x24 huart->TxXferCount = Size; - 800b0ba: 68fb ldr r3, [r7, #12] - 800b0bc: 88fa ldrh r2, [r7, #6] - 800b0be: 84da strh r2, [r3, #38] @ 0x26 + 800b62e: 68fb ldr r3, [r7, #12] + 800b630: 88fa ldrh r2, [r7, #6] + 800b632: 84da strh r2, [r3, #38] @ 0x26 huart->ErrorCode = HAL_UART_ERROR_NONE; - 800b0c0: 68fb ldr r3, [r7, #12] - 800b0c2: 2200 movs r2, #0 - 800b0c4: 645a str r2, [r3, #68] @ 0x44 + 800b634: 68fb ldr r3, [r7, #12] + 800b636: 2200 movs r2, #0 + 800b638: 645a str r2, [r3, #68] @ 0x44 huart->gState = HAL_UART_STATE_BUSY_TX; - 800b0c6: 68fb ldr r3, [r7, #12] - 800b0c8: 2221 movs r2, #33 @ 0x21 - 800b0ca: f883 2041 strb.w r2, [r3, #65] @ 0x41 + 800b63a: 68fb ldr r3, [r7, #12] + 800b63c: 2221 movs r2, #33 @ 0x21 + 800b63e: f883 2041 strb.w r2, [r3, #65] @ 0x41 /* Set the UART DMA transfer complete callback */ huart->hdmatx->XferCpltCallback = UART_DMATransmitCplt; - 800b0ce: 68fb ldr r3, [r7, #12] - 800b0d0: 6b9b ldr r3, [r3, #56] @ 0x38 - 800b0d2: 4a21 ldr r2, [pc, #132] @ (800b158 ) - 800b0d4: 63da str r2, [r3, #60] @ 0x3c + 800b642: 68fb ldr r3, [r7, #12] + 800b644: 6b9b ldr r3, [r3, #56] @ 0x38 + 800b646: 4a21 ldr r2, [pc, #132] @ (800b6cc ) + 800b648: 63da str r2, [r3, #60] @ 0x3c /* Set the UART DMA Half transfer complete callback */ huart->hdmatx->XferHalfCpltCallback = UART_DMATxHalfCplt; - 800b0d6: 68fb ldr r3, [r7, #12] - 800b0d8: 6b9b ldr r3, [r3, #56] @ 0x38 - 800b0da: 4a20 ldr r2, [pc, #128] @ (800b15c ) - 800b0dc: 641a str r2, [r3, #64] @ 0x40 + 800b64a: 68fb ldr r3, [r7, #12] + 800b64c: 6b9b ldr r3, [r3, #56] @ 0x38 + 800b64e: 4a20 ldr r2, [pc, #128] @ (800b6d0 ) + 800b650: 641a str r2, [r3, #64] @ 0x40 /* Set the DMA error callback */ huart->hdmatx->XferErrorCallback = UART_DMAError; - 800b0de: 68fb ldr r3, [r7, #12] - 800b0e0: 6b9b ldr r3, [r3, #56] @ 0x38 - 800b0e2: 4a1f ldr r2, [pc, #124] @ (800b160 ) - 800b0e4: 64da str r2, [r3, #76] @ 0x4c + 800b652: 68fb ldr r3, [r7, #12] + 800b654: 6b9b ldr r3, [r3, #56] @ 0x38 + 800b656: 4a1f ldr r2, [pc, #124] @ (800b6d4 ) + 800b658: 64da str r2, [r3, #76] @ 0x4c /* Set the DMA abort callback */ huart->hdmatx->XferAbortCallback = NULL; - 800b0e6: 68fb ldr r3, [r7, #12] - 800b0e8: 6b9b ldr r3, [r3, #56] @ 0x38 - 800b0ea: 2200 movs r2, #0 - 800b0ec: 651a str r2, [r3, #80] @ 0x50 + 800b65a: 68fb ldr r3, [r7, #12] + 800b65c: 6b9b ldr r3, [r3, #56] @ 0x38 + 800b65e: 2200 movs r2, #0 + 800b660: 651a str r2, [r3, #80] @ 0x50 /* Enable the UART transmit DMA stream */ tmp = (const uint32_t *)&pData; - 800b0ee: f107 0308 add.w r3, r7, #8 - 800b0f2: 62fb str r3, [r7, #44] @ 0x2c + 800b662: f107 0308 add.w r3, r7, #8 + 800b666: 62fb str r3, [r7, #44] @ 0x2c HAL_DMA_Start_IT(huart->hdmatx, *(const uint32_t *)tmp, (uint32_t)&huart->Instance->DR, Size); - 800b0f4: 68fb ldr r3, [r7, #12] - 800b0f6: 6b98 ldr r0, [r3, #56] @ 0x38 - 800b0f8: 6afb ldr r3, [r7, #44] @ 0x2c - 800b0fa: 6819 ldr r1, [r3, #0] - 800b0fc: 68fb ldr r3, [r7, #12] - 800b0fe: 681b ldr r3, [r3, #0] - 800b100: 3304 adds r3, #4 - 800b102: 461a mov r2, r3 - 800b104: 88fb ldrh r3, [r7, #6] - 800b106: f7fb fdb7 bl 8006c78 + 800b668: 68fb ldr r3, [r7, #12] + 800b66a: 6b98 ldr r0, [r3, #56] @ 0x38 + 800b66c: 6afb ldr r3, [r7, #44] @ 0x2c + 800b66e: 6819 ldr r1, [r3, #0] + 800b670: 68fb ldr r3, [r7, #12] + 800b672: 681b ldr r3, [r3, #0] + 800b674: 3304 adds r3, #4 + 800b676: 461a mov r2, r3 + 800b678: 88fb ldrh r3, [r7, #6] + 800b67a: f7fb fc27 bl 8006ecc /* Clear the TC flag in the SR register by writing 0 to it */ __HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC); - 800b10a: 68fb ldr r3, [r7, #12] - 800b10c: 681b ldr r3, [r3, #0] - 800b10e: f06f 0240 mvn.w r2, #64 @ 0x40 - 800b112: 601a str r2, [r3, #0] + 800b67e: 68fb ldr r3, [r7, #12] + 800b680: 681b ldr r3, [r3, #0] + 800b682: f06f 0240 mvn.w r2, #64 @ 0x40 + 800b686: 601a str r2, [r3, #0] /* Enable the DMA transfer for transmit request by setting the DMAT bit in the UART CR3 register */ ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_DMAT); - 800b114: 68fb ldr r3, [r7, #12] - 800b116: 681b ldr r3, [r3, #0] - 800b118: 3314 adds r3, #20 - 800b11a: 61bb str r3, [r7, #24] + 800b688: 68fb ldr r3, [r7, #12] + 800b68a: 681b ldr r3, [r3, #0] + 800b68c: 3314 adds r3, #20 + 800b68e: 61bb str r3, [r7, #24] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800b11c: 69bb ldr r3, [r7, #24] - 800b11e: e853 3f00 ldrex r3, [r3] - 800b122: 617b str r3, [r7, #20] + 800b690: 69bb ldr r3, [r7, #24] + 800b692: e853 3f00 ldrex r3, [r3] + 800b696: 617b str r3, [r7, #20] return(result); - 800b124: 697b ldr r3, [r7, #20] - 800b126: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800b12a: 62bb str r3, [r7, #40] @ 0x28 - 800b12c: 68fb ldr r3, [r7, #12] - 800b12e: 681b ldr r3, [r3, #0] - 800b130: 3314 adds r3, #20 - 800b132: 6aba ldr r2, [r7, #40] @ 0x28 - 800b134: 627a str r2, [r7, #36] @ 0x24 - 800b136: 623b str r3, [r7, #32] + 800b698: 697b ldr r3, [r7, #20] + 800b69a: f043 0380 orr.w r3, r3, #128 @ 0x80 + 800b69e: 62bb str r3, [r7, #40] @ 0x28 + 800b6a0: 68fb ldr r3, [r7, #12] + 800b6a2: 681b ldr r3, [r3, #0] + 800b6a4: 3314 adds r3, #20 + 800b6a6: 6aba ldr r2, [r7, #40] @ 0x28 + 800b6a8: 627a str r2, [r7, #36] @ 0x24 + 800b6aa: 623b str r3, [r7, #32] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800b138: 6a39 ldr r1, [r7, #32] - 800b13a: 6a7a ldr r2, [r7, #36] @ 0x24 - 800b13c: e841 2300 strex r3, r2, [r1] - 800b140: 61fb str r3, [r7, #28] + 800b6ac: 6a39 ldr r1, [r7, #32] + 800b6ae: 6a7a ldr r2, [r7, #36] @ 0x24 + 800b6b0: e841 2300 strex r3, r2, [r1] + 800b6b4: 61fb str r3, [r7, #28] return(result); - 800b142: 69fb ldr r3, [r7, #28] - 800b144: 2b00 cmp r3, #0 - 800b146: d1e5 bne.n 800b114 + 800b6b6: 69fb ldr r3, [r7, #28] + 800b6b8: 2b00 cmp r3, #0 + 800b6ba: d1e5 bne.n 800b688 return HAL_OK; - 800b148: 2300 movs r3, #0 - 800b14a: e000 b.n 800b14e + 800b6bc: 2300 movs r3, #0 + 800b6be: e000 b.n 800b6c2 } else { return HAL_BUSY; - 800b14c: 2302 movs r3, #2 + 800b6c0: 2302 movs r3, #2 } } - 800b14e: 4618 mov r0, r3 - 800b150: 3730 adds r7, #48 @ 0x30 - 800b152: 46bd mov sp, r7 - 800b154: bd80 pop {r7, pc} - 800b156: bf00 nop - 800b158: 0800b751 .word 0x0800b751 - 800b15c: 0800b7eb .word 0x0800b7eb - 800b160: 0800b96f .word 0x0800b96f + 800b6c2: 4618 mov r0, r3 + 800b6c4: 3730 adds r7, #48 @ 0x30 + 800b6c6: 46bd mov sp, r7 + 800b6c8: bd80 pop {r7, pc} + 800b6ca: bf00 nop + 800b6cc: 0800bcc5 .word 0x0800bcc5 + 800b6d0: 0800bd5f .word 0x0800bd5f + 800b6d4: 0800bee3 .word 0x0800bee3 -0800b164 : +0800b6d8 : * @param Size Amount of data elements (u8 or u16) to be received. * @note When the UART parity is enabled (PCE = 1) the received data contains the parity bit. * @retval HAL status */ HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) { - 800b164: b580 push {r7, lr} - 800b166: b084 sub sp, #16 - 800b168: af00 add r7, sp, #0 - 800b16a: 60f8 str r0, [r7, #12] - 800b16c: 60b9 str r1, [r7, #8] - 800b16e: 4613 mov r3, r2 - 800b170: 80fb strh r3, [r7, #6] + 800b6d8: b580 push {r7, lr} + 800b6da: b084 sub sp, #16 + 800b6dc: af00 add r7, sp, #0 + 800b6de: 60f8 str r0, [r7, #12] + 800b6e0: 60b9 str r1, [r7, #8] + 800b6e2: 4613 mov r3, r2 + 800b6e4: 80fb strh r3, [r7, #6] /* Check that a Rx process is not already ongoing */ if (huart->RxState == HAL_UART_STATE_READY) - 800b172: 68fb ldr r3, [r7, #12] - 800b174: f893 3042 ldrb.w r3, [r3, #66] @ 0x42 - 800b178: b2db uxtb r3, r3 - 800b17a: 2b20 cmp r3, #32 - 800b17c: d112 bne.n 800b1a4 + 800b6e6: 68fb ldr r3, [r7, #12] + 800b6e8: f893 3042 ldrb.w r3, [r3, #66] @ 0x42 + 800b6ec: b2db uxtb r3, r3 + 800b6ee: 2b20 cmp r3, #32 + 800b6f0: d112 bne.n 800b718 { if ((pData == NULL) || (Size == 0U)) - 800b17e: 68bb ldr r3, [r7, #8] - 800b180: 2b00 cmp r3, #0 - 800b182: d002 beq.n 800b18a - 800b184: 88fb ldrh r3, [r7, #6] - 800b186: 2b00 cmp r3, #0 - 800b188: d101 bne.n 800b18e + 800b6f2: 68bb ldr r3, [r7, #8] + 800b6f4: 2b00 cmp r3, #0 + 800b6f6: d002 beq.n 800b6fe + 800b6f8: 88fb ldrh r3, [r7, #6] + 800b6fa: 2b00 cmp r3, #0 + 800b6fc: d101 bne.n 800b702 { return HAL_ERROR; - 800b18a: 2301 movs r3, #1 - 800b18c: e00b b.n 800b1a6 + 800b6fe: 2301 movs r3, #1 + 800b700: e00b b.n 800b71a } /* Set Reception type to Standard reception */ huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 800b18e: 68fb ldr r3, [r7, #12] - 800b190: 2200 movs r2, #0 - 800b192: 631a str r2, [r3, #48] @ 0x30 + 800b702: 68fb ldr r3, [r7, #12] + 800b704: 2200 movs r2, #0 + 800b706: 631a str r2, [r3, #48] @ 0x30 return (UART_Start_Receive_DMA(huart, pData, Size)); - 800b194: 88fb ldrh r3, [r7, #6] - 800b196: 461a mov r2, r3 - 800b198: 68b9 ldr r1, [r7, #8] - 800b19a: 68f8 ldr r0, [r7, #12] - 800b19c: f000 fc32 bl 800ba04 - 800b1a0: 4603 mov r3, r0 - 800b1a2: e000 b.n 800b1a6 + 800b708: 88fb ldrh r3, [r7, #6] + 800b70a: 461a mov r2, r3 + 800b70c: 68b9 ldr r1, [r7, #8] + 800b70e: 68f8 ldr r0, [r7, #12] + 800b710: f000 fc32 bl 800bf78 + 800b714: 4603 mov r3, r0 + 800b716: e000 b.n 800b71a } else { return HAL_BUSY; - 800b1a4: 2302 movs r3, #2 + 800b718: 2302 movs r3, #2 } } - 800b1a6: 4618 mov r0, r3 - 800b1a8: 3710 adds r7, #16 - 800b1aa: 46bd mov sp, r7 - 800b1ac: bd80 pop {r7, pc} + 800b71a: 4618 mov r0, r3 + 800b71c: 3710 adds r7, #16 + 800b71e: 46bd mov sp, r7 + 800b720: bd80 pop {r7, pc} ... -0800b1b0 : +0800b724 : * @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) { - 800b1b0: b580 push {r7, lr} - 800b1b2: b0ba sub sp, #232 @ 0xe8 - 800b1b4: af00 add r7, sp, #0 - 800b1b6: 6078 str r0, [r7, #4] + 800b724: b580 push {r7, lr} + 800b726: b0ba sub sp, #232 @ 0xe8 + 800b728: af00 add r7, sp, #0 + 800b72a: 6078 str r0, [r7, #4] uint32_t isrflags = READ_REG(huart->Instance->SR); - 800b1b8: 687b ldr r3, [r7, #4] - 800b1ba: 681b ldr r3, [r3, #0] - 800b1bc: 681b ldr r3, [r3, #0] - 800b1be: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 + 800b72c: 687b ldr r3, [r7, #4] + 800b72e: 681b ldr r3, [r3, #0] + 800b730: 681b ldr r3, [r3, #0] + 800b732: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 uint32_t cr1its = READ_REG(huart->Instance->CR1); - 800b1c2: 687b ldr r3, [r7, #4] - 800b1c4: 681b ldr r3, [r3, #0] - 800b1c6: 68db ldr r3, [r3, #12] - 800b1c8: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 + 800b736: 687b ldr r3, [r7, #4] + 800b738: 681b ldr r3, [r3, #0] + 800b73a: 68db ldr r3, [r3, #12] + 800b73c: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 uint32_t cr3its = READ_REG(huart->Instance->CR3); - 800b1cc: 687b ldr r3, [r7, #4] - 800b1ce: 681b ldr r3, [r3, #0] - 800b1d0: 695b ldr r3, [r3, #20] - 800b1d2: f8c7 30dc str.w r3, [r7, #220] @ 0xdc + 800b740: 687b ldr r3, [r7, #4] + 800b742: 681b ldr r3, [r3, #0] + 800b744: 695b ldr r3, [r3, #20] + 800b746: f8c7 30dc str.w r3, [r7, #220] @ 0xdc uint32_t errorflags = 0x00U; - 800b1d6: 2300 movs r3, #0 - 800b1d8: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 + 800b74a: 2300 movs r3, #0 + 800b74c: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 uint32_t dmarequest = 0x00U; - 800b1dc: 2300 movs r3, #0 - 800b1de: f8c7 30d4 str.w r3, [r7, #212] @ 0xd4 + 800b750: 2300 movs r3, #0 + 800b752: 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)); - 800b1e2: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 800b1e6: f003 030f and.w r3, r3, #15 - 800b1ea: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 + 800b756: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 800b75a: f003 030f and.w r3, r3, #15 + 800b75e: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 if (errorflags == RESET) - 800b1ee: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 - 800b1f2: 2b00 cmp r3, #0 - 800b1f4: d10f bne.n 800b216 + 800b762: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 + 800b766: 2b00 cmp r3, #0 + 800b768: d10f bne.n 800b78a { /* UART in mode Receiver -------------------------------------------------*/ if (((isrflags & USART_SR_RXNE) != RESET) && ((cr1its & USART_CR1_RXNEIE) != RESET)) - 800b1f6: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 800b1fa: f003 0320 and.w r3, r3, #32 - 800b1fe: 2b00 cmp r3, #0 - 800b200: d009 beq.n 800b216 - 800b202: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 800b206: f003 0320 and.w r3, r3, #32 - 800b20a: 2b00 cmp r3, #0 - 800b20c: d003 beq.n 800b216 + 800b76a: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 800b76e: f003 0320 and.w r3, r3, #32 + 800b772: 2b00 cmp r3, #0 + 800b774: d009 beq.n 800b78a + 800b776: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 800b77a: f003 0320 and.w r3, r3, #32 + 800b77e: 2b00 cmp r3, #0 + 800b780: d003 beq.n 800b78a { UART_Receive_IT(huart); - 800b20e: 6878 ldr r0, [r7, #4] - 800b210: f000 fd99 bl 800bd46 + 800b782: 6878 ldr r0, [r7, #4] + 800b784: f000 fd99 bl 800c2ba return; - 800b214: e25b b.n 800b6ce + 800b788: e25b b.n 800bc42 } } /* If some errors occur */ if ((errorflags != RESET) && (((cr3its & USART_CR3_EIE) != RESET) - 800b216: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 - 800b21a: 2b00 cmp r3, #0 - 800b21c: f000 80de beq.w 800b3dc - 800b220: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc - 800b224: f003 0301 and.w r3, r3, #1 - 800b228: 2b00 cmp r3, #0 - 800b22a: d106 bne.n 800b23a + 800b78a: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 + 800b78e: 2b00 cmp r3, #0 + 800b790: f000 80de beq.w 800b950 + 800b794: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc + 800b798: f003 0301 and.w r3, r3, #1 + 800b79c: 2b00 cmp r3, #0 + 800b79e: d106 bne.n 800b7ae || ((cr1its & (USART_CR1_RXNEIE | USART_CR1_PEIE)) != RESET))) - 800b22c: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 800b230: f403 7390 and.w r3, r3, #288 @ 0x120 - 800b234: 2b00 cmp r3, #0 - 800b236: f000 80d1 beq.w 800b3dc + 800b7a0: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 800b7a4: f403 7390 and.w r3, r3, #288 @ 0x120 + 800b7a8: 2b00 cmp r3, #0 + 800b7aa: f000 80d1 beq.w 800b950 { /* UART parity error interrupt occurred ----------------------------------*/ if (((isrflags & USART_SR_PE) != RESET) && ((cr1its & USART_CR1_PEIE) != RESET)) - 800b23a: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 800b23e: f003 0301 and.w r3, r3, #1 - 800b242: 2b00 cmp r3, #0 - 800b244: d00b beq.n 800b25e - 800b246: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 800b24a: f403 7380 and.w r3, r3, #256 @ 0x100 - 800b24e: 2b00 cmp r3, #0 - 800b250: d005 beq.n 800b25e + 800b7ae: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 800b7b2: f003 0301 and.w r3, r3, #1 + 800b7b6: 2b00 cmp r3, #0 + 800b7b8: d00b beq.n 800b7d2 + 800b7ba: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 800b7be: f403 7380 and.w r3, r3, #256 @ 0x100 + 800b7c2: 2b00 cmp r3, #0 + 800b7c4: d005 beq.n 800b7d2 { huart->ErrorCode |= HAL_UART_ERROR_PE; - 800b252: 687b ldr r3, [r7, #4] - 800b254: 6c5b ldr r3, [r3, #68] @ 0x44 - 800b256: f043 0201 orr.w r2, r3, #1 - 800b25a: 687b ldr r3, [r7, #4] - 800b25c: 645a str r2, [r3, #68] @ 0x44 + 800b7c6: 687b ldr r3, [r7, #4] + 800b7c8: 6c5b ldr r3, [r3, #68] @ 0x44 + 800b7ca: f043 0201 orr.w r2, r3, #1 + 800b7ce: 687b ldr r3, [r7, #4] + 800b7d0: 645a str r2, [r3, #68] @ 0x44 } /* UART noise error interrupt occurred -----------------------------------*/ if (((isrflags & USART_SR_NE) != RESET) && ((cr3its & USART_CR3_EIE) != RESET)) - 800b25e: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 800b262: f003 0304 and.w r3, r3, #4 - 800b266: 2b00 cmp r3, #0 - 800b268: d00b beq.n 800b282 - 800b26a: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc - 800b26e: f003 0301 and.w r3, r3, #1 - 800b272: 2b00 cmp r3, #0 - 800b274: d005 beq.n 800b282 + 800b7d2: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 800b7d6: f003 0304 and.w r3, r3, #4 + 800b7da: 2b00 cmp r3, #0 + 800b7dc: d00b beq.n 800b7f6 + 800b7de: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc + 800b7e2: f003 0301 and.w r3, r3, #1 + 800b7e6: 2b00 cmp r3, #0 + 800b7e8: d005 beq.n 800b7f6 { huart->ErrorCode |= HAL_UART_ERROR_NE; - 800b276: 687b ldr r3, [r7, #4] - 800b278: 6c5b ldr r3, [r3, #68] @ 0x44 - 800b27a: f043 0202 orr.w r2, r3, #2 - 800b27e: 687b ldr r3, [r7, #4] - 800b280: 645a str r2, [r3, #68] @ 0x44 + 800b7ea: 687b ldr r3, [r7, #4] + 800b7ec: 6c5b ldr r3, [r3, #68] @ 0x44 + 800b7ee: f043 0202 orr.w r2, r3, #2 + 800b7f2: 687b ldr r3, [r7, #4] + 800b7f4: 645a str r2, [r3, #68] @ 0x44 } /* UART frame error interrupt occurred -----------------------------------*/ if (((isrflags & USART_SR_FE) != RESET) && ((cr3its & USART_CR3_EIE) != RESET)) - 800b282: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 800b286: f003 0302 and.w r3, r3, #2 - 800b28a: 2b00 cmp r3, #0 - 800b28c: d00b beq.n 800b2a6 - 800b28e: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc - 800b292: f003 0301 and.w r3, r3, #1 - 800b296: 2b00 cmp r3, #0 - 800b298: d005 beq.n 800b2a6 + 800b7f6: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 800b7fa: f003 0302 and.w r3, r3, #2 + 800b7fe: 2b00 cmp r3, #0 + 800b800: d00b beq.n 800b81a + 800b802: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc + 800b806: f003 0301 and.w r3, r3, #1 + 800b80a: 2b00 cmp r3, #0 + 800b80c: d005 beq.n 800b81a { huart->ErrorCode |= HAL_UART_ERROR_FE; - 800b29a: 687b ldr r3, [r7, #4] - 800b29c: 6c5b ldr r3, [r3, #68] @ 0x44 - 800b29e: f043 0204 orr.w r2, r3, #4 - 800b2a2: 687b ldr r3, [r7, #4] - 800b2a4: 645a str r2, [r3, #68] @ 0x44 + 800b80e: 687b ldr r3, [r7, #4] + 800b810: 6c5b ldr r3, [r3, #68] @ 0x44 + 800b812: f043 0204 orr.w r2, r3, #4 + 800b816: 687b ldr r3, [r7, #4] + 800b818: 645a str r2, [r3, #68] @ 0x44 } /* UART Over-Run interrupt occurred --------------------------------------*/ if (((isrflags & USART_SR_ORE) != RESET) && (((cr1its & USART_CR1_RXNEIE) != RESET) - 800b2a6: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 800b2aa: f003 0308 and.w r3, r3, #8 - 800b2ae: 2b00 cmp r3, #0 - 800b2b0: d011 beq.n 800b2d6 - 800b2b2: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 800b2b6: f003 0320 and.w r3, r3, #32 - 800b2ba: 2b00 cmp r3, #0 - 800b2bc: d105 bne.n 800b2ca + 800b81a: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 800b81e: f003 0308 and.w r3, r3, #8 + 800b822: 2b00 cmp r3, #0 + 800b824: d011 beq.n 800b84a + 800b826: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 800b82a: f003 0320 and.w r3, r3, #32 + 800b82e: 2b00 cmp r3, #0 + 800b830: d105 bne.n 800b83e || ((cr3its & USART_CR3_EIE) != RESET))) - 800b2be: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc - 800b2c2: f003 0301 and.w r3, r3, #1 - 800b2c6: 2b00 cmp r3, #0 - 800b2c8: d005 beq.n 800b2d6 + 800b832: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc + 800b836: f003 0301 and.w r3, r3, #1 + 800b83a: 2b00 cmp r3, #0 + 800b83c: d005 beq.n 800b84a { huart->ErrorCode |= HAL_UART_ERROR_ORE; - 800b2ca: 687b ldr r3, [r7, #4] - 800b2cc: 6c5b ldr r3, [r3, #68] @ 0x44 - 800b2ce: f043 0208 orr.w r2, r3, #8 - 800b2d2: 687b ldr r3, [r7, #4] - 800b2d4: 645a str r2, [r3, #68] @ 0x44 + 800b83e: 687b ldr r3, [r7, #4] + 800b840: 6c5b ldr r3, [r3, #68] @ 0x44 + 800b842: f043 0208 orr.w r2, r3, #8 + 800b846: 687b ldr r3, [r7, #4] + 800b848: 645a str r2, [r3, #68] @ 0x44 } /* Call UART Error Call back function if need be --------------------------*/ if (huart->ErrorCode != HAL_UART_ERROR_NONE) - 800b2d6: 687b ldr r3, [r7, #4] - 800b2d8: 6c5b ldr r3, [r3, #68] @ 0x44 - 800b2da: 2b00 cmp r3, #0 - 800b2dc: f000 81f2 beq.w 800b6c4 + 800b84a: 687b ldr r3, [r7, #4] + 800b84c: 6c5b ldr r3, [r3, #68] @ 0x44 + 800b84e: 2b00 cmp r3, #0 + 800b850: f000 81f2 beq.w 800bc38 { /* UART in mode Receiver -----------------------------------------------*/ if (((isrflags & USART_SR_RXNE) != RESET) && ((cr1its & USART_CR1_RXNEIE) != RESET)) - 800b2e0: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 800b2e4: f003 0320 and.w r3, r3, #32 - 800b2e8: 2b00 cmp r3, #0 - 800b2ea: d008 beq.n 800b2fe - 800b2ec: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 800b2f0: f003 0320 and.w r3, r3, #32 - 800b2f4: 2b00 cmp r3, #0 - 800b2f6: d002 beq.n 800b2fe + 800b854: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 800b858: f003 0320 and.w r3, r3, #32 + 800b85c: 2b00 cmp r3, #0 + 800b85e: d008 beq.n 800b872 + 800b860: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 800b864: f003 0320 and.w r3, r3, #32 + 800b868: 2b00 cmp r3, #0 + 800b86a: d002 beq.n 800b872 { UART_Receive_IT(huart); - 800b2f8: 6878 ldr r0, [r7, #4] - 800b2fa: f000 fd24 bl 800bd46 + 800b86c: 6878 ldr r0, [r7, #4] + 800b86e: f000 fd24 bl 800c2ba } /* 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); - 800b2fe: 687b ldr r3, [r7, #4] - 800b300: 681b ldr r3, [r3, #0] - 800b302: 695b ldr r3, [r3, #20] - 800b304: f003 0340 and.w r3, r3, #64 @ 0x40 - 800b308: 2b40 cmp r3, #64 @ 0x40 - 800b30a: bf0c ite eq - 800b30c: 2301 moveq r3, #1 - 800b30e: 2300 movne r3, #0 - 800b310: b2db uxtb r3, r3 - 800b312: f8c7 30d4 str.w r3, [r7, #212] @ 0xd4 + 800b872: 687b ldr r3, [r7, #4] + 800b874: 681b ldr r3, [r3, #0] + 800b876: 695b ldr r3, [r3, #20] + 800b878: f003 0340 and.w r3, r3, #64 @ 0x40 + 800b87c: 2b40 cmp r3, #64 @ 0x40 + 800b87e: bf0c ite eq + 800b880: 2301 moveq r3, #1 + 800b882: 2300 movne r3, #0 + 800b884: b2db uxtb r3, r3 + 800b886: f8c7 30d4 str.w r3, [r7, #212] @ 0xd4 if (((huart->ErrorCode & HAL_UART_ERROR_ORE) != RESET) || dmarequest) - 800b316: 687b ldr r3, [r7, #4] - 800b318: 6c5b ldr r3, [r3, #68] @ 0x44 - 800b31a: f003 0308 and.w r3, r3, #8 - 800b31e: 2b00 cmp r3, #0 - 800b320: d103 bne.n 800b32a - 800b322: f8d7 30d4 ldr.w r3, [r7, #212] @ 0xd4 - 800b326: 2b00 cmp r3, #0 - 800b328: d04f beq.n 800b3ca + 800b88a: 687b ldr r3, [r7, #4] + 800b88c: 6c5b ldr r3, [r3, #68] @ 0x44 + 800b88e: f003 0308 and.w r3, r3, #8 + 800b892: 2b00 cmp r3, #0 + 800b894: d103 bne.n 800b89e + 800b896: f8d7 30d4 ldr.w r3, [r7, #212] @ 0xd4 + 800b89a: 2b00 cmp r3, #0 + 800b89c: d04f beq.n 800b93e { /* 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); - 800b32a: 6878 ldr r0, [r7, #4] - 800b32c: f000 fc2c bl 800bb88 + 800b89e: 6878 ldr r0, [r7, #4] + 800b8a0: f000 fc2c bl 800c0fc /* Disable the UART DMA Rx request if enabled */ if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) - 800b330: 687b ldr r3, [r7, #4] - 800b332: 681b ldr r3, [r3, #0] - 800b334: 695b ldr r3, [r3, #20] - 800b336: f003 0340 and.w r3, r3, #64 @ 0x40 - 800b33a: 2b40 cmp r3, #64 @ 0x40 - 800b33c: d141 bne.n 800b3c2 + 800b8a4: 687b ldr r3, [r7, #4] + 800b8a6: 681b ldr r3, [r3, #0] + 800b8a8: 695b ldr r3, [r3, #20] + 800b8aa: f003 0340 and.w r3, r3, #64 @ 0x40 + 800b8ae: 2b40 cmp r3, #64 @ 0x40 + 800b8b0: d141 bne.n 800b936 { ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); - 800b33e: 687b ldr r3, [r7, #4] - 800b340: 681b ldr r3, [r3, #0] - 800b342: 3314 adds r3, #20 - 800b344: f8c7 309c str.w r3, [r7, #156] @ 0x9c + 800b8b2: 687b ldr r3, [r7, #4] + 800b8b4: 681b ldr r3, [r3, #0] + 800b8b6: 3314 adds r3, #20 + 800b8b8: f8c7 309c str.w r3, [r7, #156] @ 0x9c __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800b348: f8d7 309c ldr.w r3, [r7, #156] @ 0x9c - 800b34c: e853 3f00 ldrex r3, [r3] - 800b350: f8c7 3098 str.w r3, [r7, #152] @ 0x98 + 800b8bc: f8d7 309c ldr.w r3, [r7, #156] @ 0x9c + 800b8c0: e853 3f00 ldrex r3, [r3] + 800b8c4: f8c7 3098 str.w r3, [r7, #152] @ 0x98 return(result); - 800b354: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 - 800b358: f023 0340 bic.w r3, r3, #64 @ 0x40 - 800b35c: f8c7 30d0 str.w r3, [r7, #208] @ 0xd0 - 800b360: 687b ldr r3, [r7, #4] - 800b362: 681b ldr r3, [r3, #0] - 800b364: 3314 adds r3, #20 - 800b366: f8d7 20d0 ldr.w r2, [r7, #208] @ 0xd0 - 800b36a: f8c7 20a8 str.w r2, [r7, #168] @ 0xa8 - 800b36e: f8c7 30a4 str.w r3, [r7, #164] @ 0xa4 + 800b8c8: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 + 800b8cc: f023 0340 bic.w r3, r3, #64 @ 0x40 + 800b8d0: f8c7 30d0 str.w r3, [r7, #208] @ 0xd0 + 800b8d4: 687b ldr r3, [r7, #4] + 800b8d6: 681b ldr r3, [r3, #0] + 800b8d8: 3314 adds r3, #20 + 800b8da: f8d7 20d0 ldr.w r2, [r7, #208] @ 0xd0 + 800b8de: f8c7 20a8 str.w r2, [r7, #168] @ 0xa8 + 800b8e2: f8c7 30a4 str.w r3, [r7, #164] @ 0xa4 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800b372: f8d7 10a4 ldr.w r1, [r7, #164] @ 0xa4 - 800b376: f8d7 20a8 ldr.w r2, [r7, #168] @ 0xa8 - 800b37a: e841 2300 strex r3, r2, [r1] - 800b37e: f8c7 30a0 str.w r3, [r7, #160] @ 0xa0 + 800b8e6: f8d7 10a4 ldr.w r1, [r7, #164] @ 0xa4 + 800b8ea: f8d7 20a8 ldr.w r2, [r7, #168] @ 0xa8 + 800b8ee: e841 2300 strex r3, r2, [r1] + 800b8f2: f8c7 30a0 str.w r3, [r7, #160] @ 0xa0 return(result); - 800b382: f8d7 30a0 ldr.w r3, [r7, #160] @ 0xa0 - 800b386: 2b00 cmp r3, #0 - 800b388: d1d9 bne.n 800b33e + 800b8f6: f8d7 30a0 ldr.w r3, [r7, #160] @ 0xa0 + 800b8fa: 2b00 cmp r3, #0 + 800b8fc: d1d9 bne.n 800b8b2 /* Abort the UART DMA Rx stream */ if (huart->hdmarx != NULL) - 800b38a: 687b ldr r3, [r7, #4] - 800b38c: 6bdb ldr r3, [r3, #60] @ 0x3c - 800b38e: 2b00 cmp r3, #0 - 800b390: d013 beq.n 800b3ba + 800b8fe: 687b ldr r3, [r7, #4] + 800b900: 6bdb ldr r3, [r3, #60] @ 0x3c + 800b902: 2b00 cmp r3, #0 + 800b904: d013 beq.n 800b92e { /* Set the UART DMA Abort callback : will lead to call HAL_UART_ErrorCallback() at end of DMA abort procedure */ huart->hdmarx->XferAbortCallback = UART_DMAAbortOnError; - 800b392: 687b ldr r3, [r7, #4] - 800b394: 6bdb ldr r3, [r3, #60] @ 0x3c - 800b396: 4a7e ldr r2, [pc, #504] @ (800b590 ) - 800b398: 651a str r2, [r3, #80] @ 0x50 + 800b906: 687b ldr r3, [r7, #4] + 800b908: 6bdb ldr r3, [r3, #60] @ 0x3c + 800b90a: 4a7e ldr r2, [pc, #504] @ (800bb04 ) + 800b90c: 651a str r2, [r3, #80] @ 0x50 if (HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK) - 800b39a: 687b ldr r3, [r7, #4] - 800b39c: 6bdb ldr r3, [r3, #60] @ 0x3c - 800b39e: 4618 mov r0, r3 - 800b3a0: f7fb fd40 bl 8006e24 - 800b3a4: 4603 mov r3, r0 - 800b3a6: 2b00 cmp r3, #0 - 800b3a8: d016 beq.n 800b3d8 + 800b90e: 687b ldr r3, [r7, #4] + 800b910: 6bdb ldr r3, [r3, #60] @ 0x3c + 800b912: 4618 mov r0, r3 + 800b914: f7fb fbb0 bl 8007078 + 800b918: 4603 mov r3, r0 + 800b91a: 2b00 cmp r3, #0 + 800b91c: d016 beq.n 800b94c { /* Call Directly XferAbortCallback function in case of error */ huart->hdmarx->XferAbortCallback(huart->hdmarx); - 800b3aa: 687b ldr r3, [r7, #4] - 800b3ac: 6bdb ldr r3, [r3, #60] @ 0x3c - 800b3ae: 6d1b ldr r3, [r3, #80] @ 0x50 - 800b3b0: 687a ldr r2, [r7, #4] - 800b3b2: 6bd2 ldr r2, [r2, #60] @ 0x3c - 800b3b4: 4610 mov r0, r2 - 800b3b6: 4798 blx r3 + 800b91e: 687b ldr r3, [r7, #4] + 800b920: 6bdb ldr r3, [r3, #60] @ 0x3c + 800b922: 6d1b ldr r3, [r3, #80] @ 0x50 + 800b924: 687a ldr r2, [r7, #4] + 800b926: 6bd2 ldr r2, [r2, #60] @ 0x3c + 800b928: 4610 mov r0, r2 + 800b92a: 4798 blx r3 if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) - 800b3b8: e00e b.n 800b3d8 + 800b92c: e00e b.n 800b94c #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered error callback*/ huart->ErrorCallback(huart); #else /*Call legacy weak error callback*/ HAL_UART_ErrorCallback(huart); - 800b3ba: 6878 ldr r0, [r7, #4] - 800b3bc: f000 f9b2 bl 800b724 + 800b92e: 6878 ldr r0, [r7, #4] + 800b930: f000 f9b2 bl 800bc98 if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) - 800b3c0: e00a b.n 800b3d8 + 800b934: e00a b.n 800b94c #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered error callback*/ huart->ErrorCallback(huart); #else /*Call legacy weak error callback*/ HAL_UART_ErrorCallback(huart); - 800b3c2: 6878 ldr r0, [r7, #4] - 800b3c4: f000 f9ae bl 800b724 + 800b936: 6878 ldr r0, [r7, #4] + 800b938: f000 f9ae bl 800bc98 if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) - 800b3c8: e006 b.n 800b3d8 + 800b93c: e006 b.n 800b94c #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered error callback*/ huart->ErrorCallback(huart); #else /*Call legacy weak error callback*/ HAL_UART_ErrorCallback(huart); - 800b3ca: 6878 ldr r0, [r7, #4] - 800b3cc: f000 f9aa bl 800b724 + 800b93e: 6878 ldr r0, [r7, #4] + 800b940: f000 f9aa bl 800bc98 #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ huart->ErrorCode = HAL_UART_ERROR_NONE; - 800b3d0: 687b ldr r3, [r7, #4] - 800b3d2: 2200 movs r2, #0 - 800b3d4: 645a str r2, [r3, #68] @ 0x44 + 800b944: 687b ldr r3, [r7, #4] + 800b946: 2200 movs r2, #0 + 800b948: 645a str r2, [r3, #68] @ 0x44 } } return; - 800b3d6: e175 b.n 800b6c4 + 800b94a: e175 b.n 800bc38 if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) - 800b3d8: bf00 nop + 800b94c: bf00 nop return; - 800b3da: e173 b.n 800b6c4 + 800b94e: e173 b.n 800bc38 } /* End if some error occurs */ /* Check current reception Mode : If Reception till IDLE event has been selected : */ if ((huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) - 800b3dc: 687b ldr r3, [r7, #4] - 800b3de: 6b1b ldr r3, [r3, #48] @ 0x30 - 800b3e0: 2b01 cmp r3, #1 - 800b3e2: f040 814f bne.w 800b684 + 800b950: 687b ldr r3, [r7, #4] + 800b952: 6b1b ldr r3, [r3, #48] @ 0x30 + 800b954: 2b01 cmp r3, #1 + 800b956: f040 814f bne.w 800bbf8 && ((isrflags & USART_SR_IDLE) != 0U) - 800b3e6: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 800b3ea: f003 0310 and.w r3, r3, #16 - 800b3ee: 2b00 cmp r3, #0 - 800b3f0: f000 8148 beq.w 800b684 + 800b95a: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 800b95e: f003 0310 and.w r3, r3, #16 + 800b962: 2b00 cmp r3, #0 + 800b964: f000 8148 beq.w 800bbf8 && ((cr1its & USART_SR_IDLE) != 0U)) - 800b3f4: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 800b3f8: f003 0310 and.w r3, r3, #16 - 800b3fc: 2b00 cmp r3, #0 - 800b3fe: f000 8141 beq.w 800b684 + 800b968: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 800b96c: f003 0310 and.w r3, r3, #16 + 800b970: 2b00 cmp r3, #0 + 800b972: f000 8141 beq.w 800bbf8 { __HAL_UART_CLEAR_IDLEFLAG(huart); - 800b402: 2300 movs r3, #0 - 800b404: 60bb str r3, [r7, #8] - 800b406: 687b ldr r3, [r7, #4] - 800b408: 681b ldr r3, [r3, #0] - 800b40a: 681b ldr r3, [r3, #0] - 800b40c: 60bb str r3, [r7, #8] - 800b40e: 687b ldr r3, [r7, #4] - 800b410: 681b ldr r3, [r3, #0] - 800b412: 685b ldr r3, [r3, #4] - 800b414: 60bb str r3, [r7, #8] - 800b416: 68bb ldr r3, [r7, #8] + 800b976: 2300 movs r3, #0 + 800b978: 60bb str r3, [r7, #8] + 800b97a: 687b ldr r3, [r7, #4] + 800b97c: 681b ldr r3, [r3, #0] + 800b97e: 681b ldr r3, [r3, #0] + 800b980: 60bb str r3, [r7, #8] + 800b982: 687b ldr r3, [r7, #4] + 800b984: 681b ldr r3, [r3, #0] + 800b986: 685b ldr r3, [r3, #4] + 800b988: 60bb str r3, [r7, #8] + 800b98a: 68bb ldr r3, [r7, #8] /* Check if DMA mode is enabled in UART */ if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) - 800b418: 687b ldr r3, [r7, #4] - 800b41a: 681b ldr r3, [r3, #0] - 800b41c: 695b ldr r3, [r3, #20] - 800b41e: f003 0340 and.w r3, r3, #64 @ 0x40 - 800b422: 2b40 cmp r3, #64 @ 0x40 - 800b424: f040 80b6 bne.w 800b594 + 800b98c: 687b ldr r3, [r7, #4] + 800b98e: 681b ldr r3, [r3, #0] + 800b990: 695b ldr r3, [r3, #20] + 800b992: f003 0340 and.w r3, r3, #64 @ 0x40 + 800b996: 2b40 cmp r3, #64 @ 0x40 + 800b998: f040 80b6 bne.w 800bb08 { /* 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); - 800b428: 687b ldr r3, [r7, #4] - 800b42a: 6bdb ldr r3, [r3, #60] @ 0x3c - 800b42c: 681b ldr r3, [r3, #0] - 800b42e: 685b ldr r3, [r3, #4] - 800b430: f8a7 30be strh.w r3, [r7, #190] @ 0xbe + 800b99c: 687b ldr r3, [r7, #4] + 800b99e: 6bdb ldr r3, [r3, #60] @ 0x3c + 800b9a0: 681b ldr r3, [r3, #0] + 800b9a2: 685b ldr r3, [r3, #4] + 800b9a4: f8a7 30be strh.w r3, [r7, #190] @ 0xbe if ((nb_remaining_rx_data > 0U) - 800b434: f8b7 30be ldrh.w r3, [r7, #190] @ 0xbe - 800b438: 2b00 cmp r3, #0 - 800b43a: f000 8145 beq.w 800b6c8 + 800b9a8: f8b7 30be ldrh.w r3, [r7, #190] @ 0xbe + 800b9ac: 2b00 cmp r3, #0 + 800b9ae: f000 8145 beq.w 800bc3c && (nb_remaining_rx_data < huart->RxXferSize)) - 800b43e: 687b ldr r3, [r7, #4] - 800b440: 8d9b ldrh r3, [r3, #44] @ 0x2c - 800b442: f8b7 20be ldrh.w r2, [r7, #190] @ 0xbe - 800b446: 429a cmp r2, r3 - 800b448: f080 813e bcs.w 800b6c8 + 800b9b2: 687b ldr r3, [r7, #4] + 800b9b4: 8d9b ldrh r3, [r3, #44] @ 0x2c + 800b9b6: f8b7 20be ldrh.w r2, [r7, #190] @ 0xbe + 800b9ba: 429a cmp r2, r3 + 800b9bc: f080 813e bcs.w 800bc3c { /* Reception is not complete */ huart->RxXferCount = nb_remaining_rx_data; - 800b44c: 687b ldr r3, [r7, #4] - 800b44e: f8b7 20be ldrh.w r2, [r7, #190] @ 0xbe - 800b452: 85da strh r2, [r3, #46] @ 0x2e + 800b9c0: 687b ldr r3, [r7, #4] + 800b9c2: f8b7 20be ldrh.w r2, [r7, #190] @ 0xbe + 800b9c6: 85da strh r2, [r3, #46] @ 0x2e /* In Normal mode, end DMA xfer and HAL UART Rx process*/ if (huart->hdmarx->Init.Mode != DMA_CIRCULAR) - 800b454: 687b ldr r3, [r7, #4] - 800b456: 6bdb ldr r3, [r3, #60] @ 0x3c - 800b458: 69db ldr r3, [r3, #28] - 800b45a: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 800b45e: f000 8088 beq.w 800b572 + 800b9c8: 687b ldr r3, [r7, #4] + 800b9ca: 6bdb ldr r3, [r3, #60] @ 0x3c + 800b9cc: 69db ldr r3, [r3, #28] + 800b9ce: f5b3 7f80 cmp.w r3, #256 @ 0x100 + 800b9d2: f000 8088 beq.w 800bae6 { /* Disable PE and ERR (Frame error, noise error, overrun error) interrupts */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE); - 800b462: 687b ldr r3, [r7, #4] - 800b464: 681b ldr r3, [r3, #0] - 800b466: 330c adds r3, #12 - 800b468: f8c7 3088 str.w r3, [r7, #136] @ 0x88 + 800b9d6: 687b ldr r3, [r7, #4] + 800b9d8: 681b ldr r3, [r3, #0] + 800b9da: 330c adds r3, #12 + 800b9dc: f8c7 3088 str.w r3, [r7, #136] @ 0x88 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800b46c: f8d7 3088 ldr.w r3, [r7, #136] @ 0x88 - 800b470: e853 3f00 ldrex r3, [r3] - 800b474: f8c7 3084 str.w r3, [r7, #132] @ 0x84 + 800b9e0: f8d7 3088 ldr.w r3, [r7, #136] @ 0x88 + 800b9e4: e853 3f00 ldrex r3, [r3] + 800b9e8: f8c7 3084 str.w r3, [r7, #132] @ 0x84 return(result); - 800b478: f8d7 3084 ldr.w r3, [r7, #132] @ 0x84 - 800b47c: f423 7380 bic.w r3, r3, #256 @ 0x100 - 800b480: f8c7 30b8 str.w r3, [r7, #184] @ 0xb8 - 800b484: 687b ldr r3, [r7, #4] - 800b486: 681b ldr r3, [r3, #0] - 800b488: 330c adds r3, #12 - 800b48a: f8d7 20b8 ldr.w r2, [r7, #184] @ 0xb8 - 800b48e: f8c7 2094 str.w r2, [r7, #148] @ 0x94 - 800b492: f8c7 3090 str.w r3, [r7, #144] @ 0x90 + 800b9ec: f8d7 3084 ldr.w r3, [r7, #132] @ 0x84 + 800b9f0: f423 7380 bic.w r3, r3, #256 @ 0x100 + 800b9f4: f8c7 30b8 str.w r3, [r7, #184] @ 0xb8 + 800b9f8: 687b ldr r3, [r7, #4] + 800b9fa: 681b ldr r3, [r3, #0] + 800b9fc: 330c adds r3, #12 + 800b9fe: f8d7 20b8 ldr.w r2, [r7, #184] @ 0xb8 + 800ba02: f8c7 2094 str.w r2, [r7, #148] @ 0x94 + 800ba06: f8c7 3090 str.w r3, [r7, #144] @ 0x90 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800b496: f8d7 1090 ldr.w r1, [r7, #144] @ 0x90 - 800b49a: f8d7 2094 ldr.w r2, [r7, #148] @ 0x94 - 800b49e: e841 2300 strex r3, r2, [r1] - 800b4a2: f8c7 308c str.w r3, [r7, #140] @ 0x8c + 800ba0a: f8d7 1090 ldr.w r1, [r7, #144] @ 0x90 + 800ba0e: f8d7 2094 ldr.w r2, [r7, #148] @ 0x94 + 800ba12: e841 2300 strex r3, r2, [r1] + 800ba16: f8c7 308c str.w r3, [r7, #140] @ 0x8c return(result); - 800b4a6: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 800b4aa: 2b00 cmp r3, #0 - 800b4ac: d1d9 bne.n 800b462 + 800ba1a: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 800ba1e: 2b00 cmp r3, #0 + 800ba20: d1d9 bne.n 800b9d6 ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); - 800b4ae: 687b ldr r3, [r7, #4] - 800b4b0: 681b ldr r3, [r3, #0] - 800b4b2: 3314 adds r3, #20 - 800b4b4: 677b str r3, [r7, #116] @ 0x74 + 800ba22: 687b ldr r3, [r7, #4] + 800ba24: 681b ldr r3, [r3, #0] + 800ba26: 3314 adds r3, #20 + 800ba28: 677b str r3, [r7, #116] @ 0x74 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800b4b6: 6f7b ldr r3, [r7, #116] @ 0x74 - 800b4b8: e853 3f00 ldrex r3, [r3] - 800b4bc: 673b str r3, [r7, #112] @ 0x70 + 800ba2a: 6f7b ldr r3, [r7, #116] @ 0x74 + 800ba2c: e853 3f00 ldrex r3, [r3] + 800ba30: 673b str r3, [r7, #112] @ 0x70 return(result); - 800b4be: 6f3b ldr r3, [r7, #112] @ 0x70 - 800b4c0: f023 0301 bic.w r3, r3, #1 - 800b4c4: f8c7 30b4 str.w r3, [r7, #180] @ 0xb4 - 800b4c8: 687b ldr r3, [r7, #4] - 800b4ca: 681b ldr r3, [r3, #0] - 800b4cc: 3314 adds r3, #20 - 800b4ce: f8d7 20b4 ldr.w r2, [r7, #180] @ 0xb4 - 800b4d2: f8c7 2080 str.w r2, [r7, #128] @ 0x80 - 800b4d6: 67fb str r3, [r7, #124] @ 0x7c + 800ba32: 6f3b ldr r3, [r7, #112] @ 0x70 + 800ba34: f023 0301 bic.w r3, r3, #1 + 800ba38: f8c7 30b4 str.w r3, [r7, #180] @ 0xb4 + 800ba3c: 687b ldr r3, [r7, #4] + 800ba3e: 681b ldr r3, [r3, #0] + 800ba40: 3314 adds r3, #20 + 800ba42: f8d7 20b4 ldr.w r2, [r7, #180] @ 0xb4 + 800ba46: f8c7 2080 str.w r2, [r7, #128] @ 0x80 + 800ba4a: 67fb str r3, [r7, #124] @ 0x7c __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800b4d8: 6ff9 ldr r1, [r7, #124] @ 0x7c - 800b4da: f8d7 2080 ldr.w r2, [r7, #128] @ 0x80 - 800b4de: e841 2300 strex r3, r2, [r1] - 800b4e2: 67bb str r3, [r7, #120] @ 0x78 + 800ba4c: 6ff9 ldr r1, [r7, #124] @ 0x7c + 800ba4e: f8d7 2080 ldr.w r2, [r7, #128] @ 0x80 + 800ba52: e841 2300 strex r3, r2, [r1] + 800ba56: 67bb str r3, [r7, #120] @ 0x78 return(result); - 800b4e4: 6fbb ldr r3, [r7, #120] @ 0x78 - 800b4e6: 2b00 cmp r3, #0 - 800b4e8: d1e1 bne.n 800b4ae + 800ba58: 6fbb ldr r3, [r7, #120] @ 0x78 + 800ba5a: 2b00 cmp r3, #0 + 800ba5c: d1e1 bne.n 800ba22 /* 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); - 800b4ea: 687b ldr r3, [r7, #4] - 800b4ec: 681b ldr r3, [r3, #0] - 800b4ee: 3314 adds r3, #20 - 800b4f0: 663b str r3, [r7, #96] @ 0x60 + 800ba5e: 687b ldr r3, [r7, #4] + 800ba60: 681b ldr r3, [r3, #0] + 800ba62: 3314 adds r3, #20 + 800ba64: 663b str r3, [r7, #96] @ 0x60 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800b4f2: 6e3b ldr r3, [r7, #96] @ 0x60 - 800b4f4: e853 3f00 ldrex r3, [r3] - 800b4f8: 65fb str r3, [r7, #92] @ 0x5c + 800ba66: 6e3b ldr r3, [r7, #96] @ 0x60 + 800ba68: e853 3f00 ldrex r3, [r3] + 800ba6c: 65fb str r3, [r7, #92] @ 0x5c return(result); - 800b4fa: 6dfb ldr r3, [r7, #92] @ 0x5c - 800b4fc: f023 0340 bic.w r3, r3, #64 @ 0x40 - 800b500: f8c7 30b0 str.w r3, [r7, #176] @ 0xb0 - 800b504: 687b ldr r3, [r7, #4] - 800b506: 681b ldr r3, [r3, #0] - 800b508: 3314 adds r3, #20 - 800b50a: f8d7 20b0 ldr.w r2, [r7, #176] @ 0xb0 - 800b50e: 66fa str r2, [r7, #108] @ 0x6c - 800b510: 66bb str r3, [r7, #104] @ 0x68 + 800ba6e: 6dfb ldr r3, [r7, #92] @ 0x5c + 800ba70: f023 0340 bic.w r3, r3, #64 @ 0x40 + 800ba74: f8c7 30b0 str.w r3, [r7, #176] @ 0xb0 + 800ba78: 687b ldr r3, [r7, #4] + 800ba7a: 681b ldr r3, [r3, #0] + 800ba7c: 3314 adds r3, #20 + 800ba7e: f8d7 20b0 ldr.w r2, [r7, #176] @ 0xb0 + 800ba82: 66fa str r2, [r7, #108] @ 0x6c + 800ba84: 66bb str r3, [r7, #104] @ 0x68 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800b512: 6eb9 ldr r1, [r7, #104] @ 0x68 - 800b514: 6efa ldr r2, [r7, #108] @ 0x6c - 800b516: e841 2300 strex r3, r2, [r1] - 800b51a: 667b str r3, [r7, #100] @ 0x64 + 800ba86: 6eb9 ldr r1, [r7, #104] @ 0x68 + 800ba88: 6efa ldr r2, [r7, #108] @ 0x6c + 800ba8a: e841 2300 strex r3, r2, [r1] + 800ba8e: 667b str r3, [r7, #100] @ 0x64 return(result); - 800b51c: 6e7b ldr r3, [r7, #100] @ 0x64 - 800b51e: 2b00 cmp r3, #0 - 800b520: d1e3 bne.n 800b4ea + 800ba90: 6e7b ldr r3, [r7, #100] @ 0x64 + 800ba92: 2b00 cmp r3, #0 + 800ba94: d1e3 bne.n 800ba5e /* At end of Rx process, restore huart->RxState to Ready */ huart->RxState = HAL_UART_STATE_READY; - 800b522: 687b ldr r3, [r7, #4] - 800b524: 2220 movs r2, #32 - 800b526: f883 2042 strb.w r2, [r3, #66] @ 0x42 + 800ba96: 687b ldr r3, [r7, #4] + 800ba98: 2220 movs r2, #32 + 800ba9a: f883 2042 strb.w r2, [r3, #66] @ 0x42 huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 800b52a: 687b ldr r3, [r7, #4] - 800b52c: 2200 movs r2, #0 - 800b52e: 631a str r2, [r3, #48] @ 0x30 + 800ba9e: 687b ldr r3, [r7, #4] + 800baa0: 2200 movs r2, #0 + 800baa2: 631a str r2, [r3, #48] @ 0x30 ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); - 800b530: 687b ldr r3, [r7, #4] - 800b532: 681b ldr r3, [r3, #0] - 800b534: 330c adds r3, #12 - 800b536: 64fb str r3, [r7, #76] @ 0x4c + 800baa4: 687b ldr r3, [r7, #4] + 800baa6: 681b ldr r3, [r3, #0] + 800baa8: 330c adds r3, #12 + 800baaa: 64fb str r3, [r7, #76] @ 0x4c __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800b538: 6cfb ldr r3, [r7, #76] @ 0x4c - 800b53a: e853 3f00 ldrex r3, [r3] - 800b53e: 64bb str r3, [r7, #72] @ 0x48 + 800baac: 6cfb ldr r3, [r7, #76] @ 0x4c + 800baae: e853 3f00 ldrex r3, [r3] + 800bab2: 64bb str r3, [r7, #72] @ 0x48 return(result); - 800b540: 6cbb ldr r3, [r7, #72] @ 0x48 - 800b542: f023 0310 bic.w r3, r3, #16 - 800b546: f8c7 30ac str.w r3, [r7, #172] @ 0xac - 800b54a: 687b ldr r3, [r7, #4] - 800b54c: 681b ldr r3, [r3, #0] - 800b54e: 330c adds r3, #12 - 800b550: f8d7 20ac ldr.w r2, [r7, #172] @ 0xac - 800b554: 65ba str r2, [r7, #88] @ 0x58 - 800b556: 657b str r3, [r7, #84] @ 0x54 + 800bab4: 6cbb ldr r3, [r7, #72] @ 0x48 + 800bab6: f023 0310 bic.w r3, r3, #16 + 800baba: f8c7 30ac str.w r3, [r7, #172] @ 0xac + 800babe: 687b ldr r3, [r7, #4] + 800bac0: 681b ldr r3, [r3, #0] + 800bac2: 330c adds r3, #12 + 800bac4: f8d7 20ac ldr.w r2, [r7, #172] @ 0xac + 800bac8: 65ba str r2, [r7, #88] @ 0x58 + 800baca: 657b str r3, [r7, #84] @ 0x54 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800b558: 6d79 ldr r1, [r7, #84] @ 0x54 - 800b55a: 6dba ldr r2, [r7, #88] @ 0x58 - 800b55c: e841 2300 strex r3, r2, [r1] - 800b560: 653b str r3, [r7, #80] @ 0x50 + 800bacc: 6d79 ldr r1, [r7, #84] @ 0x54 + 800bace: 6dba ldr r2, [r7, #88] @ 0x58 + 800bad0: e841 2300 strex r3, r2, [r1] + 800bad4: 653b str r3, [r7, #80] @ 0x50 return(result); - 800b562: 6d3b ldr r3, [r7, #80] @ 0x50 - 800b564: 2b00 cmp r3, #0 - 800b566: d1e3 bne.n 800b530 + 800bad6: 6d3b ldr r3, [r7, #80] @ 0x50 + 800bad8: 2b00 cmp r3, #0 + 800bada: d1e3 bne.n 800baa4 /* Last bytes received, so no need as the abort is immediate */ (void)HAL_DMA_Abort(huart->hdmarx); - 800b568: 687b ldr r3, [r7, #4] - 800b56a: 6bdb ldr r3, [r3, #60] @ 0x3c - 800b56c: 4618 mov r0, r3 - 800b56e: f7fb fbe9 bl 8006d44 + 800badc: 687b ldr r3, [r7, #4] + 800bade: 6bdb ldr r3, [r3, #60] @ 0x3c + 800bae0: 4618 mov r0, r3 + 800bae2: f7fb fa59 bl 8006f98 } /* 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; - 800b572: 687b ldr r3, [r7, #4] - 800b574: 2202 movs r2, #2 - 800b576: 635a str r2, [r3, #52] @ 0x34 + 800bae6: 687b ldr r3, [r7, #4] + 800bae8: 2202 movs r2, #2 + 800baea: 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)); - 800b578: 687b ldr r3, [r7, #4] - 800b57a: 8d9a ldrh r2, [r3, #44] @ 0x2c - 800b57c: 687b ldr r3, [r7, #4] - 800b57e: 8ddb ldrh r3, [r3, #46] @ 0x2e - 800b580: b29b uxth r3, r3 - 800b582: 1ad3 subs r3, r2, r3 - 800b584: b29b uxth r3, r3 - 800b586: 4619 mov r1, r3 - 800b588: 6878 ldr r0, [r7, #4] - 800b58a: f000 f8d5 bl 800b738 + 800baec: 687b ldr r3, [r7, #4] + 800baee: 8d9a ldrh r2, [r3, #44] @ 0x2c + 800baf0: 687b ldr r3, [r7, #4] + 800baf2: 8ddb ldrh r3, [r3, #46] @ 0x2e + 800baf4: b29b uxth r3, r3 + 800baf6: 1ad3 subs r3, r2, r3 + 800baf8: b29b uxth r3, r3 + 800bafa: 4619 mov r1, r3 + 800bafc: 6878 ldr r0, [r7, #4] + 800bafe: f000 f8d5 bl 800bcac #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ } return; - 800b58e: e09b b.n 800b6c8 - 800b590: 0800bc4f .word 0x0800bc4f + 800bb02: e09b b.n 800bc3c + 800bb04: 0800c1c3 .word 0x0800c1c3 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; - 800b594: 687b ldr r3, [r7, #4] - 800b596: 8d9a ldrh r2, [r3, #44] @ 0x2c - 800b598: 687b ldr r3, [r7, #4] - 800b59a: 8ddb ldrh r3, [r3, #46] @ 0x2e - 800b59c: b29b uxth r3, r3 - 800b59e: 1ad3 subs r3, r2, r3 - 800b5a0: f8a7 30ce strh.w r3, [r7, #206] @ 0xce + 800bb08: 687b ldr r3, [r7, #4] + 800bb0a: 8d9a ldrh r2, [r3, #44] @ 0x2c + 800bb0c: 687b ldr r3, [r7, #4] + 800bb0e: 8ddb ldrh r3, [r3, #46] @ 0x2e + 800bb10: b29b uxth r3, r3 + 800bb12: 1ad3 subs r3, r2, r3 + 800bb14: f8a7 30ce strh.w r3, [r7, #206] @ 0xce if ((huart->RxXferCount > 0U) - 800b5a4: 687b ldr r3, [r7, #4] - 800b5a6: 8ddb ldrh r3, [r3, #46] @ 0x2e - 800b5a8: b29b uxth r3, r3 - 800b5aa: 2b00 cmp r3, #0 - 800b5ac: f000 808e beq.w 800b6cc + 800bb18: 687b ldr r3, [r7, #4] + 800bb1a: 8ddb ldrh r3, [r3, #46] @ 0x2e + 800bb1c: b29b uxth r3, r3 + 800bb1e: 2b00 cmp r3, #0 + 800bb20: f000 808e beq.w 800bc40 && (nb_rx_data > 0U)) - 800b5b0: f8b7 30ce ldrh.w r3, [r7, #206] @ 0xce - 800b5b4: 2b00 cmp r3, #0 - 800b5b6: f000 8089 beq.w 800b6cc + 800bb24: f8b7 30ce ldrh.w r3, [r7, #206] @ 0xce + 800bb28: 2b00 cmp r3, #0 + 800bb2a: f000 8089 beq.w 800bc40 { /* Disable the UART Parity Error Interrupt and RXNE interrupts */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); - 800b5ba: 687b ldr r3, [r7, #4] - 800b5bc: 681b ldr r3, [r3, #0] - 800b5be: 330c adds r3, #12 - 800b5c0: 63bb str r3, [r7, #56] @ 0x38 + 800bb2e: 687b ldr r3, [r7, #4] + 800bb30: 681b ldr r3, [r3, #0] + 800bb32: 330c adds r3, #12 + 800bb34: 63bb str r3, [r7, #56] @ 0x38 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800b5c2: 6bbb ldr r3, [r7, #56] @ 0x38 - 800b5c4: e853 3f00 ldrex r3, [r3] - 800b5c8: 637b str r3, [r7, #52] @ 0x34 + 800bb36: 6bbb ldr r3, [r7, #56] @ 0x38 + 800bb38: e853 3f00 ldrex r3, [r3] + 800bb3c: 637b str r3, [r7, #52] @ 0x34 return(result); - 800b5ca: 6b7b ldr r3, [r7, #52] @ 0x34 - 800b5cc: f423 7390 bic.w r3, r3, #288 @ 0x120 - 800b5d0: f8c7 30c8 str.w r3, [r7, #200] @ 0xc8 - 800b5d4: 687b ldr r3, [r7, #4] - 800b5d6: 681b ldr r3, [r3, #0] - 800b5d8: 330c adds r3, #12 - 800b5da: f8d7 20c8 ldr.w r2, [r7, #200] @ 0xc8 - 800b5de: 647a str r2, [r7, #68] @ 0x44 - 800b5e0: 643b str r3, [r7, #64] @ 0x40 + 800bb3e: 6b7b ldr r3, [r7, #52] @ 0x34 + 800bb40: f423 7390 bic.w r3, r3, #288 @ 0x120 + 800bb44: f8c7 30c8 str.w r3, [r7, #200] @ 0xc8 + 800bb48: 687b ldr r3, [r7, #4] + 800bb4a: 681b ldr r3, [r3, #0] + 800bb4c: 330c adds r3, #12 + 800bb4e: f8d7 20c8 ldr.w r2, [r7, #200] @ 0xc8 + 800bb52: 647a str r2, [r7, #68] @ 0x44 + 800bb54: 643b str r3, [r7, #64] @ 0x40 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800b5e2: 6c39 ldr r1, [r7, #64] @ 0x40 - 800b5e4: 6c7a ldr r2, [r7, #68] @ 0x44 - 800b5e6: e841 2300 strex r3, r2, [r1] - 800b5ea: 63fb str r3, [r7, #60] @ 0x3c + 800bb56: 6c39 ldr r1, [r7, #64] @ 0x40 + 800bb58: 6c7a ldr r2, [r7, #68] @ 0x44 + 800bb5a: e841 2300 strex r3, r2, [r1] + 800bb5e: 63fb str r3, [r7, #60] @ 0x3c return(result); - 800b5ec: 6bfb ldr r3, [r7, #60] @ 0x3c - 800b5ee: 2b00 cmp r3, #0 - 800b5f0: d1e3 bne.n 800b5ba + 800bb60: 6bfb ldr r3, [r7, #60] @ 0x3c + 800bb62: 2b00 cmp r3, #0 + 800bb64: d1e3 bne.n 800bb2e /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */ ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); - 800b5f2: 687b ldr r3, [r7, #4] - 800b5f4: 681b ldr r3, [r3, #0] - 800b5f6: 3314 adds r3, #20 - 800b5f8: 627b str r3, [r7, #36] @ 0x24 + 800bb66: 687b ldr r3, [r7, #4] + 800bb68: 681b ldr r3, [r3, #0] + 800bb6a: 3314 adds r3, #20 + 800bb6c: 627b str r3, [r7, #36] @ 0x24 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800b5fa: 6a7b ldr r3, [r7, #36] @ 0x24 - 800b5fc: e853 3f00 ldrex r3, [r3] - 800b600: 623b str r3, [r7, #32] + 800bb6e: 6a7b ldr r3, [r7, #36] @ 0x24 + 800bb70: e853 3f00 ldrex r3, [r3] + 800bb74: 623b str r3, [r7, #32] return(result); - 800b602: 6a3b ldr r3, [r7, #32] - 800b604: f023 0301 bic.w r3, r3, #1 - 800b608: f8c7 30c4 str.w r3, [r7, #196] @ 0xc4 - 800b60c: 687b ldr r3, [r7, #4] - 800b60e: 681b ldr r3, [r3, #0] - 800b610: 3314 adds r3, #20 - 800b612: f8d7 20c4 ldr.w r2, [r7, #196] @ 0xc4 - 800b616: 633a str r2, [r7, #48] @ 0x30 - 800b618: 62fb str r3, [r7, #44] @ 0x2c + 800bb76: 6a3b ldr r3, [r7, #32] + 800bb78: f023 0301 bic.w r3, r3, #1 + 800bb7c: f8c7 30c4 str.w r3, [r7, #196] @ 0xc4 + 800bb80: 687b ldr r3, [r7, #4] + 800bb82: 681b ldr r3, [r3, #0] + 800bb84: 3314 adds r3, #20 + 800bb86: f8d7 20c4 ldr.w r2, [r7, #196] @ 0xc4 + 800bb8a: 633a str r2, [r7, #48] @ 0x30 + 800bb8c: 62fb str r3, [r7, #44] @ 0x2c __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800b61a: 6af9 ldr r1, [r7, #44] @ 0x2c - 800b61c: 6b3a ldr r2, [r7, #48] @ 0x30 - 800b61e: e841 2300 strex r3, r2, [r1] - 800b622: 62bb str r3, [r7, #40] @ 0x28 + 800bb8e: 6af9 ldr r1, [r7, #44] @ 0x2c + 800bb90: 6b3a ldr r2, [r7, #48] @ 0x30 + 800bb92: e841 2300 strex r3, r2, [r1] + 800bb96: 62bb str r3, [r7, #40] @ 0x28 return(result); - 800b624: 6abb ldr r3, [r7, #40] @ 0x28 - 800b626: 2b00 cmp r3, #0 - 800b628: d1e3 bne.n 800b5f2 + 800bb98: 6abb ldr r3, [r7, #40] @ 0x28 + 800bb9a: 2b00 cmp r3, #0 + 800bb9c: d1e3 bne.n 800bb66 /* Rx process is completed, restore huart->RxState to Ready */ huart->RxState = HAL_UART_STATE_READY; - 800b62a: 687b ldr r3, [r7, #4] - 800b62c: 2220 movs r2, #32 - 800b62e: f883 2042 strb.w r2, [r3, #66] @ 0x42 + 800bb9e: 687b ldr r3, [r7, #4] + 800bba0: 2220 movs r2, #32 + 800bba2: f883 2042 strb.w r2, [r3, #66] @ 0x42 huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 800b632: 687b ldr r3, [r7, #4] - 800b634: 2200 movs r2, #0 - 800b636: 631a str r2, [r3, #48] @ 0x30 + 800bba6: 687b ldr r3, [r7, #4] + 800bba8: 2200 movs r2, #0 + 800bbaa: 631a str r2, [r3, #48] @ 0x30 ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); - 800b638: 687b ldr r3, [r7, #4] - 800b63a: 681b ldr r3, [r3, #0] - 800b63c: 330c adds r3, #12 - 800b63e: 613b str r3, [r7, #16] + 800bbac: 687b ldr r3, [r7, #4] + 800bbae: 681b ldr r3, [r3, #0] + 800bbb0: 330c adds r3, #12 + 800bbb2: 613b str r3, [r7, #16] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800b640: 693b ldr r3, [r7, #16] - 800b642: e853 3f00 ldrex r3, [r3] - 800b646: 60fb str r3, [r7, #12] + 800bbb4: 693b ldr r3, [r7, #16] + 800bbb6: e853 3f00 ldrex r3, [r3] + 800bbba: 60fb str r3, [r7, #12] return(result); - 800b648: 68fb ldr r3, [r7, #12] - 800b64a: f023 0310 bic.w r3, r3, #16 - 800b64e: f8c7 30c0 str.w r3, [r7, #192] @ 0xc0 - 800b652: 687b ldr r3, [r7, #4] - 800b654: 681b ldr r3, [r3, #0] - 800b656: 330c adds r3, #12 - 800b658: f8d7 20c0 ldr.w r2, [r7, #192] @ 0xc0 - 800b65c: 61fa str r2, [r7, #28] - 800b65e: 61bb str r3, [r7, #24] + 800bbbc: 68fb ldr r3, [r7, #12] + 800bbbe: f023 0310 bic.w r3, r3, #16 + 800bbc2: f8c7 30c0 str.w r3, [r7, #192] @ 0xc0 + 800bbc6: 687b ldr r3, [r7, #4] + 800bbc8: 681b ldr r3, [r3, #0] + 800bbca: 330c adds r3, #12 + 800bbcc: f8d7 20c0 ldr.w r2, [r7, #192] @ 0xc0 + 800bbd0: 61fa str r2, [r7, #28] + 800bbd2: 61bb str r3, [r7, #24] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800b660: 69b9 ldr r1, [r7, #24] - 800b662: 69fa ldr r2, [r7, #28] - 800b664: e841 2300 strex r3, r2, [r1] - 800b668: 617b str r3, [r7, #20] + 800bbd4: 69b9 ldr r1, [r7, #24] + 800bbd6: 69fa ldr r2, [r7, #28] + 800bbd8: e841 2300 strex r3, r2, [r1] + 800bbdc: 617b str r3, [r7, #20] return(result); - 800b66a: 697b ldr r3, [r7, #20] - 800b66c: 2b00 cmp r3, #0 - 800b66e: d1e3 bne.n 800b638 + 800bbde: 697b ldr r3, [r7, #20] + 800bbe0: 2b00 cmp r3, #0 + 800bbe2: d1e3 bne.n 800bbac /* 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; - 800b670: 687b ldr r3, [r7, #4] - 800b672: 2202 movs r2, #2 - 800b674: 635a str r2, [r3, #52] @ 0x34 + 800bbe4: 687b ldr r3, [r7, #4] + 800bbe6: 2202 movs r2, #2 + 800bbe8: 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); - 800b676: f8b7 30ce ldrh.w r3, [r7, #206] @ 0xce - 800b67a: 4619 mov r1, r3 - 800b67c: 6878 ldr r0, [r7, #4] - 800b67e: f000 f85b bl 800b738 + 800bbea: f8b7 30ce ldrh.w r3, [r7, #206] @ 0xce + 800bbee: 4619 mov r1, r3 + 800bbf0: 6878 ldr r0, [r7, #4] + 800bbf2: f000 f85b bl 800bcac #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ } return; - 800b682: e023 b.n 800b6cc + 800bbf6: e023 b.n 800bc40 } } /* UART in mode Transmitter ------------------------------------------------*/ if (((isrflags & USART_SR_TXE) != RESET) && ((cr1its & USART_CR1_TXEIE) != RESET)) - 800b684: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 800b688: f003 0380 and.w r3, r3, #128 @ 0x80 - 800b68c: 2b00 cmp r3, #0 - 800b68e: d009 beq.n 800b6a4 - 800b690: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 800b694: f003 0380 and.w r3, r3, #128 @ 0x80 - 800b698: 2b00 cmp r3, #0 - 800b69a: d003 beq.n 800b6a4 + 800bbf8: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 800bbfc: f003 0380 and.w r3, r3, #128 @ 0x80 + 800bc00: 2b00 cmp r3, #0 + 800bc02: d009 beq.n 800bc18 + 800bc04: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 800bc08: f003 0380 and.w r3, r3, #128 @ 0x80 + 800bc0c: 2b00 cmp r3, #0 + 800bc0e: d003 beq.n 800bc18 { UART_Transmit_IT(huart); - 800b69c: 6878 ldr r0, [r7, #4] - 800b69e: f000 faea bl 800bc76 + 800bc10: 6878 ldr r0, [r7, #4] + 800bc12: f000 faea bl 800c1ea return; - 800b6a2: e014 b.n 800b6ce + 800bc16: e014 b.n 800bc42 } /* UART in mode Transmitter end --------------------------------------------*/ if (((isrflags & USART_SR_TC) != RESET) && ((cr1its & USART_CR1_TCIE) != RESET)) - 800b6a4: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 800b6a8: f003 0340 and.w r3, r3, #64 @ 0x40 - 800b6ac: 2b00 cmp r3, #0 - 800b6ae: d00e beq.n 800b6ce - 800b6b0: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 800b6b4: f003 0340 and.w r3, r3, #64 @ 0x40 - 800b6b8: 2b00 cmp r3, #0 - 800b6ba: d008 beq.n 800b6ce + 800bc18: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 800bc1c: f003 0340 and.w r3, r3, #64 @ 0x40 + 800bc20: 2b00 cmp r3, #0 + 800bc22: d00e beq.n 800bc42 + 800bc24: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 800bc28: f003 0340 and.w r3, r3, #64 @ 0x40 + 800bc2c: 2b00 cmp r3, #0 + 800bc2e: d008 beq.n 800bc42 { UART_EndTransmit_IT(huart); - 800b6bc: 6878 ldr r0, [r7, #4] - 800b6be: f000 fb2a bl 800bd16 + 800bc30: 6878 ldr r0, [r7, #4] + 800bc32: f000 fb2a bl 800c28a return; - 800b6c2: e004 b.n 800b6ce + 800bc36: e004 b.n 800bc42 return; - 800b6c4: bf00 nop - 800b6c6: e002 b.n 800b6ce + 800bc38: bf00 nop + 800bc3a: e002 b.n 800bc42 return; - 800b6c8: bf00 nop - 800b6ca: e000 b.n 800b6ce + 800bc3c: bf00 nop + 800bc3e: e000 b.n 800bc42 return; - 800b6cc: bf00 nop + 800bc40: bf00 nop } } - 800b6ce: 37e8 adds r7, #232 @ 0xe8 - 800b6d0: 46bd mov sp, r7 - 800b6d2: bd80 pop {r7, pc} + 800bc42: 37e8 adds r7, #232 @ 0xe8 + 800bc44: 46bd mov sp, r7 + 800bc46: bd80 pop {r7, pc} -0800b6d4 : +0800bc48 : * @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) { - 800b6d4: b480 push {r7} - 800b6d6: b083 sub sp, #12 - 800b6d8: af00 add r7, sp, #0 - 800b6da: 6078 str r0, [r7, #4] + 800bc48: b480 push {r7} + 800bc4a: b083 sub sp, #12 + 800bc4c: af00 add r7, sp, #0 + 800bc4e: 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 */ } - 800b6dc: bf00 nop - 800b6de: 370c adds r7, #12 - 800b6e0: 46bd mov sp, r7 - 800b6e2: f85d 7b04 ldr.w r7, [sp], #4 - 800b6e6: 4770 bx lr + 800bc50: bf00 nop + 800bc52: 370c adds r7, #12 + 800bc54: 46bd mov sp, r7 + 800bc56: f85d 7b04 ldr.w r7, [sp], #4 + 800bc5a: 4770 bx lr -0800b6e8 : +0800bc5c : * @param huart Pointer to a UART_HandleTypeDef structure that contains * the configuration information for the specified UART module. * @retval None */ __weak void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart) { - 800b6e8: b480 push {r7} - 800b6ea: b083 sub sp, #12 - 800b6ec: af00 add r7, sp, #0 - 800b6ee: 6078 str r0, [r7, #4] + 800bc5c: b480 push {r7} + 800bc5e: b083 sub sp, #12 + 800bc60: af00 add r7, sp, #0 + 800bc62: 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_TxHalfCpltCallback could be implemented in the user file */ } - 800b6f0: bf00 nop - 800b6f2: 370c adds r7, #12 - 800b6f4: 46bd mov sp, r7 - 800b6f6: f85d 7b04 ldr.w r7, [sp], #4 - 800b6fa: 4770 bx lr + 800bc64: bf00 nop + 800bc66: 370c adds r7, #12 + 800bc68: 46bd mov sp, r7 + 800bc6a: f85d 7b04 ldr.w r7, [sp], #4 + 800bc6e: 4770 bx lr -0800b6fc : +0800bc70 : * @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) { - 800b6fc: b480 push {r7} - 800b6fe: b083 sub sp, #12 - 800b700: af00 add r7, sp, #0 - 800b702: 6078 str r0, [r7, #4] + 800bc70: b480 push {r7} + 800bc72: b083 sub sp, #12 + 800bc74: af00 add r7, sp, #0 + 800bc76: 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 */ } - 800b704: bf00 nop - 800b706: 370c adds r7, #12 - 800b708: 46bd mov sp, r7 - 800b70a: f85d 7b04 ldr.w r7, [sp], #4 - 800b70e: 4770 bx lr + 800bc78: bf00 nop + 800bc7a: 370c adds r7, #12 + 800bc7c: 46bd mov sp, r7 + 800bc7e: f85d 7b04 ldr.w r7, [sp], #4 + 800bc82: 4770 bx lr -0800b710 : +0800bc84 : * @param huart Pointer to a UART_HandleTypeDef structure that contains * the configuration information for the specified UART module. * @retval None */ __weak void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart) { - 800b710: b480 push {r7} - 800b712: b083 sub sp, #12 - 800b714: af00 add r7, sp, #0 - 800b716: 6078 str r0, [r7, #4] + 800bc84: b480 push {r7} + 800bc86: b083 sub sp, #12 + 800bc88: af00 add r7, sp, #0 + 800bc8a: 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_RxHalfCpltCallback could be implemented in the user file */ } - 800b718: bf00 nop - 800b71a: 370c adds r7, #12 - 800b71c: 46bd mov sp, r7 - 800b71e: f85d 7b04 ldr.w r7, [sp], #4 - 800b722: 4770 bx lr + 800bc8c: bf00 nop + 800bc8e: 370c adds r7, #12 + 800bc90: 46bd mov sp, r7 + 800bc92: f85d 7b04 ldr.w r7, [sp], #4 + 800bc96: 4770 bx lr -0800b724 : +0800bc98 : * @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) { - 800b724: b480 push {r7} - 800b726: b083 sub sp, #12 - 800b728: af00 add r7, sp, #0 - 800b72a: 6078 str r0, [r7, #4] + 800bc98: b480 push {r7} + 800bc9a: b083 sub sp, #12 + 800bc9c: af00 add r7, sp, #0 + 800bc9e: 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 */ } - 800b72c: bf00 nop - 800b72e: 370c adds r7, #12 - 800b730: 46bd mov sp, r7 - 800b732: f85d 7b04 ldr.w r7, [sp], #4 - 800b736: 4770 bx lr + 800bca0: bf00 nop + 800bca2: 370c adds r7, #12 + 800bca4: 46bd mov sp, r7 + 800bca6: f85d 7b04 ldr.w r7, [sp], #4 + 800bcaa: 4770 bx lr -0800b738 : +0800bcac : * @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) { - 800b738: b480 push {r7} - 800b73a: b083 sub sp, #12 - 800b73c: af00 add r7, sp, #0 - 800b73e: 6078 str r0, [r7, #4] - 800b740: 460b mov r3, r1 - 800b742: 807b strh r3, [r7, #2] + 800bcac: b480 push {r7} + 800bcae: b083 sub sp, #12 + 800bcb0: af00 add r7, sp, #0 + 800bcb2: 6078 str r0, [r7, #4] + 800bcb4: 460b mov r3, r1 + 800bcb6: 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. */ } - 800b744: bf00 nop - 800b746: 370c adds r7, #12 - 800b748: 46bd mov sp, r7 - 800b74a: f85d 7b04 ldr.w r7, [sp], #4 - 800b74e: 4770 bx lr + 800bcb8: bf00 nop + 800bcba: 370c adds r7, #12 + 800bcbc: 46bd mov sp, r7 + 800bcbe: f85d 7b04 ldr.w r7, [sp], #4 + 800bcc2: 4770 bx lr -0800b750 : +0800bcc4 : * @param hdma Pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA module. * @retval None */ static void UART_DMATransmitCplt(DMA_HandleTypeDef *hdma) { - 800b750: b580 push {r7, lr} - 800b752: b090 sub sp, #64 @ 0x40 - 800b754: af00 add r7, sp, #0 - 800b756: 6078 str r0, [r7, #4] + 800bcc4: b580 push {r7, lr} + 800bcc6: b090 sub sp, #64 @ 0x40 + 800bcc8: af00 add r7, sp, #0 + 800bcca: 6078 str r0, [r7, #4] UART_HandleTypeDef *huart = (UART_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; - 800b758: 687b ldr r3, [r7, #4] - 800b75a: 6b9b ldr r3, [r3, #56] @ 0x38 - 800b75c: 63fb str r3, [r7, #60] @ 0x3c + 800bccc: 687b ldr r3, [r7, #4] + 800bcce: 6b9b ldr r3, [r3, #56] @ 0x38 + 800bcd0: 63fb str r3, [r7, #60] @ 0x3c /* DMA Normal mode*/ if ((hdma->Instance->CR & DMA_SxCR_CIRC) == 0U) - 800b75e: 687b ldr r3, [r7, #4] - 800b760: 681b ldr r3, [r3, #0] - 800b762: 681b ldr r3, [r3, #0] - 800b764: f403 7380 and.w r3, r3, #256 @ 0x100 - 800b768: 2b00 cmp r3, #0 - 800b76a: d137 bne.n 800b7dc + 800bcd2: 687b ldr r3, [r7, #4] + 800bcd4: 681b ldr r3, [r3, #0] + 800bcd6: 681b ldr r3, [r3, #0] + 800bcd8: f403 7380 and.w r3, r3, #256 @ 0x100 + 800bcdc: 2b00 cmp r3, #0 + 800bcde: d137 bne.n 800bd50 { huart->TxXferCount = 0x00U; - 800b76c: 6bfb ldr r3, [r7, #60] @ 0x3c - 800b76e: 2200 movs r2, #0 - 800b770: 84da strh r2, [r3, #38] @ 0x26 + 800bce0: 6bfb ldr r3, [r7, #60] @ 0x3c + 800bce2: 2200 movs r2, #0 + 800bce4: 84da strh r2, [r3, #38] @ 0x26 /* Disable the DMA transfer for transmit request by setting the DMAT bit in the UART CR3 register */ ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT); - 800b772: 6bfb ldr r3, [r7, #60] @ 0x3c - 800b774: 681b ldr r3, [r3, #0] - 800b776: 3314 adds r3, #20 - 800b778: 627b str r3, [r7, #36] @ 0x24 + 800bce6: 6bfb ldr r3, [r7, #60] @ 0x3c + 800bce8: 681b ldr r3, [r3, #0] + 800bcea: 3314 adds r3, #20 + 800bcec: 627b str r3, [r7, #36] @ 0x24 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800b77a: 6a7b ldr r3, [r7, #36] @ 0x24 - 800b77c: e853 3f00 ldrex r3, [r3] - 800b780: 623b str r3, [r7, #32] + 800bcee: 6a7b ldr r3, [r7, #36] @ 0x24 + 800bcf0: e853 3f00 ldrex r3, [r3] + 800bcf4: 623b str r3, [r7, #32] return(result); - 800b782: 6a3b ldr r3, [r7, #32] - 800b784: f023 0380 bic.w r3, r3, #128 @ 0x80 - 800b788: 63bb str r3, [r7, #56] @ 0x38 - 800b78a: 6bfb ldr r3, [r7, #60] @ 0x3c - 800b78c: 681b ldr r3, [r3, #0] - 800b78e: 3314 adds r3, #20 - 800b790: 6bba ldr r2, [r7, #56] @ 0x38 - 800b792: 633a str r2, [r7, #48] @ 0x30 - 800b794: 62fb str r3, [r7, #44] @ 0x2c + 800bcf6: 6a3b ldr r3, [r7, #32] + 800bcf8: f023 0380 bic.w r3, r3, #128 @ 0x80 + 800bcfc: 63bb str r3, [r7, #56] @ 0x38 + 800bcfe: 6bfb ldr r3, [r7, #60] @ 0x3c + 800bd00: 681b ldr r3, [r3, #0] + 800bd02: 3314 adds r3, #20 + 800bd04: 6bba ldr r2, [r7, #56] @ 0x38 + 800bd06: 633a str r2, [r7, #48] @ 0x30 + 800bd08: 62fb str r3, [r7, #44] @ 0x2c __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800b796: 6af9 ldr r1, [r7, #44] @ 0x2c - 800b798: 6b3a ldr r2, [r7, #48] @ 0x30 - 800b79a: e841 2300 strex r3, r2, [r1] - 800b79e: 62bb str r3, [r7, #40] @ 0x28 + 800bd0a: 6af9 ldr r1, [r7, #44] @ 0x2c + 800bd0c: 6b3a ldr r2, [r7, #48] @ 0x30 + 800bd0e: e841 2300 strex r3, r2, [r1] + 800bd12: 62bb str r3, [r7, #40] @ 0x28 return(result); - 800b7a0: 6abb ldr r3, [r7, #40] @ 0x28 - 800b7a2: 2b00 cmp r3, #0 - 800b7a4: d1e5 bne.n 800b772 + 800bd14: 6abb ldr r3, [r7, #40] @ 0x28 + 800bd16: 2b00 cmp r3, #0 + 800bd18: d1e5 bne.n 800bce6 /* Enable the UART Transmit Complete Interrupt */ ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TCIE); - 800b7a6: 6bfb ldr r3, [r7, #60] @ 0x3c - 800b7a8: 681b ldr r3, [r3, #0] - 800b7aa: 330c adds r3, #12 - 800b7ac: 613b str r3, [r7, #16] + 800bd1a: 6bfb ldr r3, [r7, #60] @ 0x3c + 800bd1c: 681b ldr r3, [r3, #0] + 800bd1e: 330c adds r3, #12 + 800bd20: 613b str r3, [r7, #16] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800b7ae: 693b ldr r3, [r7, #16] - 800b7b0: e853 3f00 ldrex r3, [r3] - 800b7b4: 60fb str r3, [r7, #12] + 800bd22: 693b ldr r3, [r7, #16] + 800bd24: e853 3f00 ldrex r3, [r3] + 800bd28: 60fb str r3, [r7, #12] return(result); - 800b7b6: 68fb ldr r3, [r7, #12] - 800b7b8: f043 0340 orr.w r3, r3, #64 @ 0x40 - 800b7bc: 637b str r3, [r7, #52] @ 0x34 - 800b7be: 6bfb ldr r3, [r7, #60] @ 0x3c - 800b7c0: 681b ldr r3, [r3, #0] - 800b7c2: 330c adds r3, #12 - 800b7c4: 6b7a ldr r2, [r7, #52] @ 0x34 - 800b7c6: 61fa str r2, [r7, #28] - 800b7c8: 61bb str r3, [r7, #24] + 800bd2a: 68fb ldr r3, [r7, #12] + 800bd2c: f043 0340 orr.w r3, r3, #64 @ 0x40 + 800bd30: 637b str r3, [r7, #52] @ 0x34 + 800bd32: 6bfb ldr r3, [r7, #60] @ 0x3c + 800bd34: 681b ldr r3, [r3, #0] + 800bd36: 330c adds r3, #12 + 800bd38: 6b7a ldr r2, [r7, #52] @ 0x34 + 800bd3a: 61fa str r2, [r7, #28] + 800bd3c: 61bb str r3, [r7, #24] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800b7ca: 69b9 ldr r1, [r7, #24] - 800b7cc: 69fa ldr r2, [r7, #28] - 800b7ce: e841 2300 strex r3, r2, [r1] - 800b7d2: 617b str r3, [r7, #20] + 800bd3e: 69b9 ldr r1, [r7, #24] + 800bd40: 69fa ldr r2, [r7, #28] + 800bd42: e841 2300 strex r3, r2, [r1] + 800bd46: 617b str r3, [r7, #20] return(result); - 800b7d4: 697b ldr r3, [r7, #20] - 800b7d6: 2b00 cmp r3, #0 - 800b7d8: d1e5 bne.n 800b7a6 + 800bd48: 697b ldr r3, [r7, #20] + 800bd4a: 2b00 cmp r3, #0 + 800bd4c: d1e5 bne.n 800bd1a #else /*Call legacy weak Tx complete callback*/ HAL_UART_TxCpltCallback(huart); #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ } } - 800b7da: e002 b.n 800b7e2 + 800bd4e: e002 b.n 800bd56 HAL_UART_TxCpltCallback(huart); - 800b7dc: 6bf8 ldr r0, [r7, #60] @ 0x3c - 800b7de: f7ff ff79 bl 800b6d4 + 800bd50: 6bf8 ldr r0, [r7, #60] @ 0x3c + 800bd52: f7ff ff79 bl 800bc48 } - 800b7e2: bf00 nop - 800b7e4: 3740 adds r7, #64 @ 0x40 - 800b7e6: 46bd mov sp, r7 - 800b7e8: bd80 pop {r7, pc} + 800bd56: bf00 nop + 800bd58: 3740 adds r7, #64 @ 0x40 + 800bd5a: 46bd mov sp, r7 + 800bd5c: bd80 pop {r7, pc} -0800b7ea : +0800bd5e : * @param hdma Pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA module. * @retval None */ static void UART_DMATxHalfCplt(DMA_HandleTypeDef *hdma) { - 800b7ea: b580 push {r7, lr} - 800b7ec: b084 sub sp, #16 - 800b7ee: af00 add r7, sp, #0 - 800b7f0: 6078 str r0, [r7, #4] + 800bd5e: b580 push {r7, lr} + 800bd60: b084 sub sp, #16 + 800bd62: af00 add r7, sp, #0 + 800bd64: 6078 str r0, [r7, #4] UART_HandleTypeDef *huart = (UART_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; - 800b7f2: 687b ldr r3, [r7, #4] - 800b7f4: 6b9b ldr r3, [r3, #56] @ 0x38 - 800b7f6: 60fb str r3, [r7, #12] + 800bd66: 687b ldr r3, [r7, #4] + 800bd68: 6b9b ldr r3, [r3, #56] @ 0x38 + 800bd6a: 60fb str r3, [r7, #12] #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered Tx complete callback*/ huart->TxHalfCpltCallback(huart); #else /*Call legacy weak Tx complete callback*/ HAL_UART_TxHalfCpltCallback(huart); - 800b7f8: 68f8 ldr r0, [r7, #12] - 800b7fa: f7ff ff75 bl 800b6e8 + 800bd6c: 68f8 ldr r0, [r7, #12] + 800bd6e: f7ff ff75 bl 800bc5c #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ } - 800b7fe: bf00 nop - 800b800: 3710 adds r7, #16 - 800b802: 46bd mov sp, r7 - 800b804: bd80 pop {r7, pc} + 800bd72: bf00 nop + 800bd74: 3710 adds r7, #16 + 800bd76: 46bd mov sp, r7 + 800bd78: bd80 pop {r7, pc} -0800b806 : +0800bd7a : * @param hdma Pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA module. * @retval None */ static void UART_DMAReceiveCplt(DMA_HandleTypeDef *hdma) { - 800b806: b580 push {r7, lr} - 800b808: b09c sub sp, #112 @ 0x70 - 800b80a: af00 add r7, sp, #0 - 800b80c: 6078 str r0, [r7, #4] + 800bd7a: b580 push {r7, lr} + 800bd7c: b09c sub sp, #112 @ 0x70 + 800bd7e: af00 add r7, sp, #0 + 800bd80: 6078 str r0, [r7, #4] UART_HandleTypeDef *huart = (UART_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; - 800b80e: 687b ldr r3, [r7, #4] - 800b810: 6b9b ldr r3, [r3, #56] @ 0x38 - 800b812: 66fb str r3, [r7, #108] @ 0x6c + 800bd82: 687b ldr r3, [r7, #4] + 800bd84: 6b9b ldr r3, [r3, #56] @ 0x38 + 800bd86: 66fb str r3, [r7, #108] @ 0x6c /* DMA Normal mode*/ if ((hdma->Instance->CR & DMA_SxCR_CIRC) == 0U) - 800b814: 687b ldr r3, [r7, #4] - 800b816: 681b ldr r3, [r3, #0] - 800b818: 681b ldr r3, [r3, #0] - 800b81a: f403 7380 and.w r3, r3, #256 @ 0x100 - 800b81e: 2b00 cmp r3, #0 - 800b820: d172 bne.n 800b908 + 800bd88: 687b ldr r3, [r7, #4] + 800bd8a: 681b ldr r3, [r3, #0] + 800bd8c: 681b ldr r3, [r3, #0] + 800bd8e: f403 7380 and.w r3, r3, #256 @ 0x100 + 800bd92: 2b00 cmp r3, #0 + 800bd94: d172 bne.n 800be7c { huart->RxXferCount = 0U; - 800b822: 6efb ldr r3, [r7, #108] @ 0x6c - 800b824: 2200 movs r2, #0 - 800b826: 85da strh r2, [r3, #46] @ 0x2e + 800bd96: 6efb ldr r3, [r7, #108] @ 0x6c + 800bd98: 2200 movs r2, #0 + 800bd9a: 85da strh r2, [r3, #46] @ 0x2e /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE); - 800b828: 6efb ldr r3, [r7, #108] @ 0x6c - 800b82a: 681b ldr r3, [r3, #0] - 800b82c: 330c adds r3, #12 - 800b82e: 64fb str r3, [r7, #76] @ 0x4c + 800bd9c: 6efb ldr r3, [r7, #108] @ 0x6c + 800bd9e: 681b ldr r3, [r3, #0] + 800bda0: 330c adds r3, #12 + 800bda2: 64fb str r3, [r7, #76] @ 0x4c __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800b830: 6cfb ldr r3, [r7, #76] @ 0x4c - 800b832: e853 3f00 ldrex r3, [r3] - 800b836: 64bb str r3, [r7, #72] @ 0x48 + 800bda4: 6cfb ldr r3, [r7, #76] @ 0x4c + 800bda6: e853 3f00 ldrex r3, [r3] + 800bdaa: 64bb str r3, [r7, #72] @ 0x48 return(result); - 800b838: 6cbb ldr r3, [r7, #72] @ 0x48 - 800b83a: f423 7380 bic.w r3, r3, #256 @ 0x100 - 800b83e: 66bb str r3, [r7, #104] @ 0x68 - 800b840: 6efb ldr r3, [r7, #108] @ 0x6c - 800b842: 681b ldr r3, [r3, #0] - 800b844: 330c adds r3, #12 - 800b846: 6eba ldr r2, [r7, #104] @ 0x68 - 800b848: 65ba str r2, [r7, #88] @ 0x58 - 800b84a: 657b str r3, [r7, #84] @ 0x54 + 800bdac: 6cbb ldr r3, [r7, #72] @ 0x48 + 800bdae: f423 7380 bic.w r3, r3, #256 @ 0x100 + 800bdb2: 66bb str r3, [r7, #104] @ 0x68 + 800bdb4: 6efb ldr r3, [r7, #108] @ 0x6c + 800bdb6: 681b ldr r3, [r3, #0] + 800bdb8: 330c adds r3, #12 + 800bdba: 6eba ldr r2, [r7, #104] @ 0x68 + 800bdbc: 65ba str r2, [r7, #88] @ 0x58 + 800bdbe: 657b str r3, [r7, #84] @ 0x54 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800b84c: 6d79 ldr r1, [r7, #84] @ 0x54 - 800b84e: 6dba ldr r2, [r7, #88] @ 0x58 - 800b850: e841 2300 strex r3, r2, [r1] - 800b854: 653b str r3, [r7, #80] @ 0x50 + 800bdc0: 6d79 ldr r1, [r7, #84] @ 0x54 + 800bdc2: 6dba ldr r2, [r7, #88] @ 0x58 + 800bdc4: e841 2300 strex r3, r2, [r1] + 800bdc8: 653b str r3, [r7, #80] @ 0x50 return(result); - 800b856: 6d3b ldr r3, [r7, #80] @ 0x50 - 800b858: 2b00 cmp r3, #0 - 800b85a: d1e5 bne.n 800b828 + 800bdca: 6d3b ldr r3, [r7, #80] @ 0x50 + 800bdcc: 2b00 cmp r3, #0 + 800bdce: d1e5 bne.n 800bd9c ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); - 800b85c: 6efb ldr r3, [r7, #108] @ 0x6c - 800b85e: 681b ldr r3, [r3, #0] - 800b860: 3314 adds r3, #20 - 800b862: 63bb str r3, [r7, #56] @ 0x38 + 800bdd0: 6efb ldr r3, [r7, #108] @ 0x6c + 800bdd2: 681b ldr r3, [r3, #0] + 800bdd4: 3314 adds r3, #20 + 800bdd6: 63bb str r3, [r7, #56] @ 0x38 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800b864: 6bbb ldr r3, [r7, #56] @ 0x38 - 800b866: e853 3f00 ldrex r3, [r3] - 800b86a: 637b str r3, [r7, #52] @ 0x34 + 800bdd8: 6bbb ldr r3, [r7, #56] @ 0x38 + 800bdda: e853 3f00 ldrex r3, [r3] + 800bdde: 637b str r3, [r7, #52] @ 0x34 return(result); - 800b86c: 6b7b ldr r3, [r7, #52] @ 0x34 - 800b86e: f023 0301 bic.w r3, r3, #1 - 800b872: 667b str r3, [r7, #100] @ 0x64 - 800b874: 6efb ldr r3, [r7, #108] @ 0x6c - 800b876: 681b ldr r3, [r3, #0] - 800b878: 3314 adds r3, #20 - 800b87a: 6e7a ldr r2, [r7, #100] @ 0x64 - 800b87c: 647a str r2, [r7, #68] @ 0x44 - 800b87e: 643b str r3, [r7, #64] @ 0x40 + 800bde0: 6b7b ldr r3, [r7, #52] @ 0x34 + 800bde2: f023 0301 bic.w r3, r3, #1 + 800bde6: 667b str r3, [r7, #100] @ 0x64 + 800bde8: 6efb ldr r3, [r7, #108] @ 0x6c + 800bdea: 681b ldr r3, [r3, #0] + 800bdec: 3314 adds r3, #20 + 800bdee: 6e7a ldr r2, [r7, #100] @ 0x64 + 800bdf0: 647a str r2, [r7, #68] @ 0x44 + 800bdf2: 643b str r3, [r7, #64] @ 0x40 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800b880: 6c39 ldr r1, [r7, #64] @ 0x40 - 800b882: 6c7a ldr r2, [r7, #68] @ 0x44 - 800b884: e841 2300 strex r3, r2, [r1] - 800b888: 63fb str r3, [r7, #60] @ 0x3c + 800bdf4: 6c39 ldr r1, [r7, #64] @ 0x40 + 800bdf6: 6c7a ldr r2, [r7, #68] @ 0x44 + 800bdf8: e841 2300 strex r3, r2, [r1] + 800bdfc: 63fb str r3, [r7, #60] @ 0x3c return(result); - 800b88a: 6bfb ldr r3, [r7, #60] @ 0x3c - 800b88c: 2b00 cmp r3, #0 - 800b88e: d1e5 bne.n 800b85c + 800bdfe: 6bfb ldr r3, [r7, #60] @ 0x3c + 800be00: 2b00 cmp r3, #0 + 800be02: d1e5 bne.n 800bdd0 /* Disable the DMA transfer for the receiver request by setting the DMAR bit in the UART CR3 register */ ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); - 800b890: 6efb ldr r3, [r7, #108] @ 0x6c - 800b892: 681b ldr r3, [r3, #0] - 800b894: 3314 adds r3, #20 - 800b896: 627b str r3, [r7, #36] @ 0x24 + 800be04: 6efb ldr r3, [r7, #108] @ 0x6c + 800be06: 681b ldr r3, [r3, #0] + 800be08: 3314 adds r3, #20 + 800be0a: 627b str r3, [r7, #36] @ 0x24 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800b898: 6a7b ldr r3, [r7, #36] @ 0x24 - 800b89a: e853 3f00 ldrex r3, [r3] - 800b89e: 623b str r3, [r7, #32] + 800be0c: 6a7b ldr r3, [r7, #36] @ 0x24 + 800be0e: e853 3f00 ldrex r3, [r3] + 800be12: 623b str r3, [r7, #32] return(result); - 800b8a0: 6a3b ldr r3, [r7, #32] - 800b8a2: f023 0340 bic.w r3, r3, #64 @ 0x40 - 800b8a6: 663b str r3, [r7, #96] @ 0x60 - 800b8a8: 6efb ldr r3, [r7, #108] @ 0x6c - 800b8aa: 681b ldr r3, [r3, #0] - 800b8ac: 3314 adds r3, #20 - 800b8ae: 6e3a ldr r2, [r7, #96] @ 0x60 - 800b8b0: 633a str r2, [r7, #48] @ 0x30 - 800b8b2: 62fb str r3, [r7, #44] @ 0x2c + 800be14: 6a3b ldr r3, [r7, #32] + 800be16: f023 0340 bic.w r3, r3, #64 @ 0x40 + 800be1a: 663b str r3, [r7, #96] @ 0x60 + 800be1c: 6efb ldr r3, [r7, #108] @ 0x6c + 800be1e: 681b ldr r3, [r3, #0] + 800be20: 3314 adds r3, #20 + 800be22: 6e3a ldr r2, [r7, #96] @ 0x60 + 800be24: 633a str r2, [r7, #48] @ 0x30 + 800be26: 62fb str r3, [r7, #44] @ 0x2c __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800b8b4: 6af9 ldr r1, [r7, #44] @ 0x2c - 800b8b6: 6b3a ldr r2, [r7, #48] @ 0x30 - 800b8b8: e841 2300 strex r3, r2, [r1] - 800b8bc: 62bb str r3, [r7, #40] @ 0x28 + 800be28: 6af9 ldr r1, [r7, #44] @ 0x2c + 800be2a: 6b3a ldr r2, [r7, #48] @ 0x30 + 800be2c: e841 2300 strex r3, r2, [r1] + 800be30: 62bb str r3, [r7, #40] @ 0x28 return(result); - 800b8be: 6abb ldr r3, [r7, #40] @ 0x28 - 800b8c0: 2b00 cmp r3, #0 - 800b8c2: d1e5 bne.n 800b890 + 800be32: 6abb ldr r3, [r7, #40] @ 0x28 + 800be34: 2b00 cmp r3, #0 + 800be36: d1e5 bne.n 800be04 /* At end of Rx process, restore huart->RxState to Ready */ huart->RxState = HAL_UART_STATE_READY; - 800b8c4: 6efb ldr r3, [r7, #108] @ 0x6c - 800b8c6: 2220 movs r2, #32 - 800b8c8: f883 2042 strb.w r2, [r3, #66] @ 0x42 + 800be38: 6efb ldr r3, [r7, #108] @ 0x6c + 800be3a: 2220 movs r2, #32 + 800be3c: f883 2042 strb.w r2, [r3, #66] @ 0x42 /* If Reception till IDLE event has been selected, Disable IDLE Interrupt */ if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) - 800b8cc: 6efb ldr r3, [r7, #108] @ 0x6c - 800b8ce: 6b1b ldr r3, [r3, #48] @ 0x30 - 800b8d0: 2b01 cmp r3, #1 - 800b8d2: d119 bne.n 800b908 + 800be40: 6efb ldr r3, [r7, #108] @ 0x6c + 800be42: 6b1b ldr r3, [r3, #48] @ 0x30 + 800be44: 2b01 cmp r3, #1 + 800be46: d119 bne.n 800be7c { ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); - 800b8d4: 6efb ldr r3, [r7, #108] @ 0x6c - 800b8d6: 681b ldr r3, [r3, #0] - 800b8d8: 330c adds r3, #12 - 800b8da: 613b str r3, [r7, #16] + 800be48: 6efb ldr r3, [r7, #108] @ 0x6c + 800be4a: 681b ldr r3, [r3, #0] + 800be4c: 330c adds r3, #12 + 800be4e: 613b str r3, [r7, #16] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800b8dc: 693b ldr r3, [r7, #16] - 800b8de: e853 3f00 ldrex r3, [r3] - 800b8e2: 60fb str r3, [r7, #12] + 800be50: 693b ldr r3, [r7, #16] + 800be52: e853 3f00 ldrex r3, [r3] + 800be56: 60fb str r3, [r7, #12] return(result); - 800b8e4: 68fb ldr r3, [r7, #12] - 800b8e6: f023 0310 bic.w r3, r3, #16 - 800b8ea: 65fb str r3, [r7, #92] @ 0x5c - 800b8ec: 6efb ldr r3, [r7, #108] @ 0x6c - 800b8ee: 681b ldr r3, [r3, #0] - 800b8f0: 330c adds r3, #12 - 800b8f2: 6dfa ldr r2, [r7, #92] @ 0x5c - 800b8f4: 61fa str r2, [r7, #28] - 800b8f6: 61bb str r3, [r7, #24] + 800be58: 68fb ldr r3, [r7, #12] + 800be5a: f023 0310 bic.w r3, r3, #16 + 800be5e: 65fb str r3, [r7, #92] @ 0x5c + 800be60: 6efb ldr r3, [r7, #108] @ 0x6c + 800be62: 681b ldr r3, [r3, #0] + 800be64: 330c adds r3, #12 + 800be66: 6dfa ldr r2, [r7, #92] @ 0x5c + 800be68: 61fa str r2, [r7, #28] + 800be6a: 61bb str r3, [r7, #24] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800b8f8: 69b9 ldr r1, [r7, #24] - 800b8fa: 69fa ldr r2, [r7, #28] - 800b8fc: e841 2300 strex r3, r2, [r1] - 800b900: 617b str r3, [r7, #20] + 800be6c: 69b9 ldr r1, [r7, #24] + 800be6e: 69fa ldr r2, [r7, #28] + 800be70: e841 2300 strex r3, r2, [r1] + 800be74: 617b str r3, [r7, #20] return(result); - 800b902: 697b ldr r3, [r7, #20] - 800b904: 2b00 cmp r3, #0 - 800b906: d1e5 bne.n 800b8d4 + 800be76: 697b ldr r3, [r7, #20] + 800be78: 2b00 cmp r3, #0 + 800be7a: d1e5 bne.n 800be48 } } /* Initialize type of RxEvent that correspond to RxEvent callback execution; In this case, Rx Event type is Transfer Complete */ huart->RxEventType = HAL_UART_RXEVENT_TC; - 800b908: 6efb ldr r3, [r7, #108] @ 0x6c - 800b90a: 2200 movs r2, #0 - 800b90c: 635a str r2, [r3, #52] @ 0x34 + 800be7c: 6efb ldr r3, [r7, #108] @ 0x6c + 800be7e: 2200 movs r2, #0 + 800be80: 635a str r2, [r3, #52] @ 0x34 /* Check current reception Mode : If Reception till IDLE event has been selected : use Rx Event callback */ if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) - 800b90e: 6efb ldr r3, [r7, #108] @ 0x6c - 800b910: 6b1b ldr r3, [r3, #48] @ 0x30 - 800b912: 2b01 cmp r3, #1 - 800b914: d106 bne.n 800b924 + 800be82: 6efb ldr r3, [r7, #108] @ 0x6c + 800be84: 6b1b ldr r3, [r3, #48] @ 0x30 + 800be86: 2b01 cmp r3, #1 + 800be88: d106 bne.n 800be98 #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); - 800b916: 6efb ldr r3, [r7, #108] @ 0x6c - 800b918: 8d9b ldrh r3, [r3, #44] @ 0x2c - 800b91a: 4619 mov r1, r3 - 800b91c: 6ef8 ldr r0, [r7, #108] @ 0x6c - 800b91e: f7ff ff0b bl 800b738 + 800be8a: 6efb ldr r3, [r7, #108] @ 0x6c + 800be8c: 8d9b ldrh r3, [r3, #44] @ 0x2c + 800be8e: 4619 mov r1, r3 + 800be90: 6ef8 ldr r0, [r7, #108] @ 0x6c + 800be92: f7ff ff0b bl 800bcac #else /*Call legacy weak Rx complete callback*/ HAL_UART_RxCpltCallback(huart); #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ } } - 800b922: e002 b.n 800b92a + 800be96: e002 b.n 800be9e HAL_UART_RxCpltCallback(huart); - 800b924: 6ef8 ldr r0, [r7, #108] @ 0x6c - 800b926: f7ff fee9 bl 800b6fc + 800be98: 6ef8 ldr r0, [r7, #108] @ 0x6c + 800be9a: f7ff fee9 bl 800bc70 } - 800b92a: bf00 nop - 800b92c: 3770 adds r7, #112 @ 0x70 - 800b92e: 46bd mov sp, r7 - 800b930: bd80 pop {r7, pc} + 800be9e: bf00 nop + 800bea0: 3770 adds r7, #112 @ 0x70 + 800bea2: 46bd mov sp, r7 + 800bea4: bd80 pop {r7, pc} -0800b932 : +0800bea6 : * @param hdma Pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA module. * @retval None */ static void UART_DMARxHalfCplt(DMA_HandleTypeDef *hdma) { - 800b932: b580 push {r7, lr} - 800b934: b084 sub sp, #16 - 800b936: af00 add r7, sp, #0 - 800b938: 6078 str r0, [r7, #4] + 800bea6: b580 push {r7, lr} + 800bea8: b084 sub sp, #16 + 800beaa: af00 add r7, sp, #0 + 800beac: 6078 str r0, [r7, #4] UART_HandleTypeDef *huart = (UART_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; - 800b93a: 687b ldr r3, [r7, #4] - 800b93c: 6b9b ldr r3, [r3, #56] @ 0x38 - 800b93e: 60fb str r3, [r7, #12] + 800beae: 687b ldr r3, [r7, #4] + 800beb0: 6b9b ldr r3, [r3, #56] @ 0x38 + 800beb2: 60fb str r3, [r7, #12] /* Initialize type of RxEvent that correspond to RxEvent callback execution; In this case, Rx Event type is Half Transfer */ huart->RxEventType = HAL_UART_RXEVENT_HT; - 800b940: 68fb ldr r3, [r7, #12] - 800b942: 2201 movs r2, #1 - 800b944: 635a str r2, [r3, #52] @ 0x34 + 800beb4: 68fb ldr r3, [r7, #12] + 800beb6: 2201 movs r2, #1 + 800beb8: 635a str r2, [r3, #52] @ 0x34 /* Check current reception Mode : If Reception till IDLE event has been selected : use Rx Event callback */ if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) - 800b946: 68fb ldr r3, [r7, #12] - 800b948: 6b1b ldr r3, [r3, #48] @ 0x30 - 800b94a: 2b01 cmp r3, #1 - 800b94c: d108 bne.n 800b960 + 800beba: 68fb ldr r3, [r7, #12] + 800bebc: 6b1b ldr r3, [r3, #48] @ 0x30 + 800bebe: 2b01 cmp r3, #1 + 800bec0: d108 bne.n 800bed4 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered Rx Event callback*/ huart->RxEventCallback(huart, huart->RxXferSize / 2U); #else /*Call legacy weak Rx Event callback*/ HAL_UARTEx_RxEventCallback(huart, huart->RxXferSize / 2U); - 800b94e: 68fb ldr r3, [r7, #12] - 800b950: 8d9b ldrh r3, [r3, #44] @ 0x2c - 800b952: 085b lsrs r3, r3, #1 - 800b954: b29b uxth r3, r3 - 800b956: 4619 mov r1, r3 - 800b958: 68f8 ldr r0, [r7, #12] - 800b95a: f7ff feed bl 800b738 + 800bec2: 68fb ldr r3, [r7, #12] + 800bec4: 8d9b ldrh r3, [r3, #44] @ 0x2c + 800bec6: 085b lsrs r3, r3, #1 + 800bec8: b29b uxth r3, r3 + 800beca: 4619 mov r1, r3 + 800becc: 68f8 ldr r0, [r7, #12] + 800bece: f7ff feed bl 800bcac #else /*Call legacy weak Rx Half complete callback*/ HAL_UART_RxHalfCpltCallback(huart); #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ } } - 800b95e: e002 b.n 800b966 + 800bed2: e002 b.n 800beda HAL_UART_RxHalfCpltCallback(huart); - 800b960: 68f8 ldr r0, [r7, #12] - 800b962: f7ff fed5 bl 800b710 + 800bed4: 68f8 ldr r0, [r7, #12] + 800bed6: f7ff fed5 bl 800bc84 } - 800b966: bf00 nop - 800b968: 3710 adds r7, #16 - 800b96a: 46bd mov sp, r7 - 800b96c: bd80 pop {r7, pc} + 800beda: bf00 nop + 800bedc: 3710 adds r7, #16 + 800bede: 46bd mov sp, r7 + 800bee0: bd80 pop {r7, pc} -0800b96e : +0800bee2 : * @param hdma Pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA module. * @retval None */ static void UART_DMAError(DMA_HandleTypeDef *hdma) { - 800b96e: b580 push {r7, lr} - 800b970: b084 sub sp, #16 - 800b972: af00 add r7, sp, #0 - 800b974: 6078 str r0, [r7, #4] + 800bee2: b580 push {r7, lr} + 800bee4: b084 sub sp, #16 + 800bee6: af00 add r7, sp, #0 + 800bee8: 6078 str r0, [r7, #4] uint32_t dmarequest = 0x00U; - 800b976: 2300 movs r3, #0 - 800b978: 60fb str r3, [r7, #12] + 800beea: 2300 movs r3, #0 + 800beec: 60fb str r3, [r7, #12] UART_HandleTypeDef *huart = (UART_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; - 800b97a: 687b ldr r3, [r7, #4] - 800b97c: 6b9b ldr r3, [r3, #56] @ 0x38 - 800b97e: 60bb str r3, [r7, #8] + 800beee: 687b ldr r3, [r7, #4] + 800bef0: 6b9b ldr r3, [r3, #56] @ 0x38 + 800bef2: 60bb str r3, [r7, #8] /* Stop UART DMA Tx request if ongoing */ dmarequest = HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT); - 800b980: 68bb ldr r3, [r7, #8] - 800b982: 681b ldr r3, [r3, #0] - 800b984: 695b ldr r3, [r3, #20] - 800b986: f003 0380 and.w r3, r3, #128 @ 0x80 - 800b98a: 2b80 cmp r3, #128 @ 0x80 - 800b98c: bf0c ite eq - 800b98e: 2301 moveq r3, #1 - 800b990: 2300 movne r3, #0 - 800b992: b2db uxtb r3, r3 - 800b994: 60fb str r3, [r7, #12] + 800bef4: 68bb ldr r3, [r7, #8] + 800bef6: 681b ldr r3, [r3, #0] + 800bef8: 695b ldr r3, [r3, #20] + 800befa: f003 0380 and.w r3, r3, #128 @ 0x80 + 800befe: 2b80 cmp r3, #128 @ 0x80 + 800bf00: bf0c ite eq + 800bf02: 2301 moveq r3, #1 + 800bf04: 2300 movne r3, #0 + 800bf06: b2db uxtb r3, r3 + 800bf08: 60fb str r3, [r7, #12] if ((huart->gState == HAL_UART_STATE_BUSY_TX) && dmarequest) - 800b996: 68bb ldr r3, [r7, #8] - 800b998: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 - 800b99c: b2db uxtb r3, r3 - 800b99e: 2b21 cmp r3, #33 @ 0x21 - 800b9a0: d108 bne.n 800b9b4 - 800b9a2: 68fb ldr r3, [r7, #12] - 800b9a4: 2b00 cmp r3, #0 - 800b9a6: d005 beq.n 800b9b4 + 800bf0a: 68bb ldr r3, [r7, #8] + 800bf0c: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 + 800bf10: b2db uxtb r3, r3 + 800bf12: 2b21 cmp r3, #33 @ 0x21 + 800bf14: d108 bne.n 800bf28 + 800bf16: 68fb ldr r3, [r7, #12] + 800bf18: 2b00 cmp r3, #0 + 800bf1a: d005 beq.n 800bf28 { huart->TxXferCount = 0x00U; - 800b9a8: 68bb ldr r3, [r7, #8] - 800b9aa: 2200 movs r2, #0 - 800b9ac: 84da strh r2, [r3, #38] @ 0x26 + 800bf1c: 68bb ldr r3, [r7, #8] + 800bf1e: 2200 movs r2, #0 + 800bf20: 84da strh r2, [r3, #38] @ 0x26 UART_EndTxTransfer(huart); - 800b9ae: 68b8 ldr r0, [r7, #8] - 800b9b0: f000 f8c2 bl 800bb38 + 800bf22: 68b8 ldr r0, [r7, #8] + 800bf24: f000 f8c2 bl 800c0ac } /* Stop UART DMA Rx request if ongoing */ dmarequest = HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR); - 800b9b4: 68bb ldr r3, [r7, #8] - 800b9b6: 681b ldr r3, [r3, #0] - 800b9b8: 695b ldr r3, [r3, #20] - 800b9ba: f003 0340 and.w r3, r3, #64 @ 0x40 - 800b9be: 2b40 cmp r3, #64 @ 0x40 - 800b9c0: bf0c ite eq - 800b9c2: 2301 moveq r3, #1 - 800b9c4: 2300 movne r3, #0 - 800b9c6: b2db uxtb r3, r3 - 800b9c8: 60fb str r3, [r7, #12] + 800bf28: 68bb ldr r3, [r7, #8] + 800bf2a: 681b ldr r3, [r3, #0] + 800bf2c: 695b ldr r3, [r3, #20] + 800bf2e: f003 0340 and.w r3, r3, #64 @ 0x40 + 800bf32: 2b40 cmp r3, #64 @ 0x40 + 800bf34: bf0c ite eq + 800bf36: 2301 moveq r3, #1 + 800bf38: 2300 movne r3, #0 + 800bf3a: b2db uxtb r3, r3 + 800bf3c: 60fb str r3, [r7, #12] if ((huart->RxState == HAL_UART_STATE_BUSY_RX) && dmarequest) - 800b9ca: 68bb ldr r3, [r7, #8] - 800b9cc: f893 3042 ldrb.w r3, [r3, #66] @ 0x42 - 800b9d0: b2db uxtb r3, r3 - 800b9d2: 2b22 cmp r3, #34 @ 0x22 - 800b9d4: d108 bne.n 800b9e8 - 800b9d6: 68fb ldr r3, [r7, #12] - 800b9d8: 2b00 cmp r3, #0 - 800b9da: d005 beq.n 800b9e8 + 800bf3e: 68bb ldr r3, [r7, #8] + 800bf40: f893 3042 ldrb.w r3, [r3, #66] @ 0x42 + 800bf44: b2db uxtb r3, r3 + 800bf46: 2b22 cmp r3, #34 @ 0x22 + 800bf48: d108 bne.n 800bf5c + 800bf4a: 68fb ldr r3, [r7, #12] + 800bf4c: 2b00 cmp r3, #0 + 800bf4e: d005 beq.n 800bf5c { huart->RxXferCount = 0x00U; - 800b9dc: 68bb ldr r3, [r7, #8] - 800b9de: 2200 movs r2, #0 - 800b9e0: 85da strh r2, [r3, #46] @ 0x2e + 800bf50: 68bb ldr r3, [r7, #8] + 800bf52: 2200 movs r2, #0 + 800bf54: 85da strh r2, [r3, #46] @ 0x2e UART_EndRxTransfer(huart); - 800b9e2: 68b8 ldr r0, [r7, #8] - 800b9e4: f000 f8d0 bl 800bb88 + 800bf56: 68b8 ldr r0, [r7, #8] + 800bf58: f000 f8d0 bl 800c0fc } huart->ErrorCode |= HAL_UART_ERROR_DMA; - 800b9e8: 68bb ldr r3, [r7, #8] - 800b9ea: 6c5b ldr r3, [r3, #68] @ 0x44 - 800b9ec: f043 0210 orr.w r2, r3, #16 - 800b9f0: 68bb ldr r3, [r7, #8] - 800b9f2: 645a str r2, [r3, #68] @ 0x44 + 800bf5c: 68bb ldr r3, [r7, #8] + 800bf5e: 6c5b ldr r3, [r3, #68] @ 0x44 + 800bf60: f043 0210 orr.w r2, r3, #16 + 800bf64: 68bb ldr r3, [r7, #8] + 800bf66: 645a str r2, [r3, #68] @ 0x44 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered error callback*/ huart->ErrorCallback(huart); #else /*Call legacy weak error callback*/ HAL_UART_ErrorCallback(huart); - 800b9f4: 68b8 ldr r0, [r7, #8] - 800b9f6: f7ff fe95 bl 800b724 + 800bf68: 68b8 ldr r0, [r7, #8] + 800bf6a: f7ff fe95 bl 800bc98 #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ } - 800b9fa: bf00 nop - 800b9fc: 3710 adds r7, #16 - 800b9fe: 46bd mov sp, r7 - 800ba00: bd80 pop {r7, pc} + 800bf6e: bf00 nop + 800bf70: 3710 adds r7, #16 + 800bf72: 46bd mov sp, r7 + 800bf74: bd80 pop {r7, pc} ... -0800ba04 : +0800bf78 : * @param pData Pointer to data buffer (u8 or u16 data elements). * @param Size Amount of data elements (u8 or u16) to be received. * @retval HAL status */ HAL_StatusTypeDef UART_Start_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) { - 800ba04: b580 push {r7, lr} - 800ba06: b098 sub sp, #96 @ 0x60 - 800ba08: af00 add r7, sp, #0 - 800ba0a: 60f8 str r0, [r7, #12] - 800ba0c: 60b9 str r1, [r7, #8] - 800ba0e: 4613 mov r3, r2 - 800ba10: 80fb strh r3, [r7, #6] + 800bf78: b580 push {r7, lr} + 800bf7a: b098 sub sp, #96 @ 0x60 + 800bf7c: af00 add r7, sp, #0 + 800bf7e: 60f8 str r0, [r7, #12] + 800bf80: 60b9 str r1, [r7, #8] + 800bf82: 4613 mov r3, r2 + 800bf84: 80fb strh r3, [r7, #6] uint32_t *tmp; huart->pRxBuffPtr = pData; - 800ba12: 68ba ldr r2, [r7, #8] - 800ba14: 68fb ldr r3, [r7, #12] - 800ba16: 629a str r2, [r3, #40] @ 0x28 + 800bf86: 68ba ldr r2, [r7, #8] + 800bf88: 68fb ldr r3, [r7, #12] + 800bf8a: 629a str r2, [r3, #40] @ 0x28 huart->RxXferSize = Size; - 800ba18: 68fb ldr r3, [r7, #12] - 800ba1a: 88fa ldrh r2, [r7, #6] - 800ba1c: 859a strh r2, [r3, #44] @ 0x2c + 800bf8c: 68fb ldr r3, [r7, #12] + 800bf8e: 88fa ldrh r2, [r7, #6] + 800bf90: 859a strh r2, [r3, #44] @ 0x2c huart->ErrorCode = HAL_UART_ERROR_NONE; - 800ba1e: 68fb ldr r3, [r7, #12] - 800ba20: 2200 movs r2, #0 - 800ba22: 645a str r2, [r3, #68] @ 0x44 + 800bf92: 68fb ldr r3, [r7, #12] + 800bf94: 2200 movs r2, #0 + 800bf96: 645a str r2, [r3, #68] @ 0x44 huart->RxState = HAL_UART_STATE_BUSY_RX; - 800ba24: 68fb ldr r3, [r7, #12] - 800ba26: 2222 movs r2, #34 @ 0x22 - 800ba28: f883 2042 strb.w r2, [r3, #66] @ 0x42 + 800bf98: 68fb ldr r3, [r7, #12] + 800bf9a: 2222 movs r2, #34 @ 0x22 + 800bf9c: f883 2042 strb.w r2, [r3, #66] @ 0x42 /* Set the UART DMA transfer complete callback */ huart->hdmarx->XferCpltCallback = UART_DMAReceiveCplt; - 800ba2c: 68fb ldr r3, [r7, #12] - 800ba2e: 6bdb ldr r3, [r3, #60] @ 0x3c - 800ba30: 4a3e ldr r2, [pc, #248] @ (800bb2c ) - 800ba32: 63da str r2, [r3, #60] @ 0x3c + 800bfa0: 68fb ldr r3, [r7, #12] + 800bfa2: 6bdb ldr r3, [r3, #60] @ 0x3c + 800bfa4: 4a3e ldr r2, [pc, #248] @ (800c0a0 ) + 800bfa6: 63da str r2, [r3, #60] @ 0x3c /* Set the UART DMA Half transfer complete callback */ huart->hdmarx->XferHalfCpltCallback = UART_DMARxHalfCplt; - 800ba34: 68fb ldr r3, [r7, #12] - 800ba36: 6bdb ldr r3, [r3, #60] @ 0x3c - 800ba38: 4a3d ldr r2, [pc, #244] @ (800bb30 ) - 800ba3a: 641a str r2, [r3, #64] @ 0x40 + 800bfa8: 68fb ldr r3, [r7, #12] + 800bfaa: 6bdb ldr r3, [r3, #60] @ 0x3c + 800bfac: 4a3d ldr r2, [pc, #244] @ (800c0a4 ) + 800bfae: 641a str r2, [r3, #64] @ 0x40 /* Set the DMA error callback */ huart->hdmarx->XferErrorCallback = UART_DMAError; - 800ba3c: 68fb ldr r3, [r7, #12] - 800ba3e: 6bdb ldr r3, [r3, #60] @ 0x3c - 800ba40: 4a3c ldr r2, [pc, #240] @ (800bb34 ) - 800ba42: 64da str r2, [r3, #76] @ 0x4c + 800bfb0: 68fb ldr r3, [r7, #12] + 800bfb2: 6bdb ldr r3, [r3, #60] @ 0x3c + 800bfb4: 4a3c ldr r2, [pc, #240] @ (800c0a8 ) + 800bfb6: 64da str r2, [r3, #76] @ 0x4c /* Set the DMA abort callback */ huart->hdmarx->XferAbortCallback = NULL; - 800ba44: 68fb ldr r3, [r7, #12] - 800ba46: 6bdb ldr r3, [r3, #60] @ 0x3c - 800ba48: 2200 movs r2, #0 - 800ba4a: 651a str r2, [r3, #80] @ 0x50 + 800bfb8: 68fb ldr r3, [r7, #12] + 800bfba: 6bdb ldr r3, [r3, #60] @ 0x3c + 800bfbc: 2200 movs r2, #0 + 800bfbe: 651a str r2, [r3, #80] @ 0x50 /* Enable the DMA stream */ tmp = (uint32_t *)&pData; - 800ba4c: f107 0308 add.w r3, r7, #8 - 800ba50: 65fb str r3, [r7, #92] @ 0x5c + 800bfc0: f107 0308 add.w r3, r7, #8 + 800bfc4: 65fb str r3, [r7, #92] @ 0x5c HAL_DMA_Start_IT(huart->hdmarx, (uint32_t)&huart->Instance->DR, *(uint32_t *)tmp, Size); - 800ba52: 68fb ldr r3, [r7, #12] - 800ba54: 6bd8 ldr r0, [r3, #60] @ 0x3c - 800ba56: 68fb ldr r3, [r7, #12] - 800ba58: 681b ldr r3, [r3, #0] - 800ba5a: 3304 adds r3, #4 - 800ba5c: 4619 mov r1, r3 - 800ba5e: 6dfb ldr r3, [r7, #92] @ 0x5c - 800ba60: 681a ldr r2, [r3, #0] - 800ba62: 88fb ldrh r3, [r7, #6] - 800ba64: f7fb f908 bl 8006c78 + 800bfc6: 68fb ldr r3, [r7, #12] + 800bfc8: 6bd8 ldr r0, [r3, #60] @ 0x3c + 800bfca: 68fb ldr r3, [r7, #12] + 800bfcc: 681b ldr r3, [r3, #0] + 800bfce: 3304 adds r3, #4 + 800bfd0: 4619 mov r1, r3 + 800bfd2: 6dfb ldr r3, [r7, #92] @ 0x5c + 800bfd4: 681a ldr r2, [r3, #0] + 800bfd6: 88fb ldrh r3, [r7, #6] + 800bfd8: f7fa ff78 bl 8006ecc /* Clear the Overrun flag just before enabling the DMA Rx request: can be mandatory for the second transfer */ __HAL_UART_CLEAR_OREFLAG(huart); - 800ba68: 2300 movs r3, #0 - 800ba6a: 613b str r3, [r7, #16] - 800ba6c: 68fb ldr r3, [r7, #12] - 800ba6e: 681b ldr r3, [r3, #0] - 800ba70: 681b ldr r3, [r3, #0] - 800ba72: 613b str r3, [r7, #16] - 800ba74: 68fb ldr r3, [r7, #12] - 800ba76: 681b ldr r3, [r3, #0] - 800ba78: 685b ldr r3, [r3, #4] - 800ba7a: 613b str r3, [r7, #16] - 800ba7c: 693b ldr r3, [r7, #16] + 800bfdc: 2300 movs r3, #0 + 800bfde: 613b str r3, [r7, #16] + 800bfe0: 68fb ldr r3, [r7, #12] + 800bfe2: 681b ldr r3, [r3, #0] + 800bfe4: 681b ldr r3, [r3, #0] + 800bfe6: 613b str r3, [r7, #16] + 800bfe8: 68fb ldr r3, [r7, #12] + 800bfea: 681b ldr r3, [r3, #0] + 800bfec: 685b ldr r3, [r3, #4] + 800bfee: 613b str r3, [r7, #16] + 800bff0: 693b ldr r3, [r7, #16] if (huart->Init.Parity != UART_PARITY_NONE) - 800ba7e: 68fb ldr r3, [r7, #12] - 800ba80: 691b ldr r3, [r3, #16] - 800ba82: 2b00 cmp r3, #0 - 800ba84: d019 beq.n 800baba + 800bff2: 68fb ldr r3, [r7, #12] + 800bff4: 691b ldr r3, [r3, #16] + 800bff6: 2b00 cmp r3, #0 + 800bff8: d019 beq.n 800c02e { /* Enable the UART Parity Error Interrupt */ ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_PEIE); - 800ba86: 68fb ldr r3, [r7, #12] - 800ba88: 681b ldr r3, [r3, #0] - 800ba8a: 330c adds r3, #12 - 800ba8c: 643b str r3, [r7, #64] @ 0x40 + 800bffa: 68fb ldr r3, [r7, #12] + 800bffc: 681b ldr r3, [r3, #0] + 800bffe: 330c adds r3, #12 + 800c000: 643b str r3, [r7, #64] @ 0x40 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800ba8e: 6c3b ldr r3, [r7, #64] @ 0x40 - 800ba90: e853 3f00 ldrex r3, [r3] - 800ba94: 63fb str r3, [r7, #60] @ 0x3c + 800c002: 6c3b ldr r3, [r7, #64] @ 0x40 + 800c004: e853 3f00 ldrex r3, [r3] + 800c008: 63fb str r3, [r7, #60] @ 0x3c return(result); - 800ba96: 6bfb ldr r3, [r7, #60] @ 0x3c - 800ba98: f443 7380 orr.w r3, r3, #256 @ 0x100 - 800ba9c: 65bb str r3, [r7, #88] @ 0x58 - 800ba9e: 68fb ldr r3, [r7, #12] - 800baa0: 681b ldr r3, [r3, #0] - 800baa2: 330c adds r3, #12 - 800baa4: 6dba ldr r2, [r7, #88] @ 0x58 - 800baa6: 64fa str r2, [r7, #76] @ 0x4c - 800baa8: 64bb str r3, [r7, #72] @ 0x48 + 800c00a: 6bfb ldr r3, [r7, #60] @ 0x3c + 800c00c: f443 7380 orr.w r3, r3, #256 @ 0x100 + 800c010: 65bb str r3, [r7, #88] @ 0x58 + 800c012: 68fb ldr r3, [r7, #12] + 800c014: 681b ldr r3, [r3, #0] + 800c016: 330c adds r3, #12 + 800c018: 6dba ldr r2, [r7, #88] @ 0x58 + 800c01a: 64fa str r2, [r7, #76] @ 0x4c + 800c01c: 64bb str r3, [r7, #72] @ 0x48 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800baaa: 6cb9 ldr r1, [r7, #72] @ 0x48 - 800baac: 6cfa ldr r2, [r7, #76] @ 0x4c - 800baae: e841 2300 strex r3, r2, [r1] - 800bab2: 647b str r3, [r7, #68] @ 0x44 + 800c01e: 6cb9 ldr r1, [r7, #72] @ 0x48 + 800c020: 6cfa ldr r2, [r7, #76] @ 0x4c + 800c022: e841 2300 strex r3, r2, [r1] + 800c026: 647b str r3, [r7, #68] @ 0x44 return(result); - 800bab4: 6c7b ldr r3, [r7, #68] @ 0x44 - 800bab6: 2b00 cmp r3, #0 - 800bab8: d1e5 bne.n 800ba86 + 800c028: 6c7b ldr r3, [r7, #68] @ 0x44 + 800c02a: 2b00 cmp r3, #0 + 800c02c: d1e5 bne.n 800bffa } /* Enable the UART Error Interrupt: (Frame error, noise error, overrun error) */ ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_EIE); - 800baba: 68fb ldr r3, [r7, #12] - 800babc: 681b ldr r3, [r3, #0] - 800babe: 3314 adds r3, #20 - 800bac0: 62fb str r3, [r7, #44] @ 0x2c + 800c02e: 68fb ldr r3, [r7, #12] + 800c030: 681b ldr r3, [r3, #0] + 800c032: 3314 adds r3, #20 + 800c034: 62fb str r3, [r7, #44] @ 0x2c __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800bac2: 6afb ldr r3, [r7, #44] @ 0x2c - 800bac4: e853 3f00 ldrex r3, [r3] - 800bac8: 62bb str r3, [r7, #40] @ 0x28 + 800c036: 6afb ldr r3, [r7, #44] @ 0x2c + 800c038: e853 3f00 ldrex r3, [r3] + 800c03c: 62bb str r3, [r7, #40] @ 0x28 return(result); - 800baca: 6abb ldr r3, [r7, #40] @ 0x28 - 800bacc: f043 0301 orr.w r3, r3, #1 - 800bad0: 657b str r3, [r7, #84] @ 0x54 - 800bad2: 68fb ldr r3, [r7, #12] - 800bad4: 681b ldr r3, [r3, #0] - 800bad6: 3314 adds r3, #20 - 800bad8: 6d7a ldr r2, [r7, #84] @ 0x54 - 800bada: 63ba str r2, [r7, #56] @ 0x38 - 800badc: 637b str r3, [r7, #52] @ 0x34 + 800c03e: 6abb ldr r3, [r7, #40] @ 0x28 + 800c040: f043 0301 orr.w r3, r3, #1 + 800c044: 657b str r3, [r7, #84] @ 0x54 + 800c046: 68fb ldr r3, [r7, #12] + 800c048: 681b ldr r3, [r3, #0] + 800c04a: 3314 adds r3, #20 + 800c04c: 6d7a ldr r2, [r7, #84] @ 0x54 + 800c04e: 63ba str r2, [r7, #56] @ 0x38 + 800c050: 637b str r3, [r7, #52] @ 0x34 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800bade: 6b79 ldr r1, [r7, #52] @ 0x34 - 800bae0: 6bba ldr r2, [r7, #56] @ 0x38 - 800bae2: e841 2300 strex r3, r2, [r1] - 800bae6: 633b str r3, [r7, #48] @ 0x30 + 800c052: 6b79 ldr r1, [r7, #52] @ 0x34 + 800c054: 6bba ldr r2, [r7, #56] @ 0x38 + 800c056: e841 2300 strex r3, r2, [r1] + 800c05a: 633b str r3, [r7, #48] @ 0x30 return(result); - 800bae8: 6b3b ldr r3, [r7, #48] @ 0x30 - 800baea: 2b00 cmp r3, #0 - 800baec: d1e5 bne.n 800baba + 800c05c: 6b3b ldr r3, [r7, #48] @ 0x30 + 800c05e: 2b00 cmp r3, #0 + 800c060: d1e5 bne.n 800c02e /* Enable the DMA transfer for the receiver request by setting the DMAR bit in the UART CR3 register */ ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_DMAR); - 800baee: 68fb ldr r3, [r7, #12] - 800baf0: 681b ldr r3, [r3, #0] - 800baf2: 3314 adds r3, #20 - 800baf4: 61bb str r3, [r7, #24] + 800c062: 68fb ldr r3, [r7, #12] + 800c064: 681b ldr r3, [r3, #0] + 800c066: 3314 adds r3, #20 + 800c068: 61bb str r3, [r7, #24] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800baf6: 69bb ldr r3, [r7, #24] - 800baf8: e853 3f00 ldrex r3, [r3] - 800bafc: 617b str r3, [r7, #20] + 800c06a: 69bb ldr r3, [r7, #24] + 800c06c: e853 3f00 ldrex r3, [r3] + 800c070: 617b str r3, [r7, #20] return(result); - 800bafe: 697b ldr r3, [r7, #20] - 800bb00: f043 0340 orr.w r3, r3, #64 @ 0x40 - 800bb04: 653b str r3, [r7, #80] @ 0x50 - 800bb06: 68fb ldr r3, [r7, #12] - 800bb08: 681b ldr r3, [r3, #0] - 800bb0a: 3314 adds r3, #20 - 800bb0c: 6d3a ldr r2, [r7, #80] @ 0x50 - 800bb0e: 627a str r2, [r7, #36] @ 0x24 - 800bb10: 623b str r3, [r7, #32] + 800c072: 697b ldr r3, [r7, #20] + 800c074: f043 0340 orr.w r3, r3, #64 @ 0x40 + 800c078: 653b str r3, [r7, #80] @ 0x50 + 800c07a: 68fb ldr r3, [r7, #12] + 800c07c: 681b ldr r3, [r3, #0] + 800c07e: 3314 adds r3, #20 + 800c080: 6d3a ldr r2, [r7, #80] @ 0x50 + 800c082: 627a str r2, [r7, #36] @ 0x24 + 800c084: 623b str r3, [r7, #32] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800bb12: 6a39 ldr r1, [r7, #32] - 800bb14: 6a7a ldr r2, [r7, #36] @ 0x24 - 800bb16: e841 2300 strex r3, r2, [r1] - 800bb1a: 61fb str r3, [r7, #28] + 800c086: 6a39 ldr r1, [r7, #32] + 800c088: 6a7a ldr r2, [r7, #36] @ 0x24 + 800c08a: e841 2300 strex r3, r2, [r1] + 800c08e: 61fb str r3, [r7, #28] return(result); - 800bb1c: 69fb ldr r3, [r7, #28] - 800bb1e: 2b00 cmp r3, #0 - 800bb20: d1e5 bne.n 800baee + 800c090: 69fb ldr r3, [r7, #28] + 800c092: 2b00 cmp r3, #0 + 800c094: d1e5 bne.n 800c062 return HAL_OK; - 800bb22: 2300 movs r3, #0 + 800c096: 2300 movs r3, #0 } - 800bb24: 4618 mov r0, r3 - 800bb26: 3760 adds r7, #96 @ 0x60 - 800bb28: 46bd mov sp, r7 - 800bb2a: bd80 pop {r7, pc} - 800bb2c: 0800b807 .word 0x0800b807 - 800bb30: 0800b933 .word 0x0800b933 - 800bb34: 0800b96f .word 0x0800b96f + 800c098: 4618 mov r0, r3 + 800c09a: 3760 adds r7, #96 @ 0x60 + 800c09c: 46bd mov sp, r7 + 800c09e: bd80 pop {r7, pc} + 800c0a0: 0800bd7b .word 0x0800bd7b + 800c0a4: 0800bea7 .word 0x0800bea7 + 800c0a8: 0800bee3 .word 0x0800bee3 -0800bb38 : +0800c0ac : * @brief End ongoing Tx transfer on UART peripheral (following error detection or Transmit completion). * @param huart UART handle. * @retval None */ static void UART_EndTxTransfer(UART_HandleTypeDef *huart) { - 800bb38: b480 push {r7} - 800bb3a: b089 sub sp, #36 @ 0x24 - 800bb3c: af00 add r7, sp, #0 - 800bb3e: 6078 str r0, [r7, #4] + 800c0ac: b480 push {r7} + 800c0ae: b089 sub sp, #36 @ 0x24 + 800c0b0: af00 add r7, sp, #0 + 800c0b2: 6078 str r0, [r7, #4] /* Disable TXEIE and TCIE interrupts */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); - 800bb40: 687b ldr r3, [r7, #4] - 800bb42: 681b ldr r3, [r3, #0] - 800bb44: 330c adds r3, #12 - 800bb46: 60fb str r3, [r7, #12] + 800c0b4: 687b ldr r3, [r7, #4] + 800c0b6: 681b ldr r3, [r3, #0] + 800c0b8: 330c adds r3, #12 + 800c0ba: 60fb str r3, [r7, #12] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800bb48: 68fb ldr r3, [r7, #12] - 800bb4a: e853 3f00 ldrex r3, [r3] - 800bb4e: 60bb str r3, [r7, #8] + 800c0bc: 68fb ldr r3, [r7, #12] + 800c0be: e853 3f00 ldrex r3, [r3] + 800c0c2: 60bb str r3, [r7, #8] return(result); - 800bb50: 68bb ldr r3, [r7, #8] - 800bb52: f023 03c0 bic.w r3, r3, #192 @ 0xc0 - 800bb56: 61fb str r3, [r7, #28] - 800bb58: 687b ldr r3, [r7, #4] - 800bb5a: 681b ldr r3, [r3, #0] - 800bb5c: 330c adds r3, #12 - 800bb5e: 69fa ldr r2, [r7, #28] - 800bb60: 61ba str r2, [r7, #24] - 800bb62: 617b str r3, [r7, #20] + 800c0c4: 68bb ldr r3, [r7, #8] + 800c0c6: f023 03c0 bic.w r3, r3, #192 @ 0xc0 + 800c0ca: 61fb str r3, [r7, #28] + 800c0cc: 687b ldr r3, [r7, #4] + 800c0ce: 681b ldr r3, [r3, #0] + 800c0d0: 330c adds r3, #12 + 800c0d2: 69fa ldr r2, [r7, #28] + 800c0d4: 61ba str r2, [r7, #24] + 800c0d6: 617b str r3, [r7, #20] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800bb64: 6979 ldr r1, [r7, #20] - 800bb66: 69ba ldr r2, [r7, #24] - 800bb68: e841 2300 strex r3, r2, [r1] - 800bb6c: 613b str r3, [r7, #16] + 800c0d8: 6979 ldr r1, [r7, #20] + 800c0da: 69ba ldr r2, [r7, #24] + 800c0dc: e841 2300 strex r3, r2, [r1] + 800c0e0: 613b str r3, [r7, #16] return(result); - 800bb6e: 693b ldr r3, [r7, #16] - 800bb70: 2b00 cmp r3, #0 - 800bb72: d1e5 bne.n 800bb40 + 800c0e2: 693b ldr r3, [r7, #16] + 800c0e4: 2b00 cmp r3, #0 + 800c0e6: d1e5 bne.n 800c0b4 /* At end of Tx process, restore huart->gState to Ready */ huart->gState = HAL_UART_STATE_READY; - 800bb74: 687b ldr r3, [r7, #4] - 800bb76: 2220 movs r2, #32 - 800bb78: f883 2041 strb.w r2, [r3, #65] @ 0x41 + 800c0e8: 687b ldr r3, [r7, #4] + 800c0ea: 2220 movs r2, #32 + 800c0ec: f883 2041 strb.w r2, [r3, #65] @ 0x41 } - 800bb7c: bf00 nop - 800bb7e: 3724 adds r7, #36 @ 0x24 - 800bb80: 46bd mov sp, r7 - 800bb82: f85d 7b04 ldr.w r7, [sp], #4 - 800bb86: 4770 bx lr + 800c0f0: bf00 nop + 800c0f2: 3724 adds r7, #36 @ 0x24 + 800c0f4: 46bd mov sp, r7 + 800c0f6: f85d 7b04 ldr.w r7, [sp], #4 + 800c0fa: 4770 bx lr -0800bb88 : +0800c0fc : * @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) { - 800bb88: b480 push {r7} - 800bb8a: b095 sub sp, #84 @ 0x54 - 800bb8c: af00 add r7, sp, #0 - 800bb8e: 6078 str r0, [r7, #4] + 800c0fc: b480 push {r7} + 800c0fe: b095 sub sp, #84 @ 0x54 + 800c100: af00 add r7, sp, #0 + 800c102: 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)); - 800bb90: 687b ldr r3, [r7, #4] - 800bb92: 681b ldr r3, [r3, #0] - 800bb94: 330c adds r3, #12 - 800bb96: 637b str r3, [r7, #52] @ 0x34 + 800c104: 687b ldr r3, [r7, #4] + 800c106: 681b ldr r3, [r3, #0] + 800c108: 330c adds r3, #12 + 800c10a: 637b str r3, [r7, #52] @ 0x34 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800bb98: 6b7b ldr r3, [r7, #52] @ 0x34 - 800bb9a: e853 3f00 ldrex r3, [r3] - 800bb9e: 633b str r3, [r7, #48] @ 0x30 + 800c10c: 6b7b ldr r3, [r7, #52] @ 0x34 + 800c10e: e853 3f00 ldrex r3, [r3] + 800c112: 633b str r3, [r7, #48] @ 0x30 return(result); - 800bba0: 6b3b ldr r3, [r7, #48] @ 0x30 - 800bba2: f423 7390 bic.w r3, r3, #288 @ 0x120 - 800bba6: 64fb str r3, [r7, #76] @ 0x4c - 800bba8: 687b ldr r3, [r7, #4] - 800bbaa: 681b ldr r3, [r3, #0] - 800bbac: 330c adds r3, #12 - 800bbae: 6cfa ldr r2, [r7, #76] @ 0x4c - 800bbb0: 643a str r2, [r7, #64] @ 0x40 - 800bbb2: 63fb str r3, [r7, #60] @ 0x3c + 800c114: 6b3b ldr r3, [r7, #48] @ 0x30 + 800c116: f423 7390 bic.w r3, r3, #288 @ 0x120 + 800c11a: 64fb str r3, [r7, #76] @ 0x4c + 800c11c: 687b ldr r3, [r7, #4] + 800c11e: 681b ldr r3, [r3, #0] + 800c120: 330c adds r3, #12 + 800c122: 6cfa ldr r2, [r7, #76] @ 0x4c + 800c124: 643a str r2, [r7, #64] @ 0x40 + 800c126: 63fb str r3, [r7, #60] @ 0x3c __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800bbb4: 6bf9 ldr r1, [r7, #60] @ 0x3c - 800bbb6: 6c3a ldr r2, [r7, #64] @ 0x40 - 800bbb8: e841 2300 strex r3, r2, [r1] - 800bbbc: 63bb str r3, [r7, #56] @ 0x38 + 800c128: 6bf9 ldr r1, [r7, #60] @ 0x3c + 800c12a: 6c3a ldr r2, [r7, #64] @ 0x40 + 800c12c: e841 2300 strex r3, r2, [r1] + 800c130: 63bb str r3, [r7, #56] @ 0x38 return(result); - 800bbbe: 6bbb ldr r3, [r7, #56] @ 0x38 - 800bbc0: 2b00 cmp r3, #0 - 800bbc2: d1e5 bne.n 800bb90 + 800c132: 6bbb ldr r3, [r7, #56] @ 0x38 + 800c134: 2b00 cmp r3, #0 + 800c136: d1e5 bne.n 800c104 ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); - 800bbc4: 687b ldr r3, [r7, #4] - 800bbc6: 681b ldr r3, [r3, #0] - 800bbc8: 3314 adds r3, #20 - 800bbca: 623b str r3, [r7, #32] + 800c138: 687b ldr r3, [r7, #4] + 800c13a: 681b ldr r3, [r3, #0] + 800c13c: 3314 adds r3, #20 + 800c13e: 623b str r3, [r7, #32] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800bbcc: 6a3b ldr r3, [r7, #32] - 800bbce: e853 3f00 ldrex r3, [r3] - 800bbd2: 61fb str r3, [r7, #28] + 800c140: 6a3b ldr r3, [r7, #32] + 800c142: e853 3f00 ldrex r3, [r3] + 800c146: 61fb str r3, [r7, #28] return(result); - 800bbd4: 69fb ldr r3, [r7, #28] - 800bbd6: f023 0301 bic.w r3, r3, #1 - 800bbda: 64bb str r3, [r7, #72] @ 0x48 - 800bbdc: 687b ldr r3, [r7, #4] - 800bbde: 681b ldr r3, [r3, #0] - 800bbe0: 3314 adds r3, #20 - 800bbe2: 6cba ldr r2, [r7, #72] @ 0x48 - 800bbe4: 62fa str r2, [r7, #44] @ 0x2c - 800bbe6: 62bb str r3, [r7, #40] @ 0x28 + 800c148: 69fb ldr r3, [r7, #28] + 800c14a: f023 0301 bic.w r3, r3, #1 + 800c14e: 64bb str r3, [r7, #72] @ 0x48 + 800c150: 687b ldr r3, [r7, #4] + 800c152: 681b ldr r3, [r3, #0] + 800c154: 3314 adds r3, #20 + 800c156: 6cba ldr r2, [r7, #72] @ 0x48 + 800c158: 62fa str r2, [r7, #44] @ 0x2c + 800c15a: 62bb str r3, [r7, #40] @ 0x28 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800bbe8: 6ab9 ldr r1, [r7, #40] @ 0x28 - 800bbea: 6afa ldr r2, [r7, #44] @ 0x2c - 800bbec: e841 2300 strex r3, r2, [r1] - 800bbf0: 627b str r3, [r7, #36] @ 0x24 + 800c15c: 6ab9 ldr r1, [r7, #40] @ 0x28 + 800c15e: 6afa ldr r2, [r7, #44] @ 0x2c + 800c160: e841 2300 strex r3, r2, [r1] + 800c164: 627b str r3, [r7, #36] @ 0x24 return(result); - 800bbf2: 6a7b ldr r3, [r7, #36] @ 0x24 - 800bbf4: 2b00 cmp r3, #0 - 800bbf6: d1e5 bne.n 800bbc4 + 800c166: 6a7b ldr r3, [r7, #36] @ 0x24 + 800c168: 2b00 cmp r3, #0 + 800c16a: d1e5 bne.n 800c138 /* In case of reception waiting for IDLE event, disable also the IDLE IE interrupt source */ if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) - 800bbf8: 687b ldr r3, [r7, #4] - 800bbfa: 6b1b ldr r3, [r3, #48] @ 0x30 - 800bbfc: 2b01 cmp r3, #1 - 800bbfe: d119 bne.n 800bc34 + 800c16c: 687b ldr r3, [r7, #4] + 800c16e: 6b1b ldr r3, [r3, #48] @ 0x30 + 800c170: 2b01 cmp r3, #1 + 800c172: d119 bne.n 800c1a8 { ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); - 800bc00: 687b ldr r3, [r7, #4] - 800bc02: 681b ldr r3, [r3, #0] - 800bc04: 330c adds r3, #12 - 800bc06: 60fb str r3, [r7, #12] + 800c174: 687b ldr r3, [r7, #4] + 800c176: 681b ldr r3, [r3, #0] + 800c178: 330c adds r3, #12 + 800c17a: 60fb str r3, [r7, #12] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800bc08: 68fb ldr r3, [r7, #12] - 800bc0a: e853 3f00 ldrex r3, [r3] - 800bc0e: 60bb str r3, [r7, #8] + 800c17c: 68fb ldr r3, [r7, #12] + 800c17e: e853 3f00 ldrex r3, [r3] + 800c182: 60bb str r3, [r7, #8] return(result); - 800bc10: 68bb ldr r3, [r7, #8] - 800bc12: f023 0310 bic.w r3, r3, #16 - 800bc16: 647b str r3, [r7, #68] @ 0x44 - 800bc18: 687b ldr r3, [r7, #4] - 800bc1a: 681b ldr r3, [r3, #0] - 800bc1c: 330c adds r3, #12 - 800bc1e: 6c7a ldr r2, [r7, #68] @ 0x44 - 800bc20: 61ba str r2, [r7, #24] - 800bc22: 617b str r3, [r7, #20] + 800c184: 68bb ldr r3, [r7, #8] + 800c186: f023 0310 bic.w r3, r3, #16 + 800c18a: 647b str r3, [r7, #68] @ 0x44 + 800c18c: 687b ldr r3, [r7, #4] + 800c18e: 681b ldr r3, [r3, #0] + 800c190: 330c adds r3, #12 + 800c192: 6c7a ldr r2, [r7, #68] @ 0x44 + 800c194: 61ba str r2, [r7, #24] + 800c196: 617b str r3, [r7, #20] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800bc24: 6979 ldr r1, [r7, #20] - 800bc26: 69ba ldr r2, [r7, #24] - 800bc28: e841 2300 strex r3, r2, [r1] - 800bc2c: 613b str r3, [r7, #16] + 800c198: 6979 ldr r1, [r7, #20] + 800c19a: 69ba ldr r2, [r7, #24] + 800c19c: e841 2300 strex r3, r2, [r1] + 800c1a0: 613b str r3, [r7, #16] return(result); - 800bc2e: 693b ldr r3, [r7, #16] - 800bc30: 2b00 cmp r3, #0 - 800bc32: d1e5 bne.n 800bc00 + 800c1a2: 693b ldr r3, [r7, #16] + 800c1a4: 2b00 cmp r3, #0 + 800c1a6: d1e5 bne.n 800c174 } /* At end of Rx process, restore huart->RxState to Ready */ huart->RxState = HAL_UART_STATE_READY; - 800bc34: 687b ldr r3, [r7, #4] - 800bc36: 2220 movs r2, #32 - 800bc38: f883 2042 strb.w r2, [r3, #66] @ 0x42 + 800c1a8: 687b ldr r3, [r7, #4] + 800c1aa: 2220 movs r2, #32 + 800c1ac: f883 2042 strb.w r2, [r3, #66] @ 0x42 huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 800bc3c: 687b ldr r3, [r7, #4] - 800bc3e: 2200 movs r2, #0 - 800bc40: 631a str r2, [r3, #48] @ 0x30 + 800c1b0: 687b ldr r3, [r7, #4] + 800c1b2: 2200 movs r2, #0 + 800c1b4: 631a str r2, [r3, #48] @ 0x30 } - 800bc42: bf00 nop - 800bc44: 3754 adds r7, #84 @ 0x54 - 800bc46: 46bd mov sp, r7 - 800bc48: f85d 7b04 ldr.w r7, [sp], #4 - 800bc4c: 4770 bx lr + 800c1b6: bf00 nop + 800c1b8: 3754 adds r7, #84 @ 0x54 + 800c1ba: 46bd mov sp, r7 + 800c1bc: f85d 7b04 ldr.w r7, [sp], #4 + 800c1c0: 4770 bx lr -0800bc4e : +0800c1c2 : * @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) { - 800bc4e: b580 push {r7, lr} - 800bc50: b084 sub sp, #16 - 800bc52: af00 add r7, sp, #0 - 800bc54: 6078 str r0, [r7, #4] + 800c1c2: b580 push {r7, lr} + 800c1c4: b084 sub sp, #16 + 800c1c6: af00 add r7, sp, #0 + 800c1c8: 6078 str r0, [r7, #4] UART_HandleTypeDef *huart = (UART_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; - 800bc56: 687b ldr r3, [r7, #4] - 800bc58: 6b9b ldr r3, [r3, #56] @ 0x38 - 800bc5a: 60fb str r3, [r7, #12] + 800c1ca: 687b ldr r3, [r7, #4] + 800c1cc: 6b9b ldr r3, [r3, #56] @ 0x38 + 800c1ce: 60fb str r3, [r7, #12] huart->RxXferCount = 0x00U; - 800bc5c: 68fb ldr r3, [r7, #12] - 800bc5e: 2200 movs r2, #0 - 800bc60: 85da strh r2, [r3, #46] @ 0x2e + 800c1d0: 68fb ldr r3, [r7, #12] + 800c1d2: 2200 movs r2, #0 + 800c1d4: 85da strh r2, [r3, #46] @ 0x2e huart->TxXferCount = 0x00U; - 800bc62: 68fb ldr r3, [r7, #12] - 800bc64: 2200 movs r2, #0 - 800bc66: 84da strh r2, [r3, #38] @ 0x26 + 800c1d6: 68fb ldr r3, [r7, #12] + 800c1d8: 2200 movs r2, #0 + 800c1da: 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); - 800bc68: 68f8 ldr r0, [r7, #12] - 800bc6a: f7ff fd5b bl 800b724 + 800c1dc: 68f8 ldr r0, [r7, #12] + 800c1de: f7ff fd5b bl 800bc98 #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ } - 800bc6e: bf00 nop - 800bc70: 3710 adds r7, #16 - 800bc72: 46bd mov sp, r7 - 800bc74: bd80 pop {r7, pc} + 800c1e2: bf00 nop + 800c1e4: 3710 adds r7, #16 + 800c1e6: 46bd mov sp, r7 + 800c1e8: bd80 pop {r7, pc} -0800bc76 : +0800c1ea : * @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) { - 800bc76: b480 push {r7} - 800bc78: b085 sub sp, #20 - 800bc7a: af00 add r7, sp, #0 - 800bc7c: 6078 str r0, [r7, #4] + 800c1ea: b480 push {r7} + 800c1ec: b085 sub sp, #20 + 800c1ee: af00 add r7, sp, #0 + 800c1f0: 6078 str r0, [r7, #4] const uint16_t *tmp; /* Check that a Tx process is ongoing */ if (huart->gState == HAL_UART_STATE_BUSY_TX) - 800bc7e: 687b ldr r3, [r7, #4] - 800bc80: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 - 800bc84: b2db uxtb r3, r3 - 800bc86: 2b21 cmp r3, #33 @ 0x21 - 800bc88: d13e bne.n 800bd08 + 800c1f2: 687b ldr r3, [r7, #4] + 800c1f4: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 + 800c1f8: b2db uxtb r3, r3 + 800c1fa: 2b21 cmp r3, #33 @ 0x21 + 800c1fc: d13e bne.n 800c27c { if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) - 800bc8a: 687b ldr r3, [r7, #4] - 800bc8c: 689b ldr r3, [r3, #8] - 800bc8e: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 800bc92: d114 bne.n 800bcbe - 800bc94: 687b ldr r3, [r7, #4] - 800bc96: 691b ldr r3, [r3, #16] - 800bc98: 2b00 cmp r3, #0 - 800bc9a: d110 bne.n 800bcbe + 800c1fe: 687b ldr r3, [r7, #4] + 800c200: 689b ldr r3, [r3, #8] + 800c202: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 800c206: d114 bne.n 800c232 + 800c208: 687b ldr r3, [r7, #4] + 800c20a: 691b ldr r3, [r3, #16] + 800c20c: 2b00 cmp r3, #0 + 800c20e: d110 bne.n 800c232 { tmp = (const uint16_t *) huart->pTxBuffPtr; - 800bc9c: 687b ldr r3, [r7, #4] - 800bc9e: 6a1b ldr r3, [r3, #32] - 800bca0: 60fb str r3, [r7, #12] + 800c210: 687b ldr r3, [r7, #4] + 800c212: 6a1b ldr r3, [r3, #32] + 800c214: 60fb str r3, [r7, #12] huart->Instance->DR = (uint16_t)(*tmp & (uint16_t)0x01FF); - 800bca2: 68fb ldr r3, [r7, #12] - 800bca4: 881b ldrh r3, [r3, #0] - 800bca6: 461a mov r2, r3 - 800bca8: 687b ldr r3, [r7, #4] - 800bcaa: 681b ldr r3, [r3, #0] - 800bcac: f3c2 0208 ubfx r2, r2, #0, #9 - 800bcb0: 605a str r2, [r3, #4] + 800c216: 68fb ldr r3, [r7, #12] + 800c218: 881b ldrh r3, [r3, #0] + 800c21a: 461a mov r2, r3 + 800c21c: 687b ldr r3, [r7, #4] + 800c21e: 681b ldr r3, [r3, #0] + 800c220: f3c2 0208 ubfx r2, r2, #0, #9 + 800c224: 605a str r2, [r3, #4] huart->pTxBuffPtr += 2U; - 800bcb2: 687b ldr r3, [r7, #4] - 800bcb4: 6a1b ldr r3, [r3, #32] - 800bcb6: 1c9a adds r2, r3, #2 - 800bcb8: 687b ldr r3, [r7, #4] - 800bcba: 621a str r2, [r3, #32] - 800bcbc: e008 b.n 800bcd0 + 800c226: 687b ldr r3, [r7, #4] + 800c228: 6a1b ldr r3, [r3, #32] + 800c22a: 1c9a adds r2, r3, #2 + 800c22c: 687b ldr r3, [r7, #4] + 800c22e: 621a str r2, [r3, #32] + 800c230: e008 b.n 800c244 } else { huart->Instance->DR = (uint8_t)(*huart->pTxBuffPtr++ & (uint8_t)0x00FF); - 800bcbe: 687b ldr r3, [r7, #4] - 800bcc0: 6a1b ldr r3, [r3, #32] - 800bcc2: 1c59 adds r1, r3, #1 - 800bcc4: 687a ldr r2, [r7, #4] - 800bcc6: 6211 str r1, [r2, #32] - 800bcc8: 781a ldrb r2, [r3, #0] - 800bcca: 687b ldr r3, [r7, #4] - 800bccc: 681b ldr r3, [r3, #0] - 800bcce: 605a str r2, [r3, #4] + 800c232: 687b ldr r3, [r7, #4] + 800c234: 6a1b ldr r3, [r3, #32] + 800c236: 1c59 adds r1, r3, #1 + 800c238: 687a ldr r2, [r7, #4] + 800c23a: 6211 str r1, [r2, #32] + 800c23c: 781a ldrb r2, [r3, #0] + 800c23e: 687b ldr r3, [r7, #4] + 800c240: 681b ldr r3, [r3, #0] + 800c242: 605a str r2, [r3, #4] } if (--huart->TxXferCount == 0U) - 800bcd0: 687b ldr r3, [r7, #4] - 800bcd2: 8cdb ldrh r3, [r3, #38] @ 0x26 - 800bcd4: b29b uxth r3, r3 - 800bcd6: 3b01 subs r3, #1 - 800bcd8: b29b uxth r3, r3 - 800bcda: 687a ldr r2, [r7, #4] - 800bcdc: 4619 mov r1, r3 - 800bcde: 84d1 strh r1, [r2, #38] @ 0x26 - 800bce0: 2b00 cmp r3, #0 - 800bce2: d10f bne.n 800bd04 + 800c244: 687b ldr r3, [r7, #4] + 800c246: 8cdb ldrh r3, [r3, #38] @ 0x26 + 800c248: b29b uxth r3, r3 + 800c24a: 3b01 subs r3, #1 + 800c24c: b29b uxth r3, r3 + 800c24e: 687a ldr r2, [r7, #4] + 800c250: 4619 mov r1, r3 + 800c252: 84d1 strh r1, [r2, #38] @ 0x26 + 800c254: 2b00 cmp r3, #0 + 800c256: d10f bne.n 800c278 { /* Disable the UART Transmit Data Register Empty Interrupt */ __HAL_UART_DISABLE_IT(huart, UART_IT_TXE); - 800bce4: 687b ldr r3, [r7, #4] - 800bce6: 681b ldr r3, [r3, #0] - 800bce8: 68da ldr r2, [r3, #12] - 800bcea: 687b ldr r3, [r7, #4] - 800bcec: 681b ldr r3, [r3, #0] - 800bcee: f022 0280 bic.w r2, r2, #128 @ 0x80 - 800bcf2: 60da str r2, [r3, #12] + 800c258: 687b ldr r3, [r7, #4] + 800c25a: 681b ldr r3, [r3, #0] + 800c25c: 68da ldr r2, [r3, #12] + 800c25e: 687b ldr r3, [r7, #4] + 800c260: 681b ldr r3, [r3, #0] + 800c262: f022 0280 bic.w r2, r2, #128 @ 0x80 + 800c266: 60da str r2, [r3, #12] /* Enable the UART Transmit Complete Interrupt */ __HAL_UART_ENABLE_IT(huart, UART_IT_TC); - 800bcf4: 687b ldr r3, [r7, #4] - 800bcf6: 681b ldr r3, [r3, #0] - 800bcf8: 68da ldr r2, [r3, #12] - 800bcfa: 687b ldr r3, [r7, #4] - 800bcfc: 681b ldr r3, [r3, #0] - 800bcfe: f042 0240 orr.w r2, r2, #64 @ 0x40 - 800bd02: 60da str r2, [r3, #12] + 800c268: 687b ldr r3, [r7, #4] + 800c26a: 681b ldr r3, [r3, #0] + 800c26c: 68da ldr r2, [r3, #12] + 800c26e: 687b ldr r3, [r7, #4] + 800c270: 681b ldr r3, [r3, #0] + 800c272: f042 0240 orr.w r2, r2, #64 @ 0x40 + 800c276: 60da str r2, [r3, #12] } return HAL_OK; - 800bd04: 2300 movs r3, #0 - 800bd06: e000 b.n 800bd0a + 800c278: 2300 movs r3, #0 + 800c27a: e000 b.n 800c27e } else { return HAL_BUSY; - 800bd08: 2302 movs r3, #2 + 800c27c: 2302 movs r3, #2 } } - 800bd0a: 4618 mov r0, r3 - 800bd0c: 3714 adds r7, #20 - 800bd0e: 46bd mov sp, r7 - 800bd10: f85d 7b04 ldr.w r7, [sp], #4 - 800bd14: 4770 bx lr + 800c27e: 4618 mov r0, r3 + 800c280: 3714 adds r7, #20 + 800c282: 46bd mov sp, r7 + 800c284: f85d 7b04 ldr.w r7, [sp], #4 + 800c288: 4770 bx lr -0800bd16 : +0800c28a : * @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) { - 800bd16: b580 push {r7, lr} - 800bd18: b082 sub sp, #8 - 800bd1a: af00 add r7, sp, #0 - 800bd1c: 6078 str r0, [r7, #4] + 800c28a: b580 push {r7, lr} + 800c28c: b082 sub sp, #8 + 800c28e: af00 add r7, sp, #0 + 800c290: 6078 str r0, [r7, #4] /* Disable the UART Transmit Complete Interrupt */ __HAL_UART_DISABLE_IT(huart, UART_IT_TC); - 800bd1e: 687b ldr r3, [r7, #4] - 800bd20: 681b ldr r3, [r3, #0] - 800bd22: 68da ldr r2, [r3, #12] - 800bd24: 687b ldr r3, [r7, #4] - 800bd26: 681b ldr r3, [r3, #0] - 800bd28: f022 0240 bic.w r2, r2, #64 @ 0x40 - 800bd2c: 60da str r2, [r3, #12] + 800c292: 687b ldr r3, [r7, #4] + 800c294: 681b ldr r3, [r3, #0] + 800c296: 68da ldr r2, [r3, #12] + 800c298: 687b ldr r3, [r7, #4] + 800c29a: 681b ldr r3, [r3, #0] + 800c29c: f022 0240 bic.w r2, r2, #64 @ 0x40 + 800c2a0: 60da str r2, [r3, #12] /* Tx process is ended, restore huart->gState to Ready */ huart->gState = HAL_UART_STATE_READY; - 800bd2e: 687b ldr r3, [r7, #4] - 800bd30: 2220 movs r2, #32 - 800bd32: f883 2041 strb.w r2, [r3, #65] @ 0x41 + 800c2a2: 687b ldr r3, [r7, #4] + 800c2a4: 2220 movs r2, #32 + 800c2a6: 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); - 800bd36: 6878 ldr r0, [r7, #4] - 800bd38: f7ff fccc bl 800b6d4 + 800c2aa: 6878 ldr r0, [r7, #4] + 800c2ac: f7ff fccc bl 800bc48 #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ return HAL_OK; - 800bd3c: 2300 movs r3, #0 + 800c2b0: 2300 movs r3, #0 } - 800bd3e: 4618 mov r0, r3 - 800bd40: 3708 adds r7, #8 - 800bd42: 46bd mov sp, r7 - 800bd44: bd80 pop {r7, pc} + 800c2b2: 4618 mov r0, r3 + 800c2b4: 3708 adds r7, #8 + 800c2b6: 46bd mov sp, r7 + 800c2b8: bd80 pop {r7, pc} -0800bd46 : +0800c2ba : * @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) { - 800bd46: b580 push {r7, lr} - 800bd48: b08c sub sp, #48 @ 0x30 - 800bd4a: af00 add r7, sp, #0 - 800bd4c: 6078 str r0, [r7, #4] + 800c2ba: b580 push {r7, lr} + 800c2bc: b08c sub sp, #48 @ 0x30 + 800c2be: af00 add r7, sp, #0 + 800c2c0: 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) - 800bd4e: 687b ldr r3, [r7, #4] - 800bd50: f893 3042 ldrb.w r3, [r3, #66] @ 0x42 - 800bd54: b2db uxtb r3, r3 - 800bd56: 2b22 cmp r3, #34 @ 0x22 - 800bd58: f040 80ae bne.w 800beb8 + 800c2c2: 687b ldr r3, [r7, #4] + 800c2c4: f893 3042 ldrb.w r3, [r3, #66] @ 0x42 + 800c2c8: b2db uxtb r3, r3 + 800c2ca: 2b22 cmp r3, #34 @ 0x22 + 800c2cc: f040 80ae bne.w 800c42c { if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) - 800bd5c: 687b ldr r3, [r7, #4] - 800bd5e: 689b ldr r3, [r3, #8] - 800bd60: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 800bd64: d117 bne.n 800bd96 - 800bd66: 687b ldr r3, [r7, #4] - 800bd68: 691b ldr r3, [r3, #16] - 800bd6a: 2b00 cmp r3, #0 - 800bd6c: d113 bne.n 800bd96 + 800c2d0: 687b ldr r3, [r7, #4] + 800c2d2: 689b ldr r3, [r3, #8] + 800c2d4: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 800c2d8: d117 bne.n 800c30a + 800c2da: 687b ldr r3, [r7, #4] + 800c2dc: 691b ldr r3, [r3, #16] + 800c2de: 2b00 cmp r3, #0 + 800c2e0: d113 bne.n 800c30a { pdata8bits = NULL; - 800bd6e: 2300 movs r3, #0 - 800bd70: 62fb str r3, [r7, #44] @ 0x2c + 800c2e2: 2300 movs r3, #0 + 800c2e4: 62fb str r3, [r7, #44] @ 0x2c pdata16bits = (uint16_t *) huart->pRxBuffPtr; - 800bd72: 687b ldr r3, [r7, #4] - 800bd74: 6a9b ldr r3, [r3, #40] @ 0x28 - 800bd76: 62bb str r3, [r7, #40] @ 0x28 + 800c2e6: 687b ldr r3, [r7, #4] + 800c2e8: 6a9b ldr r3, [r3, #40] @ 0x28 + 800c2ea: 62bb str r3, [r7, #40] @ 0x28 *pdata16bits = (uint16_t)(huart->Instance->DR & (uint16_t)0x01FF); - 800bd78: 687b ldr r3, [r7, #4] - 800bd7a: 681b ldr r3, [r3, #0] - 800bd7c: 685b ldr r3, [r3, #4] - 800bd7e: b29b uxth r3, r3 - 800bd80: f3c3 0308 ubfx r3, r3, #0, #9 - 800bd84: b29a uxth r2, r3 - 800bd86: 6abb ldr r3, [r7, #40] @ 0x28 - 800bd88: 801a strh r2, [r3, #0] + 800c2ec: 687b ldr r3, [r7, #4] + 800c2ee: 681b ldr r3, [r3, #0] + 800c2f0: 685b ldr r3, [r3, #4] + 800c2f2: b29b uxth r3, r3 + 800c2f4: f3c3 0308 ubfx r3, r3, #0, #9 + 800c2f8: b29a uxth r2, r3 + 800c2fa: 6abb ldr r3, [r7, #40] @ 0x28 + 800c2fc: 801a strh r2, [r3, #0] huart->pRxBuffPtr += 2U; - 800bd8a: 687b ldr r3, [r7, #4] - 800bd8c: 6a9b ldr r3, [r3, #40] @ 0x28 - 800bd8e: 1c9a adds r2, r3, #2 - 800bd90: 687b ldr r3, [r7, #4] - 800bd92: 629a str r2, [r3, #40] @ 0x28 - 800bd94: e026 b.n 800bde4 + 800c2fe: 687b ldr r3, [r7, #4] + 800c300: 6a9b ldr r3, [r3, #40] @ 0x28 + 800c302: 1c9a adds r2, r3, #2 + 800c304: 687b ldr r3, [r7, #4] + 800c306: 629a str r2, [r3, #40] @ 0x28 + 800c308: e026 b.n 800c358 } else { pdata8bits = (uint8_t *) huart->pRxBuffPtr; - 800bd96: 687b ldr r3, [r7, #4] - 800bd98: 6a9b ldr r3, [r3, #40] @ 0x28 - 800bd9a: 62fb str r3, [r7, #44] @ 0x2c + 800c30a: 687b ldr r3, [r7, #4] + 800c30c: 6a9b ldr r3, [r3, #40] @ 0x28 + 800c30e: 62fb str r3, [r7, #44] @ 0x2c pdata16bits = NULL; - 800bd9c: 2300 movs r3, #0 - 800bd9e: 62bb str r3, [r7, #40] @ 0x28 + 800c310: 2300 movs r3, #0 + 800c312: 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))) - 800bda0: 687b ldr r3, [r7, #4] - 800bda2: 689b ldr r3, [r3, #8] - 800bda4: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 800bda8: d007 beq.n 800bdba - 800bdaa: 687b ldr r3, [r7, #4] - 800bdac: 689b ldr r3, [r3, #8] - 800bdae: 2b00 cmp r3, #0 - 800bdb0: d10a bne.n 800bdc8 - 800bdb2: 687b ldr r3, [r7, #4] - 800bdb4: 691b ldr r3, [r3, #16] - 800bdb6: 2b00 cmp r3, #0 - 800bdb8: d106 bne.n 800bdc8 + 800c314: 687b ldr r3, [r7, #4] + 800c316: 689b ldr r3, [r3, #8] + 800c318: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 800c31c: d007 beq.n 800c32e + 800c31e: 687b ldr r3, [r7, #4] + 800c320: 689b ldr r3, [r3, #8] + 800c322: 2b00 cmp r3, #0 + 800c324: d10a bne.n 800c33c + 800c326: 687b ldr r3, [r7, #4] + 800c328: 691b ldr r3, [r3, #16] + 800c32a: 2b00 cmp r3, #0 + 800c32c: d106 bne.n 800c33c { *pdata8bits = (uint8_t)(huart->Instance->DR & (uint8_t)0x00FF); - 800bdba: 687b ldr r3, [r7, #4] - 800bdbc: 681b ldr r3, [r3, #0] - 800bdbe: 685b ldr r3, [r3, #4] - 800bdc0: b2da uxtb r2, r3 - 800bdc2: 6afb ldr r3, [r7, #44] @ 0x2c - 800bdc4: 701a strb r2, [r3, #0] - 800bdc6: e008 b.n 800bdda + 800c32e: 687b ldr r3, [r7, #4] + 800c330: 681b ldr r3, [r3, #0] + 800c332: 685b ldr r3, [r3, #4] + 800c334: b2da uxtb r2, r3 + 800c336: 6afb ldr r3, [r7, #44] @ 0x2c + 800c338: 701a strb r2, [r3, #0] + 800c33a: e008 b.n 800c34e } else { *pdata8bits = (uint8_t)(huart->Instance->DR & (uint8_t)0x007F); - 800bdc8: 687b ldr r3, [r7, #4] - 800bdca: 681b ldr r3, [r3, #0] - 800bdcc: 685b ldr r3, [r3, #4] - 800bdce: b2db uxtb r3, r3 - 800bdd0: f003 037f and.w r3, r3, #127 @ 0x7f - 800bdd4: b2da uxtb r2, r3 - 800bdd6: 6afb ldr r3, [r7, #44] @ 0x2c - 800bdd8: 701a strb r2, [r3, #0] + 800c33c: 687b ldr r3, [r7, #4] + 800c33e: 681b ldr r3, [r3, #0] + 800c340: 685b ldr r3, [r3, #4] + 800c342: b2db uxtb r3, r3 + 800c344: f003 037f and.w r3, r3, #127 @ 0x7f + 800c348: b2da uxtb r2, r3 + 800c34a: 6afb ldr r3, [r7, #44] @ 0x2c + 800c34c: 701a strb r2, [r3, #0] } huart->pRxBuffPtr += 1U; - 800bdda: 687b ldr r3, [r7, #4] - 800bddc: 6a9b ldr r3, [r3, #40] @ 0x28 - 800bdde: 1c5a adds r2, r3, #1 - 800bde0: 687b ldr r3, [r7, #4] - 800bde2: 629a str r2, [r3, #40] @ 0x28 + 800c34e: 687b ldr r3, [r7, #4] + 800c350: 6a9b ldr r3, [r3, #40] @ 0x28 + 800c352: 1c5a adds r2, r3, #1 + 800c354: 687b ldr r3, [r7, #4] + 800c356: 629a str r2, [r3, #40] @ 0x28 } if (--huart->RxXferCount == 0U) - 800bde4: 687b ldr r3, [r7, #4] - 800bde6: 8ddb ldrh r3, [r3, #46] @ 0x2e - 800bde8: b29b uxth r3, r3 - 800bdea: 3b01 subs r3, #1 - 800bdec: b29b uxth r3, r3 - 800bdee: 687a ldr r2, [r7, #4] - 800bdf0: 4619 mov r1, r3 - 800bdf2: 85d1 strh r1, [r2, #46] @ 0x2e - 800bdf4: 2b00 cmp r3, #0 - 800bdf6: d15d bne.n 800beb4 + 800c358: 687b ldr r3, [r7, #4] + 800c35a: 8ddb ldrh r3, [r3, #46] @ 0x2e + 800c35c: b29b uxth r3, r3 + 800c35e: 3b01 subs r3, #1 + 800c360: b29b uxth r3, r3 + 800c362: 687a ldr r2, [r7, #4] + 800c364: 4619 mov r1, r3 + 800c366: 85d1 strh r1, [r2, #46] @ 0x2e + 800c368: 2b00 cmp r3, #0 + 800c36a: d15d bne.n 800c428 { /* Disable the UART Data Register not empty Interrupt */ __HAL_UART_DISABLE_IT(huart, UART_IT_RXNE); - 800bdf8: 687b ldr r3, [r7, #4] - 800bdfa: 681b ldr r3, [r3, #0] - 800bdfc: 68da ldr r2, [r3, #12] - 800bdfe: 687b ldr r3, [r7, #4] - 800be00: 681b ldr r3, [r3, #0] - 800be02: f022 0220 bic.w r2, r2, #32 - 800be06: 60da str r2, [r3, #12] + 800c36c: 687b ldr r3, [r7, #4] + 800c36e: 681b ldr r3, [r3, #0] + 800c370: 68da ldr r2, [r3, #12] + 800c372: 687b ldr r3, [r7, #4] + 800c374: 681b ldr r3, [r3, #0] + 800c376: f022 0220 bic.w r2, r2, #32 + 800c37a: 60da str r2, [r3, #12] /* Disable the UART Parity Error Interrupt */ __HAL_UART_DISABLE_IT(huart, UART_IT_PE); - 800be08: 687b ldr r3, [r7, #4] - 800be0a: 681b ldr r3, [r3, #0] - 800be0c: 68da ldr r2, [r3, #12] - 800be0e: 687b ldr r3, [r7, #4] - 800be10: 681b ldr r3, [r3, #0] - 800be12: f422 7280 bic.w r2, r2, #256 @ 0x100 - 800be16: 60da str r2, [r3, #12] + 800c37c: 687b ldr r3, [r7, #4] + 800c37e: 681b ldr r3, [r3, #0] + 800c380: 68da ldr r2, [r3, #12] + 800c382: 687b ldr r3, [r7, #4] + 800c384: 681b ldr r3, [r3, #0] + 800c386: f422 7280 bic.w r2, r2, #256 @ 0x100 + 800c38a: 60da str r2, [r3, #12] /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */ __HAL_UART_DISABLE_IT(huart, UART_IT_ERR); - 800be18: 687b ldr r3, [r7, #4] - 800be1a: 681b ldr r3, [r3, #0] - 800be1c: 695a ldr r2, [r3, #20] - 800be1e: 687b ldr r3, [r7, #4] - 800be20: 681b ldr r3, [r3, #0] - 800be22: f022 0201 bic.w r2, r2, #1 - 800be26: 615a str r2, [r3, #20] + 800c38c: 687b ldr r3, [r7, #4] + 800c38e: 681b ldr r3, [r3, #0] + 800c390: 695a ldr r2, [r3, #20] + 800c392: 687b ldr r3, [r7, #4] + 800c394: 681b ldr r3, [r3, #0] + 800c396: f022 0201 bic.w r2, r2, #1 + 800c39a: 615a str r2, [r3, #20] /* Rx process is completed, restore huart->RxState to Ready */ huart->RxState = HAL_UART_STATE_READY; - 800be28: 687b ldr r3, [r7, #4] - 800be2a: 2220 movs r2, #32 - 800be2c: f883 2042 strb.w r2, [r3, #66] @ 0x42 + 800c39c: 687b ldr r3, [r7, #4] + 800c39e: 2220 movs r2, #32 + 800c3a0: f883 2042 strb.w r2, [r3, #66] @ 0x42 /* Initialize type of RxEvent to Transfer Complete */ huart->RxEventType = HAL_UART_RXEVENT_TC; - 800be30: 687b ldr r3, [r7, #4] - 800be32: 2200 movs r2, #0 - 800be34: 635a str r2, [r3, #52] @ 0x34 + 800c3a4: 687b ldr r3, [r7, #4] + 800c3a6: 2200 movs r2, #0 + 800c3a8: 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) - 800be36: 687b ldr r3, [r7, #4] - 800be38: 6b1b ldr r3, [r3, #48] @ 0x30 - 800be3a: 2b01 cmp r3, #1 - 800be3c: d135 bne.n 800beaa + 800c3aa: 687b ldr r3, [r7, #4] + 800c3ac: 6b1b ldr r3, [r3, #48] @ 0x30 + 800c3ae: 2b01 cmp r3, #1 + 800c3b0: d135 bne.n 800c41e { /* Set reception type to Standard */ huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 800be3e: 687b ldr r3, [r7, #4] - 800be40: 2200 movs r2, #0 - 800be42: 631a str r2, [r3, #48] @ 0x30 + 800c3b2: 687b ldr r3, [r7, #4] + 800c3b4: 2200 movs r2, #0 + 800c3b6: 631a str r2, [r3, #48] @ 0x30 /* Disable IDLE interrupt */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); - 800be44: 687b ldr r3, [r7, #4] - 800be46: 681b ldr r3, [r3, #0] - 800be48: 330c adds r3, #12 - 800be4a: 617b str r3, [r7, #20] + 800c3b8: 687b ldr r3, [r7, #4] + 800c3ba: 681b ldr r3, [r3, #0] + 800c3bc: 330c adds r3, #12 + 800c3be: 617b str r3, [r7, #20] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 800be4c: 697b ldr r3, [r7, #20] - 800be4e: e853 3f00 ldrex r3, [r3] - 800be52: 613b str r3, [r7, #16] + 800c3c0: 697b ldr r3, [r7, #20] + 800c3c2: e853 3f00 ldrex r3, [r3] + 800c3c6: 613b str r3, [r7, #16] return(result); - 800be54: 693b ldr r3, [r7, #16] - 800be56: f023 0310 bic.w r3, r3, #16 - 800be5a: 627b str r3, [r7, #36] @ 0x24 - 800be5c: 687b ldr r3, [r7, #4] - 800be5e: 681b ldr r3, [r3, #0] - 800be60: 330c adds r3, #12 - 800be62: 6a7a ldr r2, [r7, #36] @ 0x24 - 800be64: 623a str r2, [r7, #32] - 800be66: 61fb str r3, [r7, #28] + 800c3c8: 693b ldr r3, [r7, #16] + 800c3ca: f023 0310 bic.w r3, r3, #16 + 800c3ce: 627b str r3, [r7, #36] @ 0x24 + 800c3d0: 687b ldr r3, [r7, #4] + 800c3d2: 681b ldr r3, [r3, #0] + 800c3d4: 330c adds r3, #12 + 800c3d6: 6a7a ldr r2, [r7, #36] @ 0x24 + 800c3d8: 623a str r2, [r7, #32] + 800c3da: 61fb str r3, [r7, #28] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 800be68: 69f9 ldr r1, [r7, #28] - 800be6a: 6a3a ldr r2, [r7, #32] - 800be6c: e841 2300 strex r3, r2, [r1] - 800be70: 61bb str r3, [r7, #24] + 800c3dc: 69f9 ldr r1, [r7, #28] + 800c3de: 6a3a ldr r2, [r7, #32] + 800c3e0: e841 2300 strex r3, r2, [r1] + 800c3e4: 61bb str r3, [r7, #24] return(result); - 800be72: 69bb ldr r3, [r7, #24] - 800be74: 2b00 cmp r3, #0 - 800be76: d1e5 bne.n 800be44 + 800c3e6: 69bb ldr r3, [r7, #24] + 800c3e8: 2b00 cmp r3, #0 + 800c3ea: d1e5 bne.n 800c3b8 /* Check if IDLE flag is set */ if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE)) - 800be78: 687b ldr r3, [r7, #4] - 800be7a: 681b ldr r3, [r3, #0] - 800be7c: 681b ldr r3, [r3, #0] - 800be7e: f003 0310 and.w r3, r3, #16 - 800be82: 2b10 cmp r3, #16 - 800be84: d10a bne.n 800be9c + 800c3ec: 687b ldr r3, [r7, #4] + 800c3ee: 681b ldr r3, [r3, #0] + 800c3f0: 681b ldr r3, [r3, #0] + 800c3f2: f003 0310 and.w r3, r3, #16 + 800c3f6: 2b10 cmp r3, #16 + 800c3f8: d10a bne.n 800c410 { /* Clear IDLE flag in ISR */ __HAL_UART_CLEAR_IDLEFLAG(huart); - 800be86: 2300 movs r3, #0 - 800be88: 60fb str r3, [r7, #12] - 800be8a: 687b ldr r3, [r7, #4] - 800be8c: 681b ldr r3, [r3, #0] - 800be8e: 681b ldr r3, [r3, #0] - 800be90: 60fb str r3, [r7, #12] - 800be92: 687b ldr r3, [r7, #4] - 800be94: 681b ldr r3, [r3, #0] - 800be96: 685b ldr r3, [r3, #4] - 800be98: 60fb str r3, [r7, #12] - 800be9a: 68fb ldr r3, [r7, #12] + 800c3fa: 2300 movs r3, #0 + 800c3fc: 60fb str r3, [r7, #12] + 800c3fe: 687b ldr r3, [r7, #4] + 800c400: 681b ldr r3, [r3, #0] + 800c402: 681b ldr r3, [r3, #0] + 800c404: 60fb str r3, [r7, #12] + 800c406: 687b ldr r3, [r7, #4] + 800c408: 681b ldr r3, [r3, #0] + 800c40a: 685b ldr r3, [r3, #4] + 800c40c: 60fb str r3, [r7, #12] + 800c40e: 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); - 800be9c: 687b ldr r3, [r7, #4] - 800be9e: 8d9b ldrh r3, [r3, #44] @ 0x2c - 800bea0: 4619 mov r1, r3 - 800bea2: 6878 ldr r0, [r7, #4] - 800bea4: f7ff fc48 bl 800b738 - 800bea8: e002 b.n 800beb0 + 800c410: 687b ldr r3, [r7, #4] + 800c412: 8d9b ldrh r3, [r3, #44] @ 0x2c + 800c414: 4619 mov r1, r3 + 800c416: 6878 ldr r0, [r7, #4] + 800c418: f7ff fc48 bl 800bcac + 800c41c: e002 b.n 800c424 #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); - 800beaa: 6878 ldr r0, [r7, #4] - 800beac: f7ff fc26 bl 800b6fc + 800c41e: 6878 ldr r0, [r7, #4] + 800c420: f7ff fc26 bl 800bc70 #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ } return HAL_OK; - 800beb0: 2300 movs r3, #0 - 800beb2: e002 b.n 800beba + 800c424: 2300 movs r3, #0 + 800c426: e002 b.n 800c42e } return HAL_OK; - 800beb4: 2300 movs r3, #0 - 800beb6: e000 b.n 800beba + 800c428: 2300 movs r3, #0 + 800c42a: e000 b.n 800c42e } else { return HAL_BUSY; - 800beb8: 2302 movs r3, #2 + 800c42c: 2302 movs r3, #2 } } - 800beba: 4618 mov r0, r3 - 800bebc: 3730 adds r7, #48 @ 0x30 - 800bebe: 46bd mov sp, r7 - 800bec0: bd80 pop {r7, pc} + 800c42e: 4618 mov r0, r3 + 800c430: 3730 adds r7, #48 @ 0x30 + 800c432: 46bd mov sp, r7 + 800c434: bd80 pop {r7, pc} ... -0800bec4 : +0800c438 : * @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) { - 800bec4: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} - 800bec8: b0c0 sub sp, #256 @ 0x100 - 800beca: af00 add r7, sp, #0 - 800becc: f8c7 00f4 str.w r0, [r7, #244] @ 0xf4 + 800c438: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} + 800c43c: b0c0 sub sp, #256 @ 0x100 + 800c43e: af00 add r7, sp, #0 + 800c440: f8c7 00f4 str.w r0, [r7, #244] @ 0xf4 uint32_t tmpreg; uint32_t pclk; /* Check the parameters */ assert_param(IS_UART_BAUDRATE(huart->Init.BaudRate)); - 800bed0: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bed4: 685a ldr r2, [r3, #4] - 800bed6: 4b4d ldr r3, [pc, #308] @ (800c00c ) - 800bed8: 429a cmp r2, r3 - 800beda: d904 bls.n 800bee6 - 800bedc: f640 6175 movw r1, #3701 @ 0xe75 - 800bee0: 484b ldr r0, [pc, #300] @ (800c010 ) - 800bee2: f7f7 f947 bl 8003174 + 800c444: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c448: 685a ldr r2, [r3, #4] + 800c44a: 4b4d ldr r3, [pc, #308] @ (800c580 ) + 800c44c: 429a cmp r2, r3 + 800c44e: d904 bls.n 800c45a + 800c450: f640 6175 movw r1, #3701 @ 0xe75 + 800c454: 484b ldr r0, [pc, #300] @ (800c584 ) + 800c456: f7f6 fee9 bl 800322c assert_param(IS_UART_STOPBITS(huart->Init.StopBits)); - 800bee6: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800beea: 68db ldr r3, [r3, #12] - 800beec: 2b00 cmp r3, #0 - 800beee: d00a beq.n 800bf06 - 800bef0: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bef4: 68db ldr r3, [r3, #12] - 800bef6: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 - 800befa: d004 beq.n 800bf06 - 800befc: f640 6176 movw r1, #3702 @ 0xe76 - 800bf00: 4843 ldr r0, [pc, #268] @ (800c010 ) - 800bf02: f7f7 f937 bl 8003174 + 800c45a: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c45e: 68db ldr r3, [r3, #12] + 800c460: 2b00 cmp r3, #0 + 800c462: d00a beq.n 800c47a + 800c464: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c468: 68db ldr r3, [r3, #12] + 800c46a: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 800c46e: d004 beq.n 800c47a + 800c470: f640 6176 movw r1, #3702 @ 0xe76 + 800c474: 4843 ldr r0, [pc, #268] @ (800c584 ) + 800c476: f7f6 fed9 bl 800322c assert_param(IS_UART_PARITY(huart->Init.Parity)); - 800bf06: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bf0a: 691b ldr r3, [r3, #16] - 800bf0c: 2b00 cmp r3, #0 - 800bf0e: d010 beq.n 800bf32 - 800bf10: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bf14: 691b ldr r3, [r3, #16] - 800bf16: f5b3 6f80 cmp.w r3, #1024 @ 0x400 - 800bf1a: d00a beq.n 800bf32 - 800bf1c: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bf20: 691b ldr r3, [r3, #16] - 800bf22: f5b3 6fc0 cmp.w r3, #1536 @ 0x600 - 800bf26: d004 beq.n 800bf32 - 800bf28: f640 6177 movw r1, #3703 @ 0xe77 - 800bf2c: 4838 ldr r0, [pc, #224] @ (800c010 ) - 800bf2e: f7f7 f921 bl 8003174 + 800c47a: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c47e: 691b ldr r3, [r3, #16] + 800c480: 2b00 cmp r3, #0 + 800c482: d010 beq.n 800c4a6 + 800c484: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c488: 691b ldr r3, [r3, #16] + 800c48a: f5b3 6f80 cmp.w r3, #1024 @ 0x400 + 800c48e: d00a beq.n 800c4a6 + 800c490: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c494: 691b ldr r3, [r3, #16] + 800c496: f5b3 6fc0 cmp.w r3, #1536 @ 0x600 + 800c49a: d004 beq.n 800c4a6 + 800c49c: f640 6177 movw r1, #3703 @ 0xe77 + 800c4a0: 4838 ldr r0, [pc, #224] @ (800c584 ) + 800c4a2: f7f6 fec3 bl 800322c assert_param(IS_UART_MODE(huart->Init.Mode)); - 800bf32: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bf36: 695a ldr r2, [r3, #20] - 800bf38: f64f 73f3 movw r3, #65523 @ 0xfff3 - 800bf3c: 4013 ands r3, r2 - 800bf3e: 2b00 cmp r3, #0 - 800bf40: d104 bne.n 800bf4c - 800bf42: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bf46: 695b ldr r3, [r3, #20] - 800bf48: 2b00 cmp r3, #0 - 800bf4a: d104 bne.n 800bf56 - 800bf4c: f640 6178 movw r1, #3704 @ 0xe78 - 800bf50: 482f ldr r0, [pc, #188] @ (800c010 ) - 800bf52: f7f7 f90f bl 8003174 + 800c4a6: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c4aa: 695a ldr r2, [r3, #20] + 800c4ac: f64f 73f3 movw r3, #65523 @ 0xfff3 + 800c4b0: 4013 ands r3, r2 + 800c4b2: 2b00 cmp r3, #0 + 800c4b4: d104 bne.n 800c4c0 + 800c4b6: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c4ba: 695b ldr r3, [r3, #20] + 800c4bc: 2b00 cmp r3, #0 + 800c4be: d104 bne.n 800c4ca + 800c4c0: f640 6178 movw r1, #3704 @ 0xe78 + 800c4c4: 482f ldr r0, [pc, #188] @ (800c584 ) + 800c4c6: f7f6 feb1 bl 800322c /*-------------------------- 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); - 800bf56: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bf5a: 681b ldr r3, [r3, #0] - 800bf5c: 691b ldr r3, [r3, #16] - 800bf5e: f423 5040 bic.w r0, r3, #12288 @ 0x3000 - 800bf62: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bf66: 68d9 ldr r1, [r3, #12] - 800bf68: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bf6c: 681a ldr r2, [r3, #0] - 800bf6e: ea40 0301 orr.w r3, r0, r1 - 800bf72: 6113 str r3, [r2, #16] + 800c4ca: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c4ce: 681b ldr r3, [r3, #0] + 800c4d0: 691b ldr r3, [r3, #16] + 800c4d2: f423 5040 bic.w r0, r3, #12288 @ 0x3000 + 800c4d6: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c4da: 68d9 ldr r1, [r3, #12] + 800c4dc: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c4e0: 681a ldr r2, [r3, #0] + 800c4e2: ea40 0301 orr.w r3, r0, r1 + 800c4e6: 6113 str r3, [r2, #16] Set the M bits according to huart->Init.WordLength value Set PCE and PS bits according to huart->Init.Parity value Set TE and RE bits according to huart->Init.Mode value Set OVER8 bit according to huart->Init.OverSampling value */ tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling; - 800bf74: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bf78: 689a ldr r2, [r3, #8] - 800bf7a: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bf7e: 691b ldr r3, [r3, #16] - 800bf80: 431a orrs r2, r3 - 800bf82: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bf86: 695b ldr r3, [r3, #20] - 800bf88: 431a orrs r2, r3 - 800bf8a: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bf8e: 69db ldr r3, [r3, #28] - 800bf90: 4313 orrs r3, r2 - 800bf92: f8c7 30f8 str.w r3, [r7, #248] @ 0xf8 + 800c4e8: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c4ec: 689a ldr r2, [r3, #8] + 800c4ee: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c4f2: 691b ldr r3, [r3, #16] + 800c4f4: 431a orrs r2, r3 + 800c4f6: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c4fa: 695b ldr r3, [r3, #20] + 800c4fc: 431a orrs r2, r3 + 800c4fe: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c502: 69db ldr r3, [r3, #28] + 800c504: 4313 orrs r3, r2 + 800c506: f8c7 30f8 str.w r3, [r7, #248] @ 0xf8 MODIFY_REG(huart->Instance->CR1, - 800bf96: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bf9a: 681b ldr r3, [r3, #0] - 800bf9c: 68db ldr r3, [r3, #12] - 800bf9e: f423 4116 bic.w r1, r3, #38400 @ 0x9600 - 800bfa2: f021 010c bic.w r1, r1, #12 - 800bfa6: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bfaa: 681a ldr r2, [r3, #0] - 800bfac: f8d7 30f8 ldr.w r3, [r7, #248] @ 0xf8 - 800bfb0: 430b orrs r3, r1 - 800bfb2: 60d3 str r3, [r2, #12] + 800c50a: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c50e: 681b ldr r3, [r3, #0] + 800c510: 68db ldr r3, [r3, #12] + 800c512: f423 4116 bic.w r1, r3, #38400 @ 0x9600 + 800c516: f021 010c bic.w r1, r1, #12 + 800c51a: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c51e: 681a ldr r2, [r3, #0] + 800c520: f8d7 30f8 ldr.w r3, [r7, #248] @ 0xf8 + 800c524: 430b orrs r3, r1 + 800c526: 60d3 str r3, [r2, #12] (uint32_t)(USART_CR1_M | USART_CR1_PCE | USART_CR1_PS | USART_CR1_TE | USART_CR1_RE | USART_CR1_OVER8), tmpreg); /*-------------------------- 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); - 800bfb4: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bfb8: 681b ldr r3, [r3, #0] - 800bfba: 695b ldr r3, [r3, #20] - 800bfbc: f423 7040 bic.w r0, r3, #768 @ 0x300 - 800bfc0: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bfc4: 6999 ldr r1, [r3, #24] - 800bfc6: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bfca: 681a ldr r2, [r3, #0] - 800bfcc: ea40 0301 orr.w r3, r0, r1 - 800bfd0: 6153 str r3, [r2, #20] + 800c528: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c52c: 681b ldr r3, [r3, #0] + 800c52e: 695b ldr r3, [r3, #20] + 800c530: f423 7040 bic.w r0, r3, #768 @ 0x300 + 800c534: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c538: 6999 ldr r1, [r3, #24] + 800c53a: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c53e: 681a ldr r2, [r3, #0] + 800c540: ea40 0301 orr.w r3, r0, r1 + 800c544: 6153 str r3, [r2, #20] #if defined(USART6) && defined(UART9) && defined(UART10) if ((huart->Instance == USART1) || (huart->Instance == USART6) || (huart->Instance == UART9) || (huart->Instance == UART10)) - 800bfd2: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bfd6: 681a ldr r2, [r3, #0] - 800bfd8: 4b0e ldr r3, [pc, #56] @ (800c014 ) - 800bfda: 429a cmp r2, r3 - 800bfdc: d011 beq.n 800c002 - 800bfde: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bfe2: 681a ldr r2, [r3, #0] - 800bfe4: 4b0c ldr r3, [pc, #48] @ (800c018 ) - 800bfe6: 429a cmp r2, r3 - 800bfe8: d00b beq.n 800c002 - 800bfea: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bfee: 681a ldr r2, [r3, #0] - 800bff0: 4b0a ldr r3, [pc, #40] @ (800c01c ) - 800bff2: 429a cmp r2, r3 - 800bff4: d005 beq.n 800c002 - 800bff6: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800bffa: 681a ldr r2, [r3, #0] - 800bffc: 4b08 ldr r3, [pc, #32] @ (800c020 ) - 800bffe: 429a cmp r2, r3 - 800c000: d110 bne.n 800c024 + 800c546: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c54a: 681a ldr r2, [r3, #0] + 800c54c: 4b0e ldr r3, [pc, #56] @ (800c588 ) + 800c54e: 429a cmp r2, r3 + 800c550: d011 beq.n 800c576 + 800c552: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c556: 681a ldr r2, [r3, #0] + 800c558: 4b0c ldr r3, [pc, #48] @ (800c58c ) + 800c55a: 429a cmp r2, r3 + 800c55c: d00b beq.n 800c576 + 800c55e: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c562: 681a ldr r2, [r3, #0] + 800c564: 4b0a ldr r3, [pc, #40] @ (800c590 ) + 800c566: 429a cmp r2, r3 + 800c568: d005 beq.n 800c576 + 800c56a: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c56e: 681a ldr r2, [r3, #0] + 800c570: 4b08 ldr r3, [pc, #32] @ (800c594 ) + 800c572: 429a cmp r2, r3 + 800c574: d110 bne.n 800c598 { pclk = HAL_RCC_GetPCLK2Freq(); - 800c002: f7fb ff3b bl 8007e7c - 800c006: f8c7 00fc str.w r0, [r7, #252] @ 0xfc - 800c00a: e00f b.n 800c02c - 800c00c: 00a037a0 .word 0x00a037a0 - 800c010: 0800e97c .word 0x0800e97c - 800c014: 40011000 .word 0x40011000 - 800c018: 40011400 .word 0x40011400 - 800c01c: 40011800 .word 0x40011800 - 800c020: 40011c00 .word 0x40011c00 + 800c576: f7fb fdab bl 80080d0 + 800c57a: f8c7 00fc str.w r0, [r7, #252] @ 0xfc + 800c57e: e00f b.n 800c5a0 + 800c580: 00a037a0 .word 0x00a037a0 + 800c584: 0800eeec .word 0x0800eeec + 800c588: 40011000 .word 0x40011000 + 800c58c: 40011400 .word 0x40011400 + 800c590: 40011800 .word 0x40011800 + 800c594: 40011c00 .word 0x40011c00 pclk = HAL_RCC_GetPCLK2Freq(); } #endif /* USART6 */ else { pclk = HAL_RCC_GetPCLK1Freq(); - 800c024: f7fb ff16 bl 8007e54 - 800c028: f8c7 00fc str.w r0, [r7, #252] @ 0xfc + 800c598: f7fb fd86 bl 80080a8 + 800c59c: f8c7 00fc str.w r0, [r7, #252] @ 0xfc } /*-------------------------- USART BRR Configuration ---------------------*/ if (huart->Init.OverSampling == UART_OVERSAMPLING_8) - 800c02c: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800c030: 69db ldr r3, [r3, #28] - 800c032: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 - 800c036: f040 8107 bne.w 800c248 + 800c5a0: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c5a4: 69db ldr r3, [r3, #28] + 800c5a6: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 800c5aa: f040 8107 bne.w 800c7bc { huart->Instance->BRR = UART_BRR_SAMPLING8(pclk, huart->Init.BaudRate); - 800c03a: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc - 800c03e: 2200 movs r2, #0 - 800c040: f8c7 30e8 str.w r3, [r7, #232] @ 0xe8 - 800c044: f8c7 20ec str.w r2, [r7, #236] @ 0xec - 800c048: e9d7 453a ldrd r4, r5, [r7, #232] @ 0xe8 - 800c04c: 4622 mov r2, r4 - 800c04e: 462b mov r3, r5 - 800c050: 1891 adds r1, r2, r2 - 800c052: 65b9 str r1, [r7, #88] @ 0x58 - 800c054: 415b adcs r3, r3 - 800c056: 65fb str r3, [r7, #92] @ 0x5c - 800c058: e9d7 2316 ldrd r2, r3, [r7, #88] @ 0x58 - 800c05c: 4621 mov r1, r4 - 800c05e: eb12 0801 adds.w r8, r2, r1 - 800c062: 4629 mov r1, r5 - 800c064: eb43 0901 adc.w r9, r3, r1 - 800c068: f04f 0200 mov.w r2, #0 - 800c06c: f04f 0300 mov.w r3, #0 - 800c070: ea4f 03c9 mov.w r3, r9, lsl #3 - 800c074: ea43 7358 orr.w r3, r3, r8, lsr #29 - 800c078: ea4f 02c8 mov.w r2, r8, lsl #3 - 800c07c: 4690 mov r8, r2 - 800c07e: 4699 mov r9, r3 - 800c080: 4623 mov r3, r4 - 800c082: eb18 0303 adds.w r3, r8, r3 - 800c086: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 - 800c08a: 462b mov r3, r5 - 800c08c: eb49 0303 adc.w r3, r9, r3 - 800c090: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 - 800c094: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800c098: 685b ldr r3, [r3, #4] - 800c09a: 2200 movs r2, #0 - 800c09c: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 - 800c0a0: f8c7 20dc str.w r2, [r7, #220] @ 0xdc - 800c0a4: e9d7 1236 ldrd r1, r2, [r7, #216] @ 0xd8 - 800c0a8: 460b mov r3, r1 - 800c0aa: 18db adds r3, r3, r3 - 800c0ac: 653b str r3, [r7, #80] @ 0x50 - 800c0ae: 4613 mov r3, r2 - 800c0b0: eb42 0303 adc.w r3, r2, r3 - 800c0b4: 657b str r3, [r7, #84] @ 0x54 - 800c0b6: e9d7 2314 ldrd r2, r3, [r7, #80] @ 0x50 - 800c0ba: e9d7 0138 ldrd r0, r1, [r7, #224] @ 0xe0 - 800c0be: f7f4 fde3 bl 8000c88 <__aeabi_uldivmod> - 800c0c2: 4602 mov r2, r0 - 800c0c4: 460b mov r3, r1 - 800c0c6: 4b5f ldr r3, [pc, #380] @ (800c244 ) - 800c0c8: fba3 2302 umull r2, r3, r3, r2 - 800c0cc: 095b lsrs r3, r3, #5 - 800c0ce: 011c lsls r4, r3, #4 - 800c0d0: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc - 800c0d4: 2200 movs r2, #0 - 800c0d6: f8c7 30d0 str.w r3, [r7, #208] @ 0xd0 - 800c0da: f8c7 20d4 str.w r2, [r7, #212] @ 0xd4 - 800c0de: e9d7 8934 ldrd r8, r9, [r7, #208] @ 0xd0 - 800c0e2: 4642 mov r2, r8 - 800c0e4: 464b mov r3, r9 - 800c0e6: 1891 adds r1, r2, r2 - 800c0e8: 64b9 str r1, [r7, #72] @ 0x48 - 800c0ea: 415b adcs r3, r3 - 800c0ec: 64fb str r3, [r7, #76] @ 0x4c - 800c0ee: e9d7 2312 ldrd r2, r3, [r7, #72] @ 0x48 - 800c0f2: 4641 mov r1, r8 - 800c0f4: eb12 0a01 adds.w sl, r2, r1 - 800c0f8: 4649 mov r1, r9 - 800c0fa: eb43 0b01 adc.w fp, r3, r1 - 800c0fe: f04f 0200 mov.w r2, #0 - 800c102: f04f 0300 mov.w r3, #0 - 800c106: ea4f 03cb mov.w r3, fp, lsl #3 - 800c10a: ea43 735a orr.w r3, r3, sl, lsr #29 - 800c10e: ea4f 02ca mov.w r2, sl, lsl #3 - 800c112: 4692 mov sl, r2 - 800c114: 469b mov fp, r3 - 800c116: 4643 mov r3, r8 - 800c118: eb1a 0303 adds.w r3, sl, r3 - 800c11c: f8c7 30c8 str.w r3, [r7, #200] @ 0xc8 - 800c120: 464b mov r3, r9 - 800c122: eb4b 0303 adc.w r3, fp, r3 - 800c126: f8c7 30cc str.w r3, [r7, #204] @ 0xcc - 800c12a: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800c12e: 685b ldr r3, [r3, #4] - 800c130: 2200 movs r2, #0 - 800c132: f8c7 30c0 str.w r3, [r7, #192] @ 0xc0 - 800c136: f8c7 20c4 str.w r2, [r7, #196] @ 0xc4 - 800c13a: e9d7 1230 ldrd r1, r2, [r7, #192] @ 0xc0 - 800c13e: 460b mov r3, r1 - 800c140: 18db adds r3, r3, r3 - 800c142: 643b str r3, [r7, #64] @ 0x40 - 800c144: 4613 mov r3, r2 - 800c146: eb42 0303 adc.w r3, r2, r3 - 800c14a: 647b str r3, [r7, #68] @ 0x44 - 800c14c: e9d7 2310 ldrd r2, r3, [r7, #64] @ 0x40 - 800c150: e9d7 0132 ldrd r0, r1, [r7, #200] @ 0xc8 - 800c154: f7f4 fd98 bl 8000c88 <__aeabi_uldivmod> - 800c158: 4602 mov r2, r0 - 800c15a: 460b mov r3, r1 - 800c15c: 4611 mov r1, r2 - 800c15e: 4b39 ldr r3, [pc, #228] @ (800c244 ) - 800c160: fba3 2301 umull r2, r3, r3, r1 - 800c164: 095b lsrs r3, r3, #5 - 800c166: 2264 movs r2, #100 @ 0x64 - 800c168: fb02 f303 mul.w r3, r2, r3 - 800c16c: 1acb subs r3, r1, r3 - 800c16e: 00db lsls r3, r3, #3 - 800c170: f103 0232 add.w r2, r3, #50 @ 0x32 - 800c174: 4b33 ldr r3, [pc, #204] @ (800c244 ) - 800c176: fba3 2302 umull r2, r3, r3, r2 - 800c17a: 095b lsrs r3, r3, #5 - 800c17c: 005b lsls r3, r3, #1 - 800c17e: f403 73f8 and.w r3, r3, #496 @ 0x1f0 - 800c182: 441c add r4, r3 - 800c184: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc - 800c188: 2200 movs r2, #0 - 800c18a: f8c7 30b8 str.w r3, [r7, #184] @ 0xb8 - 800c18e: f8c7 20bc str.w r2, [r7, #188] @ 0xbc - 800c192: e9d7 892e ldrd r8, r9, [r7, #184] @ 0xb8 - 800c196: 4642 mov r2, r8 - 800c198: 464b mov r3, r9 - 800c19a: 1891 adds r1, r2, r2 - 800c19c: 63b9 str r1, [r7, #56] @ 0x38 - 800c19e: 415b adcs r3, r3 - 800c1a0: 63fb str r3, [r7, #60] @ 0x3c - 800c1a2: e9d7 230e ldrd r2, r3, [r7, #56] @ 0x38 - 800c1a6: 4641 mov r1, r8 - 800c1a8: 1851 adds r1, r2, r1 - 800c1aa: 6339 str r1, [r7, #48] @ 0x30 - 800c1ac: 4649 mov r1, r9 - 800c1ae: 414b adcs r3, r1 - 800c1b0: 637b str r3, [r7, #52] @ 0x34 - 800c1b2: f04f 0200 mov.w r2, #0 - 800c1b6: f04f 0300 mov.w r3, #0 - 800c1ba: e9d7 ab0c ldrd sl, fp, [r7, #48] @ 0x30 - 800c1be: 4659 mov r1, fp - 800c1c0: 00cb lsls r3, r1, #3 - 800c1c2: 4651 mov r1, sl - 800c1c4: ea43 7351 orr.w r3, r3, r1, lsr #29 - 800c1c8: 4651 mov r1, sl - 800c1ca: 00ca lsls r2, r1, #3 - 800c1cc: 4610 mov r0, r2 - 800c1ce: 4619 mov r1, r3 - 800c1d0: 4603 mov r3, r0 - 800c1d2: 4642 mov r2, r8 - 800c1d4: 189b adds r3, r3, r2 - 800c1d6: f8c7 30b0 str.w r3, [r7, #176] @ 0xb0 - 800c1da: 464b mov r3, r9 - 800c1dc: 460a mov r2, r1 - 800c1de: eb42 0303 adc.w r3, r2, r3 - 800c1e2: f8c7 30b4 str.w r3, [r7, #180] @ 0xb4 - 800c1e6: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800c1ea: 685b ldr r3, [r3, #4] - 800c1ec: 2200 movs r2, #0 - 800c1ee: f8c7 30a8 str.w r3, [r7, #168] @ 0xa8 - 800c1f2: f8c7 20ac str.w r2, [r7, #172] @ 0xac - 800c1f6: e9d7 122a ldrd r1, r2, [r7, #168] @ 0xa8 - 800c1fa: 460b mov r3, r1 - 800c1fc: 18db adds r3, r3, r3 - 800c1fe: 62bb str r3, [r7, #40] @ 0x28 - 800c200: 4613 mov r3, r2 - 800c202: eb42 0303 adc.w r3, r2, r3 - 800c206: 62fb str r3, [r7, #44] @ 0x2c - 800c208: e9d7 230a ldrd r2, r3, [r7, #40] @ 0x28 - 800c20c: e9d7 012c ldrd r0, r1, [r7, #176] @ 0xb0 - 800c210: f7f4 fd3a bl 8000c88 <__aeabi_uldivmod> - 800c214: 4602 mov r2, r0 - 800c216: 460b mov r3, r1 - 800c218: 4b0a ldr r3, [pc, #40] @ (800c244 ) - 800c21a: fba3 1302 umull r1, r3, r3, r2 - 800c21e: 095b lsrs r3, r3, #5 - 800c220: 2164 movs r1, #100 @ 0x64 - 800c222: fb01 f303 mul.w r3, r1, r3 - 800c226: 1ad3 subs r3, r2, r3 - 800c228: 00db lsls r3, r3, #3 - 800c22a: 3332 adds r3, #50 @ 0x32 - 800c22c: 4a05 ldr r2, [pc, #20] @ (800c244 ) - 800c22e: fba2 2303 umull r2, r3, r2, r3 - 800c232: 095b lsrs r3, r3, #5 - 800c234: f003 0207 and.w r2, r3, #7 - 800c238: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800c23c: 681b ldr r3, [r3, #0] - 800c23e: 4422 add r2, r4 - 800c240: 609a str r2, [r3, #8] + 800c5ae: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc + 800c5b2: 2200 movs r2, #0 + 800c5b4: f8c7 30e8 str.w r3, [r7, #232] @ 0xe8 + 800c5b8: f8c7 20ec str.w r2, [r7, #236] @ 0xec + 800c5bc: e9d7 453a ldrd r4, r5, [r7, #232] @ 0xe8 + 800c5c0: 4622 mov r2, r4 + 800c5c2: 462b mov r3, r5 + 800c5c4: 1891 adds r1, r2, r2 + 800c5c6: 65b9 str r1, [r7, #88] @ 0x58 + 800c5c8: 415b adcs r3, r3 + 800c5ca: 65fb str r3, [r7, #92] @ 0x5c + 800c5cc: e9d7 2316 ldrd r2, r3, [r7, #88] @ 0x58 + 800c5d0: 4621 mov r1, r4 + 800c5d2: eb12 0801 adds.w r8, r2, r1 + 800c5d6: 4629 mov r1, r5 + 800c5d8: eb43 0901 adc.w r9, r3, r1 + 800c5dc: f04f 0200 mov.w r2, #0 + 800c5e0: f04f 0300 mov.w r3, #0 + 800c5e4: ea4f 03c9 mov.w r3, r9, lsl #3 + 800c5e8: ea43 7358 orr.w r3, r3, r8, lsr #29 + 800c5ec: ea4f 02c8 mov.w r2, r8, lsl #3 + 800c5f0: 4690 mov r8, r2 + 800c5f2: 4699 mov r9, r3 + 800c5f4: 4623 mov r3, r4 + 800c5f6: eb18 0303 adds.w r3, r8, r3 + 800c5fa: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 + 800c5fe: 462b mov r3, r5 + 800c600: eb49 0303 adc.w r3, r9, r3 + 800c604: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 + 800c608: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c60c: 685b ldr r3, [r3, #4] + 800c60e: 2200 movs r2, #0 + 800c610: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 + 800c614: f8c7 20dc str.w r2, [r7, #220] @ 0xdc + 800c618: e9d7 1236 ldrd r1, r2, [r7, #216] @ 0xd8 + 800c61c: 460b mov r3, r1 + 800c61e: 18db adds r3, r3, r3 + 800c620: 653b str r3, [r7, #80] @ 0x50 + 800c622: 4613 mov r3, r2 + 800c624: eb42 0303 adc.w r3, r2, r3 + 800c628: 657b str r3, [r7, #84] @ 0x54 + 800c62a: e9d7 2314 ldrd r2, r3, [r7, #80] @ 0x50 + 800c62e: e9d7 0138 ldrd r0, r1, [r7, #224] @ 0xe0 + 800c632: f7f4 fb29 bl 8000c88 <__aeabi_uldivmod> + 800c636: 4602 mov r2, r0 + 800c638: 460b mov r3, r1 + 800c63a: 4b5f ldr r3, [pc, #380] @ (800c7b8 ) + 800c63c: fba3 2302 umull r2, r3, r3, r2 + 800c640: 095b lsrs r3, r3, #5 + 800c642: 011c lsls r4, r3, #4 + 800c644: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc + 800c648: 2200 movs r2, #0 + 800c64a: f8c7 30d0 str.w r3, [r7, #208] @ 0xd0 + 800c64e: f8c7 20d4 str.w r2, [r7, #212] @ 0xd4 + 800c652: e9d7 8934 ldrd r8, r9, [r7, #208] @ 0xd0 + 800c656: 4642 mov r2, r8 + 800c658: 464b mov r3, r9 + 800c65a: 1891 adds r1, r2, r2 + 800c65c: 64b9 str r1, [r7, #72] @ 0x48 + 800c65e: 415b adcs r3, r3 + 800c660: 64fb str r3, [r7, #76] @ 0x4c + 800c662: e9d7 2312 ldrd r2, r3, [r7, #72] @ 0x48 + 800c666: 4641 mov r1, r8 + 800c668: eb12 0a01 adds.w sl, r2, r1 + 800c66c: 4649 mov r1, r9 + 800c66e: eb43 0b01 adc.w fp, r3, r1 + 800c672: f04f 0200 mov.w r2, #0 + 800c676: f04f 0300 mov.w r3, #0 + 800c67a: ea4f 03cb mov.w r3, fp, lsl #3 + 800c67e: ea43 735a orr.w r3, r3, sl, lsr #29 + 800c682: ea4f 02ca mov.w r2, sl, lsl #3 + 800c686: 4692 mov sl, r2 + 800c688: 469b mov fp, r3 + 800c68a: 4643 mov r3, r8 + 800c68c: eb1a 0303 adds.w r3, sl, r3 + 800c690: f8c7 30c8 str.w r3, [r7, #200] @ 0xc8 + 800c694: 464b mov r3, r9 + 800c696: eb4b 0303 adc.w r3, fp, r3 + 800c69a: f8c7 30cc str.w r3, [r7, #204] @ 0xcc + 800c69e: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c6a2: 685b ldr r3, [r3, #4] + 800c6a4: 2200 movs r2, #0 + 800c6a6: f8c7 30c0 str.w r3, [r7, #192] @ 0xc0 + 800c6aa: f8c7 20c4 str.w r2, [r7, #196] @ 0xc4 + 800c6ae: e9d7 1230 ldrd r1, r2, [r7, #192] @ 0xc0 + 800c6b2: 460b mov r3, r1 + 800c6b4: 18db adds r3, r3, r3 + 800c6b6: 643b str r3, [r7, #64] @ 0x40 + 800c6b8: 4613 mov r3, r2 + 800c6ba: eb42 0303 adc.w r3, r2, r3 + 800c6be: 647b str r3, [r7, #68] @ 0x44 + 800c6c0: e9d7 2310 ldrd r2, r3, [r7, #64] @ 0x40 + 800c6c4: e9d7 0132 ldrd r0, r1, [r7, #200] @ 0xc8 + 800c6c8: f7f4 fade bl 8000c88 <__aeabi_uldivmod> + 800c6cc: 4602 mov r2, r0 + 800c6ce: 460b mov r3, r1 + 800c6d0: 4611 mov r1, r2 + 800c6d2: 4b39 ldr r3, [pc, #228] @ (800c7b8 ) + 800c6d4: fba3 2301 umull r2, r3, r3, r1 + 800c6d8: 095b lsrs r3, r3, #5 + 800c6da: 2264 movs r2, #100 @ 0x64 + 800c6dc: fb02 f303 mul.w r3, r2, r3 + 800c6e0: 1acb subs r3, r1, r3 + 800c6e2: 00db lsls r3, r3, #3 + 800c6e4: f103 0232 add.w r2, r3, #50 @ 0x32 + 800c6e8: 4b33 ldr r3, [pc, #204] @ (800c7b8 ) + 800c6ea: fba3 2302 umull r2, r3, r3, r2 + 800c6ee: 095b lsrs r3, r3, #5 + 800c6f0: 005b lsls r3, r3, #1 + 800c6f2: f403 73f8 and.w r3, r3, #496 @ 0x1f0 + 800c6f6: 441c add r4, r3 + 800c6f8: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc + 800c6fc: 2200 movs r2, #0 + 800c6fe: f8c7 30b8 str.w r3, [r7, #184] @ 0xb8 + 800c702: f8c7 20bc str.w r2, [r7, #188] @ 0xbc + 800c706: e9d7 892e ldrd r8, r9, [r7, #184] @ 0xb8 + 800c70a: 4642 mov r2, r8 + 800c70c: 464b mov r3, r9 + 800c70e: 1891 adds r1, r2, r2 + 800c710: 63b9 str r1, [r7, #56] @ 0x38 + 800c712: 415b adcs r3, r3 + 800c714: 63fb str r3, [r7, #60] @ 0x3c + 800c716: e9d7 230e ldrd r2, r3, [r7, #56] @ 0x38 + 800c71a: 4641 mov r1, r8 + 800c71c: 1851 adds r1, r2, r1 + 800c71e: 6339 str r1, [r7, #48] @ 0x30 + 800c720: 4649 mov r1, r9 + 800c722: 414b adcs r3, r1 + 800c724: 637b str r3, [r7, #52] @ 0x34 + 800c726: f04f 0200 mov.w r2, #0 + 800c72a: f04f 0300 mov.w r3, #0 + 800c72e: e9d7 ab0c ldrd sl, fp, [r7, #48] @ 0x30 + 800c732: 4659 mov r1, fp + 800c734: 00cb lsls r3, r1, #3 + 800c736: 4651 mov r1, sl + 800c738: ea43 7351 orr.w r3, r3, r1, lsr #29 + 800c73c: 4651 mov r1, sl + 800c73e: 00ca lsls r2, r1, #3 + 800c740: 4610 mov r0, r2 + 800c742: 4619 mov r1, r3 + 800c744: 4603 mov r3, r0 + 800c746: 4642 mov r2, r8 + 800c748: 189b adds r3, r3, r2 + 800c74a: f8c7 30b0 str.w r3, [r7, #176] @ 0xb0 + 800c74e: 464b mov r3, r9 + 800c750: 460a mov r2, r1 + 800c752: eb42 0303 adc.w r3, r2, r3 + 800c756: f8c7 30b4 str.w r3, [r7, #180] @ 0xb4 + 800c75a: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c75e: 685b ldr r3, [r3, #4] + 800c760: 2200 movs r2, #0 + 800c762: f8c7 30a8 str.w r3, [r7, #168] @ 0xa8 + 800c766: f8c7 20ac str.w r2, [r7, #172] @ 0xac + 800c76a: e9d7 122a ldrd r1, r2, [r7, #168] @ 0xa8 + 800c76e: 460b mov r3, r1 + 800c770: 18db adds r3, r3, r3 + 800c772: 62bb str r3, [r7, #40] @ 0x28 + 800c774: 4613 mov r3, r2 + 800c776: eb42 0303 adc.w r3, r2, r3 + 800c77a: 62fb str r3, [r7, #44] @ 0x2c + 800c77c: e9d7 230a ldrd r2, r3, [r7, #40] @ 0x28 + 800c780: e9d7 012c ldrd r0, r1, [r7, #176] @ 0xb0 + 800c784: f7f4 fa80 bl 8000c88 <__aeabi_uldivmod> + 800c788: 4602 mov r2, r0 + 800c78a: 460b mov r3, r1 + 800c78c: 4b0a ldr r3, [pc, #40] @ (800c7b8 ) + 800c78e: fba3 1302 umull r1, r3, r3, r2 + 800c792: 095b lsrs r3, r3, #5 + 800c794: 2164 movs r1, #100 @ 0x64 + 800c796: fb01 f303 mul.w r3, r1, r3 + 800c79a: 1ad3 subs r3, r2, r3 + 800c79c: 00db lsls r3, r3, #3 + 800c79e: 3332 adds r3, #50 @ 0x32 + 800c7a0: 4a05 ldr r2, [pc, #20] @ (800c7b8 ) + 800c7a2: fba2 2303 umull r2, r3, r2, r3 + 800c7a6: 095b lsrs r3, r3, #5 + 800c7a8: f003 0207 and.w r2, r3, #7 + 800c7ac: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c7b0: 681b ldr r3, [r3, #0] + 800c7b2: 4422 add r2, r4 + 800c7b4: 609a str r2, [r3, #8] } else { huart->Instance->BRR = UART_BRR_SAMPLING16(pclk, huart->Init.BaudRate); } } - 800c242: e101 b.n 800c448 - 800c244: 51eb851f .word 0x51eb851f + 800c7b6: e101 b.n 800c9bc + 800c7b8: 51eb851f .word 0x51eb851f huart->Instance->BRR = UART_BRR_SAMPLING16(pclk, huart->Init.BaudRate); - 800c248: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc - 800c24c: 2200 movs r2, #0 - 800c24e: f8c7 30a0 str.w r3, [r7, #160] @ 0xa0 - 800c252: f8c7 20a4 str.w r2, [r7, #164] @ 0xa4 - 800c256: e9d7 8928 ldrd r8, r9, [r7, #160] @ 0xa0 - 800c25a: 4642 mov r2, r8 - 800c25c: 464b mov r3, r9 - 800c25e: 1891 adds r1, r2, r2 - 800c260: 6239 str r1, [r7, #32] - 800c262: 415b adcs r3, r3 - 800c264: 627b str r3, [r7, #36] @ 0x24 - 800c266: e9d7 2308 ldrd r2, r3, [r7, #32] - 800c26a: 4641 mov r1, r8 - 800c26c: 1854 adds r4, r2, r1 - 800c26e: 4649 mov r1, r9 - 800c270: eb43 0501 adc.w r5, r3, r1 - 800c274: f04f 0200 mov.w r2, #0 - 800c278: f04f 0300 mov.w r3, #0 - 800c27c: 00eb lsls r3, r5, #3 - 800c27e: ea43 7354 orr.w r3, r3, r4, lsr #29 - 800c282: 00e2 lsls r2, r4, #3 - 800c284: 4614 mov r4, r2 - 800c286: 461d mov r5, r3 - 800c288: 4643 mov r3, r8 - 800c28a: 18e3 adds r3, r4, r3 - 800c28c: f8c7 3098 str.w r3, [r7, #152] @ 0x98 - 800c290: 464b mov r3, r9 - 800c292: eb45 0303 adc.w r3, r5, r3 - 800c296: f8c7 309c str.w r3, [r7, #156] @ 0x9c - 800c29a: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800c29e: 685b ldr r3, [r3, #4] - 800c2a0: 2200 movs r2, #0 - 800c2a2: f8c7 3090 str.w r3, [r7, #144] @ 0x90 - 800c2a6: f8c7 2094 str.w r2, [r7, #148] @ 0x94 - 800c2aa: f04f 0200 mov.w r2, #0 - 800c2ae: f04f 0300 mov.w r3, #0 - 800c2b2: e9d7 4524 ldrd r4, r5, [r7, #144] @ 0x90 - 800c2b6: 4629 mov r1, r5 - 800c2b8: 008b lsls r3, r1, #2 - 800c2ba: 4621 mov r1, r4 - 800c2bc: ea43 7391 orr.w r3, r3, r1, lsr #30 - 800c2c0: 4621 mov r1, r4 - 800c2c2: 008a lsls r2, r1, #2 - 800c2c4: e9d7 0126 ldrd r0, r1, [r7, #152] @ 0x98 - 800c2c8: f7f4 fcde bl 8000c88 <__aeabi_uldivmod> - 800c2cc: 4602 mov r2, r0 - 800c2ce: 460b mov r3, r1 - 800c2d0: 4b60 ldr r3, [pc, #384] @ (800c454 ) - 800c2d2: fba3 2302 umull r2, r3, r3, r2 - 800c2d6: 095b lsrs r3, r3, #5 - 800c2d8: 011c lsls r4, r3, #4 - 800c2da: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc - 800c2de: 2200 movs r2, #0 - 800c2e0: f8c7 3088 str.w r3, [r7, #136] @ 0x88 - 800c2e4: f8c7 208c str.w r2, [r7, #140] @ 0x8c - 800c2e8: e9d7 8922 ldrd r8, r9, [r7, #136] @ 0x88 - 800c2ec: 4642 mov r2, r8 - 800c2ee: 464b mov r3, r9 - 800c2f0: 1891 adds r1, r2, r2 - 800c2f2: 61b9 str r1, [r7, #24] - 800c2f4: 415b adcs r3, r3 - 800c2f6: 61fb str r3, [r7, #28] - 800c2f8: e9d7 2306 ldrd r2, r3, [r7, #24] - 800c2fc: 4641 mov r1, r8 - 800c2fe: 1851 adds r1, r2, r1 - 800c300: 6139 str r1, [r7, #16] - 800c302: 4649 mov r1, r9 - 800c304: 414b adcs r3, r1 - 800c306: 617b str r3, [r7, #20] - 800c308: f04f 0200 mov.w r2, #0 - 800c30c: f04f 0300 mov.w r3, #0 - 800c310: e9d7 ab04 ldrd sl, fp, [r7, #16] - 800c314: 4659 mov r1, fp - 800c316: 00cb lsls r3, r1, #3 - 800c318: 4651 mov r1, sl - 800c31a: ea43 7351 orr.w r3, r3, r1, lsr #29 - 800c31e: 4651 mov r1, sl - 800c320: 00ca lsls r2, r1, #3 - 800c322: 4610 mov r0, r2 - 800c324: 4619 mov r1, r3 - 800c326: 4603 mov r3, r0 - 800c328: 4642 mov r2, r8 - 800c32a: 189b adds r3, r3, r2 - 800c32c: f8c7 3080 str.w r3, [r7, #128] @ 0x80 - 800c330: 464b mov r3, r9 - 800c332: 460a mov r2, r1 - 800c334: eb42 0303 adc.w r3, r2, r3 - 800c338: f8c7 3084 str.w r3, [r7, #132] @ 0x84 - 800c33c: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800c340: 685b ldr r3, [r3, #4] - 800c342: 2200 movs r2, #0 - 800c344: 67bb str r3, [r7, #120] @ 0x78 - 800c346: 67fa str r2, [r7, #124] @ 0x7c - 800c348: f04f 0200 mov.w r2, #0 - 800c34c: f04f 0300 mov.w r3, #0 - 800c350: e9d7 891e ldrd r8, r9, [r7, #120] @ 0x78 - 800c354: 4649 mov r1, r9 - 800c356: 008b lsls r3, r1, #2 - 800c358: 4641 mov r1, r8 - 800c35a: ea43 7391 orr.w r3, r3, r1, lsr #30 - 800c35e: 4641 mov r1, r8 - 800c360: 008a lsls r2, r1, #2 - 800c362: e9d7 0120 ldrd r0, r1, [r7, #128] @ 0x80 - 800c366: f7f4 fc8f bl 8000c88 <__aeabi_uldivmod> - 800c36a: 4602 mov r2, r0 - 800c36c: 460b mov r3, r1 - 800c36e: 4611 mov r1, r2 - 800c370: 4b38 ldr r3, [pc, #224] @ (800c454 ) - 800c372: fba3 2301 umull r2, r3, r3, r1 - 800c376: 095b lsrs r3, r3, #5 - 800c378: 2264 movs r2, #100 @ 0x64 - 800c37a: fb02 f303 mul.w r3, r2, r3 - 800c37e: 1acb subs r3, r1, r3 - 800c380: 011b lsls r3, r3, #4 - 800c382: 3332 adds r3, #50 @ 0x32 - 800c384: 4a33 ldr r2, [pc, #204] @ (800c454 ) - 800c386: fba2 2303 umull r2, r3, r2, r3 - 800c38a: 095b lsrs r3, r3, #5 - 800c38c: f003 03f0 and.w r3, r3, #240 @ 0xf0 - 800c390: 441c add r4, r3 - 800c392: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc - 800c396: 2200 movs r2, #0 - 800c398: 673b str r3, [r7, #112] @ 0x70 - 800c39a: 677a str r2, [r7, #116] @ 0x74 - 800c39c: e9d7 891c ldrd r8, r9, [r7, #112] @ 0x70 - 800c3a0: 4642 mov r2, r8 - 800c3a2: 464b mov r3, r9 - 800c3a4: 1891 adds r1, r2, r2 - 800c3a6: 60b9 str r1, [r7, #8] - 800c3a8: 415b adcs r3, r3 - 800c3aa: 60fb str r3, [r7, #12] - 800c3ac: e9d7 2302 ldrd r2, r3, [r7, #8] - 800c3b0: 4641 mov r1, r8 - 800c3b2: 1851 adds r1, r2, r1 - 800c3b4: 6039 str r1, [r7, #0] - 800c3b6: 4649 mov r1, r9 - 800c3b8: 414b adcs r3, r1 - 800c3ba: 607b str r3, [r7, #4] - 800c3bc: f04f 0200 mov.w r2, #0 - 800c3c0: f04f 0300 mov.w r3, #0 - 800c3c4: e9d7 ab00 ldrd sl, fp, [r7] - 800c3c8: 4659 mov r1, fp - 800c3ca: 00cb lsls r3, r1, #3 - 800c3cc: 4651 mov r1, sl - 800c3ce: ea43 7351 orr.w r3, r3, r1, lsr #29 - 800c3d2: 4651 mov r1, sl - 800c3d4: 00ca lsls r2, r1, #3 - 800c3d6: 4610 mov r0, r2 - 800c3d8: 4619 mov r1, r3 - 800c3da: 4603 mov r3, r0 - 800c3dc: 4642 mov r2, r8 - 800c3de: 189b adds r3, r3, r2 - 800c3e0: 66bb str r3, [r7, #104] @ 0x68 - 800c3e2: 464b mov r3, r9 - 800c3e4: 460a mov r2, r1 - 800c3e6: eb42 0303 adc.w r3, r2, r3 - 800c3ea: 66fb str r3, [r7, #108] @ 0x6c - 800c3ec: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800c3f0: 685b ldr r3, [r3, #4] - 800c3f2: 2200 movs r2, #0 - 800c3f4: 663b str r3, [r7, #96] @ 0x60 - 800c3f6: 667a str r2, [r7, #100] @ 0x64 - 800c3f8: f04f 0200 mov.w r2, #0 - 800c3fc: f04f 0300 mov.w r3, #0 - 800c400: e9d7 8918 ldrd r8, r9, [r7, #96] @ 0x60 - 800c404: 4649 mov r1, r9 - 800c406: 008b lsls r3, r1, #2 - 800c408: 4641 mov r1, r8 - 800c40a: ea43 7391 orr.w r3, r3, r1, lsr #30 - 800c40e: 4641 mov r1, r8 - 800c410: 008a lsls r2, r1, #2 - 800c412: e9d7 011a ldrd r0, r1, [r7, #104] @ 0x68 - 800c416: f7f4 fc37 bl 8000c88 <__aeabi_uldivmod> - 800c41a: 4602 mov r2, r0 - 800c41c: 460b mov r3, r1 - 800c41e: 4b0d ldr r3, [pc, #52] @ (800c454 ) - 800c420: fba3 1302 umull r1, r3, r3, r2 - 800c424: 095b lsrs r3, r3, #5 - 800c426: 2164 movs r1, #100 @ 0x64 - 800c428: fb01 f303 mul.w r3, r1, r3 - 800c42c: 1ad3 subs r3, r2, r3 - 800c42e: 011b lsls r3, r3, #4 - 800c430: 3332 adds r3, #50 @ 0x32 - 800c432: 4a08 ldr r2, [pc, #32] @ (800c454 ) - 800c434: fba2 2303 umull r2, r3, r2, r3 - 800c438: 095b lsrs r3, r3, #5 - 800c43a: f003 020f and.w r2, r3, #15 - 800c43e: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800c442: 681b ldr r3, [r3, #0] - 800c444: 4422 add r2, r4 - 800c446: 609a str r2, [r3, #8] + 800c7bc: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc + 800c7c0: 2200 movs r2, #0 + 800c7c2: f8c7 30a0 str.w r3, [r7, #160] @ 0xa0 + 800c7c6: f8c7 20a4 str.w r2, [r7, #164] @ 0xa4 + 800c7ca: e9d7 8928 ldrd r8, r9, [r7, #160] @ 0xa0 + 800c7ce: 4642 mov r2, r8 + 800c7d0: 464b mov r3, r9 + 800c7d2: 1891 adds r1, r2, r2 + 800c7d4: 6239 str r1, [r7, #32] + 800c7d6: 415b adcs r3, r3 + 800c7d8: 627b str r3, [r7, #36] @ 0x24 + 800c7da: e9d7 2308 ldrd r2, r3, [r7, #32] + 800c7de: 4641 mov r1, r8 + 800c7e0: 1854 adds r4, r2, r1 + 800c7e2: 4649 mov r1, r9 + 800c7e4: eb43 0501 adc.w r5, r3, r1 + 800c7e8: f04f 0200 mov.w r2, #0 + 800c7ec: f04f 0300 mov.w r3, #0 + 800c7f0: 00eb lsls r3, r5, #3 + 800c7f2: ea43 7354 orr.w r3, r3, r4, lsr #29 + 800c7f6: 00e2 lsls r2, r4, #3 + 800c7f8: 4614 mov r4, r2 + 800c7fa: 461d mov r5, r3 + 800c7fc: 4643 mov r3, r8 + 800c7fe: 18e3 adds r3, r4, r3 + 800c800: f8c7 3098 str.w r3, [r7, #152] @ 0x98 + 800c804: 464b mov r3, r9 + 800c806: eb45 0303 adc.w r3, r5, r3 + 800c80a: f8c7 309c str.w r3, [r7, #156] @ 0x9c + 800c80e: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c812: 685b ldr r3, [r3, #4] + 800c814: 2200 movs r2, #0 + 800c816: f8c7 3090 str.w r3, [r7, #144] @ 0x90 + 800c81a: f8c7 2094 str.w r2, [r7, #148] @ 0x94 + 800c81e: f04f 0200 mov.w r2, #0 + 800c822: f04f 0300 mov.w r3, #0 + 800c826: e9d7 4524 ldrd r4, r5, [r7, #144] @ 0x90 + 800c82a: 4629 mov r1, r5 + 800c82c: 008b lsls r3, r1, #2 + 800c82e: 4621 mov r1, r4 + 800c830: ea43 7391 orr.w r3, r3, r1, lsr #30 + 800c834: 4621 mov r1, r4 + 800c836: 008a lsls r2, r1, #2 + 800c838: e9d7 0126 ldrd r0, r1, [r7, #152] @ 0x98 + 800c83c: f7f4 fa24 bl 8000c88 <__aeabi_uldivmod> + 800c840: 4602 mov r2, r0 + 800c842: 460b mov r3, r1 + 800c844: 4b60 ldr r3, [pc, #384] @ (800c9c8 ) + 800c846: fba3 2302 umull r2, r3, r3, r2 + 800c84a: 095b lsrs r3, r3, #5 + 800c84c: 011c lsls r4, r3, #4 + 800c84e: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc + 800c852: 2200 movs r2, #0 + 800c854: f8c7 3088 str.w r3, [r7, #136] @ 0x88 + 800c858: f8c7 208c str.w r2, [r7, #140] @ 0x8c + 800c85c: e9d7 8922 ldrd r8, r9, [r7, #136] @ 0x88 + 800c860: 4642 mov r2, r8 + 800c862: 464b mov r3, r9 + 800c864: 1891 adds r1, r2, r2 + 800c866: 61b9 str r1, [r7, #24] + 800c868: 415b adcs r3, r3 + 800c86a: 61fb str r3, [r7, #28] + 800c86c: e9d7 2306 ldrd r2, r3, [r7, #24] + 800c870: 4641 mov r1, r8 + 800c872: 1851 adds r1, r2, r1 + 800c874: 6139 str r1, [r7, #16] + 800c876: 4649 mov r1, r9 + 800c878: 414b adcs r3, r1 + 800c87a: 617b str r3, [r7, #20] + 800c87c: f04f 0200 mov.w r2, #0 + 800c880: f04f 0300 mov.w r3, #0 + 800c884: e9d7 ab04 ldrd sl, fp, [r7, #16] + 800c888: 4659 mov r1, fp + 800c88a: 00cb lsls r3, r1, #3 + 800c88c: 4651 mov r1, sl + 800c88e: ea43 7351 orr.w r3, r3, r1, lsr #29 + 800c892: 4651 mov r1, sl + 800c894: 00ca lsls r2, r1, #3 + 800c896: 4610 mov r0, r2 + 800c898: 4619 mov r1, r3 + 800c89a: 4603 mov r3, r0 + 800c89c: 4642 mov r2, r8 + 800c89e: 189b adds r3, r3, r2 + 800c8a0: f8c7 3080 str.w r3, [r7, #128] @ 0x80 + 800c8a4: 464b mov r3, r9 + 800c8a6: 460a mov r2, r1 + 800c8a8: eb42 0303 adc.w r3, r2, r3 + 800c8ac: f8c7 3084 str.w r3, [r7, #132] @ 0x84 + 800c8b0: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c8b4: 685b ldr r3, [r3, #4] + 800c8b6: 2200 movs r2, #0 + 800c8b8: 67bb str r3, [r7, #120] @ 0x78 + 800c8ba: 67fa str r2, [r7, #124] @ 0x7c + 800c8bc: f04f 0200 mov.w r2, #0 + 800c8c0: f04f 0300 mov.w r3, #0 + 800c8c4: e9d7 891e ldrd r8, r9, [r7, #120] @ 0x78 + 800c8c8: 4649 mov r1, r9 + 800c8ca: 008b lsls r3, r1, #2 + 800c8cc: 4641 mov r1, r8 + 800c8ce: ea43 7391 orr.w r3, r3, r1, lsr #30 + 800c8d2: 4641 mov r1, r8 + 800c8d4: 008a lsls r2, r1, #2 + 800c8d6: e9d7 0120 ldrd r0, r1, [r7, #128] @ 0x80 + 800c8da: f7f4 f9d5 bl 8000c88 <__aeabi_uldivmod> + 800c8de: 4602 mov r2, r0 + 800c8e0: 460b mov r3, r1 + 800c8e2: 4611 mov r1, r2 + 800c8e4: 4b38 ldr r3, [pc, #224] @ (800c9c8 ) + 800c8e6: fba3 2301 umull r2, r3, r3, r1 + 800c8ea: 095b lsrs r3, r3, #5 + 800c8ec: 2264 movs r2, #100 @ 0x64 + 800c8ee: fb02 f303 mul.w r3, r2, r3 + 800c8f2: 1acb subs r3, r1, r3 + 800c8f4: 011b lsls r3, r3, #4 + 800c8f6: 3332 adds r3, #50 @ 0x32 + 800c8f8: 4a33 ldr r2, [pc, #204] @ (800c9c8 ) + 800c8fa: fba2 2303 umull r2, r3, r2, r3 + 800c8fe: 095b lsrs r3, r3, #5 + 800c900: f003 03f0 and.w r3, r3, #240 @ 0xf0 + 800c904: 441c add r4, r3 + 800c906: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc + 800c90a: 2200 movs r2, #0 + 800c90c: 673b str r3, [r7, #112] @ 0x70 + 800c90e: 677a str r2, [r7, #116] @ 0x74 + 800c910: e9d7 891c ldrd r8, r9, [r7, #112] @ 0x70 + 800c914: 4642 mov r2, r8 + 800c916: 464b mov r3, r9 + 800c918: 1891 adds r1, r2, r2 + 800c91a: 60b9 str r1, [r7, #8] + 800c91c: 415b adcs r3, r3 + 800c91e: 60fb str r3, [r7, #12] + 800c920: e9d7 2302 ldrd r2, r3, [r7, #8] + 800c924: 4641 mov r1, r8 + 800c926: 1851 adds r1, r2, r1 + 800c928: 6039 str r1, [r7, #0] + 800c92a: 4649 mov r1, r9 + 800c92c: 414b adcs r3, r1 + 800c92e: 607b str r3, [r7, #4] + 800c930: f04f 0200 mov.w r2, #0 + 800c934: f04f 0300 mov.w r3, #0 + 800c938: e9d7 ab00 ldrd sl, fp, [r7] + 800c93c: 4659 mov r1, fp + 800c93e: 00cb lsls r3, r1, #3 + 800c940: 4651 mov r1, sl + 800c942: ea43 7351 orr.w r3, r3, r1, lsr #29 + 800c946: 4651 mov r1, sl + 800c948: 00ca lsls r2, r1, #3 + 800c94a: 4610 mov r0, r2 + 800c94c: 4619 mov r1, r3 + 800c94e: 4603 mov r3, r0 + 800c950: 4642 mov r2, r8 + 800c952: 189b adds r3, r3, r2 + 800c954: 66bb str r3, [r7, #104] @ 0x68 + 800c956: 464b mov r3, r9 + 800c958: 460a mov r2, r1 + 800c95a: eb42 0303 adc.w r3, r2, r3 + 800c95e: 66fb str r3, [r7, #108] @ 0x6c + 800c960: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c964: 685b ldr r3, [r3, #4] + 800c966: 2200 movs r2, #0 + 800c968: 663b str r3, [r7, #96] @ 0x60 + 800c96a: 667a str r2, [r7, #100] @ 0x64 + 800c96c: f04f 0200 mov.w r2, #0 + 800c970: f04f 0300 mov.w r3, #0 + 800c974: e9d7 8918 ldrd r8, r9, [r7, #96] @ 0x60 + 800c978: 4649 mov r1, r9 + 800c97a: 008b lsls r3, r1, #2 + 800c97c: 4641 mov r1, r8 + 800c97e: ea43 7391 orr.w r3, r3, r1, lsr #30 + 800c982: 4641 mov r1, r8 + 800c984: 008a lsls r2, r1, #2 + 800c986: e9d7 011a ldrd r0, r1, [r7, #104] @ 0x68 + 800c98a: f7f4 f97d bl 8000c88 <__aeabi_uldivmod> + 800c98e: 4602 mov r2, r0 + 800c990: 460b mov r3, r1 + 800c992: 4b0d ldr r3, [pc, #52] @ (800c9c8 ) + 800c994: fba3 1302 umull r1, r3, r3, r2 + 800c998: 095b lsrs r3, r3, #5 + 800c99a: 2164 movs r1, #100 @ 0x64 + 800c99c: fb01 f303 mul.w r3, r1, r3 + 800c9a0: 1ad3 subs r3, r2, r3 + 800c9a2: 011b lsls r3, r3, #4 + 800c9a4: 3332 adds r3, #50 @ 0x32 + 800c9a6: 4a08 ldr r2, [pc, #32] @ (800c9c8 ) + 800c9a8: fba2 2303 umull r2, r3, r2, r3 + 800c9ac: 095b lsrs r3, r3, #5 + 800c9ae: f003 020f and.w r2, r3, #15 + 800c9b2: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800c9b6: 681b ldr r3, [r3, #0] + 800c9b8: 4422 add r2, r4 + 800c9ba: 609a str r2, [r3, #8] } - 800c448: bf00 nop - 800c44a: f507 7780 add.w r7, r7, #256 @ 0x100 - 800c44e: 46bd mov sp, r7 - 800c450: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} - 800c454: 51eb851f .word 0x51eb851f + 800c9bc: bf00 nop + 800c9be: f507 7780 add.w r7, r7, #256 @ 0x100 + 800c9c2: 46bd mov sp, r7 + 800c9c4: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} + 800c9c8: 51eb851f .word 0x51eb851f -0800c458 : +0800c9cc : extern void xPortSysTickHandler(void); /* Convert from CMSIS type osPriority to FreeRTOS priority number */ static unsigned portBASE_TYPE makeFreeRtosPriority (osPriority priority) { - 800c458: b480 push {r7} - 800c45a: b085 sub sp, #20 - 800c45c: af00 add r7, sp, #0 - 800c45e: 4603 mov r3, r0 - 800c460: 80fb strh r3, [r7, #6] + 800c9cc: b480 push {r7} + 800c9ce: b085 sub sp, #20 + 800c9d0: af00 add r7, sp, #0 + 800c9d2: 4603 mov r3, r0 + 800c9d4: 80fb strh r3, [r7, #6] unsigned portBASE_TYPE fpriority = tskIDLE_PRIORITY; - 800c462: 2300 movs r3, #0 - 800c464: 60fb str r3, [r7, #12] + 800c9d6: 2300 movs r3, #0 + 800c9d8: 60fb str r3, [r7, #12] if (priority != osPriorityError) { - 800c466: f9b7 3006 ldrsh.w r3, [r7, #6] - 800c46a: 2b84 cmp r3, #132 @ 0x84 - 800c46c: d005 beq.n 800c47a + 800c9da: f9b7 3006 ldrsh.w r3, [r7, #6] + 800c9de: 2b84 cmp r3, #132 @ 0x84 + 800c9e0: d005 beq.n 800c9ee fpriority += (priority - osPriorityIdle); - 800c46e: f9b7 2006 ldrsh.w r2, [r7, #6] - 800c472: 68fb ldr r3, [r7, #12] - 800c474: 4413 add r3, r2 - 800c476: 3303 adds r3, #3 - 800c478: 60fb str r3, [r7, #12] + 800c9e2: f9b7 2006 ldrsh.w r2, [r7, #6] + 800c9e6: 68fb ldr r3, [r7, #12] + 800c9e8: 4413 add r3, r2 + 800c9ea: 3303 adds r3, #3 + 800c9ec: 60fb str r3, [r7, #12] } return fpriority; - 800c47a: 68fb ldr r3, [r7, #12] + 800c9ee: 68fb ldr r3, [r7, #12] } - 800c47c: 4618 mov r0, r3 - 800c47e: 3714 adds r7, #20 - 800c480: 46bd mov sp, r7 - 800c482: f85d 7b04 ldr.w r7, [sp], #4 - 800c486: 4770 bx lr + 800c9f0: 4618 mov r0, r3 + 800c9f2: 3714 adds r7, #20 + 800c9f4: 46bd mov sp, r7 + 800c9f6: f85d 7b04 ldr.w r7, [sp], #4 + 800c9fa: 4770 bx lr -0800c488 : +0800c9fc : * @param argument pointer that is passed to the thread function as start argument. * @retval status code that indicates the execution status of the function * @note MUST REMAIN UNCHANGED: \b osKernelStart shall be consistent in every CMSIS-RTOS. */ osStatus osKernelStart (void) { - 800c488: b580 push {r7, lr} - 800c48a: af00 add r7, sp, #0 + 800c9fc: b580 push {r7, lr} + 800c9fe: af00 add r7, sp, #0 vTaskStartScheduler(); - 800c48c: f000 fafc bl 800ca88 + 800ca00: f000 fafc bl 800cffc return osOK; - 800c490: 2300 movs r3, #0 + 800ca04: 2300 movs r3, #0 } - 800c492: 4618 mov r0, r3 - 800c494: bd80 pop {r7, pc} + 800ca06: 4618 mov r0, r3 + 800ca08: bd80 pop {r7, pc} -0800c496 : +0800ca0a : * @param argument pointer that is passed to the thread function as start argument. * @retval thread ID for reference by other functions or NULL in case of error. * @note MUST REMAIN UNCHANGED: \b osThreadCreate shall be consistent in every CMSIS-RTOS. */ osThreadId osThreadCreate (const osThreadDef_t *thread_def, void *argument) { - 800c496: b5f0 push {r4, r5, r6, r7, lr} - 800c498: b089 sub sp, #36 @ 0x24 - 800c49a: af04 add r7, sp, #16 - 800c49c: 6078 str r0, [r7, #4] - 800c49e: 6039 str r1, [r7, #0] + 800ca0a: b5f0 push {r4, r5, r6, r7, lr} + 800ca0c: b089 sub sp, #36 @ 0x24 + 800ca0e: af04 add r7, sp, #16 + 800ca10: 6078 str r0, [r7, #4] + 800ca12: 6039 str r1, [r7, #0] TaskHandle_t handle; #if( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) if((thread_def->buffer != NULL) && (thread_def->controlblock != NULL)) { - 800c4a0: 687b ldr r3, [r7, #4] - 800c4a2: 695b ldr r3, [r3, #20] - 800c4a4: 2b00 cmp r3, #0 - 800c4a6: d020 beq.n 800c4ea - 800c4a8: 687b ldr r3, [r7, #4] - 800c4aa: 699b ldr r3, [r3, #24] - 800c4ac: 2b00 cmp r3, #0 - 800c4ae: d01c beq.n 800c4ea + 800ca14: 687b ldr r3, [r7, #4] + 800ca16: 695b ldr r3, [r3, #20] + 800ca18: 2b00 cmp r3, #0 + 800ca1a: d020 beq.n 800ca5e + 800ca1c: 687b ldr r3, [r7, #4] + 800ca1e: 699b ldr r3, [r3, #24] + 800ca20: 2b00 cmp r3, #0 + 800ca22: d01c beq.n 800ca5e handle = xTaskCreateStatic((TaskFunction_t)thread_def->pthread,(const portCHAR *)thread_def->name, - 800c4b0: 687b ldr r3, [r7, #4] - 800c4b2: 685c ldr r4, [r3, #4] - 800c4b4: 687b ldr r3, [r7, #4] - 800c4b6: 681d ldr r5, [r3, #0] + 800ca24: 687b ldr r3, [r7, #4] + 800ca26: 685c ldr r4, [r3, #4] + 800ca28: 687b ldr r3, [r7, #4] + 800ca2a: 681d ldr r5, [r3, #0] thread_def->stacksize, argument, makeFreeRtosPriority(thread_def->tpriority), - 800c4b8: 687b ldr r3, [r7, #4] - 800c4ba: 691e ldr r6, [r3, #16] - 800c4bc: 687b ldr r3, [r7, #4] - 800c4be: f9b3 3008 ldrsh.w r3, [r3, #8] + 800ca2c: 687b ldr r3, [r7, #4] + 800ca2e: 691e ldr r6, [r3, #16] + 800ca30: 687b ldr r3, [r7, #4] + 800ca32: f9b3 3008 ldrsh.w r3, [r3, #8] handle = xTaskCreateStatic((TaskFunction_t)thread_def->pthread,(const portCHAR *)thread_def->name, - 800c4c2: 4618 mov r0, r3 - 800c4c4: f7ff ffc8 bl 800c458 - 800c4c8: 4601 mov r1, r0 + 800ca36: 4618 mov r0, r3 + 800ca38: f7ff ffc8 bl 800c9cc + 800ca3c: 4601 mov r1, r0 thread_def->buffer, thread_def->controlblock); - 800c4ca: 687b ldr r3, [r7, #4] - 800c4cc: 695b ldr r3, [r3, #20] - 800c4ce: 687a ldr r2, [r7, #4] - 800c4d0: 6992 ldr r2, [r2, #24] + 800ca3e: 687b ldr r3, [r7, #4] + 800ca40: 695b ldr r3, [r3, #20] + 800ca42: 687a ldr r2, [r7, #4] + 800ca44: 6992 ldr r2, [r2, #24] handle = xTaskCreateStatic((TaskFunction_t)thread_def->pthread,(const portCHAR *)thread_def->name, - 800c4d2: 9202 str r2, [sp, #8] - 800c4d4: 9301 str r3, [sp, #4] - 800c4d6: 9100 str r1, [sp, #0] - 800c4d8: 683b ldr r3, [r7, #0] - 800c4da: 4632 mov r2, r6 - 800c4dc: 4629 mov r1, r5 - 800c4de: 4620 mov r0, r4 - 800c4e0: f000 f8ed bl 800c6be - 800c4e4: 4603 mov r3, r0 - 800c4e6: 60fb str r3, [r7, #12] - 800c4e8: e01c b.n 800c524 + 800ca46: 9202 str r2, [sp, #8] + 800ca48: 9301 str r3, [sp, #4] + 800ca4a: 9100 str r1, [sp, #0] + 800ca4c: 683b ldr r3, [r7, #0] + 800ca4e: 4632 mov r2, r6 + 800ca50: 4629 mov r1, r5 + 800ca52: 4620 mov r0, r4 + 800ca54: f000 f8ed bl 800cc32 + 800ca58: 4603 mov r3, r0 + 800ca5a: 60fb str r3, [r7, #12] + 800ca5c: e01c b.n 800ca98 } else { if (xTaskCreate((TaskFunction_t)thread_def->pthread,(const portCHAR *)thread_def->name, - 800c4ea: 687b ldr r3, [r7, #4] - 800c4ec: 685c ldr r4, [r3, #4] - 800c4ee: 687b ldr r3, [r7, #4] - 800c4f0: 681d ldr r5, [r3, #0] + 800ca5e: 687b ldr r3, [r7, #4] + 800ca60: 685c ldr r4, [r3, #4] + 800ca62: 687b ldr r3, [r7, #4] + 800ca64: 681d ldr r5, [r3, #0] thread_def->stacksize, argument, makeFreeRtosPriority(thread_def->tpriority), - 800c4f2: 687b ldr r3, [r7, #4] - 800c4f4: 691b ldr r3, [r3, #16] + 800ca66: 687b ldr r3, [r7, #4] + 800ca68: 691b ldr r3, [r3, #16] if (xTaskCreate((TaskFunction_t)thread_def->pthread,(const portCHAR *)thread_def->name, - 800c4f6: b29e uxth r6, r3 + 800ca6a: b29e uxth r6, r3 thread_def->stacksize, argument, makeFreeRtosPriority(thread_def->tpriority), - 800c4f8: 687b ldr r3, [r7, #4] - 800c4fa: f9b3 3008 ldrsh.w r3, [r3, #8] + 800ca6c: 687b ldr r3, [r7, #4] + 800ca6e: f9b3 3008 ldrsh.w r3, [r3, #8] if (xTaskCreate((TaskFunction_t)thread_def->pthread,(const portCHAR *)thread_def->name, - 800c4fe: 4618 mov r0, r3 - 800c500: f7ff ffaa bl 800c458 - 800c504: 4602 mov r2, r0 - 800c506: f107 030c add.w r3, r7, #12 - 800c50a: 9301 str r3, [sp, #4] - 800c50c: 9200 str r2, [sp, #0] - 800c50e: 683b ldr r3, [r7, #0] - 800c510: 4632 mov r2, r6 - 800c512: 4629 mov r1, r5 - 800c514: 4620 mov r0, r4 - 800c516: f000 f932 bl 800c77e - 800c51a: 4603 mov r3, r0 - 800c51c: 2b01 cmp r3, #1 - 800c51e: d001 beq.n 800c524 + 800ca72: 4618 mov r0, r3 + 800ca74: f7ff ffaa bl 800c9cc + 800ca78: 4602 mov r2, r0 + 800ca7a: f107 030c add.w r3, r7, #12 + 800ca7e: 9301 str r3, [sp, #4] + 800ca80: 9200 str r2, [sp, #0] + 800ca82: 683b ldr r3, [r7, #0] + 800ca84: 4632 mov r2, r6 + 800ca86: 4629 mov r1, r5 + 800ca88: 4620 mov r0, r4 + 800ca8a: f000 f932 bl 800ccf2 + 800ca8e: 4603 mov r3, r0 + 800ca90: 2b01 cmp r3, #1 + 800ca92: d001 beq.n 800ca98 &handle) != pdPASS) { return NULL; - 800c520: 2300 movs r3, #0 - 800c522: e000 b.n 800c526 + 800ca94: 2300 movs r3, #0 + 800ca96: e000 b.n 800ca9a &handle) != pdPASS) { return NULL; } #endif return handle; - 800c524: 68fb ldr r3, [r7, #12] + 800ca98: 68fb ldr r3, [r7, #12] } - 800c526: 4618 mov r0, r3 - 800c528: 3714 adds r7, #20 - 800c52a: 46bd mov sp, r7 - 800c52c: bdf0 pop {r4, r5, r6, r7, pc} + 800ca9a: 4618 mov r0, r3 + 800ca9c: 3714 adds r7, #20 + 800ca9e: 46bd mov sp, r7 + 800caa0: bdf0 pop {r4, r5, r6, r7, pc} -0800c52e : +0800caa2 : * @brief Wait for Timeout (Time Delay) * @param millisec time delay value * @retval status code that indicates the execution status of the function. */ osStatus osDelay (uint32_t millisec) { - 800c52e: b580 push {r7, lr} - 800c530: b084 sub sp, #16 - 800c532: af00 add r7, sp, #0 - 800c534: 6078 str r0, [r7, #4] + 800caa2: b580 push {r7, lr} + 800caa4: b084 sub sp, #16 + 800caa6: af00 add r7, sp, #0 + 800caa8: 6078 str r0, [r7, #4] #if INCLUDE_vTaskDelay TickType_t ticks = millisec / portTICK_PERIOD_MS; - 800c536: 687b ldr r3, [r7, #4] - 800c538: 60fb str r3, [r7, #12] + 800caaa: 687b ldr r3, [r7, #4] + 800caac: 60fb str r3, [r7, #12] vTaskDelay(ticks ? ticks : 1); /* Minimum delay = 1 tick */ - 800c53a: 68fb ldr r3, [r7, #12] - 800c53c: 2b00 cmp r3, #0 - 800c53e: d001 beq.n 800c544 - 800c540: 68fb ldr r3, [r7, #12] - 800c542: e000 b.n 800c546 - 800c544: 2301 movs r3, #1 - 800c546: 4618 mov r0, r3 - 800c548: f000 fa68 bl 800ca1c + 800caae: 68fb ldr r3, [r7, #12] + 800cab0: 2b00 cmp r3, #0 + 800cab2: d001 beq.n 800cab8 + 800cab4: 68fb ldr r3, [r7, #12] + 800cab6: e000 b.n 800caba + 800cab8: 2301 movs r3, #1 + 800caba: 4618 mov r0, r3 + 800cabc: f000 fa68 bl 800cf90 return osOK; - 800c54c: 2300 movs r3, #0 + 800cac0: 2300 movs r3, #0 #else (void) millisec; return osErrorResource; #endif } - 800c54e: 4618 mov r0, r3 - 800c550: 3710 adds r7, #16 - 800c552: 46bd mov sp, r7 - 800c554: bd80 pop {r7, pc} + 800cac2: 4618 mov r0, r3 + 800cac4: 3710 adds r7, #16 + 800cac6: 46bd mov sp, r7 + 800cac8: bd80 pop {r7, pc} -0800c556 : +0800caca : /*----------------------------------------------------------- * PUBLIC LIST API documented in list.h *----------------------------------------------------------*/ void vListInitialise( List_t * const pxList ) { - 800c556: b480 push {r7} - 800c558: b083 sub sp, #12 - 800c55a: af00 add r7, sp, #0 - 800c55c: 6078 str r0, [r7, #4] + 800caca: b480 push {r7} + 800cacc: b083 sub sp, #12 + 800cace: af00 add r7, sp, #0 + 800cad0: 6078 str r0, [r7, #4] /* The list structure contains a list item which is used to mark the end of the list. To initialise the list the list end is inserted as the only list entry. */ pxList->pxIndex = ( ListItem_t * ) &( pxList->xListEnd ); /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. */ - 800c55e: 687b ldr r3, [r7, #4] - 800c560: f103 0208 add.w r2, r3, #8 - 800c564: 687b ldr r3, [r7, #4] - 800c566: 605a str r2, [r3, #4] + 800cad2: 687b ldr r3, [r7, #4] + 800cad4: f103 0208 add.w r2, r3, #8 + 800cad8: 687b ldr r3, [r7, #4] + 800cada: 605a str r2, [r3, #4] /* The list end value is the highest possible value in the list to ensure it remains at the end of the list. */ pxList->xListEnd.xItemValue = portMAX_DELAY; - 800c568: 687b ldr r3, [r7, #4] - 800c56a: f04f 32ff mov.w r2, #4294967295 - 800c56e: 609a str r2, [r3, #8] + 800cadc: 687b ldr r3, [r7, #4] + 800cade: f04f 32ff mov.w r2, #4294967295 + 800cae2: 609a str r2, [r3, #8] /* The list end next and previous pointers point to itself so we know when the list is empty. */ pxList->xListEnd.pxNext = ( ListItem_t * ) &( pxList->xListEnd ); /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. */ - 800c570: 687b ldr r3, [r7, #4] - 800c572: f103 0208 add.w r2, r3, #8 - 800c576: 687b ldr r3, [r7, #4] - 800c578: 60da str r2, [r3, #12] + 800cae4: 687b ldr r3, [r7, #4] + 800cae6: f103 0208 add.w r2, r3, #8 + 800caea: 687b ldr r3, [r7, #4] + 800caec: 60da str r2, [r3, #12] pxList->xListEnd.pxPrevious = ( ListItem_t * ) &( pxList->xListEnd );/*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. */ - 800c57a: 687b ldr r3, [r7, #4] - 800c57c: f103 0208 add.w r2, r3, #8 - 800c580: 687b ldr r3, [r7, #4] - 800c582: 611a str r2, [r3, #16] + 800caee: 687b ldr r3, [r7, #4] + 800caf0: f103 0208 add.w r2, r3, #8 + 800caf4: 687b ldr r3, [r7, #4] + 800caf6: 611a str r2, [r3, #16] pxList->uxNumberOfItems = ( UBaseType_t ) 0U; - 800c584: 687b ldr r3, [r7, #4] - 800c586: 2200 movs r2, #0 - 800c588: 601a str r2, [r3, #0] + 800caf8: 687b ldr r3, [r7, #4] + 800cafa: 2200 movs r2, #0 + 800cafc: 601a str r2, [r3, #0] /* Write known values into the list if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */ listSET_LIST_INTEGRITY_CHECK_1_VALUE( pxList ); listSET_LIST_INTEGRITY_CHECK_2_VALUE( pxList ); } - 800c58a: bf00 nop - 800c58c: 370c adds r7, #12 - 800c58e: 46bd mov sp, r7 - 800c590: f85d 7b04 ldr.w r7, [sp], #4 - 800c594: 4770 bx lr + 800cafe: bf00 nop + 800cb00: 370c adds r7, #12 + 800cb02: 46bd mov sp, r7 + 800cb04: f85d 7b04 ldr.w r7, [sp], #4 + 800cb08: 4770 bx lr -0800c596 : +0800cb0a : /*-----------------------------------------------------------*/ void vListInitialiseItem( ListItem_t * const pxItem ) { - 800c596: b480 push {r7} - 800c598: b083 sub sp, #12 - 800c59a: af00 add r7, sp, #0 - 800c59c: 6078 str r0, [r7, #4] + 800cb0a: b480 push {r7} + 800cb0c: b083 sub sp, #12 + 800cb0e: af00 add r7, sp, #0 + 800cb10: 6078 str r0, [r7, #4] /* Make sure the list item is not recorded as being on a list. */ pxItem->pxContainer = NULL; - 800c59e: 687b ldr r3, [r7, #4] - 800c5a0: 2200 movs r2, #0 - 800c5a2: 611a str r2, [r3, #16] + 800cb12: 687b ldr r3, [r7, #4] + 800cb14: 2200 movs r2, #0 + 800cb16: 611a str r2, [r3, #16] /* Write known values into the list item if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */ listSET_FIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ); listSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ); } - 800c5a4: bf00 nop - 800c5a6: 370c adds r7, #12 - 800c5a8: 46bd mov sp, r7 - 800c5aa: f85d 7b04 ldr.w r7, [sp], #4 - 800c5ae: 4770 bx lr + 800cb18: bf00 nop + 800cb1a: 370c adds r7, #12 + 800cb1c: 46bd mov sp, r7 + 800cb1e: f85d 7b04 ldr.w r7, [sp], #4 + 800cb22: 4770 bx lr -0800c5b0 : +0800cb24 : /*-----------------------------------------------------------*/ void vListInsertEnd( List_t * const pxList, ListItem_t * const pxNewListItem ) { - 800c5b0: b480 push {r7} - 800c5b2: b085 sub sp, #20 - 800c5b4: af00 add r7, sp, #0 - 800c5b6: 6078 str r0, [r7, #4] - 800c5b8: 6039 str r1, [r7, #0] + 800cb24: b480 push {r7} + 800cb26: b085 sub sp, #20 + 800cb28: af00 add r7, sp, #0 + 800cb2a: 6078 str r0, [r7, #4] + 800cb2c: 6039 str r1, [r7, #0] ListItem_t * const pxIndex = pxList->pxIndex; - 800c5ba: 687b ldr r3, [r7, #4] - 800c5bc: 685b ldr r3, [r3, #4] - 800c5be: 60fb str r3, [r7, #12] + 800cb2e: 687b ldr r3, [r7, #4] + 800cb30: 685b ldr r3, [r3, #4] + 800cb32: 60fb str r3, [r7, #12] listTEST_LIST_ITEM_INTEGRITY( pxNewListItem ); /* Insert a new list item into pxList, but rather than sort the list, makes the new list item the last item to be removed by a call to listGET_OWNER_OF_NEXT_ENTRY(). */ pxNewListItem->pxNext = pxIndex; - 800c5c0: 683b ldr r3, [r7, #0] - 800c5c2: 68fa ldr r2, [r7, #12] - 800c5c4: 605a str r2, [r3, #4] + 800cb34: 683b ldr r3, [r7, #0] + 800cb36: 68fa ldr r2, [r7, #12] + 800cb38: 605a str r2, [r3, #4] pxNewListItem->pxPrevious = pxIndex->pxPrevious; - 800c5c6: 68fb ldr r3, [r7, #12] - 800c5c8: 689a ldr r2, [r3, #8] - 800c5ca: 683b ldr r3, [r7, #0] - 800c5cc: 609a str r2, [r3, #8] + 800cb3a: 68fb ldr r3, [r7, #12] + 800cb3c: 689a ldr r2, [r3, #8] + 800cb3e: 683b ldr r3, [r7, #0] + 800cb40: 609a str r2, [r3, #8] /* Only used during decision coverage testing. */ mtCOVERAGE_TEST_DELAY(); pxIndex->pxPrevious->pxNext = pxNewListItem; - 800c5ce: 68fb ldr r3, [r7, #12] - 800c5d0: 689b ldr r3, [r3, #8] - 800c5d2: 683a ldr r2, [r7, #0] - 800c5d4: 605a str r2, [r3, #4] + 800cb42: 68fb ldr r3, [r7, #12] + 800cb44: 689b ldr r3, [r3, #8] + 800cb46: 683a ldr r2, [r7, #0] + 800cb48: 605a str r2, [r3, #4] pxIndex->pxPrevious = pxNewListItem; - 800c5d6: 68fb ldr r3, [r7, #12] - 800c5d8: 683a ldr r2, [r7, #0] - 800c5da: 609a str r2, [r3, #8] + 800cb4a: 68fb ldr r3, [r7, #12] + 800cb4c: 683a ldr r2, [r7, #0] + 800cb4e: 609a str r2, [r3, #8] /* Remember which list the item is in. */ pxNewListItem->pxContainer = pxList; - 800c5dc: 683b ldr r3, [r7, #0] - 800c5de: 687a ldr r2, [r7, #4] - 800c5e0: 611a str r2, [r3, #16] + 800cb50: 683b ldr r3, [r7, #0] + 800cb52: 687a ldr r2, [r7, #4] + 800cb54: 611a str r2, [r3, #16] ( pxList->uxNumberOfItems )++; - 800c5e2: 687b ldr r3, [r7, #4] - 800c5e4: 681b ldr r3, [r3, #0] - 800c5e6: 1c5a adds r2, r3, #1 - 800c5e8: 687b ldr r3, [r7, #4] - 800c5ea: 601a str r2, [r3, #0] + 800cb56: 687b ldr r3, [r7, #4] + 800cb58: 681b ldr r3, [r3, #0] + 800cb5a: 1c5a adds r2, r3, #1 + 800cb5c: 687b ldr r3, [r7, #4] + 800cb5e: 601a str r2, [r3, #0] } - 800c5ec: bf00 nop - 800c5ee: 3714 adds r7, #20 - 800c5f0: 46bd mov sp, r7 - 800c5f2: f85d 7b04 ldr.w r7, [sp], #4 - 800c5f6: 4770 bx lr + 800cb60: bf00 nop + 800cb62: 3714 adds r7, #20 + 800cb64: 46bd mov sp, r7 + 800cb66: f85d 7b04 ldr.w r7, [sp], #4 + 800cb6a: 4770 bx lr -0800c5f8 : +0800cb6c : /*-----------------------------------------------------------*/ void vListInsert( List_t * const pxList, ListItem_t * const pxNewListItem ) { - 800c5f8: b480 push {r7} - 800c5fa: b085 sub sp, #20 - 800c5fc: af00 add r7, sp, #0 - 800c5fe: 6078 str r0, [r7, #4] - 800c600: 6039 str r1, [r7, #0] + 800cb6c: b480 push {r7} + 800cb6e: b085 sub sp, #20 + 800cb70: af00 add r7, sp, #0 + 800cb72: 6078 str r0, [r7, #4] + 800cb74: 6039 str r1, [r7, #0] ListItem_t *pxIterator; const TickType_t xValueOfInsertion = pxNewListItem->xItemValue; - 800c602: 683b ldr r3, [r7, #0] - 800c604: 681b ldr r3, [r3, #0] - 800c606: 60bb str r3, [r7, #8] + 800cb76: 683b ldr r3, [r7, #0] + 800cb78: 681b ldr r3, [r3, #0] + 800cb7a: 60bb str r3, [r7, #8] new list item should be placed after it. This ensures that TCBs which are stored in ready lists (all of which have the same xItemValue value) get a share of the CPU. However, if the xItemValue is the same as the back marker the iteration loop below will not end. Therefore the value is checked first, and the algorithm slightly modified if necessary. */ if( xValueOfInsertion == portMAX_DELAY ) - 800c608: 68bb ldr r3, [r7, #8] - 800c60a: f1b3 3fff cmp.w r3, #4294967295 - 800c60e: d103 bne.n 800c618 + 800cb7c: 68bb ldr r3, [r7, #8] + 800cb7e: f1b3 3fff cmp.w r3, #4294967295 + 800cb82: d103 bne.n 800cb8c { pxIterator = pxList->xListEnd.pxPrevious; - 800c610: 687b ldr r3, [r7, #4] - 800c612: 691b ldr r3, [r3, #16] - 800c614: 60fb str r3, [r7, #12] - 800c616: e00c b.n 800c632 + 800cb84: 687b ldr r3, [r7, #4] + 800cb86: 691b ldr r3, [r3, #16] + 800cb88: 60fb str r3, [r7, #12] + 800cb8a: e00c b.n 800cba6 4) Using a queue or semaphore before it has been initialised or before the scheduler has been started (are interrupts firing before vTaskStartScheduler() has been called?). **********************************************************************/ for( pxIterator = ( ListItem_t * ) &( pxList->xListEnd ); pxIterator->pxNext->xItemValue <= xValueOfInsertion; pxIterator = pxIterator->pxNext ) /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. *//*lint !e440 The iterator moves to a different value, not xValueOfInsertion. */ - 800c618: 687b ldr r3, [r7, #4] - 800c61a: 3308 adds r3, #8 - 800c61c: 60fb str r3, [r7, #12] - 800c61e: e002 b.n 800c626 - 800c620: 68fb ldr r3, [r7, #12] - 800c622: 685b ldr r3, [r3, #4] - 800c624: 60fb str r3, [r7, #12] - 800c626: 68fb ldr r3, [r7, #12] - 800c628: 685b ldr r3, [r3, #4] - 800c62a: 681b ldr r3, [r3, #0] - 800c62c: 68ba ldr r2, [r7, #8] - 800c62e: 429a cmp r2, r3 - 800c630: d2f6 bcs.n 800c620 + 800cb8c: 687b ldr r3, [r7, #4] + 800cb8e: 3308 adds r3, #8 + 800cb90: 60fb str r3, [r7, #12] + 800cb92: e002 b.n 800cb9a + 800cb94: 68fb ldr r3, [r7, #12] + 800cb96: 685b ldr r3, [r3, #4] + 800cb98: 60fb str r3, [r7, #12] + 800cb9a: 68fb ldr r3, [r7, #12] + 800cb9c: 685b ldr r3, [r3, #4] + 800cb9e: 681b ldr r3, [r3, #0] + 800cba0: 68ba ldr r2, [r7, #8] + 800cba2: 429a cmp r2, r3 + 800cba4: d2f6 bcs.n 800cb94 /* There is nothing to do here, just iterating to the wanted insertion position. */ } } pxNewListItem->pxNext = pxIterator->pxNext; - 800c632: 68fb ldr r3, [r7, #12] - 800c634: 685a ldr r2, [r3, #4] - 800c636: 683b ldr r3, [r7, #0] - 800c638: 605a str r2, [r3, #4] + 800cba6: 68fb ldr r3, [r7, #12] + 800cba8: 685a ldr r2, [r3, #4] + 800cbaa: 683b ldr r3, [r7, #0] + 800cbac: 605a str r2, [r3, #4] pxNewListItem->pxNext->pxPrevious = pxNewListItem; - 800c63a: 683b ldr r3, [r7, #0] - 800c63c: 685b ldr r3, [r3, #4] - 800c63e: 683a ldr r2, [r7, #0] - 800c640: 609a str r2, [r3, #8] + 800cbae: 683b ldr r3, [r7, #0] + 800cbb0: 685b ldr r3, [r3, #4] + 800cbb2: 683a ldr r2, [r7, #0] + 800cbb4: 609a str r2, [r3, #8] pxNewListItem->pxPrevious = pxIterator; - 800c642: 683b ldr r3, [r7, #0] - 800c644: 68fa ldr r2, [r7, #12] - 800c646: 609a str r2, [r3, #8] + 800cbb6: 683b ldr r3, [r7, #0] + 800cbb8: 68fa ldr r2, [r7, #12] + 800cbba: 609a str r2, [r3, #8] pxIterator->pxNext = pxNewListItem; - 800c648: 68fb ldr r3, [r7, #12] - 800c64a: 683a ldr r2, [r7, #0] - 800c64c: 605a str r2, [r3, #4] + 800cbbc: 68fb ldr r3, [r7, #12] + 800cbbe: 683a ldr r2, [r7, #0] + 800cbc0: 605a str r2, [r3, #4] /* Remember which list the item is in. This allows fast removal of the item later. */ pxNewListItem->pxContainer = pxList; - 800c64e: 683b ldr r3, [r7, #0] - 800c650: 687a ldr r2, [r7, #4] - 800c652: 611a str r2, [r3, #16] + 800cbc2: 683b ldr r3, [r7, #0] + 800cbc4: 687a ldr r2, [r7, #4] + 800cbc6: 611a str r2, [r3, #16] ( pxList->uxNumberOfItems )++; - 800c654: 687b ldr r3, [r7, #4] - 800c656: 681b ldr r3, [r3, #0] - 800c658: 1c5a adds r2, r3, #1 - 800c65a: 687b ldr r3, [r7, #4] - 800c65c: 601a str r2, [r3, #0] + 800cbc8: 687b ldr r3, [r7, #4] + 800cbca: 681b ldr r3, [r3, #0] + 800cbcc: 1c5a adds r2, r3, #1 + 800cbce: 687b ldr r3, [r7, #4] + 800cbd0: 601a str r2, [r3, #0] } - 800c65e: bf00 nop - 800c660: 3714 adds r7, #20 - 800c662: 46bd mov sp, r7 - 800c664: f85d 7b04 ldr.w r7, [sp], #4 - 800c668: 4770 bx lr + 800cbd2: bf00 nop + 800cbd4: 3714 adds r7, #20 + 800cbd6: 46bd mov sp, r7 + 800cbd8: f85d 7b04 ldr.w r7, [sp], #4 + 800cbdc: 4770 bx lr -0800c66a : +0800cbde : /*-----------------------------------------------------------*/ UBaseType_t uxListRemove( ListItem_t * const pxItemToRemove ) { - 800c66a: b480 push {r7} - 800c66c: b085 sub sp, #20 - 800c66e: af00 add r7, sp, #0 - 800c670: 6078 str r0, [r7, #4] + 800cbde: b480 push {r7} + 800cbe0: b085 sub sp, #20 + 800cbe2: af00 add r7, sp, #0 + 800cbe4: 6078 str r0, [r7, #4] /* The list item knows which list it is in. Obtain the list from the list item. */ List_t * const pxList = pxItemToRemove->pxContainer; - 800c672: 687b ldr r3, [r7, #4] - 800c674: 691b ldr r3, [r3, #16] - 800c676: 60fb str r3, [r7, #12] + 800cbe6: 687b ldr r3, [r7, #4] + 800cbe8: 691b ldr r3, [r3, #16] + 800cbea: 60fb str r3, [r7, #12] pxItemToRemove->pxNext->pxPrevious = pxItemToRemove->pxPrevious; - 800c678: 687b ldr r3, [r7, #4] - 800c67a: 685b ldr r3, [r3, #4] - 800c67c: 687a ldr r2, [r7, #4] - 800c67e: 6892 ldr r2, [r2, #8] - 800c680: 609a str r2, [r3, #8] + 800cbec: 687b ldr r3, [r7, #4] + 800cbee: 685b ldr r3, [r3, #4] + 800cbf0: 687a ldr r2, [r7, #4] + 800cbf2: 6892 ldr r2, [r2, #8] + 800cbf4: 609a str r2, [r3, #8] pxItemToRemove->pxPrevious->pxNext = pxItemToRemove->pxNext; - 800c682: 687b ldr r3, [r7, #4] - 800c684: 689b ldr r3, [r3, #8] - 800c686: 687a ldr r2, [r7, #4] - 800c688: 6852 ldr r2, [r2, #4] - 800c68a: 605a str r2, [r3, #4] + 800cbf6: 687b ldr r3, [r7, #4] + 800cbf8: 689b ldr r3, [r3, #8] + 800cbfa: 687a ldr r2, [r7, #4] + 800cbfc: 6852 ldr r2, [r2, #4] + 800cbfe: 605a str r2, [r3, #4] /* Only used during decision coverage testing. */ mtCOVERAGE_TEST_DELAY(); /* Make sure the index is left pointing to a valid item. */ if( pxList->pxIndex == pxItemToRemove ) - 800c68c: 68fb ldr r3, [r7, #12] - 800c68e: 685b ldr r3, [r3, #4] - 800c690: 687a ldr r2, [r7, #4] - 800c692: 429a cmp r2, r3 - 800c694: d103 bne.n 800c69e + 800cc00: 68fb ldr r3, [r7, #12] + 800cc02: 685b ldr r3, [r3, #4] + 800cc04: 687a ldr r2, [r7, #4] + 800cc06: 429a cmp r2, r3 + 800cc08: d103 bne.n 800cc12 { pxList->pxIndex = pxItemToRemove->pxPrevious; - 800c696: 687b ldr r3, [r7, #4] - 800c698: 689a ldr r2, [r3, #8] - 800c69a: 68fb ldr r3, [r7, #12] - 800c69c: 605a str r2, [r3, #4] + 800cc0a: 687b ldr r3, [r7, #4] + 800cc0c: 689a ldr r2, [r3, #8] + 800cc0e: 68fb ldr r3, [r7, #12] + 800cc10: 605a str r2, [r3, #4] else { mtCOVERAGE_TEST_MARKER(); } pxItemToRemove->pxContainer = NULL; - 800c69e: 687b ldr r3, [r7, #4] - 800c6a0: 2200 movs r2, #0 - 800c6a2: 611a str r2, [r3, #16] + 800cc12: 687b ldr r3, [r7, #4] + 800cc14: 2200 movs r2, #0 + 800cc16: 611a str r2, [r3, #16] ( pxList->uxNumberOfItems )--; - 800c6a4: 68fb ldr r3, [r7, #12] - 800c6a6: 681b ldr r3, [r3, #0] - 800c6a8: 1e5a subs r2, r3, #1 - 800c6aa: 68fb ldr r3, [r7, #12] - 800c6ac: 601a str r2, [r3, #0] + 800cc18: 68fb ldr r3, [r7, #12] + 800cc1a: 681b ldr r3, [r3, #0] + 800cc1c: 1e5a subs r2, r3, #1 + 800cc1e: 68fb ldr r3, [r7, #12] + 800cc20: 601a str r2, [r3, #0] return pxList->uxNumberOfItems; - 800c6ae: 68fb ldr r3, [r7, #12] - 800c6b0: 681b ldr r3, [r3, #0] + 800cc22: 68fb ldr r3, [r7, #12] + 800cc24: 681b ldr r3, [r3, #0] } - 800c6b2: 4618 mov r0, r3 - 800c6b4: 3714 adds r7, #20 - 800c6b6: 46bd mov sp, r7 - 800c6b8: f85d 7b04 ldr.w r7, [sp], #4 - 800c6bc: 4770 bx lr + 800cc26: 4618 mov r0, r3 + 800cc28: 3714 adds r7, #20 + 800cc2a: 46bd mov sp, r7 + 800cc2c: f85d 7b04 ldr.w r7, [sp], #4 + 800cc30: 4770 bx lr -0800c6be : +0800cc32 : const uint32_t ulStackDepth, void * const pvParameters, UBaseType_t uxPriority, StackType_t * const puxStackBuffer, StaticTask_t * const pxTaskBuffer ) { - 800c6be: b580 push {r7, lr} - 800c6c0: b08e sub sp, #56 @ 0x38 - 800c6c2: af04 add r7, sp, #16 - 800c6c4: 60f8 str r0, [r7, #12] - 800c6c6: 60b9 str r1, [r7, #8] - 800c6c8: 607a str r2, [r7, #4] - 800c6ca: 603b str r3, [r7, #0] + 800cc32: b580 push {r7, lr} + 800cc34: b08e sub sp, #56 @ 0x38 + 800cc36: af04 add r7, sp, #16 + 800cc38: 60f8 str r0, [r7, #12] + 800cc3a: 60b9 str r1, [r7, #8] + 800cc3c: 607a str r2, [r7, #4] + 800cc3e: 603b str r3, [r7, #0] TCB_t *pxNewTCB; TaskHandle_t xReturn; configASSERT( puxStackBuffer != NULL ); - 800c6cc: 6b7b ldr r3, [r7, #52] @ 0x34 - 800c6ce: 2b00 cmp r3, #0 - 800c6d0: d10b bne.n 800c6ea + 800cc40: 6b7b ldr r3, [r7, #52] @ 0x34 + 800cc42: 2b00 cmp r3, #0 + 800cc44: d10b bne.n 800cc5e portFORCE_INLINE static void vPortRaiseBASEPRI( void ) { uint32_t ulNewBASEPRI; __asm volatile - 800c6d2: f04f 0350 mov.w r3, #80 @ 0x50 - 800c6d6: f383 8811 msr BASEPRI, r3 - 800c6da: f3bf 8f6f isb sy - 800c6de: f3bf 8f4f dsb sy - 800c6e2: 623b str r3, [r7, #32] + 800cc46: f04f 0350 mov.w r3, #80 @ 0x50 + 800cc4a: f383 8811 msr BASEPRI, r3 + 800cc4e: f3bf 8f6f isb sy + 800cc52: f3bf 8f4f dsb sy + 800cc56: 623b str r3, [r7, #32] " msr basepri, %0 \n" \ " isb \n" \ " dsb \n" \ :"=r" (ulNewBASEPRI) : "i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY ) : "memory" ); } - 800c6e4: bf00 nop - 800c6e6: bf00 nop - 800c6e8: e7fd b.n 800c6e6 + 800cc58: bf00 nop + 800cc5a: bf00 nop + 800cc5c: e7fd b.n 800cc5a configASSERT( pxTaskBuffer != NULL ); - 800c6ea: 6bbb ldr r3, [r7, #56] @ 0x38 - 800c6ec: 2b00 cmp r3, #0 - 800c6ee: d10b bne.n 800c708 + 800cc5e: 6bbb ldr r3, [r7, #56] @ 0x38 + 800cc60: 2b00 cmp r3, #0 + 800cc62: d10b bne.n 800cc7c __asm volatile - 800c6f0: f04f 0350 mov.w r3, #80 @ 0x50 - 800c6f4: f383 8811 msr BASEPRI, r3 - 800c6f8: f3bf 8f6f isb sy - 800c6fc: f3bf 8f4f dsb sy - 800c700: 61fb str r3, [r7, #28] + 800cc64: f04f 0350 mov.w r3, #80 @ 0x50 + 800cc68: f383 8811 msr BASEPRI, r3 + 800cc6c: f3bf 8f6f isb sy + 800cc70: f3bf 8f4f dsb sy + 800cc74: 61fb str r3, [r7, #28] } - 800c702: bf00 nop - 800c704: bf00 nop - 800c706: e7fd b.n 800c704 + 800cc76: bf00 nop + 800cc78: bf00 nop + 800cc7a: e7fd b.n 800cc78 #if( configASSERT_DEFINED == 1 ) { /* Sanity check that the size of the structure used to declare a variable of type StaticTask_t equals the size of the real task structure. */ volatile size_t xSize = sizeof( StaticTask_t ); - 800c708: 23a0 movs r3, #160 @ 0xa0 - 800c70a: 613b str r3, [r7, #16] + 800cc7c: 23a0 movs r3, #160 @ 0xa0 + 800cc7e: 613b str r3, [r7, #16] configASSERT( xSize == sizeof( TCB_t ) ); - 800c70c: 693b ldr r3, [r7, #16] - 800c70e: 2ba0 cmp r3, #160 @ 0xa0 - 800c710: d00b beq.n 800c72a + 800cc80: 693b ldr r3, [r7, #16] + 800cc82: 2ba0 cmp r3, #160 @ 0xa0 + 800cc84: d00b beq.n 800cc9e __asm volatile - 800c712: f04f 0350 mov.w r3, #80 @ 0x50 - 800c716: f383 8811 msr BASEPRI, r3 - 800c71a: f3bf 8f6f isb sy - 800c71e: f3bf 8f4f dsb sy - 800c722: 61bb str r3, [r7, #24] + 800cc86: f04f 0350 mov.w r3, #80 @ 0x50 + 800cc8a: f383 8811 msr BASEPRI, r3 + 800cc8e: f3bf 8f6f isb sy + 800cc92: f3bf 8f4f dsb sy + 800cc96: 61bb str r3, [r7, #24] } - 800c724: bf00 nop - 800c726: bf00 nop - 800c728: e7fd b.n 800c726 + 800cc98: bf00 nop + 800cc9a: bf00 nop + 800cc9c: e7fd b.n 800cc9a ( void ) xSize; /* Prevent lint warning when configASSERT() is not used. */ - 800c72a: 693b ldr r3, [r7, #16] + 800cc9e: 693b ldr r3, [r7, #16] } #endif /* configASSERT_DEFINED */ if( ( pxTaskBuffer != NULL ) && ( puxStackBuffer != NULL ) ) - 800c72c: 6bbb ldr r3, [r7, #56] @ 0x38 - 800c72e: 2b00 cmp r3, #0 - 800c730: d01e beq.n 800c770 - 800c732: 6b7b ldr r3, [r7, #52] @ 0x34 - 800c734: 2b00 cmp r3, #0 - 800c736: d01b beq.n 800c770 + 800cca0: 6bbb ldr r3, [r7, #56] @ 0x38 + 800cca2: 2b00 cmp r3, #0 + 800cca4: d01e beq.n 800cce4 + 800cca6: 6b7b ldr r3, [r7, #52] @ 0x34 + 800cca8: 2b00 cmp r3, #0 + 800ccaa: d01b beq.n 800cce4 { /* The memory used for the task's TCB and stack are passed into this function - use them. */ pxNewTCB = ( TCB_t * ) pxTaskBuffer; /*lint !e740 !e9087 Unusual cast is ok as the structures are designed to have the same alignment, and the size is checked by an assert. */ - 800c738: 6bbb ldr r3, [r7, #56] @ 0x38 - 800c73a: 627b str r3, [r7, #36] @ 0x24 + 800ccac: 6bbb ldr r3, [r7, #56] @ 0x38 + 800ccae: 627b str r3, [r7, #36] @ 0x24 pxNewTCB->pxStack = ( StackType_t * ) puxStackBuffer; - 800c73c: 6a7b ldr r3, [r7, #36] @ 0x24 - 800c73e: 6b7a ldr r2, [r7, #52] @ 0x34 - 800c740: 631a str r2, [r3, #48] @ 0x30 + 800ccb0: 6a7b ldr r3, [r7, #36] @ 0x24 + 800ccb2: 6b7a ldr r2, [r7, #52] @ 0x34 + 800ccb4: 631a str r2, [r3, #48] @ 0x30 #if( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) /*lint !e731 !e9029 Macro has been consolidated for readability reasons. */ { /* Tasks can be created statically or dynamically, so note this task was created statically in case the task is later deleted. */ pxNewTCB->ucStaticallyAllocated = tskSTATICALLY_ALLOCATED_STACK_AND_TCB; - 800c742: 6a7b ldr r3, [r7, #36] @ 0x24 - 800c744: 2202 movs r2, #2 - 800c746: f883 209d strb.w r2, [r3, #157] @ 0x9d + 800ccb6: 6a7b ldr r3, [r7, #36] @ 0x24 + 800ccb8: 2202 movs r2, #2 + 800ccba: f883 209d strb.w r2, [r3, #157] @ 0x9d } #endif /* tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE */ prvInitialiseNewTask( pxTaskCode, pcName, ulStackDepth, pvParameters, uxPriority, &xReturn, pxNewTCB, NULL ); - 800c74a: 2300 movs r3, #0 - 800c74c: 9303 str r3, [sp, #12] - 800c74e: 6a7b ldr r3, [r7, #36] @ 0x24 - 800c750: 9302 str r3, [sp, #8] - 800c752: f107 0314 add.w r3, r7, #20 - 800c756: 9301 str r3, [sp, #4] - 800c758: 6b3b ldr r3, [r7, #48] @ 0x30 - 800c75a: 9300 str r3, [sp, #0] - 800c75c: 683b ldr r3, [r7, #0] - 800c75e: 687a ldr r2, [r7, #4] - 800c760: 68b9 ldr r1, [r7, #8] - 800c762: 68f8 ldr r0, [r7, #12] - 800c764: f000 f850 bl 800c808 + 800ccbe: 2300 movs r3, #0 + 800ccc0: 9303 str r3, [sp, #12] + 800ccc2: 6a7b ldr r3, [r7, #36] @ 0x24 + 800ccc4: 9302 str r3, [sp, #8] + 800ccc6: f107 0314 add.w r3, r7, #20 + 800ccca: 9301 str r3, [sp, #4] + 800cccc: 6b3b ldr r3, [r7, #48] @ 0x30 + 800ccce: 9300 str r3, [sp, #0] + 800ccd0: 683b ldr r3, [r7, #0] + 800ccd2: 687a ldr r2, [r7, #4] + 800ccd4: 68b9 ldr r1, [r7, #8] + 800ccd6: 68f8 ldr r0, [r7, #12] + 800ccd8: f000 f850 bl 800cd7c prvAddNewTaskToReadyList( pxNewTCB ); - 800c768: 6a78 ldr r0, [r7, #36] @ 0x24 - 800c76a: f000 f8ed bl 800c948 - 800c76e: e001 b.n 800c774 + 800ccdc: 6a78 ldr r0, [r7, #36] @ 0x24 + 800ccde: f000 f8ed bl 800cebc + 800cce2: e001 b.n 800cce8 } else { xReturn = NULL; - 800c770: 2300 movs r3, #0 - 800c772: 617b str r3, [r7, #20] + 800cce4: 2300 movs r3, #0 + 800cce6: 617b str r3, [r7, #20] } return xReturn; - 800c774: 697b ldr r3, [r7, #20] + 800cce8: 697b ldr r3, [r7, #20] } - 800c776: 4618 mov r0, r3 - 800c778: 3728 adds r7, #40 @ 0x28 - 800c77a: 46bd mov sp, r7 - 800c77c: bd80 pop {r7, pc} + 800ccea: 4618 mov r0, r3 + 800ccec: 3728 adds r7, #40 @ 0x28 + 800ccee: 46bd mov sp, r7 + 800ccf0: bd80 pop {r7, pc} -0800c77e : +0800ccf2 : const char * const pcName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ const configSTACK_DEPTH_TYPE usStackDepth, void * const pvParameters, UBaseType_t uxPriority, TaskHandle_t * const pxCreatedTask ) { - 800c77e: b580 push {r7, lr} - 800c780: b08c sub sp, #48 @ 0x30 - 800c782: af04 add r7, sp, #16 - 800c784: 60f8 str r0, [r7, #12] - 800c786: 60b9 str r1, [r7, #8] - 800c788: 603b str r3, [r7, #0] - 800c78a: 4613 mov r3, r2 - 800c78c: 80fb strh r3, [r7, #6] + 800ccf2: b580 push {r7, lr} + 800ccf4: b08c sub sp, #48 @ 0x30 + 800ccf6: af04 add r7, sp, #16 + 800ccf8: 60f8 str r0, [r7, #12] + 800ccfa: 60b9 str r1, [r7, #8] + 800ccfc: 603b str r3, [r7, #0] + 800ccfe: 4613 mov r3, r2 + 800cd00: 80fb strh r3, [r7, #6] #else /* portSTACK_GROWTH */ { StackType_t *pxStack; /* Allocate space for the stack used by the task being created. */ pxStack = pvPortMalloc( ( ( ( size_t ) usStackDepth ) * sizeof( StackType_t ) ) ); /*lint !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack and this allocation is the stack. */ - 800c78e: 88fb ldrh r3, [r7, #6] - 800c790: 009b lsls r3, r3, #2 - 800c792: 4618 mov r0, r3 - 800c794: f000 ff00 bl 800d598 - 800c798: 6178 str r0, [r7, #20] + 800cd02: 88fb ldrh r3, [r7, #6] + 800cd04: 009b lsls r3, r3, #2 + 800cd06: 4618 mov r0, r3 + 800cd08: f000 fefe bl 800db08 + 800cd0c: 6178 str r0, [r7, #20] if( pxStack != NULL ) - 800c79a: 697b ldr r3, [r7, #20] - 800c79c: 2b00 cmp r3, #0 - 800c79e: d00e beq.n 800c7be + 800cd0e: 697b ldr r3, [r7, #20] + 800cd10: 2b00 cmp r3, #0 + 800cd12: d00e beq.n 800cd32 { /* Allocate space for the TCB. */ pxNewTCB = ( TCB_t * ) pvPortMalloc( sizeof( TCB_t ) ); /*lint !e9087 !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack, and the first member of TCB_t is always a pointer to the task's stack. */ - 800c7a0: 20a0 movs r0, #160 @ 0xa0 - 800c7a2: f000 fef9 bl 800d598 - 800c7a6: 61f8 str r0, [r7, #28] + 800cd14: 20a0 movs r0, #160 @ 0xa0 + 800cd16: f000 fef7 bl 800db08 + 800cd1a: 61f8 str r0, [r7, #28] if( pxNewTCB != NULL ) - 800c7a8: 69fb ldr r3, [r7, #28] - 800c7aa: 2b00 cmp r3, #0 - 800c7ac: d003 beq.n 800c7b6 + 800cd1c: 69fb ldr r3, [r7, #28] + 800cd1e: 2b00 cmp r3, #0 + 800cd20: d003 beq.n 800cd2a { /* Store the stack location in the TCB. */ pxNewTCB->pxStack = pxStack; - 800c7ae: 69fb ldr r3, [r7, #28] - 800c7b0: 697a ldr r2, [r7, #20] - 800c7b2: 631a str r2, [r3, #48] @ 0x30 - 800c7b4: e005 b.n 800c7c2 + 800cd22: 69fb ldr r3, [r7, #28] + 800cd24: 697a ldr r2, [r7, #20] + 800cd26: 631a str r2, [r3, #48] @ 0x30 + 800cd28: e005 b.n 800cd36 } else { /* The stack cannot be used as the TCB was not created. Free it again. */ vPortFree( pxStack ); - 800c7b6: 6978 ldr r0, [r7, #20] - 800c7b8: f000 ffbc bl 800d734 - 800c7bc: e001 b.n 800c7c2 + 800cd2a: 6978 ldr r0, [r7, #20] + 800cd2c: f000 ffba bl 800dca4 + 800cd30: e001 b.n 800cd36 } } else { pxNewTCB = NULL; - 800c7be: 2300 movs r3, #0 - 800c7c0: 61fb str r3, [r7, #28] + 800cd32: 2300 movs r3, #0 + 800cd34: 61fb str r3, [r7, #28] } } #endif /* portSTACK_GROWTH */ if( pxNewTCB != NULL ) - 800c7c2: 69fb ldr r3, [r7, #28] - 800c7c4: 2b00 cmp r3, #0 - 800c7c6: d017 beq.n 800c7f8 + 800cd36: 69fb ldr r3, [r7, #28] + 800cd38: 2b00 cmp r3, #0 + 800cd3a: d017 beq.n 800cd6c { #if( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) /*lint !e9029 !e731 Macro has been consolidated for readability reasons. */ { /* Tasks can be created statically or dynamically, so note this task was created dynamically in case it is later deleted. */ pxNewTCB->ucStaticallyAllocated = tskDYNAMICALLY_ALLOCATED_STACK_AND_TCB; - 800c7c8: 69fb ldr r3, [r7, #28] - 800c7ca: 2200 movs r2, #0 - 800c7cc: f883 209d strb.w r2, [r3, #157] @ 0x9d + 800cd3c: 69fb ldr r3, [r7, #28] + 800cd3e: 2200 movs r2, #0 + 800cd40: f883 209d strb.w r2, [r3, #157] @ 0x9d } #endif /* tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE */ prvInitialiseNewTask( pxTaskCode, pcName, ( uint32_t ) usStackDepth, pvParameters, uxPriority, pxCreatedTask, pxNewTCB, NULL ); - 800c7d0: 88fa ldrh r2, [r7, #6] - 800c7d2: 2300 movs r3, #0 - 800c7d4: 9303 str r3, [sp, #12] - 800c7d6: 69fb ldr r3, [r7, #28] - 800c7d8: 9302 str r3, [sp, #8] - 800c7da: 6afb ldr r3, [r7, #44] @ 0x2c - 800c7dc: 9301 str r3, [sp, #4] - 800c7de: 6abb ldr r3, [r7, #40] @ 0x28 - 800c7e0: 9300 str r3, [sp, #0] - 800c7e2: 683b ldr r3, [r7, #0] - 800c7e4: 68b9 ldr r1, [r7, #8] - 800c7e6: 68f8 ldr r0, [r7, #12] - 800c7e8: f000 f80e bl 800c808 + 800cd44: 88fa ldrh r2, [r7, #6] + 800cd46: 2300 movs r3, #0 + 800cd48: 9303 str r3, [sp, #12] + 800cd4a: 69fb ldr r3, [r7, #28] + 800cd4c: 9302 str r3, [sp, #8] + 800cd4e: 6afb ldr r3, [r7, #44] @ 0x2c + 800cd50: 9301 str r3, [sp, #4] + 800cd52: 6abb ldr r3, [r7, #40] @ 0x28 + 800cd54: 9300 str r3, [sp, #0] + 800cd56: 683b ldr r3, [r7, #0] + 800cd58: 68b9 ldr r1, [r7, #8] + 800cd5a: 68f8 ldr r0, [r7, #12] + 800cd5c: f000 f80e bl 800cd7c prvAddNewTaskToReadyList( pxNewTCB ); - 800c7ec: 69f8 ldr r0, [r7, #28] - 800c7ee: f000 f8ab bl 800c948 + 800cd60: 69f8 ldr r0, [r7, #28] + 800cd62: f000 f8ab bl 800cebc xReturn = pdPASS; - 800c7f2: 2301 movs r3, #1 - 800c7f4: 61bb str r3, [r7, #24] - 800c7f6: e002 b.n 800c7fe + 800cd66: 2301 movs r3, #1 + 800cd68: 61bb str r3, [r7, #24] + 800cd6a: e002 b.n 800cd72 } else { xReturn = errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY; - 800c7f8: f04f 33ff mov.w r3, #4294967295 - 800c7fc: 61bb str r3, [r7, #24] + 800cd6c: f04f 33ff mov.w r3, #4294967295 + 800cd70: 61bb str r3, [r7, #24] } return xReturn; - 800c7fe: 69bb ldr r3, [r7, #24] + 800cd72: 69bb ldr r3, [r7, #24] } - 800c800: 4618 mov r0, r3 - 800c802: 3720 adds r7, #32 - 800c804: 46bd mov sp, r7 - 800c806: bd80 pop {r7, pc} + 800cd74: 4618 mov r0, r3 + 800cd76: 3720 adds r7, #32 + 800cd78: 46bd mov sp, r7 + 800cd7a: bd80 pop {r7, pc} -0800c808 : +0800cd7c : void * const pvParameters, UBaseType_t uxPriority, TaskHandle_t * const pxCreatedTask, TCB_t *pxNewTCB, const MemoryRegion_t * const xRegions ) { - 800c808: b580 push {r7, lr} - 800c80a: b088 sub sp, #32 - 800c80c: af00 add r7, sp, #0 - 800c80e: 60f8 str r0, [r7, #12] - 800c810: 60b9 str r1, [r7, #8] - 800c812: 607a str r2, [r7, #4] - 800c814: 603b str r3, [r7, #0] + 800cd7c: b580 push {r7, lr} + 800cd7e: b088 sub sp, #32 + 800cd80: af00 add r7, sp, #0 + 800cd82: 60f8 str r0, [r7, #12] + 800cd84: 60b9 str r1, [r7, #8] + 800cd86: 607a str r2, [r7, #4] + 800cd88: 603b str r3, [r7, #0] grows from high memory to low (as per the 80x86) or vice versa. portSTACK_GROWTH is used to make the result positive or negative as required by the port. */ #if( portSTACK_GROWTH < 0 ) { pxTopOfStack = &( pxNewTCB->pxStack[ ulStackDepth - ( uint32_t ) 1 ] ); - 800c816: 6b3b ldr r3, [r7, #48] @ 0x30 - 800c818: 6b1a ldr r2, [r3, #48] @ 0x30 - 800c81a: 687b ldr r3, [r7, #4] - 800c81c: f103 4380 add.w r3, r3, #1073741824 @ 0x40000000 - 800c820: 3b01 subs r3, #1 - 800c822: 009b lsls r3, r3, #2 - 800c824: 4413 add r3, r2 - 800c826: 61bb str r3, [r7, #24] + 800cd8a: 6b3b ldr r3, [r7, #48] @ 0x30 + 800cd8c: 6b1a ldr r2, [r3, #48] @ 0x30 + 800cd8e: 687b ldr r3, [r7, #4] + 800cd90: f103 4380 add.w r3, r3, #1073741824 @ 0x40000000 + 800cd94: 3b01 subs r3, #1 + 800cd96: 009b lsls r3, r3, #2 + 800cd98: 4413 add r3, r2 + 800cd9a: 61bb str r3, [r7, #24] pxTopOfStack = ( StackType_t * ) ( ( ( portPOINTER_SIZE_TYPE ) pxTopOfStack ) & ( ~( ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK ) ) ); /*lint !e923 !e9033 !e9078 MISRA exception. Avoiding casts between pointers and integers is not practical. Size differences accounted for using portPOINTER_SIZE_TYPE type. Checked by assert(). */ - 800c828: 69bb ldr r3, [r7, #24] - 800c82a: f023 0307 bic.w r3, r3, #7 - 800c82e: 61bb str r3, [r7, #24] + 800cd9c: 69bb ldr r3, [r7, #24] + 800cd9e: f023 0307 bic.w r3, r3, #7 + 800cda2: 61bb str r3, [r7, #24] /* Check the alignment of the calculated top of stack is correct. */ configASSERT( ( ( ( portPOINTER_SIZE_TYPE ) pxTopOfStack & ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK ) == 0UL ) ); - 800c830: 69bb ldr r3, [r7, #24] - 800c832: f003 0307 and.w r3, r3, #7 - 800c836: 2b00 cmp r3, #0 - 800c838: d00b beq.n 800c852 + 800cda4: 69bb ldr r3, [r7, #24] + 800cda6: f003 0307 and.w r3, r3, #7 + 800cdaa: 2b00 cmp r3, #0 + 800cdac: d00b beq.n 800cdc6 __asm volatile - 800c83a: f04f 0350 mov.w r3, #80 @ 0x50 - 800c83e: f383 8811 msr BASEPRI, r3 - 800c842: f3bf 8f6f isb sy - 800c846: f3bf 8f4f dsb sy - 800c84a: 617b str r3, [r7, #20] + 800cdae: f04f 0350 mov.w r3, #80 @ 0x50 + 800cdb2: f383 8811 msr BASEPRI, r3 + 800cdb6: f3bf 8f6f isb sy + 800cdba: f3bf 8f4f dsb sy + 800cdbe: 617b str r3, [r7, #20] } - 800c84c: bf00 nop - 800c84e: bf00 nop - 800c850: e7fd b.n 800c84e + 800cdc0: bf00 nop + 800cdc2: bf00 nop + 800cdc4: e7fd b.n 800cdc2 pxNewTCB->pxEndOfStack = pxNewTCB->pxStack + ( ulStackDepth - ( uint32_t ) 1 ); } #endif /* portSTACK_GROWTH */ /* Store the task name in the TCB. */ if( pcName != NULL ) - 800c852: 68bb ldr r3, [r7, #8] - 800c854: 2b00 cmp r3, #0 - 800c856: d01f beq.n 800c898 + 800cdc6: 68bb ldr r3, [r7, #8] + 800cdc8: 2b00 cmp r3, #0 + 800cdca: d01f beq.n 800ce0c { for( x = ( UBaseType_t ) 0; x < ( UBaseType_t ) configMAX_TASK_NAME_LEN; x++ ) - 800c858: 2300 movs r3, #0 - 800c85a: 61fb str r3, [r7, #28] - 800c85c: e012 b.n 800c884 + 800cdcc: 2300 movs r3, #0 + 800cdce: 61fb str r3, [r7, #28] + 800cdd0: e012 b.n 800cdf8 { pxNewTCB->pcTaskName[ x ] = pcName[ x ]; - 800c85e: 68ba ldr r2, [r7, #8] - 800c860: 69fb ldr r3, [r7, #28] - 800c862: 4413 add r3, r2 - 800c864: 7819 ldrb r1, [r3, #0] - 800c866: 6b3a ldr r2, [r7, #48] @ 0x30 - 800c868: 69fb ldr r3, [r7, #28] - 800c86a: 4413 add r3, r2 - 800c86c: 3334 adds r3, #52 @ 0x34 - 800c86e: 460a mov r2, r1 - 800c870: 701a strb r2, [r3, #0] + 800cdd2: 68ba ldr r2, [r7, #8] + 800cdd4: 69fb ldr r3, [r7, #28] + 800cdd6: 4413 add r3, r2 + 800cdd8: 7819 ldrb r1, [r3, #0] + 800cdda: 6b3a ldr r2, [r7, #48] @ 0x30 + 800cddc: 69fb ldr r3, [r7, #28] + 800cdde: 4413 add r3, r2 + 800cde0: 3334 adds r3, #52 @ 0x34 + 800cde2: 460a mov r2, r1 + 800cde4: 701a strb r2, [r3, #0] /* Don't copy all configMAX_TASK_NAME_LEN if the string is shorter than configMAX_TASK_NAME_LEN characters just in case the memory after the string is not accessible (extremely unlikely). */ if( pcName[ x ] == ( char ) 0x00 ) - 800c872: 68ba ldr r2, [r7, #8] - 800c874: 69fb ldr r3, [r7, #28] - 800c876: 4413 add r3, r2 - 800c878: 781b ldrb r3, [r3, #0] - 800c87a: 2b00 cmp r3, #0 - 800c87c: d006 beq.n 800c88c + 800cde6: 68ba ldr r2, [r7, #8] + 800cde8: 69fb ldr r3, [r7, #28] + 800cdea: 4413 add r3, r2 + 800cdec: 781b ldrb r3, [r3, #0] + 800cdee: 2b00 cmp r3, #0 + 800cdf0: d006 beq.n 800ce00 for( x = ( UBaseType_t ) 0; x < ( UBaseType_t ) configMAX_TASK_NAME_LEN; x++ ) - 800c87e: 69fb ldr r3, [r7, #28] - 800c880: 3301 adds r3, #1 - 800c882: 61fb str r3, [r7, #28] - 800c884: 69fb ldr r3, [r7, #28] - 800c886: 2b0f cmp r3, #15 - 800c888: d9e9 bls.n 800c85e - 800c88a: e000 b.n 800c88e + 800cdf2: 69fb ldr r3, [r7, #28] + 800cdf4: 3301 adds r3, #1 + 800cdf6: 61fb str r3, [r7, #28] + 800cdf8: 69fb ldr r3, [r7, #28] + 800cdfa: 2b0f cmp r3, #15 + 800cdfc: d9e9 bls.n 800cdd2 + 800cdfe: e000 b.n 800ce02 { break; - 800c88c: bf00 nop + 800ce00: bf00 nop } } /* Ensure the name string is terminated in the case that the string length was greater or equal to configMAX_TASK_NAME_LEN. */ pxNewTCB->pcTaskName[ configMAX_TASK_NAME_LEN - 1 ] = '\0'; - 800c88e: 6b3b ldr r3, [r7, #48] @ 0x30 - 800c890: 2200 movs r2, #0 - 800c892: f883 2043 strb.w r2, [r3, #67] @ 0x43 - 800c896: e003 b.n 800c8a0 + 800ce02: 6b3b ldr r3, [r7, #48] @ 0x30 + 800ce04: 2200 movs r2, #0 + 800ce06: f883 2043 strb.w r2, [r3, #67] @ 0x43 + 800ce0a: e003 b.n 800ce14 } else { /* The task has not been given a name, so just ensure there is a NULL terminator when it is read out. */ pxNewTCB->pcTaskName[ 0 ] = 0x00; - 800c898: 6b3b ldr r3, [r7, #48] @ 0x30 - 800c89a: 2200 movs r2, #0 - 800c89c: f883 2034 strb.w r2, [r3, #52] @ 0x34 + 800ce0c: 6b3b ldr r3, [r7, #48] @ 0x30 + 800ce0e: 2200 movs r2, #0 + 800ce10: f883 2034 strb.w r2, [r3, #52] @ 0x34 } /* This is used as an array index so must ensure it's not too large. First remove the privilege bit if one is present. */ if( uxPriority >= ( UBaseType_t ) configMAX_PRIORITIES ) - 800c8a0: 6abb ldr r3, [r7, #40] @ 0x28 - 800c8a2: 2b06 cmp r3, #6 - 800c8a4: d901 bls.n 800c8aa + 800ce14: 6abb ldr r3, [r7, #40] @ 0x28 + 800ce16: 2b06 cmp r3, #6 + 800ce18: d901 bls.n 800ce1e { uxPriority = ( UBaseType_t ) configMAX_PRIORITIES - ( UBaseType_t ) 1U; - 800c8a6: 2306 movs r3, #6 - 800c8a8: 62bb str r3, [r7, #40] @ 0x28 + 800ce1a: 2306 movs r3, #6 + 800ce1c: 62bb str r3, [r7, #40] @ 0x28 else { mtCOVERAGE_TEST_MARKER(); } pxNewTCB->uxPriority = uxPriority; - 800c8aa: 6b3b ldr r3, [r7, #48] @ 0x30 - 800c8ac: 6aba ldr r2, [r7, #40] @ 0x28 - 800c8ae: 62da str r2, [r3, #44] @ 0x2c + 800ce1e: 6b3b ldr r3, [r7, #48] @ 0x30 + 800ce20: 6aba ldr r2, [r7, #40] @ 0x28 + 800ce22: 62da str r2, [r3, #44] @ 0x2c #if ( configUSE_MUTEXES == 1 ) { pxNewTCB->uxBasePriority = uxPriority; - 800c8b0: 6b3b ldr r3, [r7, #48] @ 0x30 - 800c8b2: 6aba ldr r2, [r7, #40] @ 0x28 - 800c8b4: 645a str r2, [r3, #68] @ 0x44 + 800ce24: 6b3b ldr r3, [r7, #48] @ 0x30 + 800ce26: 6aba ldr r2, [r7, #40] @ 0x28 + 800ce28: 645a str r2, [r3, #68] @ 0x44 pxNewTCB->uxMutexesHeld = 0; - 800c8b6: 6b3b ldr r3, [r7, #48] @ 0x30 - 800c8b8: 2200 movs r2, #0 - 800c8ba: 649a str r2, [r3, #72] @ 0x48 + 800ce2a: 6b3b ldr r3, [r7, #48] @ 0x30 + 800ce2c: 2200 movs r2, #0 + 800ce2e: 649a str r2, [r3, #72] @ 0x48 } #endif /* configUSE_MUTEXES */ vListInitialiseItem( &( pxNewTCB->xStateListItem ) ); - 800c8bc: 6b3b ldr r3, [r7, #48] @ 0x30 - 800c8be: 3304 adds r3, #4 - 800c8c0: 4618 mov r0, r3 - 800c8c2: f7ff fe68 bl 800c596 + 800ce30: 6b3b ldr r3, [r7, #48] @ 0x30 + 800ce32: 3304 adds r3, #4 + 800ce34: 4618 mov r0, r3 + 800ce36: f7ff fe68 bl 800cb0a vListInitialiseItem( &( pxNewTCB->xEventListItem ) ); - 800c8c6: 6b3b ldr r3, [r7, #48] @ 0x30 - 800c8c8: 3318 adds r3, #24 - 800c8ca: 4618 mov r0, r3 - 800c8cc: f7ff fe63 bl 800c596 + 800ce3a: 6b3b ldr r3, [r7, #48] @ 0x30 + 800ce3c: 3318 adds r3, #24 + 800ce3e: 4618 mov r0, r3 + 800ce40: f7ff fe63 bl 800cb0a /* Set the pxNewTCB as a link back from the ListItem_t. This is so we can get back to the containing TCB from a generic item in a list. */ listSET_LIST_ITEM_OWNER( &( pxNewTCB->xStateListItem ), pxNewTCB ); - 800c8d0: 6b3b ldr r3, [r7, #48] @ 0x30 - 800c8d2: 6b3a ldr r2, [r7, #48] @ 0x30 - 800c8d4: 611a str r2, [r3, #16] + 800ce44: 6b3b ldr r3, [r7, #48] @ 0x30 + 800ce46: 6b3a ldr r2, [r7, #48] @ 0x30 + 800ce48: 611a str r2, [r3, #16] /* Event lists are always in priority order. */ listSET_LIST_ITEM_VALUE( &( pxNewTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ - 800c8d6: 6abb ldr r3, [r7, #40] @ 0x28 - 800c8d8: f1c3 0207 rsb r2, r3, #7 - 800c8dc: 6b3b ldr r3, [r7, #48] @ 0x30 - 800c8de: 619a str r2, [r3, #24] + 800ce4a: 6abb ldr r3, [r7, #40] @ 0x28 + 800ce4c: f1c3 0207 rsb r2, r3, #7 + 800ce50: 6b3b ldr r3, [r7, #48] @ 0x30 + 800ce52: 619a str r2, [r3, #24] listSET_LIST_ITEM_OWNER( &( pxNewTCB->xEventListItem ), pxNewTCB ); - 800c8e0: 6b3b ldr r3, [r7, #48] @ 0x30 - 800c8e2: 6b3a ldr r2, [r7, #48] @ 0x30 - 800c8e4: 625a str r2, [r3, #36] @ 0x24 + 800ce54: 6b3b ldr r3, [r7, #48] @ 0x30 + 800ce56: 6b3a ldr r2, [r7, #48] @ 0x30 + 800ce58: 625a str r2, [r3, #36] @ 0x24 } #endif #if ( configUSE_TASK_NOTIFICATIONS == 1 ) { pxNewTCB->ulNotifiedValue = 0; - 800c8e6: 6b3b ldr r3, [r7, #48] @ 0x30 - 800c8e8: 2200 movs r2, #0 - 800c8ea: f8c3 2098 str.w r2, [r3, #152] @ 0x98 + 800ce5a: 6b3b ldr r3, [r7, #48] @ 0x30 + 800ce5c: 2200 movs r2, #0 + 800ce5e: f8c3 2098 str.w r2, [r3, #152] @ 0x98 pxNewTCB->ucNotifyState = taskNOT_WAITING_NOTIFICATION; - 800c8ee: 6b3b ldr r3, [r7, #48] @ 0x30 - 800c8f0: 2200 movs r2, #0 - 800c8f2: f883 209c strb.w r2, [r3, #156] @ 0x9c + 800ce62: 6b3b ldr r3, [r7, #48] @ 0x30 + 800ce64: 2200 movs r2, #0 + 800ce66: f883 209c strb.w r2, [r3, #156] @ 0x9c #if ( configUSE_NEWLIB_REENTRANT == 1 ) { /* Initialise this task's Newlib reent structure. See the third party link http://www.nadler.com/embedded/newlibAndFreeRTOS.html for additional information. */ _REENT_INIT_PTR( ( &( pxNewTCB->xNewLib_reent ) ) ); - 800c8f6: 6b3b ldr r3, [r7, #48] @ 0x30 - 800c8f8: 334c adds r3, #76 @ 0x4c - 800c8fa: 224c movs r2, #76 @ 0x4c - 800c8fc: 2100 movs r1, #0 - 800c8fe: 4618 mov r0, r3 - 800c900: f001 f858 bl 800d9b4 - 800c904: 6b3b ldr r3, [r7, #48] @ 0x30 - 800c906: 4a0d ldr r2, [pc, #52] @ (800c93c ) - 800c908: 651a str r2, [r3, #80] @ 0x50 - 800c90a: 6b3b ldr r3, [r7, #48] @ 0x30 - 800c90c: 4a0c ldr r2, [pc, #48] @ (800c940 ) - 800c90e: 655a str r2, [r3, #84] @ 0x54 - 800c910: 6b3b ldr r3, [r7, #48] @ 0x30 - 800c912: 4a0c ldr r2, [pc, #48] @ (800c944 ) - 800c914: 659a str r2, [r3, #88] @ 0x58 + 800ce6a: 6b3b ldr r3, [r7, #48] @ 0x30 + 800ce6c: 334c adds r3, #76 @ 0x4c + 800ce6e: 224c movs r2, #76 @ 0x4c + 800ce70: 2100 movs r1, #0 + 800ce72: 4618 mov r0, r3 + 800ce74: f001 f856 bl 800df24 + 800ce78: 6b3b ldr r3, [r7, #48] @ 0x30 + 800ce7a: 4a0d ldr r2, [pc, #52] @ (800ceb0 ) + 800ce7c: 651a str r2, [r3, #80] @ 0x50 + 800ce7e: 6b3b ldr r3, [r7, #48] @ 0x30 + 800ce80: 4a0c ldr r2, [pc, #48] @ (800ceb4 ) + 800ce82: 655a str r2, [r3, #84] @ 0x54 + 800ce84: 6b3b ldr r3, [r7, #48] @ 0x30 + 800ce86: 4a0c ldr r2, [pc, #48] @ (800ceb8 ) + 800ce88: 659a str r2, [r3, #88] @ 0x58 } #endif /* portSTACK_GROWTH */ } #else /* portHAS_STACK_OVERFLOW_CHECKING */ { pxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxTaskCode, pvParameters ); - 800c916: 683a ldr r2, [r7, #0] - 800c918: 68f9 ldr r1, [r7, #12] - 800c91a: 69b8 ldr r0, [r7, #24] - 800c91c: f000 fc2a bl 800d174 - 800c920: 4602 mov r2, r0 - 800c922: 6b3b ldr r3, [r7, #48] @ 0x30 - 800c924: 601a str r2, [r3, #0] + 800ce8a: 683a ldr r2, [r7, #0] + 800ce8c: 68f9 ldr r1, [r7, #12] + 800ce8e: 69b8 ldr r0, [r7, #24] + 800ce90: f000 fc2a bl 800d6e8 + 800ce94: 4602 mov r2, r0 + 800ce96: 6b3b ldr r3, [r7, #48] @ 0x30 + 800ce98: 601a str r2, [r3, #0] } #endif /* portHAS_STACK_OVERFLOW_CHECKING */ } #endif /* portUSING_MPU_WRAPPERS */ if( pxCreatedTask != NULL ) - 800c926: 6afb ldr r3, [r7, #44] @ 0x2c - 800c928: 2b00 cmp r3, #0 - 800c92a: d002 beq.n 800c932 + 800ce9a: 6afb ldr r3, [r7, #44] @ 0x2c + 800ce9c: 2b00 cmp r3, #0 + 800ce9e: d002 beq.n 800cea6 { /* Pass the handle out in an anonymous way. The handle can be used to change the created task's priority, delete the created task, etc.*/ *pxCreatedTask = ( TaskHandle_t ) pxNewTCB; - 800c92c: 6afb ldr r3, [r7, #44] @ 0x2c - 800c92e: 6b3a ldr r2, [r7, #48] @ 0x30 - 800c930: 601a str r2, [r3, #0] + 800cea0: 6afb ldr r3, [r7, #44] @ 0x2c + 800cea2: 6b3a ldr r2, [r7, #48] @ 0x30 + 800cea4: 601a str r2, [r3, #0] } else { mtCOVERAGE_TEST_MARKER(); } } - 800c932: bf00 nop - 800c934: 3720 adds r7, #32 - 800c936: 46bd mov sp, r7 - 800c938: bd80 pop {r7, pc} - 800c93a: bf00 nop - 800c93c: 20011070 .word 0x20011070 - 800c940: 200110d8 .word 0x200110d8 - 800c944: 20011140 .word 0x20011140 + 800cea6: bf00 nop + 800cea8: 3720 adds r7, #32 + 800ceaa: 46bd mov sp, r7 + 800ceac: bd80 pop {r7, pc} + 800ceae: bf00 nop + 800ceb0: 200110b8 .word 0x200110b8 + 800ceb4: 20011120 .word 0x20011120 + 800ceb8: 20011188 .word 0x20011188 -0800c948 : +0800cebc : /*-----------------------------------------------------------*/ static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB ) { - 800c948: b580 push {r7, lr} - 800c94a: b082 sub sp, #8 - 800c94c: af00 add r7, sp, #0 - 800c94e: 6078 str r0, [r7, #4] + 800cebc: b580 push {r7, lr} + 800cebe: b082 sub sp, #8 + 800cec0: af00 add r7, sp, #0 + 800cec2: 6078 str r0, [r7, #4] /* Ensure interrupts don't access the task lists while the lists are being updated. */ taskENTER_CRITICAL(); - 800c950: f000 fd42 bl 800d3d8 + 800cec4: f000 fd40 bl 800d948 { uxCurrentNumberOfTasks++; - 800c954: 4b2a ldr r3, [pc, #168] @ (800ca00 ) - 800c956: 681b ldr r3, [r3, #0] - 800c958: 3301 adds r3, #1 - 800c95a: 4a29 ldr r2, [pc, #164] @ (800ca00 ) - 800c95c: 6013 str r3, [r2, #0] + 800cec8: 4b2a ldr r3, [pc, #168] @ (800cf74 ) + 800ceca: 681b ldr r3, [r3, #0] + 800cecc: 3301 adds r3, #1 + 800cece: 4a29 ldr r2, [pc, #164] @ (800cf74 ) + 800ced0: 6013 str r3, [r2, #0] if( pxCurrentTCB == NULL ) - 800c95e: 4b29 ldr r3, [pc, #164] @ (800ca04 ) - 800c960: 681b ldr r3, [r3, #0] - 800c962: 2b00 cmp r3, #0 - 800c964: d109 bne.n 800c97a + 800ced2: 4b29 ldr r3, [pc, #164] @ (800cf78 ) + 800ced4: 681b ldr r3, [r3, #0] + 800ced6: 2b00 cmp r3, #0 + 800ced8: d109 bne.n 800ceee { /* There are no other tasks, or all the other tasks are in the suspended state - make this the current task. */ pxCurrentTCB = pxNewTCB; - 800c966: 4a27 ldr r2, [pc, #156] @ (800ca04 ) - 800c968: 687b ldr r3, [r7, #4] - 800c96a: 6013 str r3, [r2, #0] + 800ceda: 4a27 ldr r2, [pc, #156] @ (800cf78 ) + 800cedc: 687b ldr r3, [r7, #4] + 800cede: 6013 str r3, [r2, #0] if( uxCurrentNumberOfTasks == ( UBaseType_t ) 1 ) - 800c96c: 4b24 ldr r3, [pc, #144] @ (800ca00 ) - 800c96e: 681b ldr r3, [r3, #0] - 800c970: 2b01 cmp r3, #1 - 800c972: d110 bne.n 800c996 + 800cee0: 4b24 ldr r3, [pc, #144] @ (800cf74 ) + 800cee2: 681b ldr r3, [r3, #0] + 800cee4: 2b01 cmp r3, #1 + 800cee6: d110 bne.n 800cf0a { /* This is the first task to be created so do the preliminary initialisation required. We will not recover if this call fails, but we will report the failure. */ prvInitialiseTaskLists(); - 800c974: f000 fad4 bl 800cf20 - 800c978: e00d b.n 800c996 + 800cee8: f000 fad4 bl 800d494 + 800ceec: e00d b.n 800cf0a else { /* If the scheduler is not already running, make this task the current task if it is the highest priority task to be created so far. */ if( xSchedulerRunning == pdFALSE ) - 800c97a: 4b23 ldr r3, [pc, #140] @ (800ca08 ) - 800c97c: 681b ldr r3, [r3, #0] - 800c97e: 2b00 cmp r3, #0 - 800c980: d109 bne.n 800c996 + 800ceee: 4b23 ldr r3, [pc, #140] @ (800cf7c ) + 800cef0: 681b ldr r3, [r3, #0] + 800cef2: 2b00 cmp r3, #0 + 800cef4: d109 bne.n 800cf0a { if( pxCurrentTCB->uxPriority <= pxNewTCB->uxPriority ) - 800c982: 4b20 ldr r3, [pc, #128] @ (800ca04 ) - 800c984: 681b ldr r3, [r3, #0] - 800c986: 6ada ldr r2, [r3, #44] @ 0x2c - 800c988: 687b ldr r3, [r7, #4] - 800c98a: 6adb ldr r3, [r3, #44] @ 0x2c - 800c98c: 429a cmp r2, r3 - 800c98e: d802 bhi.n 800c996 + 800cef6: 4b20 ldr r3, [pc, #128] @ (800cf78 ) + 800cef8: 681b ldr r3, [r3, #0] + 800cefa: 6ada ldr r2, [r3, #44] @ 0x2c + 800cefc: 687b ldr r3, [r7, #4] + 800cefe: 6adb ldr r3, [r3, #44] @ 0x2c + 800cf00: 429a cmp r2, r3 + 800cf02: d802 bhi.n 800cf0a { pxCurrentTCB = pxNewTCB; - 800c990: 4a1c ldr r2, [pc, #112] @ (800ca04 ) - 800c992: 687b ldr r3, [r7, #4] - 800c994: 6013 str r3, [r2, #0] + 800cf04: 4a1c ldr r2, [pc, #112] @ (800cf78 ) + 800cf06: 687b ldr r3, [r7, #4] + 800cf08: 6013 str r3, [r2, #0] { mtCOVERAGE_TEST_MARKER(); } } uxTaskNumber++; - 800c996: 4b1d ldr r3, [pc, #116] @ (800ca0c ) - 800c998: 681b ldr r3, [r3, #0] - 800c99a: 3301 adds r3, #1 - 800c99c: 4a1b ldr r2, [pc, #108] @ (800ca0c ) - 800c99e: 6013 str r3, [r2, #0] + 800cf0a: 4b1d ldr r3, [pc, #116] @ (800cf80 ) + 800cf0c: 681b ldr r3, [r3, #0] + 800cf0e: 3301 adds r3, #1 + 800cf10: 4a1b ldr r2, [pc, #108] @ (800cf80 ) + 800cf12: 6013 str r3, [r2, #0] pxNewTCB->uxTCBNumber = uxTaskNumber; } #endif /* configUSE_TRACE_FACILITY */ traceTASK_CREATE( pxNewTCB ); prvAddTaskToReadyList( pxNewTCB ); - 800c9a0: 687b ldr r3, [r7, #4] - 800c9a2: 6adb ldr r3, [r3, #44] @ 0x2c - 800c9a4: 2201 movs r2, #1 - 800c9a6: 409a lsls r2, r3 - 800c9a8: 4b19 ldr r3, [pc, #100] @ (800ca10 ) - 800c9aa: 681b ldr r3, [r3, #0] - 800c9ac: 4313 orrs r3, r2 - 800c9ae: 4a18 ldr r2, [pc, #96] @ (800ca10 ) - 800c9b0: 6013 str r3, [r2, #0] - 800c9b2: 687b ldr r3, [r7, #4] - 800c9b4: 6ada ldr r2, [r3, #44] @ 0x2c - 800c9b6: 4613 mov r3, r2 - 800c9b8: 009b lsls r3, r3, #2 - 800c9ba: 4413 add r3, r2 - 800c9bc: 009b lsls r3, r3, #2 - 800c9be: 4a15 ldr r2, [pc, #84] @ (800ca14 ) - 800c9c0: 441a add r2, r3 - 800c9c2: 687b ldr r3, [r7, #4] - 800c9c4: 3304 adds r3, #4 - 800c9c6: 4619 mov r1, r3 - 800c9c8: 4610 mov r0, r2 - 800c9ca: f7ff fdf1 bl 800c5b0 + 800cf14: 687b ldr r3, [r7, #4] + 800cf16: 6adb ldr r3, [r3, #44] @ 0x2c + 800cf18: 2201 movs r2, #1 + 800cf1a: 409a lsls r2, r3 + 800cf1c: 4b19 ldr r3, [pc, #100] @ (800cf84 ) + 800cf1e: 681b ldr r3, [r3, #0] + 800cf20: 4313 orrs r3, r2 + 800cf22: 4a18 ldr r2, [pc, #96] @ (800cf84 ) + 800cf24: 6013 str r3, [r2, #0] + 800cf26: 687b ldr r3, [r7, #4] + 800cf28: 6ada ldr r2, [r3, #44] @ 0x2c + 800cf2a: 4613 mov r3, r2 + 800cf2c: 009b lsls r3, r3, #2 + 800cf2e: 4413 add r3, r2 + 800cf30: 009b lsls r3, r3, #2 + 800cf32: 4a15 ldr r2, [pc, #84] @ (800cf88 ) + 800cf34: 441a add r2, r3 + 800cf36: 687b ldr r3, [r7, #4] + 800cf38: 3304 adds r3, #4 + 800cf3a: 4619 mov r1, r3 + 800cf3c: 4610 mov r0, r2 + 800cf3e: f7ff fdf1 bl 800cb24 portSETUP_TCB( pxNewTCB ); } taskEXIT_CRITICAL(); - 800c9ce: f000 fd35 bl 800d43c + 800cf42: f000 fd33 bl 800d9ac if( xSchedulerRunning != pdFALSE ) - 800c9d2: 4b0d ldr r3, [pc, #52] @ (800ca08 ) - 800c9d4: 681b ldr r3, [r3, #0] - 800c9d6: 2b00 cmp r3, #0 - 800c9d8: d00e beq.n 800c9f8 + 800cf46: 4b0d ldr r3, [pc, #52] @ (800cf7c ) + 800cf48: 681b ldr r3, [r3, #0] + 800cf4a: 2b00 cmp r3, #0 + 800cf4c: d00e beq.n 800cf6c { /* If the created task is of a higher priority than the current task then it should run now. */ if( pxCurrentTCB->uxPriority < pxNewTCB->uxPriority ) - 800c9da: 4b0a ldr r3, [pc, #40] @ (800ca04 ) - 800c9dc: 681b ldr r3, [r3, #0] - 800c9de: 6ada ldr r2, [r3, #44] @ 0x2c - 800c9e0: 687b ldr r3, [r7, #4] - 800c9e2: 6adb ldr r3, [r3, #44] @ 0x2c - 800c9e4: 429a cmp r2, r3 - 800c9e6: d207 bcs.n 800c9f8 + 800cf4e: 4b0a ldr r3, [pc, #40] @ (800cf78 ) + 800cf50: 681b ldr r3, [r3, #0] + 800cf52: 6ada ldr r2, [r3, #44] @ 0x2c + 800cf54: 687b ldr r3, [r7, #4] + 800cf56: 6adb ldr r3, [r3, #44] @ 0x2c + 800cf58: 429a cmp r2, r3 + 800cf5a: d207 bcs.n 800cf6c { taskYIELD_IF_USING_PREEMPTION(); - 800c9e8: 4b0b ldr r3, [pc, #44] @ (800ca18 ) - 800c9ea: f04f 5280 mov.w r2, #268435456 @ 0x10000000 - 800c9ee: 601a str r2, [r3, #0] - 800c9f0: f3bf 8f4f dsb sy - 800c9f4: f3bf 8f6f isb sy + 800cf5c: 4b0b ldr r3, [pc, #44] @ (800cf8c ) + 800cf5e: f04f 5280 mov.w r2, #268435456 @ 0x10000000 + 800cf62: 601a str r2, [r3, #0] + 800cf64: f3bf 8f4f dsb sy + 800cf68: f3bf 8f6f isb sy } else { mtCOVERAGE_TEST_MARKER(); } } - 800c9f8: bf00 nop - 800c9fa: 3708 adds r7, #8 - 800c9fc: 46bd mov sp, r7 - 800c9fe: bd80 pop {r7, pc} - 800ca00: 200025bc .word 0x200025bc - 800ca04: 200024bc .word 0x200024bc - 800ca08: 200025c8 .word 0x200025c8 - 800ca0c: 200025d8 .word 0x200025d8 - 800ca10: 200025c4 .word 0x200025c4 - 800ca14: 200024c0 .word 0x200024c0 - 800ca18: e000ed04 .word 0xe000ed04 + 800cf6c: bf00 nop + 800cf6e: 3708 adds r7, #8 + 800cf70: 46bd mov sp, r7 + 800cf72: bd80 pop {r7, pc} + 800cf74: 20002604 .word 0x20002604 + 800cf78: 20002504 .word 0x20002504 + 800cf7c: 20002610 .word 0x20002610 + 800cf80: 20002620 .word 0x20002620 + 800cf84: 2000260c .word 0x2000260c + 800cf88: 20002508 .word 0x20002508 + 800cf8c: e000ed04 .word 0xe000ed04 -0800ca1c : +0800cf90 : /*-----------------------------------------------------------*/ #if ( INCLUDE_vTaskDelay == 1 ) void vTaskDelay( const TickType_t xTicksToDelay ) { - 800ca1c: b580 push {r7, lr} - 800ca1e: b084 sub sp, #16 - 800ca20: af00 add r7, sp, #0 - 800ca22: 6078 str r0, [r7, #4] + 800cf90: b580 push {r7, lr} + 800cf92: b084 sub sp, #16 + 800cf94: af00 add r7, sp, #0 + 800cf96: 6078 str r0, [r7, #4] BaseType_t xAlreadyYielded = pdFALSE; - 800ca24: 2300 movs r3, #0 - 800ca26: 60fb str r3, [r7, #12] + 800cf98: 2300 movs r3, #0 + 800cf9a: 60fb str r3, [r7, #12] /* A delay time of zero just forces a reschedule. */ if( xTicksToDelay > ( TickType_t ) 0U ) - 800ca28: 687b ldr r3, [r7, #4] - 800ca2a: 2b00 cmp r3, #0 - 800ca2c: d018 beq.n 800ca60 + 800cf9c: 687b ldr r3, [r7, #4] + 800cf9e: 2b00 cmp r3, #0 + 800cfa0: d018 beq.n 800cfd4 { configASSERT( uxSchedulerSuspended == 0 ); - 800ca2e: 4b14 ldr r3, [pc, #80] @ (800ca80 ) - 800ca30: 681b ldr r3, [r3, #0] - 800ca32: 2b00 cmp r3, #0 - 800ca34: d00b beq.n 800ca4e + 800cfa2: 4b14 ldr r3, [pc, #80] @ (800cff4 ) + 800cfa4: 681b ldr r3, [r3, #0] + 800cfa6: 2b00 cmp r3, #0 + 800cfa8: d00b beq.n 800cfc2 __asm volatile - 800ca36: f04f 0350 mov.w r3, #80 @ 0x50 - 800ca3a: f383 8811 msr BASEPRI, r3 - 800ca3e: f3bf 8f6f isb sy - 800ca42: f3bf 8f4f dsb sy - 800ca46: 60bb str r3, [r7, #8] + 800cfaa: f04f 0350 mov.w r3, #80 @ 0x50 + 800cfae: f383 8811 msr BASEPRI, r3 + 800cfb2: f3bf 8f6f isb sy + 800cfb6: f3bf 8f4f dsb sy + 800cfba: 60bb str r3, [r7, #8] } - 800ca48: bf00 nop - 800ca4a: bf00 nop - 800ca4c: e7fd b.n 800ca4a + 800cfbc: bf00 nop + 800cfbe: bf00 nop + 800cfc0: e7fd b.n 800cfbe vTaskSuspendAll(); - 800ca4e: f000 f885 bl 800cb5c + 800cfc2: f000 f885 bl 800d0d0 list or removed from the blocked list until the scheduler is resumed. This task cannot be in an event list as it is the currently executing task. */ prvAddCurrentTaskToDelayedList( xTicksToDelay, pdFALSE ); - 800ca52: 2100 movs r1, #0 - 800ca54: 6878 ldr r0, [r7, #4] - 800ca56: f000 fb27 bl 800d0a8 + 800cfc6: 2100 movs r1, #0 + 800cfc8: 6878 ldr r0, [r7, #4] + 800cfca: f000 fb27 bl 800d61c } xAlreadyYielded = xTaskResumeAll(); - 800ca5a: f000 f88d bl 800cb78 - 800ca5e: 60f8 str r0, [r7, #12] + 800cfce: f000 f88d bl 800d0ec + 800cfd2: 60f8 str r0, [r7, #12] mtCOVERAGE_TEST_MARKER(); } /* Force a reschedule if xTaskResumeAll has not already done so, we may have put ourselves to sleep. */ if( xAlreadyYielded == pdFALSE ) - 800ca60: 68fb ldr r3, [r7, #12] - 800ca62: 2b00 cmp r3, #0 - 800ca64: d107 bne.n 800ca76 + 800cfd4: 68fb ldr r3, [r7, #12] + 800cfd6: 2b00 cmp r3, #0 + 800cfd8: d107 bne.n 800cfea { portYIELD_WITHIN_API(); - 800ca66: 4b07 ldr r3, [pc, #28] @ (800ca84 ) - 800ca68: f04f 5280 mov.w r2, #268435456 @ 0x10000000 - 800ca6c: 601a str r2, [r3, #0] - 800ca6e: f3bf 8f4f dsb sy - 800ca72: f3bf 8f6f isb sy + 800cfda: 4b07 ldr r3, [pc, #28] @ (800cff8 ) + 800cfdc: f04f 5280 mov.w r2, #268435456 @ 0x10000000 + 800cfe0: 601a str r2, [r3, #0] + 800cfe2: f3bf 8f4f dsb sy + 800cfe6: f3bf 8f6f isb sy } else { mtCOVERAGE_TEST_MARKER(); } } - 800ca76: bf00 nop - 800ca78: 3710 adds r7, #16 - 800ca7a: 46bd mov sp, r7 - 800ca7c: bd80 pop {r7, pc} - 800ca7e: bf00 nop - 800ca80: 200025e4 .word 0x200025e4 - 800ca84: e000ed04 .word 0xe000ed04 + 800cfea: bf00 nop + 800cfec: 3710 adds r7, #16 + 800cfee: 46bd mov sp, r7 + 800cff0: bd80 pop {r7, pc} + 800cff2: bf00 nop + 800cff4: 2000262c .word 0x2000262c + 800cff8: e000ed04 .word 0xe000ed04 -0800ca88 : +0800cffc : #endif /* ( ( INCLUDE_xTaskResumeFromISR == 1 ) && ( INCLUDE_vTaskSuspend == 1 ) ) */ /*-----------------------------------------------------------*/ void vTaskStartScheduler( void ) { - 800ca88: b580 push {r7, lr} - 800ca8a: b08a sub sp, #40 @ 0x28 - 800ca8c: af04 add r7, sp, #16 + 800cffc: b580 push {r7, lr} + 800cffe: b08a sub sp, #40 @ 0x28 + 800d000: af04 add r7, sp, #16 BaseType_t xReturn; /* Add the idle task at the lowest priority. */ #if( configSUPPORT_STATIC_ALLOCATION == 1 ) { StaticTask_t *pxIdleTaskTCBBuffer = NULL; - 800ca8e: 2300 movs r3, #0 - 800ca90: 60bb str r3, [r7, #8] + 800d002: 2300 movs r3, #0 + 800d004: 60bb str r3, [r7, #8] StackType_t *pxIdleTaskStackBuffer = NULL; - 800ca92: 2300 movs r3, #0 - 800ca94: 607b str r3, [r7, #4] + 800d006: 2300 movs r3, #0 + 800d008: 607b str r3, [r7, #4] uint32_t ulIdleTaskStackSize; /* The Idle task is created using user provided RAM - obtain the address of the RAM then create the idle task. */ vApplicationGetIdleTaskMemory( &pxIdleTaskTCBBuffer, &pxIdleTaskStackBuffer, &ulIdleTaskStackSize ); - 800ca96: 463a mov r2, r7 - 800ca98: 1d39 adds r1, r7, #4 - 800ca9a: f107 0308 add.w r3, r7, #8 - 800ca9e: 4618 mov r0, r3 - 800caa0: f7f4 fdb4 bl 800160c + 800d00a: 463a mov r2, r7 + 800d00c: 1d39 adds r1, r7, #4 + 800d00e: f107 0308 add.w r3, r7, #8 + 800d012: 4618 mov r0, r3 + 800d014: f7f4 faf8 bl 8001608 xIdleTaskHandle = xTaskCreateStatic( prvIdleTask, - 800caa4: 6839 ldr r1, [r7, #0] - 800caa6: 687b ldr r3, [r7, #4] - 800caa8: 68ba ldr r2, [r7, #8] - 800caaa: 9202 str r2, [sp, #8] - 800caac: 9301 str r3, [sp, #4] - 800caae: 2300 movs r3, #0 - 800cab0: 9300 str r3, [sp, #0] - 800cab2: 2300 movs r3, #0 - 800cab4: 460a mov r2, r1 - 800cab6: 4921 ldr r1, [pc, #132] @ (800cb3c ) - 800cab8: 4821 ldr r0, [pc, #132] @ (800cb40 ) - 800caba: f7ff fe00 bl 800c6be - 800cabe: 4603 mov r3, r0 - 800cac0: 4a20 ldr r2, [pc, #128] @ (800cb44 ) - 800cac2: 6013 str r3, [r2, #0] + 800d018: 6839 ldr r1, [r7, #0] + 800d01a: 687b ldr r3, [r7, #4] + 800d01c: 68ba ldr r2, [r7, #8] + 800d01e: 9202 str r2, [sp, #8] + 800d020: 9301 str r3, [sp, #4] + 800d022: 2300 movs r3, #0 + 800d024: 9300 str r3, [sp, #0] + 800d026: 2300 movs r3, #0 + 800d028: 460a mov r2, r1 + 800d02a: 4921 ldr r1, [pc, #132] @ (800d0b0 ) + 800d02c: 4821 ldr r0, [pc, #132] @ (800d0b4 ) + 800d02e: f7ff fe00 bl 800cc32 + 800d032: 4603 mov r3, r0 + 800d034: 4a20 ldr r2, [pc, #128] @ (800d0b8 ) + 800d036: 6013 str r3, [r2, #0] ( void * ) NULL, /*lint !e961. The cast is not redundant for all compilers. */ portPRIVILEGE_BIT, /* In effect ( tskIDLE_PRIORITY | portPRIVILEGE_BIT ), but tskIDLE_PRIORITY is zero. */ pxIdleTaskStackBuffer, pxIdleTaskTCBBuffer ); /*lint !e961 MISRA exception, justified as it is not a redundant explicit cast to all supported compilers. */ if( xIdleTaskHandle != NULL ) - 800cac4: 4b1f ldr r3, [pc, #124] @ (800cb44 ) - 800cac6: 681b ldr r3, [r3, #0] - 800cac8: 2b00 cmp r3, #0 - 800caca: d002 beq.n 800cad2 + 800d038: 4b1f ldr r3, [pc, #124] @ (800d0b8 ) + 800d03a: 681b ldr r3, [r3, #0] + 800d03c: 2b00 cmp r3, #0 + 800d03e: d002 beq.n 800d046 { xReturn = pdPASS; - 800cacc: 2301 movs r3, #1 - 800cace: 617b str r3, [r7, #20] - 800cad0: e001 b.n 800cad6 + 800d040: 2301 movs r3, #1 + 800d042: 617b str r3, [r7, #20] + 800d044: e001 b.n 800d04a } else { xReturn = pdFAIL; - 800cad2: 2300 movs r3, #0 - 800cad4: 617b str r3, [r7, #20] + 800d046: 2300 movs r3, #0 + 800d048: 617b str r3, [r7, #20] mtCOVERAGE_TEST_MARKER(); } } #endif /* configUSE_TIMERS */ if( xReturn == pdPASS ) - 800cad6: 697b ldr r3, [r7, #20] - 800cad8: 2b01 cmp r3, #1 - 800cada: d11b bne.n 800cb14 + 800d04a: 697b ldr r3, [r7, #20] + 800d04c: 2b01 cmp r3, #1 + 800d04e: d11b bne.n 800d088 __asm volatile - 800cadc: f04f 0350 mov.w r3, #80 @ 0x50 - 800cae0: f383 8811 msr BASEPRI, r3 - 800cae4: f3bf 8f6f isb sy - 800cae8: f3bf 8f4f dsb sy - 800caec: 613b str r3, [r7, #16] + 800d050: f04f 0350 mov.w r3, #80 @ 0x50 + 800d054: f383 8811 msr BASEPRI, r3 + 800d058: f3bf 8f6f isb sy + 800d05c: f3bf 8f4f dsb sy + 800d060: 613b str r3, [r7, #16] } - 800caee: bf00 nop + 800d062: bf00 nop { /* Switch Newlib's _impure_ptr variable to point to the _reent structure specific to the task that will run first. See the third party link http://www.nadler.com/embedded/newlibAndFreeRTOS.html for additional information. */ _impure_ptr = &( pxCurrentTCB->xNewLib_reent ); - 800caf0: 4b15 ldr r3, [pc, #84] @ (800cb48 ) - 800caf2: 681b ldr r3, [r3, #0] - 800caf4: 334c adds r3, #76 @ 0x4c - 800caf6: 4a15 ldr r2, [pc, #84] @ (800cb4c ) - 800caf8: 6013 str r3, [r2, #0] + 800d064: 4b15 ldr r3, [pc, #84] @ (800d0bc ) + 800d066: 681b ldr r3, [r3, #0] + 800d068: 334c adds r3, #76 @ 0x4c + 800d06a: 4a15 ldr r2, [pc, #84] @ (800d0c0 ) + 800d06c: 6013 str r3, [r2, #0] } #endif /* configUSE_NEWLIB_REENTRANT */ xNextTaskUnblockTime = portMAX_DELAY; - 800cafa: 4b15 ldr r3, [pc, #84] @ (800cb50 ) - 800cafc: f04f 32ff mov.w r2, #4294967295 - 800cb00: 601a str r2, [r3, #0] + 800d06e: 4b15 ldr r3, [pc, #84] @ (800d0c4 ) + 800d070: f04f 32ff mov.w r2, #4294967295 + 800d074: 601a str r2, [r3, #0] xSchedulerRunning = pdTRUE; - 800cb02: 4b14 ldr r3, [pc, #80] @ (800cb54 ) - 800cb04: 2201 movs r2, #1 - 800cb06: 601a str r2, [r3, #0] + 800d076: 4b14 ldr r3, [pc, #80] @ (800d0c8 ) + 800d078: 2201 movs r2, #1 + 800d07a: 601a str r2, [r3, #0] xTickCount = ( TickType_t ) configINITIAL_TICK_COUNT; - 800cb08: 4b13 ldr r3, [pc, #76] @ (800cb58 ) - 800cb0a: 2200 movs r2, #0 - 800cb0c: 601a str r2, [r3, #0] + 800d07c: 4b13 ldr r3, [pc, #76] @ (800d0cc ) + 800d07e: 2200 movs r2, #0 + 800d080: 601a str r2, [r3, #0] traceTASK_SWITCHED_IN(); /* Setting up the timer tick is hardware specific and thus in the portable interface. */ if( xPortStartScheduler() != pdFALSE ) - 800cb0e: f000 fbbf bl 800d290 + 800d082: f000 fbbd bl 800d800 } /* Prevent compiler warnings if INCLUDE_xTaskGetIdleTaskHandle is set to 0, meaning xIdleTaskHandle is not used anywhere else. */ ( void ) xIdleTaskHandle; } - 800cb12: e00f b.n 800cb34 + 800d086: e00f b.n 800d0a8 configASSERT( xReturn != errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY ); - 800cb14: 697b ldr r3, [r7, #20] - 800cb16: f1b3 3fff cmp.w r3, #4294967295 - 800cb1a: d10b bne.n 800cb34 + 800d088: 697b ldr r3, [r7, #20] + 800d08a: f1b3 3fff cmp.w r3, #4294967295 + 800d08e: d10b bne.n 800d0a8 __asm volatile - 800cb1c: f04f 0350 mov.w r3, #80 @ 0x50 - 800cb20: f383 8811 msr BASEPRI, r3 - 800cb24: f3bf 8f6f isb sy - 800cb28: f3bf 8f4f dsb sy - 800cb2c: 60fb str r3, [r7, #12] + 800d090: f04f 0350 mov.w r3, #80 @ 0x50 + 800d094: f383 8811 msr BASEPRI, r3 + 800d098: f3bf 8f6f isb sy + 800d09c: f3bf 8f4f dsb sy + 800d0a0: 60fb str r3, [r7, #12] } - 800cb2e: bf00 nop - 800cb30: bf00 nop - 800cb32: e7fd b.n 800cb30 + 800d0a2: bf00 nop + 800d0a4: bf00 nop + 800d0a6: e7fd b.n 800d0a4 } - 800cb34: bf00 nop - 800cb36: 3718 adds r7, #24 - 800cb38: 46bd mov sp, r7 - 800cb3a: bd80 pop {r7, pc} - 800cb3c: 0800e9b8 .word 0x0800e9b8 - 800cb40: 0800cef1 .word 0x0800cef1 - 800cb44: 200025e0 .word 0x200025e0 - 800cb48: 200024bc .word 0x200024bc - 800cb4c: 20000010 .word 0x20000010 - 800cb50: 200025dc .word 0x200025dc - 800cb54: 200025c8 .word 0x200025c8 - 800cb58: 200025c0 .word 0x200025c0 + 800d0a8: bf00 nop + 800d0aa: 3718 adds r7, #24 + 800d0ac: 46bd mov sp, r7 + 800d0ae: bd80 pop {r7, pc} + 800d0b0: 0800ef28 .word 0x0800ef28 + 800d0b4: 0800d465 .word 0x0800d465 + 800d0b8: 20002628 .word 0x20002628 + 800d0bc: 20002504 .word 0x20002504 + 800d0c0: 20000010 .word 0x20000010 + 800d0c4: 20002624 .word 0x20002624 + 800d0c8: 20002610 .word 0x20002610 + 800d0cc: 20002608 .word 0x20002608 -0800cb5c : +0800d0d0 : vPortEndScheduler(); } /*----------------------------------------------------------*/ void vTaskSuspendAll( void ) { - 800cb5c: b480 push {r7} - 800cb5e: af00 add r7, sp, #0 + 800d0d0: b480 push {r7} + 800d0d2: af00 add r7, sp, #0 do not otherwise exhibit real time behaviour. */ portSOFTWARE_BARRIER(); /* The scheduler is suspended if uxSchedulerSuspended is non-zero. An increment is used to allow calls to vTaskSuspendAll() to nest. */ ++uxSchedulerSuspended; - 800cb60: 4b04 ldr r3, [pc, #16] @ (800cb74 ) - 800cb62: 681b ldr r3, [r3, #0] - 800cb64: 3301 adds r3, #1 - 800cb66: 4a03 ldr r2, [pc, #12] @ (800cb74 ) - 800cb68: 6013 str r3, [r2, #0] + 800d0d4: 4b04 ldr r3, [pc, #16] @ (800d0e8 ) + 800d0d6: 681b ldr r3, [r3, #0] + 800d0d8: 3301 adds r3, #1 + 800d0da: 4a03 ldr r2, [pc, #12] @ (800d0e8 ) + 800d0dc: 6013 str r3, [r2, #0] /* Enforces ordering for ports and optimised compilers that may otherwise place the above increment elsewhere. */ portMEMORY_BARRIER(); } - 800cb6a: bf00 nop - 800cb6c: 46bd mov sp, r7 - 800cb6e: f85d 7b04 ldr.w r7, [sp], #4 - 800cb72: 4770 bx lr - 800cb74: 200025e4 .word 0x200025e4 + 800d0de: bf00 nop + 800d0e0: 46bd mov sp, r7 + 800d0e2: f85d 7b04 ldr.w r7, [sp], #4 + 800d0e6: 4770 bx lr + 800d0e8: 2000262c .word 0x2000262c -0800cb78 : +0800d0ec : #endif /* configUSE_TICKLESS_IDLE */ /*----------------------------------------------------------*/ BaseType_t xTaskResumeAll( void ) { - 800cb78: b580 push {r7, lr} - 800cb7a: b084 sub sp, #16 - 800cb7c: af00 add r7, sp, #0 + 800d0ec: b580 push {r7, lr} + 800d0ee: b084 sub sp, #16 + 800d0f0: af00 add r7, sp, #0 TCB_t *pxTCB = NULL; - 800cb7e: 2300 movs r3, #0 - 800cb80: 60fb str r3, [r7, #12] + 800d0f2: 2300 movs r3, #0 + 800d0f4: 60fb str r3, [r7, #12] BaseType_t xAlreadyYielded = pdFALSE; - 800cb82: 2300 movs r3, #0 - 800cb84: 60bb str r3, [r7, #8] + 800d0f6: 2300 movs r3, #0 + 800d0f8: 60bb str r3, [r7, #8] /* If uxSchedulerSuspended is zero then this function does not match a previous call to vTaskSuspendAll(). */ configASSERT( uxSchedulerSuspended ); - 800cb86: 4b42 ldr r3, [pc, #264] @ (800cc90 ) - 800cb88: 681b ldr r3, [r3, #0] - 800cb8a: 2b00 cmp r3, #0 - 800cb8c: d10b bne.n 800cba6 + 800d0fa: 4b42 ldr r3, [pc, #264] @ (800d204 ) + 800d0fc: 681b ldr r3, [r3, #0] + 800d0fe: 2b00 cmp r3, #0 + 800d100: d10b bne.n 800d11a __asm volatile - 800cb8e: f04f 0350 mov.w r3, #80 @ 0x50 - 800cb92: f383 8811 msr BASEPRI, r3 - 800cb96: f3bf 8f6f isb sy - 800cb9a: f3bf 8f4f dsb sy - 800cb9e: 603b str r3, [r7, #0] + 800d102: f04f 0350 mov.w r3, #80 @ 0x50 + 800d106: f383 8811 msr BASEPRI, r3 + 800d10a: f3bf 8f6f isb sy + 800d10e: f3bf 8f4f dsb sy + 800d112: 603b str r3, [r7, #0] } - 800cba0: bf00 nop - 800cba2: bf00 nop - 800cba4: e7fd b.n 800cba2 + 800d114: bf00 nop + 800d116: bf00 nop + 800d118: e7fd b.n 800d116 /* It is possible that an ISR caused a task to be removed from an event list while the scheduler was suspended. If this was the case then the removed task will have been added to the xPendingReadyList. Once the scheduler has been resumed it is safe to move all the pending ready tasks from this list into their appropriate ready list. */ taskENTER_CRITICAL(); - 800cba6: f000 fc17 bl 800d3d8 + 800d11a: f000 fc15 bl 800d948 { --uxSchedulerSuspended; - 800cbaa: 4b39 ldr r3, [pc, #228] @ (800cc90 ) - 800cbac: 681b ldr r3, [r3, #0] - 800cbae: 3b01 subs r3, #1 - 800cbb0: 4a37 ldr r2, [pc, #220] @ (800cc90 ) - 800cbb2: 6013 str r3, [r2, #0] + 800d11e: 4b39 ldr r3, [pc, #228] @ (800d204 ) + 800d120: 681b ldr r3, [r3, #0] + 800d122: 3b01 subs r3, #1 + 800d124: 4a37 ldr r2, [pc, #220] @ (800d204 ) + 800d126: 6013 str r3, [r2, #0] if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) - 800cbb4: 4b36 ldr r3, [pc, #216] @ (800cc90 ) - 800cbb6: 681b ldr r3, [r3, #0] - 800cbb8: 2b00 cmp r3, #0 - 800cbba: d161 bne.n 800cc80 + 800d128: 4b36 ldr r3, [pc, #216] @ (800d204 ) + 800d12a: 681b ldr r3, [r3, #0] + 800d12c: 2b00 cmp r3, #0 + 800d12e: d161 bne.n 800d1f4 { if( uxCurrentNumberOfTasks > ( UBaseType_t ) 0U ) - 800cbbc: 4b35 ldr r3, [pc, #212] @ (800cc94 ) - 800cbbe: 681b ldr r3, [r3, #0] - 800cbc0: 2b00 cmp r3, #0 - 800cbc2: d05d beq.n 800cc80 + 800d130: 4b35 ldr r3, [pc, #212] @ (800d208 ) + 800d132: 681b ldr r3, [r3, #0] + 800d134: 2b00 cmp r3, #0 + 800d136: d05d beq.n 800d1f4 { /* Move any readied tasks from the pending list into the appropriate ready list. */ while( listLIST_IS_EMPTY( &xPendingReadyList ) == pdFALSE ) - 800cbc4: e02e b.n 800cc24 + 800d138: e02e b.n 800d198 { pxTCB = listGET_OWNER_OF_HEAD_ENTRY( ( &xPendingReadyList ) ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ - 800cbc6: 4b34 ldr r3, [pc, #208] @ (800cc98 ) - 800cbc8: 68db ldr r3, [r3, #12] - 800cbca: 68db ldr r3, [r3, #12] - 800cbcc: 60fb str r3, [r7, #12] + 800d13a: 4b34 ldr r3, [pc, #208] @ (800d20c ) + 800d13c: 68db ldr r3, [r3, #12] + 800d13e: 68db ldr r3, [r3, #12] + 800d140: 60fb str r3, [r7, #12] ( void ) uxListRemove( &( pxTCB->xEventListItem ) ); - 800cbce: 68fb ldr r3, [r7, #12] - 800cbd0: 3318 adds r3, #24 - 800cbd2: 4618 mov r0, r3 - 800cbd4: f7ff fd49 bl 800c66a + 800d142: 68fb ldr r3, [r7, #12] + 800d144: 3318 adds r3, #24 + 800d146: 4618 mov r0, r3 + 800d148: f7ff fd49 bl 800cbde ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); - 800cbd8: 68fb ldr r3, [r7, #12] - 800cbda: 3304 adds r3, #4 - 800cbdc: 4618 mov r0, r3 - 800cbde: f7ff fd44 bl 800c66a + 800d14c: 68fb ldr r3, [r7, #12] + 800d14e: 3304 adds r3, #4 + 800d150: 4618 mov r0, r3 + 800d152: f7ff fd44 bl 800cbde prvAddTaskToReadyList( pxTCB ); - 800cbe2: 68fb ldr r3, [r7, #12] - 800cbe4: 6adb ldr r3, [r3, #44] @ 0x2c - 800cbe6: 2201 movs r2, #1 - 800cbe8: 409a lsls r2, r3 - 800cbea: 4b2c ldr r3, [pc, #176] @ (800cc9c ) - 800cbec: 681b ldr r3, [r3, #0] - 800cbee: 4313 orrs r3, r2 - 800cbf0: 4a2a ldr r2, [pc, #168] @ (800cc9c ) - 800cbf2: 6013 str r3, [r2, #0] - 800cbf4: 68fb ldr r3, [r7, #12] - 800cbf6: 6ada ldr r2, [r3, #44] @ 0x2c - 800cbf8: 4613 mov r3, r2 - 800cbfa: 009b lsls r3, r3, #2 - 800cbfc: 4413 add r3, r2 - 800cbfe: 009b lsls r3, r3, #2 - 800cc00: 4a27 ldr r2, [pc, #156] @ (800cca0 ) - 800cc02: 441a add r2, r3 - 800cc04: 68fb ldr r3, [r7, #12] - 800cc06: 3304 adds r3, #4 - 800cc08: 4619 mov r1, r3 - 800cc0a: 4610 mov r0, r2 - 800cc0c: f7ff fcd0 bl 800c5b0 + 800d156: 68fb ldr r3, [r7, #12] + 800d158: 6adb ldr r3, [r3, #44] @ 0x2c + 800d15a: 2201 movs r2, #1 + 800d15c: 409a lsls r2, r3 + 800d15e: 4b2c ldr r3, [pc, #176] @ (800d210 ) + 800d160: 681b ldr r3, [r3, #0] + 800d162: 4313 orrs r3, r2 + 800d164: 4a2a ldr r2, [pc, #168] @ (800d210 ) + 800d166: 6013 str r3, [r2, #0] + 800d168: 68fb ldr r3, [r7, #12] + 800d16a: 6ada ldr r2, [r3, #44] @ 0x2c + 800d16c: 4613 mov r3, r2 + 800d16e: 009b lsls r3, r3, #2 + 800d170: 4413 add r3, r2 + 800d172: 009b lsls r3, r3, #2 + 800d174: 4a27 ldr r2, [pc, #156] @ (800d214 ) + 800d176: 441a add r2, r3 + 800d178: 68fb ldr r3, [r7, #12] + 800d17a: 3304 adds r3, #4 + 800d17c: 4619 mov r1, r3 + 800d17e: 4610 mov r0, r2 + 800d180: f7ff fcd0 bl 800cb24 /* If the moved task has a priority higher than the current task then a yield must be performed. */ if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority ) - 800cc10: 68fb ldr r3, [r7, #12] - 800cc12: 6ada ldr r2, [r3, #44] @ 0x2c - 800cc14: 4b23 ldr r3, [pc, #140] @ (800cca4 ) - 800cc16: 681b ldr r3, [r3, #0] - 800cc18: 6adb ldr r3, [r3, #44] @ 0x2c - 800cc1a: 429a cmp r2, r3 - 800cc1c: d302 bcc.n 800cc24 + 800d184: 68fb ldr r3, [r7, #12] + 800d186: 6ada ldr r2, [r3, #44] @ 0x2c + 800d188: 4b23 ldr r3, [pc, #140] @ (800d218 ) + 800d18a: 681b ldr r3, [r3, #0] + 800d18c: 6adb ldr r3, [r3, #44] @ 0x2c + 800d18e: 429a cmp r2, r3 + 800d190: d302 bcc.n 800d198 { xYieldPending = pdTRUE; - 800cc1e: 4b22 ldr r3, [pc, #136] @ (800cca8 ) - 800cc20: 2201 movs r2, #1 - 800cc22: 601a str r2, [r3, #0] + 800d192: 4b22 ldr r3, [pc, #136] @ (800d21c ) + 800d194: 2201 movs r2, #1 + 800d196: 601a str r2, [r3, #0] while( listLIST_IS_EMPTY( &xPendingReadyList ) == pdFALSE ) - 800cc24: 4b1c ldr r3, [pc, #112] @ (800cc98 ) - 800cc26: 681b ldr r3, [r3, #0] - 800cc28: 2b00 cmp r3, #0 - 800cc2a: d1cc bne.n 800cbc6 + 800d198: 4b1c ldr r3, [pc, #112] @ (800d20c ) + 800d19a: 681b ldr r3, [r3, #0] + 800d19c: 2b00 cmp r3, #0 + 800d19e: d1cc bne.n 800d13a { mtCOVERAGE_TEST_MARKER(); } } if( pxTCB != NULL ) - 800cc2c: 68fb ldr r3, [r7, #12] - 800cc2e: 2b00 cmp r3, #0 - 800cc30: d001 beq.n 800cc36 + 800d1a0: 68fb ldr r3, [r7, #12] + 800d1a2: 2b00 cmp r3, #0 + 800d1a4: d001 beq.n 800d1aa which may have prevented the next unblock time from being re-calculated, in which case re-calculate it now. Mainly important for low power tickless implementations, where this can prevent an unnecessary exit from low power state. */ prvResetNextTaskUnblockTime(); - 800cc32: f000 fa19 bl 800d068 + 800d1a6: f000 fa19 bl 800d5dc /* If any ticks occurred while the scheduler was suspended then they should be processed now. This ensures the tick count does not slip, and that any delayed tasks are resumed at the correct time. */ { TickType_t xPendedCounts = xPendedTicks; /* Non-volatile copy. */ - 800cc36: 4b1d ldr r3, [pc, #116] @ (800ccac ) - 800cc38: 681b ldr r3, [r3, #0] - 800cc3a: 607b str r3, [r7, #4] + 800d1aa: 4b1d ldr r3, [pc, #116] @ (800d220 ) + 800d1ac: 681b ldr r3, [r3, #0] + 800d1ae: 607b str r3, [r7, #4] if( xPendedCounts > ( TickType_t ) 0U ) - 800cc3c: 687b ldr r3, [r7, #4] - 800cc3e: 2b00 cmp r3, #0 - 800cc40: d010 beq.n 800cc64 + 800d1b0: 687b ldr r3, [r7, #4] + 800d1b2: 2b00 cmp r3, #0 + 800d1b4: d010 beq.n 800d1d8 { do { if( xTaskIncrementTick() != pdFALSE ) - 800cc42: f000 f837 bl 800ccb4 - 800cc46: 4603 mov r3, r0 - 800cc48: 2b00 cmp r3, #0 - 800cc4a: d002 beq.n 800cc52 + 800d1b6: f000 f837 bl 800d228 + 800d1ba: 4603 mov r3, r0 + 800d1bc: 2b00 cmp r3, #0 + 800d1be: d002 beq.n 800d1c6 { xYieldPending = pdTRUE; - 800cc4c: 4b16 ldr r3, [pc, #88] @ (800cca8 ) - 800cc4e: 2201 movs r2, #1 - 800cc50: 601a str r2, [r3, #0] + 800d1c0: 4b16 ldr r3, [pc, #88] @ (800d21c ) + 800d1c2: 2201 movs r2, #1 + 800d1c4: 601a str r2, [r3, #0] } else { mtCOVERAGE_TEST_MARKER(); } --xPendedCounts; - 800cc52: 687b ldr r3, [r7, #4] - 800cc54: 3b01 subs r3, #1 - 800cc56: 607b str r3, [r7, #4] + 800d1c6: 687b ldr r3, [r7, #4] + 800d1c8: 3b01 subs r3, #1 + 800d1ca: 607b str r3, [r7, #4] } while( xPendedCounts > ( TickType_t ) 0U ); - 800cc58: 687b ldr r3, [r7, #4] - 800cc5a: 2b00 cmp r3, #0 - 800cc5c: d1f1 bne.n 800cc42 + 800d1cc: 687b ldr r3, [r7, #4] + 800d1ce: 2b00 cmp r3, #0 + 800d1d0: d1f1 bne.n 800d1b6 xPendedTicks = 0; - 800cc5e: 4b13 ldr r3, [pc, #76] @ (800ccac ) - 800cc60: 2200 movs r2, #0 - 800cc62: 601a str r2, [r3, #0] + 800d1d2: 4b13 ldr r3, [pc, #76] @ (800d220 ) + 800d1d4: 2200 movs r2, #0 + 800d1d6: 601a str r2, [r3, #0] { mtCOVERAGE_TEST_MARKER(); } } if( xYieldPending != pdFALSE ) - 800cc64: 4b10 ldr r3, [pc, #64] @ (800cca8 ) - 800cc66: 681b ldr r3, [r3, #0] - 800cc68: 2b00 cmp r3, #0 - 800cc6a: d009 beq.n 800cc80 + 800d1d8: 4b10 ldr r3, [pc, #64] @ (800d21c ) + 800d1da: 681b ldr r3, [r3, #0] + 800d1dc: 2b00 cmp r3, #0 + 800d1de: d009 beq.n 800d1f4 { #if( configUSE_PREEMPTION != 0 ) { xAlreadyYielded = pdTRUE; - 800cc6c: 2301 movs r3, #1 - 800cc6e: 60bb str r3, [r7, #8] + 800d1e0: 2301 movs r3, #1 + 800d1e2: 60bb str r3, [r7, #8] } #endif taskYIELD_IF_USING_PREEMPTION(); - 800cc70: 4b0f ldr r3, [pc, #60] @ (800ccb0 ) - 800cc72: f04f 5280 mov.w r2, #268435456 @ 0x10000000 - 800cc76: 601a str r2, [r3, #0] - 800cc78: f3bf 8f4f dsb sy - 800cc7c: f3bf 8f6f isb sy + 800d1e4: 4b0f ldr r3, [pc, #60] @ (800d224 ) + 800d1e6: f04f 5280 mov.w r2, #268435456 @ 0x10000000 + 800d1ea: 601a str r2, [r3, #0] + 800d1ec: f3bf 8f4f dsb sy + 800d1f0: f3bf 8f6f isb sy else { mtCOVERAGE_TEST_MARKER(); } } taskEXIT_CRITICAL(); - 800cc80: f000 fbdc bl 800d43c + 800d1f4: f000 fbda bl 800d9ac return xAlreadyYielded; - 800cc84: 68bb ldr r3, [r7, #8] + 800d1f8: 68bb ldr r3, [r7, #8] } - 800cc86: 4618 mov r0, r3 - 800cc88: 3710 adds r7, #16 - 800cc8a: 46bd mov sp, r7 - 800cc8c: bd80 pop {r7, pc} - 800cc8e: bf00 nop - 800cc90: 200025e4 .word 0x200025e4 - 800cc94: 200025bc .word 0x200025bc - 800cc98: 2000257c .word 0x2000257c - 800cc9c: 200025c4 .word 0x200025c4 - 800cca0: 200024c0 .word 0x200024c0 - 800cca4: 200024bc .word 0x200024bc - 800cca8: 200025d0 .word 0x200025d0 - 800ccac: 200025cc .word 0x200025cc - 800ccb0: e000ed04 .word 0xe000ed04 + 800d1fa: 4618 mov r0, r3 + 800d1fc: 3710 adds r7, #16 + 800d1fe: 46bd mov sp, r7 + 800d200: bd80 pop {r7, pc} + 800d202: bf00 nop + 800d204: 2000262c .word 0x2000262c + 800d208: 20002604 .word 0x20002604 + 800d20c: 200025c4 .word 0x200025c4 + 800d210: 2000260c .word 0x2000260c + 800d214: 20002508 .word 0x20002508 + 800d218: 20002504 .word 0x20002504 + 800d21c: 20002618 .word 0x20002618 + 800d220: 20002614 .word 0x20002614 + 800d224: e000ed04 .word 0xe000ed04 -0800ccb4 : +0800d228 : #endif /* INCLUDE_xTaskAbortDelay */ /*----------------------------------------------------------*/ BaseType_t xTaskIncrementTick( void ) { - 800ccb4: b580 push {r7, lr} - 800ccb6: b086 sub sp, #24 - 800ccb8: af00 add r7, sp, #0 + 800d228: b580 push {r7, lr} + 800d22a: b086 sub sp, #24 + 800d22c: af00 add r7, sp, #0 TCB_t * pxTCB; TickType_t xItemValue; BaseType_t xSwitchRequired = pdFALSE; - 800ccba: 2300 movs r3, #0 - 800ccbc: 617b str r3, [r7, #20] + 800d22e: 2300 movs r3, #0 + 800d230: 617b str r3, [r7, #20] /* Called by the portable layer each time a tick interrupt occurs. Increments the tick then checks to see if the new tick value will cause any tasks to be unblocked. */ traceTASK_INCREMENT_TICK( xTickCount ); if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) - 800ccbe: 4b4f ldr r3, [pc, #316] @ (800cdfc ) - 800ccc0: 681b ldr r3, [r3, #0] - 800ccc2: 2b00 cmp r3, #0 - 800ccc4: f040 808f bne.w 800cde6 + 800d232: 4b4f ldr r3, [pc, #316] @ (800d370 ) + 800d234: 681b ldr r3, [r3, #0] + 800d236: 2b00 cmp r3, #0 + 800d238: f040 808f bne.w 800d35a { /* Minor optimisation. The tick count cannot change in this block. */ const TickType_t xConstTickCount = xTickCount + ( TickType_t ) 1; - 800ccc8: 4b4d ldr r3, [pc, #308] @ (800ce00 ) - 800ccca: 681b ldr r3, [r3, #0] - 800cccc: 3301 adds r3, #1 - 800ccce: 613b str r3, [r7, #16] + 800d23c: 4b4d ldr r3, [pc, #308] @ (800d374 ) + 800d23e: 681b ldr r3, [r3, #0] + 800d240: 3301 adds r3, #1 + 800d242: 613b str r3, [r7, #16] /* Increment the RTOS tick, switching the delayed and overflowed delayed lists if it wraps to 0. */ xTickCount = xConstTickCount; - 800ccd0: 4a4b ldr r2, [pc, #300] @ (800ce00 ) - 800ccd2: 693b ldr r3, [r7, #16] - 800ccd4: 6013 str r3, [r2, #0] + 800d244: 4a4b ldr r2, [pc, #300] @ (800d374 ) + 800d246: 693b ldr r3, [r7, #16] + 800d248: 6013 str r3, [r2, #0] if( xConstTickCount == ( TickType_t ) 0U ) /*lint !e774 'if' does not always evaluate to false as it is looking for an overflow. */ - 800ccd6: 693b ldr r3, [r7, #16] - 800ccd8: 2b00 cmp r3, #0 - 800ccda: d121 bne.n 800cd20 + 800d24a: 693b ldr r3, [r7, #16] + 800d24c: 2b00 cmp r3, #0 + 800d24e: d121 bne.n 800d294 { taskSWITCH_DELAYED_LISTS(); - 800ccdc: 4b49 ldr r3, [pc, #292] @ (800ce04 ) - 800ccde: 681b ldr r3, [r3, #0] - 800cce0: 681b ldr r3, [r3, #0] - 800cce2: 2b00 cmp r3, #0 - 800cce4: d00b beq.n 800ccfe + 800d250: 4b49 ldr r3, [pc, #292] @ (800d378 ) + 800d252: 681b ldr r3, [r3, #0] + 800d254: 681b ldr r3, [r3, #0] + 800d256: 2b00 cmp r3, #0 + 800d258: d00b beq.n 800d272 __asm volatile - 800cce6: f04f 0350 mov.w r3, #80 @ 0x50 - 800ccea: f383 8811 msr BASEPRI, r3 - 800ccee: f3bf 8f6f isb sy - 800ccf2: f3bf 8f4f dsb sy - 800ccf6: 603b str r3, [r7, #0] + 800d25a: f04f 0350 mov.w r3, #80 @ 0x50 + 800d25e: f383 8811 msr BASEPRI, r3 + 800d262: f3bf 8f6f isb sy + 800d266: f3bf 8f4f dsb sy + 800d26a: 603b str r3, [r7, #0] } - 800ccf8: bf00 nop - 800ccfa: bf00 nop - 800ccfc: e7fd b.n 800ccfa - 800ccfe: 4b41 ldr r3, [pc, #260] @ (800ce04 ) - 800cd00: 681b ldr r3, [r3, #0] - 800cd02: 60fb str r3, [r7, #12] - 800cd04: 4b40 ldr r3, [pc, #256] @ (800ce08 ) - 800cd06: 681b ldr r3, [r3, #0] - 800cd08: 4a3e ldr r2, [pc, #248] @ (800ce04 ) - 800cd0a: 6013 str r3, [r2, #0] - 800cd0c: 4a3e ldr r2, [pc, #248] @ (800ce08 ) - 800cd0e: 68fb ldr r3, [r7, #12] - 800cd10: 6013 str r3, [r2, #0] - 800cd12: 4b3e ldr r3, [pc, #248] @ (800ce0c ) - 800cd14: 681b ldr r3, [r3, #0] - 800cd16: 3301 adds r3, #1 - 800cd18: 4a3c ldr r2, [pc, #240] @ (800ce0c ) - 800cd1a: 6013 str r3, [r2, #0] - 800cd1c: f000 f9a4 bl 800d068 + 800d26c: bf00 nop + 800d26e: bf00 nop + 800d270: e7fd b.n 800d26e + 800d272: 4b41 ldr r3, [pc, #260] @ (800d378 ) + 800d274: 681b ldr r3, [r3, #0] + 800d276: 60fb str r3, [r7, #12] + 800d278: 4b40 ldr r3, [pc, #256] @ (800d37c ) + 800d27a: 681b ldr r3, [r3, #0] + 800d27c: 4a3e ldr r2, [pc, #248] @ (800d378 ) + 800d27e: 6013 str r3, [r2, #0] + 800d280: 4a3e ldr r2, [pc, #248] @ (800d37c ) + 800d282: 68fb ldr r3, [r7, #12] + 800d284: 6013 str r3, [r2, #0] + 800d286: 4b3e ldr r3, [pc, #248] @ (800d380 ) + 800d288: 681b ldr r3, [r3, #0] + 800d28a: 3301 adds r3, #1 + 800d28c: 4a3c ldr r2, [pc, #240] @ (800d380 ) + 800d28e: 6013 str r3, [r2, #0] + 800d290: f000 f9a4 bl 800d5dc /* See if this tick has made a timeout expire. Tasks are stored in the queue in the order of their wake time - meaning once one task has been found whose block time has not expired there is no need to look any further down the list. */ if( xConstTickCount >= xNextTaskUnblockTime ) - 800cd20: 4b3b ldr r3, [pc, #236] @ (800ce10 ) - 800cd22: 681b ldr r3, [r3, #0] - 800cd24: 693a ldr r2, [r7, #16] - 800cd26: 429a cmp r2, r3 - 800cd28: d348 bcc.n 800cdbc + 800d294: 4b3b ldr r3, [pc, #236] @ (800d384 ) + 800d296: 681b ldr r3, [r3, #0] + 800d298: 693a ldr r2, [r7, #16] + 800d29a: 429a cmp r2, r3 + 800d29c: d348 bcc.n 800d330 { for( ;; ) { if( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE ) - 800cd2a: 4b36 ldr r3, [pc, #216] @ (800ce04 ) - 800cd2c: 681b ldr r3, [r3, #0] - 800cd2e: 681b ldr r3, [r3, #0] - 800cd30: 2b00 cmp r3, #0 - 800cd32: d104 bne.n 800cd3e + 800d29e: 4b36 ldr r3, [pc, #216] @ (800d378 ) + 800d2a0: 681b ldr r3, [r3, #0] + 800d2a2: 681b ldr r3, [r3, #0] + 800d2a4: 2b00 cmp r3, #0 + 800d2a6: d104 bne.n 800d2b2 /* The delayed list is empty. Set xNextTaskUnblockTime to the maximum possible value so it is extremely unlikely that the if( xTickCount >= xNextTaskUnblockTime ) test will pass next time through. */ xNextTaskUnblockTime = portMAX_DELAY; /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ - 800cd34: 4b36 ldr r3, [pc, #216] @ (800ce10 ) - 800cd36: f04f 32ff mov.w r2, #4294967295 - 800cd3a: 601a str r2, [r3, #0] + 800d2a8: 4b36 ldr r3, [pc, #216] @ (800d384 ) + 800d2aa: f04f 32ff mov.w r2, #4294967295 + 800d2ae: 601a str r2, [r3, #0] break; - 800cd3c: e03e b.n 800cdbc + 800d2b0: e03e b.n 800d330 { /* The delayed list is not empty, get the value of the item at the head of the delayed list. This is the time at which the task at the head of the delayed list must be removed from the Blocked state. */ pxTCB = listGET_OWNER_OF_HEAD_ENTRY( pxDelayedTaskList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ - 800cd3e: 4b31 ldr r3, [pc, #196] @ (800ce04 ) - 800cd40: 681b ldr r3, [r3, #0] - 800cd42: 68db ldr r3, [r3, #12] - 800cd44: 68db ldr r3, [r3, #12] - 800cd46: 60bb str r3, [r7, #8] + 800d2b2: 4b31 ldr r3, [pc, #196] @ (800d378 ) + 800d2b4: 681b ldr r3, [r3, #0] + 800d2b6: 68db ldr r3, [r3, #12] + 800d2b8: 68db ldr r3, [r3, #12] + 800d2ba: 60bb str r3, [r7, #8] xItemValue = listGET_LIST_ITEM_VALUE( &( pxTCB->xStateListItem ) ); - 800cd48: 68bb ldr r3, [r7, #8] - 800cd4a: 685b ldr r3, [r3, #4] - 800cd4c: 607b str r3, [r7, #4] + 800d2bc: 68bb ldr r3, [r7, #8] + 800d2be: 685b ldr r3, [r3, #4] + 800d2c0: 607b str r3, [r7, #4] if( xConstTickCount < xItemValue ) - 800cd4e: 693a ldr r2, [r7, #16] - 800cd50: 687b ldr r3, [r7, #4] - 800cd52: 429a cmp r2, r3 - 800cd54: d203 bcs.n 800cd5e + 800d2c2: 693a ldr r2, [r7, #16] + 800d2c4: 687b ldr r3, [r7, #4] + 800d2c6: 429a cmp r2, r3 + 800d2c8: d203 bcs.n 800d2d2 /* It is not time to unblock this item yet, but the item value is the time at which the task at the head of the blocked list must be removed from the Blocked state - so record the item value in xNextTaskUnblockTime. */ xNextTaskUnblockTime = xItemValue; - 800cd56: 4a2e ldr r2, [pc, #184] @ (800ce10 ) - 800cd58: 687b ldr r3, [r7, #4] - 800cd5a: 6013 str r3, [r2, #0] + 800d2ca: 4a2e ldr r2, [pc, #184] @ (800d384 ) + 800d2cc: 687b ldr r3, [r7, #4] + 800d2ce: 6013 str r3, [r2, #0] break; /*lint !e9011 Code structure here is deedmed easier to understand with multiple breaks. */ - 800cd5c: e02e b.n 800cdbc + 800d2d0: e02e b.n 800d330 { mtCOVERAGE_TEST_MARKER(); } /* It is time to remove the item from the Blocked state. */ ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); - 800cd5e: 68bb ldr r3, [r7, #8] - 800cd60: 3304 adds r3, #4 - 800cd62: 4618 mov r0, r3 - 800cd64: f7ff fc81 bl 800c66a + 800d2d2: 68bb ldr r3, [r7, #8] + 800d2d4: 3304 adds r3, #4 + 800d2d6: 4618 mov r0, r3 + 800d2d8: f7ff fc81 bl 800cbde /* Is the task waiting on an event also? If so remove it from the event list. */ if( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) != NULL ) - 800cd68: 68bb ldr r3, [r7, #8] - 800cd6a: 6a9b ldr r3, [r3, #40] @ 0x28 - 800cd6c: 2b00 cmp r3, #0 - 800cd6e: d004 beq.n 800cd7a + 800d2dc: 68bb ldr r3, [r7, #8] + 800d2de: 6a9b ldr r3, [r3, #40] @ 0x28 + 800d2e0: 2b00 cmp r3, #0 + 800d2e2: d004 beq.n 800d2ee { ( void ) uxListRemove( &( pxTCB->xEventListItem ) ); - 800cd70: 68bb ldr r3, [r7, #8] - 800cd72: 3318 adds r3, #24 - 800cd74: 4618 mov r0, r3 - 800cd76: f7ff fc78 bl 800c66a + 800d2e4: 68bb ldr r3, [r7, #8] + 800d2e6: 3318 adds r3, #24 + 800d2e8: 4618 mov r0, r3 + 800d2ea: f7ff fc78 bl 800cbde mtCOVERAGE_TEST_MARKER(); } /* Place the unblocked task into the appropriate ready list. */ prvAddTaskToReadyList( pxTCB ); - 800cd7a: 68bb ldr r3, [r7, #8] - 800cd7c: 6adb ldr r3, [r3, #44] @ 0x2c - 800cd7e: 2201 movs r2, #1 - 800cd80: 409a lsls r2, r3 - 800cd82: 4b24 ldr r3, [pc, #144] @ (800ce14 ) - 800cd84: 681b ldr r3, [r3, #0] - 800cd86: 4313 orrs r3, r2 - 800cd88: 4a22 ldr r2, [pc, #136] @ (800ce14 ) - 800cd8a: 6013 str r3, [r2, #0] - 800cd8c: 68bb ldr r3, [r7, #8] - 800cd8e: 6ada ldr r2, [r3, #44] @ 0x2c - 800cd90: 4613 mov r3, r2 - 800cd92: 009b lsls r3, r3, #2 - 800cd94: 4413 add r3, r2 - 800cd96: 009b lsls r3, r3, #2 - 800cd98: 4a1f ldr r2, [pc, #124] @ (800ce18 ) - 800cd9a: 441a add r2, r3 - 800cd9c: 68bb ldr r3, [r7, #8] - 800cd9e: 3304 adds r3, #4 - 800cda0: 4619 mov r1, r3 - 800cda2: 4610 mov r0, r2 - 800cda4: f7ff fc04 bl 800c5b0 + 800d2ee: 68bb ldr r3, [r7, #8] + 800d2f0: 6adb ldr r3, [r3, #44] @ 0x2c + 800d2f2: 2201 movs r2, #1 + 800d2f4: 409a lsls r2, r3 + 800d2f6: 4b24 ldr r3, [pc, #144] @ (800d388 ) + 800d2f8: 681b ldr r3, [r3, #0] + 800d2fa: 4313 orrs r3, r2 + 800d2fc: 4a22 ldr r2, [pc, #136] @ (800d388 ) + 800d2fe: 6013 str r3, [r2, #0] + 800d300: 68bb ldr r3, [r7, #8] + 800d302: 6ada ldr r2, [r3, #44] @ 0x2c + 800d304: 4613 mov r3, r2 + 800d306: 009b lsls r3, r3, #2 + 800d308: 4413 add r3, r2 + 800d30a: 009b lsls r3, r3, #2 + 800d30c: 4a1f ldr r2, [pc, #124] @ (800d38c ) + 800d30e: 441a add r2, r3 + 800d310: 68bb ldr r3, [r7, #8] + 800d312: 3304 adds r3, #4 + 800d314: 4619 mov r1, r3 + 800d316: 4610 mov r0, r2 + 800d318: f7ff fc04 bl 800cb24 { /* Preemption is on, but a context switch should only be performed if the unblocked task has a priority that is equal to or higher than the currently executing task. */ if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority ) - 800cda8: 68bb ldr r3, [r7, #8] - 800cdaa: 6ada ldr r2, [r3, #44] @ 0x2c - 800cdac: 4b1b ldr r3, [pc, #108] @ (800ce1c ) - 800cdae: 681b ldr r3, [r3, #0] - 800cdb0: 6adb ldr r3, [r3, #44] @ 0x2c - 800cdb2: 429a cmp r2, r3 - 800cdb4: d3b9 bcc.n 800cd2a + 800d31c: 68bb ldr r3, [r7, #8] + 800d31e: 6ada ldr r2, [r3, #44] @ 0x2c + 800d320: 4b1b ldr r3, [pc, #108] @ (800d390 ) + 800d322: 681b ldr r3, [r3, #0] + 800d324: 6adb ldr r3, [r3, #44] @ 0x2c + 800d326: 429a cmp r2, r3 + 800d328: d3b9 bcc.n 800d29e { xSwitchRequired = pdTRUE; - 800cdb6: 2301 movs r3, #1 - 800cdb8: 617b str r3, [r7, #20] + 800d32a: 2301 movs r3, #1 + 800d32c: 617b str r3, [r7, #20] if( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE ) - 800cdba: e7b6 b.n 800cd2a + 800d32e: e7b6 b.n 800d29e /* Tasks of equal priority to the currently running task will share processing time (time slice) if preemption is on, and the application writer has not explicitly turned time slicing off. */ #if ( ( configUSE_PREEMPTION == 1 ) && ( configUSE_TIME_SLICING == 1 ) ) { if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ pxCurrentTCB->uxPriority ] ) ) > ( UBaseType_t ) 1 ) - 800cdbc: 4b17 ldr r3, [pc, #92] @ (800ce1c ) - 800cdbe: 681b ldr r3, [r3, #0] - 800cdc0: 6ada ldr r2, [r3, #44] @ 0x2c - 800cdc2: 4915 ldr r1, [pc, #84] @ (800ce18 ) - 800cdc4: 4613 mov r3, r2 - 800cdc6: 009b lsls r3, r3, #2 - 800cdc8: 4413 add r3, r2 - 800cdca: 009b lsls r3, r3, #2 - 800cdcc: 440b add r3, r1 - 800cdce: 681b ldr r3, [r3, #0] - 800cdd0: 2b01 cmp r3, #1 - 800cdd2: d901 bls.n 800cdd8 + 800d330: 4b17 ldr r3, [pc, #92] @ (800d390 ) + 800d332: 681b ldr r3, [r3, #0] + 800d334: 6ada ldr r2, [r3, #44] @ 0x2c + 800d336: 4915 ldr r1, [pc, #84] @ (800d38c ) + 800d338: 4613 mov r3, r2 + 800d33a: 009b lsls r3, r3, #2 + 800d33c: 4413 add r3, r2 + 800d33e: 009b lsls r3, r3, #2 + 800d340: 440b add r3, r1 + 800d342: 681b ldr r3, [r3, #0] + 800d344: 2b01 cmp r3, #1 + 800d346: d901 bls.n 800d34c { xSwitchRequired = pdTRUE; - 800cdd4: 2301 movs r3, #1 - 800cdd6: 617b str r3, [r7, #20] + 800d348: 2301 movs r3, #1 + 800d34a: 617b str r3, [r7, #20] } #endif /* configUSE_TICK_HOOK */ #if ( configUSE_PREEMPTION == 1 ) { if( xYieldPending != pdFALSE ) - 800cdd8: 4b11 ldr r3, [pc, #68] @ (800ce20 ) - 800cdda: 681b ldr r3, [r3, #0] - 800cddc: 2b00 cmp r3, #0 - 800cdde: d007 beq.n 800cdf0 + 800d34c: 4b11 ldr r3, [pc, #68] @ (800d394 ) + 800d34e: 681b ldr r3, [r3, #0] + 800d350: 2b00 cmp r3, #0 + 800d352: d007 beq.n 800d364 { xSwitchRequired = pdTRUE; - 800cde0: 2301 movs r3, #1 - 800cde2: 617b str r3, [r7, #20] - 800cde4: e004 b.n 800cdf0 + 800d354: 2301 movs r3, #1 + 800d356: 617b str r3, [r7, #20] + 800d358: e004 b.n 800d364 } #endif /* configUSE_PREEMPTION */ } else { ++xPendedTicks; - 800cde6: 4b0f ldr r3, [pc, #60] @ (800ce24 ) - 800cde8: 681b ldr r3, [r3, #0] - 800cdea: 3301 adds r3, #1 - 800cdec: 4a0d ldr r2, [pc, #52] @ (800ce24 ) - 800cdee: 6013 str r3, [r2, #0] + 800d35a: 4b0f ldr r3, [pc, #60] @ (800d398 ) + 800d35c: 681b ldr r3, [r3, #0] + 800d35e: 3301 adds r3, #1 + 800d360: 4a0d ldr r2, [pc, #52] @ (800d398 ) + 800d362: 6013 str r3, [r2, #0] vApplicationTickHook(); } #endif } return xSwitchRequired; - 800cdf0: 697b ldr r3, [r7, #20] + 800d364: 697b ldr r3, [r7, #20] } - 800cdf2: 4618 mov r0, r3 - 800cdf4: 3718 adds r7, #24 - 800cdf6: 46bd mov sp, r7 - 800cdf8: bd80 pop {r7, pc} - 800cdfa: bf00 nop - 800cdfc: 200025e4 .word 0x200025e4 - 800ce00: 200025c0 .word 0x200025c0 - 800ce04: 20002574 .word 0x20002574 - 800ce08: 20002578 .word 0x20002578 - 800ce0c: 200025d4 .word 0x200025d4 - 800ce10: 200025dc .word 0x200025dc - 800ce14: 200025c4 .word 0x200025c4 - 800ce18: 200024c0 .word 0x200024c0 - 800ce1c: 200024bc .word 0x200024bc - 800ce20: 200025d0 .word 0x200025d0 - 800ce24: 200025cc .word 0x200025cc + 800d366: 4618 mov r0, r3 + 800d368: 3718 adds r7, #24 + 800d36a: 46bd mov sp, r7 + 800d36c: bd80 pop {r7, pc} + 800d36e: bf00 nop + 800d370: 2000262c .word 0x2000262c + 800d374: 20002608 .word 0x20002608 + 800d378: 200025bc .word 0x200025bc + 800d37c: 200025c0 .word 0x200025c0 + 800d380: 2000261c .word 0x2000261c + 800d384: 20002624 .word 0x20002624 + 800d388: 2000260c .word 0x2000260c + 800d38c: 20002508 .word 0x20002508 + 800d390: 20002504 .word 0x20002504 + 800d394: 20002618 .word 0x20002618 + 800d398: 20002614 .word 0x20002614 -0800ce28 : +0800d39c : #endif /* configUSE_APPLICATION_TASK_TAG */ /*-----------------------------------------------------------*/ void vTaskSwitchContext( void ) { - 800ce28: b480 push {r7} - 800ce2a: b087 sub sp, #28 - 800ce2c: af00 add r7, sp, #0 + 800d39c: b480 push {r7} + 800d39e: b087 sub sp, #28 + 800d3a0: af00 add r7, sp, #0 if( uxSchedulerSuspended != ( UBaseType_t ) pdFALSE ) - 800ce2e: 4b2a ldr r3, [pc, #168] @ (800ced8 ) - 800ce30: 681b ldr r3, [r3, #0] - 800ce32: 2b00 cmp r3, #0 - 800ce34: d003 beq.n 800ce3e + 800d3a2: 4b2a ldr r3, [pc, #168] @ (800d44c ) + 800d3a4: 681b ldr r3, [r3, #0] + 800d3a6: 2b00 cmp r3, #0 + 800d3a8: d003 beq.n 800d3b2 { /* The scheduler is currently suspended - do not allow a context switch. */ xYieldPending = pdTRUE; - 800ce36: 4b29 ldr r3, [pc, #164] @ (800cedc ) - 800ce38: 2201 movs r2, #1 - 800ce3a: 601a str r2, [r3, #0] + 800d3aa: 4b29 ldr r3, [pc, #164] @ (800d450 ) + 800d3ac: 2201 movs r2, #1 + 800d3ae: 601a str r2, [r3, #0] for additional information. */ _impure_ptr = &( pxCurrentTCB->xNewLib_reent ); } #endif /* configUSE_NEWLIB_REENTRANT */ } } - 800ce3c: e045 b.n 800ceca + 800d3b0: e045 b.n 800d43e xYieldPending = pdFALSE; - 800ce3e: 4b27 ldr r3, [pc, #156] @ (800cedc ) - 800ce40: 2200 movs r2, #0 - 800ce42: 601a str r2, [r3, #0] + 800d3b2: 4b27 ldr r3, [pc, #156] @ (800d450 ) + 800d3b4: 2200 movs r2, #0 + 800d3b6: 601a str r2, [r3, #0] taskSELECT_HIGHEST_PRIORITY_TASK(); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ - 800ce44: 4b26 ldr r3, [pc, #152] @ (800cee0 ) - 800ce46: 681b ldr r3, [r3, #0] - 800ce48: 60fb str r3, [r7, #12] + 800d3b8: 4b26 ldr r3, [pc, #152] @ (800d454 ) + 800d3ba: 681b ldr r3, [r3, #0] + 800d3bc: 60fb str r3, [r7, #12] __asm volatile ( "clz %0, %1" : "=r" ( ucReturn ) : "r" ( ulBitmap ) : "memory" ); - 800ce4a: 68fb ldr r3, [r7, #12] - 800ce4c: fab3 f383 clz r3, r3 - 800ce50: 72fb strb r3, [r7, #11] + 800d3be: 68fb ldr r3, [r7, #12] + 800d3c0: fab3 f383 clz r3, r3 + 800d3c4: 72fb strb r3, [r7, #11] return ucReturn; - 800ce52: 7afb ldrb r3, [r7, #11] - 800ce54: f1c3 031f rsb r3, r3, #31 - 800ce58: 617b str r3, [r7, #20] - 800ce5a: 4922 ldr r1, [pc, #136] @ (800cee4 ) - 800ce5c: 697a ldr r2, [r7, #20] - 800ce5e: 4613 mov r3, r2 - 800ce60: 009b lsls r3, r3, #2 - 800ce62: 4413 add r3, r2 - 800ce64: 009b lsls r3, r3, #2 - 800ce66: 440b add r3, r1 - 800ce68: 681b ldr r3, [r3, #0] - 800ce6a: 2b00 cmp r3, #0 - 800ce6c: d10b bne.n 800ce86 + 800d3c6: 7afb ldrb r3, [r7, #11] + 800d3c8: f1c3 031f rsb r3, r3, #31 + 800d3cc: 617b str r3, [r7, #20] + 800d3ce: 4922 ldr r1, [pc, #136] @ (800d458 ) + 800d3d0: 697a ldr r2, [r7, #20] + 800d3d2: 4613 mov r3, r2 + 800d3d4: 009b lsls r3, r3, #2 + 800d3d6: 4413 add r3, r2 + 800d3d8: 009b lsls r3, r3, #2 + 800d3da: 440b add r3, r1 + 800d3dc: 681b ldr r3, [r3, #0] + 800d3de: 2b00 cmp r3, #0 + 800d3e0: d10b bne.n 800d3fa __asm volatile - 800ce6e: f04f 0350 mov.w r3, #80 @ 0x50 - 800ce72: f383 8811 msr BASEPRI, r3 - 800ce76: f3bf 8f6f isb sy - 800ce7a: f3bf 8f4f dsb sy - 800ce7e: 607b str r3, [r7, #4] + 800d3e2: f04f 0350 mov.w r3, #80 @ 0x50 + 800d3e6: f383 8811 msr BASEPRI, r3 + 800d3ea: f3bf 8f6f isb sy + 800d3ee: f3bf 8f4f dsb sy + 800d3f2: 607b str r3, [r7, #4] } - 800ce80: bf00 nop - 800ce82: bf00 nop - 800ce84: e7fd b.n 800ce82 - 800ce86: 697a ldr r2, [r7, #20] - 800ce88: 4613 mov r3, r2 - 800ce8a: 009b lsls r3, r3, #2 - 800ce8c: 4413 add r3, r2 - 800ce8e: 009b lsls r3, r3, #2 - 800ce90: 4a14 ldr r2, [pc, #80] @ (800cee4 ) - 800ce92: 4413 add r3, r2 - 800ce94: 613b str r3, [r7, #16] - 800ce96: 693b ldr r3, [r7, #16] - 800ce98: 685b ldr r3, [r3, #4] - 800ce9a: 685a ldr r2, [r3, #4] - 800ce9c: 693b ldr r3, [r7, #16] - 800ce9e: 605a str r2, [r3, #4] - 800cea0: 693b ldr r3, [r7, #16] - 800cea2: 685a ldr r2, [r3, #4] - 800cea4: 693b ldr r3, [r7, #16] - 800cea6: 3308 adds r3, #8 - 800cea8: 429a cmp r2, r3 - 800ceaa: d104 bne.n 800ceb6 - 800ceac: 693b ldr r3, [r7, #16] - 800ceae: 685b ldr r3, [r3, #4] - 800ceb0: 685a ldr r2, [r3, #4] - 800ceb2: 693b ldr r3, [r7, #16] - 800ceb4: 605a str r2, [r3, #4] - 800ceb6: 693b ldr r3, [r7, #16] - 800ceb8: 685b ldr r3, [r3, #4] - 800ceba: 68db ldr r3, [r3, #12] - 800cebc: 4a0a ldr r2, [pc, #40] @ (800cee8 ) - 800cebe: 6013 str r3, [r2, #0] + 800d3f4: bf00 nop + 800d3f6: bf00 nop + 800d3f8: e7fd b.n 800d3f6 + 800d3fa: 697a ldr r2, [r7, #20] + 800d3fc: 4613 mov r3, r2 + 800d3fe: 009b lsls r3, r3, #2 + 800d400: 4413 add r3, r2 + 800d402: 009b lsls r3, r3, #2 + 800d404: 4a14 ldr r2, [pc, #80] @ (800d458 ) + 800d406: 4413 add r3, r2 + 800d408: 613b str r3, [r7, #16] + 800d40a: 693b ldr r3, [r7, #16] + 800d40c: 685b ldr r3, [r3, #4] + 800d40e: 685a ldr r2, [r3, #4] + 800d410: 693b ldr r3, [r7, #16] + 800d412: 605a str r2, [r3, #4] + 800d414: 693b ldr r3, [r7, #16] + 800d416: 685a ldr r2, [r3, #4] + 800d418: 693b ldr r3, [r7, #16] + 800d41a: 3308 adds r3, #8 + 800d41c: 429a cmp r2, r3 + 800d41e: d104 bne.n 800d42a + 800d420: 693b ldr r3, [r7, #16] + 800d422: 685b ldr r3, [r3, #4] + 800d424: 685a ldr r2, [r3, #4] + 800d426: 693b ldr r3, [r7, #16] + 800d428: 605a str r2, [r3, #4] + 800d42a: 693b ldr r3, [r7, #16] + 800d42c: 685b ldr r3, [r3, #4] + 800d42e: 68db ldr r3, [r3, #12] + 800d430: 4a0a ldr r2, [pc, #40] @ (800d45c ) + 800d432: 6013 str r3, [r2, #0] _impure_ptr = &( pxCurrentTCB->xNewLib_reent ); - 800cec0: 4b09 ldr r3, [pc, #36] @ (800cee8 ) - 800cec2: 681b ldr r3, [r3, #0] - 800cec4: 334c adds r3, #76 @ 0x4c - 800cec6: 4a09 ldr r2, [pc, #36] @ (800ceec ) - 800cec8: 6013 str r3, [r2, #0] + 800d434: 4b09 ldr r3, [pc, #36] @ (800d45c ) + 800d436: 681b ldr r3, [r3, #0] + 800d438: 334c adds r3, #76 @ 0x4c + 800d43a: 4a09 ldr r2, [pc, #36] @ (800d460 ) + 800d43c: 6013 str r3, [r2, #0] } - 800ceca: bf00 nop - 800cecc: 371c adds r7, #28 - 800cece: 46bd mov sp, r7 - 800ced0: f85d 7b04 ldr.w r7, [sp], #4 - 800ced4: 4770 bx lr - 800ced6: bf00 nop - 800ced8: 200025e4 .word 0x200025e4 - 800cedc: 200025d0 .word 0x200025d0 - 800cee0: 200025c4 .word 0x200025c4 - 800cee4: 200024c0 .word 0x200024c0 - 800cee8: 200024bc .word 0x200024bc - 800ceec: 20000010 .word 0x20000010 + 800d43e: bf00 nop + 800d440: 371c adds r7, #28 + 800d442: 46bd mov sp, r7 + 800d444: f85d 7b04 ldr.w r7, [sp], #4 + 800d448: 4770 bx lr + 800d44a: bf00 nop + 800d44c: 2000262c .word 0x2000262c + 800d450: 20002618 .word 0x20002618 + 800d454: 2000260c .word 0x2000260c + 800d458: 20002508 .word 0x20002508 + 800d45c: 20002504 .word 0x20002504 + 800d460: 20000010 .word 0x20000010 -0800cef0 : +0800d464 : * * void prvIdleTask( void *pvParameters ); * */ static portTASK_FUNCTION( prvIdleTask, pvParameters ) { - 800cef0: b580 push {r7, lr} - 800cef2: b082 sub sp, #8 - 800cef4: af00 add r7, sp, #0 - 800cef6: 6078 str r0, [r7, #4] + 800d464: b580 push {r7, lr} + 800d466: b082 sub sp, #8 + 800d468: af00 add r7, sp, #0 + 800d46a: 6078 str r0, [r7, #4] for( ;; ) { /* See if any tasks have deleted themselves - if so then the idle task is responsible for freeing the deleted task's TCB and stack. */ prvCheckTasksWaitingTermination(); - 800cef8: f000 f852 bl 800cfa0 + 800d46c: f000 f852 bl 800d514 A critical region is not required here as we are just reading from the list, and an occasional incorrect value will not matter. If the ready list at the idle priority contains more than one task then a task other than the idle task is ready to execute. */ if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) ) > ( UBaseType_t ) 1 ) - 800cefc: 4b06 ldr r3, [pc, #24] @ (800cf18 ) - 800cefe: 681b ldr r3, [r3, #0] - 800cf00: 2b01 cmp r3, #1 - 800cf02: d9f9 bls.n 800cef8 + 800d470: 4b06 ldr r3, [pc, #24] @ (800d48c ) + 800d472: 681b ldr r3, [r3, #0] + 800d474: 2b01 cmp r3, #1 + 800d476: d9f9 bls.n 800d46c { taskYIELD(); - 800cf04: 4b05 ldr r3, [pc, #20] @ (800cf1c ) - 800cf06: f04f 5280 mov.w r2, #268435456 @ 0x10000000 - 800cf0a: 601a str r2, [r3, #0] - 800cf0c: f3bf 8f4f dsb sy - 800cf10: f3bf 8f6f isb sy + 800d478: 4b05 ldr r3, [pc, #20] @ (800d490 ) + 800d47a: f04f 5280 mov.w r2, #268435456 @ 0x10000000 + 800d47e: 601a str r2, [r3, #0] + 800d480: f3bf 8f4f dsb sy + 800d484: f3bf 8f6f isb sy prvCheckTasksWaitingTermination(); - 800cf14: e7f0 b.n 800cef8 - 800cf16: bf00 nop - 800cf18: 200024c0 .word 0x200024c0 - 800cf1c: e000ed04 .word 0xe000ed04 + 800d488: e7f0 b.n 800d46c + 800d48a: bf00 nop + 800d48c: 20002508 .word 0x20002508 + 800d490: e000ed04 .word 0xe000ed04 -0800cf20 : +0800d494 : #endif /* portUSING_MPU_WRAPPERS */ /*-----------------------------------------------------------*/ static void prvInitialiseTaskLists( void ) { - 800cf20: b580 push {r7, lr} - 800cf22: b082 sub sp, #8 - 800cf24: af00 add r7, sp, #0 + 800d494: b580 push {r7, lr} + 800d496: b082 sub sp, #8 + 800d498: af00 add r7, sp, #0 UBaseType_t uxPriority; for( uxPriority = ( UBaseType_t ) 0U; uxPriority < ( UBaseType_t ) configMAX_PRIORITIES; uxPriority++ ) - 800cf26: 2300 movs r3, #0 - 800cf28: 607b str r3, [r7, #4] - 800cf2a: e00c b.n 800cf46 + 800d49a: 2300 movs r3, #0 + 800d49c: 607b str r3, [r7, #4] + 800d49e: e00c b.n 800d4ba { vListInitialise( &( pxReadyTasksLists[ uxPriority ] ) ); - 800cf2c: 687a ldr r2, [r7, #4] - 800cf2e: 4613 mov r3, r2 - 800cf30: 009b lsls r3, r3, #2 - 800cf32: 4413 add r3, r2 - 800cf34: 009b lsls r3, r3, #2 - 800cf36: 4a12 ldr r2, [pc, #72] @ (800cf80 ) - 800cf38: 4413 add r3, r2 - 800cf3a: 4618 mov r0, r3 - 800cf3c: f7ff fb0b bl 800c556 + 800d4a0: 687a ldr r2, [r7, #4] + 800d4a2: 4613 mov r3, r2 + 800d4a4: 009b lsls r3, r3, #2 + 800d4a6: 4413 add r3, r2 + 800d4a8: 009b lsls r3, r3, #2 + 800d4aa: 4a12 ldr r2, [pc, #72] @ (800d4f4 ) + 800d4ac: 4413 add r3, r2 + 800d4ae: 4618 mov r0, r3 + 800d4b0: f7ff fb0b bl 800caca for( uxPriority = ( UBaseType_t ) 0U; uxPriority < ( UBaseType_t ) configMAX_PRIORITIES; uxPriority++ ) - 800cf40: 687b ldr r3, [r7, #4] - 800cf42: 3301 adds r3, #1 - 800cf44: 607b str r3, [r7, #4] - 800cf46: 687b ldr r3, [r7, #4] - 800cf48: 2b06 cmp r3, #6 - 800cf4a: d9ef bls.n 800cf2c + 800d4b4: 687b ldr r3, [r7, #4] + 800d4b6: 3301 adds r3, #1 + 800d4b8: 607b str r3, [r7, #4] + 800d4ba: 687b ldr r3, [r7, #4] + 800d4bc: 2b06 cmp r3, #6 + 800d4be: d9ef bls.n 800d4a0 } vListInitialise( &xDelayedTaskList1 ); - 800cf4c: 480d ldr r0, [pc, #52] @ (800cf84 ) - 800cf4e: f7ff fb02 bl 800c556 + 800d4c0: 480d ldr r0, [pc, #52] @ (800d4f8 ) + 800d4c2: f7ff fb02 bl 800caca vListInitialise( &xDelayedTaskList2 ); - 800cf52: 480d ldr r0, [pc, #52] @ (800cf88 ) - 800cf54: f7ff faff bl 800c556 + 800d4c6: 480d ldr r0, [pc, #52] @ (800d4fc ) + 800d4c8: f7ff faff bl 800caca vListInitialise( &xPendingReadyList ); - 800cf58: 480c ldr r0, [pc, #48] @ (800cf8c ) - 800cf5a: f7ff fafc bl 800c556 + 800d4cc: 480c ldr r0, [pc, #48] @ (800d500 ) + 800d4ce: f7ff fafc bl 800caca #if ( INCLUDE_vTaskDelete == 1 ) { vListInitialise( &xTasksWaitingTermination ); - 800cf5e: 480c ldr r0, [pc, #48] @ (800cf90 ) - 800cf60: f7ff faf9 bl 800c556 + 800d4d2: 480c ldr r0, [pc, #48] @ (800d504 ) + 800d4d4: f7ff faf9 bl 800caca } #endif /* INCLUDE_vTaskDelete */ #if ( INCLUDE_vTaskSuspend == 1 ) { vListInitialise( &xSuspendedTaskList ); - 800cf64: 480b ldr r0, [pc, #44] @ (800cf94 ) - 800cf66: f7ff faf6 bl 800c556 + 800d4d8: 480b ldr r0, [pc, #44] @ (800d508 ) + 800d4da: f7ff faf6 bl 800caca } #endif /* INCLUDE_vTaskSuspend */ /* Start with pxDelayedTaskList using list1 and the pxOverflowDelayedTaskList using list2. */ pxDelayedTaskList = &xDelayedTaskList1; - 800cf6a: 4b0b ldr r3, [pc, #44] @ (800cf98 ) - 800cf6c: 4a05 ldr r2, [pc, #20] @ (800cf84 ) - 800cf6e: 601a str r2, [r3, #0] + 800d4de: 4b0b ldr r3, [pc, #44] @ (800d50c ) + 800d4e0: 4a05 ldr r2, [pc, #20] @ (800d4f8 ) + 800d4e2: 601a str r2, [r3, #0] pxOverflowDelayedTaskList = &xDelayedTaskList2; - 800cf70: 4b0a ldr r3, [pc, #40] @ (800cf9c ) - 800cf72: 4a05 ldr r2, [pc, #20] @ (800cf88 ) - 800cf74: 601a str r2, [r3, #0] + 800d4e4: 4b0a ldr r3, [pc, #40] @ (800d510 ) + 800d4e6: 4a05 ldr r2, [pc, #20] @ (800d4fc ) + 800d4e8: 601a str r2, [r3, #0] } - 800cf76: bf00 nop - 800cf78: 3708 adds r7, #8 - 800cf7a: 46bd mov sp, r7 - 800cf7c: bd80 pop {r7, pc} - 800cf7e: bf00 nop - 800cf80: 200024c0 .word 0x200024c0 - 800cf84: 2000254c .word 0x2000254c - 800cf88: 20002560 .word 0x20002560 - 800cf8c: 2000257c .word 0x2000257c - 800cf90: 20002590 .word 0x20002590 - 800cf94: 200025a8 .word 0x200025a8 - 800cf98: 20002574 .word 0x20002574 - 800cf9c: 20002578 .word 0x20002578 + 800d4ea: bf00 nop + 800d4ec: 3708 adds r7, #8 + 800d4ee: 46bd mov sp, r7 + 800d4f0: bd80 pop {r7, pc} + 800d4f2: bf00 nop + 800d4f4: 20002508 .word 0x20002508 + 800d4f8: 20002594 .word 0x20002594 + 800d4fc: 200025a8 .word 0x200025a8 + 800d500: 200025c4 .word 0x200025c4 + 800d504: 200025d8 .word 0x200025d8 + 800d508: 200025f0 .word 0x200025f0 + 800d50c: 200025bc .word 0x200025bc + 800d510: 200025c0 .word 0x200025c0 -0800cfa0 : +0800d514 : /*-----------------------------------------------------------*/ static void prvCheckTasksWaitingTermination( void ) { - 800cfa0: b580 push {r7, lr} - 800cfa2: b082 sub sp, #8 - 800cfa4: af00 add r7, sp, #0 + 800d514: b580 push {r7, lr} + 800d516: b082 sub sp, #8 + 800d518: af00 add r7, sp, #0 { TCB_t *pxTCB; /* uxDeletedTasksWaitingCleanUp is used to prevent taskENTER_CRITICAL() being called too often in the idle task. */ while( uxDeletedTasksWaitingCleanUp > ( UBaseType_t ) 0U ) - 800cfa6: e019 b.n 800cfdc + 800d51a: e019 b.n 800d550 { taskENTER_CRITICAL(); - 800cfa8: f000 fa16 bl 800d3d8 + 800d51c: f000 fa14 bl 800d948 { pxTCB = listGET_OWNER_OF_HEAD_ENTRY( ( &xTasksWaitingTermination ) ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ - 800cfac: 4b10 ldr r3, [pc, #64] @ (800cff0 ) - 800cfae: 68db ldr r3, [r3, #12] - 800cfb0: 68db ldr r3, [r3, #12] - 800cfb2: 607b str r3, [r7, #4] + 800d520: 4b10 ldr r3, [pc, #64] @ (800d564 ) + 800d522: 68db ldr r3, [r3, #12] + 800d524: 68db ldr r3, [r3, #12] + 800d526: 607b str r3, [r7, #4] ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); - 800cfb4: 687b ldr r3, [r7, #4] - 800cfb6: 3304 adds r3, #4 - 800cfb8: 4618 mov r0, r3 - 800cfba: f7ff fb56 bl 800c66a + 800d528: 687b ldr r3, [r7, #4] + 800d52a: 3304 adds r3, #4 + 800d52c: 4618 mov r0, r3 + 800d52e: f7ff fb56 bl 800cbde --uxCurrentNumberOfTasks; - 800cfbe: 4b0d ldr r3, [pc, #52] @ (800cff4 ) - 800cfc0: 681b ldr r3, [r3, #0] - 800cfc2: 3b01 subs r3, #1 - 800cfc4: 4a0b ldr r2, [pc, #44] @ (800cff4 ) - 800cfc6: 6013 str r3, [r2, #0] + 800d532: 4b0d ldr r3, [pc, #52] @ (800d568 ) + 800d534: 681b ldr r3, [r3, #0] + 800d536: 3b01 subs r3, #1 + 800d538: 4a0b ldr r2, [pc, #44] @ (800d568 ) + 800d53a: 6013 str r3, [r2, #0] --uxDeletedTasksWaitingCleanUp; - 800cfc8: 4b0b ldr r3, [pc, #44] @ (800cff8 ) - 800cfca: 681b ldr r3, [r3, #0] - 800cfcc: 3b01 subs r3, #1 - 800cfce: 4a0a ldr r2, [pc, #40] @ (800cff8 ) - 800cfd0: 6013 str r3, [r2, #0] + 800d53c: 4b0b ldr r3, [pc, #44] @ (800d56c ) + 800d53e: 681b ldr r3, [r3, #0] + 800d540: 3b01 subs r3, #1 + 800d542: 4a0a ldr r2, [pc, #40] @ (800d56c ) + 800d544: 6013 str r3, [r2, #0] } taskEXIT_CRITICAL(); - 800cfd2: f000 fa33 bl 800d43c + 800d546: f000 fa31 bl 800d9ac prvDeleteTCB( pxTCB ); - 800cfd6: 6878 ldr r0, [r7, #4] - 800cfd8: f000 f810 bl 800cffc + 800d54a: 6878 ldr r0, [r7, #4] + 800d54c: f000 f810 bl 800d570 while( uxDeletedTasksWaitingCleanUp > ( UBaseType_t ) 0U ) - 800cfdc: 4b06 ldr r3, [pc, #24] @ (800cff8 ) - 800cfde: 681b ldr r3, [r3, #0] - 800cfe0: 2b00 cmp r3, #0 - 800cfe2: d1e1 bne.n 800cfa8 + 800d550: 4b06 ldr r3, [pc, #24] @ (800d56c ) + 800d552: 681b ldr r3, [r3, #0] + 800d554: 2b00 cmp r3, #0 + 800d556: d1e1 bne.n 800d51c } } #endif /* INCLUDE_vTaskDelete */ } - 800cfe4: bf00 nop - 800cfe6: bf00 nop - 800cfe8: 3708 adds r7, #8 - 800cfea: 46bd mov sp, r7 - 800cfec: bd80 pop {r7, pc} - 800cfee: bf00 nop - 800cff0: 20002590 .word 0x20002590 - 800cff4: 200025bc .word 0x200025bc - 800cff8: 200025a4 .word 0x200025a4 + 800d558: bf00 nop + 800d55a: bf00 nop + 800d55c: 3708 adds r7, #8 + 800d55e: 46bd mov sp, r7 + 800d560: bd80 pop {r7, pc} + 800d562: bf00 nop + 800d564: 200025d8 .word 0x200025d8 + 800d568: 20002604 .word 0x20002604 + 800d56c: 200025ec .word 0x200025ec -0800cffc : +0800d570 : /*-----------------------------------------------------------*/ #if ( INCLUDE_vTaskDelete == 1 ) static void prvDeleteTCB( TCB_t *pxTCB ) { - 800cffc: b580 push {r7, lr} - 800cffe: b084 sub sp, #16 - 800d000: af00 add r7, sp, #0 - 800d002: 6078 str r0, [r7, #4] + 800d570: b580 push {r7, lr} + 800d572: b084 sub sp, #16 + 800d574: af00 add r7, sp, #0 + 800d576: 6078 str r0, [r7, #4] to the task to free any memory allocated at the application level. See the third party link http://www.nadler.com/embedded/newlibAndFreeRTOS.html for additional information. */ #if ( configUSE_NEWLIB_REENTRANT == 1 ) { _reclaim_reent( &( pxTCB->xNewLib_reent ) ); - 800d004: 687b ldr r3, [r7, #4] - 800d006: 334c adds r3, #76 @ 0x4c - 800d008: 4618 mov r0, r3 - 800d00a: f000 fcdb bl 800d9c4 <_reclaim_reent> + 800d578: 687b ldr r3, [r7, #4] + 800d57a: 334c adds r3, #76 @ 0x4c + 800d57c: 4618 mov r0, r3 + 800d57e: f000 fcd9 bl 800df34 <_reclaim_reent> #elif( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) /*lint !e731 !e9029 Macro has been consolidated for readability reasons. */ { /* The task could have been allocated statically or dynamically, so check what was statically allocated before trying to free the memory. */ if( pxTCB->ucStaticallyAllocated == tskDYNAMICALLY_ALLOCATED_STACK_AND_TCB ) - 800d00e: 687b ldr r3, [r7, #4] - 800d010: f893 309d ldrb.w r3, [r3, #157] @ 0x9d - 800d014: 2b00 cmp r3, #0 - 800d016: d108 bne.n 800d02a + 800d582: 687b ldr r3, [r7, #4] + 800d584: f893 309d ldrb.w r3, [r3, #157] @ 0x9d + 800d588: 2b00 cmp r3, #0 + 800d58a: d108 bne.n 800d59e { /* Both the stack and TCB were allocated dynamically, so both must be freed. */ vPortFree( pxTCB->pxStack ); - 800d018: 687b ldr r3, [r7, #4] - 800d01a: 6b1b ldr r3, [r3, #48] @ 0x30 - 800d01c: 4618 mov r0, r3 - 800d01e: f000 fb89 bl 800d734 + 800d58c: 687b ldr r3, [r7, #4] + 800d58e: 6b1b ldr r3, [r3, #48] @ 0x30 + 800d590: 4618 mov r0, r3 + 800d592: f000 fb87 bl 800dca4 vPortFree( pxTCB ); - 800d022: 6878 ldr r0, [r7, #4] - 800d024: f000 fb86 bl 800d734 + 800d596: 6878 ldr r0, [r7, #4] + 800d598: f000 fb84 bl 800dca4 configASSERT( pxTCB->ucStaticallyAllocated == tskSTATICALLY_ALLOCATED_STACK_AND_TCB ); mtCOVERAGE_TEST_MARKER(); } } #endif /* configSUPPORT_DYNAMIC_ALLOCATION */ } - 800d028: e019 b.n 800d05e + 800d59c: e019 b.n 800d5d2 else if( pxTCB->ucStaticallyAllocated == tskSTATICALLY_ALLOCATED_STACK_ONLY ) - 800d02a: 687b ldr r3, [r7, #4] - 800d02c: f893 309d ldrb.w r3, [r3, #157] @ 0x9d - 800d030: 2b01 cmp r3, #1 - 800d032: d103 bne.n 800d03c + 800d59e: 687b ldr r3, [r7, #4] + 800d5a0: f893 309d ldrb.w r3, [r3, #157] @ 0x9d + 800d5a4: 2b01 cmp r3, #1 + 800d5a6: d103 bne.n 800d5b0 vPortFree( pxTCB ); - 800d034: 6878 ldr r0, [r7, #4] - 800d036: f000 fb7d bl 800d734 + 800d5a8: 6878 ldr r0, [r7, #4] + 800d5aa: f000 fb7b bl 800dca4 } - 800d03a: e010 b.n 800d05e + 800d5ae: e010 b.n 800d5d2 configASSERT( pxTCB->ucStaticallyAllocated == tskSTATICALLY_ALLOCATED_STACK_AND_TCB ); - 800d03c: 687b ldr r3, [r7, #4] - 800d03e: f893 309d ldrb.w r3, [r3, #157] @ 0x9d - 800d042: 2b02 cmp r3, #2 - 800d044: d00b beq.n 800d05e + 800d5b0: 687b ldr r3, [r7, #4] + 800d5b2: f893 309d ldrb.w r3, [r3, #157] @ 0x9d + 800d5b6: 2b02 cmp r3, #2 + 800d5b8: d00b beq.n 800d5d2 __asm volatile - 800d046: f04f 0350 mov.w r3, #80 @ 0x50 - 800d04a: f383 8811 msr BASEPRI, r3 - 800d04e: f3bf 8f6f isb sy - 800d052: f3bf 8f4f dsb sy - 800d056: 60fb str r3, [r7, #12] + 800d5ba: f04f 0350 mov.w r3, #80 @ 0x50 + 800d5be: f383 8811 msr BASEPRI, r3 + 800d5c2: f3bf 8f6f isb sy + 800d5c6: f3bf 8f4f dsb sy + 800d5ca: 60fb str r3, [r7, #12] } - 800d058: bf00 nop - 800d05a: bf00 nop - 800d05c: e7fd b.n 800d05a + 800d5cc: bf00 nop + 800d5ce: bf00 nop + 800d5d0: e7fd b.n 800d5ce } - 800d05e: bf00 nop - 800d060: 3710 adds r7, #16 - 800d062: 46bd mov sp, r7 - 800d064: bd80 pop {r7, pc} + 800d5d2: bf00 nop + 800d5d4: 3710 adds r7, #16 + 800d5d6: 46bd mov sp, r7 + 800d5d8: bd80 pop {r7, pc} ... -0800d068 : +0800d5dc : #endif /* INCLUDE_vTaskDelete */ /*-----------------------------------------------------------*/ static void prvResetNextTaskUnblockTime( void ) { - 800d068: b480 push {r7} - 800d06a: b083 sub sp, #12 - 800d06c: af00 add r7, sp, #0 + 800d5dc: b480 push {r7} + 800d5de: b083 sub sp, #12 + 800d5e0: af00 add r7, sp, #0 TCB_t *pxTCB; if( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE ) - 800d06e: 4b0c ldr r3, [pc, #48] @ (800d0a0 ) - 800d070: 681b ldr r3, [r3, #0] - 800d072: 681b ldr r3, [r3, #0] - 800d074: 2b00 cmp r3, #0 - 800d076: d104 bne.n 800d082 + 800d5e2: 4b0c ldr r3, [pc, #48] @ (800d614 ) + 800d5e4: 681b ldr r3, [r3, #0] + 800d5e6: 681b ldr r3, [r3, #0] + 800d5e8: 2b00 cmp r3, #0 + 800d5ea: d104 bne.n 800d5f6 { /* The new current delayed list is empty. Set xNextTaskUnblockTime to the maximum possible value so it is extremely unlikely that the if( xTickCount >= xNextTaskUnblockTime ) test will pass until there is an item in the delayed list. */ xNextTaskUnblockTime = portMAX_DELAY; - 800d078: 4b0a ldr r3, [pc, #40] @ (800d0a4 ) - 800d07a: f04f 32ff mov.w r2, #4294967295 - 800d07e: 601a str r2, [r3, #0] + 800d5ec: 4b0a ldr r3, [pc, #40] @ (800d618 ) + 800d5ee: f04f 32ff mov.w r2, #4294967295 + 800d5f2: 601a str r2, [r3, #0] which the task at the head of the delayed list should be removed from the Blocked state. */ ( pxTCB ) = listGET_OWNER_OF_HEAD_ENTRY( pxDelayedTaskList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ xNextTaskUnblockTime = listGET_LIST_ITEM_VALUE( &( ( pxTCB )->xStateListItem ) ); } } - 800d080: e008 b.n 800d094 + 800d5f4: e008 b.n 800d608 ( pxTCB ) = listGET_OWNER_OF_HEAD_ENTRY( pxDelayedTaskList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ - 800d082: 4b07 ldr r3, [pc, #28] @ (800d0a0 ) - 800d084: 681b ldr r3, [r3, #0] - 800d086: 68db ldr r3, [r3, #12] - 800d088: 68db ldr r3, [r3, #12] - 800d08a: 607b str r3, [r7, #4] + 800d5f6: 4b07 ldr r3, [pc, #28] @ (800d614 ) + 800d5f8: 681b ldr r3, [r3, #0] + 800d5fa: 68db ldr r3, [r3, #12] + 800d5fc: 68db ldr r3, [r3, #12] + 800d5fe: 607b str r3, [r7, #4] xNextTaskUnblockTime = listGET_LIST_ITEM_VALUE( &( ( pxTCB )->xStateListItem ) ); - 800d08c: 687b ldr r3, [r7, #4] - 800d08e: 685b ldr r3, [r3, #4] - 800d090: 4a04 ldr r2, [pc, #16] @ (800d0a4 ) - 800d092: 6013 str r3, [r2, #0] + 800d600: 687b ldr r3, [r7, #4] + 800d602: 685b ldr r3, [r3, #4] + 800d604: 4a04 ldr r2, [pc, #16] @ (800d618 ) + 800d606: 6013 str r3, [r2, #0] } - 800d094: bf00 nop - 800d096: 370c adds r7, #12 - 800d098: 46bd mov sp, r7 - 800d09a: f85d 7b04 ldr.w r7, [sp], #4 - 800d09e: 4770 bx lr - 800d0a0: 20002574 .word 0x20002574 - 800d0a4: 200025dc .word 0x200025dc + 800d608: bf00 nop + 800d60a: 370c adds r7, #12 + 800d60c: 46bd mov sp, r7 + 800d60e: f85d 7b04 ldr.w r7, [sp], #4 + 800d612: 4770 bx lr + 800d614: 200025bc .word 0x200025bc + 800d618: 20002624 .word 0x20002624 -0800d0a8 : +0800d61c : #endif /*-----------------------------------------------------------*/ static void prvAddCurrentTaskToDelayedList( TickType_t xTicksToWait, const BaseType_t xCanBlockIndefinitely ) { - 800d0a8: b580 push {r7, lr} - 800d0aa: b084 sub sp, #16 - 800d0ac: af00 add r7, sp, #0 - 800d0ae: 6078 str r0, [r7, #4] - 800d0b0: 6039 str r1, [r7, #0] + 800d61c: b580 push {r7, lr} + 800d61e: b084 sub sp, #16 + 800d620: af00 add r7, sp, #0 + 800d622: 6078 str r0, [r7, #4] + 800d624: 6039 str r1, [r7, #0] TickType_t xTimeToWake; const TickType_t xConstTickCount = xTickCount; - 800d0b2: 4b29 ldr r3, [pc, #164] @ (800d158 ) - 800d0b4: 681b ldr r3, [r3, #0] - 800d0b6: 60fb str r3, [r7, #12] + 800d626: 4b29 ldr r3, [pc, #164] @ (800d6cc ) + 800d628: 681b ldr r3, [r3, #0] + 800d62a: 60fb str r3, [r7, #12] } #endif /* Remove the task from the ready list before adding it to the blocked list as the same list item is used for both lists. */ if( uxListRemove( &( pxCurrentTCB->xStateListItem ) ) == ( UBaseType_t ) 0 ) - 800d0b8: 4b28 ldr r3, [pc, #160] @ (800d15c ) - 800d0ba: 681b ldr r3, [r3, #0] - 800d0bc: 3304 adds r3, #4 - 800d0be: 4618 mov r0, r3 - 800d0c0: f7ff fad3 bl 800c66a - 800d0c4: 4603 mov r3, r0 - 800d0c6: 2b00 cmp r3, #0 - 800d0c8: d10b bne.n 800d0e2 + 800d62c: 4b28 ldr r3, [pc, #160] @ (800d6d0 ) + 800d62e: 681b ldr r3, [r3, #0] + 800d630: 3304 adds r3, #4 + 800d632: 4618 mov r0, r3 + 800d634: f7ff fad3 bl 800cbde + 800d638: 4603 mov r3, r0 + 800d63a: 2b00 cmp r3, #0 + 800d63c: d10b bne.n 800d656 { /* The current task must be in a ready list, so there is no need to check, and the port reset macro can be called directly. */ portRESET_READY_PRIORITY( pxCurrentTCB->uxPriority, uxTopReadyPriority ); /*lint !e931 pxCurrentTCB cannot change as it is the calling task. pxCurrentTCB->uxPriority and uxTopReadyPriority cannot change as called with scheduler suspended or in a critical section. */ - 800d0ca: 4b24 ldr r3, [pc, #144] @ (800d15c ) - 800d0cc: 681b ldr r3, [r3, #0] - 800d0ce: 6adb ldr r3, [r3, #44] @ 0x2c - 800d0d0: 2201 movs r2, #1 - 800d0d2: fa02 f303 lsl.w r3, r2, r3 - 800d0d6: 43da mvns r2, r3 - 800d0d8: 4b21 ldr r3, [pc, #132] @ (800d160 ) - 800d0da: 681b ldr r3, [r3, #0] - 800d0dc: 4013 ands r3, r2 - 800d0de: 4a20 ldr r2, [pc, #128] @ (800d160 ) - 800d0e0: 6013 str r3, [r2, #0] + 800d63e: 4b24 ldr r3, [pc, #144] @ (800d6d0 ) + 800d640: 681b ldr r3, [r3, #0] + 800d642: 6adb ldr r3, [r3, #44] @ 0x2c + 800d644: 2201 movs r2, #1 + 800d646: fa02 f303 lsl.w r3, r2, r3 + 800d64a: 43da mvns r2, r3 + 800d64c: 4b21 ldr r3, [pc, #132] @ (800d6d4 ) + 800d64e: 681b ldr r3, [r3, #0] + 800d650: 4013 ands r3, r2 + 800d652: 4a20 ldr r2, [pc, #128] @ (800d6d4 ) + 800d654: 6013 str r3, [r2, #0] mtCOVERAGE_TEST_MARKER(); } #if ( INCLUDE_vTaskSuspend == 1 ) { if( ( xTicksToWait == portMAX_DELAY ) && ( xCanBlockIndefinitely != pdFALSE ) ) - 800d0e2: 687b ldr r3, [r7, #4] - 800d0e4: f1b3 3fff cmp.w r3, #4294967295 - 800d0e8: d10a bne.n 800d100 - 800d0ea: 683b ldr r3, [r7, #0] - 800d0ec: 2b00 cmp r3, #0 - 800d0ee: d007 beq.n 800d100 + 800d656: 687b ldr r3, [r7, #4] + 800d658: f1b3 3fff cmp.w r3, #4294967295 + 800d65c: d10a bne.n 800d674 + 800d65e: 683b ldr r3, [r7, #0] + 800d660: 2b00 cmp r3, #0 + 800d662: d007 beq.n 800d674 { /* Add the task to the suspended task list instead of a delayed task list to ensure it is not woken by a timing event. It will block indefinitely. */ vListInsertEnd( &xSuspendedTaskList, &( pxCurrentTCB->xStateListItem ) ); - 800d0f0: 4b1a ldr r3, [pc, #104] @ (800d15c ) - 800d0f2: 681b ldr r3, [r3, #0] - 800d0f4: 3304 adds r3, #4 - 800d0f6: 4619 mov r1, r3 - 800d0f8: 481a ldr r0, [pc, #104] @ (800d164 ) - 800d0fa: f7ff fa59 bl 800c5b0 + 800d664: 4b1a ldr r3, [pc, #104] @ (800d6d0 ) + 800d666: 681b ldr r3, [r3, #0] + 800d668: 3304 adds r3, #4 + 800d66a: 4619 mov r1, r3 + 800d66c: 481a ldr r0, [pc, #104] @ (800d6d8 ) + 800d66e: f7ff fa59 bl 800cb24 /* Avoid compiler warning when INCLUDE_vTaskSuspend is not 1. */ ( void ) xCanBlockIndefinitely; } #endif /* INCLUDE_vTaskSuspend */ } - 800d0fe: e026 b.n 800d14e + 800d672: e026 b.n 800d6c2 xTimeToWake = xConstTickCount + xTicksToWait; - 800d100: 68fa ldr r2, [r7, #12] - 800d102: 687b ldr r3, [r7, #4] - 800d104: 4413 add r3, r2 - 800d106: 60bb str r3, [r7, #8] + 800d674: 68fa ldr r2, [r7, #12] + 800d676: 687b ldr r3, [r7, #4] + 800d678: 4413 add r3, r2 + 800d67a: 60bb str r3, [r7, #8] listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xStateListItem ), xTimeToWake ); - 800d108: 4b14 ldr r3, [pc, #80] @ (800d15c ) - 800d10a: 681b ldr r3, [r3, #0] - 800d10c: 68ba ldr r2, [r7, #8] - 800d10e: 605a str r2, [r3, #4] + 800d67c: 4b14 ldr r3, [pc, #80] @ (800d6d0 ) + 800d67e: 681b ldr r3, [r3, #0] + 800d680: 68ba ldr r2, [r7, #8] + 800d682: 605a str r2, [r3, #4] if( xTimeToWake < xConstTickCount ) - 800d110: 68ba ldr r2, [r7, #8] - 800d112: 68fb ldr r3, [r7, #12] - 800d114: 429a cmp r2, r3 - 800d116: d209 bcs.n 800d12c + 800d684: 68ba ldr r2, [r7, #8] + 800d686: 68fb ldr r3, [r7, #12] + 800d688: 429a cmp r2, r3 + 800d68a: d209 bcs.n 800d6a0 vListInsert( pxOverflowDelayedTaskList, &( pxCurrentTCB->xStateListItem ) ); - 800d118: 4b13 ldr r3, [pc, #76] @ (800d168 ) - 800d11a: 681a ldr r2, [r3, #0] - 800d11c: 4b0f ldr r3, [pc, #60] @ (800d15c ) - 800d11e: 681b ldr r3, [r3, #0] - 800d120: 3304 adds r3, #4 - 800d122: 4619 mov r1, r3 - 800d124: 4610 mov r0, r2 - 800d126: f7ff fa67 bl 800c5f8 + 800d68c: 4b13 ldr r3, [pc, #76] @ (800d6dc ) + 800d68e: 681a ldr r2, [r3, #0] + 800d690: 4b0f ldr r3, [pc, #60] @ (800d6d0 ) + 800d692: 681b ldr r3, [r3, #0] + 800d694: 3304 adds r3, #4 + 800d696: 4619 mov r1, r3 + 800d698: 4610 mov r0, r2 + 800d69a: f7ff fa67 bl 800cb6c } - 800d12a: e010 b.n 800d14e + 800d69e: e010 b.n 800d6c2 vListInsert( pxDelayedTaskList, &( pxCurrentTCB->xStateListItem ) ); - 800d12c: 4b0f ldr r3, [pc, #60] @ (800d16c ) - 800d12e: 681a ldr r2, [r3, #0] - 800d130: 4b0a ldr r3, [pc, #40] @ (800d15c ) - 800d132: 681b ldr r3, [r3, #0] - 800d134: 3304 adds r3, #4 - 800d136: 4619 mov r1, r3 - 800d138: 4610 mov r0, r2 - 800d13a: f7ff fa5d bl 800c5f8 + 800d6a0: 4b0f ldr r3, [pc, #60] @ (800d6e0 ) + 800d6a2: 681a ldr r2, [r3, #0] + 800d6a4: 4b0a ldr r3, [pc, #40] @ (800d6d0 ) + 800d6a6: 681b ldr r3, [r3, #0] + 800d6a8: 3304 adds r3, #4 + 800d6aa: 4619 mov r1, r3 + 800d6ac: 4610 mov r0, r2 + 800d6ae: f7ff fa5d bl 800cb6c if( xTimeToWake < xNextTaskUnblockTime ) - 800d13e: 4b0c ldr r3, [pc, #48] @ (800d170 ) - 800d140: 681b ldr r3, [r3, #0] - 800d142: 68ba ldr r2, [r7, #8] - 800d144: 429a cmp r2, r3 - 800d146: d202 bcs.n 800d14e + 800d6b2: 4b0c ldr r3, [pc, #48] @ (800d6e4 ) + 800d6b4: 681b ldr r3, [r3, #0] + 800d6b6: 68ba ldr r2, [r7, #8] + 800d6b8: 429a cmp r2, r3 + 800d6ba: d202 bcs.n 800d6c2 xNextTaskUnblockTime = xTimeToWake; - 800d148: 4a09 ldr r2, [pc, #36] @ (800d170 ) - 800d14a: 68bb ldr r3, [r7, #8] - 800d14c: 6013 str r3, [r2, #0] + 800d6bc: 4a09 ldr r2, [pc, #36] @ (800d6e4 ) + 800d6be: 68bb ldr r3, [r7, #8] + 800d6c0: 6013 str r3, [r2, #0] } - 800d14e: bf00 nop - 800d150: 3710 adds r7, #16 - 800d152: 46bd mov sp, r7 - 800d154: bd80 pop {r7, pc} - 800d156: bf00 nop - 800d158: 200025c0 .word 0x200025c0 - 800d15c: 200024bc .word 0x200024bc - 800d160: 200025c4 .word 0x200025c4 - 800d164: 200025a8 .word 0x200025a8 - 800d168: 20002578 .word 0x20002578 - 800d16c: 20002574 .word 0x20002574 - 800d170: 200025dc .word 0x200025dc + 800d6c2: bf00 nop + 800d6c4: 3710 adds r7, #16 + 800d6c6: 46bd mov sp, r7 + 800d6c8: bd80 pop {r7, pc} + 800d6ca: bf00 nop + 800d6cc: 20002608 .word 0x20002608 + 800d6d0: 20002504 .word 0x20002504 + 800d6d4: 2000260c .word 0x2000260c + 800d6d8: 200025f0 .word 0x200025f0 + 800d6dc: 200025c0 .word 0x200025c0 + 800d6e0: 200025bc .word 0x200025bc + 800d6e4: 20002624 .word 0x20002624 -0800d174 : +0800d6e8 : /* * See header file for description. */ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters ) { - 800d174: b480 push {r7} - 800d176: b085 sub sp, #20 - 800d178: af00 add r7, sp, #0 - 800d17a: 60f8 str r0, [r7, #12] - 800d17c: 60b9 str r1, [r7, #8] - 800d17e: 607a str r2, [r7, #4] + 800d6e8: b480 push {r7} + 800d6ea: b085 sub sp, #20 + 800d6ec: af00 add r7, sp, #0 + 800d6ee: 60f8 str r0, [r7, #12] + 800d6f0: 60b9 str r1, [r7, #8] + 800d6f2: 607a str r2, [r7, #4] /* Simulate the stack frame as it would be created by a context switch interrupt. */ /* Offset added to account for the way the MCU uses the stack on entry/exit of interrupts, and to ensure alignment. */ pxTopOfStack--; - 800d180: 68fb ldr r3, [r7, #12] - 800d182: 3b04 subs r3, #4 - 800d184: 60fb str r3, [r7, #12] + 800d6f4: 68fb ldr r3, [r7, #12] + 800d6f6: 3b04 subs r3, #4 + 800d6f8: 60fb str r3, [r7, #12] *pxTopOfStack = portINITIAL_XPSR; /* xPSR */ - 800d186: 68fb ldr r3, [r7, #12] - 800d188: f04f 7280 mov.w r2, #16777216 @ 0x1000000 - 800d18c: 601a str r2, [r3, #0] + 800d6fa: 68fb ldr r3, [r7, #12] + 800d6fc: f04f 7280 mov.w r2, #16777216 @ 0x1000000 + 800d700: 601a str r2, [r3, #0] pxTopOfStack--; - 800d18e: 68fb ldr r3, [r7, #12] - 800d190: 3b04 subs r3, #4 - 800d192: 60fb str r3, [r7, #12] + 800d702: 68fb ldr r3, [r7, #12] + 800d704: 3b04 subs r3, #4 + 800d706: 60fb str r3, [r7, #12] *pxTopOfStack = ( ( StackType_t ) pxCode ) & portSTART_ADDRESS_MASK; /* PC */ - 800d194: 68bb ldr r3, [r7, #8] - 800d196: f023 0201 bic.w r2, r3, #1 - 800d19a: 68fb ldr r3, [r7, #12] - 800d19c: 601a str r2, [r3, #0] + 800d708: 68bb ldr r3, [r7, #8] + 800d70a: f023 0201 bic.w r2, r3, #1 + 800d70e: 68fb ldr r3, [r7, #12] + 800d710: 601a str r2, [r3, #0] pxTopOfStack--; - 800d19e: 68fb ldr r3, [r7, #12] - 800d1a0: 3b04 subs r3, #4 - 800d1a2: 60fb str r3, [r7, #12] + 800d712: 68fb ldr r3, [r7, #12] + 800d714: 3b04 subs r3, #4 + 800d716: 60fb str r3, [r7, #12] *pxTopOfStack = ( StackType_t ) portTASK_RETURN_ADDRESS; /* LR */ - 800d1a4: 4a0c ldr r2, [pc, #48] @ (800d1d8 ) - 800d1a6: 68fb ldr r3, [r7, #12] - 800d1a8: 601a str r2, [r3, #0] + 800d718: 4a0c ldr r2, [pc, #48] @ (800d74c ) + 800d71a: 68fb ldr r3, [r7, #12] + 800d71c: 601a str r2, [r3, #0] /* Save code space by skipping register initialisation. */ pxTopOfStack -= 5; /* R12, R3, R2 and R1. */ - 800d1aa: 68fb ldr r3, [r7, #12] - 800d1ac: 3b14 subs r3, #20 - 800d1ae: 60fb str r3, [r7, #12] + 800d71e: 68fb ldr r3, [r7, #12] + 800d720: 3b14 subs r3, #20 + 800d722: 60fb str r3, [r7, #12] *pxTopOfStack = ( StackType_t ) pvParameters; /* R0 */ - 800d1b0: 687a ldr r2, [r7, #4] - 800d1b2: 68fb ldr r3, [r7, #12] - 800d1b4: 601a str r2, [r3, #0] + 800d724: 687a ldr r2, [r7, #4] + 800d726: 68fb ldr r3, [r7, #12] + 800d728: 601a str r2, [r3, #0] /* A save method is being used that requires each task to maintain its own exec return value. */ pxTopOfStack--; - 800d1b6: 68fb ldr r3, [r7, #12] - 800d1b8: 3b04 subs r3, #4 - 800d1ba: 60fb str r3, [r7, #12] + 800d72a: 68fb ldr r3, [r7, #12] + 800d72c: 3b04 subs r3, #4 + 800d72e: 60fb str r3, [r7, #12] *pxTopOfStack = portINITIAL_EXC_RETURN; - 800d1bc: 68fb ldr r3, [r7, #12] - 800d1be: f06f 0202 mvn.w r2, #2 - 800d1c2: 601a str r2, [r3, #0] + 800d730: 68fb ldr r3, [r7, #12] + 800d732: f06f 0202 mvn.w r2, #2 + 800d736: 601a str r2, [r3, #0] pxTopOfStack -= 8; /* R11, R10, R9, R8, R7, R6, R5 and R4. */ - 800d1c4: 68fb ldr r3, [r7, #12] - 800d1c6: 3b20 subs r3, #32 - 800d1c8: 60fb str r3, [r7, #12] + 800d738: 68fb ldr r3, [r7, #12] + 800d73a: 3b20 subs r3, #32 + 800d73c: 60fb str r3, [r7, #12] return pxTopOfStack; - 800d1ca: 68fb ldr r3, [r7, #12] + 800d73e: 68fb ldr r3, [r7, #12] } - 800d1cc: 4618 mov r0, r3 - 800d1ce: 3714 adds r7, #20 - 800d1d0: 46bd mov sp, r7 - 800d1d2: f85d 7b04 ldr.w r7, [sp], #4 - 800d1d6: 4770 bx lr - 800d1d8: 0800d1dd .word 0x0800d1dd + 800d740: 4618 mov r0, r3 + 800d742: 3714 adds r7, #20 + 800d744: 46bd mov sp, r7 + 800d746: f85d 7b04 ldr.w r7, [sp], #4 + 800d74a: 4770 bx lr + 800d74c: 0800d751 .word 0x0800d751 -0800d1dc : +0800d750 : /*-----------------------------------------------------------*/ static void prvTaskExitError( void ) { - 800d1dc: b480 push {r7} - 800d1de: b085 sub sp, #20 - 800d1e0: af00 add r7, sp, #0 + 800d750: b480 push {r7} + 800d752: b085 sub sp, #20 + 800d754: af00 add r7, sp, #0 volatile uint32_t ulDummy = 0; - 800d1e2: 2300 movs r3, #0 - 800d1e4: 607b str r3, [r7, #4] + 800d756: 2300 movs r3, #0 + 800d758: 607b str r3, [r7, #4] its caller as there is nothing to return to. If a task wants to exit it should instead call vTaskDelete( NULL ). Artificially force an assert() to be triggered if configASSERT() is defined, then stop here so application writers can catch the error. */ configASSERT( uxCriticalNesting == ~0UL ); - 800d1e6: 4b13 ldr r3, [pc, #76] @ (800d234 ) - 800d1e8: 681b ldr r3, [r3, #0] - 800d1ea: f1b3 3fff cmp.w r3, #4294967295 - 800d1ee: d00b beq.n 800d208 + 800d75a: 4b13 ldr r3, [pc, #76] @ (800d7a8 ) + 800d75c: 681b ldr r3, [r3, #0] + 800d75e: f1b3 3fff cmp.w r3, #4294967295 + 800d762: d00b beq.n 800d77c __asm volatile - 800d1f0: f04f 0350 mov.w r3, #80 @ 0x50 - 800d1f4: f383 8811 msr BASEPRI, r3 - 800d1f8: f3bf 8f6f isb sy - 800d1fc: f3bf 8f4f dsb sy - 800d200: 60fb str r3, [r7, #12] + 800d764: f04f 0350 mov.w r3, #80 @ 0x50 + 800d768: f383 8811 msr BASEPRI, r3 + 800d76c: f3bf 8f6f isb sy + 800d770: f3bf 8f4f dsb sy + 800d774: 60fb str r3, [r7, #12] } - 800d202: bf00 nop - 800d204: bf00 nop - 800d206: e7fd b.n 800d204 + 800d776: bf00 nop + 800d778: bf00 nop + 800d77a: e7fd b.n 800d778 __asm volatile - 800d208: f04f 0350 mov.w r3, #80 @ 0x50 - 800d20c: f383 8811 msr BASEPRI, r3 - 800d210: f3bf 8f6f isb sy - 800d214: f3bf 8f4f dsb sy - 800d218: 60bb str r3, [r7, #8] + 800d77c: f04f 0350 mov.w r3, #80 @ 0x50 + 800d780: f383 8811 msr BASEPRI, r3 + 800d784: f3bf 8f6f isb sy + 800d788: f3bf 8f4f dsb sy + 800d78c: 60bb str r3, [r7, #8] } - 800d21a: bf00 nop + 800d78e: bf00 nop portDISABLE_INTERRUPTS(); while( ulDummy == 0 ) - 800d21c: bf00 nop - 800d21e: 687b ldr r3, [r7, #4] - 800d220: 2b00 cmp r3, #0 - 800d222: d0fc beq.n 800d21e + 800d790: bf00 nop + 800d792: 687b ldr r3, [r7, #4] + 800d794: 2b00 cmp r3, #0 + 800d796: d0fc beq.n 800d792 about code appearing after this function is called - making ulDummy volatile makes the compiler think the function could return and therefore not output an 'unreachable code' warning for code that appears after it. */ } } - 800d224: bf00 nop - 800d226: bf00 nop - 800d228: 3714 adds r7, #20 - 800d22a: 46bd mov sp, r7 - 800d22c: f85d 7b04 ldr.w r7, [sp], #4 - 800d230: 4770 bx lr - 800d232: bf00 nop - 800d234: 2000000c .word 0x2000000c - ... + 800d798: bf00 nop + 800d79a: bf00 nop + 800d79c: 3714 adds r7, #20 + 800d79e: 46bd mov sp, r7 + 800d7a0: f85d 7b04 ldr.w r7, [sp], #4 + 800d7a4: 4770 bx lr + 800d7a6: bf00 nop + 800d7a8: 2000000c .word 0x2000000c + 800d7ac: 00000000 .word 0x00000000 -0800d240 : +0800d7b0 : /*-----------------------------------------------------------*/ void vPortSVCHandler( void ) { __asm volatile ( - 800d240: 4b07 ldr r3, [pc, #28] @ (800d260 ) - 800d242: 6819 ldr r1, [r3, #0] - 800d244: 6808 ldr r0, [r1, #0] - 800d246: e8b0 4ff0 ldmia.w r0!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 800d24a: f380 8809 msr PSP, r0 - 800d24e: f3bf 8f6f isb sy - 800d252: f04f 0000 mov.w r0, #0 - 800d256: f380 8811 msr BASEPRI, r0 - 800d25a: 4770 bx lr - 800d25c: f3af 8000 nop.w + 800d7b0: 4b07 ldr r3, [pc, #28] @ (800d7d0 ) + 800d7b2: 6819 ldr r1, [r3, #0] + 800d7b4: 6808 ldr r0, [r1, #0] + 800d7b6: e8b0 4ff0 ldmia.w r0!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800d7ba: f380 8809 msr PSP, r0 + 800d7be: f3bf 8f6f isb sy + 800d7c2: f04f 0000 mov.w r0, #0 + 800d7c6: f380 8811 msr BASEPRI, r0 + 800d7ca: 4770 bx lr + 800d7cc: f3af 8000 nop.w -0800d260 : - 800d260: 200024bc .word 0x200024bc +0800d7d0 : + 800d7d0: 20002504 .word 0x20002504 " bx r14 \n" " \n" " .align 4 \n" "pxCurrentTCBConst2: .word pxCurrentTCB \n" ); } - 800d264: bf00 nop - 800d266: bf00 nop + 800d7d4: bf00 nop + 800d7d6: bf00 nop -0800d268 : +0800d7d8 : { /* Start the first task. This also clears the bit that indicates the FPU is in use in case the FPU was used before the scheduler was started - which would otherwise result in the unnecessary leaving of space in the SVC stack for lazy saving of FPU registers. */ __asm volatile( - 800d268: 4808 ldr r0, [pc, #32] @ (800d28c ) - 800d26a: 6800 ldr r0, [r0, #0] - 800d26c: 6800 ldr r0, [r0, #0] - 800d26e: f380 8808 msr MSP, r0 - 800d272: f04f 0000 mov.w r0, #0 - 800d276: f380 8814 msr CONTROL, r0 - 800d27a: b662 cpsie i - 800d27c: b661 cpsie f - 800d27e: f3bf 8f4f dsb sy - 800d282: f3bf 8f6f isb sy - 800d286: df00 svc 0 - 800d288: bf00 nop + 800d7d8: 4808 ldr r0, [pc, #32] @ (800d7fc ) + 800d7da: 6800 ldr r0, [r0, #0] + 800d7dc: 6800 ldr r0, [r0, #0] + 800d7de: f380 8808 msr MSP, r0 + 800d7e2: f04f 0000 mov.w r0, #0 + 800d7e6: f380 8814 msr CONTROL, r0 + 800d7ea: b662 cpsie i + 800d7ec: b661 cpsie f + 800d7ee: f3bf 8f4f dsb sy + 800d7f2: f3bf 8f6f isb sy + 800d7f6: df00 svc 0 + 800d7f8: bf00 nop " dsb \n" " isb \n" " svc 0 \n" /* System call to start first task. */ " nop \n" ); } - 800d28a: bf00 nop - 800d28c: e000ed08 .word 0xe000ed08 + 800d7fa: bf00 nop + 800d7fc: e000ed08 .word 0xe000ed08 -0800d290 : +0800d800 : /* * See header file for description. */ BaseType_t xPortStartScheduler( void ) { - 800d290: b580 push {r7, lr} - 800d292: b086 sub sp, #24 - 800d294: af00 add r7, sp, #0 + 800d800: b580 push {r7, lr} + 800d802: b086 sub sp, #24 + 800d804: af00 add r7, sp, #0 configASSERT( configMAX_SYSCALL_INTERRUPT_PRIORITY ); /* This port can be used on all revisions of the Cortex-M7 core other than the r0p1 parts. r0p1 parts should use the port from the /source/portable/GCC/ARM_CM7/r0p1 directory. */ configASSERT( portCPUID != portCORTEX_M7_r0p1_ID ); - 800d296: 4b47 ldr r3, [pc, #284] @ (800d3b4 ) - 800d298: 681b ldr r3, [r3, #0] - 800d29a: 4a47 ldr r2, [pc, #284] @ (800d3b8 ) - 800d29c: 4293 cmp r3, r2 - 800d29e: d10b bne.n 800d2b8 + 800d806: 4b47 ldr r3, [pc, #284] @ (800d924 ) + 800d808: 681b ldr r3, [r3, #0] + 800d80a: 4a47 ldr r2, [pc, #284] @ (800d928 ) + 800d80c: 4293 cmp r3, r2 + 800d80e: d10b bne.n 800d828 __asm volatile - 800d2a0: f04f 0350 mov.w r3, #80 @ 0x50 - 800d2a4: f383 8811 msr BASEPRI, r3 - 800d2a8: f3bf 8f6f isb sy - 800d2ac: f3bf 8f4f dsb sy - 800d2b0: 613b str r3, [r7, #16] + 800d810: f04f 0350 mov.w r3, #80 @ 0x50 + 800d814: f383 8811 msr BASEPRI, r3 + 800d818: f3bf 8f6f isb sy + 800d81c: f3bf 8f4f dsb sy + 800d820: 613b str r3, [r7, #16] } - 800d2b2: bf00 nop - 800d2b4: bf00 nop - 800d2b6: e7fd b.n 800d2b4 + 800d822: bf00 nop + 800d824: bf00 nop + 800d826: e7fd b.n 800d824 configASSERT( portCPUID != portCORTEX_M7_r0p0_ID ); - 800d2b8: 4b3e ldr r3, [pc, #248] @ (800d3b4 ) - 800d2ba: 681b ldr r3, [r3, #0] - 800d2bc: 4a3f ldr r2, [pc, #252] @ (800d3bc ) - 800d2be: 4293 cmp r3, r2 - 800d2c0: d10b bne.n 800d2da + 800d828: 4b3e ldr r3, [pc, #248] @ (800d924 ) + 800d82a: 681b ldr r3, [r3, #0] + 800d82c: 4a3f ldr r2, [pc, #252] @ (800d92c ) + 800d82e: 4293 cmp r3, r2 + 800d830: d10b bne.n 800d84a __asm volatile - 800d2c2: f04f 0350 mov.w r3, #80 @ 0x50 - 800d2c6: f383 8811 msr BASEPRI, r3 - 800d2ca: f3bf 8f6f isb sy - 800d2ce: f3bf 8f4f dsb sy - 800d2d2: 60fb str r3, [r7, #12] + 800d832: f04f 0350 mov.w r3, #80 @ 0x50 + 800d836: f383 8811 msr BASEPRI, r3 + 800d83a: f3bf 8f6f isb sy + 800d83e: f3bf 8f4f dsb sy + 800d842: 60fb str r3, [r7, #12] } - 800d2d4: bf00 nop - 800d2d6: bf00 nop - 800d2d8: e7fd b.n 800d2d6 + 800d844: bf00 nop + 800d846: bf00 nop + 800d848: e7fd b.n 800d846 #if( configASSERT_DEFINED == 1 ) { volatile uint32_t ulOriginalPriority; volatile uint8_t * const pucFirstUserPriorityRegister = ( volatile uint8_t * const ) ( portNVIC_IP_REGISTERS_OFFSET_16 + portFIRST_USER_INTERRUPT_NUMBER ); - 800d2da: 4b39 ldr r3, [pc, #228] @ (800d3c0 ) - 800d2dc: 617b str r3, [r7, #20] + 800d84a: 4b39 ldr r3, [pc, #228] @ (800d930 ) + 800d84c: 617b str r3, [r7, #20] functions can be called. ISR safe functions are those that end in "FromISR". FreeRTOS maintains separate thread and ISR API functions to ensure interrupt entry is as fast and simple as possible. Save the interrupt priority value that is about to be clobbered. */ ulOriginalPriority = *pucFirstUserPriorityRegister; - 800d2de: 697b ldr r3, [r7, #20] - 800d2e0: 781b ldrb r3, [r3, #0] - 800d2e2: b2db uxtb r3, r3 - 800d2e4: 607b str r3, [r7, #4] + 800d84e: 697b ldr r3, [r7, #20] + 800d850: 781b ldrb r3, [r3, #0] + 800d852: b2db uxtb r3, r3 + 800d854: 607b str r3, [r7, #4] /* Determine the number of priority bits available. First write to all possible bits. */ *pucFirstUserPriorityRegister = portMAX_8_BIT_VALUE; - 800d2e6: 697b ldr r3, [r7, #20] - 800d2e8: 22ff movs r2, #255 @ 0xff - 800d2ea: 701a strb r2, [r3, #0] + 800d856: 697b ldr r3, [r7, #20] + 800d858: 22ff movs r2, #255 @ 0xff + 800d85a: 701a strb r2, [r3, #0] /* Read the value back to see how many bits stuck. */ ucMaxPriorityValue = *pucFirstUserPriorityRegister; - 800d2ec: 697b ldr r3, [r7, #20] - 800d2ee: 781b ldrb r3, [r3, #0] - 800d2f0: b2db uxtb r3, r3 - 800d2f2: 70fb strb r3, [r7, #3] + 800d85c: 697b ldr r3, [r7, #20] + 800d85e: 781b ldrb r3, [r3, #0] + 800d860: b2db uxtb r3, r3 + 800d862: 70fb strb r3, [r7, #3] /* Use the same mask on the maximum system call priority. */ ucMaxSysCallPriority = configMAX_SYSCALL_INTERRUPT_PRIORITY & ucMaxPriorityValue; - 800d2f4: 78fb ldrb r3, [r7, #3] - 800d2f6: b2db uxtb r3, r3 - 800d2f8: f003 0350 and.w r3, r3, #80 @ 0x50 - 800d2fc: b2da uxtb r2, r3 - 800d2fe: 4b31 ldr r3, [pc, #196] @ (800d3c4 ) - 800d300: 701a strb r2, [r3, #0] + 800d864: 78fb ldrb r3, [r7, #3] + 800d866: b2db uxtb r3, r3 + 800d868: f003 0350 and.w r3, r3, #80 @ 0x50 + 800d86c: b2da uxtb r2, r3 + 800d86e: 4b31 ldr r3, [pc, #196] @ (800d934 ) + 800d870: 701a strb r2, [r3, #0] /* Calculate the maximum acceptable priority group value for the number of bits read back. */ ulMaxPRIGROUPValue = portMAX_PRIGROUP_BITS; - 800d302: 4b31 ldr r3, [pc, #196] @ (800d3c8 ) - 800d304: 2207 movs r2, #7 - 800d306: 601a str r2, [r3, #0] + 800d872: 4b31 ldr r3, [pc, #196] @ (800d938 ) + 800d874: 2207 movs r2, #7 + 800d876: 601a str r2, [r3, #0] while( ( ucMaxPriorityValue & portTOP_BIT_OF_BYTE ) == portTOP_BIT_OF_BYTE ) - 800d308: e009 b.n 800d31e + 800d878: e009 b.n 800d88e { ulMaxPRIGROUPValue--; - 800d30a: 4b2f ldr r3, [pc, #188] @ (800d3c8 ) - 800d30c: 681b ldr r3, [r3, #0] - 800d30e: 3b01 subs r3, #1 - 800d310: 4a2d ldr r2, [pc, #180] @ (800d3c8 ) - 800d312: 6013 str r3, [r2, #0] + 800d87a: 4b2f ldr r3, [pc, #188] @ (800d938 ) + 800d87c: 681b ldr r3, [r3, #0] + 800d87e: 3b01 subs r3, #1 + 800d880: 4a2d ldr r2, [pc, #180] @ (800d938 ) + 800d882: 6013 str r3, [r2, #0] ucMaxPriorityValue <<= ( uint8_t ) 0x01; - 800d314: 78fb ldrb r3, [r7, #3] - 800d316: b2db uxtb r3, r3 - 800d318: 005b lsls r3, r3, #1 - 800d31a: b2db uxtb r3, r3 - 800d31c: 70fb strb r3, [r7, #3] + 800d884: 78fb ldrb r3, [r7, #3] + 800d886: b2db uxtb r3, r3 + 800d888: 005b lsls r3, r3, #1 + 800d88a: b2db uxtb r3, r3 + 800d88c: 70fb strb r3, [r7, #3] while( ( ucMaxPriorityValue & portTOP_BIT_OF_BYTE ) == portTOP_BIT_OF_BYTE ) - 800d31e: 78fb ldrb r3, [r7, #3] - 800d320: b2db uxtb r3, r3 - 800d322: f003 0380 and.w r3, r3, #128 @ 0x80 - 800d326: 2b80 cmp r3, #128 @ 0x80 - 800d328: d0ef beq.n 800d30a + 800d88e: 78fb ldrb r3, [r7, #3] + 800d890: b2db uxtb r3, r3 + 800d892: f003 0380 and.w r3, r3, #128 @ 0x80 + 800d896: 2b80 cmp r3, #128 @ 0x80 + 800d898: d0ef beq.n 800d87a #ifdef configPRIO_BITS { /* Check the FreeRTOS configuration that defines the number of priority bits matches the number of priority bits actually queried from the hardware. */ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == configPRIO_BITS ); - 800d32a: 4b27 ldr r3, [pc, #156] @ (800d3c8 ) - 800d32c: 681b ldr r3, [r3, #0] - 800d32e: f1c3 0307 rsb r3, r3, #7 - 800d332: 2b04 cmp r3, #4 - 800d334: d00b beq.n 800d34e + 800d89a: 4b27 ldr r3, [pc, #156] @ (800d938 ) + 800d89c: 681b ldr r3, [r3, #0] + 800d89e: f1c3 0307 rsb r3, r3, #7 + 800d8a2: 2b04 cmp r3, #4 + 800d8a4: d00b beq.n 800d8be __asm volatile - 800d336: f04f 0350 mov.w r3, #80 @ 0x50 - 800d33a: f383 8811 msr BASEPRI, r3 - 800d33e: f3bf 8f6f isb sy - 800d342: f3bf 8f4f dsb sy - 800d346: 60bb str r3, [r7, #8] + 800d8a6: f04f 0350 mov.w r3, #80 @ 0x50 + 800d8aa: f383 8811 msr BASEPRI, r3 + 800d8ae: f3bf 8f6f isb sy + 800d8b2: f3bf 8f4f dsb sy + 800d8b6: 60bb str r3, [r7, #8] } - 800d348: bf00 nop - 800d34a: bf00 nop - 800d34c: e7fd b.n 800d34a + 800d8b8: bf00 nop + 800d8ba: bf00 nop + 800d8bc: e7fd b.n 800d8ba } #endif /* Shift the priority group value back to its position within the AIRCR register. */ ulMaxPRIGROUPValue <<= portPRIGROUP_SHIFT; - 800d34e: 4b1e ldr r3, [pc, #120] @ (800d3c8 ) - 800d350: 681b ldr r3, [r3, #0] - 800d352: 021b lsls r3, r3, #8 - 800d354: 4a1c ldr r2, [pc, #112] @ (800d3c8 ) - 800d356: 6013 str r3, [r2, #0] + 800d8be: 4b1e ldr r3, [pc, #120] @ (800d938 ) + 800d8c0: 681b ldr r3, [r3, #0] + 800d8c2: 021b lsls r3, r3, #8 + 800d8c4: 4a1c ldr r2, [pc, #112] @ (800d938 ) + 800d8c6: 6013 str r3, [r2, #0] ulMaxPRIGROUPValue &= portPRIORITY_GROUP_MASK; - 800d358: 4b1b ldr r3, [pc, #108] @ (800d3c8 ) - 800d35a: 681b ldr r3, [r3, #0] - 800d35c: f403 63e0 and.w r3, r3, #1792 @ 0x700 - 800d360: 4a19 ldr r2, [pc, #100] @ (800d3c8 ) - 800d362: 6013 str r3, [r2, #0] + 800d8c8: 4b1b ldr r3, [pc, #108] @ (800d938 ) + 800d8ca: 681b ldr r3, [r3, #0] + 800d8cc: f403 63e0 and.w r3, r3, #1792 @ 0x700 + 800d8d0: 4a19 ldr r2, [pc, #100] @ (800d938 ) + 800d8d2: 6013 str r3, [r2, #0] /* Restore the clobbered interrupt priority register to its original value. */ *pucFirstUserPriorityRegister = ulOriginalPriority; - 800d364: 687b ldr r3, [r7, #4] - 800d366: b2da uxtb r2, r3 - 800d368: 697b ldr r3, [r7, #20] - 800d36a: 701a strb r2, [r3, #0] + 800d8d4: 687b ldr r3, [r7, #4] + 800d8d6: b2da uxtb r2, r3 + 800d8d8: 697b ldr r3, [r7, #20] + 800d8da: 701a strb r2, [r3, #0] } #endif /* conifgASSERT_DEFINED */ /* Make PendSV and SysTick the lowest priority interrupts. */ portNVIC_SYSPRI2_REG |= portNVIC_PENDSV_PRI; - 800d36c: 4b17 ldr r3, [pc, #92] @ (800d3cc ) - 800d36e: 681b ldr r3, [r3, #0] - 800d370: 4a16 ldr r2, [pc, #88] @ (800d3cc ) - 800d372: f443 0370 orr.w r3, r3, #15728640 @ 0xf00000 - 800d376: 6013 str r3, [r2, #0] + 800d8dc: 4b17 ldr r3, [pc, #92] @ (800d93c ) + 800d8de: 681b ldr r3, [r3, #0] + 800d8e0: 4a16 ldr r2, [pc, #88] @ (800d93c ) + 800d8e2: f443 0370 orr.w r3, r3, #15728640 @ 0xf00000 + 800d8e6: 6013 str r3, [r2, #0] portNVIC_SYSPRI2_REG |= portNVIC_SYSTICK_PRI; - 800d378: 4b14 ldr r3, [pc, #80] @ (800d3cc ) - 800d37a: 681b ldr r3, [r3, #0] - 800d37c: 4a13 ldr r2, [pc, #76] @ (800d3cc ) - 800d37e: f043 4370 orr.w r3, r3, #4026531840 @ 0xf0000000 - 800d382: 6013 str r3, [r2, #0] + 800d8e8: 4b14 ldr r3, [pc, #80] @ (800d93c ) + 800d8ea: 681b ldr r3, [r3, #0] + 800d8ec: 4a13 ldr r2, [pc, #76] @ (800d93c ) + 800d8ee: f043 4370 orr.w r3, r3, #4026531840 @ 0xf0000000 + 800d8f2: 6013 str r3, [r2, #0] /* Start the timer that generates the tick ISR. Interrupts are disabled here already. */ vPortSetupTimerInterrupt(); - 800d384: f000 f8da bl 800d53c + 800d8f4: f000 f8da bl 800daac /* Initialise the critical nesting count ready for the first task. */ uxCriticalNesting = 0; - 800d388: 4b11 ldr r3, [pc, #68] @ (800d3d0 ) - 800d38a: 2200 movs r2, #0 - 800d38c: 601a str r2, [r3, #0] + 800d8f8: 4b11 ldr r3, [pc, #68] @ (800d940 ) + 800d8fa: 2200 movs r2, #0 + 800d8fc: 601a str r2, [r3, #0] /* Ensure the VFP is enabled - it should be anyway. */ vPortEnableVFP(); - 800d38e: f000 f8f9 bl 800d584 + 800d8fe: f000 f8f9 bl 800daf4 /* Lazy save always. */ *( portFPCCR ) |= portASPEN_AND_LSPEN_BITS; - 800d392: 4b10 ldr r3, [pc, #64] @ (800d3d4 ) - 800d394: 681b ldr r3, [r3, #0] - 800d396: 4a0f ldr r2, [pc, #60] @ (800d3d4 ) - 800d398: f043 4340 orr.w r3, r3, #3221225472 @ 0xc0000000 - 800d39c: 6013 str r3, [r2, #0] + 800d902: 4b10 ldr r3, [pc, #64] @ (800d944 ) + 800d904: 681b ldr r3, [r3, #0] + 800d906: 4a0f ldr r2, [pc, #60] @ (800d944 ) + 800d908: f043 4340 orr.w r3, r3, #3221225472 @ 0xc0000000 + 800d90c: 6013 str r3, [r2, #0] /* Start the first task. */ prvPortStartFirstTask(); - 800d39e: f7ff ff63 bl 800d268 + 800d90e: f7ff ff63 bl 800d7d8 exit error function to prevent compiler warnings about a static function not being called in the case that the application writer overrides this functionality by defining configTASK_RETURN_ADDRESS. Call vTaskSwitchContext() so link time optimisation does not remove the symbol. */ vTaskSwitchContext(); - 800d3a2: f7ff fd41 bl 800ce28 + 800d912: f7ff fd43 bl 800d39c prvTaskExitError(); - 800d3a6: f7ff ff19 bl 800d1dc + 800d916: f7ff ff1b bl 800d750 /* Should not get here! */ return 0; - 800d3aa: 2300 movs r3, #0 + 800d91a: 2300 movs r3, #0 } - 800d3ac: 4618 mov r0, r3 - 800d3ae: 3718 adds r7, #24 - 800d3b0: 46bd mov sp, r7 - 800d3b2: bd80 pop {r7, pc} - 800d3b4: e000ed00 .word 0xe000ed00 - 800d3b8: 410fc271 .word 0x410fc271 - 800d3bc: 410fc270 .word 0x410fc270 - 800d3c0: e000e400 .word 0xe000e400 - 800d3c4: 200025e8 .word 0x200025e8 - 800d3c8: 200025ec .word 0x200025ec - 800d3cc: e000ed20 .word 0xe000ed20 - 800d3d0: 2000000c .word 0x2000000c - 800d3d4: e000ef34 .word 0xe000ef34 + 800d91c: 4618 mov r0, r3 + 800d91e: 3718 adds r7, #24 + 800d920: 46bd mov sp, r7 + 800d922: bd80 pop {r7, pc} + 800d924: e000ed00 .word 0xe000ed00 + 800d928: 410fc271 .word 0x410fc271 + 800d92c: 410fc270 .word 0x410fc270 + 800d930: e000e400 .word 0xe000e400 + 800d934: 20002630 .word 0x20002630 + 800d938: 20002634 .word 0x20002634 + 800d93c: e000ed20 .word 0xe000ed20 + 800d940: 2000000c .word 0x2000000c + 800d944: e000ef34 .word 0xe000ef34 -0800d3d8 : +0800d948 : configASSERT( uxCriticalNesting == 1000UL ); } /*-----------------------------------------------------------*/ void vPortEnterCritical( void ) { - 800d3d8: b480 push {r7} - 800d3da: b083 sub sp, #12 - 800d3dc: af00 add r7, sp, #0 + 800d948: b480 push {r7} + 800d94a: b083 sub sp, #12 + 800d94c: af00 add r7, sp, #0 __asm volatile - 800d3de: f04f 0350 mov.w r3, #80 @ 0x50 - 800d3e2: f383 8811 msr BASEPRI, r3 - 800d3e6: f3bf 8f6f isb sy - 800d3ea: f3bf 8f4f dsb sy - 800d3ee: 607b str r3, [r7, #4] + 800d94e: f04f 0350 mov.w r3, #80 @ 0x50 + 800d952: f383 8811 msr BASEPRI, r3 + 800d956: f3bf 8f6f isb sy + 800d95a: f3bf 8f4f dsb sy + 800d95e: 607b str r3, [r7, #4] } - 800d3f0: bf00 nop + 800d960: bf00 nop portDISABLE_INTERRUPTS(); uxCriticalNesting++; - 800d3f2: 4b10 ldr r3, [pc, #64] @ (800d434 ) - 800d3f4: 681b ldr r3, [r3, #0] - 800d3f6: 3301 adds r3, #1 - 800d3f8: 4a0e ldr r2, [pc, #56] @ (800d434 ) - 800d3fa: 6013 str r3, [r2, #0] + 800d962: 4b10 ldr r3, [pc, #64] @ (800d9a4 ) + 800d964: 681b ldr r3, [r3, #0] + 800d966: 3301 adds r3, #1 + 800d968: 4a0e ldr r2, [pc, #56] @ (800d9a4 ) + 800d96a: 6013 str r3, [r2, #0] /* This is not the interrupt safe version of the enter critical function so assert() if it is being called from an interrupt context. Only API functions that end in "FromISR" can be used in an interrupt. Only assert if the critical nesting count is 1 to protect against recursive calls if the assert function also uses a critical section. */ if( uxCriticalNesting == 1 ) - 800d3fc: 4b0d ldr r3, [pc, #52] @ (800d434 ) - 800d3fe: 681b ldr r3, [r3, #0] - 800d400: 2b01 cmp r3, #1 - 800d402: d110 bne.n 800d426 + 800d96c: 4b0d ldr r3, [pc, #52] @ (800d9a4 ) + 800d96e: 681b ldr r3, [r3, #0] + 800d970: 2b01 cmp r3, #1 + 800d972: d110 bne.n 800d996 { configASSERT( ( portNVIC_INT_CTRL_REG & portVECTACTIVE_MASK ) == 0 ); - 800d404: 4b0c ldr r3, [pc, #48] @ (800d438 ) - 800d406: 681b ldr r3, [r3, #0] - 800d408: b2db uxtb r3, r3 - 800d40a: 2b00 cmp r3, #0 - 800d40c: d00b beq.n 800d426 + 800d974: 4b0c ldr r3, [pc, #48] @ (800d9a8 ) + 800d976: 681b ldr r3, [r3, #0] + 800d978: b2db uxtb r3, r3 + 800d97a: 2b00 cmp r3, #0 + 800d97c: d00b beq.n 800d996 __asm volatile - 800d40e: f04f 0350 mov.w r3, #80 @ 0x50 - 800d412: f383 8811 msr BASEPRI, r3 - 800d416: f3bf 8f6f isb sy - 800d41a: f3bf 8f4f dsb sy - 800d41e: 603b str r3, [r7, #0] + 800d97e: f04f 0350 mov.w r3, #80 @ 0x50 + 800d982: f383 8811 msr BASEPRI, r3 + 800d986: f3bf 8f6f isb sy + 800d98a: f3bf 8f4f dsb sy + 800d98e: 603b str r3, [r7, #0] } - 800d420: bf00 nop - 800d422: bf00 nop - 800d424: e7fd b.n 800d422 + 800d990: bf00 nop + 800d992: bf00 nop + 800d994: e7fd b.n 800d992 } } - 800d426: bf00 nop - 800d428: 370c adds r7, #12 - 800d42a: 46bd mov sp, r7 - 800d42c: f85d 7b04 ldr.w r7, [sp], #4 - 800d430: 4770 bx lr - 800d432: bf00 nop - 800d434: 2000000c .word 0x2000000c - 800d438: e000ed04 .word 0xe000ed04 + 800d996: bf00 nop + 800d998: 370c adds r7, #12 + 800d99a: 46bd mov sp, r7 + 800d99c: f85d 7b04 ldr.w r7, [sp], #4 + 800d9a0: 4770 bx lr + 800d9a2: bf00 nop + 800d9a4: 2000000c .word 0x2000000c + 800d9a8: e000ed04 .word 0xe000ed04 -0800d43c : +0800d9ac : /*-----------------------------------------------------------*/ void vPortExitCritical( void ) { - 800d43c: b480 push {r7} - 800d43e: b083 sub sp, #12 - 800d440: af00 add r7, sp, #0 + 800d9ac: b480 push {r7} + 800d9ae: b083 sub sp, #12 + 800d9b0: af00 add r7, sp, #0 configASSERT( uxCriticalNesting ); - 800d442: 4b12 ldr r3, [pc, #72] @ (800d48c ) - 800d444: 681b ldr r3, [r3, #0] - 800d446: 2b00 cmp r3, #0 - 800d448: d10b bne.n 800d462 + 800d9b2: 4b12 ldr r3, [pc, #72] @ (800d9fc ) + 800d9b4: 681b ldr r3, [r3, #0] + 800d9b6: 2b00 cmp r3, #0 + 800d9b8: d10b bne.n 800d9d2 __asm volatile - 800d44a: f04f 0350 mov.w r3, #80 @ 0x50 - 800d44e: f383 8811 msr BASEPRI, r3 - 800d452: f3bf 8f6f isb sy - 800d456: f3bf 8f4f dsb sy - 800d45a: 607b str r3, [r7, #4] + 800d9ba: f04f 0350 mov.w r3, #80 @ 0x50 + 800d9be: f383 8811 msr BASEPRI, r3 + 800d9c2: f3bf 8f6f isb sy + 800d9c6: f3bf 8f4f dsb sy + 800d9ca: 607b str r3, [r7, #4] } - 800d45c: bf00 nop - 800d45e: bf00 nop - 800d460: e7fd b.n 800d45e + 800d9cc: bf00 nop + 800d9ce: bf00 nop + 800d9d0: e7fd b.n 800d9ce uxCriticalNesting--; - 800d462: 4b0a ldr r3, [pc, #40] @ (800d48c ) - 800d464: 681b ldr r3, [r3, #0] - 800d466: 3b01 subs r3, #1 - 800d468: 4a08 ldr r2, [pc, #32] @ (800d48c ) - 800d46a: 6013 str r3, [r2, #0] + 800d9d2: 4b0a ldr r3, [pc, #40] @ (800d9fc ) + 800d9d4: 681b ldr r3, [r3, #0] + 800d9d6: 3b01 subs r3, #1 + 800d9d8: 4a08 ldr r2, [pc, #32] @ (800d9fc ) + 800d9da: 6013 str r3, [r2, #0] if( uxCriticalNesting == 0 ) - 800d46c: 4b07 ldr r3, [pc, #28] @ (800d48c ) - 800d46e: 681b ldr r3, [r3, #0] - 800d470: 2b00 cmp r3, #0 - 800d472: d105 bne.n 800d480 - 800d474: 2300 movs r3, #0 - 800d476: 603b str r3, [r7, #0] + 800d9dc: 4b07 ldr r3, [pc, #28] @ (800d9fc ) + 800d9de: 681b ldr r3, [r3, #0] + 800d9e0: 2b00 cmp r3, #0 + 800d9e2: d105 bne.n 800d9f0 + 800d9e4: 2300 movs r3, #0 + 800d9e6: 603b str r3, [r7, #0] } /*-----------------------------------------------------------*/ portFORCE_INLINE static void vPortSetBASEPRI( uint32_t ulNewMaskValue ) { __asm volatile - 800d478: 683b ldr r3, [r7, #0] - 800d47a: f383 8811 msr BASEPRI, r3 + 800d9e8: 683b ldr r3, [r7, #0] + 800d9ea: f383 8811 msr BASEPRI, r3 ( " msr basepri, %0 " :: "r" ( ulNewMaskValue ) : "memory" ); } - 800d47e: bf00 nop + 800d9ee: bf00 nop { portENABLE_INTERRUPTS(); } } - 800d480: bf00 nop - 800d482: 370c adds r7, #12 - 800d484: 46bd mov sp, r7 - 800d486: f85d 7b04 ldr.w r7, [sp], #4 - 800d48a: 4770 bx lr - 800d48c: 2000000c .word 0x2000000c + 800d9f0: bf00 nop + 800d9f2: 370c adds r7, #12 + 800d9f4: 46bd mov sp, r7 + 800d9f6: f85d 7b04 ldr.w r7, [sp], #4 + 800d9fa: 4770 bx lr + 800d9fc: 2000000c .word 0x2000000c -0800d490 : +0800da00 : void xPortPendSVHandler( void ) { /* This is a naked function. */ __asm volatile - 800d490: f3ef 8009 mrs r0, PSP - 800d494: f3bf 8f6f isb sy - 800d498: 4b15 ldr r3, [pc, #84] @ (800d4f0 ) - 800d49a: 681a ldr r2, [r3, #0] - 800d49c: f01e 0f10 tst.w lr, #16 - 800d4a0: bf08 it eq - 800d4a2: ed20 8a10 vstmdbeq r0!, {s16-s31} - 800d4a6: e920 4ff0 stmdb r0!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 800d4aa: 6010 str r0, [r2, #0] - 800d4ac: e92d 0009 stmdb sp!, {r0, r3} - 800d4b0: f04f 0050 mov.w r0, #80 @ 0x50 - 800d4b4: f380 8811 msr BASEPRI, r0 - 800d4b8: f3bf 8f4f dsb sy - 800d4bc: f3bf 8f6f isb sy - 800d4c0: f7ff fcb2 bl 800ce28 - 800d4c4: f04f 0000 mov.w r0, #0 - 800d4c8: f380 8811 msr BASEPRI, r0 - 800d4cc: bc09 pop {r0, r3} - 800d4ce: 6819 ldr r1, [r3, #0] - 800d4d0: 6808 ldr r0, [r1, #0] - 800d4d2: e8b0 4ff0 ldmia.w r0!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 800d4d6: f01e 0f10 tst.w lr, #16 - 800d4da: bf08 it eq - 800d4dc: ecb0 8a10 vldmiaeq r0!, {s16-s31} - 800d4e0: f380 8809 msr PSP, r0 - 800d4e4: f3bf 8f6f isb sy - 800d4e8: 4770 bx lr - 800d4ea: bf00 nop - 800d4ec: f3af 8000 nop.w + 800da00: f3ef 8009 mrs r0, PSP + 800da04: f3bf 8f6f isb sy + 800da08: 4b15 ldr r3, [pc, #84] @ (800da60 ) + 800da0a: 681a ldr r2, [r3, #0] + 800da0c: f01e 0f10 tst.w lr, #16 + 800da10: bf08 it eq + 800da12: ed20 8a10 vstmdbeq r0!, {s16-s31} + 800da16: e920 4ff0 stmdb r0!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800da1a: 6010 str r0, [r2, #0] + 800da1c: e92d 0009 stmdb sp!, {r0, r3} + 800da20: f04f 0050 mov.w r0, #80 @ 0x50 + 800da24: f380 8811 msr BASEPRI, r0 + 800da28: f3bf 8f4f dsb sy + 800da2c: f3bf 8f6f isb sy + 800da30: f7ff fcb4 bl 800d39c + 800da34: f04f 0000 mov.w r0, #0 + 800da38: f380 8811 msr BASEPRI, r0 + 800da3c: bc09 pop {r0, r3} + 800da3e: 6819 ldr r1, [r3, #0] + 800da40: 6808 ldr r0, [r1, #0] + 800da42: e8b0 4ff0 ldmia.w r0!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800da46: f01e 0f10 tst.w lr, #16 + 800da4a: bf08 it eq + 800da4c: ecb0 8a10 vldmiaeq r0!, {s16-s31} + 800da50: f380 8809 msr PSP, r0 + 800da54: f3bf 8f6f isb sy + 800da58: 4770 bx lr + 800da5a: bf00 nop + 800da5c: f3af 8000 nop.w -0800d4f0 : - 800d4f0: 200024bc .word 0x200024bc +0800da60 : + 800da60: 20002504 .word 0x20002504 " \n" " .align 4 \n" "pxCurrentTCBConst: .word pxCurrentTCB \n" ::"i"(configMAX_SYSCALL_INTERRUPT_PRIORITY) ); } - 800d4f4: bf00 nop - 800d4f6: bf00 nop + 800da64: bf00 nop + 800da66: bf00 nop -0800d4f8 : +0800da68 : /*-----------------------------------------------------------*/ void xPortSysTickHandler( void ) { - 800d4f8: b580 push {r7, lr} - 800d4fa: b082 sub sp, #8 - 800d4fc: af00 add r7, sp, #0 + 800da68: b580 push {r7, lr} + 800da6a: b082 sub sp, #8 + 800da6c: af00 add r7, sp, #0 __asm volatile - 800d4fe: f04f 0350 mov.w r3, #80 @ 0x50 - 800d502: f383 8811 msr BASEPRI, r3 - 800d506: f3bf 8f6f isb sy - 800d50a: f3bf 8f4f dsb sy - 800d50e: 607b str r3, [r7, #4] + 800da6e: f04f 0350 mov.w r3, #80 @ 0x50 + 800da72: f383 8811 msr BASEPRI, r3 + 800da76: f3bf 8f6f isb sy + 800da7a: f3bf 8f4f dsb sy + 800da7e: 607b str r3, [r7, #4] } - 800d510: bf00 nop + 800da80: bf00 nop save and then restore the interrupt mask value as its value is already known. */ portDISABLE_INTERRUPTS(); { /* Increment the RTOS tick. */ if( xTaskIncrementTick() != pdFALSE ) - 800d512: f7ff fbcf bl 800ccb4 - 800d516: 4603 mov r3, r0 - 800d518: 2b00 cmp r3, #0 - 800d51a: d003 beq.n 800d524 + 800da82: f7ff fbd1 bl 800d228 + 800da86: 4603 mov r3, r0 + 800da88: 2b00 cmp r3, #0 + 800da8a: d003 beq.n 800da94 { /* A context switch is required. Context switching is performed in the PendSV interrupt. Pend the PendSV interrupt. */ portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT; - 800d51c: 4b06 ldr r3, [pc, #24] @ (800d538 ) - 800d51e: f04f 5280 mov.w r2, #268435456 @ 0x10000000 - 800d522: 601a str r2, [r3, #0] - 800d524: 2300 movs r3, #0 - 800d526: 603b str r3, [r7, #0] + 800da8c: 4b06 ldr r3, [pc, #24] @ (800daa8 ) + 800da8e: f04f 5280 mov.w r2, #268435456 @ 0x10000000 + 800da92: 601a str r2, [r3, #0] + 800da94: 2300 movs r3, #0 + 800da96: 603b str r3, [r7, #0] __asm volatile - 800d528: 683b ldr r3, [r7, #0] - 800d52a: f383 8811 msr BASEPRI, r3 + 800da98: 683b ldr r3, [r7, #0] + 800da9a: f383 8811 msr BASEPRI, r3 } - 800d52e: bf00 nop + 800da9e: bf00 nop } } portENABLE_INTERRUPTS(); } - 800d530: bf00 nop - 800d532: 3708 adds r7, #8 - 800d534: 46bd mov sp, r7 - 800d536: bd80 pop {r7, pc} - 800d538: e000ed04 .word 0xe000ed04 + 800daa0: bf00 nop + 800daa2: 3708 adds r7, #8 + 800daa4: 46bd mov sp, r7 + 800daa6: bd80 pop {r7, pc} + 800daa8: e000ed04 .word 0xe000ed04 -0800d53c : +0800daac : /* * Setup the systick timer to generate the tick interrupts at the required * frequency. */ __attribute__(( weak )) void vPortSetupTimerInterrupt( void ) { - 800d53c: b480 push {r7} - 800d53e: af00 add r7, sp, #0 + 800daac: b480 push {r7} + 800daae: af00 add r7, sp, #0 ulStoppedTimerCompensation = portMISSED_COUNTS_FACTOR / ( configCPU_CLOCK_HZ / configSYSTICK_CLOCK_HZ ); } #endif /* configUSE_TICKLESS_IDLE */ /* Stop and clear the SysTick. */ portNVIC_SYSTICK_CTRL_REG = 0UL; - 800d540: 4b0b ldr r3, [pc, #44] @ (800d570 ) - 800d542: 2200 movs r2, #0 - 800d544: 601a str r2, [r3, #0] + 800dab0: 4b0b ldr r3, [pc, #44] @ (800dae0 ) + 800dab2: 2200 movs r2, #0 + 800dab4: 601a str r2, [r3, #0] portNVIC_SYSTICK_CURRENT_VALUE_REG = 0UL; - 800d546: 4b0b ldr r3, [pc, #44] @ (800d574 ) - 800d548: 2200 movs r2, #0 - 800d54a: 601a str r2, [r3, #0] + 800dab6: 4b0b ldr r3, [pc, #44] @ (800dae4 ) + 800dab8: 2200 movs r2, #0 + 800daba: 601a str r2, [r3, #0] /* Configure SysTick to interrupt at the requested rate. */ portNVIC_SYSTICK_LOAD_REG = ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL; - 800d54c: 4b0a ldr r3, [pc, #40] @ (800d578 ) - 800d54e: 681b ldr r3, [r3, #0] - 800d550: 4a0a ldr r2, [pc, #40] @ (800d57c ) - 800d552: fba2 2303 umull r2, r3, r2, r3 - 800d556: 099b lsrs r3, r3, #6 - 800d558: 4a09 ldr r2, [pc, #36] @ (800d580 ) - 800d55a: 3b01 subs r3, #1 - 800d55c: 6013 str r3, [r2, #0] + 800dabc: 4b0a ldr r3, [pc, #40] @ (800dae8 ) + 800dabe: 681b ldr r3, [r3, #0] + 800dac0: 4a0a ldr r2, [pc, #40] @ (800daec ) + 800dac2: fba2 2303 umull r2, r3, r2, r3 + 800dac6: 099b lsrs r3, r3, #6 + 800dac8: 4a09 ldr r2, [pc, #36] @ (800daf0 ) + 800daca: 3b01 subs r3, #1 + 800dacc: 6013 str r3, [r2, #0] portNVIC_SYSTICK_CTRL_REG = ( portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT | portNVIC_SYSTICK_ENABLE_BIT ); - 800d55e: 4b04 ldr r3, [pc, #16] @ (800d570 ) - 800d560: 2207 movs r2, #7 - 800d562: 601a str r2, [r3, #0] + 800dace: 4b04 ldr r3, [pc, #16] @ (800dae0 ) + 800dad0: 2207 movs r2, #7 + 800dad2: 601a str r2, [r3, #0] } - 800d564: bf00 nop - 800d566: 46bd mov sp, r7 - 800d568: f85d 7b04 ldr.w r7, [sp], #4 - 800d56c: 4770 bx lr - 800d56e: bf00 nop - 800d570: e000e010 .word 0xe000e010 - 800d574: e000e018 .word 0xe000e018 - 800d578: 20000000 .word 0x20000000 - 800d57c: 10624dd3 .word 0x10624dd3 - 800d580: e000e014 .word 0xe000e014 + 800dad4: bf00 nop + 800dad6: 46bd mov sp, r7 + 800dad8: f85d 7b04 ldr.w r7, [sp], #4 + 800dadc: 4770 bx lr + 800dade: bf00 nop + 800dae0: e000e010 .word 0xe000e010 + 800dae4: e000e018 .word 0xe000e018 + 800dae8: 20000000 .word 0x20000000 + 800daec: 10624dd3 .word 0x10624dd3 + 800daf0: e000e014 .word 0xe000e014 -0800d584 : +0800daf4 : /*-----------------------------------------------------------*/ /* This is a naked function. */ static void vPortEnableVFP( void ) { __asm volatile - 800d584: f8df 000c ldr.w r0, [pc, #12] @ 800d594 - 800d588: 6801 ldr r1, [r0, #0] - 800d58a: f441 0170 orr.w r1, r1, #15728640 @ 0xf00000 - 800d58e: 6001 str r1, [r0, #0] - 800d590: 4770 bx lr + 800daf4: f8df 000c ldr.w r0, [pc, #12] @ 800db04 + 800daf8: 6801 ldr r1, [r0, #0] + 800dafa: f441 0170 orr.w r1, r1, #15728640 @ 0xf00000 + 800dafe: 6001 str r1, [r0, #0] + 800db00: 4770 bx lr " \n" " orr r1, r1, #( 0xf << 20 ) \n" /* Enable CP10 and CP11 coprocessors, then save back. */ " str r1, [r0] \n" " bx r14 " ); } - 800d592: bf00 nop - 800d594: e000ed88 .word 0xe000ed88 + 800db02: bf00 nop + 800db04: e000ed88 .word 0xe000ed88 -0800d598 : +0800db08 : static size_t xBlockAllocatedBit = 0; /*-----------------------------------------------------------*/ void *pvPortMalloc( size_t xWantedSize ) { - 800d598: b580 push {r7, lr} - 800d59a: b08a sub sp, #40 @ 0x28 - 800d59c: af00 add r7, sp, #0 - 800d59e: 6078 str r0, [r7, #4] + 800db08: b580 push {r7, lr} + 800db0a: b08a sub sp, #40 @ 0x28 + 800db0c: af00 add r7, sp, #0 + 800db0e: 6078 str r0, [r7, #4] BlockLink_t *pxBlock, *pxPreviousBlock, *pxNewBlockLink; void *pvReturn = NULL; - 800d5a0: 2300 movs r3, #0 - 800d5a2: 61fb str r3, [r7, #28] + 800db10: 2300 movs r3, #0 + 800db12: 61fb str r3, [r7, #28] vTaskSuspendAll(); - 800d5a4: f7ff fada bl 800cb5c + 800db14: f7ff fadc bl 800d0d0 { /* If this is the first call to malloc then the heap will require initialisation to setup the list of free blocks. */ if( pxEnd == NULL ) - 800d5a8: 4b5c ldr r3, [pc, #368] @ (800d71c ) - 800d5aa: 681b ldr r3, [r3, #0] - 800d5ac: 2b00 cmp r3, #0 - 800d5ae: d101 bne.n 800d5b4 + 800db18: 4b5c ldr r3, [pc, #368] @ (800dc8c ) + 800db1a: 681b ldr r3, [r3, #0] + 800db1c: 2b00 cmp r3, #0 + 800db1e: d101 bne.n 800db24 { prvHeapInit(); - 800d5b0: f000 f924 bl 800d7fc + 800db20: f000 f924 bl 800dd6c /* Check the requested block size is not so large that the top bit is set. The top bit of the block size member of the BlockLink_t structure is used to determine who owns the block - the application or the kernel, so it must be free. */ if( ( xWantedSize & xBlockAllocatedBit ) == 0 ) - 800d5b4: 4b5a ldr r3, [pc, #360] @ (800d720 ) - 800d5b6: 681a ldr r2, [r3, #0] - 800d5b8: 687b ldr r3, [r7, #4] - 800d5ba: 4013 ands r3, r2 - 800d5bc: 2b00 cmp r3, #0 - 800d5be: f040 8095 bne.w 800d6ec + 800db24: 4b5a ldr r3, [pc, #360] @ (800dc90 ) + 800db26: 681a ldr r2, [r3, #0] + 800db28: 687b ldr r3, [r7, #4] + 800db2a: 4013 ands r3, r2 + 800db2c: 2b00 cmp r3, #0 + 800db2e: f040 8095 bne.w 800dc5c { /* The wanted size is increased so it can contain a BlockLink_t structure in addition to the requested amount of bytes. */ if( xWantedSize > 0 ) - 800d5c2: 687b ldr r3, [r7, #4] - 800d5c4: 2b00 cmp r3, #0 - 800d5c6: d01e beq.n 800d606 + 800db32: 687b ldr r3, [r7, #4] + 800db34: 2b00 cmp r3, #0 + 800db36: d01e beq.n 800db76 { xWantedSize += xHeapStructSize; - 800d5c8: 2208 movs r2, #8 - 800d5ca: 687b ldr r3, [r7, #4] - 800d5cc: 4413 add r3, r2 - 800d5ce: 607b str r3, [r7, #4] + 800db38: 2208 movs r2, #8 + 800db3a: 687b ldr r3, [r7, #4] + 800db3c: 4413 add r3, r2 + 800db3e: 607b str r3, [r7, #4] /* Ensure that blocks are always aligned to the required number of bytes. */ if( ( xWantedSize & portBYTE_ALIGNMENT_MASK ) != 0x00 ) - 800d5d0: 687b ldr r3, [r7, #4] - 800d5d2: f003 0307 and.w r3, r3, #7 - 800d5d6: 2b00 cmp r3, #0 - 800d5d8: d015 beq.n 800d606 + 800db40: 687b ldr r3, [r7, #4] + 800db42: f003 0307 and.w r3, r3, #7 + 800db46: 2b00 cmp r3, #0 + 800db48: d015 beq.n 800db76 { /* Byte alignment required. */ xWantedSize += ( portBYTE_ALIGNMENT - ( xWantedSize & portBYTE_ALIGNMENT_MASK ) ); - 800d5da: 687b ldr r3, [r7, #4] - 800d5dc: f023 0307 bic.w r3, r3, #7 - 800d5e0: 3308 adds r3, #8 - 800d5e2: 607b str r3, [r7, #4] + 800db4a: 687b ldr r3, [r7, #4] + 800db4c: f023 0307 bic.w r3, r3, #7 + 800db50: 3308 adds r3, #8 + 800db52: 607b str r3, [r7, #4] configASSERT( ( xWantedSize & portBYTE_ALIGNMENT_MASK ) == 0 ); - 800d5e4: 687b ldr r3, [r7, #4] - 800d5e6: f003 0307 and.w r3, r3, #7 - 800d5ea: 2b00 cmp r3, #0 - 800d5ec: d00b beq.n 800d606 + 800db54: 687b ldr r3, [r7, #4] + 800db56: f003 0307 and.w r3, r3, #7 + 800db5a: 2b00 cmp r3, #0 + 800db5c: d00b beq.n 800db76 __asm volatile - 800d5ee: f04f 0350 mov.w r3, #80 @ 0x50 - 800d5f2: f383 8811 msr BASEPRI, r3 - 800d5f6: f3bf 8f6f isb sy - 800d5fa: f3bf 8f4f dsb sy - 800d5fe: 617b str r3, [r7, #20] + 800db5e: f04f 0350 mov.w r3, #80 @ 0x50 + 800db62: f383 8811 msr BASEPRI, r3 + 800db66: f3bf 8f6f isb sy + 800db6a: f3bf 8f4f dsb sy + 800db6e: 617b str r3, [r7, #20] } - 800d600: bf00 nop - 800d602: bf00 nop - 800d604: e7fd b.n 800d602 + 800db70: bf00 nop + 800db72: bf00 nop + 800db74: e7fd b.n 800db72 else { mtCOVERAGE_TEST_MARKER(); } if( ( xWantedSize > 0 ) && ( xWantedSize <= xFreeBytesRemaining ) ) - 800d606: 687b ldr r3, [r7, #4] - 800d608: 2b00 cmp r3, #0 - 800d60a: d06f beq.n 800d6ec - 800d60c: 4b45 ldr r3, [pc, #276] @ (800d724 ) - 800d60e: 681b ldr r3, [r3, #0] - 800d610: 687a ldr r2, [r7, #4] - 800d612: 429a cmp r2, r3 - 800d614: d86a bhi.n 800d6ec + 800db76: 687b ldr r3, [r7, #4] + 800db78: 2b00 cmp r3, #0 + 800db7a: d06f beq.n 800dc5c + 800db7c: 4b45 ldr r3, [pc, #276] @ (800dc94 ) + 800db7e: 681b ldr r3, [r3, #0] + 800db80: 687a ldr r2, [r7, #4] + 800db82: 429a cmp r2, r3 + 800db84: d86a bhi.n 800dc5c { /* Traverse the list from the start (lowest address) block until one of adequate size is found. */ pxPreviousBlock = &xStart; - 800d616: 4b44 ldr r3, [pc, #272] @ (800d728 ) - 800d618: 623b str r3, [r7, #32] + 800db86: 4b44 ldr r3, [pc, #272] @ (800dc98 ) + 800db88: 623b str r3, [r7, #32] pxBlock = xStart.pxNextFreeBlock; - 800d61a: 4b43 ldr r3, [pc, #268] @ (800d728 ) - 800d61c: 681b ldr r3, [r3, #0] - 800d61e: 627b str r3, [r7, #36] @ 0x24 + 800db8a: 4b43 ldr r3, [pc, #268] @ (800dc98 ) + 800db8c: 681b ldr r3, [r3, #0] + 800db8e: 627b str r3, [r7, #36] @ 0x24 while( ( pxBlock->xBlockSize < xWantedSize ) && ( pxBlock->pxNextFreeBlock != NULL ) ) - 800d620: e004 b.n 800d62c + 800db90: e004 b.n 800db9c { pxPreviousBlock = pxBlock; - 800d622: 6a7b ldr r3, [r7, #36] @ 0x24 - 800d624: 623b str r3, [r7, #32] + 800db92: 6a7b ldr r3, [r7, #36] @ 0x24 + 800db94: 623b str r3, [r7, #32] pxBlock = pxBlock->pxNextFreeBlock; - 800d626: 6a7b ldr r3, [r7, #36] @ 0x24 - 800d628: 681b ldr r3, [r3, #0] - 800d62a: 627b str r3, [r7, #36] @ 0x24 + 800db96: 6a7b ldr r3, [r7, #36] @ 0x24 + 800db98: 681b ldr r3, [r3, #0] + 800db9a: 627b str r3, [r7, #36] @ 0x24 while( ( pxBlock->xBlockSize < xWantedSize ) && ( pxBlock->pxNextFreeBlock != NULL ) ) - 800d62c: 6a7b ldr r3, [r7, #36] @ 0x24 - 800d62e: 685b ldr r3, [r3, #4] - 800d630: 687a ldr r2, [r7, #4] - 800d632: 429a cmp r2, r3 - 800d634: d903 bls.n 800d63e - 800d636: 6a7b ldr r3, [r7, #36] @ 0x24 - 800d638: 681b ldr r3, [r3, #0] - 800d63a: 2b00 cmp r3, #0 - 800d63c: d1f1 bne.n 800d622 + 800db9c: 6a7b ldr r3, [r7, #36] @ 0x24 + 800db9e: 685b ldr r3, [r3, #4] + 800dba0: 687a ldr r2, [r7, #4] + 800dba2: 429a cmp r2, r3 + 800dba4: d903 bls.n 800dbae + 800dba6: 6a7b ldr r3, [r7, #36] @ 0x24 + 800dba8: 681b ldr r3, [r3, #0] + 800dbaa: 2b00 cmp r3, #0 + 800dbac: d1f1 bne.n 800db92 } /* If the end marker was reached then a block of adequate size was not found. */ if( pxBlock != pxEnd ) - 800d63e: 4b37 ldr r3, [pc, #220] @ (800d71c ) - 800d640: 681b ldr r3, [r3, #0] - 800d642: 6a7a ldr r2, [r7, #36] @ 0x24 - 800d644: 429a cmp r2, r3 - 800d646: d051 beq.n 800d6ec + 800dbae: 4b37 ldr r3, [pc, #220] @ (800dc8c ) + 800dbb0: 681b ldr r3, [r3, #0] + 800dbb2: 6a7a ldr r2, [r7, #36] @ 0x24 + 800dbb4: 429a cmp r2, r3 + 800dbb6: d051 beq.n 800dc5c { /* Return the memory space pointed to - jumping over the BlockLink_t structure at its start. */ pvReturn = ( void * ) ( ( ( uint8_t * ) pxPreviousBlock->pxNextFreeBlock ) + xHeapStructSize ); - 800d648: 6a3b ldr r3, [r7, #32] - 800d64a: 681b ldr r3, [r3, #0] - 800d64c: 2208 movs r2, #8 - 800d64e: 4413 add r3, r2 - 800d650: 61fb str r3, [r7, #28] + 800dbb8: 6a3b ldr r3, [r7, #32] + 800dbba: 681b ldr r3, [r3, #0] + 800dbbc: 2208 movs r2, #8 + 800dbbe: 4413 add r3, r2 + 800dbc0: 61fb str r3, [r7, #28] /* This block is being returned for use so must be taken out of the list of free blocks. */ pxPreviousBlock->pxNextFreeBlock = pxBlock->pxNextFreeBlock; - 800d652: 6a7b ldr r3, [r7, #36] @ 0x24 - 800d654: 681a ldr r2, [r3, #0] - 800d656: 6a3b ldr r3, [r7, #32] - 800d658: 601a str r2, [r3, #0] + 800dbc2: 6a7b ldr r3, [r7, #36] @ 0x24 + 800dbc4: 681a ldr r2, [r3, #0] + 800dbc6: 6a3b ldr r3, [r7, #32] + 800dbc8: 601a str r2, [r3, #0] /* If the block is larger than required it can be split into two. */ if( ( pxBlock->xBlockSize - xWantedSize ) > heapMINIMUM_BLOCK_SIZE ) - 800d65a: 6a7b ldr r3, [r7, #36] @ 0x24 - 800d65c: 685a ldr r2, [r3, #4] - 800d65e: 687b ldr r3, [r7, #4] - 800d660: 1ad2 subs r2, r2, r3 - 800d662: 2308 movs r3, #8 - 800d664: 005b lsls r3, r3, #1 - 800d666: 429a cmp r2, r3 - 800d668: d920 bls.n 800d6ac + 800dbca: 6a7b ldr r3, [r7, #36] @ 0x24 + 800dbcc: 685a ldr r2, [r3, #4] + 800dbce: 687b ldr r3, [r7, #4] + 800dbd0: 1ad2 subs r2, r2, r3 + 800dbd2: 2308 movs r3, #8 + 800dbd4: 005b lsls r3, r3, #1 + 800dbd6: 429a cmp r2, r3 + 800dbd8: d920 bls.n 800dc1c { /* This block is to be split into two. Create a new block following the number of bytes requested. The void cast is used to prevent byte alignment warnings from the compiler. */ pxNewBlockLink = ( void * ) ( ( ( uint8_t * ) pxBlock ) + xWantedSize ); - 800d66a: 6a7a ldr r2, [r7, #36] @ 0x24 - 800d66c: 687b ldr r3, [r7, #4] - 800d66e: 4413 add r3, r2 - 800d670: 61bb str r3, [r7, #24] + 800dbda: 6a7a ldr r2, [r7, #36] @ 0x24 + 800dbdc: 687b ldr r3, [r7, #4] + 800dbde: 4413 add r3, r2 + 800dbe0: 61bb str r3, [r7, #24] configASSERT( ( ( ( size_t ) pxNewBlockLink ) & portBYTE_ALIGNMENT_MASK ) == 0 ); - 800d672: 69bb ldr r3, [r7, #24] - 800d674: f003 0307 and.w r3, r3, #7 - 800d678: 2b00 cmp r3, #0 - 800d67a: d00b beq.n 800d694 + 800dbe2: 69bb ldr r3, [r7, #24] + 800dbe4: f003 0307 and.w r3, r3, #7 + 800dbe8: 2b00 cmp r3, #0 + 800dbea: d00b beq.n 800dc04 __asm volatile - 800d67c: f04f 0350 mov.w r3, #80 @ 0x50 - 800d680: f383 8811 msr BASEPRI, r3 - 800d684: f3bf 8f6f isb sy - 800d688: f3bf 8f4f dsb sy - 800d68c: 613b str r3, [r7, #16] + 800dbec: f04f 0350 mov.w r3, #80 @ 0x50 + 800dbf0: f383 8811 msr BASEPRI, r3 + 800dbf4: f3bf 8f6f isb sy + 800dbf8: f3bf 8f4f dsb sy + 800dbfc: 613b str r3, [r7, #16] } - 800d68e: bf00 nop - 800d690: bf00 nop - 800d692: e7fd b.n 800d690 + 800dbfe: bf00 nop + 800dc00: bf00 nop + 800dc02: e7fd b.n 800dc00 /* Calculate the sizes of two blocks split from the single block. */ pxNewBlockLink->xBlockSize = pxBlock->xBlockSize - xWantedSize; - 800d694: 6a7b ldr r3, [r7, #36] @ 0x24 - 800d696: 685a ldr r2, [r3, #4] - 800d698: 687b ldr r3, [r7, #4] - 800d69a: 1ad2 subs r2, r2, r3 - 800d69c: 69bb ldr r3, [r7, #24] - 800d69e: 605a str r2, [r3, #4] + 800dc04: 6a7b ldr r3, [r7, #36] @ 0x24 + 800dc06: 685a ldr r2, [r3, #4] + 800dc08: 687b ldr r3, [r7, #4] + 800dc0a: 1ad2 subs r2, r2, r3 + 800dc0c: 69bb ldr r3, [r7, #24] + 800dc0e: 605a str r2, [r3, #4] pxBlock->xBlockSize = xWantedSize; - 800d6a0: 6a7b ldr r3, [r7, #36] @ 0x24 - 800d6a2: 687a ldr r2, [r7, #4] - 800d6a4: 605a str r2, [r3, #4] + 800dc10: 6a7b ldr r3, [r7, #36] @ 0x24 + 800dc12: 687a ldr r2, [r7, #4] + 800dc14: 605a str r2, [r3, #4] /* Insert the new block into the list of free blocks. */ prvInsertBlockIntoFreeList( pxNewBlockLink ); - 800d6a6: 69b8 ldr r0, [r7, #24] - 800d6a8: f000 f90a bl 800d8c0 + 800dc16: 69b8 ldr r0, [r7, #24] + 800dc18: f000 f90a bl 800de30 else { mtCOVERAGE_TEST_MARKER(); } xFreeBytesRemaining -= pxBlock->xBlockSize; - 800d6ac: 4b1d ldr r3, [pc, #116] @ (800d724 ) - 800d6ae: 681a ldr r2, [r3, #0] - 800d6b0: 6a7b ldr r3, [r7, #36] @ 0x24 - 800d6b2: 685b ldr r3, [r3, #4] - 800d6b4: 1ad3 subs r3, r2, r3 - 800d6b6: 4a1b ldr r2, [pc, #108] @ (800d724 ) - 800d6b8: 6013 str r3, [r2, #0] + 800dc1c: 4b1d ldr r3, [pc, #116] @ (800dc94 ) + 800dc1e: 681a ldr r2, [r3, #0] + 800dc20: 6a7b ldr r3, [r7, #36] @ 0x24 + 800dc22: 685b ldr r3, [r3, #4] + 800dc24: 1ad3 subs r3, r2, r3 + 800dc26: 4a1b ldr r2, [pc, #108] @ (800dc94 ) + 800dc28: 6013 str r3, [r2, #0] if( xFreeBytesRemaining < xMinimumEverFreeBytesRemaining ) - 800d6ba: 4b1a ldr r3, [pc, #104] @ (800d724 ) - 800d6bc: 681a ldr r2, [r3, #0] - 800d6be: 4b1b ldr r3, [pc, #108] @ (800d72c ) - 800d6c0: 681b ldr r3, [r3, #0] - 800d6c2: 429a cmp r2, r3 - 800d6c4: d203 bcs.n 800d6ce + 800dc2a: 4b1a ldr r3, [pc, #104] @ (800dc94 ) + 800dc2c: 681a ldr r2, [r3, #0] + 800dc2e: 4b1b ldr r3, [pc, #108] @ (800dc9c ) + 800dc30: 681b ldr r3, [r3, #0] + 800dc32: 429a cmp r2, r3 + 800dc34: d203 bcs.n 800dc3e { xMinimumEverFreeBytesRemaining = xFreeBytesRemaining; - 800d6c6: 4b17 ldr r3, [pc, #92] @ (800d724 ) - 800d6c8: 681b ldr r3, [r3, #0] - 800d6ca: 4a18 ldr r2, [pc, #96] @ (800d72c ) - 800d6cc: 6013 str r3, [r2, #0] + 800dc36: 4b17 ldr r3, [pc, #92] @ (800dc94 ) + 800dc38: 681b ldr r3, [r3, #0] + 800dc3a: 4a18 ldr r2, [pc, #96] @ (800dc9c ) + 800dc3c: 6013 str r3, [r2, #0] mtCOVERAGE_TEST_MARKER(); } /* The block is being returned - it is allocated and owned by the application and has no "next" block. */ pxBlock->xBlockSize |= xBlockAllocatedBit; - 800d6ce: 6a7b ldr r3, [r7, #36] @ 0x24 - 800d6d0: 685a ldr r2, [r3, #4] - 800d6d2: 4b13 ldr r3, [pc, #76] @ (800d720 ) - 800d6d4: 681b ldr r3, [r3, #0] - 800d6d6: 431a orrs r2, r3 - 800d6d8: 6a7b ldr r3, [r7, #36] @ 0x24 - 800d6da: 605a str r2, [r3, #4] + 800dc3e: 6a7b ldr r3, [r7, #36] @ 0x24 + 800dc40: 685a ldr r2, [r3, #4] + 800dc42: 4b13 ldr r3, [pc, #76] @ (800dc90 ) + 800dc44: 681b ldr r3, [r3, #0] + 800dc46: 431a orrs r2, r3 + 800dc48: 6a7b ldr r3, [r7, #36] @ 0x24 + 800dc4a: 605a str r2, [r3, #4] pxBlock->pxNextFreeBlock = NULL; - 800d6dc: 6a7b ldr r3, [r7, #36] @ 0x24 - 800d6de: 2200 movs r2, #0 - 800d6e0: 601a str r2, [r3, #0] + 800dc4c: 6a7b ldr r3, [r7, #36] @ 0x24 + 800dc4e: 2200 movs r2, #0 + 800dc50: 601a str r2, [r3, #0] xNumberOfSuccessfulAllocations++; - 800d6e2: 4b13 ldr r3, [pc, #76] @ (800d730 ) - 800d6e4: 681b ldr r3, [r3, #0] - 800d6e6: 3301 adds r3, #1 - 800d6e8: 4a11 ldr r2, [pc, #68] @ (800d730 ) - 800d6ea: 6013 str r3, [r2, #0] + 800dc52: 4b13 ldr r3, [pc, #76] @ (800dca0 ) + 800dc54: 681b ldr r3, [r3, #0] + 800dc56: 3301 adds r3, #1 + 800dc58: 4a11 ldr r2, [pc, #68] @ (800dca0 ) + 800dc5a: 6013 str r3, [r2, #0] mtCOVERAGE_TEST_MARKER(); } traceMALLOC( pvReturn, xWantedSize ); } ( void ) xTaskResumeAll(); - 800d6ec: f7ff fa44 bl 800cb78 + 800dc5c: f7ff fa46 bl 800d0ec mtCOVERAGE_TEST_MARKER(); } } #endif configASSERT( ( ( ( size_t ) pvReturn ) & ( size_t ) portBYTE_ALIGNMENT_MASK ) == 0 ); - 800d6f0: 69fb ldr r3, [r7, #28] - 800d6f2: f003 0307 and.w r3, r3, #7 - 800d6f6: 2b00 cmp r3, #0 - 800d6f8: d00b beq.n 800d712 + 800dc60: 69fb ldr r3, [r7, #28] + 800dc62: f003 0307 and.w r3, r3, #7 + 800dc66: 2b00 cmp r3, #0 + 800dc68: d00b beq.n 800dc82 __asm volatile - 800d6fa: f04f 0350 mov.w r3, #80 @ 0x50 - 800d6fe: f383 8811 msr BASEPRI, r3 - 800d702: f3bf 8f6f isb sy - 800d706: f3bf 8f4f dsb sy - 800d70a: 60fb str r3, [r7, #12] + 800dc6a: f04f 0350 mov.w r3, #80 @ 0x50 + 800dc6e: f383 8811 msr BASEPRI, r3 + 800dc72: f3bf 8f6f isb sy + 800dc76: f3bf 8f4f dsb sy + 800dc7a: 60fb str r3, [r7, #12] } - 800d70c: bf00 nop - 800d70e: bf00 nop - 800d710: e7fd b.n 800d70e + 800dc7c: bf00 nop + 800dc7e: bf00 nop + 800dc80: e7fd b.n 800dc7e return pvReturn; - 800d712: 69fb ldr r3, [r7, #28] + 800dc82: 69fb ldr r3, [r7, #28] } - 800d714: 4618 mov r0, r3 - 800d716: 3728 adds r7, #40 @ 0x28 - 800d718: 46bd mov sp, r7 - 800d71a: bd80 pop {r7, pc} - 800d71c: 20011058 .word 0x20011058 - 800d720: 2001106c .word 0x2001106c - 800d724: 2001105c .word 0x2001105c - 800d728: 20011050 .word 0x20011050 - 800d72c: 20011060 .word 0x20011060 - 800d730: 20011064 .word 0x20011064 + 800dc84: 4618 mov r0, r3 + 800dc86: 3728 adds r7, #40 @ 0x28 + 800dc88: 46bd mov sp, r7 + 800dc8a: bd80 pop {r7, pc} + 800dc8c: 200110a0 .word 0x200110a0 + 800dc90: 200110b4 .word 0x200110b4 + 800dc94: 200110a4 .word 0x200110a4 + 800dc98: 20011098 .word 0x20011098 + 800dc9c: 200110a8 .word 0x200110a8 + 800dca0: 200110ac .word 0x200110ac -0800d734 : +0800dca4 : /*-----------------------------------------------------------*/ void vPortFree( void *pv ) { - 800d734: b580 push {r7, lr} - 800d736: b086 sub sp, #24 - 800d738: af00 add r7, sp, #0 - 800d73a: 6078 str r0, [r7, #4] + 800dca4: b580 push {r7, lr} + 800dca6: b086 sub sp, #24 + 800dca8: af00 add r7, sp, #0 + 800dcaa: 6078 str r0, [r7, #4] uint8_t *puc = ( uint8_t * ) pv; - 800d73c: 687b ldr r3, [r7, #4] - 800d73e: 617b str r3, [r7, #20] + 800dcac: 687b ldr r3, [r7, #4] + 800dcae: 617b str r3, [r7, #20] BlockLink_t *pxLink; if( pv != NULL ) - 800d740: 687b ldr r3, [r7, #4] - 800d742: 2b00 cmp r3, #0 - 800d744: d04f beq.n 800d7e6 + 800dcb0: 687b ldr r3, [r7, #4] + 800dcb2: 2b00 cmp r3, #0 + 800dcb4: d04f beq.n 800dd56 { /* The memory being freed will have an BlockLink_t structure immediately before it. */ puc -= xHeapStructSize; - 800d746: 2308 movs r3, #8 - 800d748: 425b negs r3, r3 - 800d74a: 697a ldr r2, [r7, #20] - 800d74c: 4413 add r3, r2 - 800d74e: 617b str r3, [r7, #20] + 800dcb6: 2308 movs r3, #8 + 800dcb8: 425b negs r3, r3 + 800dcba: 697a ldr r2, [r7, #20] + 800dcbc: 4413 add r3, r2 + 800dcbe: 617b str r3, [r7, #20] /* This casting is to keep the compiler from issuing warnings. */ pxLink = ( void * ) puc; - 800d750: 697b ldr r3, [r7, #20] - 800d752: 613b str r3, [r7, #16] + 800dcc0: 697b ldr r3, [r7, #20] + 800dcc2: 613b str r3, [r7, #16] /* Check the block is actually allocated. */ configASSERT( ( pxLink->xBlockSize & xBlockAllocatedBit ) != 0 ); - 800d754: 693b ldr r3, [r7, #16] - 800d756: 685a ldr r2, [r3, #4] - 800d758: 4b25 ldr r3, [pc, #148] @ (800d7f0 ) - 800d75a: 681b ldr r3, [r3, #0] - 800d75c: 4013 ands r3, r2 - 800d75e: 2b00 cmp r3, #0 - 800d760: d10b bne.n 800d77a + 800dcc4: 693b ldr r3, [r7, #16] + 800dcc6: 685a ldr r2, [r3, #4] + 800dcc8: 4b25 ldr r3, [pc, #148] @ (800dd60 ) + 800dcca: 681b ldr r3, [r3, #0] + 800dccc: 4013 ands r3, r2 + 800dcce: 2b00 cmp r3, #0 + 800dcd0: d10b bne.n 800dcea __asm volatile - 800d762: f04f 0350 mov.w r3, #80 @ 0x50 - 800d766: f383 8811 msr BASEPRI, r3 - 800d76a: f3bf 8f6f isb sy - 800d76e: f3bf 8f4f dsb sy - 800d772: 60fb str r3, [r7, #12] + 800dcd2: f04f 0350 mov.w r3, #80 @ 0x50 + 800dcd6: f383 8811 msr BASEPRI, r3 + 800dcda: f3bf 8f6f isb sy + 800dcde: f3bf 8f4f dsb sy + 800dce2: 60fb str r3, [r7, #12] } - 800d774: bf00 nop - 800d776: bf00 nop - 800d778: e7fd b.n 800d776 + 800dce4: bf00 nop + 800dce6: bf00 nop + 800dce8: e7fd b.n 800dce6 configASSERT( pxLink->pxNextFreeBlock == NULL ); - 800d77a: 693b ldr r3, [r7, #16] - 800d77c: 681b ldr r3, [r3, #0] - 800d77e: 2b00 cmp r3, #0 - 800d780: d00b beq.n 800d79a + 800dcea: 693b ldr r3, [r7, #16] + 800dcec: 681b ldr r3, [r3, #0] + 800dcee: 2b00 cmp r3, #0 + 800dcf0: d00b beq.n 800dd0a __asm volatile - 800d782: f04f 0350 mov.w r3, #80 @ 0x50 - 800d786: f383 8811 msr BASEPRI, r3 - 800d78a: f3bf 8f6f isb sy - 800d78e: f3bf 8f4f dsb sy - 800d792: 60bb str r3, [r7, #8] + 800dcf2: f04f 0350 mov.w r3, #80 @ 0x50 + 800dcf6: f383 8811 msr BASEPRI, r3 + 800dcfa: f3bf 8f6f isb sy + 800dcfe: f3bf 8f4f dsb sy + 800dd02: 60bb str r3, [r7, #8] } - 800d794: bf00 nop - 800d796: bf00 nop - 800d798: e7fd b.n 800d796 + 800dd04: bf00 nop + 800dd06: bf00 nop + 800dd08: e7fd b.n 800dd06 if( ( pxLink->xBlockSize & xBlockAllocatedBit ) != 0 ) - 800d79a: 693b ldr r3, [r7, #16] - 800d79c: 685a ldr r2, [r3, #4] - 800d79e: 4b14 ldr r3, [pc, #80] @ (800d7f0 ) - 800d7a0: 681b ldr r3, [r3, #0] - 800d7a2: 4013 ands r3, r2 - 800d7a4: 2b00 cmp r3, #0 - 800d7a6: d01e beq.n 800d7e6 + 800dd0a: 693b ldr r3, [r7, #16] + 800dd0c: 685a ldr r2, [r3, #4] + 800dd0e: 4b14 ldr r3, [pc, #80] @ (800dd60 ) + 800dd10: 681b ldr r3, [r3, #0] + 800dd12: 4013 ands r3, r2 + 800dd14: 2b00 cmp r3, #0 + 800dd16: d01e beq.n 800dd56 { if( pxLink->pxNextFreeBlock == NULL ) - 800d7a8: 693b ldr r3, [r7, #16] - 800d7aa: 681b ldr r3, [r3, #0] - 800d7ac: 2b00 cmp r3, #0 - 800d7ae: d11a bne.n 800d7e6 + 800dd18: 693b ldr r3, [r7, #16] + 800dd1a: 681b ldr r3, [r3, #0] + 800dd1c: 2b00 cmp r3, #0 + 800dd1e: d11a bne.n 800dd56 { /* The block is being returned to the heap - it is no longer allocated. */ pxLink->xBlockSize &= ~xBlockAllocatedBit; - 800d7b0: 693b ldr r3, [r7, #16] - 800d7b2: 685a ldr r2, [r3, #4] - 800d7b4: 4b0e ldr r3, [pc, #56] @ (800d7f0 ) - 800d7b6: 681b ldr r3, [r3, #0] - 800d7b8: 43db mvns r3, r3 - 800d7ba: 401a ands r2, r3 - 800d7bc: 693b ldr r3, [r7, #16] - 800d7be: 605a str r2, [r3, #4] + 800dd20: 693b ldr r3, [r7, #16] + 800dd22: 685a ldr r2, [r3, #4] + 800dd24: 4b0e ldr r3, [pc, #56] @ (800dd60 ) + 800dd26: 681b ldr r3, [r3, #0] + 800dd28: 43db mvns r3, r3 + 800dd2a: 401a ands r2, r3 + 800dd2c: 693b ldr r3, [r7, #16] + 800dd2e: 605a str r2, [r3, #4] vTaskSuspendAll(); - 800d7c0: f7ff f9cc bl 800cb5c + 800dd30: f7ff f9ce bl 800d0d0 { /* Add this block to the list of free blocks. */ xFreeBytesRemaining += pxLink->xBlockSize; - 800d7c4: 693b ldr r3, [r7, #16] - 800d7c6: 685a ldr r2, [r3, #4] - 800d7c8: 4b0a ldr r3, [pc, #40] @ (800d7f4 ) - 800d7ca: 681b ldr r3, [r3, #0] - 800d7cc: 4413 add r3, r2 - 800d7ce: 4a09 ldr r2, [pc, #36] @ (800d7f4 ) - 800d7d0: 6013 str r3, [r2, #0] + 800dd34: 693b ldr r3, [r7, #16] + 800dd36: 685a ldr r2, [r3, #4] + 800dd38: 4b0a ldr r3, [pc, #40] @ (800dd64 ) + 800dd3a: 681b ldr r3, [r3, #0] + 800dd3c: 4413 add r3, r2 + 800dd3e: 4a09 ldr r2, [pc, #36] @ (800dd64 ) + 800dd40: 6013 str r3, [r2, #0] traceFREE( pv, pxLink->xBlockSize ); prvInsertBlockIntoFreeList( ( ( BlockLink_t * ) pxLink ) ); - 800d7d2: 6938 ldr r0, [r7, #16] - 800d7d4: f000 f874 bl 800d8c0 + 800dd42: 6938 ldr r0, [r7, #16] + 800dd44: f000 f874 bl 800de30 xNumberOfSuccessfulFrees++; - 800d7d8: 4b07 ldr r3, [pc, #28] @ (800d7f8 ) - 800d7da: 681b ldr r3, [r3, #0] - 800d7dc: 3301 adds r3, #1 - 800d7de: 4a06 ldr r2, [pc, #24] @ (800d7f8 ) - 800d7e0: 6013 str r3, [r2, #0] + 800dd48: 4b07 ldr r3, [pc, #28] @ (800dd68 ) + 800dd4a: 681b ldr r3, [r3, #0] + 800dd4c: 3301 adds r3, #1 + 800dd4e: 4a06 ldr r2, [pc, #24] @ (800dd68 ) + 800dd50: 6013 str r3, [r2, #0] } ( void ) xTaskResumeAll(); - 800d7e2: f7ff f9c9 bl 800cb78 + 800dd52: f7ff f9cb bl 800d0ec else { mtCOVERAGE_TEST_MARKER(); } } } - 800d7e6: bf00 nop - 800d7e8: 3718 adds r7, #24 - 800d7ea: 46bd mov sp, r7 - 800d7ec: bd80 pop {r7, pc} - 800d7ee: bf00 nop - 800d7f0: 2001106c .word 0x2001106c - 800d7f4: 2001105c .word 0x2001105c - 800d7f8: 20011068 .word 0x20011068 + 800dd56: bf00 nop + 800dd58: 3718 adds r7, #24 + 800dd5a: 46bd mov sp, r7 + 800dd5c: bd80 pop {r7, pc} + 800dd5e: bf00 nop + 800dd60: 200110b4 .word 0x200110b4 + 800dd64: 200110a4 .word 0x200110a4 + 800dd68: 200110b0 .word 0x200110b0 -0800d7fc : +0800dd6c : /* This just exists to keep the linker quiet. */ } /*-----------------------------------------------------------*/ static void prvHeapInit( void ) { - 800d7fc: b480 push {r7} - 800d7fe: b085 sub sp, #20 - 800d800: af00 add r7, sp, #0 + 800dd6c: b480 push {r7} + 800dd6e: b085 sub sp, #20 + 800dd70: af00 add r7, sp, #0 BlockLink_t *pxFirstFreeBlock; uint8_t *pucAlignedHeap; size_t uxAddress; size_t xTotalHeapSize = configTOTAL_HEAP_SIZE; - 800d802: f64e 2360 movw r3, #60000 @ 0xea60 - 800d806: 60bb str r3, [r7, #8] + 800dd72: f64e 2360 movw r3, #60000 @ 0xea60 + 800dd76: 60bb str r3, [r7, #8] /* Ensure the heap starts on a correctly aligned boundary. */ uxAddress = ( size_t ) ucHeap; - 800d808: 4b27 ldr r3, [pc, #156] @ (800d8a8 ) - 800d80a: 60fb str r3, [r7, #12] + 800dd78: 4b27 ldr r3, [pc, #156] @ (800de18 ) + 800dd7a: 60fb str r3, [r7, #12] if( ( uxAddress & portBYTE_ALIGNMENT_MASK ) != 0 ) - 800d80c: 68fb ldr r3, [r7, #12] - 800d80e: f003 0307 and.w r3, r3, #7 - 800d812: 2b00 cmp r3, #0 - 800d814: d00c beq.n 800d830 + 800dd7c: 68fb ldr r3, [r7, #12] + 800dd7e: f003 0307 and.w r3, r3, #7 + 800dd82: 2b00 cmp r3, #0 + 800dd84: d00c beq.n 800dda0 { uxAddress += ( portBYTE_ALIGNMENT - 1 ); - 800d816: 68fb ldr r3, [r7, #12] - 800d818: 3307 adds r3, #7 - 800d81a: 60fb str r3, [r7, #12] + 800dd86: 68fb ldr r3, [r7, #12] + 800dd88: 3307 adds r3, #7 + 800dd8a: 60fb str r3, [r7, #12] uxAddress &= ~( ( size_t ) portBYTE_ALIGNMENT_MASK ); - 800d81c: 68fb ldr r3, [r7, #12] - 800d81e: f023 0307 bic.w r3, r3, #7 - 800d822: 60fb str r3, [r7, #12] + 800dd8c: 68fb ldr r3, [r7, #12] + 800dd8e: f023 0307 bic.w r3, r3, #7 + 800dd92: 60fb str r3, [r7, #12] xTotalHeapSize -= uxAddress - ( size_t ) ucHeap; - 800d824: 68ba ldr r2, [r7, #8] - 800d826: 68fb ldr r3, [r7, #12] - 800d828: 1ad3 subs r3, r2, r3 - 800d82a: 4a1f ldr r2, [pc, #124] @ (800d8a8 ) - 800d82c: 4413 add r3, r2 - 800d82e: 60bb str r3, [r7, #8] + 800dd94: 68ba ldr r2, [r7, #8] + 800dd96: 68fb ldr r3, [r7, #12] + 800dd98: 1ad3 subs r3, r2, r3 + 800dd9a: 4a1f ldr r2, [pc, #124] @ (800de18 ) + 800dd9c: 4413 add r3, r2 + 800dd9e: 60bb str r3, [r7, #8] } pucAlignedHeap = ( uint8_t * ) uxAddress; - 800d830: 68fb ldr r3, [r7, #12] - 800d832: 607b str r3, [r7, #4] + 800dda0: 68fb ldr r3, [r7, #12] + 800dda2: 607b str r3, [r7, #4] /* xStart is used to hold a pointer to the first item in the list of free blocks. The void cast is used to prevent compiler warnings. */ xStart.pxNextFreeBlock = ( void * ) pucAlignedHeap; - 800d834: 4a1d ldr r2, [pc, #116] @ (800d8ac ) - 800d836: 687b ldr r3, [r7, #4] - 800d838: 6013 str r3, [r2, #0] + 800dda4: 4a1d ldr r2, [pc, #116] @ (800de1c ) + 800dda6: 687b ldr r3, [r7, #4] + 800dda8: 6013 str r3, [r2, #0] xStart.xBlockSize = ( size_t ) 0; - 800d83a: 4b1c ldr r3, [pc, #112] @ (800d8ac ) - 800d83c: 2200 movs r2, #0 - 800d83e: 605a str r2, [r3, #4] + 800ddaa: 4b1c ldr r3, [pc, #112] @ (800de1c ) + 800ddac: 2200 movs r2, #0 + 800ddae: 605a str r2, [r3, #4] /* pxEnd is used to mark the end of the list of free blocks and is inserted at the end of the heap space. */ uxAddress = ( ( size_t ) pucAlignedHeap ) + xTotalHeapSize; - 800d840: 687b ldr r3, [r7, #4] - 800d842: 68ba ldr r2, [r7, #8] - 800d844: 4413 add r3, r2 - 800d846: 60fb str r3, [r7, #12] + 800ddb0: 687b ldr r3, [r7, #4] + 800ddb2: 68ba ldr r2, [r7, #8] + 800ddb4: 4413 add r3, r2 + 800ddb6: 60fb str r3, [r7, #12] uxAddress -= xHeapStructSize; - 800d848: 2208 movs r2, #8 - 800d84a: 68fb ldr r3, [r7, #12] - 800d84c: 1a9b subs r3, r3, r2 - 800d84e: 60fb str r3, [r7, #12] + 800ddb8: 2208 movs r2, #8 + 800ddba: 68fb ldr r3, [r7, #12] + 800ddbc: 1a9b subs r3, r3, r2 + 800ddbe: 60fb str r3, [r7, #12] uxAddress &= ~( ( size_t ) portBYTE_ALIGNMENT_MASK ); - 800d850: 68fb ldr r3, [r7, #12] - 800d852: f023 0307 bic.w r3, r3, #7 - 800d856: 60fb str r3, [r7, #12] + 800ddc0: 68fb ldr r3, [r7, #12] + 800ddc2: f023 0307 bic.w r3, r3, #7 + 800ddc6: 60fb str r3, [r7, #12] pxEnd = ( void * ) uxAddress; - 800d858: 68fb ldr r3, [r7, #12] - 800d85a: 4a15 ldr r2, [pc, #84] @ (800d8b0 ) - 800d85c: 6013 str r3, [r2, #0] + 800ddc8: 68fb ldr r3, [r7, #12] + 800ddca: 4a15 ldr r2, [pc, #84] @ (800de20 ) + 800ddcc: 6013 str r3, [r2, #0] pxEnd->xBlockSize = 0; - 800d85e: 4b14 ldr r3, [pc, #80] @ (800d8b0 ) - 800d860: 681b ldr r3, [r3, #0] - 800d862: 2200 movs r2, #0 - 800d864: 605a str r2, [r3, #4] + 800ddce: 4b14 ldr r3, [pc, #80] @ (800de20 ) + 800ddd0: 681b ldr r3, [r3, #0] + 800ddd2: 2200 movs r2, #0 + 800ddd4: 605a str r2, [r3, #4] pxEnd->pxNextFreeBlock = NULL; - 800d866: 4b12 ldr r3, [pc, #72] @ (800d8b0 ) - 800d868: 681b ldr r3, [r3, #0] - 800d86a: 2200 movs r2, #0 - 800d86c: 601a str r2, [r3, #0] + 800ddd6: 4b12 ldr r3, [pc, #72] @ (800de20 ) + 800ddd8: 681b ldr r3, [r3, #0] + 800ddda: 2200 movs r2, #0 + 800dddc: 601a str r2, [r3, #0] /* To start with there is a single free block that is sized to take up the entire heap space, minus the space taken by pxEnd. */ pxFirstFreeBlock = ( void * ) pucAlignedHeap; - 800d86e: 687b ldr r3, [r7, #4] - 800d870: 603b str r3, [r7, #0] + 800ddde: 687b ldr r3, [r7, #4] + 800dde0: 603b str r3, [r7, #0] pxFirstFreeBlock->xBlockSize = uxAddress - ( size_t ) pxFirstFreeBlock; - 800d872: 683b ldr r3, [r7, #0] - 800d874: 68fa ldr r2, [r7, #12] - 800d876: 1ad2 subs r2, r2, r3 - 800d878: 683b ldr r3, [r7, #0] - 800d87a: 605a str r2, [r3, #4] + 800dde2: 683b ldr r3, [r7, #0] + 800dde4: 68fa ldr r2, [r7, #12] + 800dde6: 1ad2 subs r2, r2, r3 + 800dde8: 683b ldr r3, [r7, #0] + 800ddea: 605a str r2, [r3, #4] pxFirstFreeBlock->pxNextFreeBlock = pxEnd; - 800d87c: 4b0c ldr r3, [pc, #48] @ (800d8b0 ) - 800d87e: 681a ldr r2, [r3, #0] - 800d880: 683b ldr r3, [r7, #0] - 800d882: 601a str r2, [r3, #0] + 800ddec: 4b0c ldr r3, [pc, #48] @ (800de20 ) + 800ddee: 681a ldr r2, [r3, #0] + 800ddf0: 683b ldr r3, [r7, #0] + 800ddf2: 601a str r2, [r3, #0] /* Only one block exists - and it covers the entire usable heap space. */ xMinimumEverFreeBytesRemaining = pxFirstFreeBlock->xBlockSize; - 800d884: 683b ldr r3, [r7, #0] - 800d886: 685b ldr r3, [r3, #4] - 800d888: 4a0a ldr r2, [pc, #40] @ (800d8b4 ) - 800d88a: 6013 str r3, [r2, #0] + 800ddf4: 683b ldr r3, [r7, #0] + 800ddf6: 685b ldr r3, [r3, #4] + 800ddf8: 4a0a ldr r2, [pc, #40] @ (800de24 ) + 800ddfa: 6013 str r3, [r2, #0] xFreeBytesRemaining = pxFirstFreeBlock->xBlockSize; - 800d88c: 683b ldr r3, [r7, #0] - 800d88e: 685b ldr r3, [r3, #4] - 800d890: 4a09 ldr r2, [pc, #36] @ (800d8b8 ) - 800d892: 6013 str r3, [r2, #0] + 800ddfc: 683b ldr r3, [r7, #0] + 800ddfe: 685b ldr r3, [r3, #4] + 800de00: 4a09 ldr r2, [pc, #36] @ (800de28 ) + 800de02: 6013 str r3, [r2, #0] /* Work out the position of the top bit in a size_t variable. */ xBlockAllocatedBit = ( ( size_t ) 1 ) << ( ( sizeof( size_t ) * heapBITS_PER_BYTE ) - 1 ); - 800d894: 4b09 ldr r3, [pc, #36] @ (800d8bc ) - 800d896: f04f 4200 mov.w r2, #2147483648 @ 0x80000000 - 800d89a: 601a str r2, [r3, #0] + 800de04: 4b09 ldr r3, [pc, #36] @ (800de2c ) + 800de06: f04f 4200 mov.w r2, #2147483648 @ 0x80000000 + 800de0a: 601a str r2, [r3, #0] } - 800d89c: bf00 nop - 800d89e: 3714 adds r7, #20 - 800d8a0: 46bd mov sp, r7 - 800d8a2: f85d 7b04 ldr.w r7, [sp], #4 - 800d8a6: 4770 bx lr - 800d8a8: 200025f0 .word 0x200025f0 - 800d8ac: 20011050 .word 0x20011050 - 800d8b0: 20011058 .word 0x20011058 - 800d8b4: 20011060 .word 0x20011060 - 800d8b8: 2001105c .word 0x2001105c - 800d8bc: 2001106c .word 0x2001106c + 800de0c: bf00 nop + 800de0e: 3714 adds r7, #20 + 800de10: 46bd mov sp, r7 + 800de12: f85d 7b04 ldr.w r7, [sp], #4 + 800de16: 4770 bx lr + 800de18: 20002638 .word 0x20002638 + 800de1c: 20011098 .word 0x20011098 + 800de20: 200110a0 .word 0x200110a0 + 800de24: 200110a8 .word 0x200110a8 + 800de28: 200110a4 .word 0x200110a4 + 800de2c: 200110b4 .word 0x200110b4 -0800d8c0 : +0800de30 : /*-----------------------------------------------------------*/ static void prvInsertBlockIntoFreeList( BlockLink_t *pxBlockToInsert ) { - 800d8c0: b480 push {r7} - 800d8c2: b085 sub sp, #20 - 800d8c4: af00 add r7, sp, #0 - 800d8c6: 6078 str r0, [r7, #4] + 800de30: b480 push {r7} + 800de32: b085 sub sp, #20 + 800de34: af00 add r7, sp, #0 + 800de36: 6078 str r0, [r7, #4] BlockLink_t *pxIterator; uint8_t *puc; /* Iterate through the list until a block is found that has a higher address than the block being inserted. */ for( pxIterator = &xStart; pxIterator->pxNextFreeBlock < pxBlockToInsert; pxIterator = pxIterator->pxNextFreeBlock ) - 800d8c8: 4b28 ldr r3, [pc, #160] @ (800d96c ) - 800d8ca: 60fb str r3, [r7, #12] - 800d8cc: e002 b.n 800d8d4 - 800d8ce: 68fb ldr r3, [r7, #12] - 800d8d0: 681b ldr r3, [r3, #0] - 800d8d2: 60fb str r3, [r7, #12] - 800d8d4: 68fb ldr r3, [r7, #12] - 800d8d6: 681b ldr r3, [r3, #0] - 800d8d8: 687a ldr r2, [r7, #4] - 800d8da: 429a cmp r2, r3 - 800d8dc: d8f7 bhi.n 800d8ce + 800de38: 4b28 ldr r3, [pc, #160] @ (800dedc ) + 800de3a: 60fb str r3, [r7, #12] + 800de3c: e002 b.n 800de44 + 800de3e: 68fb ldr r3, [r7, #12] + 800de40: 681b ldr r3, [r3, #0] + 800de42: 60fb str r3, [r7, #12] + 800de44: 68fb ldr r3, [r7, #12] + 800de46: 681b ldr r3, [r3, #0] + 800de48: 687a ldr r2, [r7, #4] + 800de4a: 429a cmp r2, r3 + 800de4c: d8f7 bhi.n 800de3e /* Nothing to do here, just iterate to the right position. */ } /* Do the block being inserted, and the block it is being inserted after make a contiguous block of memory? */ puc = ( uint8_t * ) pxIterator; - 800d8de: 68fb ldr r3, [r7, #12] - 800d8e0: 60bb str r3, [r7, #8] + 800de4e: 68fb ldr r3, [r7, #12] + 800de50: 60bb str r3, [r7, #8] if( ( puc + pxIterator->xBlockSize ) == ( uint8_t * ) pxBlockToInsert ) - 800d8e2: 68fb ldr r3, [r7, #12] - 800d8e4: 685b ldr r3, [r3, #4] - 800d8e6: 68ba ldr r2, [r7, #8] - 800d8e8: 4413 add r3, r2 - 800d8ea: 687a ldr r2, [r7, #4] - 800d8ec: 429a cmp r2, r3 - 800d8ee: d108 bne.n 800d902 + 800de52: 68fb ldr r3, [r7, #12] + 800de54: 685b ldr r3, [r3, #4] + 800de56: 68ba ldr r2, [r7, #8] + 800de58: 4413 add r3, r2 + 800de5a: 687a ldr r2, [r7, #4] + 800de5c: 429a cmp r2, r3 + 800de5e: d108 bne.n 800de72 { pxIterator->xBlockSize += pxBlockToInsert->xBlockSize; - 800d8f0: 68fb ldr r3, [r7, #12] - 800d8f2: 685a ldr r2, [r3, #4] - 800d8f4: 687b ldr r3, [r7, #4] - 800d8f6: 685b ldr r3, [r3, #4] - 800d8f8: 441a add r2, r3 - 800d8fa: 68fb ldr r3, [r7, #12] - 800d8fc: 605a str r2, [r3, #4] + 800de60: 68fb ldr r3, [r7, #12] + 800de62: 685a ldr r2, [r3, #4] + 800de64: 687b ldr r3, [r7, #4] + 800de66: 685b ldr r3, [r3, #4] + 800de68: 441a add r2, r3 + 800de6a: 68fb ldr r3, [r7, #12] + 800de6c: 605a str r2, [r3, #4] pxBlockToInsert = pxIterator; - 800d8fe: 68fb ldr r3, [r7, #12] - 800d900: 607b str r3, [r7, #4] + 800de6e: 68fb ldr r3, [r7, #12] + 800de70: 607b str r3, [r7, #4] mtCOVERAGE_TEST_MARKER(); } /* Do the block being inserted, and the block it is being inserted before make a contiguous block of memory? */ puc = ( uint8_t * ) pxBlockToInsert; - 800d902: 687b ldr r3, [r7, #4] - 800d904: 60bb str r3, [r7, #8] + 800de72: 687b ldr r3, [r7, #4] + 800de74: 60bb str r3, [r7, #8] if( ( puc + pxBlockToInsert->xBlockSize ) == ( uint8_t * ) pxIterator->pxNextFreeBlock ) - 800d906: 687b ldr r3, [r7, #4] - 800d908: 685b ldr r3, [r3, #4] - 800d90a: 68ba ldr r2, [r7, #8] - 800d90c: 441a add r2, r3 - 800d90e: 68fb ldr r3, [r7, #12] - 800d910: 681b ldr r3, [r3, #0] - 800d912: 429a cmp r2, r3 - 800d914: d118 bne.n 800d948 + 800de76: 687b ldr r3, [r7, #4] + 800de78: 685b ldr r3, [r3, #4] + 800de7a: 68ba ldr r2, [r7, #8] + 800de7c: 441a add r2, r3 + 800de7e: 68fb ldr r3, [r7, #12] + 800de80: 681b ldr r3, [r3, #0] + 800de82: 429a cmp r2, r3 + 800de84: d118 bne.n 800deb8 { if( pxIterator->pxNextFreeBlock != pxEnd ) - 800d916: 68fb ldr r3, [r7, #12] - 800d918: 681a ldr r2, [r3, #0] - 800d91a: 4b15 ldr r3, [pc, #84] @ (800d970 ) - 800d91c: 681b ldr r3, [r3, #0] - 800d91e: 429a cmp r2, r3 - 800d920: d00d beq.n 800d93e + 800de86: 68fb ldr r3, [r7, #12] + 800de88: 681a ldr r2, [r3, #0] + 800de8a: 4b15 ldr r3, [pc, #84] @ (800dee0 ) + 800de8c: 681b ldr r3, [r3, #0] + 800de8e: 429a cmp r2, r3 + 800de90: d00d beq.n 800deae { /* Form one big block from the two blocks. */ pxBlockToInsert->xBlockSize += pxIterator->pxNextFreeBlock->xBlockSize; - 800d922: 687b ldr r3, [r7, #4] - 800d924: 685a ldr r2, [r3, #4] - 800d926: 68fb ldr r3, [r7, #12] - 800d928: 681b ldr r3, [r3, #0] - 800d92a: 685b ldr r3, [r3, #4] - 800d92c: 441a add r2, r3 - 800d92e: 687b ldr r3, [r7, #4] - 800d930: 605a str r2, [r3, #4] + 800de92: 687b ldr r3, [r7, #4] + 800de94: 685a ldr r2, [r3, #4] + 800de96: 68fb ldr r3, [r7, #12] + 800de98: 681b ldr r3, [r3, #0] + 800de9a: 685b ldr r3, [r3, #4] + 800de9c: 441a add r2, r3 + 800de9e: 687b ldr r3, [r7, #4] + 800dea0: 605a str r2, [r3, #4] pxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock->pxNextFreeBlock; - 800d932: 68fb ldr r3, [r7, #12] - 800d934: 681b ldr r3, [r3, #0] - 800d936: 681a ldr r2, [r3, #0] - 800d938: 687b ldr r3, [r7, #4] - 800d93a: 601a str r2, [r3, #0] - 800d93c: e008 b.n 800d950 + 800dea2: 68fb ldr r3, [r7, #12] + 800dea4: 681b ldr r3, [r3, #0] + 800dea6: 681a ldr r2, [r3, #0] + 800dea8: 687b ldr r3, [r7, #4] + 800deaa: 601a str r2, [r3, #0] + 800deac: e008 b.n 800dec0 } else { pxBlockToInsert->pxNextFreeBlock = pxEnd; - 800d93e: 4b0c ldr r3, [pc, #48] @ (800d970 ) - 800d940: 681a ldr r2, [r3, #0] - 800d942: 687b ldr r3, [r7, #4] - 800d944: 601a str r2, [r3, #0] - 800d946: e003 b.n 800d950 + 800deae: 4b0c ldr r3, [pc, #48] @ (800dee0 ) + 800deb0: 681a ldr r2, [r3, #0] + 800deb2: 687b ldr r3, [r7, #4] + 800deb4: 601a str r2, [r3, #0] + 800deb6: e003 b.n 800dec0 } } else { pxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock; - 800d948: 68fb ldr r3, [r7, #12] - 800d94a: 681a ldr r2, [r3, #0] - 800d94c: 687b ldr r3, [r7, #4] - 800d94e: 601a str r2, [r3, #0] + 800deb8: 68fb ldr r3, [r7, #12] + 800deba: 681a ldr r2, [r3, #0] + 800debc: 687b ldr r3, [r7, #4] + 800debe: 601a str r2, [r3, #0] /* If the block being inserted plugged a gab, so was merged with the block before and the block after, then it's pxNextFreeBlock pointer will have already been set, and should not be set here as that would make it point to itself. */ if( pxIterator != pxBlockToInsert ) - 800d950: 68fa ldr r2, [r7, #12] - 800d952: 687b ldr r3, [r7, #4] - 800d954: 429a cmp r2, r3 - 800d956: d002 beq.n 800d95e + 800dec0: 68fa ldr r2, [r7, #12] + 800dec2: 687b ldr r3, [r7, #4] + 800dec4: 429a cmp r2, r3 + 800dec6: d002 beq.n 800dece { pxIterator->pxNextFreeBlock = pxBlockToInsert; - 800d958: 68fb ldr r3, [r7, #12] - 800d95a: 687a ldr r2, [r7, #4] - 800d95c: 601a str r2, [r3, #0] + 800dec8: 68fb ldr r3, [r7, #12] + 800deca: 687a ldr r2, [r7, #4] + 800decc: 601a str r2, [r3, #0] } else { mtCOVERAGE_TEST_MARKER(); } } - 800d95e: bf00 nop - 800d960: 3714 adds r7, #20 - 800d962: 46bd mov sp, r7 - 800d964: f85d 7b04 ldr.w r7, [sp], #4 - 800d968: 4770 bx lr - 800d96a: bf00 nop - 800d96c: 20011050 .word 0x20011050 - 800d970: 20011058 .word 0x20011058 + 800dece: bf00 nop + 800ded0: 3714 adds r7, #20 + 800ded2: 46bd mov sp, r7 + 800ded4: f85d 7b04 ldr.w r7, [sp], #4 + 800ded8: 4770 bx lr + 800deda: bf00 nop + 800dedc: 20011098 .word 0x20011098 + 800dee0: 200110a0 .word 0x200110a0 -0800d974 <_vsiprintf_r>: - 800d974: b500 push {lr} - 800d976: b09b sub sp, #108 @ 0x6c - 800d978: 9100 str r1, [sp, #0] - 800d97a: 9104 str r1, [sp, #16] - 800d97c: f06f 4100 mvn.w r1, #2147483648 @ 0x80000000 - 800d980: 9105 str r1, [sp, #20] - 800d982: 9102 str r1, [sp, #8] - 800d984: 4905 ldr r1, [pc, #20] @ (800d99c <_vsiprintf_r+0x28>) - 800d986: 9103 str r1, [sp, #12] - 800d988: 4669 mov r1, sp - 800d98a: f000 f9ff bl 800dd8c <_svfiprintf_r> - 800d98e: 9b00 ldr r3, [sp, #0] - 800d990: 2200 movs r2, #0 - 800d992: 701a strb r2, [r3, #0] - 800d994: b01b add sp, #108 @ 0x6c - 800d996: f85d fb04 ldr.w pc, [sp], #4 - 800d99a: bf00 nop - 800d99c: ffff0208 .word 0xffff0208 +0800dee4 <_vsiprintf_r>: + 800dee4: b500 push {lr} + 800dee6: b09b sub sp, #108 @ 0x6c + 800dee8: 9100 str r1, [sp, #0] + 800deea: 9104 str r1, [sp, #16] + 800deec: f06f 4100 mvn.w r1, #2147483648 @ 0x80000000 + 800def0: 9105 str r1, [sp, #20] + 800def2: 9102 str r1, [sp, #8] + 800def4: 4905 ldr r1, [pc, #20] @ (800df0c <_vsiprintf_r+0x28>) + 800def6: 9103 str r1, [sp, #12] + 800def8: 4669 mov r1, sp + 800defa: f000 f9ff bl 800e2fc <_svfiprintf_r> + 800defe: 9b00 ldr r3, [sp, #0] + 800df00: 2200 movs r2, #0 + 800df02: 701a strb r2, [r3, #0] + 800df04: b01b add sp, #108 @ 0x6c + 800df06: f85d fb04 ldr.w pc, [sp], #4 + 800df0a: bf00 nop + 800df0c: ffff0208 .word 0xffff0208 -0800d9a0 : - 800d9a0: 4613 mov r3, r2 - 800d9a2: 460a mov r2, r1 - 800d9a4: 4601 mov r1, r0 - 800d9a6: 4802 ldr r0, [pc, #8] @ (800d9b0 ) - 800d9a8: 6800 ldr r0, [r0, #0] - 800d9aa: f7ff bfe3 b.w 800d974 <_vsiprintf_r> - 800d9ae: bf00 nop - 800d9b0: 20000010 .word 0x20000010 +0800df10 : + 800df10: 4613 mov r3, r2 + 800df12: 460a mov r2, r1 + 800df14: 4601 mov r1, r0 + 800df16: 4802 ldr r0, [pc, #8] @ (800df20 ) + 800df18: 6800 ldr r0, [r0, #0] + 800df1a: f7ff bfe3 b.w 800dee4 <_vsiprintf_r> + 800df1e: bf00 nop + 800df20: 20000010 .word 0x20000010 -0800d9b4 : - 800d9b4: 4402 add r2, r0 - 800d9b6: 4603 mov r3, r0 - 800d9b8: 4293 cmp r3, r2 - 800d9ba: d100 bne.n 800d9be - 800d9bc: 4770 bx lr - 800d9be: f803 1b01 strb.w r1, [r3], #1 - 800d9c2: e7f9 b.n 800d9b8 +0800df24 : + 800df24: 4402 add r2, r0 + 800df26: 4603 mov r3, r0 + 800df28: 4293 cmp r3, r2 + 800df2a: d100 bne.n 800df2e + 800df2c: 4770 bx lr + 800df2e: f803 1b01 strb.w r1, [r3], #1 + 800df32: e7f9 b.n 800df28 -0800d9c4 <_reclaim_reent>: - 800d9c4: 4b29 ldr r3, [pc, #164] @ (800da6c <_reclaim_reent+0xa8>) - 800d9c6: 681b ldr r3, [r3, #0] - 800d9c8: 4283 cmp r3, r0 - 800d9ca: b570 push {r4, r5, r6, lr} - 800d9cc: 4604 mov r4, r0 - 800d9ce: d04b beq.n 800da68 <_reclaim_reent+0xa4> - 800d9d0: 69c3 ldr r3, [r0, #28] - 800d9d2: b1ab cbz r3, 800da00 <_reclaim_reent+0x3c> - 800d9d4: 68db ldr r3, [r3, #12] - 800d9d6: b16b cbz r3, 800d9f4 <_reclaim_reent+0x30> - 800d9d8: 2500 movs r5, #0 - 800d9da: 69e3 ldr r3, [r4, #28] - 800d9dc: 68db ldr r3, [r3, #12] - 800d9de: 5959 ldr r1, [r3, r5] - 800d9e0: 2900 cmp r1, #0 - 800d9e2: d13b bne.n 800da5c <_reclaim_reent+0x98> - 800d9e4: 3504 adds r5, #4 - 800d9e6: 2d80 cmp r5, #128 @ 0x80 - 800d9e8: d1f7 bne.n 800d9da <_reclaim_reent+0x16> - 800d9ea: 69e3 ldr r3, [r4, #28] - 800d9ec: 4620 mov r0, r4 - 800d9ee: 68d9 ldr r1, [r3, #12] - 800d9f0: f000 f878 bl 800dae4 <_free_r> - 800d9f4: 69e3 ldr r3, [r4, #28] - 800d9f6: 6819 ldr r1, [r3, #0] - 800d9f8: b111 cbz r1, 800da00 <_reclaim_reent+0x3c> - 800d9fa: 4620 mov r0, r4 - 800d9fc: f000 f872 bl 800dae4 <_free_r> - 800da00: 6961 ldr r1, [r4, #20] - 800da02: b111 cbz r1, 800da0a <_reclaim_reent+0x46> - 800da04: 4620 mov r0, r4 - 800da06: f000 f86d bl 800dae4 <_free_r> - 800da0a: 69e1 ldr r1, [r4, #28] - 800da0c: b111 cbz r1, 800da14 <_reclaim_reent+0x50> - 800da0e: 4620 mov r0, r4 - 800da10: f000 f868 bl 800dae4 <_free_r> - 800da14: 6b21 ldr r1, [r4, #48] @ 0x30 - 800da16: b111 cbz r1, 800da1e <_reclaim_reent+0x5a> - 800da18: 4620 mov r0, r4 - 800da1a: f000 f863 bl 800dae4 <_free_r> - 800da1e: 6b61 ldr r1, [r4, #52] @ 0x34 - 800da20: b111 cbz r1, 800da28 <_reclaim_reent+0x64> - 800da22: 4620 mov r0, r4 - 800da24: f000 f85e bl 800dae4 <_free_r> - 800da28: 6ba1 ldr r1, [r4, #56] @ 0x38 - 800da2a: b111 cbz r1, 800da32 <_reclaim_reent+0x6e> - 800da2c: 4620 mov r0, r4 - 800da2e: f000 f859 bl 800dae4 <_free_r> - 800da32: 6ca1 ldr r1, [r4, #72] @ 0x48 - 800da34: b111 cbz r1, 800da3c <_reclaim_reent+0x78> - 800da36: 4620 mov r0, r4 - 800da38: f000 f854 bl 800dae4 <_free_r> - 800da3c: 6c61 ldr r1, [r4, #68] @ 0x44 - 800da3e: b111 cbz r1, 800da46 <_reclaim_reent+0x82> - 800da40: 4620 mov r0, r4 - 800da42: f000 f84f bl 800dae4 <_free_r> - 800da46: 6ae1 ldr r1, [r4, #44] @ 0x2c - 800da48: b111 cbz r1, 800da50 <_reclaim_reent+0x8c> - 800da4a: 4620 mov r0, r4 - 800da4c: f000 f84a bl 800dae4 <_free_r> - 800da50: 6a23 ldr r3, [r4, #32] - 800da52: b14b cbz r3, 800da68 <_reclaim_reent+0xa4> - 800da54: 4620 mov r0, r4 - 800da56: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 800da5a: 4718 bx r3 - 800da5c: 680e ldr r6, [r1, #0] - 800da5e: 4620 mov r0, r4 - 800da60: f000 f840 bl 800dae4 <_free_r> - 800da64: 4631 mov r1, r6 - 800da66: e7bb b.n 800d9e0 <_reclaim_reent+0x1c> - 800da68: bd70 pop {r4, r5, r6, pc} - 800da6a: bf00 nop - 800da6c: 20000010 .word 0x20000010 +0800df34 <_reclaim_reent>: + 800df34: 4b29 ldr r3, [pc, #164] @ (800dfdc <_reclaim_reent+0xa8>) + 800df36: 681b ldr r3, [r3, #0] + 800df38: 4283 cmp r3, r0 + 800df3a: b570 push {r4, r5, r6, lr} + 800df3c: 4604 mov r4, r0 + 800df3e: d04b beq.n 800dfd8 <_reclaim_reent+0xa4> + 800df40: 69c3 ldr r3, [r0, #28] + 800df42: b1ab cbz r3, 800df70 <_reclaim_reent+0x3c> + 800df44: 68db ldr r3, [r3, #12] + 800df46: b16b cbz r3, 800df64 <_reclaim_reent+0x30> + 800df48: 2500 movs r5, #0 + 800df4a: 69e3 ldr r3, [r4, #28] + 800df4c: 68db ldr r3, [r3, #12] + 800df4e: 5959 ldr r1, [r3, r5] + 800df50: 2900 cmp r1, #0 + 800df52: d13b bne.n 800dfcc <_reclaim_reent+0x98> + 800df54: 3504 adds r5, #4 + 800df56: 2d80 cmp r5, #128 @ 0x80 + 800df58: d1f7 bne.n 800df4a <_reclaim_reent+0x16> + 800df5a: 69e3 ldr r3, [r4, #28] + 800df5c: 4620 mov r0, r4 + 800df5e: 68d9 ldr r1, [r3, #12] + 800df60: f000 f878 bl 800e054 <_free_r> + 800df64: 69e3 ldr r3, [r4, #28] + 800df66: 6819 ldr r1, [r3, #0] + 800df68: b111 cbz r1, 800df70 <_reclaim_reent+0x3c> + 800df6a: 4620 mov r0, r4 + 800df6c: f000 f872 bl 800e054 <_free_r> + 800df70: 6961 ldr r1, [r4, #20] + 800df72: b111 cbz r1, 800df7a <_reclaim_reent+0x46> + 800df74: 4620 mov r0, r4 + 800df76: f000 f86d bl 800e054 <_free_r> + 800df7a: 69e1 ldr r1, [r4, #28] + 800df7c: b111 cbz r1, 800df84 <_reclaim_reent+0x50> + 800df7e: 4620 mov r0, r4 + 800df80: f000 f868 bl 800e054 <_free_r> + 800df84: 6b21 ldr r1, [r4, #48] @ 0x30 + 800df86: b111 cbz r1, 800df8e <_reclaim_reent+0x5a> + 800df88: 4620 mov r0, r4 + 800df8a: f000 f863 bl 800e054 <_free_r> + 800df8e: 6b61 ldr r1, [r4, #52] @ 0x34 + 800df90: b111 cbz r1, 800df98 <_reclaim_reent+0x64> + 800df92: 4620 mov r0, r4 + 800df94: f000 f85e bl 800e054 <_free_r> + 800df98: 6ba1 ldr r1, [r4, #56] @ 0x38 + 800df9a: b111 cbz r1, 800dfa2 <_reclaim_reent+0x6e> + 800df9c: 4620 mov r0, r4 + 800df9e: f000 f859 bl 800e054 <_free_r> + 800dfa2: 6ca1 ldr r1, [r4, #72] @ 0x48 + 800dfa4: b111 cbz r1, 800dfac <_reclaim_reent+0x78> + 800dfa6: 4620 mov r0, r4 + 800dfa8: f000 f854 bl 800e054 <_free_r> + 800dfac: 6c61 ldr r1, [r4, #68] @ 0x44 + 800dfae: b111 cbz r1, 800dfb6 <_reclaim_reent+0x82> + 800dfb0: 4620 mov r0, r4 + 800dfb2: f000 f84f bl 800e054 <_free_r> + 800dfb6: 6ae1 ldr r1, [r4, #44] @ 0x2c + 800dfb8: b111 cbz r1, 800dfc0 <_reclaim_reent+0x8c> + 800dfba: 4620 mov r0, r4 + 800dfbc: f000 f84a bl 800e054 <_free_r> + 800dfc0: 6a23 ldr r3, [r4, #32] + 800dfc2: b14b cbz r3, 800dfd8 <_reclaim_reent+0xa4> + 800dfc4: 4620 mov r0, r4 + 800dfc6: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 800dfca: 4718 bx r3 + 800dfcc: 680e ldr r6, [r1, #0] + 800dfce: 4620 mov r0, r4 + 800dfd0: f000 f840 bl 800e054 <_free_r> + 800dfd4: 4631 mov r1, r6 + 800dfd6: e7bb b.n 800df50 <_reclaim_reent+0x1c> + 800dfd8: bd70 pop {r4, r5, r6, pc} + 800dfda: bf00 nop + 800dfdc: 20000010 .word 0x20000010 -0800da70 <__errno>: - 800da70: 4b01 ldr r3, [pc, #4] @ (800da78 <__errno+0x8>) - 800da72: 6818 ldr r0, [r3, #0] - 800da74: 4770 bx lr - 800da76: bf00 nop - 800da78: 20000010 .word 0x20000010 +0800dfe0 <__errno>: + 800dfe0: 4b01 ldr r3, [pc, #4] @ (800dfe8 <__errno+0x8>) + 800dfe2: 6818 ldr r0, [r3, #0] + 800dfe4: 4770 bx lr + 800dfe6: bf00 nop + 800dfe8: 20000010 .word 0x20000010 -0800da7c <__libc_init_array>: - 800da7c: b570 push {r4, r5, r6, lr} - 800da7e: 4d0d ldr r5, [pc, #52] @ (800dab4 <__libc_init_array+0x38>) - 800da80: 4c0d ldr r4, [pc, #52] @ (800dab8 <__libc_init_array+0x3c>) - 800da82: 1b64 subs r4, r4, r5 - 800da84: 10a4 asrs r4, r4, #2 - 800da86: 2600 movs r6, #0 - 800da88: 42a6 cmp r6, r4 - 800da8a: d109 bne.n 800daa0 <__libc_init_array+0x24> - 800da8c: 4d0b ldr r5, [pc, #44] @ (800dabc <__libc_init_array+0x40>) - 800da8e: 4c0c ldr r4, [pc, #48] @ (800dac0 <__libc_init_array+0x44>) - 800da90: f000 fd6c bl 800e56c <_init> - 800da94: 1b64 subs r4, r4, r5 - 800da96: 10a4 asrs r4, r4, #2 - 800da98: 2600 movs r6, #0 - 800da9a: 42a6 cmp r6, r4 - 800da9c: d105 bne.n 800daaa <__libc_init_array+0x2e> - 800da9e: bd70 pop {r4, r5, r6, pc} - 800daa0: f855 3b04 ldr.w r3, [r5], #4 - 800daa4: 4798 blx r3 - 800daa6: 3601 adds r6, #1 - 800daa8: e7ee b.n 800da88 <__libc_init_array+0xc> - 800daaa: f855 3b04 ldr.w r3, [r5], #4 - 800daae: 4798 blx r3 - 800dab0: 3601 adds r6, #1 - 800dab2: e7f2 b.n 800da9a <__libc_init_array+0x1e> - 800dab4: 0800ea1c .word 0x0800ea1c - 800dab8: 0800ea1c .word 0x0800ea1c - 800dabc: 0800ea1c .word 0x0800ea1c - 800dac0: 0800ea20 .word 0x0800ea20 +0800dfec <__libc_init_array>: + 800dfec: b570 push {r4, r5, r6, lr} + 800dfee: 4d0d ldr r5, [pc, #52] @ (800e024 <__libc_init_array+0x38>) + 800dff0: 4c0d ldr r4, [pc, #52] @ (800e028 <__libc_init_array+0x3c>) + 800dff2: 1b64 subs r4, r4, r5 + 800dff4: 10a4 asrs r4, r4, #2 + 800dff6: 2600 movs r6, #0 + 800dff8: 42a6 cmp r6, r4 + 800dffa: d109 bne.n 800e010 <__libc_init_array+0x24> + 800dffc: 4d0b ldr r5, [pc, #44] @ (800e02c <__libc_init_array+0x40>) + 800dffe: 4c0c ldr r4, [pc, #48] @ (800e030 <__libc_init_array+0x44>) + 800e000: f000 fd6c bl 800eadc <_init> + 800e004: 1b64 subs r4, r4, r5 + 800e006: 10a4 asrs r4, r4, #2 + 800e008: 2600 movs r6, #0 + 800e00a: 42a6 cmp r6, r4 + 800e00c: d105 bne.n 800e01a <__libc_init_array+0x2e> + 800e00e: bd70 pop {r4, r5, r6, pc} + 800e010: f855 3b04 ldr.w r3, [r5], #4 + 800e014: 4798 blx r3 + 800e016: 3601 adds r6, #1 + 800e018: e7ee b.n 800dff8 <__libc_init_array+0xc> + 800e01a: f855 3b04 ldr.w r3, [r5], #4 + 800e01e: 4798 blx r3 + 800e020: 3601 adds r6, #1 + 800e022: e7f2 b.n 800e00a <__libc_init_array+0x1e> + 800e024: 0800ef8c .word 0x0800ef8c + 800e028: 0800ef8c .word 0x0800ef8c + 800e02c: 0800ef8c .word 0x0800ef8c + 800e030: 0800ef90 .word 0x0800ef90 -0800dac4 <__retarget_lock_acquire_recursive>: - 800dac4: 4770 bx lr +0800e034 <__retarget_lock_acquire_recursive>: + 800e034: 4770 bx lr -0800dac6 <__retarget_lock_release_recursive>: - 800dac6: 4770 bx lr +0800e036 <__retarget_lock_release_recursive>: + 800e036: 4770 bx lr -0800dac8 : - 800dac8: 440a add r2, r1 - 800daca: 4291 cmp r1, r2 - 800dacc: f100 33ff add.w r3, r0, #4294967295 - 800dad0: d100 bne.n 800dad4 - 800dad2: 4770 bx lr - 800dad4: b510 push {r4, lr} - 800dad6: f811 4b01 ldrb.w r4, [r1], #1 - 800dada: f803 4f01 strb.w r4, [r3, #1]! - 800dade: 4291 cmp r1, r2 - 800dae0: d1f9 bne.n 800dad6 - 800dae2: bd10 pop {r4, pc} +0800e038 : + 800e038: 440a add r2, r1 + 800e03a: 4291 cmp r1, r2 + 800e03c: f100 33ff add.w r3, r0, #4294967295 + 800e040: d100 bne.n 800e044 + 800e042: 4770 bx lr + 800e044: b510 push {r4, lr} + 800e046: f811 4b01 ldrb.w r4, [r1], #1 + 800e04a: f803 4f01 strb.w r4, [r3, #1]! + 800e04e: 4291 cmp r1, r2 + 800e050: d1f9 bne.n 800e046 + 800e052: bd10 pop {r4, pc} -0800dae4 <_free_r>: - 800dae4: b538 push {r3, r4, r5, lr} - 800dae6: 4605 mov r5, r0 - 800dae8: 2900 cmp r1, #0 - 800daea: d041 beq.n 800db70 <_free_r+0x8c> - 800daec: f851 3c04 ldr.w r3, [r1, #-4] - 800daf0: 1f0c subs r4, r1, #4 - 800daf2: 2b00 cmp r3, #0 - 800daf4: bfb8 it lt - 800daf6: 18e4 addlt r4, r4, r3 - 800daf8: f000 f8e0 bl 800dcbc <__malloc_lock> - 800dafc: 4a1d ldr r2, [pc, #116] @ (800db74 <_free_r+0x90>) - 800dafe: 6813 ldr r3, [r2, #0] - 800db00: b933 cbnz r3, 800db10 <_free_r+0x2c> - 800db02: 6063 str r3, [r4, #4] - 800db04: 6014 str r4, [r2, #0] - 800db06: 4628 mov r0, r5 - 800db08: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} - 800db0c: f000 b8dc b.w 800dcc8 <__malloc_unlock> - 800db10: 42a3 cmp r3, r4 - 800db12: d908 bls.n 800db26 <_free_r+0x42> - 800db14: 6820 ldr r0, [r4, #0] - 800db16: 1821 adds r1, r4, r0 - 800db18: 428b cmp r3, r1 - 800db1a: bf01 itttt eq - 800db1c: 6819 ldreq r1, [r3, #0] - 800db1e: 685b ldreq r3, [r3, #4] - 800db20: 1809 addeq r1, r1, r0 - 800db22: 6021 streq r1, [r4, #0] - 800db24: e7ed b.n 800db02 <_free_r+0x1e> - 800db26: 461a mov r2, r3 - 800db28: 685b ldr r3, [r3, #4] - 800db2a: b10b cbz r3, 800db30 <_free_r+0x4c> - 800db2c: 42a3 cmp r3, r4 - 800db2e: d9fa bls.n 800db26 <_free_r+0x42> - 800db30: 6811 ldr r1, [r2, #0] - 800db32: 1850 adds r0, r2, r1 - 800db34: 42a0 cmp r0, r4 - 800db36: d10b bne.n 800db50 <_free_r+0x6c> - 800db38: 6820 ldr r0, [r4, #0] - 800db3a: 4401 add r1, r0 - 800db3c: 1850 adds r0, r2, r1 - 800db3e: 4283 cmp r3, r0 - 800db40: 6011 str r1, [r2, #0] - 800db42: d1e0 bne.n 800db06 <_free_r+0x22> - 800db44: 6818 ldr r0, [r3, #0] - 800db46: 685b ldr r3, [r3, #4] - 800db48: 6053 str r3, [r2, #4] - 800db4a: 4408 add r0, r1 - 800db4c: 6010 str r0, [r2, #0] - 800db4e: e7da b.n 800db06 <_free_r+0x22> - 800db50: d902 bls.n 800db58 <_free_r+0x74> - 800db52: 230c movs r3, #12 - 800db54: 602b str r3, [r5, #0] - 800db56: e7d6 b.n 800db06 <_free_r+0x22> - 800db58: 6820 ldr r0, [r4, #0] - 800db5a: 1821 adds r1, r4, r0 - 800db5c: 428b cmp r3, r1 - 800db5e: bf04 itt eq - 800db60: 6819 ldreq r1, [r3, #0] - 800db62: 685b ldreq r3, [r3, #4] - 800db64: 6063 str r3, [r4, #4] - 800db66: bf04 itt eq - 800db68: 1809 addeq r1, r1, r0 - 800db6a: 6021 streq r1, [r4, #0] - 800db6c: 6054 str r4, [r2, #4] - 800db6e: e7ca b.n 800db06 <_free_r+0x22> - 800db70: bd38 pop {r3, r4, r5, pc} - 800db72: bf00 nop - 800db74: 200111b4 .word 0x200111b4 +0800e054 <_free_r>: + 800e054: b538 push {r3, r4, r5, lr} + 800e056: 4605 mov r5, r0 + 800e058: 2900 cmp r1, #0 + 800e05a: d041 beq.n 800e0e0 <_free_r+0x8c> + 800e05c: f851 3c04 ldr.w r3, [r1, #-4] + 800e060: 1f0c subs r4, r1, #4 + 800e062: 2b00 cmp r3, #0 + 800e064: bfb8 it lt + 800e066: 18e4 addlt r4, r4, r3 + 800e068: f000 f8e0 bl 800e22c <__malloc_lock> + 800e06c: 4a1d ldr r2, [pc, #116] @ (800e0e4 <_free_r+0x90>) + 800e06e: 6813 ldr r3, [r2, #0] + 800e070: b933 cbnz r3, 800e080 <_free_r+0x2c> + 800e072: 6063 str r3, [r4, #4] + 800e074: 6014 str r4, [r2, #0] + 800e076: 4628 mov r0, r5 + 800e078: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 800e07c: f000 b8dc b.w 800e238 <__malloc_unlock> + 800e080: 42a3 cmp r3, r4 + 800e082: d908 bls.n 800e096 <_free_r+0x42> + 800e084: 6820 ldr r0, [r4, #0] + 800e086: 1821 adds r1, r4, r0 + 800e088: 428b cmp r3, r1 + 800e08a: bf01 itttt eq + 800e08c: 6819 ldreq r1, [r3, #0] + 800e08e: 685b ldreq r3, [r3, #4] + 800e090: 1809 addeq r1, r1, r0 + 800e092: 6021 streq r1, [r4, #0] + 800e094: e7ed b.n 800e072 <_free_r+0x1e> + 800e096: 461a mov r2, r3 + 800e098: 685b ldr r3, [r3, #4] + 800e09a: b10b cbz r3, 800e0a0 <_free_r+0x4c> + 800e09c: 42a3 cmp r3, r4 + 800e09e: d9fa bls.n 800e096 <_free_r+0x42> + 800e0a0: 6811 ldr r1, [r2, #0] + 800e0a2: 1850 adds r0, r2, r1 + 800e0a4: 42a0 cmp r0, r4 + 800e0a6: d10b bne.n 800e0c0 <_free_r+0x6c> + 800e0a8: 6820 ldr r0, [r4, #0] + 800e0aa: 4401 add r1, r0 + 800e0ac: 1850 adds r0, r2, r1 + 800e0ae: 4283 cmp r3, r0 + 800e0b0: 6011 str r1, [r2, #0] + 800e0b2: d1e0 bne.n 800e076 <_free_r+0x22> + 800e0b4: 6818 ldr r0, [r3, #0] + 800e0b6: 685b ldr r3, [r3, #4] + 800e0b8: 6053 str r3, [r2, #4] + 800e0ba: 4408 add r0, r1 + 800e0bc: 6010 str r0, [r2, #0] + 800e0be: e7da b.n 800e076 <_free_r+0x22> + 800e0c0: d902 bls.n 800e0c8 <_free_r+0x74> + 800e0c2: 230c movs r3, #12 + 800e0c4: 602b str r3, [r5, #0] + 800e0c6: e7d6 b.n 800e076 <_free_r+0x22> + 800e0c8: 6820 ldr r0, [r4, #0] + 800e0ca: 1821 adds r1, r4, r0 + 800e0cc: 428b cmp r3, r1 + 800e0ce: bf04 itt eq + 800e0d0: 6819 ldreq r1, [r3, #0] + 800e0d2: 685b ldreq r3, [r3, #4] + 800e0d4: 6063 str r3, [r4, #4] + 800e0d6: bf04 itt eq + 800e0d8: 1809 addeq r1, r1, r0 + 800e0da: 6021 streq r1, [r4, #0] + 800e0dc: 6054 str r4, [r2, #4] + 800e0de: e7ca b.n 800e076 <_free_r+0x22> + 800e0e0: bd38 pop {r3, r4, r5, pc} + 800e0e2: bf00 nop + 800e0e4: 200111fc .word 0x200111fc -0800db78 : - 800db78: b570 push {r4, r5, r6, lr} - 800db7a: 4e0f ldr r6, [pc, #60] @ (800dbb8 ) - 800db7c: 460c mov r4, r1 - 800db7e: 6831 ldr r1, [r6, #0] - 800db80: 4605 mov r5, r0 - 800db82: b911 cbnz r1, 800db8a - 800db84: f000 fba6 bl 800e2d4 <_sbrk_r> - 800db88: 6030 str r0, [r6, #0] - 800db8a: 4621 mov r1, r4 - 800db8c: 4628 mov r0, r5 - 800db8e: f000 fba1 bl 800e2d4 <_sbrk_r> - 800db92: 1c43 adds r3, r0, #1 - 800db94: d103 bne.n 800db9e - 800db96: f04f 34ff mov.w r4, #4294967295 - 800db9a: 4620 mov r0, r4 - 800db9c: bd70 pop {r4, r5, r6, pc} - 800db9e: 1cc4 adds r4, r0, #3 - 800dba0: f024 0403 bic.w r4, r4, #3 - 800dba4: 42a0 cmp r0, r4 - 800dba6: d0f8 beq.n 800db9a - 800dba8: 1a21 subs r1, r4, r0 - 800dbaa: 4628 mov r0, r5 - 800dbac: f000 fb92 bl 800e2d4 <_sbrk_r> - 800dbb0: 3001 adds r0, #1 - 800dbb2: d1f2 bne.n 800db9a - 800dbb4: e7ef b.n 800db96 - 800dbb6: bf00 nop - 800dbb8: 200111b0 .word 0x200111b0 +0800e0e8 : + 800e0e8: b570 push {r4, r5, r6, lr} + 800e0ea: 4e0f ldr r6, [pc, #60] @ (800e128 ) + 800e0ec: 460c mov r4, r1 + 800e0ee: 6831 ldr r1, [r6, #0] + 800e0f0: 4605 mov r5, r0 + 800e0f2: b911 cbnz r1, 800e0fa + 800e0f4: f000 fba6 bl 800e844 <_sbrk_r> + 800e0f8: 6030 str r0, [r6, #0] + 800e0fa: 4621 mov r1, r4 + 800e0fc: 4628 mov r0, r5 + 800e0fe: f000 fba1 bl 800e844 <_sbrk_r> + 800e102: 1c43 adds r3, r0, #1 + 800e104: d103 bne.n 800e10e + 800e106: f04f 34ff mov.w r4, #4294967295 + 800e10a: 4620 mov r0, r4 + 800e10c: bd70 pop {r4, r5, r6, pc} + 800e10e: 1cc4 adds r4, r0, #3 + 800e110: f024 0403 bic.w r4, r4, #3 + 800e114: 42a0 cmp r0, r4 + 800e116: d0f8 beq.n 800e10a + 800e118: 1a21 subs r1, r4, r0 + 800e11a: 4628 mov r0, r5 + 800e11c: f000 fb92 bl 800e844 <_sbrk_r> + 800e120: 3001 adds r0, #1 + 800e122: d1f2 bne.n 800e10a + 800e124: e7ef b.n 800e106 + 800e126: bf00 nop + 800e128: 200111f8 .word 0x200111f8 -0800dbbc <_malloc_r>: - 800dbbc: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 800dbc0: 1ccd adds r5, r1, #3 - 800dbc2: f025 0503 bic.w r5, r5, #3 - 800dbc6: 3508 adds r5, #8 - 800dbc8: 2d0c cmp r5, #12 - 800dbca: bf38 it cc - 800dbcc: 250c movcc r5, #12 - 800dbce: 2d00 cmp r5, #0 - 800dbd0: 4606 mov r6, r0 - 800dbd2: db01 blt.n 800dbd8 <_malloc_r+0x1c> - 800dbd4: 42a9 cmp r1, r5 - 800dbd6: d904 bls.n 800dbe2 <_malloc_r+0x26> - 800dbd8: 230c movs r3, #12 - 800dbda: 6033 str r3, [r6, #0] - 800dbdc: 2000 movs r0, #0 - 800dbde: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - 800dbe2: f8df 80d4 ldr.w r8, [pc, #212] @ 800dcb8 <_malloc_r+0xfc> - 800dbe6: f000 f869 bl 800dcbc <__malloc_lock> - 800dbea: f8d8 3000 ldr.w r3, [r8] - 800dbee: 461c mov r4, r3 - 800dbf0: bb44 cbnz r4, 800dc44 <_malloc_r+0x88> - 800dbf2: 4629 mov r1, r5 - 800dbf4: 4630 mov r0, r6 - 800dbf6: f7ff ffbf bl 800db78 - 800dbfa: 1c43 adds r3, r0, #1 - 800dbfc: 4604 mov r4, r0 - 800dbfe: d158 bne.n 800dcb2 <_malloc_r+0xf6> - 800dc00: f8d8 4000 ldr.w r4, [r8] - 800dc04: 4627 mov r7, r4 - 800dc06: 2f00 cmp r7, #0 - 800dc08: d143 bne.n 800dc92 <_malloc_r+0xd6> - 800dc0a: 2c00 cmp r4, #0 - 800dc0c: d04b beq.n 800dca6 <_malloc_r+0xea> - 800dc0e: 6823 ldr r3, [r4, #0] - 800dc10: 4639 mov r1, r7 - 800dc12: 4630 mov r0, r6 - 800dc14: eb04 0903 add.w r9, r4, r3 - 800dc18: f000 fb5c bl 800e2d4 <_sbrk_r> - 800dc1c: 4581 cmp r9, r0 - 800dc1e: d142 bne.n 800dca6 <_malloc_r+0xea> - 800dc20: 6821 ldr r1, [r4, #0] - 800dc22: 1a6d subs r5, r5, r1 - 800dc24: 4629 mov r1, r5 - 800dc26: 4630 mov r0, r6 - 800dc28: f7ff ffa6 bl 800db78 - 800dc2c: 3001 adds r0, #1 - 800dc2e: d03a beq.n 800dca6 <_malloc_r+0xea> - 800dc30: 6823 ldr r3, [r4, #0] - 800dc32: 442b add r3, r5 - 800dc34: 6023 str r3, [r4, #0] - 800dc36: f8d8 3000 ldr.w r3, [r8] - 800dc3a: 685a ldr r2, [r3, #4] - 800dc3c: bb62 cbnz r2, 800dc98 <_malloc_r+0xdc> - 800dc3e: f8c8 7000 str.w r7, [r8] - 800dc42: e00f b.n 800dc64 <_malloc_r+0xa8> - 800dc44: 6822 ldr r2, [r4, #0] - 800dc46: 1b52 subs r2, r2, r5 - 800dc48: d420 bmi.n 800dc8c <_malloc_r+0xd0> - 800dc4a: 2a0b cmp r2, #11 - 800dc4c: d917 bls.n 800dc7e <_malloc_r+0xc2> - 800dc4e: 1961 adds r1, r4, r5 - 800dc50: 42a3 cmp r3, r4 - 800dc52: 6025 str r5, [r4, #0] - 800dc54: bf18 it ne - 800dc56: 6059 strne r1, [r3, #4] - 800dc58: 6863 ldr r3, [r4, #4] - 800dc5a: bf08 it eq - 800dc5c: f8c8 1000 streq.w r1, [r8] - 800dc60: 5162 str r2, [r4, r5] - 800dc62: 604b str r3, [r1, #4] - 800dc64: 4630 mov r0, r6 - 800dc66: f000 f82f bl 800dcc8 <__malloc_unlock> - 800dc6a: f104 000b add.w r0, r4, #11 - 800dc6e: 1d23 adds r3, r4, #4 - 800dc70: f020 0007 bic.w r0, r0, #7 - 800dc74: 1ac2 subs r2, r0, r3 - 800dc76: bf1c itt ne - 800dc78: 1a1b subne r3, r3, r0 - 800dc7a: 50a3 strne r3, [r4, r2] - 800dc7c: e7af b.n 800dbde <_malloc_r+0x22> - 800dc7e: 6862 ldr r2, [r4, #4] - 800dc80: 42a3 cmp r3, r4 - 800dc82: bf0c ite eq - 800dc84: f8c8 2000 streq.w r2, [r8] - 800dc88: 605a strne r2, [r3, #4] - 800dc8a: e7eb b.n 800dc64 <_malloc_r+0xa8> - 800dc8c: 4623 mov r3, r4 - 800dc8e: 6864 ldr r4, [r4, #4] - 800dc90: e7ae b.n 800dbf0 <_malloc_r+0x34> - 800dc92: 463c mov r4, r7 - 800dc94: 687f ldr r7, [r7, #4] - 800dc96: e7b6 b.n 800dc06 <_malloc_r+0x4a> - 800dc98: 461a mov r2, r3 - 800dc9a: 685b ldr r3, [r3, #4] - 800dc9c: 42a3 cmp r3, r4 - 800dc9e: d1fb bne.n 800dc98 <_malloc_r+0xdc> - 800dca0: 2300 movs r3, #0 - 800dca2: 6053 str r3, [r2, #4] - 800dca4: e7de b.n 800dc64 <_malloc_r+0xa8> - 800dca6: 230c movs r3, #12 - 800dca8: 6033 str r3, [r6, #0] - 800dcaa: 4630 mov r0, r6 - 800dcac: f000 f80c bl 800dcc8 <__malloc_unlock> - 800dcb0: e794 b.n 800dbdc <_malloc_r+0x20> - 800dcb2: 6005 str r5, [r0, #0] - 800dcb4: e7d6 b.n 800dc64 <_malloc_r+0xa8> - 800dcb6: bf00 nop - 800dcb8: 200111b4 .word 0x200111b4 +0800e12c <_malloc_r>: + 800e12c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 800e130: 1ccd adds r5, r1, #3 + 800e132: f025 0503 bic.w r5, r5, #3 + 800e136: 3508 adds r5, #8 + 800e138: 2d0c cmp r5, #12 + 800e13a: bf38 it cc + 800e13c: 250c movcc r5, #12 + 800e13e: 2d00 cmp r5, #0 + 800e140: 4606 mov r6, r0 + 800e142: db01 blt.n 800e148 <_malloc_r+0x1c> + 800e144: 42a9 cmp r1, r5 + 800e146: d904 bls.n 800e152 <_malloc_r+0x26> + 800e148: 230c movs r3, #12 + 800e14a: 6033 str r3, [r6, #0] + 800e14c: 2000 movs r0, #0 + 800e14e: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 800e152: f8df 80d4 ldr.w r8, [pc, #212] @ 800e228 <_malloc_r+0xfc> + 800e156: f000 f869 bl 800e22c <__malloc_lock> + 800e15a: f8d8 3000 ldr.w r3, [r8] + 800e15e: 461c mov r4, r3 + 800e160: bb44 cbnz r4, 800e1b4 <_malloc_r+0x88> + 800e162: 4629 mov r1, r5 + 800e164: 4630 mov r0, r6 + 800e166: f7ff ffbf bl 800e0e8 + 800e16a: 1c43 adds r3, r0, #1 + 800e16c: 4604 mov r4, r0 + 800e16e: d158 bne.n 800e222 <_malloc_r+0xf6> + 800e170: f8d8 4000 ldr.w r4, [r8] + 800e174: 4627 mov r7, r4 + 800e176: 2f00 cmp r7, #0 + 800e178: d143 bne.n 800e202 <_malloc_r+0xd6> + 800e17a: 2c00 cmp r4, #0 + 800e17c: d04b beq.n 800e216 <_malloc_r+0xea> + 800e17e: 6823 ldr r3, [r4, #0] + 800e180: 4639 mov r1, r7 + 800e182: 4630 mov r0, r6 + 800e184: eb04 0903 add.w r9, r4, r3 + 800e188: f000 fb5c bl 800e844 <_sbrk_r> + 800e18c: 4581 cmp r9, r0 + 800e18e: d142 bne.n 800e216 <_malloc_r+0xea> + 800e190: 6821 ldr r1, [r4, #0] + 800e192: 1a6d subs r5, r5, r1 + 800e194: 4629 mov r1, r5 + 800e196: 4630 mov r0, r6 + 800e198: f7ff ffa6 bl 800e0e8 + 800e19c: 3001 adds r0, #1 + 800e19e: d03a beq.n 800e216 <_malloc_r+0xea> + 800e1a0: 6823 ldr r3, [r4, #0] + 800e1a2: 442b add r3, r5 + 800e1a4: 6023 str r3, [r4, #0] + 800e1a6: f8d8 3000 ldr.w r3, [r8] + 800e1aa: 685a ldr r2, [r3, #4] + 800e1ac: bb62 cbnz r2, 800e208 <_malloc_r+0xdc> + 800e1ae: f8c8 7000 str.w r7, [r8] + 800e1b2: e00f b.n 800e1d4 <_malloc_r+0xa8> + 800e1b4: 6822 ldr r2, [r4, #0] + 800e1b6: 1b52 subs r2, r2, r5 + 800e1b8: d420 bmi.n 800e1fc <_malloc_r+0xd0> + 800e1ba: 2a0b cmp r2, #11 + 800e1bc: d917 bls.n 800e1ee <_malloc_r+0xc2> + 800e1be: 1961 adds r1, r4, r5 + 800e1c0: 42a3 cmp r3, r4 + 800e1c2: 6025 str r5, [r4, #0] + 800e1c4: bf18 it ne + 800e1c6: 6059 strne r1, [r3, #4] + 800e1c8: 6863 ldr r3, [r4, #4] + 800e1ca: bf08 it eq + 800e1cc: f8c8 1000 streq.w r1, [r8] + 800e1d0: 5162 str r2, [r4, r5] + 800e1d2: 604b str r3, [r1, #4] + 800e1d4: 4630 mov r0, r6 + 800e1d6: f000 f82f bl 800e238 <__malloc_unlock> + 800e1da: f104 000b add.w r0, r4, #11 + 800e1de: 1d23 adds r3, r4, #4 + 800e1e0: f020 0007 bic.w r0, r0, #7 + 800e1e4: 1ac2 subs r2, r0, r3 + 800e1e6: bf1c itt ne + 800e1e8: 1a1b subne r3, r3, r0 + 800e1ea: 50a3 strne r3, [r4, r2] + 800e1ec: e7af b.n 800e14e <_malloc_r+0x22> + 800e1ee: 6862 ldr r2, [r4, #4] + 800e1f0: 42a3 cmp r3, r4 + 800e1f2: bf0c ite eq + 800e1f4: f8c8 2000 streq.w r2, [r8] + 800e1f8: 605a strne r2, [r3, #4] + 800e1fa: e7eb b.n 800e1d4 <_malloc_r+0xa8> + 800e1fc: 4623 mov r3, r4 + 800e1fe: 6864 ldr r4, [r4, #4] + 800e200: e7ae b.n 800e160 <_malloc_r+0x34> + 800e202: 463c mov r4, r7 + 800e204: 687f ldr r7, [r7, #4] + 800e206: e7b6 b.n 800e176 <_malloc_r+0x4a> + 800e208: 461a mov r2, r3 + 800e20a: 685b ldr r3, [r3, #4] + 800e20c: 42a3 cmp r3, r4 + 800e20e: d1fb bne.n 800e208 <_malloc_r+0xdc> + 800e210: 2300 movs r3, #0 + 800e212: 6053 str r3, [r2, #4] + 800e214: e7de b.n 800e1d4 <_malloc_r+0xa8> + 800e216: 230c movs r3, #12 + 800e218: 6033 str r3, [r6, #0] + 800e21a: 4630 mov r0, r6 + 800e21c: f000 f80c bl 800e238 <__malloc_unlock> + 800e220: e794 b.n 800e14c <_malloc_r+0x20> + 800e222: 6005 str r5, [r0, #0] + 800e224: e7d6 b.n 800e1d4 <_malloc_r+0xa8> + 800e226: bf00 nop + 800e228: 200111fc .word 0x200111fc -0800dcbc <__malloc_lock>: - 800dcbc: 4801 ldr r0, [pc, #4] @ (800dcc4 <__malloc_lock+0x8>) - 800dcbe: f7ff bf01 b.w 800dac4 <__retarget_lock_acquire_recursive> - 800dcc2: bf00 nop - 800dcc4: 200111ac .word 0x200111ac +0800e22c <__malloc_lock>: + 800e22c: 4801 ldr r0, [pc, #4] @ (800e234 <__malloc_lock+0x8>) + 800e22e: f7ff bf01 b.w 800e034 <__retarget_lock_acquire_recursive> + 800e232: bf00 nop + 800e234: 200111f4 .word 0x200111f4 -0800dcc8 <__malloc_unlock>: - 800dcc8: 4801 ldr r0, [pc, #4] @ (800dcd0 <__malloc_unlock+0x8>) - 800dcca: f7ff befc b.w 800dac6 <__retarget_lock_release_recursive> - 800dcce: bf00 nop - 800dcd0: 200111ac .word 0x200111ac +0800e238 <__malloc_unlock>: + 800e238: 4801 ldr r0, [pc, #4] @ (800e240 <__malloc_unlock+0x8>) + 800e23a: f7ff befc b.w 800e036 <__retarget_lock_release_recursive> + 800e23e: bf00 nop + 800e240: 200111f4 .word 0x200111f4 -0800dcd4 <__ssputs_r>: - 800dcd4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 800dcd8: 688e ldr r6, [r1, #8] - 800dcda: 461f mov r7, r3 - 800dcdc: 42be cmp r6, r7 - 800dcde: 680b ldr r3, [r1, #0] - 800dce0: 4682 mov sl, r0 - 800dce2: 460c mov r4, r1 - 800dce4: 4690 mov r8, r2 - 800dce6: d82d bhi.n 800dd44 <__ssputs_r+0x70> - 800dce8: f9b1 200c ldrsh.w r2, [r1, #12] - 800dcec: f412 6f90 tst.w r2, #1152 @ 0x480 - 800dcf0: d026 beq.n 800dd40 <__ssputs_r+0x6c> - 800dcf2: 6965 ldr r5, [r4, #20] - 800dcf4: 6909 ldr r1, [r1, #16] - 800dcf6: eb05 0545 add.w r5, r5, r5, lsl #1 - 800dcfa: eba3 0901 sub.w r9, r3, r1 - 800dcfe: eb05 75d5 add.w r5, r5, r5, lsr #31 - 800dd02: 1c7b adds r3, r7, #1 - 800dd04: 444b add r3, r9 - 800dd06: 106d asrs r5, r5, #1 - 800dd08: 429d cmp r5, r3 - 800dd0a: bf38 it cc - 800dd0c: 461d movcc r5, r3 - 800dd0e: 0553 lsls r3, r2, #21 - 800dd10: d527 bpl.n 800dd62 <__ssputs_r+0x8e> - 800dd12: 4629 mov r1, r5 - 800dd14: f7ff ff52 bl 800dbbc <_malloc_r> - 800dd18: 4606 mov r6, r0 - 800dd1a: b360 cbz r0, 800dd76 <__ssputs_r+0xa2> - 800dd1c: 6921 ldr r1, [r4, #16] - 800dd1e: 464a mov r2, r9 - 800dd20: f7ff fed2 bl 800dac8 - 800dd24: 89a3 ldrh r3, [r4, #12] - 800dd26: f423 6390 bic.w r3, r3, #1152 @ 0x480 - 800dd2a: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800dd2e: 81a3 strh r3, [r4, #12] - 800dd30: 6126 str r6, [r4, #16] - 800dd32: 6165 str r5, [r4, #20] - 800dd34: 444e add r6, r9 - 800dd36: eba5 0509 sub.w r5, r5, r9 - 800dd3a: 6026 str r6, [r4, #0] - 800dd3c: 60a5 str r5, [r4, #8] - 800dd3e: 463e mov r6, r7 - 800dd40: 42be cmp r6, r7 - 800dd42: d900 bls.n 800dd46 <__ssputs_r+0x72> - 800dd44: 463e mov r6, r7 - 800dd46: 6820 ldr r0, [r4, #0] - 800dd48: 4632 mov r2, r6 - 800dd4a: 4641 mov r1, r8 - 800dd4c: f000 faa8 bl 800e2a0 - 800dd50: 68a3 ldr r3, [r4, #8] - 800dd52: 1b9b subs r3, r3, r6 - 800dd54: 60a3 str r3, [r4, #8] - 800dd56: 6823 ldr r3, [r4, #0] - 800dd58: 4433 add r3, r6 - 800dd5a: 6023 str r3, [r4, #0] - 800dd5c: 2000 movs r0, #0 - 800dd5e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 800dd62: 462a mov r2, r5 - 800dd64: f000 fac6 bl 800e2f4 <_realloc_r> - 800dd68: 4606 mov r6, r0 - 800dd6a: 2800 cmp r0, #0 - 800dd6c: d1e0 bne.n 800dd30 <__ssputs_r+0x5c> - 800dd6e: 6921 ldr r1, [r4, #16] - 800dd70: 4650 mov r0, sl - 800dd72: f7ff feb7 bl 800dae4 <_free_r> - 800dd76: 230c movs r3, #12 - 800dd78: f8ca 3000 str.w r3, [sl] - 800dd7c: 89a3 ldrh r3, [r4, #12] - 800dd7e: f043 0340 orr.w r3, r3, #64 @ 0x40 - 800dd82: 81a3 strh r3, [r4, #12] - 800dd84: f04f 30ff mov.w r0, #4294967295 - 800dd88: e7e9 b.n 800dd5e <__ssputs_r+0x8a> +0800e244 <__ssputs_r>: + 800e244: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 800e248: 688e ldr r6, [r1, #8] + 800e24a: 461f mov r7, r3 + 800e24c: 42be cmp r6, r7 + 800e24e: 680b ldr r3, [r1, #0] + 800e250: 4682 mov sl, r0 + 800e252: 460c mov r4, r1 + 800e254: 4690 mov r8, r2 + 800e256: d82d bhi.n 800e2b4 <__ssputs_r+0x70> + 800e258: f9b1 200c ldrsh.w r2, [r1, #12] + 800e25c: f412 6f90 tst.w r2, #1152 @ 0x480 + 800e260: d026 beq.n 800e2b0 <__ssputs_r+0x6c> + 800e262: 6965 ldr r5, [r4, #20] + 800e264: 6909 ldr r1, [r1, #16] + 800e266: eb05 0545 add.w r5, r5, r5, lsl #1 + 800e26a: eba3 0901 sub.w r9, r3, r1 + 800e26e: eb05 75d5 add.w r5, r5, r5, lsr #31 + 800e272: 1c7b adds r3, r7, #1 + 800e274: 444b add r3, r9 + 800e276: 106d asrs r5, r5, #1 + 800e278: 429d cmp r5, r3 + 800e27a: bf38 it cc + 800e27c: 461d movcc r5, r3 + 800e27e: 0553 lsls r3, r2, #21 + 800e280: d527 bpl.n 800e2d2 <__ssputs_r+0x8e> + 800e282: 4629 mov r1, r5 + 800e284: f7ff ff52 bl 800e12c <_malloc_r> + 800e288: 4606 mov r6, r0 + 800e28a: b360 cbz r0, 800e2e6 <__ssputs_r+0xa2> + 800e28c: 6921 ldr r1, [r4, #16] + 800e28e: 464a mov r2, r9 + 800e290: f7ff fed2 bl 800e038 + 800e294: 89a3 ldrh r3, [r4, #12] + 800e296: f423 6390 bic.w r3, r3, #1152 @ 0x480 + 800e29a: f043 0380 orr.w r3, r3, #128 @ 0x80 + 800e29e: 81a3 strh r3, [r4, #12] + 800e2a0: 6126 str r6, [r4, #16] + 800e2a2: 6165 str r5, [r4, #20] + 800e2a4: 444e add r6, r9 + 800e2a6: eba5 0509 sub.w r5, r5, r9 + 800e2aa: 6026 str r6, [r4, #0] + 800e2ac: 60a5 str r5, [r4, #8] + 800e2ae: 463e mov r6, r7 + 800e2b0: 42be cmp r6, r7 + 800e2b2: d900 bls.n 800e2b6 <__ssputs_r+0x72> + 800e2b4: 463e mov r6, r7 + 800e2b6: 6820 ldr r0, [r4, #0] + 800e2b8: 4632 mov r2, r6 + 800e2ba: 4641 mov r1, r8 + 800e2bc: f000 faa8 bl 800e810 + 800e2c0: 68a3 ldr r3, [r4, #8] + 800e2c2: 1b9b subs r3, r3, r6 + 800e2c4: 60a3 str r3, [r4, #8] + 800e2c6: 6823 ldr r3, [r4, #0] + 800e2c8: 4433 add r3, r6 + 800e2ca: 6023 str r3, [r4, #0] + 800e2cc: 2000 movs r0, #0 + 800e2ce: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 800e2d2: 462a mov r2, r5 + 800e2d4: f000 fac6 bl 800e864 <_realloc_r> + 800e2d8: 4606 mov r6, r0 + 800e2da: 2800 cmp r0, #0 + 800e2dc: d1e0 bne.n 800e2a0 <__ssputs_r+0x5c> + 800e2de: 6921 ldr r1, [r4, #16] + 800e2e0: 4650 mov r0, sl + 800e2e2: f7ff feb7 bl 800e054 <_free_r> + 800e2e6: 230c movs r3, #12 + 800e2e8: f8ca 3000 str.w r3, [sl] + 800e2ec: 89a3 ldrh r3, [r4, #12] + 800e2ee: f043 0340 orr.w r3, r3, #64 @ 0x40 + 800e2f2: 81a3 strh r3, [r4, #12] + 800e2f4: f04f 30ff mov.w r0, #4294967295 + 800e2f8: e7e9 b.n 800e2ce <__ssputs_r+0x8a> ... -0800dd8c <_svfiprintf_r>: - 800dd8c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 800dd90: 4698 mov r8, r3 - 800dd92: 898b ldrh r3, [r1, #12] - 800dd94: 061b lsls r3, r3, #24 - 800dd96: b09d sub sp, #116 @ 0x74 - 800dd98: 4607 mov r7, r0 - 800dd9a: 460d mov r5, r1 - 800dd9c: 4614 mov r4, r2 - 800dd9e: d510 bpl.n 800ddc2 <_svfiprintf_r+0x36> - 800dda0: 690b ldr r3, [r1, #16] - 800dda2: b973 cbnz r3, 800ddc2 <_svfiprintf_r+0x36> - 800dda4: 2140 movs r1, #64 @ 0x40 - 800dda6: f7ff ff09 bl 800dbbc <_malloc_r> - 800ddaa: 6028 str r0, [r5, #0] - 800ddac: 6128 str r0, [r5, #16] - 800ddae: b930 cbnz r0, 800ddbe <_svfiprintf_r+0x32> - 800ddb0: 230c movs r3, #12 - 800ddb2: 603b str r3, [r7, #0] - 800ddb4: f04f 30ff mov.w r0, #4294967295 - 800ddb8: b01d add sp, #116 @ 0x74 - 800ddba: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 800ddbe: 2340 movs r3, #64 @ 0x40 - 800ddc0: 616b str r3, [r5, #20] - 800ddc2: 2300 movs r3, #0 - 800ddc4: 9309 str r3, [sp, #36] @ 0x24 - 800ddc6: 2320 movs r3, #32 - 800ddc8: f88d 3029 strb.w r3, [sp, #41] @ 0x29 - 800ddcc: f8cd 800c str.w r8, [sp, #12] - 800ddd0: 2330 movs r3, #48 @ 0x30 - 800ddd2: f8df 819c ldr.w r8, [pc, #412] @ 800df70 <_svfiprintf_r+0x1e4> - 800ddd6: f88d 302a strb.w r3, [sp, #42] @ 0x2a - 800ddda: f04f 0901 mov.w r9, #1 - 800ddde: 4623 mov r3, r4 - 800dde0: 469a mov sl, r3 - 800dde2: f813 2b01 ldrb.w r2, [r3], #1 - 800dde6: b10a cbz r2, 800ddec <_svfiprintf_r+0x60> - 800dde8: 2a25 cmp r2, #37 @ 0x25 - 800ddea: d1f9 bne.n 800dde0 <_svfiprintf_r+0x54> - 800ddec: ebba 0b04 subs.w fp, sl, r4 - 800ddf0: d00b beq.n 800de0a <_svfiprintf_r+0x7e> - 800ddf2: 465b mov r3, fp - 800ddf4: 4622 mov r2, r4 - 800ddf6: 4629 mov r1, r5 - 800ddf8: 4638 mov r0, r7 - 800ddfa: f7ff ff6b bl 800dcd4 <__ssputs_r> - 800ddfe: 3001 adds r0, #1 - 800de00: f000 80a7 beq.w 800df52 <_svfiprintf_r+0x1c6> - 800de04: 9a09 ldr r2, [sp, #36] @ 0x24 - 800de06: 445a add r2, fp - 800de08: 9209 str r2, [sp, #36] @ 0x24 - 800de0a: f89a 3000 ldrb.w r3, [sl] - 800de0e: 2b00 cmp r3, #0 - 800de10: f000 809f beq.w 800df52 <_svfiprintf_r+0x1c6> - 800de14: 2300 movs r3, #0 - 800de16: f04f 32ff mov.w r2, #4294967295 - 800de1a: e9cd 2305 strd r2, r3, [sp, #20] - 800de1e: f10a 0a01 add.w sl, sl, #1 - 800de22: 9304 str r3, [sp, #16] - 800de24: 9307 str r3, [sp, #28] - 800de26: f88d 3053 strb.w r3, [sp, #83] @ 0x53 - 800de2a: 931a str r3, [sp, #104] @ 0x68 - 800de2c: 4654 mov r4, sl - 800de2e: 2205 movs r2, #5 - 800de30: f814 1b01 ldrb.w r1, [r4], #1 - 800de34: 484e ldr r0, [pc, #312] @ (800df70 <_svfiprintf_r+0x1e4>) - 800de36: f7f2 f9fb bl 8000230 - 800de3a: 9a04 ldr r2, [sp, #16] - 800de3c: b9d8 cbnz r0, 800de76 <_svfiprintf_r+0xea> - 800de3e: 06d0 lsls r0, r2, #27 - 800de40: bf44 itt mi - 800de42: 2320 movmi r3, #32 - 800de44: f88d 3053 strbmi.w r3, [sp, #83] @ 0x53 - 800de48: 0711 lsls r1, r2, #28 - 800de4a: bf44 itt mi - 800de4c: 232b movmi r3, #43 @ 0x2b - 800de4e: f88d 3053 strbmi.w r3, [sp, #83] @ 0x53 - 800de52: f89a 3000 ldrb.w r3, [sl] - 800de56: 2b2a cmp r3, #42 @ 0x2a - 800de58: d015 beq.n 800de86 <_svfiprintf_r+0xfa> - 800de5a: 9a07 ldr r2, [sp, #28] - 800de5c: 4654 mov r4, sl - 800de5e: 2000 movs r0, #0 - 800de60: f04f 0c0a mov.w ip, #10 - 800de64: 4621 mov r1, r4 - 800de66: f811 3b01 ldrb.w r3, [r1], #1 - 800de6a: 3b30 subs r3, #48 @ 0x30 - 800de6c: 2b09 cmp r3, #9 - 800de6e: d94b bls.n 800df08 <_svfiprintf_r+0x17c> - 800de70: b1b0 cbz r0, 800dea0 <_svfiprintf_r+0x114> - 800de72: 9207 str r2, [sp, #28] - 800de74: e014 b.n 800dea0 <_svfiprintf_r+0x114> - 800de76: eba0 0308 sub.w r3, r0, r8 - 800de7a: fa09 f303 lsl.w r3, r9, r3 - 800de7e: 4313 orrs r3, r2 - 800de80: 9304 str r3, [sp, #16] - 800de82: 46a2 mov sl, r4 - 800de84: e7d2 b.n 800de2c <_svfiprintf_r+0xa0> - 800de86: 9b03 ldr r3, [sp, #12] - 800de88: 1d19 adds r1, r3, #4 - 800de8a: 681b ldr r3, [r3, #0] - 800de8c: 9103 str r1, [sp, #12] - 800de8e: 2b00 cmp r3, #0 - 800de90: bfbb ittet lt - 800de92: 425b neglt r3, r3 - 800de94: f042 0202 orrlt.w r2, r2, #2 - 800de98: 9307 strge r3, [sp, #28] - 800de9a: 9307 strlt r3, [sp, #28] - 800de9c: bfb8 it lt - 800de9e: 9204 strlt r2, [sp, #16] - 800dea0: 7823 ldrb r3, [r4, #0] - 800dea2: 2b2e cmp r3, #46 @ 0x2e - 800dea4: d10a bne.n 800debc <_svfiprintf_r+0x130> - 800dea6: 7863 ldrb r3, [r4, #1] - 800dea8: 2b2a cmp r3, #42 @ 0x2a - 800deaa: d132 bne.n 800df12 <_svfiprintf_r+0x186> - 800deac: 9b03 ldr r3, [sp, #12] - 800deae: 1d1a adds r2, r3, #4 - 800deb0: 681b ldr r3, [r3, #0] - 800deb2: 9203 str r2, [sp, #12] - 800deb4: ea43 73e3 orr.w r3, r3, r3, asr #31 - 800deb8: 3402 adds r4, #2 - 800deba: 9305 str r3, [sp, #20] - 800debc: f8df a0c0 ldr.w sl, [pc, #192] @ 800df80 <_svfiprintf_r+0x1f4> - 800dec0: 7821 ldrb r1, [r4, #0] - 800dec2: 2203 movs r2, #3 - 800dec4: 4650 mov r0, sl - 800dec6: f7f2 f9b3 bl 8000230 - 800deca: b138 cbz r0, 800dedc <_svfiprintf_r+0x150> - 800decc: 9b04 ldr r3, [sp, #16] - 800dece: eba0 000a sub.w r0, r0, sl - 800ded2: 2240 movs r2, #64 @ 0x40 - 800ded4: 4082 lsls r2, r0 - 800ded6: 4313 orrs r3, r2 - 800ded8: 3401 adds r4, #1 - 800deda: 9304 str r3, [sp, #16] - 800dedc: f814 1b01 ldrb.w r1, [r4], #1 - 800dee0: 4824 ldr r0, [pc, #144] @ (800df74 <_svfiprintf_r+0x1e8>) - 800dee2: f88d 1028 strb.w r1, [sp, #40] @ 0x28 - 800dee6: 2206 movs r2, #6 - 800dee8: f7f2 f9a2 bl 8000230 - 800deec: 2800 cmp r0, #0 - 800deee: d036 beq.n 800df5e <_svfiprintf_r+0x1d2> - 800def0: 4b21 ldr r3, [pc, #132] @ (800df78 <_svfiprintf_r+0x1ec>) - 800def2: bb1b cbnz r3, 800df3c <_svfiprintf_r+0x1b0> - 800def4: 9b03 ldr r3, [sp, #12] - 800def6: 3307 adds r3, #7 - 800def8: f023 0307 bic.w r3, r3, #7 - 800defc: 3308 adds r3, #8 - 800defe: 9303 str r3, [sp, #12] - 800df00: 9b09 ldr r3, [sp, #36] @ 0x24 - 800df02: 4433 add r3, r6 - 800df04: 9309 str r3, [sp, #36] @ 0x24 - 800df06: e76a b.n 800ddde <_svfiprintf_r+0x52> - 800df08: fb0c 3202 mla r2, ip, r2, r3 - 800df0c: 460c mov r4, r1 - 800df0e: 2001 movs r0, #1 - 800df10: e7a8 b.n 800de64 <_svfiprintf_r+0xd8> - 800df12: 2300 movs r3, #0 - 800df14: 3401 adds r4, #1 - 800df16: 9305 str r3, [sp, #20] - 800df18: 4619 mov r1, r3 - 800df1a: f04f 0c0a mov.w ip, #10 - 800df1e: 4620 mov r0, r4 - 800df20: f810 2b01 ldrb.w r2, [r0], #1 - 800df24: 3a30 subs r2, #48 @ 0x30 - 800df26: 2a09 cmp r2, #9 - 800df28: d903 bls.n 800df32 <_svfiprintf_r+0x1a6> - 800df2a: 2b00 cmp r3, #0 - 800df2c: d0c6 beq.n 800debc <_svfiprintf_r+0x130> - 800df2e: 9105 str r1, [sp, #20] - 800df30: e7c4 b.n 800debc <_svfiprintf_r+0x130> - 800df32: fb0c 2101 mla r1, ip, r1, r2 - 800df36: 4604 mov r4, r0 - 800df38: 2301 movs r3, #1 - 800df3a: e7f0 b.n 800df1e <_svfiprintf_r+0x192> - 800df3c: ab03 add r3, sp, #12 - 800df3e: 9300 str r3, [sp, #0] - 800df40: 462a mov r2, r5 - 800df42: 4b0e ldr r3, [pc, #56] @ (800df7c <_svfiprintf_r+0x1f0>) - 800df44: a904 add r1, sp, #16 - 800df46: 4638 mov r0, r7 - 800df48: f3af 8000 nop.w - 800df4c: 1c42 adds r2, r0, #1 - 800df4e: 4606 mov r6, r0 - 800df50: d1d6 bne.n 800df00 <_svfiprintf_r+0x174> - 800df52: 89ab ldrh r3, [r5, #12] - 800df54: 065b lsls r3, r3, #25 - 800df56: f53f af2d bmi.w 800ddb4 <_svfiprintf_r+0x28> - 800df5a: 9809 ldr r0, [sp, #36] @ 0x24 - 800df5c: e72c b.n 800ddb8 <_svfiprintf_r+0x2c> - 800df5e: ab03 add r3, sp, #12 - 800df60: 9300 str r3, [sp, #0] - 800df62: 462a mov r2, r5 - 800df64: 4b05 ldr r3, [pc, #20] @ (800df7c <_svfiprintf_r+0x1f0>) - 800df66: a904 add r1, sp, #16 - 800df68: 4638 mov r0, r7 - 800df6a: f000 f879 bl 800e060 <_printf_i> - 800df6e: e7ed b.n 800df4c <_svfiprintf_r+0x1c0> - 800df70: 0800e9e0 .word 0x0800e9e0 - 800df74: 0800e9ea .word 0x0800e9ea - 800df78: 00000000 .word 0x00000000 - 800df7c: 0800dcd5 .word 0x0800dcd5 - 800df80: 0800e9e6 .word 0x0800e9e6 +0800e2fc <_svfiprintf_r>: + 800e2fc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800e300: 4698 mov r8, r3 + 800e302: 898b ldrh r3, [r1, #12] + 800e304: 061b lsls r3, r3, #24 + 800e306: b09d sub sp, #116 @ 0x74 + 800e308: 4607 mov r7, r0 + 800e30a: 460d mov r5, r1 + 800e30c: 4614 mov r4, r2 + 800e30e: d510 bpl.n 800e332 <_svfiprintf_r+0x36> + 800e310: 690b ldr r3, [r1, #16] + 800e312: b973 cbnz r3, 800e332 <_svfiprintf_r+0x36> + 800e314: 2140 movs r1, #64 @ 0x40 + 800e316: f7ff ff09 bl 800e12c <_malloc_r> + 800e31a: 6028 str r0, [r5, #0] + 800e31c: 6128 str r0, [r5, #16] + 800e31e: b930 cbnz r0, 800e32e <_svfiprintf_r+0x32> + 800e320: 230c movs r3, #12 + 800e322: 603b str r3, [r7, #0] + 800e324: f04f 30ff mov.w r0, #4294967295 + 800e328: b01d add sp, #116 @ 0x74 + 800e32a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800e32e: 2340 movs r3, #64 @ 0x40 + 800e330: 616b str r3, [r5, #20] + 800e332: 2300 movs r3, #0 + 800e334: 9309 str r3, [sp, #36] @ 0x24 + 800e336: 2320 movs r3, #32 + 800e338: f88d 3029 strb.w r3, [sp, #41] @ 0x29 + 800e33c: f8cd 800c str.w r8, [sp, #12] + 800e340: 2330 movs r3, #48 @ 0x30 + 800e342: f8df 819c ldr.w r8, [pc, #412] @ 800e4e0 <_svfiprintf_r+0x1e4> + 800e346: f88d 302a strb.w r3, [sp, #42] @ 0x2a + 800e34a: f04f 0901 mov.w r9, #1 + 800e34e: 4623 mov r3, r4 + 800e350: 469a mov sl, r3 + 800e352: f813 2b01 ldrb.w r2, [r3], #1 + 800e356: b10a cbz r2, 800e35c <_svfiprintf_r+0x60> + 800e358: 2a25 cmp r2, #37 @ 0x25 + 800e35a: d1f9 bne.n 800e350 <_svfiprintf_r+0x54> + 800e35c: ebba 0b04 subs.w fp, sl, r4 + 800e360: d00b beq.n 800e37a <_svfiprintf_r+0x7e> + 800e362: 465b mov r3, fp + 800e364: 4622 mov r2, r4 + 800e366: 4629 mov r1, r5 + 800e368: 4638 mov r0, r7 + 800e36a: f7ff ff6b bl 800e244 <__ssputs_r> + 800e36e: 3001 adds r0, #1 + 800e370: f000 80a7 beq.w 800e4c2 <_svfiprintf_r+0x1c6> + 800e374: 9a09 ldr r2, [sp, #36] @ 0x24 + 800e376: 445a add r2, fp + 800e378: 9209 str r2, [sp, #36] @ 0x24 + 800e37a: f89a 3000 ldrb.w r3, [sl] + 800e37e: 2b00 cmp r3, #0 + 800e380: f000 809f beq.w 800e4c2 <_svfiprintf_r+0x1c6> + 800e384: 2300 movs r3, #0 + 800e386: f04f 32ff mov.w r2, #4294967295 + 800e38a: e9cd 2305 strd r2, r3, [sp, #20] + 800e38e: f10a 0a01 add.w sl, sl, #1 + 800e392: 9304 str r3, [sp, #16] + 800e394: 9307 str r3, [sp, #28] + 800e396: f88d 3053 strb.w r3, [sp, #83] @ 0x53 + 800e39a: 931a str r3, [sp, #104] @ 0x68 + 800e39c: 4654 mov r4, sl + 800e39e: 2205 movs r2, #5 + 800e3a0: f814 1b01 ldrb.w r1, [r4], #1 + 800e3a4: 484e ldr r0, [pc, #312] @ (800e4e0 <_svfiprintf_r+0x1e4>) + 800e3a6: f7f1 ff43 bl 8000230 + 800e3aa: 9a04 ldr r2, [sp, #16] + 800e3ac: b9d8 cbnz r0, 800e3e6 <_svfiprintf_r+0xea> + 800e3ae: 06d0 lsls r0, r2, #27 + 800e3b0: bf44 itt mi + 800e3b2: 2320 movmi r3, #32 + 800e3b4: f88d 3053 strbmi.w r3, [sp, #83] @ 0x53 + 800e3b8: 0711 lsls r1, r2, #28 + 800e3ba: bf44 itt mi + 800e3bc: 232b movmi r3, #43 @ 0x2b + 800e3be: f88d 3053 strbmi.w r3, [sp, #83] @ 0x53 + 800e3c2: f89a 3000 ldrb.w r3, [sl] + 800e3c6: 2b2a cmp r3, #42 @ 0x2a + 800e3c8: d015 beq.n 800e3f6 <_svfiprintf_r+0xfa> + 800e3ca: 9a07 ldr r2, [sp, #28] + 800e3cc: 4654 mov r4, sl + 800e3ce: 2000 movs r0, #0 + 800e3d0: f04f 0c0a mov.w ip, #10 + 800e3d4: 4621 mov r1, r4 + 800e3d6: f811 3b01 ldrb.w r3, [r1], #1 + 800e3da: 3b30 subs r3, #48 @ 0x30 + 800e3dc: 2b09 cmp r3, #9 + 800e3de: d94b bls.n 800e478 <_svfiprintf_r+0x17c> + 800e3e0: b1b0 cbz r0, 800e410 <_svfiprintf_r+0x114> + 800e3e2: 9207 str r2, [sp, #28] + 800e3e4: e014 b.n 800e410 <_svfiprintf_r+0x114> + 800e3e6: eba0 0308 sub.w r3, r0, r8 + 800e3ea: fa09 f303 lsl.w r3, r9, r3 + 800e3ee: 4313 orrs r3, r2 + 800e3f0: 9304 str r3, [sp, #16] + 800e3f2: 46a2 mov sl, r4 + 800e3f4: e7d2 b.n 800e39c <_svfiprintf_r+0xa0> + 800e3f6: 9b03 ldr r3, [sp, #12] + 800e3f8: 1d19 adds r1, r3, #4 + 800e3fa: 681b ldr r3, [r3, #0] + 800e3fc: 9103 str r1, [sp, #12] + 800e3fe: 2b00 cmp r3, #0 + 800e400: bfbb ittet lt + 800e402: 425b neglt r3, r3 + 800e404: f042 0202 orrlt.w r2, r2, #2 + 800e408: 9307 strge r3, [sp, #28] + 800e40a: 9307 strlt r3, [sp, #28] + 800e40c: bfb8 it lt + 800e40e: 9204 strlt r2, [sp, #16] + 800e410: 7823 ldrb r3, [r4, #0] + 800e412: 2b2e cmp r3, #46 @ 0x2e + 800e414: d10a bne.n 800e42c <_svfiprintf_r+0x130> + 800e416: 7863 ldrb r3, [r4, #1] + 800e418: 2b2a cmp r3, #42 @ 0x2a + 800e41a: d132 bne.n 800e482 <_svfiprintf_r+0x186> + 800e41c: 9b03 ldr r3, [sp, #12] + 800e41e: 1d1a adds r2, r3, #4 + 800e420: 681b ldr r3, [r3, #0] + 800e422: 9203 str r2, [sp, #12] + 800e424: ea43 73e3 orr.w r3, r3, r3, asr #31 + 800e428: 3402 adds r4, #2 + 800e42a: 9305 str r3, [sp, #20] + 800e42c: f8df a0c0 ldr.w sl, [pc, #192] @ 800e4f0 <_svfiprintf_r+0x1f4> + 800e430: 7821 ldrb r1, [r4, #0] + 800e432: 2203 movs r2, #3 + 800e434: 4650 mov r0, sl + 800e436: f7f1 fefb bl 8000230 + 800e43a: b138 cbz r0, 800e44c <_svfiprintf_r+0x150> + 800e43c: 9b04 ldr r3, [sp, #16] + 800e43e: eba0 000a sub.w r0, r0, sl + 800e442: 2240 movs r2, #64 @ 0x40 + 800e444: 4082 lsls r2, r0 + 800e446: 4313 orrs r3, r2 + 800e448: 3401 adds r4, #1 + 800e44a: 9304 str r3, [sp, #16] + 800e44c: f814 1b01 ldrb.w r1, [r4], #1 + 800e450: 4824 ldr r0, [pc, #144] @ (800e4e4 <_svfiprintf_r+0x1e8>) + 800e452: f88d 1028 strb.w r1, [sp, #40] @ 0x28 + 800e456: 2206 movs r2, #6 + 800e458: f7f1 feea bl 8000230 + 800e45c: 2800 cmp r0, #0 + 800e45e: d036 beq.n 800e4ce <_svfiprintf_r+0x1d2> + 800e460: 4b21 ldr r3, [pc, #132] @ (800e4e8 <_svfiprintf_r+0x1ec>) + 800e462: bb1b cbnz r3, 800e4ac <_svfiprintf_r+0x1b0> + 800e464: 9b03 ldr r3, [sp, #12] + 800e466: 3307 adds r3, #7 + 800e468: f023 0307 bic.w r3, r3, #7 + 800e46c: 3308 adds r3, #8 + 800e46e: 9303 str r3, [sp, #12] + 800e470: 9b09 ldr r3, [sp, #36] @ 0x24 + 800e472: 4433 add r3, r6 + 800e474: 9309 str r3, [sp, #36] @ 0x24 + 800e476: e76a b.n 800e34e <_svfiprintf_r+0x52> + 800e478: fb0c 3202 mla r2, ip, r2, r3 + 800e47c: 460c mov r4, r1 + 800e47e: 2001 movs r0, #1 + 800e480: e7a8 b.n 800e3d4 <_svfiprintf_r+0xd8> + 800e482: 2300 movs r3, #0 + 800e484: 3401 adds r4, #1 + 800e486: 9305 str r3, [sp, #20] + 800e488: 4619 mov r1, r3 + 800e48a: f04f 0c0a mov.w ip, #10 + 800e48e: 4620 mov r0, r4 + 800e490: f810 2b01 ldrb.w r2, [r0], #1 + 800e494: 3a30 subs r2, #48 @ 0x30 + 800e496: 2a09 cmp r2, #9 + 800e498: d903 bls.n 800e4a2 <_svfiprintf_r+0x1a6> + 800e49a: 2b00 cmp r3, #0 + 800e49c: d0c6 beq.n 800e42c <_svfiprintf_r+0x130> + 800e49e: 9105 str r1, [sp, #20] + 800e4a0: e7c4 b.n 800e42c <_svfiprintf_r+0x130> + 800e4a2: fb0c 2101 mla r1, ip, r1, r2 + 800e4a6: 4604 mov r4, r0 + 800e4a8: 2301 movs r3, #1 + 800e4aa: e7f0 b.n 800e48e <_svfiprintf_r+0x192> + 800e4ac: ab03 add r3, sp, #12 + 800e4ae: 9300 str r3, [sp, #0] + 800e4b0: 462a mov r2, r5 + 800e4b2: 4b0e ldr r3, [pc, #56] @ (800e4ec <_svfiprintf_r+0x1f0>) + 800e4b4: a904 add r1, sp, #16 + 800e4b6: 4638 mov r0, r7 + 800e4b8: f3af 8000 nop.w + 800e4bc: 1c42 adds r2, r0, #1 + 800e4be: 4606 mov r6, r0 + 800e4c0: d1d6 bne.n 800e470 <_svfiprintf_r+0x174> + 800e4c2: 89ab ldrh r3, [r5, #12] + 800e4c4: 065b lsls r3, r3, #25 + 800e4c6: f53f af2d bmi.w 800e324 <_svfiprintf_r+0x28> + 800e4ca: 9809 ldr r0, [sp, #36] @ 0x24 + 800e4cc: e72c b.n 800e328 <_svfiprintf_r+0x2c> + 800e4ce: ab03 add r3, sp, #12 + 800e4d0: 9300 str r3, [sp, #0] + 800e4d2: 462a mov r2, r5 + 800e4d4: 4b05 ldr r3, [pc, #20] @ (800e4ec <_svfiprintf_r+0x1f0>) + 800e4d6: a904 add r1, sp, #16 + 800e4d8: 4638 mov r0, r7 + 800e4da: f000 f879 bl 800e5d0 <_printf_i> + 800e4de: e7ed b.n 800e4bc <_svfiprintf_r+0x1c0> + 800e4e0: 0800ef50 .word 0x0800ef50 + 800e4e4: 0800ef5a .word 0x0800ef5a + 800e4e8: 00000000 .word 0x00000000 + 800e4ec: 0800e245 .word 0x0800e245 + 800e4f0: 0800ef56 .word 0x0800ef56 -0800df84 <_printf_common>: - 800df84: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 800df88: 4616 mov r6, r2 - 800df8a: 4698 mov r8, r3 - 800df8c: 688a ldr r2, [r1, #8] - 800df8e: 690b ldr r3, [r1, #16] - 800df90: f8dd 9020 ldr.w r9, [sp, #32] - 800df94: 4293 cmp r3, r2 - 800df96: bfb8 it lt - 800df98: 4613 movlt r3, r2 - 800df9a: 6033 str r3, [r6, #0] - 800df9c: f891 2043 ldrb.w r2, [r1, #67] @ 0x43 - 800dfa0: 4607 mov r7, r0 - 800dfa2: 460c mov r4, r1 - 800dfa4: b10a cbz r2, 800dfaa <_printf_common+0x26> - 800dfa6: 3301 adds r3, #1 - 800dfa8: 6033 str r3, [r6, #0] - 800dfaa: 6823 ldr r3, [r4, #0] - 800dfac: 0699 lsls r1, r3, #26 - 800dfae: bf42 ittt mi - 800dfb0: 6833 ldrmi r3, [r6, #0] - 800dfb2: 3302 addmi r3, #2 - 800dfb4: 6033 strmi r3, [r6, #0] - 800dfb6: 6825 ldr r5, [r4, #0] - 800dfb8: f015 0506 ands.w r5, r5, #6 - 800dfbc: d106 bne.n 800dfcc <_printf_common+0x48> - 800dfbe: f104 0a19 add.w sl, r4, #25 - 800dfc2: 68e3 ldr r3, [r4, #12] - 800dfc4: 6832 ldr r2, [r6, #0] - 800dfc6: 1a9b subs r3, r3, r2 - 800dfc8: 42ab cmp r3, r5 - 800dfca: dc26 bgt.n 800e01a <_printf_common+0x96> - 800dfcc: f894 3043 ldrb.w r3, [r4, #67] @ 0x43 - 800dfd0: 6822 ldr r2, [r4, #0] - 800dfd2: 3b00 subs r3, #0 - 800dfd4: bf18 it ne - 800dfd6: 2301 movne r3, #1 - 800dfd8: 0692 lsls r2, r2, #26 - 800dfda: d42b bmi.n 800e034 <_printf_common+0xb0> - 800dfdc: f104 0243 add.w r2, r4, #67 @ 0x43 - 800dfe0: 4641 mov r1, r8 - 800dfe2: 4638 mov r0, r7 - 800dfe4: 47c8 blx r9 - 800dfe6: 3001 adds r0, #1 - 800dfe8: d01e beq.n 800e028 <_printf_common+0xa4> - 800dfea: 6823 ldr r3, [r4, #0] - 800dfec: 6922 ldr r2, [r4, #16] - 800dfee: f003 0306 and.w r3, r3, #6 - 800dff2: 2b04 cmp r3, #4 - 800dff4: bf02 ittt eq - 800dff6: 68e5 ldreq r5, [r4, #12] - 800dff8: 6833 ldreq r3, [r6, #0] - 800dffa: 1aed subeq r5, r5, r3 - 800dffc: 68a3 ldr r3, [r4, #8] - 800dffe: bf0c ite eq - 800e000: ea25 75e5 biceq.w r5, r5, r5, asr #31 - 800e004: 2500 movne r5, #0 - 800e006: 4293 cmp r3, r2 - 800e008: bfc4 itt gt - 800e00a: 1a9b subgt r3, r3, r2 - 800e00c: 18ed addgt r5, r5, r3 - 800e00e: 2600 movs r6, #0 - 800e010: 341a adds r4, #26 - 800e012: 42b5 cmp r5, r6 - 800e014: d11a bne.n 800e04c <_printf_common+0xc8> - 800e016: 2000 movs r0, #0 - 800e018: e008 b.n 800e02c <_printf_common+0xa8> - 800e01a: 2301 movs r3, #1 - 800e01c: 4652 mov r2, sl - 800e01e: 4641 mov r1, r8 - 800e020: 4638 mov r0, r7 - 800e022: 47c8 blx r9 - 800e024: 3001 adds r0, #1 - 800e026: d103 bne.n 800e030 <_printf_common+0xac> - 800e028: f04f 30ff mov.w r0, #4294967295 - 800e02c: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 800e030: 3501 adds r5, #1 - 800e032: e7c6 b.n 800dfc2 <_printf_common+0x3e> - 800e034: 18e1 adds r1, r4, r3 - 800e036: 1c5a adds r2, r3, #1 - 800e038: 2030 movs r0, #48 @ 0x30 - 800e03a: f881 0043 strb.w r0, [r1, #67] @ 0x43 - 800e03e: 4422 add r2, r4 - 800e040: f894 1045 ldrb.w r1, [r4, #69] @ 0x45 - 800e044: f882 1043 strb.w r1, [r2, #67] @ 0x43 - 800e048: 3302 adds r3, #2 - 800e04a: e7c7 b.n 800dfdc <_printf_common+0x58> - 800e04c: 2301 movs r3, #1 - 800e04e: 4622 mov r2, r4 - 800e050: 4641 mov r1, r8 - 800e052: 4638 mov r0, r7 - 800e054: 47c8 blx r9 - 800e056: 3001 adds r0, #1 - 800e058: d0e6 beq.n 800e028 <_printf_common+0xa4> - 800e05a: 3601 adds r6, #1 - 800e05c: e7d9 b.n 800e012 <_printf_common+0x8e> +0800e4f4 <_printf_common>: + 800e4f4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 800e4f8: 4616 mov r6, r2 + 800e4fa: 4698 mov r8, r3 + 800e4fc: 688a ldr r2, [r1, #8] + 800e4fe: 690b ldr r3, [r1, #16] + 800e500: f8dd 9020 ldr.w r9, [sp, #32] + 800e504: 4293 cmp r3, r2 + 800e506: bfb8 it lt + 800e508: 4613 movlt r3, r2 + 800e50a: 6033 str r3, [r6, #0] + 800e50c: f891 2043 ldrb.w r2, [r1, #67] @ 0x43 + 800e510: 4607 mov r7, r0 + 800e512: 460c mov r4, r1 + 800e514: b10a cbz r2, 800e51a <_printf_common+0x26> + 800e516: 3301 adds r3, #1 + 800e518: 6033 str r3, [r6, #0] + 800e51a: 6823 ldr r3, [r4, #0] + 800e51c: 0699 lsls r1, r3, #26 + 800e51e: bf42 ittt mi + 800e520: 6833 ldrmi r3, [r6, #0] + 800e522: 3302 addmi r3, #2 + 800e524: 6033 strmi r3, [r6, #0] + 800e526: 6825 ldr r5, [r4, #0] + 800e528: f015 0506 ands.w r5, r5, #6 + 800e52c: d106 bne.n 800e53c <_printf_common+0x48> + 800e52e: f104 0a19 add.w sl, r4, #25 + 800e532: 68e3 ldr r3, [r4, #12] + 800e534: 6832 ldr r2, [r6, #0] + 800e536: 1a9b subs r3, r3, r2 + 800e538: 42ab cmp r3, r5 + 800e53a: dc26 bgt.n 800e58a <_printf_common+0x96> + 800e53c: f894 3043 ldrb.w r3, [r4, #67] @ 0x43 + 800e540: 6822 ldr r2, [r4, #0] + 800e542: 3b00 subs r3, #0 + 800e544: bf18 it ne + 800e546: 2301 movne r3, #1 + 800e548: 0692 lsls r2, r2, #26 + 800e54a: d42b bmi.n 800e5a4 <_printf_common+0xb0> + 800e54c: f104 0243 add.w r2, r4, #67 @ 0x43 + 800e550: 4641 mov r1, r8 + 800e552: 4638 mov r0, r7 + 800e554: 47c8 blx r9 + 800e556: 3001 adds r0, #1 + 800e558: d01e beq.n 800e598 <_printf_common+0xa4> + 800e55a: 6823 ldr r3, [r4, #0] + 800e55c: 6922 ldr r2, [r4, #16] + 800e55e: f003 0306 and.w r3, r3, #6 + 800e562: 2b04 cmp r3, #4 + 800e564: bf02 ittt eq + 800e566: 68e5 ldreq r5, [r4, #12] + 800e568: 6833 ldreq r3, [r6, #0] + 800e56a: 1aed subeq r5, r5, r3 + 800e56c: 68a3 ldr r3, [r4, #8] + 800e56e: bf0c ite eq + 800e570: ea25 75e5 biceq.w r5, r5, r5, asr #31 + 800e574: 2500 movne r5, #0 + 800e576: 4293 cmp r3, r2 + 800e578: bfc4 itt gt + 800e57a: 1a9b subgt r3, r3, r2 + 800e57c: 18ed addgt r5, r5, r3 + 800e57e: 2600 movs r6, #0 + 800e580: 341a adds r4, #26 + 800e582: 42b5 cmp r5, r6 + 800e584: d11a bne.n 800e5bc <_printf_common+0xc8> + 800e586: 2000 movs r0, #0 + 800e588: e008 b.n 800e59c <_printf_common+0xa8> + 800e58a: 2301 movs r3, #1 + 800e58c: 4652 mov r2, sl + 800e58e: 4641 mov r1, r8 + 800e590: 4638 mov r0, r7 + 800e592: 47c8 blx r9 + 800e594: 3001 adds r0, #1 + 800e596: d103 bne.n 800e5a0 <_printf_common+0xac> + 800e598: f04f 30ff mov.w r0, #4294967295 + 800e59c: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 800e5a0: 3501 adds r5, #1 + 800e5a2: e7c6 b.n 800e532 <_printf_common+0x3e> + 800e5a4: 18e1 adds r1, r4, r3 + 800e5a6: 1c5a adds r2, r3, #1 + 800e5a8: 2030 movs r0, #48 @ 0x30 + 800e5aa: f881 0043 strb.w r0, [r1, #67] @ 0x43 + 800e5ae: 4422 add r2, r4 + 800e5b0: f894 1045 ldrb.w r1, [r4, #69] @ 0x45 + 800e5b4: f882 1043 strb.w r1, [r2, #67] @ 0x43 + 800e5b8: 3302 adds r3, #2 + 800e5ba: e7c7 b.n 800e54c <_printf_common+0x58> + 800e5bc: 2301 movs r3, #1 + 800e5be: 4622 mov r2, r4 + 800e5c0: 4641 mov r1, r8 + 800e5c2: 4638 mov r0, r7 + 800e5c4: 47c8 blx r9 + 800e5c6: 3001 adds r0, #1 + 800e5c8: d0e6 beq.n 800e598 <_printf_common+0xa4> + 800e5ca: 3601 adds r6, #1 + 800e5cc: e7d9 b.n 800e582 <_printf_common+0x8e> ... -0800e060 <_printf_i>: - 800e060: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} - 800e064: 7e0f ldrb r7, [r1, #24] - 800e066: 9e0c ldr r6, [sp, #48] @ 0x30 - 800e068: 2f78 cmp r7, #120 @ 0x78 - 800e06a: 4691 mov r9, r2 - 800e06c: 4680 mov r8, r0 - 800e06e: 460c mov r4, r1 - 800e070: 469a mov sl, r3 - 800e072: f101 0243 add.w r2, r1, #67 @ 0x43 - 800e076: d807 bhi.n 800e088 <_printf_i+0x28> - 800e078: 2f62 cmp r7, #98 @ 0x62 - 800e07a: d80a bhi.n 800e092 <_printf_i+0x32> - 800e07c: 2f00 cmp r7, #0 - 800e07e: f000 80d2 beq.w 800e226 <_printf_i+0x1c6> - 800e082: 2f58 cmp r7, #88 @ 0x58 - 800e084: f000 80b9 beq.w 800e1fa <_printf_i+0x19a> - 800e088: f104 0642 add.w r6, r4, #66 @ 0x42 - 800e08c: f884 7042 strb.w r7, [r4, #66] @ 0x42 - 800e090: e03a b.n 800e108 <_printf_i+0xa8> - 800e092: f1a7 0363 sub.w r3, r7, #99 @ 0x63 - 800e096: 2b15 cmp r3, #21 - 800e098: d8f6 bhi.n 800e088 <_printf_i+0x28> - 800e09a: a101 add r1, pc, #4 @ (adr r1, 800e0a0 <_printf_i+0x40>) - 800e09c: f851 f023 ldr.w pc, [r1, r3, lsl #2] - 800e0a0: 0800e0f9 .word 0x0800e0f9 - 800e0a4: 0800e10d .word 0x0800e10d - 800e0a8: 0800e089 .word 0x0800e089 - 800e0ac: 0800e089 .word 0x0800e089 - 800e0b0: 0800e089 .word 0x0800e089 - 800e0b4: 0800e089 .word 0x0800e089 - 800e0b8: 0800e10d .word 0x0800e10d - 800e0bc: 0800e089 .word 0x0800e089 - 800e0c0: 0800e089 .word 0x0800e089 - 800e0c4: 0800e089 .word 0x0800e089 - 800e0c8: 0800e089 .word 0x0800e089 - 800e0cc: 0800e20d .word 0x0800e20d - 800e0d0: 0800e137 .word 0x0800e137 - 800e0d4: 0800e1c7 .word 0x0800e1c7 - 800e0d8: 0800e089 .word 0x0800e089 - 800e0dc: 0800e089 .word 0x0800e089 - 800e0e0: 0800e22f .word 0x0800e22f - 800e0e4: 0800e089 .word 0x0800e089 - 800e0e8: 0800e137 .word 0x0800e137 - 800e0ec: 0800e089 .word 0x0800e089 - 800e0f0: 0800e089 .word 0x0800e089 - 800e0f4: 0800e1cf .word 0x0800e1cf - 800e0f8: 6833 ldr r3, [r6, #0] - 800e0fa: 1d1a adds r2, r3, #4 - 800e0fc: 681b ldr r3, [r3, #0] - 800e0fe: 6032 str r2, [r6, #0] - 800e100: f104 0642 add.w r6, r4, #66 @ 0x42 - 800e104: f884 3042 strb.w r3, [r4, #66] @ 0x42 - 800e108: 2301 movs r3, #1 - 800e10a: e09d b.n 800e248 <_printf_i+0x1e8> - 800e10c: 6833 ldr r3, [r6, #0] - 800e10e: 6820 ldr r0, [r4, #0] - 800e110: 1d19 adds r1, r3, #4 - 800e112: 6031 str r1, [r6, #0] - 800e114: 0606 lsls r6, r0, #24 - 800e116: d501 bpl.n 800e11c <_printf_i+0xbc> - 800e118: 681d ldr r5, [r3, #0] - 800e11a: e003 b.n 800e124 <_printf_i+0xc4> - 800e11c: 0645 lsls r5, r0, #25 - 800e11e: d5fb bpl.n 800e118 <_printf_i+0xb8> - 800e120: f9b3 5000 ldrsh.w r5, [r3] - 800e124: 2d00 cmp r5, #0 - 800e126: da03 bge.n 800e130 <_printf_i+0xd0> - 800e128: 232d movs r3, #45 @ 0x2d - 800e12a: 426d negs r5, r5 - 800e12c: f884 3043 strb.w r3, [r4, #67] @ 0x43 - 800e130: 4859 ldr r0, [pc, #356] @ (800e298 <_printf_i+0x238>) - 800e132: 230a movs r3, #10 - 800e134: e011 b.n 800e15a <_printf_i+0xfa> - 800e136: 6821 ldr r1, [r4, #0] - 800e138: 6833 ldr r3, [r6, #0] - 800e13a: 0608 lsls r0, r1, #24 - 800e13c: f853 5b04 ldr.w r5, [r3], #4 - 800e140: d402 bmi.n 800e148 <_printf_i+0xe8> - 800e142: 0649 lsls r1, r1, #25 - 800e144: bf48 it mi - 800e146: b2ad uxthmi r5, r5 - 800e148: 2f6f cmp r7, #111 @ 0x6f - 800e14a: 4853 ldr r0, [pc, #332] @ (800e298 <_printf_i+0x238>) - 800e14c: 6033 str r3, [r6, #0] - 800e14e: bf14 ite ne - 800e150: 230a movne r3, #10 - 800e152: 2308 moveq r3, #8 - 800e154: 2100 movs r1, #0 - 800e156: f884 1043 strb.w r1, [r4, #67] @ 0x43 - 800e15a: 6866 ldr r6, [r4, #4] - 800e15c: 60a6 str r6, [r4, #8] - 800e15e: 2e00 cmp r6, #0 - 800e160: bfa2 ittt ge - 800e162: 6821 ldrge r1, [r4, #0] - 800e164: f021 0104 bicge.w r1, r1, #4 - 800e168: 6021 strge r1, [r4, #0] - 800e16a: b90d cbnz r5, 800e170 <_printf_i+0x110> - 800e16c: 2e00 cmp r6, #0 - 800e16e: d04b beq.n 800e208 <_printf_i+0x1a8> - 800e170: 4616 mov r6, r2 - 800e172: fbb5 f1f3 udiv r1, r5, r3 - 800e176: fb03 5711 mls r7, r3, r1, r5 - 800e17a: 5dc7 ldrb r7, [r0, r7] - 800e17c: f806 7d01 strb.w r7, [r6, #-1]! - 800e180: 462f mov r7, r5 - 800e182: 42bb cmp r3, r7 - 800e184: 460d mov r5, r1 - 800e186: d9f4 bls.n 800e172 <_printf_i+0x112> - 800e188: 2b08 cmp r3, #8 - 800e18a: d10b bne.n 800e1a4 <_printf_i+0x144> - 800e18c: 6823 ldr r3, [r4, #0] - 800e18e: 07df lsls r7, r3, #31 - 800e190: d508 bpl.n 800e1a4 <_printf_i+0x144> - 800e192: 6923 ldr r3, [r4, #16] - 800e194: 6861 ldr r1, [r4, #4] - 800e196: 4299 cmp r1, r3 - 800e198: bfde ittt le - 800e19a: 2330 movle r3, #48 @ 0x30 - 800e19c: f806 3c01 strble.w r3, [r6, #-1] - 800e1a0: f106 36ff addle.w r6, r6, #4294967295 - 800e1a4: 1b92 subs r2, r2, r6 - 800e1a6: 6122 str r2, [r4, #16] - 800e1a8: f8cd a000 str.w sl, [sp] - 800e1ac: 464b mov r3, r9 - 800e1ae: aa03 add r2, sp, #12 - 800e1b0: 4621 mov r1, r4 - 800e1b2: 4640 mov r0, r8 - 800e1b4: f7ff fee6 bl 800df84 <_printf_common> - 800e1b8: 3001 adds r0, #1 - 800e1ba: d14a bne.n 800e252 <_printf_i+0x1f2> - 800e1bc: f04f 30ff mov.w r0, #4294967295 - 800e1c0: b004 add sp, #16 - 800e1c2: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 800e1c6: 6823 ldr r3, [r4, #0] - 800e1c8: f043 0320 orr.w r3, r3, #32 - 800e1cc: 6023 str r3, [r4, #0] - 800e1ce: 4833 ldr r0, [pc, #204] @ (800e29c <_printf_i+0x23c>) - 800e1d0: 2778 movs r7, #120 @ 0x78 - 800e1d2: f884 7045 strb.w r7, [r4, #69] @ 0x45 - 800e1d6: 6823 ldr r3, [r4, #0] - 800e1d8: 6831 ldr r1, [r6, #0] - 800e1da: 061f lsls r7, r3, #24 - 800e1dc: f851 5b04 ldr.w r5, [r1], #4 - 800e1e0: d402 bmi.n 800e1e8 <_printf_i+0x188> - 800e1e2: 065f lsls r7, r3, #25 - 800e1e4: bf48 it mi - 800e1e6: b2ad uxthmi r5, r5 - 800e1e8: 6031 str r1, [r6, #0] - 800e1ea: 07d9 lsls r1, r3, #31 - 800e1ec: bf44 itt mi - 800e1ee: f043 0320 orrmi.w r3, r3, #32 - 800e1f2: 6023 strmi r3, [r4, #0] - 800e1f4: b11d cbz r5, 800e1fe <_printf_i+0x19e> - 800e1f6: 2310 movs r3, #16 - 800e1f8: e7ac b.n 800e154 <_printf_i+0xf4> - 800e1fa: 4827 ldr r0, [pc, #156] @ (800e298 <_printf_i+0x238>) - 800e1fc: e7e9 b.n 800e1d2 <_printf_i+0x172> - 800e1fe: 6823 ldr r3, [r4, #0] - 800e200: f023 0320 bic.w r3, r3, #32 - 800e204: 6023 str r3, [r4, #0] - 800e206: e7f6 b.n 800e1f6 <_printf_i+0x196> - 800e208: 4616 mov r6, r2 - 800e20a: e7bd b.n 800e188 <_printf_i+0x128> - 800e20c: 6833 ldr r3, [r6, #0] - 800e20e: 6825 ldr r5, [r4, #0] - 800e210: 6961 ldr r1, [r4, #20] - 800e212: 1d18 adds r0, r3, #4 - 800e214: 6030 str r0, [r6, #0] - 800e216: 062e lsls r6, r5, #24 - 800e218: 681b ldr r3, [r3, #0] - 800e21a: d501 bpl.n 800e220 <_printf_i+0x1c0> - 800e21c: 6019 str r1, [r3, #0] - 800e21e: e002 b.n 800e226 <_printf_i+0x1c6> - 800e220: 0668 lsls r0, r5, #25 - 800e222: d5fb bpl.n 800e21c <_printf_i+0x1bc> - 800e224: 8019 strh r1, [r3, #0] - 800e226: 2300 movs r3, #0 - 800e228: 6123 str r3, [r4, #16] - 800e22a: 4616 mov r6, r2 - 800e22c: e7bc b.n 800e1a8 <_printf_i+0x148> - 800e22e: 6833 ldr r3, [r6, #0] - 800e230: 1d1a adds r2, r3, #4 - 800e232: 6032 str r2, [r6, #0] - 800e234: 681e ldr r6, [r3, #0] - 800e236: 6862 ldr r2, [r4, #4] - 800e238: 2100 movs r1, #0 - 800e23a: 4630 mov r0, r6 - 800e23c: f7f1 fff8 bl 8000230 - 800e240: b108 cbz r0, 800e246 <_printf_i+0x1e6> - 800e242: 1b80 subs r0, r0, r6 - 800e244: 6060 str r0, [r4, #4] - 800e246: 6863 ldr r3, [r4, #4] - 800e248: 6123 str r3, [r4, #16] - 800e24a: 2300 movs r3, #0 - 800e24c: f884 3043 strb.w r3, [r4, #67] @ 0x43 - 800e250: e7aa b.n 800e1a8 <_printf_i+0x148> - 800e252: 6923 ldr r3, [r4, #16] - 800e254: 4632 mov r2, r6 - 800e256: 4649 mov r1, r9 - 800e258: 4640 mov r0, r8 - 800e25a: 47d0 blx sl - 800e25c: 3001 adds r0, #1 - 800e25e: d0ad beq.n 800e1bc <_printf_i+0x15c> - 800e260: 6823 ldr r3, [r4, #0] - 800e262: 079b lsls r3, r3, #30 - 800e264: d413 bmi.n 800e28e <_printf_i+0x22e> - 800e266: 68e0 ldr r0, [r4, #12] - 800e268: 9b03 ldr r3, [sp, #12] - 800e26a: 4298 cmp r0, r3 - 800e26c: bfb8 it lt - 800e26e: 4618 movlt r0, r3 - 800e270: e7a6 b.n 800e1c0 <_printf_i+0x160> - 800e272: 2301 movs r3, #1 - 800e274: 4632 mov r2, r6 - 800e276: 4649 mov r1, r9 - 800e278: 4640 mov r0, r8 - 800e27a: 47d0 blx sl - 800e27c: 3001 adds r0, #1 - 800e27e: d09d beq.n 800e1bc <_printf_i+0x15c> - 800e280: 3501 adds r5, #1 - 800e282: 68e3 ldr r3, [r4, #12] - 800e284: 9903 ldr r1, [sp, #12] - 800e286: 1a5b subs r3, r3, r1 - 800e288: 42ab cmp r3, r5 - 800e28a: dcf2 bgt.n 800e272 <_printf_i+0x212> - 800e28c: e7eb b.n 800e266 <_printf_i+0x206> - 800e28e: 2500 movs r5, #0 - 800e290: f104 0619 add.w r6, r4, #25 - 800e294: e7f5 b.n 800e282 <_printf_i+0x222> - 800e296: bf00 nop - 800e298: 0800e9f1 .word 0x0800e9f1 - 800e29c: 0800ea02 .word 0x0800ea02 +0800e5d0 <_printf_i>: + 800e5d0: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} + 800e5d4: 7e0f ldrb r7, [r1, #24] + 800e5d6: 9e0c ldr r6, [sp, #48] @ 0x30 + 800e5d8: 2f78 cmp r7, #120 @ 0x78 + 800e5da: 4691 mov r9, r2 + 800e5dc: 4680 mov r8, r0 + 800e5de: 460c mov r4, r1 + 800e5e0: 469a mov sl, r3 + 800e5e2: f101 0243 add.w r2, r1, #67 @ 0x43 + 800e5e6: d807 bhi.n 800e5f8 <_printf_i+0x28> + 800e5e8: 2f62 cmp r7, #98 @ 0x62 + 800e5ea: d80a bhi.n 800e602 <_printf_i+0x32> + 800e5ec: 2f00 cmp r7, #0 + 800e5ee: f000 80d2 beq.w 800e796 <_printf_i+0x1c6> + 800e5f2: 2f58 cmp r7, #88 @ 0x58 + 800e5f4: f000 80b9 beq.w 800e76a <_printf_i+0x19a> + 800e5f8: f104 0642 add.w r6, r4, #66 @ 0x42 + 800e5fc: f884 7042 strb.w r7, [r4, #66] @ 0x42 + 800e600: e03a b.n 800e678 <_printf_i+0xa8> + 800e602: f1a7 0363 sub.w r3, r7, #99 @ 0x63 + 800e606: 2b15 cmp r3, #21 + 800e608: d8f6 bhi.n 800e5f8 <_printf_i+0x28> + 800e60a: a101 add r1, pc, #4 @ (adr r1, 800e610 <_printf_i+0x40>) + 800e60c: f851 f023 ldr.w pc, [r1, r3, lsl #2] + 800e610: 0800e669 .word 0x0800e669 + 800e614: 0800e67d .word 0x0800e67d + 800e618: 0800e5f9 .word 0x0800e5f9 + 800e61c: 0800e5f9 .word 0x0800e5f9 + 800e620: 0800e5f9 .word 0x0800e5f9 + 800e624: 0800e5f9 .word 0x0800e5f9 + 800e628: 0800e67d .word 0x0800e67d + 800e62c: 0800e5f9 .word 0x0800e5f9 + 800e630: 0800e5f9 .word 0x0800e5f9 + 800e634: 0800e5f9 .word 0x0800e5f9 + 800e638: 0800e5f9 .word 0x0800e5f9 + 800e63c: 0800e77d .word 0x0800e77d + 800e640: 0800e6a7 .word 0x0800e6a7 + 800e644: 0800e737 .word 0x0800e737 + 800e648: 0800e5f9 .word 0x0800e5f9 + 800e64c: 0800e5f9 .word 0x0800e5f9 + 800e650: 0800e79f .word 0x0800e79f + 800e654: 0800e5f9 .word 0x0800e5f9 + 800e658: 0800e6a7 .word 0x0800e6a7 + 800e65c: 0800e5f9 .word 0x0800e5f9 + 800e660: 0800e5f9 .word 0x0800e5f9 + 800e664: 0800e73f .word 0x0800e73f + 800e668: 6833 ldr r3, [r6, #0] + 800e66a: 1d1a adds r2, r3, #4 + 800e66c: 681b ldr r3, [r3, #0] + 800e66e: 6032 str r2, [r6, #0] + 800e670: f104 0642 add.w r6, r4, #66 @ 0x42 + 800e674: f884 3042 strb.w r3, [r4, #66] @ 0x42 + 800e678: 2301 movs r3, #1 + 800e67a: e09d b.n 800e7b8 <_printf_i+0x1e8> + 800e67c: 6833 ldr r3, [r6, #0] + 800e67e: 6820 ldr r0, [r4, #0] + 800e680: 1d19 adds r1, r3, #4 + 800e682: 6031 str r1, [r6, #0] + 800e684: 0606 lsls r6, r0, #24 + 800e686: d501 bpl.n 800e68c <_printf_i+0xbc> + 800e688: 681d ldr r5, [r3, #0] + 800e68a: e003 b.n 800e694 <_printf_i+0xc4> + 800e68c: 0645 lsls r5, r0, #25 + 800e68e: d5fb bpl.n 800e688 <_printf_i+0xb8> + 800e690: f9b3 5000 ldrsh.w r5, [r3] + 800e694: 2d00 cmp r5, #0 + 800e696: da03 bge.n 800e6a0 <_printf_i+0xd0> + 800e698: 232d movs r3, #45 @ 0x2d + 800e69a: 426d negs r5, r5 + 800e69c: f884 3043 strb.w r3, [r4, #67] @ 0x43 + 800e6a0: 4859 ldr r0, [pc, #356] @ (800e808 <_printf_i+0x238>) + 800e6a2: 230a movs r3, #10 + 800e6a4: e011 b.n 800e6ca <_printf_i+0xfa> + 800e6a6: 6821 ldr r1, [r4, #0] + 800e6a8: 6833 ldr r3, [r6, #0] + 800e6aa: 0608 lsls r0, r1, #24 + 800e6ac: f853 5b04 ldr.w r5, [r3], #4 + 800e6b0: d402 bmi.n 800e6b8 <_printf_i+0xe8> + 800e6b2: 0649 lsls r1, r1, #25 + 800e6b4: bf48 it mi + 800e6b6: b2ad uxthmi r5, r5 + 800e6b8: 2f6f cmp r7, #111 @ 0x6f + 800e6ba: 4853 ldr r0, [pc, #332] @ (800e808 <_printf_i+0x238>) + 800e6bc: 6033 str r3, [r6, #0] + 800e6be: bf14 ite ne + 800e6c0: 230a movne r3, #10 + 800e6c2: 2308 moveq r3, #8 + 800e6c4: 2100 movs r1, #0 + 800e6c6: f884 1043 strb.w r1, [r4, #67] @ 0x43 + 800e6ca: 6866 ldr r6, [r4, #4] + 800e6cc: 60a6 str r6, [r4, #8] + 800e6ce: 2e00 cmp r6, #0 + 800e6d0: bfa2 ittt ge + 800e6d2: 6821 ldrge r1, [r4, #0] + 800e6d4: f021 0104 bicge.w r1, r1, #4 + 800e6d8: 6021 strge r1, [r4, #0] + 800e6da: b90d cbnz r5, 800e6e0 <_printf_i+0x110> + 800e6dc: 2e00 cmp r6, #0 + 800e6de: d04b beq.n 800e778 <_printf_i+0x1a8> + 800e6e0: 4616 mov r6, r2 + 800e6e2: fbb5 f1f3 udiv r1, r5, r3 + 800e6e6: fb03 5711 mls r7, r3, r1, r5 + 800e6ea: 5dc7 ldrb r7, [r0, r7] + 800e6ec: f806 7d01 strb.w r7, [r6, #-1]! + 800e6f0: 462f mov r7, r5 + 800e6f2: 42bb cmp r3, r7 + 800e6f4: 460d mov r5, r1 + 800e6f6: d9f4 bls.n 800e6e2 <_printf_i+0x112> + 800e6f8: 2b08 cmp r3, #8 + 800e6fa: d10b bne.n 800e714 <_printf_i+0x144> + 800e6fc: 6823 ldr r3, [r4, #0] + 800e6fe: 07df lsls r7, r3, #31 + 800e700: d508 bpl.n 800e714 <_printf_i+0x144> + 800e702: 6923 ldr r3, [r4, #16] + 800e704: 6861 ldr r1, [r4, #4] + 800e706: 4299 cmp r1, r3 + 800e708: bfde ittt le + 800e70a: 2330 movle r3, #48 @ 0x30 + 800e70c: f806 3c01 strble.w r3, [r6, #-1] + 800e710: f106 36ff addle.w r6, r6, #4294967295 + 800e714: 1b92 subs r2, r2, r6 + 800e716: 6122 str r2, [r4, #16] + 800e718: f8cd a000 str.w sl, [sp] + 800e71c: 464b mov r3, r9 + 800e71e: aa03 add r2, sp, #12 + 800e720: 4621 mov r1, r4 + 800e722: 4640 mov r0, r8 + 800e724: f7ff fee6 bl 800e4f4 <_printf_common> + 800e728: 3001 adds r0, #1 + 800e72a: d14a bne.n 800e7c2 <_printf_i+0x1f2> + 800e72c: f04f 30ff mov.w r0, #4294967295 + 800e730: b004 add sp, #16 + 800e732: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 800e736: 6823 ldr r3, [r4, #0] + 800e738: f043 0320 orr.w r3, r3, #32 + 800e73c: 6023 str r3, [r4, #0] + 800e73e: 4833 ldr r0, [pc, #204] @ (800e80c <_printf_i+0x23c>) + 800e740: 2778 movs r7, #120 @ 0x78 + 800e742: f884 7045 strb.w r7, [r4, #69] @ 0x45 + 800e746: 6823 ldr r3, [r4, #0] + 800e748: 6831 ldr r1, [r6, #0] + 800e74a: 061f lsls r7, r3, #24 + 800e74c: f851 5b04 ldr.w r5, [r1], #4 + 800e750: d402 bmi.n 800e758 <_printf_i+0x188> + 800e752: 065f lsls r7, r3, #25 + 800e754: bf48 it mi + 800e756: b2ad uxthmi r5, r5 + 800e758: 6031 str r1, [r6, #0] + 800e75a: 07d9 lsls r1, r3, #31 + 800e75c: bf44 itt mi + 800e75e: f043 0320 orrmi.w r3, r3, #32 + 800e762: 6023 strmi r3, [r4, #0] + 800e764: b11d cbz r5, 800e76e <_printf_i+0x19e> + 800e766: 2310 movs r3, #16 + 800e768: e7ac b.n 800e6c4 <_printf_i+0xf4> + 800e76a: 4827 ldr r0, [pc, #156] @ (800e808 <_printf_i+0x238>) + 800e76c: e7e9 b.n 800e742 <_printf_i+0x172> + 800e76e: 6823 ldr r3, [r4, #0] + 800e770: f023 0320 bic.w r3, r3, #32 + 800e774: 6023 str r3, [r4, #0] + 800e776: e7f6 b.n 800e766 <_printf_i+0x196> + 800e778: 4616 mov r6, r2 + 800e77a: e7bd b.n 800e6f8 <_printf_i+0x128> + 800e77c: 6833 ldr r3, [r6, #0] + 800e77e: 6825 ldr r5, [r4, #0] + 800e780: 6961 ldr r1, [r4, #20] + 800e782: 1d18 adds r0, r3, #4 + 800e784: 6030 str r0, [r6, #0] + 800e786: 062e lsls r6, r5, #24 + 800e788: 681b ldr r3, [r3, #0] + 800e78a: d501 bpl.n 800e790 <_printf_i+0x1c0> + 800e78c: 6019 str r1, [r3, #0] + 800e78e: e002 b.n 800e796 <_printf_i+0x1c6> + 800e790: 0668 lsls r0, r5, #25 + 800e792: d5fb bpl.n 800e78c <_printf_i+0x1bc> + 800e794: 8019 strh r1, [r3, #0] + 800e796: 2300 movs r3, #0 + 800e798: 6123 str r3, [r4, #16] + 800e79a: 4616 mov r6, r2 + 800e79c: e7bc b.n 800e718 <_printf_i+0x148> + 800e79e: 6833 ldr r3, [r6, #0] + 800e7a0: 1d1a adds r2, r3, #4 + 800e7a2: 6032 str r2, [r6, #0] + 800e7a4: 681e ldr r6, [r3, #0] + 800e7a6: 6862 ldr r2, [r4, #4] + 800e7a8: 2100 movs r1, #0 + 800e7aa: 4630 mov r0, r6 + 800e7ac: f7f1 fd40 bl 8000230 + 800e7b0: b108 cbz r0, 800e7b6 <_printf_i+0x1e6> + 800e7b2: 1b80 subs r0, r0, r6 + 800e7b4: 6060 str r0, [r4, #4] + 800e7b6: 6863 ldr r3, [r4, #4] + 800e7b8: 6123 str r3, [r4, #16] + 800e7ba: 2300 movs r3, #0 + 800e7bc: f884 3043 strb.w r3, [r4, #67] @ 0x43 + 800e7c0: e7aa b.n 800e718 <_printf_i+0x148> + 800e7c2: 6923 ldr r3, [r4, #16] + 800e7c4: 4632 mov r2, r6 + 800e7c6: 4649 mov r1, r9 + 800e7c8: 4640 mov r0, r8 + 800e7ca: 47d0 blx sl + 800e7cc: 3001 adds r0, #1 + 800e7ce: d0ad beq.n 800e72c <_printf_i+0x15c> + 800e7d0: 6823 ldr r3, [r4, #0] + 800e7d2: 079b lsls r3, r3, #30 + 800e7d4: d413 bmi.n 800e7fe <_printf_i+0x22e> + 800e7d6: 68e0 ldr r0, [r4, #12] + 800e7d8: 9b03 ldr r3, [sp, #12] + 800e7da: 4298 cmp r0, r3 + 800e7dc: bfb8 it lt + 800e7de: 4618 movlt r0, r3 + 800e7e0: e7a6 b.n 800e730 <_printf_i+0x160> + 800e7e2: 2301 movs r3, #1 + 800e7e4: 4632 mov r2, r6 + 800e7e6: 4649 mov r1, r9 + 800e7e8: 4640 mov r0, r8 + 800e7ea: 47d0 blx sl + 800e7ec: 3001 adds r0, #1 + 800e7ee: d09d beq.n 800e72c <_printf_i+0x15c> + 800e7f0: 3501 adds r5, #1 + 800e7f2: 68e3 ldr r3, [r4, #12] + 800e7f4: 9903 ldr r1, [sp, #12] + 800e7f6: 1a5b subs r3, r3, r1 + 800e7f8: 42ab cmp r3, r5 + 800e7fa: dcf2 bgt.n 800e7e2 <_printf_i+0x212> + 800e7fc: e7eb b.n 800e7d6 <_printf_i+0x206> + 800e7fe: 2500 movs r5, #0 + 800e800: f104 0619 add.w r6, r4, #25 + 800e804: e7f5 b.n 800e7f2 <_printf_i+0x222> + 800e806: bf00 nop + 800e808: 0800ef61 .word 0x0800ef61 + 800e80c: 0800ef72 .word 0x0800ef72 -0800e2a0 : - 800e2a0: 4288 cmp r0, r1 - 800e2a2: b510 push {r4, lr} - 800e2a4: eb01 0402 add.w r4, r1, r2 - 800e2a8: d902 bls.n 800e2b0 - 800e2aa: 4284 cmp r4, r0 - 800e2ac: 4623 mov r3, r4 - 800e2ae: d807 bhi.n 800e2c0 - 800e2b0: 1e43 subs r3, r0, #1 - 800e2b2: 42a1 cmp r1, r4 - 800e2b4: d008 beq.n 800e2c8 - 800e2b6: f811 2b01 ldrb.w r2, [r1], #1 - 800e2ba: f803 2f01 strb.w r2, [r3, #1]! - 800e2be: e7f8 b.n 800e2b2 - 800e2c0: 4402 add r2, r0 - 800e2c2: 4601 mov r1, r0 - 800e2c4: 428a cmp r2, r1 - 800e2c6: d100 bne.n 800e2ca - 800e2c8: bd10 pop {r4, pc} - 800e2ca: f813 4d01 ldrb.w r4, [r3, #-1]! - 800e2ce: f802 4d01 strb.w r4, [r2, #-1]! - 800e2d2: e7f7 b.n 800e2c4 +0800e810 : + 800e810: 4288 cmp r0, r1 + 800e812: b510 push {r4, lr} + 800e814: eb01 0402 add.w r4, r1, r2 + 800e818: d902 bls.n 800e820 + 800e81a: 4284 cmp r4, r0 + 800e81c: 4623 mov r3, r4 + 800e81e: d807 bhi.n 800e830 + 800e820: 1e43 subs r3, r0, #1 + 800e822: 42a1 cmp r1, r4 + 800e824: d008 beq.n 800e838 + 800e826: f811 2b01 ldrb.w r2, [r1], #1 + 800e82a: f803 2f01 strb.w r2, [r3, #1]! + 800e82e: e7f8 b.n 800e822 + 800e830: 4402 add r2, r0 + 800e832: 4601 mov r1, r0 + 800e834: 428a cmp r2, r1 + 800e836: d100 bne.n 800e83a + 800e838: bd10 pop {r4, pc} + 800e83a: f813 4d01 ldrb.w r4, [r3, #-1]! + 800e83e: f802 4d01 strb.w r4, [r2, #-1]! + 800e842: e7f7 b.n 800e834 -0800e2d4 <_sbrk_r>: - 800e2d4: b538 push {r3, r4, r5, lr} - 800e2d6: 4d06 ldr r5, [pc, #24] @ (800e2f0 <_sbrk_r+0x1c>) - 800e2d8: 2300 movs r3, #0 - 800e2da: 4604 mov r4, r0 - 800e2dc: 4608 mov r0, r1 - 800e2de: 602b str r3, [r5, #0] - 800e2e0: f7f6 f812 bl 8004308 <_sbrk> - 800e2e4: 1c43 adds r3, r0, #1 - 800e2e6: d102 bne.n 800e2ee <_sbrk_r+0x1a> - 800e2e8: 682b ldr r3, [r5, #0] - 800e2ea: b103 cbz r3, 800e2ee <_sbrk_r+0x1a> - 800e2ec: 6023 str r3, [r4, #0] - 800e2ee: bd38 pop {r3, r4, r5, pc} - 800e2f0: 200111a8 .word 0x200111a8 +0800e844 <_sbrk_r>: + 800e844: b538 push {r3, r4, r5, lr} + 800e846: 4d06 ldr r5, [pc, #24] @ (800e860 <_sbrk_r+0x1c>) + 800e848: 2300 movs r3, #0 + 800e84a: 4604 mov r4, r0 + 800e84c: 4608 mov r0, r1 + 800e84e: 602b str r3, [r5, #0] + 800e850: f7f5 fdf2 bl 8004438 <_sbrk> + 800e854: 1c43 adds r3, r0, #1 + 800e856: d102 bne.n 800e85e <_sbrk_r+0x1a> + 800e858: 682b ldr r3, [r5, #0] + 800e85a: b103 cbz r3, 800e85e <_sbrk_r+0x1a> + 800e85c: 6023 str r3, [r4, #0] + 800e85e: bd38 pop {r3, r4, r5, pc} + 800e860: 200111f0 .word 0x200111f0 -0800e2f4 <_realloc_r>: - 800e2f4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 800e2f8: 4680 mov r8, r0 - 800e2fa: 4615 mov r5, r2 - 800e2fc: 460c mov r4, r1 - 800e2fe: b921 cbnz r1, 800e30a <_realloc_r+0x16> - 800e300: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 800e304: 4611 mov r1, r2 - 800e306: f7ff bc59 b.w 800dbbc <_malloc_r> - 800e30a: b92a cbnz r2, 800e318 <_realloc_r+0x24> - 800e30c: f7ff fbea bl 800dae4 <_free_r> - 800e310: 2400 movs r4, #0 - 800e312: 4620 mov r0, r4 - 800e314: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 800e318: f000 f81a bl 800e350 <_malloc_usable_size_r> - 800e31c: 4285 cmp r5, r0 - 800e31e: 4606 mov r6, r0 - 800e320: d802 bhi.n 800e328 <_realloc_r+0x34> - 800e322: ebb5 0f50 cmp.w r5, r0, lsr #1 - 800e326: d8f4 bhi.n 800e312 <_realloc_r+0x1e> - 800e328: 4629 mov r1, r5 - 800e32a: 4640 mov r0, r8 - 800e32c: f7ff fc46 bl 800dbbc <_malloc_r> - 800e330: 4607 mov r7, r0 - 800e332: 2800 cmp r0, #0 - 800e334: d0ec beq.n 800e310 <_realloc_r+0x1c> - 800e336: 42b5 cmp r5, r6 - 800e338: 462a mov r2, r5 - 800e33a: 4621 mov r1, r4 - 800e33c: bf28 it cs - 800e33e: 4632 movcs r2, r6 - 800e340: f7ff fbc2 bl 800dac8 - 800e344: 4621 mov r1, r4 - 800e346: 4640 mov r0, r8 - 800e348: f7ff fbcc bl 800dae4 <_free_r> - 800e34c: 463c mov r4, r7 - 800e34e: e7e0 b.n 800e312 <_realloc_r+0x1e> +0800e864 <_realloc_r>: + 800e864: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800e868: 4680 mov r8, r0 + 800e86a: 4615 mov r5, r2 + 800e86c: 460c mov r4, r1 + 800e86e: b921 cbnz r1, 800e87a <_realloc_r+0x16> + 800e870: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 800e874: 4611 mov r1, r2 + 800e876: f7ff bc59 b.w 800e12c <_malloc_r> + 800e87a: b92a cbnz r2, 800e888 <_realloc_r+0x24> + 800e87c: f7ff fbea bl 800e054 <_free_r> + 800e880: 2400 movs r4, #0 + 800e882: 4620 mov r0, r4 + 800e884: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800e888: f000 f81a bl 800e8c0 <_malloc_usable_size_r> + 800e88c: 4285 cmp r5, r0 + 800e88e: 4606 mov r6, r0 + 800e890: d802 bhi.n 800e898 <_realloc_r+0x34> + 800e892: ebb5 0f50 cmp.w r5, r0, lsr #1 + 800e896: d8f4 bhi.n 800e882 <_realloc_r+0x1e> + 800e898: 4629 mov r1, r5 + 800e89a: 4640 mov r0, r8 + 800e89c: f7ff fc46 bl 800e12c <_malloc_r> + 800e8a0: 4607 mov r7, r0 + 800e8a2: 2800 cmp r0, #0 + 800e8a4: d0ec beq.n 800e880 <_realloc_r+0x1c> + 800e8a6: 42b5 cmp r5, r6 + 800e8a8: 462a mov r2, r5 + 800e8aa: 4621 mov r1, r4 + 800e8ac: bf28 it cs + 800e8ae: 4632 movcs r2, r6 + 800e8b0: f7ff fbc2 bl 800e038 + 800e8b4: 4621 mov r1, r4 + 800e8b6: 4640 mov r0, r8 + 800e8b8: f7ff fbcc bl 800e054 <_free_r> + 800e8bc: 463c mov r4, r7 + 800e8be: e7e0 b.n 800e882 <_realloc_r+0x1e> -0800e350 <_malloc_usable_size_r>: - 800e350: f851 3c04 ldr.w r3, [r1, #-4] - 800e354: 1f18 subs r0, r3, #4 - 800e356: 2b00 cmp r3, #0 - 800e358: bfbc itt lt - 800e35a: 580b ldrlt r3, [r1, r0] - 800e35c: 18c0 addlt r0, r0, r3 - 800e35e: 4770 bx lr +0800e8c0 <_malloc_usable_size_r>: + 800e8c0: f851 3c04 ldr.w r3, [r1, #-4] + 800e8c4: 1f18 subs r0, r3, #4 + 800e8c6: 2b00 cmp r3, #0 + 800e8c8: bfbc itt lt + 800e8ca: 580b ldrlt r3, [r1, r0] + 800e8cc: 18c0 addlt r0, r0, r3 + 800e8ce: 4770 bx lr -0800e360 : - 800e360: b538 push {r3, r4, r5, lr} - 800e362: ed2d 8b02 vpush {d8} - 800e366: ec55 4b10 vmov r4, r5, d0 - 800e36a: f000 f825 bl 800e3b8 <__ieee754_sqrt> - 800e36e: 4622 mov r2, r4 - 800e370: 462b mov r3, r5 - 800e372: 4620 mov r0, r4 - 800e374: 4629 mov r1, r5 - 800e376: eeb0 8a40 vmov.f32 s16, s0 - 800e37a: eef0 8a60 vmov.f32 s17, s1 - 800e37e: f7f2 fbfd bl 8000b7c <__aeabi_dcmpun> - 800e382: b990 cbnz r0, 800e3aa - 800e384: 2200 movs r2, #0 - 800e386: 2300 movs r3, #0 - 800e388: 4620 mov r0, r4 - 800e38a: 4629 mov r1, r5 - 800e38c: f7f2 fbce bl 8000b2c <__aeabi_dcmplt> - 800e390: b158 cbz r0, 800e3aa - 800e392: f7ff fb6d bl 800da70 <__errno> - 800e396: 2321 movs r3, #33 @ 0x21 - 800e398: 6003 str r3, [r0, #0] - 800e39a: 2200 movs r2, #0 - 800e39c: 2300 movs r3, #0 - 800e39e: 4610 mov r0, r2 - 800e3a0: 4619 mov r1, r3 - 800e3a2: f7f2 fa7b bl 800089c <__aeabi_ddiv> - 800e3a6: ec41 0b18 vmov d8, r0, r1 - 800e3aa: eeb0 0a48 vmov.f32 s0, s16 - 800e3ae: eef0 0a68 vmov.f32 s1, s17 - 800e3b2: ecbd 8b02 vpop {d8} - 800e3b6: bd38 pop {r3, r4, r5, pc} +0800e8d0 : + 800e8d0: b538 push {r3, r4, r5, lr} + 800e8d2: ed2d 8b02 vpush {d8} + 800e8d6: ec55 4b10 vmov r4, r5, d0 + 800e8da: f000 f825 bl 800e928 <__ieee754_sqrt> + 800e8de: 4622 mov r2, r4 + 800e8e0: 462b mov r3, r5 + 800e8e2: 4620 mov r0, r4 + 800e8e4: 4629 mov r1, r5 + 800e8e6: eeb0 8a40 vmov.f32 s16, s0 + 800e8ea: eef0 8a60 vmov.f32 s17, s1 + 800e8ee: f7f2 f945 bl 8000b7c <__aeabi_dcmpun> + 800e8f2: b990 cbnz r0, 800e91a + 800e8f4: 2200 movs r2, #0 + 800e8f6: 2300 movs r3, #0 + 800e8f8: 4620 mov r0, r4 + 800e8fa: 4629 mov r1, r5 + 800e8fc: f7f2 f916 bl 8000b2c <__aeabi_dcmplt> + 800e900: b158 cbz r0, 800e91a + 800e902: f7ff fb6d bl 800dfe0 <__errno> + 800e906: 2321 movs r3, #33 @ 0x21 + 800e908: 6003 str r3, [r0, #0] + 800e90a: 2200 movs r2, #0 + 800e90c: 2300 movs r3, #0 + 800e90e: 4610 mov r0, r2 + 800e910: 4619 mov r1, r3 + 800e912: f7f1 ffc3 bl 800089c <__aeabi_ddiv> + 800e916: ec41 0b18 vmov d8, r0, r1 + 800e91a: eeb0 0a48 vmov.f32 s0, s16 + 800e91e: eef0 0a68 vmov.f32 s1, s17 + 800e922: ecbd 8b02 vpop {d8} + 800e926: bd38 pop {r3, r4, r5, pc} -0800e3b8 <__ieee754_sqrt>: - 800e3b8: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 800e3bc: 4a68 ldr r2, [pc, #416] @ (800e560 <__ieee754_sqrt+0x1a8>) - 800e3be: ec55 4b10 vmov r4, r5, d0 - 800e3c2: 43aa bics r2, r5 - 800e3c4: 462b mov r3, r5 - 800e3c6: 4621 mov r1, r4 - 800e3c8: d110 bne.n 800e3ec <__ieee754_sqrt+0x34> - 800e3ca: 4622 mov r2, r4 - 800e3cc: 4620 mov r0, r4 - 800e3ce: 4629 mov r1, r5 - 800e3d0: f7f2 f93a bl 8000648 <__aeabi_dmul> - 800e3d4: 4602 mov r2, r0 - 800e3d6: 460b mov r3, r1 - 800e3d8: 4620 mov r0, r4 - 800e3da: 4629 mov r1, r5 - 800e3dc: f7f1 ff7e bl 80002dc <__adddf3> - 800e3e0: 4604 mov r4, r0 - 800e3e2: 460d mov r5, r1 - 800e3e4: ec45 4b10 vmov d0, r4, r5 - 800e3e8: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} - 800e3ec: 2d00 cmp r5, #0 - 800e3ee: dc0e bgt.n 800e40e <__ieee754_sqrt+0x56> - 800e3f0: f025 4200 bic.w r2, r5, #2147483648 @ 0x80000000 - 800e3f4: 4322 orrs r2, r4 - 800e3f6: d0f5 beq.n 800e3e4 <__ieee754_sqrt+0x2c> - 800e3f8: b19d cbz r5, 800e422 <__ieee754_sqrt+0x6a> - 800e3fa: 4622 mov r2, r4 - 800e3fc: 4620 mov r0, r4 - 800e3fe: 4629 mov r1, r5 - 800e400: f7f1 ff6a bl 80002d8 <__aeabi_dsub> - 800e404: 4602 mov r2, r0 - 800e406: 460b mov r3, r1 - 800e408: f7f2 fa48 bl 800089c <__aeabi_ddiv> - 800e40c: e7e8 b.n 800e3e0 <__ieee754_sqrt+0x28> - 800e40e: 152a asrs r2, r5, #20 - 800e410: d115 bne.n 800e43e <__ieee754_sqrt+0x86> - 800e412: 2000 movs r0, #0 - 800e414: e009 b.n 800e42a <__ieee754_sqrt+0x72> - 800e416: 0acb lsrs r3, r1, #11 - 800e418: 3a15 subs r2, #21 - 800e41a: 0549 lsls r1, r1, #21 - 800e41c: 2b00 cmp r3, #0 - 800e41e: d0fa beq.n 800e416 <__ieee754_sqrt+0x5e> - 800e420: e7f7 b.n 800e412 <__ieee754_sqrt+0x5a> - 800e422: 462a mov r2, r5 - 800e424: e7fa b.n 800e41c <__ieee754_sqrt+0x64> - 800e426: 005b lsls r3, r3, #1 - 800e428: 3001 adds r0, #1 - 800e42a: 02dc lsls r4, r3, #11 - 800e42c: d5fb bpl.n 800e426 <__ieee754_sqrt+0x6e> - 800e42e: 1e44 subs r4, r0, #1 - 800e430: 1b12 subs r2, r2, r4 - 800e432: f1c0 0420 rsb r4, r0, #32 - 800e436: fa21 f404 lsr.w r4, r1, r4 - 800e43a: 4323 orrs r3, r4 - 800e43c: 4081 lsls r1, r0 - 800e43e: f3c3 0313 ubfx r3, r3, #0, #20 - 800e442: f2a2 35ff subw r5, r2, #1023 @ 0x3ff - 800e446: f443 1380 orr.w r3, r3, #1048576 @ 0x100000 - 800e44a: 07d2 lsls r2, r2, #31 - 800e44c: bf5c itt pl - 800e44e: 005b lslpl r3, r3, #1 - 800e450: eb03 73d1 addpl.w r3, r3, r1, lsr #31 - 800e454: ea4f 0343 mov.w r3, r3, lsl #1 - 800e458: bf58 it pl - 800e45a: 0049 lslpl r1, r1, #1 - 800e45c: 2600 movs r6, #0 - 800e45e: eb03 73d1 add.w r3, r3, r1, lsr #31 - 800e462: 106d asrs r5, r5, #1 - 800e464: 0049 lsls r1, r1, #1 - 800e466: 2016 movs r0, #22 - 800e468: 4632 mov r2, r6 - 800e46a: f44f 1400 mov.w r4, #2097152 @ 0x200000 - 800e46e: 1917 adds r7, r2, r4 - 800e470: 429f cmp r7, r3 - 800e472: bfde ittt le - 800e474: 193a addle r2, r7, r4 - 800e476: 1bdb suble r3, r3, r7 - 800e478: 1936 addle r6, r6, r4 - 800e47a: 0fcf lsrs r7, r1, #31 - 800e47c: 3801 subs r0, #1 - 800e47e: eb07 0343 add.w r3, r7, r3, lsl #1 - 800e482: ea4f 0141 mov.w r1, r1, lsl #1 - 800e486: ea4f 0454 mov.w r4, r4, lsr #1 - 800e48a: d1f0 bne.n 800e46e <__ieee754_sqrt+0xb6> - 800e48c: 4604 mov r4, r0 - 800e48e: 2720 movs r7, #32 - 800e490: f04f 4c00 mov.w ip, #2147483648 @ 0x80000000 - 800e494: 429a cmp r2, r3 - 800e496: eb00 0e0c add.w lr, r0, ip - 800e49a: db02 blt.n 800e4a2 <__ieee754_sqrt+0xea> - 800e49c: d113 bne.n 800e4c6 <__ieee754_sqrt+0x10e> - 800e49e: 458e cmp lr, r1 - 800e4a0: d811 bhi.n 800e4c6 <__ieee754_sqrt+0x10e> - 800e4a2: f1be 0f00 cmp.w lr, #0 - 800e4a6: eb0e 000c add.w r0, lr, ip - 800e4aa: da42 bge.n 800e532 <__ieee754_sqrt+0x17a> - 800e4ac: 2800 cmp r0, #0 - 800e4ae: db40 blt.n 800e532 <__ieee754_sqrt+0x17a> - 800e4b0: f102 0801 add.w r8, r2, #1 - 800e4b4: 1a9b subs r3, r3, r2 - 800e4b6: 458e cmp lr, r1 - 800e4b8: bf88 it hi - 800e4ba: f103 33ff addhi.w r3, r3, #4294967295 - 800e4be: eba1 010e sub.w r1, r1, lr - 800e4c2: 4464 add r4, ip - 800e4c4: 4642 mov r2, r8 - 800e4c6: ea4f 7ed1 mov.w lr, r1, lsr #31 - 800e4ca: 3f01 subs r7, #1 - 800e4cc: eb0e 0343 add.w r3, lr, r3, lsl #1 - 800e4d0: ea4f 0141 mov.w r1, r1, lsl #1 - 800e4d4: ea4f 0c5c mov.w ip, ip, lsr #1 - 800e4d8: d1dc bne.n 800e494 <__ieee754_sqrt+0xdc> - 800e4da: 4319 orrs r1, r3 - 800e4dc: d01b beq.n 800e516 <__ieee754_sqrt+0x15e> - 800e4de: f8df a084 ldr.w sl, [pc, #132] @ 800e564 <__ieee754_sqrt+0x1ac> - 800e4e2: f8df b084 ldr.w fp, [pc, #132] @ 800e568 <__ieee754_sqrt+0x1b0> - 800e4e6: e9da 0100 ldrd r0, r1, [sl] - 800e4ea: e9db 2300 ldrd r2, r3, [fp] - 800e4ee: f7f1 fef3 bl 80002d8 <__aeabi_dsub> - 800e4f2: e9da 8900 ldrd r8, r9, [sl] - 800e4f6: 4602 mov r2, r0 - 800e4f8: 460b mov r3, r1 - 800e4fa: 4640 mov r0, r8 - 800e4fc: 4649 mov r1, r9 - 800e4fe: f7f2 fb1f bl 8000b40 <__aeabi_dcmple> - 800e502: b140 cbz r0, 800e516 <__ieee754_sqrt+0x15e> - 800e504: f1b4 3fff cmp.w r4, #4294967295 - 800e508: e9da 0100 ldrd r0, r1, [sl] - 800e50c: e9db 2300 ldrd r2, r3, [fp] - 800e510: d111 bne.n 800e536 <__ieee754_sqrt+0x17e> - 800e512: 3601 adds r6, #1 - 800e514: 463c mov r4, r7 - 800e516: 1072 asrs r2, r6, #1 - 800e518: 0863 lsrs r3, r4, #1 - 800e51a: 07f1 lsls r1, r6, #31 - 800e51c: f102 527f add.w r2, r2, #1069547520 @ 0x3fc00000 - 800e520: f502 1200 add.w r2, r2, #2097152 @ 0x200000 - 800e524: bf48 it mi - 800e526: f043 4300 orrmi.w r3, r3, #2147483648 @ 0x80000000 - 800e52a: eb02 5105 add.w r1, r2, r5, lsl #20 - 800e52e: 4618 mov r0, r3 - 800e530: e756 b.n 800e3e0 <__ieee754_sqrt+0x28> - 800e532: 4690 mov r8, r2 - 800e534: e7be b.n 800e4b4 <__ieee754_sqrt+0xfc> - 800e536: f7f1 fed1 bl 80002dc <__adddf3> - 800e53a: e9da 8900 ldrd r8, r9, [sl] - 800e53e: 4602 mov r2, r0 - 800e540: 460b mov r3, r1 - 800e542: 4640 mov r0, r8 - 800e544: 4649 mov r1, r9 - 800e546: f7f2 faf1 bl 8000b2c <__aeabi_dcmplt> - 800e54a: b120 cbz r0, 800e556 <__ieee754_sqrt+0x19e> - 800e54c: 1ca0 adds r0, r4, #2 - 800e54e: bf08 it eq - 800e550: 3601 addeq r6, #1 - 800e552: 3402 adds r4, #2 - 800e554: e7df b.n 800e516 <__ieee754_sqrt+0x15e> - 800e556: 1c63 adds r3, r4, #1 - 800e558: f023 0401 bic.w r4, r3, #1 - 800e55c: e7db b.n 800e516 <__ieee754_sqrt+0x15e> - 800e55e: bf00 nop - 800e560: 7ff00000 .word 0x7ff00000 - 800e564: 20000068 .word 0x20000068 - 800e568: 20000060 .word 0x20000060 +0800e928 <__ieee754_sqrt>: + 800e928: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800e92c: 4a68 ldr r2, [pc, #416] @ (800ead0 <__ieee754_sqrt+0x1a8>) + 800e92e: ec55 4b10 vmov r4, r5, d0 + 800e932: 43aa bics r2, r5 + 800e934: 462b mov r3, r5 + 800e936: 4621 mov r1, r4 + 800e938: d110 bne.n 800e95c <__ieee754_sqrt+0x34> + 800e93a: 4622 mov r2, r4 + 800e93c: 4620 mov r0, r4 + 800e93e: 4629 mov r1, r5 + 800e940: f7f1 fe82 bl 8000648 <__aeabi_dmul> + 800e944: 4602 mov r2, r0 + 800e946: 460b mov r3, r1 + 800e948: 4620 mov r0, r4 + 800e94a: 4629 mov r1, r5 + 800e94c: f7f1 fcc6 bl 80002dc <__adddf3> + 800e950: 4604 mov r4, r0 + 800e952: 460d mov r5, r1 + 800e954: ec45 4b10 vmov d0, r4, r5 + 800e958: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800e95c: 2d00 cmp r5, #0 + 800e95e: dc0e bgt.n 800e97e <__ieee754_sqrt+0x56> + 800e960: f025 4200 bic.w r2, r5, #2147483648 @ 0x80000000 + 800e964: 4322 orrs r2, r4 + 800e966: d0f5 beq.n 800e954 <__ieee754_sqrt+0x2c> + 800e968: b19d cbz r5, 800e992 <__ieee754_sqrt+0x6a> + 800e96a: 4622 mov r2, r4 + 800e96c: 4620 mov r0, r4 + 800e96e: 4629 mov r1, r5 + 800e970: f7f1 fcb2 bl 80002d8 <__aeabi_dsub> + 800e974: 4602 mov r2, r0 + 800e976: 460b mov r3, r1 + 800e978: f7f1 ff90 bl 800089c <__aeabi_ddiv> + 800e97c: e7e8 b.n 800e950 <__ieee754_sqrt+0x28> + 800e97e: 152a asrs r2, r5, #20 + 800e980: d115 bne.n 800e9ae <__ieee754_sqrt+0x86> + 800e982: 2000 movs r0, #0 + 800e984: e009 b.n 800e99a <__ieee754_sqrt+0x72> + 800e986: 0acb lsrs r3, r1, #11 + 800e988: 3a15 subs r2, #21 + 800e98a: 0549 lsls r1, r1, #21 + 800e98c: 2b00 cmp r3, #0 + 800e98e: d0fa beq.n 800e986 <__ieee754_sqrt+0x5e> + 800e990: e7f7 b.n 800e982 <__ieee754_sqrt+0x5a> + 800e992: 462a mov r2, r5 + 800e994: e7fa b.n 800e98c <__ieee754_sqrt+0x64> + 800e996: 005b lsls r3, r3, #1 + 800e998: 3001 adds r0, #1 + 800e99a: 02dc lsls r4, r3, #11 + 800e99c: d5fb bpl.n 800e996 <__ieee754_sqrt+0x6e> + 800e99e: 1e44 subs r4, r0, #1 + 800e9a0: 1b12 subs r2, r2, r4 + 800e9a2: f1c0 0420 rsb r4, r0, #32 + 800e9a6: fa21 f404 lsr.w r4, r1, r4 + 800e9aa: 4323 orrs r3, r4 + 800e9ac: 4081 lsls r1, r0 + 800e9ae: f3c3 0313 ubfx r3, r3, #0, #20 + 800e9b2: f2a2 35ff subw r5, r2, #1023 @ 0x3ff + 800e9b6: f443 1380 orr.w r3, r3, #1048576 @ 0x100000 + 800e9ba: 07d2 lsls r2, r2, #31 + 800e9bc: bf5c itt pl + 800e9be: 005b lslpl r3, r3, #1 + 800e9c0: eb03 73d1 addpl.w r3, r3, r1, lsr #31 + 800e9c4: ea4f 0343 mov.w r3, r3, lsl #1 + 800e9c8: bf58 it pl + 800e9ca: 0049 lslpl r1, r1, #1 + 800e9cc: 2600 movs r6, #0 + 800e9ce: eb03 73d1 add.w r3, r3, r1, lsr #31 + 800e9d2: 106d asrs r5, r5, #1 + 800e9d4: 0049 lsls r1, r1, #1 + 800e9d6: 2016 movs r0, #22 + 800e9d8: 4632 mov r2, r6 + 800e9da: f44f 1400 mov.w r4, #2097152 @ 0x200000 + 800e9de: 1917 adds r7, r2, r4 + 800e9e0: 429f cmp r7, r3 + 800e9e2: bfde ittt le + 800e9e4: 193a addle r2, r7, r4 + 800e9e6: 1bdb suble r3, r3, r7 + 800e9e8: 1936 addle r6, r6, r4 + 800e9ea: 0fcf lsrs r7, r1, #31 + 800e9ec: 3801 subs r0, #1 + 800e9ee: eb07 0343 add.w r3, r7, r3, lsl #1 + 800e9f2: ea4f 0141 mov.w r1, r1, lsl #1 + 800e9f6: ea4f 0454 mov.w r4, r4, lsr #1 + 800e9fa: d1f0 bne.n 800e9de <__ieee754_sqrt+0xb6> + 800e9fc: 4604 mov r4, r0 + 800e9fe: 2720 movs r7, #32 + 800ea00: f04f 4c00 mov.w ip, #2147483648 @ 0x80000000 + 800ea04: 429a cmp r2, r3 + 800ea06: eb00 0e0c add.w lr, r0, ip + 800ea0a: db02 blt.n 800ea12 <__ieee754_sqrt+0xea> + 800ea0c: d113 bne.n 800ea36 <__ieee754_sqrt+0x10e> + 800ea0e: 458e cmp lr, r1 + 800ea10: d811 bhi.n 800ea36 <__ieee754_sqrt+0x10e> + 800ea12: f1be 0f00 cmp.w lr, #0 + 800ea16: eb0e 000c add.w r0, lr, ip + 800ea1a: da42 bge.n 800eaa2 <__ieee754_sqrt+0x17a> + 800ea1c: 2800 cmp r0, #0 + 800ea1e: db40 blt.n 800eaa2 <__ieee754_sqrt+0x17a> + 800ea20: f102 0801 add.w r8, r2, #1 + 800ea24: 1a9b subs r3, r3, r2 + 800ea26: 458e cmp lr, r1 + 800ea28: bf88 it hi + 800ea2a: f103 33ff addhi.w r3, r3, #4294967295 + 800ea2e: eba1 010e sub.w r1, r1, lr + 800ea32: 4464 add r4, ip + 800ea34: 4642 mov r2, r8 + 800ea36: ea4f 7ed1 mov.w lr, r1, lsr #31 + 800ea3a: 3f01 subs r7, #1 + 800ea3c: eb0e 0343 add.w r3, lr, r3, lsl #1 + 800ea40: ea4f 0141 mov.w r1, r1, lsl #1 + 800ea44: ea4f 0c5c mov.w ip, ip, lsr #1 + 800ea48: d1dc bne.n 800ea04 <__ieee754_sqrt+0xdc> + 800ea4a: 4319 orrs r1, r3 + 800ea4c: d01b beq.n 800ea86 <__ieee754_sqrt+0x15e> + 800ea4e: f8df a084 ldr.w sl, [pc, #132] @ 800ead4 <__ieee754_sqrt+0x1ac> + 800ea52: f8df b084 ldr.w fp, [pc, #132] @ 800ead8 <__ieee754_sqrt+0x1b0> + 800ea56: e9da 0100 ldrd r0, r1, [sl] + 800ea5a: e9db 2300 ldrd r2, r3, [fp] + 800ea5e: f7f1 fc3b bl 80002d8 <__aeabi_dsub> + 800ea62: e9da 8900 ldrd r8, r9, [sl] + 800ea66: 4602 mov r2, r0 + 800ea68: 460b mov r3, r1 + 800ea6a: 4640 mov r0, r8 + 800ea6c: 4649 mov r1, r9 + 800ea6e: f7f2 f867 bl 8000b40 <__aeabi_dcmple> + 800ea72: b140 cbz r0, 800ea86 <__ieee754_sqrt+0x15e> + 800ea74: f1b4 3fff cmp.w r4, #4294967295 + 800ea78: e9da 0100 ldrd r0, r1, [sl] + 800ea7c: e9db 2300 ldrd r2, r3, [fp] + 800ea80: d111 bne.n 800eaa6 <__ieee754_sqrt+0x17e> + 800ea82: 3601 adds r6, #1 + 800ea84: 463c mov r4, r7 + 800ea86: 1072 asrs r2, r6, #1 + 800ea88: 0863 lsrs r3, r4, #1 + 800ea8a: 07f1 lsls r1, r6, #31 + 800ea8c: f102 527f add.w r2, r2, #1069547520 @ 0x3fc00000 + 800ea90: f502 1200 add.w r2, r2, #2097152 @ 0x200000 + 800ea94: bf48 it mi + 800ea96: f043 4300 orrmi.w r3, r3, #2147483648 @ 0x80000000 + 800ea9a: eb02 5105 add.w r1, r2, r5, lsl #20 + 800ea9e: 4618 mov r0, r3 + 800eaa0: e756 b.n 800e950 <__ieee754_sqrt+0x28> + 800eaa2: 4690 mov r8, r2 + 800eaa4: e7be b.n 800ea24 <__ieee754_sqrt+0xfc> + 800eaa6: f7f1 fc19 bl 80002dc <__adddf3> + 800eaaa: e9da 8900 ldrd r8, r9, [sl] + 800eaae: 4602 mov r2, r0 + 800eab0: 460b mov r3, r1 + 800eab2: 4640 mov r0, r8 + 800eab4: 4649 mov r1, r9 + 800eab6: f7f2 f839 bl 8000b2c <__aeabi_dcmplt> + 800eaba: b120 cbz r0, 800eac6 <__ieee754_sqrt+0x19e> + 800eabc: 1ca0 adds r0, r4, #2 + 800eabe: bf08 it eq + 800eac0: 3601 addeq r6, #1 + 800eac2: 3402 adds r4, #2 + 800eac4: e7df b.n 800ea86 <__ieee754_sqrt+0x15e> + 800eac6: 1c63 adds r3, r4, #1 + 800eac8: f023 0401 bic.w r4, r3, #1 + 800eacc: e7db b.n 800ea86 <__ieee754_sqrt+0x15e> + 800eace: bf00 nop + 800ead0: 7ff00000 .word 0x7ff00000 + 800ead4: 20000068 .word 0x20000068 + 800ead8: 20000060 .word 0x20000060 -0800e56c <_init>: - 800e56c: b5f8 push {r3, r4, r5, r6, r7, lr} - 800e56e: bf00 nop - 800e570: bcf8 pop {r3, r4, r5, r6, r7} - 800e572: bc08 pop {r3} - 800e574: 469e mov lr, r3 - 800e576: 4770 bx lr +0800eadc <_init>: + 800eadc: b5f8 push {r3, r4, r5, r6, r7, lr} + 800eade: bf00 nop + 800eae0: bcf8 pop {r3, r4, r5, r6, r7} + 800eae2: bc08 pop {r3} + 800eae4: 469e mov lr, r3 + 800eae6: 4770 bx lr -0800e578 <_fini>: - 800e578: b5f8 push {r3, r4, r5, r6, r7, lr} - 800e57a: bf00 nop - 800e57c: bcf8 pop {r3, r4, r5, r6, r7} - 800e57e: bc08 pop {r3} - 800e580: 469e mov lr, r3 - 800e582: 4770 bx lr +0800eae8 <_fini>: + 800eae8: b5f8 push {r3, r4, r5, r6, r7, lr} + 800eaea: bf00 nop + 800eaec: bcf8 pop {r3, r4, r5, r6, r7} + 800eaee: bc08 pop {r3} + 800eaf0: 469e mov lr, r3 + 800eaf2: 4770 bx lr diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/ICD_0.1_100pin_07082025.map b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/ICD_0.1_100pin_07082025.map index fbae16c..2f012a3 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/ICD_0.1_100pin_07082025.map +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/Debug/ICD_0.1_100pin_07082025.map @@ -686,7 +686,7 @@ Discarded input sections .text.get_data_max30003 0x00000000 0xf4 ./Core/Src/icd.o .text.ra_lv_control - 0x00000000 0x158 ./Core/Src/icd.o + 0x00000000 0x15c ./Core/Src/icd.o .debug_macro 0x00000000 0xac0 ./Core/Src/icd.o .debug_macro 0x00000000 0x2ae ./Core/Src/icd.o .debug_macro 0x00000000 0x2e ./Core/Src/icd.o @@ -759,7 +759,7 @@ Discarded input sections .debug_macro 0x00000000 0x7e ./Core/Src/icd.o .debug_macro 0x00000000 0x19 ./Core/Src/icd.o .debug_macro 0x00000000 0xf2 ./Core/Src/icd.o - .debug_macro 0x00000000 0x130 ./Core/Src/icd.o + .debug_macro 0x00000000 0x136 ./Core/Src/icd.o .debug_macro 0x00000000 0x10 ./Core/Src/icd.o .debug_macro 0x00000000 0x369 ./Core/Src/icd.o .group 0x00000000 0xc ./Core/Src/main.o @@ -935,7 +935,7 @@ Discarded input sections .debug_macro 0x00000000 0x16 ./Core/Src/main.o .debug_macro 0x00000000 0x20 ./Core/Src/main.o .debug_macro 0x00000000 0x14e ./Core/Src/main.o - .debug_macro 0x00000000 0x130 ./Core/Src/main.o + .debug_macro 0x00000000 0x136 ./Core/Src/main.o .debug_macro 0x00000000 0x10 ./Core/Src/main.o .group 0x00000000 0xc ./Core/Src/parse.o .group 0x00000000 0xc ./Core/Src/parse.o @@ -1089,7 +1089,7 @@ Discarded input sections .debug_macro 0x00000000 0x19 ./Core/Src/parse.o .debug_macro 0x00000000 0xf2 ./Core/Src/parse.o .debug_macro 0x00000000 0x22 ./Core/Src/parse.o - .debug_macro 0x00000000 0x130 ./Core/Src/parse.o + .debug_macro 0x00000000 0x136 ./Core/Src/parse.o .group 0x00000000 0xc ./Core/Src/spi.o .group 0x00000000 0xc ./Core/Src/spi.o .group 0x00000000 0xc ./Core/Src/spi.o @@ -1528,7 +1528,7 @@ Discarded input sections .debug_macro 0x00000000 0x7e ./Core/Src/stm32f4xx_it.o .debug_macro 0x00000000 0x19 ./Core/Src/stm32f4xx_it.o .debug_macro 0x00000000 0xf2 ./Core/Src/stm32f4xx_it.o - .debug_macro 0x00000000 0x130 ./Core/Src/stm32f4xx_it.o + .debug_macro 0x00000000 0x136 ./Core/Src/stm32f4xx_it.o .group 0x00000000 0xc ./Core/Src/syscalls.o .group 0x00000000 0xc ./Core/Src/syscalls.o .group 0x00000000 0xc ./Core/Src/syscalls.o @@ -1852,7 +1852,7 @@ Discarded input sections .data 0x00000000 0x0 ./Core/Src/tim.o .bss 0x00000000 0x0 ./Core/Src/tim.o .text.HAL_TIM_Base_MspDeInit - 0x00000000 0xd8 ./Core/Src/tim.o + 0x00000000 0xf4 ./Core/Src/tim.o .debug_macro 0x00000000 0xac0 ./Core/Src/tim.o .debug_macro 0x00000000 0x2ae ./Core/Src/tim.o .debug_macro 0x00000000 0x2e ./Core/Src/tim.o @@ -2073,7 +2073,7 @@ Discarded input sections .debug_macro 0x00000000 0x7e ./Core/Src/usart.o .debug_macro 0x00000000 0x19 ./Core/Src/usart.o .debug_macro 0x00000000 0xf2 ./Core/Src/usart.o - .debug_macro 0x00000000 0x130 ./Core/Src/usart.o + .debug_macro 0x00000000 0x136 ./Core/Src/usart.o .debug_macro 0x00000000 0x10 ./Core/Src/usart.o .text 0x00000000 0x14 ./Core/Startup/startup_stm32f413vgtx.o .data 0x00000000 0x0 ./Core/Startup/startup_stm32f413vgtx.o @@ -4221,16 +4221,10 @@ Discarded input sections 0x00000000 0x51c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o .text.HAL_TIM_IC_Stop_DMA 0x00000000 0x34c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - .text.HAL_TIM_OnePulse_Init - 0x00000000 0x248 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o .text.HAL_TIM_OnePulse_DeInit 0x00000000 0x158 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - .text.HAL_TIM_OnePulse_MspInit - 0x00000000 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o .text.HAL_TIM_OnePulse_MspDeInit 0x00000000 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - .text.HAL_TIM_OnePulse_Start - 0x00000000 0xc4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o .text.HAL_TIM_OnePulse_Stop 0x00000000 0xd8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o .text.HAL_TIM_OnePulse_Start_IT @@ -6178,7 +6172,7 @@ LOAD C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext 0x08000000 g_pfnVectors 0x080001d8 . = ALIGN (0x4) -.text 0x080001e0 0xe3a4 +.text 0x080001e0 0xe914 0x080001e0 . = ALIGN (0x4) *(.text) .text 0x080001e0 0x40 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o @@ -6250,940 +6244,953 @@ LOAD C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext 0x080011a4 0x44 ./Core/Src/adc.o 0x080011a4 volt_to_pers .text.adc_read - 0x080011e8 0x1e8 ./Core/Src/adc.o + 0x080011e8 0x1e4 ./Core/Src/adc.o 0x080011e8 adc_read .text.control_init - 0x080013d0 0x58 ./Core/Src/control.o - 0x080013d0 control_init + 0x080013cc 0x58 ./Core/Src/control.o + 0x080013cc control_init .text.lets_sleep - 0x08001428 0x5c ./Core/Src/control.o - 0x08001428 lets_sleep + 0x08001424 0x5c ./Core/Src/control.o + 0x08001424 lets_sleep .text.delay_us - 0x08001484 0x2e ./Core/Src/delay.o - 0x08001484 delay_us - *fill* 0x080014b2 0x2 + 0x08001480 0x2e ./Core/Src/delay.o + 0x08001480 delay_us + *fill* 0x080014ae 0x2 .text.MX_DMA_Init - 0x080014b4 0x50 ./Core/Src/dma.o - 0x080014b4 MX_DMA_Init + 0x080014b0 0x50 ./Core/Src/dma.o + 0x080014b0 MX_DMA_Init .text.iir_lp30 - 0x08001504 0x108 ./Core/Src/filter.o - 0x08001504 iir_lp30 + 0x08001500 0x108 ./Core/Src/filter.o + 0x08001500 iir_lp30 .text.vApplicationGetIdleTaskMemory - 0x0800160c 0x34 ./Core/Src/freertos.o - 0x0800160c vApplicationGetIdleTaskMemory + 0x08001608 0x34 ./Core/Src/freertos.o + 0x08001608 vApplicationGetIdleTaskMemory .text.MX_FREERTOS_Init - 0x08001640 0xfc ./Core/Src/freertos.o - 0x08001640 MX_FREERTOS_Init + 0x0800163c 0xfc ./Core/Src/freertos.o + 0x0800163c MX_FREERTOS_Init .text.StartDefaultTask - 0x0800173c 0x48 ./Core/Src/freertos.o - 0x0800173c StartDefaultTask + 0x08001738 0x48 ./Core/Src/freertos.o + 0x08001738 StartDefaultTask .text.StartOprosTask - 0x08001784 0x80 ./Core/Src/freertos.o - 0x08001784 StartOprosTask + 0x08001780 0x80 ./Core/Src/freertos.o + 0x08001780 StartOprosTask .text.StartControlTask - 0x08001804 0x1c ./Core/Src/freertos.o - 0x08001804 StartControlTask + 0x08001800 0x1c ./Core/Src/freertos.o + 0x08001800 StartControlTask .text.StartLowSpeedTask - 0x08001820 0x60 ./Core/Src/freertos.o - 0x08001820 StartLowSpeedTask + 0x0800181c 0x60 ./Core/Src/freertos.o + 0x0800181c StartLowSpeedTask .text.StartButTask - 0x08001880 0x58 ./Core/Src/freertos.o - 0x08001880 StartButTask + 0x0800187c 0x70 ./Core/Src/freertos.o + 0x0800187c StartButTask .text.MX_GPIO_Init - 0x080018d8 0x2a0 ./Core/Src/gpio.o - 0x080018d8 MX_GPIO_Init + 0x080018ec 0x29c ./Core/Src/gpio.o + 0x080018ec MX_GPIO_Init .text.init_icd - 0x08001b78 0x200 ./Core/Src/icd.o - 0x08001b78 init_icd - .text.my_abs 0x08001d78 0x34 ./Core/Src/icd.o - 0x08001d78 my_abs + 0x08001b88 0x238 ./Core/Src/icd.o + 0x08001b88 init_icd + .text.my_abs 0x08001dc0 0x34 ./Core/Src/icd.o + 0x08001dc0 my_abs .text.mode_start - 0x08001dac 0x34 ./Core/Src/icd.o - 0x08001dac mode_start + 0x08001df4 0x34 ./Core/Src/icd.o + 0x08001df4 mode_start .text.get_data - 0x08001de0 0x104 ./Core/Src/icd.o - 0x08001de0 get_data + 0x08001e28 0x104 ./Core/Src/icd.o + 0x08001e28 get_data .text.check_mode_len - 0x08001ee4 0x8e ./Core/Src/icd.o - 0x08001ee4 check_mode_len + 0x08001f2c 0x8e ./Core/Src/icd.o + 0x08001f2c check_mode_len .text.check_tres - 0x08001f72 0x130 ./Core/Src/icd.o - 0x08001f72 check_tres - *fill* 0x080020a2 0x2 + 0x08001fba 0x130 ./Core/Src/icd.o + 0x08001fba check_tres + *fill* 0x080020ea 0x2 .text.search_alg - 0x080020a4 0x2cc ./Core/Src/icd.o - 0x080020a4 search_alg + 0x080020ec 0x2cc ./Core/Src/icd.o + 0x080020ec search_alg .text.moving_avarage - 0x08002370 0x7c ./Core/Src/icd.o - 0x08002370 moving_avarage + 0x080023b8 0x7c ./Core/Src/icd.o + 0x080023b8 moving_avarage .text.basket_alg - 0x080023ec 0x116 ./Core/Src/icd.o - 0x080023ec basket_alg + 0x08002434 0x116 ./Core/Src/icd.o + 0x08002434 basket_alg .text.terapy_start - 0x08002502 0x36 ./Core/Src/icd.o - 0x08002502 terapy_start - .text.hv_pwm 0x08002538 0x30 ./Core/Src/icd.o - 0x08002538 hv_pwm + 0x0800254a 0x36 ./Core/Src/icd.o + 0x0800254a terapy_start + .text.hv_pwm 0x08002580 0x30 ./Core/Src/icd.o + 0x08002580 hv_pwm .text.hv_sound - 0x08002568 0x38 ./Core/Src/icd.o - 0x08002568 hv_sound + 0x080025b0 0x38 ./Core/Src/icd.o + 0x080025b0 hv_sound .text.hv_charge - 0x080025a0 0x104 ./Core/Src/icd.o - 0x080025a0 hv_charge + 0x080025e8 0x10c ./Core/Src/icd.o + 0x080025e8 hv_charge .text.hv_shock - 0x080026a4 0x54 ./Core/Src/icd.o - 0x080026a4 hv_shock + 0x080026f4 0x56 ./Core/Src/icd.o + 0x080026f4 hv_shock .text.quick_analyse - 0x080026f8 0x8a ./Core/Src/icd.o - 0x080026f8 quick_analyse + 0x0800274a 0x8a ./Core/Src/icd.o + 0x0800274a quick_analyse .text.fibr_terapy - 0x08002782 0x160 ./Core/Src/icd.o - 0x08002782 fibr_terapy - *fill* 0x080028e2 0x2 + 0x080027d4 0x160 ./Core/Src/icd.o + 0x080027d4 fibr_terapy .text.terapy_algorithm - 0x080028e4 0x78 ./Core/Src/icd.o - 0x080028e4 terapy_algorithm + 0x08002934 0x90 ./Core/Src/icd.o + 0x08002934 terapy_algorithm .text.relay_all_control - 0x0800295c 0x32 ./Core/Src/icd.o - 0x0800295c relay_all_control - *fill* 0x0800298e 0x2 + 0x080029c4 0x32 ./Core/Src/icd.o + 0x080029c4 relay_all_control + *fill* 0x080029f6 0x2 .text.relay_ra_control - 0x08002990 0x38 ./Core/Src/icd.o - 0x08002990 relay_ra_control + 0x080029f8 0x38 ./Core/Src/icd.o + 0x080029f8 relay_ra_control .text.relay_rv_control - 0x080029c8 0x38 ./Core/Src/icd.o - 0x080029c8 relay_rv_control + 0x08002a30 0x38 ./Core/Src/icd.o + 0x08002a30 relay_rv_control .text.relay_can_control - 0x08002a00 0x38 ./Core/Src/icd.o - 0x08002a00 relay_can_control + 0x08002a68 0x38 ./Core/Src/icd.o + 0x08002a68 relay_can_control .text.hv_ll_control - 0x08002a38 0x32 ./Core/Src/icd.o - 0x08002a38 hv_ll_control - *fill* 0x08002a6a 0x2 + 0x08002aa0 0x32 ./Core/Src/icd.o + 0x08002aa0 hv_ll_control + *fill* 0x08002ad2 0x2 .text.hv_power - 0x08002a6c 0x48 ./Core/Src/icd.o - 0x08002a6c hv_power + 0x08002ad4 0x48 ./Core/Src/icd.o + 0x08002ad4 hv_power .text.hv_ll_rv_control - 0x08002ab4 0x64 ./Core/Src/icd.o - 0x08002ab4 hv_ll_rv_control + 0x08002b1c 0x64 ./Core/Src/icd.o + 0x08002b1c hv_ll_rv_control .text.hv_ll_scv_control - 0x08002b18 0x64 ./Core/Src/icd.o - 0x08002b18 hv_ll_scv_control + 0x08002b80 0x64 ./Core/Src/icd.o + 0x08002b80 hv_ll_scv_control .text.hv_ll_can_control - 0x08002b7c 0x64 ./Core/Src/icd.o - 0x08002b7c hv_ll_can_control + 0x08002be4 0x64 ./Core/Src/icd.o + 0x08002be4 hv_ll_can_control .text.hv_discharge - 0x08002be0 0x38 ./Core/Src/icd.o - 0x08002be0 hv_discharge - .text.ll_bi_dis - 0x08002c18 0xa2 ./Core/Src/icd.o - 0x08002c18 ll_bi_dis - *fill* 0x08002cba 0x2 + 0x08002c48 0x38 ./Core/Src/icd.o + 0x08002c48 hv_discharge + .text.ll_bi_shock_param + 0x08002c80 0xec ./Core/Src/icd.o + 0x08002c80 ll_bi_shock_param .text.rv_lv_control - 0x08002cbc 0x1b0 ./Core/Src/icd.o - 0x08002cbc rv_lv_control + 0x08002d6c 0x16c ./Core/Src/icd.o + 0x08002d6c rv_lv_control .text.hv_en_control - 0x08002e6c 0x32 ./Core/Src/icd.o - 0x08002e6c hv_en_control - *fill* 0x08002e9e 0x2 + 0x08002ed8 0x32 ./Core/Src/icd.o + 0x08002ed8 hv_en_control + *fill* 0x08002f0a 0x2 .text.hv_en_rv - 0x08002ea0 0x34 ./Core/Src/icd.o - 0x08002ea0 hv_en_rv + 0x08002f0c 0x34 ./Core/Src/icd.o + 0x08002f0c hv_en_rv .text.hv_en_scv - 0x08002ed4 0x34 ./Core/Src/icd.o - 0x08002ed4 hv_en_scv + 0x08002f40 0x34 ./Core/Src/icd.o + 0x08002f40 hv_en_scv .text.hv_en_can - 0x08002f08 0x34 ./Core/Src/icd.o - 0x08002f08 hv_en_can - .text.main 0x08002f3c 0x134 ./Core/Src/main.o - 0x08002f3c main + 0x08002f74 0x34 ./Core/Src/icd.o + 0x08002f74 hv_en_can + .text.delay_critical + 0x08002fa8 0x3c ./Core/Src/icd.o + 0x08002fa8 delay_critical + .text.main 0x08002fe4 0x144 ./Core/Src/main.o + 0x08002fe4 main .text.SystemClock_Config - 0x08003070 0xd4 ./Core/Src/main.o - 0x08003070 SystemClock_Config + 0x08003128 0xd4 ./Core/Src/main.o + 0x08003128 SystemClock_Config .text.HAL_TIM_PeriodElapsedCallback - 0x08003144 0x24 ./Core/Src/main.o - 0x08003144 HAL_TIM_PeriodElapsedCallback + 0x080031fc 0x24 ./Core/Src/main.o + 0x080031fc HAL_TIM_PeriodElapsedCallback .text.Error_Handler - 0x08003168 0xc ./Core/Src/main.o - 0x08003168 Error_Handler + 0x08003220 0xc ./Core/Src/main.o + 0x08003220 Error_Handler .text.assert_failed - 0x08003174 0x16 ./Core/Src/main.o - 0x08003174 assert_failed - *fill* 0x0800318a 0x2 + 0x0800322c 0x16 ./Core/Src/main.o + 0x0800322c assert_failed + *fill* 0x08003242 0x2 .text.__NVIC_SystemReset - 0x0800318c 0x2c ./Core/Src/parse.o + 0x08003244 0x2c ./Core/Src/parse.o .text.unpackFloat - 0x080031b8 0x4c ./Core/Src/parse.o - 0x080031b8 unpackFloat + 0x08003270 0x4c ./Core/Src/parse.o + 0x08003270 unpackFloat .text.check_float - 0x08003204 0x48 ./Core/Src/parse.o - 0x08003204 check_float + 0x080032bc 0x48 ./Core/Src/parse.o + 0x080032bc check_float .text.unpackUint16 - 0x0800324c 0x38 ./Core/Src/parse.o - 0x0800324c unpackUint16 + 0x08003304 0x38 ./Core/Src/parse.o + 0x08003304 unpackUint16 .text.check_uint16 - 0x08003284 0x34 ./Core/Src/parse.o - 0x08003284 check_uint16 + 0x0800333c 0x34 ./Core/Src/parse.o + 0x0800333c check_uint16 .text.unpackUint8 - 0x080032b8 0x26 ./Core/Src/parse.o - 0x080032b8 unpackUint8 + 0x08003370 0x26 ./Core/Src/parse.o + 0x08003370 unpackUint8 .text.check_uint8 - 0x080032de 0x34 ./Core/Src/parse.o - 0x080032de check_uint8 + 0x08003396 0x34 ./Core/Src/parse.o + 0x08003396 check_uint8 .text.unpackUint32 - 0x08003312 0x42 ./Core/Src/parse.o - 0x08003312 unpackUint32 + 0x080033ca 0x42 ./Core/Src/parse.o + 0x080033ca unpackUint32 .text.check_uint32 - 0x08003354 0x2e ./Core/Src/parse.o - 0x08003354 check_uint32 - *fill* 0x08003382 0x2 + 0x0800340c 0x2e ./Core/Src/parse.o + 0x0800340c check_uint32 + *fill* 0x0800343a 0x2 .text.parse_command - 0x08003384 0xad0 ./Core/Src/parse.o - 0x08003384 parse_command + 0x0800343c 0xb48 ./Core/Src/parse.o + 0x0800343c parse_command .text.MX_SPI2_Init - 0x08003e54 0x6c ./Core/Src/spi.o - 0x08003e54 MX_SPI2_Init + 0x08003f84 0x6c ./Core/Src/spi.o + 0x08003f84 MX_SPI2_Init .text.MX_SPI3_Init - 0x08003ec0 0x6c ./Core/Src/spi.o - 0x08003ec0 MX_SPI3_Init + 0x08003ff0 0x6c ./Core/Src/spi.o + 0x08003ff0 MX_SPI3_Init .text.HAL_SPI_MspInit - 0x08003f2c 0x100 ./Core/Src/spi.o - 0x08003f2c HAL_SPI_MspInit + 0x0800405c 0x100 ./Core/Src/spi.o + 0x0800405c HAL_SPI_MspInit .text.POT_cheek - 0x0800402c 0x4c ./Core/Src/spi.o - 0x0800402c POT_cheek + 0x0800415c 0x4c ./Core/Src/spi.o + 0x0800415c POT_cheek .text.HAL_MspInit - 0x08004078 0x58 ./Core/Src/stm32f4xx_hal_msp.o - 0x08004078 HAL_MspInit + 0x080041a8 0x58 ./Core/Src/stm32f4xx_hal_msp.o + 0x080041a8 HAL_MspInit .text.HAL_InitTick - 0x080040d0 0xf8 ./Core/Src/stm32f4xx_hal_timebase_tim.o - 0x080040d0 HAL_InitTick + 0x08004200 0xf8 ./Core/Src/stm32f4xx_hal_timebase_tim.o + 0x08004200 HAL_InitTick .text.NMI_Handler - 0x080041c8 0x8 ./Core/Src/stm32f4xx_it.o - 0x080041c8 NMI_Handler + 0x080042f8 0x8 ./Core/Src/stm32f4xx_it.o + 0x080042f8 NMI_Handler .text.HardFault_Handler - 0x080041d0 0x8 ./Core/Src/stm32f4xx_it.o - 0x080041d0 HardFault_Handler + 0x08004300 0x8 ./Core/Src/stm32f4xx_it.o + 0x08004300 HardFault_Handler .text.MemManage_Handler - 0x080041d8 0x8 ./Core/Src/stm32f4xx_it.o - 0x080041d8 MemManage_Handler + 0x08004308 0x8 ./Core/Src/stm32f4xx_it.o + 0x08004308 MemManage_Handler .text.BusFault_Handler - 0x080041e0 0x8 ./Core/Src/stm32f4xx_it.o - 0x080041e0 BusFault_Handler + 0x08004310 0x8 ./Core/Src/stm32f4xx_it.o + 0x08004310 BusFault_Handler .text.UsageFault_Handler - 0x080041e8 0x8 ./Core/Src/stm32f4xx_it.o - 0x080041e8 UsageFault_Handler + 0x08004318 0x8 ./Core/Src/stm32f4xx_it.o + 0x08004318 UsageFault_Handler .text.DebugMon_Handler - 0x080041f0 0xe ./Core/Src/stm32f4xx_it.o - 0x080041f0 DebugMon_Handler - *fill* 0x080041fe 0x2 + 0x08004320 0xe ./Core/Src/stm32f4xx_it.o + 0x08004320 DebugMon_Handler + *fill* 0x0800432e 0x2 .text.USART1_IRQHandler - 0x08004200 0x14 ./Core/Src/stm32f4xx_it.o - 0x08004200 USART1_IRQHandler + 0x08004330 0x14 ./Core/Src/stm32f4xx_it.o + 0x08004330 USART1_IRQHandler .text.TIM8_BRK_TIM12_IRQHandler - 0x08004214 0x14 ./Core/Src/stm32f4xx_it.o - 0x08004214 TIM8_BRK_TIM12_IRQHandler + 0x08004344 0x14 ./Core/Src/stm32f4xx_it.o + 0x08004344 TIM8_BRK_TIM12_IRQHandler .text.TIM6_DAC_IRQHandler - 0x08004228 0xb8 ./Core/Src/stm32f4xx_it.o - 0x08004228 TIM6_DAC_IRQHandler + 0x08004358 0xb8 ./Core/Src/stm32f4xx_it.o + 0x08004358 TIM6_DAC_IRQHandler .text.DMA2_Stream2_IRQHandler - 0x080042e0 0x14 ./Core/Src/stm32f4xx_it.o - 0x080042e0 DMA2_Stream2_IRQHandler + 0x08004410 0x14 ./Core/Src/stm32f4xx_it.o + 0x08004410 DMA2_Stream2_IRQHandler .text.DMA2_Stream7_IRQHandler - 0x080042f4 0x14 ./Core/Src/stm32f4xx_it.o - 0x080042f4 DMA2_Stream7_IRQHandler - .text._sbrk 0x08004308 0x6c ./Core/Src/sysmem.o - 0x08004308 _sbrk + 0x08004424 0x14 ./Core/Src/stm32f4xx_it.o + 0x08004424 DMA2_Stream7_IRQHandler + .text._sbrk 0x08004438 0x6c ./Core/Src/sysmem.o + 0x08004438 _sbrk .text.SystemInit - 0x08004374 0x24 ./Core/Src/system_stm32f4xx.o - 0x08004374 SystemInit + 0x080044a4 0x24 ./Core/Src/system_stm32f4xx.o + 0x080044a4 SystemInit .text.MX_TIM1_Init - 0x08004398 0x188 ./Core/Src/tim.o - 0x08004398 MX_TIM1_Init + 0x080044c8 0x188 ./Core/Src/tim.o + 0x080044c8 MX_TIM1_Init .text.MX_TIM2_Init - 0x08004520 0x118 ./Core/Src/tim.o - 0x08004520 MX_TIM2_Init + 0x08004650 0x118 ./Core/Src/tim.o + 0x08004650 MX_TIM2_Init .text.MX_TIM3_Init - 0x08004638 0x118 ./Core/Src/tim.o - 0x08004638 MX_TIM3_Init + 0x08004768 0x118 ./Core/Src/tim.o + 0x08004768 MX_TIM3_Init .text.MX_TIM4_Init - 0x08004750 0x118 ./Core/Src/tim.o - 0x08004750 MX_TIM4_Init + 0x08004880 0x118 ./Core/Src/tim.o + 0x08004880 MX_TIM4_Init .text.MX_TIM6_Init - 0x08004868 0x6c ./Core/Src/tim.o - 0x08004868 MX_TIM6_Init + 0x08004998 0x6c ./Core/Src/tim.o + 0x08004998 MX_TIM6_Init .text.MX_TIM9_Init - 0x080048d4 0xc4 ./Core/Src/tim.o - 0x080048d4 MX_TIM9_Init + 0x08004a04 0xc4 ./Core/Src/tim.o + 0x08004a04 MX_TIM9_Init + .text.MX_TIM11_Init + 0x08004ac8 0xac ./Core/Src/tim.o + 0x08004ac8 MX_TIM11_Init .text.MX_TIM14_Init - 0x08004998 0x48 ./Core/Src/tim.o - 0x08004998 MX_TIM14_Init + 0x08004b74 0x48 ./Core/Src/tim.o + 0x08004b74 MX_TIM14_Init .text.HAL_TIM_Base_MspInit - 0x080049e0 0x154 ./Core/Src/tim.o - 0x080049e0 HAL_TIM_Base_MspInit + 0x08004bbc 0x180 ./Core/Src/tim.o + 0x08004bbc HAL_TIM_Base_MspInit .text.HAL_TIM_MspPostInit - 0x08004b34 0x1d4 ./Core/Src/tim.o - 0x08004b34 HAL_TIM_MspPostInit + 0x08004d3c 0x220 ./Core/Src/tim.o + 0x08004d3c HAL_TIM_MspPostInit .text.MX_USART1_UART_Init - 0x08004d08 0x54 ./Core/Src/usart.o - 0x08004d08 MX_USART1_UART_Init + 0x08004f5c 0x54 ./Core/Src/usart.o + 0x08004f5c MX_USART1_UART_Init .text.HAL_UART_MspInit - 0x08004d5c 0x16c ./Core/Src/usart.o - 0x08004d5c HAL_UART_MspInit + 0x08004fb0 0x16c ./Core/Src/usart.o + 0x08004fb0 HAL_UART_MspInit .text.print_usart - 0x08004ec8 0x50 ./Core/Src/usart.o - 0x08004ec8 print_usart + 0x0800511c 0x50 ./Core/Src/usart.o + 0x0800511c print_usart .text.ble_control - 0x08004f18 0x144 ./Core/Src/usart.o - 0x08004f18 ble_control + 0x0800516c 0x144 ./Core/Src/usart.o + 0x0800516c ble_control .text.float2Bytes - 0x0800505c 0x1e ./Core/Src/usart.o - 0x0800505c float2Bytes - *fill* 0x0800507a 0x2 + 0x080052b0 0x1e ./Core/Src/usart.o + 0x080052b0 float2Bytes + *fill* 0x080052ce 0x2 .text.ble_HEX_new - 0x0800507c 0x914 ./Core/Src/usart.o - 0x0800507c ble_HEX_new + 0x080052d0 0x914 ./Core/Src/usart.o + 0x080052d0 ble_HEX_new .text.Reset_Handler - 0x08005990 0x50 ./Core/Startup/startup_stm32f413vgtx.o - 0x08005990 Reset_Handler + 0x08005be4 0x50 ./Core/Startup/startup_stm32f413vgtx.o + 0x08005be4 Reset_Handler .text.Default_Handler - 0x080059e0 0x2 ./Core/Startup/startup_stm32f413vgtx.o - 0x080059e0 RTC_Alarm_IRQHandler - 0x080059e0 EXTI2_IRQHandler - 0x080059e0 TIM8_CC_IRQHandler - 0x080059e0 UART8_IRQHandler - 0x080059e0 FMPI2C1_EV_IRQHandler - 0x080059e0 SPI4_IRQHandler - 0x080059e0 TIM1_CC_IRQHandler - 0x080059e0 DMA2_Stream5_IRQHandler - 0x080059e0 DMA1_Stream5_IRQHandler - 0x080059e0 CAN3_RX1_IRQHandler - 0x080059e0 PVD_IRQHandler - 0x080059e0 SDIO_IRQHandler - 0x080059e0 TAMP_STAMP_IRQHandler - 0x080059e0 CAN2_RX1_IRQHandler - 0x080059e0 EXTI3_IRQHandler - 0x080059e0 TIM8_TRG_COM_TIM14_IRQHandler - 0x080059e0 DFSDM1_FLT1_IRQHandler - 0x080059e0 TIM1_UP_TIM10_IRQHandler - 0x080059e0 TIM8_UP_TIM13_IRQHandler - 0x080059e0 I2C3_ER_IRQHandler - 0x080059e0 EXTI0_IRQHandler - 0x080059e0 I2C2_EV_IRQHandler - 0x080059e0 DMA1_Stream2_IRQHandler - 0x080059e0 CAN1_RX0_IRQHandler - 0x080059e0 FPU_IRQHandler - 0x080059e0 CAN3_SCE_IRQHandler - 0x080059e0 CAN2_SCE_IRQHandler - 0x080059e0 SPI1_IRQHandler - 0x080059e0 TIM1_BRK_TIM9_IRQHandler - 0x080059e0 CAN2_RX0_IRQHandler - 0x080059e0 DMA2_Stream3_IRQHandler - 0x080059e0 USART6_IRQHandler - 0x080059e0 CAN3_RX0_IRQHandler - 0x080059e0 USART3_IRQHandler - 0x080059e0 DFSDM2_FLT3_IRQHandler - 0x080059e0 CAN1_RX1_IRQHandler - 0x080059e0 UART5_IRQHandler - 0x080059e0 DMA2_Stream0_IRQHandler - 0x080059e0 TIM4_IRQHandler - 0x080059e0 QUADSPI_IRQHandler - 0x080059e0 I2C1_EV_IRQHandler - 0x080059e0 DMA1_Stream6_IRQHandler - 0x080059e0 DMA1_Stream1_IRQHandler - 0x080059e0 UART4_IRQHandler - 0x080059e0 TIM3_IRQHandler - 0x080059e0 RCC_IRQHandler - 0x080059e0 UART9_IRQHandler - 0x080059e0 Default_Handler - 0x080059e0 EXTI15_10_IRQHandler - 0x080059e0 ADC_IRQHandler - 0x080059e0 DMA1_Stream7_IRQHandler - 0x080059e0 DFSDM2_FLT0_IRQHandler - 0x080059e0 SPI5_IRQHandler - 0x080059e0 TIM7_IRQHandler - 0x080059e0 CAN2_TX_IRQHandler - 0x080059e0 TIM5_IRQHandler - 0x080059e0 I2C3_EV_IRQHandler - 0x080059e0 DFSDM2_FLT2_IRQHandler - 0x080059e0 EXTI9_5_IRQHandler - 0x080059e0 RTC_WKUP_IRQHandler - 0x080059e0 SPI2_IRQHandler - 0x080059e0 DMA1_Stream0_IRQHandler - 0x080059e0 CAN1_TX_IRQHandler - 0x080059e0 FMPI2C1_ER_IRQHandler - 0x080059e0 EXTI4_IRQHandler - 0x080059e0 DFSDM2_FLT1_IRQHandler - 0x080059e0 RNG_IRQHandler - 0x080059e0 FSMC_IRQHandler - 0x080059e0 WWDG_IRQHandler - 0x080059e0 CAN3_TX_IRQHandler - 0x080059e0 TIM2_IRQHandler - 0x080059e0 OTG_FS_WKUP_IRQHandler - 0x080059e0 TIM1_TRG_COM_TIM11_IRQHandler - 0x080059e0 EXTI1_IRQHandler - 0x080059e0 UART7_IRQHandler - 0x080059e0 USART2_IRQHandler - 0x080059e0 DFSDM1_FLT0_IRQHandler - 0x080059e0 I2C2_ER_IRQHandler - 0x080059e0 DMA2_Stream1_IRQHandler - 0x080059e0 CAN1_SCE_IRQHandler - 0x080059e0 FLASH_IRQHandler - 0x080059e0 DMA2_Stream4_IRQHandler - 0x080059e0 OTG_FS_IRQHandler - 0x080059e0 SPI3_IRQHandler - 0x080059e0 DMA1_Stream4_IRQHandler - 0x080059e0 I2C1_ER_IRQHandler - 0x080059e0 LPTIM1_IRQHandler - 0x080059e0 DMA2_Stream6_IRQHandler - 0x080059e0 UART10_IRQHandler - 0x080059e0 SAI1_IRQHandler - 0x080059e0 DMA1_Stream3_IRQHandler - *fill* 0x080059e2 0x2 + 0x08005c34 0x2 ./Core/Startup/startup_stm32f413vgtx.o + 0x08005c34 RTC_Alarm_IRQHandler + 0x08005c34 EXTI2_IRQHandler + 0x08005c34 TIM8_CC_IRQHandler + 0x08005c34 UART8_IRQHandler + 0x08005c34 FMPI2C1_EV_IRQHandler + 0x08005c34 SPI4_IRQHandler + 0x08005c34 TIM1_CC_IRQHandler + 0x08005c34 DMA2_Stream5_IRQHandler + 0x08005c34 DMA1_Stream5_IRQHandler + 0x08005c34 CAN3_RX1_IRQHandler + 0x08005c34 PVD_IRQHandler + 0x08005c34 SDIO_IRQHandler + 0x08005c34 TAMP_STAMP_IRQHandler + 0x08005c34 CAN2_RX1_IRQHandler + 0x08005c34 EXTI3_IRQHandler + 0x08005c34 TIM8_TRG_COM_TIM14_IRQHandler + 0x08005c34 DFSDM1_FLT1_IRQHandler + 0x08005c34 TIM1_UP_TIM10_IRQHandler + 0x08005c34 TIM8_UP_TIM13_IRQHandler + 0x08005c34 I2C3_ER_IRQHandler + 0x08005c34 EXTI0_IRQHandler + 0x08005c34 I2C2_EV_IRQHandler + 0x08005c34 DMA1_Stream2_IRQHandler + 0x08005c34 CAN1_RX0_IRQHandler + 0x08005c34 FPU_IRQHandler + 0x08005c34 CAN3_SCE_IRQHandler + 0x08005c34 CAN2_SCE_IRQHandler + 0x08005c34 SPI1_IRQHandler + 0x08005c34 TIM1_BRK_TIM9_IRQHandler + 0x08005c34 CAN2_RX0_IRQHandler + 0x08005c34 DMA2_Stream3_IRQHandler + 0x08005c34 USART6_IRQHandler + 0x08005c34 CAN3_RX0_IRQHandler + 0x08005c34 USART3_IRQHandler + 0x08005c34 DFSDM2_FLT3_IRQHandler + 0x08005c34 CAN1_RX1_IRQHandler + 0x08005c34 UART5_IRQHandler + 0x08005c34 DMA2_Stream0_IRQHandler + 0x08005c34 TIM4_IRQHandler + 0x08005c34 QUADSPI_IRQHandler + 0x08005c34 I2C1_EV_IRQHandler + 0x08005c34 DMA1_Stream6_IRQHandler + 0x08005c34 DMA1_Stream1_IRQHandler + 0x08005c34 UART4_IRQHandler + 0x08005c34 TIM3_IRQHandler + 0x08005c34 RCC_IRQHandler + 0x08005c34 UART9_IRQHandler + 0x08005c34 Default_Handler + 0x08005c34 EXTI15_10_IRQHandler + 0x08005c34 ADC_IRQHandler + 0x08005c34 DMA1_Stream7_IRQHandler + 0x08005c34 DFSDM2_FLT0_IRQHandler + 0x08005c34 SPI5_IRQHandler + 0x08005c34 TIM7_IRQHandler + 0x08005c34 CAN2_TX_IRQHandler + 0x08005c34 TIM5_IRQHandler + 0x08005c34 I2C3_EV_IRQHandler + 0x08005c34 DFSDM2_FLT2_IRQHandler + 0x08005c34 EXTI9_5_IRQHandler + 0x08005c34 RTC_WKUP_IRQHandler + 0x08005c34 SPI2_IRQHandler + 0x08005c34 DMA1_Stream0_IRQHandler + 0x08005c34 CAN1_TX_IRQHandler + 0x08005c34 FMPI2C1_ER_IRQHandler + 0x08005c34 EXTI4_IRQHandler + 0x08005c34 DFSDM2_FLT1_IRQHandler + 0x08005c34 RNG_IRQHandler + 0x08005c34 FSMC_IRQHandler + 0x08005c34 WWDG_IRQHandler + 0x08005c34 CAN3_TX_IRQHandler + 0x08005c34 TIM2_IRQHandler + 0x08005c34 OTG_FS_WKUP_IRQHandler + 0x08005c34 TIM1_TRG_COM_TIM11_IRQHandler + 0x08005c34 EXTI1_IRQHandler + 0x08005c34 UART7_IRQHandler + 0x08005c34 USART2_IRQHandler + 0x08005c34 DFSDM1_FLT0_IRQHandler + 0x08005c34 I2C2_ER_IRQHandler + 0x08005c34 DMA2_Stream1_IRQHandler + 0x08005c34 CAN1_SCE_IRQHandler + 0x08005c34 FLASH_IRQHandler + 0x08005c34 DMA2_Stream4_IRQHandler + 0x08005c34 OTG_FS_IRQHandler + 0x08005c34 SPI3_IRQHandler + 0x08005c34 DMA1_Stream4_IRQHandler + 0x08005c34 I2C1_ER_IRQHandler + 0x08005c34 LPTIM1_IRQHandler + 0x08005c34 DMA2_Stream6_IRQHandler + 0x08005c34 UART10_IRQHandler + 0x08005c34 SAI1_IRQHandler + 0x08005c34 DMA1_Stream3_IRQHandler + *fill* 0x08005c36 0x2 .text.HAL_Init - 0x080059e4 0x44 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - 0x080059e4 HAL_Init + 0x08005c38 0x44 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x08005c38 HAL_Init .text.HAL_IncTick - 0x08005a28 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - 0x08005a28 HAL_IncTick + 0x08005c7c 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x08005c7c HAL_IncTick .text.HAL_GetTick - 0x08005a50 0x18 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - 0x08005a50 HAL_GetTick + 0x08005ca4 0x18 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x08005ca4 HAL_GetTick .text.HAL_Delay - 0x08005a68 0x48 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - 0x08005a68 HAL_Delay + 0x08005cbc 0x48 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x08005cbc HAL_Delay .text.HAL_ADC_Init - 0x08005ab0 0x2bc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o - 0x08005ab0 HAL_ADC_Init + 0x08005d04 0x2bc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o + 0x08005d04 HAL_ADC_Init .text.HAL_ADC_Start - 0x08005d6c 0x1b0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o - 0x08005d6c HAL_ADC_Start + 0x08005fc0 0x1b0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o + 0x08005fc0 HAL_ADC_Start .text.HAL_ADC_Stop - 0x08005f1c 0x80 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o - 0x08005f1c HAL_ADC_Stop + 0x08006170 0x80 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o + 0x08006170 HAL_ADC_Stop .text.HAL_ADC_PollForConversion - 0x08005f9c 0x116 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o - 0x08005f9c HAL_ADC_PollForConversion + 0x080061f0 0x116 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o + 0x080061f0 HAL_ADC_PollForConversion .text.HAL_ADC_GetValue - 0x080060b2 0x1a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o - 0x080060b2 HAL_ADC_GetValue + 0x08006306 0x1a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o + 0x08006306 HAL_ADC_GetValue .text.HAL_ADC_ConfigChannel - 0x080060cc 0x2ec ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o - 0x080060cc HAL_ADC_ConfigChannel + 0x08006320 0x2ec ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o + 0x08006320 HAL_ADC_ConfigChannel .text.ADC_Init - 0x080063b8 0x214 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o + 0x0800660c 0x214 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o .text.__NVIC_SetPriorityGrouping - 0x080065cc 0x48 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x08006820 0x48 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .text.__NVIC_GetPriorityGrouping - 0x08006614 0x1c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x08006868 0x1c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .text.__NVIC_EnableIRQ - 0x08006630 0x3c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x08006884 0x3c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .text.__NVIC_SetPriority - 0x0800666c 0x54 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x080068c0 0x54 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .text.NVIC_EncodePriority - 0x080066c0 0x66 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - *fill* 0x08006726 0x2 + 0x08006914 0x66 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + *fill* 0x0800697a 0x2 .text.HAL_NVIC_SetPriorityGrouping - 0x08006728 0x40 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - 0x08006728 HAL_NVIC_SetPriorityGrouping + 0x0800697c 0x40 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x0800697c HAL_NVIC_SetPriorityGrouping .text.HAL_NVIC_SetPriority - 0x08006768 0x58 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - 0x08006768 HAL_NVIC_SetPriority + 0x080069bc 0x58 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x080069bc HAL_NVIC_SetPriority .text.HAL_NVIC_EnableIRQ - 0x080067c0 0x30 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - 0x080067c0 HAL_NVIC_EnableIRQ + 0x08006a14 0x30 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x08006a14 HAL_NVIC_EnableIRQ .text.HAL_DMA_Init - 0x080067f0 0x488 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o - 0x080067f0 HAL_DMA_Init + 0x08006a44 0x488 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + 0x08006a44 HAL_DMA_Init .text.HAL_DMA_Start_IT - 0x08006c78 0xcc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o - 0x08006c78 HAL_DMA_Start_IT + 0x08006ecc 0xcc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + 0x08006ecc HAL_DMA_Start_IT .text.HAL_DMA_Abort - 0x08006d44 0xe0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o - 0x08006d44 HAL_DMA_Abort + 0x08006f98 0xe0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + 0x08006f98 HAL_DMA_Abort .text.HAL_DMA_Abort_IT - 0x08006e24 0x44 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o - 0x08006e24 HAL_DMA_Abort_IT + 0x08007078 0x44 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + 0x08007078 HAL_DMA_Abort_IT .text.HAL_DMA_IRQHandler - 0x08006e68 0x314 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o - 0x08006e68 HAL_DMA_IRQHandler + 0x080070bc 0x314 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + 0x080070bc HAL_DMA_IRQHandler .text.DMA_SetConfig - 0x0800717c 0x5c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + 0x080073d0 0x5c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o .text.DMA_CalcBaseAndBitshift - 0x080071d8 0x6c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + 0x0800742c 0x6c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o .text.DMA_CheckFifoParam - 0x08007244 0xf8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + 0x08007498 0xf8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o .text.HAL_GPIO_Init - 0x0800733c 0x488 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - 0x0800733c HAL_GPIO_Init + 0x08007590 0x488 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + 0x08007590 HAL_GPIO_Init .text.HAL_GPIO_ReadPin - 0x080077c4 0x40 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - 0x080077c4 HAL_GPIO_ReadPin + 0x08007a18 0x40 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + 0x08007a18 HAL_GPIO_ReadPin .text.HAL_GPIO_WritePin - 0x08007804 0x58 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - 0x08007804 HAL_GPIO_WritePin + 0x08007a58 0x58 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + 0x08007a58 HAL_GPIO_WritePin .text.HAL_PWR_EnableWakeUpPin - 0x0800785c 0x44 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o - 0x0800785c HAL_PWR_EnableWakeUpPin + 0x08007ab0 0x44 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o + 0x08007ab0 HAL_PWR_EnableWakeUpPin .text.HAL_PWR_DisableWakeUpPin - 0x080078a0 0x44 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o - 0x080078a0 HAL_PWR_DisableWakeUpPin + 0x08007af4 0x44 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o + 0x08007af4 HAL_PWR_DisableWakeUpPin .text.HAL_PWR_EnterSTANDBYMode - 0x080078e4 0x30 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o - 0x080078e4 HAL_PWR_EnterSTANDBYMode + 0x08007b38 0x30 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o + 0x08007b38 HAL_PWR_EnterSTANDBYMode .text.HAL_RCC_ClockConfig - 0x08007914 0x31c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - 0x08007914 HAL_RCC_ClockConfig + 0x08007b68 0x31c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x08007b68 HAL_RCC_ClockConfig .text.HAL_RCC_GetSysClockFreq - 0x08007c30 0x20c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - 0x08007c30 HAL_RCC_GetSysClockFreq + 0x08007e84 0x20c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x08007e84 HAL_RCC_GetSysClockFreq .text.HAL_RCC_GetHCLKFreq - 0x08007e3c 0x18 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - 0x08007e3c HAL_RCC_GetHCLKFreq + 0x08008090 0x18 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x08008090 HAL_RCC_GetHCLKFreq .text.HAL_RCC_GetPCLK1Freq - 0x08007e54 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - 0x08007e54 HAL_RCC_GetPCLK1Freq + 0x080080a8 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x080080a8 HAL_RCC_GetPCLK1Freq .text.HAL_RCC_GetPCLK2Freq - 0x08007e7c 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - 0x08007e7c HAL_RCC_GetPCLK2Freq + 0x080080d0 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x080080d0 HAL_RCC_GetPCLK2Freq .text.HAL_RCC_GetClockConfig - 0x08007ea4 0x64 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - 0x08007ea4 HAL_RCC_GetClockConfig + 0x080080f8 0x64 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x080080f8 HAL_RCC_GetClockConfig .text.HAL_RCC_OscConfig - 0x08007f08 0x690 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o - 0x08007f08 HAL_RCC_OscConfig + 0x0800815c 0x690 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o + 0x0800815c HAL_RCC_OscConfig .text.HAL_SPI_Init - 0x08008598 0x338 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - 0x08008598 HAL_SPI_Init + 0x080087ec 0x338 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + 0x080087ec HAL_SPI_Init .text.HAL_SPI_Transmit - 0x080088d0 0x2a8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - 0x080088d0 HAL_SPI_Transmit + 0x08008b24 0x2a8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + 0x08008b24 HAL_SPI_Transmit .text.SPI_WaitFlagStateUntilTimeout - 0x08008b78 0x110 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + 0x08008dcc 0x110 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .text.SPI_EndRxTxTransaction - 0x08008c88 0xa8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + 0x08008edc 0xa8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .text.HAL_TIM_Base_Init - 0x08008d30 0x230 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x08008d30 HAL_TIM_Base_Init + 0x08008f84 0x230 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08008f84 HAL_TIM_Base_Init .text.HAL_TIM_Base_Start_IT - 0x08008f60 0x18c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x08008f60 HAL_TIM_Base_Start_IT + 0x080091b4 0x18c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x080091b4 HAL_TIM_Base_Start_IT .text.HAL_TIM_PWM_Init - 0x080090ec 0x230 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x080090ec HAL_TIM_PWM_Init + 0x08009340 0x230 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08009340 HAL_TIM_PWM_Init .text.HAL_TIM_PWM_MspInit - 0x0800931c 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x0800931c HAL_TIM_PWM_MspInit + 0x08009570 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08009570 HAL_TIM_PWM_MspInit .text.HAL_TIM_PWM_Start - 0x08009330 0x310 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x08009330 HAL_TIM_PWM_Start + 0x08009584 0x310 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08009584 HAL_TIM_PWM_Start + .text.HAL_TIM_OnePulse_Init + 0x08009894 0x248 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08009894 HAL_TIM_OnePulse_Init + .text.HAL_TIM_OnePulse_MspInit + 0x08009adc 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08009adc HAL_TIM_OnePulse_MspInit + .text.HAL_TIM_OnePulse_Start + 0x08009af0 0xc4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08009af0 HAL_TIM_OnePulse_Start .text.HAL_TIM_IRQHandler - 0x08009640 0x1e0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x08009640 HAL_TIM_IRQHandler + 0x08009bb4 0x1e0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08009bb4 HAL_TIM_IRQHandler .text.HAL_TIM_PWM_ConfigChannel - 0x08009820 0x3b0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x08009820 HAL_TIM_PWM_ConfigChannel + 0x08009d94 0x3b0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08009d94 HAL_TIM_PWM_ConfigChannel .text.HAL_TIM_ConfigClockSource - 0x08009bd0 0x700 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x08009bd0 HAL_TIM_ConfigClockSource + 0x0800a144 0x700 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x0800a144 HAL_TIM_ConfigClockSource .text.HAL_TIM_OC_DelayElapsedCallback - 0x0800a2d0 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x0800a2d0 HAL_TIM_OC_DelayElapsedCallback + 0x0800a844 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x0800a844 HAL_TIM_OC_DelayElapsedCallback .text.HAL_TIM_IC_CaptureCallback - 0x0800a2e4 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x0800a2e4 HAL_TIM_IC_CaptureCallback + 0x0800a858 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x0800a858 HAL_TIM_IC_CaptureCallback .text.HAL_TIM_PWM_PulseFinishedCallback - 0x0800a2f8 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x0800a2f8 HAL_TIM_PWM_PulseFinishedCallback + 0x0800a86c 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x0800a86c HAL_TIM_PWM_PulseFinishedCallback .text.HAL_TIM_TriggerCallback - 0x0800a30c 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x0800a30c HAL_TIM_TriggerCallback + 0x0800a880 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x0800a880 HAL_TIM_TriggerCallback .text.TIM_Base_SetConfig - 0x0800a320 0x158 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x0800a320 TIM_Base_SetConfig + 0x0800a894 0x158 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x0800a894 TIM_Base_SetConfig .text.TIM_OC1_SetConfig - 0x0800a478 0x134 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x0800a9ec 0x134 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o .text.TIM_OC2_SetConfig - 0x0800a5ac 0x13c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x0800a5ac TIM_OC2_SetConfig + 0x0800ab20 0x13c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x0800ab20 TIM_OC2_SetConfig .text.TIM_OC3_SetConfig - 0x0800a6e8 0x13c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x0800ac5c 0x13c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o .text.TIM_OC4_SetConfig - 0x0800a824 0xc8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x0800ad98 0xc8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o .text.TIM_TI1_ConfigInputStage - 0x0800a8ec 0x5e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x0800ae60 0x5e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o .text.TIM_TI2_ConfigInputStage - 0x0800a94a 0x60 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x0800aebe 0x60 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o .text.TIM_ITRx_SetConfig - 0x0800a9aa 0x36 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x0800af1e 0x36 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o .text.TIM_ETR_SetConfig - 0x0800a9e0 0x40 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x0800a9e0 TIM_ETR_SetConfig + 0x0800af54 0x40 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x0800af54 TIM_ETR_SetConfig .text.TIM_CCxChannelCmd - 0x0800aa20 0x108 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x0800aa20 TIM_CCxChannelCmd + 0x0800af94 0x108 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x0800af94 TIM_CCxChannelCmd .text.HAL_TIMEx_MasterConfigSynchronization - 0x0800ab28 0x1bc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - 0x0800ab28 HAL_TIMEx_MasterConfigSynchronization + 0x0800b09c 0x1bc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + 0x0800b09c HAL_TIMEx_MasterConfigSynchronization .text.HAL_TIMEx_ConfigBreakDeadTime - 0x0800ace4 0x198 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - 0x0800ace4 HAL_TIMEx_ConfigBreakDeadTime + 0x0800b258 0x198 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + 0x0800b258 HAL_TIMEx_ConfigBreakDeadTime .text.HAL_TIMEx_CommutCallback - 0x0800ae7c 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - 0x0800ae7c HAL_TIMEx_CommutCallback + 0x0800b3f0 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + 0x0800b3f0 HAL_TIMEx_CommutCallback .text.HAL_TIMEx_BreakCallback - 0x0800ae90 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - 0x0800ae90 HAL_TIMEx_BreakCallback + 0x0800b404 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + 0x0800b404 HAL_TIMEx_BreakCallback .text.HAL_UART_Init - 0x0800aea4 0x1e0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - 0x0800aea4 HAL_UART_Init + 0x0800b418 0x1e0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x0800b418 HAL_UART_Init .text.HAL_UART_Transmit_DMA - 0x0800b084 0xe0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - 0x0800b084 HAL_UART_Transmit_DMA + 0x0800b5f8 0xe0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x0800b5f8 HAL_UART_Transmit_DMA .text.HAL_UART_Receive_DMA - 0x0800b164 0x4a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - 0x0800b164 HAL_UART_Receive_DMA - *fill* 0x0800b1ae 0x2 + 0x0800b6d8 0x4a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x0800b6d8 HAL_UART_Receive_DMA + *fill* 0x0800b722 0x2 .text.HAL_UART_IRQHandler - 0x0800b1b0 0x524 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - 0x0800b1b0 HAL_UART_IRQHandler + 0x0800b724 0x524 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x0800b724 HAL_UART_IRQHandler .text.HAL_UART_TxCpltCallback - 0x0800b6d4 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - 0x0800b6d4 HAL_UART_TxCpltCallback + 0x0800bc48 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x0800bc48 HAL_UART_TxCpltCallback .text.HAL_UART_TxHalfCpltCallback - 0x0800b6e8 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - 0x0800b6e8 HAL_UART_TxHalfCpltCallback + 0x0800bc5c 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x0800bc5c HAL_UART_TxHalfCpltCallback .text.HAL_UART_RxCpltCallback - 0x0800b6fc 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - 0x0800b6fc HAL_UART_RxCpltCallback + 0x0800bc70 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x0800bc70 HAL_UART_RxCpltCallback .text.HAL_UART_RxHalfCpltCallback - 0x0800b710 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - 0x0800b710 HAL_UART_RxHalfCpltCallback + 0x0800bc84 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x0800bc84 HAL_UART_RxHalfCpltCallback .text.HAL_UART_ErrorCallback - 0x0800b724 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - 0x0800b724 HAL_UART_ErrorCallback + 0x0800bc98 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x0800bc98 HAL_UART_ErrorCallback .text.HAL_UARTEx_RxEventCallback - 0x0800b738 0x18 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - 0x0800b738 HAL_UARTEx_RxEventCallback + 0x0800bcac 0x18 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x0800bcac HAL_UARTEx_RxEventCallback .text.UART_DMATransmitCplt - 0x0800b750 0x9a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x0800bcc4 0x9a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o .text.UART_DMATxHalfCplt - 0x0800b7ea 0x1c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x0800bd5e 0x1c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o .text.UART_DMAReceiveCplt - 0x0800b806 0x12c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x0800bd7a 0x12c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o .text.UART_DMARxHalfCplt - 0x0800b932 0x3c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x0800bea6 0x3c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o .text.UART_DMAError - 0x0800b96e 0x94 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - *fill* 0x0800ba02 0x2 + 0x0800bee2 0x94 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + *fill* 0x0800bf76 0x2 .text.UART_Start_Receive_DMA - 0x0800ba04 0x134 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - 0x0800ba04 UART_Start_Receive_DMA + 0x0800bf78 0x134 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x0800bf78 UART_Start_Receive_DMA .text.UART_EndTxTransfer - 0x0800bb38 0x50 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x0800c0ac 0x50 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o .text.UART_EndRxTransfer - 0x0800bb88 0xc6 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x0800c0fc 0xc6 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o .text.UART_DMAAbortOnError - 0x0800bc4e 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x0800c1c2 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o .text.UART_Transmit_IT - 0x0800bc76 0xa0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x0800c1ea 0xa0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o .text.UART_EndTransmit_IT - 0x0800bd16 0x30 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x0800c28a 0x30 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o .text.UART_Receive_IT - 0x0800bd46 0x17c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - *fill* 0x0800bec2 0x2 + 0x0800c2ba 0x17c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + *fill* 0x0800c436 0x2 .text.UART_SetConfig - 0x0800bec4 0x594 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x0800c438 0x594 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o .text.makeFreeRtosPriority - 0x0800c458 0x30 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + 0x0800c9cc 0x30 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o .text.osKernelStart - 0x0800c488 0xe ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o - 0x0800c488 osKernelStart + 0x0800c9fc 0xe ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + 0x0800c9fc osKernelStart .text.osThreadCreate - 0x0800c496 0x98 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o - 0x0800c496 osThreadCreate - .text.osDelay 0x0800c52e 0x28 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o - 0x0800c52e osDelay + 0x0800ca0a 0x98 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + 0x0800ca0a osThreadCreate + .text.osDelay 0x0800caa2 0x28 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + 0x0800caa2 osDelay .text.vListInitialise - 0x0800c556 0x40 ./Middlewares/Third_Party/FreeRTOS/Source/list.o - 0x0800c556 vListInitialise + 0x0800caca 0x40 ./Middlewares/Third_Party/FreeRTOS/Source/list.o + 0x0800caca vListInitialise .text.vListInitialiseItem - 0x0800c596 0x1a ./Middlewares/Third_Party/FreeRTOS/Source/list.o - 0x0800c596 vListInitialiseItem + 0x0800cb0a 0x1a ./Middlewares/Third_Party/FreeRTOS/Source/list.o + 0x0800cb0a vListInitialiseItem .text.vListInsertEnd - 0x0800c5b0 0x48 ./Middlewares/Third_Party/FreeRTOS/Source/list.o - 0x0800c5b0 vListInsertEnd + 0x0800cb24 0x48 ./Middlewares/Third_Party/FreeRTOS/Source/list.o + 0x0800cb24 vListInsertEnd .text.vListInsert - 0x0800c5f8 0x72 ./Middlewares/Third_Party/FreeRTOS/Source/list.o - 0x0800c5f8 vListInsert + 0x0800cb6c 0x72 ./Middlewares/Third_Party/FreeRTOS/Source/list.o + 0x0800cb6c vListInsert .text.uxListRemove - 0x0800c66a 0x54 ./Middlewares/Third_Party/FreeRTOS/Source/list.o - 0x0800c66a uxListRemove + 0x0800cbde 0x54 ./Middlewares/Third_Party/FreeRTOS/Source/list.o + 0x0800cbde uxListRemove .text.xTaskCreateStatic - 0x0800c6be 0xc0 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x0800c6be xTaskCreateStatic + 0x0800cc32 0xc0 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x0800cc32 xTaskCreateStatic .text.xTaskCreate - 0x0800c77e 0x8a ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x0800c77e xTaskCreate + 0x0800ccf2 0x8a ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x0800ccf2 xTaskCreate .text.prvInitialiseNewTask - 0x0800c808 0x140 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x0800cd7c 0x140 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .text.prvAddNewTaskToReadyList - 0x0800c948 0xd4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x0800cebc 0xd4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .text.vTaskDelay - 0x0800ca1c 0x6c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x0800ca1c vTaskDelay + 0x0800cf90 0x6c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x0800cf90 vTaskDelay .text.vTaskStartScheduler - 0x0800ca88 0xd4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x0800ca88 vTaskStartScheduler + 0x0800cffc 0xd4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x0800cffc vTaskStartScheduler .text.vTaskSuspendAll - 0x0800cb5c 0x1c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x0800cb5c vTaskSuspendAll + 0x0800d0d0 0x1c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x0800d0d0 vTaskSuspendAll .text.xTaskResumeAll - 0x0800cb78 0x13c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x0800cb78 xTaskResumeAll + 0x0800d0ec 0x13c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x0800d0ec xTaskResumeAll .text.xTaskIncrementTick - 0x0800ccb4 0x174 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x0800ccb4 xTaskIncrementTick + 0x0800d228 0x174 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x0800d228 xTaskIncrementTick .text.vTaskSwitchContext - 0x0800ce28 0xc8 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x0800ce28 vTaskSwitchContext + 0x0800d39c 0xc8 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x0800d39c vTaskSwitchContext .text.prvIdleTask - 0x0800cef0 0x30 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x0800d464 0x30 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .text.prvInitialiseTaskLists - 0x0800cf20 0x80 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x0800d494 0x80 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .text.prvCheckTasksWaitingTermination - 0x0800cfa0 0x5c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x0800d514 0x5c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .text.prvDeleteTCB - 0x0800cffc 0x6a ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - *fill* 0x0800d066 0x2 + 0x0800d570 0x6a ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + *fill* 0x0800d5da 0x2 .text.prvResetNextTaskUnblockTime - 0x0800d068 0x40 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x0800d5dc 0x40 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .text.prvAddCurrentTaskToDelayedList - 0x0800d0a8 0xcc ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x0800d61c 0xcc ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .text.pxPortInitialiseStack - 0x0800d174 0x68 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - 0x0800d174 pxPortInitialiseStack + 0x0800d6e8 0x68 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x0800d6e8 pxPortInitialiseStack .text.prvTaskExitError - 0x0800d1dc 0x5c ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - *fill* 0x0800d238 0x8 + 0x0800d750 0x5c ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + *fill* 0x0800d7ac 0x4 .text.SVC_Handler - 0x0800d240 0x28 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - 0x0800d240 SVC_Handler + 0x0800d7b0 0x28 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x0800d7b0 SVC_Handler .text.prvPortStartFirstTask - 0x0800d268 0x28 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x0800d7d8 0x28 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o .text.xPortStartScheduler - 0x0800d290 0x148 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - 0x0800d290 xPortStartScheduler + 0x0800d800 0x148 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x0800d800 xPortStartScheduler .text.vPortEnterCritical - 0x0800d3d8 0x64 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - 0x0800d3d8 vPortEnterCritical + 0x0800d948 0x64 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x0800d948 vPortEnterCritical .text.vPortExitCritical - 0x0800d43c 0x54 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - 0x0800d43c vPortExitCritical + 0x0800d9ac 0x54 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x0800d9ac vPortExitCritical .text.PendSV_Handler - 0x0800d490 0x68 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - 0x0800d490 PendSV_Handler + 0x0800da00 0x68 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x0800da00 PendSV_Handler .text.SysTick_Handler - 0x0800d4f8 0x44 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - 0x0800d4f8 SysTick_Handler + 0x0800da68 0x44 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x0800da68 SysTick_Handler .text.vPortSetupTimerInterrupt - 0x0800d53c 0x48 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - 0x0800d53c vPortSetupTimerInterrupt + 0x0800daac 0x48 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x0800daac vPortSetupTimerInterrupt .text.vPortEnableVFP - 0x0800d584 0x14 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x0800daf4 0x14 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o .text.pvPortMalloc - 0x0800d598 0x19c ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o - 0x0800d598 pvPortMalloc + 0x0800db08 0x19c ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o + 0x0800db08 pvPortMalloc .text.vPortFree - 0x0800d734 0xc8 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o - 0x0800d734 vPortFree + 0x0800dca4 0xc8 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o + 0x0800dca4 vPortFree .text.prvHeapInit - 0x0800d7fc 0xc4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o + 0x0800dd6c 0xc4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o .text.prvInsertBlockIntoFreeList - 0x0800d8c0 0xb4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o + 0x0800de30 0xb4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o .text._vsprintf_r - 0x0800d974 0x2c C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-vsprintf.o) - 0x0800d974 _vsprintf_r - 0x0800d974 _vsiprintf_r + 0x0800dee4 0x2c C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-vsprintf.o) + 0x0800dee4 _vsprintf_r + 0x0800dee4 _vsiprintf_r .text.vsprintf - 0x0800d9a0 0x14 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-vsprintf.o) - 0x0800d9a0 vsiprintf - 0x0800d9a0 vsprintf - .text.memset 0x0800d9b4 0x10 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-memset.o) - 0x0800d9b4 memset + 0x0800df10 0x14 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-vsprintf.o) + 0x0800df10 vsiprintf + 0x0800df10 vsprintf + .text.memset 0x0800df24 0x10 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-memset.o) + 0x0800df24 memset .text._reclaim_reent - 0x0800d9c4 0xac C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-reent.o) - 0x0800d9c4 _reclaim_reent - .text.__errno 0x0800da70 0xc C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-errno.o) - 0x0800da70 __errno + 0x0800df34 0xac C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-reent.o) + 0x0800df34 _reclaim_reent + .text.__errno 0x0800dfe0 0xc C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-errno.o) + 0x0800dfe0 __errno .text.__libc_init_array - 0x0800da7c 0x48 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-init.o) - 0x0800da7c __libc_init_array + 0x0800dfec 0x48 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-init.o) + 0x0800dfec __libc_init_array .text.__retarget_lock_acquire_recursive - 0x0800dac4 0x2 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-lock.o) - 0x0800dac4 __retarget_lock_acquire_recursive + 0x0800e034 0x2 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-lock.o) + 0x0800e034 __retarget_lock_acquire_recursive .text.__retarget_lock_release_recursive - 0x0800dac6 0x2 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-lock.o) - 0x0800dac6 __retarget_lock_release_recursive - .text.memcpy 0x0800dac8 0x1c C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-memcpy-stub.o) - 0x0800dac8 memcpy - .text._free_r 0x0800dae4 0x94 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-freer.o) - 0x0800dae4 _free_r + 0x0800e036 0x2 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-lock.o) + 0x0800e036 __retarget_lock_release_recursive + .text.memcpy 0x0800e038 0x1c C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-memcpy-stub.o) + 0x0800e038 memcpy + .text._free_r 0x0800e054 0x94 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-freer.o) + 0x0800e054 _free_r .text.sbrk_aligned - 0x0800db78 0x44 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-mallocr.o) + 0x0800e0e8 0x44 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-mallocr.o) .text._malloc_r - 0x0800dbbc 0x100 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-mallocr.o) - 0x0800dbbc _malloc_r + 0x0800e12c 0x100 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-mallocr.o) + 0x0800e12c _malloc_r .text.__malloc_lock - 0x0800dcbc 0xc C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-mlock.o) - 0x0800dcbc __malloc_lock + 0x0800e22c 0xc C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-mlock.o) + 0x0800e22c __malloc_lock .text.__malloc_unlock - 0x0800dcc8 0xc C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-mlock.o) - 0x0800dcc8 __malloc_unlock + 0x0800e238 0xc C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-mlock.o) + 0x0800e238 __malloc_unlock .text.__ssputs_r - 0x0800dcd4 0xb6 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-nano-svfprintf.o) - 0x0800dcd4 __ssputs_r - *fill* 0x0800dd8a 0x2 + 0x0800e244 0xb6 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-nano-svfprintf.o) + 0x0800e244 __ssputs_r + *fill* 0x0800e2fa 0x2 .text._svfprintf_r - 0x0800dd8c 0x1f8 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-nano-svfprintf.o) - 0x0800dd8c _svfiprintf_r - 0x0800dd8c _svfprintf_r + 0x0800e2fc 0x1f8 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-nano-svfprintf.o) + 0x0800e2fc _svfiprintf_r + 0x0800e2fc _svfprintf_r .text._printf_common - 0x0800df84 0xda C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-nano-vfprintf_i.o) - 0x0800df84 _printf_common - *fill* 0x0800e05e 0x2 + 0x0800e4f4 0xda C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-nano-vfprintf_i.o) + 0x0800e4f4 _printf_common + *fill* 0x0800e5ce 0x2 .text._printf_i - 0x0800e060 0x240 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-nano-vfprintf_i.o) - 0x0800e060 _printf_i - .text.memmove 0x0800e2a0 0x34 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-memmove.o) - 0x0800e2a0 memmove - .text._sbrk_r 0x0800e2d4 0x20 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-sbrkr.o) - 0x0800e2d4 _sbrk_r + 0x0800e5d0 0x240 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-nano-vfprintf_i.o) + 0x0800e5d0 _printf_i + .text.memmove 0x0800e810 0x34 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-memmove.o) + 0x0800e810 memmove + .text._sbrk_r 0x0800e844 0x20 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-sbrkr.o) + 0x0800e844 _sbrk_r .text._realloc_r - 0x0800e2f4 0x5c C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-reallocr.o) - 0x0800e2f4 _realloc_r + 0x0800e864 0x5c C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-reallocr.o) + 0x0800e864 _realloc_r .text._malloc_usable_size_r - 0x0800e350 0x10 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-msizer.o) - 0x0800e350 _malloc_usable_size_r - .text.sqrt 0x0800e360 0x58 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libm.a(libm_a-w_sqrt.o) - 0x0800e360 sqrt + 0x0800e8c0 0x10 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-msizer.o) + 0x0800e8c0 _malloc_usable_size_r + .text.sqrt 0x0800e8d0 0x58 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libm.a(libm_a-w_sqrt.o) + 0x0800e8d0 sqrt .text.__ieee754_sqrt - 0x0800e3b8 0x1b4 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libm.a(libm_a-e_sqrt.o) - 0x0800e3b8 __ieee754_sqrt + 0x0800e928 0x1b4 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libm.a(libm_a-e_sqrt.o) + 0x0800e928 __ieee754_sqrt *(.glue_7) - .glue_7 0x0800e56c 0x0 linker stubs + .glue_7 0x0800eadc 0x0 linker stubs *(.glue_7t) - .glue_7t 0x0800e56c 0x0 linker stubs + .glue_7t 0x0800eadc 0x0 linker stubs *(.eh_frame) - .eh_frame 0x0800e56c 0x0 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o + .eh_frame 0x0800eadc 0x0 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o *(.init) - .init 0x0800e56c 0x4 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crti.o - 0x0800e56c _init - .init 0x0800e570 0x8 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtn.o + .init 0x0800eadc 0x4 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crti.o + 0x0800eadc _init + .init 0x0800eae0 0x8 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtn.o *(.fini) - .fini 0x0800e578 0x4 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crti.o - 0x0800e578 _fini - .fini 0x0800e57c 0x8 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtn.o - 0x0800e584 . = ALIGN (0x4) - 0x0800e584 _etext = . + .fini 0x0800eae8 0x4 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crti.o + 0x0800eae8 _fini + .fini 0x0800eaec 0x8 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtn.o + 0x0800eaf4 . = ALIGN (0x4) + 0x0800eaf4 _etext = . -.vfp11_veneer 0x0800e584 0x0 - .vfp11_veneer 0x0800e584 0x0 linker stubs +.vfp11_veneer 0x0800eaf4 0x0 + .vfp11_veneer 0x0800eaf4 0x0 linker stubs -.v4_bx 0x0800e584 0x0 - .v4_bx 0x0800e584 0x0 linker stubs +.v4_bx 0x0800eaf4 0x0 + .v4_bx 0x0800eaf4 0x0 linker stubs -.iplt 0x0800e584 0x0 - .iplt 0x0800e584 0x0 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o +.iplt 0x0800eaf4 0x0 + .iplt 0x0800eaf4 0x0 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o -.rodata 0x0800e584 0x490 - 0x0800e584 . = ALIGN (0x4) +.rodata 0x0800eaf4 0x490 + 0x0800eaf4 . = ALIGN (0x4) *(.rodata) - .rodata 0x0800e584 0xa0 ./Core/Src/filter.o - .rodata 0x0800e624 0xc8 ./Core/Src/freertos.o - .rodata 0x0800e6ec 0x4f ./Core/Src/usart.o - *fill* 0x0800e73b 0x1 - .rodata 0x0800e73c 0x38 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o - .rodata 0x0800e774 0x3b ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - *fill* 0x0800e7af 0x1 - .rodata 0x0800e7b0 0x38 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o - .rodata 0x0800e7e8 0x39 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - *fill* 0x0800e821 0x3 - .rodata 0x0800e824 0x38 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o - .rodata 0x0800e85c 0x38 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - .rodata 0x0800e894 0x3b ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o - *fill* 0x0800e8cf 0x1 - .rodata 0x0800e8d0 0x38 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .rodata 0x0800e908 0x38 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - .rodata 0x0800e940 0x3b ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - *fill* 0x0800e97b 0x1 - .rodata 0x0800e97c 0x39 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - *fill* 0x0800e9b5 0x3 - .rodata 0x0800e9b8 0x5 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .rodata 0x0800eaf4 0xa0 ./Core/Src/filter.o + .rodata 0x0800eb94 0xc8 ./Core/Src/freertos.o + .rodata 0x0800ec5c 0x4f ./Core/Src/usart.o + *fill* 0x0800ecab 0x1 + .rodata 0x0800ecac 0x38 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o + .rodata 0x0800ece4 0x3b ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + *fill* 0x0800ed1f 0x1 + .rodata 0x0800ed20 0x38 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + .rodata 0x0800ed58 0x39 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + *fill* 0x0800ed91 0x3 + .rodata 0x0800ed94 0x38 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o + .rodata 0x0800edcc 0x38 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + .rodata 0x0800ee04 0x3b ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o + *fill* 0x0800ee3f 0x1 + .rodata 0x0800ee40 0x38 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .rodata 0x0800ee78 0x38 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + .rodata 0x0800eeb0 0x3b ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + *fill* 0x0800eeeb 0x1 + .rodata 0x0800eeec 0x39 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + *fill* 0x0800ef25 0x3 + .rodata 0x0800ef28 0x5 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o *(.rodata*) - *fill* 0x0800e9bd 0x3 + *fill* 0x0800ef2d 0x3 .rodata.AHBPrescTable - 0x0800e9c0 0x10 ./Core/Src/system_stm32f4xx.o - 0x0800e9c0 AHBPrescTable + 0x0800ef30 0x10 ./Core/Src/system_stm32f4xx.o + 0x0800ef30 AHBPrescTable .rodata.APBPrescTable - 0x0800e9d0 0x8 ./Core/Src/system_stm32f4xx.o - 0x0800e9d0 APBPrescTable + 0x0800ef40 0x8 ./Core/Src/system_stm32f4xx.o + 0x0800ef40 APBPrescTable .rodata.flagBitshiftOffset.0 - 0x0800e9d8 0x8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + 0x0800ef48 0x8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o .rodata._svfprintf_r.str1.1 - 0x0800e9e0 0x11 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-nano-svfprintf.o) + 0x0800ef50 0x11 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-nano-svfprintf.o) .rodata._printf_i.str1.1 - 0x0800e9f1 0x22 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-nano-vfprintf_i.o) - 0x0800ea14 . = ALIGN (0x4) - *fill* 0x0800ea13 0x1 + 0x0800ef61 0x22 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-nano-vfprintf_i.o) + 0x0800ef84 . = ALIGN (0x4) + *fill* 0x0800ef83 0x1 -.ARM.extab 0x0800ea14 0x0 - 0x0800ea14 . = ALIGN (0x4) +.ARM.extab 0x0800ef84 0x0 + 0x0800ef84 . = ALIGN (0x4) *(.ARM.extab* .gnu.linkonce.armextab.*) - 0x0800ea14 . = ALIGN (0x4) + 0x0800ef84 . = ALIGN (0x4) -.ARM 0x0800ea14 0x8 - 0x0800ea14 . = ALIGN (0x4) - 0x0800ea14 __exidx_start = . +.ARM 0x0800ef84 0x8 + 0x0800ef84 . = ALIGN (0x4) + 0x0800ef84 __exidx_start = . *(.ARM.exidx*) - .ARM.exidx 0x0800ea14 0x8 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-strlen.o) - .ARM.exidx 0x0800ea1c 0x0 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-memchr.o) + .ARM.exidx 0x0800ef84 0x8 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-strlen.o) + .ARM.exidx 0x0800ef8c 0x0 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-memchr.o) 0x8 (size before relaxing) - .ARM.exidx 0x0800ea1c 0x0 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard\libgcc.a(_udivmoddi4.o) + .ARM.exidx 0x0800ef8c 0x0 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard\libgcc.a(_udivmoddi4.o) 0x8 (size before relaxing) - 0x0800ea1c __exidx_end = . - 0x0800ea1c . = ALIGN (0x4) + 0x0800ef8c __exidx_end = . + 0x0800ef8c . = ALIGN (0x4) -.preinit_array 0x0800ea1c 0x0 - 0x0800ea1c . = ALIGN (0x4) - 0x0800ea1c PROVIDE (__preinit_array_start = .) +.preinit_array 0x0800ef8c 0x0 + 0x0800ef8c . = ALIGN (0x4) + 0x0800ef8c PROVIDE (__preinit_array_start = .) *(.preinit_array*) - 0x0800ea1c PROVIDE (__preinit_array_end = .) - 0x0800ea1c . = ALIGN (0x4) + 0x0800ef8c PROVIDE (__preinit_array_end = .) + 0x0800ef8c . = ALIGN (0x4) -.init_array 0x0800ea1c 0x4 - 0x0800ea1c . = ALIGN (0x4) - 0x0800ea1c PROVIDE (__init_array_start = .) +.init_array 0x0800ef8c 0x4 + 0x0800ef8c . = ALIGN (0x4) + 0x0800ef8c PROVIDE (__init_array_start = .) *(SORT_BY_NAME(.init_array.*)) *(.init_array*) - .init_array 0x0800ea1c 0x4 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o - 0x0800ea20 PROVIDE (__init_array_end = .) - 0x0800ea20 . = ALIGN (0x4) + .init_array 0x0800ef8c 0x4 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o + 0x0800ef90 PROVIDE (__init_array_end = .) + 0x0800ef90 . = ALIGN (0x4) -.fini_array 0x0800ea20 0x4 - 0x0800ea20 . = ALIGN (0x4) +.fini_array 0x0800ef90 0x4 + 0x0800ef90 . = ALIGN (0x4) [!provide] PROVIDE (__fini_array_start = .) *(SORT_BY_NAME(.fini_array.*)) *(.fini_array*) - .fini_array 0x0800ea20 0x4 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o + .fini_array 0x0800ef90 0x4 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o [!provide] PROVIDE (__fini_array_end = .) - 0x0800ea24 . = ALIGN (0x4) - 0x0800ea24 _sidata = LOADADDR (.data) + 0x0800ef94 . = ALIGN (0x4) + 0x0800ef94 _sidata = LOADADDR (.data) -.rel.dyn 0x0800ea24 0x0 - .rel.iplt 0x0800ea24 0x0 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o +.rel.dyn 0x0800ef94 0x0 + .rel.iplt 0x0800ef94 0x0 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o -.data 0x20000000 0x70 load address 0x0800ea24 +.data 0x20000000 0x70 load address 0x0800ef94 0x20000000 . = ALIGN (0x4) 0x20000000 _sdata = . *(.data) @@ -7213,11 +7220,11 @@ LOAD C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext 0x20000070 . = ALIGN (0x4) 0x20000070 _edata = . -.igot.plt 0x20000070 0x0 load address 0x0800ea94 +.igot.plt 0x20000070 0x0 load address 0x0800f004 .igot.plt 0x20000070 0x0 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o 0x20000070 . = ALIGN (0x4) -.bss 0x20000070 0x11148 load address 0x0800ea94 +.bss 0x20000070 0x11190 load address 0x0800f004 0x20000070 _sbss = . 0x20000070 __bss_start__ = _sbss *(.bss) @@ -7310,115 +7317,117 @@ LOAD C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext 0x200021ac htim6 .bss.htim9 0x200021f4 0x48 ./Core/Src/tim.o 0x200021f4 htim9 - .bss.htim14 0x2000223c 0x48 ./Core/Src/tim.o - 0x2000223c htim14 - .bss.TX_BUF 0x20002284 0x21 ./Core/Src/usart.o - 0x20002284 TX_BUF - *fill* 0x200022a5 0x3 - .bss.huart1 0x200022a8 0x48 ./Core/Src/usart.o - 0x200022a8 huart1 + .bss.htim11 0x2000223c 0x48 ./Core/Src/tim.o + 0x2000223c htim11 + .bss.htim14 0x20002284 0x48 ./Core/Src/tim.o + 0x20002284 htim14 + .bss.TX_BUF 0x200022cc 0x21 ./Core/Src/usart.o + 0x200022cc TX_BUF + *fill* 0x200022ed 0x3 + .bss.huart1 0x200022f0 0x48 ./Core/Src/usart.o + 0x200022f0 huart1 .bss.hdma_usart1_tx - 0x200022f0 0x60 ./Core/Src/usart.o - 0x200022f0 hdma_usart1_tx + 0x20002338 0x60 ./Core/Src/usart.o + 0x20002338 hdma_usart1_tx .bss.hdma_usart1_rx - 0x20002350 0x60 ./Core/Src/usart.o - 0x20002350 hdma_usart1_rx - .bss.tbuff.2 0x200023b0 0x100 ./Core/Src/usart.o - .bss.res.1 0x200024b0 0x1 ./Core/Src/usart.o - *fill* 0x200024b1 0x3 - .bss.bytes.0 0x200024b4 0x4 ./Core/Src/usart.o - .bss.uwTick 0x200024b8 0x4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - 0x200024b8 uwTick + 0x20002398 0x60 ./Core/Src/usart.o + 0x20002398 hdma_usart1_rx + .bss.tbuff.2 0x200023f8 0x100 ./Core/Src/usart.o + .bss.res.1 0x200024f8 0x1 ./Core/Src/usart.o + *fill* 0x200024f9 0x3 + .bss.bytes.0 0x200024fc 0x4 ./Core/Src/usart.o + .bss.uwTick 0x20002500 0x4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x20002500 uwTick .bss.pxCurrentTCB - 0x200024bc 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x200024bc pxCurrentTCB + 0x20002504 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x20002504 pxCurrentTCB .bss.pxReadyTasksLists - 0x200024c0 0x8c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x20002508 0x8c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .bss.xDelayedTaskList1 - 0x2000254c 0x14 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x20002594 0x14 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .bss.xDelayedTaskList2 - 0x20002560 0x14 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.pxDelayedTaskList - 0x20002574 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.pxOverflowDelayedTaskList - 0x20002578 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.xPendingReadyList - 0x2000257c 0x14 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.xTasksWaitingTermination - 0x20002590 0x14 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.uxDeletedTasksWaitingCleanUp - 0x200025a4 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.xSuspendedTaskList 0x200025a8 0x14 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.uxCurrentNumberOfTasks + .bss.pxDelayedTaskList 0x200025bc 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.xTickCount + .bss.pxOverflowDelayedTaskList 0x200025c0 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .bss.xPendingReadyList + 0x200025c4 0x14 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .bss.xTasksWaitingTermination + 0x200025d8 0x14 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .bss.uxDeletedTasksWaitingCleanUp + 0x200025ec 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .bss.xSuspendedTaskList + 0x200025f0 0x14 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .bss.uxCurrentNumberOfTasks + 0x20002604 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .bss.xTickCount + 0x20002608 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .bss.uxTopReadyPriority - 0x200025c4 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x2000260c 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .bss.xSchedulerRunning - 0x200025c8 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x20002610 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .bss.xPendedTicks - 0x200025cc 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x20002614 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .bss.xYieldPending - 0x200025d0 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x20002618 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .bss.xNumOfOverflows - 0x200025d4 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x2000261c 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .bss.uxTaskNumber - 0x200025d8 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x20002620 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .bss.xNextTaskUnblockTime - 0x200025dc 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x20002624 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .bss.xIdleTaskHandle - 0x200025e0 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x20002628 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .bss.uxSchedulerSuspended - 0x200025e4 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x2000262c 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .bss.ucMaxSysCallPriority - 0x200025e8 0x1 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - *fill* 0x200025e9 0x3 + 0x20002630 0x1 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + *fill* 0x20002631 0x3 .bss.ulMaxPRIGROUPValue - 0x200025ec 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - .bss.ucHeap 0x200025f0 0xea60 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o - .bss.xStart 0x20011050 0x8 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o - .bss.pxEnd 0x20011058 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o + 0x20002634 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + .bss.ucHeap 0x20002638 0xea60 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o + .bss.xStart 0x20011098 0x8 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o + .bss.pxEnd 0x200110a0 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o .bss.xFreeBytesRemaining - 0x2001105c 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o + 0x200110a4 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o .bss.xMinimumEverFreeBytesRemaining - 0x20011060 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o + 0x200110a8 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o .bss.xNumberOfSuccessfulAllocations - 0x20011064 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o + 0x200110ac 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o .bss.xNumberOfSuccessfulFrees - 0x20011068 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o + 0x200110b0 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o .bss.xBlockAllocatedBit - 0x2001106c 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o - .bss.__sf 0x20011070 0x138 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-findfp.o) - 0x20011070 __sf - .bss.errno 0x200111a8 0x4 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-reent.o) - 0x200111a8 errno + 0x200110b4 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o + .bss.__sf 0x200110b8 0x138 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-findfp.o) + 0x200110b8 __sf + .bss.errno 0x200111f0 0x4 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-reent.o) + 0x200111f0 errno .bss.__lock___malloc_recursive_mutex - 0x200111ac 0x1 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-lock.o) - 0x200111ac __lock___malloc_recursive_mutex - *fill* 0x200111ad 0x3 + 0x200111f4 0x1 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-lock.o) + 0x200111f4 __lock___malloc_recursive_mutex + *fill* 0x200111f5 0x3 .bss.__malloc_sbrk_start - 0x200111b0 0x4 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-mallocr.o) - 0x200111b0 __malloc_sbrk_start + 0x200111f8 0x4 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-mallocr.o) + 0x200111f8 __malloc_sbrk_start .bss.__malloc_free_list - 0x200111b4 0x4 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-mallocr.o) - 0x200111b4 __malloc_free_list + 0x200111fc 0x4 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-mallocr.o) + 0x200111fc __malloc_free_list *(COMMON) - 0x200111b8 . = ALIGN (0x4) - 0x200111b8 _ebss = . - 0x200111b8 __bss_end__ = _ebss + 0x20011200 . = ALIGN (0x4) + 0x20011200 _ebss = . + 0x20011200 __bss_end__ = _ebss ._user_heap_stack - 0x200111b8 0x1e00 load address 0x0800ea94 - 0x200111b8 . = ALIGN (0x8) + 0x20011200 0x1e00 load address 0x0800f004 + 0x20011200 . = ALIGN (0x8) [!provide] PROVIDE (end = .) - 0x200111b8 PROVIDE (_end = .) - 0x200120b8 . = (. + _Min_Heap_Size) - *fill* 0x200111b8 0xf00 - 0x20012fb8 . = (. + _Min_Stack_Size) - *fill* 0x200120b8 0xf00 - 0x20012fb8 . = ALIGN (0x8) + 0x20011200 PROVIDE (_end = .) + 0x20012100 . = (. + _Min_Heap_Size) + *fill* 0x20011200 0xf00 + 0x20013000 . = (. + _Min_Stack_Size) + *fill* 0x20012100 0xf00 + 0x20013000 . = ALIGN (0x8) /DISCARD/ libc.a(*) @@ -7574,7 +7583,7 @@ LOAD C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext LOAD C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libm.a LOAD C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard\libgcc.a -.debug_info 0x00000000 0x1f496 +.debug_info 0x00000000 0x1fab7 .debug_info 0x00000000 0xb9b ./Core/Src/adc.o .debug_info 0x00000b9b 0x3cd ./Core/Src/control.o .debug_info 0x00000f68 0xe3 ./Core/Src/delay.o @@ -7582,37 +7591,37 @@ LOAD C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext .debug_info 0x00001576 0x286 ./Core/Src/filter.o .debug_info 0x000017fc 0x1daf ./Core/Src/freertos.o .debug_info 0x000035ab 0x471 ./Core/Src/gpio.o - .debug_info 0x00003a1c 0x12ba ./Core/Src/icd.o - .debug_info 0x00004cd6 0xfd8 ./Core/Src/main.o - .debug_info 0x00005cae 0xfe8 ./Core/Src/parse.o - .debug_info 0x00006c96 0xa9a ./Core/Src/spi.o - .debug_info 0x00007730 0x535 ./Core/Src/stm32f4xx_hal_msp.o - .debug_info 0x00007c65 0xc74 ./Core/Src/stm32f4xx_hal_timebase_tim.o - .debug_info 0x000088d9 0x1333 ./Core/Src/stm32f4xx_it.o - .debug_info 0x00009c0c 0x168 ./Core/Src/sysmem.o - .debug_info 0x00009d74 0x54a ./Core/Src/system_stm32f4xx.o - .debug_info 0x0000a2be 0x1268 ./Core/Src/tim.o - .debug_info 0x0000b526 0x1853 ./Core/Src/usart.o - .debug_info 0x0000cd79 0x30 ./Core/Startup/startup_stm32f413vgtx.o - .debug_info 0x0000cda9 0xa04 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - .debug_info 0x0000d7ad 0xcf6 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o - .debug_info 0x0000e4a3 0xdda ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .debug_info 0x0000f27d 0x904 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o - .debug_info 0x0000fb81 0x73c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - .debug_info 0x000102bd 0x74d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o - .debug_info 0x00010a0a 0x90a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - .debug_info 0x00011314 0x84b ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o - .debug_info 0x00011b5f 0x1611 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .debug_info 0x00013170 0x2a0f ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - .debug_info 0x00015b7f 0x17d1 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - .debug_info 0x00017350 0x2f64 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - .debug_info 0x0001a2b4 0x21e2 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o - .debug_info 0x0001c496 0x2af ./Middlewares/Third_Party/FreeRTOS/Source/list.o - .debug_info 0x0001c745 0x239e ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .debug_info 0x0001eae3 0x4de ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - .debug_info 0x0001efc1 0x4d5 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o + .debug_info 0x00003a1c 0x17e3 ./Core/Src/icd.o + .debug_info 0x000051ff 0x1006 ./Core/Src/main.o + .debug_info 0x00006205 0x1022 ./Core/Src/parse.o + .debug_info 0x00007227 0xa9a ./Core/Src/spi.o + .debug_info 0x00007cc1 0x535 ./Core/Src/stm32f4xx_hal_msp.o + .debug_info 0x000081f6 0xc74 ./Core/Src/stm32f4xx_hal_timebase_tim.o + .debug_info 0x00008e6a 0x1333 ./Core/Src/stm32f4xx_it.o + .debug_info 0x0000a19d 0x168 ./Core/Src/sysmem.o + .debug_info 0x0000a305 0x54a ./Core/Src/system_stm32f4xx.o + .debug_info 0x0000a84f 0x12f8 ./Core/Src/tim.o + .debug_info 0x0000bb47 0x1853 ./Core/Src/usart.o + .debug_info 0x0000d39a 0x30 ./Core/Startup/startup_stm32f413vgtx.o + .debug_info 0x0000d3ca 0xa04 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + .debug_info 0x0000ddce 0xcf6 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o + .debug_info 0x0000eac4 0xdda ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .debug_info 0x0000f89e 0x904 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + .debug_info 0x000101a2 0x73c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + .debug_info 0x000108de 0x74d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o + .debug_info 0x0001102b 0x90a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + .debug_info 0x00011935 0x84b ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o + .debug_info 0x00012180 0x1611 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .debug_info 0x00013791 0x2a0f ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + .debug_info 0x000161a0 0x17d1 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + .debug_info 0x00017971 0x2f64 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + .debug_info 0x0001a8d5 0x21e2 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + .debug_info 0x0001cab7 0x2af ./Middlewares/Third_Party/FreeRTOS/Source/list.o + .debug_info 0x0001cd66 0x239e ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .debug_info 0x0001f104 0x4de ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + .debug_info 0x0001f5e2 0x4d5 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o -.debug_abbrev 0x00000000 0x4a99 +.debug_abbrev 0x00000000 0x4ab7 .debug_abbrev 0x00000000 0x235 ./Core/Src/adc.o .debug_abbrev 0x00000235 0x1a8 ./Core/Src/control.o .debug_abbrev 0x000003dd 0x7e ./Core/Src/delay.o @@ -7620,37 +7629,37 @@ LOAD C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext .debug_abbrev 0x00000569 0xb0 ./Core/Src/filter.o .debug_abbrev 0x00000619 0x2b2 ./Core/Src/freertos.o .debug_abbrev 0x000008cb 0x152 ./Core/Src/gpio.o - .debug_abbrev 0x00000a1d 0x2fa ./Core/Src/icd.o - .debug_abbrev 0x00000d17 0x2b4 ./Core/Src/main.o - .debug_abbrev 0x00000fcb 0x1d8 ./Core/Src/parse.o - .debug_abbrev 0x000011a3 0x215 ./Core/Src/spi.o - .debug_abbrev 0x000013b8 0x119 ./Core/Src/stm32f4xx_hal_msp.o - .debug_abbrev 0x000014d1 0x1f4 ./Core/Src/stm32f4xx_hal_timebase_tim.o - .debug_abbrev 0x000016c5 0x1f5 ./Core/Src/stm32f4xx_it.o - .debug_abbrev 0x000018ba 0xbc ./Core/Src/sysmem.o - .debug_abbrev 0x00001976 0x11a ./Core/Src/system_stm32f4xx.o - .debug_abbrev 0x00001a90 0x274 ./Core/Src/tim.o - .debug_abbrev 0x00001d04 0x2a8 ./Core/Src/usart.o - .debug_abbrev 0x00001fac 0x24 ./Core/Startup/startup_stm32f413vgtx.o - .debug_abbrev 0x00001fd0 0x21b ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - .debug_abbrev 0x000021eb 0x24b ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o - .debug_abbrev 0x00002436 0x344 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .debug_abbrev 0x0000277a 0x279 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o - .debug_abbrev 0x000029f3 0x1f1 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - .debug_abbrev 0x00002be4 0x1b9 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o - .debug_abbrev 0x00002d9d 0x2cb ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - .debug_abbrev 0x00003068 0x214 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o - .debug_abbrev 0x0000327c 0x299 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .debug_abbrev 0x00003515 0x275 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - .debug_abbrev 0x0000378a 0x288 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - .debug_abbrev 0x00003a12 0x323 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - .debug_abbrev 0x00003d35 0x426 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o - .debug_abbrev 0x0000415b 0xf5 ./Middlewares/Third_Party/FreeRTOS/Source/list.o - .debug_abbrev 0x00004250 0x3d0 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .debug_abbrev 0x00004620 0x25c ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - .debug_abbrev 0x0000487c 0x21d ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o + .debug_abbrev 0x00000a1d 0x318 ./Core/Src/icd.o + .debug_abbrev 0x00000d35 0x2b4 ./Core/Src/main.o + .debug_abbrev 0x00000fe9 0x1d8 ./Core/Src/parse.o + .debug_abbrev 0x000011c1 0x215 ./Core/Src/spi.o + .debug_abbrev 0x000013d6 0x119 ./Core/Src/stm32f4xx_hal_msp.o + .debug_abbrev 0x000014ef 0x1f4 ./Core/Src/stm32f4xx_hal_timebase_tim.o + .debug_abbrev 0x000016e3 0x1f5 ./Core/Src/stm32f4xx_it.o + .debug_abbrev 0x000018d8 0xbc ./Core/Src/sysmem.o + .debug_abbrev 0x00001994 0x11a ./Core/Src/system_stm32f4xx.o + .debug_abbrev 0x00001aae 0x274 ./Core/Src/tim.o + .debug_abbrev 0x00001d22 0x2a8 ./Core/Src/usart.o + .debug_abbrev 0x00001fca 0x24 ./Core/Startup/startup_stm32f413vgtx.o + .debug_abbrev 0x00001fee 0x21b ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + .debug_abbrev 0x00002209 0x24b ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o + .debug_abbrev 0x00002454 0x344 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .debug_abbrev 0x00002798 0x279 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + .debug_abbrev 0x00002a11 0x1f1 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + .debug_abbrev 0x00002c02 0x1b9 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o + .debug_abbrev 0x00002dbb 0x2cb ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + .debug_abbrev 0x00003086 0x214 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o + .debug_abbrev 0x0000329a 0x299 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .debug_abbrev 0x00003533 0x275 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + .debug_abbrev 0x000037a8 0x288 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + .debug_abbrev 0x00003a30 0x323 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + .debug_abbrev 0x00003d53 0x426 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + .debug_abbrev 0x00004179 0xf5 ./Middlewares/Third_Party/FreeRTOS/Source/list.o + .debug_abbrev 0x0000426e 0x3d0 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .debug_abbrev 0x0000463e 0x25c ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + .debug_abbrev 0x0000489a 0x21d ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o -.debug_aranges 0x00000000 0x18a8 +.debug_aranges 0x00000000 0x18b8 .debug_aranges 0x00000000 0x40 ./Core/Src/adc.o .debug_aranges @@ -7666,66 +7675,66 @@ LOAD C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext .debug_aranges 0x00000158 0x20 ./Core/Src/gpio.o .debug_aranges - 0x00000178 0x130 ./Core/Src/icd.o + 0x00000178 0x138 ./Core/Src/icd.o .debug_aranges - 0x000002a8 0x40 ./Core/Src/main.o + 0x000002b0 0x40 ./Core/Src/main.o .debug_aranges - 0x000002e8 0x68 ./Core/Src/parse.o + 0x000002f0 0x68 ./Core/Src/parse.o .debug_aranges - 0x00000350 0x48 ./Core/Src/spi.o + 0x00000358 0x48 ./Core/Src/spi.o .debug_aranges - 0x00000398 0x20 ./Core/Src/stm32f4xx_hal_msp.o + 0x000003a0 0x20 ./Core/Src/stm32f4xx_hal_msp.o .debug_aranges - 0x000003b8 0x30 ./Core/Src/stm32f4xx_hal_timebase_tim.o + 0x000003c0 0x30 ./Core/Src/stm32f4xx_hal_timebase_tim.o .debug_aranges - 0x000003e8 0x70 ./Core/Src/stm32f4xx_it.o + 0x000003f0 0x70 ./Core/Src/stm32f4xx_it.o .debug_aranges - 0x00000458 0x20 ./Core/Src/sysmem.o + 0x00000460 0x20 ./Core/Src/sysmem.o .debug_aranges - 0x00000478 0x28 ./Core/Src/system_stm32f4xx.o + 0x00000480 0x28 ./Core/Src/system_stm32f4xx.o .debug_aranges - 0x000004a0 0x68 ./Core/Src/tim.o + 0x000004a8 0x70 ./Core/Src/tim.o .debug_aranges - 0x00000508 0x58 ./Core/Src/usart.o + 0x00000518 0x58 ./Core/Src/usart.o .debug_aranges - 0x00000560 0x28 ./Core/Startup/startup_stm32f413vgtx.o + 0x00000570 0x28 ./Core/Startup/startup_stm32f413vgtx.o .debug_aranges - 0x00000588 0xf0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x00000598 0xf0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o .debug_aranges - 0x00000678 0xe8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o + 0x00000688 0xe8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o .debug_aranges - 0x00000760 0x120 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x00000770 0x120 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .debug_aranges - 0x00000880 0x90 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + 0x00000890 0x90 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o .debug_aranges - 0x00000910 0x58 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + 0x00000920 0x58 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o .debug_aranges - 0x00000968 0xa0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o + 0x00000978 0xa0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o .debug_aranges - 0x00000a08 0x88 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x00000a18 0x88 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o .debug_aranges - 0x00000a90 0x60 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o + 0x00000aa0 0x60 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o .debug_aranges - 0x00000af0 0x1d0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + 0x00000b00 0x1d0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .debug_aranges - 0x00000cc0 0x3d0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x00000cd0 0x3d0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o .debug_aranges - 0x00001090 0x168 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + 0x000010a0 0x168 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o .debug_aranges - 0x000011f8 0x208 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x00001208 0x208 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o .debug_aranges - 0x00001400 0x1d8 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + 0x00001410 0x1d8 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o .debug_aranges - 0x000015d8 0x40 ./Middlewares/Third_Party/FreeRTOS/Source/list.o + 0x000015e8 0x40 ./Middlewares/Third_Party/FreeRTOS/Source/list.o .debug_aranges - 0x00001618 0x1b8 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x00001628 0x1b8 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .debug_aranges - 0x000017d0 0x80 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x000017e0 0x80 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o .debug_aranges - 0x00001850 0x58 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o + 0x00001860 0x58 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o .debug_rnglists - 0x00000000 0x130e + 0x00000000 0x131c .debug_rnglists 0x00000000 0x2e ./Core/Src/adc.o .debug_rnglists @@ -7741,65 +7750,65 @@ LOAD C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext .debug_rnglists 0x000000ee 0x14 ./Core/Src/gpio.o .debug_rnglists - 0x00000102 0xec ./Core/Src/icd.o + 0x00000102 0xf3 ./Core/Src/icd.o .debug_rnglists - 0x000001ee 0x2d ./Core/Src/main.o + 0x000001f5 0x2d ./Core/Src/main.o .debug_rnglists - 0x0000021b 0x4a ./Core/Src/parse.o + 0x00000222 0x4a ./Core/Src/parse.o .debug_rnglists - 0x00000265 0x32 ./Core/Src/spi.o + 0x0000026c 0x32 ./Core/Src/spi.o .debug_rnglists - 0x00000297 0x13 ./Core/Src/stm32f4xx_hal_msp.o + 0x0000029e 0x13 ./Core/Src/stm32f4xx_hal_msp.o .debug_rnglists - 0x000002aa 0x20 ./Core/Src/stm32f4xx_hal_timebase_tim.o + 0x000002b1 0x20 ./Core/Src/stm32f4xx_hal_timebase_tim.o .debug_rnglists - 0x000002ca 0x50 ./Core/Src/stm32f4xx_it.o + 0x000002d1 0x50 ./Core/Src/stm32f4xx_it.o .debug_rnglists - 0x0000031a 0x13 ./Core/Src/sysmem.o + 0x00000321 0x13 ./Core/Src/sysmem.o .debug_rnglists - 0x0000032d 0x1a ./Core/Src/system_stm32f4xx.o + 0x00000334 0x1a ./Core/Src/system_stm32f4xx.o .debug_rnglists - 0x00000347 0x51 ./Core/Src/tim.o + 0x0000034e 0x58 ./Core/Src/tim.o .debug_rnglists - 0x00000398 0x40 ./Core/Src/usart.o + 0x000003a6 0x40 ./Core/Src/usart.o .debug_rnglists - 0x000003d8 0x19 ./Core/Startup/startup_stm32f413vgtx.o + 0x000003e6 0x19 ./Core/Startup/startup_stm32f413vgtx.o .debug_rnglists - 0x000003f1 0xaf ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x000003ff 0xaf ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o .debug_rnglists - 0x000004a0 0xb8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o + 0x000004ae 0xb8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o .debug_rnglists - 0x00000558 0xd4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x00000566 0xd4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .debug_rnglists - 0x0000062c 0x71 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + 0x0000063a 0x71 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o .debug_rnglists - 0x0000069d 0x3f ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + 0x000006ab 0x3f ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o .debug_rnglists - 0x000006dc 0x75 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o + 0x000006ea 0x75 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o .debug_rnglists - 0x00000751 0x66 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x0000075f 0x66 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o .debug_rnglists - 0x000007b7 0x4a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o + 0x000007c5 0x4a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o .debug_rnglists - 0x00000801 0x170 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + 0x0000080f 0x170 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .debug_rnglists - 0x00000971 0x321 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x0000097f 0x321 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o .debug_rnglists - 0x00000c92 0x129 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + 0x00000ca0 0x129 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o .debug_rnglists - 0x00000dbb 0x1c0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x00000dc9 0x1c0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o .debug_rnglists - 0x00000f7b 0x16a ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + 0x00000f89 0x16a ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o .debug_rnglists - 0x000010e5 0x2b ./Middlewares/Third_Party/FreeRTOS/Source/list.o + 0x000010f3 0x2b ./Middlewares/Third_Party/FreeRTOS/Source/list.o .debug_rnglists - 0x00001110 0x15f ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x0000111e 0x15f ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .debug_rnglists - 0x0000126f 0x5d ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x0000127d 0x5d ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o .debug_rnglists - 0x000012cc 0x42 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o + 0x000012da 0x42 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o -.debug_macro 0x00000000 0x270df +.debug_macro 0x00000000 0x270e5 .debug_macro 0x00000000 0x227 ./Core/Src/adc.o .debug_macro 0x00000227 0xac0 ./Core/Src/adc.o .debug_macro 0x00000ce7 0x2ae ./Core/Src/adc.o @@ -7891,87 +7900,87 @@ LOAD C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext .debug_macro 0x0002251a 0x4c ./Core/Src/freertos.o .debug_macro 0x00022566 0x16 ./Core/Src/freertos.o .debug_macro 0x0002257c 0x20 ./Core/Src/freertos.o - .debug_macro 0x0002259c 0x130 ./Core/Src/freertos.o - .debug_macro 0x000226cc 0x10 ./Core/Src/freertos.o - .debug_macro 0x000226dc 0x219 ./Core/Src/gpio.o - .debug_macro 0x000228f5 0x3c7 ./Core/Src/icd.o - .debug_macro 0x00022cbc 0xf1 ./Core/Src/icd.o - .debug_macro 0x00022dad 0x22 ./Core/Src/icd.o - .debug_macro 0x00022dcf 0x19b ./Core/Src/icd.o - .debug_macro 0x00022f6a 0x464 ./Core/Src/main.o - .debug_macro 0x000233ce 0x38a ./Core/Src/parse.o - .debug_macro 0x00023758 0x219 ./Core/Src/spi.o - .debug_macro 0x00023971 0x20f ./Core/Src/stm32f4xx_hal_msp.o - .debug_macro 0x00023b80 0x200 ./Core/Src/stm32f4xx_hal_timebase_tim.o - .debug_macro 0x00023d80 0x3b1 ./Core/Src/stm32f4xx_it.o - .debug_macro 0x00024131 0xff ./Core/Src/sysmem.o - .debug_macro 0x00024230 0x23c ./Core/Src/sysmem.o - .debug_macro 0x0002446c 0x200 ./Core/Src/system_stm32f4xx.o - .debug_macro 0x0002466c 0x219 ./Core/Src/tim.o - .debug_macro 0x00024885 0x42e ./Core/Src/usart.o - .debug_macro 0x00024cb3 0x16 ./Core/Src/usart.o - .debug_macro 0x00024cc9 0x16 ./Core/Src/usart.o - .debug_macro 0x00024cdf 0x16 ./Core/Src/usart.o - .debug_macro 0x00024cf5 0x260 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - .debug_macro 0x00024f55 0x201 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o - .debug_macro 0x00025156 0x200 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .debug_macro 0x00025356 0x206 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o - .debug_macro 0x0002555c 0x206 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - .debug_macro 0x00025762 0x218 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o - .debug_macro 0x0002597a 0x224 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - .debug_macro 0x00025b9e 0x200 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o - .debug_macro 0x00025d9e 0x20f ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .debug_macro 0x00025fad 0x201 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - .debug_macro 0x000261ae 0x200 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - .debug_macro 0x000263ae 0x201 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - .debug_macro 0x000265af 0x210 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o - .debug_macro 0x000267bf 0x10 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o - .debug_macro 0x000267cf 0xe9 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o - .debug_macro 0x000268b8 0x199 ./Middlewares/Third_Party/FreeRTOS/Source/list.o - .debug_macro 0x00026a51 0x28b ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .debug_macro 0x00026cdc 0x10 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .debug_macro 0x00026cec 0x233 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - .debug_macro 0x00026f1f 0x1c0 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o + .debug_macro 0x0002259c 0x136 ./Core/Src/freertos.o + .debug_macro 0x000226d2 0x10 ./Core/Src/freertos.o + .debug_macro 0x000226e2 0x219 ./Core/Src/gpio.o + .debug_macro 0x000228fb 0x3c7 ./Core/Src/icd.o + .debug_macro 0x00022cc2 0xf1 ./Core/Src/icd.o + .debug_macro 0x00022db3 0x22 ./Core/Src/icd.o + .debug_macro 0x00022dd5 0x19b ./Core/Src/icd.o + .debug_macro 0x00022f70 0x464 ./Core/Src/main.o + .debug_macro 0x000233d4 0x38a ./Core/Src/parse.o + .debug_macro 0x0002375e 0x219 ./Core/Src/spi.o + .debug_macro 0x00023977 0x20f ./Core/Src/stm32f4xx_hal_msp.o + .debug_macro 0x00023b86 0x200 ./Core/Src/stm32f4xx_hal_timebase_tim.o + .debug_macro 0x00023d86 0x3b1 ./Core/Src/stm32f4xx_it.o + .debug_macro 0x00024137 0xff ./Core/Src/sysmem.o + .debug_macro 0x00024236 0x23c ./Core/Src/sysmem.o + .debug_macro 0x00024472 0x200 ./Core/Src/system_stm32f4xx.o + .debug_macro 0x00024672 0x219 ./Core/Src/tim.o + .debug_macro 0x0002488b 0x42e ./Core/Src/usart.o + .debug_macro 0x00024cb9 0x16 ./Core/Src/usart.o + .debug_macro 0x00024ccf 0x16 ./Core/Src/usart.o + .debug_macro 0x00024ce5 0x16 ./Core/Src/usart.o + .debug_macro 0x00024cfb 0x260 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + .debug_macro 0x00024f5b 0x201 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o + .debug_macro 0x0002515c 0x200 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .debug_macro 0x0002535c 0x206 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + .debug_macro 0x00025562 0x206 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + .debug_macro 0x00025768 0x218 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o + .debug_macro 0x00025980 0x224 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + .debug_macro 0x00025ba4 0x200 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o + .debug_macro 0x00025da4 0x20f ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .debug_macro 0x00025fb3 0x201 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + .debug_macro 0x000261b4 0x200 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + .debug_macro 0x000263b4 0x201 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + .debug_macro 0x000265b5 0x210 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + .debug_macro 0x000267c5 0x10 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + .debug_macro 0x000267d5 0xe9 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + .debug_macro 0x000268be 0x199 ./Middlewares/Third_Party/FreeRTOS/Source/list.o + .debug_macro 0x00026a57 0x28b ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .debug_macro 0x00026ce2 0x10 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .debug_macro 0x00026cf2 0x233 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + .debug_macro 0x00026f25 0x1c0 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o -.debug_line 0x00000000 0x243e9 - .debug_line 0x00000000 0x9ba ./Core/Src/adc.o - .debug_line 0x000009ba 0x82c ./Core/Src/control.o - .debug_line 0x000011e6 0xeb ./Core/Src/delay.o - .debug_line 0x000012d1 0x7aa ./Core/Src/dma.o - .debug_line 0x00001a7b 0x3f5 ./Core/Src/filter.o - .debug_line 0x00001e70 0xc46 ./Core/Src/freertos.o - .debug_line 0x00002ab6 0x84b ./Core/Src/gpio.o - .debug_line 0x00003301 0x157e ./Core/Src/icd.o - .debug_line 0x0000487f 0xbe7 ./Core/Src/main.o - .debug_line 0x00005466 0x101b ./Core/Src/parse.o - .debug_line 0x00006481 0x8ce ./Core/Src/spi.o - .debug_line 0x00006d4f 0x7ad ./Core/Src/stm32f4xx_hal_msp.o - .debug_line 0x000074fc 0x828 ./Core/Src/stm32f4xx_hal_timebase_tim.o - .debug_line 0x00007d24 0xbff ./Core/Src/stm32f4xx_it.o - .debug_line 0x00008923 0x583 ./Core/Src/sysmem.o - .debug_line 0x00008ea6 0x831 ./Core/Src/system_stm32f4xx.o - .debug_line 0x000096d7 0xc6d ./Core/Src/tim.o - .debug_line 0x0000a344 0x10d9 ./Core/Src/usart.o - .debug_line 0x0000b41d 0x7a ./Core/Startup/startup_stm32f413vgtx.o - .debug_line 0x0000b497 0xaae ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - .debug_line 0x0000bf45 0x1531 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o - .debug_line 0x0000d476 0xf27 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .debug_line 0x0000e39d 0x11f0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o - .debug_line 0x0000f58d 0xd27 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - .debug_line 0x000102b4 0xa5d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o - .debug_line 0x00010d11 0xfd8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - .debug_line 0x00011ce9 0x148c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o - .debug_line 0x00013175 0x1f33 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .debug_line 0x000150a8 0x5f09 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - .debug_line 0x0001afb1 0x20ef ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - .debug_line 0x0001d0a0 0x2c22 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - .debug_line 0x0001fcc2 0x1271 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o - .debug_line 0x00020f33 0x7a1 ./Middlewares/Third_Party/FreeRTOS/Source/list.o - .debug_line 0x000216d4 0x19df ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .debug_line 0x000230b3 0x96a ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - .debug_line 0x00023a1d 0x9cc ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o +.debug_line 0x00000000 0x24537 + .debug_line 0x00000000 0x9b7 ./Core/Src/adc.o + .debug_line 0x000009b7 0x82e ./Core/Src/control.o + .debug_line 0x000011e5 0xeb ./Core/Src/delay.o + .debug_line 0x000012d0 0x7aa ./Core/Src/dma.o + .debug_line 0x00001a7a 0x3f5 ./Core/Src/filter.o + .debug_line 0x00001e6f 0xc63 ./Core/Src/freertos.o + .debug_line 0x00002ad2 0x84c ./Core/Src/gpio.o + .debug_line 0x0000331e 0x15de ./Core/Src/icd.o + .debug_line 0x000048fc 0xbe9 ./Core/Src/main.o + .debug_line 0x000054e5 0x1049 ./Core/Src/parse.o + .debug_line 0x0000652e 0x8ce ./Core/Src/spi.o + .debug_line 0x00006dfc 0x7ad ./Core/Src/stm32f4xx_hal_msp.o + .debug_line 0x000075a9 0x828 ./Core/Src/stm32f4xx_hal_timebase_tim.o + .debug_line 0x00007dd1 0xbff ./Core/Src/stm32f4xx_it.o + .debug_line 0x000089d0 0x583 ./Core/Src/sysmem.o + .debug_line 0x00008f53 0x831 ./Core/Src/system_stm32f4xx.o + .debug_line 0x00009784 0xd0e ./Core/Src/tim.o + .debug_line 0x0000a492 0x10d9 ./Core/Src/usart.o + .debug_line 0x0000b56b 0x7a ./Core/Startup/startup_stm32f413vgtx.o + .debug_line 0x0000b5e5 0xaae ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + .debug_line 0x0000c093 0x1531 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o + .debug_line 0x0000d5c4 0xf27 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .debug_line 0x0000e4eb 0x11f0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + .debug_line 0x0000f6db 0xd27 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + .debug_line 0x00010402 0xa5d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o + .debug_line 0x00010e5f 0xfd8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + .debug_line 0x00011e37 0x148c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o + .debug_line 0x000132c3 0x1f33 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .debug_line 0x000151f6 0x5f09 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + .debug_line 0x0001b0ff 0x20ef ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + .debug_line 0x0001d1ee 0x2c22 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + .debug_line 0x0001fe10 0x1271 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + .debug_line 0x00021081 0x7a1 ./Middlewares/Third_Party/FreeRTOS/Source/list.o + .debug_line 0x00021822 0x19df ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .debug_line 0x00023201 0x96a ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + .debug_line 0x00023b6b 0x9cc ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o -.debug_str 0x00000000 0xe79a1 +.debug_str 0x00000000 0xe79e4 .debug_str 0x00000000 0xd493f ./Core/Src/adc.o 0xd4c86 (size before relaxing) .debug_str 0x000d493f 0x5e8 ./Core/Src/control.o @@ -7982,67 +7991,67 @@ LOAD C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext 0xd4b8c (size before relaxing) .debug_str 0x000d554e 0xad ./Core/Src/filter.o 0x2ece (size before relaxing) - .debug_str 0x000d55fb 0xac66 ./Core/Src/freertos.o - 0xdfba0 (size before relaxing) - .debug_str 0x000e0261 0x20 ./Core/Src/gpio.o + .debug_str 0x000d55fb 0xac77 ./Core/Src/freertos.o + 0xdfbb1 (size before relaxing) + .debug_str 0x000e0272 0x20 ./Core/Src/gpio.o 0xd4688 (size before relaxing) - .debug_str 0x000e0281 0xa80 ./Core/Src/icd.o - 0xded31 (size before relaxing) - .debug_str 0x000e0d01 0x515 ./Core/Src/main.o - 0xdf174 (size before relaxing) - .debug_str 0x000e1216 0xf8 ./Core/Src/parse.o - 0xdcb35 (size before relaxing) - .debug_str 0x000e130e 0x1e0 ./Core/Src/spi.o + .debug_str 0x000e0292 0xd01 ./Core/Src/icd.o + 0xdf24b (size before relaxing) + .debug_str 0x000e0f93 0x2dd ./Core/Src/main.o + 0xdf1b1 (size before relaxing) + .debug_str 0x000e1270 0xf8 ./Core/Src/parse.o + 0xdcb46 (size before relaxing) + .debug_str 0x000e1368 0x1e0 ./Core/Src/spi.o 0xd4b8c (size before relaxing) - .debug_str 0x000e14ee 0x2c ./Core/Src/stm32f4xx_hal_msp.o + .debug_str 0x000e1548 0x2c ./Core/Src/stm32f4xx_hal_msp.o 0xd4b7c (size before relaxing) - .debug_str 0x000e151a 0xf2 ./Core/Src/stm32f4xx_hal_timebase_tim.o + .debug_str 0x000e1574 0xf2 ./Core/Src/stm32f4xx_hal_timebase_tim.o 0xd4540 (size before relaxing) - .debug_str 0x000e160c 0x15a ./Core/Src/stm32f4xx_it.o - 0xdd89f (size before relaxing) - .debug_str 0x000e1766 0x35c ./Core/Src/sysmem.o + .debug_str 0x000e1666 0x15a ./Core/Src/stm32f4xx_it.o + 0xdd8b0 (size before relaxing) + .debug_str 0x000e17c0 0x35c ./Core/Src/sysmem.o 0x60f8 (size before relaxing) - .debug_str 0x000e1ac2 0x87 ./Core/Src/system_stm32f4xx.o + .debug_str 0x000e1b1c 0x87 ./Core/Src/system_stm32f4xx.o 0xd3996 (size before relaxing) - .debug_str 0x000e1b49 0x296 ./Core/Src/tim.o - 0xd54bd (size before relaxing) - .debug_str 0x000e1ddf 0xfe ./Core/Src/usart.o - 0xdfae5 (size before relaxing) - .debug_str 0x000e1edd 0x44 ./Core/Startup/startup_stm32f413vgtx.o + .debug_str 0x000e1ba3 0x2ac ./Core/Src/tim.o + 0xd54e8 (size before relaxing) + .debug_str 0x000e1e4f 0xfe ./Core/Src/usart.o + 0xdfaf6 (size before relaxing) + .debug_str 0x000e1f4d 0x44 ./Core/Startup/startup_stm32f413vgtx.o 0x8c (size before relaxing) - .debug_str 0x000e1f21 0x5bf ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + .debug_str 0x000e1f91 0x5bf ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o 0xd45ec (size before relaxing) - .debug_str 0x000e24e0 0x278 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o + .debug_str 0x000e2550 0x278 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o 0xd3f6d (size before relaxing) - .debug_str 0x000e2758 0x31a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .debug_str 0x000e27c8 0x31a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o 0xd4314 (size before relaxing) - .debug_str 0x000e2a72 0x2c7 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + .debug_str 0x000e2ae2 0x2c7 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o 0xd3d9a (size before relaxing) - .debug_str 0x000e2d39 0x114 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + .debug_str 0x000e2da9 0x114 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o 0xd3b2e (size before relaxing) - .debug_str 0x000e2e4d 0x21e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o + .debug_str 0x000e2ebd 0x21e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o 0xd3bda (size before relaxing) - .debug_str 0x000e306b 0x1fd ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + .debug_str 0x000e30db 0x1fd ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o 0xd3ddd (size before relaxing) - .debug_str 0x000e3268 0x2ba ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o + .debug_str 0x000e32d8 0x2ba ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o 0xd3d62 (size before relaxing) - .debug_str 0x000e3522 0x555 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .debug_str 0x000e3592 0x555 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o 0xd4244 (size before relaxing) - .debug_str 0x000e3a77 0xcfd ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + .debug_str 0x000e3ae7 0xcd0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o 0xd4d1c (size before relaxing) - .debug_str 0x000e4774 0x3ef ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + .debug_str 0x000e47b7 0x3ef ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o 0xd465d (size before relaxing) - .debug_str 0x000e4b63 0x5c8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + .debug_str 0x000e4ba6 0x5c8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o 0xd4395 (size before relaxing) - .debug_str 0x000e512b 0xa74 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + .debug_str 0x000e516e 0xa74 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o 0xed90 (size before relaxing) - .debug_str 0x000e5b9f 0x20f ./Middlewares/Third_Party/FreeRTOS/Source/list.o + .debug_str 0x000e5be2 0x20f ./Middlewares/Third_Party/FreeRTOS/Source/list.o 0xab47 (size before relaxing) - .debug_str 0x000e5dae 0x1143 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .debug_str 0x000e5df1 0x1143 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0xd201 (size before relaxing) - .debug_str 0x000e6ef1 0x783 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + .debug_str 0x000e6f34 0x783 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o 0xa2fb (size before relaxing) - .debug_str 0x000e7674 0x32d ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o + .debug_str 0x000e76b7 0x32d ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o 0xb489 (size before relaxing) .comment 0x00000000 0x43 @@ -8083,7 +8092,7 @@ LOAD C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext .comment 0x00000043 0x44 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o .comment 0x00000043 0x44 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o -.debug_frame 0x00000000 0x6bd8 +.debug_frame 0x00000000 0x6c28 .debug_frame 0x00000000 0xc8 ./Core/Src/adc.o .debug_frame 0x000000c8 0x74 ./Core/Src/control.o .debug_frame 0x0000013c 0xb0 ./Core/Src/delay.o @@ -8091,61 +8100,61 @@ LOAD C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext .debug_frame 0x00000220 0xe4 ./Core/Src/filter.o .debug_frame 0x00000304 0x104 ./Core/Src/freertos.o .debug_frame 0x00000408 0x38 ./Core/Src/gpio.o - .debug_frame 0x00000440 0x524 ./Core/Src/icd.o - .debug_frame 0x00000964 0xb4 ./Core/Src/main.o - .debug_frame 0x00000a18 0x190 ./Core/Src/parse.o - .debug_frame 0x00000ba8 0xd8 ./Core/Src/spi.o - .debug_frame 0x00000c80 0x34 ./Core/Src/stm32f4xx_hal_msp.o - .debug_frame 0x00000cb4 0x74 ./Core/Src/stm32f4xx_hal_timebase_tim.o - .debug_frame 0x00000d28 0x134 ./Core/Src/stm32f4xx_it.o - .debug_frame 0x00000e5c 0x34 ./Core/Src/sysmem.o - .debug_frame 0x00000e90 0x58 ./Core/Src/system_stm32f4xx.o - .debug_frame 0x00000ee8 0x170 ./Core/Src/tim.o - .debug_frame 0x00001058 0x140 ./Core/Src/usart.o - .debug_frame 0x00001198 0x374 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - .debug_frame 0x0000150c 0x3ec ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o - .debug_frame 0x000018f8 0x4b4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .debug_frame 0x00001dac 0x254 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o - .debug_frame 0x00002000 0x138 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - .debug_frame 0x00002138 0x250 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o - .debug_frame 0x00002388 0x1f8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - .debug_frame 0x00002580 0x168 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o - .debug_frame 0x000026e8 0x828 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .debug_frame 0x00002f10 0x11dc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - .debug_frame 0x000040ec 0x620 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - .debug_frame 0x0000470c 0x948 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - .debug_frame 0x00005054 0x80c ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o - .debug_frame 0x00005860 0xd8 ./Middlewares/Third_Party/FreeRTOS/Source/list.o - .debug_frame 0x00005938 0x77c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .debug_frame 0x000060b4 0x1a8 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - .debug_frame 0x0000625c 0x12c ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o - .debug_frame 0x00006388 0x144 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-findfp.o) - .debug_frame 0x000064cc 0x3c C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-vsprintf.o) - .debug_frame 0x00006508 0x20 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-memset.o) - .debug_frame 0x00006528 0x38 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-reent.o) - .debug_frame 0x00006560 0x20 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-errno.o) - .debug_frame 0x00006580 0x2c C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-init.o) - .debug_frame 0x000065ac 0xb0 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-lock.o) - .debug_frame 0x0000665c 0x28 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-memcpy-stub.o) - .debug_frame 0x00006684 0x38 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-freer.o) - .debug_frame 0x000066bc 0x50 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-mallocr.o) - .debug_frame 0x0000670c 0x30 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-mlock.o) - .debug_frame 0x0000673c 0x90 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-nano-svfprintf.o) - .debug_frame 0x000067cc 0x60 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-nano-vfprintf_i.o) - .debug_frame 0x0000682c 0x28 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-memmove.o) - .debug_frame 0x00006854 0x2c C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-sbrkr.o) - .debug_frame 0x00006880 0x3c C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-reallocr.o) - .debug_frame 0x000068bc 0x20 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-msizer.o) - .debug_frame 0x000068dc 0x3c C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libm.a(libm_a-w_sqrt.o) - .debug_frame 0x00006918 0x38 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libm.a(libm_a-e_sqrt.o) - .debug_frame 0x00006950 0xac C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard\libgcc.a(_arm_addsubdf3.o) - .debug_frame 0x000069fc 0x50 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard\libgcc.a(_arm_muldivdf3.o) - .debug_frame 0x00006a4c 0xc4 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard\libgcc.a(_arm_cmpdf2.o) - .debug_frame 0x00006b10 0x20 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard\libgcc.a(_arm_unorddf2.o) - .debug_frame 0x00006b30 0x24 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard\libgcc.a(_arm_fixunsdfsi.o) - .debug_frame 0x00006b54 0x24 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard\libgcc.a(_arm_truncdfsf2.o) - .debug_frame 0x00006b78 0x2c C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard\libgcc.a(_aeabi_uldivmod.o) - .debug_frame 0x00006ba4 0x34 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard\libgcc.a(_udivmoddi4.o) + .debug_frame 0x00000440 0x550 ./Core/Src/icd.o + .debug_frame 0x00000990 0xb4 ./Core/Src/main.o + .debug_frame 0x00000a44 0x190 ./Core/Src/parse.o + .debug_frame 0x00000bd4 0xd8 ./Core/Src/spi.o + .debug_frame 0x00000cac 0x34 ./Core/Src/stm32f4xx_hal_msp.o + .debug_frame 0x00000ce0 0x74 ./Core/Src/stm32f4xx_hal_timebase_tim.o + .debug_frame 0x00000d54 0x134 ./Core/Src/stm32f4xx_it.o + .debug_frame 0x00000e88 0x34 ./Core/Src/sysmem.o + .debug_frame 0x00000ebc 0x58 ./Core/Src/system_stm32f4xx.o + .debug_frame 0x00000f14 0x194 ./Core/Src/tim.o + .debug_frame 0x000010a8 0x140 ./Core/Src/usart.o + .debug_frame 0x000011e8 0x374 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + .debug_frame 0x0000155c 0x3ec ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.o + .debug_frame 0x00001948 0x4b4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .debug_frame 0x00001dfc 0x254 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + .debug_frame 0x00002050 0x138 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + .debug_frame 0x00002188 0x250 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o + .debug_frame 0x000023d8 0x1f8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + .debug_frame 0x000025d0 0x168 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o + .debug_frame 0x00002738 0x828 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .debug_frame 0x00002f60 0x11dc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + .debug_frame 0x0000413c 0x620 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + .debug_frame 0x0000475c 0x948 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + .debug_frame 0x000050a4 0x80c ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + .debug_frame 0x000058b0 0xd8 ./Middlewares/Third_Party/FreeRTOS/Source/list.o + .debug_frame 0x00005988 0x77c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .debug_frame 0x00006104 0x1a8 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + .debug_frame 0x000062ac 0x12c ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o + .debug_frame 0x000063d8 0x144 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-findfp.o) + .debug_frame 0x0000651c 0x3c C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-vsprintf.o) + .debug_frame 0x00006558 0x20 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-memset.o) + .debug_frame 0x00006578 0x38 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-reent.o) + .debug_frame 0x000065b0 0x20 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-errno.o) + .debug_frame 0x000065d0 0x2c C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-init.o) + .debug_frame 0x000065fc 0xb0 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-lock.o) + .debug_frame 0x000066ac 0x28 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-memcpy-stub.o) + .debug_frame 0x000066d4 0x38 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-freer.o) + .debug_frame 0x0000670c 0x50 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-mallocr.o) + .debug_frame 0x0000675c 0x30 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-mlock.o) + .debug_frame 0x0000678c 0x90 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-nano-svfprintf.o) + .debug_frame 0x0000681c 0x60 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-nano-vfprintf_i.o) + .debug_frame 0x0000687c 0x28 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-memmove.o) + .debug_frame 0x000068a4 0x2c C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-sbrkr.o) + .debug_frame 0x000068d0 0x3c C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-reallocr.o) + .debug_frame 0x0000690c 0x20 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-msizer.o) + .debug_frame 0x0000692c 0x3c C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libm.a(libm_a-w_sqrt.o) + .debug_frame 0x00006968 0x38 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libm.a(libm_a-e_sqrt.o) + .debug_frame 0x000069a0 0xac C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard\libgcc.a(_arm_addsubdf3.o) + .debug_frame 0x00006a4c 0x50 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard\libgcc.a(_arm_muldivdf3.o) + .debug_frame 0x00006a9c 0xc4 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard\libgcc.a(_arm_cmpdf2.o) + .debug_frame 0x00006b60 0x20 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard\libgcc.a(_arm_unorddf2.o) + .debug_frame 0x00006b80 0x24 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard\libgcc.a(_arm_fixunsdfsi.o) + .debug_frame 0x00006ba4 0x24 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard\libgcc.a(_arm_truncdfsf2.o) + .debug_frame 0x00006bc8 0x2c C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard\libgcc.a(_aeabi_uldivmod.o) + .debug_frame 0x00006bf4 0x34 C:/ST/STM32CubeIDE_1.15.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard\libgcc.a(_udivmoddi4.o) .debug_line_str 0x00000000 0x70 diff --git a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/ICD_0.1_100pin_07082025.ioc b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/ICD_0.1_100pin_07082025.ioc index ca7bb15..0daef97 100644 --- a/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/ICD_0.1_100pin_07082025.ioc +++ b/2_iteration/v.0.1/firmware/ICD_0.1_100pin_07082025/ICD_0.1_100pin_07082025.ioc @@ -72,8 +72,9 @@ Mcu.IP10=TIM3 Mcu.IP11=TIM4 Mcu.IP12=TIM6 Mcu.IP13=TIM9 -Mcu.IP14=TIM14 -Mcu.IP15=USART1 +Mcu.IP14=TIM11 +Mcu.IP15=TIM14 +Mcu.IP16=USART1 Mcu.IP2=FREERTOS Mcu.IP3=NVIC Mcu.IP4=RCC @@ -82,7 +83,7 @@ Mcu.IP6=SPI3 Mcu.IP7=SYS Mcu.IP8=TIM1 Mcu.IP9=TIM2 -Mcu.IPNb=16 +Mcu.IPNb=17 Mcu.Name=STM32F413V(G-H)Tx Mcu.Package=LQFP100 Mcu.Pin0=PE2 @@ -169,9 +170,11 @@ Mcu.Pin81=VP_TIM3_VS_ClockSourceINT Mcu.Pin82=VP_TIM4_VS_ClockSourceINT Mcu.Pin83=VP_TIM6_VS_ClockSourceINT Mcu.Pin84=VP_TIM9_VS_ClockSourceINT -Mcu.Pin85=VP_TIM14_VS_ClockSourceINT +Mcu.Pin85=VP_TIM11_VS_ClockSourceINT +Mcu.Pin86=VP_TIM11_VS_OPM +Mcu.Pin87=VP_TIM14_VS_ClockSourceINT Mcu.Pin9=PC2 -Mcu.PinsNb=86 +Mcu.PinsNb=88 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F413VGTx @@ -323,12 +326,12 @@ PB8.GPIOParameters=GPIO_Label PB8.GPIO_Label=RA_PWM_3 PB8.Locked=true PB8.Signal=S_TIM4_CH3 -PB9.GPIOParameters=GPIO_Speed,PinState,GPIO_Label +PB9.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label PB9.GPIO_Label=RV_LV_SHOCK -PB9.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH +PB9.GPIO_PuPd=GPIO_PULLUP +PB9.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM PB9.Locked=true -PB9.PinState=GPIO_PIN_SET -PB9.Signal=GPIO_Output +PB9.Signal=S_TIM11_CH1 PC1.GPIOParameters=GPIO_Label PC1.GPIO_Label=RV_COMP_ADC PC1.Locked=true @@ -561,7 +564,7 @@ ProjectManager.ToolChainLocation= ProjectManager.UAScriptAfterPath= ProjectManager.UAScriptBeforePath= ProjectManager.UnderRoot=true -ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_SPI2_Init-SPI2-false-HAL-true,5-MX_SPI3_Init-SPI3-false-HAL-true,6-MX_TIM3_Init-TIM3-false-HAL-true,7-MX_TIM4_Init-TIM4-false-HAL-true,8-MX_USART1_UART_Init-USART1-false-HAL-true,9-MX_ADC1_Init-ADC1-false-HAL-true,10-MX_TIM1_Init-TIM1-false-HAL-true,11-MX_TIM2_Init-TIM2-false-HAL-true,12-MX_TIM9_Init-TIM9-false-HAL-true,13-MX_TIM14_Init-TIM14-false-HAL-true,14-MX_TIM6_Init-TIM6-false-HAL-true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_SPI2_Init-SPI2-false-HAL-true,5-MX_SPI3_Init-SPI3-false-HAL-true,6-MX_TIM3_Init-TIM3-false-HAL-true,7-MX_TIM4_Init-TIM4-false-HAL-true,8-MX_USART1_UART_Init-USART1-false-HAL-true,9-MX_ADC1_Init-ADC1-false-HAL-true,10-MX_TIM1_Init-TIM1-false-HAL-true,11-MX_TIM2_Init-TIM2-false-HAL-true,12-MX_TIM9_Init-TIM9-false-HAL-true,13-MX_TIM14_Init-TIM14-false-HAL-true,14-MX_TIM6_Init-TIM6-false-HAL-true,15-MX_TIM11_Init-TIM11-false-HAL-true RCC.AHBFreq_Value=24000000 RCC.APB1Freq_Value=24000000 RCC.APB1TimFreq_Value=24000000 @@ -620,6 +623,8 @@ SH.ADCx_IN5.0=ADC1_IN5,IN5 SH.ADCx_IN5.ConfNb=1 SH.ADCx_IN6.0=ADC1_IN6,IN6 SH.ADCx_IN6.ConfNb=1 +SH.S_TIM11_CH1.0=TIM11_CH1,PWM Generation1 CH1 +SH.S_TIM11_CH1.ConfNb=1 SH.S_TIM1_CH1.0=TIM1_CH1,PWM Generation1 CH1 SH.S_TIM1_CH1.ConfNb=1 SH.S_TIM1_CH2.0=TIM1_CH2,PWM Generation2 CH2 @@ -667,6 +672,11 @@ TIM1.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4 TIM1.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Channel-PWM Generation3 CH3,Channel-PWM Generation4 CH4,Period,Prescaler TIM1.Period=200 TIM1.Prescaler=1 +TIM11.Channel=TIM_CHANNEL_1 +TIM11.IPParameters=Channel,Period,Prescaler,OCMode_PWM +TIM11.OCMode_PWM=TIM_OCMODE_PWM2 +TIM11.Period=29 +TIM11.Prescaler=2399 TIM2.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 TIM2.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3 TIM2.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4 @@ -705,6 +715,10 @@ VP_FREERTOS_VS_CMSIS_V1.Mode=CMSIS_V1 VP_FREERTOS_VS_CMSIS_V1.Signal=FREERTOS_VS_CMSIS_V1 VP_SYS_VS_tim12.Mode=TIM12 VP_SYS_VS_tim12.Signal=SYS_VS_tim12 +VP_TIM11_VS_ClockSourceINT.Mode=Enable_Timer +VP_TIM11_VS_ClockSourceINT.Signal=TIM11_VS_ClockSourceINT +VP_TIM11_VS_OPM.Mode=OPM_bit +VP_TIM11_VS_OPM.Signal=TIM11_VS_OPM VP_TIM14_VS_ClockSourceINT.Mode=Enable_Timer VP_TIM14_VS_ClockSourceINT.Signal=TIM14_VS_ClockSourceINT VP_TIM1_VS_ClockSourceINT.Mode=Internal