Static Call Graph - [.\output\obj\demo.axf]

# Static Call Graph for image .\output\obj\demo.axf

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Thu Sep 10 14:11:56 2020

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

### Call chain for Maximum Stack Depth:

mcu_uart_user_init ⇒ mcu_uart_init ⇒ USART_Init ⇒ RCC_GetClocksFreq

### Mutually Recursive functions

- DMA1_Channel2_IRQHandler ⇒ DMA1_Channel2_IRQHandler

  ### Function Pointers

  - ADC1_2_IRQHandler from interrupt.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - BusFault_Handler from interrupt.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - CAN1_RX1_IRQHandler from interrupt.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - CAN1_SCE_IRQHandler from interrupt.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - DMA1_Channel1_IRQHandler from interrupt.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - DMA1_Channel2_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - DMA1_Channel3_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - DMA1_Channel4_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - DMA1_Channel5_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - DMA1_Channel6_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - DMA1_Channel7_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - DebugMon_Handler from interrupt.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - EXTI0_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - EXTI15_10_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - EXTI1_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - EXTI2_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - EXTI3_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - EXTI4_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - EXTI9_5_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - FLASH_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - HardFault_Handler from interrupt.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - I2C1_ER_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - I2C1_EV_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - I2C2_ER_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - I2C2_EV_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - MemManage_Handler from interrupt.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - NMI_Handler from interrupt.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - PVD_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - PendSV_Handler from interrupt.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - RCC_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - RTCAlarm_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - RTC_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - Reset_Handler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - SPI1_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - SPI2_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - SVC_Handler from interrupt.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - SysTick_Handler from interrupt.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - SystemInit from system_stm32f10x.o(.text) referenced from startup_stm32f10x_md.o(.text)
  - TAMPER_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - TIM1_BRK_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - TIM1_CC_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - TIM1_TRG_COM_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - TIM1_UP_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - TIM2_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - TIM3_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - TIM4_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - USART1_IRQHandler from interrupt.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - USART2_IRQHandler from interrupt.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - USART3_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - USBWakeUp_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - USB_HP_CAN1_TX_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - USB_LP_CAN1_RX0_IRQHandler from interrupt.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - UsageFault_Handler from interrupt.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - WWDG_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET)
  - __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup_stm32f10x_md.o(.text)
  - fputc from mcu_hal_user.o(.text) referenced from printf1.o(i.__0printf$1)
  - main from main.o(.text) referenced from entry9a.o(.ARM.Collect$$$$0000000B)
  - mcu_tim_delayus from mcu_hal.o(.text) referenced from timer_user.o(.text)
  - mcu_tim_init from mcu_hal.o(.text) referenced from timer_user.o(.text)
  - mcu_uart_tx from mcu_hal.o(.text) referenced from uart_tpm_user.o(.text)
  - mcu_uart_user_init from mcu_hal_user.o(.text) referenced from uart_tpm_user.o(.text)
  - modbus_recv_data from main.o(.text) referenced 2 times from uart_tpm_user.o(.data)

  ### Global Symbols

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

  - startup_stm32f10x_md.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))

  read_cmd_test_main (Thumb, 68 bytes, Stack size 8 bytes, main.o(.text))
  [Stack]

  - Max Depth = 48
  - Call Chain = read_cmd_test_main ⇒ uart_tpm_tx_data ⇒ crc16_calculate_modbus
  [Calls]
  - >> uart_tpm_tx_data
  - >> tim_get_count
  - >> tim_check_timeout
  [Called By]
  - >> cmd_test_main

  write_cmd_test_main (Thumb, 78 bytes, Stack size 8 bytes, main.o(.text), UNUSED)
  [Calls]

  - >> uart_tpm_tx_data
  - >> tim_get_count
  - >> tim_check_timeout

  cmd_test_main (Thumb, 8 bytes, Stack size 8 bytes, main.o(.text))
  [Stack]

  - Max Depth = 56
  - Call Chain = cmd_test_main ⇒ read_cmd_test_main ⇒ uart_tpm_tx_data ⇒ crc16_calculate_modbus
  [Calls]
  - >> read_cmd_test_main
  [Called By]
  - >> main

  modbus_recv_data (Thumb, 32 bytes, Stack size 16 bytes, main.o(.text))
  [Stack]

  - Max Depth = 40
  - Call Chain = modbus_recv_data ⇒ __2printf
  [Calls]
  - >> __2printf
  [Address Reference Count : 1]
  - uart_tpm_user.o(.data)

  main (Thumb, 32 bytes, Stack size 0 bytes, main.o(.text))
  [Stack]

  - Max Depth = 56
  - Call Chain = main ⇒ cmd_test_main ⇒ read_cmd_test_main ⇒ uart_tpm_tx_data ⇒ crc16_calculate_modbus
  [Calls]
  - >> uart_tpm_user_init
  - >> uart_tpm_main
  - >> tim_user_init
  - >> mcu_init
  - >> mcu_enable_irq
  - >> mcu_disable_irq
  - >> cmd_test_main
  [Address Reference Count : 1]
  - entry9a.o(.ARM.Collect$$$$0000000B)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

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

  ADC1_2_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, interrupt.o(.text))
  [Stack]

  - Max Depth = 44
  - Call Chain = ADC1_2_IRQHandler ⇒ mcu_adc_isr ⇒ ADC_RegularChannelConfig
  [Calls]
  - >> mcu_adc_isr
  [Address Reference Count : 1]
  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

  USART1_IRQHandler (Thumb, 32 bytes, Stack size 8 bytes, interrupt.o(.text))
  [Stack]

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

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

  - startup_stm32f10x_md.o(RESET)

  UART4_IRQHandler (Thumb, 22 bytes, Stack size 8 bytes, interrupt.o(.text), UNUSED)
  [Calls]

  - >> USART_ReceiveData
  - >> USART_GetITStatus

  TIM6_IRQHandler (Thumb, 2 bytes, Stack size 0 bytes, interrupt.o(.text), UNUSED)

  USB_LP_CAN1_RX0_IRQHandler (Thumb, 90 bytes, Stack size 8 bytes, interrupt.o(.text))
  [Stack]

  - Max Depth = 16
  - Call Chain = USB_LP_CAN1_RX0_IRQHandler ⇒ CAN_Receive
  [Calls]
  - >> CAN_Receive
  [Address Reference Count : 1]
  - startup_stm32f10x_md.o(RESET)

  CAN1_RX1_IRQHandler (Thumb, 90 bytes, Stack size 8 bytes, interrupt.o(.text))
  [Stack]

  - Max Depth = 16
  - Call Chain = CAN1_RX1_IRQHandler ⇒ CAN_Receive
  [Calls]
  - >> CAN_Receive
  [Address Reference Count : 1]
  - startup_stm32f10x_md.o(RESET)

  CAN1_SCE_IRQHandler (Thumb, 26 bytes, Stack size 8 bytes, interrupt.o(.text))
  [Stack]

  - Max Depth = 24
  - Call Chain = CAN1_SCE_IRQHandler ⇒ CAN_GetITStatus
  [Calls]
  - >> CAN_GetITStatus
  - >> CAN_ClearITPendingBit
  [Address Reference Count : 1]
  - startup_stm32f10x_md.o(RESET)

  PPP_IRQHandler (Thumb, 2 bytes, Stack size 0 bytes, interrupt.o(.text), UNUSED)

  mcu_init (Thumb, 32 bytes, Stack size 8 bytes, mcu_hal.o(.text))
  [Stack]

  - Max Depth = 36
  - Call Chain = mcu_init ⇒ SystemInit ⇒ SetSysClock ⇒ SetSysClockTo72
  [Calls]
  - >> SystemInit
  - >> RCC_APB2PeriphClockCmd
  - >> NVIC_PriorityGroupConfig
  - >> GPIO_PinRemapConfig
  [Called By]
  - >> main

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

  - >> main

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

  - >> main

  mcu_kick_dog (Thumb, 2 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_soft_reset (Thumb, 30 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_tim_init (Thumb, 92 bytes, Stack size 16 bytes, mcu_hal.o(.text))
  [Stack]

  - Max Depth = 16
  - Call Chain = mcu_tim_init
  [Called By]
  - >> mcu_tim_init_call
  [Address Reference Count : 1]
  - timer_user.o(.text)

  mcu_tim_init_call (Thumb, 18 bytes, Stack size 12 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> mcu_tim_init

  mcu_tim_delayus (Thumb, 102 bytes, Stack size 20 bytes, mcu_hal.o(.text))
  [Stack]

  - Max Depth = 20
  - Call Chain = mcu_tim_delayus
  [Address Reference Count : 1]
  - timer_user.o(.text)

  mcu_tim_isr (Thumb, 16 bytes, Stack size 8 bytes, mcu_hal.o(.text), UNUSED)

  mcu_ioin_init (Thumb, 212 bytes, Stack size 24 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> RCC_APB2PeriphClockCmd
  - >> GPIO_Init
  [Called By]
  - >> mcu_ioin_user_init

  mcu_ioin_get_ready (Thumb, 18 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_ioin_clr_ready (Thumb, 18 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_ioin_get_status (Thumb, 18 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_ioin_main (Thumb, 266 bytes, Stack size 16 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> updata_roll_count16
  - >> GPIO_ReadInputDataBit
  [Called By]
  - >> mcu_user_main

  mcu_ioout_init (Thumb, 346 bytes, Stack size 24 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> RCC_APB2PeriphClockCmd
  - >> GPIO_WriteBit
  - >> GPIO_Init
  [Called By]
  - >> mcu_ioout_user_init

  mcu_ioout_get_ready (Thumb, 18 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_ioout_clr_ready (Thumb, 18 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_ioout_set_status (Thumb, 16 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_ioout_get_status (Thumb, 18 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_ioout_toggle (Thumb, 38 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_ioout_set_status_hard (Thumb, 162 bytes, Stack size 16 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> updata_roll_count16
  - >> GPIO_WriteBit

  mcu_ioout_get_status_hard (Thumb, 74 bytes, Stack size 16 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> GPIO_ReadOutputDataBit

  mcu_ioout_toggle_hard (Thumb, 182 bytes, Stack size 16 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> updata_roll_count16
  - >> GPIO_WriteBit

  mcu_ioout_main (Thumb, 162 bytes, Stack size 16 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> updata_roll_count16
  - >> GPIO_WriteBit
  [Called By]
  - >> mcu_user_main

  mcu_dio_init (Thumb, 340 bytes, Stack size 24 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> RCC_APB2PeriphClockCmd
  - >> GPIO_WriteBit
  - >> GPIO_Init
  [Called By]
  - >> mcu_dio_user_init

  mcu_dio_set_status (Thumb, 110 bytes, Stack size 16 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> GPIO_WriteBit

  mcu_dio_toggle (Thumb, 58 bytes, Stack size 8 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> GPIO_FlipBits

  mcu_dio_get_status (Thumb, 58 bytes, Stack size 8 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> GPIO_ReadInputDataBit

  mcu_adc_init (Thumb, 264 bytes, Stack size 48 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> RCC_APB2PeriphClockCmd
  - >> RCC_ADCCLKConfig
  - >> NVIC_Init
  - >> GPIO_Init
  - >> ADC_StartCalibration
  - >> ADC_SoftwareStartConvCmd
  - >> ADC_ResetCalibration
  - >> ADC_RegularChannelConfig
  - >> ADC_Init
  - >> ADC_ITConfig
  - >> ADC_GetResetCalibrationStatus
  - >> ADC_GetCalibrationStatus
  - >> ADC_DeInit
  - >> ADC_Cmd
  [Called By]
  - >> mcu_adc_user_init

  mcu_adc_get_ready (Thumb, 18 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_adc_clr_ready (Thumb, 18 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_adc_get_voltage (Thumb, 18 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_adc_main (Thumb, 436 bytes, Stack size 8 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> updata_roll_count16
  - >> tim_check_timenow
  - >> ADC_SoftwareStartConvCmd
  - >> ADC_RegularChannelConfig
  - >> tim_get_count
  [Called By]
  - >> mcu_user_main

  mcu_adc_isr (Thumb, 212 bytes, Stack size 16 bytes, mcu_hal.o(.text))
  [Stack]

  - Max Depth = 36
  - Call Chain = mcu_adc_isr ⇒ ADC_RegularChannelConfig
  [Calls]
  - >> ADC_SoftwareStartConvCmd
  - >> ADC_RegularChannelConfig
  - >> ADC_GetITStatus
  - >> ADC_GetConversionValue
  - >> ADC_ClearITPendingBit
  - >> tim_get_count
  [Called By]
  - >> ADC1_2_IRQHandler

  mcu_adc_stop_cycle (Thumb, 2 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_adc_start_cycle (Thumb, 2 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_adc_trgget_voltage (Thumb, 6 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_adc_set_mux_callback (Thumb, 6 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_pwmo_init (Thumb, 28 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_pwmo_set_freq_duty (Thumb, 274 bytes, Stack size 8 bytes, mcu_hal.o(.text), UNUSED)

  mcu_pwmo_set_freq (Thumb, 252 bytes, Stack size 8 bytes, mcu_hal.o(.text), UNUSED)

  mcu_pwmo_set_duty (Thumb, 186 bytes, Stack size 8 bytes, mcu_hal.o(.text), UNUSED)

  mcu_pwmo_get (Thumb, 58 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_pwmo_get_src (Thumb, 22 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_pwmi_init (Thumb, 28 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_pwmi_get_ready (Thumb, 22 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_pwmi_clr_ready (Thumb, 22 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_pwmi_get (Thumb, 26 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_pwmi_get_src (Thumb, 22 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_pwmi_main (Thumb, 972 bytes, Stack size 24 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> updata_roll_count16

  mcu_pwmi_isr (Thumb, 2 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_flash_init (Thumb, 8 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_flash_get_data (Thumb, 22 bytes, Stack size 16 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> __aeabi_memcpy

  mcu_flash_set_data (Thumb, 132 bytes, Stack size 24 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> FLASH_Unlock
  - >> FLASH_ProgramHalfWord
  - >> FLASH_Lock

  mcu_flash_erase (Thumb, 40 bytes, Stack size 8 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> FLASH_Unlock
  - >> FLASH_Lock
  - >> FLASH_ErasePage

  mcu_flash_erase_set_calback (Thumb, 6 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_can_init (Thumb, 336 bytes, Stack size 24 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> RCC_APB2PeriphClockCmd
  - >> RCC_APB1PeriphClockCmd
  - >> NVIC_Init
  - >> GPIO_Init
  - >> CAN_Init
  - >> CAN_ITConfig
  - >> CAN_FilterInit
  - >> CAN_DeInit
  [Called By]
  - >> mcu_can_user_init

  mcu_can_reinit (Thumb, 318 bytes, Stack size 16 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> RCC_APB2PeriphClockCmd
  - >> RCC_APB1PeriphClockCmd
  - >> NVIC_Init
  - >> GPIO_Init
  - >> CAN_Init
  - >> CAN_ITConfig
  - >> CAN_FilterInit
  - >> CAN_DeInit

  mcu_can_send (Thumb, 130 bytes, Stack size 32 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> CAN_Transmit

  mcu_can_rx_isr (Thumb, 130 bytes, Stack size 16 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> CAN_Receive

  mcu_mspi_init (Thumb, 630 bytes, Stack size 24 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> SPI_Init
  - >> SPI_I2S_DeInit
  - >> SPI_Cmd
  - >> RCC_APB2PeriphClockCmd
  - >> RCC_APB1PeriphClockCmd
  - >> GPIO_SetBits
  - >> GPIO_ResetBits
  - >> GPIO_PinRemapConfig
  - >> GPIO_Init
  [Called By]
  - >> mcu_mspi_user_init

  mcu_mspi_txrx (Thumb, 100 bytes, Stack size 16 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> SPI_I2S_SendData
  - >> SPI_I2S_ReceiveData
  - >> SPI_I2S_GetFlagStatus

  mcu_mspi_txrx_continue (Thumb, 122 bytes, Stack size 24 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> SPI_I2S_SendData
  - >> SPI_I2S_ReceiveData
  - >> SPI_I2S_GetFlagStatus

  mcu_mspi_cs_enable (Thumb, 262 bytes, Stack size 16 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> GPIO_SetBits
  - >> GPIO_ResetBits
  - >> GPIO_Init

  mcu_mspi_cs_disable (Thumb, 156 bytes, Stack size 16 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> GPIO_SetBits
  - >> GPIO_ResetBits
  - >> GPIO_Init

  mcu_sspi_init (Thumb, 28 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_sspi_start (Thumb, 2 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_sspi_check_recv (Thumb, 20 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_sspi_get_recv (Thumb, 90 bytes, Stack size 16 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> __aeabi_memcpy

  mcu_sspi_stop (Thumb, 2 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_sspi_tx_isr (Thumb, 2 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_sspi_rx_isr (Thumb, 2 bytes, Stack size 0 bytes, mcu_hal.o(.text), UNUSED)

  mcu_uart_init (Thumb, 422 bytes, Stack size 24 bytes, mcu_hal.o(.text))
  [Stack]

  - Max Depth = 92
  - Call Chain = mcu_uart_init ⇒ USART_Init ⇒ RCC_GetClocksFreq
  [Calls]
  - >> USART_Init
  - >> USART_ITConfig
  - >> USART_DeInit
  - >> USART_Cmd
  - >> USART_ClearFlag
  - >> RCC_APB2PeriphClockCmd
  - >> RCC_APB1PeriphClockCmd
  - >> NVIC_Init
  - >> GPIO_PinRemapConfig
  - >> GPIO_Init
  [Called By]
  - >> mcu_uart_user_init

  mcu_uart_tx (Thumb, 72 bytes, Stack size 24 bytes, mcu_hal.o(.text))
  [Stack]

  - Max Depth = 24
  - Call Chain = mcu_uart_tx
  [Calls]
  - >> USART_SendData
  - >> USART_GetFlagStatus
  [Called By]
  - >> fputc
  [Address Reference Count : 1]
  - uart_tpm_user.o(.text)

  mcu_uart_rx_isr (Thumb, 114 bytes, Stack size 16 bytes, mcu_hal.o(.text), UNUSED)
  [Calls]

  - >> USART_ReceiveData
  - >> USART_GetITStatus

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

  - >> mcu_ioin_init
  [Called By]
  - >> mcu_user_init

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

  - >> mcu_ioout_init
  [Called By]
  - >> mcu_user_init

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

  - >> mcu_dio_init
  [Called By]
  - >> mcu_user_init

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

  - >> mcu_adc_init
  [Called By]
  - >> mcu_user_init

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

  - >> mcu_can_init

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

  - >> mcu_mspi_init
  [Called By]
  - >> mcu_user_init

  fputc (Thumb, 24 bytes, Stack size 16 bytes, mcu_hal_user.o(.text))
  [Stack]

  - Max Depth = 40
  - Call Chain = fputc ⇒ mcu_uart_tx
  [Calls]
  - >> mcu_uart_tx
  [Address Reference Count : 1]
  - printf1.o(i.__0printf$1)

  mcu_uart_user_init (Thumb, 12 bytes, Stack size 8 bytes, mcu_hal_user.o(.text))
  [Stack]

  - Max Depth = 100
  - Call Chain = mcu_uart_user_init ⇒ mcu_uart_init ⇒ USART_Init ⇒ RCC_GetClocksFreq
  [Calls]
  - >> mcu_uart_init
  [Address Reference Count : 1]
  - uart_tpm_user.o(.text)

  mcu_user_init (Thumb, 24 bytes, Stack size 8 bytes, mcu_hal_user.o(.text), UNUSED)
  [Calls]

  - >> mcu_mspi_user_init
  - >> mcu_adc_user_init
  - >> mcu_dio_user_init
  - >> mcu_ioout_user_init
  - >> mcu_ioin_user_init

  mcu_user_main (Thumb, 16 bytes, Stack size 8 bytes, mcu_hal_user.o(.text), UNUSED)
  [Calls]

  - >> mcu_adc_main
  - >> mcu_ioout_main
  - >> mcu_ioin_main

  tim_user_init (Thumb, 54 bytes, Stack size 40 bytes, timer_user.o(.text))
  [Stack]

  - Max Depth = 48
  - Call Chain = tim_user_init ⇒ tim_init
  [Calls]
  - >> tim_init
  [Called By]
  - >> main

  uart_tpm_user_init (Thumb, 54 bytes, Stack size 24 bytes, uart_tpm_user.o(.text))
  [Stack]

  - Max Depth = 40
  - Call Chain = uart_tpm_user_init ⇒ uart_tpm_init
  [Calls]
  - >> uart_tpm_init
  [Called By]
  - >> main

  memchk (Thumb, 36 bytes, Stack size 12 bytes, public.o(.text), UNUSED)

  ascii_to_int (Thumb, 54 bytes, Stack size 0 bytes, public.o(.text), UNUSED)
  [Called By]

  - >> mot_check_sum_ascii
  - >> hex_check_sum_ascii
  - >> ascii_to_hex

  hex_to_ascii (Thumb, 50 bytes, Stack size 0 bytes, public.o(.text), UNUSED)
  [Called By]

  - >> proces_hex_to_ascii

  proces_hex_to_ascii (Thumb, 40 bytes, Stack size 20 bytes, public.o(.text), UNUSED)
  [Calls]

  - >> hex_to_ascii

  ascii_to_hex (Thumb, 30 bytes, Stack size 4 bytes, public.o(.text), UNUSED)
  [Calls]

  - >> ascii_to_int
  [Called By]
  - >> calc_sum_ascii
  - >> proces_ascii_to_hex

  proces_ascii_to_hex (Thumb, 38 bytes, Stack size 20 bytes, public.o(.text), UNUSED)
  [Calls]

  - >> ascii_to_hex

  calc_sum_ascii (Thumb, 36 bytes, Stack size 16 bytes, public.o(.text), UNUSED)
  [Calls]

  - >> ascii_to_hex

  calc_sum_hex (Thumb, 28 bytes, Stack size 8 bytes, public.o(.text), UNUSED)

  hex_check_sum_ascii (Thumb, 78 bytes, Stack size 20 bytes, public.o(.text), UNUSED)
  [Calls]

  - >> ascii_to_int

  mot_check_sum_ascii (Thumb, 80 bytes, Stack size 20 bytes, public.o(.text), UNUSED)
  [Calls]

  - >> ascii_to_int

  check_xor (Thumb, 28 bytes, Stack size 8 bytes, public.o(.text), UNUSED)

  assmbleInt2ByteS (Thumb, 22 bytes, Stack size 0 bytes, public.o(.text), UNUSED)

  disassmbleInt2ByteS (Thumb, 12 bytes, Stack size 0 bytes, public.o(.text), UNUSED)

  assmbleInt2ByteB (Thumb, 22 bytes, Stack size 0 bytes, public.o(.text), UNUSED)

  disassmbleInt2ByteB (Thumb, 12 bytes, Stack size 0 bytes, public.o(.text), UNUSED)

  assmbleInt4ByteS (Thumb, 28 bytes, Stack size 0 bytes, public.o(.text), UNUSED)

  disassmbleInt4ByteS (Thumb, 22 bytes, Stack size 0 bytes, public.o(.text), UNUSED)

  assmbleInt4ByteB (Thumb, 28 bytes, Stack size 0 bytes, public.o(.text), UNUSED)

  disassmbleInt4ByteB (Thumb, 22 bytes, Stack size 0 bytes, public.o(.text), UNUSED)

  assmbleFloat4ByteS (Thumb, 38 bytes, Stack size 8 bytes, public.o(.text), UNUSED)

  disassmbleFloat4ByteS (Thumb, 30 bytes, Stack size 12 bytes, public.o(.text), UNUSED)

  assmbleFloat4ByteB (Thumb, 38 bytes, Stack size 8 bytes, public.o(.text), UNUSED)

  disassmbleFloat4ByteB (Thumb, 30 bytes, Stack size 12 bytes, public.o(.text), UNUSED)

  assmbleDouble8ByteS (Thumb, 66 bytes, Stack size 16 bytes, public.o(.text), UNUSED)

  disassmbleDouble8ByteS (Thumb, 54 bytes, Stack size 16 bytes, public.o(.text), UNUSED)

  assmbleDouble8ByteB (Thumb, 66 bytes, Stack size 16 bytes, public.o(.text), UNUSED)

  disassmbleDouble8ByteB (Thumb, 54 bytes, Stack size 16 bytes, public.o(.text), UNUSED)

  crc32_reinit (Thumb, 10 bytes, Stack size 0 bytes, public.o(.text), UNUSED)

  crc32_calculate (Thumb, 76 bytes, Stack size 16 bytes, public.o(.text), UNUSED)

  crc32_get_crc (Thumb, 6 bytes, Stack size 0 bytes, public.o(.text), UNUSED)

  crc32_calculate1 (Thumb, 54 bytes, Stack size 20 bytes, public.o(.text), UNUSED)

  crc16_calculate_modbus (Thumb, 48 bytes, Stack size 16 bytes, public.o(.text))
  [Stack]

  - Max Depth = 16
  - Call Chain = crc16_calculate_modbus
  [Called By]
  - >> uart_tpm_tx_data
  - >> uart_tpm_main

  crc16_reinit (Thumb, 8 bytes, Stack size 0 bytes, public.o(.text), UNUSED)

  crc16_calculate (Thumb, 42 bytes, Stack size 0 bytes, public.o(.text), UNUSED)

  crc16_get_crc (Thumb, 6 bytes, Stack size 0 bytes, public.o(.text), UNUSED)

  crc16_calculate1 (Thumb, 40 bytes, Stack size 8 bytes, public.o(.text), UNUSED)

  check_timeout (Thumb, 38 bytes, Stack size 0 bytes, public.o(.text), UNUSED)

  calcu_interval (Thumb, 20 bytes, Stack size 0 bytes, public.o(.text), UNUSED)

  updata_roll_count8 (Thumb, 20 bytes, Stack size 0 bytes, public.o(.text), UNUSED)

  updata_roll_count16 (Thumb, 24 bytes, Stack size 0 bytes, public.o(.text), UNUSED)
  [Called By]

  - >> mcu_pwmi_main
  - >> mcu_adc_main
  - >> mcu_ioout_main
  - >> mcu_ioout_toggle_hard
  - >> mcu_ioout_set_status_hard
  - >> mcu_ioin_main

  updata_roll_count32 (Thumb, 22 bytes, Stack size 0 bytes, public.o(.text), UNUSED)

  data_dec_bcd (Thumb, 26 bytes, Stack size 0 bytes, public.o(.text), UNUSED)

  bit_lsb_num (Thumb, 30 bytes, Stack size 0 bytes, public.o(.text), UNUSED)

  lookup_table_index_uint32 (Thumb, 138 bytes, Stack size 20 bytes, public.o(.text), UNUSED)

  calc_resistor_up (Thumb, 40 bytes, Stack size 12 bytes, public.o(.text), UNUSED)

  calc_resistor_down (Thumb, 38 bytes, Stack size 20 bytes, public.o(.text), UNUSED)

  calc_resistor_para (Thumb, 72 bytes, Stack size 32 bytes, public.o(.text), UNUSED)
  [Calls]

  - >> __aeabi_uldivmod

  bcd_to_dec (Thumb, 20 bytes, Stack size 0 bytes, public.o(.text), UNUSED)

  dec_to_bcd (Thumb, 26 bytes, Stack size 0 bytes, public.o(.text), UNUSED)

  unixtime_to_localtime (Thumb, 354 bytes, Stack size 20 bytes, public.o(.text), UNUSED)

  localtime_to_unixtime (Thumb, 296 bytes, Stack size 20 bytes, public.o(.text), UNUSED)

  sort_aescend_uint32 (Thumb, 88 bytes, Stack size 20 bytes, public.o(.text), UNUSED)

  tim_init (Thumb, 100 bytes, Stack size 8 bytes, timer.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = tim_init
  [Calls]
  - >> __aeabi_memcpy
  [Called By]
  - >> tim_user_init

  tim_isr (Thumb, 68 bytes, Stack size 0 bytes, timer.o(.text))
  [Called By]

  - >> SysTick_Handler

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

  - >> tim_delayms
  - >> tim_check_timenow
  - >> mcu_adc_main
  - >> uart_tpm_rx_isr
  - >> mcu_adc_isr
  - >> uart_tpm_main
  - >> write_cmd_test_main
  - >> read_cmd_test_main

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

  - >> tim_delayms
  - >> write_cmd_test_main
  - >> read_cmd_test_main

  tim_check_timenow (Thumb, 48 bytes, Stack size 8 bytes, timer.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = tim_check_timenow
  [Calls]
  - >> tim_get_count
  [Called By]
  - >> mcu_adc_main
  - >> uart_tpm_main

  tim_delayus (Thumb, 24 bytes, Stack size 8 bytes, timer.o(.text), UNUSED)

  tim_delayms (Thumb, 50 bytes, Stack size 16 bytes, timer.o(.text), UNUSED)
  [Calls]

  - >> tim_get_count
  - >> tim_check_timeout

  tim_calcu_interval (Thumb, 20 bytes, Stack size 0 bytes, timer.o(.text), UNUSED)

  tim_get_rtc_unixtime (Thumb, 94 bytes, Stack size 8 bytes, timer.o(.text), UNUSED)

  tim_set_rtc_unixtime (Thumb, 64 bytes, Stack size 16 bytes, timer.o(.text), UNUSED)

  uart_tpm_init (Thumb, 120 bytes, Stack size 16 bytes, uart_tpm.o(.text))
  [Stack]

  - Max Depth = 16
  - Call Chain = uart_tpm_init
  [Calls]
  - >> __aeabi_memcpy
  [Called By]
  - >> uart_tpm_user_init

  uart_tpm_main (Thumb, 198 bytes, Stack size 24 bytes, uart_tpm.o(.text))
  [Stack]

  - Max Depth = 44
  - Call Chain = uart_tpm_main ⇒ uart_read_isr
  [Calls]
  - >> uart_read_isr
  - >> crc16_calculate_modbus
  - >> tim_check_timenow
  - >> tim_get_count
  [Called By]
  - >> main

  uart_tpm_rx_isr (Thumb, 280 bytes, Stack size 16 bytes, uart_tpm.o(.text))
  [Stack]

  - Max Depth = 16
  - Call Chain = uart_tpm_rx_isr
  [Calls]
  - >> tim_get_count
  [Called By]
  - >> USART1_IRQHandler

  uart_tpm_tx_data (Thumb, 136 bytes, Stack size 24 bytes, uart_tpm.o(.text))
  [Stack]

  - Max Depth = 40
  - Call Chain = uart_tpm_tx_data ⇒ crc16_calculate_modbus
  [Calls]
  - >> crc16_calculate_modbus
  - >> __aeabi_memcpy
  [Called By]
  - >> write_cmd_test_main
  - >> read_cmd_test_main

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

  - >> mcu_init

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

  - Max Depth = 16
  - Call Chain = NVIC_Init
  [Called By]
  - >> mcu_uart_init
  - >> mcu_can_reinit
  - >> mcu_can_init
  - >> mcu_adc_init

  NVIC_SetVectorTable (Thumb, 14 bytes, Stack size 0 bytes, misc.o(.text), UNUSED)

  NVIC_SystemLPConfig (Thumb, 34 bytes, Stack size 0 bytes, misc.o(.text), UNUSED)

  SysTick_CLKSourceConfig (Thumb, 40 bytes, Stack size 0 bytes, misc.o(.text), UNUSED)

  ADC_DeInit (Thumb, 78 bytes, Stack size 8 bytes, stm32f10x_adc.o(.text), UNUSED)
  [Calls]

  - >> RCC_APB2PeriphResetCmd
  [Called By]
  - >> mcu_adc_init

  ADC_Init (Thumb, 70 bytes, Stack size 12 bytes, stm32f10x_adc.o(.text), UNUSED)
  [Called By]

  - >> mcu_adc_init

  ADC_StructInit (Thumb, 18 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_Cmd (Thumb, 22 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)
  [Called By]

  - >> mcu_adc_init

  ADC_DMACmd (Thumb, 22 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_ITConfig (Thumb, 24 bytes, Stack size 8 bytes, stm32f10x_adc.o(.text), UNUSED)
  [Called By]

  - >> mcu_adc_init

  ADC_ResetCalibration (Thumb, 10 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)
  [Called By]

  - >> mcu_adc_init

  ADC_GetResetCalibrationStatus (Thumb, 20 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)
  [Called By]

  - >> mcu_adc_init

  ADC_StartCalibration (Thumb, 10 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)
  [Called By]

  - >> mcu_adc_init

  ADC_GetCalibrationStatus (Thumb, 20 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)
  [Called By]

  - >> mcu_adc_init

  ADC_SoftwareStartConvCmd (Thumb, 22 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text))
  [Called By]

  - >> mcu_adc_main
  - >> mcu_adc_init
  - >> mcu_adc_isr

  ADC_GetSoftwareStartConvStatus (Thumb, 20 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_DiscModeChannelCountConfig (Thumb, 24 bytes, Stack size 8 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_DiscModeCmd (Thumb, 22 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_RegularChannelConfig (Thumb, 184 bytes, Stack size 20 bytes, stm32f10x_adc.o(.text))
  [Stack]

  - Max Depth = 20
  - Call Chain = ADC_RegularChannelConfig
  [Called By]
  - >> mcu_adc_main
  - >> mcu_adc_init
  - >> mcu_adc_isr

  ADC_ExternalTrigConvCmd (Thumb, 22 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_GetConversionValue (Thumb, 8 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text))
  [Called By]

  - >> mcu_adc_isr

  ADC_GetDualModeConversionValue (Thumb, 8 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_AutoInjectedConvCmd (Thumb, 22 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_InjectedDiscModeCmd (Thumb, 22 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_ExternalTrigInjectedConvConfig (Thumb, 16 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_ExternalTrigInjectedConvCmd (Thumb, 22 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_SoftwareStartInjectedConvCmd (Thumb, 22 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_GetSoftwareStartInjectedConvCmdStatus (Thumb, 20 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_InjectedChannelConfig (Thumb, 130 bytes, Stack size 20 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_InjectedSequencerLengthConfig (Thumb, 24 bytes, Stack size 8 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_SetInjectedOffset (Thumb, 20 bytes, Stack size 8 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_GetInjectedConversionValue (Thumb, 28 bytes, Stack size 8 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_AnalogWatchdogCmd (Thumb, 16 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_AnalogWatchdogThresholdsConfig (Thumb, 6 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_AnalogWatchdogSingleChannelConfig (Thumb, 16 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_TempSensorVrefintCmd (Thumb, 64 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_GetFlagStatus (Thumb, 18 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_ClearFlag (Thumb, 6 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text), UNUSED)

  ADC_GetITStatus (Thumb, 36 bytes, Stack size 16 bytes, stm32f10x_adc.o(.text))
  [Stack]

  - Max Depth = 16
  - Call Chain = ADC_GetITStatus
  [Called By]
  - >> mcu_adc_isr

  ADC_ClearITPendingBit (Thumb, 10 bytes, Stack size 0 bytes, stm32f10x_adc.o(.text))
  [Called By]

  - >> mcu_adc_isr

  CAN_DeInit (Thumb, 50 bytes, Stack size 8 bytes, stm32f10x_can.o(.text), UNUSED)
  [Calls]

  - >> RCC_APB1PeriphResetCmd
  [Called By]
  - >> mcu_can_reinit
  - >> mcu_can_init

  CAN_Init (Thumb, 276 bytes, Stack size 12 bytes, stm32f10x_can.o(.text), UNUSED)
  [Called By]

  - >> mcu_can_reinit
  - >> mcu_can_init

  CAN_FilterInit (Thumb, 258 bytes, Stack size 8 bytes, stm32f10x_can.o(.text), UNUSED)
  [Called By]

  - >> mcu_can_reinit
  - >> mcu_can_init

  CAN_StructInit (Thumb, 32 bytes, Stack size 0 bytes, stm32f10x_can.o(.text), UNUSED)

  CAN_SlaveStartBank (Thumb, 48 bytes, Stack size 0 bytes, stm32f10x_can.o(.text), UNUSED)

  CAN_DBGFreeze (Thumb, 22 bytes, Stack size 0 bytes, stm32f10x_can.o(.text), UNUSED)

  CAN_TTComModeCmd (Thumb, 118 bytes, Stack size 0 bytes, stm32f10x_can.o(.text), UNUSED)

  CAN_Transmit (Thumb, 304 bytes, Stack size 8 bytes, stm32f10x_can.o(.text), UNUSED)
  [Called By]

  - >> mcu_can_send

  CAN_TransmitStatus (Thumb, 138 bytes, Stack size 8 bytes, stm32f10x_can.o(.text), UNUSED)

  CAN_CancelTransmit (Thumb, 48 bytes, Stack size 0 bytes, stm32f10x_can.o(.text), UNUSED)

  CAN_Receive (Thumb, 240 bytes, Stack size 8 bytes, stm32f10x_can.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = CAN_Receive
  [Called By]
  - >> mcu_can_rx_isr
  - >> CAN1_RX1_IRQHandler
  - >> USB_LP_CAN1_RX0_IRQHandler

  CAN_FIFORelease (Thumb, 22 bytes, Stack size 0 bytes, stm32f10x_can.o(.text), UNUSED)

  CAN_MessagePending (Thumb, 30 bytes, Stack size 0 bytes, stm32f10x_can.o(.text), UNUSED)

  CAN_OperatingModeRequest (Thumb, 162 bytes, Stack size 8 bytes, stm32f10x_can.o(.text), UNUSED)

  CAN_Sleep (Thumb, 30 bytes, Stack size 0 bytes, stm32f10x_can.o(.text), UNUSED)

  CAN_WakeUp (Thumb, 48 bytes, Stack size 0 bytes, stm32f10x_can.o(.text), UNUSED)

  CAN_GetLastErrorCode (Thumb, 12 bytes, Stack size 0 bytes, stm32f10x_can.o(.text), UNUSED)

  CAN_GetReceiveErrorCounter (Thumb, 10 bytes, Stack size 0 bytes, stm32f10x_can.o(.text), UNUSED)

  CAN_GetLSBTransmitErrorCounter (Thumb, 12 bytes, Stack size 0 bytes, stm32f10x_can.o(.text), UNUSED)

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

  - >> mcu_can_reinit
  - >> mcu_can_init

  CAN_GetFlagStatus (Thumb, 120 bytes, Stack size 8 bytes, stm32f10x_can.o(.text), UNUSED)

  CAN_ClearFlag (Thumb, 52 bytes, Stack size 0 bytes, stm32f10x_can.o(.text), UNUSED)

  CAN_GetITStatus (Thumb, 310 bytes, Stack size 16 bytes, stm32f10x_can.o(.text))
  [Stack]

  - Max Depth = 16
  - Call Chain = CAN_GetITStatus
  [Calls]
  - >> CheckITStatus
  [Called By]
  - >> CAN1_SCE_IRQHandler

  CAN_ClearITPendingBit (Thumb, 162 bytes, Stack size 0 bytes, stm32f10x_can.o(.text))
  [Called By]

  - >> CAN1_SCE_IRQHandler

  FLASH_SetLatency (Thumb, 18 bytes, Stack size 0 bytes, stm32f10x_flash.o(.text), UNUSED)

  FLASH_HalfCycleAccessCmd (Thumb, 22 bytes, Stack size 0 bytes, stm32f10x_flash.o(.text), UNUSED)

  FLASH_PrefetchBufferCmd (Thumb, 22 bytes, Stack size 0 bytes, stm32f10x_flash.o(.text), UNUSED)

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

  - >> mcu_flash_erase
  - >> mcu_flash_set_data

  FLASH_UnlockBank1 (Thumb, 12 bytes, Stack size 0 bytes, stm32f10x_flash.o(.text), UNUSED)

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

  - >> mcu_flash_erase
  - >> mcu_flash_set_data

  FLASH_LockBank1 (Thumb, 14 bytes, Stack size 0 bytes, stm32f10x_flash.o(.text), UNUSED)

  FLASH_GetBank1Status (Thumb, 48 bytes, Stack size 0 bytes, stm32f10x_flash.o(.text), UNUSED)
  [Called By]

  - >> FLASH_WaitForLastBank1Operation
  - >> FLASH_WaitForLastOperation

  FLASH_WaitForLastOperation (Thumb, 38 bytes, Stack size 4 bytes, stm32f10x_flash.o(.text), UNUSED)
  [Calls]

  - >> FLASH_GetBank1Status
  [Called By]
  - >> FLASH_ProgramHalfWord
  - >> FLASH_ErasePage
  - >> FLASH_UserOptionByteConfig
  - >> FLASH_ReadOutProtection
  - >> FLASH_EnableWriteProtection
  - >> FLASH_ProgramOptionByteData
  - >> FLASH_ProgramWord
  - >> FLASH_EraseOptionBytes
  - >> FLASH_EraseAllPages

  FLASH_ErasePage (Thumb, 72 bytes, Stack size 12 bytes, stm32f10x_flash.o(.text), UNUSED)
  [Calls]

  - >> FLASH_WaitForLastOperation
  [Called By]
  - >> mcu_flash_erase

  FLASH_EraseAllPages (Thumb, 68 bytes, Stack size 8 bytes, stm32f10x_flash.o(.text), UNUSED)
  [Calls]

  - >> FLASH_WaitForLastOperation

  FLASH_WaitForLastBank1Operation (Thumb, 38 bytes, Stack size 4 bytes, stm32f10x_flash.o(.text), UNUSED)
  [Calls]

  - >> FLASH_GetBank1Status
  [Called By]
  - >> FLASH_EraseAllBank1Pages

  FLASH_EraseAllBank1Pages (Thumb, 68 bytes, Stack size 8 bytes, stm32f10x_flash.o(.text), UNUSED)
  [Calls]

  - >> FLASH_WaitForLastBank1Operation

  FLASH_GetReadOutProtectionStatus (Thumb, 20 bytes, Stack size 0 bytes, stm32f10x_flash.o(.text), UNUSED)
  [Called By]

  - >> FLASH_EraseOptionBytes

  FLASH_EraseOptionBytes (Thumb, 150 bytes, Stack size 12 bytes, stm32f10x_flash.o(.text), UNUSED)
  [Calls]

  - >> FLASH_GetReadOutProtectionStatus
  - >> FLASH_WaitForLastOperation

  FLASH_ProgramWord (Thumb, 102 bytes, Stack size 20 bytes, stm32f10x_flash.o(.text), UNUSED)
  [Calls]

  - >> FLASH_WaitForLastOperation

  FLASH_ProgramHalfWord (Thumb, 60 bytes, Stack size 16 bytes, stm32f10x_flash.o(.text), UNUSED)
  [Calls]

  - >> FLASH_WaitForLastOperation
  [Called By]
  - >> mcu_flash_set_data

  FLASH_ProgramOptionByteData (Thumb, 72 bytes, Stack size 16 bytes, stm32f10x_flash.o(.text), UNUSED)
  [Calls]

  - >> FLASH_WaitForLastOperation

  FLASH_EnableWriteProtection (Thumb, 200 bytes, Stack size 28 bytes, stm32f10x_flash.o(.text), UNUSED)
  [Calls]

  - >> FLASH_WaitForLastOperation

  FLASH_ReadOutProtection (Thumb, 156 bytes, Stack size 12 bytes, stm32f10x_flash.o(.text), UNUSED)
  [Calls]

  - >> FLASH_WaitForLastOperation

  FLASH_UserOptionByteConfig (Thumb, 88 bytes, Stack size 20 bytes, stm32f10x_flash.o(.text), UNUSED)
  [Calls]

  - >> FLASH_WaitForLastOperation

  FLASH_GetUserOptionByte (Thumb, 8 bytes, Stack size 0 bytes, stm32f10x_flash.o(.text), UNUSED)

  FLASH_GetWriteProtectionOptionByte (Thumb, 6 bytes, Stack size 0 bytes, stm32f10x_flash.o(.text), UNUSED)

  FLASH_GetPrefetchBufferStatus (Thumb, 20 bytes, Stack size 0 bytes, stm32f10x_flash.o(.text), UNUSED)

  FLASH_ITConfig (Thumb, 26 bytes, Stack size 0 bytes, stm32f10x_flash.o(.text), UNUSED)

  FLASH_GetFlagStatus (Thumb, 42 bytes, Stack size 0 bytes, stm32f10x_flash.o(.text), UNUSED)

  FLASH_ClearFlag (Thumb, 6 bytes, Stack size 0 bytes, stm32f10x_flash.o(.text), UNUSED)

  FLASH_GetStatus (Thumb, 48 bytes, Stack size 0 bytes, stm32f10x_flash.o(.text), UNUSED)

  GPIO_DeInit (Thumb, 172 bytes, Stack size 8 bytes, stm32f10x_gpio.o(.text), UNUSED)
  [Calls]

  - >> RCC_APB2PeriphResetCmd

  GPIO_AFIODeInit (Thumb, 20 bytes, Stack size 8 bytes, stm32f10x_gpio.o(.text), UNUSED)
  [Calls]

  - >> RCC_APB2PeriphResetCmd

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

  - Max Depth = 24
  - Call Chain = GPIO_Init
  [Called By]
  - >> mcu_uart_init
  - >> mcu_mspi_cs_disable
  - >> mcu_mspi_cs_enable
  - >> mcu_mspi_init
  - >> mcu_can_reinit
  - >> mcu_can_init
  - >> mcu_adc_init
  - >> mcu_dio_init
  - >> mcu_ioout_init
  - >> mcu_ioin_init

  GPIO_StructInit (Thumb, 16 bytes, Stack size 0 bytes, stm32f10x_gpio.o(.text), UNUSED)

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

  - >> mcu_dio_get_status
  - >> mcu_ioin_main

  GPIO_ReadInputData (Thumb, 8 bytes, Stack size 0 bytes, stm32f10x_gpio.o(.text), UNUSED)

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

  - >> mcu_ioout_get_status_hard

  GPIO_ReadOutputData (Thumb, 8 bytes, Stack size 0 bytes, stm32f10x_gpio.o(.text), UNUSED)

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

  - >> mcu_mspi_cs_disable
  - >> mcu_mspi_cs_enable
  - >> mcu_mspi_init

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

  - >> mcu_mspi_cs_disable
  - >> mcu_mspi_cs_enable
  - >> mcu_mspi_init

  GPIO_FlipBits (Thumb, 8 bytes, Stack size 0 bytes, stm32f10x_gpio.o(.text), UNUSED)
  [Called By]

  - >> mcu_dio_toggle

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

  - >> mcu_dio_set_status
  - >> mcu_dio_init
  - >> mcu_ioout_main
  - >> mcu_ioout_toggle_hard
  - >> mcu_ioout_set_status_hard
  - >> mcu_ioout_init

  GPIO_Write (Thumb, 4 bytes, Stack size 0 bytes, stm32f10x_gpio.o(.text), UNUSED)

  GPIO_PinLockConfig (Thumb, 18 bytes, Stack size 0 bytes, stm32f10x_gpio.o(.text), UNUSED)

  GPIO_EventOutputConfig (Thumb, 26 bytes, Stack size 0 bytes, stm32f10x_gpio.o(.text), UNUSED)

  GPIO_EventOutputCmd (Thumb, 6 bytes, Stack size 0 bytes, stm32f10x_gpio.o(.text), UNUSED)

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

  - Max Depth = 20
  - Call Chain = GPIO_PinRemapConfig
  [Called By]
  - >> mcu_uart_init
  - >> mcu_mspi_init
  - >> mcu_init

  GPIO_EXTILineConfig (Thumb, 66 bytes, Stack size 12 bytes, stm32f10x_gpio.o(.text), UNUSED)

  GPIO_ETH_MediaInterfaceConfig (Thumb, 8 bytes, Stack size 0 bytes, stm32f10x_gpio.o(.text), UNUSED)

  RCC_DeInit (Thumb, 64 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

  RCC_HSEConfig (Thumb, 70 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

  RCC_GetFlagStatus (Thumb, 56 bytes, Stack size 8 bytes, stm32f10x_rcc.o(.text), UNUSED)
  [Called By]

  - >> RCC_WaitForHSEStartUp

  RCC_WaitForHSEStartUp (Thumb, 56 bytes, Stack size 16 bytes, stm32f10x_rcc.o(.text), UNUSED)
  [Calls]

  - >> RCC_GetFlagStatus

  RCC_AdjustHSICalibrationValue (Thumb, 20 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

  RCC_HSICmd (Thumb, 6 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

  RCC_PLLConfig (Thumb, 24 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

  RCC_PLLCmd (Thumb, 6 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

  RCC_SYSCLKConfig (Thumb, 18 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

  RCC_GetSYSCLKSource (Thumb, 10 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

  RCC_HCLKConfig (Thumb, 18 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

  RCC_PCLK1Config (Thumb, 18 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

  RCC_PCLK2Config (Thumb, 20 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

  RCC_ITConfig (Thumb, 26 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

  RCC_USBCLKConfig (Thumb, 8 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

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

  - >> mcu_adc_init

  RCC_LSEConfig (Thumb, 50 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

  RCC_LSICmd (Thumb, 6 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

  RCC_RTCCLKConfig (Thumb, 12 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

  RCC_RTCCLKCmd (Thumb, 8 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

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

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

  RCC_AHBPeriphClockCmd (Thumb, 26 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

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

  - >> mcu_uart_init
  - >> mcu_mspi_init
  - >> mcu_can_reinit
  - >> mcu_can_init
  - >> mcu_adc_init
  - >> mcu_dio_init
  - >> mcu_ioout_init
  - >> mcu_ioin_init
  - >> mcu_init

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

  - >> mcu_uart_init
  - >> mcu_mspi_init
  - >> mcu_can_reinit
  - >> mcu_can_init

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

  - >> USART_DeInit
  - >> SPI_I2S_DeInit
  - >> ADC_DeInit
  - >> GPIO_AFIODeInit
  - >> GPIO_DeInit

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

  - >> USART_DeInit
  - >> SPI_I2S_DeInit
  - >> CAN_DeInit

  RCC_BackupResetCmd (Thumb, 8 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

  RCC_ClockSecuritySystemCmd (Thumb, 6 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

  RCC_MCOConfig (Thumb, 6 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

  RCC_ClearFlag (Thumb, 14 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

  RCC_GetITStatus (Thumb, 20 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

  RCC_ClearITPendingBit (Thumb, 6 bytes, Stack size 0 bytes, stm32f10x_rcc.o(.text), UNUSED)

  SPI_I2S_DeInit (Thumb, 76 bytes, Stack size 8 bytes, stm32f10x_spi.o(.text), UNUSED)
  [Calls]

  - >> RCC_APB1PeriphResetCmd
  - >> RCC_APB2PeriphResetCmd
  [Called By]
  - >> mcu_mspi_init

  SPI_Init (Thumb, 60 bytes, Stack size 8 bytes, stm32f10x_spi.o(.text), UNUSED)
  [Called By]

  - >> mcu_mspi_init

  I2S_Init (Thumb, 226 bytes, Stack size 56 bytes, stm32f10x_spi.o(.text), UNUSED)
  [Calls]

  - >> RCC_GetClocksFreq

  SPI_StructInit (Thumb, 24 bytes, Stack size 0 bytes, stm32f10x_spi.o(.text), UNUSED)

  I2S_StructInit (Thumb, 20 bytes, Stack size 0 bytes, stm32f10x_spi.o(.text), UNUSED)

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

  - >> mcu_mspi_init

  I2S_Cmd (Thumb, 24 bytes, Stack size 0 bytes, stm32f10x_spi.o(.text), UNUSED)

  SPI_I2S_ITConfig (Thumb, 32 bytes, Stack size 12 bytes, stm32f10x_spi.o(.text), UNUSED)

  SPI_I2S_DMACmd (Thumb, 18 bytes, Stack size 0 bytes, stm32f10x_spi.o(.text), UNUSED)

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

  - >> mcu_mspi_txrx_continue
  - >> mcu_mspi_txrx

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

  - >> mcu_mspi_txrx_continue
  - >> mcu_mspi_txrx

  SPI_NSSInternalSoftwareConfig (Thumb, 30 bytes, Stack size 0 bytes, stm32f10x_spi.o(.text), UNUSED)

  SPI_SSOutputCmd (Thumb, 24 bytes, Stack size 0 bytes, stm32f10x_spi.o(.text), UNUSED)

  SPI_DataSizeConfig (Thumb, 18 bytes, Stack size 0 bytes, stm32f10x_spi.o(.text), UNUSED)

  SPI_TransmitCRC (Thumb, 10 bytes, Stack size 0 bytes, stm32f10x_spi.o(.text), UNUSED)

  SPI_CalculateCRC (Thumb, 24 bytes, Stack size 0 bytes, stm32f10x_spi.o(.text), UNUSED)

  SPI_GetCRC (Thumb, 16 bytes, Stack size 0 bytes, stm32f10x_spi.o(.text), UNUSED)

  SPI_GetCRCPolynomial (Thumb, 6 bytes, Stack size 0 bytes, stm32f10x_spi.o(.text), UNUSED)

  SPI_BiDirectionalLineConfig (Thumb, 28 bytes, Stack size 0 bytes, stm32f10x_spi.o(.text), UNUSED)

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

  - >> mcu_mspi_txrx_continue
  - >> mcu_mspi_txrx

  SPI_I2S_ClearFlag (Thumb, 6 bytes, Stack size 0 bytes, stm32f10x_spi.o(.text), UNUSED)

  SPI_I2S_GetITStatus (Thumb, 52 bytes, Stack size 20 bytes, stm32f10x_spi.o(.text), UNUSED)

  SPI_I2S_ClearITPendingBit (Thumb, 20 bytes, Stack size 8 bytes, stm32f10x_spi.o(.text), UNUSED)

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

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

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

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

  USART_StructInit (Thumb, 24 bytes, Stack size 0 bytes, stm32f10x_usart.o(.text), UNUSED)

  USART_ClockInit (Thumb, 34 bytes, Stack size 8 bytes, stm32f10x_usart.o(.text), UNUSED)

  USART_ClockStructInit (Thumb, 12 bytes, Stack size 0 bytes, stm32f10x_usart.o(.text), UNUSED)

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

  - >> mcu_uart_init

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

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

  USART_DMACmd (Thumb, 18 bytes, Stack size 0 bytes, stm32f10x_usart.o(.text), UNUSED)

  USART_SetAddress (Thumb, 18 bytes, Stack size 0 bytes, stm32f10x_usart.o(.text), UNUSED)

  USART_WakeUpConfig (Thumb, 18 bytes, Stack size 0 bytes, stm32f10x_usart.o(.text), UNUSED)

  USART_ReceiverWakeUpCmd (Thumb, 24 bytes, Stack size 0 bytes, stm32f10x_usart.o(.text), UNUSED)

  USART_LINBreakDetectLengthConfig (Thumb, 18 bytes, Stack size 0 bytes, stm32f10x_usart.o(.text), UNUSED)

  USART_LINCmd (Thumb, 24 bytes, Stack size 0 bytes, stm32f10x_usart.o(.text), UNUSED)

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

  - >> mcu_uart_tx

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

  - >> mcu_uart_rx_isr
  - >> UART4_IRQHandler
  - >> USART1_IRQHandler

  USART_SendBreak (Thumb, 10 bytes, Stack size 0 bytes, stm32f10x_usart.o(.text), UNUSED)

  USART_SetGuardTime (Thumb, 16 bytes, Stack size 0 bytes, stm32f10x_usart.o(.text), UNUSED)

  USART_SetPrescaler (Thumb, 16 bytes, Stack size 0 bytes, stm32f10x_usart.o(.text), UNUSED)

  USART_SmartCardCmd (Thumb, 24 bytes, Stack size 0 bytes, stm32f10x_usart.o(.text), UNUSED)

  USART_SmartCardNACKCmd (Thumb, 24 bytes, Stack size 0 bytes, stm32f10x_usart.o(.text), UNUSED)

  USART_HalfDuplexCmd (Thumb, 24 bytes, Stack size 0 bytes, stm32f10x_usart.o(.text), UNUSED)

  USART_OverSampling8Cmd (Thumb, 22 bytes, Stack size 0 bytes, stm32f10x_usart.o(.text), UNUSED)

  USART_OneBitMethodCmd (Thumb, 24 bytes, Stack size 0 bytes, stm32f10x_usart.o(.text), UNUSED)

  USART_IrDAConfig (Thumb, 18 bytes, Stack size 0 bytes, stm32f10x_usart.o(.text), UNUSED)

  USART_IrDACmd (Thumb, 24 bytes, Stack size 0 bytes, stm32f10x_usart.o(.text), UNUSED)

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

  - >> mcu_uart_tx

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

  - >> mcu_uart_init

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

  - Max Depth = 16
  - Call Chain = USART_GetITStatus
  [Called By]
  - >> mcu_uart_rx_isr
  - >> UART4_IRQHandler
  - >> USART1_IRQHandler

  USART_ClearITPendingBit (Thumb, 52 bytes, Stack size 8 bytes, stm32f10x_usart.o(.text), UNUSED)

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

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

  SystemCoreClockUpdate (Thumb, 142 bytes, Stack size 8 bytes, system_stm32f10x.o(.text), UNUSED)

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

  - startup_stm32f10x_md.o(RESET)

  DMA1_Channel2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text))
  [Calls]

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

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

  - startup_stm32f10x_md.o(RESET)

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

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

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

  - >> uart_tpm_init
  - >> tim_init
  - >> mcu_sspi_get_recv
  - >> mcu_flash_get_data
  - >> uart_tpm_tx_data

  __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_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_llsl (Thumb, 30 bytes, Stack size 0 bytes, llshl.o(.text), UNUSED)
  [Called By]

  - >> __aeabi_uldivmod

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

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

  - >> __aeabi_uldivmod

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

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

  __decompress (Thumb, 0 bytes, Stack size unknown bytes, __dczerorl2.o(.text), UNUSED)

  __decompress1 (Thumb, 86 bytes, Stack size unknown bytes, __dczerorl2.o(.text), UNUSED)

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

  - >> _printf_core

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

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

  - Max Depth = 24
  - Call Chain = __2printf
  [Called By]
  - >> modbus_recv_data

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

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

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

  ### Local Symbols

  uart_read_isr (Thumb, 184 bytes, Stack size 20 bytes, uart_tpm.o(.text))
  [Stack]

  - Max Depth = 20
  - Call Chain = uart_read_isr
  [Called By]
  - >> uart_tpm_main

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

  - >> CAN_GetITStatus

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

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

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

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

  _printf_core (Thumb, 336 bytes, Stack size 88 bytes, printf1.o(i._printf_core), UNUSED)
  [Calls]

  - >> __aeabi_uidivmod
  [Called By]
  - >> __0printf$1

  ### Undefined Global Symbols