# Static Call Graph for image .\output\Project.axf

#<CALLGRAPH># ARM Linker, 5060422: Last Updated: Thu Apr 06 13:56:25 2017

### Maximum Stack Usage = 292 bytes + Unknown(Cycles, Untraceable Function Pointers)

### Call chain for Maximum Stack Depth:

main ⇒ control ⇒ acc_cal ⇒ sixaxis_read ⇒ i2c_readdata ⇒ i2c_sendheader ⇒ I2C_GetBitState

### Mutually Recursive functions

- NMI_Handler ⇒ NMI_Handler
- SVC_Handler ⇒ SVC_Handler
- DebugMon_Handler ⇒ DebugMon_Handler
- PendSV_Handler ⇒ PendSV_Handler
- ADC1_CMP_IRQHandler ⇒ ADC1_CMP_IRQHandler

  ### Function Pointers

  - ADC1_CMP_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - BusFault_Handler from main.o(i.BusFault_Handler) referenced from startup_gd32f1x0.o(RESET)
  - CEC_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - DMA1_Channel1_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - DMA1_Channel2_3_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - DMA1_Channel4_5_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - DMA1_Channel6_7_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - DebugMon_Handler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - EXTI0_1_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - EXTI2_3_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - EXTI4_15_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - FMC_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - HardFault_Handler from main.o(i.HardFault_Handler) referenced from startup_gd32f1x0.o(RESET)
  - I2C1_ER_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - I2C1_EV_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - I2C2_ER_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - I2C2_EV_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - I2C3_ER_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - I2C3_EV_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - LVD_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - MemManage_Handler from main.o(i.MemManage_Handler) referenced from startup_gd32f1x0.o(RESET)
  - NMI_Handler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - PendSV_Handler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - RCC_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - RTC_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - Reset_Handler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - SPI1_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - SPI2_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - SPI3_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - SVC_Handler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - SysTick_Handler from drv_time.o(i.SysTick_Handler) referenced from startup_gd32f1x0.o(RESET)
  - System_Init from system_gd32f1x0.o(i.System_Init) referenced from startup_gd32f1x0.o(.text)
  - TIM14_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - TIM15_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - TIM16_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - TIM17_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - TIM1_BRK_UP_TRG_COM_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - TIM1_CC_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - TIM2_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - TIM3_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - TIM6_DAC_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - TS_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - USART1_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - USART2_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - USBWakeUp_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - USB_HP_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - USB_LP_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - UsageFault_Handler from main.o(i.UsageFault_Handler) referenced from startup_gd32f1x0.o(RESET)
  - WWDG_IRQHandler from startup_gd32f1x0.o(.text) referenced from startup_gd32f1x0.o(RESET)
  - __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup_gd32f1x0.o(.text)
  - __sti___10_filter_cpp_d66e70ef from filter.o(i.__sti___10_filter_cpp_d66e70ef) referenced from filter.o(.init_array)
  - main from main.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B)

  ### Global Symbols

  __main (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(.text)

  _main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001))

  _main_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
  [Calls]

  - >> __scatterload

  __main_after_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
  [Called By]

  - >> __scatterload

  _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008))

  _main_cpp_init$empty (Thumb, 0 bytes, Stack size unknown bytes, entry8a.o(.ARM.Collect$$$$00000009))
  [Stack]

  - Max Depth = 16 + Unknown Stack Size
  - Call Chain = _main_cpp_init$empty ⇒ __cpp_initialize__aeabi_
  [Calls]
  - >> __cpp_initialize__aeabi_

  _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A))

  _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B))

  __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D))

  __rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F))

  Reset_Handler (Thumb, 8 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  NMI_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Calls]

  - >> NMI_Handler
  [Called By]
  - >> NMI_Handler
  [Address Reference Count : 1]
  - startup_gd32f1x0.o(RESET)

  SVC_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Calls]

  - >> SVC_Handler
  [Called By]
  - >> SVC_Handler
  [Address Reference Count : 1]
  - startup_gd32f1x0.o(RESET)

  DebugMon_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Calls]

  - >> DebugMon_Handler
  [Called By]
  - >> DebugMon_Handler
  [Address Reference Count : 1]
  - startup_gd32f1x0.o(RESET)

  PendSV_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Calls]

  - >> PendSV_Handler
  [Called By]
  - >> PendSV_Handler
  [Address Reference Count : 1]
  - startup_gd32f1x0.o(RESET)

  ADC1_CMP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Calls]

  - >> ADC1_CMP_IRQHandler
  [Called By]
  - >> ADC1_CMP_IRQHandler
  [Address Reference Count : 1]
  - startup_gd32f1x0.o(RESET)

  CEC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  DMA1_Channel1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  DMA1_Channel2_3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  DMA1_Channel4_5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  DMA1_Channel6_7_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  EXTI0_1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  EXTI2_3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  EXTI4_15_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  FMC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  I2C1_ER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  I2C1_EV_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  I2C2_ER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  I2C2_EV_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  I2C3_ER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  I2C3_EV_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  LVD_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  RCC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  RTC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  SPI1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  SPI2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  SPI3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  TIM14_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  TIM15_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  TIM16_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  TIM17_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  TIM1_BRK_UP_TRG_COM_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  TIM1_CC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  TIM2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  TIM3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  TIM6_DAC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  TS_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  USART1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  USART2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  USBWakeUp_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  USB_HP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  USB_LP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  WWDG_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f1x0.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  rand (Thumb, 20 bytes, Stack size 0 bytes, rand.o(.text))
  [Called By]

  - >> imu_calc

  srand (Thumb, 6 bytes, Stack size 0 bytes, rand.o(.text), UNUSED)

  __aeabi_memset (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
  [Called By]

  - >> _memset$wrapper
  - >> __aeabi_memclr

  __aeabi_memset4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)

  __aeabi_memset8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)

  __aeabi_memclr (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
  [Calls]

  - >> __aeabi_memset

  __aeabi_memclr4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text))
  [Called By]

  - >> rx_init

  __aeabi_memclr8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)

  _memset$wrapper (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED)
  [Calls]

  - >> __aeabi_memset

  __cpp_initialize__aeabi_ (Thumb, 22 bytes, Stack size 16 bytes, cpp_init.o(.text))
  [Stack]

  - Max Depth = 16
  - Call Chain = __cpp_initialize__aeabi_
  [Called By]
  - >> _main_cpp_init$empty

  __aeabi_fadd (Thumb, 164 bytes, Stack size 16 bytes, fadd.o(.text))
  [Stack]

  - Max Depth = 20
  - Call Chain = __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> _float_round
  - >> _float_epilogue
  [Called By]
  - >> calcmagnitude
  - >> atan2approx
  - >> main
  - >> pid
  - >> mapf
  - >> lpf
  - >> imu_calc
  - >> gyro_cal
  - >> fastsin
  - >> fastcos
  - >> apid
  - >> __aeabi_fsub
  - >> __aeabi_frsub
  - >> motorfilter
  - >> control
  - >> lroundf
  - >> expf

  __aeabi_fsub (Thumb, 6 bytes, Stack size 0 bytes, fadd.o(.text))
  [Stack]

  - Max Depth = 20
  - Call Chain = __aeabi_fsub ⇒ __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> __aeabi_fadd
  [Called By]
  - >> atan2approx
  - >> sixaxis_read
  - >> pid
  - >> mapf
  - >> lpf
  - >> imu_calc
  - >> gyro_cal
  - >> fastsin
  - >> acc_cal
  - >> control
  - >> lroundf
  - >> expf

  __aeabi_frsub (Thumb, 6 bytes, Stack size 0 bytes, fadd.o(.text))
  [Stack]

  - Max Depth = 20
  - Call Chain = __aeabi_frsub ⇒ __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> __aeabi_fadd
  [Called By]
  - >> pid
  - >> imu_calc
  - >> fastsin
  - >> expf

  __aeabi_fmul (Thumb, 100 bytes, Stack size 8 bytes, fmul.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = __aeabi_fmul
  [Called By]
  - >> calcmagnitude
  - >> atan2approx
  - >> lpfcalc
  - >> decodepacket
  - >> sixaxis_read
  - >> main
  - >> pwm_set
  - >> pid
  - >> mapf
  - >> lpf
  - >> imu_calc
  - >> fastsin
  - >> apid
  - >> control
  - >> expf

  __aeabi_fdiv (Thumb, 124 bytes, Stack size 8 bytes, fdiv.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = __aeabi_fdiv
  [Calls]
  - >> _float_round
  [Called By]
  - >> atan2approx
  - >> lpfcalc
  - >> pid_precalc
  - >> mapf
  - >> imu_calc

  __ARM_scalbnf (Thumb, 24 bytes, Stack size 0 bytes, fscalb.o(.text))
  [Called By]

  - >> packettodata
  - >> main
  - >> pid
  - >> motorfilter
  - >> control
  - >> __mathlib_flt_underflow
  - >> __mathlib_flt_overflow
  - >> __mathlib_flt_infnan
  - >> expf

  scalbnf (Thumb, 0 bytes, Stack size 0 bytes, fscalb.o(.text), UNUSED)

  __aeabi_i2f (Thumb, 18 bytes, Stack size 0 bytes, fflti.o(.text))
  [Stack]

  - Max Depth = 4
  - Call Chain = __aeabi_i2f ⇒ _float_epilogue
  [Calls]
  - >> _float_epilogue
  [Called By]
  - >> packettodata
  - >> decodepacket
  - >> sixaxis_read
  - >> pwm_set
  - >> gyro_cal

  __aeabi_ui2f (Thumb, 10 bytes, Stack size 0 bytes, ffltui.o(.text))
  [Stack]

  - Max Depth = 4
  - Call Chain = __aeabi_ui2f ⇒ _float_epilogue
  [Calls]
  - >> _float_epilogue
  [Called By]
  - >> adc_read
  - >> main
  - >> imu_calc
  - >> gyro_cal

  __aeabi_f2iz (Thumb, 50 bytes, Stack size 0 bytes, ffixi.o(.text))
  [Called By]

  - >> expf

  __aeabi_f2uiz (Thumb, 40 bytes, Stack size 0 bytes, ffixui.o(.text))
  [Called By]

  - >> pwm_set

  __aeabi_cfcmpeq (Thumb, 0 bytes, Stack size 0 bytes, cfcmple.o(.text))
  [Called By]

  - >> pid

  __aeabi_cfcmple (Thumb, 20 bytes, Stack size 0 bytes, cfcmple.o(.text))
  [Called By]

  - >> main
  - >> start_flip
  - >> gyro_cal

  __aeabi_cfrcmple (Thumb, 20 bytes, Stack size 0 bytes, cfrcmple.o(.text))
  [Called By]

  - >> atan2approx
  - >> limitf
  - >> gyro_cal

  __I$use$fp (Thumb, 0 bytes, Stack size 0 bytes, iusefp.o(.text), UNUSED)

  _float_round (Thumb, 18 bytes, Stack size 0 bytes, fepilogue.o(.text))
  [Called By]

  - >> __aeabi_fdiv
  - >> __aeabi_fadd
  - >> _ffix_r
  - >> _fsqrt
  - >> _frnd

  _float_epilogue (Thumb, 92 bytes, Stack size 4 bytes, fepilogue.o(.text))
  [Stack]

  - Max Depth = 4
  - Call Chain = _float_epilogue
  [Called By]
  - >> __aeabi_i2f
  - >> __aeabi_ui2f
  - >> __aeabi_fadd

  _fsqrt (Thumb, 94 bytes, Stack size 16 bytes, fsqrt.o(.text))
  [Stack]

  - Max Depth = 16
  - Call Chain = _fsqrt
  [Calls]
  - >> _float_round
  [Called By]
  - >> sqrtf

  _frnd (Thumb, 60 bytes, Stack size 8 bytes, frnd.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = _frnd
  [Calls]
  - >> _float_round
  [Called By]
  - >> lroundf
  - >> expf

  _ffix_r (Thumb, 76 bytes, Stack size 8 bytes, ffixir.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = _ffix_r
  [Calls]
  - >> _float_round
  [Called By]
  - >> lroundf

  __scatterload (Thumb, 28 bytes, Stack size 0 bytes, init.o(.text))
  [Calls]

  - >> __main_after_scatterload
  [Called By]
  - >> _main_scatterload

  __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)

  __decompress (Thumb, 0 bytes, Stack size unknown bytes, __dczerorl2.o(.text), UNUSED)

  __decompress1 (Thumb, 86 bytes, Stack size unknown bytes, __dczerorl2.o(.text), UNUSED)

  ADC_Calibration (Thumb, 32 bytes, Stack size 0 bytes, gd32f1x0_adc.o(i.ADC_Calibration))
  [Called By]

  - >> adc_init

  ADC_DMA_Enable (Thumb, 22 bytes, Stack size 0 bytes, gd32f1x0_adc.o(i.ADC_DMA_Enable))
  [Called By]

  - >> adc_init

  ADC_Enable (Thumb, 22 bytes, Stack size 0 bytes, gd32f1x0_adc.o(i.ADC_Enable))
  [Called By]

  - >> adc_init

  ADC_Init (Thumb, 66 bytes, Stack size 8 bytes, gd32f1x0_adc.o(i.ADC_Init))
  [Stack]

  - Max Depth = 8
  - Call Chain = ADC_Init
  [Called By]
  - >> adc_init

  ADC_RegularChannel_Config (Thumb, 96 bytes, Stack size 16 bytes, gd32f1x0_adc.o(i.ADC_RegularChannel_Config))
  [Stack]

  - Max Depth = 16
  - Call Chain = ADC_RegularChannel_Config
  [Called By]
  - >> adc_init

  ADC_SoftwareStartConv_Enable (Thumb, 22 bytes, Stack size 0 bytes, gd32f1x0_adc.o(i.ADC_SoftwareStartConv_Enable))
  [Called By]

  - >> adc_init

  BusFault_Handler (Thumb, 6 bytes, Stack size 0 bytes, main.o(i.BusFault_Handler))
  [Stack]

  - Max Depth = 52
  - Call Chain = BusFault_Handler ⇒ failloop ⇒ pwm_set ⇒ lroundf ⇒ __aeabi_fsub ⇒ __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> failloop
  [Address Reference Count : 1]
  - startup_gd32f1x0.o(RESET)

  DMA_Enable (Thumb, 22 bytes, Stack size 0 bytes, gd32f1x0_dma.o(i.DMA_Enable))
  [Called By]

  - >> adc_init

  DMA_Init (Thumb, 58 bytes, Stack size 12 bytes, gd32f1x0_dma.o(i.DMA_Init))
  [Stack]

  - Max Depth = 12
  - Call Chain = DMA_Init
  [Called By]
  - >> adc_init

  FMC_ClearBitState (Thumb, 6 bytes, Stack size 0 bytes, gd32f1x0_fmc.o(i.FMC_ClearBitState))
  [Called By]

  - >> fmc_write
  - >> fmc_erasepage

  FMC_ErasePage (Thumb, 54 bytes, Stack size 16 bytes, gd32f1x0_fmc.o(i.FMC_ErasePage))
  [Stack]

  - Max Depth = 20
  - Call Chain = FMC_ErasePage ⇒ FMC_WaitReady
  [Calls]
  - >> FMC_WaitReady
  [Called By]
  - >> fmc_erasepage

  FMC_GetState (Thumb, 34 bytes, Stack size 0 bytes, gd32f1x0_fmc.o(i.FMC_GetState))
  [Called By]

  - >> FMC_WaitReady

  FMC_Lock (Thumb, 12 bytes, Stack size 0 bytes, gd32f1x0_fmc.o(i.FMC_Lock))
  [Called By]

  - >> fmc_write
  - >> fmc_erasepage

  FMC_ProgramWord (Thumb, 48 bytes, Stack size 20 bytes, gd32f1x0_fmc.o(i.FMC_ProgramWord))
  [Stack]

  - Max Depth = 24
  - Call Chain = FMC_ProgramWord ⇒ FMC_WaitReady
  [Calls]
  - >> FMC_WaitReady
  [Called By]
  - >> fmc_write

  FMC_Unlock (Thumb, 18 bytes, Stack size 0 bytes, gd32f1x0_fmc.o(i.FMC_Unlock))
  [Called By]

  - >> fmc_write
  - >> fmc_erasepage

  FMC_WaitReady (Thumb, 22 bytes, Stack size 4 bytes, gd32f1x0_fmc.o(i.FMC_WaitReady))
  [Stack]

  - Max Depth = 4
  - Call Chain = FMC_WaitReady
  [Calls]
  - >> FMC_GetState
  [Called By]
  - >> FMC_ProgramWord
  - >> FMC_ErasePage
  - >> fmc_write
  - >> fmc_erasepage

  GPIO_Init (Thumb, 118 bytes, Stack size 20 bytes, gd32f1x0_gpio.o(i.GPIO_Init))
  [Stack]

  - Max Depth = 20
  - Call Chain = GPIO_Init
  [Called By]
  - >> spi_init
  - >> pwm_init
  - >> i2c_init
  - >> gpio_init

  GPIO_PinAFConfig (Thumb, 32 bytes, Stack size 8 bytes, gd32f1x0_gpio.o(i.GPIO_PinAFConfig))
  [Stack]

  - Max Depth = 8
  - Call Chain = GPIO_PinAFConfig
  [Called By]
  - >> pwm_init
  - >> i2c_init

  GPIO_ReadInputBit (Thumb, 10 bytes, Stack size 0 bytes, gd32f1x0_gpio.o(i.GPIO_ReadInputBit))
  [Called By]

  - >> i2c_init

  GPIO_WriteBit (Thumb, 10 bytes, Stack size 0 bytes, gd32f1x0_gpio.o(i.GPIO_WriteBit))
  [Called By]

  - >> spi_cson
  - >> i2c_init
  - >> ledon
  - >> ledoff

  HardFault_Handler (Thumb, 6 bytes, Stack size 0 bytes, main.o(i.HardFault_Handler))
  [Stack]

  - Max Depth = 52
  - Call Chain = HardFault_Handler ⇒ failloop ⇒ pwm_set ⇒ lroundf ⇒ __aeabi_fsub ⇒ __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> failloop
  [Address Reference Count : 1]
  - startup_gd32f1x0.o(RESET)

  I2C_Acknowledge_Enable (Thumb, 20 bytes, Stack size 0 bytes, gd32f1x0_i2c.o(i.I2C_Acknowledge_Enable))
  [Called By]

  - >> i2c_readdata
  - >> i2c_init

  I2C_Enable (Thumb, 20 bytes, Stack size 0 bytes, gd32f1x0_i2c.o(i.I2C_Enable))
  [Called By]

  - >> i2c_init

  I2C_GetBitState (Thumb, 44 bytes, Stack size 12 bytes, gd32f1x0_i2c.o(i.I2C_GetBitState))
  [Stack]

  - Max Depth = 12
  - Call Chain = I2C_GetBitState
  [Called By]
  - >> i2c_sendheader

  I2C_Init (Thumb, 186 bytes, Stack size 48 bytes, gd32f1x0_i2c.o(i.I2C_Init))
  [Stack]

  - Max Depth = 68
  - Call Chain = I2C_Init ⇒ RCC_GetClocksFreq
  [Calls]
  - >> RCC_GetClocksFreq
  [Called By]
  - >> i2c_init

  I2C_NACKPosition_Enable (Thumb, 22 bytes, Stack size 0 bytes, gd32f1x0_i2c.o(i.I2C_NACKPosition_Enable))
  [Called By]

  - >> i2c_init

  I2C_ReceiveData (Thumb, 6 bytes, Stack size 0 bytes, gd32f1x0_i2c.o(i.I2C_ReceiveData))
  [Called By]

  - >> i2c_readreg
  - >> i2c_readdata

  I2C_SendData (Thumb, 4 bytes, Stack size 0 bytes, gd32f1x0_i2c.o(i.I2C_SendData))
  [Called By]

  - >> i2c_sendheader
  - >> i2c_writereg
  - >> i2c_readreg
  - >> i2c_readdata

  I2C_StartOnBus_Enable (Thumb, 20 bytes, Stack size 0 bytes, gd32f1x0_i2c.o(i.I2C_StartOnBus_Enable))
  [Called By]

  - >> i2c_sendheader
  - >> i2c_readreg
  - >> i2c_readdata

  I2C_StateDetect (Thumb, 30 bytes, Stack size 8 bytes, gd32f1x0_i2c.o(i.I2C_StateDetect))
  [Stack]

  - Max Depth = 8
  - Call Chain = I2C_StateDetect
  [Called By]
  - >> i2c_sendheader
  - >> i2c_writereg
  - >> i2c_readreg
  - >> i2c_readdata

  I2C_StopOnBus_Enable (Thumb, 20 bytes, Stack size 0 bytes, gd32f1x0_i2c.o(i.I2C_StopOnBus_Enable))
  [Called By]

  - >> i2c_writereg
  - >> i2c_readreg
  - >> i2c_readdata

  MemManage_Handler (Thumb, 6 bytes, Stack size 0 bytes, main.o(i.MemManage_Handler))
  [Stack]

  - Max Depth = 52
  - Call Chain = MemManage_Handler ⇒ failloop ⇒ pwm_set ⇒ lroundf ⇒ __aeabi_fsub ⇒ __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> failloop
  [Address Reference Count : 1]
  - startup_gd32f1x0.o(RESET)

  RCC_ADCCLKConfig (Thumb, 36 bytes, Stack size 0 bytes, gd32f1x0_rcc.o(i.RCC_ADCCLKConfig))
  [Called By]

  - >> adc_init

  RCC_AHBConfig (Thumb, 14 bytes, Stack size 0 bytes, gd32f1x0_rcc.o(i.RCC_AHBConfig))
  [Called By]

  - >> clk_init

  RCC_AHBPeriphClock_Enable (Thumb, 18 bytes, Stack size 0 bytes, gd32f1x0_rcc.o(i.RCC_AHBPeriphClock_Enable))
  [Called By]

  - >> gpio_init
  - >> adc_init

  RCC_APB1Config (Thumb, 14 bytes, Stack size 0 bytes, gd32f1x0_rcc.o(i.RCC_APB1Config))
  [Called By]

  - >> clk_init

  RCC_APB1PeriphClock_Enable (Thumb, 18 bytes, Stack size 0 bytes, gd32f1x0_rcc.o(i.RCC_APB1PeriphClock_Enable))
  [Called By]

  - >> pwm_init
  - >> i2c_init

  RCC_APB2Config (Thumb, 14 bytes, Stack size 0 bytes, gd32f1x0_rcc.o(i.RCC_APB2Config))
  [Called By]

  - >> clk_init

  RCC_APB2PeriphClock_Enable (Thumb, 18 bytes, Stack size 0 bytes, gd32f1x0_rcc.o(i.RCC_APB2PeriphClock_Enable))
  [Called By]

  - >> pwm_init
  - >> adc_init

  RCC_CK_SYSConfig (Thumb, 14 bytes, Stack size 0 bytes, gd32f1x0_rcc.o(i.RCC_CK_SYSConfig))
  [Called By]

  - >> clk_init

  RCC_GetBitState (Thumb, 48 bytes, Stack size 0 bytes, gd32f1x0_rcc.o(i.RCC_GetBitState))
  [Called By]

  - >> clk_init

  RCC_GetCK_SYSSource (Thumb, 10 bytes, Stack size 0 bytes, gd32f1x0_rcc.o(i.RCC_GetCK_SYSSource))
  [Called By]

  - >> main

  RCC_GetClocksFreq (Thumb, 256 bytes, Stack size 20 bytes, gd32f1x0_rcc.o(i.RCC_GetClocksFreq))
  [Stack]

  - Max Depth = 20
  - Call Chain = RCC_GetClocksFreq
  [Called By]
  - >> I2C_Init

  RCC_HSEConfig (Thumb, 10 bytes, Stack size 0 bytes, gd32f1x0_rcc.o(i.RCC_HSEConfig))
  [Called By]

  - >> clk_init

  RCC_HSI_Enable (Thumb, 22 bytes, Stack size 0 bytes, gd32f1x0_rcc.o(i.RCC_HSI_Enable))
  [Called By]

  - >> clk_init

  RCC_PLLConfig (Thumb, 22 bytes, Stack size 8 bytes, gd32f1x0_rcc.o(i.RCC_PLLConfig))
  [Stack]

  - Max Depth = 8
  - Call Chain = RCC_PLLConfig
  [Called By]
  - >> clk_init

  RCC_PLL_Enable (Thumb, 22 bytes, Stack size 0 bytes, gd32f1x0_rcc.o(i.RCC_PLL_Enable))
  [Called By]

  - >> clk_init

  SysTick_Handler (Thumb, 2 bytes, Stack size 0 bytes, drv_time.o(i.SysTick_Handler))
  [Address Reference Count : 1]

  - startup_gd32f1x0.o(RESET)

  System_Init (Thumb, 76 bytes, Stack size 0 bytes, system_gd32f1x0.o(i.System_Init))
  [Stack]

  - Max Depth = 12
  - Call Chain = System_Init ⇒ Set_SysClockTo72
  [Calls]
  - >> Set_SysClockTo72
  [Address Reference Count : 1]
  - startup_gd32f1x0.o(.text)

  TIMER_BaseInit (Thumb, 86 bytes, Stack size 8 bytes, gd32f1x0_timer.o(i.TIMER_BaseInit))
  [Stack]

  - Max Depth = 8
  - Call Chain = TIMER_BaseInit
  [Called By]
  - >> pwm_init

  TIMER_CARLPreloadConfig (Thumb, 20 bytes, Stack size 0 bytes, gd32f1x0_timer.o(i.TIMER_CARLPreloadConfig))
  [Called By]

  - >> pwm_init

  TIMER_CtrlPWMOutputs (Thumb, 22 bytes, Stack size 0 bytes, gd32f1x0_timer.o(i.TIMER_CtrlPWMOutputs))
  [Called By]

  - >> pwm_init

  TIMER_Enable (Thumb, 20 bytes, Stack size 0 bytes, gd32f1x0_timer.o(i.TIMER_Enable))
  [Called By]

  - >> pwm_init

  TIMER_OC1_Init (Thumb, 100 bytes, Stack size 12 bytes, gd32f1x0_timer.o(i.TIMER_OC1_Init))
  [Stack]

  - Max Depth = 12
  - Call Chain = TIMER_OC1_Init
  [Called By]
  - >> pwm_init

  TIMER_OC1_Preload (Thumb, 12 bytes, Stack size 0 bytes, gd32f1x0_timer.o(i.TIMER_OC1_Preload))
  [Called By]

  - >> pwm_init

  TIMER_OC2_Init (Thumb, 114 bytes, Stack size 16 bytes, gd32f1x0_timer.o(i.TIMER_OC2_Init))
  [Stack]

  - Max Depth = 16
  - Call Chain = TIMER_OC2_Init
  [Called By]
  - >> pwm_init

  TIMER_OC2_Preload (Thumb, 20 bytes, Stack size 0 bytes, gd32f1x0_timer.o(i.TIMER_OC2_Preload))
  [Called By]

  - >> pwm_init

  TIMER_OC3_Init (Thumb, 110 bytes, Stack size 16 bytes, gd32f1x0_timer.o(i.TIMER_OC3_Init))
  [Stack]

  - Max Depth = 16
  - Call Chain = TIMER_OC3_Init
  [Called By]
  - >> pwm_init

  TIMER_OC3_Preload (Thumb, 12 bytes, Stack size 0 bytes, gd32f1x0_timer.o(i.TIMER_OC3_Preload))
  [Called By]

  - >> pwm_init

  TIMER_OC4_Init (Thumb, 82 bytes, Stack size 16 bytes, gd32f1x0_timer.o(i.TIMER_OC4_Init))
  [Stack]

  - Max Depth = 16
  - Call Chain = TIMER_OC4_Init
  [Called By]
  - >> pwm_init

  TIMER_OC4_Preload (Thumb, 20 bytes, Stack size 0 bytes, gd32f1x0_timer.o(i.TIMER_OC4_Preload))
  [Called By]

  - >> pwm_init

  UsageFault_Handler (Thumb, 6 bytes, Stack size 0 bytes, main.o(i.UsageFault_Handler))
  [Stack]

  - Max Depth = 52
  - Call Chain = UsageFault_Handler ⇒ failloop ⇒ pwm_set ⇒ lroundf ⇒ __aeabi_fsub ⇒ __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> failloop
  [Address Reference Count : 1]
  - startup_gd32f1x0.o(RESET)

  __ARM_fpclassifyf (Thumb, 38 bytes, Stack size 0 bytes, fpclassifyf.o(i.__ARM_fpclassifyf))
  [Called By]

  - >> expf

  __mathlib_flt_infnan (Thumb, 6 bytes, Stack size 0 bytes, funder.o(i.__mathlib_flt_infnan))
  [Calls]

  - >> __ARM_scalbnf
  [Called By]
  - >> expf

  __mathlib_flt_overflow (Thumb, 10 bytes, Stack size 0 bytes, funder.o(i.__mathlib_flt_overflow))
  [Calls]

  - >> __ARM_scalbnf
  [Called By]
  - >> expf

  __mathlib_flt_underflow (Thumb, 10 bytes, Stack size 0 bytes, funder.o(i.__mathlib_flt_underflow))
  [Calls]

  - >> __ARM_scalbnf
  [Called By]
  - >> expf

  __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED)

  __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED)

  __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED)

  __set_errno (Thumb, 6 bytes, Stack size 0 bytes, errno.o(i.__set_errno))
  [Called By]

  - >> lroundf
  - >> sqrtf
  - >> expf

  acc_cal (Thumb, 86 bytes, Stack size 32 bytes, sixaxis.o(i.acc_cal))
  [Stack]

  - Max Depth = 228
  - Call Chain = acc_cal ⇒ sixaxis_read ⇒ i2c_readdata ⇒ i2c_sendheader ⇒ I2C_GetBitState
  [Calls]
  - >> sixaxis_read
  - >> lpf
  - >> gettime
  - >> __aeabi_fsub
  [Called By]
  - >> control

  adc_init (Thumb, 178 bytes, Stack size 80 bytes, drv_adc.o(i.adc_init))
  [Stack]

  - Max Depth = 96
  - Call Chain = adc_init ⇒ ADC_RegularChannel_Config
  [Calls]
  - >> DMA_Init
  - >> DMA_Enable
  - >> ADC_SoftwareStartConv_Enable
  - >> ADC_RegularChannel_Config
  - >> ADC_Init
  - >> ADC_Enable
  - >> ADC_DMA_Enable
  - >> ADC_Calibration
  - >> RCC_APB2PeriphClock_Enable
  - >> RCC_AHBPeriphClock_Enable
  - >> RCC_ADCCLKConfig
  [Called By]
  - >> main

  adc_read (Thumb, 62 bytes, Stack size 8 bytes, drv_adc.o(i.adc_read))
  [Stack]

  - Max Depth = 52
  - Call Chain = adc_read ⇒ mapf ⇒ __aeabi_fsub ⇒ __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> __aeabi_ui2f
  - >> mapf
  [Called By]
  - >> main

  apid (Thumb, 180 bytes, Stack size 32 bytes, angle_pid.o(i.apid))
  [Stack]

  - Max Depth = 52
  - Call Chain = apid ⇒ __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> limitf
  - >> __aeabi_fmul
  - >> __aeabi_fadd
  [Called By]
  - >> control

  atan2approx (Thumb, 180 bytes, Stack size 24 bytes, imu.o(i.atan2approx))
  [Stack]

  - Max Depth = 44
  - Call Chain = atan2approx ⇒ __aeabi_fsub ⇒ __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> __aeabi_fdiv
  - >> __aeabi_cfrcmple
  - >> __aeabi_fsub
  - >> __aeabi_fmul
  - >> __aeabi_fadd
  [Called By]
  - >> imu_calc

  bleinit (Thumb, 34 bytes, Stack size 24 bytes, rx_bayang_protocol.o(i.bleinit))
  [Stack]

  - Max Depth = 48
  - Call Chain = bleinit ⇒ xn_writetxaddress ⇒ spi_sendbyte
  [Calls]
  - >> xn_writetxaddress
  [Called By]
  - >> rx_init

  calcmagnitude (Thumb, 42 bytes, Stack size 16 bytes, imu.o(i.calcmagnitude))
  [Stack]

  - Max Depth = 48
  - Call Chain = calcmagnitude ⇒ sqrtf ⇒ _fsqrt
  [Calls]
  - >> __aeabi_fmul
  - >> __aeabi_fadd
  - >> sqrtf
  [Called By]
  - >> imu_calc

  checkrx (Thumb, 392 bytes, Stack size 40 bytes, rx_bayang_protocol.o(i.checkrx))
  [Stack]

  - Max Depth = 76
  - Call Chain = checkrx ⇒ decodepacket ⇒ packettodata ⇒ __aeabi_i2f ⇒ _float_epilogue
  [Calls]
  - >> xn_writerxaddress
  - >> xn_writereg
  - >> xn_readreg
  - >> xn_readpayload
  - >> nextchannel
  - >> decodepacket
  - >> gettime
  [Called By]
  - >> main

  clk_init (Thumb, 96 bytes, Stack size 8 bytes, drv_clk.o(i.clk_init))
  [Stack]

  - Max Depth = 16
  - Call Chain = clk_init ⇒ RCC_PLLConfig
  [Calls]
  - >> RCC_PLL_Enable
  - >> RCC_PLLConfig
  - >> RCC_HSI_Enable
  - >> RCC_HSEConfig
  - >> RCC_GetBitState
  - >> RCC_CK_SYSConfig
  - >> RCC_APB2Config
  - >> RCC_APB1Config
  - >> RCC_AHBConfig
  [Called By]
  - >> main

  control (Thumb, 972 bytes, Stack size 56 bytes, control.o(i.control))
  [Stack]

  - Max Depth = 284
  - Call Chain = control ⇒ acc_cal ⇒ sixaxis_read ⇒ i2c_readdata ⇒ i2c_sendheader ⇒ I2C_GetBitState
  [Calls]
  - >> start_flip
  - >> savecal
  - >> pwm_set
  - >> pid_precalc
  - >> pid
  - >> motorbeep
  - >> mapf
  - >> lpf
  - >> imu_calc
  - >> gyro_cal
  - >> gettime
  - >> gestures2
  - >> flip_sequencer
  - >> fastsin
  - >> fastcos
  - >> apid
  - >> acc_cal
  - >> __aeabi_fsub
  - >> __aeabi_fmul
  - >> __aeabi_fadd
  - >> __ARM_scalbnf
  - >> motorfilter
  [Called By]
  - >> main

  delay (Thumb, 18 bytes, Stack size 8 bytes, drv_time.o(i.delay))
  [Stack]

  - Max Depth = 8
  - Call Chain = delay
  [Called By]
  - >> writeregs
  - >> sixaxis_init
  - >> rx_init
  - >> imu_init
  - >> i2c_init
  - >> main
  - >> failloop
  - >> motorbeep
  - >> gyro_cal

  __mathlib_expf (Thumb, 0 bytes, Stack size 24 bytes, expf.o(i.expf), UNUSED)

  expf (Thumb, 322 bytes, Stack size 24 bytes, expf.o(i.expf))
  [Stack]

  - Max Depth = 44
  - Call Chain = expf ⇒ __aeabi_fsub ⇒ __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> __aeabi_f2iz
  - >> __aeabi_fsub
  - >> __aeabi_frsub
  - >> __aeabi_fmul
  - >> __aeabi_fadd
  - >> __ARM_scalbnf
  - >> __set_errno
  - >> __mathlib_flt_underflow
  - >> __mathlib_flt_overflow
  - >> __mathlib_flt_infnan
  - >> __ARM_fpclassifyf
  - >> _frnd
  [Called By]
  - >> lpfcalc

  failloop (Thumb, 64 bytes, Stack size 0 bytes, main.o(i.failloop))
  [Stack]

  - Max Depth = 52
  - Call Chain = failloop ⇒ pwm_set ⇒ lroundf ⇒ __aeabi_fsub ⇒ __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> delay
  - >> ledon
  - >> ledoff
  - >> pwm_set
  [Called By]
  - >> main
  - >> UsageFault_Handler
  - >> MemManage_Handler
  - >> HardFault_Handler
  - >> BusFault_Handler

  fastcos (Thumb, 16 bytes, Stack size 8 bytes, util.o(i.fastcos))
  [Stack]

  - Max Depth = 44
  - Call Chain = fastcos ⇒ fastsin ⇒ __aeabi_fsub ⇒ __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> fastsin
  - >> __aeabi_fadd
  [Called By]
  - >> control

  fastsin (Thumb, 80 bytes, Stack size 16 bytes, util.o(i.fastsin))
  [Stack]

  - Max Depth = 36
  - Call Chain = fastsin ⇒ __aeabi_fsub ⇒ __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> __aeabi_fsub
  - >> __aeabi_frsub
  - >> __aeabi_fmul
  - >> __aeabi_fadd
  [Called By]
  - >> fastcos
  - >> control

  flip_sequencer (Thumb, 296 bytes, Stack size 40 bytes, flip_sequencer.o(i.flip_sequencer))
  [Stack]

  - Max Depth = 40
  - Call Chain = flip_sequencer
  [Calls]
  - >> gettime
  [Called By]
  - >> control

  fmc_erasepage (Thumb, 44 bytes, Stack size 8 bytes, drv_fmc1.o(i.fmc_erasepage))
  [Stack]

  - Max Depth = 28
  - Call Chain = fmc_erasepage ⇒ FMC_ErasePage ⇒ FMC_WaitReady
  [Calls]
  - >> FMC_WaitReady
  - >> FMC_Unlock
  - >> FMC_Lock
  - >> FMC_ErasePage
  - >> FMC_ClearBitState
  [Called By]
  - >> savecal

  fmc_read (Thumb, 8 bytes, Stack size 0 bytes, drv_fmc1.o(i.fmc_read))
  [Called By]

  - >> loadcal

  fmc_write (Thumb, 54 bytes, Stack size 16 bytes, drv_fmc1.o(i.fmc_write))
  [Stack]

  - Max Depth = 40
  - Call Chain = fmc_write ⇒ FMC_ProgramWord ⇒ FMC_WaitReady
  [Calls]
  - >> FMC_WaitReady
  - >> FMC_Unlock
  - >> FMC_ProgramWord
  - >> FMC_Lock
  - >> FMC_ClearBitState
  [Called By]
  - >> savecal

  gesture_sequence (Thumb, 192 bytes, Stack size 16 bytes, gestures.o(i.gesture_sequence))
  [Stack]

  - Max Depth = 16
  - Call Chain = gesture_sequence
  [Called By]
  - >> gestures2

  gestures2 (Thumb, 184 bytes, Stack size 16 bytes, gestures.o(i.gestures2))
  [Stack]

  - Max Depth = 32
  - Call Chain = gestures2 ⇒ gesture_sequence
  [Calls]
  - >> gesture_sequence
  - >> gettime
  [Called By]
  - >> control

  gettime (Thumb, 4 bytes, Stack size 0 bytes, drv_time.o(i.gettime))
  [Calls]

  - >> time_update
  [Called By]
  - >> checkrx
  - >> main
  - >> ledflash
  - >> start_flip
  - >> motorbeep
  - >> imu_calc
  - >> gyro_cal
  - >> gestures2
  - >> flip_sequencer
  - >> acc_cal
  - >> control

  gpio_init (Thumb, 70 bytes, Stack size 16 bytes, drv_gpio.o(i.gpio_init))
  [Stack]

  - Max Depth = 36
  - Call Chain = gpio_init ⇒ GPIO_Init
  [Calls]
  - >> RCC_AHBPeriphClock_Enable
  - >> GPIO_Init
  [Called By]
  - >> main

  gyro_cal (Thumb, 376 bytes, Stack size 88 bytes, sixaxis.o(i.gyro_cal))
  [Stack]

  - Max Depth = 180
  - Call Chain = gyro_cal ⇒ i2c_readdata ⇒ i2c_sendheader ⇒ I2C_GetBitState
  [Calls]
  - >> lpfcalc
  - >> limitf
  - >> i2c_readdata
  - >> __aeabi_cfrcmple
  - >> __aeabi_i2f
  - >> delay
  - >> __aeabi_ui2f
  - >> __aeabi_cfcmple
  - >> ledon
  - >> ledoff
  - >> lpf
  - >> gettime
  - >> __aeabi_fsub
  - >> __aeabi_fadd
  [Called By]
  - >> main
  - >> control

  i2c_init (Thumb, 322 bytes, Stack size 56 bytes, drv_i2c.o(i.i2c_init))
  [Stack]

  - Max Depth = 124
  - Call Chain = i2c_init ⇒ I2C_Init ⇒ RCC_GetClocksFreq
  [Calls]
  - >> RCC_APB1PeriphClock_Enable
  - >> I2C_NACKPosition_Enable
  - >> I2C_Init
  - >> I2C_Enable
  - >> I2C_Acknowledge_Enable
  - >> GPIO_WriteBit
  - >> GPIO_ReadInputBit
  - >> GPIO_PinAFConfig
  - >> GPIO_Init
  - >> delay
  [Called By]
  - >> main

  i2c_readdata (Thumb, 296 bytes, Stack size 56 bytes, drv_i2c.o(i.i2c_readdata))
  [Stack]

  - Max Depth = 92
  - Call Chain = i2c_readdata ⇒ i2c_sendheader ⇒ I2C_GetBitState
  [Calls]
  - >> I2C_StopOnBus_Enable
  - >> I2C_StateDetect
  - >> I2C_StartOnBus_Enable
  - >> I2C_SendData
  - >> I2C_ReceiveData
  - >> I2C_Acknowledge_Enable
  - >> i2c_sendheader
  [Called By]
  - >> sixaxis_read
  - >> gyro_cal

  i2c_readreg (Thumb, 200 bytes, Stack size 24 bytes, drv_i2c.o(i.i2c_readreg))
  [Stack]

  - Max Depth = 60
  - Call Chain = i2c_readreg ⇒ i2c_sendheader ⇒ I2C_GetBitState
  [Calls]
  - >> I2C_StopOnBus_Enable
  - >> I2C_StateDetect
  - >> I2C_StartOnBus_Enable
  - >> I2C_SendData
  - >> I2C_ReceiveData
  - >> i2c_sendheader
  [Called By]
  - >> sixaxis_init
  - >> sixaxis_check

  i2c_sendheader (Thumb, 126 bytes, Stack size 24 bytes, drv_i2c.o(i.i2c_sendheader))
  [Stack]

  - Max Depth = 36
  - Call Chain = i2c_sendheader ⇒ I2C_GetBitState
  [Calls]
  - >> I2C_StateDetect
  - >> I2C_StartOnBus_Enable
  - >> I2C_SendData
  - >> I2C_GetBitState
  [Called By]
  - >> i2c_writereg
  - >> i2c_readreg
  - >> i2c_readdata

  i2c_writereg (Thumb, 102 bytes, Stack size 24 bytes, drv_i2c.o(i.i2c_writereg))
  [Stack]

  - Max Depth = 60
  - Call Chain = i2c_writereg ⇒ i2c_sendheader ⇒ I2C_GetBitState
  [Calls]
  - >> I2C_StopOnBus_Enable
  - >> I2C_StateDetect
  - >> I2C_SendData
  - >> i2c_sendheader
  [Called By]
  - >> sixaxis_init

  imu_calc (Thumb, 388 bytes, Stack size 40 bytes, imu.o(i.imu_calc))
  [Stack]

  - Max Depth = 100
  - Call Chain = imu_calc ⇒ lpfcalc ⇒ expf ⇒ __aeabi_fsub ⇒ __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> __aeabi_fdiv
  - >> vectorcopy
  - >> calcmagnitude
  - >> atan2approx
  - >> lpfcalc
  - >> __aeabi_ui2f
  - >> lpf
  - >> gettime
  - >> __aeabi_fsub
  - >> __aeabi_frsub
  - >> __aeabi_fmul
  - >> __aeabi_fadd
  - >> rand
  [Called By]
  - >> control

  imu_init (Thumb, 60 bytes, Stack size 32 bytes, imu.o(i.imu_init))
  [Stack]

  - Max Depth = 228
  - Call Chain = imu_init ⇒ sixaxis_read ⇒ i2c_readdata ⇒ i2c_sendheader ⇒ I2C_GetBitState
  [Calls]
  - >> sixaxis_read
  - >> delay
  - >> lpf
  [Called By]
  - >> main

  ledflash (Thumb, 46 bytes, Stack size 16 bytes, led.o(i.ledflash))
  [Stack]

  - Max Depth = 32
  - Call Chain = ledflash ⇒ ledon
  [Calls]
  - >> ledon
  - >> ledoff
  - >> gettime
  [Called By]
  - >> main

  ledoff (Thumb, 70 bytes, Stack size 16 bytes, led.o(i.ledoff))
  [Stack]

  - Max Depth = 16
  - Call Chain = ledoff
  [Calls]
  - >> GPIO_WriteBit
  [Called By]
  - >> failloop
  - >> ledflash
  - >> gyro_cal

  ledon (Thumb, 70 bytes, Stack size 16 bytes, led.o(i.ledon))
  [Stack]

  - Max Depth = 16
  - Call Chain = ledon
  [Calls]
  - >> GPIO_WriteBit
  [Called By]
  - >> main
  - >> failloop
  - >> ledflash
  - >> gyro_cal

  limitf (Thumb, 34 bytes, Stack size 16 bytes, util.o(i.limitf))
  [Stack]

  - Max Depth = 16
  - Call Chain = limitf
  [Calls]
  - >> __aeabi_cfrcmple
  [Called By]
  - >> pid
  - >> gyro_cal
  - >> apid

  loadcal (Thumb, 108 bytes, Stack size 24 bytes, flash.o(i.loadcal))
  [Stack]

  - Max Depth = 24
  - Call Chain = loadcal
  [Calls]
  - >> fmc_read
  [Called By]
  - >> main

  lpf (Thumb, 44 bytes, Stack size 16 bytes, util.o(i.lpf))
  [Stack]

  - Max Depth = 36
  - Call Chain = lpf ⇒ __aeabi_fsub ⇒ __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> __aeabi_fsub
  - >> __aeabi_fmul
  - >> __aeabi_fadd
  [Called By]
  - >> imu_init
  - >> main
  - >> imu_calc
  - >> gyro_cal
  - >> acc_cal
  - >> control

  lpfcalc (Thumb, 54 bytes, Stack size 16 bytes, util.o(i.lpfcalc))
  [Stack]

  - Max Depth = 60
  - Call Chain = lpfcalc ⇒ expf ⇒ __aeabi_fsub ⇒ __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> __aeabi_fdiv
  - >> __aeabi_fmul
  - >> expf
  [Called By]
  - >> imu_calc
  - >> gyro_cal

  lroundf (Thumb, 146 bytes, Stack size 16 bytes, lroundf.o(i.lroundf))
  [Stack]

  - Max Depth = 36
  - Call Chain = lroundf ⇒ __aeabi_fsub ⇒ __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> __aeabi_fsub
  - >> __aeabi_fadd
  - >> __set_errno
  - >> _ffix_r
  - >> _frnd
  [Called By]
  - >> pwm_set

  main (Thumb, 460 bytes, Stack size 8 bytes, main.o(i.main))
  [Stack]

  - Max Depth = 292
  - Call Chain = main ⇒ control ⇒ acc_cal ⇒ sixaxis_read ⇒ i2c_readdata ⇒ i2c_sendheader ⇒ I2C_GetBitState
  [Calls]
  - >> RCC_GetCK_SYSSource
  - >> time_init
  - >> spi_init
  - >> sixaxis_read
  - >> sixaxis_init
  - >> sixaxis_check
  - >> rx_init
  - >> pwm_init
  - >> loadcal
  - >> imu_init
  - >> i2c_init
  - >> gpio_init
  - >> delay
  - >> clk_init
  - >> checkrx
  - >> adc_read
  - >> adc_init
  - >> __aeabi_ui2f
  - >> __aeabi_cfcmple
  - >> failloop
  - >> ledon
  - >> ledflash
  - >> pwm_set
  - >> lpf
  - >> gyro_cal
  - >> gettime
  - >> __aeabi_fmul
  - >> __aeabi_fadd
  - >> __ARM_scalbnf
  - >> control
  [Address Reference Count : 1]
  - entry9a.o(.ARM.Collect$$$$0000000B)

  mapf (Thumb, 60 bytes, Stack size 24 bytes, util.o(i.mapf))
  [Stack]

  - Max Depth = 44
  - Call Chain = mapf ⇒ __aeabi_fsub ⇒ __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> __aeabi_fdiv
  - >> __aeabi_fsub
  - >> __aeabi_fmul
  - >> __aeabi_fadd
  [Called By]
  - >> adc_read
  - >> control

  motorbeep (Thumb, 156 bytes, Stack size 16 bytes, drv_pwm.o(i.motorbeep))
  [Stack]

  - Max Depth = 68
  - Call Chain = motorbeep ⇒ pwm_set ⇒ lroundf ⇒ __aeabi_fsub ⇒ __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> delay
  - >> pwm_set
  - >> gettime
  [Called By]
  - >> control

  motorfilter (Thumb, 78 bytes, Stack size 40 bytes, control.o(i.motorfilter))
  [Stack]

  - Max Depth = 60
  - Call Chain = motorfilter ⇒ __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> __aeabi_fadd
  - >> __ARM_scalbnf
  [Called By]
  - >> control

  nextchannel (Thumb, 30 bytes, Stack size 0 bytes, rx_bayang_protocol.o(i.nextchannel))
  [Stack]

  - Max Depth = 24
  - Call Chain = nextchannel ⇒ xn_writereg ⇒ spi_sendbyte
  [Calls]
  - >> xn_writereg
  [Called By]
  - >> checkrx

  packettodata (Thumb, 34 bytes, Stack size 8 bytes, rx_bayang_protocol.o(i.packettodata))
  [Stack]

  - Max Depth = 12
  - Call Chain = packettodata ⇒ __aeabi_i2f ⇒ _float_epilogue
  [Calls]
  - >> __aeabi_i2f
  - >> __ARM_scalbnf
  [Called By]
  - >> decodepacket

  pid (Thumb, 314 bytes, Stack size 40 bytes, pid.o(i.pid))
  [Stack]

  - Max Depth = 60
  - Call Chain = pid ⇒ __aeabi_fsub ⇒ __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> __aeabi_cfcmpeq
  - >> limitf
  - >> __aeabi_fsub
  - >> __aeabi_frsub
  - >> __aeabi_fmul
  - >> __aeabi_fadd
  - >> __ARM_scalbnf
  [Called By]
  - >> control

  pid_precalc (Thumb, 18 bytes, Stack size 8 bytes, pid.o(i.pid_precalc))
  [Stack]

  - Max Depth = 16
  - Call Chain = pid_precalc ⇒ __aeabi_fdiv
  [Calls]
  - >> __aeabi_fdiv
  [Called By]
  - >> control

  pwm_init (Thumb, 282 bytes, Stack size 32 bytes, drv_pwm.o(i.pwm_init))
  [Stack]

  - Max Depth = 52
  - Call Chain = pwm_init ⇒ GPIO_Init
  [Calls]
  - >> RCC_APB2PeriphClock_Enable
  - >> RCC_APB1PeriphClock_Enable
  - >> GPIO_PinAFConfig
  - >> GPIO_Init
  - >> TIMER_CtrlPWMOutputs
  - >> TIMER_CARLPreloadConfig
  - >> TIMER_BaseInit
  - >> TIMER_OC4_Preload
  - >> TIMER_OC4_Init
  - >> TIMER_OC3_Preload
  - >> TIMER_OC3_Init
  - >> TIMER_OC2_Preload
  - >> TIMER_OC2_Init
  - >> TIMER_OC1_Preload
  - >> TIMER_OC1_Init
  - >> TIMER_Enable
  [Called By]
  - >> main

  pwm_set (Thumb, 92 bytes, Stack size 16 bytes, drv_pwm.o(i.pwm_set))
  [Stack]

  - Max Depth = 52
  - Call Chain = pwm_set ⇒ lroundf ⇒ __aeabi_fsub ⇒ __aeabi_fadd ⇒ _float_epilogue
  [Calls]
  - >> __aeabi_f2uiz
  - >> __aeabi_i2f
  - >> __aeabi_fmul
  - >> lroundf
  [Called By]
  - >> main
  - >> failloop
  - >> motorbeep
  - >> control

  rx_init (Thumb, 150 bytes, Stack size 24 bytes, rx_bayang_protocol.o(i.rx_init))
  [Stack]

  - Max Depth = 72
  - Call Chain = rx_init ⇒ bleinit ⇒ xn_writetxaddress ⇒ spi_sendbyte
  [Calls]
  - >> xn_writerxaddress
  - >> xn_writereg
  - >> xn_command
  - >> writeregs
  - >> bleinit
  - >> delay
  - >> __aeabi_memclr4
  [Called By]
  - >> main

  savecal (Thumb, 104 bytes, Stack size 16 bytes, flash.o(i.savecal))
  [Stack]

  - Max Depth = 56
  - Call Chain = savecal ⇒ fmc_write ⇒ FMC_ProgramWord ⇒ FMC_WaitReady
  [Calls]
  - >> fmc_write
  - >> fmc_erasepage
  [Called By]
  - >> control

  sixaxis_check (Thumb, 32 bytes, Stack size 8 bytes, sixaxis.o(i.sixaxis_check))
  [Stack]

  - Max Depth = 68
  - Call Chain = sixaxis_check ⇒ i2c_readreg ⇒ i2c_sendheader ⇒ I2C_GetBitState
  [Calls]
  - >> i2c_readreg
  [Called By]
  - >> main

  sixaxis_init (Thumb, 80 bytes, Stack size 8 bytes, sixaxis.o(i.sixaxis_init))
  [Stack]

  - Max Depth = 68
  - Call Chain = sixaxis_init ⇒ i2c_writereg ⇒ i2c_sendheader ⇒ I2C_GetBitState
  [Calls]
  - >> i2c_writereg
  - >> i2c_readreg
  - >> delay
  [Called By]
  - >> main

  sixaxis_read (Thumb, 216 bytes, Stack size 104 bytes, sixaxis.o(i.sixaxis_read))
  [Stack]

  - Max Depth = 196
  - Call Chain = sixaxis_read ⇒ i2c_readdata ⇒ i2c_sendheader ⇒ I2C_GetBitState
  [Calls]
  - >> i2c_readdata
  - >> __aeabi_i2f
  - >> __aeabi_fsub
  - >> __aeabi_fmul
  [Called By]
  - >> imu_init
  - >> main
  - >> acc_cal

  spi_csoff (Thumb, 8 bytes, Stack size 0 bytes, drv_spi.o(i.spi_csoff))
  [Called By]

  - >> xn_writetxaddress
  - >> xn_writerxaddress
  - >> xn_writereg
  - >> xn_readreg
  - >> xn_readpayload
  - >> xn_command
  - >> writeregs

  spi_cson (Thumb, 10 bytes, Stack size 0 bytes, drv_spi.o(i.spi_cson))
  [Calls]

  - >> GPIO_WriteBit
  [Called By]
  - >> xn_writetxaddress
  - >> xn_writerxaddress
  - >> xn_writereg
  - >> xn_readreg
  - >> xn_readpayload
  - >> xn_command
  - >> writeregs

  spi_init (Thumb, 66 bytes, Stack size 16 bytes, drv_spi.o(i.spi_init))
  [Stack]

  - Max Depth = 36
  - Call Chain = spi_init ⇒ GPIO_Init
  [Calls]
  - >> GPIO_Init
  [Called By]
  - >> main

  spi_sendbyte (Thumb, 46 bytes, Stack size 8 bytes, drv_spi.o(i.spi_sendbyte))
  [Stack]

  - Max Depth = 8
  - Call Chain = spi_sendbyte
  [Called By]
  - >> xn_writetxaddress
  - >> xn_writerxaddress
  - >> xn_writereg
  - >> xn_readpayload
  - >> writeregs

  spi_sendrecvbyte (Thumb, 66 bytes, Stack size 16 bytes, drv_spi.o(i.spi_sendrecvbyte))
  [Stack]

  - Max Depth = 16
  - Call Chain = spi_sendrecvbyte
  [Called By]
  - >> xn_readreg
  - >> xn_command

  spi_sendzerorecvbyte (Thumb, 50 bytes, Stack size 8 bytes, drv_spi.o(i.spi_sendzerorecvbyte))
  [Stack]

  - Max Depth = 8
  - Call Chain = spi_sendzerorecvbyte
  [Called By]
  - >> xn_readpayload

  sqrtf (Thumb, 44 bytes, Stack size 16 bytes, sqrtf.o(i.sqrtf))
  [Stack]

  - Max Depth = 32
  - Call Chain = sqrtf ⇒ _fsqrt
  [Calls]
  - >> __set_errno
  - >> _fsqrt
  [Called By]
  - >> calcmagnitude

  start_flip (Thumb, 72 bytes, Stack size 16 bytes, flip_sequencer.o(i.start_flip))
  [Stack]

  - Max Depth = 16
  - Call Chain = start_flip
  [Calls]
  - >> __aeabi_cfcmple
  - >> gettime
  [Called By]
  - >> control

  time_init (Thumb, 26 bytes, Stack size 0 bytes, drv_time.o(i.time_init))
  [Called By]

  - >> main

  time_update (Thumb, 42 bytes, Stack size 0 bytes, drv_time.o(i.time_update))
  [Called By]

  - >> gettime

  vectorcopy (Thumb, 18 bytes, Stack size 0 bytes, imu.o(i.vectorcopy))
  [Called By]

  - >> imu_calc

  writeregs (Thumb, 44 bytes, Stack size 16 bytes, rx_bayang_protocol.o(i.writeregs))
  [Stack]

  - Max Depth = 24
  - Call Chain = writeregs ⇒ spi_sendbyte
  [Calls]
  - >> spi_sendbyte
  - >> spi_cson
  - >> spi_csoff
  - >> delay
  [Called By]
  - >> rx_init

  xn_command (Thumb, 24 bytes, Stack size 8 bytes, drv_xn297.o(i.xn_command))
  [Stack]

  - Max Depth = 24
  - Call Chain = xn_command ⇒ spi_sendrecvbyte
  [Calls]
  - >> spi_sendrecvbyte
  - >> spi_cson
  - >> spi_csoff
  [Called By]
  - >> rx_init

  xn_readpayload (Thumb, 42 bytes, Stack size 16 bytes, drv_xn297.o(i.xn_readpayload))
  [Stack]

  - Max Depth = 24
  - Call Chain = xn_readpayload ⇒ spi_sendzerorecvbyte
  [Calls]
  - >> spi_sendzerorecvbyte
  - >> spi_sendbyte
  - >> spi_cson
  - >> spi_csoff
  [Called By]
  - >> checkrx

  xn_readreg (Thumb, 32 bytes, Stack size 8 bytes, drv_xn297.o(i.xn_readreg))
  [Stack]

  - Max Depth = 24
  - Call Chain = xn_readreg ⇒ spi_sendrecvbyte
  [Calls]
  - >> spi_sendrecvbyte
  - >> spi_cson
  - >> spi_csoff
  [Called By]
  - >> checkrx

  xn_writereg (Thumb, 36 bytes, Stack size 16 bytes, drv_xn297.o(i.xn_writereg))
  [Stack]

  - Max Depth = 24
  - Call Chain = xn_writereg ⇒ spi_sendbyte
  [Calls]
  - >> spi_sendbyte
  - >> spi_cson
  - >> spi_csoff
  [Called By]
  - >> nextchannel
  - >> rx_init
  - >> checkrx

  xn_writerxaddress (Thumb, 38 bytes, Stack size 16 bytes, drv_xn297.o(i.xn_writerxaddress))
  [Stack]

  - Max Depth = 24
  - Call Chain = xn_writerxaddress ⇒ spi_sendbyte
  [Calls]
  - >> spi_sendbyte
  - >> spi_cson
  - >> spi_csoff
  [Called By]
  - >> rx_init
  - >> checkrx

  xn_writetxaddress (Thumb, 38 bytes, Stack size 16 bytes, drv_xn297.o(i.xn_writetxaddress))
  [Stack]

  - Max Depth = 24
  - Call Chain = xn_writetxaddress ⇒ spi_sendbyte
  [Calls]
  - >> spi_sendbyte
  - >> spi_cson
  - >> spi_csoff
  [Called By]
  - >> bleinit

  ### Local Symbols

  Set_SysClockTo72 (Thumb, 128 bytes, Stack size 12 bytes, system_gd32f1x0.o(i.Set_SysClockTo72))
  [Stack]

  - Max Depth = 12
  - Call Chain = Set_SysClockTo72
  [Called By]
  - >> System_Init

  decodepacket (Thumb, 194 bytes, Stack size 24 bytes, rx_bayang_protocol.o(i.decodepacket))
  [Stack]

  - Max Depth = 36
  - Call Chain = decodepacket ⇒ packettodata ⇒ __aeabi_i2f ⇒ _float_epilogue
  [Calls]
  - >> __aeabi_i2f
  - >> packettodata
  - >> __aeabi_fmul
  [Called By]
  - >> checkrx

  __sti___10_filter_cpp_d66e70ef (Thumb, 8 bytes, Stack size 0 bytes, filter.o(i.__sti___10_filter_cpp_d66e70ef))
  [Address Reference Count : 1]

  - filter.o(.init_array)

  ### Undefined Global Symbols