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

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Fri Aug 29 11:28:15 2025

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

### Call chain for Maximum Stack Depth:

main ⇒ ClockInit ⇒ ClockInitSet ⇒ pow ⇒ __kernel_poly ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round

### Mutually Recursive functions

- NMI_Handler ⇒ NMI_Handler
- HardFault_Handler ⇒ HardFault_Handler
- SVC_Handler ⇒ SVC_Handler
- PendSV_Handler ⇒ PendSV_Handler
- SysTick_Handler ⇒ SysTick_Handler
- ADC_Handler ⇒ ADC_Handler

  ### Function Pointers

  - ADC_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - CHARGER_END_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - CHARGER_OK_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - COMP0_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - COMP1_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - DUALTIMER_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - GPIO0_7_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - GPIO16_23_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - GPIO8_15_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - HardFault_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - I2C0_Error_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - I2C0_Event_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - I2C1_Error_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - I2C1_Event_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - LCD_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - LVD_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - MTP_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - NMI_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - OVER_TEMP_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - PWM_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - PendSV_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - RTC_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - Reset_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - SPI0_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - SPI1_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - SVC_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - SysTick_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - SystemInit from system_cmsdk_cm0.o(i.SystemInit) referenced from startup_cmsdk_cm0.o(.text)
  - TIMER0_Handler from ens1_timer.o(i.TIMER0_Handler) referenced from startup_cmsdk_cm0.o(RESET)
  - TIMER1_Handler from ens1_timer.o(i.TIMER1_Handler) referenced from startup_cmsdk_cm0.o(RESET)
  - UART0_Handler from ens1_uart.o(i.UART0_Handler) referenced from startup_cmsdk_cm0.o(RESET)
  - UART1_Handler from ens1_uart.o(i.UART1_Handler) referenced from startup_cmsdk_cm0.o(RESET)
  - WG_DRV_Handler from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
  - __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup_cmsdk_cm0.o(.text)
  - fputc from retarget.o(i.fputc) referenced from printfb.o(i.__0printf$bare)
  - main from mian.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B)

  ### Global Symbols

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

  - startup_cmsdk_cm0.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_cmsdk_cm0.o(.text))
  [Address Reference Count : 1]

  - startup_cmsdk_cm0.o(RESET)

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

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

  HardFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_cmsdk_cm0.o(.text))
  [Calls]

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

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

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

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

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

  SysTick_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_cmsdk_cm0.o(.text))
  [Calls]

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

  ADC_Handler (Thumb, 0 bytes, Stack size 0 bytes, startup_cmsdk_cm0.o(.text))
  [Calls]

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

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

  - startup_cmsdk_cm0.o(RESET)

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

  - startup_cmsdk_cm0.o(RESET)

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

  - startup_cmsdk_cm0.o(RESET)

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

  - startup_cmsdk_cm0.o(RESET)

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

  - startup_cmsdk_cm0.o(RESET)

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

  - startup_cmsdk_cm0.o(RESET)

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

  - startup_cmsdk_cm0.o(RESET)

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

  - startup_cmsdk_cm0.o(RESET)

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

  - startup_cmsdk_cm0.o(RESET)

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

  - startup_cmsdk_cm0.o(RESET)

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

  - startup_cmsdk_cm0.o(RESET)

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

  - startup_cmsdk_cm0.o(RESET)

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

  - startup_cmsdk_cm0.o(RESET)

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

  - startup_cmsdk_cm0.o(RESET)

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

  - startup_cmsdk_cm0.o(RESET)

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

  - startup_cmsdk_cm0.o(RESET)

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

  - startup_cmsdk_cm0.o(RESET)

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

  - startup_cmsdk_cm0.o(RESET)

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

  - startup_cmsdk_cm0.o(RESET)

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

  - startup_cmsdk_cm0.o(RESET)

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

  - startup_cmsdk_cm0.o(RESET)

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

  - Max Depth = 12
  - Call Chain = __aeabi_uidivmod
  [Called By]
  - >> UART_Init
  - >> TIMER0_Init
  - >> EMS_Process_Ramp

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

  - >> EMS_Configure

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

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

  - >> Time_Manager_Init

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

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

  - >> __aeabi_memset

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

  - Max Depth = 48
  - Call Chain = __aeabi_ddiv ⇒ _double_round
  [Calls]
  - >> _double_round
  [Called By]
  - >> ClockInitSet
  - >> __mathlib_dbl_invalid
  - >> __mathlib_dbl_divzero
  - >> pow

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

  - Max Depth = 72
  - Call Chain = __aeabi_i2d ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> _double_epilogue
  [Called By]
  - >> ClockInitSet
  - >> pow

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

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

  __aeabi_d2uiz (Thumb, 50 bytes, Stack size 8 bytes, dfixui.o(.text))
  [Stack]

  - Max Depth = 16
  - Call Chain = __aeabi_d2uiz ⇒ __aeabi_llsr
  [Calls]
  - >> __aeabi_llsr
  [Called By]
  - >> ClockInitSet

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

  - Max Depth = 8
  - Call Chain = __aeabi_llsr
  [Called By]
  - >> __aeabi_d2uiz
  - >> _dsqrt
  - >> _double_epilogue

  _ll_ushift_r (Thumb, 0 bytes, Stack size 8 bytes, llushr.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_ddiv
  - >> _dsqrt
  - >> _double_epilogue
  - >> __aeabi_dadd

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

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

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

  - Max Depth = 104
  - Call Chain = __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> _double_epilogue
  - >> _double_round
  - >> __aeabi_lasr
  - >> __aeabi_llsl
  [Called By]
  - >> __kernel_poly
  - >> __mathlib_dbl_infnan2
  - >> __aeabi_dsub
  - >> __aeabi_drsub
  - >> pow

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

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

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

  - Max Depth = 112
  - Call Chain = __aeabi_drsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_dadd
  [Called By]
  - >> pow

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

  - Max Depth = 128
  - Call Chain = __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> _double_epilogue
  [Called By]
  - >> __kernel_poly
  - >> pow

  __ARM_scalbn (Thumb, 44 bytes, Stack size 16 bytes, dscalb.o(.text))
  [Stack]

  - Max Depth = 16
  - Call Chain = __ARM_scalbn
  [Called By]
  - >> __mathlib_dbl_underflow
  - >> __mathlib_dbl_overflow
  - >> pow

  scalbn (Thumb, 0 bytes, Stack size 16 bytes, dscalb.o(.text), UNUSED)

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

  - >> pow

  __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_llsl (Thumb, 32 bytes, Stack size 8 bytes, llshl.o(.text))
  [Stack]

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

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

  _dsqrt (Thumb, 162 bytes, Stack size 32 bytes, dsqrt.o(.text))
  [Stack]

  - Max Depth = 40
  - Call Chain = _dsqrt ⇒ _double_round
  [Calls]
  - >> _double_round
  - >> __aeabi_llsr
  [Called By]
  - >> sqrt

  CMSDK_timer_Init (Thumb, 26 bytes, Stack size 8 bytes, ens1_timer.o(i.CMSDK_timer_Init))
  [Stack]

  - Max Depth = 8
  - Call Chain = CMSDK_timer_Init
  [Called By]
  - >> TIMER0_Init

  ClockInit (Thumb, 14 bytes, Stack size 8 bytes, ens1_clock.o(i.ClockInit))
  [Stack]

  - Max Depth = 336
  - Call Chain = ClockInit ⇒ ClockInitSet ⇒ pow ⇒ __kernel_poly ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> ClockInitSet
  [Called By]
  - >> main

  ClockInitSet (Thumb, 348 bytes, Stack size 48 bytes, ens1_clock.o(i.ClockInitSet))
  [Stack]

  - Max Depth = 328
  - Call Chain = ClockInitSet ⇒ pow ⇒ __kernel_poly ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_ui2d
  - >> __aeabi_i2d
  - >> __aeabi_ddiv
  - >> __aeabi_d2uiz
  - >> pow
  [Called By]
  - >> ClockInit

  EMS_Configure (Thumb, 20 bytes, Stack size 8 bytes, ens1_wavegen.o(i.EMS_Configure))
  [Stack]

  - Max Depth = 8
  - Call Chain = EMS_Configure
  [Calls]
  - >> __aeabi_memcpy
  [Called By]
  - >> main

  EMS_Process (Thumb, 92 bytes, Stack size 8 bytes, ens1_wavegen.o(i.EMS_Process))
  [Stack]

  - Max Depth = 44
  - Call Chain = EMS_Process ⇒ EMS_Process_Ramp ⇒ __aeabi_uidivmod
  [Calls]
  - >> wavegen_driverA_sine_test
  - >> EMS_Process_Ramp
  [Called By]
  - >> main

  EMS_Process_Ramp (Thumb, 278 bytes, Stack size 24 bytes, ens1_wavegen.o(i.EMS_Process_Ramp))
  [Stack]

  - Max Depth = 36
  - Call Chain = EMS_Process_Ramp ⇒ __aeabi_uidivmod
  [Calls]
  - >> __aeabi_uidivmod
  [Called By]
  - >> EMS_Process

  EMS_Start (Thumb, 8 bytes, Stack size 4 bytes, ens1_wavegen.o(i.EMS_Start))
  [Stack]

  - Max Depth = 4
  - Call Chain = EMS_Start
  [Calls]
  - >> wavegen_Start
  [Called By]
  - >> main

  EMS_Stop (Thumb, 36 bytes, Stack size 4 bytes, ens1_wavegen.o(i.EMS_Stop))
  [Stack]

  - Max Depth = 4
  - Call Chain = EMS_Stop
  [Calls]
  - >> wavegen_Stop
  [Called By]
  - >> main

  GPIO_AltFunction (Thumb, 86 bytes, Stack size 8 bytes, ens1_gpio.o(i.GPIO_AltFunction))
  [Stack]

  - Max Depth = 8
  - Call Chain = GPIO_AltFunction
  [Called By]
  - >> UART_Init
  - >> GPIO_IO_Init

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

  - >> GPIO_Overturn

  GPIO_IO_Init (Thumb, 342 bytes, Stack size 36 bytes, ens1_gpio.o(i.GPIO_IO_Init))
  [Stack]

  - Max Depth = 44
  - Call Chain = GPIO_IO_Init ⇒ GPIO_AltFunction
  [Calls]
  - >> GPIO_AltFunction
  [Called By]
  - >> main

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

  - >> main

  GPIO_Overturn (Thumb, 40 bytes, Stack size 4 bytes, ens1_gpio.o(i.GPIO_Overturn))
  [Stack]

  - Max Depth = 4
  - Call Chain = GPIO_Overturn
  [Calls]
  - >> GPIO_SetOutput
  - >> GPIO_ResetOutput
  - >> GPIO_GetOutputValue
  [Called By]
  - >> main

  GPIO_ResetOutput (Thumb, 16 bytes, Stack size 0 bytes, ens1_gpio.o(i.GPIO_ResetOutput))
  [Called By]

  - >> GPIO_Overturn

  GPIO_SetOutput (Thumb, 16 bytes, Stack size 0 bytes, ens1_gpio.o(i.GPIO_SetOutput))
  [Called By]

  - >> GPIO_Overturn

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

  - >> main

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

  - >> UART_Init
  - >> TIMER0_Init

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

  - startup_cmsdk_cm0.o(.text)

  TIMER0_Handler (Thumb, 24 bytes, Stack size 4 bytes, ens1_timer.o(i.TIMER0_Handler))
  [Stack]

  - Max Depth = 4
  - Call Chain = TIMER0_Handler
  [Calls]
  - >> Time_Manager_Process
  [Address Reference Count : 1]
  - startup_cmsdk_cm0.o(RESET)

  TIMER0_Init (Thumb, 56 bytes, Stack size 16 bytes, ens1_timer.o(i.TIMER0_Init))
  [Stack]

  - Max Depth = 28
  - Call Chain = TIMER0_Init ⇒ __aeabi_uidivmod
  [Calls]
  - >> CMSDK_timer_Init
  - >> NVIC_EnableIRQ
  - >> NVIC_DisableIRQ
  - >> NVIC_ClearPendingIRQ
  - >> PCLK_Enable
  - >> __aeabi_uidivmod
  [Called By]
  - >> main

  TIMER1_Handler (Thumb, 18 bytes, Stack size 0 bytes, ens1_timer.o(i.TIMER1_Handler))
  [Address Reference Count : 1]

  - startup_cmsdk_cm0.o(RESET)

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

  - >> main

  Time_Manager_Init (Thumb, 20 bytes, Stack size 8 bytes, ens1_timer.o(i.Time_Manager_Init))
  [Stack]

  - Max Depth = 8
  - Call Chain = Time_Manager_Init
  [Calls]
  - >> __aeabi_memclr4
  - >> __aeabi_memclr
  [Called By]
  - >> main

  Time_Manager_Process (Thumb, 174 bytes, Stack size 0 bytes, ens1_timer.o(i.Time_Manager_Process))
  [Called By]

  - >> TIMER0_Handler

  UART0_Handler (Thumb, 108 bytes, Stack size 8 bytes, ens1_uart.o(i.UART0_Handler))
  [Stack]

  - Max Depth = 12
  - Call Chain = UART0_Handler ⇒ UartPutc
  [Calls]
  - >> UartPutc
  - >> UART_INT_TYPE
  - >> NVIC_ClearPendingIRQ
  [Address Reference Count : 1]
  - startup_cmsdk_cm0.o(RESET)

  UART1_Handler (Thumb, 92 bytes, Stack size 8 bytes, ens1_uart.o(i.UART1_Handler))
  [Stack]

  - Max Depth = 12
  - Call Chain = UART1_Handler ⇒ UartPutc
  [Calls]
  - >> UartPutc
  - >> UART_INT_TYPE
  - >> NVIC_ClearPendingIRQ
  [Address Reference Count : 1]
  - startup_cmsdk_cm0.o(RESET)

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

  - >> UartPutc

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

  - >> UART1_Handler
  - >> UART0_Handler

  UART_ITConfig (Thumb, 84 bytes, Stack size 16 bytes, ens1_uart.o(i.UART_ITConfig))
  [Stack]

  - Max Depth = 16
  - Call Chain = UART_ITConfig
  [Calls]
  - >> NVIC_EnableIRQ
  - >> NVIC_DisableIRQ
  - >> NVIC_ClearPendingIRQ
  [Called By]
  - >> main

  UART_Init (Thumb, 248 bytes, Stack size 24 bytes, ens1_uart.o(i.UART_Init))
  [Stack]

  - Max Depth = 36
  - Call Chain = UART_Init ⇒ __aeabi_uidivmod
  [Calls]
  - >> PCLK_Enable
  - >> GPIO_AltFunction
  - >> __aeabi_uidivmod
  [Called By]
  - >> main

  UartPutc (Thumb, 30 bytes, Stack size 4 bytes, ens1_uart.o(i.UartPutc))
  [Stack]

  - Max Depth = 4
  - Call Chain = UartPutc
  [Calls]
  - >> WRITE_UART_THRBuff
  - >> UARTLine_THREmpty
  [Called By]
  - >> fputc
  - >> UART1_Handler
  - >> UART0_Handler

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

  - >> UartPutc

  __0printf$bare (Thumb, 12 bytes, Stack size 8 bytes, printfb.o(i.__0printf$bare), UNUSED)
  [Calls]

  - >> _printf_core

  __1printf$bare (Thumb, 0 bytes, Stack size 8 bytes, printfb.o(i.__0printf$bare), UNUSED)

  __2printf (Thumb, 0 bytes, Stack size 8 bytes, printfb.o(i.__0printf$bare))
  [Stack]

  - Max Depth = 8
  - Call Chain = __2printf
  [Called By]
  - >> wavegen_driverA_sine_test

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

  - >> _double_epilogue

  __ARM_fpclassify (Thumb, 40 bytes, Stack size 0 bytes, fpclassify.o(i.__ARM_fpclassify))
  [Called By]

  - >> pow

  __kernel_poly (Thumb, 172 bytes, Stack size 24 bytes, poly.o(i.__kernel_poly))
  [Stack]

  - Max Depth = 152
  - Call Chain = __kernel_poly ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_dmul
  - >> __aeabi_dadd
  [Called By]
  - >> pow

  __mathlib_dbl_divzero (Thumb, 16 bytes, Stack size 8 bytes, dunder.o(i.__mathlib_dbl_divzero))
  [Stack]

  - Max Depth = 56
  - Call Chain = __mathlib_dbl_divzero ⇒ __aeabi_ddiv ⇒ _double_round
  [Calls]
  - >> __aeabi_ddiv
  [Called By]
  - >> pow

  __mathlib_dbl_infnan2 (Thumb, 8 bytes, Stack size 8 bytes, dunder.o(i.__mathlib_dbl_infnan2))
  [Stack]

  - Max Depth = 112
  - Call Chain = __mathlib_dbl_infnan2 ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_dadd
  [Called By]
  - >> pow

  __mathlib_dbl_invalid (Thumb, 16 bytes, Stack size 8 bytes, dunder.o(i.__mathlib_dbl_invalid))
  [Stack]

  - Max Depth = 56
  - Call Chain = __mathlib_dbl_invalid ⇒ __aeabi_ddiv ⇒ _double_round
  [Calls]
  - >> __aeabi_ddiv
  [Called By]
  - >> pow

  __mathlib_dbl_overflow (Thumb, 16 bytes, Stack size 8 bytes, dunder.o(i.__mathlib_dbl_overflow))
  [Stack]

  - Max Depth = 24
  - Call Chain = __mathlib_dbl_overflow ⇒ __ARM_scalbn
  [Calls]
  - >> __ARM_scalbn
  [Called By]
  - >> pow

  __mathlib_dbl_underflow (Thumb, 14 bytes, Stack size 8 bytes, dunder.o(i.__mathlib_dbl_underflow))
  [Stack]

  - Max Depth = 24
  - Call Chain = __mathlib_dbl_underflow ⇒ __ARM_scalbn
  [Calls]
  - >> __ARM_scalbn
  [Called By]
  - >> pow

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

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

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

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

  - >> sqrt
  - >> pow

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

  - >> wavegen_Init

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

  - Max Depth = 20
  - Call Chain = fputc ⇒ UartPutc
  [Calls]
  - >> UartPutc
  [Address Reference Count : 1]
  - printfb.o(i.__0printf$bare)

  main (Thumb, 222 bytes, Stack size 32 bytes, mian.o(i.main))
  [Stack]

  - Max Depth = 368
  - Call Chain = main ⇒ ClockInit ⇒ ClockInitSet ⇒ pow ⇒ __kernel_poly ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> wavegen_Init
  - >> UART_Init
  - >> UART_ITConfig
  - >> Time_Manager_Init
  - >> Time_Manager_GetFlags
  - >> TIMER0_Init
  - >> MTP_init
  - >> GPIO_Overturn
  - >> GPIO_Output
  - >> GPIO_IO_Init
  - >> EMS_Stop
  - >> EMS_Start
  - >> EMS_Process
  - >> EMS_Configure
  - >> ClockInit
  [Address Reference Count : 1]
  - entry9a.o(.ARM.Collect$$$$0000000B)

  pow (Thumb, 2548 bytes, Stack size 128 bytes, pow.o(i.pow))
  [Stack]

  - Max Depth = 280
  - Call Chain = pow ⇒ __kernel_poly ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_i2d
  - >> __aeabi_ddiv
  - >> sqrt
  - >> __kernel_poly
  - >> __ARM_fpclassify
  - >> __mathlib_dbl_underflow
  - >> __mathlib_dbl_overflow
  - >> __mathlib_dbl_invalid
  - >> __mathlib_dbl_infnan2
  - >> __mathlib_dbl_divzero
  - >> __aeabi_dsub
  - >> __aeabi_drsub
  - >> __aeabi_dmul
  - >> __aeabi_dadd
  - >> __aeabi_cdrcmple
  - >> __ARM_scalbn
  - >> __set_errno
  [Called By]
  - >> ClockInitSet

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

  - Max Depth = 64
  - Call Chain = sqrt ⇒ _dsqrt ⇒ _double_round
  [Calls]
  - >> _dsqrt
  - >> __set_errno
  [Called By]
  - >> pow

  wavegen_Init (Thumb, 26 bytes, Stack size 8 bytes, ens1_wavegen.o(i.wavegen_Init))
  [Stack]

  - Max Depth = 8
  - Call Chain = wavegen_Init
  [Calls]
  - >> boost_voltage_select_55V
  [Called By]
  - >> main

  wavegen_Start (Thumb, 50 bytes, Stack size 0 bytes, ens1_wavegen.o(i.wavegen_Start))
  [Called By]

  - >> EMS_Start

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

  - >> EMS_Stop

  wavegen_driverA_sine_test (Thumb, 98 bytes, Stack size 24 bytes, ens1_wavegen.o(i.wavegen_driverA_sine_test))
  [Stack]

  - Max Depth = 32
  - Call Chain = wavegen_driverA_sine_test ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> EMS_Process

  ### Local Symbols

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

  - >> UART1_Handler
  - >> UART0_Handler
  - >> UART_ITConfig

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

  - >> UART_ITConfig

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

  - >> UART_ITConfig

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

  - >> TIMER0_Init

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

  - >> TIMER0_Init

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

  - >> TIMER0_Init

  _printf_core (Thumb, 30 bytes, Stack size 24 bytes, printfb.o(i._printf_core), UNUSED)
  [Called By]

  - >> __0printf$bare

  ### Undefined Global Symbols