diff --git a/Inc/common.h b/Inc/common.h index ba999fab..b165d2f0 100644 --- a/Inc/common.h +++ b/Inc/common.h @@ -2,7 +2,7 @@ #pragma once -extern EEprom_t eepromBuffer; +extern uint32_t eeprom_address; extern uint16_t TIMER1_MAX_ARR; extern uint16_t dshot_frametime_high; extern uint16_t dshot_frametime_low; diff --git a/Inc/dshot.h b/Inc/dshot.h index ed20bbd6..f69e9cfb 100644 --- a/Inc/dshot.h +++ b/Inc/dshot.h @@ -21,7 +21,6 @@ extern void saveEEpromSettings(void); extern char dshot_telemetry; extern char armed; extern char dir_reversed; -extern char bi_direction; extern char buffer_divider; extern uint8_t last_dshot_command; extern uint32_t commutation_interval; diff --git a/Mcu/f421/Inc/eeprom.h b/Inc/eeprom.h similarity index 96% rename from Mcu/f421/Inc/eeprom.h rename to Inc/eeprom.h index fa40fad4..f6943192 100644 --- a/Mcu/f421/Inc/eeprom.h +++ b/Inc/eeprom.h @@ -47,11 +47,13 @@ typedef union EEprom_u { uint8_t sine_mode_power; // 45 uint8_t input_type; // 46 uint8_t reserved_2[5]; //47-51 - uint8_t tune[124]; + uint8_t tune[124]; // 52-175 }; uint8_t buffer[176]; } EEprom_t; +extern EEprom_t eepromBuffer; + // void save_to_flash(uint8_t *data); // void read_flash(uint8_t* data, uint32_t address); // void save_to_flash_bin(uint8_t *data, int length, uint32_t add); diff --git a/Inc/signal.h b/Inc/signal.h index 0da9a0cd..85679841 100644 --- a/Inc/signal.h +++ b/Inc/signal.h @@ -8,7 +8,6 @@ #include "main.h" extern char out_put; -extern char bi_direction; extern char inputSet; extern char dshot; extern char servoPwm; diff --git a/Keil_Projects/Listings/AM32_SKYSTARS_AM60_V2_F421.map b/Keil_Projects/Listings/AM32_SKYSTARS_AM60_V2_F421.map index 591d5996..4f9e9230 100644 --- a/Keil_Projects/Listings/AM32_SKYSTARS_AM60_V2_F421.map +++ b/Keil_Projects/Listings/AM32_SKYSTARS_AM60_V2_F421.map @@ -1,4 +1,4 @@ -Component: Arm Compiler for Embedded 6.19 Tool: armlink [5e73cb00] +Component: Arm Compiler for Embedded 6.22 Tool: armlink [5ee90200] ============================================================================== @@ -11,6 +11,7 @@ Section Cross References dshot.o(.text.computeDshotDMA) refers to main.o(.bss..L_MergedGlobals.2) for signaltimeout dshot.o(.text.computeDshotDMA) refers to io.o(.text.getInputPinState) for getInputPinState dshot.o(.text.computeDshotDMA) refers to main.o(.bss.dshotcommand) for dshotcommand + dshot.o(.text.computeDshotDMA) refers to eeprom.o(.bss.eepromBuffer) for eepromBuffer dshot.o(.text.computeDshotDMA) refers to main.o(.data..L_MergedGlobals) for forward dshot.o(.text.computeDshotDMA) refers to main.o(.text.saveEEpromSettings) for saveEEpromSettings dshot.o(.text.computeDshotDMA) refers to main.o(.bss.last_dshot_command) for last_dshot_command @@ -29,16 +30,15 @@ Section Cross References functions.o(.ARM.exidx.text.gpio_mode_set) refers to functions.o(.text.gpio_mode_set) for [Anonymous Symbol] main.o(.text.doPidCalculations) refers to fflt_clz.o(x$fpl$fflt) for __aeabi_i2f main.o(.ARM.exidx.text.doPidCalculations) refers to main.o(.text.doPidCalculations) for [Anonymous Symbol] - main.o(.text.loadEEpromSettings) refers to main.o(.data..L_MergedGlobals) for .L_MergedGlobals - main.o(.text.loadEEpromSettings) refers to main.o(.bss.eepromBuffer) for eepromBuffer - main.o(.text.loadEEpromSettings) refers to eeprom.o(.text.read_flash_bin) for read_flash_bin + main.o(.text.loadEEpromSettings) refers to eeprom.o(.bss.eepromBuffer) for eepromBuffer main.o(.text.loadEEpromSettings) refers to main.o(.bss..L_MergedGlobals.2) for .L_MergedGlobals.2 + main.o(.text.loadEEpromSettings) refers to main.o(.data..L_MergedGlobals) for .L_MergedGlobals main.o(.text.loadEEpromSettings) refers to functions.o(.text.map) for map main.o(.text.loadEEpromSettings) refers to sounds.o(.text.setVolume) for setVolume main.o(.text.loadEEpromSettings) refers to dshot.o(.bss..L_MergedGlobals) for EDT_ARMED main.o(.ARM.exidx.text.loadEEpromSettings) refers to main.o(.text.loadEEpromSettings) for [Anonymous Symbol] main.o(.text.saveEEpromSettings) refers to main.o(.data..L_MergedGlobals) for .L_MergedGlobals - main.o(.text.saveEEpromSettings) refers to main.o(.bss.eepromBuffer) for eepromBuffer + main.o(.text.saveEEpromSettings) refers to eeprom.o(.bss.eepromBuffer) for eepromBuffer main.o(.text.saveEEpromSettings) refers to main.o(.bss..L_MergedGlobals.2) for .L_MergedGlobals.2 main.o(.text.saveEEpromSettings) refers to eeprom.o(.text.save_flash_nolib) for save_flash_nolib main.o(.ARM.exidx.text.saveEEpromSettings) refers to main.o(.text.saveEEpromSettings) for [Anonymous Symbol] @@ -78,6 +78,7 @@ Section Cross References main.o(.ARM.exidx.text.startMotor) refers to main.o(.text.startMotor) for [Anonymous Symbol] main.o(.text.setInput) refers to main.o(.bss..L_MergedGlobals.2) for .L_MergedGlobals.2 main.o(.text.setInput) refers to main.o(.data..L_MergedGlobals) for .L_MergedGlobals + main.o(.text.setInput) refers to eeprom.o(.bss.eepromBuffer) for eepromBuffer main.o(.text.setInput) refers to functions.o(.text.map) for map main.o(.text.setInput) refers to main.o(.bss..L_MergedGlobals.3) for .L_MergedGlobals.3 main.o(.text.setInput) refers to comparator.o(.text.maskPhaseInterrupts) for maskPhaseInterrupts @@ -89,9 +90,9 @@ Section Cross References main.o(.text.setInput) refers to comparator.o(.text.changeCompInput) for changeCompInput main.o(.text.setInput) refers to comparator.o(.text.enableCompInterrupts) for enableCompInterrupts main.o(.text.setInput) refers to sounds.o(.text.playDefaultTone) for playDefaultTone - main.o(.text.setInput) refers to sounds.o(.text.playChangedTone) for playChangedTone main.o(.text.setInput) refers to sounds.o(.text.playBeaconTune3) for playBeaconTune3 main.o(.text.setInput) refers to sounds.o(.text.playInputTune2) for playInputTune2 + main.o(.text.setInput) refers to sounds.o(.text.playChangedTone) for playChangedTone main.o(.text.setInput) refers to phaseouts.o(.text.fullBrake) for fullBrake main.o(.text.setInput) refers to phaseouts.o(.text.proportionalBrake) for proportionalBrake main.o(.text.setInput) refers to functions.o(.text.getAbsDif) for getAbsDif @@ -136,7 +137,7 @@ Section Cross References main.o(.text.main) refers to peripherals.o(.text.enableCorePeripherals) for enableCorePeripherals main.o(.text.main) refers to main.o(.text.loadEEpromSettings) for loadEEpromSettings main.o(.text.main) refers to main.o(.data..L_MergedGlobals) for .L_MergedGlobals - main.o(.text.main) refers to main.o(.bss.eepromBuffer) for eepromBuffer + main.o(.text.main) refers to eeprom.o(.bss.eepromBuffer) for eepromBuffer main.o(.text.main) refers to main.o(.bss..L_MergedGlobals.2) for .L_MergedGlobals.2 main.o(.text.main) refers to eeprom.o(.text.save_flash_nolib) for save_flash_nolib main.o(.text.main) refers to sounds.o(.text.playStartupTune) for playStartupTune @@ -144,13 +145,14 @@ Section Cross References main.o(.text.main) refers to io.o(.text.receiveDshotDma) for receiveDshotDma main.o(.text.main) refers to io.o(.text.setInputPullUp) for setInputPullUp main.o(.text.main) refers to main.o(.bss..L_MergedGlobals.3) for .L_MergedGlobals.3 - main.o(.text.main) refers to phaseouts.o(.text.allOff) for allOff + main.o(.text.main) refers to phaseouts.o(.text.proportionalBrake) for proportionalBrake main.o(.text.main) refers to functions.o(.text.map) for map main.o(.text.main) refers to fflt_clz.o(x$fpl$fflt) for __aeabi_i2f main.o(.text.main) refers to fdiv.o(x$fpl$fdiv) for __aeabi_fdiv main.o(.text.main) refers to faddsub_clz.o(x$fpl$fadd) for __aeabi_fadd main.o(.text.main) refers to dshot.o(.bss..L_MergedGlobals) for dshot_extended_telemetry main.o(.text.main) refers to functions.o(.text.getAbsDif) for getAbsDif + main.o(.text.main) refers to phaseouts.o(.text.allOff) for allOff main.o(.text.main) refers to ffix.o(x$fpl$ffix) for __aeabi_f2iz main.o(.text.main) refers to serial_telemetry.o(.text.makeTelemPackage) for makeTelemPackage main.o(.text.main) refers to serial_telemetry.o(.text.send_telem_DMA) for send_telem_DMA @@ -160,7 +162,6 @@ Section Cross References main.o(.text.main) refers to main.o(.bss.readings) for readings main.o(.text.main) refers to comparator.o(.text.maskPhaseInterrupts) for maskPhaseInterrupts main.o(.text.main) refers to phaseouts.o(.text.allpwm) for allpwm - main.o(.text.main) refers to phaseouts.o(.text.proportionalBrake) for proportionalBrake main.o(.text.main) refers to phaseouts.o(.text.comStep) for comStep main.o(.text.main) refers to comparator.o(.text.changeCompInput) for changeCompInput main.o(.text.main) refers to comparator.o(.text.enableCompInterrupts) for enableCompInterrupts @@ -183,14 +184,14 @@ Section Cross References signal.o(.text.computeServoInput) refers to io.o(.bss.dma_buffer) for dma_buffer signal.o(.text.computeServoInput) refers to signal.o(.bss..L_MergedGlobals.1) for .L_MergedGlobals.1 signal.o(.text.computeServoInput) refers to main.o(.bss..L_MergedGlobals.2) for signaltimeout - signal.o(.text.computeServoInput) refers to main.o(.data..L_MergedGlobals) for servo_low_threshold - signal.o(.text.computeServoInput) refers to main.o(.bss.eepromBuffer) for eepromBuffer - signal.o(.text.computeServoInput) refers to main.o(.text.saveEEpromSettings) for saveEEpromSettings - signal.o(.text.computeServoInput) refers to sounds.o(.text.playChangedTone) for playChangedTone + signal.o(.text.computeServoInput) refers to main.o(.data..L_MergedGlobals) for servo_high_threshold signal.o(.text.computeServoInput) refers to functions.o(.text.getAbsDif) for getAbsDif signal.o(.text.computeServoInput) refers to functions.o(.text.map) for map - signal.o(.text.computeServoInput) refers to signal.o(.data.max_servo_deviation) for max_servo_deviation + signal.o(.text.computeServoInput) refers to eeprom.o(.bss.eepromBuffer) for eepromBuffer signal.o(.text.computeServoInput) refers to sounds.o(.text.playDefaultTone) for playDefaultTone + signal.o(.text.computeServoInput) refers to main.o(.text.saveEEpromSettings) for saveEEpromSettings + signal.o(.text.computeServoInput) refers to sounds.o(.text.playChangedTone) for playChangedTone + signal.o(.text.computeServoInput) refers to signal.o(.data.max_servo_deviation) for max_servo_deviation signal.o(.ARM.exidx.text.computeServoInput) refers to signal.o(.text.computeServoInput) for [Anonymous Symbol] signal.o(.text.transfercomplete) refers to main.o(.bss..L_MergedGlobals.2) for armed signal.o(.text.transfercomplete) refers to signal.o(.text.detectInput) for detectInput @@ -238,7 +239,7 @@ Section Cross References sounds.o(.ARM.exidx.text.getBlueJayNoteFrequency) refers to sounds.o(.text.getBlueJayNoteFrequency) for [Anonymous Symbol] sounds.o(.text.playBlueJayTune) refers to phaseouts.o(.text.comStep) for comStep sounds.o(.text.playBlueJayTune) refers to main.o(.bss..L_MergedGlobals.2) for signaltimeout - sounds.o(.text.playBlueJayTune) refers to main.o(.bss.eepromBuffer) for eepromBuffer + sounds.o(.text.playBlueJayTune) refers to eeprom.o(.bss.eepromBuffer) for eepromBuffer sounds.o(.text.playBlueJayTune) refers to sounds.o(.bss.beep_volume) for beep_volume sounds.o(.text.playBlueJayTune) refers to functions.o(.text.delayMillis) for delayMillis sounds.o(.text.playBlueJayTune) refers to phaseouts.o(.text.allOff) for allOff @@ -1115,17 +1116,17 @@ Removing Unused input sections from the image. Removing main.o(.ARM.exidx.text.getSmoothedCurrent), (8 bytes). Removing main.o(.text.getBemfState), (72 bytes). Removing main.o(.ARM.exidx.text.getBemfState), (8 bytes). - Removing main.o(.text.commutate), (132 bytes). + Removing main.o(.text.commutate), (134 bytes). Removing main.o(.ARM.exidx.text.commutate), (8 bytes). Removing main.o(.ARM.exidx.text.PeriodElapsedCallback), (8 bytes). Removing main.o(.ARM.exidx.text.interruptRoutine), (8 bytes). - Removing main.o(.text.startMotor), (178 bytes). + Removing main.o(.text.startMotor), (180 bytes). Removing main.o(.ARM.exidx.text.startMotor), (8 bytes). Removing main.o(.ARM.exidx.text.setInput), (8 bytes). Removing main.o(.ARM.exidx.text.tenKhzRoutine), (8 bytes). Removing main.o(.ARM.exidx.text.zcfoundroutine), (8 bytes). Removing main.o(.ARM.exidx.text.processDshot), (8 bytes). - Removing main.o(.text.advanceincrement), (310 bytes). + Removing main.o(.text.advanceincrement), (296 bytes). Removing main.o(.ARM.exidx.text.advanceincrement), (8 bytes). Removing main.o(.ARM.exidx.text.main), (8 bytes). Removing main.o(.ARM.exidx.text.__NVIC_SystemReset), (8 bytes). @@ -1165,7 +1166,7 @@ Removing Unused input sections from the image. Removing main.o(.bss.lastzctime), (2 bytes). Removing main.o(.ARM.use_no_argv), (4 bytes). Removing signal.o(.text), (0 bytes). - Removing signal.o(.text.computeMSInput), (62 bytes). + Removing signal.o(.text.computeMSInput), (68 bytes). Removing signal.o(.ARM.exidx.text.computeMSInput), (8 bytes). Removing signal.o(.ARM.exidx.text.computeServoInput), (8 bytes). Removing signal.o(.ARM.exidx.text.transfercomplete), (8 bytes). @@ -1218,12 +1219,12 @@ Removing Unused input sections from the image. Removing at32f421_adc.o(.ARM.exidx.text.adc_ordinary_channel_set), (8 bytes). Removing at32f421_adc.o(.text.adc_preempt_channel_length_set), (20 bytes). Removing at32f421_adc.o(.ARM.exidx.text.adc_preempt_channel_length_set), (8 bytes). - Removing at32f421_adc.o(.text.adc_preempt_channel_set), (462 bytes). + Removing at32f421_adc.o(.text.adc_preempt_channel_set), (480 bytes). Removing at32f421_adc.o(.ARM.exidx.text.adc_preempt_channel_set), (8 bytes). Removing at32f421_adc.o(.ARM.exidx.text.adc_ordinary_conversion_trigger_set), (8 bytes). - Removing at32f421_adc.o(.text.adc_preempt_conversion_trigger_set), (42 bytes). + Removing at32f421_adc.o(.text.adc_preempt_conversion_trigger_set), (58 bytes). Removing at32f421_adc.o(.ARM.exidx.text.adc_preempt_conversion_trigger_set), (8 bytes). - Removing at32f421_adc.o(.text.adc_preempt_offset_value_set), (64 bytes). + Removing at32f421_adc.o(.text.adc_preempt_offset_value_set), (24 bytes). Removing at32f421_adc.o(.ARM.exidx.text.adc_preempt_offset_value_set), (8 bytes). Removing at32f421_adc.o(.text.adc_ordinary_part_count_set), (20 bytes). Removing at32f421_adc.o(.ARM.exidx.text.adc_ordinary_part_count_set), (8 bytes). @@ -1243,7 +1244,7 @@ Removing Unused input sections from the image. Removing at32f421_adc.o(.ARM.exidx.text.adc_preempt_software_trigger_status_get), (8 bytes). Removing at32f421_adc.o(.text.adc_ordinary_conversion_data_get), (6 bytes). Removing at32f421_adc.o(.ARM.exidx.text.adc_ordinary_conversion_data_get), (8 bytes). - Removing at32f421_adc.o(.text.adc_preempt_conversion_data_get), (52 bytes). + Removing at32f421_adc.o(.text.adc_preempt_conversion_data_get), (20 bytes). Removing at32f421_adc.o(.ARM.exidx.text.adc_preempt_conversion_data_get), (8 bytes). Removing at32f421_adc.o(.text.adc_flag_get), (10 bytes). Removing at32f421_adc.o(.ARM.exidx.text.adc_flag_get), (8 bytes). @@ -1274,7 +1275,7 @@ Removing Unused input sections from the image. Removing at32f421_crc.o(.ARM.exidx.text.crc_data_reset), (8 bytes). Removing at32f421_crc.o(.text.crc_one_word_calculate), (14 bytes). Removing at32f421_crc.o(.ARM.exidx.text.crc_one_word_calculate), (8 bytes). - Removing at32f421_crc.o(.text.crc_block_calculate), (118 bytes). + Removing at32f421_crc.o(.text.crc_block_calculate), (102 bytes). Removing at32f421_crc.o(.ARM.exidx.text.crc_block_calculate), (8 bytes). Removing at32f421_crc.o(.text.crc_data_get), (12 bytes). Removing at32f421_crc.o(.ARM.exidx.text.crc_data_get), (8 bytes). @@ -1295,7 +1296,7 @@ Removing Unused input sections from the image. Removing at32f421_crm.o(.text.crm_hext_bypass), (26 bytes). Removing at32f421_crm.o(.ARM.exidx.text.crm_hext_bypass), (8 bytes). Removing at32f421_crm.o(.ARM.exidx.text.crm_flag_get), (8 bytes). - Removing at32f421_crm.o(.text.crm_hext_stable_wait), (74 bytes). + Removing at32f421_crm.o(.text.crm_hext_stable_wait), (52 bytes). Removing at32f421_crm.o(.ARM.exidx.text.crm_hext_stable_wait), (8 bytes). Removing at32f421_crm.o(.text.crm_hick_clock_trimming_set), (26 bytes). Removing at32f421_crm.o(.ARM.exidx.text.crm_hick_clock_trimming_set), (8 bytes). @@ -1365,7 +1366,7 @@ Removing Unused input sections from the image. Removing at32f421_ertc.o(.ARM.exidx.text.ertc_write_protect_enable), (8 bytes). Removing at32f421_ertc.o(.text.ertc_write_protect_disable), (18 bytes). Removing at32f421_ertc.o(.ARM.exidx.text.ertc_write_protect_disable), (8 bytes). - Removing at32f421_ertc.o(.text.ertc_wait_update), (152 bytes). + Removing at32f421_ertc.o(.text.ertc_wait_update), (142 bytes). Removing at32f421_ertc.o(.ARM.exidx.text.ertc_wait_update), (8 bytes). Removing at32f421_ertc.o(.text.ertc_wait_flag), (130 bytes). Removing at32f421_ertc.o(.ARM.exidx.text.ertc_wait_flag), (8 bytes). @@ -1375,7 +1376,7 @@ Removing Unused input sections from the image. Removing at32f421_ertc.o(.ARM.exidx.text.ertc_init_mode_enter), (8 bytes). Removing at32f421_ertc.o(.text.ertc_init_mode_exit), (16 bytes). Removing at32f421_ertc.o(.ARM.exidx.text.ertc_init_mode_exit), (8 bytes). - Removing at32f421_ertc.o(.text.ertc_reset), (336 bytes). + Removing at32f421_ertc.o(.text.ertc_reset), (340 bytes). Removing at32f421_ertc.o(.ARM.exidx.text.ertc_reset), (8 bytes). Removing at32f421_ertc.o(.text.ertc_divider_set), (188 bytes). Removing at32f421_ertc.o(.ARM.exidx.text.ertc_divider_set), (8 bytes). @@ -1383,7 +1384,7 @@ Removing Unused input sections from the image. Removing at32f421_ertc.o(.ARM.exidx.text.ertc_hour_mode_set), (8 bytes). Removing at32f421_ertc.o(.text.ertc_date_set), (532 bytes). Removing at32f421_ertc.o(.ARM.exidx.text.ertc_date_set), (8 bytes). - Removing at32f421_ertc.o(.text.ertc_time_set), (536 bytes). + Removing at32f421_ertc.o(.text.ertc_time_set), (532 bytes). Removing at32f421_ertc.o(.ARM.exidx.text.ertc_time_set), (8 bytes). Removing at32f421_ertc.o(.text.ertc_calendar_get), (156 bytes). Removing at32f421_ertc.o(.ARM.exidx.text.ertc_calendar_get), (8 bytes). @@ -1397,7 +1398,7 @@ Removing Unused input sections from the image. Removing at32f421_ertc.o(.ARM.exidx.text.ertc_alarm_set), (8 bytes). Removing at32f421_ertc.o(.text.ertc_alarm_sub_second_set), (72 bytes). Removing at32f421_ertc.o(.ARM.exidx.text.ertc_alarm_sub_second_set), (8 bytes). - Removing at32f421_ertc.o(.text.ertc_alarm_enable), (108 bytes). + Removing at32f421_ertc.o(.text.ertc_alarm_enable), (100 bytes). Removing at32f421_ertc.o(.ARM.exidx.text.ertc_alarm_enable), (8 bytes). Removing at32f421_ertc.o(.text.ertc_alarm_get), (148 bytes). Removing at32f421_ertc.o(.ARM.exidx.text.ertc_alarm_get), (8 bytes). @@ -1458,7 +1459,7 @@ Removing Unused input sections from the image. Removing at32f421_exint.o(.ARM.exidx.text.exint_reset), (8 bytes). Removing at32f421_exint.o(.text.exint_default_para_init), (12 bytes). Removing at32f421_exint.o(.ARM.exidx.text.exint_default_para_init), (8 bytes). - Removing at32f421_exint.o(.text.exint_init), (126 bytes). + Removing at32f421_exint.o(.text.exint_init), (128 bytes). Removing at32f421_exint.o(.ARM.exidx.text.exint_init), (8 bytes). Removing at32f421_exint.o(.text.exint_flag_clear), (12 bytes). Removing at32f421_exint.o(.ARM.exidx.text.exint_flag_clear), (8 bytes). @@ -1476,14 +1477,14 @@ Removing Unused input sections from the image. Removing at32f421_flash.o(.ARM.exidx.text.flash_flag_clear), (8 bytes). Removing at32f421_flash.o(.text.flash_operation_status_get), (42 bytes). Removing at32f421_flash.o(.ARM.exidx.text.flash_operation_status_get), (8 bytes). - Removing at32f421_flash.o(.text.flash_operation_wait_for), (170 bytes). + Removing at32f421_flash.o(.text.flash_operation_wait_for), (138 bytes). Removing at32f421_flash.o(.ARM.exidx.text.flash_operation_wait_for), (8 bytes). Removing at32f421_flash.o(.ARM.exidx.text.flash_unlock), (8 bytes). Removing at32f421_flash.o(.ARM.exidx.text.flash_lock), (8 bytes). Removing at32f421_flash.o(.ARM.exidx.text.flash_sector_erase), (8 bytes). Removing at32f421_flash.o(.text.flash_internal_all_erase), (398 bytes). Removing at32f421_flash.o(.ARM.exidx.text.flash_internal_all_erase), (8 bytes). - Removing at32f421_flash.o(.text.flash_user_system_data_erase), (716 bytes). + Removing at32f421_flash.o(.text.flash_user_system_data_erase), (708 bytes). Removing at32f421_flash.o(.ARM.exidx.text.flash_user_system_data_erase), (8 bytes). Removing at32f421_flash.o(.text.flash_fap_status_get), (16 bytes). Removing at32f421_flash.o(.ARM.exidx.text.flash_fap_status_get), (8 bytes). @@ -1510,7 +1511,7 @@ Removing Unused input sections from the image. Removing at32f421_flash.o(.ARM.exidx.text.flash_ssb_status_get), (8 bytes). Removing at32f421_flash.o(.text.flash_interrupt_enable), (60 bytes). Removing at32f421_flash.o(.ARM.exidx.text.flash_interrupt_enable), (8 bytes). - Removing at32f421_flash.o(.text.flash_slib_enable), (734 bytes). + Removing at32f421_flash.o(.text.flash_slib_enable), (736 bytes). Removing at32f421_flash.o(.ARM.exidx.text.flash_slib_enable), (8 bytes). Removing at32f421_flash.o(.text.flash_slib_disable), (352 bytes). Removing at32f421_flash.o(.ARM.exidx.text.flash_slib_disable), (8 bytes). @@ -1566,7 +1567,7 @@ Removing Unused input sections from the image. Removing at32f421_i2c.o(.ARM.exidx.text.i2c_reset), (8 bytes). Removing at32f421_i2c.o(.text.i2c_software_reset), (18 bytes). Removing at32f421_i2c.o(.ARM.exidx.text.i2c_software_reset), (8 bytes). - Removing at32f421_i2c.o(.text.i2c_init), (266 bytes). + Removing at32f421_i2c.o(.text.i2c_init), (262 bytes). Removing at32f421_i2c.o(.ARM.exidx.text.i2c_init), (8 bytes). Removing at32f421_i2c.o(.text.i2c_own_address1_set), (26 bytes). Removing at32f421_i2c.o(.ARM.exidx.text.i2c_own_address1_set), (8 bytes). @@ -1628,7 +1629,7 @@ Removing Unused input sections from the image. Removing at32f421_misc.o(.text.__NVIC_SystemReset), (42 bytes). Removing at32f421_misc.o(.ARM.exidx.text.__NVIC_SystemReset), (8 bytes). Removing at32f421_misc.o(.ARM.exidx.text.nvic_irq_enable), (8 bytes). - Removing at32f421_misc.o(.text.nvic_irq_disable), (46 bytes). + Removing at32f421_misc.o(.text.nvic_irq_disable), (42 bytes). Removing at32f421_misc.o(.ARM.exidx.text.nvic_irq_disable), (8 bytes). Removing at32f421_misc.o(.text.nvic_priority_group_config), (32 bytes). Removing at32f421_misc.o(.ARM.exidx.text.nvic_priority_group_config), (8 bytes). @@ -1680,7 +1681,7 @@ Removing Unused input sections from the image. Removing at32f421_scfg.o(.ARM.exidx.text.scfg_tmr16_dma_channel_remap), (8 bytes). Removing at32f421_scfg.o(.text.scfg_tmr17_dma_channel_remap), (24 bytes). Removing at32f421_scfg.o(.ARM.exidx.text.scfg_tmr17_dma_channel_remap), (8 bytes). - Removing at32f421_scfg.o(.text.scfg_exint_line_config), (146 bytes). + Removing at32f421_scfg.o(.text.scfg_exint_line_config), (90 bytes). Removing at32f421_scfg.o(.ARM.exidx.text.scfg_exint_line_config), (8 bytes). Removing at32f421_spi.o(.text), (0 bytes). Removing at32f421_spi.o(.text.spi_i2s_reset), (60 bytes). @@ -1697,7 +1698,7 @@ Removing Unused input sections from the image. Removing at32f421_spi.o(.ARM.exidx.text.spi_crc_polynomial_get), (8 bytes). Removing at32f421_spi.o(.text.spi_crc_enable), (18 bytes). Removing at32f421_spi.o(.ARM.exidx.text.spi_crc_enable), (8 bytes). - Removing at32f421_spi.o(.text.spi_crc_value_get), (14 bytes). + Removing at32f421_spi.o(.text.spi_crc_value_get), (12 bytes). Removing at32f421_spi.o(.ARM.exidx.text.spi_crc_value_get), (8 bytes). Removing at32f421_spi.o(.text.spi_hardware_cs_output_enable), (18 bytes). Removing at32f421_spi.o(.ARM.exidx.text.spi_hardware_cs_output_enable), (8 bytes). @@ -1711,7 +1712,7 @@ Removing Unused input sections from the image. Removing at32f421_spi.o(.ARM.exidx.text.spi_enable), (8 bytes). Removing at32f421_spi.o(.text.i2s_default_para_init), (16 bytes). Removing at32f421_spi.o(.ARM.exidx.text.i2s_default_para_init), (8 bytes). - Removing at32f421_spi.o(.text.i2s_init), (424 bytes). + Removing at32f421_spi.o(.text.i2s_init), (398 bytes). Removing at32f421_spi.o(.ARM.exidx.text.i2s_init), (8 bytes). Removing at32f421_spi.o(.text.i2s_enable), (18 bytes). Removing at32f421_spi.o(.ARM.exidx.text.i2s_enable), (8 bytes). @@ -1757,7 +1758,7 @@ Removing Unused input sections from the image. Removing at32f421_tmr.o(.ARM.exidx.text.tmr_div_value_get), (8 bytes). Removing at32f421_tmr.o(.text.tmr_output_channel_config), (252 bytes). Removing at32f421_tmr.o(.ARM.exidx.text.tmr_output_channel_config), (8 bytes). - Removing at32f421_tmr.o(.text.tmr_output_channel_mode_select), (98 bytes). + Removing at32f421_tmr.o(.text.tmr_output_channel_mode_select), (94 bytes). Removing at32f421_tmr.o(.ARM.exidx.text.tmr_output_channel_mode_select), (8 bytes). Removing at32f421_tmr.o(.text.tmr_period_value_set), (4 bytes). Removing at32f421_tmr.o(.ARM.exidx.text.tmr_period_value_set), (8 bytes). @@ -1769,9 +1770,9 @@ Removing Unused input sections from the image. Removing at32f421_tmr.o(.ARM.exidx.text.tmr_channel_value_get), (8 bytes). Removing at32f421_tmr.o(.ARM.exidx.text.tmr_period_buffer_enable), (8 bytes). Removing at32f421_tmr.o(.ARM.exidx.text.tmr_output_channel_buffer_enable), (8 bytes). - Removing at32f421_tmr.o(.text.tmr_output_channel_immediately_set), (98 bytes). + Removing at32f421_tmr.o(.text.tmr_output_channel_immediately_set), (94 bytes). Removing at32f421_tmr.o(.ARM.exidx.text.tmr_output_channel_immediately_set), (8 bytes). - Removing at32f421_tmr.o(.text.tmr_output_channel_switch_set), (98 bytes). + Removing at32f421_tmr.o(.text.tmr_output_channel_switch_set), (94 bytes). Removing at32f421_tmr.o(.ARM.exidx.text.tmr_output_channel_switch_set), (8 bytes). Removing at32f421_tmr.o(.text.tmr_one_cycle_mode_enable), (18 bytes). Removing at32f421_tmr.o(.ARM.exidx.text.tmr_one_cycle_mode_enable), (8 bytes). @@ -1782,13 +1783,13 @@ Removing Unused input sections from the image. Removing at32f421_tmr.o(.text.tmr_input_channel_init), (466 bytes). Removing at32f421_tmr.o(.ARM.exidx.text.tmr_input_channel_init), (8 bytes). Removing at32f421_tmr.o(.ARM.exidx.text.tmr_channel_enable), (8 bytes). - Removing at32f421_tmr.o(.text.tmr_input_channel_filter_set), (98 bytes). + Removing at32f421_tmr.o(.text.tmr_input_channel_filter_set), (94 bytes). Removing at32f421_tmr.o(.ARM.exidx.text.tmr_input_channel_filter_set), (8 bytes). Removing at32f421_tmr.o(.text.tmr_pwm_input_config), (282 bytes). Removing at32f421_tmr.o(.ARM.exidx.text.tmr_pwm_input_config), (8 bytes). Removing at32f421_tmr.o(.text.tmr_channel1_input_select), (18 bytes). Removing at32f421_tmr.o(.ARM.exidx.text.tmr_channel1_input_select), (8 bytes). - Removing at32f421_tmr.o(.text.tmr_input_channel_divider_set), (98 bytes). + Removing at32f421_tmr.o(.text.tmr_input_channel_divider_set), (94 bytes). Removing at32f421_tmr.o(.ARM.exidx.text.tmr_input_channel_divider_set), (8 bytes). Removing at32f421_tmr.o(.text.tmr_primary_mode_select), (18 bytes). Removing at32f421_tmr.o(.ARM.exidx.text.tmr_primary_mode_select), (8 bytes). @@ -1828,7 +1829,7 @@ Removing Unused input sections from the image. Removing at32f421_tmr.o(.ARM.exidx.text.tmr_external_clock_mode2_config), (8 bytes). Removing at32f421_tmr.o(.text.tmr_encoder_mode_config), (68 bytes). Removing at32f421_tmr.o(.ARM.exidx.text.tmr_encoder_mode_config), (8 bytes). - Removing at32f421_tmr.o(.text.tmr_force_output_set), (98 bytes). + Removing at32f421_tmr.o(.text.tmr_force_output_set), (94 bytes). Removing at32f421_tmr.o(.ARM.exidx.text.tmr_force_output_set), (8 bytes). Removing at32f421_tmr.o(.text.tmr_dma_control_config), (26 bytes). Removing at32f421_tmr.o(.ARM.exidx.text.tmr_dma_control_config), (8 bytes). @@ -1951,6 +1952,7 @@ Removing Unused input sections from the image. Removing comparator.o(.ARM.exidx.text.changeCompInput), (8 bytes). Removing eeprom.o(.text), (0 bytes). Removing eeprom.o(.ARM.exidx.text.save_flash_nolib), (8 bytes). + Removing eeprom.o(.text.read_flash_bin), (108 bytes). Removing eeprom.o(.ARM.exidx.text.read_flash_bin), (8 bytes). Removing io.o(.text), (0 bytes). Removing io.o(.text.changeToOutput), (78 bytes). @@ -2047,7 +2049,7 @@ Removing Unused input sections from the image. Removing serial_telemetry.o(.ARM.exidx.text.send_telem_DMA), (8 bytes). Removing serial_telemetry.o(.text.update_crc8), (90 bytes). Removing serial_telemetry.o(.ARM.exidx.text.update_crc8), (8 bytes). - Removing serial_telemetry.o(.text.get_crc8), (346 bytes). + Removing serial_telemetry.o(.text.get_crc8), (342 bytes). Removing serial_telemetry.o(.ARM.exidx.text.get_crc8), (8 bytes). Removing serial_telemetry.o(.ARM.exidx.text.makeTelemPackage), (8 bytes). Removing serial_telemetry.o(.ARM.exidx.text.telem_UART_Init), (8 bytes). @@ -2056,7 +2058,7 @@ Removing Unused input sections from the image. Removing system_at32f421.o(.ARM.exidx.text.system_core_clock_update), (8 bytes). Removing ws2812.o(.text), (0 bytes). -960 unused section(s) (total 30274 bytes) removed from the image. +961 unused section(s) (total 30128 bytes) removed from the image. ============================================================================== @@ -2072,6 +2074,7 @@ Image Symbol Table ../clib/angel/boardlib.s 0x00000000 Number 0 boardinit3.o ABSOLUTE ../clib/angel/boardlib.s 0x00000000 Number 0 boardshut.o ABSOLUTE ../clib/angel/dczerorl2.s 0x00000000 Number 0 __dczerorl2.o ABSOLUTE + ../clib/angel/handlers.s 0x00000000 Number 0 __scatter_copy.o ABSOLUTE ../clib/angel/handlers.s 0x00000000 Number 0 __scatter_zi.o ABSOLUTE ../clib/angel/kernel.s 0x00000000 Number 0 __rtentry.o ABSOLUTE ../clib/angel/kernel.s 0x00000000 Number 0 __rtentry2.o ABSOLUTE @@ -2170,214 +2173,215 @@ Image Symbol Table system_at32f421.c 0x00000000 Number 0 system_at32f421.o ABSOLUTE RESET 0x08001000 Section 204 startup_at32f421.o(RESET) !!!main 0x080010cc Section 8 __main.o(!!!main) - !!!scatter 0x080010d4 Section 52 __scatter.o(!!!scatter) - !!dczerorl2 0x08001108 Section 90 __dczerorl2.o(!!dczerorl2) - !!handler_zi 0x08001164 Section 28 __scatter_zi.o(!!handler_zi) - .ARM.Collect$$libinit$$00000000 0x08001180 Section 2 libinit.o(.ARM.Collect$$libinit$$00000000) - .ARM.Collect$$libinit$$00000002 0x08001182 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000002) - .ARM.Collect$$libinit$$00000004 0x08001182 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000004) - .ARM.Collect$$libinit$$00000006 0x08001182 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000006) - .ARM.Collect$$libinit$$0000000C 0x08001182 Section 0 libinit2.o(.ARM.Collect$$libinit$$0000000C) - .ARM.Collect$$libinit$$0000000E 0x08001182 Section 0 libinit2.o(.ARM.Collect$$libinit$$0000000E) - .ARM.Collect$$libinit$$00000010 0x08001182 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000010) - .ARM.Collect$$libinit$$00000013 0x08001182 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000013) - .ARM.Collect$$libinit$$00000015 0x08001182 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000015) - .ARM.Collect$$libinit$$00000017 0x08001182 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000017) - .ARM.Collect$$libinit$$00000019 0x08001182 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000019) - .ARM.Collect$$libinit$$0000001B 0x08001182 Section 0 libinit2.o(.ARM.Collect$$libinit$$0000001B) - .ARM.Collect$$libinit$$0000001D 0x08001182 Section 0 libinit2.o(.ARM.Collect$$libinit$$0000001D) - .ARM.Collect$$libinit$$0000001F 0x08001182 Section 0 libinit2.o(.ARM.Collect$$libinit$$0000001F) - .ARM.Collect$$libinit$$00000021 0x08001182 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000021) - .ARM.Collect$$libinit$$00000023 0x08001182 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000023) - .ARM.Collect$$libinit$$00000025 0x08001182 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000025) - .ARM.Collect$$libinit$$00000027 0x08001182 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000027) - .ARM.Collect$$libinit$$0000002E 0x08001182 Section 0 libinit2.o(.ARM.Collect$$libinit$$0000002E) - .ARM.Collect$$libinit$$00000030 0x08001182 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000030) - .ARM.Collect$$libinit$$00000032 0x08001182 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000032) - .ARM.Collect$$libinit$$00000034 0x08001182 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000034) - .ARM.Collect$$libinit$$00000035 0x08001182 Section 2 libinit2.o(.ARM.Collect$$libinit$$00000035) - .ARM.Collect$$libshutdown$$00000000 0x08001184 Section 2 libshutdown.o(.ARM.Collect$$libshutdown$$00000000) - .ARM.Collect$$libshutdown$$00000002 0x08001186 Section 0 libshutdown2.o(.ARM.Collect$$libshutdown$$00000002) - .ARM.Collect$$libshutdown$$00000004 0x08001186 Section 0 libshutdown2.o(.ARM.Collect$$libshutdown$$00000004) - .ARM.Collect$$libshutdown$$00000007 0x08001186 Section 0 libshutdown2.o(.ARM.Collect$$libshutdown$$00000007) - .ARM.Collect$$libshutdown$$0000000A 0x08001186 Section 0 libshutdown2.o(.ARM.Collect$$libshutdown$$0000000A) - .ARM.Collect$$libshutdown$$0000000C 0x08001186 Section 0 libshutdown2.o(.ARM.Collect$$libshutdown$$0000000C) - .ARM.Collect$$libshutdown$$0000000F 0x08001186 Section 0 libshutdown2.o(.ARM.Collect$$libshutdown$$0000000F) - .ARM.Collect$$libshutdown$$00000010 0x08001186 Section 2 libshutdown2.o(.ARM.Collect$$libshutdown$$00000010) - .ARM.Collect$$rtentry$$00000000 0x08001188 Section 0 __rtentry.o(.ARM.Collect$$rtentry$$00000000) - .ARM.Collect$$rtentry$$00000002 0x08001188 Section 0 __rtentry2.o(.ARM.Collect$$rtentry$$00000002) - .ARM.Collect$$rtentry$$00000004 0x08001188 Section 6 __rtentry4.o(.ARM.Collect$$rtentry$$00000004) - .ARM.Collect$$rtentry$$00000009 0x0800118e Section 0 __rtentry2.o(.ARM.Collect$$rtentry$$00000009) - .ARM.Collect$$rtentry$$0000000A 0x0800118e Section 4 __rtentry2.o(.ARM.Collect$$rtentry$$0000000A) - .ARM.Collect$$rtentry$$0000000C 0x08001192 Section 0 __rtentry2.o(.ARM.Collect$$rtentry$$0000000C) - .ARM.Collect$$rtentry$$0000000D 0x08001192 Section 8 __rtentry2.o(.ARM.Collect$$rtentry$$0000000D) - .ARM.Collect$$rtexit$$00000000 0x0800119a Section 2 rtexit.o(.ARM.Collect$$rtexit$$00000000) - .ARM.Collect$$rtexit$$00000002 0x0800119c Section 0 rtexit2.o(.ARM.Collect$$rtexit$$00000002) - .ARM.Collect$$rtexit$$00000003 0x0800119c Section 4 rtexit2.o(.ARM.Collect$$rtexit$$00000003) - .ARM.Collect$$rtexit$$00000004 0x080011a0 Section 6 rtexit2.o(.ARM.Collect$$rtexit$$00000004) - .text 0x080011a8 Section 64 startup_at32f421.o(.text) - .text 0x080011e8 Section 78 rt_memclr_w.o(.text) - .text 0x08001236 Section 0 heapauxi.o(.text) - .text 0x0800123c Section 74 sys_stackheap_outer.o(.text) - .text 0x08001286 Section 0 exit.o(.text) - .text 0x08001298 Section 8 libspace.o(.text) - .text 0x080012a0 Section 0 sys_exit.o(.text) - .text 0x080012ac Section 2 use_no_semi.o(.text) - .text 0x080012ae Section 0 indicate_semi.o(.text) - [Anonymous Symbol] 0x080012b0 Section 0 at32f421_it.o(.text.ADC1_CMP_IRQHandler) - [Anonymous Symbol] 0x080012e8 Section 0 adc.o(.text.ADC_DMA_Callback) - [Anonymous Symbol] 0x08001318 Section 0 adc.o(.text.ADC_Init) - [Anonymous Symbol] 0x08001430 Section 0 at32f421_it.o(.text.BusFault_Handler) - [Anonymous Symbol] 0x08001434 Section 0 at32f421_it.o(.text.DMA1_Channel1_IRQHandler) - [Anonymous Symbol] 0x08001460 Section 0 at32f421_it.o(.text.DMA1_Channel3_2_IRQHandler) - [Anonymous Symbol] 0x0800149c Section 0 at32f421_it.o(.text.DMA1_Channel5_4_IRQHandler) - [Anonymous Symbol] 0x08001548 Section 0 at32f421_it.o(.text.DebugMon_Handler) - [Anonymous Symbol] 0x0800154c Section 0 at32f421_it.o(.text.EXINT15_4_IRQHandler) - [Anonymous Symbol] 0x08001574 Section 0 at32f421_it.o(.text.HardFault_Handler) - [Anonymous Symbol] 0x08001578 Section 0 peripherals.o(.text.MX_IWDG_Init) - [Anonymous Symbol] 0x080015a0 Section 0 at32f421_it.o(.text.MemManage_Handler) - [Anonymous Symbol] 0x080015a4 Section 0 at32f421_it.o(.text.PendSV_Handler) - [Anonymous Symbol] 0x080015a8 Section 0 main.o(.text.PeriodElapsedCallback) - [Anonymous Symbol] 0x08001684 Section 0 at32f421_it.o(.text.SVC_Handler) - [Anonymous Symbol] 0x08001688 Section 0 at32f421_it.o(.text.SysTick_Handler) - [Anonymous Symbol] 0x0800168c Section 0 system_at32f421.o(.text.SystemInit) - [Anonymous Symbol] 0x08001718 Section 0 peripherals.o(.text.TIM1_Init) - [Anonymous Symbol] 0x08001830 Section 0 at32f421_it.o(.text.TMR14_GLOBAL_IRQHandler) - [Anonymous Symbol] 0x08001844 Section 0 at32f421_it.o(.text.TMR15_GLOBAL_IRQHandler) - [Anonymous Symbol] 0x0800185c Section 0 at32f421_it.o(.text.TMR16_GLOBAL_IRQHandler) - [Anonymous Symbol] 0x0800186c Section 0 at32f421_it.o(.text.TMR3_GLOBAL_IRQHandler) - [Anonymous Symbol] 0x08001890 Section 0 at32f421_it.o(.text.USART1_IRQHandler) - [Anonymous Symbol] 0x08001894 Section 0 at32f421_it.o(.text.UsageFault_Handler) - __NVIC_SystemReset 0x08001899 Thumb Code 42 main.o(.text.__NVIC_SystemReset) - [Anonymous Symbol] 0x08001898 Section 0 main.o(.text.__NVIC_SystemReset) - [Anonymous Symbol] 0x080018c4 Section 0 at32f421_adc.o(.text.adc_base_config) - [Anonymous Symbol] 0x08001908 Section 0 at32f421_adc.o(.text.adc_base_default_para_init) - [Anonymous Symbol] 0x08001910 Section 0 at32f421_adc.o(.text.adc_calibration_init) - [Anonymous Symbol] 0x0800191c Section 0 at32f421_adc.o(.text.adc_calibration_init_status_get) - [Anonymous Symbol] 0x08001924 Section 0 at32f421_adc.o(.text.adc_calibration_start) - [Anonymous Symbol] 0x08001930 Section 0 at32f421_adc.o(.text.adc_calibration_status_get) - [Anonymous Symbol] 0x08001938 Section 0 at32f421_adc.o(.text.adc_dma_mode_enable) - [Anonymous Symbol] 0x0800194c Section 0 at32f421_adc.o(.text.adc_enable) - [Anonymous Symbol] 0x08001958 Section 0 at32f421_adc.o(.text.adc_ordinary_channel_set) - [Anonymous Symbol] 0x08001bb4 Section 0 at32f421_adc.o(.text.adc_ordinary_conversion_trigger_set) - [Anonymous Symbol] 0x08001be0 Section 0 at32f421_adc.o(.text.adc_ordinary_software_trigger_enable) - [Anonymous Symbol] 0x08001bf4 Section 0 at32f421_adc.o(.text.adc_tempersensor_vintrv_enable) - [Anonymous Symbol] 0x08001c10 Section 0 phaseouts.o(.text.allOff) - [Anonymous Symbol] 0x08001c9c Section 0 phaseouts.o(.text.allpwm) - [Anonymous Symbol] 0x08001d58 Section 0 comparator.o(.text.changeCompInput) - [Anonymous Symbol] 0x08001d7c Section 0 at32f421_cmp.o(.text.cmp_enable) - [Anonymous Symbol] 0x08001d94 Section 0 phaseouts.o(.text.comStep) - [Anonymous Symbol] 0x0800216c Section 0 dshot.o(.text.computeDshotDMA) - [Anonymous Symbol] 0x08002648 Section 0 signal.o(.text.computeServoInput) - [Anonymous Symbol] 0x08002834 Section 0 at32f421_crm.o(.text.crm_adc_clock_div_set) - [Anonymous Symbol] 0x08002850 Section 0 at32f421_crm.o(.text.crm_ahb_div_set) - [Anonymous Symbol] 0x0800286c Section 0 at32f421_crm.o(.text.crm_apb1_div_set) - [Anonymous Symbol] 0x08002888 Section 0 at32f421_crm.o(.text.crm_apb2_div_set) - [Anonymous Symbol] 0x080028a4 Section 0 at32f421_crm.o(.text.crm_auto_step_mode_enable) - [Anonymous Symbol] 0x080028bc Section 0 at32f421_crm.o(.text.crm_clock_source_enable) - [Anonymous Symbol] 0x08002940 Section 0 at32f421_crm.o(.text.crm_clocks_freq_get) - crm_clocks_freq_get.sclk_ahb_div_table 0x08002a48 Number 0 at32f421_crm.o(.text.crm_clocks_freq_get) - crm_clocks_freq_get.adc_div_table 0x08002a58 Number 0 at32f421_crm.o(.text.crm_clocks_freq_get) - [Anonymous Symbol] 0x08002a60 Section 0 at32f421_crm.o(.text.crm_flag_get) - [Anonymous Symbol] 0x08002a7c Section 0 at32f421_crm.o(.text.crm_periph_clock_enable) - [Anonymous Symbol] 0x08002aa4 Section 0 at32f421_crm.o(.text.crm_periph_reset) - [Anonymous Symbol] 0x08002acc Section 0 at32f421_crm.o(.text.crm_pll_config) - [Anonymous Symbol] 0x08002b1c Section 0 at32f421_crm.o(.text.crm_reset) - [Anonymous Symbol] 0x08002b98 Section 0 at32f421_crm.o(.text.crm_sysclk_switch) - [Anonymous Symbol] 0x08002bac Section 0 at32f421_crm.o(.text.crm_sysclk_switch_status_get) - [Anonymous Symbol] 0x08002bbc Section 0 functions.o(.text.delayMicros) - [Anonymous Symbol] 0x08002be8 Section 0 functions.o(.text.delayMillis) - [Anonymous Symbol] 0x08002c38 Section 0 signal.o(.text.detectInput) - [Anonymous Symbol] 0x08002e70 Section 0 at32f421_dma.o(.text.dma_channel_enable) - [Anonymous Symbol] 0x08002e7c Section 0 at32f421_dma.o(.text.dma_default_para_init) - [Anonymous Symbol] 0x08002e8c Section 0 at32f421_dma.o(.text.dma_flag_get) - [Anonymous Symbol] 0x08002e9c Section 0 at32f421_dma.o(.text.dma_init) - [Anonymous Symbol] 0x08002f18 Section 0 at32f421_dma.o(.text.dma_reset) - [Anonymous Symbol] 0x08002f58 Section 0 comparator.o(.text.enableCompInterrupts) - [Anonymous Symbol] 0x08002f6c Section 0 peripherals.o(.text.enableCorePeripherals) - [Anonymous Symbol] 0x0800307c Section 0 at32f421_flash.o(.text.flash_flag_clear) - [Anonymous Symbol] 0x08003088 Section 0 at32f421_flash.o(.text.flash_lock) - [Anonymous Symbol] 0x0800309c Section 0 at32f421_flash.o(.text.flash_sector_erase) - [Anonymous Symbol] 0x0800322c Section 0 at32f421_flash.o(.text.flash_unlock) - [Anonymous Symbol] 0x0800324c Section 0 at32f421_flash.o(.text.flash_word_program) - [Anonymous Symbol] 0x080033d4 Section 0 phaseouts.o(.text.fullBrake) - [Anonymous Symbol] 0x08003460 Section 0 peripherals.o(.text.generatePwmTimerEvent) - [Anonymous Symbol] 0x08003474 Section 0 functions.o(.text.getAbsDif) - [Anonymous Symbol] 0x0800347c Section 0 comparator.o(.text.getCompOutputLevel) - [Anonymous Symbol] 0x0800348c Section 0 adc.o(.text.getConvertedDegrees) - [Anonymous Symbol] 0x080034b4 Section 0 io.o(.text.getInputPinState) - [Anonymous Symbol] 0x080034c4 Section 0 at32f421_gpio.o(.text.gpio_init) - [Anonymous Symbol] 0x0800353c Section 0 functions.o(.text.gpio_mode_QUICK) - [Anonymous Symbol] 0x08003554 Section 0 functions.o(.text.gpio_mode_set) - [Anonymous Symbol] 0x0800357c Section 0 at32f421_gpio.o(.text.gpio_pin_mux_config) - [Anonymous Symbol] 0x080035a8 Section 0 peripherals.o(.text.initAfterJump) - [Anonymous Symbol] 0x080035ac Section 0 peripherals.o(.text.initCorePeripherals) - [Anonymous Symbol] 0x08003744 Section 0 main.o(.text.interruptRoutine) - [Anonymous Symbol] 0x080037f8 Section 0 main.o(.text.loadEEpromSettings) - [Anonymous Symbol] 0x08003b1c Section 0 main.o(.text.main) - [Anonymous Symbol] 0x0800472c Section 0 serial_telemetry.o(.text.makeTelemPackage) - [Anonymous Symbol] 0x0800483c Section 0 dshot.o(.text.make_dshot_package) - [Anonymous Symbol] 0x08004a20 Section 0 functions.o(.text.map) - [Anonymous Symbol] 0x08004a8c Section 0 comparator.o(.text.maskPhaseInterrupts) - [Anonymous Symbol] 0x08004aa4 Section 0 at32f421_misc.o(.text.nvic_irq_enable) - [Anonymous Symbol] 0x08004b18 Section 0 sounds.o(.text.playBeaconTune3) - [Anonymous Symbol] 0x08004bac Section 0 sounds.o(.text.playBlueJayTune) - [Anonymous Symbol] 0x08004cdc Section 0 sounds.o(.text.playChangedTone) - [Anonymous Symbol] 0x08004d44 Section 0 sounds.o(.text.playDefaultTone) - [Anonymous Symbol] 0x08004dac Section 0 sounds.o(.text.playInputTune) - [Anonymous Symbol] 0x08004e28 Section 0 sounds.o(.text.playInputTune2) - [Anonymous Symbol] 0x08004ea4 Section 0 sounds.o(.text.playStartupTune) - [Anonymous Symbol] 0x08004f34 Section 0 main.o(.text.processDshot) - [Anonymous Symbol] 0x08004f6c Section 0 phaseouts.o(.text.proportionalBrake) - [Anonymous Symbol] 0x08004fe4 Section 0 eeprom.o(.text.read_flash_bin) - [Anonymous Symbol] 0x08005048 Section 0 io.o(.text.receiveDshotDma) - [Anonymous Symbol] 0x080050c8 Section 0 peripherals.o(.text.resetInputCaptureTimer) - [Anonymous Symbol] 0x080050d8 Section 0 main.o(.text.saveEEpromSettings) - [Anonymous Symbol] 0x08005158 Section 0 eeprom.o(.text.save_flash_nolib) - [Anonymous Symbol] 0x0800527c Section 0 io.o(.text.sendDshotDma) - [Anonymous Symbol] 0x08005318 Section 0 serial_telemetry.o(.text.send_telem_DMA) - [Anonymous Symbol] 0x08005334 Section 0 main.o(.text.setInput) - [Anonymous Symbol] 0x08005aac Section 0 io.o(.text.setInputPullUp) - [Anonymous Symbol] 0x08005ac0 Section 0 peripherals.o(.text.setPWMCompare1) - [Anonymous Symbol] 0x08005acc Section 0 peripherals.o(.text.setPWMCompare2) - [Anonymous Symbol] 0x08005ad8 Section 0 peripherals.o(.text.setPWMCompare3) - [Anonymous Symbol] 0x08005ae4 Section 0 sounds.o(.text.setVolume) - [Anonymous Symbol] 0x08005af8 Section 0 peripherals.o(.text.system_clock_config) - [Anonymous Symbol] 0x08005b70 Section 0 system_at32f421.o(.text.system_core_clock_update) - system_core_clock_update.sys_ahb_div_table 0x08005c50 Number 0 system_at32f421.o(.text.system_core_clock_update) - [Anonymous Symbol] 0x08005c60 Section 0 serial_telemetry.o(.text.telem_UART_Init) - [Anonymous Symbol] 0x08005d54 Section 0 main.o(.text.tenKhzRoutine) - [Anonymous Symbol] 0x08006238 Section 0 at32f421_tmr.o(.text.tmr_channel_enable) - [Anonymous Symbol] 0x080062d0 Section 0 at32f421_tmr.o(.text.tmr_output_channel_buffer_enable) - [Anonymous Symbol] 0x08006334 Section 0 at32f421_tmr.o(.text.tmr_period_buffer_enable) - [Anonymous Symbol] 0x08006348 Section 0 at32f421_tmr.o(.text.tmr_reset) - [Anonymous Symbol] 0x08006404 Section 0 signal.o(.text.transfercomplete) - [Anonymous Symbol] 0x080065a0 Section 0 at32f421_usart.o(.text.usart_dma_transmitter_enable) - [Anonymous Symbol] 0x080065b4 Section 0 at32f421_usart.o(.text.usart_enable) - [Anonymous Symbol] 0x080065c8 Section 0 at32f421_usart.o(.text.usart_init) - [Anonymous Symbol] 0x08006650 Section 0 at32f421_usart.o(.text.usart_receiver_enable) - [Anonymous Symbol] 0x08006664 Section 0 at32f421_usart.o(.text.usart_single_line_halfduplex_select) - [Anonymous Symbol] 0x08006678 Section 0 at32f421_usart.o(.text.usart_transmitter_enable) - [Anonymous Symbol] 0x0800668c Section 0 main.o(.text.zcfoundroutine) - x$fpl$fadd 0x080067a0 Section 196 faddsub_clz.o(x$fpl$fadd) - _fadd1 0x080067af Thumb Code 0 faddsub_clz.o(x$fpl$fadd) - x$fpl$fcmp 0x08006864 Section 84 fcmp.o(x$fpl$fcmp) - x$fpl$fcmpinf 0x080068b8 Section 24 fcmpi.o(x$fpl$fcmpinf) - _fdiv1 0x080068d1 Thumb Code 0 fdiv.o(x$fpl$fdiv) - x$fpl$fdiv 0x080068d0 Section 388 fdiv.o(x$fpl$fdiv) - x$fpl$feqf 0x08006a54 Section 104 feqf.o(x$fpl$feqf) - x$fpl$ffix 0x08006abc Section 54 ffix.o(x$fpl$ffix) - x$fpl$fflt 0x08006af4 Section 48 fflt_clz.o(x$fpl$fflt) - x$fpl$fgeqf 0x08006b24 Section 104 fgeqf.o(x$fpl$fgeqf) - x$fpl$fleqf 0x08006b8c Section 104 fleqf.o(x$fpl$fleqf) - x$fpl$fnaninf 0x08006bf4 Section 140 fnaninf.o(x$fpl$fnaninf) - x$fpl$fretinf 0x08006c80 Section 10 fretinf.o(x$fpl$fretinf) - x$fpl$fsub 0x08006c8c Section 234 faddsub_clz.o(x$fpl$fsub) - _fsub1 0x08006c9b Thumb Code 0 faddsub_clz.o(x$fpl$fsub) - crm_clocks_freq_get.ahb_apb2_div_table 0x08006d76 Data 8 at32f421_crm.o(.rodata.cst8) - [Anonymous Symbol] 0x08006d76 Section 0 at32f421_crm.o(.rodata.cst8) - x$fpl$usenofp 0x08006d76 Section 0 usenofp.o(x$fpl$usenofp) + !!!scatter 0x080010d4 Section 92 __scatter.o(!!!scatter) + !!dczerorl2 0x08001130 Section 90 __dczerorl2.o(!!dczerorl2) + !!handler_copy 0x0800118c Section 26 __scatter_copy.o(!!handler_copy) + !!handler_null 0x080011a8 Section 2 __scatter.o(!!handler_null) + !!handler_zi 0x080011ac Section 28 __scatter_zi.o(!!handler_zi) + .ARM.Collect$$libinit$$00000000 0x080011c8 Section 2 libinit.o(.ARM.Collect$$libinit$$00000000) + .ARM.Collect$$libinit$$00000002 0x080011ca Section 0 libinit2.o(.ARM.Collect$$libinit$$00000002) + .ARM.Collect$$libinit$$00000004 0x080011ca Section 0 libinit2.o(.ARM.Collect$$libinit$$00000004) + .ARM.Collect$$libinit$$00000006 0x080011ca Section 0 libinit2.o(.ARM.Collect$$libinit$$00000006) + .ARM.Collect$$libinit$$0000000C 0x080011ca Section 0 libinit2.o(.ARM.Collect$$libinit$$0000000C) + .ARM.Collect$$libinit$$0000000E 0x080011ca Section 0 libinit2.o(.ARM.Collect$$libinit$$0000000E) + .ARM.Collect$$libinit$$00000010 0x080011ca Section 0 libinit2.o(.ARM.Collect$$libinit$$00000010) + .ARM.Collect$$libinit$$00000013 0x080011ca Section 0 libinit2.o(.ARM.Collect$$libinit$$00000013) + .ARM.Collect$$libinit$$00000015 0x080011ca Section 0 libinit2.o(.ARM.Collect$$libinit$$00000015) + .ARM.Collect$$libinit$$00000017 0x080011ca Section 0 libinit2.o(.ARM.Collect$$libinit$$00000017) + .ARM.Collect$$libinit$$00000019 0x080011ca Section 0 libinit2.o(.ARM.Collect$$libinit$$00000019) + .ARM.Collect$$libinit$$0000001B 0x080011ca Section 0 libinit2.o(.ARM.Collect$$libinit$$0000001B) + .ARM.Collect$$libinit$$0000001D 0x080011ca Section 0 libinit2.o(.ARM.Collect$$libinit$$0000001D) + .ARM.Collect$$libinit$$0000001F 0x080011ca Section 0 libinit2.o(.ARM.Collect$$libinit$$0000001F) + .ARM.Collect$$libinit$$00000021 0x080011ca Section 0 libinit2.o(.ARM.Collect$$libinit$$00000021) + .ARM.Collect$$libinit$$00000023 0x080011ca Section 0 libinit2.o(.ARM.Collect$$libinit$$00000023) + .ARM.Collect$$libinit$$00000025 0x080011ca Section 0 libinit2.o(.ARM.Collect$$libinit$$00000025) + .ARM.Collect$$libinit$$00000027 0x080011ca Section 0 libinit2.o(.ARM.Collect$$libinit$$00000027) + .ARM.Collect$$libinit$$0000002E 0x080011ca Section 0 libinit2.o(.ARM.Collect$$libinit$$0000002E) + .ARM.Collect$$libinit$$00000030 0x080011ca Section 0 libinit2.o(.ARM.Collect$$libinit$$00000030) + .ARM.Collect$$libinit$$00000032 0x080011ca Section 0 libinit2.o(.ARM.Collect$$libinit$$00000032) + .ARM.Collect$$libinit$$00000034 0x080011ca Section 0 libinit2.o(.ARM.Collect$$libinit$$00000034) + .ARM.Collect$$libinit$$00000035 0x080011ca Section 2 libinit2.o(.ARM.Collect$$libinit$$00000035) + .ARM.Collect$$libshutdown$$00000000 0x080011cc Section 2 libshutdown.o(.ARM.Collect$$libshutdown$$00000000) + .ARM.Collect$$libshutdown$$00000002 0x080011ce Section 0 libshutdown2.o(.ARM.Collect$$libshutdown$$00000002) + .ARM.Collect$$libshutdown$$00000004 0x080011ce Section 0 libshutdown2.o(.ARM.Collect$$libshutdown$$00000004) + .ARM.Collect$$libshutdown$$00000007 0x080011ce Section 0 libshutdown2.o(.ARM.Collect$$libshutdown$$00000007) + .ARM.Collect$$libshutdown$$0000000A 0x080011ce Section 0 libshutdown2.o(.ARM.Collect$$libshutdown$$0000000A) + .ARM.Collect$$libshutdown$$0000000C 0x080011ce Section 0 libshutdown2.o(.ARM.Collect$$libshutdown$$0000000C) + .ARM.Collect$$libshutdown$$0000000F 0x080011ce Section 0 libshutdown2.o(.ARM.Collect$$libshutdown$$0000000F) + .ARM.Collect$$libshutdown$$00000010 0x080011ce Section 2 libshutdown2.o(.ARM.Collect$$libshutdown$$00000010) + .ARM.Collect$$rtentry$$00000000 0x080011d0 Section 0 __rtentry.o(.ARM.Collect$$rtentry$$00000000) + .ARM.Collect$$rtentry$$00000002 0x080011d0 Section 0 __rtentry2.o(.ARM.Collect$$rtentry$$00000002) + .ARM.Collect$$rtentry$$00000004 0x080011d0 Section 6 __rtentry4.o(.ARM.Collect$$rtentry$$00000004) + .ARM.Collect$$rtentry$$00000009 0x080011d6 Section 0 __rtentry2.o(.ARM.Collect$$rtentry$$00000009) + .ARM.Collect$$rtentry$$0000000A 0x080011d6 Section 4 __rtentry2.o(.ARM.Collect$$rtentry$$0000000A) + .ARM.Collect$$rtentry$$0000000C 0x080011da Section 0 __rtentry2.o(.ARM.Collect$$rtentry$$0000000C) + .ARM.Collect$$rtentry$$0000000D 0x080011da Section 8 __rtentry2.o(.ARM.Collect$$rtentry$$0000000D) + .ARM.Collect$$rtexit$$00000000 0x080011e2 Section 2 rtexit.o(.ARM.Collect$$rtexit$$00000000) + .ARM.Collect$$rtexit$$00000002 0x080011e4 Section 0 rtexit2.o(.ARM.Collect$$rtexit$$00000002) + .ARM.Collect$$rtexit$$00000003 0x080011e4 Section 4 rtexit2.o(.ARM.Collect$$rtexit$$00000003) + .ARM.Collect$$rtexit$$00000004 0x080011e8 Section 6 rtexit2.o(.ARM.Collect$$rtexit$$00000004) + .text 0x080011f0 Section 64 startup_at32f421.o(.text) + .text 0x08001230 Section 78 rt_memclr_w.o(.text) + .text 0x0800127e Section 0 heapauxi.o(.text) + .text 0x08001284 Section 74 sys_stackheap_outer.o(.text) + .text 0x080012ce Section 0 exit.o(.text) + .text 0x080012e0 Section 8 libspace.o(.text) + .text 0x080012e8 Section 0 sys_exit.o(.text) + .text 0x080012f4 Section 2 use_no_semi.o(.text) + .text 0x080012f6 Section 0 indicate_semi.o(.text) + [Anonymous Symbol] 0x080012f8 Section 0 at32f421_it.o(.text.ADC1_CMP_IRQHandler) + [Anonymous Symbol] 0x08001330 Section 0 adc.o(.text.ADC_DMA_Callback) + [Anonymous Symbol] 0x08001360 Section 0 adc.o(.text.ADC_Init) + [Anonymous Symbol] 0x08001478 Section 0 at32f421_it.o(.text.BusFault_Handler) + [Anonymous Symbol] 0x0800147c Section 0 at32f421_it.o(.text.DMA1_Channel1_IRQHandler) + [Anonymous Symbol] 0x080014a8 Section 0 at32f421_it.o(.text.DMA1_Channel3_2_IRQHandler) + [Anonymous Symbol] 0x080014e4 Section 0 at32f421_it.o(.text.DMA1_Channel5_4_IRQHandler) + [Anonymous Symbol] 0x0800158c Section 0 at32f421_it.o(.text.DebugMon_Handler) + [Anonymous Symbol] 0x08001590 Section 0 at32f421_it.o(.text.EXINT15_4_IRQHandler) + [Anonymous Symbol] 0x080015b8 Section 0 at32f421_it.o(.text.HardFault_Handler) + [Anonymous Symbol] 0x080015bc Section 0 peripherals.o(.text.MX_IWDG_Init) + [Anonymous Symbol] 0x080015e4 Section 0 at32f421_it.o(.text.MemManage_Handler) + [Anonymous Symbol] 0x080015e8 Section 0 at32f421_it.o(.text.PendSV_Handler) + [Anonymous Symbol] 0x080015ec Section 0 main.o(.text.PeriodElapsedCallback) + [Anonymous Symbol] 0x080016c8 Section 0 at32f421_it.o(.text.SVC_Handler) + [Anonymous Symbol] 0x080016cc Section 0 at32f421_it.o(.text.SysTick_Handler) + [Anonymous Symbol] 0x080016d0 Section 0 system_at32f421.o(.text.SystemInit) + [Anonymous Symbol] 0x0800175c Section 0 peripherals.o(.text.TIM1_Init) + [Anonymous Symbol] 0x08001874 Section 0 at32f421_it.o(.text.TMR14_GLOBAL_IRQHandler) + [Anonymous Symbol] 0x08001888 Section 0 at32f421_it.o(.text.TMR15_GLOBAL_IRQHandler) + [Anonymous Symbol] 0x080018a0 Section 0 at32f421_it.o(.text.TMR16_GLOBAL_IRQHandler) + [Anonymous Symbol] 0x080018b0 Section 0 at32f421_it.o(.text.TMR3_GLOBAL_IRQHandler) + [Anonymous Symbol] 0x080018d4 Section 0 at32f421_it.o(.text.USART1_IRQHandler) + [Anonymous Symbol] 0x080018d8 Section 0 at32f421_it.o(.text.UsageFault_Handler) + __NVIC_SystemReset 0x080018dd Thumb Code 42 main.o(.text.__NVIC_SystemReset) + [Anonymous Symbol] 0x080018dc Section 0 main.o(.text.__NVIC_SystemReset) + [Anonymous Symbol] 0x08001908 Section 0 at32f421_adc.o(.text.adc_base_config) + [Anonymous Symbol] 0x0800194c Section 0 at32f421_adc.o(.text.adc_base_default_para_init) + [Anonymous Symbol] 0x08001954 Section 0 at32f421_adc.o(.text.adc_calibration_init) + [Anonymous Symbol] 0x08001960 Section 0 at32f421_adc.o(.text.adc_calibration_init_status_get) + [Anonymous Symbol] 0x08001968 Section 0 at32f421_adc.o(.text.adc_calibration_start) + [Anonymous Symbol] 0x08001974 Section 0 at32f421_adc.o(.text.adc_calibration_status_get) + [Anonymous Symbol] 0x0800197c Section 0 at32f421_adc.o(.text.adc_dma_mode_enable) + [Anonymous Symbol] 0x08001990 Section 0 at32f421_adc.o(.text.adc_enable) + [Anonymous Symbol] 0x0800199c Section 0 at32f421_adc.o(.text.adc_ordinary_channel_set) + [Anonymous Symbol] 0x08001c08 Section 0 at32f421_adc.o(.text.adc_ordinary_conversion_trigger_set) + [Anonymous Symbol] 0x08001c44 Section 0 at32f421_adc.o(.text.adc_ordinary_software_trigger_enable) + [Anonymous Symbol] 0x08001c58 Section 0 at32f421_adc.o(.text.adc_tempersensor_vintrv_enable) + [Anonymous Symbol] 0x08001c74 Section 0 phaseouts.o(.text.allOff) + [Anonymous Symbol] 0x08001d00 Section 0 phaseouts.o(.text.allpwm) + [Anonymous Symbol] 0x08001dbc Section 0 comparator.o(.text.changeCompInput) + [Anonymous Symbol] 0x08001de0 Section 0 at32f421_cmp.o(.text.cmp_enable) + [Anonymous Symbol] 0x08001df8 Section 0 phaseouts.o(.text.comStep) + [Anonymous Symbol] 0x080021d0 Section 0 dshot.o(.text.computeDshotDMA) + [Anonymous Symbol] 0x080026a4 Section 0 signal.o(.text.computeServoInput) + [Anonymous Symbol] 0x08002874 Section 0 at32f421_crm.o(.text.crm_adc_clock_div_set) + [Anonymous Symbol] 0x08002890 Section 0 at32f421_crm.o(.text.crm_ahb_div_set) + [Anonymous Symbol] 0x080028ac Section 0 at32f421_crm.o(.text.crm_apb1_div_set) + [Anonymous Symbol] 0x080028c8 Section 0 at32f421_crm.o(.text.crm_apb2_div_set) + [Anonymous Symbol] 0x080028e4 Section 0 at32f421_crm.o(.text.crm_auto_step_mode_enable) + [Anonymous Symbol] 0x080028fc Section 0 at32f421_crm.o(.text.crm_clock_source_enable) + [Anonymous Symbol] 0x08002980 Section 0 at32f421_crm.o(.text.crm_clocks_freq_get) + crm_clocks_freq_get.sclk_ahb_div_table 0x08002a80 Number 0 at32f421_crm.o(.text.crm_clocks_freq_get) + crm_clocks_freq_get.adc_div_table 0x08002a90 Number 0 at32f421_crm.o(.text.crm_clocks_freq_get) + [Anonymous Symbol] 0x08002a98 Section 0 at32f421_crm.o(.text.crm_flag_get) + [Anonymous Symbol] 0x08002ab4 Section 0 at32f421_crm.o(.text.crm_periph_clock_enable) + [Anonymous Symbol] 0x08002adc Section 0 at32f421_crm.o(.text.crm_periph_reset) + [Anonymous Symbol] 0x08002b04 Section 0 at32f421_crm.o(.text.crm_pll_config) + [Anonymous Symbol] 0x08002b54 Section 0 at32f421_crm.o(.text.crm_reset) + [Anonymous Symbol] 0x08002bd0 Section 0 at32f421_crm.o(.text.crm_sysclk_switch) + [Anonymous Symbol] 0x08002be4 Section 0 at32f421_crm.o(.text.crm_sysclk_switch_status_get) + [Anonymous Symbol] 0x08002bf4 Section 0 functions.o(.text.delayMicros) + [Anonymous Symbol] 0x08002c20 Section 0 functions.o(.text.delayMillis) + [Anonymous Symbol] 0x08002c70 Section 0 signal.o(.text.detectInput) + [Anonymous Symbol] 0x08002ef0 Section 0 at32f421_dma.o(.text.dma_channel_enable) + [Anonymous Symbol] 0x08002efc Section 0 at32f421_dma.o(.text.dma_default_para_init) + [Anonymous Symbol] 0x08002f0c Section 0 at32f421_dma.o(.text.dma_flag_get) + [Anonymous Symbol] 0x08002f1c Section 0 at32f421_dma.o(.text.dma_init) + [Anonymous Symbol] 0x08002f98 Section 0 at32f421_dma.o(.text.dma_reset) + [Anonymous Symbol] 0x08002fd8 Section 0 comparator.o(.text.enableCompInterrupts) + [Anonymous Symbol] 0x08002fec Section 0 peripherals.o(.text.enableCorePeripherals) + [Anonymous Symbol] 0x080030fc Section 0 at32f421_flash.o(.text.flash_flag_clear) + [Anonymous Symbol] 0x08003108 Section 0 at32f421_flash.o(.text.flash_lock) + [Anonymous Symbol] 0x0800311c Section 0 at32f421_flash.o(.text.flash_sector_erase) + [Anonymous Symbol] 0x080032ac Section 0 at32f421_flash.o(.text.flash_unlock) + [Anonymous Symbol] 0x080032cc Section 0 at32f421_flash.o(.text.flash_word_program) + [Anonymous Symbol] 0x08003454 Section 0 phaseouts.o(.text.fullBrake) + [Anonymous Symbol] 0x080034e0 Section 0 peripherals.o(.text.generatePwmTimerEvent) + [Anonymous Symbol] 0x080034f4 Section 0 functions.o(.text.getAbsDif) + [Anonymous Symbol] 0x080034fc Section 0 comparator.o(.text.getCompOutputLevel) + [Anonymous Symbol] 0x0800350c Section 0 adc.o(.text.getConvertedDegrees) + [Anonymous Symbol] 0x08003534 Section 0 io.o(.text.getInputPinState) + [Anonymous Symbol] 0x08003544 Section 0 at32f421_gpio.o(.text.gpio_init) + [Anonymous Symbol] 0x080035c0 Section 0 functions.o(.text.gpio_mode_QUICK) + [Anonymous Symbol] 0x080035d8 Section 0 functions.o(.text.gpio_mode_set) + [Anonymous Symbol] 0x08003600 Section 0 at32f421_gpio.o(.text.gpio_pin_mux_config) + [Anonymous Symbol] 0x0800362c Section 0 peripherals.o(.text.initAfterJump) + [Anonymous Symbol] 0x08003630 Section 0 peripherals.o(.text.initCorePeripherals) + [Anonymous Symbol] 0x080037c8 Section 0 main.o(.text.interruptRoutine) + [Anonymous Symbol] 0x08003878 Section 0 main.o(.text.loadEEpromSettings) + [Anonymous Symbol] 0x08003b84 Section 0 main.o(.text.main) + [Anonymous Symbol] 0x0800475c Section 0 serial_telemetry.o(.text.makeTelemPackage) + [Anonymous Symbol] 0x0800486c Section 0 dshot.o(.text.make_dshot_package) + [Anonymous Symbol] 0x08004a30 Section 0 functions.o(.text.map) + [Anonymous Symbol] 0x08004a80 Section 0 comparator.o(.text.maskPhaseInterrupts) + [Anonymous Symbol] 0x08004a98 Section 0 at32f421_misc.o(.text.nvic_irq_enable) + [Anonymous Symbol] 0x08004b0c Section 0 sounds.o(.text.playBeaconTune3) + [Anonymous Symbol] 0x08004ba0 Section 0 sounds.o(.text.playBlueJayTune) + [Anonymous Symbol] 0x08004cd0 Section 0 sounds.o(.text.playChangedTone) + [Anonymous Symbol] 0x08004d38 Section 0 sounds.o(.text.playDefaultTone) + [Anonymous Symbol] 0x08004da0 Section 0 sounds.o(.text.playInputTune) + [Anonymous Symbol] 0x08004e1c Section 0 sounds.o(.text.playInputTune2) + [Anonymous Symbol] 0x08004e98 Section 0 sounds.o(.text.playStartupTune) + [Anonymous Symbol] 0x08004f28 Section 0 main.o(.text.processDshot) + [Anonymous Symbol] 0x08004f60 Section 0 phaseouts.o(.text.proportionalBrake) + [Anonymous Symbol] 0x08004fd8 Section 0 io.o(.text.receiveDshotDma) + [Anonymous Symbol] 0x08005058 Section 0 peripherals.o(.text.resetInputCaptureTimer) + [Anonymous Symbol] 0x08005068 Section 0 main.o(.text.saveEEpromSettings) + [Anonymous Symbol] 0x080050dc Section 0 io.o(.text.sendDshotDma) + [Anonymous Symbol] 0x08005178 Section 0 serial_telemetry.o(.text.send_telem_DMA) + [Anonymous Symbol] 0x08005194 Section 0 main.o(.text.setInput) + [Anonymous Symbol] 0x080058b8 Section 0 io.o(.text.setInputPullUp) + [Anonymous Symbol] 0x080058cc Section 0 peripherals.o(.text.setPWMCompare1) + [Anonymous Symbol] 0x080058d8 Section 0 peripherals.o(.text.setPWMCompare2) + [Anonymous Symbol] 0x080058e4 Section 0 peripherals.o(.text.setPWMCompare3) + [Anonymous Symbol] 0x080058f0 Section 0 sounds.o(.text.setVolume) + [Anonymous Symbol] 0x08005904 Section 0 peripherals.o(.text.system_clock_config) + [Anonymous Symbol] 0x0800597c Section 0 system_at32f421.o(.text.system_core_clock_update) + system_core_clock_update.sys_ahb_div_table 0x08005a50 Number 0 system_at32f421.o(.text.system_core_clock_update) + [Anonymous Symbol] 0x08005a60 Section 0 serial_telemetry.o(.text.telem_UART_Init) + [Anonymous Symbol] 0x08005b54 Section 0 main.o(.text.tenKhzRoutine) + [Anonymous Symbol] 0x08005fe8 Section 0 at32f421_tmr.o(.text.tmr_channel_enable) + [Anonymous Symbol] 0x08006080 Section 0 at32f421_tmr.o(.text.tmr_output_channel_buffer_enable) + [Anonymous Symbol] 0x080060e0 Section 0 at32f421_tmr.o(.text.tmr_period_buffer_enable) + [Anonymous Symbol] 0x080060f4 Section 0 at32f421_tmr.o(.text.tmr_reset) + [Anonymous Symbol] 0x080061ac Section 0 signal.o(.text.transfercomplete) + [Anonymous Symbol] 0x08006348 Section 0 at32f421_usart.o(.text.usart_dma_transmitter_enable) + [Anonymous Symbol] 0x0800635c Section 0 at32f421_usart.o(.text.usart_enable) + [Anonymous Symbol] 0x08006370 Section 0 at32f421_usart.o(.text.usart_init) + [Anonymous Symbol] 0x080063f8 Section 0 at32f421_usart.o(.text.usart_receiver_enable) + [Anonymous Symbol] 0x0800640c Section 0 at32f421_usart.o(.text.usart_single_line_halfduplex_select) + [Anonymous Symbol] 0x08006420 Section 0 at32f421_usart.o(.text.usart_transmitter_enable) + [Anonymous Symbol] 0x08006434 Section 0 main.o(.text.zcfoundroutine) + x$fpl$fadd 0x08006548 Section 196 faddsub_clz.o(x$fpl$fadd) + _fadd1 0x08006557 Thumb Code 0 faddsub_clz.o(x$fpl$fadd) + x$fpl$fcmp 0x0800660c Section 84 fcmp.o(x$fpl$fcmp) + x$fpl$fcmpinf 0x08006660 Section 24 fcmpi.o(x$fpl$fcmpinf) + _fdiv1 0x08006679 Thumb Code 0 fdiv.o(x$fpl$fdiv) + x$fpl$fdiv 0x08006678 Section 388 fdiv.o(x$fpl$fdiv) + x$fpl$feqf 0x080067fc Section 104 feqf.o(x$fpl$feqf) + x$fpl$ffix 0x08006864 Section 54 ffix.o(x$fpl$ffix) + x$fpl$fflt 0x0800689c Section 48 fflt_clz.o(x$fpl$fflt) + x$fpl$fgeqf 0x080068cc Section 104 fgeqf.o(x$fpl$fgeqf) + x$fpl$fleqf 0x08006934 Section 104 fleqf.o(x$fpl$fleqf) + x$fpl$fnaninf 0x0800699c Section 140 fnaninf.o(x$fpl$fnaninf) + x$fpl$fretinf 0x08006a28 Section 10 fretinf.o(x$fpl$fretinf) + x$fpl$fsub 0x08006a34 Section 234 faddsub_clz.o(x$fpl$fsub) + _fsub1 0x08006a43 Thumb Code 0 faddsub_clz.o(x$fpl$fsub) + crm_clocks_freq_get.ahb_apb2_div_table 0x08006b1e Data 8 at32f421_crm.o(.rodata.cst8) + [Anonymous Symbol] 0x08006b1e Section 0 at32f421_crm.o(.rodata.cst8) + x$fpl$usenofp 0x08006b1e Section 0 usenofp.o(x$fpl$usenofp) __tagsym$$used.0 0x08007be0 Number 0 firmwareversion.o(.rodata.test) + [Anonymous Symbol] 0x08007c00 Section 0 eeprom.o(.text.save_flash_nolib) .L_MergedGlobals 0x20000000 Data 96 main.o(.data..L_MergedGlobals) [Anonymous Symbol] 0x20000000 Section 0 main.o(.data..L_MergedGlobals) .L_MergedGlobals 0x20000060 Data 6 signal.o(.data..L_MergedGlobals) @@ -2393,6 +2397,7 @@ Image Symbol Table [Anonymous Symbol] 0x20000498 Section 0 main.o(.bss..L_MergedGlobals.2) .L_MergedGlobals.3 0x20000514 Data 28 main.o(.bss..L_MergedGlobals.3) [Anonymous Symbol] 0x20000514 Section 0 main.o(.bss..L_MergedGlobals.3) + __tagsym$$used.0 0x20000645 Number 0 eeprom.o(.bss.eepromBuffer) Heap_Mem 0x20000860 Data 512 startup_at32f421.o(HEAP) HEAP 0x20000860 Section 512 startup_at32f421.o(HEAP) Stack_Mem 0x20000a60 Data 1024 startup_at32f421.o(STACK) @@ -2439,256 +2444,257 @@ Image Symbol Table __Vectors_End 0x080010cc Data 0 startup_at32f421.o(RESET) __main 0x080010cd Thumb Code 8 __main.o(!!!main) __scatterload 0x080010d5 Thumb Code 0 __scatter.o(!!!scatter) - __scatterload_rt2 0x080010d5 Thumb Code 44 __scatter.o(!!!scatter) + __scatterload_rt2 0x080010d5 Thumb Code 84 __scatter.o(!!!scatter) __scatterload_rt2_thumb_only 0x080010d5 Thumb Code 0 __scatter.o(!!!scatter) - __scatterload_null 0x080010e3 Thumb Code 0 __scatter.o(!!!scatter) - __decompress 0x08001109 Thumb Code 90 __dczerorl2.o(!!dczerorl2) - __decompress1 0x08001109 Thumb Code 0 __dczerorl2.o(!!dczerorl2) - __scatterload_zeroinit 0x08001165 Thumb Code 28 __scatter_zi.o(!!handler_zi) - __rt_lib_init 0x08001181 Thumb Code 0 libinit.o(.ARM.Collect$$libinit$$00000000) - __rt_lib_init_alloca_1 0x08001183 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000030) - __rt_lib_init_argv_1 0x08001183 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$0000002E) - __rt_lib_init_atexit_1 0x08001183 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$0000001D) - __rt_lib_init_clock_1 0x08001183 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000023) - __rt_lib_init_cpp_1 0x08001183 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000034) - __rt_lib_init_exceptions_1 0x08001183 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000032) - __rt_lib_init_fp_1 0x08001183 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000002) - __rt_lib_init_fp_trap_1 0x08001183 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000021) - __rt_lib_init_getenv_1 0x08001183 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000025) - __rt_lib_init_heap_1 0x08001183 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$0000000C) - __rt_lib_init_lc_collate_1 0x08001183 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000013) - __rt_lib_init_lc_ctype_1 0x08001183 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000015) - __rt_lib_init_lc_monetary_1 0x08001183 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000017) - __rt_lib_init_lc_numeric_1 0x08001183 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000019) - __rt_lib_init_lc_time_1 0x08001183 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$0000001B) - __rt_lib_init_preinit_1 0x08001183 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000006) - __rt_lib_init_rand_1 0x08001183 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000010) - __rt_lib_init_relocate_pie_1 0x08001183 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000004) - __rt_lib_init_return 0x08001183 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000035) - __rt_lib_init_signal_1 0x08001183 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$0000001F) - __rt_lib_init_stdio_1 0x08001183 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000027) - __rt_lib_init_user_alloc_1 0x08001183 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$0000000E) - __rt_lib_shutdown 0x08001185 Thumb Code 0 libshutdown.o(.ARM.Collect$$libshutdown$$00000000) - __rt_lib_shutdown_cpp_1 0x08001187 Thumb Code 0 libshutdown2.o(.ARM.Collect$$libshutdown$$00000002) - __rt_lib_shutdown_fp_trap_1 0x08001187 Thumb Code 0 libshutdown2.o(.ARM.Collect$$libshutdown$$00000007) - __rt_lib_shutdown_heap_1 0x08001187 Thumb Code 0 libshutdown2.o(.ARM.Collect$$libshutdown$$0000000F) - __rt_lib_shutdown_return 0x08001187 Thumb Code 0 libshutdown2.o(.ARM.Collect$$libshutdown$$00000010) - __rt_lib_shutdown_signal_1 0x08001187 Thumb Code 0 libshutdown2.o(.ARM.Collect$$libshutdown$$0000000A) - __rt_lib_shutdown_stdio_1 0x08001187 Thumb Code 0 libshutdown2.o(.ARM.Collect$$libshutdown$$00000004) - __rt_lib_shutdown_user_alloc_1 0x08001187 Thumb Code 0 libshutdown2.o(.ARM.Collect$$libshutdown$$0000000C) - __rt_entry 0x08001189 Thumb Code 0 __rtentry.o(.ARM.Collect$$rtentry$$00000000) - __rt_entry_presh_1 0x08001189 Thumb Code 0 __rtentry2.o(.ARM.Collect$$rtentry$$00000002) - __rt_entry_sh 0x08001189 Thumb Code 0 __rtentry4.o(.ARM.Collect$$rtentry$$00000004) - __rt_entry_li 0x0800118f Thumb Code 0 __rtentry2.o(.ARM.Collect$$rtentry$$0000000A) - __rt_entry_postsh_1 0x0800118f Thumb Code 0 __rtentry2.o(.ARM.Collect$$rtentry$$00000009) - __rt_entry_main 0x08001193 Thumb Code 0 __rtentry2.o(.ARM.Collect$$rtentry$$0000000D) - __rt_entry_postli_1 0x08001193 Thumb Code 0 __rtentry2.o(.ARM.Collect$$rtentry$$0000000C) - __rt_exit 0x0800119b Thumb Code 0 rtexit.o(.ARM.Collect$$rtexit$$00000000) - __rt_exit_ls 0x0800119d Thumb Code 0 rtexit2.o(.ARM.Collect$$rtexit$$00000003) - __rt_exit_prels_1 0x0800119d Thumb Code 0 rtexit2.o(.ARM.Collect$$rtexit$$00000002) - __rt_exit_exit 0x080011a1 Thumb Code 0 rtexit2.o(.ARM.Collect$$rtexit$$00000004) - Reset_Handler 0x080011a9 Thumb Code 8 startup_at32f421.o(.text) - NMI_Handler 0x080011b1 Thumb Code 2 startup_at32f421.o(.text) - CRM_IRQHandler 0x080011c3 Thumb Code 0 startup_at32f421.o(.text) - ERTC_IRQHandler 0x080011c3 Thumb Code 0 startup_at32f421.o(.text) - EXINT1_0_IRQHandler 0x080011c3 Thumb Code 0 startup_at32f421.o(.text) - EXINT3_2_IRQHandler 0x080011c3 Thumb Code 0 startup_at32f421.o(.text) - FLASH_IRQHandler 0x080011c3 Thumb Code 0 startup_at32f421.o(.text) - I2C1_ERR_IRQHandler 0x080011c3 Thumb Code 0 startup_at32f421.o(.text) - I2C1_EVT_IRQHandler 0x080011c3 Thumb Code 0 startup_at32f421.o(.text) - I2C2_ERR_IRQHandler 0x080011c3 Thumb Code 0 startup_at32f421.o(.text) - I2C2_EVT_IRQHandler 0x080011c3 Thumb Code 0 startup_at32f421.o(.text) - PVM_IRQHandler 0x080011c3 Thumb Code 0 startup_at32f421.o(.text) - SPI1_IRQHandler 0x080011c3 Thumb Code 0 startup_at32f421.o(.text) - SPI2_IRQHandler 0x080011c3 Thumb Code 0 startup_at32f421.o(.text) - TMR17_GLOBAL_IRQHandler 0x080011c3 Thumb Code 0 startup_at32f421.o(.text) - TMR1_BRK_OVF_TRG_HALL_IRQHandler 0x080011c3 Thumb Code 0 startup_at32f421.o(.text) - TMR1_CH_IRQHandler 0x080011c3 Thumb Code 0 startup_at32f421.o(.text) - TMR6_GLOBAL_IRQHandler 0x080011c3 Thumb Code 0 startup_at32f421.o(.text) - USART2_IRQHandler 0x080011c3 Thumb Code 0 startup_at32f421.o(.text) - WWDT_IRQHandler 0x080011c3 Thumb Code 0 startup_at32f421.o(.text) - __user_initial_stackheap 0x080011c5 Thumb Code 0 startup_at32f421.o(.text) - __aeabi_memclr4 0x080011e9 Thumb Code 0 rt_memclr_w.o(.text) - __aeabi_memclr8 0x080011e9 Thumb Code 0 rt_memclr_w.o(.text) - __rt_memclr_w 0x080011e9 Thumb Code 0 rt_memclr_w.o(.text) - _memset_w 0x080011ed Thumb Code 74 rt_memclr_w.o(.text) - __use_two_region_memory 0x08001237 Thumb Code 2 heapauxi.o(.text) - __rt_heap_escrow$2region 0x08001239 Thumb Code 2 heapauxi.o(.text) - __rt_heap_expand$2region 0x0800123b Thumb Code 2 heapauxi.o(.text) - __user_setup_stackheap 0x0800123d Thumb Code 74 sys_stackheap_outer.o(.text) - exit 0x08001287 Thumb Code 18 exit.o(.text) - __user_libspace 0x08001299 Thumb Code 8 libspace.o(.text) - __user_perproc_libspace 0x08001299 Thumb Code 0 libspace.o(.text) - __user_perthread_libspace 0x08001299 Thumb Code 0 libspace.o(.text) - _sys_exit 0x080012a1 Thumb Code 8 sys_exit.o(.text) - __I$use$semihosting 0x080012ad Thumb Code 0 use_no_semi.o(.text) - __use_no_semihosting_swi 0x080012ad Thumb Code 2 use_no_semi.o(.text) - __semihosting_library_function 0x080012af Thumb Code 0 indicate_semi.o(.text) - ADC1_CMP_IRQHandler 0x080012b1 Thumb Code 54 at32f421_it.o(.text.ADC1_CMP_IRQHandler) - ADC_DMA_Callback 0x080012e9 Thumb Code 46 adc.o(.text.ADC_DMA_Callback) - ADC_Init 0x08001319 Thumb Code 278 adc.o(.text.ADC_Init) - BusFault_Handler 0x08001431 Thumb Code 2 at32f421_it.o(.text.BusFault_Handler) - DMA1_Channel1_IRQHandler 0x08001435 Thumb Code 42 at32f421_it.o(.text.DMA1_Channel1_IRQHandler) - DMA1_Channel3_2_IRQHandler 0x08001461 Thumb Code 60 at32f421_it.o(.text.DMA1_Channel3_2_IRQHandler) - DMA1_Channel5_4_IRQHandler 0x0800149d Thumb Code 172 at32f421_it.o(.text.DMA1_Channel5_4_IRQHandler) - DebugMon_Handler 0x08001549 Thumb Code 2 at32f421_it.o(.text.DebugMon_Handler) - EXINT15_4_IRQHandler 0x0800154d Thumb Code 40 at32f421_it.o(.text.EXINT15_4_IRQHandler) - HardFault_Handler 0x08001575 Thumb Code 2 at32f421_it.o(.text.HardFault_Handler) - MX_IWDG_Init 0x08001579 Thumb Code 38 peripherals.o(.text.MX_IWDG_Init) - MemManage_Handler 0x080015a1 Thumb Code 2 at32f421_it.o(.text.MemManage_Handler) - PendSV_Handler 0x080015a5 Thumb Code 2 at32f421_it.o(.text.PendSV_Handler) - PeriodElapsedCallback 0x080015a9 Thumb Code 218 main.o(.text.PeriodElapsedCallback) - SVC_Handler 0x08001685 Thumb Code 2 at32f421_it.o(.text.SVC_Handler) - SysTick_Handler 0x08001689 Thumb Code 2 at32f421_it.o(.text.SysTick_Handler) - SystemInit 0x0800168d Thumb Code 140 system_at32f421.o(.text.SystemInit) - TIM1_Init 0x08001719 Thumb Code 278 peripherals.o(.text.TIM1_Init) - TMR14_GLOBAL_IRQHandler 0x08001831 Thumb Code 18 at32f421_it.o(.text.TMR14_GLOBAL_IRQHandler) - TMR15_GLOBAL_IRQHandler 0x08001845 Thumb Code 22 at32f421_it.o(.text.TMR15_GLOBAL_IRQHandler) - TMR16_GLOBAL_IRQHandler 0x0800185d Thumb Code 16 at32f421_it.o(.text.TMR16_GLOBAL_IRQHandler) - TMR3_GLOBAL_IRQHandler 0x0800186d Thumb Code 34 at32f421_it.o(.text.TMR3_GLOBAL_IRQHandler) - USART1_IRQHandler 0x08001891 Thumb Code 2 at32f421_it.o(.text.USART1_IRQHandler) - UsageFault_Handler 0x08001895 Thumb Code 2 at32f421_it.o(.text.UsageFault_Handler) - adc_base_config 0x080018c5 Thumb Code 68 at32f421_adc.o(.text.adc_base_config) - adc_base_default_para_init 0x08001909 Thumb Code 8 at32f421_adc.o(.text.adc_base_default_para_init) - adc_calibration_init 0x08001911 Thumb Code 10 at32f421_adc.o(.text.adc_calibration_init) - adc_calibration_init_status_get 0x0800191d Thumb Code 8 at32f421_adc.o(.text.adc_calibration_init_status_get) - adc_calibration_start 0x08001925 Thumb Code 10 at32f421_adc.o(.text.adc_calibration_start) - adc_calibration_status_get 0x08001931 Thumb Code 8 at32f421_adc.o(.text.adc_calibration_status_get) - adc_dma_mode_enable 0x08001939 Thumb Code 18 at32f421_adc.o(.text.adc_dma_mode_enable) - adc_enable 0x0800194d Thumb Code 10 at32f421_adc.o(.text.adc_enable) - adc_ordinary_channel_set 0x08001959 Thumb Code 602 at32f421_adc.o(.text.adc_ordinary_channel_set) - adc_ordinary_conversion_trigger_set 0x08001bb5 Thumb Code 42 at32f421_adc.o(.text.adc_ordinary_conversion_trigger_set) - adc_ordinary_software_trigger_enable 0x08001be1 Thumb Code 18 at32f421_adc.o(.text.adc_ordinary_software_trigger_enable) - adc_tempersensor_vintrv_enable 0x08001bf5 Thumb Code 26 at32f421_adc.o(.text.adc_tempersensor_vintrv_enable) - allOff 0x08001c11 Thumb Code 138 phaseouts.o(.text.allOff) - allpwm 0x08001c9d Thumb Code 186 phaseouts.o(.text.allpwm) - changeCompInput 0x08001d59 Thumb Code 36 comparator.o(.text.changeCompInput) - cmp_enable 0x08001d7d Thumb Code 22 at32f421_cmp.o(.text.cmp_enable) - comStep 0x08001d95 Thumb Code 984 phaseouts.o(.text.comStep) - computeDshotDMA 0x0800216d Thumb Code 1244 dshot.o(.text.computeDshotDMA) - computeServoInput 0x08002649 Thumb Code 492 signal.o(.text.computeServoInput) - crm_adc_clock_div_set 0x08002835 Thumb Code 28 at32f421_crm.o(.text.crm_adc_clock_div_set) - crm_ahb_div_set 0x08002851 Thumb Code 26 at32f421_crm.o(.text.crm_ahb_div_set) - crm_apb1_div_set 0x0800286d Thumb Code 26 at32f421_crm.o(.text.crm_apb1_div_set) - crm_apb2_div_set 0x08002889 Thumb Code 26 at32f421_crm.o(.text.crm_apb2_div_set) - crm_auto_step_mode_enable 0x080028a5 Thumb Code 24 at32f421_crm.o(.text.crm_auto_step_mode_enable) - crm_clock_source_enable 0x080028bd Thumb Code 130 at32f421_crm.o(.text.crm_clock_source_enable) - crm_clocks_freq_get 0x08002941 Thumb Code 264 at32f421_crm.o(.text.crm_clocks_freq_get) - crm_flag_get 0x08002a61 Thumb Code 26 at32f421_crm.o(.text.crm_flag_get) - crm_periph_clock_enable 0x08002a7d Thumb Code 40 at32f421_crm.o(.text.crm_periph_clock_enable) - crm_periph_reset 0x08002aa5 Thumb Code 40 at32f421_crm.o(.text.crm_periph_reset) - crm_pll_config 0x08002acd Thumb Code 78 at32f421_crm.o(.text.crm_pll_config) - crm_reset 0x08002b1d Thumb Code 122 at32f421_crm.o(.text.crm_reset) - crm_sysclk_switch 0x08002b99 Thumb Code 18 at32f421_crm.o(.text.crm_sysclk_switch) - crm_sysclk_switch_status_get 0x08002bad Thumb Code 16 at32f421_crm.o(.text.crm_sysclk_switch_status_get) - delayMicros 0x08002bbd Thumb Code 44 functions.o(.text.delayMicros) - delayMillis 0x08002be9 Thumb Code 78 functions.o(.text.delayMillis) - detectInput 0x08002c39 Thumb Code 568 signal.o(.text.detectInput) - dma_channel_enable 0x08002e71 Thumb Code 10 at32f421_dma.o(.text.dma_channel_enable) - dma_default_para_init 0x08002e7d Thumb Code 14 at32f421_dma.o(.text.dma_default_para_init) - dma_flag_get 0x08002e8d Thumb Code 16 at32f421_dma.o(.text.dma_flag_get) - dma_init 0x08002e9d Thumb Code 124 at32f421_dma.o(.text.dma_init) - dma_reset 0x08002f19 Thumb Code 64 at32f421_dma.o(.text.dma_reset) - enableCompInterrupts 0x08002f59 Thumb Code 18 comparator.o(.text.enableCompInterrupts) - enableCorePeripherals 0x08002f6d Thumb Code 270 peripherals.o(.text.enableCorePeripherals) - flash_flag_clear 0x0800307d Thumb Code 12 at32f421_flash.o(.text.flash_flag_clear) - flash_lock 0x08003089 Thumb Code 18 at32f421_flash.o(.text.flash_lock) - flash_sector_erase 0x0800309d Thumb Code 398 at32f421_flash.o(.text.flash_sector_erase) - flash_unlock 0x0800322d Thumb Code 30 at32f421_flash.o(.text.flash_unlock) - flash_word_program 0x0800324d Thumb Code 390 at32f421_flash.o(.text.flash_word_program) - fullBrake 0x080033d5 Thumb Code 140 phaseouts.o(.text.fullBrake) - generatePwmTimerEvent 0x08003461 Thumb Code 18 peripherals.o(.text.generatePwmTimerEvent) - getAbsDif 0x08003475 Thumb Code 8 functions.o(.text.getAbsDif) - getCompOutputLevel 0x0800347d Thumb Code 14 comparator.o(.text.getCompOutputLevel) - getConvertedDegrees 0x0800348d Thumb Code 38 adc.o(.text.getConvertedDegrees) - getInputPinState 0x080034b5 Thumb Code 16 io.o(.text.getInputPinState) - gpio_init 0x080034c5 Thumb Code 118 at32f421_gpio.o(.text.gpio_init) - gpio_mode_QUICK 0x0800353d Thumb Code 22 functions.o(.text.gpio_mode_QUICK) - gpio_mode_set 0x08003555 Thumb Code 38 functions.o(.text.gpio_mode_set) - gpio_pin_mux_config 0x0800357d Thumb Code 44 at32f421_gpio.o(.text.gpio_pin_mux_config) - initAfterJump 0x080035a9 Thumb Code 4 peripherals.o(.text.initAfterJump) - initCorePeripherals 0x080035ad Thumb Code 408 peripherals.o(.text.initCorePeripherals) - interruptRoutine 0x08003745 Thumb Code 180 main.o(.text.interruptRoutine) - loadEEpromSettings 0x080037f9 Thumb Code 802 main.o(.text.loadEEpromSettings) - main 0x08003b1d Thumb Code 3088 main.o(.text.main) - makeTelemPackage 0x0800472d Thumb Code 270 serial_telemetry.o(.text.makeTelemPackage) - make_dshot_package 0x0800483d Thumb Code 484 dshot.o(.text.make_dshot_package) - map 0x08004a21 Thumb Code 108 functions.o(.text.map) - maskPhaseInterrupts 0x08004a8d Thumb Code 24 comparator.o(.text.maskPhaseInterrupts) - nvic_irq_enable 0x08004aa5 Thumb Code 114 at32f421_misc.o(.text.nvic_irq_enable) - playBeaconTune3 0x08004b19 Thumb Code 148 sounds.o(.text.playBeaconTune3) - playBlueJayTune 0x08004bad Thumb Code 302 sounds.o(.text.playBlueJayTune) - playChangedTone 0x08004cdd Thumb Code 104 sounds.o(.text.playChangedTone) - playDefaultTone 0x08004d45 Thumb Code 104 sounds.o(.text.playDefaultTone) - playInputTune 0x08004dad Thumb Code 122 sounds.o(.text.playInputTune) - playInputTune2 0x08004e29 Thumb Code 124 sounds.o(.text.playInputTune2) - playStartupTune 0x08004ea5 Thumb Code 144 sounds.o(.text.playStartupTune) - processDshot 0x08004f35 Thumb Code 56 main.o(.text.processDshot) - proportionalBrake 0x08004f6d Thumb Code 120 phaseouts.o(.text.proportionalBrake) - read_flash_bin 0x08004fe5 Thumb Code 98 eeprom.o(.text.read_flash_bin) - receiveDshotDma 0x08005049 Thumb Code 126 io.o(.text.receiveDshotDma) - resetInputCaptureTimer 0x080050c9 Thumb Code 16 peripherals.o(.text.resetInputCaptureTimer) - saveEEpromSettings 0x080050d9 Thumb Code 126 main.o(.text.saveEEpromSettings) - save_flash_nolib 0x08005159 Thumb Code 290 eeprom.o(.text.save_flash_nolib) - sendDshotDma 0x0800527d Thumb Code 154 io.o(.text.sendDshotDma) - send_telem_DMA 0x08005319 Thumb Code 28 serial_telemetry.o(.text.send_telem_DMA) - setInput 0x08005335 Thumb Code 1910 main.o(.text.setInput) - setInputPullUp 0x08005aad Thumb Code 18 io.o(.text.setInputPullUp) - setPWMCompare1 0x08005ac1 Thumb Code 12 peripherals.o(.text.setPWMCompare1) - setPWMCompare2 0x08005acd Thumb Code 12 peripherals.o(.text.setPWMCompare2) - setPWMCompare3 0x08005ad9 Thumb Code 12 peripherals.o(.text.setPWMCompare3) - setVolume 0x08005ae5 Thumb Code 20 sounds.o(.text.setVolume) - system_clock_config 0x08005af9 Thumb Code 118 peripherals.o(.text.system_clock_config) - system_core_clock_update 0x08005b71 Thumb Code 224 system_at32f421.o(.text.system_core_clock_update) - telem_UART_Init 0x08005c61 Thumb Code 244 serial_telemetry.o(.text.telem_UART_Init) - tenKhzRoutine 0x08005d55 Thumb Code 1252 main.o(.text.tenKhzRoutine) - tmr_channel_enable 0x08006239 Thumb Code 150 at32f421_tmr.o(.text.tmr_channel_enable) - tmr_output_channel_buffer_enable 0x080062d1 Thumb Code 98 at32f421_tmr.o(.text.tmr_output_channel_buffer_enable) - tmr_period_buffer_enable 0x08006335 Thumb Code 18 at32f421_tmr.o(.text.tmr_period_buffer_enable) - tmr_reset 0x08006349 Thumb Code 186 at32f421_tmr.o(.text.tmr_reset) - transfercomplete 0x08006405 Thumb Code 412 signal.o(.text.transfercomplete) - usart_dma_transmitter_enable 0x080065a1 Thumb Code 18 at32f421_usart.o(.text.usart_dma_transmitter_enable) - usart_enable 0x080065b5 Thumb Code 18 at32f421_usart.o(.text.usart_enable) - usart_init 0x080065c9 Thumb Code 134 at32f421_usart.o(.text.usart_init) - usart_receiver_enable 0x08006651 Thumb Code 18 at32f421_usart.o(.text.usart_receiver_enable) - usart_single_line_halfduplex_select 0x08006665 Thumb Code 18 at32f421_usart.o(.text.usart_single_line_halfduplex_select) - usart_transmitter_enable 0x08006679 Thumb Code 18 at32f421_usart.o(.text.usart_transmitter_enable) - zcfoundroutine 0x0800668d Thumb Code 274 main.o(.text.zcfoundroutine) - __aeabi_fadd 0x080067a1 Thumb Code 0 faddsub_clz.o(x$fpl$fadd) - _fadd 0x080067a1 Thumb Code 196 faddsub_clz.o(x$fpl$fadd) - __aeabi_fcmpeq 0x08006865 Thumb Code 0 fcmp.o(x$fpl$fcmp) - _feq 0x08006865 Thumb Code 14 fcmp.o(x$fpl$fcmp) - _fneq 0x08006873 Thumb Code 14 fcmp.o(x$fpl$fcmp) - __aeabi_fcmpgt 0x08006881 Thumb Code 0 fcmp.o(x$fpl$fcmp) - _fgr 0x08006881 Thumb Code 14 fcmp.o(x$fpl$fcmp) - __aeabi_fcmpge 0x0800688f Thumb Code 0 fcmp.o(x$fpl$fcmp) - _fgeq 0x0800688f Thumb Code 14 fcmp.o(x$fpl$fcmp) - __aeabi_fcmple 0x0800689d Thumb Code 0 fcmp.o(x$fpl$fcmp) - _fleq 0x0800689d Thumb Code 14 fcmp.o(x$fpl$fcmp) - __aeabi_fcmplt 0x080068ab Thumb Code 0 fcmp.o(x$fpl$fcmp) - _fls 0x080068ab Thumb Code 14 fcmp.o(x$fpl$fcmp) - __fpl_fcmp_Inf 0x080068b9 Thumb Code 24 fcmpi.o(x$fpl$fcmpinf) - __aeabi_fdiv 0x080068d1 Thumb Code 0 fdiv.o(x$fpl$fdiv) - _fdiv 0x080068d1 Thumb Code 384 fdiv.o(x$fpl$fdiv) - __aeabi_cfcmpeq 0x08006a55 Thumb Code 0 feqf.o(x$fpl$feqf) - _fcmpeq 0x08006a55 Thumb Code 104 feqf.o(x$fpl$feqf) - __aeabi_f2iz 0x08006abd Thumb Code 0 ffix.o(x$fpl$ffix) - _ffix 0x08006abd Thumb Code 54 ffix.o(x$fpl$ffix) - __aeabi_i2f 0x08006af5 Thumb Code 0 fflt_clz.o(x$fpl$fflt) - _fflt 0x08006af5 Thumb Code 48 fflt_clz.o(x$fpl$fflt) - _fcmpge 0x08006b25 Thumb Code 104 fgeqf.o(x$fpl$fgeqf) - __aeabi_cfcmple 0x08006b8d Thumb Code 0 fleqf.o(x$fpl$fleqf) - _fcmple 0x08006b8d Thumb Code 104 fleqf.o(x$fpl$fleqf) - __fpl_fcmple_InfNaN 0x08006bdf Thumb Code 0 fleqf.o(x$fpl$fleqf) - __fpl_fnaninf 0x08006bf5 Thumb Code 140 fnaninf.o(x$fpl$fnaninf) - __fpl_fretinf 0x08006c81 Thumb Code 10 fretinf.o(x$fpl$fretinf) - __aeabi_fsub 0x08006c8d Thumb Code 0 faddsub_clz.o(x$fpl$fsub) - _fsub 0x08006c8d Thumb Code 234 faddsub_clz.o(x$fpl$fsub) - __I$use$fp 0x08006d76 Number 0 usenofp.o(x$fpl$usenofp) - gcr_encode_table 0x08006d7e Data 16 dshot.o(.rodata.gcr_encode_table) - Region$$Table$$Base 0x08006d90 Number 0 anon$$obj.o(Region$$Table) - Region$$Table$$Limit 0x08006db0 Number 0 anon$$obj.o(Region$$Table) + __scatterload_loop 0x080010df Thumb Code 0 __scatter.o(!!!scatter) + __decompress 0x08001131 Thumb Code 90 __dczerorl2.o(!!dczerorl2) + __decompress1 0x08001131 Thumb Code 0 __dczerorl2.o(!!dczerorl2) + __scatterload_copy 0x0800118d Thumb Code 26 __scatter_copy.o(!!handler_copy) + __scatterload_null 0x080011a9 Thumb Code 2 __scatter.o(!!handler_null) + __scatterload_zeroinit 0x080011ad Thumb Code 28 __scatter_zi.o(!!handler_zi) + __rt_lib_init 0x080011c9 Thumb Code 0 libinit.o(.ARM.Collect$$libinit$$00000000) + __rt_lib_init_alloca_1 0x080011cb Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000030) + __rt_lib_init_argv_1 0x080011cb Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$0000002E) + __rt_lib_init_atexit_1 0x080011cb Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$0000001D) + __rt_lib_init_clock_1 0x080011cb Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000023) + __rt_lib_init_cpp_1 0x080011cb Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000034) + __rt_lib_init_exceptions_1 0x080011cb Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000032) + __rt_lib_init_fp_1 0x080011cb Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000002) + __rt_lib_init_fp_trap_1 0x080011cb Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000021) + __rt_lib_init_getenv_1 0x080011cb Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000025) + __rt_lib_init_heap_1 0x080011cb Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$0000000C) + __rt_lib_init_lc_collate_1 0x080011cb Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000013) + __rt_lib_init_lc_ctype_1 0x080011cb Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000015) + __rt_lib_init_lc_monetary_1 0x080011cb Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000017) + __rt_lib_init_lc_numeric_1 0x080011cb Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000019) + __rt_lib_init_lc_time_1 0x080011cb Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$0000001B) + __rt_lib_init_preinit_1 0x080011cb Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000006) + __rt_lib_init_rand_1 0x080011cb Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000010) + __rt_lib_init_relocate_pie_1 0x080011cb Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000004) + __rt_lib_init_return 0x080011cb Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000035) + __rt_lib_init_signal_1 0x080011cb Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$0000001F) + __rt_lib_init_stdio_1 0x080011cb Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000027) + __rt_lib_init_user_alloc_1 0x080011cb Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$0000000E) + __rt_lib_shutdown 0x080011cd Thumb Code 0 libshutdown.o(.ARM.Collect$$libshutdown$$00000000) + __rt_lib_shutdown_cpp_1 0x080011cf Thumb Code 0 libshutdown2.o(.ARM.Collect$$libshutdown$$00000002) + __rt_lib_shutdown_fp_trap_1 0x080011cf Thumb Code 0 libshutdown2.o(.ARM.Collect$$libshutdown$$00000007) + __rt_lib_shutdown_heap_1 0x080011cf Thumb Code 0 libshutdown2.o(.ARM.Collect$$libshutdown$$0000000F) + __rt_lib_shutdown_return 0x080011cf Thumb Code 0 libshutdown2.o(.ARM.Collect$$libshutdown$$00000010) + __rt_lib_shutdown_signal_1 0x080011cf Thumb Code 0 libshutdown2.o(.ARM.Collect$$libshutdown$$0000000A) + __rt_lib_shutdown_stdio_1 0x080011cf Thumb Code 0 libshutdown2.o(.ARM.Collect$$libshutdown$$00000004) + __rt_lib_shutdown_user_alloc_1 0x080011cf Thumb Code 0 libshutdown2.o(.ARM.Collect$$libshutdown$$0000000C) + __rt_entry 0x080011d1 Thumb Code 0 __rtentry.o(.ARM.Collect$$rtentry$$00000000) + __rt_entry_presh_1 0x080011d1 Thumb Code 0 __rtentry2.o(.ARM.Collect$$rtentry$$00000002) + __rt_entry_sh 0x080011d1 Thumb Code 0 __rtentry4.o(.ARM.Collect$$rtentry$$00000004) + __rt_entry_li 0x080011d7 Thumb Code 0 __rtentry2.o(.ARM.Collect$$rtentry$$0000000A) + __rt_entry_postsh_1 0x080011d7 Thumb Code 0 __rtentry2.o(.ARM.Collect$$rtentry$$00000009) + __rt_entry_main 0x080011db Thumb Code 0 __rtentry2.o(.ARM.Collect$$rtentry$$0000000D) + __rt_entry_postli_1 0x080011db Thumb Code 0 __rtentry2.o(.ARM.Collect$$rtentry$$0000000C) + __rt_exit 0x080011e3 Thumb Code 0 rtexit.o(.ARM.Collect$$rtexit$$00000000) + __rt_exit_ls 0x080011e5 Thumb Code 0 rtexit2.o(.ARM.Collect$$rtexit$$00000003) + __rt_exit_prels_1 0x080011e5 Thumb Code 0 rtexit2.o(.ARM.Collect$$rtexit$$00000002) + __rt_exit_exit 0x080011e9 Thumb Code 0 rtexit2.o(.ARM.Collect$$rtexit$$00000004) + Reset_Handler 0x080011f1 Thumb Code 8 startup_at32f421.o(.text) + NMI_Handler 0x080011f9 Thumb Code 2 startup_at32f421.o(.text) + CRM_IRQHandler 0x0800120b Thumb Code 0 startup_at32f421.o(.text) + ERTC_IRQHandler 0x0800120b Thumb Code 0 startup_at32f421.o(.text) + EXINT1_0_IRQHandler 0x0800120b Thumb Code 0 startup_at32f421.o(.text) + EXINT3_2_IRQHandler 0x0800120b Thumb Code 0 startup_at32f421.o(.text) + FLASH_IRQHandler 0x0800120b Thumb Code 0 startup_at32f421.o(.text) + I2C1_ERR_IRQHandler 0x0800120b Thumb Code 0 startup_at32f421.o(.text) + I2C1_EVT_IRQHandler 0x0800120b Thumb Code 0 startup_at32f421.o(.text) + I2C2_ERR_IRQHandler 0x0800120b Thumb Code 0 startup_at32f421.o(.text) + I2C2_EVT_IRQHandler 0x0800120b Thumb Code 0 startup_at32f421.o(.text) + PVM_IRQHandler 0x0800120b Thumb Code 0 startup_at32f421.o(.text) + SPI1_IRQHandler 0x0800120b Thumb Code 0 startup_at32f421.o(.text) + SPI2_IRQHandler 0x0800120b Thumb Code 0 startup_at32f421.o(.text) + TMR17_GLOBAL_IRQHandler 0x0800120b Thumb Code 0 startup_at32f421.o(.text) + TMR1_BRK_OVF_TRG_HALL_IRQHandler 0x0800120b Thumb Code 0 startup_at32f421.o(.text) + TMR1_CH_IRQHandler 0x0800120b Thumb Code 0 startup_at32f421.o(.text) + TMR6_GLOBAL_IRQHandler 0x0800120b Thumb Code 0 startup_at32f421.o(.text) + USART2_IRQHandler 0x0800120b Thumb Code 0 startup_at32f421.o(.text) + WWDT_IRQHandler 0x0800120b Thumb Code 0 startup_at32f421.o(.text) + __user_initial_stackheap 0x0800120d Thumb Code 0 startup_at32f421.o(.text) + __aeabi_memclr4 0x08001231 Thumb Code 0 rt_memclr_w.o(.text) + __aeabi_memclr8 0x08001231 Thumb Code 0 rt_memclr_w.o(.text) + __rt_memclr_w 0x08001231 Thumb Code 0 rt_memclr_w.o(.text) + _memset_w 0x08001235 Thumb Code 74 rt_memclr_w.o(.text) + __use_two_region_memory 0x0800127f Thumb Code 2 heapauxi.o(.text) + __rt_heap_escrow$2region 0x08001281 Thumb Code 2 heapauxi.o(.text) + __rt_heap_expand$2region 0x08001283 Thumb Code 2 heapauxi.o(.text) + __user_setup_stackheap 0x08001285 Thumb Code 74 sys_stackheap_outer.o(.text) + exit 0x080012cf Thumb Code 18 exit.o(.text) + __user_libspace 0x080012e1 Thumb Code 8 libspace.o(.text) + __user_perproc_libspace 0x080012e1 Thumb Code 0 libspace.o(.text) + __user_perthread_libspace 0x080012e1 Thumb Code 0 libspace.o(.text) + _sys_exit 0x080012e9 Thumb Code 8 sys_exit.o(.text) + __I$use$semihosting 0x080012f5 Thumb Code 0 use_no_semi.o(.text) + __use_no_semihosting_swi 0x080012f5 Thumb Code 2 use_no_semi.o(.text) + __semihosting_library_function 0x080012f7 Thumb Code 0 indicate_semi.o(.text) + ADC1_CMP_IRQHandler 0x080012f9 Thumb Code 54 at32f421_it.o(.text.ADC1_CMP_IRQHandler) + ADC_DMA_Callback 0x08001331 Thumb Code 46 adc.o(.text.ADC_DMA_Callback) + ADC_Init 0x08001361 Thumb Code 278 adc.o(.text.ADC_Init) + BusFault_Handler 0x08001479 Thumb Code 2 at32f421_it.o(.text.BusFault_Handler) + DMA1_Channel1_IRQHandler 0x0800147d Thumb Code 42 at32f421_it.o(.text.DMA1_Channel1_IRQHandler) + DMA1_Channel3_2_IRQHandler 0x080014a9 Thumb Code 60 at32f421_it.o(.text.DMA1_Channel3_2_IRQHandler) + DMA1_Channel5_4_IRQHandler 0x080014e5 Thumb Code 166 at32f421_it.o(.text.DMA1_Channel5_4_IRQHandler) + DebugMon_Handler 0x0800158d Thumb Code 2 at32f421_it.o(.text.DebugMon_Handler) + EXINT15_4_IRQHandler 0x08001591 Thumb Code 40 at32f421_it.o(.text.EXINT15_4_IRQHandler) + HardFault_Handler 0x080015b9 Thumb Code 2 at32f421_it.o(.text.HardFault_Handler) + MX_IWDG_Init 0x080015bd Thumb Code 38 peripherals.o(.text.MX_IWDG_Init) + MemManage_Handler 0x080015e5 Thumb Code 2 at32f421_it.o(.text.MemManage_Handler) + PendSV_Handler 0x080015e9 Thumb Code 2 at32f421_it.o(.text.PendSV_Handler) + PeriodElapsedCallback 0x080015ed Thumb Code 218 main.o(.text.PeriodElapsedCallback) + SVC_Handler 0x080016c9 Thumb Code 2 at32f421_it.o(.text.SVC_Handler) + SysTick_Handler 0x080016cd Thumb Code 2 at32f421_it.o(.text.SysTick_Handler) + SystemInit 0x080016d1 Thumb Code 140 system_at32f421.o(.text.SystemInit) + TIM1_Init 0x0800175d Thumb Code 278 peripherals.o(.text.TIM1_Init) + TMR14_GLOBAL_IRQHandler 0x08001875 Thumb Code 18 at32f421_it.o(.text.TMR14_GLOBAL_IRQHandler) + TMR15_GLOBAL_IRQHandler 0x08001889 Thumb Code 22 at32f421_it.o(.text.TMR15_GLOBAL_IRQHandler) + TMR16_GLOBAL_IRQHandler 0x080018a1 Thumb Code 16 at32f421_it.o(.text.TMR16_GLOBAL_IRQHandler) + TMR3_GLOBAL_IRQHandler 0x080018b1 Thumb Code 34 at32f421_it.o(.text.TMR3_GLOBAL_IRQHandler) + USART1_IRQHandler 0x080018d5 Thumb Code 2 at32f421_it.o(.text.USART1_IRQHandler) + UsageFault_Handler 0x080018d9 Thumb Code 2 at32f421_it.o(.text.UsageFault_Handler) + adc_base_config 0x08001909 Thumb Code 68 at32f421_adc.o(.text.adc_base_config) + adc_base_default_para_init 0x0800194d Thumb Code 8 at32f421_adc.o(.text.adc_base_default_para_init) + adc_calibration_init 0x08001955 Thumb Code 10 at32f421_adc.o(.text.adc_calibration_init) + adc_calibration_init_status_get 0x08001961 Thumb Code 8 at32f421_adc.o(.text.adc_calibration_init_status_get) + adc_calibration_start 0x08001969 Thumb Code 10 at32f421_adc.o(.text.adc_calibration_start) + adc_calibration_status_get 0x08001975 Thumb Code 8 at32f421_adc.o(.text.adc_calibration_status_get) + adc_dma_mode_enable 0x0800197d Thumb Code 18 at32f421_adc.o(.text.adc_dma_mode_enable) + adc_enable 0x08001991 Thumb Code 10 at32f421_adc.o(.text.adc_enable) + adc_ordinary_channel_set 0x0800199d Thumb Code 620 at32f421_adc.o(.text.adc_ordinary_channel_set) + adc_ordinary_conversion_trigger_set 0x08001c09 Thumb Code 58 at32f421_adc.o(.text.adc_ordinary_conversion_trigger_set) + adc_ordinary_software_trigger_enable 0x08001c45 Thumb Code 18 at32f421_adc.o(.text.adc_ordinary_software_trigger_enable) + adc_tempersensor_vintrv_enable 0x08001c59 Thumb Code 26 at32f421_adc.o(.text.adc_tempersensor_vintrv_enable) + allOff 0x08001c75 Thumb Code 138 phaseouts.o(.text.allOff) + allpwm 0x08001d01 Thumb Code 186 phaseouts.o(.text.allpwm) + changeCompInput 0x08001dbd Thumb Code 36 comparator.o(.text.changeCompInput) + cmp_enable 0x08001de1 Thumb Code 22 at32f421_cmp.o(.text.cmp_enable) + comStep 0x08001df9 Thumb Code 984 phaseouts.o(.text.comStep) + computeDshotDMA 0x080021d1 Thumb Code 1236 dshot.o(.text.computeDshotDMA) + computeServoInput 0x080026a5 Thumb Code 462 signal.o(.text.computeServoInput) + crm_adc_clock_div_set 0x08002875 Thumb Code 28 at32f421_crm.o(.text.crm_adc_clock_div_set) + crm_ahb_div_set 0x08002891 Thumb Code 26 at32f421_crm.o(.text.crm_ahb_div_set) + crm_apb1_div_set 0x080028ad Thumb Code 26 at32f421_crm.o(.text.crm_apb1_div_set) + crm_apb2_div_set 0x080028c9 Thumb Code 26 at32f421_crm.o(.text.crm_apb2_div_set) + crm_auto_step_mode_enable 0x080028e5 Thumb Code 24 at32f421_crm.o(.text.crm_auto_step_mode_enable) + crm_clock_source_enable 0x080028fd Thumb Code 130 at32f421_crm.o(.text.crm_clock_source_enable) + crm_clocks_freq_get 0x08002981 Thumb Code 256 at32f421_crm.o(.text.crm_clocks_freq_get) + crm_flag_get 0x08002a99 Thumb Code 26 at32f421_crm.o(.text.crm_flag_get) + crm_periph_clock_enable 0x08002ab5 Thumb Code 40 at32f421_crm.o(.text.crm_periph_clock_enable) + crm_periph_reset 0x08002add Thumb Code 40 at32f421_crm.o(.text.crm_periph_reset) + crm_pll_config 0x08002b05 Thumb Code 78 at32f421_crm.o(.text.crm_pll_config) + crm_reset 0x08002b55 Thumb Code 122 at32f421_crm.o(.text.crm_reset) + crm_sysclk_switch 0x08002bd1 Thumb Code 18 at32f421_crm.o(.text.crm_sysclk_switch) + crm_sysclk_switch_status_get 0x08002be5 Thumb Code 16 at32f421_crm.o(.text.crm_sysclk_switch_status_get) + delayMicros 0x08002bf5 Thumb Code 44 functions.o(.text.delayMicros) + delayMillis 0x08002c21 Thumb Code 78 functions.o(.text.delayMillis) + detectInput 0x08002c71 Thumb Code 640 signal.o(.text.detectInput) + dma_channel_enable 0x08002ef1 Thumb Code 10 at32f421_dma.o(.text.dma_channel_enable) + dma_default_para_init 0x08002efd Thumb Code 14 at32f421_dma.o(.text.dma_default_para_init) + dma_flag_get 0x08002f0d Thumb Code 16 at32f421_dma.o(.text.dma_flag_get) + dma_init 0x08002f1d Thumb Code 124 at32f421_dma.o(.text.dma_init) + dma_reset 0x08002f99 Thumb Code 64 at32f421_dma.o(.text.dma_reset) + enableCompInterrupts 0x08002fd9 Thumb Code 18 comparator.o(.text.enableCompInterrupts) + enableCorePeripherals 0x08002fed Thumb Code 270 peripherals.o(.text.enableCorePeripherals) + flash_flag_clear 0x080030fd Thumb Code 12 at32f421_flash.o(.text.flash_flag_clear) + flash_lock 0x08003109 Thumb Code 18 at32f421_flash.o(.text.flash_lock) + flash_sector_erase 0x0800311d Thumb Code 398 at32f421_flash.o(.text.flash_sector_erase) + flash_unlock 0x080032ad Thumb Code 30 at32f421_flash.o(.text.flash_unlock) + flash_word_program 0x080032cd Thumb Code 390 at32f421_flash.o(.text.flash_word_program) + fullBrake 0x08003455 Thumb Code 140 phaseouts.o(.text.fullBrake) + generatePwmTimerEvent 0x080034e1 Thumb Code 18 peripherals.o(.text.generatePwmTimerEvent) + getAbsDif 0x080034f5 Thumb Code 8 functions.o(.text.getAbsDif) + getCompOutputLevel 0x080034fd Thumb Code 14 comparator.o(.text.getCompOutputLevel) + getConvertedDegrees 0x0800350d Thumb Code 38 adc.o(.text.getConvertedDegrees) + getInputPinState 0x08003535 Thumb Code 16 io.o(.text.getInputPinState) + gpio_init 0x08003545 Thumb Code 122 at32f421_gpio.o(.text.gpio_init) + gpio_mode_QUICK 0x080035c1 Thumb Code 22 functions.o(.text.gpio_mode_QUICK) + gpio_mode_set 0x080035d9 Thumb Code 38 functions.o(.text.gpio_mode_set) + gpio_pin_mux_config 0x08003601 Thumb Code 44 at32f421_gpio.o(.text.gpio_pin_mux_config) + initAfterJump 0x0800362d Thumb Code 4 peripherals.o(.text.initAfterJump) + initCorePeripherals 0x08003631 Thumb Code 408 peripherals.o(.text.initCorePeripherals) + interruptRoutine 0x080037c9 Thumb Code 174 main.o(.text.interruptRoutine) + loadEEpromSettings 0x08003879 Thumb Code 778 main.o(.text.loadEEpromSettings) + main 0x08003b85 Thumb Code 3032 main.o(.text.main) + makeTelemPackage 0x0800475d Thumb Code 270 serial_telemetry.o(.text.makeTelemPackage) + make_dshot_package 0x0800486d Thumb Code 450 dshot.o(.text.make_dshot_package) + map 0x08004a31 Thumb Code 80 functions.o(.text.map) + maskPhaseInterrupts 0x08004a81 Thumb Code 24 comparator.o(.text.maskPhaseInterrupts) + nvic_irq_enable 0x08004a99 Thumb Code 114 at32f421_misc.o(.text.nvic_irq_enable) + playBeaconTune3 0x08004b0d Thumb Code 148 sounds.o(.text.playBeaconTune3) + playBlueJayTune 0x08004ba1 Thumb Code 302 sounds.o(.text.playBlueJayTune) + playChangedTone 0x08004cd1 Thumb Code 104 sounds.o(.text.playChangedTone) + playDefaultTone 0x08004d39 Thumb Code 104 sounds.o(.text.playDefaultTone) + playInputTune 0x08004da1 Thumb Code 122 sounds.o(.text.playInputTune) + playInputTune2 0x08004e1d Thumb Code 124 sounds.o(.text.playInputTune2) + playStartupTune 0x08004e99 Thumb Code 144 sounds.o(.text.playStartupTune) + processDshot 0x08004f29 Thumb Code 56 main.o(.text.processDshot) + proportionalBrake 0x08004f61 Thumb Code 120 phaseouts.o(.text.proportionalBrake) + receiveDshotDma 0x08004fd9 Thumb Code 126 io.o(.text.receiveDshotDma) + resetInputCaptureTimer 0x08005059 Thumb Code 16 peripherals.o(.text.resetInputCaptureTimer) + saveEEpromSettings 0x08005069 Thumb Code 114 main.o(.text.saveEEpromSettings) + sendDshotDma 0x080050dd Thumb Code 154 io.o(.text.sendDshotDma) + send_telem_DMA 0x08005179 Thumb Code 28 serial_telemetry.o(.text.send_telem_DMA) + setInput 0x08005195 Thumb Code 1826 main.o(.text.setInput) + setInputPullUp 0x080058b9 Thumb Code 18 io.o(.text.setInputPullUp) + setPWMCompare1 0x080058cd Thumb Code 12 peripherals.o(.text.setPWMCompare1) + setPWMCompare2 0x080058d9 Thumb Code 12 peripherals.o(.text.setPWMCompare2) + setPWMCompare3 0x080058e5 Thumb Code 12 peripherals.o(.text.setPWMCompare3) + setVolume 0x080058f1 Thumb Code 20 sounds.o(.text.setVolume) + system_clock_config 0x08005905 Thumb Code 118 peripherals.o(.text.system_clock_config) + system_core_clock_update 0x0800597d Thumb Code 212 system_at32f421.o(.text.system_core_clock_update) + telem_UART_Init 0x08005a61 Thumb Code 244 serial_telemetry.o(.text.telem_UART_Init) + tenKhzRoutine 0x08005b55 Thumb Code 1172 main.o(.text.tenKhzRoutine) + tmr_channel_enable 0x08005fe9 Thumb Code 150 at32f421_tmr.o(.text.tmr_channel_enable) + tmr_output_channel_buffer_enable 0x08006081 Thumb Code 94 at32f421_tmr.o(.text.tmr_output_channel_buffer_enable) + tmr_period_buffer_enable 0x080060e1 Thumb Code 18 at32f421_tmr.o(.text.tmr_period_buffer_enable) + tmr_reset 0x080060f5 Thumb Code 182 at32f421_tmr.o(.text.tmr_reset) + transfercomplete 0x080061ad Thumb Code 412 signal.o(.text.transfercomplete) + usart_dma_transmitter_enable 0x08006349 Thumb Code 18 at32f421_usart.o(.text.usart_dma_transmitter_enable) + usart_enable 0x0800635d Thumb Code 18 at32f421_usart.o(.text.usart_enable) + usart_init 0x08006371 Thumb Code 134 at32f421_usart.o(.text.usart_init) + usart_receiver_enable 0x080063f9 Thumb Code 18 at32f421_usart.o(.text.usart_receiver_enable) + usart_single_line_halfduplex_select 0x0800640d Thumb Code 18 at32f421_usart.o(.text.usart_single_line_halfduplex_select) + usart_transmitter_enable 0x08006421 Thumb Code 18 at32f421_usart.o(.text.usart_transmitter_enable) + zcfoundroutine 0x08006435 Thumb Code 274 main.o(.text.zcfoundroutine) + __aeabi_fadd 0x08006549 Thumb Code 0 faddsub_clz.o(x$fpl$fadd) + _fadd 0x08006549 Thumb Code 196 faddsub_clz.o(x$fpl$fadd) + __aeabi_fcmpeq 0x0800660d Thumb Code 0 fcmp.o(x$fpl$fcmp) + _feq 0x0800660d Thumb Code 14 fcmp.o(x$fpl$fcmp) + _fneq 0x0800661b Thumb Code 14 fcmp.o(x$fpl$fcmp) + __aeabi_fcmpgt 0x08006629 Thumb Code 0 fcmp.o(x$fpl$fcmp) + _fgr 0x08006629 Thumb Code 14 fcmp.o(x$fpl$fcmp) + __aeabi_fcmpge 0x08006637 Thumb Code 0 fcmp.o(x$fpl$fcmp) + _fgeq 0x08006637 Thumb Code 14 fcmp.o(x$fpl$fcmp) + __aeabi_fcmple 0x08006645 Thumb Code 0 fcmp.o(x$fpl$fcmp) + _fleq 0x08006645 Thumb Code 14 fcmp.o(x$fpl$fcmp) + __aeabi_fcmplt 0x08006653 Thumb Code 0 fcmp.o(x$fpl$fcmp) + _fls 0x08006653 Thumb Code 14 fcmp.o(x$fpl$fcmp) + __fpl_fcmp_Inf 0x08006661 Thumb Code 24 fcmpi.o(x$fpl$fcmpinf) + __aeabi_fdiv 0x08006679 Thumb Code 0 fdiv.o(x$fpl$fdiv) + _fdiv 0x08006679 Thumb Code 384 fdiv.o(x$fpl$fdiv) + __aeabi_cfcmpeq 0x080067fd Thumb Code 0 feqf.o(x$fpl$feqf) + _fcmpeq 0x080067fd Thumb Code 104 feqf.o(x$fpl$feqf) + __aeabi_f2iz 0x08006865 Thumb Code 0 ffix.o(x$fpl$ffix) + _ffix 0x08006865 Thumb Code 54 ffix.o(x$fpl$ffix) + __aeabi_i2f 0x0800689d Thumb Code 0 fflt_clz.o(x$fpl$fflt) + _fflt 0x0800689d Thumb Code 48 fflt_clz.o(x$fpl$fflt) + _fcmpge 0x080068cd Thumb Code 104 fgeqf.o(x$fpl$fgeqf) + __aeabi_cfcmple 0x08006935 Thumb Code 0 fleqf.o(x$fpl$fleqf) + _fcmple 0x08006935 Thumb Code 104 fleqf.o(x$fpl$fleqf) + __fpl_fcmple_InfNaN 0x08006987 Thumb Code 0 fleqf.o(x$fpl$fleqf) + __fpl_fnaninf 0x0800699d Thumb Code 140 fnaninf.o(x$fpl$fnaninf) + __fpl_fretinf 0x08006a29 Thumb Code 10 fretinf.o(x$fpl$fretinf) + __aeabi_fsub 0x08006a35 Thumb Code 0 faddsub_clz.o(x$fpl$fsub) + _fsub 0x08006a35 Thumb Code 234 faddsub_clz.o(x$fpl$fsub) + __I$use$fp 0x08006b1e Number 0 usenofp.o(x$fpl$usenofp) + gcr_encode_table 0x08006b26 Data 16 dshot.o(.rodata.gcr_encode_table) + Region$$Table$$Base 0x08006b38 Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x08006b68 Number 0 anon$$obj.o(Region$$Table) test 0x08007be0 Data 30 firmwareversion.o(.rodata.test) + save_flash_nolib 0x08007c01 Thumb Code 258 eeprom.o(.text.save_flash_nolib) eeprom_layout_version 0x20000000 Data 1 main.o(.data..L_MergedGlobals) comp_pwm 0x20000001 Data 1 main.o(.data..L_MergedGlobals) VARIABLE_PWM 0x20000002 Data 1 main.o(.data..L_MergedGlobals) @@ -2791,44 +2797,43 @@ Image Symbol Table average_signal_pulse 0x20000494 Data 4 signal.o(.bss..L_MergedGlobals.1) drive_by_rpm 0x20000498 Data 1 main.o(.bss..L_MergedGlobals.2) compute_dshot_flag 0x20000499 Data 1 main.o(.bss..L_MergedGlobals.2) - dir_reversed 0x2000049a Data 1 main.o(.bss..L_MergedGlobals.2) - bi_direction 0x2000049b Data 1 main.o(.bss..L_MergedGlobals.2) - brake_on_stop 0x2000049c Data 1 main.o(.bss..L_MergedGlobals.2) - stall_protection 0x2000049d Data 1 main.o(.bss..L_MergedGlobals.2) - use_sin_start 0x2000049e Data 1 main.o(.bss..L_MergedGlobals.2) - TLM_ON_INTERVAL 0x2000049f Data 1 main.o(.bss..L_MergedGlobals.2) - USE_HALL_SENSOR 0x200004a0 Data 1 main.o(.bss..L_MergedGlobals.2) - do_once_sinemode 0x200004a1 Data 1 main.o(.bss..L_MergedGlobals.2) - auto_advance 0x200004a2 Data 1 main.o(.bss..L_MergedGlobals.2) - LOW_VOLTAGE_CUTOFF 0x200004a3 Data 1 main.o(.bss..L_MergedGlobals.2) - RC_CAR_REVERSE 0x200004a4 Data 1 main.o(.bss..L_MergedGlobals.2) - return_to_center 0x200004a5 Data 1 main.o(.bss..L_MergedGlobals.2) - use_speed_control_loop 0x200004a6 Data 1 main.o(.bss..L_MergedGlobals.2) - use_current_limit 0x200004a7 Data 1 main.o(.bss..L_MergedGlobals.2) - desync_happened 0x200004a8 Data 1 main.o(.bss..L_MergedGlobals.2) - crawler_mode 0x200004a9 Data 1 main.o(.bss..L_MergedGlobals.2) - cell_count 0x200004aa Data 1 main.o(.bss..L_MergedGlobals.2) - brushed_direction_set 0x200004ab Data 1 main.o(.bss..L_MergedGlobals.2) - play_tone_flag 0x200004ac Data 1 main.o(.bss..L_MergedGlobals.2) - desync_check 0x200004ad Data 1 main.o(.bss..L_MergedGlobals.2) - adc_counter 0x200004ae Data 1 main.o(.bss..L_MergedGlobals.2) - send_telemetry 0x200004af Data 1 main.o(.bss..L_MergedGlobals.2) - prop_brake_active 0x200004b0 Data 1 main.o(.bss..L_MergedGlobals.2) - dshot_telemetry 0x200004b1 Data 1 main.o(.bss..L_MergedGlobals.2) - readIndex 0x200004b2 Data 1 main.o(.bss..L_MergedGlobals.2) - bemf_timeout_happened 0x200004b3 Data 1 main.o(.bss..L_MergedGlobals.2) - running 0x200004b4 Data 1 main.o(.bss..L_MergedGlobals.2) - stepper_sine 0x200004b5 Data 1 main.o(.bss..L_MergedGlobals.2) - stuckcounter 0x200004b6 Data 1 main.o(.bss..L_MergedGlobals.2) - bad_count 0x200004b7 Data 1 main.o(.bss..L_MergedGlobals.2) - armed 0x200004b8 Data 1 main.o(.bss..L_MergedGlobals.2) - inputSet 0x200004b9 Data 1 main.o(.bss..L_MergedGlobals.2) - dshot 0x200004ba Data 1 main.o(.bss..L_MergedGlobals.2) - servoPwm 0x200004bb Data 1 main.o(.bss..L_MergedGlobals.2) - zcfound 0x200004bc Data 1 main.o(.bss..L_MergedGlobals.2) - bemfcounter 0x200004bd Data 1 main.o(.bss..L_MergedGlobals.2) - auto_advance_level 0x200004be Data 1 main.o(.bss..L_MergedGlobals.2) - degrees_celsius 0x200004bf Data 1 main.o(.bss..L_MergedGlobals.2) + bi_direction 0x2000049a Data 1 main.o(.bss..L_MergedGlobals.2) + brake_on_stop 0x2000049b Data 1 main.o(.bss..L_MergedGlobals.2) + stall_protection 0x2000049c Data 1 main.o(.bss..L_MergedGlobals.2) + use_sin_start 0x2000049d Data 1 main.o(.bss..L_MergedGlobals.2) + TLM_ON_INTERVAL 0x2000049e Data 1 main.o(.bss..L_MergedGlobals.2) + USE_HALL_SENSOR 0x2000049f Data 1 main.o(.bss..L_MergedGlobals.2) + do_once_sinemode 0x200004a0 Data 1 main.o(.bss..L_MergedGlobals.2) + auto_advance 0x200004a1 Data 1 main.o(.bss..L_MergedGlobals.2) + LOW_VOLTAGE_CUTOFF 0x200004a2 Data 1 main.o(.bss..L_MergedGlobals.2) + RC_CAR_REVERSE 0x200004a3 Data 1 main.o(.bss..L_MergedGlobals.2) + return_to_center 0x200004a4 Data 1 main.o(.bss..L_MergedGlobals.2) + use_speed_control_loop 0x200004a5 Data 1 main.o(.bss..L_MergedGlobals.2) + use_current_limit 0x200004a6 Data 1 main.o(.bss..L_MergedGlobals.2) + desync_happened 0x200004a7 Data 1 main.o(.bss..L_MergedGlobals.2) + crawler_mode 0x200004a8 Data 1 main.o(.bss..L_MergedGlobals.2) + cell_count 0x200004a9 Data 1 main.o(.bss..L_MergedGlobals.2) + brushed_direction_set 0x200004aa Data 1 main.o(.bss..L_MergedGlobals.2) + play_tone_flag 0x200004ab Data 1 main.o(.bss..L_MergedGlobals.2) + desync_check 0x200004ac Data 1 main.o(.bss..L_MergedGlobals.2) + adc_counter 0x200004ad Data 1 main.o(.bss..L_MergedGlobals.2) + send_telemetry 0x200004ae Data 1 main.o(.bss..L_MergedGlobals.2) + prop_brake_active 0x200004af Data 1 main.o(.bss..L_MergedGlobals.2) + dshot_telemetry 0x200004b0 Data 1 main.o(.bss..L_MergedGlobals.2) + readIndex 0x200004b1 Data 1 main.o(.bss..L_MergedGlobals.2) + bemf_timeout_happened 0x200004b2 Data 1 main.o(.bss..L_MergedGlobals.2) + running 0x200004b3 Data 1 main.o(.bss..L_MergedGlobals.2) + stepper_sine 0x200004b4 Data 1 main.o(.bss..L_MergedGlobals.2) + stuckcounter 0x200004b5 Data 1 main.o(.bss..L_MergedGlobals.2) + bad_count 0x200004b6 Data 1 main.o(.bss..L_MergedGlobals.2) + armed 0x200004b7 Data 1 main.o(.bss..L_MergedGlobals.2) + inputSet 0x200004b8 Data 1 main.o(.bss..L_MergedGlobals.2) + dshot 0x200004b9 Data 1 main.o(.bss..L_MergedGlobals.2) + servoPwm 0x200004ba Data 1 main.o(.bss..L_MergedGlobals.2) + zcfound 0x200004bb Data 1 main.o(.bss..L_MergedGlobals.2) + bemfcounter 0x200004bc Data 1 main.o(.bss..L_MergedGlobals.2) + auto_advance_level 0x200004bd Data 1 main.o(.bss..L_MergedGlobals.2) + degrees_celsius 0x200004be Data 1 main.o(.bss..L_MergedGlobals.2) prop_brake_duty_cycle 0x200004c0 Data 2 main.o(.bss..L_MergedGlobals.2) ledcounter 0x200004c2 Data 2 main.o(.bss..L_MergedGlobals.2) one_khz_loop_counter 0x200004c4 Data 2 main.o(.bss..L_MergedGlobals.2) @@ -2876,7 +2881,7 @@ Image Symbol Table beep_volume 0x20000540 Data 1 sounds.o(.bss.beep_volume) dma_buffer 0x20000544 Data 256 io.o(.bss.dma_buffer) dshotcommand 0x20000644 Data 1 main.o(.bss.dshotcommand) - eepromBuffer 0x20000645 Data 176 main.o(.bss.eepromBuffer) + eepromBuffer 0x20000645 Data 176 eeprom.o(.bss.eepromBuffer) exti_int 0x200006f8 Data 4 at32f421_it.o(.bss.exti_int) gcr 0x200006fc Data 148 dshot.o(.bss.gcr) last_dshot_command 0x20000790 Data 1 main.o(.bss.last_dshot_command) @@ -2891,336 +2896,346 @@ Memory Map of the image Image Entry point : 0x080010cd - Load Region LR_IROM1 (Base: 0x08001000, Size: 0x00006170, Max: 0x0000ffff, ABSOLUTE, COMPRESSED[0x00006098]) + Load Region LR_IROM1 (Base: 0x08001000, Size: 0x00006030, Max: 0x00007bdf, ABSOLUTE, COMPRESSED[0x00005f58]) - Execution Region ER_IROM1 (Exec base: 0x08001000, Load base: 0x08001000, Size: 0x00005db0, Max: 0x0000ffff, ABSOLUTE) + Execution Region ER_IROM1 (Exec base: 0x08001000, Load base: 0x08001000, Size: 0x00005b68, Max: 0x00007bdf, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object 0x08001000 0x08001000 0x000000cc Data RO 1353 RESET startup_at32f421.o - 0x080010cc 0x080010cc 0x00000008 Code RO 1362 * !!!main c_w.l(__main.o) - 0x080010d4 0x080010d4 0x00000034 Code RO 1564 !!!scatter c_w.l(__scatter.o) - 0x08001108 0x08001108 0x0000005a Code RO 1562 !!dczerorl2 c_w.l(__dczerorl2.o) - 0x08001162 0x08001162 0x00000002 PAD - 0x08001164 0x08001164 0x0000001c Code RO 1566 !!handler_zi c_w.l(__scatter_zi.o) - 0x08001180 0x08001180 0x00000002 Code RO 1424 .ARM.Collect$$libinit$$00000000 c_w.l(libinit.o) - 0x08001182 0x08001182 0x00000000 Code RO 1431 .ARM.Collect$$libinit$$00000002 c_w.l(libinit2.o) - 0x08001182 0x08001182 0x00000000 Code RO 1433 .ARM.Collect$$libinit$$00000004 c_w.l(libinit2.o) - 0x08001182 0x08001182 0x00000000 Code RO 1435 .ARM.Collect$$libinit$$00000006 c_w.l(libinit2.o) - 0x08001182 0x08001182 0x00000000 Code RO 1438 .ARM.Collect$$libinit$$0000000C c_w.l(libinit2.o) - 0x08001182 0x08001182 0x00000000 Code RO 1440 .ARM.Collect$$libinit$$0000000E c_w.l(libinit2.o) - 0x08001182 0x08001182 0x00000000 Code RO 1442 .ARM.Collect$$libinit$$00000010 c_w.l(libinit2.o) - 0x08001182 0x08001182 0x00000000 Code RO 1445 .ARM.Collect$$libinit$$00000013 c_w.l(libinit2.o) - 0x08001182 0x08001182 0x00000000 Code RO 1447 .ARM.Collect$$libinit$$00000015 c_w.l(libinit2.o) - 0x08001182 0x08001182 0x00000000 Code RO 1449 .ARM.Collect$$libinit$$00000017 c_w.l(libinit2.o) - 0x08001182 0x08001182 0x00000000 Code RO 1451 .ARM.Collect$$libinit$$00000019 c_w.l(libinit2.o) - 0x08001182 0x08001182 0x00000000 Code RO 1453 .ARM.Collect$$libinit$$0000001B c_w.l(libinit2.o) - 0x08001182 0x08001182 0x00000000 Code RO 1455 .ARM.Collect$$libinit$$0000001D c_w.l(libinit2.o) - 0x08001182 0x08001182 0x00000000 Code RO 1457 .ARM.Collect$$libinit$$0000001F c_w.l(libinit2.o) - 0x08001182 0x08001182 0x00000000 Code RO 1459 .ARM.Collect$$libinit$$00000021 c_w.l(libinit2.o) - 0x08001182 0x08001182 0x00000000 Code RO 1461 .ARM.Collect$$libinit$$00000023 c_w.l(libinit2.o) - 0x08001182 0x08001182 0x00000000 Code RO 1463 .ARM.Collect$$libinit$$00000025 c_w.l(libinit2.o) - 0x08001182 0x08001182 0x00000000 Code RO 1465 .ARM.Collect$$libinit$$00000027 c_w.l(libinit2.o) - 0x08001182 0x08001182 0x00000000 Code RO 1469 .ARM.Collect$$libinit$$0000002E c_w.l(libinit2.o) - 0x08001182 0x08001182 0x00000000 Code RO 1471 .ARM.Collect$$libinit$$00000030 c_w.l(libinit2.o) - 0x08001182 0x08001182 0x00000000 Code RO 1473 .ARM.Collect$$libinit$$00000032 c_w.l(libinit2.o) - 0x08001182 0x08001182 0x00000000 Code RO 1475 .ARM.Collect$$libinit$$00000034 c_w.l(libinit2.o) - 0x08001182 0x08001182 0x00000002 Code RO 1476 .ARM.Collect$$libinit$$00000035 c_w.l(libinit2.o) - 0x08001184 0x08001184 0x00000002 Code RO 1498 .ARM.Collect$$libshutdown$$00000000 c_w.l(libshutdown.o) - 0x08001186 0x08001186 0x00000000 Code RO 1513 .ARM.Collect$$libshutdown$$00000002 c_w.l(libshutdown2.o) - 0x08001186 0x08001186 0x00000000 Code RO 1515 .ARM.Collect$$libshutdown$$00000004 c_w.l(libshutdown2.o) - 0x08001186 0x08001186 0x00000000 Code RO 1518 .ARM.Collect$$libshutdown$$00000007 c_w.l(libshutdown2.o) - 0x08001186 0x08001186 0x00000000 Code RO 1521 .ARM.Collect$$libshutdown$$0000000A c_w.l(libshutdown2.o) - 0x08001186 0x08001186 0x00000000 Code RO 1523 .ARM.Collect$$libshutdown$$0000000C c_w.l(libshutdown2.o) - 0x08001186 0x08001186 0x00000000 Code RO 1526 .ARM.Collect$$libshutdown$$0000000F c_w.l(libshutdown2.o) - 0x08001186 0x08001186 0x00000002 Code RO 1527 .ARM.Collect$$libshutdown$$00000010 c_w.l(libshutdown2.o) - 0x08001188 0x08001188 0x00000000 Code RO 1386 .ARM.Collect$$rtentry$$00000000 c_w.l(__rtentry.o) - 0x08001188 0x08001188 0x00000000 Code RO 1399 .ARM.Collect$$rtentry$$00000002 c_w.l(__rtentry2.o) - 0x08001188 0x08001188 0x00000006 Code RO 1411 .ARM.Collect$$rtentry$$00000004 c_w.l(__rtentry4.o) - 0x0800118e 0x0800118e 0x00000000 Code RO 1401 .ARM.Collect$$rtentry$$00000009 c_w.l(__rtentry2.o) - 0x0800118e 0x0800118e 0x00000004 Code RO 1402 .ARM.Collect$$rtentry$$0000000A c_w.l(__rtentry2.o) - 0x08001192 0x08001192 0x00000000 Code RO 1404 .ARM.Collect$$rtentry$$0000000C c_w.l(__rtentry2.o) - 0x08001192 0x08001192 0x00000008 Code RO 1405 .ARM.Collect$$rtentry$$0000000D c_w.l(__rtentry2.o) - 0x0800119a 0x0800119a 0x00000002 Code RO 1428 .ARM.Collect$$rtexit$$00000000 c_w.l(rtexit.o) - 0x0800119c 0x0800119c 0x00000000 Code RO 1478 .ARM.Collect$$rtexit$$00000002 c_w.l(rtexit2.o) - 0x0800119c 0x0800119c 0x00000004 Code RO 1479 .ARM.Collect$$rtexit$$00000003 c_w.l(rtexit2.o) - 0x080011a0 0x080011a0 0x00000006 Code RO 1480 .ARM.Collect$$rtexit$$00000004 c_w.l(rtexit2.o) + 0x080010cc 0x080010cc 0x00000008 Code RO 1366 * !!!main c_w.l(__main.o) + 0x080010d4 0x080010d4 0x0000005c Code RO 1568 !!!scatter c_w.l(__scatter.o) + 0x08001130 0x08001130 0x0000005a Code RO 1566 !!dczerorl2 c_w.l(__dczerorl2.o) + 0x0800118a 0x0800118a 0x00000002 PAD + 0x0800118c 0x0800118c 0x0000001a Code RO 1572 !!handler_copy c_w.l(__scatter_copy.o) 0x080011a6 0x080011a6 0x00000002 PAD - 0x080011a8 0x080011a8 0x00000040 Code RO 1354 .text startup_at32f421.o - 0x080011e8 0x080011e8 0x0000004e Code RO 1358 .text c_w.l(rt_memclr_w.o) - 0x08001236 0x08001236 0x00000006 Code RO 1360 .text c_w.l(heapauxi.o) - 0x0800123c 0x0800123c 0x0000004a Code RO 1415 .text c_w.l(sys_stackheap_outer.o) - 0x08001286 0x08001286 0x00000012 Code RO 1417 .text c_w.l(exit.o) - 0x08001298 0x08001298 0x00000008 Code RO 1425 .text c_w.l(libspace.o) - 0x080012a0 0x080012a0 0x0000000c Code RO 1488 .text c_w.l(sys_exit.o) - 0x080012ac 0x080012ac 0x00000002 Code RO 1503 .text c_w.l(use_no_semi.o) - 0x080012ae 0x080012ae 0x00000000 Code RO 1505 .text c_w.l(indicate_semi.o) - 0x080012ae 0x080012ae 0x00000002 PAD - 0x080012b0 0x080012b0 0x00000036 Code RO 1134 .text.ADC1_CMP_IRQHandler at32f421_it.o - 0x080012e6 0x080012e6 0x00000002 PAD - 0x080012e8 0x080012e8 0x0000002e Code RO 1097 .text.ADC_DMA_Callback adc.o - 0x08001316 0x08001316 0x00000002 PAD - 0x08001318 0x08001318 0x00000116 Code RO 1099 .text.ADC_Init adc.o - 0x0800142e 0x0800142e 0x00000002 PAD - 0x08001430 0x08001430 0x00000002 Code RO 1116 .text.BusFault_Handler at32f421_it.o - 0x08001432 0x08001432 0x00000002 PAD - 0x08001434 0x08001434 0x0000002a Code RO 1128 .text.DMA1_Channel1_IRQHandler at32f421_it.o - 0x0800145e 0x0800145e 0x00000002 PAD - 0x08001460 0x08001460 0x0000003c Code RO 1130 .text.DMA1_Channel3_2_IRQHandler at32f421_it.o - 0x0800149c 0x0800149c 0x000000ac Code RO 1132 .text.DMA1_Channel5_4_IRQHandler at32f421_it.o - 0x08001548 0x08001548 0x00000002 Code RO 1122 .text.DebugMon_Handler at32f421_it.o - 0x0800154a 0x0800154a 0x00000002 PAD - 0x0800154c 0x0800154c 0x00000028 Code RO 1146 .text.EXINT15_4_IRQHandler at32f421_it.o - 0x08001574 0x08001574 0x00000002 Code RO 1112 .text.HardFault_Handler at32f421_it.o - 0x08001576 0x08001576 0x00000002 PAD - 0x08001578 0x08001578 0x00000026 Code RO 1238 .text.MX_IWDG_Init peripherals.o - 0x0800159e 0x0800159e 0x00000002 PAD - 0x080015a0 0x080015a0 0x00000002 Code RO 1114 .text.MemManage_Handler at32f421_it.o - 0x080015a2 0x080015a2 0x00000002 PAD - 0x080015a4 0x080015a4 0x00000002 Code RO 1124 .text.PendSV_Handler at32f421_it.o - 0x080015a6 0x080015a6 0x00000002 PAD - 0x080015a8 0x080015a8 0x000000da Code RO 50 .text.PeriodElapsedCallback main.o - 0x08001682 0x08001682 0x00000002 PAD - 0x08001684 0x08001684 0x00000002 Code RO 1120 .text.SVC_Handler at32f421_it.o - 0x08001686 0x08001686 0x00000002 PAD - 0x08001688 0x08001688 0x00000002 Code RO 1126 .text.SysTick_Handler at32f421_it.o - 0x0800168a 0x0800168a 0x00000002 PAD - 0x0800168c 0x0800168c 0x0000008c Code RO 1338 .text.SystemInit system_at32f421.o - 0x08001718 0x08001718 0x00000116 Code RO 1222 .text.TIM1_Init peripherals.o - 0x0800182e 0x0800182e 0x00000002 PAD - 0x08001830 0x08001830 0x00000012 Code RO 1136 .text.TMR14_GLOBAL_IRQHandler at32f421_it.o - 0x08001842 0x08001842 0x00000002 PAD - 0x08001844 0x08001844 0x00000016 Code RO 1140 .text.TMR15_GLOBAL_IRQHandler at32f421_it.o - 0x0800185a 0x0800185a 0x00000002 PAD - 0x0800185c 0x0800185c 0x00000010 Code RO 1138 .text.TMR16_GLOBAL_IRQHandler at32f421_it.o - 0x0800186c 0x0800186c 0x00000022 Code RO 1144 .text.TMR3_GLOBAL_IRQHandler at32f421_it.o - 0x0800188e 0x0800188e 0x00000002 PAD - 0x08001890 0x08001890 0x00000002 Code RO 1142 .text.USART1_IRQHandler at32f421_it.o - 0x08001892 0x08001892 0x00000002 PAD - 0x08001894 0x08001894 0x00000002 Code RO 1118 .text.UsageFault_Handler at32f421_it.o - 0x08001896 0x08001896 0x00000002 PAD - 0x08001898 0x08001898 0x0000002a Code RO 68 .text.__NVIC_SystemReset main.o - 0x080018c2 0x080018c2 0x00000002 PAD - 0x080018c4 0x080018c4 0x00000044 Code RO 194 .text.adc_base_config at32f421_adc.o - 0x08001908 0x08001908 0x00000008 Code RO 192 .text.adc_base_default_para_init at32f421_adc.o - 0x08001910 0x08001910 0x0000000a Code RO 200 .text.adc_calibration_init at32f421_adc.o - 0x0800191a 0x0800191a 0x00000002 PAD - 0x0800191c 0x0800191c 0x00000008 Code RO 202 .text.adc_calibration_init_status_get at32f421_adc.o - 0x08001924 0x08001924 0x0000000a Code RO 204 .text.adc_calibration_start at32f421_adc.o - 0x0800192e 0x0800192e 0x00000002 PAD - 0x08001930 0x08001930 0x00000008 Code RO 206 .text.adc_calibration_status_get at32f421_adc.o - 0x08001938 0x08001938 0x00000012 Code RO 196 .text.adc_dma_mode_enable at32f421_adc.o - 0x0800194a 0x0800194a 0x00000002 PAD - 0x0800194c 0x0800194c 0x0000000a Code RO 190 .text.adc_enable at32f421_adc.o - 0x08001956 0x08001956 0x00000002 PAD - 0x08001958 0x08001958 0x0000025a Code RO 214 .text.adc_ordinary_channel_set at32f421_adc.o - 0x08001bb2 0x08001bb2 0x00000002 PAD - 0x08001bb4 0x08001bb4 0x0000002a Code RO 220 .text.adc_ordinary_conversion_trigger_set at32f421_adc.o - 0x08001bde 0x08001bde 0x00000002 PAD - 0x08001be0 0x08001be0 0x00000012 Code RO 236 .text.adc_ordinary_software_trigger_enable at32f421_adc.o - 0x08001bf2 0x08001bf2 0x00000002 PAD - 0x08001bf4 0x08001bf4 0x0000001a Code RO 234 .text.adc_tempersensor_vintrv_enable at32f421_adc.o - 0x08001c0e 0x08001c0e 0x00000002 PAD - 0x08001c10 0x08001c10 0x0000008a Code RO 1298 .text.allOff phaseouts.o - 0x08001c9a 0x08001c9a 0x00000002 PAD - 0x08001c9c 0x08001c9c 0x000000ba Code RO 1304 .text.allpwm phaseouts.o - 0x08001d56 0x08001d56 0x00000002 PAD - 0x08001d58 0x08001d58 0x00000024 Code RO 1162 .text.changeCompInput comparator.o - 0x08001d7c 0x08001d7c 0x00000016 Code RO 266 .text.cmp_enable at32f421_cmp.o - 0x08001d92 0x08001d92 0x00000002 PAD - 0x08001d94 0x08001d94 0x000003d8 Code RO 1300 .text.comStep phaseouts.o - 0x0800216c 0x0800216c 0x000004dc Code RO 2 .text.computeDshotDMA dshot.o - 0x08002648 0x08002648 0x000001ec Code RO 124 .text.computeServoInput signal.o - 0x08002834 0x08002834 0x0000001c Code RO 348 .text.crm_adc_clock_div_set at32f421_crm.o - 0x08002850 0x08002850 0x0000001a Code RO 342 .text.crm_ahb_div_set at32f421_crm.o - 0x0800286a 0x0800286a 0x00000002 PAD - 0x0800286c 0x0800286c 0x0000001a Code RO 344 .text.crm_apb1_div_set at32f421_crm.o - 0x08002886 0x08002886 0x00000002 PAD - 0x08002888 0x08002888 0x0000001a Code RO 346 .text.crm_apb2_div_set at32f421_crm.o - 0x080028a2 0x080028a2 0x00000002 PAD - 0x080028a4 0x080028a4 0x00000018 Code RO 368 .text.crm_auto_step_mode_enable at32f421_crm.o - 0x080028bc 0x080028bc 0x00000082 Code RO 334 .text.crm_clock_source_enable at32f421_crm.o - 0x0800293e 0x0800293e 0x00000002 PAD - 0x08002940 0x08002940 0x00000120 Code RO 362 .text.crm_clocks_freq_get at32f421_crm.o - 0x08002a60 0x08002a60 0x0000001a Code RO 320 .text.crm_flag_get at32f421_crm.o - 0x08002a7a 0x08002a7a 0x00000002 PAD - 0x08002a7c 0x08002a7c 0x00000028 Code RO 328 .text.crm_periph_clock_enable at32f421_crm.o - 0x08002aa4 0x08002aa4 0x00000028 Code RO 330 .text.crm_periph_reset at32f421_crm.o - 0x08002acc 0x08002acc 0x0000004e Code RO 354 .text.crm_pll_config at32f421_crm.o - 0x08002b1a 0x08002b1a 0x00000002 PAD - 0x08002b1c 0x08002b1c 0x0000007a Code RO 314 .text.crm_reset at32f421_crm.o - 0x08002b96 0x08002b96 0x00000002 PAD - 0x08002b98 0x08002b98 0x00000012 Code RO 358 .text.crm_sysclk_switch at32f421_crm.o - 0x08002baa 0x08002baa 0x00000002 PAD - 0x08002bac 0x08002bac 0x00000010 Code RO 360 .text.crm_sysclk_switch_status_get at32f421_crm.o - 0x08002bbc 0x08002bbc 0x0000002c Code RO 22 .text.delayMicros functions.o - 0x08002be8 0x08002be8 0x0000004e Code RO 24 .text.delayMillis functions.o - 0x08002c36 0x08002c36 0x00000002 PAD - 0x08002c38 0x08002c38 0x00000238 Code RO 132 .text.detectInput signal.o - 0x08002e70 0x08002e70 0x0000000a Code RO 405 .text.dma_channel_enable at32f421_dma.o - 0x08002e7a 0x08002e7a 0x00000002 PAD - 0x08002e7c 0x08002e7c 0x0000000e Code RO 411 .text.dma_default_para_init at32f421_dma.o - 0x08002e8a 0x08002e8a 0x00000002 PAD - 0x08002e8c 0x08002e8c 0x00000010 Code RO 407 .text.dma_flag_get at32f421_dma.o - 0x08002e9c 0x08002e9c 0x0000007c Code RO 413 .text.dma_init at32f421_dma.o - 0x08002f18 0x08002f18 0x00000040 Code RO 397 .text.dma_reset at32f421_dma.o - 0x08002f58 0x08002f58 0x00000012 Code RO 1160 .text.enableCompInterrupts comparator.o - 0x08002f6a 0x08002f6a 0x00000002 PAD - 0x08002f6c 0x08002f6c 0x0000010e Code RO 1268 .text.enableCorePeripherals peripherals.o - 0x0800307a 0x0800307a 0x00000002 PAD - 0x0800307c 0x0800307c 0x0000000c Code RO 553 .text.flash_flag_clear at32f421_flash.o - 0x08003088 0x08003088 0x00000012 Code RO 561 .text.flash_lock at32f421_flash.o - 0x0800309a 0x0800309a 0x00000002 PAD - 0x0800309c 0x0800309c 0x0000018e Code RO 563 .text.flash_sector_erase at32f421_flash.o - 0x0800322a 0x0800322a 0x00000002 PAD - 0x0800322c 0x0800322c 0x0000001e Code RO 559 .text.flash_unlock at32f421_flash.o - 0x0800324a 0x0800324a 0x00000002 PAD - 0x0800324c 0x0800324c 0x00000186 Code RO 571 .text.flash_word_program at32f421_flash.o - 0x080033d2 0x080033d2 0x00000002 PAD - 0x080033d4 0x080033d4 0x0000008c Code RO 1302 .text.fullBrake phaseouts.o - 0x08003460 0x08003460 0x00000012 Code RO 1264 .text.generatePwmTimerEvent peripherals.o - 0x08003472 0x08003472 0x00000002 PAD - 0x08003474 0x08003474 0x00000008 Code RO 20 .text.getAbsDif functions.o - 0x0800347c 0x0800347c 0x0000000e Code RO 1156 .text.getCompOutputLevel comparator.o - 0x0800348a 0x0800348a 0x00000002 PAD - 0x0800348c 0x0800348c 0x00000026 Code RO 1101 .text.getConvertedDegrees adc.o - 0x080034b2 0x080034b2 0x00000002 PAD - 0x080034b4 0x080034b4 0x00000010 Code RO 1191 .text.getInputPinState io.o - 0x080034c4 0x080034c4 0x00000076 Code RO 629 .text.gpio_init at32f421_gpio.o - 0x0800353a 0x0800353a 0x00000002 PAD - 0x0800353c 0x0800353c 0x00000016 Code RO 26 .text.gpio_mode_QUICK functions.o - 0x08003552 0x08003552 0x00000002 PAD - 0x08003554 0x08003554 0x00000026 Code RO 28 .text.gpio_mode_set functions.o - 0x0800357a 0x0800357a 0x00000002 PAD - 0x0800357c 0x0800357c 0x0000002c Code RO 653 .text.gpio_pin_mux_config at32f421_gpio.o - 0x080035a8 0x080035a8 0x00000004 Code RO 1236 .text.initAfterJump peripherals.o - 0x080035ac 0x080035ac 0x00000198 Code RO 1214 .text.initCorePeripherals peripherals.o - 0x08003744 0x08003744 0x000000b4 Code RO 52 .text.interruptRoutine main.o - 0x080037f8 0x080037f8 0x00000322 Code RO 40 .text.loadEEpromSettings main.o - 0x08003b1a 0x08003b1a 0x00000002 PAD - 0x08003b1c 0x08003b1c 0x00000c10 Code RO 66 .text.main main.o - 0x0800472c 0x0800472c 0x0000010e Code RO 1324 .text.makeTelemPackage serial_telemetry.o - 0x0800483a 0x0800483a 0x00000002 PAD - 0x0800483c 0x0800483c 0x000001e4 Code RO 4 .text.make_dshot_package dshot.o - 0x08004a20 0x08004a20 0x0000006c Code RO 18 .text.map functions.o - 0x08004a8c 0x08004a8c 0x00000018 Code RO 1158 .text.maskPhaseInterrupts comparator.o - 0x08004aa4 0x08004aa4 0x00000072 Code RO 735 .text.nvic_irq_enable at32f421_misc.o - 0x08004b16 0x08004b16 0x00000002 PAD - 0x08004b18 0x08004b18 0x00000094 Code RO 171 .text.playBeaconTune3 sounds.o - 0x08004bac 0x08004bac 0x0000012e Code RO 155 .text.playBlueJayTune sounds.o - 0x08004cda 0x08004cda 0x00000002 PAD - 0x08004cdc 0x08004cdc 0x00000068 Code RO 169 .text.playChangedTone sounds.o - 0x08004d44 0x08004d44 0x00000068 Code RO 167 .text.playDefaultTone sounds.o - 0x08004dac 0x08004dac 0x0000007a Code RO 165 .text.playInputTune sounds.o - 0x08004e26 0x08004e26 0x00000002 PAD - 0x08004e28 0x08004e28 0x0000007c Code RO 163 .text.playInputTune2 sounds.o - 0x08004ea4 0x08004ea4 0x00000090 Code RO 157 .text.playStartupTune sounds.o - 0x08004f34 0x08004f34 0x00000038 Code RO 62 .text.processDshot main.o - 0x08004f6c 0x08004f6c 0x00000078 Code RO 1278 .text.proportionalBrake phaseouts.o - 0x08004fe4 0x08004fe4 0x00000062 Code RO 1173 .text.read_flash_bin eeprom.o - 0x08005046 0x08005046 0x00000002 PAD - 0x08005048 0x08005048 0x0000007e Code RO 1187 .text.receiveDshotDma io.o - 0x080050c6 0x080050c6 0x00000002 PAD - 0x080050c8 0x080050c8 0x00000010 Code RO 1266 .text.resetInputCaptureTimer peripherals.o - 0x080050d8 0x080050d8 0x0000007e Code RO 42 .text.saveEEpromSettings main.o - 0x08005156 0x08005156 0x00000002 PAD - 0x08005158 0x08005158 0x00000122 Code RO 1171 .text.save_flash_nolib eeprom.o - 0x0800527a 0x0800527a 0x00000002 PAD - 0x0800527c 0x0800527c 0x0000009a Code RO 1189 .text.sendDshotDma io.o - 0x08005316 0x08005316 0x00000002 PAD - 0x08005318 0x08005318 0x0000001c Code RO 1318 .text.send_telem_DMA serial_telemetry.o - 0x08005334 0x08005334 0x00000776 Code RO 56 .text.setInput main.o - 0x08005aaa 0x08005aaa 0x00000002 PAD - 0x08005aac 0x08005aac 0x00000012 Code RO 1197 .text.setInputPullUp io.o - 0x08005abe 0x08005abe 0x00000002 PAD - 0x08005ac0 0x08005ac0 0x0000000c Code RO 1258 .text.setPWMCompare1 peripherals.o - 0x08005acc 0x08005acc 0x0000000c Code RO 1260 .text.setPWMCompare2 peripherals.o - 0x08005ad8 0x08005ad8 0x0000000c Code RO 1262 .text.setPWMCompare3 peripherals.o - 0x08005ae4 0x08005ae4 0x00000014 Code RO 147 .text.setVolume sounds.o - 0x08005af8 0x08005af8 0x00000076 Code RO 1216 .text.system_clock_config peripherals.o - 0x08005b6e 0x08005b6e 0x00000002 PAD - 0x08005b70 0x08005b70 0x000000f0 Code RO 1340 .text.system_core_clock_update system_at32f421.o - 0x08005c60 0x08005c60 0x000000f4 Code RO 1326 .text.telem_UART_Init serial_telemetry.o - 0x08005d54 0x08005d54 0x000004e4 Code RO 58 .text.tenKhzRoutine main.o - 0x08006238 0x08006238 0x00000096 Code RO 921 .text.tmr_channel_enable at32f421_tmr.o - 0x080062ce 0x080062ce 0x00000002 PAD - 0x080062d0 0x080062d0 0x00000062 Code RO 907 .text.tmr_output_channel_buffer_enable at32f421_tmr.o - 0x08006332 0x08006332 0x00000002 PAD - 0x08006334 0x08006334 0x00000012 Code RO 905 .text.tmr_period_buffer_enable at32f421_tmr.o - 0x08006346 0x08006346 0x00000002 PAD - 0x08006348 0x08006348 0x000000ba Code RO 867 .text.tmr_reset at32f421_tmr.o - 0x08006402 0x08006402 0x00000002 PAD - 0x08006404 0x08006404 0x0000019c Code RO 126 .text.transfercomplete signal.o - 0x080065a0 0x080065a0 0x00000012 Code RO 1003 .text.usart_dma_transmitter_enable at32f421_usart.o - 0x080065b2 0x080065b2 0x00000002 PAD - 0x080065b4 0x080065b4 0x00000012 Code RO 991 .text.usart_enable at32f421_usart.o - 0x080065c6 0x080065c6 0x00000002 PAD - 0x080065c8 0x080065c8 0x00000086 Code RO 987 .text.usart_init at32f421_usart.o - 0x0800664e 0x0800664e 0x00000002 PAD - 0x08006650 0x08006650 0x00000012 Code RO 995 .text.usart_receiver_enable at32f421_usart.o - 0x08006662 0x08006662 0x00000002 PAD - 0x08006664 0x08006664 0x00000012 Code RO 1031 .text.usart_single_line_halfduplex_select at32f421_usart.o - 0x08006676 0x08006676 0x00000002 PAD - 0x08006678 0x08006678 0x00000012 Code RO 993 .text.usart_transmitter_enable at32f421_usart.o - 0x0800668a 0x0800668a 0x00000002 PAD - 0x0800668c 0x0800668c 0x00000112 Code RO 60 .text.zcfoundroutine main.o - 0x0800679e 0x0800679e 0x00000002 PAD - 0x080067a0 0x080067a0 0x000000c4 Code RO 1364 x$fpl$fadd fz_ws.l(faddsub_clz.o) - 0x08006864 0x08006864 0x00000054 Code RO 1370 x$fpl$fcmp fz_ws.l(fcmp.o) - 0x080068b8 0x080068b8 0x00000018 Code RO 1413 x$fpl$fcmpinf fz_ws.l(fcmpi.o) - 0x080068d0 0x080068d0 0x00000184 Code RO 1373 x$fpl$fdiv fz_ws.l(fdiv.o) - 0x08006a54 0x08006a54 0x00000068 Code RO 1387 x$fpl$feqf fz_ws.l(feqf.o) - 0x08006abc 0x08006abc 0x00000036 Code RO 1376 x$fpl$ffix fz_ws.l(ffix.o) - 0x08006af2 0x08006af2 0x00000002 PAD - 0x08006af4 0x08006af4 0x00000030 Code RO 1381 x$fpl$fflt fz_ws.l(fflt_clz.o) - 0x08006b24 0x08006b24 0x00000068 Code RO 1389 x$fpl$fgeqf fz_ws.l(fgeqf.o) - 0x08006b8c 0x08006b8c 0x00000068 Code RO 1391 x$fpl$fleqf fz_ws.l(fleqf.o) - 0x08006bf4 0x08006bf4 0x0000008c Code RO 1393 x$fpl$fnaninf fz_ws.l(fnaninf.o) - 0x08006c80 0x08006c80 0x0000000a Code RO 1395 x$fpl$fretinf fz_ws.l(fretinf.o) - 0x08006c8a 0x08006c8a 0x00000002 PAD - 0x08006c8c 0x08006c8c 0x000000ea Code RO 1366 x$fpl$fsub fz_ws.l(faddsub_clz.o) - 0x08006d76 0x08006d76 0x00000000 Code RO 1397 x$fpl$usenofp fz_ws.l(usenofp.o) - 0x08006d76 0x08006d76 0x00000008 Data RO 376 .rodata.cst8 at32f421_crm.o - 0x08006d7e 0x08006d7e 0x00000010 Data RO 6 .rodata.gcr_encode_table dshot.o - 0x08006d8e 0x08006d8e 0x00000002 PAD - 0x08006d90 0x08006d90 0x00000020 Data RO 1561 Region$$Table anon$$obj.o + 0x080011a8 0x080011a8 0x00000002 Code RO 1569 !!handler_null c_w.l(__scatter.o) + 0x080011aa 0x080011aa 0x00000002 PAD + 0x080011ac 0x080011ac 0x0000001c Code RO 1574 !!handler_zi c_w.l(__scatter_zi.o) + 0x080011c8 0x080011c8 0x00000002 Code RO 1428 .ARM.Collect$$libinit$$00000000 c_w.l(libinit.o) + 0x080011ca 0x080011ca 0x00000000 Code RO 1435 .ARM.Collect$$libinit$$00000002 c_w.l(libinit2.o) + 0x080011ca 0x080011ca 0x00000000 Code RO 1437 .ARM.Collect$$libinit$$00000004 c_w.l(libinit2.o) + 0x080011ca 0x080011ca 0x00000000 Code RO 1439 .ARM.Collect$$libinit$$00000006 c_w.l(libinit2.o) + 0x080011ca 0x080011ca 0x00000000 Code RO 1442 .ARM.Collect$$libinit$$0000000C c_w.l(libinit2.o) + 0x080011ca 0x080011ca 0x00000000 Code RO 1444 .ARM.Collect$$libinit$$0000000E c_w.l(libinit2.o) + 0x080011ca 0x080011ca 0x00000000 Code RO 1446 .ARM.Collect$$libinit$$00000010 c_w.l(libinit2.o) + 0x080011ca 0x080011ca 0x00000000 Code RO 1449 .ARM.Collect$$libinit$$00000013 c_w.l(libinit2.o) + 0x080011ca 0x080011ca 0x00000000 Code RO 1451 .ARM.Collect$$libinit$$00000015 c_w.l(libinit2.o) + 0x080011ca 0x080011ca 0x00000000 Code RO 1453 .ARM.Collect$$libinit$$00000017 c_w.l(libinit2.o) + 0x080011ca 0x080011ca 0x00000000 Code RO 1455 .ARM.Collect$$libinit$$00000019 c_w.l(libinit2.o) + 0x080011ca 0x080011ca 0x00000000 Code RO 1457 .ARM.Collect$$libinit$$0000001B c_w.l(libinit2.o) + 0x080011ca 0x080011ca 0x00000000 Code RO 1459 .ARM.Collect$$libinit$$0000001D c_w.l(libinit2.o) + 0x080011ca 0x080011ca 0x00000000 Code RO 1461 .ARM.Collect$$libinit$$0000001F c_w.l(libinit2.o) + 0x080011ca 0x080011ca 0x00000000 Code RO 1463 .ARM.Collect$$libinit$$00000021 c_w.l(libinit2.o) + 0x080011ca 0x080011ca 0x00000000 Code RO 1465 .ARM.Collect$$libinit$$00000023 c_w.l(libinit2.o) + 0x080011ca 0x080011ca 0x00000000 Code RO 1467 .ARM.Collect$$libinit$$00000025 c_w.l(libinit2.o) + 0x080011ca 0x080011ca 0x00000000 Code RO 1469 .ARM.Collect$$libinit$$00000027 c_w.l(libinit2.o) + 0x080011ca 0x080011ca 0x00000000 Code RO 1473 .ARM.Collect$$libinit$$0000002E c_w.l(libinit2.o) + 0x080011ca 0x080011ca 0x00000000 Code RO 1475 .ARM.Collect$$libinit$$00000030 c_w.l(libinit2.o) + 0x080011ca 0x080011ca 0x00000000 Code RO 1477 .ARM.Collect$$libinit$$00000032 c_w.l(libinit2.o) + 0x080011ca 0x080011ca 0x00000000 Code RO 1479 .ARM.Collect$$libinit$$00000034 c_w.l(libinit2.o) + 0x080011ca 0x080011ca 0x00000002 Code RO 1480 .ARM.Collect$$libinit$$00000035 c_w.l(libinit2.o) + 0x080011cc 0x080011cc 0x00000002 Code RO 1502 .ARM.Collect$$libshutdown$$00000000 c_w.l(libshutdown.o) + 0x080011ce 0x080011ce 0x00000000 Code RO 1517 .ARM.Collect$$libshutdown$$00000002 c_w.l(libshutdown2.o) + 0x080011ce 0x080011ce 0x00000000 Code RO 1519 .ARM.Collect$$libshutdown$$00000004 c_w.l(libshutdown2.o) + 0x080011ce 0x080011ce 0x00000000 Code RO 1522 .ARM.Collect$$libshutdown$$00000007 c_w.l(libshutdown2.o) + 0x080011ce 0x080011ce 0x00000000 Code RO 1525 .ARM.Collect$$libshutdown$$0000000A c_w.l(libshutdown2.o) + 0x080011ce 0x080011ce 0x00000000 Code RO 1527 .ARM.Collect$$libshutdown$$0000000C c_w.l(libshutdown2.o) + 0x080011ce 0x080011ce 0x00000000 Code RO 1530 .ARM.Collect$$libshutdown$$0000000F c_w.l(libshutdown2.o) + 0x080011ce 0x080011ce 0x00000002 Code RO 1531 .ARM.Collect$$libshutdown$$00000010 c_w.l(libshutdown2.o) + 0x080011d0 0x080011d0 0x00000000 Code RO 1390 .ARM.Collect$$rtentry$$00000000 c_w.l(__rtentry.o) + 0x080011d0 0x080011d0 0x00000000 Code RO 1403 .ARM.Collect$$rtentry$$00000002 c_w.l(__rtentry2.o) + 0x080011d0 0x080011d0 0x00000006 Code RO 1415 .ARM.Collect$$rtentry$$00000004 c_w.l(__rtentry4.o) + 0x080011d6 0x080011d6 0x00000000 Code RO 1405 .ARM.Collect$$rtentry$$00000009 c_w.l(__rtentry2.o) + 0x080011d6 0x080011d6 0x00000004 Code RO 1406 .ARM.Collect$$rtentry$$0000000A c_w.l(__rtentry2.o) + 0x080011da 0x080011da 0x00000000 Code RO 1408 .ARM.Collect$$rtentry$$0000000C c_w.l(__rtentry2.o) + 0x080011da 0x080011da 0x00000008 Code RO 1409 .ARM.Collect$$rtentry$$0000000D c_w.l(__rtentry2.o) + 0x080011e2 0x080011e2 0x00000002 Code RO 1432 .ARM.Collect$$rtexit$$00000000 c_w.l(rtexit.o) + 0x080011e4 0x080011e4 0x00000000 Code RO 1482 .ARM.Collect$$rtexit$$00000002 c_w.l(rtexit2.o) + 0x080011e4 0x080011e4 0x00000004 Code RO 1483 .ARM.Collect$$rtexit$$00000003 c_w.l(rtexit2.o) + 0x080011e8 0x080011e8 0x00000006 Code RO 1484 .ARM.Collect$$rtexit$$00000004 c_w.l(rtexit2.o) + 0x080011ee 0x080011ee 0x00000002 PAD + 0x080011f0 0x080011f0 0x00000040 Code RO 1354 .text startup_at32f421.o + 0x08001230 0x08001230 0x0000004e Code RO 1362 .text c_w.l(rt_memclr_w.o) + 0x0800127e 0x0800127e 0x00000006 Code RO 1364 .text c_w.l(heapauxi.o) + 0x08001284 0x08001284 0x0000004a Code RO 1419 .text c_w.l(sys_stackheap_outer.o) + 0x080012ce 0x080012ce 0x00000012 Code RO 1421 .text c_w.l(exit.o) + 0x080012e0 0x080012e0 0x00000008 Code RO 1429 .text c_w.l(libspace.o) + 0x080012e8 0x080012e8 0x0000000c Code RO 1492 .text c_w.l(sys_exit.o) + 0x080012f4 0x080012f4 0x00000002 Code RO 1507 .text c_w.l(use_no_semi.o) + 0x080012f6 0x080012f6 0x00000000 Code RO 1509 .text c_w.l(indicate_semi.o) + 0x080012f6 0x080012f6 0x00000002 PAD + 0x080012f8 0x080012f8 0x00000036 Code RO 1133 .text.ADC1_CMP_IRQHandler at32f421_it.o + 0x0800132e 0x0800132e 0x00000002 PAD + 0x08001330 0x08001330 0x0000002e Code RO 1096 .text.ADC_DMA_Callback adc.o + 0x0800135e 0x0800135e 0x00000002 PAD + 0x08001360 0x08001360 0x00000116 Code RO 1098 .text.ADC_Init adc.o + 0x08001476 0x08001476 0x00000002 PAD + 0x08001478 0x08001478 0x00000002 Code RO 1115 .text.BusFault_Handler at32f421_it.o + 0x0800147a 0x0800147a 0x00000002 PAD + 0x0800147c 0x0800147c 0x0000002a Code RO 1127 .text.DMA1_Channel1_IRQHandler at32f421_it.o + 0x080014a6 0x080014a6 0x00000002 PAD + 0x080014a8 0x080014a8 0x0000003c Code RO 1129 .text.DMA1_Channel3_2_IRQHandler at32f421_it.o + 0x080014e4 0x080014e4 0x000000a6 Code RO 1131 .text.DMA1_Channel5_4_IRQHandler at32f421_it.o + 0x0800158a 0x0800158a 0x00000002 PAD + 0x0800158c 0x0800158c 0x00000002 Code RO 1121 .text.DebugMon_Handler at32f421_it.o + 0x0800158e 0x0800158e 0x00000002 PAD + 0x08001590 0x08001590 0x00000028 Code RO 1145 .text.EXINT15_4_IRQHandler at32f421_it.o + 0x080015b8 0x080015b8 0x00000002 Code RO 1111 .text.HardFault_Handler at32f421_it.o + 0x080015ba 0x080015ba 0x00000002 PAD + 0x080015bc 0x080015bc 0x00000026 Code RO 1238 .text.MX_IWDG_Init peripherals.o + 0x080015e2 0x080015e2 0x00000002 PAD + 0x080015e4 0x080015e4 0x00000002 Code RO 1113 .text.MemManage_Handler at32f421_it.o + 0x080015e6 0x080015e6 0x00000002 PAD + 0x080015e8 0x080015e8 0x00000002 Code RO 1123 .text.PendSV_Handler at32f421_it.o + 0x080015ea 0x080015ea 0x00000002 PAD + 0x080015ec 0x080015ec 0x000000da Code RO 50 .text.PeriodElapsedCallback main.o + 0x080016c6 0x080016c6 0x00000002 PAD + 0x080016c8 0x080016c8 0x00000002 Code RO 1119 .text.SVC_Handler at32f421_it.o + 0x080016ca 0x080016ca 0x00000002 PAD + 0x080016cc 0x080016cc 0x00000002 Code RO 1125 .text.SysTick_Handler at32f421_it.o + 0x080016ce 0x080016ce 0x00000002 PAD + 0x080016d0 0x080016d0 0x0000008c Code RO 1338 .text.SystemInit system_at32f421.o + 0x0800175c 0x0800175c 0x00000116 Code RO 1222 .text.TIM1_Init peripherals.o + 0x08001872 0x08001872 0x00000002 PAD + 0x08001874 0x08001874 0x00000012 Code RO 1135 .text.TMR14_GLOBAL_IRQHandler at32f421_it.o + 0x08001886 0x08001886 0x00000002 PAD + 0x08001888 0x08001888 0x00000016 Code RO 1139 .text.TMR15_GLOBAL_IRQHandler at32f421_it.o + 0x0800189e 0x0800189e 0x00000002 PAD + 0x080018a0 0x080018a0 0x00000010 Code RO 1137 .text.TMR16_GLOBAL_IRQHandler at32f421_it.o + 0x080018b0 0x080018b0 0x00000022 Code RO 1143 .text.TMR3_GLOBAL_IRQHandler at32f421_it.o + 0x080018d2 0x080018d2 0x00000002 PAD + 0x080018d4 0x080018d4 0x00000002 Code RO 1141 .text.USART1_IRQHandler at32f421_it.o + 0x080018d6 0x080018d6 0x00000002 PAD + 0x080018d8 0x080018d8 0x00000002 Code RO 1117 .text.UsageFault_Handler at32f421_it.o + 0x080018da 0x080018da 0x00000002 PAD + 0x080018dc 0x080018dc 0x0000002a Code RO 68 .text.__NVIC_SystemReset main.o + 0x08001906 0x08001906 0x00000002 PAD + 0x08001908 0x08001908 0x00000044 Code RO 193 .text.adc_base_config at32f421_adc.o + 0x0800194c 0x0800194c 0x00000008 Code RO 191 .text.adc_base_default_para_init at32f421_adc.o + 0x08001954 0x08001954 0x0000000a Code RO 199 .text.adc_calibration_init at32f421_adc.o + 0x0800195e 0x0800195e 0x00000002 PAD + 0x08001960 0x08001960 0x00000008 Code RO 201 .text.adc_calibration_init_status_get at32f421_adc.o + 0x08001968 0x08001968 0x0000000a Code RO 203 .text.adc_calibration_start at32f421_adc.o + 0x08001972 0x08001972 0x00000002 PAD + 0x08001974 0x08001974 0x00000008 Code RO 205 .text.adc_calibration_status_get at32f421_adc.o + 0x0800197c 0x0800197c 0x00000012 Code RO 195 .text.adc_dma_mode_enable at32f421_adc.o + 0x0800198e 0x0800198e 0x00000002 PAD + 0x08001990 0x08001990 0x0000000a Code RO 189 .text.adc_enable at32f421_adc.o + 0x0800199a 0x0800199a 0x00000002 PAD + 0x0800199c 0x0800199c 0x0000026c Code RO 213 .text.adc_ordinary_channel_set at32f421_adc.o + 0x08001c08 0x08001c08 0x0000003a Code RO 219 .text.adc_ordinary_conversion_trigger_set at32f421_adc.o + 0x08001c42 0x08001c42 0x00000002 PAD + 0x08001c44 0x08001c44 0x00000012 Code RO 235 .text.adc_ordinary_software_trigger_enable at32f421_adc.o + 0x08001c56 0x08001c56 0x00000002 PAD + 0x08001c58 0x08001c58 0x0000001a Code RO 233 .text.adc_tempersensor_vintrv_enable at32f421_adc.o + 0x08001c72 0x08001c72 0x00000002 PAD + 0x08001c74 0x08001c74 0x0000008a Code RO 1298 .text.allOff phaseouts.o + 0x08001cfe 0x08001cfe 0x00000002 PAD + 0x08001d00 0x08001d00 0x000000ba Code RO 1304 .text.allpwm phaseouts.o + 0x08001dba 0x08001dba 0x00000002 PAD + 0x08001dbc 0x08001dbc 0x00000024 Code RO 1161 .text.changeCompInput comparator.o + 0x08001de0 0x08001de0 0x00000016 Code RO 265 .text.cmp_enable at32f421_cmp.o + 0x08001df6 0x08001df6 0x00000002 PAD + 0x08001df8 0x08001df8 0x000003d8 Code RO 1300 .text.comStep phaseouts.o + 0x080021d0 0x080021d0 0x000004d4 Code RO 2 .text.computeDshotDMA dshot.o + 0x080026a4 0x080026a4 0x000001ce Code RO 123 .text.computeServoInput signal.o + 0x08002872 0x08002872 0x00000002 PAD + 0x08002874 0x08002874 0x0000001c Code RO 347 .text.crm_adc_clock_div_set at32f421_crm.o + 0x08002890 0x08002890 0x0000001a Code RO 341 .text.crm_ahb_div_set at32f421_crm.o + 0x080028aa 0x080028aa 0x00000002 PAD + 0x080028ac 0x080028ac 0x0000001a Code RO 343 .text.crm_apb1_div_set at32f421_crm.o + 0x080028c6 0x080028c6 0x00000002 PAD + 0x080028c8 0x080028c8 0x0000001a Code RO 345 .text.crm_apb2_div_set at32f421_crm.o + 0x080028e2 0x080028e2 0x00000002 PAD + 0x080028e4 0x080028e4 0x00000018 Code RO 367 .text.crm_auto_step_mode_enable at32f421_crm.o + 0x080028fc 0x080028fc 0x00000082 Code RO 333 .text.crm_clock_source_enable at32f421_crm.o + 0x0800297e 0x0800297e 0x00000002 PAD + 0x08002980 0x08002980 0x00000118 Code RO 361 .text.crm_clocks_freq_get at32f421_crm.o + 0x08002a98 0x08002a98 0x0000001a Code RO 319 .text.crm_flag_get at32f421_crm.o + 0x08002ab2 0x08002ab2 0x00000002 PAD + 0x08002ab4 0x08002ab4 0x00000028 Code RO 327 .text.crm_periph_clock_enable at32f421_crm.o + 0x08002adc 0x08002adc 0x00000028 Code RO 329 .text.crm_periph_reset at32f421_crm.o + 0x08002b04 0x08002b04 0x0000004e Code RO 353 .text.crm_pll_config at32f421_crm.o + 0x08002b52 0x08002b52 0x00000002 PAD + 0x08002b54 0x08002b54 0x0000007a Code RO 313 .text.crm_reset at32f421_crm.o + 0x08002bce 0x08002bce 0x00000002 PAD + 0x08002bd0 0x08002bd0 0x00000012 Code RO 357 .text.crm_sysclk_switch at32f421_crm.o + 0x08002be2 0x08002be2 0x00000002 PAD + 0x08002be4 0x08002be4 0x00000010 Code RO 359 .text.crm_sysclk_switch_status_get at32f421_crm.o + 0x08002bf4 0x08002bf4 0x0000002c Code RO 22 .text.delayMicros functions.o + 0x08002c20 0x08002c20 0x0000004e Code RO 24 .text.delayMillis functions.o + 0x08002c6e 0x08002c6e 0x00000002 PAD + 0x08002c70 0x08002c70 0x00000280 Code RO 131 .text.detectInput signal.o + 0x08002ef0 0x08002ef0 0x0000000a Code RO 404 .text.dma_channel_enable at32f421_dma.o + 0x08002efa 0x08002efa 0x00000002 PAD + 0x08002efc 0x08002efc 0x0000000e Code RO 410 .text.dma_default_para_init at32f421_dma.o + 0x08002f0a 0x08002f0a 0x00000002 PAD + 0x08002f0c 0x08002f0c 0x00000010 Code RO 406 .text.dma_flag_get at32f421_dma.o + 0x08002f1c 0x08002f1c 0x0000007c Code RO 412 .text.dma_init at32f421_dma.o + 0x08002f98 0x08002f98 0x00000040 Code RO 396 .text.dma_reset at32f421_dma.o + 0x08002fd8 0x08002fd8 0x00000012 Code RO 1159 .text.enableCompInterrupts comparator.o + 0x08002fea 0x08002fea 0x00000002 PAD + 0x08002fec 0x08002fec 0x0000010e Code RO 1268 .text.enableCorePeripherals peripherals.o + 0x080030fa 0x080030fa 0x00000002 PAD + 0x080030fc 0x080030fc 0x0000000c Code RO 552 .text.flash_flag_clear at32f421_flash.o + 0x08003108 0x08003108 0x00000012 Code RO 560 .text.flash_lock at32f421_flash.o + 0x0800311a 0x0800311a 0x00000002 PAD + 0x0800311c 0x0800311c 0x0000018e Code RO 562 .text.flash_sector_erase at32f421_flash.o + 0x080032aa 0x080032aa 0x00000002 PAD + 0x080032ac 0x080032ac 0x0000001e Code RO 558 .text.flash_unlock at32f421_flash.o + 0x080032ca 0x080032ca 0x00000002 PAD + 0x080032cc 0x080032cc 0x00000186 Code RO 570 .text.flash_word_program at32f421_flash.o + 0x08003452 0x08003452 0x00000002 PAD + 0x08003454 0x08003454 0x0000008c Code RO 1302 .text.fullBrake phaseouts.o + 0x080034e0 0x080034e0 0x00000012 Code RO 1264 .text.generatePwmTimerEvent peripherals.o + 0x080034f2 0x080034f2 0x00000002 PAD + 0x080034f4 0x080034f4 0x00000008 Code RO 20 .text.getAbsDif functions.o + 0x080034fc 0x080034fc 0x0000000e Code RO 1155 .text.getCompOutputLevel comparator.o + 0x0800350a 0x0800350a 0x00000002 PAD + 0x0800350c 0x0800350c 0x00000026 Code RO 1100 .text.getConvertedDegrees adc.o + 0x08003532 0x08003532 0x00000002 PAD + 0x08003534 0x08003534 0x00000010 Code RO 1191 .text.getInputPinState io.o + 0x08003544 0x08003544 0x0000007a Code RO 628 .text.gpio_init at32f421_gpio.o + 0x080035be 0x080035be 0x00000002 PAD + 0x080035c0 0x080035c0 0x00000016 Code RO 26 .text.gpio_mode_QUICK functions.o + 0x080035d6 0x080035d6 0x00000002 PAD + 0x080035d8 0x080035d8 0x00000026 Code RO 28 .text.gpio_mode_set functions.o + 0x080035fe 0x080035fe 0x00000002 PAD + 0x08003600 0x08003600 0x0000002c Code RO 652 .text.gpio_pin_mux_config at32f421_gpio.o + 0x0800362c 0x0800362c 0x00000004 Code RO 1236 .text.initAfterJump peripherals.o + 0x08003630 0x08003630 0x00000198 Code RO 1214 .text.initCorePeripherals peripherals.o + 0x080037c8 0x080037c8 0x000000ae Code RO 52 .text.interruptRoutine main.o + 0x08003876 0x08003876 0x00000002 PAD + 0x08003878 0x08003878 0x0000030a Code RO 40 .text.loadEEpromSettings main.o + 0x08003b82 0x08003b82 0x00000002 PAD + 0x08003b84 0x08003b84 0x00000bd8 Code RO 66 .text.main main.o + 0x0800475c 0x0800475c 0x0000010e Code RO 1324 .text.makeTelemPackage serial_telemetry.o + 0x0800486a 0x0800486a 0x00000002 PAD + 0x0800486c 0x0800486c 0x000001c2 Code RO 4 .text.make_dshot_package dshot.o + 0x08004a2e 0x08004a2e 0x00000002 PAD + 0x08004a30 0x08004a30 0x00000050 Code RO 18 .text.map functions.o + 0x08004a80 0x08004a80 0x00000018 Code RO 1157 .text.maskPhaseInterrupts comparator.o + 0x08004a98 0x08004a98 0x00000072 Code RO 734 .text.nvic_irq_enable at32f421_misc.o + 0x08004b0a 0x08004b0a 0x00000002 PAD + 0x08004b0c 0x08004b0c 0x00000094 Code RO 170 .text.playBeaconTune3 sounds.o + 0x08004ba0 0x08004ba0 0x0000012e Code RO 154 .text.playBlueJayTune sounds.o + 0x08004cce 0x08004cce 0x00000002 PAD + 0x08004cd0 0x08004cd0 0x00000068 Code RO 168 .text.playChangedTone sounds.o + 0x08004d38 0x08004d38 0x00000068 Code RO 166 .text.playDefaultTone sounds.o + 0x08004da0 0x08004da0 0x0000007a Code RO 164 .text.playInputTune sounds.o + 0x08004e1a 0x08004e1a 0x00000002 PAD + 0x08004e1c 0x08004e1c 0x0000007c Code RO 162 .text.playInputTune2 sounds.o + 0x08004e98 0x08004e98 0x00000090 Code RO 156 .text.playStartupTune sounds.o + 0x08004f28 0x08004f28 0x00000038 Code RO 62 .text.processDshot main.o + 0x08004f60 0x08004f60 0x00000078 Code RO 1278 .text.proportionalBrake phaseouts.o + 0x08004fd8 0x08004fd8 0x0000007e Code RO 1187 .text.receiveDshotDma io.o + 0x08005056 0x08005056 0x00000002 PAD + 0x08005058 0x08005058 0x00000010 Code RO 1266 .text.resetInputCaptureTimer peripherals.o + 0x08005068 0x08005068 0x00000072 Code RO 42 .text.saveEEpromSettings main.o + 0x080050da 0x080050da 0x00000002 PAD + 0x080050dc 0x080050dc 0x0000009a Code RO 1189 .text.sendDshotDma io.o + 0x08005176 0x08005176 0x00000002 PAD + 0x08005178 0x08005178 0x0000001c Code RO 1318 .text.send_telem_DMA serial_telemetry.o + 0x08005194 0x08005194 0x00000722 Code RO 56 .text.setInput main.o + 0x080058b6 0x080058b6 0x00000002 PAD + 0x080058b8 0x080058b8 0x00000012 Code RO 1197 .text.setInputPullUp io.o + 0x080058ca 0x080058ca 0x00000002 PAD + 0x080058cc 0x080058cc 0x0000000c Code RO 1258 .text.setPWMCompare1 peripherals.o + 0x080058d8 0x080058d8 0x0000000c Code RO 1260 .text.setPWMCompare2 peripherals.o + 0x080058e4 0x080058e4 0x0000000c Code RO 1262 .text.setPWMCompare3 peripherals.o + 0x080058f0 0x080058f0 0x00000014 Code RO 146 .text.setVolume sounds.o + 0x08005904 0x08005904 0x00000076 Code RO 1216 .text.system_clock_config peripherals.o + 0x0800597a 0x0800597a 0x00000002 PAD + 0x0800597c 0x0800597c 0x000000e4 Code RO 1340 .text.system_core_clock_update system_at32f421.o + 0x08005a60 0x08005a60 0x000000f4 Code RO 1326 .text.telem_UART_Init serial_telemetry.o + 0x08005b54 0x08005b54 0x00000494 Code RO 58 .text.tenKhzRoutine main.o + 0x08005fe8 0x08005fe8 0x00000096 Code RO 920 .text.tmr_channel_enable at32f421_tmr.o + 0x0800607e 0x0800607e 0x00000002 PAD + 0x08006080 0x08006080 0x0000005e Code RO 906 .text.tmr_output_channel_buffer_enable at32f421_tmr.o + 0x080060de 0x080060de 0x00000002 PAD + 0x080060e0 0x080060e0 0x00000012 Code RO 904 .text.tmr_period_buffer_enable at32f421_tmr.o + 0x080060f2 0x080060f2 0x00000002 PAD + 0x080060f4 0x080060f4 0x000000b6 Code RO 866 .text.tmr_reset at32f421_tmr.o + 0x080061aa 0x080061aa 0x00000002 PAD + 0x080061ac 0x080061ac 0x0000019c Code RO 125 .text.transfercomplete signal.o + 0x08006348 0x08006348 0x00000012 Code RO 1002 .text.usart_dma_transmitter_enable at32f421_usart.o + 0x0800635a 0x0800635a 0x00000002 PAD + 0x0800635c 0x0800635c 0x00000012 Code RO 990 .text.usart_enable at32f421_usart.o + 0x0800636e 0x0800636e 0x00000002 PAD + 0x08006370 0x08006370 0x00000086 Code RO 986 .text.usart_init at32f421_usart.o + 0x080063f6 0x080063f6 0x00000002 PAD + 0x080063f8 0x080063f8 0x00000012 Code RO 994 .text.usart_receiver_enable at32f421_usart.o + 0x0800640a 0x0800640a 0x00000002 PAD + 0x0800640c 0x0800640c 0x00000012 Code RO 1030 .text.usart_single_line_halfduplex_select at32f421_usart.o + 0x0800641e 0x0800641e 0x00000002 PAD + 0x08006420 0x08006420 0x00000012 Code RO 992 .text.usart_transmitter_enable at32f421_usart.o + 0x08006432 0x08006432 0x00000002 PAD + 0x08006434 0x08006434 0x00000112 Code RO 60 .text.zcfoundroutine main.o + 0x08006546 0x08006546 0x00000002 PAD + 0x08006548 0x08006548 0x000000c4 Code RO 1368 x$fpl$fadd fz_ws.l(faddsub_clz.o) + 0x0800660c 0x0800660c 0x00000054 Code RO 1374 x$fpl$fcmp fz_ws.l(fcmp.o) + 0x08006660 0x08006660 0x00000018 Code RO 1417 x$fpl$fcmpinf fz_ws.l(fcmpi.o) + 0x08006678 0x08006678 0x00000184 Code RO 1377 x$fpl$fdiv fz_ws.l(fdiv.o) + 0x080067fc 0x080067fc 0x00000068 Code RO 1391 x$fpl$feqf fz_ws.l(feqf.o) + 0x08006864 0x08006864 0x00000036 Code RO 1380 x$fpl$ffix fz_ws.l(ffix.o) + 0x0800689a 0x0800689a 0x00000002 PAD + 0x0800689c 0x0800689c 0x00000030 Code RO 1385 x$fpl$fflt fz_ws.l(fflt_clz.o) + 0x080068cc 0x080068cc 0x00000068 Code RO 1393 x$fpl$fgeqf fz_ws.l(fgeqf.o) + 0x08006934 0x08006934 0x00000068 Code RO 1395 x$fpl$fleqf fz_ws.l(fleqf.o) + 0x0800699c 0x0800699c 0x0000008c Code RO 1397 x$fpl$fnaninf fz_ws.l(fnaninf.o) + 0x08006a28 0x08006a28 0x0000000a Code RO 1399 x$fpl$fretinf fz_ws.l(fretinf.o) + 0x08006a32 0x08006a32 0x00000002 PAD + 0x08006a34 0x08006a34 0x000000ea Code RO 1370 x$fpl$fsub fz_ws.l(faddsub_clz.o) + 0x08006b1e 0x08006b1e 0x00000000 Code RO 1401 x$fpl$usenofp fz_ws.l(usenofp.o) + 0x08006b1e 0x08006b1e 0x00000008 Data RO 375 .rodata.cst8 at32f421_crm.o + 0x08006b26 0x08006b26 0x00000010 Data RO 6 .rodata.gcr_encode_table dshot.o + 0x08006b36 0x08006b36 0x00000002 PAD + 0x08006b38 0x08006b38 0x00000030 Data RO 1565 Region$$Table anon$$obj.o + + + Execution Region ER_EEPROM (Exec base: 0x08007c00, Load base: 0x08006b68, Size: 0x00000104, Max: 0x0000ffff, ABSOLUTE) + + Exec Addr Load Addr Size Type Attr Idx E Section Name Object + + 0x08007c00 0x08006b68 0x00000102 Code RO 1170 .text.save_flash_nolib eeprom.o - Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08006db0, Size: 0x00000e60, Max: 0x00004000, ABSOLUTE, COMPRESSED[0x000002e8]) + Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08006c70, Size: 0x00000e60, Max: 0x00004000, ABSOLUTE, COMPRESSED[0x000002e8]) Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x20000000 COMPRESSED 0x00000060 Data RW 110 .data..L_MergedGlobals main.o - 0x20000060 COMPRESSED 0x00000006 Data RW 135 .data..L_MergedGlobals signal.o + 0x20000000 COMPRESSED 0x00000060 Data RW 109 .data..L_MergedGlobals main.o + 0x20000060 COMPRESSED 0x00000006 Data RW 134 .data..L_MergedGlobals signal.o 0x20000066 COMPRESSED 0x00000002 PAD - 0x20000068 COMPRESSED 0x00000078 Data RW 111 .data..L_MergedGlobals.1 main.o + 0x20000068 COMPRESSED 0x00000078 Data RW 110 .data..L_MergedGlobals.1 main.o 0x200000e0 COMPRESSED 0x00000001 Data RW 1206 .data.buffer_padding io.o 0x200000e1 COMPRESSED 0x00000001 Data RW 1203 .data.ic_timer_prescaler io.o 0x200000e2 COMPRESSED 0x00000002 PAD - 0x200000e4 COMPRESSED 0x00000004 Data RW 134 .data.max_servo_deviation signal.o + 0x200000e4 COMPRESSED 0x00000004 Data RW 133 .data.max_servo_deviation signal.o 0x200000e8 COMPRESSED 0x00000001 Data RW 1328 .data.nbDataToTransmit serial_telemetry.o 0x200000e9 COMPRESSED 0x00000001 PAD - 0x200000ea COMPRESSED 0x000002d0 Data RW 96 .data.pwmSin main.o + 0x200000ea COMPRESSED 0x000002d0 Data RW 95 .data.pwmSin main.o 0x200003ba COMPRESSED 0x00000002 PAD 0x200003bc COMPRESSED 0x00000004 Data RW 1342 .data.system_core_clock system_at32f421.o - 0x200003c0 - 0x00000060 Zero RW 1426 .bss c_w.l(libspace.o) + 0x200003c0 - 0x00000060 Zero RW 1430 .bss c_w.l(libspace.o) 0x20000420 - 0x0000005c Zero RW 9 .bss..L_MergedGlobals dshot.o - 0x2000047c - 0x0000001c Zero RW 136 .bss..L_MergedGlobals.1 signal.o - 0x20000498 - 0x0000007c Zero RW 112 .bss..L_MergedGlobals.2 main.o - 0x20000514 - 0x0000001c Zero RW 113 .bss..L_MergedGlobals.3 main.o - 0x20000530 - 0x00000006 Zero RW 1103 .bss.ADCDataDMA adc.o + 0x2000047c - 0x0000001c Zero RW 135 .bss..L_MergedGlobals.1 signal.o + 0x20000498 - 0x0000007c Zero RW 111 .bss..L_MergedGlobals.2 main.o + 0x20000514 - 0x0000001c Zero RW 112 .bss..L_MergedGlobals.3 main.o + 0x20000530 - 0x00000006 Zero RW 1102 .bss.ADCDataDMA adc.o 0x20000536 - 0x0000000a Zero RW 1329 .bss.aTxBuffer serial_telemetry.o - 0x20000540 - 0x00000001 Zero RW 173 .bss.beep_volume sounds.o + 0x20000540 - 0x00000001 Zero RW 172 .bss.beep_volume sounds.o 0x20000541 COMPRESSED 0x00000003 PAD 0x20000544 - 0x00000100 Zero RW 1204 .bss.dma_buffer io.o - 0x20000644 - 0x00000001 Zero RW 107 .bss.dshotcommand main.o - 0x20000645 - 0x000000b0 Zero RW 92 .bss.eepromBuffer main.o + 0x20000644 - 0x00000001 Zero RW 106 .bss.dshotcommand main.o + 0x20000645 - 0x000000b0 Zero RW 1174 .bss.eepromBuffer eeprom.o 0x200006f5 COMPRESSED 0x00000003 PAD - 0x200006f8 - 0x00000004 Zero RW 1148 .bss.exti_int at32f421_it.o + 0x200006f8 - 0x00000004 Zero RW 1147 .bss.exti_int at32f421_it.o 0x200006fc - 0x00000094 Zero RW 7 .bss.gcr dshot.o - 0x20000790 - 0x00000001 Zero RW 93 .bss.last_dshot_command main.o + 0x20000790 - 0x00000001 Zero RW 92 .bss.last_dshot_command main.o 0x20000791 - 0x00000001 Zero RW 1205 .bss.out_put io.o - 0x20000792 - 0x000000c8 Zero RW 99 .bss.readings main.o + 0x20000792 - 0x000000c8 Zero RW 98 .bss.readings main.o 0x2000085a COMPRESSED 0x00000006 PAD 0x20000860 - 0x00000200 Zero RW 1352 HEAP startup_at32f421.o 0x20000a60 - 0x00000400 Zero RW 1351 STACK startup_at32f421.o @@ -3233,7 +3248,7 @@ Memory Map of the image Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x08007be0 0x08007be0 0x0000001e Data RO 182 .rodata.test firmwareversion.o + 0x08007be0 0x08007be0 0x0000001e Data RO 181 .rodata.test firmwareversion.o ============================================================================== @@ -3243,36 +3258,36 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug Object Name - 362 0 0 0 6 13894 adc.o - 828 38 0 0 0 15461 at32f421_adc.o - 22 0 0 0 0 5748 at32f421_cmp.o - 888 30 8 0 0 19448 at32f421_crm.o - 228 0 0 0 0 5206 at32f421_dma.o - 848 0 0 0 0 39561 at32f421_flash.o - 162 0 0 0 0 11007 at32f421_gpio.o - 476 0 0 0 4 9639 at32f421_it.o - 114 0 0 0 0 6161 at32f421_misc.o - 452 20 0 0 0 28646 at32f421_tmr.o - 224 0 0 0 0 10632 at32f421_usart.o - 92 0 0 0 0 2462 comparator.o - 1728 22 16 0 240 3871 dshot.o - 388 0 0 0 0 2320 eeprom.o - 0 0 30 0 0 401 firmwareversion.o - 298 0 0 0 0 12308 functions.o - 314 0 0 2 257 13083 io.o - 7948 14 0 936 530 28940 main.o - 1186 0 0 0 0 26678 peripherals.o - 1568 12 0 0 0 10837 phaseouts.o - 542 0 0 1 10 15881 serial_telemetry.o - 1472 0 0 10 28 3942 signal.o - 1068 0 0 0 1 9105 sounds.o - 64 26 204 0 1536 228 startup_at32f421.o - 380 16 0 4 0 7644 system_at32f421.o + 362 0 0 0 6 13243 adc.o + 862 54 0 0 0 14939 at32f421_adc.o + 22 0 0 0 0 5697 at32f421_cmp.o + 880 30 8 0 0 19069 at32f421_crm.o + 228 0 0 0 0 5079 at32f421_dma.o + 848 0 0 0 0 39331 at32f421_flash.o + 166 0 0 0 0 10627 at32f421_gpio.o + 470 0 0 0 4 9205 at32f421_it.o + 114 0 0 0 0 6154 at32f421_misc.o + 444 20 0 0 0 28548 at32f421_tmr.o + 224 0 0 0 0 10512 at32f421_usart.o + 92 0 0 0 0 2384 comparator.o + 1686 22 16 0 240 3882 dshot.o + 258 0 0 0 176 3582 eeprom.o + 0 0 30 0 0 374 firmwareversion.o + 270 0 0 0 0 11603 functions.o + 314 0 0 2 257 12376 io.o + 7686 14 0 936 354 28302 main.o + 1186 0 0 0 0 25805 peripherals.o + 1568 12 0 0 0 10418 phaseouts.o + 542 0 0 1 10 15347 serial_telemetry.o + 1514 0 0 10 28 4098 signal.o + 1068 0 0 0 1 8783 sounds.o + 64 26 204 0 1536 820 startup_at32f421.o + 368 16 0 4 0 7189 system_at32f421.o ---------------------------------------------------------------------- - 21808 178 294 960 2624 303103 Object Totals - 0 0 32 0 0 0 (incl. Generated) - 156 0 4 7 12 0 (incl. Padding) + 21396 194 310 960 2624 297367 Object Totals + 0 0 48 0 0 0 (incl. Generated) + 160 0 4 7 12 0 (incl. Padding) ---------------------------------------------------------------------- @@ -3283,7 +3298,8 @@ Image component sizes 0 0 0 0 0 0 __rtentry.o 12 0 0 0 0 0 __rtentry2.o 6 0 0 0 0 0 __rtentry4.o - 52 8 0 0 0 0 __scatter.o + 94 8 0 0 0 0 __scatter.o + 26 0 0 0 0 0 __scatter_copy.o 28 0 0 0 0 0 __scatter_zi.o 18 0 0 0 0 80 exit.o 6 0 0 0 0 152 heapauxi.o @@ -3313,18 +3329,18 @@ Image component sizes 0 0 0 0 0 0 usenofp.o ---------------------------------------------------------------------- - 1914 120 0 0 96 1748 Library Totals - 10 0 0 0 0 0 (incl. Padding) + 1986 120 0 0 96 1748 Library Totals + 14 0 0 0 0 0 (incl. Padding) ---------------------------------------------------------------------- Code (inc. data) RO Data RW Data ZI Data Debug Library Name - 414 16 0 0 96 664 c_w.l + 482 16 0 0 96 664 c_w.l 1490 104 0 0 0 1084 fz_ws.l ---------------------------------------------------------------------- - 1914 120 0 0 96 1748 Library Totals + 1986 120 0 0 96 1748 Library Totals ---------------------------------------------------------------------- @@ -3333,15 +3349,15 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug - 23722 298 294 960 2720 303627 Grand Totals - 23722 298 294 744 2720 303627 ELF Image Totals (compressed) - 23722 298 294 744 0 0 ROM Totals + 23382 314 310 960 2720 298027 Grand Totals + 23382 314 310 744 2720 298027 ELF Image Totals (compressed) + 23382 314 310 744 0 0 ROM Totals ============================================================================== - Total RO Size (Code + RO Data) 24016 ( 23.45kB) + Total RO Size (Code + RO Data) 23692 ( 23.14kB) Total RW Size (RW Data + ZI Data) 3680 ( 3.59kB) - Total ROM Size (Code + RO Data + RW Data) 24760 ( 24.18kB) + Total ROM Size (Code + RO Data + RW Data) 24436 ( 23.86kB) ============================================================================== diff --git a/Mcu/e230/Inc/IO.h b/Mcu/e230/Inc/IO.h index bf20aacf..352e164a 100644 --- a/Mcu/e230/Inc/IO.h +++ b/Mcu/e230/Inc/IO.h @@ -24,7 +24,6 @@ void setInputPullUp(); void enableHalfTransferInt(); void setInputPullNone(); -extern char bi_direction; extern char inputSet; extern char dshot; extern char servoPwm; diff --git a/Mcu/e230/Inc/eeprom.h b/Mcu/e230/Inc/eeprom.h deleted file mode 100644 index 8e330498..00000000 --- a/Mcu/e230/Inc/eeprom.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * bootloader.h - * - * Created on: Mar. 25, 2020 - * Author: Alka - */ -#include "main.h" -#ifndef INC_EEPROM_H_ -#define INC_EEPROM_H_ - -#endif /* INC_BOOTLOADER_H_ */ - -// void save_to_flash(uint8_t *data); -// void read_flash(uint8_t* data, uint32_t address); -// void save_to_flash_bin(uint8_t *data, int length, uint32_t add); -void read_flash_bin(uint8_t* data, uint32_t add, int out_buff_len); -void save_flash_nolib(uint8_t* data, int length, uint32_t add); diff --git a/Mcu/e230/Src/phaseouts.c b/Mcu/e230/Src/phaseouts.c index 477ef61b..2504c3aa 100644 --- a/Mcu/e230/Src/phaseouts.c +++ b/Mcu/e230/Src/phaseouts.c @@ -8,7 +8,6 @@ #include "targets.h" -extern char comp_pwm; extern char prop_brake_active; #ifndef PWM_ENABLE_BRIDGE @@ -69,7 +68,7 @@ void proportionalBrake() void phaseBPWM() { - if (!comp_pwm) { // for future + if (!eepromBuffer.comp_pwm) { // for future gpio_mode_QUICK(PHASE_B_GPIO_PORT_LOW, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, PHASE_B_GPIO_LOW); GPIO_BC(PHASE_B_GPIO_PORT_LOW) = PHASE_B_GPIO_LOW; @@ -118,7 +117,7 @@ void phaseBLOW() void phaseCPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { gpio_mode_QUICK(PHASE_C_GPIO_PORT_LOW, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, PHASE_C_GPIO_LOW); GPIO_BC(PHASE_C_GPIO_PORT_LOW) = PHASE_C_GPIO_LOW; @@ -157,7 +156,7 @@ void phaseCLOW() void phaseAPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { gpio_mode_QUICK(PHASE_A_GPIO_PORT_LOW, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, PHASE_A_GPIO_LOW); GPIO_BC(PHASE_A_GPIO_PORT_LOW) = PHASE_A_GPIO_LOW; @@ -194,7 +193,7 @@ void phaseALOW() //////////////////////////////////PHASE 1////////////////////// void phaseBPWM() { - if (!comp_pwm) { // for future + if (!eepromBuffer.comp_pwm) { // for future // gpio_mode_QUICK(PHASE_B_GPIO_PORT_LOW, GPIO_MODE_OUTPUT, // GPIO_PUPD_NONE, PHASE_B_GPIO_LOW); // GPIO_BC(PHASE_B_GPIO_PORT_LOW) = PHASE_B_GPIO_LOW; @@ -233,7 +232,7 @@ void phaseBLOW() void phaseCPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { // gpio_mode_QUICK(PHASE_C_GPIO_PORT_LOW, GPIO_MODE_OUTPUT, // GPIO_PUPD_NONE, // PHASE_C_GPIO_LOW); GPIO_BC(PHASE_C_GPIO_PORT_LOW) = PHASE_C_GPIO_LOW; @@ -272,7 +271,7 @@ void phaseCLOW() void phaseAPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { // gpio_mode_QUICK(PHASE_A_GPIO_PORT_LOW, GPIO_MODE_OUTPUT, // GPIO_PUPD_NONE, // PHASE_A_GPIO_LOW); GPIO_BC(PHASE_A_GPIO_PORT_LOW) = PHASE_A_GPIO_LOW; diff --git a/Mcu/f031/Inc/IO.h b/Mcu/f031/Inc/IO.h index bf20aacf..352e164a 100644 --- a/Mcu/f031/Inc/IO.h +++ b/Mcu/f031/Inc/IO.h @@ -24,7 +24,6 @@ void setInputPullUp(); void enableHalfTransferInt(); void setInputPullNone(); -extern char bi_direction; extern char inputSet; extern char dshot; extern char servoPwm; diff --git a/Mcu/f031/Inc/eeprom.h b/Mcu/f031/Inc/eeprom.h deleted file mode 100644 index 8e330498..00000000 --- a/Mcu/f031/Inc/eeprom.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * bootloader.h - * - * Created on: Mar. 25, 2020 - * Author: Alka - */ -#include "main.h" -#ifndef INC_EEPROM_H_ -#define INC_EEPROM_H_ - -#endif /* INC_BOOTLOADER_H_ */ - -// void save_to_flash(uint8_t *data); -// void read_flash(uint8_t* data, uint32_t address); -// void save_to_flash_bin(uint8_t *data, int length, uint32_t add); -void read_flash_bin(uint8_t* data, uint32_t add, int out_buff_len); -void save_flash_nolib(uint8_t* data, int length, uint32_t add); diff --git a/Mcu/f031/Src/phaseouts.c b/Mcu/f031/Src/phaseouts.c index 0dde9f26..fdcf49e0 100644 --- a/Mcu/f031/Src/phaseouts.c +++ b/Mcu/f031/Src/phaseouts.c @@ -8,7 +8,6 @@ #include "targets.h" -extern char comp_pwm; extern char prop_brake_active; #ifndef PWM_ENABLE_BRIDGE @@ -61,7 +60,7 @@ void proportionalBrake() void phaseBPWM() { - if (!comp_pwm) { // for future + if (!eepromBuffer.comp_pwm) { // for future LL_GPIO_SetPinMode(PHASE_B_GPIO_PORT_LOW, PHASE_B_GPIO_LOW, LL_GPIO_MODE_OUTPUT); PHASE_B_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_B_GPIO_LOW; @@ -99,7 +98,7 @@ void phaseBLOW() void phaseCPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { LL_GPIO_SetPinMode(PHASE_C_GPIO_PORT_LOW, PHASE_C_GPIO_LOW, LL_GPIO_MODE_OUTPUT); PHASE_C_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_C_GPIO_LOW; @@ -137,7 +136,7 @@ void phaseCLOW() void phaseAPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { LL_GPIO_SetPinMode(PHASE_A_GPIO_PORT_LOW, PHASE_A_GPIO_LOW, LL_GPIO_MODE_OUTPUT); PHASE_A_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_A_GPIO_LOW; @@ -174,7 +173,7 @@ void phaseALOW() //////////////////////////////////PHASE 1////////////////////// void phaseBPWM() { - if (!comp_pwm) { // for future + if (!eepromBuffer.comp_pwm) { // for future // LL_GPIO_SetPinMode(PHASE_B_GPIO_PORT_LOW, // PHASE_B_GPIO_LOW, LL_GPIO_MODE_OUTPUT); // PHASE_B_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_B_GPIO_LOW; @@ -213,7 +212,7 @@ void phaseBLOW() void phaseCPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { // LL_GPIO_SetPinMode(PHASE_C_GPIO_PORT_LOW, PHASE_C_GPIO_LOW, // LL_GPIO_MODE_OUTPUT); PHASE_C_GPIO_PORT_LOW->LOW_BITREG_OFF = // PHASE_C_GPIO_LOW; @@ -252,7 +251,7 @@ void phaseCLOW() void phaseAPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { // LL_GPIO_SetPinMode(PHASE_A_GPIO_PORT_LOW, PHASE_A_GPIO_LOW, // LL_GPIO_MODE_OUTPUT); PHASE_A_GPIO_PORT_LOW->LOW_BITREG_OFF = // PHASE_A_GPIO_LOW; diff --git a/Mcu/f051/Inc/IO.h b/Mcu/f051/Inc/IO.h index 755f6a05..8b1d7459 100644 --- a/Mcu/f051/Inc/IO.h +++ b/Mcu/f051/Inc/IO.h @@ -24,8 +24,6 @@ void setInputPullUp(); void enableHalfTransferInt(); void setInputPullNone(); -extern char bi_direction; - extern char send_telemetry; extern uint8_t degrees_celsius; diff --git a/Mcu/f051/Inc/eeprom.h b/Mcu/f051/Inc/eeprom.h deleted file mode 100644 index 8e330498..00000000 --- a/Mcu/f051/Inc/eeprom.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * bootloader.h - * - * Created on: Mar. 25, 2020 - * Author: Alka - */ -#include "main.h" -#ifndef INC_EEPROM_H_ -#define INC_EEPROM_H_ - -#endif /* INC_BOOTLOADER_H_ */ - -// void save_to_flash(uint8_t *data); -// void read_flash(uint8_t* data, uint32_t address); -// void save_to_flash_bin(uint8_t *data, int length, uint32_t add); -void read_flash_bin(uint8_t* data, uint32_t add, int out_buff_len); -void save_flash_nolib(uint8_t* data, int length, uint32_t add); diff --git a/Mcu/f051/Src/phaseouts.c b/Mcu/f051/Src/phaseouts.c index 77f20842..eedd2d8e 100644 --- a/Mcu/f051/Src/phaseouts.c +++ b/Mcu/f051/Src/phaseouts.c @@ -8,7 +8,6 @@ #include "targets.h" -extern char comp_pwm; extern char prop_brake_active; #ifndef PWM_ENABLE_BRIDGE @@ -60,7 +59,7 @@ void proportionalBrake() void phaseBPWM() { - if (!comp_pwm) { // for future + if (!eepromBuffer.comp_pwm) { // for future LL_GPIO_SetPinMode(PHASE_B_GPIO_PORT_LOW, PHASE_B_GPIO_LOW, LL_GPIO_MODE_OUTPUT); PHASE_B_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_B_GPIO_LOW; @@ -98,7 +97,7 @@ void phaseBLOW() void phaseCPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { LL_GPIO_SetPinMode(PHASE_C_GPIO_PORT_LOW, PHASE_C_GPIO_LOW, LL_GPIO_MODE_OUTPUT); PHASE_C_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_C_GPIO_LOW; @@ -136,7 +135,7 @@ void phaseCLOW() void phaseAPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { LL_GPIO_SetPinMode(PHASE_A_GPIO_PORT_LOW, PHASE_A_GPIO_LOW, LL_GPIO_MODE_OUTPUT); PHASE_A_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_A_GPIO_LOW; @@ -173,7 +172,7 @@ void phaseALOW() //////////////////////////////////PHASE 1////////////////////// void phaseBPWM() { - if (!comp_pwm) { // for future + if (!eepromBuffer.comp_pwm) { // for future // LL_GPIO_SetPinMode(PHASE_B_GPIO_PORT_LOW, // PHASE_B_GPIO_LOW, LL_GPIO_MODE_OUTPUT); // PHASE_B_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_B_GPIO_LOW; @@ -212,7 +211,7 @@ void phaseBLOW() void phaseCPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { // LL_GPIO_SetPinMode(PHASE_C_GPIO_PORT_LOW, PHASE_C_GPIO_LOW, // LL_GPIO_MODE_OUTPUT); PHASE_C_GPIO_PORT_LOW->LOW_BITREG_OFF = // PHASE_C_GPIO_LOW; @@ -251,7 +250,7 @@ void phaseCLOW() void phaseAPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { // LL_GPIO_SetPinMode(PHASE_A_GPIO_PORT_LOW, PHASE_A_GPIO_LOW, // LL_GPIO_MODE_OUTPUT); PHASE_A_GPIO_PORT_LOW->LOW_BITREG_OFF = // PHASE_A_GPIO_LOW; diff --git a/Mcu/f415/Inc/IO.h b/Mcu/f415/Inc/IO.h index bf20aacf..352e164a 100644 --- a/Mcu/f415/Inc/IO.h +++ b/Mcu/f415/Inc/IO.h @@ -24,7 +24,6 @@ void setInputPullUp(); void enableHalfTransferInt(); void setInputPullNone(); -extern char bi_direction; extern char inputSet; extern char dshot; extern char servoPwm; diff --git a/Mcu/f415/Inc/eeprom.h b/Mcu/f415/Inc/eeprom.h deleted file mode 100644 index 658a9129..00000000 --- a/Mcu/f415/Inc/eeprom.h +++ /dev/null @@ -1,7 +0,0 @@ -#include "main.h" - -// void save_to_flash(uint8_t *data); -// void read_flash(uint8_t* data, uint32_t address); -// void save_to_flash_bin(uint8_t *data, int length, uint32_t add); -void read_flash_bin(uint8_t* data, uint32_t add, int out_buff_len); -void save_flash_nolib(uint8_t* data, int length, uint32_t add); \ No newline at end of file diff --git a/Mcu/f415/Src/phaseouts.c b/Mcu/f415/Src/phaseouts.c index 92b454f8..ca8605ab 100644 --- a/Mcu/f415/Src/phaseouts.c +++ b/Mcu/f415/Src/phaseouts.c @@ -9,7 +9,6 @@ #include "functions.h" #include "targets.h" -extern char comp_pwm; extern char prop_brake_active; #ifndef PWM_ENABLE_BRIDGE @@ -61,7 +60,7 @@ void proportionalBrake() } // void phaseCPWM() { -// if (!comp_pwm){ +// if (!eepromBuffer.comp_pwm){ // gpio_mode_QUICK(PHASE_C_GPIO_PORT_LOW, // GPIO_MODE_OUTPUT, // GPIO_PULL_NONE, PHASE_C_GPIO_LOW); @@ -88,7 +87,7 @@ void proportionalBrake() void phaseBPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { gpio_mode_QUICK(PHASE_B_GPIO_PORT_LOW, GPIO_MODE_OUTPUT, GPIO_PULL_NONE, PHASE_B_GPIO_LOW); PHASE_B_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_B_GPIO_LOW; @@ -124,7 +123,7 @@ void phaseBLOW() void phaseCPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { gpio_mode_QUICK(PHASE_C_GPIO_PORT_LOW, GPIO_MODE_OUTPUT, GPIO_PULL_NONE, PHASE_C_GPIO_LOW); PHASE_C_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_C_GPIO_LOW; @@ -163,7 +162,7 @@ void phaseCLOW() void phaseAPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { gpio_mode_QUICK(PHASE_A_GPIO_PORT_LOW, GPIO_MODE_OUTPUT, GPIO_PULL_NONE, PHASE_A_GPIO_LOW); PHASE_A_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_A_GPIO_LOW; @@ -200,7 +199,7 @@ void phaseALOW() //////////////////////////////////PHASE 1////////////////////// void phaseBPWM() { - if (!comp_pwm) { // for future + if (!eepromBuffer.comp_pwm) { // for future // gpio_mode_QUICK(PHASE_B_GPIO_PORT_LOW, GPIO_MODE_OUTPUT, // GPIO_PULL_NONE, PHASE_B_GPIO_LOW); // PHASE_B_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_B_GPIO_LOW; @@ -239,7 +238,7 @@ void phaseBLOW() void phaseCPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { // gpio_mode_QUICK(PHASE_C_GPIO_PORT_LOW, GPIO_MODE_OUTPUT, // GPIO_PULL_NONE, // PHASE_C_GPIO_LOW); PHASE_C_GPIO_PORT_LOW->LOW_BITREG_OFF = @@ -279,7 +278,7 @@ void phaseCLOW() void phaseAPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { // gpio_mode_QUICK(PHASE_A_GPIO_PORT_LOW, GPIO_MODE_OUTPUT, // GPIO_PULL_NONE, // PHASE_A_GPIO_LOW); PHASE_A_GPIO_PORT_LOW->LOW_BITREG_OFF = diff --git a/Mcu/f421/Am32.sct b/Mcu/f421/Am32.sct index fafa719f..ef85ebb7 100644 --- a/Mcu/f421/Am32.sct +++ b/Mcu/f421/Am32.sct @@ -2,8 +2,8 @@ ; *** Scatter-Loading Description File generated by uVision *** ; ************************************************************* -LR_IROM1 0x08001000 0x0000FFFF { ; load region size_region - ER_IROM1 0x08001000 0x0000FFFF { ; load address = execution address +LR_IROM1 0x08001000 0x00007BDF { ; load region size_region + ER_IROM1 0x08001000 0x00007BDF { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) @@ -15,6 +15,6 @@ LR_IROM1 0x08001000 0x0000FFFF { ; load region size_region } LR_FIRMWAREVERSION 0x08007BE0 0x00000020{ FIRMWAREVERSION 0x08007BE0 0x00000020{ - firmwareversion.o (+RO) + firmwareversion.o (+RO) } } diff --git a/Mcu/f421/Inc/IO.h b/Mcu/f421/Inc/IO.h index bf20aacf..352e164a 100644 --- a/Mcu/f421/Inc/IO.h +++ b/Mcu/f421/Inc/IO.h @@ -24,7 +24,6 @@ void setInputPullUp(); void enableHalfTransferInt(); void setInputPullNone(); -extern char bi_direction; extern char inputSet; extern char dshot; extern char servoPwm; diff --git a/Mcu/f421/Inc/phaseouts.h b/Mcu/f421/Inc/phaseouts.h index 37612388..8f30ce90 100644 --- a/Mcu/f421/Inc/phaseouts.h +++ b/Mcu/f421/Inc/phaseouts.h @@ -9,6 +9,7 @@ #define INC_PHASEOUTS_H_ #include "main.h" +#include "common.h" void allOff(); void comStep(int newStep); diff --git a/Mcu/f421/Src/phaseouts.c b/Mcu/f421/Src/phaseouts.c index ece74226..9f2eb521 100644 --- a/Mcu/f421/Src/phaseouts.c +++ b/Mcu/f421/Src/phaseouts.c @@ -9,7 +9,6 @@ #include "functions.h" #include "targets.h" -extern char comp_pwm; extern char prop_brake_active; #ifndef PWM_ENABLE_BRIDGE @@ -61,7 +60,7 @@ void proportionalBrake() } // void phaseCPWM() { -// if (!comp_pwm){ +// if (!eepromBuffer.comp_pwm){ // gpio_mode_QUICK(PHASE_C_GPIO_PORT_LOW, // GPIO_MODE_OUTPUT, // GPIO_PULL_NONE, PHASE_C_GPIO_LOW); @@ -88,7 +87,7 @@ void proportionalBrake() void phaseBPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { gpio_mode_QUICK(PHASE_B_GPIO_PORT_LOW, GPIO_MODE_OUTPUT, GPIO_PULL_NONE, PHASE_B_GPIO_LOW); PHASE_B_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_B_GPIO_LOW; @@ -124,7 +123,7 @@ void phaseBLOW() void phaseCPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { gpio_mode_QUICK(PHASE_C_GPIO_PORT_LOW, GPIO_MODE_OUTPUT, GPIO_PULL_NONE, PHASE_C_GPIO_LOW); PHASE_C_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_C_GPIO_LOW; @@ -163,7 +162,7 @@ void phaseCLOW() void phaseAPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { gpio_mode_QUICK(PHASE_A_GPIO_PORT_LOW, GPIO_MODE_OUTPUT, GPIO_PULL_NONE, PHASE_A_GPIO_LOW); PHASE_A_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_A_GPIO_LOW; @@ -200,7 +199,7 @@ void phaseALOW() //////////////////////////////////PHASE 1////////////////////// void phaseBPWM() { - if (!comp_pwm) { // for future + if (!eepromBuffer.comp_pwm) { // for future // gpio_mode_QUICK(PHASE_B_GPIO_PORT_LOW, GPIO_MODE_OUTPUT, // GPIO_PULL_NONE, PHASE_B_GPIO_LOW); // PHASE_B_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_B_GPIO_LOW; @@ -239,7 +238,7 @@ void phaseBLOW() void phaseCPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { // gpio_mode_QUICK(PHASE_C_GPIO_PORT_LOW, GPIO_MODE_OUTPUT, // GPIO_PULL_NONE, // PHASE_C_GPIO_LOW); PHASE_C_GPIO_PORT_LOW->LOW_BITREG_OFF = @@ -279,7 +278,7 @@ void phaseCLOW() void phaseAPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { // gpio_mode_QUICK(PHASE_A_GPIO_PORT_LOW, GPIO_MODE_OUTPUT, // GPIO_PULL_NONE, // PHASE_A_GPIO_LOW); PHASE_A_GPIO_PORT_LOW->LOW_BITREG_OFF = diff --git a/Mcu/g071/Inc/eeprom.h b/Mcu/g071/Inc/eeprom.h deleted file mode 100644 index 8e330498..00000000 --- a/Mcu/g071/Inc/eeprom.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * bootloader.h - * - * Created on: Mar. 25, 2020 - * Author: Alka - */ -#include "main.h" -#ifndef INC_EEPROM_H_ -#define INC_EEPROM_H_ - -#endif /* INC_BOOTLOADER_H_ */ - -// void save_to_flash(uint8_t *data); -// void read_flash(uint8_t* data, uint32_t address); -// void save_to_flash_bin(uint8_t *data, int length, uint32_t add); -void read_flash_bin(uint8_t* data, uint32_t add, int out_buff_len); -void save_flash_nolib(uint8_t* data, int length, uint32_t add); diff --git a/Mcu/g071/Src/phaseouts.c b/Mcu/g071/Src/phaseouts.c index 0dde9f26..fdcf49e0 100644 --- a/Mcu/g071/Src/phaseouts.c +++ b/Mcu/g071/Src/phaseouts.c @@ -8,7 +8,6 @@ #include "targets.h" -extern char comp_pwm; extern char prop_brake_active; #ifndef PWM_ENABLE_BRIDGE @@ -61,7 +60,7 @@ void proportionalBrake() void phaseBPWM() { - if (!comp_pwm) { // for future + if (!eepromBuffer.comp_pwm) { // for future LL_GPIO_SetPinMode(PHASE_B_GPIO_PORT_LOW, PHASE_B_GPIO_LOW, LL_GPIO_MODE_OUTPUT); PHASE_B_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_B_GPIO_LOW; @@ -99,7 +98,7 @@ void phaseBLOW() void phaseCPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { LL_GPIO_SetPinMode(PHASE_C_GPIO_PORT_LOW, PHASE_C_GPIO_LOW, LL_GPIO_MODE_OUTPUT); PHASE_C_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_C_GPIO_LOW; @@ -137,7 +136,7 @@ void phaseCLOW() void phaseAPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { LL_GPIO_SetPinMode(PHASE_A_GPIO_PORT_LOW, PHASE_A_GPIO_LOW, LL_GPIO_MODE_OUTPUT); PHASE_A_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_A_GPIO_LOW; @@ -174,7 +173,7 @@ void phaseALOW() //////////////////////////////////PHASE 1////////////////////// void phaseBPWM() { - if (!comp_pwm) { // for future + if (!eepromBuffer.comp_pwm) { // for future // LL_GPIO_SetPinMode(PHASE_B_GPIO_PORT_LOW, // PHASE_B_GPIO_LOW, LL_GPIO_MODE_OUTPUT); // PHASE_B_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_B_GPIO_LOW; @@ -213,7 +212,7 @@ void phaseBLOW() void phaseCPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { // LL_GPIO_SetPinMode(PHASE_C_GPIO_PORT_LOW, PHASE_C_GPIO_LOW, // LL_GPIO_MODE_OUTPUT); PHASE_C_GPIO_PORT_LOW->LOW_BITREG_OFF = // PHASE_C_GPIO_LOW; @@ -252,7 +251,7 @@ void phaseCLOW() void phaseAPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { // LL_GPIO_SetPinMode(PHASE_A_GPIO_PORT_LOW, PHASE_A_GPIO_LOW, // LL_GPIO_MODE_OUTPUT); PHASE_A_GPIO_PORT_LOW->LOW_BITREG_OFF = // PHASE_A_GPIO_LOW; diff --git a/Mcu/g431/Inc/eeprom.h b/Mcu/g431/Inc/eeprom.h deleted file mode 100644 index 8e330498..00000000 --- a/Mcu/g431/Inc/eeprom.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * bootloader.h - * - * Created on: Mar. 25, 2020 - * Author: Alka - */ -#include "main.h" -#ifndef INC_EEPROM_H_ -#define INC_EEPROM_H_ - -#endif /* INC_BOOTLOADER_H_ */ - -// void save_to_flash(uint8_t *data); -// void read_flash(uint8_t* data, uint32_t address); -// void save_to_flash_bin(uint8_t *data, int length, uint32_t add); -void read_flash_bin(uint8_t* data, uint32_t add, int out_buff_len); -void save_flash_nolib(uint8_t* data, int length, uint32_t add); diff --git a/Mcu/g431/Src/phaseouts.c b/Mcu/g431/Src/phaseouts.c index b930f438..3b93047b 100644 --- a/Mcu/g431/Src/phaseouts.c +++ b/Mcu/g431/Src/phaseouts.c @@ -8,7 +8,6 @@ #include "targets.h" -extern char comp_pwm; extern char prop_brake_active; #ifndef PWM_ENABLE_BRIDGE @@ -61,7 +60,7 @@ void proportionalBrake() void phaseBPWM() { - if (!comp_pwm) { // for future + if (!eepromBuffer.comp_pwm) { // for future LL_GPIO_SetPinMode(PHASE_B_GPIO_PORT_LOW, PHASE_B_GPIO_LOW, LL_GPIO_MODE_OUTPUT); PHASE_B_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_B_GPIO_LOW; @@ -99,7 +98,7 @@ void phaseBLOW() void phaseCPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { LL_GPIO_SetPinMode(PHASE_C_GPIO_PORT_LOW, PHASE_C_GPIO_LOW, LL_GPIO_MODE_OUTPUT); PHASE_C_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_C_GPIO_LOW; @@ -137,7 +136,7 @@ void phaseCLOW() void phaseAPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { LL_GPIO_SetPinMode(PHASE_A_GPIO_PORT_LOW, PHASE_A_GPIO_LOW, LL_GPIO_MODE_OUTPUT); PHASE_A_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_A_GPIO_LOW; @@ -174,7 +173,7 @@ void phaseALOW() //////////////////////////////////PHASE 1////////////////////// void phaseBPWM() { - if (!comp_pwm) { // for future + if (!eepromBuffer.comp_pwm) { // for future // LL_GPIO_SetPinMode(PHASE_B_GPIO_PORT_LOW, // PHASE_B_GPIO_LOW, LL_GPIO_MODE_OUTPUT); // PHASE_B_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_B_GPIO_LOW; @@ -213,7 +212,7 @@ void phaseBLOW() void phaseCPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { // LL_GPIO_SetPinMode(PHASE_C_GPIO_PORT_LOW, PHASE_C_GPIO_LOW, // LL_GPIO_MODE_OUTPUT); PHASE_C_GPIO_PORT_LOW->LOW_BITREG_OFF = // PHASE_C_GPIO_LOW; @@ -252,7 +251,7 @@ void phaseCLOW() void phaseAPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { // LL_GPIO_SetPinMode(PHASE_A_GPIO_PORT_LOW, PHASE_A_GPIO_LOW, // LL_GPIO_MODE_OUTPUT); PHASE_A_GPIO_PORT_LOW->LOW_BITREG_OFF = // PHASE_A_GPIO_LOW; diff --git a/Mcu/l431/Inc/IO.h b/Mcu/l431/Inc/IO.h index 755f6a05..8b1d7459 100644 --- a/Mcu/l431/Inc/IO.h +++ b/Mcu/l431/Inc/IO.h @@ -24,8 +24,6 @@ void setInputPullUp(); void enableHalfTransferInt(); void setInputPullNone(); -extern char bi_direction; - extern char send_telemetry; extern uint8_t degrees_celsius; diff --git a/Mcu/l431/Inc/eeprom.h b/Mcu/l431/Inc/eeprom.h deleted file mode 100644 index 8e330498..00000000 --- a/Mcu/l431/Inc/eeprom.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * bootloader.h - * - * Created on: Mar. 25, 2020 - * Author: Alka - */ -#include "main.h" -#ifndef INC_EEPROM_H_ -#define INC_EEPROM_H_ - -#endif /* INC_BOOTLOADER_H_ */ - -// void save_to_flash(uint8_t *data); -// void read_flash(uint8_t* data, uint32_t address); -// void save_to_flash_bin(uint8_t *data, int length, uint32_t add); -void read_flash_bin(uint8_t* data, uint32_t add, int out_buff_len); -void save_flash_nolib(uint8_t* data, int length, uint32_t add); diff --git a/Mcu/l431/Src/phaseouts.c b/Mcu/l431/Src/phaseouts.c index 77f20842..eedd2d8e 100644 --- a/Mcu/l431/Src/phaseouts.c +++ b/Mcu/l431/Src/phaseouts.c @@ -8,7 +8,6 @@ #include "targets.h" -extern char comp_pwm; extern char prop_brake_active; #ifndef PWM_ENABLE_BRIDGE @@ -60,7 +59,7 @@ void proportionalBrake() void phaseBPWM() { - if (!comp_pwm) { // for future + if (!eepromBuffer.comp_pwm) { // for future LL_GPIO_SetPinMode(PHASE_B_GPIO_PORT_LOW, PHASE_B_GPIO_LOW, LL_GPIO_MODE_OUTPUT); PHASE_B_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_B_GPIO_LOW; @@ -98,7 +97,7 @@ void phaseBLOW() void phaseCPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { LL_GPIO_SetPinMode(PHASE_C_GPIO_PORT_LOW, PHASE_C_GPIO_LOW, LL_GPIO_MODE_OUTPUT); PHASE_C_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_C_GPIO_LOW; @@ -136,7 +135,7 @@ void phaseCLOW() void phaseAPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { LL_GPIO_SetPinMode(PHASE_A_GPIO_PORT_LOW, PHASE_A_GPIO_LOW, LL_GPIO_MODE_OUTPUT); PHASE_A_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_A_GPIO_LOW; @@ -173,7 +172,7 @@ void phaseALOW() //////////////////////////////////PHASE 1////////////////////// void phaseBPWM() { - if (!comp_pwm) { // for future + if (!eepromBuffer.comp_pwm) { // for future // LL_GPIO_SetPinMode(PHASE_B_GPIO_PORT_LOW, // PHASE_B_GPIO_LOW, LL_GPIO_MODE_OUTPUT); // PHASE_B_GPIO_PORT_LOW->LOW_BITREG_OFF = PHASE_B_GPIO_LOW; @@ -212,7 +211,7 @@ void phaseBLOW() void phaseCPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { // LL_GPIO_SetPinMode(PHASE_C_GPIO_PORT_LOW, PHASE_C_GPIO_LOW, // LL_GPIO_MODE_OUTPUT); PHASE_C_GPIO_PORT_LOW->LOW_BITREG_OFF = // PHASE_C_GPIO_LOW; @@ -251,7 +250,7 @@ void phaseCLOW() void phaseAPWM() { - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { // LL_GPIO_SetPinMode(PHASE_A_GPIO_PORT_LOW, PHASE_A_GPIO_LOW, // LL_GPIO_MODE_OUTPUT); PHASE_A_GPIO_PORT_LOW->LOW_BITREG_OFF = // PHASE_A_GPIO_LOW; diff --git a/Src/dshot.c b/Src/dshot.c index a55ffefe..b59d4e6a 100644 --- a/Src/dshot.c +++ b/Src/dshot.c @@ -127,24 +127,24 @@ void computeDshotDMA() play_tone_flag = 5; break; case 7: - dir_reversed = 0; - forward = 1 - dir_reversed; + eepromBuffer.dir_reversed = 0; + forward = 1 - eepromBuffer.dir_reversed; // play_tone_flag = 1; break; case 8: - dir_reversed = 1; - forward = 1 - dir_reversed; + eepromBuffer.dir_reversed = 1; + forward = 1 - eepromBuffer.dir_reversed; // play_tone_flag = 2; break; case 9: - bi_direction = 0; + eepromBuffer.bi_direction = 0; break; case 10: - bi_direction = 1; + eepromBuffer.bi_direction = 1; break; case 12: saveEEpromSettings(); - play_tone_flag = 1 + dir_reversed; + play_tone_flag = 1 + eepromBuffer.dir_reversed; // NVIC_SystemReset(); break; case 13: @@ -160,10 +160,10 @@ void computeDshotDMA() // make_dshot_package(); break; case 20: - forward = 1 - dir_reversed; + forward = 1 - eepromBuffer.dir_reversed; break; case 21: - forward = dir_reversed; + forward = eepromBuffer.dir_reversed; break; } last_dshot_command = dshotcommand; diff --git a/Src/main.c b/Src/main.c index c6bf8eed..aad84a13 100644 --- a/Src/main.c +++ b/Src/main.c @@ -316,28 +316,11 @@ uint8_t compute_dshot_flag = 0; uint8_t crsf_input_channel = 1; uint8_t crsf_output_PWM_channel = 2; char eeprom_layout_version = 2; -char comp_pwm = 1; -char VARIABLE_PWM = 1; -char bi_direction = 0; -char stuck_rotor_protection = 1; // Turn off for Crawlers -char brake_on_stop = 0; -char stall_protection = 0; -char use_sin_start = 0; -char TLM_ON_INTERVAL = 0; uint8_t telemetry_interval_ms = 30; -uint8_t TEMPERATURE_LIMIT = 255; // degrees 255 to disable -char advance_level = 2; // 7.5 degree increments 0 , 7.5, 15, 22.5) char temp_advance = 1; uint16_t motor_kv = 2000; -char motor_poles = 14; -uint16_t CURRENT_LIMIT = 202; -uint8_t sine_mode_power = 5; -char drag_brake_strength = 10; // Drag Brake Power when brake on stop is enabled -uint8_t driving_brake_strength = 10; uint8_t dead_time_override = DEAD_TIME; -char sine_mode_changeover_thottle_level = 5; // Sine Startup Range uint16_t stall_protect_target_interval = TARGET_STALL_PROTECTION_INTERVAL; -char USE_HALL_SENSOR = 0; uint16_t enter_sine_angle = 180; char do_once_sinemode = 0; uint8_t auto_advance_level; @@ -374,8 +357,6 @@ char firmware_name[12] = FIRMWARE_NAME; uint8_t EEPROM_VERSION; // move these to targets folder or peripherals for each mcu -char RC_CAR_REVERSE = 0; // have to set bidirectional, comp_pwm off and stall - // protection off, no sinusoidal startup uint16_t ADC_CCR = 30; uint16_t current_angle = 90; uint16_t desired_angle = 90; @@ -469,8 +450,6 @@ char send_telemetry = 0; char telemetry_done = 0; char prop_brake_active = 0; -EEprom_t eepromBuffer; - char dshot_telemetry = 0; uint8_t last_dshot_command = 0; @@ -641,47 +620,18 @@ float doPidCalculations(struct fastPID* pidnow, int actual, int target) void loadEEpromSettings() { - read_flash_bin(eepromBuffer.buffer, eeprom_address, 176); + //*eepromBuffer = *(EEprom_t*)(eeprom_address); + read_flash_bin(eepromBuffer.buffer, eeprom_address, sizeof(eepromBuffer.buffer)); - if (eepromBuffer.buffer[18] == 0x01) { - bi_direction = 1; - } else { - bi_direction = 0; - } - if (eepromBuffer.buffer[19] == 0x01) { - use_sin_start = 1; - // min_startup_duty = sin_mode_min_s_d; - } - if (eepromBuffer.buffer[20] == 0x01) { - comp_pwm = 1; - } else { - comp_pwm = 0; - } - if (eepromBuffer.buffer[21] == 0x01) { - VARIABLE_PWM = 1; - } else { - VARIABLE_PWM = 0; - } - if (eepromBuffer.buffer[22] == 0x01) { - stuck_rotor_protection = 1; - } else { - stuck_rotor_protection = 0; - } - if (eepromBuffer.buffer[23] < 4) { - advance_level = eepromBuffer.buffer[23]; - } else { - advance_level = 2; // * 7.5 increments - } - - if (eepromBuffer.buffer[24] < 49 && eepromBuffer.buffer[24] > 7) { - if (eepromBuffer.buffer[24] < 49 && eepromBuffer.buffer[24] > 23) { - TIMER1_MAX_ARR = map(eepromBuffer.buffer[24], 24, 48, TIM1_AUTORELOAD, TIM1_AUTORELOAD / 2); + if (eepromBuffer.pwm_frequency < 49 && eepromBuffer.pwm_frequency > 7) { + if (eepromBuffer.pwm_frequency < 49 && eepromBuffer.pwm_frequency > 23) { + TIMER1_MAX_ARR = map(eepromBuffer.pwm_frequency, 24, 48, TIM1_AUTORELOAD, TIM1_AUTORELOAD / 2); } - if (eepromBuffer.buffer[24] < 24 && eepromBuffer.buffer[24] > 11) { - TIMER1_MAX_ARR = map(eepromBuffer.buffer[24], 12, 24, TIM1_AUTORELOAD * 2, TIM1_AUTORELOAD); + if (eepromBuffer.pwm_frequency < 24 && eepromBuffer.pwm_frequency > 11) { + TIMER1_MAX_ARR = map(eepromBuffer.pwm_frequency, 12, 24, TIM1_AUTORELOAD * 2, TIM1_AUTORELOAD); } - if (eepromBuffer.buffer[24] < 12 && eepromBuffer.buffer[24] > 7) { - TIMER1_MAX_ARR = map(eepromBuffer.buffer[24], 7, 16, TIM1_AUTORELOAD * 3, + if (eepromBuffer.pwm_frequency < 12 && eepromBuffer.pwm_frequency > 7) { + TIMER1_MAX_ARR = map(eepromBuffer.pwm_frequency, 7, 16, TIM1_AUTORELOAD * 3, TIM1_AUTORELOAD / 2 * 3); } SET_AUTO_RELOAD_PWM(TIMER1_MAX_ARR); @@ -692,115 +642,92 @@ void loadEEpromSettings() SET_AUTO_RELOAD_PWM(tim1_arr); } - if (eepromBuffer.buffer[25] < 151 && eepromBuffer.buffer[25] > 49) { - min_startup_duty = (eepromBuffer.buffer[25]); - minimum_duty_cycle = (eepromBuffer.buffer[25] / 3); + if (eepromBuffer.startup_power < 151 && eepromBuffer.startup_power > 49) { + min_startup_duty = (eepromBuffer.startup_power); + minimum_duty_cycle = (eepromBuffer.startup_power / 3); stall_protect_minimum_duty = minimum_duty_cycle + 10; } else { min_startup_duty = 150; minimum_duty_cycle = (min_startup_duty / 2) + 10; } - motor_kv = (eepromBuffer.buffer[26] * 40) + 20; + motor_kv = (eepromBuffer.motor_kv * 40) + 20; #ifdef THREE_CELL_MAX motor_kv = motor_kv / 2; #endif - motor_poles = eepromBuffer.buffer[27]; - if (eepromBuffer.buffer[28] == 0x01) { - brake_on_stop = 1; - } else { - brake_on_stop = 0; - } - if (eepromBuffer.buffer[29] == 0x01) { - stall_protection = 1; - } else { - stall_protection = 0; - } setVolume(2); if (eepromBuffer.eeprom_version > 0) { // these commands weren't introduced until eeprom version 1. #ifdef CUSTOM_RAMP #else - if (eepromBuffer.buffer[30] > 11) { + if (eepromBuffer.beep_volume > 11) { setVolume(5); } else { - setVolume(eepromBuffer.buffer[30]); + setVolume(eepromBuffer.beep_volume); } #endif - if (eepromBuffer.buffer[31] == 0x01) { - TLM_ON_INTERVAL = 1; - } else { - TLM_ON_INTERVAL = 0; - } - servo_low_threshold = (eepromBuffer.buffer[32] * 2) + 750; // anything below this point considered 0 - servo_high_threshold = (eepromBuffer.buffer[33] * 2) + 1750; + servo_low_threshold = (eepromBuffer.servo.low_threshold * 2) + 750; // anything below this point considered 0 + servo_high_threshold = (eepromBuffer.servo.high_threshold * 2) + 1750; ; // anything above this point considered 2000 (max) - servo_neutral = (eepromBuffer.buffer[34]) + 1374; - servo_dead_band = eepromBuffer.buffer[35]; + servo_neutral = (eepromBuffer.servo.neutral) + 1374; + servo_dead_band = eepromBuffer.servo.dead_band; - if (eepromBuffer.buffer[36] == 0x01) { + if (eepromBuffer.low_voltage_cut_off == 0x01) { LOW_VOLTAGE_CUTOFF = 1; } else { LOW_VOLTAGE_CUTOFF = 0; } - low_cell_volt_cutoff = eepromBuffer.buffer[37] + 250; // 2.5 to 3.5 volts per cell range - if (eepromBuffer.buffer[38] == 0x01) { - RC_CAR_REVERSE = 1; - } else { - RC_CAR_REVERSE = 0; - } - if (eepromBuffer.buffer[39] == 0x01) { - auto_advance = 1; -#ifdef HAS_HALL_SENSORS - USE_HALL_SENSOR = 1; -#else - USE_HALL_SENSOR = 0; + low_cell_volt_cutoff = eepromBuffer.low_cell_volt_cutoff + 250; // 2.5 to 3.5 volts per cell range + +#ifndef HAS_HALL_SENSORS + eepromBuffer.use_hall_sensors = 0; #endif - } else { - USE_HALL_SENSOR = 0; + if (eepromBuffer.use_hall_sensors == 0x01) { + auto_advance = 1; } - if (eepromBuffer.buffer[40] > 4 && eepromBuffer.buffer[40] < 26) { // sine mode changeover 5-25 percent throttle - sine_mode_changeover_thottle_level = eepromBuffer.buffer[40]; + + if (eepromBuffer.sine_mode_changeover_thottle_level < 5 || eepromBuffer.sine_mode_changeover_thottle_level > 25) { // sine mode changeover 5-25 percent throttle + eepromBuffer.sine_mode_changeover_thottle_level = 5; } - if (eepromBuffer.buffer[41] > 0 && eepromBuffer.buffer[41] < 11) { // drag brake 1-10 - drag_brake_strength = eepromBuffer.buffer[41]; + if (eepromBuffer.drag_brake_strength == 0 || eepromBuffer.drag_brake_strength > 10) { // drag brake 1-10 + eepromBuffer.drag_brake_strength = 10; } - if (eepromBuffer.buffer[42] > 0 && eepromBuffer.buffer[42] < 10) { // motor brake 1-9 - driving_brake_strength = eepromBuffer.buffer[42]; - dead_time_override = DEAD_TIME + (150 - (driving_brake_strength * 10)); - if (dead_time_override > 200) { - dead_time_override = 200; - } - min_startup_duty = eepromBuffer.buffer[25] + dead_time_override; - minimum_duty_cycle = eepromBuffer.buffer[25] / 2 + dead_time_override; - throttle_max_at_low_rpm = throttle_max_at_low_rpm + dead_time_override; - startup_max_duty_cycle = startup_max_duty_cycle + dead_time_override; + if (eepromBuffer.driving_brake_strength == 0 || eepromBuffer.driving_brake_strength > 9) { // motor brake 1-9 + eepromBuffer.driving_brake_strength = 10; + } + + dead_time_override = DEAD_TIME + (150 - (eepromBuffer.driving_brake_strength * 10)); + if (dead_time_override > 200) { + dead_time_override = 200; + } + min_startup_duty = eepromBuffer.startup_power + dead_time_override; + minimum_duty_cycle = eepromBuffer.startup_power / 2 + dead_time_override; + throttle_max_at_low_rpm = throttle_max_at_low_rpm + dead_time_override; + startup_max_duty_cycle = startup_max_duty_cycle + dead_time_override; #ifdef STMICRO - TIM1->BDTR |= dead_time_override; + TIM1->BDTR |= dead_time_override; #endif #ifdef ARTERY - TMR1->brk |= dead_time_override; + TMR1->brk |= dead_time_override; #endif #ifdef GIGADEVICES - TIMER_CCHP(TIMER0) |= dead_time_override; + TIMER_CCHP(TIMER0) |= dead_time_override; #endif - } - if (eepromBuffer.buffer[43] >= 70 && eepromBuffer.buffer[43] <= 140) { - TEMPERATURE_LIMIT = eepromBuffer.buffer[43]; + if (eepromBuffer.limits.temperature < 70 || eepromBuffer.limits.temperature > 140) { + eepromBuffer.limits.temperature = 255; } - if (eepromBuffer.buffer[44] > 0 && eepromBuffer.buffer[44] < 100) { - CURRENT_LIMIT = eepromBuffer.buffer[44] * 2; + if (eepromBuffer.limits.current > 0 && eepromBuffer.limits.current < 100) { use_current_limit = 1; } - if (eepromBuffer.buffer[45] > 0 && eepromBuffer.buffer[45] < 11) { - sine_mode_power = eepromBuffer.buffer[45]; + if (eepromBuffer.sine_mode_power == 0 || eepromBuffer.sine_mode_power > 10) { + eepromBuffer.sine_mode_power = 5; } - if (eepromBuffer.buffer[46] >= 0 && eepromBuffer.buffer[46] < 10) { - switch (eepromBuffer.buffer[46]) { + if (eepromBuffer.input_type>= 0 && eepromBuffer.input_type < 10) { + switch (eepromBuffer.input_type) { case AUTO_IN: dshot = 0; servoPwm = 0; @@ -830,50 +757,23 @@ void loadEEpromSettings() if (motor_kv < 300) { low_rpm_throttle_limit = 0; } - low_rpm_level = motor_kv / 100 / (32 / motor_poles); + low_rpm_level = motor_kv / 100 / (32 / eepromBuffer.motor_poles); - high_rpm_level = motor_kv / 12 / (32 / motor_poles); + high_rpm_level = motor_kv / 12 / (32 / eepromBuffer.motor_poles); } reverse_speed_threshold = map(motor_kv, 300, 3000, 1000, 500); // reverse_speed_threshold = 200; -// if (!comp_pwm) { -// bi_direction = 0; +// if (!eepromBuffer.comp_pwm) { +// eepromBuffer.bi_direction = 0; // } } void saveEEpromSettings() { - eepromBuffer.buffer[1] = eeprom_layout_version; + eepromBuffer.eeprom_version = eeprom_layout_version; - if (bi_direction == 1) { - eepromBuffer.buffer[18] = 0x01; - } else { - eepromBuffer.buffer[18] = 0x00; - } - if (use_sin_start == 1) { - eepromBuffer.buffer[19] = 0x01; - } else { - eepromBuffer.buffer[19] = 0x00; - } - - if (comp_pwm == 1) { - eepromBuffer.buffer[20] = 0x01; - } else { - eepromBuffer.buffer[20] = 0x00; - } - if (VARIABLE_PWM == 1) { - eepromBuffer.buffer[21] = 0x01; - } else { - eepromBuffer.buffer[21] = 0x00; - } - if (stuck_rotor_protection == 1) { - eepromBuffer.buffer[22] = 0x01; - } else { - eepromBuffer.buffer[22] = 0x00; - } - eepromBuffer.buffer[23] = advance_level; - save_flash_nolib(eepromBuffer.buffer, 176, eeprom_address); + save_flash_nolib(eepromBuffer.buffer, sizeof(eepromBuffer.buffer), eeprom_address); } uint16_t getSmoothedCurrent() @@ -1041,9 +941,9 @@ void startMotor() void setInput() { - if (bi_direction) { + if (eepromBuffer.bi_direction) { if (dshot == 0) { - if (RC_CAR_REVERSE) { + if (eepromBuffer.rc_car_reverse) { if (newinput > (1000 + (servo_dead_band << 1))) { if (forward == eepromBuffer.dir_reversed) { adjusted_input = 0; @@ -1158,7 +1058,7 @@ void setInput() adjusted_input = newinput; } #ifndef BRUSHED_MODE - if ((bemf_timeout_happened > bemf_timeout) && stuck_rotor_protection) { + if ((bemf_timeout_happened > bemf_timeout) && eepromBuffer.stuck_rotor_protection) { allOff(); maskPhaseInterrupts(); input = 0; @@ -1172,22 +1072,22 @@ void setInput() #ifdef FIXED_DUTY_MODE input = FIXED_DUTY_MODE_POWER * 20 + 47; #else - if (use_sin_start) { + if (eepromBuffer.use_sine_start) { if (adjusted_input < 30) { // dead band ? input = 0; } - if (adjusted_input > 30 && adjusted_input < (sine_mode_changeover_thottle_level * 20)) { + if (adjusted_input > 30 && adjusted_input < (eepromBuffer.sine_mode_changeover_thottle_level * 20)) { input = map(adjusted_input, 30, - (sine_mode_changeover_thottle_level * 20), 47, 160); + (eepromBuffer.sine_mode_changeover_thottle_level * 20), 47, 160); } - if (adjusted_input >= (sine_mode_changeover_thottle_level * 20)) { - input = map(adjusted_input, (sine_mode_changeover_thottle_level * 20), + if (adjusted_input >= (eepromBuffer.sine_mode_changeover_thottle_level * 20)) { + input = map(adjusted_input, (eepromBuffer.sine_mode_changeover_thottle_level * 20), 2047, 160, 2047); } } else { if (use_speed_control_loop) { if (drive_by_rpm) { - target_e_com_time = 60000000 / map(adjusted_input, 47, 2047, MINIMUM_RPM_SPEED_CONTROL, MAXIMUM_RPM_SPEED_CONTROL) / (motor_poles / 2); + target_e_com_time = 60000000 / map(adjusted_input, 47, 2047, MINIMUM_RPM_SPEED_CONTROL, MAXIMUM_RPM_SPEED_CONTROL) / (eepromBuffer.motor_poles / 2); if (adjusted_input < 47) { // dead band ? input = 0; speedPid.error = 0; @@ -1221,7 +1121,7 @@ void setInput() #endif #ifndef BRUSHED_MODE if (!stepper_sine) { - if (input >= 47 + (80 * use_sin_start) && armed) { + if (input >= 47 + (80 * eepromBuffer.use_sine_start) && armed) { if (running == 0) { allOff(); if (!old_routine) { @@ -1231,18 +1131,18 @@ void setInput() last_duty_cycle = min_startup_duty; } - if (use_sin_start) { + if (eepromBuffer.use_sine_start) { duty_cycle_setpoint = map(input, 137, 2047, minimum_duty_cycle+40, 2000); } else { duty_cycle_setpoint = map(input, 47, 2047, minimum_duty_cycle, 2000); } - if (!RC_CAR_REVERSE) { + if (!eepromBuffer.rc_car_reverse) { prop_brake_active = 0; } } - if (input < 47 + (80 * use_sin_start)) { + if (input < 47 + (80 * eepromBuffer.use_sine_start)) { if (play_tone_flag != 0) { switch (play_tone_flag) { @@ -1265,12 +1165,12 @@ void setInput() play_tone_flag = 0; } - if (!comp_pwm) { + if (!eepromBuffer.comp_pwm) { duty_cycle_setpoint = 0; if (!running) { old_routine = 1; zero_crosses = 0; - if (brake_on_stop) { + if (eepromBuffer.brake_on_stop) { fullBrake(); } else { if (!prop_brake_active) { @@ -1278,7 +1178,7 @@ void setInput() } } } - if (RC_CAR_REVERSE && prop_brake_active) { + if (eepromBuffer.rc_car_reverse && prop_brake_active) { #ifndef PWM_ENABLE_BRIDGE prop_brake_duty_cycle = (getAbsDif(1000, newinput) + 1000); if (prop_brake_duty_cycle >= (TIMER1_MAX_ARR - 1)) { @@ -1294,10 +1194,10 @@ void setInput() old_routine = 1; zero_crosses = 0; bad_count = 0; - if (brake_on_stop) { - if (!use_sin_start) { + if (eepromBuffer.brake_on_stop) { + if (!eepromBuffer.use_sine_start) { #ifndef PWM_ENABLE_BRIDGE - prop_brake_duty_cycle = (1980) + drag_brake_strength * 2; + prop_brake_duty_cycle = (1980) + eepromBuffer.drag_brake_strength * 2; proportionalBrake(); prop_brake_active = 1; #else @@ -1323,14 +1223,14 @@ void setInput() phase_C_position -= 360; } - if (use_sin_start == 1) { + if (eepromBuffer.use_sine_start == 1) { stepper_sine = 1; } duty_cycle_setpoint = 0; } } if (!prop_brake_active) { - if (input >= 47 && (zero_crosses < (30 >> stall_protection))) { + if (input >= 47 && (zero_crosses < (30 >> eepromBuffer.stall_protection))) { if (duty_cycle_setpoint < min_startup_duty) { duty_cycle_setpoint = min_startup_duty; } @@ -1396,7 +1296,7 @@ void tenKhzRoutine() #endif } if (!servoPwm) { - RC_CAR_REVERSE = 0; + eepromBuffer.rc_car_reverse = 0; } } else { inputSet = 0; @@ -1410,7 +1310,7 @@ void tenKhzRoutine() } } - if (TLM_ON_INTERVAL) { + if (eepromBuffer.telementry_on_interval) { telem_ms_count++; if (telem_ms_count > telemetry_interval_ms * 20) { send_telemetry = 1; @@ -1445,7 +1345,7 @@ void tenKhzRoutine() one_khz_loop_counter = 0; if (use_current_limit && running) { use_current_limit_adjust -= (int16_t)(doPidCalculations(¤tPid, actual_current, - CURRENT_LIMIT * 100) + eepromBuffer.limits.current * 2 * 100) / 10000); if (use_current_limit_adjust < minimum_duty_cycle) { use_current_limit_adjust = minimum_duty_cycle; @@ -1454,7 +1354,7 @@ void tenKhzRoutine() use_current_limit_adjust = tim1_arr; } } - if (stall_protection && running) { // this boosts throttle as the rpm gets lower, for crawlers + if (eepromBuffer.stall_protection && running) { // this boosts throttle as the rpm gets lower, for crawlers // and rc cars only, do not use for multirotors. stall_protection_adjust += (doPidCalculations(&stallPid, commutation_interval, stall_protect_target_interval))/ 10000; @@ -1506,7 +1406,7 @@ void tenKhzRoutine() duty_cycle = last_duty_cycle + max_duty_cycle_change; if (commutation_interval > 500) { fast_accel = 1; - temp_advance = advance_level; + temp_advance = eepromBuffer.advance_level; } else { fast_accel = 0; } @@ -1514,19 +1414,19 @@ void tenKhzRoutine() } else if ((last_duty_cycle - duty_cycle) > max_duty_cycle_change) { duty_cycle = last_duty_cycle - max_duty_cycle_change; fast_accel = 0; - temp_advance = advance_level; + temp_advance = eepromBuffer.advance_level; } else { if(duty_cycle < 300 && commutation_interval < 300){ - temp_advance = advance_level; + temp_advance = eepromBuffer.advance_level; }else{ - temp_advance = advance_level; + temp_advance = eepromBuffer.advance_level; } fast_accel = 0; } } if ((armed && running) && input > 47) { - if (VARIABLE_PWM) { + if (eepromBuffer.variable_pwm) { } adjusted_duty_cycle = ((duty_cycle * tim1_arr) / 2000) + 1; @@ -1607,11 +1507,11 @@ void advanceincrement() setPWMCompare3(((2 * pwmSin[phase_C_position]) + gate_drive_offset) * TIMER1_MAX_ARR / 2000); #else setPWMCompare1( - (((2 * pwmSin[phase_A_position] / SINE_DIVIDER) + gate_drive_offset) * TIMER1_MAX_ARR / 2000) * sine_mode_power / 10); + (((2 * pwmSin[phase_A_position] / SINE_DIVIDER) + gate_drive_offset) * TIMER1_MAX_ARR / 2000) * eepromBuffer.sine_mode_power / 10); setPWMCompare2( - (((2 * pwmSin[phase_B_position] / SINE_DIVIDER) + gate_drive_offset) * TIMER1_MAX_ARR / 2000) * sine_mode_power / 10); + (((2 * pwmSin[phase_B_position] / SINE_DIVIDER) + gate_drive_offset) * TIMER1_MAX_ARR / 2000) * eepromBuffer.sine_mode_power / 10); setPWMCompare3( - (((2 * pwmSin[phase_C_position] / SINE_DIVIDER) + gate_drive_offset) * TIMER1_MAX_ARR / 2000) * sine_mode_power / 10); + (((2 * pwmSin[phase_C_position] / SINE_DIVIDER) + gate_drive_offset) * TIMER1_MAX_ARR / 2000) * eepromBuffer.sine_mode_power / 10); #endif } @@ -1652,7 +1552,7 @@ void zcfoundroutine() bad_count = 0; zero_crosses++; - if (stall_protection || RC_CAR_REVERSE) { + if (eepromBuffer.stall_protection || eepromBuffer.rc_car_reverse) { if (zero_crosses >= 20 && commutation_interval <= 2000) { old_routine = 0; enableCompInterrupts(); // enable interrupt @@ -1686,9 +1586,9 @@ void runBrushedLoop() brushed_duty_cycle = map(adjusted_input, 48, 2047, 0, (TIMER1_MAX_ARR - (TIMER1_MAX_ARR / 20))); - if (degrees_celsius > TEMPERATURE_LIMIT) { - duty_cycle_maximum = map(degrees_celsius, TEMPERATURE_LIMIT, - TEMPERATURE_LIMIT + 20, TIMER1_MAX_ARR / 2, 1); + if (degrees_celsius > eepromBuffer.limits.temperature) { + duty_cycle_maximum = map(degrees_celsius, eepromBuffer.limits.temperature, + eepromBuffer.limits.temperature + 20, TIMER1_MAX_ARR / 2, 1); } else { duty_cycle_maximum = TIMER1_MAX_ARR - 50; } @@ -1742,26 +1642,26 @@ int main(void) #ifdef USE_MAKE - if (firmware_info.version_major != eepromBuffer.buffer[3] || firmware_info.version_minor != eepromBuffer.buffer[4]) { - eepromBuffer.buffer[3] = firmware_info.version_major; - eepromBuffer.buffer[4] = firmware_info.version_minor; + if (firmware_info.version_major != eepromBuffer.version.major || firmware_info.version_minor != eepromBuffer.version.minor) { + eepromBuffer.version.major = firmware_info.version_major; + eepromBuffer.version.minor = firmware_info.version_minor; for (int i = 0; i < 12; i++) { - eepromBuffer.buffer[5 + i] = firmware_info.device_name[i]; + eepromBuffer.firmware_name[i] = firmware_info.device_name[i]; } saveEEpromSettings(); } #else - if (VERSION_MAJOR != eepromBuffer.buffer[3] || VERSION_MINOR != eepromBuffer.buffer[4]) { - eepromBuffer.buffer[3] = VERSION_MAJOR; - eepromBuffer.buffer[4] = VERSION_MINOR; + if (VERSION_MAJOR != eepromBuffer.version.major || VERSION_MINOR != eepromBuffer.version.minor) { + eepromBuffer.version.major = VERSION_MAJOR; + eepromBuffer.version.minor = VERSION_MINOR; for (int i = 0; i < 12; i++) { - eepromBuffer.buffer[5 + i] = (uint8_t)FIRMWARE_NAME[i]; + eepromBuffer.firmware_name[i] = (uint8_t)FIRMWARE_NAME[i]; } saveEEpromSettings(); } #endif - // if (use_sin_start) { + // if (eepromBuffer.use_sine_start) { // min_startup_duty = sin_mode_min_s_d; // } @@ -1774,19 +1674,19 @@ int main(void) // startup_max_duty_cycle = startup_max_duty_cycle * TIMER1_MAX_ARR / 2000 + dead_time_override; // adjust for pwm frequency // throttle_max_at_low_rpm = throttle_max_at_low_rpm * TIMER1_MAX_ARR / 2000; // adjust to new pwm frequency // throttle_max_at_high_rpm = TIMER1_MAX_ARR; // adjust to new pwm frequency - if (!comp_pwm) { - use_sin_start = 0; // sine start requires complementary pwm. + if (!eepromBuffer.comp_pwm) { + eepromBuffer.use_sine_start = 0; // sine start requires complementary pwm. } - if (RC_CAR_REVERSE) { // overrides a whole lot of things! + if (eepromBuffer.rc_car_reverse) { // overrides a whole lot of things! throttle_max_at_low_rpm = 1000; - bi_direction = 1; - use_sin_start = 0; + eepromBuffer.bi_direction = 1; + eepromBuffer.use_sine_start = 0; low_rpm_throttle_limit = 1; - VARIABLE_PWM = 0; - // stall_protection = 1; - comp_pwm = 0; - stuck_rotor_protection = 0; + eepromBuffer.variable_pwm = 0; + // eepromBuffer.stall_protection = 1; + eepromBuffer.comp_pwm = 0; + eepromBuffer.stuck_rotor_protection = 0; minimum_duty_cycle = minimum_duty_cycle + 50; stall_protect_minimum_duty = stall_protect_minimum_duty + 50; min_startup_duty = min_startup_duty + 50; @@ -1819,8 +1719,8 @@ int main(void) comStep(2); #ifdef FIXED_SPEED_MODE use_speed_control_loop = 1; - use_sin_start = 0; - target_e_com_time = 60000000 / FIXED_SPEED_MODE_RPM / (motor_poles / 2); + eepromBuffer.use_sine_start = 0; + target_e_com_time = 60000000 / FIXED_SPEED_MODE_RPM / (eepromBuffer.motor_poles / 2); input = 48; #endif @@ -1828,7 +1728,7 @@ int main(void) #ifdef BRUSHED_MODE // bi_direction = 1; commutation_interval = 5000; - use_sin_start = 0; + eepromBuffer.use_sine_start = 0; maskPhaseInterrupts(); playBrushedStartupTune(); #else @@ -1842,8 +1742,8 @@ int main(void) MX_IWDG_Init(); RELOAD_WATCHDOG_COUNTER(); #ifdef GIMBAL_MODE - bi_direction = 1; - use_sin_start = 1; + eepromBuffer.bi_direction = 1; + eepromBuffer.use_sine_start = 1; #endif #ifdef USE_ADC_INPUT @@ -1898,7 +1798,7 @@ int main(void) RELOAD_WATCHDOG_COUNTER(); e_com_time = ((commutation_intervals[0] + commutation_intervals[1] + commutation_intervals[2] + commutation_intervals[3] + commutation_intervals[4] + commutation_intervals[5]) + 4) >> 1; // COMMUTATION INTERVAL IS 0.5US INCREMENTS - if (VARIABLE_PWM) { + if (eepromBuffer.variable_pwm) { tim1_arr = map(commutation_interval, 96, 200, TIMER1_MAX_ARR / 2, TIMER1_MAX_ARR); } @@ -1977,7 +1877,7 @@ int main(void) if (zero_crosses > 100 && adjusted_input < 200) { bemf_timeout_happened = 0; } - if (use_sin_start && adjusted_input < 160) { + if (eepromBuffer.use_sine_start && adjusted_input < 160) { bemf_timeout_happened = 0; } @@ -1999,7 +1899,7 @@ int main(void) if ((getAbsDif(last_average_interval, average_interval) > average_interval >> 1) && (average_interval < 2000)) { // throttle resitricted before zc 20. zero_crosses = 0; desync_happened++; - if ((!bi_direction && (input > 47)) || commutation_interval > 1000) { + if ((!eepromBuffer.bi_direction && (input > 47)) || commutation_interval > 1000) { running = 0; } old_routine = 1; @@ -2106,8 +2006,8 @@ int main(void) duty_cycle_maximum = 2000; } - if (degrees_celsius > TEMPERATURE_LIMIT) { - duty_cycle_maximum = map(degrees_celsius, TEMPERATURE_LIMIT - 10, TEMPERATURE_LIMIT + 10, + if (degrees_celsius > eepromBuffer.limits.temperature) { + duty_cycle_maximum = map(degrees_celsius, eepromBuffer.limits.temperature - 10, eepromBuffer.limits.temperature + 10, throttle_max_at_high_rpm / 2, 1); } if (zero_crosses < 100 && commutation_interval > 500) { @@ -2126,7 +2026,8 @@ int main(void) if (commutation_interval < 50) { filter_level = 2; } - auto_advance_level = map(duty_cycle, 100, 2000, 13, 23); + + auto_advance_level = map(duty_cycle, 100, 2000, 13, 23); /**************** old routine*********************/ #ifdef CUSTOM_RAMP @@ -2198,7 +2099,7 @@ int main(void) do_once_sinemode = 0; } advanceincrement(); - step_delay = map(input, 48, 120, 7000 / motor_poles, 810 / motor_poles); + step_delay = map(input, 48, 120, 7000 / eepromBuffer.motor_poles, 810 / eepromBuffer.motor_poles); delayMicros(step_delay); e_rpm = 600 / step_delay; // in hundreds so 33 e_rpm is 3300 actual erpm @@ -2223,7 +2124,7 @@ int main(void) prop_brake_active = 0; step = changeover_step; // comStep(step);// rising bemf on a same as position 0. - if (stall_protection) { + if (eepromBuffer.stall_protection) { last_duty_cycle = stall_protect_minimum_duty; } commutate(); @@ -2233,9 +2134,9 @@ int main(void) } else { do_once_sinemode = 1; - if (brake_on_stop) { + if (eepromBuffer.brake_on_stop) { #ifndef PWM_ENABLE_BRIDGE - duty_cycle = (TIMER1_MAX_ARR - 19) + drag_brake_strength * 2; + duty_cycle = (TIMER1_MAX_ARR - 19) + eepromBuffer.drag_brake_strength * 2; adjusted_duty_cycle = TIMER1_MAX_ARR - ((duty_cycle * tim1_arr) / TIMER1_MAX_ARR) + 1; proportionalBrake(); SET_DUTY_CYCLE_ALL(adjusted_duty_cycle); diff --git a/Src/signal.c b/Src/signal.c index d03b5e29..325c48cf 100644 --- a/Src/signal.c +++ b/Src/signal.c @@ -14,6 +14,7 @@ #include "sounds.h" #include "targets.h" +EEprom_t eepromBuffer; int max_servo_deviation = 250; int servorawinput; uint16_t smallestnumber = 20000; @@ -63,7 +64,7 @@ void computeServoInput() servo_high_threshold = ((7 * servo_high_threshold + (dma_buffer[1] - dma_buffer[0])) >> 3); if (high_calibration_counts > 50) { servo_high_threshold = servo_high_threshold - 25; - eepromBuffer.buffer[33] = (servo_high_threshold - 1750) / 2; + eepromBuffer.servo.high_threshold = (servo_high_threshold - 1750) / 2; high_calibration_set = 1; playDefaultTone(); } @@ -77,7 +78,7 @@ void computeServoInput() } if (low_calibration_counts > 75) { servo_low_threshold = servo_low_threshold + 25; - eepromBuffer.buffer[32] = (servo_low_threshold - 750) / 2; + eepromBuffer.servo.low_threshold = (servo_low_threshold - 750) / 2; calibration_required = 0; saveEEpromSettings(); low_calibration_counts = 0; @@ -86,7 +87,7 @@ void computeServoInput() } signaltimeout = 0; } else { - if (bi_direction) { + if (eepromBuffer.bi_direction) { if (dma_buffer[1] - dma_buffer[0] <= servo_neutral) { servorawinput = map((dma_buffer[1] - dma_buffer[0]), servo_low_threshold, servo_neutral, 0, 1000); diff --git a/Src/sounds.c b/Src/sounds.c index b6cbb7e0..caac6a1f 100644 --- a/Src/sounds.c +++ b/Src/sounds.c @@ -65,21 +65,21 @@ void playBlueJayTune() uint16_t frequency; comStep(3); // read_flash_bin(blueJayTuneBuffer , eeprom_address + 48 , 128); - for (int i = 52; i < 176; i += 2) { + for (int i = 0; i < 124; i += 2) { RELOAD_WATCHDOG_COUNTER(); signaltimeout = 0; - if (eepromBuffer.buffer[i] == 255) { + if (eepromBuffer.tune[i] == 255) { full_time_count++; } else { - if (eepromBuffer.buffer[i + 1] == 0) { - duration = full_time_count * 254 + eepromBuffer.buffer[i]; + if (eepromBuffer.tune[i + 1] == 0) { + duration = full_time_count * 254 + eepromBuffer.tune[i]; SET_DUTY_CYCLE_ALL(0); delayMillis(duration); } else { - frequency = getBlueJayNoteFrequency(eepromBuffer.buffer[i + 1]); - duration = ((full_time_count * 254 + eepromBuffer.buffer[i]) * (100000 / frequency)) / 100; + frequency = getBlueJayNoteFrequency(eepromBuffer.tune[i + 1]); + duration = ((full_time_count * 254 + eepromBuffer.tune[i]) * (100000 / frequency)) / 100; playBJNote(frequency, duration); } full_time_count = 0;