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

#<CALLGRAPH># ARM Linker, 6090000: Last Updated: Fri Mar 28 13:28:13 2025

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

### Call chain for Maximum Stack Depth:

main ⇒ USART0_Init ⇒ usart_baudrate_set ⇒ rcu_clock_freq_get

### Mutually Recursive functions

- ADC_CMP_IRQHandler ⇒ ADC_CMP_IRQHandler

  ### Function Pointers

  - ADC_CMP_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - DMA_Channel0_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - DMA_Channel1_2_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - DMA_Channel3_4_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - EXTI0_1_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - EXTI2_3_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - EXTI4_15_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - FMC_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - HardFault_Handler from gd32e23x_it.o(.text.HardFault_Handler) referenced from startup_gd32e23x.o(RESET)
  - I2C0_ER_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - I2C0_EV_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - I2C1_ER_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - I2C1_EV_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - LVD_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - NMI_Handler from gd32e23x_it.o(.text.NMI_Handler) referenced from startup_gd32e23x.o(RESET)
  - PendSV_Handler from gd32e23x_it.o(.text.PendSV_Handler) referenced from startup_gd32e23x.o(RESET)
  - RCU_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - RTC_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - Reset_Handler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - SPI0_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - SPI1_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - SVC_Handler from gd32e23x_it.o(.text.SVC_Handler) referenced from startup_gd32e23x.o(RESET)
  - SysTick_Handler from gd32e23x_it.o(.text.SysTick_Handler) referenced from startup_gd32e23x.o(RESET)
  - SystemInit from system_gd32e23x.o(.text.SystemInit) referenced from startup_gd32e23x.o(.text)
  - TIMER0_BRK_UP_TRG_COM_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - TIMER0_Channel_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - TIMER13_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - TIMER14_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - TIMER15_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - TIMER16_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - TIMER2_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - TIMER5_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - USART0_IRQHandler from usart.o(.text.USART0_IRQHandler) referenced from startup_gd32e23x.o(RESET)
  - USART1_IRQHandler from usart.o(.text.USART1_IRQHandler) referenced from startup_gd32e23x.o(RESET)
  - WWDGT_IRQHandler from startup_gd32e23x.o(.text) referenced from startup_gd32e23x.o(RESET)
  - __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup_gd32e23x.o(.text)
  - _sputc from printfa.o(i._sputc) referenced from printfa.o(i.__0sprintf)
  - main from main.o(.text.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B)

  ### Global Symbols

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

  - startup_gd32e23x.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_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D))

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

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

  - startup_gd32e23x.o(RESET)

  ADC_CMP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32e23x.o(.text))
  [Calls]

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

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

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

  __aeabi_dsub (Thumb, 12 bytes, Stack size 8 bytes, dadd.o(.text), UNUSED)
  [Calls]

  - >> __aeabi_dadd

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

  - >> __aeabi_dadd

  __aeabi_dcmple (Thumb, 44 bytes, Stack size 8 bytes, dcmple.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = __aeabi_dcmple
  [Called By]
  - >> main

  __aeabi_dcmpgt (Thumb, 44 bytes, Stack size 8 bytes, dcmpgt.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = __aeabi_dcmpgt
  [Called By]
  - >> main

  __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, 96 bytes, Stack size 48 bytes, uldiv.o(.text), UNUSED)
  [Calls]

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

  __aeabi_llsl (Thumb, 32 bytes, Stack size 8 bytes, llshl.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = __aeabi_llsl
  [Called By]
  - >> __aeabi_dadd
  - >> __aeabi_uldivmod
  - >> _double_epilogue
  - >> __aeabi_d2ulz

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

  __aeabi_lasr (Thumb, 38 bytes, Stack size 8 bytes, llsshr.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = __aeabi_lasr
  [Called By]
  - >> __aeabi_dadd

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

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

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

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

  _double_epilogue (Thumb, 164 bytes, Stack size 48 bytes, depilogue.o(.text))
  [Stack]

  - Max Depth = 56
  - Call Chain = _double_epilogue ⇒ __aeabi_llsr
  [Calls]
  - >> __aeabi_llsr
  - >> __ARM_clz
  - >> __aeabi_llsl
  - >> _double_round
  [Called By]
  - >> __aeabi_dadd
  - >> __aeabi_dmul

  __aeabi_dmul (Thumb, 202 bytes, Stack size 72 bytes, dmul.o(.text), UNUSED)
  [Calls]

  - >> _double_epilogue
  [Called By]
  - >> _fp_digits

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

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

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

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

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

  - >> _fp_digits

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

  __aeabi_llsr (Thumb, 34 bytes, Stack size 8 bytes, llushr.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = __aeabi_llsr
  [Called By]
  - >> __aeabi_uldivmod
  - >> _double_epilogue
  - >> __aeabi_d2ulz

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

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

  - >> main

  Delay_ms (Thumb, 56 bytes, Stack size 12 bytes, delay.o(.text.Delay_ms))
  [Stack]

  - Max Depth = 12
  - Call Chain = Delay_ms
  [Called By]
  - >> main

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

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

  - startup_gd32e23x.o(RESET)

  SysTick_Handler (Thumb, 8 bytes, Stack size 8 bytes, gd32e23x_it.o(.text.SysTick_Handler))
  [Stack]

  - Max Depth = 8
  - Call Chain = SysTick_Handler
  [Calls]
  - >> delay_decrement
  [Address Reference Count : 1]
  - startup_gd32e23x.o(RESET)

  SystemInit (Thumb, 172 bytes, Stack size 16 bytes, system_gd32e23x.o(.text.SystemInit))
  [Stack]

  - Max Depth = 40
  - Call Chain = SystemInit ⇒ nvic_vector_table_set
  [Calls]
  - >> nvic_vector_table_set
  - >> system_clock_config
  [Address Reference Count : 1]
  - startup_gd32e23x.o(.text)

  USART0_IRQHandler (Thumb, 56 bytes, Stack size 16 bytes, usart.o(.text.USART0_IRQHandler))
  [Stack]

  - Max Depth = 64
  - Call Chain = USART0_IRQHandler ⇒ usart_interrupt_flag_get
  [Calls]
  - >> usart_interrupt_flag_get
  - >> usart_data_receive
  - >> getch
  [Address Reference Count : 1]
  - startup_gd32e23x.o(RESET)

  USART0_Init (Thumb, 224 bytes, Stack size 40 bytes, usart.o(.text.USART0_Init))
  [Stack]

  - Max Depth = 172
  - Call Chain = USART0_Init ⇒ usart_baudrate_set ⇒ rcu_clock_freq_get
  [Calls]
  - >> usart_word_length_set
  - >> usart_transmit_config
  - >> usart_stop_bit_set
  - >> usart_receive_config
  - >> usart_parity_config
  - >> usart_interrupt_enable
  - >> usart_hardware_flow_rts_config
  - >> usart_hardware_flow_cts_config
  - >> usart_enable
  - >> usart_deinit
  - >> usart_baudrate_set
  - >> nvic_irq_enable
  - >> gpio_af_set
  - >> rcu_periph_clock_enable
  - >> gpio_output_options_set
  - >> gpio_mode_set
  [Called By]
  - >> main

  USART1_IRQHandler (Thumb, 92 bytes, Stack size 16 bytes, usart.o(.text.USART1_IRQHandler))
  [Stack]

  - Max Depth = 64
  - Call Chain = USART1_IRQHandler ⇒ usart_interrupt_flag_get
  [Calls]
  - >> usart_interrupt_flag_get
  - >> usart_interrupt_flag_clear
  - >> usart_data_receive
  [Address Reference Count : 1]
  - startup_gd32e23x.o(RESET)

  UartSend (Thumb, 80 bytes, Stack size 24 bytes, usart.o(.text.UartSend))
  [Stack]

  - Max Depth = 52
  - Call Chain = UartSend ⇒ usart_flag_get
  [Calls]
  - >> usart_flag_get
  - >> usart_data_transmit
  [Called By]
  - >> main

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

  - >> SysTick_Handler

  getch (Thumb, 372 bytes, Stack size 8 bytes, usart.o(.text.getch))
  [Stack]

  - Max Depth = 8
  - Call Chain = getch
  [Called By]
  - >> USART0_IRQHandler

  gpio_af_set (Thumb, 200 bytes, Stack size 52 bytes, gd32e23x_gpio.o(.text.gpio_af_set))
  [Stack]

  - Max Depth = 52
  - Call Chain = gpio_af_set
  [Called By]
  - >> USART0_Init

  gpio_mode_set (Thumb, 146 bytes, Stack size 64 bytes, gd32e23x_gpio.o(.text.gpio_mode_set))
  [Stack]

  - Max Depth = 64
  - Call Chain = gpio_mode_set
  [Called By]
  - >> USART0_Init

  gpio_output_options_set (Thumb, 152 bytes, Stack size 60 bytes, gd32e23x_gpio.o(.text.gpio_output_options_set))
  [Stack]

  - Max Depth = 60
  - Call Chain = gpio_output_options_set
  [Called By]
  - >> USART0_Init

  main (Thumb, 884 bytes, Stack size 160 bytes, main.o(.text.main))
  [Stack]

  - Max Depth = 332
  - Call Chain = main ⇒ USART0_Init ⇒ usart_baudrate_set ⇒ rcu_clock_freq_get
  [Calls]
  - >> systick_config
  - >> __aeabi_dcmple
  - >> __aeabi_dcmpgt
  - >> __aeabi_dadd
  - >> UartSend
  - >> USART0_Init
  - >> Delay_ms
  - >> CheckBusy
  - >> sprintf
  [Address Reference Count : 1]
  - entry9a.o(.ARM.Collect$$$$0000000B)

  nvic_irq_enable (Thumb, 46 bytes, Stack size 32 bytes, gd32e23x_misc.o(.text.nvic_irq_enable))
  [Stack]

  - Max Depth = 64
  - Call Chain = nvic_irq_enable ⇒ __NVIC_SetPriority
  [Calls]
  - >> __NVIC_SetPriority
  - >> __NVIC_EnableIRQ
  [Called By]
  - >> USART0_Init

  nvic_vector_table_set (Thumb, 44 bytes, Stack size 24 bytes, gd32e23x_misc.o(.text.nvic_vector_table_set))
  [Stack]

  - Max Depth = 24
  - Call Chain = nvic_vector_table_set
  [Called By]
  - >> SystemInit

  rcu_clock_freq_get (Thumb, 764 bytes, Stack size 84 bytes, gd32e23x_rcu.o(.text.rcu_clock_freq_get))
  [Stack]

  - Max Depth = 84
  - Call Chain = rcu_clock_freq_get
  [Called By]
  - >> usart_baudrate_set

  rcu_periph_clock_enable (Thumb, 44 bytes, Stack size 16 bytes, gd32e23x_rcu.o(.text.rcu_periph_clock_enable))
  [Stack]

  - Max Depth = 16
  - Call Chain = rcu_periph_clock_enable
  [Called By]
  - >> USART0_Init

  rcu_periph_reset_disable (Thumb, 44 bytes, Stack size 16 bytes, gd32e23x_rcu.o(.text.rcu_periph_reset_disable))
  [Stack]

  - Max Depth = 16
  - Call Chain = rcu_periph_reset_disable
  [Called By]
  - >> usart_deinit

  rcu_periph_reset_enable (Thumb, 44 bytes, Stack size 16 bytes, gd32e23x_rcu.o(.text.rcu_periph_reset_enable))
  [Stack]

  - Max Depth = 16
  - Call Chain = rcu_periph_reset_enable
  [Called By]
  - >> usart_deinit

  systick_config (Thumb, 52 bytes, Stack size 16 bytes, systick.o(.text.systick_config))
  [Stack]

  - Max Depth = 72
  - Call Chain = systick_config ⇒ SysTick_Config ⇒ __NVIC_SetPriority
  [Calls]
  - >> __NVIC_SetPriority
  - >> SysTick_Config
  [Called By]
  - >> main

  usart_baudrate_set (Thumb, 192 bytes, Stack size 48 bytes, gd32e23x_usart.o(.text.usart_baudrate_set))
  [Stack]

  - Max Depth = 132
  - Call Chain = usart_baudrate_set ⇒ rcu_clock_freq_get
  [Calls]
  - >> rcu_clock_freq_get
  [Called By]
  - >> USART0_Init

  usart_data_receive (Thumb, 24 bytes, Stack size 8 bytes, gd32e23x_usart.o(.text.usart_data_receive))
  [Stack]

  - Max Depth = 8
  - Call Chain = usart_data_receive
  [Called By]
  - >> USART1_IRQHandler
  - >> USART0_IRQHandler

  usart_data_transmit (Thumb, 32 bytes, Stack size 16 bytes, gd32e23x_usart.o(.text.usart_data_transmit))
  [Stack]

  - Max Depth = 16
  - Call Chain = usart_data_transmit
  [Called By]
  - >> UartSend

  usart_deinit (Thumb, 88 bytes, Stack size 32 bytes, gd32e23x_usart.o(.text.usart_deinit))
  [Stack]

  - Max Depth = 48
  - Call Chain = usart_deinit ⇒ rcu_periph_reset_enable
  [Calls]
  - >> rcu_periph_reset_enable
  - >> rcu_periph_reset_disable
  [Called By]
  - >> USART0_Init

  usart_enable (Thumb, 22 bytes, Stack size 8 bytes, gd32e23x_usart.o(.text.usart_enable))
  [Stack]

  - Max Depth = 8
  - Call Chain = usart_enable
  [Called By]
  - >> USART0_Init

  usart_flag_get (Thumb, 66 bytes, Stack size 28 bytes, gd32e23x_usart.o(.text.usart_flag_get))
  [Stack]

  - Max Depth = 28
  - Call Chain = usart_flag_get
  [Called By]
  - >> UartSend

  usart_hardware_flow_cts_config (Thumb, 52 bytes, Stack size 24 bytes, gd32e23x_usart.o(.text.usart_hardware_flow_cts_config))
  [Stack]

  - Max Depth = 24
  - Call Chain = usart_hardware_flow_cts_config
  [Called By]
  - >> USART0_Init

  usart_hardware_flow_rts_config (Thumb, 52 bytes, Stack size 24 bytes, gd32e23x_usart.o(.text.usart_hardware_flow_rts_config))
  [Stack]

  - Max Depth = 24
  - Call Chain = usart_hardware_flow_rts_config
  [Called By]
  - >> USART0_Init

  usart_interrupt_enable (Thumb, 44 bytes, Stack size 32 bytes, gd32e23x_usart.o(.text.usart_interrupt_enable))
  [Stack]

  - Max Depth = 32
  - Call Chain = usart_interrupt_enable
  [Called By]
  - >> USART0_Init

  usart_interrupt_flag_clear (Thumb, 72 bytes, Stack size 16 bytes, gd32e23x_usart.o(.text.usart_interrupt_flag_clear))
  [Stack]

  - Max Depth = 16
  - Call Chain = usart_interrupt_flag_clear
  [Called By]
  - >> USART1_IRQHandler

  usart_interrupt_flag_get (Thumb, 116 bytes, Stack size 48 bytes, gd32e23x_usart.o(.text.usart_interrupt_flag_get))
  [Stack]

  - Max Depth = 48
  - Call Chain = usart_interrupt_flag_get
  [Called By]
  - >> USART1_IRQHandler
  - >> USART0_IRQHandler

  usart_parity_config (Thumb, 52 bytes, Stack size 24 bytes, gd32e23x_usart.o(.text.usart_parity_config))
  [Stack]

  - Max Depth = 24
  - Call Chain = usart_parity_config
  [Called By]
  - >> USART0_Init

  usart_receive_config (Thumb, 40 bytes, Stack size 24 bytes, gd32e23x_usart.o(.text.usart_receive_config))
  [Stack]

  - Max Depth = 24
  - Call Chain = usart_receive_config
  [Called By]
  - >> USART0_Init

  usart_stop_bit_set (Thumb, 52 bytes, Stack size 24 bytes, gd32e23x_usart.o(.text.usart_stop_bit_set))
  [Stack]

  - Max Depth = 24
  - Call Chain = usart_stop_bit_set
  [Called By]
  - >> USART0_Init

  usart_transmit_config (Thumb, 40 bytes, Stack size 24 bytes, gd32e23x_usart.o(.text.usart_transmit_config))
  [Stack]

  - Max Depth = 24
  - Call Chain = usart_transmit_config
  [Called By]
  - >> USART0_Init

  usart_word_length_set (Thumb, 52 bytes, Stack size 24 bytes, gd32e23x_usart.o(.text.usart_word_length_set))
  [Stack]

  - Max Depth = 24
  - Call Chain = usart_word_length_set
  [Called By]
  - >> USART0_Init

  __0sprintf (Thumb, 36 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), UNUSED)

  __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))
  [Stack]

  - Max Depth = 24
  - Call Chain = sprintf
  [Called By]
  - >> main

  __ARM_clz (Thumb, 46 bytes, Stack size 0 bytes, depilogue.o(i.__ARM_clz))
  [Called By]

  - >> _double_epilogue

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

  ### Local Symbols

  SysTick_Config (Thumb, 88 bytes, Stack size 24 bytes, systick.o(.text.SysTick_Config))
  [Stack]

  - Max Depth = 56
  - Call Chain = SysTick_Config ⇒ __NVIC_SetPriority
  [Calls]
  - >> __NVIC_SetPriority
  [Called By]
  - >> systick_config

  __NVIC_SetPriority (Thumb, 144 bytes, Stack size 32 bytes, systick.o(.text.__NVIC_SetPriority))
  [Stack]

  - Max Depth = 32
  - Call Chain = __NVIC_SetPriority
  [Called By]
  - >> SysTick_Config
  - >> systick_config

  system_clock_72m_hxtal (Thumb, 232 bytes, Stack size 12 bytes, system_gd32e23x.o(.text.system_clock_72m_hxtal))
  [Stack]

  - Max Depth = 12
  - Call Chain = system_clock_72m_hxtal
  [Called By]
  - >> system_clock_config

  system_clock_config (Thumb, 8 bytes, Stack size 8 bytes, system_gd32e23x.o(.text.system_clock_config))
  [Stack]

  - Max Depth = 20
  - Call Chain = system_clock_config ⇒ system_clock_72m_hxtal
  [Calls]
  - >> system_clock_72m_hxtal
  [Called By]
  - >> SystemInit

  __NVIC_EnableIRQ (Thumb, 60 bytes, Stack size 8 bytes, gd32e23x_misc.o(.text.__NVIC_EnableIRQ))
  [Stack]

  - Max Depth = 8
  - Call Chain = __NVIC_EnableIRQ
  [Called By]
  - >> nvic_irq_enable

  __NVIC_SetPriority (Thumb, 144 bytes, Stack size 32 bytes, gd32e23x_misc.o(.text.__NVIC_SetPriority))
  [Stack]

  - Max Depth = 32
  - Call Chain = __NVIC_SetPriority
  [Called By]
  - >> nvic_irq_enable

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

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

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

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

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

  - >> _printf_core

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

  - >> _printf_core

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

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

  ### Undefined Global Symbols