# Static Call Graph for image .\HT32F1253_DVB\Obj\HT32F1253_DVB.axf

#<CALLGRAPH># ARM Linker, 4.1 [Build 791]: Last Updated: Fri Mar 01 16:36:38 2013

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

### Call chain for Maximum Stack Depth:

main ⇒ Display_Delete ⇒ Display_Write ⇒ Display_Second_Line ⇒ delay_ms

### Mutually Recursive functions

- ADC_IRQHandler ⇒ ADC_IRQHandler
- BusFault_Handler ⇒ BusFault_Handler
- HardFault_Handler ⇒ HardFault_Handler
- MemManage_Handler ⇒ MemManage_Handler
- UsageFault_Handler ⇒ UsageFault_Handler

  ### Function Pointers

  - ADC_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - BOD_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - BusFault_Handler from ht32f125x_it.o(i.BusFault_Handler) referenced from startup_ht32f125x.o(RESET)
  - CKRDY_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - COMP_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - DebugMon_Handler from ht32f125x_it.o(i.DebugMon_Handler) referenced from startup_ht32f125x.o(RESET)
  - EVWUP_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - EXTI0_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - EXTI10_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - EXTI11_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - EXTI12_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - EXTI13_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - EXTI14_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - EXTI15_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - EXTI1_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - EXTI2_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - EXTI3_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - EXTI4_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - EXTI5_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - EXTI6_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - EXTI7_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - EXTI8_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - EXTI9_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - FLASH_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - GPTM0_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - GPTM1_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - HardFault_Handler from ht32f125x_it.o(i.HardFault_Handler) referenced from startup_ht32f125x.o(RESET)
  - I2C_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - LPWUP_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - LVD_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - MemManage_Handler from ht32f125x_it.o(i.MemManage_Handler) referenced from startup_ht32f125x.o(RESET)
  - NMI_Handler from ht32f125x_it.o(i.NMI_Handler) referenced from startup_ht32f125x.o(RESET)
  - PendSV_Handler from ht32f125x_it.o(i.PendSV_Handler) referenced from startup_ht32f125x.o(RESET)
  - RTC_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - Reset_Handler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - SPI_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - SVC_Handler from ht32f125x_it.o(i.SVC_Handler) referenced from startup_ht32f125x.o(RESET)
  - SysTick_Handler from ht32f125x_it.o(i.SysTick_Handler) referenced from startup_ht32f125x.o(RESET)
  - SystemInit from system_ht32f125x.o(i.SystemInit) referenced from startup_ht32f125x.o(RESET)
  - USART_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - UsageFault_Handler from ht32f125x_it.o(i.UsageFault_Handler) referenced from startup_ht32f125x.o(RESET)
  - WDT_IRQHandler from startup_ht32f125x.o(RESET) referenced from startup_ht32f125x.o(RESET)
  - __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup_ht32f125x.o(RESET)
  - main from main.o(i.main) referenced from entry8.o(.ARM.Collect$$$$00000009)

  ### Global Symbols

  Reset_Handler (Thumb, 8 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))

  ADC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Calls]

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

  BOD_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Address Reference Count : 1]

  - startup_ht32f125x.o(RESET)

  CKRDY_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Address Reference Count : 1]

  - startup_ht32f125x.o(RESET)

  COMP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Address Reference Count : 1]

  - startup_ht32f125x.o(RESET)

  EVWUP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Address Reference Count : 1]

  - startup_ht32f125x.o(RESET)

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

  - startup_ht32f125x.o(RESET)

  EXTI10_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Address Reference Count : 1]

  - startup_ht32f125x.o(RESET)

  EXTI11_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Address Reference Count : 1]

  - startup_ht32f125x.o(RESET)

  EXTI12_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Address Reference Count : 1]

  - startup_ht32f125x.o(RESET)

  EXTI13_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Address Reference Count : 1]

  - startup_ht32f125x.o(RESET)

  EXTI14_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Address Reference Count : 1]

  - startup_ht32f125x.o(RESET)

  EXTI15_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Address Reference Count : 1]

  - startup_ht32f125x.o(RESET)

  EXTI1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Address Reference Count : 1]

  - startup_ht32f125x.o(RESET)

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

  - startup_ht32f125x.o(RESET)

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

  - startup_ht32f125x.o(RESET)

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

  - startup_ht32f125x.o(RESET)

  EXTI5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Address Reference Count : 1]

  - startup_ht32f125x.o(RESET)

  EXTI6_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Address Reference Count : 1]

  - startup_ht32f125x.o(RESET)

  EXTI7_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Address Reference Count : 1]

  - startup_ht32f125x.o(RESET)

  EXTI8_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Address Reference Count : 1]

  - startup_ht32f125x.o(RESET)

  EXTI9_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Address Reference Count : 1]

  - startup_ht32f125x.o(RESET)

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

  - startup_ht32f125x.o(RESET)

  GPTM0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Address Reference Count : 1]

  - startup_ht32f125x.o(RESET)

  GPTM1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Address Reference Count : 1]

  - startup_ht32f125x.o(RESET)

  I2C_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Address Reference Count : 1]

  - startup_ht32f125x.o(RESET)

  LPWUP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Address Reference Count : 1]

  - startup_ht32f125x.o(RESET)

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

  - startup_ht32f125x.o(RESET)

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

  - startup_ht32f125x.o(RESET)

  SPI_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Address Reference Count : 1]

  - startup_ht32f125x.o(RESET)

  USART_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ht32f125x.o(RESET))
  [Address Reference Count : 1]

  - startup_ht32f125x.o(RESET)

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

  - startup_ht32f125x.o(RESET)

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

  - startup_ht32f125x.o(RESET)

  _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_init (Thumb, 0 bytes, Stack size unknown bytes, entry8.o(.ARM.Collect$$$$00000009))

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

  - >> Display_Error_Code

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

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

  - >> GPIO_Configuration

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

  - >> GPIO_Configuration

  BusFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, ht32f125x_it.o(i.BusFault_Handler))
  [Calls]

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

  Button_Detect (Thumb, 96 bytes, Stack size 16 bytes, main.o(i.Button_Detect))
  [Stack]

  - Max Depth = 16
  - Call Chain = Button_Detect
  [Calls]
  - >> Login_Detect
  - >> Erase_Detect
  - >> Del_Detect
  [Called By]
  - >> main

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

  - >> CKCU_Configuration

  CKCU_Configuration (Thumb, 30 bytes, Stack size 8 bytes, hardware.o(i.CKCU_Configuration))
  [Stack]

  - Max Depth = 16
  - Call Chain = CKCU_Configuration ⇒ CKCU_WaitHSEReady
  [Calls]
  - >> CKCU_WaitHSEReady
  - >> CKCU_SetUSARTPrescaler
  - >> CKCU_APBPerip0ClockConfig
  [Called By]
  - >> main

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

  - >> CKCU_WaitHSEReady

  CKCU_GetClocksFrequency (Thumb, 134 bytes, Stack size 20 bytes, ht32f125x_ckcu.o(i.CKCU_GetClocksFrequency))
  [Stack]

  - Max Depth = 20
  - Call Chain = CKCU_GetClocksFrequency
  [Called By]
  - >> USART_Init

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

  - >> CKCU_Configuration

  CKCU_WaitHSEReady (Thumb, 38 bytes, Stack size 8 bytes, ht32f125x_ckcu.o(i.CKCU_WaitHSEReady))
  [Stack]

  - Max Depth = 8
  - Call Chain = CKCU_WaitHSEReady
  [Calls]
  - >> CKCU_GetClockReadyStatus
  [Called By]
  - >> CKCU_Configuration

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

  - >> RemoveFinger
  - >> LED
  - >> Initialization
  - >> Identify
  - >> GetEnrollCount
  - >> Enroll_nth
  - >> Enroll_Start
  - >> DeleteAll
  - >> CheckEnroll
  - >> CaptureFinger

  CaptureFinger (Thumb, 100 bytes, Stack size 8 bytes, protocol.o(i.CaptureFinger))
  [Stack]

  - Max Depth = 40
  - Call Chain = CaptureFinger ⇒ SendCommand ⇒ SERIAL_PutChar
  [Calls]
  - >> SendCommand
  - >> ReceiveCommand
  - >> CheckChkSumOfRpsAckPkt
  - >> CalcChkSumOfCmdAckPkt
  [Called By]
  - >> main

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

  - >> RemoveFinger
  - >> LED
  - >> Initialization
  - >> Identify
  - >> GetEnrollCount
  - >> Enroll_nth
  - >> Enroll_Start
  - >> DeleteAll
  - >> CheckEnroll
  - >> CaptureFinger

  CheckEnroll (Thumb, 106 bytes, Stack size 8 bytes, protocol.o(i.CheckEnroll))
  [Stack]

  - Max Depth = 40
  - Call Chain = CheckEnroll ⇒ SendCommand ⇒ SERIAL_PutChar
  [Calls]
  - >> SendCommand
  - >> ReceiveCommand
  - >> CheckChkSumOfRpsAckPkt
  - >> CalcChkSumOfCmdAckPkt
  [Called By]
  - >> main

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

  - startup_ht32f125x.o(RESET)

  Del_Detect (Thumb, 10 bytes, Stack size 0 bytes, hardware.o(i.Del_Detect))
  [Calls]

  - >> GPIO_ReadInBit
  [Called By]
  - >> Button_Detect

  DeleteAll (Thumb, 98 bytes, Stack size 8 bytes, protocol.o(i.DeleteAll))
  [Stack]

  - Max Depth = 40
  - Call Chain = DeleteAll ⇒ SendCommand ⇒ SERIAL_PutChar
  [Calls]
  - >> SendCommand
  - >> ReceiveCommand
  - >> CheckChkSumOfRpsAckPkt
  - >> CalcChkSumOfCmdAckPkt
  [Called By]
  - >> main

  Display_Clear (Thumb, 60 bytes, Stack size 8 bytes, lcd.o(i.Display_Clear))
  [Stack]

  - Max Depth = 16
  - Call Chain = Display_Clear ⇒ delay_ms
  [Calls]
  - >> delay_ms
  - >> GPIO_WriteOutData
  - >> GPIO_SetOutBits
  - >> GPIO_ClearOutBits
  [Called By]
  - >> Display_init

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

  - >> Display_Put_Data

  Display_Delete (Thumb, 452 bytes, Stack size 88 bytes, lcd.o(i.Display_Delete))
  [Stack]

  - Max Depth = 120
  - Call Chain = Display_Delete ⇒ Display_Write ⇒ Display_Second_Line ⇒ delay_ms
  [Calls]
  - >> Display_Write
  [Called By]
  - >> main

  Display_Enroll (Thumb, 292 bytes, Stack size 48 bytes, lcd.o(i.Display_Enroll))
  [Stack]

  - Max Depth = 80
  - Call Chain = Display_Enroll ⇒ Display_Write ⇒ Display_Second_Line ⇒ delay_ms
  [Calls]
  - >> Display_Write
  [Called By]
  - >> main

  Display_Error (Thumb, 64 bytes, Stack size 40 bytes, lcd.o(i.Display_Error))
  [Stack]

  - Max Depth = 72
  - Call Chain = Display_Error ⇒ Display_Write ⇒ Display_Second_Line ⇒ delay_ms
  [Calls]
  - >> Display_Write
  [Called By]
  - >> main

  Display_Error_Code (Thumb, 320 bytes, Stack size 72 bytes, lcd.o(i.Display_Error_Code))
  [Stack]

  - Max Depth = 104
  - Call Chain = Display_Error_Code ⇒ Display_Write ⇒ Display_Second_Line ⇒ delay_ms
  [Calls]
  - >> Display_Write
  - >> strcpy
  [Called By]
  - >> main

  Display_Login (Thumb, 232 bytes, Stack size 48 bytes, lcd.o(i.Display_Login))
  [Stack]

  - Max Depth = 80
  - Call Chain = Display_Login ⇒ Display_Write ⇒ Display_Second_Line ⇒ delay_ms
  [Calls]
  - >> Display_Write
  [Called By]
  - >> main

  Display_Main (Thumb, 64 bytes, Stack size 40 bytes, lcd.o(i.Display_Main))
  [Stack]

  - Max Depth = 72
  - Call Chain = Display_Main ⇒ Display_Write ⇒ Display_Second_Line ⇒ delay_ms
  [Calls]
  - >> Display_Write
  [Called By]
  - >> main

  Display_Off (Thumb, 60 bytes, Stack size 8 bytes, lcd.o(i.Display_Off))
  [Stack]

  - Max Depth = 16
  - Call Chain = Display_Off ⇒ delay_ms
  [Calls]
  - >> delay_ms
  - >> GPIO_WriteOutData
  - >> GPIO_SetOutBits
  - >> GPIO_ClearOutBits
  [Called By]
  - >> Display_init

  Display_On (Thumb, 60 bytes, Stack size 8 bytes, lcd.o(i.Display_On))
  [Stack]

  - Max Depth = 16
  - Call Chain = Display_On ⇒ delay_ms
  [Calls]
  - >> delay_ms
  - >> GPIO_WriteOutData
  - >> GPIO_SetOutBits
  - >> GPIO_ClearOutBits
  [Called By]
  - >> Display_init

  Display_Press (Thumb, 64 bytes, Stack size 40 bytes, lcd.o(i.Display_Press))
  [Stack]

  - Max Depth = 72
  - Call Chain = Display_Press ⇒ Display_Write ⇒ Display_Second_Line ⇒ delay_ms
  [Calls]
  - >> Display_Write
  [Called By]
  - >> main

  Display_Put_Data (Thumb, 58 bytes, Stack size 16 bytes, lcd.o(i.Display_Put_Data))
  [Stack]

  - Max Depth = 16
  - Call Chain = Display_Put_Data
  [Calls]
  - >> GPIO_WriteOutData
  - >> Display_Delay
  - >> GPIO_SetOutBits
  - >> GPIO_ClearOutBits
  [Called By]
  - >> Display_Write

  Display_Remove (Thumb, 64 bytes, Stack size 40 bytes, lcd.o(i.Display_Remove))
  [Stack]

  - Max Depth = 72
  - Call Chain = Display_Remove ⇒ Display_Write ⇒ Display_Second_Line ⇒ delay_ms
  [Calls]
  - >> Display_Write
  [Called By]
  - >> main

  Display_Return_Home (Thumb, 60 bytes, Stack size 8 bytes, lcd.o(i.Display_Return_Home))
  [Stack]

  - Max Depth = 16
  - Call Chain = Display_Return_Home ⇒ delay_ms
  [Calls]
  - >> delay_ms
  - >> GPIO_WriteOutData
  - >> GPIO_SetOutBits
  - >> GPIO_ClearOutBits
  [Called By]
  - >> Display_Write

  Display_Second_Line (Thumb, 60 bytes, Stack size 8 bytes, lcd.o(i.Display_Second_Line))
  [Stack]

  - Max Depth = 16
  - Call Chain = Display_Second_Line ⇒ delay_ms
  [Calls]
  - >> delay_ms
  - >> GPIO_WriteOutData
  - >> GPIO_SetOutBits
  - >> GPIO_ClearOutBits
  [Called By]
  - >> Display_Write

  Display_Used (Thumb, 214 bytes, Stack size 40 bytes, lcd.o(i.Display_Used))
  [Stack]

  - Max Depth = 72
  - Call Chain = Display_Used ⇒ Display_Write ⇒ Display_Second_Line ⇒ delay_ms
  [Calls]
  - >> Display_Write
  [Called By]
  - >> main

  Display_Write (Thumb, 56 bytes, Stack size 16 bytes, lcd.o(i.Display_Write))
  [Stack]

  - Max Depth = 32
  - Call Chain = Display_Write ⇒ Display_Second_Line ⇒ delay_ms
  [Calls]
  - >> Display_Second_Line
  - >> Display_Return_Home
  - >> Display_Put_Data
  [Called By]
  - >> Display_init
  - >> Display_Used
  - >> Display_Remove
  - >> Display_Press
  - >> Display_Main
  - >> Display_Login
  - >> Display_Error_Code
  - >> Display_Error
  - >> Display_Enroll
  - >> Display_Delete

  Display_init (Thumb, 168 bytes, Stack size 48 bytes, lcd.o(i.Display_init))
  [Stack]

  - Max Depth = 80
  - Call Chain = Display_init ⇒ Display_Write ⇒ Display_Second_Line ⇒ delay_ms
  [Calls]
  - >> delay_ms
  - >> GPIO_WriteOutData
  - >> Display_Write
  - >> Display_On
  - >> Display_Off
  - >> Display_Clear
  - >> GPIO_SetOutBits
  - >> GPIO_ClearOutBits
  [Called By]
  - >> main

  Enroll_Start (Thumb, 106 bytes, Stack size 8 bytes, protocol.o(i.Enroll_Start))
  [Stack]

  - Max Depth = 40
  - Call Chain = Enroll_Start ⇒ SendCommand ⇒ SERIAL_PutChar
  [Calls]
  - >> SendCommand
  - >> ReceiveCommand
  - >> CheckChkSumOfRpsAckPkt
  - >> CalcChkSumOfCmdAckPkt
  [Called By]
  - >> main

  Enroll_nth (Thumb, 106 bytes, Stack size 8 bytes, protocol.o(i.Enroll_nth))
  [Stack]

  - Max Depth = 40
  - Call Chain = Enroll_nth ⇒ SendCommand ⇒ SERIAL_PutChar
  [Calls]
  - >> SendCommand
  - >> ReceiveCommand
  - >> CheckChkSumOfRpsAckPkt
  - >> CalcChkSumOfCmdAckPkt
  [Called By]
  - >> main

  Erase_Detect (Thumb, 10 bytes, Stack size 0 bytes, hardware.o(i.Erase_Detect))
  [Calls]

  - >> GPIO_ReadInBit
  [Called By]
  - >> Button_Detect

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

  - >> Display_Second_Line
  - >> Display_Return_Home
  - >> Display_Put_Data
  - >> Display_On
  - >> Display_Off
  - >> Display_Clear
  - >> GPIO_Configuration
  - >> Display_init
  - >> main

  GPIO_Configuration (Thumb, 450 bytes, Stack size 24 bytes, hardware.o(i.GPIO_Configuration))
  [Stack]

  - Max Depth = 24
  - Call Chain = GPIO_Configuration
  [Calls]
  - >> GPIO_PullResistorConfig
  - >> GPIO_InputConfig
  - >> GPIO_DirectionConfig
  - >> AFIO_GPBConfig
  - >> AFIO_GPAConfig
  - >> GPIO_WriteOutData
  - >> GPIO_SetOutBits
  - >> GPIO_ClearOutBits
  [Called By]
  - >> main

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

  - >> GPIO_Configuration

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

  - >> GPIO_Configuration

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

  - >> GPIO_Configuration

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

  - >> Login_Detect
  - >> Erase_Detect
  - >> Del_Detect

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

  - >> Display_Second_Line
  - >> Display_Return_Home
  - >> Display_Put_Data
  - >> Display_On
  - >> Display_Off
  - >> Display_Clear
  - >> GPIO_Configuration
  - >> Display_init
  - >> main

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

  - >> Display_Second_Line
  - >> Display_Return_Home
  - >> Display_Put_Data
  - >> Display_On
  - >> Display_Off
  - >> Display_Clear
  - >> GPIO_Configuration
  - >> Display_init

  GetEnrollCount (Thumb, 104 bytes, Stack size 8 bytes, protocol.o(i.GetEnrollCount))
  [Stack]

  - Max Depth = 40
  - Call Chain = GetEnrollCount ⇒ SendCommand ⇒ SERIAL_PutChar
  [Calls]
  - >> SendCommand
  - >> ReceiveCommand
  - >> CheckChkSumOfRpsAckPkt
  - >> CalcChkSumOfCmdAckPkt
  [Called By]
  - >> main

  HardFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, ht32f125x_it.o(i.HardFault_Handler))
  [Calls]

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

  Identify (Thumb, 102 bytes, Stack size 8 bytes, protocol.o(i.Identify))
  [Stack]

  - Max Depth = 40
  - Call Chain = Identify ⇒ SendCommand ⇒ SERIAL_PutChar
  [Calls]
  - >> SendCommand
  - >> ReceiveCommand
  - >> CheckChkSumOfRpsAckPkt
  - >> CalcChkSumOfCmdAckPkt
  [Called By]
  - >> main

  Initialization (Thumb, 204 bytes, Stack size 32 bytes, protocol.o(i.Initialization))
  [Stack]

  - Max Depth = 64
  - Call Chain = Initialization ⇒ SendCommand ⇒ SERIAL_PutChar
  [Calls]
  - >> SendCommand
  - >> ReceiveCommand
  - >> CheckChkSumOfRpsAckPkt
  - >> CalcChkSumOfCmdAckPkt
  - >> malloc
  [Called By]
  - >> main

  LED (Thumb, 100 bytes, Stack size 8 bytes, protocol.o(i.LED))
  [Stack]

  - Max Depth = 40
  - Call Chain = LED ⇒ SendCommand ⇒ SERIAL_PutChar
  [Calls]
  - >> SendCommand
  - >> ReceiveCommand
  - >> CheckChkSumOfRpsAckPkt
  - >> CalcChkSumOfCmdAckPkt
  [Called By]
  - >> main

  Login_Detect (Thumb, 10 bytes, Stack size 0 bytes, hardware.o(i.Login_Detect))
  [Calls]

  - >> GPIO_ReadInBit
  [Called By]
  - >> Button_Detect

  MemManage_Handler (Thumb, 2 bytes, Stack size 0 bytes, ht32f125x_it.o(i.MemManage_Handler))
  [Calls]

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

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

  - startup_ht32f125x.o(RESET)

  NVIC_Configuration (Thumb, 28 bytes, Stack size 8 bytes, hardware.o(i.NVIC_Configuration))
  [Stack]

  - Max Depth = 8
  - Call Chain = NVIC_Configuration
  [Calls]
  - >> SYSTICK_SetReloadValue
  - >> SYSTICK_IntConfig
  - >> SYSTICK_ClockSourceConfig
  [Called By]
  - >> main

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

  - startup_ht32f125x.o(RESET)

  ReceiveCommand (Thumb, 30 bytes, Stack size 16 bytes, hardware.o(i.ReceiveCommand))
  [Stack]

  - Max Depth = 24
  - Call Chain = ReceiveCommand ⇒ SERIAL_GetChar
  [Calls]
  - >> SERIAL_GetChar
  [Called By]
  - >> RemoveFinger
  - >> LED
  - >> Initialization
  - >> Identify
  - >> GetEnrollCount
  - >> Enroll_nth
  - >> Enroll_Start
  - >> DeleteAll
  - >> CheckEnroll
  - >> CaptureFinger

  RemoveFinger (Thumb, 104 bytes, Stack size 8 bytes, protocol.o(i.RemoveFinger))
  [Stack]

  - Max Depth = 40
  - Call Chain = RemoveFinger ⇒ SendCommand ⇒ SERIAL_PutChar
  [Calls]
  - >> SendCommand
  - >> ReceiveCommand
  - >> CheckChkSumOfRpsAckPkt
  - >> CalcChkSumOfCmdAckPkt
  [Called By]
  - >> main

  SERIAL_GetChar (Thumb, 28 bytes, Stack size 8 bytes, ht32f125x_serial.o(i.SERIAL_GetChar))
  [Stack]

  - Max Depth = 8
  - Call Chain = SERIAL_GetChar
  [Calls]
  - >> USART_ReceiveData
  - >> USART_GetLineStatus
  [Called By]
  - >> ReceiveCommand

  SERIAL_PutChar (Thumb, 32 bytes, Stack size 16 bytes, ht32f125x_serial.o(i.SERIAL_PutChar))
  [Stack]

  - Max Depth = 16
  - Call Chain = SERIAL_PutChar
  [Calls]
  - >> USART_SendData
  - >> USART_GetLineStatus
  [Called By]
  - >> SendCommand

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

  - startup_ht32f125x.o(RESET)

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

  - >> NVIC_Configuration

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

  - >> delay_ms
  - >> main

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

  - >> NVIC_Configuration

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

  - >> NVIC_Configuration

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

  - Max Depth = 32
  - Call Chain = SendCommand ⇒ SERIAL_PutChar
  [Calls]
  - >> SERIAL_PutChar
  [Called By]
  - >> RemoveFinger
  - >> LED
  - >> Initialization
  - >> Identify
  - >> GetEnrollCount
  - >> Enroll_nth
  - >> Enroll_Start
  - >> DeleteAll
  - >> CheckEnroll
  - >> CaptureFinger

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

  - startup_ht32f125x.o(RESET)

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

  - startup_ht32f125x.o(RESET)

  USART_Configuration (Thumb, 40 bytes, Stack size 16 bytes, hardware.o(i.USART_Configuration))
  [Stack]

  - Max Depth = 68
  - Call Chain = USART_Configuration ⇒ USART_Init ⇒ CKCU_GetClocksFrequency
  [Calls]
  - >> USART_Init
  [Called By]
  - >> main

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

  - >> SERIAL_PutChar
  - >> SERIAL_GetChar

  USART_Init (Thumb, 60 bytes, Stack size 32 bytes, ht32f125x_usart.o(i.USART_Init))
  [Stack]

  - Max Depth = 52
  - Call Chain = USART_Init ⇒ CKCU_GetClocksFrequency
  [Calls]
  - >> CKCU_GetClocksFrequency
  [Called By]
  - >> USART_Configuration

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

  - >> SERIAL_GetChar

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

  - >> SERIAL_PutChar

  UsageFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, ht32f125x_it.o(i.UsageFault_Handler))
  [Calls]

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

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

  delay_ms (Thumb, 40 bytes, Stack size 8 bytes, hardware.o(i.delay_ms))
  [Stack]

  - Max Depth = 8
  - Call Chain = delay_ms
  [Calls]
  - >> SYSTICK_CounterCmd
  [Called By]
  - >> Display_Second_Line
  - >> Display_Return_Home
  - >> Display_On
  - >> Display_Off
  - >> Display_Clear
  - >> Display_init

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

  - Max Depth = 128
  - Call Chain = main ⇒ Display_Delete ⇒ Display_Write ⇒ Display_Second_Line ⇒ delay_ms
  [Calls]
  - >> USART_Configuration
  - >> SYSTICK_CounterCmd
  - >> RemoveFinger
  - >> NVIC_Configuration
  - >> LED
  - >> Initialization
  - >> Identify
  - >> GetEnrollCount
  - >> GPIO_SetOutBits
  - >> GPIO_Configuration
  - >> GPIO_ClearOutBits
  - >> Enroll_nth
  - >> Enroll_Start
  - >> Display_init
  - >> Display_Used
  - >> Display_Remove
  - >> Display_Press
  - >> Display_Main
  - >> Display_Login
  - >> Display_Error_Code
  - >> Display_Error
  - >> Display_Enroll
  - >> Display_Delete
  - >> DeleteAll
  - >> CheckEnroll
  - >> CaptureFinger
  - >> CKCU_Configuration
  - >> Button_Detect
  [Address Reference Count : 1]
  - entry8.o(.ARM.Collect$$$$00000009)

  malloc (Thumb, 92 bytes, Stack size 20 bytes, malloc.o(i.malloc))
  [Stack]

  - Max Depth = 20
  - Call Chain = malloc
  [Called By]
  - >> Initialization

  ### Local Symbols

  ### Undefined Global Symbols