# Static Call Graph for image .\Objects\SX126xSTM32F103C8Demo.axf

#<CALLGRAPH># ARM Linker, 5060960: Last Updated: Thu Dec 11 17:11:30 2025

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

### Call chain for Maximum Stack Depth:

main ⇒ tb05_data_proccess ⇒ respone_data_process ⇒ sx126x_cmd_process ⇒ radio_setting_update ⇒ cJSON_PrintUnformatted ⇒ print ⇒ print_value ⇒ print_number ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_real

### Mutually Recursive functions

- ADC1_2_IRQHandler ⇒ ADC1_2_IRQHandler
- RadioSetPublicNetwork ⇒ RadioSetModem
- cJSON_Delete ⇒ cJSON_Delete
- parse_object ⇒ parse_value
- parse_array ⇒ parse_value
- print_object ⇒ print_value
- print_array ⇒ print_value

  ### Function Pointers

  - ADC1_2_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - ADC3_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - BusFault_Handler from stm32f10x_it.o(i.BusFault_Handler) referenced from startup_stm32f10x_hd.o(RESET)
  - CAN1_RX1_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - CAN1_SCE_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - DMA1_Channel1_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - DMA1_Channel2_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - DMA1_Channel3_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - DMA1_Channel4_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - DMA1_Channel5_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - DMA1_Channel6_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - DMA1_Channel7_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - DMA2_Channel1_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - DMA2_Channel2_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - DMA2_Channel3_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - DMA2_Channel4_5_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - DebugMon_Handler from stm32f10x_it.o(i.DebugMon_Handler) referenced from startup_stm32f10x_hd.o(RESET)
  - EXTI0_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - EXTI15_10_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - EXTI1_IRQHandler from sx126xstm32f103-board.o(i.EXTI1_IRQHandler) referenced from startup_stm32f10x_hd.o(RESET)
  - EXTI2_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - EXTI3_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - EXTI4_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - EXTI9_5_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - FLASH_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - FSMC_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - HardFault_Handler from stm32f10x_it.o(i.HardFault_Handler) referenced from startup_stm32f10x_hd.o(RESET)
  - I2C1_ER_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - I2C1_EV_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - I2C2_ER_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - I2C2_EV_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - MemManage_Handler from stm32f10x_it.o(i.MemManage_Handler) referenced from startup_stm32f10x_hd.o(RESET)
  - NMI_Handler from stm32f10x_it.o(i.NMI_Handler) referenced from startup_stm32f10x_hd.o(RESET)
  - PVD_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - PendSV_Handler from stm32f10x_it.o(i.PendSV_Handler) referenced from startup_stm32f10x_hd.o(RESET)
  - RCC_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - RTCAlarm_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - RTC_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - RadioCheckRfFrequency from radio.o(i.RadioCheckRfFrequency) referenced from radio.o(.constdata)
  - RadioGetStatus from radio.o(i.RadioGetStatus) referenced from radio.o(.constdata)
  - RadioGetWakeupTime from radio.o(i.RadioGetWakeupTime) referenced from radio.o(.constdata)
  - RadioInit from radio.o(i.RadioInit) referenced from radio.o(.constdata)
  - RadioIrqProcess from radio.o(i.RadioIrqProcess) referenced from radio.o(.constdata)
  - RadioIsChannelFree from radio.o(i.RadioIsChannelFree) referenced from radio.o(.constdata)
  - RadioOnDioIrq from radio.o(i.RadioOnDioIrq) referenced from radio.o(i.RadioInit)
  - RadioRandom from radio.o(i.RadioRandom) referenced from radio.o(.constdata)
  - RadioReInit from radio.o(i.RadioReInit) referenced from radio.o(.constdata)
  - RadioRead from radio.o(i.RadioRead) referenced from radio.o(.constdata)
  - RadioReadBuffer from radio.o(i.RadioReadBuffer) referenced from radio.o(.constdata)
  - RadioRssi from radio.o(i.RadioRssi) referenced from radio.o(.constdata)
  - RadioRx from radio.o(i.RadioRx) referenced from radio.o(.constdata)
  - RadioRxBoosted from radio.o(i.RadioRxBoosted) referenced from radio.o(.constdata)
  - RadioSend from radio.o(i.RadioSend) referenced from radio.o(.constdata)
  - RadioSetChannel from radio.o(i.RadioSetChannel) referenced from radio.o(.constdata)
  - RadioSetMaxPayloadLength from radio.o(i.RadioSetMaxPayloadLength) referenced from radio.o(.constdata)
  - RadioSetModem from radio.o(i.RadioSetModem) referenced from radio.o(.constdata)
  - RadioSetPublicNetwork from radio.o(i.RadioSetPublicNetwork) referenced from radio.o(.constdata)
  - RadioSetRxConfig from radio.o(i.RadioSetRxConfig) referenced from radio.o(.constdata)
  - RadioSetRxDutyCycle from radio.o(i.RadioSetRxDutyCycle) referenced from radio.o(.constdata)
  - RadioSetStopRxTimerOnPreambleDetect from radio.o(i.RadioSetStopRxTimerOnPreambleDetect) referenced from radio.o(.constdata)
  - RadioSetTxConfig from radio.o(i.RadioSetTxConfig) referenced from radio.o(.constdata)
  - RadioSetTxContinuousWave from radio.o(i.RadioSetTxContinuousWave) referenced from radio.o(.constdata)
  - RadioSleep from radio.o(i.RadioSleep) referenced from radio.o(.constdata)
  - RadioStandby from radio.o(i.RadioStandby) referenced from radio.o(.constdata)
  - RadioStartCad from radio.o(i.RadioStartCad) referenced from radio.o(.constdata)
  - RadioTimeOnAir from radio.o(i.RadioTimeOnAir) referenced from radio.o(.constdata)
  - RadioWrite from radio.o(i.RadioWrite) referenced from radio.o(.constdata)
  - RadioWriteBuffer from radio.o(i.RadioWriteBuffer) referenced from radio.o(.constdata)
  - Reset_Handler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - SDIO_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - SPI1_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - SPI2_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - SPI3_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - SVC_Handler from stm32f10x_it.o(i.SVC_Handler) referenced from startup_stm32f10x_hd.o(RESET)
  - SX126xOnCadDone from sx126x_cmd_process.o(i.SX126xOnCadDone) referenced from sx126x_cmd_process.o(i.SX126xRadioInit)
  - SX126xOnRxDone from sx126x_cmd_process.o(i.SX126xOnRxDone) referenced from sx126x_cmd_process.o(i.SX126xRadioInit)
  - SX126xOnRxError from sx126x_cmd_process.o(i.SX126xOnRxError) referenced from sx126x_cmd_process.o(i.SX126xRadioInit)
  - SX126xOnRxTimeout from sx126x_cmd_process.o(i.SX126xOnRxTimeout) referenced from sx126x_cmd_process.o(i.SX126xRadioInit)
  - SX126xOnTxDone from sx126x_cmd_process.o(i.SX126xOnTxDone) referenced from sx126x_cmd_process.o(i.SX126xRadioInit)
  - SX126xOnTxTimeout from sx126x_cmd_process.o(i.SX126xOnTxTimeout) referenced from sx126x_cmd_process.o(i.SX126xRadioInit)
  - SX126xRxPreambleDetect from sx126x_cmd_process.o(i.SX126xRxPreambleDetect) referenced from sx126x_cmd_process.o(i.SX126xRadioInit)
  - SysTick_Handler from stm32f10x_it.o(i.SysTick_Handler) referenced from startup_stm32f10x_hd.o(RESET)
  - SystemInit from system_stm32f10x.o(i.SystemInit) referenced from startup_stm32f10x_hd.o(.text)
  - TAMPER_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - TIM1_BRK_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - TIM1_CC_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - TIM1_TRG_COM_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - TIM1_UP_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - TIM2_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - TIM3_IRQHandler from sx126xstm32f103-board.o(i.TIM3_IRQHandler) referenced from startup_stm32f10x_hd.o(RESET)
  - TIM4_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - TIM5_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - TIM6_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - TIM7_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - TIM8_BRK_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - TIM8_CC_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - TIM8_TRG_COM_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - TIM8_UP_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - UART4_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - UART5_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - USART1_IRQHandler from hal_uart.o(i.USART1_IRQHandler) referenced from startup_stm32f10x_hd.o(RESET)
  - USART2_IRQHandler from hal_uart.o(i.USART2_IRQHandler) referenced from startup_stm32f10x_hd.o(RESET)
  - USART3_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - USBWakeUp_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - USB_HP_CAN1_TX_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - USB_LP_CAN1_RX0_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - UsageFault_Handler from stm32f10x_it.o(i.UsageFault_Handler) referenced from startup_stm32f10x_hd.o(RESET)
  - WWDG_IRQHandler from startup_stm32f10x_hd.o(.text) referenced from startup_stm32f10x_hd.o(RESET)
  - __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup_stm32f10x_hd.o(.text)
  - _sbackspace from _sgetc.o(.text) referenced 2 times from __0sscanf.o(.text)
  - _scanf_char_input from scanf_char.o(.text) referenced from scanf_char.o(.text)
  - _sgetc from _sgetc.o(.text) referenced 2 times from __0sscanf.o(.text)
  - _snputc from printfa.o(i._snputc) referenced from printfa.o(i.__0snprintf)
  - _sputc from printfa.o(i._sputc) referenced from printfa.o(i.__0sprintf)
  - fputc from hal_uart.o(i.fputc) referenced from printfa.o(i.__0printf)
  - free from mallocr.o(i.__free$realloc) referenced from cjson.o(.data)
  - isspace from isspace_o.o(.text) referenced 2 times from scanf_char.o(.text)
  - main from main.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B)
  - malloc from mallocr.o(i.__malloc$realloc) referenced from cjson.o(.data)
  - realloc from mallocr.o(i.realloc) referenced from cjson.o(.data)

  ### Global Symbols

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

  - startup_stm32f10x_hd.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 (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_lib_shutdown_fini (Thumb, 0 bytes, Stack size unknown bytes, entry12b.o(.ARM.Collect$$$$0000000E))

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

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

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

  - startup_stm32f10x_hd.o(RESET)

  ADC1_2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_hd.o(.text))
  [Calls]

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

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

  tolower (Thumb, 12 bytes, Stack size 0 bytes, tolower.o(.text))
  [Called By]

  - >> case_insensitive_strcmp

  __aeabi_memcpy (Thumb, 36 bytes, Stack size 0 bytes, memcpya.o(.text))
  [Called By]

  - >> print_value
  - >> print_string_ptr
  - >> print
  - >> ensure
  - >> cJSON_strdup
  - >> sx126x_cmd_process
  - >> internal_alloc

  __aeabi_memcpy4 (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED)

  __aeabi_memcpy8 (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED)

  __aeabi_memset (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text))
  [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))
  [Calls]

  - >> __aeabi_memset
  [Called By]
  - >> tb05_data_proccess
  - >> HALUart2Init
  - >> respone_data_process

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

  - >> sx126x_init_process
  - >> SX126xGetPacketStatus
  - >> cJSON_ParseWithLengthOpts
  - >> print_number
  - >> print
  - >> cJSON_New_Item
  - >> tb05_status_respone
  - >> radio_status_upload
  - >> tb05_radio_respone

  __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

  strstr (Thumb, 36 bytes, Stack size 12 bytes, strstr.o(.text))
  [Stack]

  - Max Depth = 12
  - Call Chain = strstr
  [Called By]
  - >> respone_data_process

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

  - >> tb05_data_proccess
  - >> cJSON_ParseWithOpts
  - >> update_offset
  - >> print_value
  - >> cJSON_strdup
  - >> tb05_status_respone
  - >> radio_status_upload
  - >> radio_setting_update
  - >> sx126x_cmd_process

  strcmp (Thumb, 28 bytes, Stack size 8 bytes, strcmp.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = strcmp
  [Called By]
  - >> get_object_item

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

  - >> print_value
  - >> print_string_ptr

  strncmp (Thumb, 30 bytes, Stack size 12 bytes, strncmp.o(.text))
  [Stack]

  - Max Depth = 12
  - Call Chain = strncmp
  [Called By]
  - >> skip_utf8_bom
  - >> parse_value

  __0sscanf (Thumb, 48 bytes, Stack size 72 bytes, __0sscanf.o(.text))
  [Stack]

  - Max Depth = 264
  - Call Chain = __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_real
  [Calls]
  - >> __vfscanf_char
  [Called By]
  - >> print_number

  _scanf_real (Thumb, 0 bytes, Stack size 104 bytes, scanf_fp.o(.text))
  [Stack]

  - Max Depth = 104
  - Call Chain = _scanf_real
  [Called By]
  - >> __vfscanf
  - >> _local_sscanf

  _scanf_really_real (Thumb, 556 bytes, Stack size 104 bytes, scanf_fp.o(.text), UNUSED)
  [Calls]

  - >> __aeabi_d2f
  - >> _is_digit
  - >> _fp_value

  atol (Thumb, 26 bytes, Stack size 16 bytes, atol.o(.text))
  [Stack]

  - Max Depth = 88
  - Call Chain = atol ⇒ strtol ⇒ _strtoul
  [Calls]
  - >> strtol
  - >> __aeabi_errno_addr
  [Called By]
  - >> sx126x_cmd_process

  __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]
  - >> radio_status_upload

  __aeabi_dadd (Thumb, 322 bytes, Stack size 48 bytes, dadd.o(.text))
  [Stack]

  - Max Depth = 88
  - Call Chain = __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_lasr
  - >> __aeabi_llsl
  - >> _double_round
  - >> _double_epilogue
  [Called By]
  - >> __aeabi_dsub
  - >> _fp_digits
  - >> __aeabi_drsub

  __aeabi_dsub (Thumb, 6 bytes, Stack size 0 bytes, dadd.o(.text))
  [Stack]

  - Max Depth = 88
  - Call Chain = __aeabi_dsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_dadd
  [Called By]
  - >> compare_double

  __aeabi_drsub (Thumb, 6 bytes, Stack size 0 bytes, dadd.o(.text), UNUSED)
  [Calls]

  - >> __aeabi_dadd

  __aeabi_dmul (Thumb, 228 bytes, Stack size 48 bytes, dmul.o(.text))
  [Stack]

  - Max Depth = 88
  - Call Chain = __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> _double_epilogue
  [Called By]
  - >> compare_double
  - >> _fp_digits
  - >> _fp_value

  __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]
  - >> radio_status_upload

  __aeabi_i2d (Thumb, 34 bytes, Stack size 16 bytes, dflti.o(.text))
  [Stack]

  - Max Depth = 56
  - Call Chain = __aeabi_i2d ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> _double_epilogue
  [Called By]
  - >> radio_setting_update

  __aeabi_ui2d (Thumb, 26 bytes, Stack size 16 bytes, dfltui.o(.text))
  [Stack]

  - Max Depth = 56
  - Call Chain = __aeabi_ui2d ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> _double_epilogue
  [Called By]
  - >> radio_setting_update

  __aeabi_d2iz (Thumb, 62 bytes, Stack size 16 bytes, dfixi.o(.text))
  [Stack]

  - Max Depth = 16
  - Call Chain = __aeabi_d2iz
  [Calls]
  - >> __aeabi_llsr
  [Called By]
  - >> cJSON_CreateNumber
  - >> parse_number

  __aeabi_f2d (Thumb, 38 bytes, Stack size 0 bytes, f2d.o(.text))
  [Called By]

  - >> radio_status_upload

  __aeabi_cdcmpeq (Thumb, 0 bytes, Stack size 0 bytes, cdcmple.o(.text), UNUSED)

  __aeabi_cdcmple (Thumb, 48 bytes, Stack size 0 bytes, cdcmple.o(.text))
  [Called By]

  - >> cJSON_CreateNumber
  - >> parse_number
  - >> compare_double

  __aeabi_cdrcmple (Thumb, 48 bytes, Stack size 0 bytes, cdrcmple.o(.text))
  [Called By]

  - >> cJSON_CreateNumber
  - >> parse_number
  - >> compare_double
  - >> _fp_digits

  __aeabi_uidiv (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED)

  __aeabi_uidivmod (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED)
  [Called By]

  - >> _printf_core

  __aeabi_uldivmod (Thumb, 98 bytes, Stack size 40 bytes, uldiv.o(.text), UNUSED)
  [Calls]

  - >> __aeabi_llsr
  - >> __aeabi_llsl
  [Called By]
  - >> _printf_core
  - >> _fp_digits

  __aeabi_llsl (Thumb, 30 bytes, Stack size 0 bytes, llshl.o(.text))
  [Called By]

  - >> __aeabi_uldivmod
  - >> _double_epilogue
  - >> __aeabi_dadd
  - >> __aeabi_d2ulz

  _ll_shift_l (Thumb, 0 bytes, Stack size 0 bytes, llshl.o(.text), UNUSED)

  __aeabi_llsr (Thumb, 32 bytes, Stack size 0 bytes, llushr.o(.text))
  [Called By]

  - >> __aeabi_d2iz
  - >> __aeabi_uldivmod
  - >> _double_epilogue
  - >> __aeabi_d2ulz

  _ll_ushift_r (Thumb, 0 bytes, Stack size 0 bytes, llushr.o(.text), UNUSED)

  __aeabi_lasr (Thumb, 36 bytes, Stack size 0 bytes, llsshr.o(.text))
  [Called By]

  - >> __aeabi_dadd

  _ll_sshift_r (Thumb, 0 bytes, Stack size 0 bytes, llsshr.o(.text), UNUSED)

  __vfscanf_char (Thumb, 20 bytes, Stack size 0 bytes, scanf_char.o(.text))
  [Stack]

  - Max Depth = 192
  - Call Chain = __vfscanf_char ⇒ __vfscanf ⇒ _scanf_real
  [Calls]
  - >> __vfscanf
  [Called By]
  - >> __0sscanf

  _sgetc (Thumb, 30 bytes, Stack size 0 bytes, _sgetc.o(.text))
  [Address Reference Count : 2]

  - __0sscanf.o(.text)
  - strtod.o(.text)

  _sbackspace (Thumb, 34 bytes, Stack size 0 bytes, _sgetc.o(.text))
  [Address Reference Count : 2]

  - __0sscanf.o(.text)
  - strtod.o(.text)

  __strtod_int (Thumb, 90 bytes, Stack size 40 bytes, strtod.o(.text))
  [Stack]

  - Max Depth = 200
  - Call Chain = __strtod_int ⇒ _local_sscanf ⇒ _scanf_real
  [Calls]
  - >> _local_sscanf
  [Called By]
  - >> strtod

  strtol (Thumb, 112 bytes, Stack size 32 bytes, strtol.o(.text))
  [Stack]

  - Max Depth = 72
  - Call Chain = strtol ⇒ _strtoul
  [Calls]
  - >> _strtoul
  - >> __rt_ctype_table
  - >> __aeabi_errno_addr
  [Called By]
  - >> atol

  __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_d2f

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

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

  _double_round (Thumb, 30 bytes, Stack size 8 bytes, depilogue.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = _double_round
  [Called By]
  - >> _double_epilogue
  - >> __aeabi_ddiv
  - >> __aeabi_dadd

  _double_epilogue (Thumb, 156 bytes, Stack size 32 bytes, depilogue.o(.text))
  [Stack]

  - Max Depth = 40
  - Call Chain = _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_llsr
  - >> __aeabi_llsl
  - >> _double_round
  [Called By]
  - >> __aeabi_i2d
  - >> __aeabi_dmul
  - >> __aeabi_ui2d
  - >> __aeabi_ul2d
  - >> __aeabi_dadd

  __aeabi_ddiv (Thumb, 222 bytes, Stack size 32 bytes, ddiv.o(.text), UNUSED)
  [Calls]

  - >> _double_round
  [Called By]
  - >> _fp_digits
  - >> _fp_value

  __aeabi_ul2d (Thumb, 24 bytes, Stack size 16 bytes, dfltul.o(.text), UNUSED)
  [Calls]

  - >> _double_epilogue
  [Called By]
  - >> _fp_value

  __aeabi_d2ulz (Thumb, 48 bytes, Stack size 0 bytes, dfixul.o(.text), UNUSED)
  [Calls]

  - >> __aeabi_llsr
  - >> __aeabi_llsl
  [Called By]
  - >> _fp_digits

  __aeabi_d2f (Thumb, 56 bytes, Stack size 8 bytes, d2f.o(.text), UNUSED)
  [Calls]

  - >> _float_round
  [Called By]
  - >> _scanf_really_real

  __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)

  __rt_ctype_table (Thumb, 4 bytes, Stack size 0 bytes, ctype_o.o(.text))
  [Called By]

  - >> isspace
  - >> strtol

  isspace (Thumb, 18 bytes, Stack size 8 bytes, isspace_o.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = isspace
  [Calls]
  - >> __rt_ctype_table
  [Address Reference Count : 2]
  - scanf_char.o(.text)
  - strtod.o(.text)

  __vfscanf (Thumb, 810 bytes, Stack size 88 bytes, _scanf.o(.text))
  [Stack]

  - Max Depth = 192
  - Call Chain = __vfscanf ⇒ _scanf_real
  [Calls]
  - >> _scanf_real
  [Called By]
  - >> __vfscanf_char

  _strtoul (Thumb, 158 bytes, Stack size 40 bytes, _strtoul.o(.text))
  [Stack]

  - Max Depth = 40
  - Call Chain = _strtoul
  [Calls]
  - >> _chval
  - >> __aeabi_errno_addr
  [Called By]
  - >> strtol

  _chval (Thumb, 28 bytes, Stack size 0 bytes, _chval.o(.text))
  [Called By]

  - >> _strtoul

  BusFault_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f10x_it.o(i.BusFault_Handler))
  [Address Reference Count : 1]

  - startup_stm32f10x_hd.o(RESET)

  ChipID_Get (Thumb, 24 bytes, Stack size 0 bytes, chip_id.o(i.ChipID_Get))
  [Called By]

  - >> tb05_data_proccess

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

  - startup_stm32f10x_hd.o(RESET)

  EXTI1_IRQHandler (Thumb, 46 bytes, Stack size 8 bytes, sx126xstm32f103-board.o(i.EXTI1_IRQHandler))
  [Stack]

  - Max Depth = 32
  - Call Chain = EXTI1_IRQHandler ⇒ __2printf
  [Calls]
  - >> GPIO_ReadInputDataBit
  - >> EXTI_ClearITPendingBit
  - >> __2printf
  [Address Reference Count : 1]
  - startup_stm32f10x_hd.o(RESET)

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

  - >> SX126xIoIrqInit
  - >> EXTI1_IRQHandler

  EXTI_Init (Thumb, 142 bytes, Stack size 0 bytes, stm32f10x_exti.o(i.EXTI_Init))
  [Called By]

  - >> SX126xIoIrqInit

  GPIO_EXTILineConfig (Thumb, 60 bytes, Stack size 12 bytes, stm32f10x_gpio.o(i.GPIO_EXTILineConfig))
  [Stack]

  - Max Depth = 12
  - Call Chain = GPIO_EXTILineConfig
  [Called By]
  - >> SX126xIoIrqInit

  GPIO_Init (Thumb, 278 bytes, Stack size 24 bytes, stm32f10x_gpio.o(i.GPIO_Init))
  [Stack]

  - Max Depth = 24
  - Call Chain = GPIO_Init
  [Called By]
  - >> HALUart2Init
  - >> HALUart1Init
  - >> Spi1Init
  - >> SX126xReset
  - >> SX126xIoIrqInit
  - >> SX126xIoInit
  - >> SX126x_LED_init
  - >> Ra03sch_TxMode_Set
  - >> Ra03sch_RxMode_Set
  - >> tb05_reset_init

  GPIO_PinRemapConfig (Thumb, 138 bytes, Stack size 20 bytes, stm32f10x_gpio.o(i.GPIO_PinRemapConfig))
  [Stack]

  - Max Depth = 20
  - Call Chain = GPIO_PinRemapConfig
  [Called By]
  - >> SysInit

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

  - >> SX126xWaitOnBusy
  - >> EXTI1_IRQHandler

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

  - >> tb05_data_proccess
  - >> SX126xSetNss
  - >> tb05_reset

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

  - >> tb05_data_proccess
  - >> Spi1Init
  - >> SX126xSetNss
  - >> tb05_reset

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

  - >> LoRa_IRQ_Handle
  - >> SX126xReset
  - >> SX126x_LED_init

  HALSpi1InOut (Thumb, 82 bytes, Stack size 16 bytes, hal_spi.o(i.HALSpi1InOut))
  [Stack]

  - Max Depth = 16
  - Call Chain = HALSpi1InOut
  [Calls]
  - >> SPI_I2S_SendData
  - >> SPI_I2S_ReceiveData
  - >> SPI_I2S_GetFlagStatus
  [Called By]
  - >> SX126xSpiInOut

  HALUart1Init (Thumb, 164 bytes, Stack size 32 bytes, hal_uart.o(i.HALUart1Init))
  [Stack]

  - Max Depth = 100
  - Call Chain = HALUart1Init ⇒ USART_Init ⇒ RCC_GetClocksFreq
  [Calls]
  - >> GPIO_Init
  - >> NVIC_Init
  - >> RCC_APB2PeriphClockCmd
  - >> USART_Init
  - >> USART_ITConfig
  - >> USART_DeInit
  - >> USART_Cmd
  [Called By]
  - >> SysInit

  HALUart2Init (Thumb, 182 bytes, Stack size 32 bytes, hal_uart.o(i.HALUart2Init))
  [Stack]

  - Max Depth = 100
  - Call Chain = HALUart2Init ⇒ USART_Init ⇒ RCC_GetClocksFreq
  [Calls]
  - >> GPIO_Init
  - >> NVIC_Init
  - >> RCC_APB2PeriphClockCmd
  - >> RCC_APB1PeriphClockCmd
  - >> USART_Init
  - >> USART_ITConfig
  - >> USART_Cmd
  - >> __aeabi_memclr
  [Called By]
  - >> SysInit

  HardFault_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f10x_it.o(i.HardFault_Handler))
  [Address Reference Count : 1]

  - startup_stm32f10x_hd.o(RESET)

  LoRa_IRQ_Handle (Thumb, 246 bytes, Stack size 8 bytes, sx126x_cmd_process.o(i.LoRa_IRQ_Handle))
  [Stack]

  - Max Depth = 8
  - Call Chain = LoRa_IRQ_Handle
  [Calls]
  - >> GPIO_WriteBit
  [Called By]
  - >> main

  MemManage_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f10x_it.o(i.MemManage_Handler))
  [Address Reference Count : 1]

  - startup_stm32f10x_hd.o(RESET)

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

  - startup_stm32f10x_hd.o(RESET)

  NVIC_Init (Thumb, 100 bytes, Stack size 16 bytes, misc.o(i.NVIC_Init))
  [Stack]

  - Max Depth = 16
  - Call Chain = NVIC_Init
  [Called By]
  - >> HALUart2Init
  - >> HALUart1Init
  - >> SX126xTimerInit
  - >> SX126xIoIrqInit

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

  - >> SysInit

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

  - startup_stm32f10x_hd.o(RESET)

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

  - >> HALUart2Init
  - >> SX126xTimerInit

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

  - >> USART_DeInit

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

  - >> HALUart2Init
  - >> HALUart1Init
  - >> SysInit
  - >> Spi1Init
  - >> SX126xReset
  - >> SX126xIoIrqInit
  - >> SX126xIoInit
  - >> SX126x_LED_init
  - >> Ra03sch_TxMode_Set
  - >> Ra03sch_RxMode_Set
  - >> tb05_reset_init

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

  - >> USART_DeInit

  RCC_GetClocksFreq (Thumb, 192 bytes, Stack size 12 bytes, stm32f10x_rcc.o(i.RCC_GetClocksFreq))
  [Stack]

  - Max Depth = 12
  - Call Chain = RCC_GetClocksFreq
  [Called By]
  - >> USART_Init

  RadioCheckRfFrequency (Thumb, 6 bytes, Stack size 0 bytes, radio.o(i.RadioCheckRfFrequency))
  [Address Reference Count : 1]

  - radio.o(.constdata)

  RadioGetStatus (Thumb, 36 bytes, Stack size 4 bytes, radio.o(i.RadioGetStatus))
  [Stack]

  - Max Depth = 4
  - Call Chain = RadioGetStatus
  [Calls]
  - >> SX126xGetOperatingMode
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioGetWakeupTime (Thumb, 10 bytes, Stack size 4 bytes, radio.o(i.RadioGetWakeupTime))
  [Stack]

  - Max Depth = 4
  - Call Chain = RadioGetWakeupTime
  [Calls]
  - >> SX126xGetBoardTcxoWakeupTime
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioInit (Thumb, 72 bytes, Stack size 8 bytes, radio.o(i.RadioInit))
  [Stack]

  - Max Depth = 128
  - Call Chain = RadioInit ⇒ SX126xSetTxParams ⇒ SX126xSetPaConfig ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xTimerInit
  - >> SX126xIoInit
  - >> SX126xSetTxParams
  - >> SX126xSetStandby
  - >> SX126xSetRegulatorMode
  - >> SX126xSetDioIrqParams
  - >> SX126xSetBufferBaseAddress
  - >> SX126xInit
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioIrqProcess (Thumb, 440 bytes, Stack size 16 bytes, radio.o(i.RadioIrqProcess))
  [Stack]

  - Max Depth = 144
  - Call Chain = RadioIrqProcess ⇒ SX126xGetPayload ⇒ SX126xGetRxBufferStatus ⇒ SX126xReadRegister ⇒ SX126xReadRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xTxTimerStop
  - >> SX126xRxTimerStop
  - >> SX126xGetPayload
  - >> SX126xGetPacketStatus
  - >> SX126xGetIrqStatus
  - >> SX126xClearIrqStatus
  - >> SX126xWriteRegister
  - >> SX126xSetOperatingMode
  - >> SX126xReadRegister
  - >> SX126xGetOperatingMode
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioIsChannelFree (Thumb, 136 bytes, Stack size 72 bytes, radio.o(i.RadioIsChannelFree))
  [Stack]

  - Max Depth = 240
  - Call Chain = RadioIsChannelFree ⇒ RadioSetRxConfig ⇒ SX126xSetPacketParams ⇒ SX126xSetCrcSeed ⇒ SX126xWriteRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xDelayMs
  - >> RadioSleep
  - >> RadioSetRxConfig
  - >> RadioSetModem
  - >> RadioSetChannel
  - >> RadioRx
  - >> RadioRssi
  [Address Reference Count : 1]
  - radio.o(.constdata)

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

  - radio.o(i.RadioInit)

  RadioOnRxTimeoutIrq (Thumb, 28 bytes, Stack size 8 bytes, radio.o(i.RadioOnRxTimeoutIrq))
  [Stack]

  - Max Depth = 8
  - Call Chain = RadioOnRxTimeoutIrq
  [Called By]
  - >> TIM3_IRQHandler

  RadioOnTxTimeoutIrq (Thumb, 28 bytes, Stack size 8 bytes, radio.o(i.RadioOnTxTimeoutIrq))
  [Stack]

  - Max Depth = 8
  - Call Chain = RadioOnTxTimeoutIrq
  [Called By]
  - >> TIM3_IRQHandler

  RadioRandom (Thumb, 32 bytes, Stack size 8 bytes, radio.o(i.RadioRandom))
  [Stack]

  - Max Depth = 112
  - Call Chain = RadioRandom ⇒ SX126xSetDioIrqParams ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xSetDioIrqParams
  - >> SX126xGetRandom
  - >> RadioSetModem
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioReInit (Thumb, 50 bytes, Stack size 8 bytes, radio.o(i.RadioReInit))
  [Stack]

  - Max Depth = 128
  - Call Chain = RadioReInit ⇒ SX126xSetTxParams ⇒ SX126xSetPaConfig ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xSetTxParams
  - >> SX126xSetStandby
  - >> SX126xSetRegulatorMode
  - >> SX126xSetDioIrqParams
  - >> SX126xSetBufferBaseAddress
  - >> SX126Reinit
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioRead (Thumb, 12 bytes, Stack size 8 bytes, radio.o(i.RadioRead))
  [Stack]

  - Max Depth = 96
  - Call Chain = RadioRead ⇒ SX126xReadRegister ⇒ SX126xReadRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xReadRegister
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioReadBuffer (Thumb, 20 bytes, Stack size 16 bytes, radio.o(i.RadioReadBuffer))
  [Stack]

  - Max Depth = 88
  - Call Chain = RadioReadBuffer ⇒ SX126xReadRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xReadRegisters
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioRssi (Thumb, 10 bytes, Stack size 8 bytes, radio.o(i.RadioRssi))
  [Stack]

  - Max Depth = 96
  - Call Chain = RadioRssi ⇒ SX126xGetRssiInst ⇒ SX126xReadCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xGetRssiInst
  [Called By]
  - >> RadioIsChannelFree
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioRx (Thumb, 60 bytes, Stack size 8 bytes, radio.o(i.RadioRx))
  [Stack]

  - Max Depth = 112
  - Call Chain = RadioRx ⇒ SX126xSetDioIrqParams ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xSetRxTimerValue
  - >> SX126xRxTimerStart
  - >> SX126xSetRx
  - >> SX126xSetDioIrqParams
  [Called By]
  - >> RadioIsChannelFree
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioRxBoosted (Thumb, 60 bytes, Stack size 8 bytes, radio.o(i.RadioRxBoosted))
  [Stack]

  - Max Depth = 112
  - Call Chain = RadioRxBoosted ⇒ SX126xSetRxBoosted ⇒ SX126xWriteRegister ⇒ SX126xWriteRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xSetRxTimerValue
  - >> SX126xRxTimerStart
  - >> SX126xSetRxBoosted
  - >> SX126xSetDioIrqParams
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioSend (Thumb, 68 bytes, Stack size 16 bytes, radio.o(i.RadioSend))
  [Stack]

  - Max Depth = 136
  - Call Chain = RadioSend ⇒ SX126xSetPacketParams ⇒ SX126xSetCrcSeed ⇒ SX126xWriteRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xTxTimerStart
  - >> SX126xSetTxTimerValue
  - >> SX126xSetPacketParams
  - >> SX126xSetDioIrqParams
  - >> SX126xSendPayload
  - >> SX126xGetPacketType
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioSetChannel (Thumb, 12 bytes, Stack size 8 bytes, radio.o(i.RadioSetChannel))
  [Stack]

  - Max Depth = 112
  - Call Chain = RadioSetChannel ⇒ SX126xSetRfFrequency ⇒ SX126xCalibrateImage ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xSetRfFrequency
  [Called By]
  - >> RadioIsChannelFree
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioSetMaxPayloadLength (Thumb, 46 bytes, Stack size 16 bytes, radio.o(i.RadioSetMaxPayloadLength))
  [Stack]

  - Max Depth = 136
  - Call Chain = RadioSetMaxPayloadLength ⇒ SX126xSetPacketParams ⇒ SX126xSetCrcSeed ⇒ SX126xWriteRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xSetPacketParams
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioSetModem (Thumb, 64 bytes, Stack size 8 bytes, radio.o(i.RadioSetModem))
  [Stack]

  - Max Depth = 104
  - Call Chain = RadioSetModem ⇒ RadioSetPublicNetwork ⇒ RadioSetModem (Cycle)
  [Calls]
  - >> SX126xSetPacketType
  - >> RadioSetPublicNetwork
  [Called By]
  - >> RadioSetTxConfig
  - >> RadioSetRxConfig
  - >> RadioSetPublicNetwork
  - >> RadioRandom
  - >> RadioIsChannelFree
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioSetPublicNetwork (Thumb, 64 bytes, Stack size 8 bytes, radio.o(i.RadioSetPublicNetwork))
  [Stack]

  - Max Depth = 112 + In Cycle
  - Call Chain = RadioSetPublicNetwork ⇒ RadioSetModem (Cycle)
  [Calls]
  - >> SX126xWriteRegister
  - >> RadioSetModem
  [Called By]
  - >> RadioSetModem
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioSetRxConfig (Thumb, 512 bytes, Stack size 48 bytes, radio.o(i.RadioSetRxConfig))
  [Stack]

  - Max Depth = 168
  - Call Chain = RadioSetRxConfig ⇒ SX126xSetPacketParams ⇒ SX126xSetCrcSeed ⇒ SX126xWriteRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xSetWhiteningSeed
  - >> SX126xSetSyncWord
  - >> SX126xSetStopRxTimerOnPreambleDetect
  - >> SX126xSetPacketParams
  - >> SX126xSetModulationParams
  - >> SX126xSetLoRaSymbNumTimeout
  - >> SX126xWriteRegister
  - >> SX126xReadRegister
  - >> RadioStandby
  - >> RadioSetModem
  - >> RadioGetFskBandwidthRegValue
  [Called By]
  - >> RadioIsChannelFree
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioSetRxDutyCycle (Thumb, 16 bytes, Stack size 16 bytes, radio.o(i.RadioSetRxDutyCycle))
  [Stack]

  - Max Depth = 112
  - Call Chain = RadioSetRxDutyCycle ⇒ SX126xSetRxDutyCycle ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xSetRxDutyCycle
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioSetStopRxTimerOnPreambleDetect (Thumb, 12 bytes, Stack size 8 bytes, radio.o(i.RadioSetStopRxTimerOnPreambleDetect))
  [Stack]

  - Max Depth = 88
  - Call Chain = RadioSetStopRxTimerOnPreambleDetect ⇒ SX126xSetStopRxTimerOnPreambleDetect ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xSetStopRxTimerOnPreambleDetect
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioSetTxConfig (Thumb, 444 bytes, Stack size 48 bytes, radio.o(i.RadioSetTxConfig))
  [Stack]

  - Max Depth = 176
  - Call Chain = RadioSetTxConfig ⇒ SX126xSetRfTxPower ⇒ SX126xSetTxParams ⇒ SX126xSetPaConfig ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xSetWhiteningSeed
  - >> SX126xSetSyncWord
  - >> SX126xSetPacketParams
  - >> SX126xSetModulationParams
  - >> SX126xWriteRegister
  - >> SX126xSetRfTxPower
  - >> SX126xReadRegister
  - >> RadioStandby
  - >> RadioSetModem
  - >> RadioGetFskBandwidthRegValue
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioSetTxContinuousWave (Thumb, 48 bytes, Stack size 24 bytes, radio.o(i.RadioSetTxContinuousWave))
  [Stack]

  - Max Depth = 152
  - Call Chain = RadioSetTxContinuousWave ⇒ SX126xSetRfTxPower ⇒ SX126xSetTxParams ⇒ SX126xSetPaConfig ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xTxTimerStart
  - >> SX126xSetTxTimerValue
  - >> SX126xSetTxContinuousWave
  - >> SX126xSetRfFrequency
  - >> SX126xSetRfTxPower
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioSleep (Thumb, 34 bytes, Stack size 8 bytes, radio.o(i.RadioSleep))
  [Stack]

  - Max Depth = 96
  - Call Chain = RadioSleep ⇒ SX126xSetSleep ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xDelayMs
  - >> SX126xSetSleep
  [Called By]
  - >> RadioIsChannelFree
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioStandby (Thumb, 10 bytes, Stack size 8 bytes, radio.o(i.RadioStandby))
  [Stack]

  - Max Depth = 88
  - Call Chain = RadioStandby ⇒ SX126xSetStandby ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xSetStandby
  [Called By]
  - >> RadioSetTxConfig
  - >> RadioSetRxConfig
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioStartCad (Thumb, 22 bytes, Stack size 8 bytes, radio.o(i.RadioStartCad))
  [Stack]

  - Max Depth = 112
  - Call Chain = RadioStartCad ⇒ SX126xSetDioIrqParams ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xSetDioIrqParams
  - >> SX126xSetCad
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioTimeOnAir (Thumb, 118 bytes, Stack size 48 bytes, radio.o(i.RadioTimeOnAir))
  [Stack]

  - Max Depth = 84
  - Call Chain = RadioTimeOnAir ⇒ RadioGetLoRaTimeOnAirNumerator
  [Calls]
  - >> RadioGetLoRaTimeOnAirNumerator
  - >> RadioGetLoRaBandwidthInHz
  - >> RadioGetGfskTimeOnAirNumerator
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioWrite (Thumb, 16 bytes, Stack size 16 bytes, radio.o(i.RadioWrite))
  [Stack]

  - Max Depth = 104
  - Call Chain = RadioWrite ⇒ SX126xWriteRegister ⇒ SX126xWriteRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteRegister
  [Address Reference Count : 1]
  - radio.o(.constdata)

  RadioWriteBuffer (Thumb, 20 bytes, Stack size 16 bytes, radio.o(i.RadioWriteBuffer))
  [Stack]

  - Max Depth = 88
  - Call Chain = RadioWriteBuffer ⇒ SX126xWriteRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteRegisters
  [Address Reference Count : 1]
  - radio.o(.constdata)

  SPI_Cmd (Thumb, 24 bytes, Stack size 0 bytes, stm32f10x_spi.o(i.SPI_Cmd))
  [Called By]

  - >> Spi1Init

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

  - >> HALSpi1InOut

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

  - >> HALSpi1InOut

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

  - >> HALSpi1InOut

  SPI_Init (Thumb, 60 bytes, Stack size 8 bytes, stm32f10x_spi.o(i.SPI_Init))
  [Stack]

  - Max Depth = 8
  - Call Chain = SPI_Init
  [Called By]
  - >> Spi1Init

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

  - startup_stm32f10x_hd.o(RESET)

  SX126Reinit (Thumb, 32 bytes, Stack size 8 bytes, sx126x.o(i.SX126Reinit))
  [Stack]

  - Max Depth = 96
  - Call Chain = SX126Reinit ⇒ SX126xIoRfSwitchInit ⇒ SX126xSetDio2AsRfSwitchCtrl ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xReset
  - >> SX126xSetStandby
  - >> SX126xWakeup
  - >> SX126xSetOperatingMode
  - >> SX126xIoTcxoInit
  - >> SX126xIoRfSwitchInit
  [Called By]
  - >> RadioReInit

  SX126xAntSwOff (Thumb, 2 bytes, Stack size 0 bytes, radio.o(i.SX126xAntSwOff))
  [Called By]

  - >> SX126xSetSleep

  SX126xAntSwOn (Thumb, 2 bytes, Stack size 0 bytes, radio.o(i.SX126xAntSwOn))
  [Called By]

  - >> SX126xCheckDeviceReady

  SX126xCalibrateImage (Thumb, 114 bytes, Stack size 16 bytes, sx126x.o(i.SX126xCalibrateImage))
  [Stack]

  - Max Depth = 88
  - Call Chain = SX126xCalibrateImage ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteCommand
  [Called By]
  - >> SX126xSetRfFrequency

  SX126xCheckDeviceReady (Thumb, 30 bytes, Stack size 8 bytes, sx126x.o(i.SX126xCheckDeviceReady))
  [Stack]

  - Max Depth = 48
  - Call Chain = SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWaitOnBusy
  - >> SX126xWakeup
  - >> SX126xGetOperatingMode
  - >> SX126xAntSwOn
  [Called By]
  - >> SX126xWriteRegisters
  - >> SX126xWriteCommand
  - >> SX126xWriteBuffer
  - >> SX126xReadRegisters
  - >> SX126xReadCommand
  - >> SX126xReadBuffer

  SX126xClearIrqStatus (Thumb, 28 bytes, Stack size 16 bytes, sx126x.o(i.SX126xClearIrqStatus))
  [Stack]

  - Max Depth = 88
  - Call Chain = SX126xClearIrqStatus ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteCommand
  [Called By]
  - >> RadioIrqProcess

  SX126xDelayMs (Thumb, 12 bytes, Stack size 8 bytes, sx126xstm32f103-board.o(i.SX126xDelayMs))
  [Stack]

  - Max Depth = 16
  - Call Chain = SX126xDelayMs ⇒ delay_ms
  [Calls]
  - >> delay_ms
  [Called By]
  - >> SX126xWaitOnBusy
  - >> SX126xReset
  - >> RadioSleep
  - >> RadioIsChannelFree

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

  - >> RadioGetWakeupTime

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

  - >> SX126xSetTxParams

  SX126xGetIrqStatus (Thumb, 26 bytes, Stack size 8 bytes, sx126x.o(i.SX126xGetIrqStatus))
  [Stack]

  - Max Depth = 80
  - Call Chain = SX126xGetIrqStatus ⇒ SX126xReadCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xReadCommand
  [Called By]
  - >> RadioIrqProcess

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

  - >> SX126xCheckDeviceReady
  - >> RadioIrqProcess
  - >> RadioGetStatus

  SX126xGetPacketStatus (Thumb, 134 bytes, Stack size 16 bytes, sx126x.o(i.SX126xGetPacketStatus))
  [Stack]

  - Max Depth = 88
  - Call Chain = SX126xGetPacketStatus ⇒ SX126xReadCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xGetPacketType
  - >> SX126xReadCommand
  - >> __aeabi_memclr4
  [Called By]
  - >> RadioIrqProcess

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

  - >> SX126xSetWhiteningSeed
  - >> SX126xGetPacketStatus
  - >> RadioSend
  - >> SX126xSetCrcSeed
  - >> SX126xSetCrcPolynomial
  - >> SX126xGetRxBufferStatus

  SX126xGetPayload (Thumb, 46 bytes, Stack size 24 bytes, sx126x.o(i.SX126xGetPayload))
  [Stack]

  - Max Depth = 128
  - Call Chain = SX126xGetPayload ⇒ SX126xGetRxBufferStatus ⇒ SX126xReadRegister ⇒ SX126xReadRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xReadBuffer
  - >> SX126xGetRxBufferStatus
  [Called By]
  - >> RadioIrqProcess

  SX126xGetRandom (Thumb, 104 bytes, Stack size 16 bytes, sx126x.o(i.SX126xGetRandom))
  [Stack]

  - Max Depth = 104
  - Call Chain = SX126xGetRandom ⇒ SX126xSetRx ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xSetStandby
  - >> SX126xSetRx
  - >> SX126xWriteRegister
  - >> SX126xReadRegisters
  - >> SX126xReadRegister
  [Called By]
  - >> RadioRandom

  SX126xGetRssiInst (Thumb, 28 bytes, Stack size 16 bytes, sx126x.o(i.SX126xGetRssiInst))
  [Stack]

  - Max Depth = 88
  - Call Chain = SX126xGetRssiInst ⇒ SX126xReadCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xReadCommand
  [Called By]
  - >> RadioRssi

  SX126xGetRxBufferStatus (Thumb, 58 bytes, Stack size 16 bytes, sx126x.o(i.SX126xGetRxBufferStatus))
  [Stack]

  - Max Depth = 104
  - Call Chain = SX126xGetRxBufferStatus ⇒ SX126xReadRegister ⇒ SX126xReadRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xGetPacketType
  - >> SX126xReadRegister
  - >> SX126xReadCommand
  [Called By]
  - >> SX126xGetPayload

  SX126xInit (Thumb, 40 bytes, Stack size 8 bytes, sx126x.o(i.SX126xInit))
  [Stack]

  - Max Depth = 96
  - Call Chain = SX126xInit ⇒ SX126xIoRfSwitchInit ⇒ SX126xSetDio2AsRfSwitchCtrl ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xReset
  - >> SX126xIoIrqInit
  - >> SX126xSetStandby
  - >> SX126xWakeup
  - >> SX126xSetOperatingMode
  - >> SX126xIoTcxoInit
  - >> SX126xIoRfSwitchInit
  [Called By]
  - >> RadioInit

  SX126xIoInit (Thumb, 62 bytes, Stack size 16 bytes, sx126xstm32f103-board.o(i.SX126xIoInit))
  [Stack]

  - Max Depth = 72
  - Call Chain = SX126xIoInit ⇒ Spi1Init ⇒ GPIO_Init
  [Calls]
  - >> GPIO_Init
  - >> RCC_APB2PeriphClockCmd
  - >> Spi1Init
  - >> __2printf
  [Called By]
  - >> RadioInit

  SX126xIoIrqInit (Thumb, 126 bytes, Stack size 24 bytes, sx126xstm32f103-board.o(i.SX126xIoIrqInit))
  [Stack]

  - Max Depth = 48
  - Call Chain = SX126xIoIrqInit ⇒ GPIO_Init
  [Calls]
  - >> GPIO_Init
  - >> GPIO_EXTILineConfig
  - >> NVIC_Init
  - >> RCC_APB2PeriphClockCmd
  - >> EXTI_Init
  - >> EXTI_ClearITPendingBit
  [Called By]
  - >> SX126xInit

  SX126xIoRfSwitchInit (Thumb, 10 bytes, Stack size 8 bytes, radio.o(i.SX126xIoRfSwitchInit))
  [Stack]

  - Max Depth = 88
  - Call Chain = SX126xIoRfSwitchInit ⇒ SX126xSetDio2AsRfSwitchCtrl ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xSetDio2AsRfSwitchCtrl
  [Called By]
  - >> SX126xInit
  - >> SX126Reinit

  SX126xIoTcxoInit (Thumb, 2 bytes, Stack size 0 bytes, radio.o(i.SX126xIoTcxoInit))
  [Called By]

  - >> SX126xInit
  - >> SX126Reinit

  SX126xReadBuffer (Thumb, 74 bytes, Stack size 24 bytes, radio.o(i.SX126xReadBuffer))
  [Stack]

  - Max Depth = 72
  - Call Chain = SX126xReadBuffer ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWaitOnBusy
  - >> SX126xSpiInOut
  - >> SX126xSetNss
  - >> SX126xCheckDeviceReady
  [Called By]
  - >> SX126xGetPayload

  SX126xReadCommand (Thumb, 76 bytes, Stack size 24 bytes, radio.o(i.SX126xReadCommand))
  [Stack]

  - Max Depth = 72
  - Call Chain = SX126xReadCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWaitOnBusy
  - >> SX126xSpiInOut
  - >> SX126xSetNss
  - >> SX126xCheckDeviceReady
  [Called By]
  - >> SX126xGetRssiInst
  - >> SX126xGetPacketStatus
  - >> SX126xGetIrqStatus
  - >> SX126xGetRxBufferStatus

  SX126xReadRegister (Thumb, 20 bytes, Stack size 16 bytes, radio.o(i.SX126xReadRegister))
  [Stack]

  - Max Depth = 88
  - Call Chain = SX126xReadRegister ⇒ SX126xReadRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xReadRegisters
  [Called By]
  - >> SX126xSetWhiteningSeed
  - >> SX126xSetTxParams
  - >> SX126xGetRandom
  - >> RadioSetTxConfig
  - >> RadioSetRxConfig
  - >> RadioRead
  - >> RadioIrqProcess
  - >> SX126xGetRxBufferStatus

  SX126xReadRegisters (Thumb, 80 bytes, Stack size 24 bytes, radio.o(i.SX126xReadRegisters))
  [Stack]

  - Max Depth = 72
  - Call Chain = SX126xReadRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWaitOnBusy
  - >> SX126xSpiInOut
  - >> SX126xSetNss
  - >> SX126xCheckDeviceReady
  [Called By]
  - >> SX126xGetRandom
  - >> SX126xReadRegister
  - >> RadioReadBuffer

  SX126xReset (Thumb, 78 bytes, Stack size 8 bytes, sx126xstm32f103-board.o(i.SX126xReset))
  [Stack]

  - Max Depth = 32
  - Call Chain = SX126xReset ⇒ GPIO_Init
  [Calls]
  - >> GPIO_WriteBit
  - >> GPIO_Init
  - >> RCC_APB2PeriphClockCmd
  - >> SX126xDelayMs
  [Called By]
  - >> SX126xInit
  - >> SX126Reinit

  SX126xRxTimerStart (Thumb, 28 bytes, Stack size 8 bytes, sx126xstm32f103-board.o(i.SX126xRxTimerStart))
  [Stack]

  - Max Depth = 32
  - Call Chain = SX126xRxTimerStart ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> RadioRxBoosted
  - >> RadioRx

  SX126xRxTimerStop (Thumb, 22 bytes, Stack size 8 bytes, sx126xstm32f103-board.o(i.SX126xRxTimerStop))
  [Stack]

  - Max Depth = 32
  - Call Chain = SX126xRxTimerStop ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> TIM3_IRQHandler
  - >> RadioIrqProcess
  - >> radio_tx_process

  SX126xSendPayload (Thumb, 24 bytes, Stack size 16 bytes, sx126x.o(i.SX126xSendPayload))
  [Stack]

  - Max Depth = 104
  - Call Chain = SX126xSendPayload ⇒ SX126xSetTx ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xSetTx
  - >> SX126xSetPayload
  [Called By]
  - >> RadioSend

  SX126xSetBufferBaseAddress (Thumb, 26 bytes, Stack size 16 bytes, sx126x.o(i.SX126xSetBufferBaseAddress))
  [Stack]

  - Max Depth = 88
  - Call Chain = SX126xSetBufferBaseAddress ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteCommand
  [Called By]
  - >> RadioReInit
  - >> RadioInit

  SX126xSetCad (Thumb, 20 bytes, Stack size 8 bytes, sx126x.o(i.SX126xSetCad))
  [Stack]

  - Max Depth = 80
  - Call Chain = SX126xSetCad ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteCommand
  - >> SX126xSetOperatingMode
  [Called By]
  - >> RadioStartCad

  SX126xSetCrcPolynomial (Thumb, 42 bytes, Stack size 16 bytes, sx126x.o(i.SX126xSetCrcPolynomial))
  [Stack]

  - Max Depth = 88
  - Call Chain = SX126xSetCrcPolynomial ⇒ SX126xWriteRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xGetPacketType
  - >> SX126xWriteRegisters
  [Called By]
  - >> SX126xSetPacketParams

  SX126xSetCrcSeed (Thumb, 42 bytes, Stack size 16 bytes, sx126x.o(i.SX126xSetCrcSeed))
  [Stack]

  - Max Depth = 88
  - Call Chain = SX126xSetCrcSeed ⇒ SX126xWriteRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xGetPacketType
  - >> SX126xWriteRegisters
  [Called By]
  - >> SX126xSetPacketParams

  SX126xSetDio2AsRfSwitchCtrl (Thumb, 14 bytes, Stack size 8 bytes, sx126x.o(i.SX126xSetDio2AsRfSwitchCtrl))
  [Stack]

  - Max Depth = 80
  - Call Chain = SX126xSetDio2AsRfSwitchCtrl ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteCommand
  [Called By]
  - >> SX126xIoRfSwitchInit

  SX126xSetDioIrqParams (Thumb, 74 bytes, Stack size 32 bytes, sx126x.o(i.SX126xSetDioIrqParams))
  [Stack]

  - Max Depth = 104
  - Call Chain = SX126xSetDioIrqParams ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteCommand
  [Called By]
  - >> RadioStartCad
  - >> RadioSend
  - >> RadioRxBoosted
  - >> RadioRx
  - >> RadioReInit
  - >> RadioRandom
  - >> RadioInit

  SX126xSetLoRaSymbNumTimeout (Thumb, 84 bytes, Stack size 24 bytes, sx126x.o(i.SX126xSetLoRaSymbNumTimeout))
  [Stack]

  - Max Depth = 112
  - Call Chain = SX126xSetLoRaSymbNumTimeout ⇒ SX126xWriteRegister ⇒ SX126xWriteRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteRegister
  - >> SX126xWriteCommand
  [Called By]
  - >> RadioSetRxConfig

  SX126xSetModulationParams (Thumb, 168 bytes, Stack size 24 bytes, sx126x.o(i.SX126xSetModulationParams))
  [Stack]

  - Max Depth = 104
  - Call Chain = SX126xSetModulationParams ⇒ SX126xSetPacketType ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xSetPacketType
  - >> SX126xWriteCommand
  - >> SX126xConvertFreqInHzToPllStep
  [Called By]
  - >> RadioSetTxConfig
  - >> RadioSetRxConfig

  SX126xSetNss (Thumb, 26 bytes, Stack size 8 bytes, sx126xstm32f103-board.o(i.SX126xSetNss))
  [Stack]

  - Max Depth = 8
  - Call Chain = SX126xSetNss
  [Calls]
  - >> GPIO_SetBits
  - >> GPIO_ResetBits
  [Called By]
  - >> SX126xWriteRegisters
  - >> SX126xWriteCommand
  - >> SX126xWriteBuffer
  - >> SX126xWakeup
  - >> SX126xReadRegisters
  - >> SX126xReadCommand
  - >> SX126xReadBuffer

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

  - >> SX126xSetTxContinuousWave
  - >> SX126xSetStandby
  - >> SX126xSetSleep
  - >> SX126xSetRxDutyCycle
  - >> SX126xSetRxBoosted
  - >> SX126xSetRx
  - >> SX126xSetCad
  - >> SX126xInit
  - >> SX126Reinit
  - >> SX126xWakeup
  - >> RadioIrqProcess
  - >> SX126xSetTx

  SX126xSetPaConfig (Thumb, 38 bytes, Stack size 24 bytes, sx126x.o(i.SX126xSetPaConfig))
  [Stack]

  - Max Depth = 96
  - Call Chain = SX126xSetPaConfig ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteCommand
  [Called By]
  - >> SX126xSetTxParams

  SX126xSetPacketParams (Thumb, 222 bytes, Stack size 32 bytes, sx126x.o(i.SX126xSetPacketParams))
  [Stack]

  - Max Depth = 120
  - Call Chain = SX126xSetPacketParams ⇒ SX126xSetCrcSeed ⇒ SX126xWriteRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xSetPacketType
  - >> SX126xWriteCommand
  - >> SX126xSetCrcSeed
  - >> SX126xSetCrcPolynomial
  [Called By]
  - >> RadioSetTxConfig
  - >> RadioSetRxConfig
  - >> RadioSetMaxPayloadLength
  - >> RadioSend

  SX126xSetPacketType (Thumb, 22 bytes, Stack size 8 bytes, sx126x.o(i.SX126xSetPacketType))
  [Stack]

  - Max Depth = 80
  - Call Chain = SX126xSetPacketType ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteCommand
  [Called By]
  - >> SX126xSetPacketParams
  - >> SX126xSetModulationParams
  - >> RadioSetModem

  SX126xSetPayload (Thumb, 18 bytes, Stack size 16 bytes, sx126x.o(i.SX126xSetPayload))
  [Stack]

  - Max Depth = 88
  - Call Chain = SX126xSetPayload ⇒ SX126xWriteBuffer ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteBuffer
  [Called By]
  - >> SX126xSendPayload

  SX126xSetRegulatorMode (Thumb, 14 bytes, Stack size 8 bytes, sx126x.o(i.SX126xSetRegulatorMode))
  [Stack]

  - Max Depth = 80
  - Call Chain = SX126xSetRegulatorMode ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteCommand
  [Called By]
  - >> RadioReInit
  - >> RadioInit

  SX126xSetRfFrequency (Thumb, 68 bytes, Stack size 16 bytes, sx126x.o(i.SX126xSetRfFrequency))
  [Stack]

  - Max Depth = 104
  - Call Chain = SX126xSetRfFrequency ⇒ SX126xCalibrateImage ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteCommand
  - >> SX126xCalibrateImage
  - >> SX126xConvertFreqInHzToPllStep
  [Called By]
  - >> RadioSetTxContinuousWave
  - >> RadioSetChannel

  SX126xSetRfTxPower (Thumb, 14 bytes, Stack size 8 bytes, radio.o(i.SX126xSetRfTxPower))
  [Stack]

  - Max Depth = 128
  - Call Chain = SX126xSetRfTxPower ⇒ SX126xSetTxParams ⇒ SX126xSetPaConfig ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xSetTxParams
  [Called By]
  - >> RadioSetTxContinuousWave
  - >> RadioSetTxConfig

  SX126xSetRx (Thumb, 40 bytes, Stack size 16 bytes, sx126x.o(i.SX126xSetRx))
  [Stack]

  - Max Depth = 88
  - Call Chain = SX126xSetRx ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteCommand
  - >> SX126xSetOperatingMode
  [Called By]
  - >> SX126xGetRandom
  - >> RadioRx

  SX126xSetRxBoosted (Thumb, 50 bytes, Stack size 16 bytes, sx126x.o(i.SX126xSetRxBoosted))
  [Stack]

  - Max Depth = 104
  - Call Chain = SX126xSetRxBoosted ⇒ SX126xWriteRegister ⇒ SX126xWriteRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteRegister
  - >> SX126xWriteCommand
  - >> SX126xSetOperatingMode
  [Called By]
  - >> RadioRxBoosted

  SX126xSetRxDutyCycle (Thumb, 60 bytes, Stack size 24 bytes, sx126x.o(i.SX126xSetRxDutyCycle))
  [Stack]

  - Max Depth = 96
  - Call Chain = SX126xSetRxDutyCycle ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteCommand
  - >> SX126xSetOperatingMode
  [Called By]
  - >> RadioSetRxDutyCycle

  SX126xSetRxTimerValue (Thumb, 24 bytes, Stack size 8 bytes, sx126xstm32f103-board.o(i.SX126xSetRxTimerValue))
  [Stack]

  - Max Depth = 32
  - Call Chain = SX126xSetRxTimerValue ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> RadioRxBoosted
  - >> RadioRx

  SX126xSetSleep (Thumb, 64 bytes, Stack size 16 bytes, sx126x.o(i.SX126xSetSleep))
  [Stack]

  - Max Depth = 88
  - Call Chain = SX126xSetSleep ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteCommand
  - >> SX126xSetOperatingMode
  - >> SX126xAntSwOff
  [Called By]
  - >> RadioSleep

  SX126xSetStandby (Thumb, 34 bytes, Stack size 8 bytes, sx126x.o(i.SX126xSetStandby))
  [Stack]

  - Max Depth = 80
  - Call Chain = SX126xSetStandby ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteCommand
  - >> SX126xSetOperatingMode
  [Called By]
  - >> SX126xInit
  - >> SX126xGetRandom
  - >> SX126Reinit
  - >> RadioStandby
  - >> RadioReInit
  - >> RadioInit

  SX126xSetStopRxTimerOnPreambleDetect (Thumb, 14 bytes, Stack size 8 bytes, sx126x.o(i.SX126xSetStopRxTimerOnPreambleDetect))
  [Stack]

  - Max Depth = 80
  - Call Chain = SX126xSetStopRxTimerOnPreambleDetect ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteCommand
  [Called By]
  - >> RadioSetStopRxTimerOnPreambleDetect
  - >> RadioSetRxConfig

  SX126xSetSyncWord (Thumb, 20 bytes, Stack size 8 bytes, sx126x.o(i.SX126xSetSyncWord))
  [Stack]

  - Max Depth = 80
  - Call Chain = SX126xSetSyncWord ⇒ SX126xWriteRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteRegisters
  [Called By]
  - >> RadioSetTxConfig
  - >> RadioSetRxConfig

  SX126xSetTx (Thumb, 40 bytes, Stack size 16 bytes, sx126x.o(i.SX126xSetTx))
  [Stack]

  - Max Depth = 88
  - Call Chain = SX126xSetTx ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteCommand
  - >> SX126xSetOperatingMode
  [Called By]
  - >> SX126xSendPayload

  SX126xSetTxContinuousWave (Thumb, 20 bytes, Stack size 8 bytes, sx126x.o(i.SX126xSetTxContinuousWave))
  [Stack]

  - Max Depth = 80
  - Call Chain = SX126xSetTxContinuousWave ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteCommand
  - >> SX126xSetOperatingMode
  [Called By]
  - >> RadioSetTxContinuousWave

  SX126xSetTxParams (Thumb, 138 bytes, Stack size 24 bytes, sx126x.o(i.SX126xSetTxParams))
  [Stack]

  - Max Depth = 120
  - Call Chain = SX126xSetTxParams ⇒ SX126xSetPaConfig ⇒ SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteRegister
  - >> SX126xWriteCommand
  - >> SX126xReadRegister
  - >> SX126xGetDeviceId
  - >> SX126xSetPaConfig
  [Called By]
  - >> SX126xSetRfTxPower
  - >> RadioReInit
  - >> RadioInit

  SX126xSetTxTimerValue (Thumb, 24 bytes, Stack size 8 bytes, sx126xstm32f103-board.o(i.SX126xSetTxTimerValue))
  [Stack]

  - Max Depth = 32
  - Call Chain = SX126xSetTxTimerValue ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> RadioSetTxContinuousWave
  - >> RadioSend

  SX126xSetWhiteningSeed (Thumb, 58 bytes, Stack size 16 bytes, sx126x.o(i.SX126xSetWhiteningSeed))
  [Stack]

  - Max Depth = 104
  - Call Chain = SX126xSetWhiteningSeed ⇒ SX126xWriteRegister ⇒ SX126xWriteRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xGetPacketType
  - >> SX126xWriteRegister
  - >> SX126xReadRegister
  [Called By]
  - >> RadioSetTxConfig
  - >> RadioSetRxConfig

  SX126xSpiInOut (Thumb, 12 bytes, Stack size 8 bytes, sx126xstm32f103-board.o(i.SX126xSpiInOut))
  [Stack]

  - Max Depth = 24
  - Call Chain = SX126xSpiInOut ⇒ HALSpi1InOut
  [Calls]
  - >> HALSpi1InOut
  [Called By]
  - >> SX126xWriteRegisters
  - >> SX126xWriteCommand
  - >> SX126xWriteBuffer
  - >> SX126xWakeup
  - >> SX126xReadRegisters
  - >> SX126xReadCommand
  - >> SX126xReadBuffer

  SX126xTimerInit (Thumb, 120 bytes, Stack size 24 bytes, sx126xstm32f103-board.o(i.SX126xTimerInit))
  [Stack]

  - Max Depth = 40
  - Call Chain = SX126xTimerInit ⇒ NVIC_Init
  [Calls]
  - >> NVIC_Init
  - >> RCC_APB1PeriphClockCmd
  - >> TIM_TimeBaseInit
  - >> TIM_ITConfig
  - >> TIM_Cmd
  - >> TIM_ClearITPendingBit
  [Called By]
  - >> RadioInit

  SX126xTxTimerStart (Thumb, 28 bytes, Stack size 8 bytes, sx126xstm32f103-board.o(i.SX126xTxTimerStart))
  [Stack]

  - Max Depth = 32
  - Call Chain = SX126xTxTimerStart ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> RadioSetTxContinuousWave
  - >> RadioSend

  SX126xTxTimerStop (Thumb, 22 bytes, Stack size 8 bytes, sx126xstm32f103-board.o(i.SX126xTxTimerStop))
  [Stack]

  - Max Depth = 32
  - Call Chain = SX126xTxTimerStop ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> TIM3_IRQHandler
  - >> RadioIrqProcess
  - >> radio_rx_process

  SX126xWaitOnBusy (Thumb, 44 bytes, Stack size 8 bytes, sx126xstm32f103-board.o(i.SX126xWaitOnBusy))
  [Stack]

  - Max Depth = 32
  - Call Chain = SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> GPIO_ReadInputDataBit
  - >> SX126xDelayMs
  - >> __2printf
  [Called By]
  - >> SX126xCheckDeviceReady
  - >> SX126xWriteRegisters
  - >> SX126xWriteCommand
  - >> SX126xWriteBuffer
  - >> SX126xWakeup
  - >> SX126xReadRegisters
  - >> SX126xReadCommand
  - >> SX126xReadBuffer

  SX126xWakeup (Thumb, 38 bytes, Stack size 8 bytes, radio.o(i.SX126xWakeup))
  [Stack]

  - Max Depth = 40
  - Call Chain = SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWaitOnBusy
  - >> SX126xSpiInOut
  - >> SX126xSetNss
  - >> SX126xSetOperatingMode
  [Called By]
  - >> SX126xInit
  - >> SX126xCheckDeviceReady
  - >> SX126Reinit

  SX126xWriteBuffer (Thumb, 66 bytes, Stack size 24 bytes, radio.o(i.SX126xWriteBuffer))
  [Stack]

  - Max Depth = 72
  - Call Chain = SX126xWriteBuffer ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWaitOnBusy
  - >> SX126xSpiInOut
  - >> SX126xSetNss
  - >> SX126xCheckDeviceReady
  [Called By]
  - >> SX126xSetPayload

  SX126xWriteCommand (Thumb, 64 bytes, Stack size 24 bytes, radio.o(i.SX126xWriteCommand))
  [Stack]

  - Max Depth = 72
  - Call Chain = SX126xWriteCommand ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWaitOnBusy
  - >> SX126xSpiInOut
  - >> SX126xSetNss
  - >> SX126xCheckDeviceReady
  [Called By]
  - >> SX126xSetTxParams
  - >> SX126xSetTxContinuousWave
  - >> SX126xSetStopRxTimerOnPreambleDetect
  - >> SX126xSetStandby
  - >> SX126xSetSleep
  - >> SX126xSetRxDutyCycle
  - >> SX126xSetRxBoosted
  - >> SX126xSetRx
  - >> SX126xSetRfFrequency
  - >> SX126xSetRegulatorMode
  - >> SX126xSetPacketType
  - >> SX126xSetPacketParams
  - >> SX126xSetModulationParams
  - >> SX126xSetLoRaSymbNumTimeout
  - >> SX126xSetDioIrqParams
  - >> SX126xSetDio2AsRfSwitchCtrl
  - >> SX126xSetCad
  - >> SX126xSetBufferBaseAddress
  - >> SX126xClearIrqStatus
  - >> SX126xSetTx
  - >> SX126xSetPaConfig
  - >> SX126xCalibrateImage

  SX126xWriteRegister (Thumb, 16 bytes, Stack size 16 bytes, radio.o(i.SX126xWriteRegister))
  [Stack]

  - Max Depth = 88
  - Call Chain = SX126xWriteRegister ⇒ SX126xWriteRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWriteRegisters
  [Called By]
  - >> SX126xSetWhiteningSeed
  - >> SX126xSetTxParams
  - >> SX126xSetRxBoosted
  - >> SX126xSetLoRaSymbNumTimeout
  - >> SX126xGetRandom
  - >> RadioWrite
  - >> RadioSetTxConfig
  - >> RadioSetRxConfig
  - >> RadioSetPublicNetwork
  - >> RadioIrqProcess

  SX126xWriteRegisters (Thumb, 72 bytes, Stack size 24 bytes, radio.o(i.SX126xWriteRegisters))
  [Stack]

  - Max Depth = 72
  - Call Chain = SX126xWriteRegisters ⇒ SX126xCheckDeviceReady ⇒ SX126xWakeup ⇒ SX126xWaitOnBusy ⇒ __2printf
  [Calls]
  - >> SX126xWaitOnBusy
  - >> SX126xSpiInOut
  - >> SX126xSetNss
  - >> SX126xCheckDeviceReady
  [Called By]
  - >> SX126xSetSyncWord
  - >> SX126xWriteRegister
  - >> RadioWriteBuffer
  - >> SX126xSetCrcSeed
  - >> SX126xSetCrcPolynomial

  Spi1Init (Thumb, 162 bytes, Stack size 32 bytes, hal_spi.o(i.Spi1Init))
  [Stack]

  - Max Depth = 56
  - Call Chain = Spi1Init ⇒ GPIO_Init
  [Calls]
  - >> SPI_Init
  - >> SPI_Cmd
  - >> GPIO_SetBits
  - >> GPIO_Init
  - >> RCC_APB2PeriphClockCmd
  [Called By]
  - >> SX126xIoInit

  SysInit (Thumb, 128 bytes, Stack size 16 bytes, main.o(i.SysInit))
  [Stack]

  - Max Depth = 116
  - Call Chain = SysInit ⇒ HALUart2Init ⇒ USART_Init ⇒ RCC_GetClocksFreq
  [Calls]
  - >> tb05_init
  - >> sx126x_init_process
  - >> RCC_APB2PeriphClockCmd
  - >> NVIC_PriorityGroupConfig
  - >> HALUart2Init
  - >> HALUart1Init
  - >> GPIO_PinRemapConfig
  - >> sys_startup_log
  [Called By]
  - >> main

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

  - startup_stm32f10x_hd.o(RESET)

  SystemInit (Thumb, 78 bytes, Stack size 8 bytes, system_stm32f10x.o(i.SystemInit))
  [Stack]

  - Max Depth = 28
  - Call Chain = SystemInit ⇒ SetSysClock ⇒ SetSysClockTo72
  [Calls]
  - >> SetSysClock
  [Address Reference Count : 1]
  - startup_stm32f10x_hd.o(.text)

  TB05_USART (Thumb, 90 bytes, Stack size 16 bytes, tb05_control.o(i.TB05_USART))
  [Stack]

  - Max Depth = 16
  - Call Chain = TB05_USART
  [Calls]
  - >> USART_SendData
  - >> USART_GetFlagStatus
  [Called By]
  - >> tb05_data_proccess
  - >> tb05_radio_respone

  TIM3_IRQHandler (Thumb, 176 bytes, Stack size 8 bytes, sx126xstm32f103-board.o(i.TIM3_IRQHandler))
  [Stack]

  - Max Depth = 40
  - Call Chain = TIM3_IRQHandler ⇒ SX126xTxTimerStop ⇒ __2printf
  [Calls]
  - >> RadioOnTxTimeoutIrq
  - >> RadioOnRxTimeoutIrq
  - >> SX126xTxTimerStop
  - >> SX126xRxTimerStop
  - >> TIM_GetITStatus
  - >> TIM_ClearITPendingBit
  [Address Reference Count : 1]
  - startup_stm32f10x_hd.o(RESET)

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

  - >> TIM3_IRQHandler
  - >> SX126xTimerInit

  TIM_Cmd (Thumb, 24 bytes, Stack size 0 bytes, stm32f10x_tim.o(i.TIM_Cmd))
  [Called By]

  - >> SX126xTimerInit

  TIM_GetITStatus (Thumb, 34 bytes, Stack size 12 bytes, stm32f10x_tim.o(i.TIM_GetITStatus))
  [Stack]

  - Max Depth = 12
  - Call Chain = TIM_GetITStatus
  [Called By]
  - >> TIM3_IRQHandler

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

  - >> SX126xTimerInit

  TIM_TimeBaseInit (Thumb, 122 bytes, Stack size 0 bytes, stm32f10x_tim.o(i.TIM_TimeBaseInit))
  [Called By]

  - >> SX126xTimerInit

  USART1_IRQHandler (Thumb, 24 bytes, Stack size 8 bytes, hal_uart.o(i.USART1_IRQHandler))
  [Stack]

  - Max Depth = 8
  - Call Chain = USART1_IRQHandler
  [Calls]
  - >> USART_GetFlagStatus
  - >> USART_ClearFlag
  [Address Reference Count : 1]
  - startup_stm32f10x_hd.o(RESET)

  USART2_IRQHandler (Thumb, 124 bytes, Stack size 8 bytes, hal_uart.o(i.USART2_IRQHandler))
  [Stack]

  - Max Depth = 24
  - Call Chain = USART2_IRQHandler ⇒ USART_GetITStatus
  [Calls]
  - >> USART_ReceiveData
  - >> USART_GetITStatus
  - >> USART_ClearFlag
  [Address Reference Count : 1]
  - startup_stm32f10x_hd.o(RESET)

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

  - >> USART2_IRQHandler
  - >> USART1_IRQHandler

  USART_Cmd (Thumb, 24 bytes, Stack size 0 bytes, stm32f10x_usart.o(i.USART_Cmd))
  [Called By]

  - >> HALUart2Init
  - >> HALUart1Init

  USART_DeInit (Thumb, 134 bytes, Stack size 8 bytes, stm32f10x_usart.o(i.USART_DeInit))
  [Stack]

  - Max Depth = 8
  - Call Chain = USART_DeInit
  [Calls]
  - >> RCC_APB1PeriphResetCmd
  - >> RCC_APB2PeriphResetCmd
  [Called By]
  - >> HALUart1Init

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

  - >> fputc
  - >> USART1_IRQHandler
  - >> TB05_USART

  USART_GetITStatus (Thumb, 84 bytes, Stack size 16 bytes, stm32f10x_usart.o(i.USART_GetITStatus))
  [Stack]

  - Max Depth = 16
  - Call Chain = USART_GetITStatus
  [Called By]
  - >> USART2_IRQHandler

  USART_ITConfig (Thumb, 74 bytes, Stack size 20 bytes, stm32f10x_usart.o(i.USART_ITConfig))
  [Stack]

  - Max Depth = 20
  - Call Chain = USART_ITConfig
  [Called By]
  - >> HALUart2Init
  - >> HALUart1Init

  USART_Init (Thumb, 210 bytes, Stack size 56 bytes, stm32f10x_usart.o(i.USART_Init))
  [Stack]

  - Max Depth = 68
  - Call Chain = USART_Init ⇒ RCC_GetClocksFreq
  [Calls]
  - >> RCC_GetClocksFreq
  [Called By]
  - >> HALUart2Init
  - >> HALUart1Init

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

  - >> USART2_IRQHandler

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

  - >> fputc
  - >> TB05_USART

  UsageFault_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f10x_it.o(i.UsageFault_Handler))
  [Address Reference Count : 1]

  - startup_stm32f10x_hd.o(RESET)

  __0printf (Thumb, 22 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED)
  [Calls]

  - >> _printf_core

  __1printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED)

  __2printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf))
  [Stack]

  - Max Depth = 24
  - Call Chain = __2printf
  [Called By]
  - >> tb05_data_proccess
  - >> sx126x_init_process
  - >> sys_startup_log
  - >> SX126xWaitOnBusy
  - >> SX126xTxTimerStop
  - >> SX126xTxTimerStart
  - >> SX126xSetTxTimerValue
  - >> SX126xSetRxTimerValue
  - >> SX126xRxTimerStop
  - >> SX126xRxTimerStart
  - >> SX126xIoInit
  - >> EXTI1_IRQHandler
  - >> cJSON_ParseWithLengthOpts
  - >> parse_value
  - >> radio_tx_process
  - >> radio_status_upload
  - >> radio_rx_process
  - >> radio_cad_process
  - >> SX126xRxPreambleDetect
  - >> SX126xRadioInit
  - >> SX126xOnTxTimeout
  - >> SX126xOnTxDone
  - >> SX126xOnRxTimeout
  - >> SX126xOnRxError
  - >> SX126xOnRxDone
  - >> SX126xOnCadDone
  - >> sx126x_cmd_process

  __c89printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED)

  printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED)

  __0snprintf (Thumb, 48 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED)
  [Calls]

  - >> _printf_core

  __1snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED)

  __2snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf))
  [Stack]

  - Max Depth = 40
  - Call Chain = __2snprintf
  [Called By]
  - >> tb05_status_respone
  - >> radio_status_upload

  __c89snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED)

  snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED)

  __0sprintf (Thumb, 34 bytes, Stack size 24 bytes, printfa.o(i.__0sprintf), UNUSED)
  [Calls]

  - >> _sputc
  - >> _printf_core

  __1sprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0sprintf), UNUSED)

  __2sprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0sprintf))
  [Stack]

  - Max Depth = 24
  - Call Chain = __2sprintf
  [Called By]
  - >> tb05_data_proccess
  - >> print_string_ptr
  - >> print_number

  __c89sprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0sprintf), UNUSED)

  sprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0sprintf), UNUSED)

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

  - >> _strtoul
  - >> strtol
  - >> atol

  __rt_errno_addr (Thumb, 0 bytes, Stack size 0 bytes, errno.o(i.__aeabi_errno_addr), UNUSED)

  free (Thumb, 88 bytes, Stack size 12 bytes, mallocr.o(i.__free$realloc))
  [Stack]

  - Max Depth = 12
  - Call Chain = free
  [Called By]
  - >> tb05_data_proccess
  - >> radio_setting_update
  - >> realloc
  [Address Reference Count : 1]
  - cjson.o(.data)

  malloc (Thumb, 64 bytes, Stack size 32 bytes, mallocr.o(i.__malloc$realloc))
  [Stack]

  - Max Depth = 56
  - Call Chain = malloc ⇒ internal_alloc
  [Calls]
  - >> internal_alloc
  [Called By]
  - >> tb05_data_proccess
  - >> realloc
  [Address Reference Count : 1]
  - cjson.o(.data)

  __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)

  _is_digit (Thumb, 14 bytes, Stack size 0 bytes, scanf_fp.o(i._is_digit), UNUSED)
  [Called By]

  - >> _scanf_really_real

  cJSON_AddItemToObject (Thumb, 26 bytes, Stack size 24 bytes, cjson.o(i.cJSON_AddItemToObject))
  [Stack]

  - Max Depth = 80
  - Call Chain = cJSON_AddItemToObject ⇒ add_item_to_object ⇒ cJSON_strdup
  [Calls]
  - >> add_item_to_object
  [Called By]
  - >> radio_setting_update

  cJSON_CreateNumber (Thumb, 82 bytes, Stack size 16 bytes, cjson.o(i.cJSON_CreateNumber))
  [Stack]

  - Max Depth = 32
  - Call Chain = cJSON_CreateNumber ⇒ __aeabi_d2iz
  [Calls]
  - >> __aeabi_d2iz
  - >> __aeabi_cdrcmple
  - >> __aeabi_cdcmple
  - >> cJSON_New_Item
  [Called By]
  - >> radio_setting_update

  cJSON_CreateObject (Thumb, 20 bytes, Stack size 8 bytes, cjson.o(i.cJSON_CreateObject))
  [Stack]

  - Max Depth = 24
  - Call Chain = cJSON_CreateObject ⇒ cJSON_New_Item
  [Calls]
  - >> cJSON_New_Item
  [Called By]
  - >> radio_setting_update

  cJSON_CreateString (Thumb, 46 bytes, Stack size 16 bytes, cjson.o(i.cJSON_CreateString))
  [Stack]

  - Max Depth = 40
  - Call Chain = cJSON_CreateString ⇒ cJSON_strdup
  [Calls]
  - >> cJSON_Delete
  - >> cJSON_strdup
  - >> cJSON_New_Item
  [Called By]
  - >> radio_setting_update

  cJSON_Delete (Thumb, 84 bytes, Stack size 16 bytes, cjson.o(i.cJSON_Delete))
  [Stack]

  - Max Depth = 16 + In Cycle
  - Call Chain = cJSON_Delete ⇒ cJSON_Delete (Cycle)
  [Calls]
  - >> cJSON_Delete
  [Called By]
  - >> cJSON_ParseWithLengthOpts
  - >> cJSON_Delete
  - >> cJSON_CreateString
  - >> parse_object
  - >> parse_array
  - >> sx126x_cmd_process

  cJSON_GetObjectItem (Thumb, 18 bytes, Stack size 16 bytes, cjson.o(i.cJSON_GetObjectItem))
  [Stack]

  - Max Depth = 56
  - Call Chain = cJSON_GetObjectItem ⇒ get_object_item ⇒ case_insensitive_strcmp
  [Calls]
  - >> get_object_item
  [Called By]
  - >> sx126x_cmd_process

  cJSON_Parse (Thumb, 16 bytes, Stack size 8 bytes, cjson.o(i.cJSON_Parse))
  [Stack]

  - Max Depth = 432
  - Call Chain = cJSON_Parse ⇒ cJSON_ParseWithOpts ⇒ cJSON_ParseWithLengthOpts ⇒ parse_value ⇒ parse_number ⇒ strtod ⇒ __strtod_int ⇒ _local_sscanf ⇒ _scanf_real
  [Calls]
  - >> cJSON_ParseWithOpts
  [Called By]
  - >> sx126x_cmd_process

  cJSON_ParseWithLengthOpts (Thumb, 224 bytes, Stack size 72 bytes, cjson.o(i.cJSON_ParseWithLengthOpts))
  [Stack]

  - Max Depth = 400
  - Call Chain = cJSON_ParseWithLengthOpts ⇒ parse_value ⇒ parse_number ⇒ strtod ⇒ __strtod_int ⇒ _local_sscanf ⇒ _scanf_real
  [Calls]
  - >> cJSON_Delete
  - >> skip_utf8_bom
  - >> parse_value
  - >> cJSON_New_Item
  - >> buffer_skip_whitespace
  - >> __aeabi_memclr4
  - >> __2printf
  [Called By]
  - >> cJSON_ParseWithOpts

  cJSON_ParseWithOpts (Thumb, 40 bytes, Stack size 24 bytes, cjson.o(i.cJSON_ParseWithOpts))
  [Stack]

  - Max Depth = 424
  - Call Chain = cJSON_ParseWithOpts ⇒ cJSON_ParseWithLengthOpts ⇒ parse_value ⇒ parse_number ⇒ strtod ⇒ __strtod_int ⇒ _local_sscanf ⇒ _scanf_real
  [Calls]
  - >> cJSON_ParseWithLengthOpts
  - >> strlen
  [Called By]
  - >> cJSON_Parse

  cJSON_PrintUnformatted (Thumb, 16 bytes, Stack size 8 bytes, cjson.o(i.cJSON_PrintUnformatted))
  [Stack]

  - Max Depth = 432
  - Call Chain = cJSON_PrintUnformatted ⇒ print ⇒ print_value ⇒ print_number ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_real
  [Calls]
  - >> print
  [Called By]
  - >> radio_setting_update

  cJSON_free (Thumb, 14 bytes, Stack size 8 bytes, cjson.o(i.cJSON_free))
  [Stack]

  - Max Depth = 8
  - Call Chain = cJSON_free
  [Called By]
  - >> radio_setting_update

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

  - Max Depth = 8
  - Call Chain = delay_ms
  [Calls]
  - >> delay_us
  [Called By]
  - >> main
  - >> SX126xDelayMs
  - >> Ra03sch_TxMode_Set
  - >> Ra03sch_RxMode_Set
  - >> tb05_reset

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

  - >> delay_ms

  fputc (Thumb, 32 bytes, Stack size 16 bytes, hal_uart.o(i.fputc))
  [Stack]

  - Max Depth = 16
  - Call Chain = fputc
  [Calls]
  - >> USART_SendData
  - >> USART_GetFlagStatus
  [Address Reference Count : 1]
  - printfa.o(i.__0printf)

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

  - Max Depth = 608
  - Call Chain = main ⇒ tb05_data_proccess ⇒ respone_data_process ⇒ sx126x_cmd_process ⇒ radio_setting_update ⇒ cJSON_PrintUnformatted ⇒ print ⇒ print_value ⇒ print_number ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_real
  [Calls]
  - >> tb05_data_proccess
  - >> delay_ms
  - >> LoRa_IRQ_Handle
  - >> SysInit
  [Address Reference Count : 1]
  - entry9a.o(.ARM.Collect$$$$0000000B)

  radio_cad_process (Thumb, 440 bytes, Stack size 48 bytes, sx126x_cmd_process.o(i.radio_cad_process))
  [Stack]

  - Max Depth = 408
  - Call Chain = radio_cad_process ⇒ radio_status_upload ⇒ tb05_radio_respone ⇒ TB05_USART
  [Calls]
  - >> radio_status_upload
  - >> SX126xRadioInit
  - >> Ra03sch_RxMode_Set
  - >> __2printf
  [Called By]
  - >> sx126x_cmd_process

  radio_rx_process (Thumb, 328 bytes, Stack size 48 bytes, sx126x_cmd_process.o(i.radio_rx_process))
  [Stack]

  - Max Depth = 408
  - Call Chain = radio_rx_process ⇒ radio_status_upload ⇒ tb05_radio_respone ⇒ TB05_USART
  [Calls]
  - >> SX126xTxTimerStop
  - >> radio_status_upload
  - >> SX126xRadioInit
  - >> Ra03sch_RxMode_Set
  - >> __2printf
  [Called By]
  - >> sx126x_cmd_process

  radio_setting_update (Thumb, 812 bytes, Stack size 32 bytes, sx126x_cmd_process.o(i.radio_setting_update))
  [Stack]

  - Max Depth = 464
  - Call Chain = radio_setting_update ⇒ cJSON_PrintUnformatted ⇒ print ⇒ print_value ⇒ print_number ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_real
  [Calls]
  - >> __aeabi_i2d
  - >> cJSON_free
  - >> cJSON_PrintUnformatted
  - >> cJSON_CreateString
  - >> cJSON_CreateObject
  - >> cJSON_CreateNumber
  - >> cJSON_AddItemToObject
  - >> strlen
  - >> __aeabi_ui2d
  - >> tb05_radio_respone
  - >> free
  [Called By]
  - >> sx126x_cmd_process

  radio_sleep_process (Thumb, 42 bytes, Stack size 8 bytes, sx126x_cmd_process.o(i.radio_sleep_process))
  [Stack]

  - Max Depth = 368
  - Call Chain = radio_sleep_process ⇒ radio_status_upload ⇒ tb05_radio_respone ⇒ TB05_USART
  [Calls]
  - >> radio_status_upload
  - >> SX126xRadioInit
  [Called By]
  - >> sx126x_cmd_process

  radio_standby_process (Thumb, 42 bytes, Stack size 8 bytes, sx126x_cmd_process.o(i.radio_standby_process))
  [Stack]

  - Max Depth = 368
  - Call Chain = radio_standby_process ⇒ radio_status_upload ⇒ tb05_radio_respone ⇒ TB05_USART
  [Calls]
  - >> radio_status_upload
  - >> SX126xRadioInit
  [Called By]
  - >> sx126x_cmd_process

  radio_status_upload (Thumb, 350 bytes, Stack size 128 bytes, sx126x_cmd_process.o(i.radio_status_upload))
  [Stack]

  - Max Depth = 360
  - Call Chain = radio_status_upload ⇒ tb05_radio_respone ⇒ TB05_USART
  [Calls]
  - >> __aeabi_f2d
  - >> strlen
  - >> __aeabi_memclr4
  - >> __aeabi_i2f
  - >> __aeabi_fdiv
  - >> tb05_radio_respone
  - >> __2snprintf
  - >> __2printf
  [Called By]
  - >> radio_tx_process
  - >> radio_standby_process
  - >> radio_sleep_process
  - >> radio_rx_process
  - >> radio_cad_process
  - >> SX126xOnTxDone
  - >> SX126xOnRxDone
  - >> SX126xOnCadDone

  radio_tx_process (Thumb, 418 bytes, Stack size 48 bytes, sx126x_cmd_process.o(i.radio_tx_process))
  [Stack]

  - Max Depth = 408
  - Call Chain = radio_tx_process ⇒ radio_status_upload ⇒ tb05_radio_respone ⇒ TB05_USART
  [Calls]
  - >> SX126xRxTimerStop
  - >> radio_status_upload
  - >> SX126xRadioInit
  - >> Ra03sch_TxMode_Set
  - >> __2printf
  [Called By]
  - >> sx126x_cmd_process

  realloc (Thumb, 102 bytes, Stack size 32 bytes, mallocr.o(i.realloc))
  [Stack]

  - Max Depth = 88
  - Call Chain = realloc ⇒ malloc ⇒ internal_alloc
  [Calls]
  - >> malloc
  - >> free
  - >> internal_alloc
  [Address Reference Count : 1]
  - cjson.o(.data)

  respone_data_process (Thumb, 210 bytes, Stack size 8 bytes, tb05_control.o(i.respone_data_process))
  [Stack]

  - Max Depth = 576
  - Call Chain = respone_data_process ⇒ sx126x_cmd_process ⇒ radio_setting_update ⇒ cJSON_PrintUnformatted ⇒ print ⇒ print_value ⇒ print_number ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_real
  [Calls]
  - >> strstr
  - >> __aeabi_memclr
  - >> sx126x_cmd_process
  [Called By]
  - >> tb05_data_proccess

  strtod (Thumb, 28 bytes, Stack size 16 bytes, strtod.o(i.strtod))
  [Stack]

  - Max Depth = 216
  - Call Chain = strtod ⇒ __strtod_int ⇒ _local_sscanf ⇒ _scanf_real
  [Calls]
  - >> __strtod_int
  [Called By]
  - >> parse_number

  sx126x_cmd_process (Thumb, 1814 bytes, Stack size 104 bytes, sx126x_cmd_process.o(i.sx126x_cmd_process))
  [Stack]

  - Max Depth = 568
  - Call Chain = sx126x_cmd_process ⇒ radio_setting_update ⇒ cJSON_PrintUnformatted ⇒ print ⇒ print_value ⇒ print_number ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_real
  [Calls]
  - >> cJSON_Parse
  - >> cJSON_GetObjectItem
  - >> cJSON_Delete
  - >> strlen
  - >> __aeabi_memcpy
  - >> tb05_status_respone
  - >> radio_tx_process
  - >> radio_standby_process
  - >> radio_sleep_process
  - >> radio_setting_update
  - >> radio_rx_process
  - >> radio_cad_process
  - >> atol
  - >> __2printf
  [Called By]
  - >> respone_data_process

  sx126x_init_process (Thumb, 268 bytes, Stack size 48 bytes, sx126x_cmd_process.o(i.sx126x_init_process))
  [Stack]

  - Max Depth = 88
  - Call Chain = sx126x_init_process ⇒ SX126xRadioInit ⇒ SX126x_LED_init ⇒ GPIO_Init
  [Calls]
  - >> __aeabi_memclr4
  - >> SX126xRadioInit
  - >> Ra03sch_TxMode_Set
  - >> __2printf
  [Called By]
  - >> SysInit

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

  - Max Depth = 32
  - Call Chain = sys_startup_log ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> SysInit

  tb05_data_proccess (Thumb, 878 bytes, Stack size 32 bytes, tb05_control.o(i.tb05_data_proccess))
  [Stack]

  - Max Depth = 608
  - Call Chain = tb05_data_proccess ⇒ respone_data_process ⇒ sx126x_cmd_process ⇒ radio_setting_update ⇒ cJSON_PrintUnformatted ⇒ print ⇒ print_value ⇒ print_number ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_real
  [Calls]
  - >> GPIO_SetBits
  - >> GPIO_ResetBits
  - >> ChipID_Get
  - >> strlen
  - >> __aeabi_memclr
  - >> tb05_reset
  - >> respone_data_process
  - >> TB05_USART
  - >> malloc
  - >> free
  - >> __2sprintf
  - >> __2printf
  [Called By]
  - >> main

  tb05_init (Thumb, 12 bytes, Stack size 8 bytes, tb05_control.o(i.tb05_init))
  [Stack]

  - Max Depth = 40
  - Call Chain = tb05_init ⇒ tb05_reset_init ⇒ GPIO_Init
  [Calls]
  - >> tb05_reset_init
  - >> tb05_reset
  [Called By]
  - >> SysInit

  tb05_radio_respone (Thumb, 60 bytes, Stack size 216 bytes, tb05_control.o(i.tb05_radio_respone))
  [Stack]

  - Max Depth = 232
  - Call Chain = tb05_radio_respone ⇒ TB05_USART
  [Calls]
  - >> __aeabi_memclr4
  - >> TB05_USART
  [Called By]
  - >> tb05_status_respone
  - >> radio_status_upload
  - >> radio_setting_update

  tb05_reset (Thumb, 34 bytes, Stack size 8 bytes, tb05_control.o(i.tb05_reset))
  [Stack]

  - Max Depth = 16
  - Call Chain = tb05_reset ⇒ delay_ms
  [Calls]
  - >> GPIO_SetBits
  - >> GPIO_ResetBits
  - >> delay_ms
  [Called By]
  - >> tb05_init
  - >> tb05_data_proccess

  tb05_reset_init (Thumb, 62 bytes, Stack size 8 bytes, tb05_control.o(i.tb05_reset_init))
  [Stack]

  - Max Depth = 32
  - Call Chain = tb05_reset_init ⇒ GPIO_Init
  [Calls]
  - >> GPIO_Init
  - >> RCC_APB2PeriphClockCmd
  [Called By]
  - >> tb05_init

  tb05_status_respone (Thumb, 66 bytes, Stack size 104 bytes, sx126x_cmd_process.o(i.tb05_status_respone))
  [Stack]

  - Max Depth = 336
  - Call Chain = tb05_status_respone ⇒ tb05_radio_respone ⇒ TB05_USART
  [Calls]
  - >> strlen
  - >> __aeabi_memclr4
  - >> tb05_radio_respone
  - >> __2snprintf
  [Called By]
  - >> sx126x_cmd_process

  ### Local Symbols

  SetSysClock (Thumb, 8 bytes, Stack size 8 bytes, system_stm32f10x.o(i.SetSysClock))
  [Stack]

  - Max Depth = 20
  - Call Chain = SetSysClock ⇒ SetSysClockTo72
  [Calls]
  - >> SetSysClockTo72
  [Called By]
  - >> SystemInit

  SetSysClockTo72 (Thumb, 214 bytes, Stack size 12 bytes, system_stm32f10x.o(i.SetSysClockTo72))
  [Stack]

  - Max Depth = 12
  - Call Chain = SetSysClockTo72
  [Called By]
  - >> SetSysClock

  add_item_to_array (Thumb, 78 bytes, Stack size 16 bytes, cjson.o(i.add_item_to_array))
  [Stack]

  - Max Depth = 16
  - Call Chain = add_item_to_array
  [Calls]
  - >> suffix_object
  [Called By]
  - >> add_item_to_object

  add_item_to_object (Thumb, 122 bytes, Stack size 32 bytes, cjson.o(i.add_item_to_object))
  [Stack]

  - Max Depth = 56
  - Call Chain = add_item_to_object ⇒ cJSON_strdup
  [Calls]
  - >> cast_away_const
  - >> cJSON_strdup
  - >> add_item_to_array
  [Called By]
  - >> cJSON_AddItemToObject

  buffer_skip_whitespace (Thumb, 72 bytes, Stack size 0 bytes, cjson.o(i.buffer_skip_whitespace))
  [Called By]

  - >> cJSON_ParseWithLengthOpts
  - >> parse_object
  - >> parse_array

  cJSON_New_Item (Thumb, 26 bytes, Stack size 16 bytes, cjson.o(i.cJSON_New_Item))
  [Stack]

  - Max Depth = 16
  - Call Chain = cJSON_New_Item
  [Calls]
  - >> __aeabi_memclr4
  [Called By]
  - >> cJSON_ParseWithLengthOpts
  - >> cJSON_CreateString
  - >> cJSON_CreateObject
  - >> cJSON_CreateNumber
  - >> parse_object
  - >> parse_array

  cJSON_strdup (Thumb, 56 bytes, Stack size 24 bytes, cjson.o(i.cJSON_strdup))
  [Stack]

  - Max Depth = 24
  - Call Chain = cJSON_strdup
  [Calls]
  - >> strlen
  - >> __aeabi_memcpy
  [Called By]
  - >> cJSON_CreateString
  - >> add_item_to_object

  case_insensitive_strcmp (Thumb, 72 bytes, Stack size 16 bytes, cjson.o(i.case_insensitive_strcmp))
  [Stack]

  - Max Depth = 16
  - Call Chain = case_insensitive_strcmp
  [Calls]
  - >> tolower
  [Called By]
  - >> get_object_item

  cast_away_const (Thumb, 2 bytes, Stack size 0 bytes, cjson.o(i.cast_away_const))
  [Called By]

  - >> add_item_to_object

  compare_double (Thumb, 112 bytes, Stack size 48 bytes, cjson.o(i.compare_double))
  [Stack]

  - Max Depth = 136
  - Call Chain = compare_double ⇒ __aeabi_dsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_dsub
  - >> __aeabi_dmul
  - >> __aeabi_cdrcmple
  - >> __aeabi_cdcmple
  [Called By]
  - >> print_number

  ensure (Thumb, 186 bytes, Stack size 24 bytes, cjson.o(i.ensure))
  [Stack]

  - Max Depth = 24
  - Call Chain = ensure
  [Calls]
  - >> __aeabi_memcpy
  [Called By]
  - >> print_value
  - >> print_string_ptr
  - >> print_object
  - >> print_number
  - >> print_array

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

  - >> print_number
  - >> parse_number

  get_object_item (Thumb, 82 bytes, Stack size 24 bytes, cjson.o(i.get_object_item))
  [Stack]

  - Max Depth = 40
  - Call Chain = get_object_item ⇒ case_insensitive_strcmp
  [Calls]
  - >> case_insensitive_strcmp
  - >> strcmp
  [Called By]
  - >> cJSON_GetObjectItem

  parse_array (Thumb, 248 bytes, Stack size 24 bytes, cjson.o(i.parse_array))
  [Stack]

  - Max Depth = 40 + In Cycle
  - Call Chain = parse_array ⇒ parse_value (Cycle)
  [Calls]
  - >> cJSON_Delete
  - >> parse_value
  - >> cJSON_New_Item
  - >> buffer_skip_whitespace
  [Called By]
  - >> parse_value

  parse_hex4 (Thumb, 90 bytes, Stack size 0 bytes, cjson.o(i.parse_hex4))
  [Called By]

  - >> utf16_literal_to_utf8

  parse_number (Thumb, 298 bytes, Stack size 96 bytes, cjson.o(i.parse_number))
  [Stack]

  - Max Depth = 312
  - Call Chain = parse_number ⇒ strtod ⇒ __strtod_int ⇒ _local_sscanf ⇒ _scanf_real
  [Calls]
  - >> __aeabi_d2iz
  - >> __aeabi_cdrcmple
  - >> __aeabi_cdcmple
  - >> get_decimal_point
  - >> strtod
  [Called By]
  - >> parse_value

  parse_object (Thumb, 318 bytes, Stack size 24 bytes, cjson.o(i.parse_object))
  [Stack]

  - Max Depth = 120 + In Cycle
  - Call Chain = parse_object ⇒ parse_value (Cycle)
  [Calls]
  - >> cJSON_Delete
  - >> parse_value
  - >> parse_string
  - >> cJSON_New_Item
  - >> buffer_skip_whitespace
  [Called By]
  - >> parse_value

  parse_string (Thumb, 396 bytes, Stack size 40 bytes, cjson.o(i.parse_string))
  [Stack]

  - Max Depth = 96
  - Call Chain = parse_string ⇒ utf16_literal_to_utf8
  [Calls]
  - >> utf16_literal_to_utf8
  [Called By]
  - >> parse_value
  - >> parse_object

  parse_value (Thumb, 310 bytes, Stack size 16 bytes, cjson.o(i.parse_value))
  [Stack]

  - Max Depth = 328
  - Call Chain = parse_value ⇒ parse_number ⇒ strtod ⇒ __strtod_int ⇒ _local_sscanf ⇒ _scanf_real
  [Calls]
  - >> parse_string
  - >> parse_object
  - >> parse_number
  - >> parse_array
  - >> strncmp
  - >> __2printf
  [Called By]
  - >> cJSON_ParseWithLengthOpts
  - >> parse_object
  - >> parse_array

  print (Thumb, 178 bytes, Stack size 56 bytes, cjson.o(i.print))
  [Stack]

  - Max Depth = 424
  - Call Chain = print ⇒ print_value ⇒ print_number ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_real
  [Calls]
  - >> update_offset
  - >> print_value
  - >> __aeabi_memclr4
  - >> __aeabi_memcpy
  [Called By]
  - >> cJSON_PrintUnformatted

  print_array (Thumb, 178 bytes, Stack size 24 bytes, cjson.o(i.print_array))
  [Stack]

  - Max Depth = 48 + In Cycle
  - Call Chain = print_array ⇒ print_value (Cycle)
  [Calls]
  - >> update_offset
  - >> print_value
  - >> ensure
  [Called By]
  - >> print_value

  print_number (Thumb, 268 bytes, Stack size 80 bytes, cjson.o(i.print_number))
  [Stack]

  - Max Depth = 344
  - Call Chain = print_number ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_real
  [Calls]
  - >> get_decimal_point
  - >> ensure
  - >> compare_double
  - >> __aeabi_memclr4
  - >> __0sscanf
  - >> __2sprintf
  [Called By]
  - >> print_value

  print_object (Thumb, 372 bytes, Stack size 32 bytes, cjson.o(i.print_object))
  [Stack]

  - Max Depth = 88 + In Cycle
  - Call Chain = print_object ⇒ print_value (Cycle)
  [Calls]
  - >> update_offset
  - >> print_value
  - >> print_string_ptr
  - >> ensure
  [Called By]
  - >> print_value

  print_string (Thumb, 16 bytes, Stack size 16 bytes, cjson.o(i.print_string))
  [Stack]

  - Max Depth = 72
  - Call Chain = print_string ⇒ print_string_ptr ⇒ ensure
  [Calls]
  - >> print_string_ptr
  [Called By]
  - >> print_value

  print_string_ptr (Thumb, 360 bytes, Stack size 32 bytes, cjson.o(i.print_string_ptr))
  [Stack]

  - Max Depth = 56
  - Call Chain = print_string_ptr ⇒ ensure
  [Calls]
  - >> ensure
  - >> strcpy
  - >> __aeabi_memcpy
  - >> __2sprintf
  [Called By]
  - >> print_string
  - >> print_object

  print_value (Thumb, 236 bytes, Stack size 24 bytes, cjson.o(i.print_value))
  [Stack]

  - Max Depth = 368
  - Call Chain = print_value ⇒ print_number ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_real
  [Calls]
  - >> print_string
  - >> print_object
  - >> print_number
  - >> print_array
  - >> ensure
  - >> strcpy
  - >> strlen
  - >> __aeabi_memcpy
  [Called By]
  - >> print_object
  - >> print_array
  - >> print

  skip_utf8_bom (Thumb, 56 bytes, Stack size 8 bytes, cjson.o(i.skip_utf8_bom))
  [Stack]

  - Max Depth = 20
  - Call Chain = skip_utf8_bom ⇒ strncmp
  [Calls]
  - >> strncmp
  [Called By]
  - >> cJSON_ParseWithLengthOpts

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

  - >> add_item_to_array

  update_offset (Thumb, 36 bytes, Stack size 16 bytes, cjson.o(i.update_offset))
  [Stack]

  - Max Depth = 16
  - Call Chain = update_offset
  [Calls]
  - >> strlen
  [Called By]
  - >> print_object
  - >> print_array
  - >> print

  utf16_literal_to_utf8 (Thumb, 300 bytes, Stack size 56 bytes, cjson.o(i.utf16_literal_to_utf8))
  [Stack]

  - Max Depth = 56
  - Call Chain = utf16_literal_to_utf8
  [Calls]
  - >> parse_hex4
  [Called By]
  - >> parse_string

  RadioGetFskBandwidthRegValue (Thumb, 56 bytes, Stack size 0 bytes, radio.o(i.RadioGetFskBandwidthRegValue))
  [Called By]

  - >> RadioSetTxConfig
  - >> RadioSetRxConfig

  RadioGetGfskTimeOnAirNumerator (Thumb, 54 bytes, Stack size 24 bytes, radio.o(i.RadioGetGfskTimeOnAirNumerator))
  [Stack]

  - Max Depth = 24
  - Call Chain = RadioGetGfskTimeOnAirNumerator
  [Called By]
  - >> RadioTimeOnAir

  RadioGetLoRaBandwidthInHz (Thumb, 82 bytes, Stack size 0 bytes, radio.o(i.RadioGetLoRaBandwidthInHz))
  [Called By]

  - >> RadioTimeOnAir

  RadioGetLoRaTimeOnAirNumerator (Thumb, 178 bytes, Stack size 36 bytes, radio.o(i.RadioGetLoRaTimeOnAirNumerator))
  [Stack]

  - Max Depth = 36
  - Call Chain = RadioGetLoRaTimeOnAirNumerator
  [Called By]
  - >> RadioTimeOnAir

  SX126xConvertFreqInHzToPllStep (Thumb, 36 bytes, Stack size 8 bytes, sx126x.o(i.SX126xConvertFreqInHzToPllStep))
  [Stack]

  - Max Depth = 8
  - Call Chain = SX126xConvertFreqInHzToPllStep
  [Called By]
  - >> SX126xSetRfFrequency
  - >> SX126xSetModulationParams

  Ra03sch_RxMode_Set (Thumb, 80 bytes, Stack size 8 bytes, sx126x_cmd_process.o(i.Ra03sch_RxMode_Set))
  [Stack]

  - Max Depth = 32
  - Call Chain = Ra03sch_RxMode_Set ⇒ GPIO_Init
  [Calls]
  - >> GPIO_Init
  - >> delay_ms
  - >> RCC_APB2PeriphClockCmd
  [Called By]
  - >> radio_rx_process
  - >> radio_cad_process

  Ra03sch_TxMode_Set (Thumb, 80 bytes, Stack size 8 bytes, sx126x_cmd_process.o(i.Ra03sch_TxMode_Set))
  [Stack]

  - Max Depth = 32
  - Call Chain = Ra03sch_TxMode_Set ⇒ GPIO_Init
  [Calls]
  - >> GPIO_Init
  - >> delay_ms
  - >> RCC_APB2PeriphClockCmd
  [Called By]
  - >> sx126x_init_process
  - >> radio_tx_process

  SX126xOnCadDone (Thumb, 30 bytes, Stack size 8 bytes, sx126x_cmd_process.o(i.SX126xOnCadDone))
  [Stack]

  - Max Depth = 368
  - Call Chain = SX126xOnCadDone ⇒ radio_status_upload ⇒ tb05_radio_respone ⇒ TB05_USART
  [Calls]
  - >> radio_status_upload
  - >> __2printf
  [Address Reference Count : 1]
  - sx126x_cmd_process.o(i.SX126xRadioInit)

  SX126xOnRxDone (Thumb, 150 bytes, Stack size 24 bytes, sx126x_cmd_process.o(i.SX126xOnRxDone))
  [Stack]

  - Max Depth = 384
  - Call Chain = SX126xOnRxDone ⇒ radio_status_upload ⇒ tb05_radio_respone ⇒ TB05_USART
  [Calls]
  - >> radio_status_upload
  - >> __2printf
  [Address Reference Count : 1]
  - sx126x_cmd_process.o(i.SX126xRadioInit)

  SX126xOnRxError (Thumb, 34 bytes, Stack size 8 bytes, sx126x_cmd_process.o(i.SX126xOnRxError))
  [Stack]

  - Max Depth = 32
  - Call Chain = SX126xOnRxError ⇒ __2printf
  [Calls]
  - >> __2printf
  [Address Reference Count : 1]
  - sx126x_cmd_process.o(i.SX126xRadioInit)

  SX126xOnRxTimeout (Thumb, 34 bytes, Stack size 8 bytes, sx126x_cmd_process.o(i.SX126xOnRxTimeout))
  [Stack]

  - Max Depth = 32
  - Call Chain = SX126xOnRxTimeout ⇒ __2printf
  [Calls]
  - >> __2printf
  [Address Reference Count : 1]
  - sx126x_cmd_process.o(i.SX126xRadioInit)

  SX126xOnTxDone (Thumb, 44 bytes, Stack size 8 bytes, sx126x_cmd_process.o(i.SX126xOnTxDone))
  [Stack]

  - Max Depth = 368
  - Call Chain = SX126xOnTxDone ⇒ radio_status_upload ⇒ tb05_radio_respone ⇒ TB05_USART
  [Calls]
  - >> radio_status_upload
  - >> __2printf
  [Address Reference Count : 1]
  - sx126x_cmd_process.o(i.SX126xRadioInit)

  SX126xOnTxTimeout (Thumb, 34 bytes, Stack size 8 bytes, sx126x_cmd_process.o(i.SX126xOnTxTimeout))
  [Stack]

  - Max Depth = 32
  - Call Chain = SX126xOnTxTimeout ⇒ __2printf
  [Calls]
  - >> __2printf
  [Address Reference Count : 1]
  - sx126x_cmd_process.o(i.SX126xRadioInit)

  SX126xRadioInit (Thumb, 80 bytes, Stack size 8 bytes, sx126x_cmd_process.o(i.SX126xRadioInit))
  [Stack]

  - Max Depth = 40
  - Call Chain = SX126xRadioInit ⇒ SX126x_LED_init ⇒ GPIO_Init
  [Calls]
  - >> SX126x_LED_init
  - >> __2printf
  [Called By]
  - >> sx126x_init_process
  - >> radio_tx_process
  - >> radio_standby_process
  - >> radio_sleep_process
  - >> radio_rx_process
  - >> radio_cad_process

  SX126xRxPreambleDetect (Thumb, 18 bytes, Stack size 8 bytes, sx126x_cmd_process.o(i.SX126xRxPreambleDetect))
  [Stack]

  - Max Depth = 32
  - Call Chain = SX126xRxPreambleDetect ⇒ __2printf
  [Calls]
  - >> __2printf
  [Address Reference Count : 1]
  - sx126x_cmd_process.o(i.SX126xRadioInit)

  SX126x_LED_init (Thumb, 50 bytes, Stack size 8 bytes, sx126x_cmd_process.o(i.SX126x_LED_init))
  [Stack]

  - Max Depth = 32
  - Call Chain = SX126x_LED_init ⇒ GPIO_Init
  [Calls]
  - >> GPIO_WriteBit
  - >> GPIO_Init
  - >> RCC_APB2PeriphClockCmd
  [Called By]
  - >> SX126xRadioInit

  _fp_digits (Thumb, 366 bytes, Stack size 64 bytes, printfa.o(i._fp_digits), UNUSED)
  [Calls]

  - >> __aeabi_dmul
  - >> __aeabi_cdrcmple
  - >> __aeabi_uldivmod
  - >> __aeabi_ddiv
  - >> __aeabi_dadd
  - >> __aeabi_d2ulz
  [Called By]
  - >> _printf_core

  _printf_core (Thumb, 1704 bytes, Stack size 136 bytes, printfa.o(i._printf_core), UNUSED)
  [Calls]

  - >> _printf_pre_padding
  - >> _printf_post_padding
  - >> _fp_digits
  - >> __aeabi_uldivmod
  - >> __aeabi_uidivmod
  [Called By]
  - >> __0sprintf
  - >> __0snprintf
  - >> __0printf

  _printf_post_padding (Thumb, 36 bytes, Stack size 24 bytes, printfa.o(i._printf_post_padding), UNUSED)
  [Called By]

  - >> _printf_core

  _printf_pre_padding (Thumb, 46 bytes, Stack size 24 bytes, printfa.o(i._printf_pre_padding), UNUSED)
  [Called By]

  - >> _printf_core

  _snputc (Thumb, 22 bytes, Stack size 0 bytes, printfa.o(i._snputc))
  [Address Reference Count : 1]

  - printfa.o(i.__0snprintf)

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

  - >> __0sprintf
  [Address Reference Count : 1]
  - printfa.o(i.__0sprintf)

  internal_alloc (Thumb, 76 bytes, Stack size 24 bytes, mallocr.o(i.internal_alloc))
  [Stack]

  - Max Depth = 24
  - Call Chain = internal_alloc
  [Calls]
  - >> __aeabi_memcpy
  [Called By]
  - >> realloc
  - >> malloc

  _fp_value (Thumb, 296 bytes, Stack size 64 bytes, scanf_fp.o(.text), UNUSED)
  [Calls]

  - >> __aeabi_dmul
  - >> __aeabi_ul2d
  - >> __aeabi_ddiv
  [Called By]
  - >> _scanf_really_real

  _scanf_char_input (Thumb, 12 bytes, Stack size 0 bytes, scanf_char.o(.text))
  [Address Reference Count : 1]

  - scanf_char.o(.text)

  _local_sscanf (Thumb, 54 bytes, Stack size 56 bytes, strtod.o(.text))
  [Stack]

  - Max Depth = 160
  - Call Chain = _local_sscanf ⇒ _scanf_real
  [Calls]
  - >> _scanf_real
  [Called By]
  - >> __strtod_int

  ### Undefined Global Symbols