# Static Call Graph for image .\Out_Files\UM321xF.axf

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Thu Jul 13 15:49:51 2023

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

### Call chain for Maximum Stack Depth:

main ⇒ soc_test ⇒ eflash_test ⇒ eflash_sn_test ⇒ printf_buff_byte ⇒ __2printf

### Mutually Recursive functions

- NMI_Handler ⇒ NMI_Handler
- HardFault_Handler ⇒ HardFault_Handler
- SVC_Handler ⇒ SVC_Handler
- PendSV_Handler ⇒ PendSV_Handler
- ADC_IRQHandler ⇒ ADC_IRQHandler

  ### Function Pointers

  - ADC_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - ANALOG_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - ATIMER_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - BTIMER01_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - BTIMER23_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - CAN_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - DMA_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - FLASH_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - GPIO_PA_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - GPIO_PB_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - GPIO_PC_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - GPIO_PD_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - GPIO_PE_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - GPIO_PF_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - GPIO_PG_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - GTIMER0_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - GTIMER1_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - GTIMER2_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - HardFault_Handler from startup.o(.text) referenced from startup.o(RESET)
  - I2C0_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - I2C1_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - LPTIMER01_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - LPTIMER23_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - LPUART_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - NMI_Handler from startup.o(.text) referenced from startup.o(RESET)
  - PendSV_Handler from startup.o(.text) referenced from startup.o(RESET)
  - QSPI_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - RTC_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - Reset_Handler from startup.o(.text) referenced from startup.o(RESET)
  - SPI0_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - SPI1_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - SVC_Handler from startup.o(.text) referenced from startup.o(RESET)
  - SysTick_Handler from systick.o(i.SysTick_Handler) referenced from startup.o(RESET)
  - UART0_IRQHandler from uart0.o(i.UART0_IRQHandler) referenced from startup.o(RESET)
  - UART1_IRQHandler from uart1.o(i.UART1_IRQHandler) referenced from startup.o(RESET)
  - UART2_IRQHandler from uart2.o(i.UART2_IRQHandler) referenced from startup.o(RESET)
  - WDT_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - WWDT_IRQHandler from startup.o(.text) referenced from startup.o(RESET)
  - __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup.o(.text)
  - fputc from common.o(i.fputc) referenced from printf5.o(i.__0printf$5)
  - main from main.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B)
  - systick_irq_func from common.o(i.systick_irq_func) referenced from common.o(i.delay_init)
  - uart1_rec_pro from app.o(i.uart1_rec_pro) referenced from app.o(i.uart_init)
  - uart2_rec_pro from app.o(i.uart2_rec_pro) referenced from app.o(i.uart_init)

  ### Global Symbols

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

  - startup.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, 4 bytes, Stack size 0 bytes, startup.o(.text))
  [Address Reference Count : 1]

  - startup.o(RESET)

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

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

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

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

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

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

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

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

  ADC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup.o(.text))
  [Calls]

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

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.o(RESET)

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

  - startup.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]
  - >> eflash_init
  - >> uart2_init
  - >> uart1_init
  - >> delay_init
  - >> clock_init

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

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

  __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), UNUSED)
  [Called By]

  - >> __aeabi_uldivmod

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

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

  - >> __aeabi_uldivmod

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

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

  - startup.o(RESET)

  SystemInit (Thumb, 66 bytes, Stack size 8 bytes, system_um321xf.o(i.SystemInit))
  [Stack]

  - Max Depth = 60
  - Call Chain = SystemInit ⇒ clock_init ⇒ __aeabi_uidivmod
  [Calls]
  - >> clock_init
  [Called By]
  - >> main

  UART0_IRQHandler (Thumb, 36 bytes, Stack size 8 bytes, uart0.o(i.UART0_IRQHandler))
  [Stack]

  - Max Depth = 8
  - Call Chain = UART0_IRQHandler
  [Address Reference Count : 1]
  - startup.o(RESET)

  UART1_IRQHandler (Thumb, 24 bytes, Stack size 0 bytes, uart1.o(i.UART1_IRQHandler))
  [Address Reference Count : 1]

  - startup.o(RESET)

  UART2_IRQHandler (Thumb, 34 bytes, Stack size 8 bytes, uart2.o(i.UART2_IRQHandler))
  [Stack]

  - Max Depth = 8
  - Call Chain = UART2_IRQHandler
  [Address Reference Count : 1]
  - startup.o(RESET)

  __0printf$5 (Thumb, 24 bytes, Stack size 24 bytes, printf5.o(i.__0printf$5), UNUSED)
  [Calls]

  - >> _printf_core

  __1printf$5 (Thumb, 0 bytes, Stack size 24 bytes, printf5.o(i.__0printf$5), UNUSED)

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

  - Max Depth = 24
  - Call Chain = __2printf
  [Called By]
  - >> eflash_test
  - >> eflash_sn_test
  - >> systick_irq_func
  - >> printf_buff_byte

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

  clock_init (Thumb, 348 bytes, Stack size 40 bytes, system_um321xf.o(i.clock_init))
  [Stack]

  - Max Depth = 52
  - Call Chain = clock_init ⇒ __aeabi_uidivmod
  [Calls]
  - >> __aeabi_uidivmod
  [Called By]
  - >> SystemInit

  delay_init (Thumb, 50 bytes, Stack size 8 bytes, common.o(i.delay_init))
  [Stack]

  - Max Depth = 20
  - Call Chain = delay_init ⇒ __aeabi_uidivmod
  [Calls]
  - >> __aeabi_uidivmod
  - >> systick_init
  [Called By]
  - >> main

  eflash_erase_page (Thumb, 52 bytes, Stack size 8 bytes, flash.o(i.eflash_erase_page))
  [Stack]

  - Max Depth = 8
  - Call Chain = eflash_erase_page
  [Called By]
  - >> eflash_test

  eflash_init (Thumb, 62 bytes, Stack size 8 bytes, flash.o(i.eflash_init))
  [Stack]

  - Max Depth = 20
  - Call Chain = eflash_init ⇒ __aeabi_uidivmod
  [Calls]
  - >> __aeabi_uidivmod
  [Called By]
  - >> eflash_test

  eflash_sn_test (Thumb, 92 bytes, Stack size 32 bytes, app.o(i.eflash_sn_test))
  [Stack]

  - Max Depth = 72
  - Call Chain = eflash_sn_test ⇒ printf_buff_byte ⇒ __2printf
  [Calls]
  - >> read_sequence
  - >> read_UID
  - >> printf_buff_byte
  - >> __2printf
  [Called By]
  - >> eflash_test

  eflash_test (Thumb, 78 bytes, Stack size 8 bytes, app.o(i.eflash_test))
  [Stack]

  - Max Depth = 80
  - Call Chain = eflash_test ⇒ eflash_sn_test ⇒ printf_buff_byte ⇒ __2printf
  [Calls]
  - >> eflash_sn_test
  - >> eflash_write_word
  - >> eflash_init
  - >> eflash_erase_page
  - >> __2printf
  [Called By]
  - >> soc_test

  eflash_write_word (Thumb, 52 bytes, Stack size 12 bytes, flash.o(i.eflash_write_word))
  [Stack]

  - Max Depth = 12
  - Call Chain = eflash_write_word
  [Called By]
  - >> eflash_test

  fputc (Thumb, 14 bytes, Stack size 8 bytes, common.o(i.fputc))
  [Stack]

  - Max Depth = 8
  - Call Chain = fputc
  [Calls]
  - >> uart1_send_byte
  [Address Reference Count : 1]
  - printf5.o(i.__0printf$5)

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

  - Max Depth = 88
  - Call Chain = main ⇒ soc_test ⇒ eflash_test ⇒ eflash_sn_test ⇒ printf_buff_byte ⇒ __2printf
  [Calls]
  - >> uart_init
  - >> soc_test
  - >> delay_init
  - >> SystemInit
  [Address Reference Count : 1]
  - entry9a.o(.ARM.Collect$$$$0000000B)

  printf_buff_byte (Thumb, 34 bytes, Stack size 16 bytes, common.o(i.printf_buff_byte))
  [Stack]

  - Max Depth = 40
  - Call Chain = printf_buff_byte ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> eflash_sn_test

  read_UID (Thumb, 108 bytes, Stack size 16 bytes, flash.o(i.read_UID))
  [Stack]

  - Max Depth = 16
  - Call Chain = read_UID
  [Called By]
  - >> eflash_sn_test

  read_sequence (Thumb, 92 bytes, Stack size 16 bytes, flash.o(i.read_sequence))
  [Stack]

  - Max Depth = 16
  - Call Chain = read_sequence
  [Called By]
  - >> eflash_sn_test

  soc_test (Thumb, 8 bytes, Stack size 8 bytes, app.o(i.soc_test))
  [Stack]

  - Max Depth = 88
  - Call Chain = soc_test ⇒ eflash_test ⇒ eflash_sn_test ⇒ printf_buff_byte ⇒ __2printf
  [Calls]
  - >> eflash_test
  [Called By]
  - >> main

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

  - >> delay_init

  systick_irq_func (Thumb, 10 bytes, Stack size 8 bytes, common.o(i.systick_irq_func))
  [Stack]

  - Max Depth = 32
  - Call Chain = systick_irq_func ⇒ __2printf
  [Calls]
  - >> __2printf
  [Address Reference Count : 1]
  - common.o(i.delay_init)

  uart1_init (Thumb, 148 bytes, Stack size 16 bytes, uart1.o(i.uart1_init))
  [Stack]

  - Max Depth = 28
  - Call Chain = uart1_init ⇒ __aeabi_uidivmod
  [Calls]
  - >> __aeabi_uidivmod
  [Called By]
  - >> uart_init

  uart1_irq_init (Thumb, 48 bytes, Stack size 4 bytes, uart1.o(i.uart1_irq_init))
  [Stack]

  - Max Depth = 4
  - Call Chain = uart1_irq_init
  [Called By]
  - >> uart_init

  uart1_rec_pro (Thumb, 24 bytes, Stack size 8 bytes, app.o(i.uart1_rec_pro))
  [Stack]

  - Max Depth = 8
  - Call Chain = uart1_rec_pro
  [Calls]
  - >> uart1_recv_byte
  [Address Reference Count : 1]
  - app.o(i.uart_init)

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

  - >> uart1_rec_pro

  uart1_send_byte (Thumb, 30 bytes, Stack size 0 bytes, uart1.o(i.uart1_send_byte))
  [Called By]

  - >> fputc

  uart2_init (Thumb, 124 bytes, Stack size 16 bytes, uart2.o(i.uart2_init))
  [Stack]

  - Max Depth = 28
  - Call Chain = uart2_init ⇒ __aeabi_uidivmod
  [Calls]
  - >> __aeabi_uidivmod
  [Called By]
  - >> uart_init

  uart2_irq_init (Thumb, 50 bytes, Stack size 8 bytes, uart2.o(i.uart2_irq_init))
  [Stack]

  - Max Depth = 8
  - Call Chain = uart2_irq_init
  [Called By]
  - >> uart_init

  uart2_rec_pro (Thumb, 24 bytes, Stack size 8 bytes, app.o(i.uart2_rec_pro))
  [Stack]

  - Max Depth = 8
  - Call Chain = uart2_rec_pro
  [Calls]
  - >> uart2_recv_byte
  [Address Reference Count : 1]
  - app.o(i.uart_init)

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

  - >> uart2_rec_pro

  uart_init (Thumb, 50 bytes, Stack size 24 bytes, app.o(i.uart_init))
  [Stack]

  - Max Depth = 52
  - Call Chain = uart_init ⇒ uart2_init ⇒ __aeabi_uidivmod
  [Calls]
  - >> uart2_irq_init
  - >> uart2_init
  - >> uart1_irq_init
  - >> uart1_init
  [Called By]
  - >> main

  ### Local Symbols

  _printf_core (Thumb, 688 bytes, Stack size 96 bytes, printf5.o(i._printf_core), UNUSED)
  [Calls]

  - >> __aeabi_uldivmod
  [Called By]
  - >> __0printf$5

  ### Undefined Global Symbols