# Static Call Graph for image DevC\DevC.axf

#<CALLGRAPH># ARM Linker, 6160001: Last Updated: Mon Mar 10 10:28:13 2025

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

### Call chain for Maximum Stack Depth:

Task_Referee ⇒ Referee_UIRefresh ⇒ __hardfp_sin ⇒ __ieee754_rem_pio2 ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round

### Mutually Recursive functions

- ADC_IRQHandler ⇒ ADC_IRQHandler

  ### Function Pointers

  - ADC_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - Ai_IdleLineCallback from ai.o(.text.Ai_IdleLineCallback) referenced 2 times from ai.o(.text.AI_Init)
  - Ai_RxCpltCallback from ai.o(.text.Ai_RxCpltCallback) referenced 2 times from ai.o(.text.AI_Init)
  - BMI088_AcclIntCallback from bmi088.o(.text.BMI088_AcclIntCallback) referenced 2 times from bmi088.o(.text.BMI088_Init)
  - BMI088_GyroIntCallback from bmi088.o(.text.BMI088_GyroIntCallback) referenced 2 times from bmi088.o(.text.BMI088_Init)
  - BMI088_RxCpltCallback from bmi088.o(.text.BMI088_RxCpltCallback) referenced 2 times from bmi088.o(.text.BMI088_Init)
  - BusFault_Handler from stm32f4xx_it.o(.text.BusFault_Handler) referenced from startup_stm32f407xx.o(RESET)
  - CAN1_RX0_IRQHandler from stm32f4xx_it.o(.text.CAN1_RX0_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - CAN1_RX1_IRQHandler from stm32f4xx_it.o(.text.CAN1_RX1_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - CAN1_SCE_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - CAN1_TX_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - CAN2_RX0_IRQHandler from stm32f4xx_it.o(.text.CAN2_RX0_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - CAN2_RX1_IRQHandler from stm32f4xx_it.o(.text.CAN2_RX1_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - CAN2_SCE_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - CAN2_TX_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - CAN_CAN1RxFifoMsgPendingCallback from can_2.o(.text.CAN_CAN1RxFifoMsgPendingCallback) referenced 2 times from can_2.o(.text.CAN_Init)
  - CAN_CAN2RxFifoMsgPendingCallback from can_2.o(.text.CAN_CAN2RxFifoMsgPendingCallback) referenced 2 times from can_2.o(.text.CAN_Init)
  - CDC_Control_FS from usbd_cdc_if.o(.text.CDC_Control_FS) referenced 2 times from usbd_cdc_if.o(.data.USBD_Interface_fops_FS)
  - CDC_DeInit_FS from usbd_cdc_if.o(.text.CDC_DeInit_FS) referenced 2 times from usbd_cdc_if.o(.data.USBD_Interface_fops_FS)
  - CDC_Init_FS from usbd_cdc_if.o(.text.CDC_Init_FS) referenced 2 times from usbd_cdc_if.o(.data.USBD_Interface_fops_FS)
  - CDC_Receive_FS from usbd_cdc_if.o(.text.CDC_Receive_FS) referenced 2 times from usbd_cdc_if.o(.data.USBD_Interface_fops_FS)
  - CDC_TransmitCplt_FS from usbd_cdc_if.o(.text.CDC_TransmitCplt_FS) referenced 2 times from usbd_cdc_if.o(.data.USBD_Interface_fops_FS)
  - Command_CaliGyro from cli.o(.text.Command_CaliGyro) referenced from cli.o(.rodata.command_table)
  - Command_Config from cli.o(.text.Command_Config) referenced from cli.o(.rodata.command_table)
  - Command_Endian from cli.o(.text.Command_Endian) referenced from cli.o(.rodata.command_table)
  - Command_SetGimbalLim from cli.o(.text.Command_SetGimbalLim) referenced from cli.o(.rodata.command_table)
  - Command_SetMechZero from cli.o(.text.Command_SetMechZero) referenced from cli.o(.rodata.command_table)
  - Command_Stats from cli.o(.text.Command_Stats) referenced from cli.o(.rodata.command_table)
  - DCMI_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA1_Stream0_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA1_Stream1_IRQHandler from stm32f4xx_it.o(.text.DMA1_Stream1_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - DMA1_Stream2_IRQHandler from stm32f4xx_it.o(.text.DMA1_Stream2_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - DMA1_Stream3_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA1_Stream4_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA1_Stream5_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA1_Stream6_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA1_Stream7_IRQHandler from stm32f4xx_it.o(.text.DMA1_Stream7_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - DMA2_Stream0_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA2_Stream1_IRQHandler from stm32f4xx_it.o(.text.DMA2_Stream1_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - DMA2_Stream2_IRQHandler from stm32f4xx_it.o(.text.DMA2_Stream2_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - DMA2_Stream3_IRQHandler from stm32f4xx_it.o(.text.DMA2_Stream3_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - DMA2_Stream4_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA2_Stream5_IRQHandler from stm32f4xx_it.o(.text.DMA2_Stream5_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - DMA2_Stream6_IRQHandler from stm32f4xx_it.o(.text.DMA2_Stream6_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - DMA2_Stream7_IRQHandler from stm32f4xx_it.o(.text.DMA2_Stream7_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - DR16_RxCpltCallback from dr16.o(.text.DR16_RxCpltCallback) referenced 2 times from dr16.o(.text.DR16_Init)
  - DebugMon_Handler from stm32f4xx_it.o(.text.DebugMon_Handler) referenced from startup_stm32f407xx.o(RESET)
  - ETH_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - ETH_WKUP_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - EXTI0_IRQHandler from stm32f4xx_it.o(.text.EXTI0_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - EXTI15_10_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - EXTI1_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - EXTI2_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - EXTI3_IRQHandler from stm32f4xx_it.o(.text.EXTI3_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - EXTI4_IRQHandler from stm32f4xx_it.o(.text.EXTI4_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - EXTI9_5_IRQHandler from stm32f4xx_it.o(.text.EXTI9_5_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - FLASH_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - FMC_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - FPU_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - HASH_RNG_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - HardFault_Handler from stm32f4xx_it.o(.text.HardFault_Handler) referenced from startup_stm32f407xx.o(RESET)
  - I2C1_ER_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - I2C1_EV_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - I2C2_ER_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - I2C2_EV_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - I2C3_ER_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - I2C3_EV_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - MemManage_Handler from stm32f4xx_it.o(.text.MemManage_Handler) referenced from startup_stm32f407xx.o(RESET)
  - NMI_Handler from stm32f4xx_it.o(.text.NMI_Handler) referenced from startup_stm32f407xx.o(RESET)
  - OTG_FS_IRQHandler from stm32f4xx_it.o(.text.OTG_FS_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - OTG_FS_WKUP_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - OTG_HS_EP1_IN_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - OTG_HS_EP1_OUT_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - OTG_HS_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - OTG_HS_WKUP_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - PVD_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - PendSV_Handler from port.o(.text.PendSV_Handler) referenced from startup_stm32f407xx.o(RESET)
  - RCC_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - RTC_Alarm_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - RTC_WKUP_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - RefereeFastRefreshTimerCallback from referee.o(.text.RefereeFastRefreshTimerCallback) referenced 2 times from referee.o(.text.Referee_Init)
  - RefereeSlowRefreshTimerCallback from referee.o(.text.RefereeSlowRefreshTimerCallback) referenced 2 times from referee.o(.text.Referee_Init)
  - Referee_AbortRxCpltCallback from referee.o(.text.Referee_AbortRxCpltCallback) referenced 2 times from referee.o(.text.Referee_Init)
  - Referee_IdleLineCallback from referee.o(.text.Referee_IdleLineCallback) referenced 2 times from referee.o(.text.Referee_Init)
  - Referee_RxCpltCallback from referee.o(.text.Referee_RxCpltCallback) referenced 2 times from referee.o(.text.Referee_Init)
  - Reset_Handler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - SDIO_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - SPI1_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - SPI2_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - SPI3_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - SPI_DMAError from stm32f4xx_hal_spi.o(.text.SPI_DMAError) referenced 2 times from stm32f4xx_hal_spi.o(.text.HAL_SPI_Receive_DMA)
  - SPI_DMAError from stm32f4xx_hal_spi.o(.text.SPI_DMAError) referenced 2 times from stm32f4xx_hal_spi.o(.text.HAL_SPI_TransmitReceive_DMA)
  - SPI_DMAHalfReceiveCplt from stm32f4xx_hal_spi.o(.text.SPI_DMAHalfReceiveCplt) referenced 2 times from stm32f4xx_hal_spi.o(.text.HAL_SPI_Receive_DMA)
  - SPI_DMAHalfReceiveCplt from stm32f4xx_hal_spi.o(.text.SPI_DMAHalfReceiveCplt) referenced 2 times from stm32f4xx_hal_spi.o(.text.HAL_SPI_TransmitReceive_DMA)
  - SPI_DMAHalfTransmitReceiveCplt from stm32f4xx_hal_spi.o(.text.SPI_DMAHalfTransmitReceiveCplt) referenced 2 times from stm32f4xx_hal_spi.o(.text.HAL_SPI_TransmitReceive_DMA)
  - SPI_DMAReceiveCplt from stm32f4xx_hal_spi.o(.text.SPI_DMAReceiveCplt) referenced 2 times from stm32f4xx_hal_spi.o(.text.HAL_SPI_Receive_DMA)
  - SPI_DMAReceiveCplt from stm32f4xx_hal_spi.o(.text.SPI_DMAReceiveCplt) referenced 2 times from stm32f4xx_hal_spi.o(.text.HAL_SPI_TransmitReceive_DMA)
  - SPI_DMATransmitReceiveCplt from stm32f4xx_hal_spi.o(.text.SPI_DMATransmitReceiveCplt) referenced 2 times from stm32f4xx_hal_spi.o(.text.HAL_SPI_TransmitReceive_DMA)
  - SVC_Handler from port.o(.text.SVC_Handler) referenced from startup_stm32f407xx.o(RESET)
  - StartDefaultTask from freertos.o(.text.StartDefaultTask) referenced 2 times from freertos.o(.text.MX_FREERTOS_Init)
  - SysTick_Handler from stm32f4xx_it.o(.text.SysTick_Handler) referenced from startup_stm32f407xx.o(RESET)
  - SystemInit from system_stm32f4xx.o(.text.SystemInit) referenced from startup_stm32f407xx.o(.text)
  - TAMP_STAMP_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM1_BRK_TIM9_IRQHandler from stm32f4xx_it.o(.text.TIM1_BRK_TIM9_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - TIM1_CC_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM1_TRG_COM_TIM11_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM1_UP_TIM10_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM2_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM3_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM4_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM5_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM6_DAC_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM7_IRQHandler from stm32f4xx_it.o(.text.TIM7_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - TIM8_BRK_TIM12_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM8_CC_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM8_TRG_COM_TIM14_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM8_UP_TIM13_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - Task_Ai from ai_1.o(.text.Task_Ai) referenced 2 times from init.o(.text.Task_Init)
  - Task_AttiEsti from atti_esti.o(.text.Task_AttiEsti) referenced 2 times from init.o(.text.Task_Init)
  - Task_CLI from cli.o(.text.Task_CLI) referenced 2 times from init.o(.text.Task_Init)
  - Task_Can from can_3.o(.text.Task_Can) referenced 2 times from init.o(.text.Task_Init)
  - Task_Cap from cap_1.o(.text.Task_Cap) referenced 2 times from init.o(.text.Task_Init)
  - Task_Command from command.o(.text.Task_Command) referenced 2 times from init.o(.text.Task_Init)
  - Task_CtrlChassis from ctrl_chassis.o(.text.Task_CtrlChassis) referenced 2 times from init.o(.text.Task_Init)
  - Task_CtrlGimbal from ctrl_gimbal.o(.text.Task_CtrlGimbal) referenced 2 times from init.o(.text.Task_Init)
  - Task_CtrlShoot from ctrl_shoot.o(.text.Task_CtrlShoot) referenced 2 times from init.o(.text.Task_Init)
  - Task_Info from info.o(.text.Task_Info) referenced 2 times from init.o(.text.Task_Init)
  - Task_Init from init.o(.text.Task_Init) referenced 2 times from freertos.o(.text.MX_FREERTOS_Init)
  - Task_Monitor from monitor.o(.text.Task_Monitor) referenced 2 times from init.o(.text.Task_Init)
  - Task_RC from rc.o(.text.Task_RC) referenced 2 times from init.o(.text.Task_Init)
  - Task_Referee from referee_1.o(.text.Task_Referee) referenced 2 times from init.o(.text.Task_Init)
  - TimerCallback from cmsis_os2.o(.text.TimerCallback) referenced 4 times from cmsis_os2.o(.text.osTimerNew)
  - UART4_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - UART5_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - UART_DMAAbortOnError from stm32f4xx_hal_uart.o(.text.UART_DMAAbortOnError) referenced 2 times from stm32f4xx_hal_uart.o(.text.HAL_UART_IRQHandler)
  - UART_DMAError from stm32f4xx_hal_uart.o(.text.UART_DMAError) referenced 2 times from stm32f4xx_hal_uart.o(.text.HAL_UART_Transmit_DMA)
  - UART_DMAError from stm32f4xx_hal_uart.o(.text.UART_DMAError) referenced 2 times from stm32f4xx_hal_uart.o(.text.UART_Start_Receive_DMA)
  - UART_DMAReceiveCplt from stm32f4xx_hal_uart.o(.text.UART_DMAReceiveCplt) referenced 2 times from stm32f4xx_hal_uart.o(.text.UART_Start_Receive_DMA)
  - UART_DMARxHalfCplt from stm32f4xx_hal_uart.o(.text.UART_DMARxHalfCplt) referenced 2 times from stm32f4xx_hal_uart.o(.text.UART_Start_Receive_DMA)
  - UART_DMARxOnlyAbortCallback from stm32f4xx_hal_uart.o(.text.UART_DMARxOnlyAbortCallback) referenced 2 times from stm32f4xx_hal_uart.o(.text.HAL_UART_AbortReceive_IT)
  - UART_DMATransmitCplt from stm32f4xx_hal_uart.o(.text.UART_DMATransmitCplt) referenced 2 times from stm32f4xx_hal_uart.o(.text.HAL_UART_Transmit_DMA)
  - UART_DMATxHalfCplt from stm32f4xx_hal_uart.o(.text.UART_DMATxHalfCplt) referenced 2 times from stm32f4xx_hal_uart.o(.text.HAL_UART_Transmit_DMA)
  - USART1_IRQHandler from stm32f4xx_it.o(.text.USART1_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - USART2_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - USART3_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - USART6_IRQHandler from stm32f4xx_it.o(.text.USART6_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - USBD_CDC_DataIn from usbd_cdc.o(.text.USBD_CDC_DataIn) referenced 2 times from usbd_cdc.o(.data.USBD_CDC)
  - USBD_CDC_DataOut from usbd_cdc.o(.text.USBD_CDC_DataOut) referenced 2 times from usbd_cdc.o(.data.USBD_CDC)
  - USBD_CDC_DeInit from usbd_cdc.o(.text.USBD_CDC_DeInit) referenced 2 times from usbd_cdc.o(.data.USBD_CDC)
  - USBD_CDC_EP0_RxReady from usbd_cdc.o(.text.USBD_CDC_EP0_RxReady) referenced 2 times from usbd_cdc.o(.data.USBD_CDC)
  - USBD_CDC_GetDeviceQualifierDescriptor from usbd_cdc.o(.text.USBD_CDC_GetDeviceQualifierDescriptor) referenced 2 times from usbd_cdc.o(.data.USBD_CDC)
  - USBD_CDC_GetFSCfgDesc from usbd_cdc.o(.text.USBD_CDC_GetFSCfgDesc) referenced 2 times from usbd_cdc.o(.data.USBD_CDC)
  - USBD_CDC_GetHSCfgDesc from usbd_cdc.o(.text.USBD_CDC_GetHSCfgDesc) referenced 2 times from usbd_cdc.o(.data.USBD_CDC)
  - USBD_CDC_GetOtherSpeedCfgDesc from usbd_cdc.o(.text.USBD_CDC_GetOtherSpeedCfgDesc) referenced 2 times from usbd_cdc.o(.data.USBD_CDC)
  - USBD_CDC_Init from usbd_cdc.o(.text.USBD_CDC_Init) referenced 2 times from usbd_cdc.o(.data.USBD_CDC)
  - USBD_CDC_Setup from usbd_cdc.o(.text.USBD_CDC_Setup) referenced 2 times from usbd_cdc.o(.data.USBD_CDC)
  - USBD_FS_ConfigStrDescriptor from usbd_desc.o(.text.USBD_FS_ConfigStrDescriptor) referenced 2 times from usbd_desc.o(.data.FS_Desc)
  - USBD_FS_DeviceDescriptor from usbd_desc.o(.text.USBD_FS_DeviceDescriptor) referenced 2 times from usbd_desc.o(.data.FS_Desc)
  - USBD_FS_InterfaceStrDescriptor from usbd_desc.o(.text.USBD_FS_InterfaceStrDescriptor) referenced 2 times from usbd_desc.o(.data.FS_Desc)
  - USBD_FS_LangIDStrDescriptor from usbd_desc.o(.text.USBD_FS_LangIDStrDescriptor) referenced 2 times from usbd_desc.o(.data.FS_Desc)
  - USBD_FS_ManufacturerStrDescriptor from usbd_desc.o(.text.USBD_FS_ManufacturerStrDescriptor) referenced 2 times from usbd_desc.o(.data.FS_Desc)
  - USBD_FS_ProductStrDescriptor from usbd_desc.o(.text.USBD_FS_ProductStrDescriptor) referenced 2 times from usbd_desc.o(.data.FS_Desc)
  - USBD_FS_SerialStrDescriptor from usbd_desc.o(.text.USBD_FS_SerialStrDescriptor) referenced 2 times from usbd_desc.o(.data.FS_Desc)
  - UsageFault_Handler from stm32f4xx_it.o(.text.UsageFault_Handler) referenced from startup_stm32f407xx.o(RESET)
  - WWDG_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup_stm32f407xx.o(.text)
  - _snputc from printfa.o(i._snputc) referenced from printfa.o(i.__0snprintf)
  - _snputc from printfa.o(i._snputc) referenced from printfa.o(i.__0vsnprintf)
  - _sputc from printfa.o(i._sputc) referenced from printfa.o(i.__0sprintf)
  - main from main.o(.text.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B)
  - prvHelpCommand from freertos_cli.o(.text.prvHelpCommand) referenced from freertos_cli.o(.rodata.xHelpCommand)
  - prvIdleTask from tasks.o(.text.prvIdleTask) referenced 2 times from tasks.o(.text.vTaskStartScheduler)
  - prvTaskExitError from port.o(.text.prvTaskExitError) referenced 2 times from port.o(.text.pxPortInitialiseStack)
  - prvTimerTask from timers.o(.text.prvTimerTask) referenced 2 times from timers.o(.text.xTimerCreateTimerTask)

  ### Global Symbols

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

  - startup_stm32f407xx.o(.text)

  _main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001))

  _main_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
  [Calls]

  - >> __scatterload

  __main_after_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
  [Called By]

  - >> __scatterload

  _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008))

  _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A))

  _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B))

  __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D))

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

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

  - startup_stm32f407xx.o(RESET)

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

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

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - startup_stm32f407xx.o(RESET)

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

  - Max Depth = 40
  - Call Chain = __aeabi_uldivmod
  [Calls]
  - >> __aeabi_llsr
  - >> __aeabi_llsl
  [Called By]
  - >> HAL_RCC_GetSysClockFreq
  - >> UART_SetConfig
  - >> _printf_core
  - >> _fp_digits

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

  - >> Chassis_SetMode

  srand (Thumb, 6 bytes, Stack size 0 bytes, rand.o(.text))
  [Called By]

  - >> Chassis_SetMode

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

  - >> prvCopyDataToQueue
  - >> prvCopyDataFromQueue
  - >> AI_ParseHost
  - >> Referee_Parse
  - >> Referee_MoveData
  - >> BSP_Flash_ReadBytes

  __aeabi_memcpy4 (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED)

  __aeabi_memcpy8 (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED)

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

  - >> _memset$wrapper
  - >> __aeabi_memclr

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

  - >> prvInitialiseNewTask

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

  __aeabi_memclr (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text))
  [Calls]

  - >> __aeabi_memset
  [Called By]
  - >> Referee_MoveData
  - >> Task_CLI

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

  - >> SystemClock_Config
  - >> DR16_ParseRC
  - >> DR16_HandleOffline
  - >> CAN_Init
  - >> Command_Config

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

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

  - >> __aeabi_memset

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

  - Max Depth = 8
  - Call Chain = strncpy
  [Called By]
  - >> FreeRTOS_CLIProcessCommand
  - >> prvHelpCommand
  - >> Command_Stats

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

  - >> vTaskList
  - >> vTaskGetRunTimeStats
  - >> prvWriteNameToBuffer
  - >> FreeRTOS_CLIProcessCommand
  - >> Task_CLI

  strcmp (Thumb, 28 bytes, Stack size 8 bytes, strcmp.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = strcmp
  [Called By]
  - >> Config_GetRobotParam
  - >> Config_GetPilotCfg

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

  - >> prvWriteNameToBuffer

  strncmp (Thumb, 30 bytes, Stack size 12 bytes, strncmp.o(.text))
  [Stack]

  - Max Depth = 12
  - Call Chain = strncmp
  [Called By]
  - >> FreeRTOS_CLIProcessCommand
  - >> Command_Config

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

  - Max Depth = 88
  - Call Chain = __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_lasr
  - >> __aeabi_llsl
  - >> _double_round
  - >> _double_epilogue
  [Called By]
  - >> Chassis_CalcWz
  - >> Referee_UIRefresh
  - >> __kernel_poly
  - >> __kernel_sin
  - >> __ieee754_rem_pio2
  - >> __mathlib_dbl_infnan2
  - >> __mathlib_dbl_infnan
  - >> __hardfp_atan
  - >> _fp_digits
  - >> __aeabi_dsub
  - >> __aeabi_drsub

  __aeabi_dsub (Thumb, 6 bytes, Stack size 0 bytes, dadd.o(.text))
  [Stack]

  - Max Depth = 88
  - Call Chain = __aeabi_dsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_dadd
  [Called By]
  - >> __kernel_sin
  - >> __ieee754_rem_pio2
  - >> __kernel_cos
  - >> __hardfp_atan
  - >> __hardfp_atan2

  __aeabi_drsub (Thumb, 6 bytes, Stack size 0 bytes, dadd.o(.text))
  [Stack]

  - Max Depth = 88
  - Call Chain = __aeabi_drsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_dadd
  [Called By]
  - >> __kernel_sin
  - >> __ieee754_rem_pio2
  - >> __kernel_cos
  - >> __hardfp_atan
  - >> __hardfp_atan2

  __aeabi_dmul (Thumb, 228 bytes, Stack size 48 bytes, dmul.o(.text))
  [Stack]

  - Max Depth = 88
  - Call Chain = __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> _double_epilogue
  [Called By]
  - >> Chassis_CalcWz
  - >> Referee_UIRefresh
  - >> Referee_PraseCmd
  - >> __kernel_poly
  - >> __kernel_sin
  - >> __ieee754_rem_pio2
  - >> __mathlib_dbl_underflow
  - >> __kernel_cos
  - >> __hardfp_atan
  - >> _fp_digits

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

  - Max Depth = 56
  - Call Chain = __aeabi_i2d ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> _double_epilogue
  [Called By]
  - >> Referee_UIRefresh
  - >> Referee_PraseCmd
  - >> __ieee754_rem_pio2

  __aeabi_d2iz (Thumb, 62 bytes, Stack size 16 bytes, dfixi.o(.text))
  [Stack]

  - Max Depth = 16
  - Call Chain = __aeabi_d2iz
  [Calls]
  - >> __aeabi_llsr
  [Called By]
  - >> Referee_UIRefresh
  - >> Referee_PraseCmd
  - >> __ieee754_rem_pio2
  - >> __kernel_cos

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

  - >> Chassis_CalcWz
  - >> Referee_UIRefresh
  - >> PID_Init
  - >> PID_Calc
  - >> LowPassFilter2p_Reset
  - >> LowPassFilter2p_Apply
  - >> AHRS_Init
  - >> Command_Stats
  - >> Command_SetMechZero
  - >> Command_SetGimbalLim
  - >> Command_CaliGyro

  __aeabi_d2f (Thumb, 56 bytes, Stack size 8 bytes, d2f.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = __aeabi_d2f
  [Calls]
  - >> _float_round
  [Called By]
  - >> Chassis_CalcWz
  - >> AHRS_Init

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

  - >> __aeabi_dadd
  - >> _double_epilogue
  - >> __aeabi_d2ulz
  - >> __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))
  [Called By]

  - >> __aeabi_d2iz
  - >> _double_epilogue
  - >> __aeabi_d2ulz
  - >> __aeabi_uldivmod

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

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

  - >> __aeabi_dadd

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

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

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

  - >> __aeabi_d2f

  _float_epilogue (Thumb, 92 bytes, Stack size 4 bytes, fepilogue.o(.text), UNUSED)

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

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

  _double_epilogue (Thumb, 156 bytes, Stack size 32 bytes, depilogue.o(.text))
  [Stack]

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

  __aeabi_ddiv (Thumb, 222 bytes, Stack size 32 bytes, ddiv.o(.text))
  [Stack]

  - Max Depth = 40
  - Call Chain = __aeabi_ddiv ⇒ _double_round
  [Calls]
  - >> _double_round
  [Called By]
  - >> __mathlib_dbl_invalid
  - >> __hardfp_atan
  - >> _fp_digits
  - >> __hardfp_atan2

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

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

  __aeabi_cdcmpeq (Thumb, 0 bytes, Stack size 0 bytes, cdcmple.o(.text))
  [Called By]

  - >> __hardfp_atan2

  __aeabi_cdcmple (Thumb, 48 bytes, Stack size 0 bytes, cdcmple.o(.text), UNUSED)

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

  - >> _fp_digits

  __scatterload (Thumb, 28 bytes, Stack size 0 bytes, init.o(.text))
  [Calls]

  - >> __main_after_scatterload
  [Called By]
  - >> _main_scatterload

  __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)

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

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

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

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

  AHRS_GetEulr (Thumb, 348 bytes, Stack size 48 bytes, ahrs.o(.text.AHRS_GetEulr))
  [Stack]

  - Max Depth = 80
  - Call Chain = AHRS_GetEulr ⇒ __hardfp_atan2f
  [Calls]
  - >> copysignf
  - >> __hardfp_atan2f
  - >> __hardfp_asinf
  [Called By]
  - >> Task_AttiEsti

  AHRS_Init (Thumb, 644 bytes, Stack size 56 bytes, ahrs.o(.text.AHRS_Init))
  [Stack]

  - Max Depth = 280
  - Call Chain = AHRS_Init ⇒ __hardfp_atan2 ⇒ atan ⇒ __hardfp_atan ⇒ __kernel_poly ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_f2d
  - >> __aeabi_d2f
  - >> __hardfp_atan2
  [Called By]
  - >> Task_AttiEsti

  AHRS_ResetEulr (Thumb, 18 bytes, Stack size 4 bytes, ahrs.o(.text.AHRS_ResetEulr))
  [Stack]

  - Max Depth = 4
  - Call Chain = AHRS_ResetEulr
  [Called By]
  - >> Gimbal_Control
  - >> Gimbal_SetMode

  AHRS_Update (Thumb, 3098 bytes, Stack size 224 bytes, ahrs.o(.text.AHRS_Update))
  [Stack]

  - Max Depth = 376
  - Call Chain = AHRS_Update ⇒ AHRS_UpdateIMU ⇒ InvSqrt
  [Calls]
  - >> InvSqrt
  - >> AHRS_UpdateIMU
  [Called By]
  - >> Task_AttiEsti

  AI_HandleOffline (Thumb, 92 bytes, Stack size 16 bytes, ai.o(.text.AI_HandleOffline))
  [Stack]

  - Max Depth = 16
  - Call Chain = AI_HandleOffline
  [Called By]
  - >> Task_Ai

  AI_Init (Thumb, 156 bytes, Stack size 24 bytes, ai.o(.text.AI_Init))
  [Stack]

  - Max Depth = 44
  - Call Chain = AI_Init ⇒ osThreadGetId ⇒ xTaskGetCurrentTaskHandle
  [Calls]
  - >> osThreadGetId
  - >> VerifyFailed
  - >> BSP_UART_RegisterCallback
  [Called By]
  - >> Task_Ai

  AI_PackCmd (Thumb, 62 bytes, Stack size 8 bytes, ai.o(.text.AI_PackCmd))
  [Stack]

  - Max Depth = 8
  - Call Chain = AI_PackCmd
  [Called By]
  - >> Task_Ai

  AI_PackMCU (Thumb, 200 bytes, Stack size 24 bytes, ai.o(.text.AI_PackMCU))
  [Stack]

  - Max Depth = 52
  - Call Chain = AI_PackMCU ⇒ CRC16_Calc ⇒ CRC16_Byte
  [Calls]
  - >> CRC16_Calc
  [Called By]
  - >> Task_Ai

  AI_PackRef (Thumb, 38 bytes, Stack size 16 bytes, ai.o(.text.AI_PackRef))
  [Stack]

  - Max Depth = 44
  - Call Chain = AI_PackRef ⇒ CRC16_Calc ⇒ CRC16_Byte
  [Calls]
  - >> CRC16_Calc
  [Called By]
  - >> Task_Ai

  AI_ParseHost (Thumb, 112 bytes, Stack size 24 bytes, ai.o(.text.AI_ParseHost))
  [Stack]

  - Max Depth = 76
  - Call Chain = AI_ParseHost ⇒ CRC16_Verify ⇒ CRC16_Calc ⇒ CRC16_Byte
  [Calls]
  - >> CRC16_Verify
  - >> __aeabi_memcpy
  [Called By]
  - >> Task_Ai

  AI_StartReceiving (Thumb, 54 bytes, Stack size 16 bytes, ai.o(.text.AI_StartReceiving))
  [Stack]

  - Max Depth = 128
  - Call Chain = AI_StartReceiving ⇒ HAL_UART_Receive_DMA ⇒ UART_Start_Receive_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> HAL_UART_Receive_DMA
  - >> BSP_UART_GetHandle
  [Called By]
  - >> Task_Ai

  AI_StartSend (Thumb, 100 bytes, Stack size 24 bytes, ai.o(.text.AI_StartSend))
  [Stack]

  - Max Depth = 112
  - Call Chain = AI_StartSend ⇒ HAL_UART_Transmit_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> HAL_UART_Transmit_DMA
  - >> BSP_UART_GetHandle
  [Called By]
  - >> Task_Ai

  AI_WaitDmaCplt (Thumb, 26 bytes, Stack size 8 bytes, ai.o(.text.AI_WaitDmaCplt))
  [Stack]

  - Max Depth = 136
  - Call Chain = AI_WaitDmaCplt ⇒ osThreadFlagsWait ⇒ xTaskNotifyWait ⇒ prvAddCurrentTaskToDelayedList ⇒ vListInsert
  [Calls]
  - >> osThreadFlagsWait
  [Called By]
  - >> Task_Ai

  AbsClip (Thumb, 106 bytes, Stack size 16 bytes, user_math.o(.text.AbsClip))
  [Stack]

  - Max Depth = 16
  - Call Chain = AbsClip
  [Called By]
  - >> PID_Calc

  BMI088_AcclStartDmaRecv (Thumb, 30 bytes, Stack size 16 bytes, bmi088.o(.text.BMI088_AcclStartDmaRecv))
  [Stack]

  - Max Depth = 168
  - Call Chain = BMI088_AcclStartDmaRecv ⇒ BMI_Read ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
  [Calls]
  - >> BMI_Read
  [Called By]
  - >> Task_AttiEsti

  BMI088_AcclWaitDmaCplt (Thumb, 16 bytes, Stack size 8 bytes, bmi088.o(.text.BMI088_AcclWaitDmaCplt))
  [Stack]

  - Max Depth = 136
  - Call Chain = BMI088_AcclWaitDmaCplt ⇒ osThreadFlagsWait ⇒ xTaskNotifyWait ⇒ prvAddCurrentTaskToDelayedList ⇒ vListInsert
  [Calls]
  - >> osThreadFlagsWait
  [Called By]
  - >> Task_AttiEsti

  BMI088_GetUpdateFreq (Thumb, 16 bytes, Stack size 4 bytes, bmi088.o(.text.BMI088_GetUpdateFreq))
  [Stack]

  - Max Depth = 4
  - Call Chain = BMI088_GetUpdateFreq
  [Called By]
  - >> Task_AttiEsti

  BMI088_GyroStable (Thumb, 100 bytes, Stack size 8 bytes, bmi088.o(.text.BMI088_GyroStable))
  [Stack]

  - Max Depth = 8
  - Call Chain = BMI088_GyroStable
  [Called By]
  - >> Command_CaliGyro

  BMI088_GyroStartDmaRecv (Thumb, 26 bytes, Stack size 8 bytes, bmi088.o(.text.BMI088_GyroStartDmaRecv))
  [Stack]

  - Max Depth = 160
  - Call Chain = BMI088_GyroStartDmaRecv ⇒ BMI_Read ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
  [Calls]
  - >> BMI_Read
  [Called By]
  - >> Task_AttiEsti

  BMI088_GyroWaitDmaCplt (Thumb, 16 bytes, Stack size 8 bytes, bmi088.o(.text.BMI088_GyroWaitDmaCplt))
  [Stack]

  - Max Depth = 136
  - Call Chain = BMI088_GyroWaitDmaCplt ⇒ osThreadFlagsWait ⇒ xTaskNotifyWait ⇒ prvAddCurrentTaskToDelayedList ⇒ vListInsert
  [Calls]
  - >> osThreadFlagsWait
  [Called By]
  - >> Task_AttiEsti

  BMI088_Init (Thumb, 394 bytes, Stack size 56 bytes, bmi088.o(.text.BMI088_Init))
  [Stack]

  - Max Depth = 272
  - Call Chain = BMI088_Init ⇒ BMI_ReadSingle ⇒ HAL_SPI_Receive ⇒ HAL_SPI_TransmitReceive ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
  [Calls]
  - >> osThreadGetId
  - >> BMI_WriteSingle
  - >> BMI_ReadSingle
  - >> BSP_SPI_RegisterCallback
  - >> BSP_GPIO_RegisterCallback
  - >> BSP_GPIO_EnableIRQ
  - >> BSP_GPIO_DisableIRQ
  - >> BSP_Delay
  [Called By]
  - >> Task_AttiEsti

  BMI088_ParseAccl (Thumb, 244 bytes, Stack size 16 bytes, bmi088.o(.text.BMI088_ParseAccl))
  [Stack]

  - Max Depth = 16
  - Call Chain = BMI088_ParseAccl
  [Called By]
  - >> Task_AttiEsti

  BMI088_ParseGyro (Thumb, 280 bytes, Stack size 16 bytes, bmi088.o(.text.BMI088_ParseGyro))
  [Stack]

  - Max Depth = 16
  - Call Chain = BMI088_ParseGyro
  [Called By]
  - >> Task_AttiEsti

  BMI088_WaitNew (Thumb, 16 bytes, Stack size 8 bytes, bmi088.o(.text.BMI088_WaitNew))
  [Stack]

  - Max Depth = 136
  - Call Chain = BMI088_WaitNew ⇒ osThreadFlagsWait ⇒ xTaskNotifyWait ⇒ prvAddCurrentTaskToDelayedList ⇒ vListInsert
  [Calls]
  - >> osThreadFlagsWait
  [Called By]
  - >> Task_AttiEsti

  BSP_CAN_GetHandle (Thumb, 62 bytes, Stack size 12 bytes, can_1.o(.text.BSP_CAN_GetHandle))
  [Stack]

  - Max Depth = 12
  - Call Chain = BSP_CAN_GetHandle
  [Called By]
  - >> CAN_Motor_Control
  - >> CAN_Init
  - >> CAN_Cap_Control
  - >> CAN_CAN2RxFifoMsgPendingCallback
  - >> CAN_CAN1RxFifoMsgPendingCallback

  BSP_CAN_RegisterCallback (Thumb, 70 bytes, Stack size 8 bytes, can_1.o(.text.BSP_CAN_RegisterCallback))
  [Stack]

  - Max Depth = 8
  - Call Chain = BSP_CAN_RegisterCallback
  [Called By]
  - >> CAN_Init

  BSP_Delay (Thumb, 142 bytes, Stack size 32 bytes, delay.o(.text.BSP_Delay))
  [Stack]

  - Max Depth = 148
  - Call Chain = BSP_Delay ⇒ osDelay ⇒ vTaskDelay ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> HAL_Delay
  - >> osKernelGetTickFreq
  - >> osKernelGetState
  - >> osDelay
  [Called By]
  - >> BMI088_Init
  - >> BMI_WriteSingle
  - >> BMI_ReadSingle
  - >> BSP_USB_Transmit

  BSP_Flash_EraseSector (Thumb, 72 bytes, Stack size 40 bytes, flash.o(.text.BSP_Flash_EraseSector))
  [Stack]

  - Max Depth = 104
  - Call Chain = BSP_Flash_EraseSector ⇒ HAL_FLASHEx_Erase ⇒ FLASH_Erase_Sector ⇒ assert_failed
  [Calls]
  - >> HAL_FLASHEx_Erase
  - >> HAL_FLASH_Unlock
  - >> HAL_FLASH_Lock
  - >> FLASH_WaitForLastOperation
  [Called By]
  - >> Config_Set

  BSP_Flash_ReadBytes (Thumb, 24 bytes, Stack size 24 bytes, flash.o(.text.BSP_Flash_ReadBytes))
  [Stack]

  - Max Depth = 24
  - Call Chain = BSP_Flash_ReadBytes
  [Calls]
  - >> __aeabi_memcpy
  [Called By]
  - >> Config_Get

  BSP_Flash_WriteBytes (Thumb, 78 bytes, Stack size 24 bytes, flash.o(.text.BSP_Flash_WriteBytes))
  [Stack]

  - Max Depth = 96
  - Call Chain = BSP_Flash_WriteBytes ⇒ HAL_FLASH_Program ⇒ FLASH_Program_DoubleWord ⇒ assert_failed
  [Calls]
  - >> HAL_FLASH_Unlock
  - >> HAL_FLASH_Program
  - >> HAL_FLASH_Lock
  - >> FLASH_WaitForLastOperation
  [Called By]
  - >> Config_Set

  BSP_Free (Thumb, 16 bytes, Stack size 16 bytes, mm.o(.text.BSP_Free))
  [Stack]

  - Max Depth = 116
  - Call Chain = BSP_Free ⇒ vPortFree ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> vPortFree
  [Called By]
  - >> Chassis_Init

  BSP_GPIO_DisableIRQ (Thumb, 116 bytes, Stack size 16 bytes, gpio_1.o(.text.BSP_GPIO_DisableIRQ))
  [Stack]

  - Max Depth = 40
  - Call Chain = BSP_GPIO_DisableIRQ ⇒ HAL_NVIC_DisableIRQ ⇒ assert_failed
  [Calls]
  - >> HAL_NVIC_DisableIRQ
  [Called By]
  - >> BMI088_Init

  BSP_GPIO_EnableIRQ (Thumb, 116 bytes, Stack size 16 bytes, gpio_1.o(.text.BSP_GPIO_EnableIRQ))
  [Stack]

  - Max Depth = 40
  - Call Chain = BSP_GPIO_EnableIRQ ⇒ HAL_NVIC_EnableIRQ ⇒ assert_failed
  [Calls]
  - >> HAL_NVIC_EnableIRQ
  [Called By]
  - >> BMI088_Init

  BSP_GPIO_RegisterCallback (Thumb, 106 bytes, Stack size 12 bytes, gpio_1.o(.text.BSP_GPIO_RegisterCallback))
  [Stack]

  - Max Depth = 12
  - Call Chain = BSP_GPIO_RegisterCallback
  [Called By]
  - >> BMI088_Init

  BSP_GetBatteryVolt (Thumb, 120 bytes, Stack size 40 bytes, adc_1.o(.text.BSP_GetBatteryVolt))
  [Stack]

  - Max Depth = 80
  - Call Chain = BSP_GetBatteryVolt ⇒ HAL_ADC_ConfigChannel ⇒ assert_failed
  [Calls]
  - >> HAL_ADC_ConfigChannel
  - >> Error_Handler
  - >> HAL_ADC_Start
  - >> HAL_ADC_PollForConversion
  - >> HAL_ADC_GetValue
  [Called By]
  - >> Task_Monitor

  BSP_GetTemperature (Thumb, 140 bytes, Stack size 40 bytes, adc_1.o(.text.BSP_GetTemperature))
  [Stack]

  - Max Depth = 80
  - Call Chain = BSP_GetTemperature ⇒ HAL_ADC_ConfigChannel ⇒ assert_failed
  [Calls]
  - >> HAL_ADC_ConfigChannel
  - >> Error_Handler
  - >> HAL_ADC_Start
  - >> HAL_ADC_PollForConversion
  - >> HAL_ADC_GetValue
  [Called By]
  - >> Task_Monitor

  BSP_LED_Set (Thumb, 368 bytes, Stack size 40 bytes, led.o(.text.BSP_LED_Set))
  [Stack]

  - Max Depth = 128
  - Call Chain = BSP_LED_Set ⇒ HAL_TIM_PWM_Start ⇒ TIM_CCxChannelCmd ⇒ assert_failed
  [Calls]
  - >> HAL_TIM_PWM_Stop
  - >> HAL_TIM_PWM_Start
  [Called By]
  - >> Task_Monitor
  - >> Task_Info

  BSP_Malloc (Thumb, 16 bytes, Stack size 16 bytes, mm.o(.text.BSP_Malloc))
  [Stack]

  - Max Depth = 132
  - Call Chain = BSP_Malloc ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> pvPortMalloc
  [Called By]
  - >> Chassis_Init

  BSP_PWM_Set (Thumb, 270 bytes, Stack size 32 bytes, pwm.o(.text.BSP_PWM_Set))
  [Stack]

  - Max Depth = 120
  - Call Chain = BSP_PWM_Set ⇒ BSP_PWM_Stop ⇒ HAL_TIM_PWM_Stop ⇒ TIM_CCxChannelCmd ⇒ assert_failed
  [Calls]
  - >> BSP_PWM_Stop
  [Called By]
  - >> Task_AttiEsti
  - >> Shoot_Init
  - >> Shoot_Control

  BSP_PWM_Start (Thumb, 66 bytes, Stack size 16 bytes, pwm.o(.text.BSP_PWM_Start))
  [Stack]

  - Max Depth = 104
  - Call Chain = BSP_PWM_Start ⇒ HAL_TIM_PWM_Start ⇒ TIM_CCxChannelCmd ⇒ assert_failed
  [Calls]
  - >> HAL_TIM_PWM_Start
  [Called By]
  - >> Task_AttiEsti
  - >> Shoot_Init
  - >> Shoot_Control

  BSP_PWM_Stop (Thumb, 84 bytes, Stack size 24 bytes, pwm.o(.text.BSP_PWM_Stop))
  [Stack]

  - Max Depth = 88
  - Call Chain = BSP_PWM_Stop ⇒ HAL_TIM_PWM_Stop ⇒ TIM_CCxChannelCmd ⇒ assert_failed
  [Calls]
  - >> HAL_GPIO_WritePin
  - >> HAL_TIM_PWM_Stop
  [Called By]
  - >> BSP_PWM_Set
  - >> Shoot_Control

  BSP_SPI_GetHandle (Thumb, 62 bytes, Stack size 12 bytes, spi_1.o(.text.BSP_SPI_GetHandle))
  [Stack]

  - Max Depth = 12
  - Call Chain = BSP_SPI_GetHandle
  [Called By]
  - >> BMI_WriteSingle
  - >> BMI_ReadSingle
  - >> BMI_Read

  BSP_SPI_RegisterCallback (Thumb, 68 bytes, Stack size 8 bytes, spi_1.o(.text.BSP_SPI_RegisterCallback))
  [Stack]

  - Max Depth = 8
  - Call Chain = BSP_SPI_RegisterCallback
  [Called By]
  - >> BMI088_Init

  BSP_UART_GetHandle (Thumb, 82 bytes, Stack size 12 bytes, uart.o(.text.BSP_UART_GetHandle))
  [Stack]

  - Max Depth = 12
  - Call Chain = BSP_UART_GetHandle
  [Called By]
  - >> AI_StartSend
  - >> AI_StartReceiving
  - >> Referee_UIRefresh
  - >> Referee_StartSend
  - >> Referee_StartReceiving
  - >> Referee_Parse
  - >> Referee_Init
  - >> Referee_CheckTXReady
  - >> Referee_IdleLineCallback
  - >> DR16_StartDmaRecv

  BSP_UART_IRQHandler (Thumb, 108 bytes, Stack size 16 bytes, uart.o(.text.BSP_UART_IRQHandler))
  [Stack]

  - Max Depth = 24
  - Call Chain = BSP_UART_IRQHandler ⇒ UART_Get
  [Calls]
  - >> UART_Get
  [Called By]
  - >> USART6_IRQHandler
  - >> USART1_IRQHandler

  BSP_UART_RegisterCallback (Thumb, 72 bytes, Stack size 8 bytes, uart.o(.text.BSP_UART_RegisterCallback))
  [Stack]

  - Max Depth = 8
  - Call Chain = BSP_UART_RegisterCallback
  [Called By]
  - >> AI_Init
  - >> Referee_Init
  - >> DR16_Init

  BSP_USB_Printf (Thumb, 104 bytes, Stack size 40 bytes, usb.o(.text.BSP_USB_Printf))
  [Stack]

  - Max Depth = 256
  - Call Chain = BSP_USB_Printf ⇒ BSP_USB_Transmit ⇒ CDC_Transmit_FS ⇒ USBD_CDC_TransmitPacket ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> BSP_USB_Transmit
  - >> vsnprintf
  [Called By]
  - >> Task_CLI

  BSP_USB_ReadChar (Thumb, 12 bytes, Stack size 0 bytes, usb.o(.text.BSP_USB_ReadChar))
  [Called By]

  - >> Task_CLI

  BSP_USB_ReadyReceive (Thumb, 52 bytes, Stack size 16 bytes, usb.o(.text.BSP_USB_ReadyReceive))
  [Stack]

  - Max Depth = 192
  - Call Chain = BSP_USB_ReadyReceive ⇒ CDC_ReadyReceive ⇒ USBD_CDC_ReceivePacket ⇒ USBD_LL_PrepareReceive ⇒ HAL_PCD_EP_Receive ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> CDC_ReadyReceive
  [Called By]
  - >> Task_CLI

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

  - startup_stm32f407xx.o(RESET)

  CAN1_RX0_IRQHandler (Thumb, 16 bytes, Stack size 8 bytes, stm32f4xx_it.o(.text.CAN1_RX0_IRQHandler))
  [Stack]

  - Max Depth = 80
  - Call Chain = CAN1_RX0_IRQHandler ⇒ HAL_CAN_IRQHandler ⇒ HAL_CAN_WakeUpFromRxMsgCallback ⇒ CAN_Get
  [Calls]
  - >> HAL_CAN_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  CAN1_RX1_IRQHandler (Thumb, 16 bytes, Stack size 8 bytes, stm32f4xx_it.o(.text.CAN1_RX1_IRQHandler))
  [Stack]

  - Max Depth = 80
  - Call Chain = CAN1_RX1_IRQHandler ⇒ HAL_CAN_IRQHandler ⇒ HAL_CAN_WakeUpFromRxMsgCallback ⇒ CAN_Get
  [Calls]
  - >> HAL_CAN_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  CAN2_RX0_IRQHandler (Thumb, 16 bytes, Stack size 8 bytes, stm32f4xx_it.o(.text.CAN2_RX0_IRQHandler))
  [Stack]

  - Max Depth = 80
  - Call Chain = CAN2_RX0_IRQHandler ⇒ HAL_CAN_IRQHandler ⇒ HAL_CAN_WakeUpFromRxMsgCallback ⇒ CAN_Get
  [Calls]
  - >> HAL_CAN_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  CAN2_RX1_IRQHandler (Thumb, 16 bytes, Stack size 8 bytes, stm32f4xx_it.o(.text.CAN2_RX1_IRQHandler))
  [Stack]

  - Max Depth = 80
  - Call Chain = CAN2_RX1_IRQHandler ⇒ HAL_CAN_IRQHandler ⇒ HAL_CAN_WakeUpFromRxMsgCallback ⇒ CAN_Get
  [Calls]
  - >> HAL_CAN_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  CAN_CAP_HandleOffline (Thumb, 26 bytes, Stack size 12 bytes, can_2.o(.text.CAN_CAP_HandleOffline))
  [Stack]

  - Max Depth = 12
  - Call Chain = CAN_CAP_HandleOffline
  [Called By]
  - >> Task_Cap

  CAN_Cap_Control (Thumb, 120 bytes, Stack size 40 bytes, can_2.o(.text.CAN_Cap_Control))
  [Stack]

  - Max Depth = 88
  - Call Chain = CAN_Cap_Control ⇒ HAL_CAN_AddTxMessage ⇒ assert_failed
  [Calls]
  - >> HAL_CAN_AddTxMessage
  - >> BSP_CAN_GetHandle
  [Called By]
  - >> Task_Can

  CAN_Cap_Decode (Thumb, 108 bytes, Stack size 8 bytes, can_2.o(.text.CAN_Cap_Decode))
  [Stack]

  - Max Depth = 8
  - Call Chain = CAN_Cap_Decode
  [Called By]
  - >> CAN_StoreMsg

  CAN_CheckFlag (Thumb, 50 bytes, Stack size 12 bytes, can_2.o(.text.CAN_CheckFlag))
  [Stack]

  - Max Depth = 12
  - Call Chain = CAN_CheckFlag
  [Called By]
  - >> Task_Can

  CAN_ClearFlag (Thumb, 46 bytes, Stack size 12 bytes, can_2.o(.text.CAN_ClearFlag))
  [Stack]

  - Max Depth = 12
  - Call Chain = CAN_ClearFlag
  [Called By]
  - >> Task_Can

  CAN_Init (Thumb, 282 bytes, Stack size 80 bytes, can_2.o(.text.CAN_Init))
  [Stack]

  - Max Depth = 276
  - Call Chain = CAN_Init ⇒ osMessageQueueNew ⇒ xQueueGenericCreateStatic ⇒ prvInitialiseNewQueue ⇒ xQueueGenericReset ⇒ xTaskRemoveFromEventList ⇒ vListInsertEnd
  [Calls]
  - >> osThreadGetId
  - >> HAL_CAN_Start
  - >> HAL_CAN_ConfigFilter
  - >> HAL_CAN_ActivateNotification
  - >> osMessageQueueNew
  - >> BSP_CAN_RegisterCallback
  - >> BSP_CAN_GetHandle
  - >> __aeabi_memclr4
  [Called By]
  - >> Task_Can

  CAN_Motor_Control (Thumb, 600 bytes, Stack size 72 bytes, can_2.o(.text.CAN_Motor_Control))
  [Stack]

  - Max Depth = 120
  - Call Chain = CAN_Motor_Control ⇒ HAL_CAN_AddTxMessage ⇒ assert_failed
  [Calls]
  - >> HAL_CAN_AddTxMessage
  - >> BSP_CAN_GetHandle
  [Called By]
  - >> Task_Can

  CAN_StoreMsg (Thumb, 306 bytes, Stack size 32 bytes, can_2.o(.text.CAN_StoreMsg))
  [Stack]

  - Max Depth = 44
  - Call Chain = CAN_StoreMsg ⇒ CAN_Motor_Decode
  [Calls]
  - >> CAN_Tof_Decode
  - >> CAN_Cap_Decode
  - >> CAN_Motor_Decode
  [Called By]
  - >> Task_Can

  CAN_Tof_Decode (Thumb, 76 bytes, Stack size 8 bytes, can_2.o(.text.CAN_Tof_Decode))
  [Stack]

  - Max Depth = 8
  - Call Chain = CAN_Tof_Decode
  [Called By]
  - >> CAN_StoreMsg

  CDC_ReadyReceive (Thumb, 18 bytes, Stack size 8 bytes, usbd_cdc_if.o(.text.CDC_ReadyReceive))
  [Stack]

  - Max Depth = 176
  - Call Chain = CDC_ReadyReceive ⇒ USBD_CDC_ReceivePacket ⇒ USBD_LL_PrepareReceive ⇒ HAL_PCD_EP_Receive ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_CDC_ReceivePacket
  [Called By]
  - >> BSP_USB_ReadyReceive

  CDC_Transmit_FS (Thumb, 96 bytes, Stack size 32 bytes, usbd_cdc_if.o(.text.CDC_Transmit_FS))
  [Stack]

  - Max Depth = 200
  - Call Chain = CDC_Transmit_FS ⇒ USBD_CDC_TransmitPacket ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_CDC_TransmitPacket
  - >> USBD_CDC_SetTxBuffer
  [Called By]
  - >> BSP_USB_Transmit

  CMD_CheckHostOverwrite (Thumb, 16 bytes, Stack size 4 bytes, cmd.o(.text.CMD_CheckHostOverwrite))
  [Stack]

  - Max Depth = 4
  - Call Chain = CMD_CheckHostOverwrite
  [Called By]
  - >> Task_Command

  CMD_Init (Thumb, 60 bytes, Stack size 12 bytes, cmd.o(.text.CMD_Init))
  [Stack]

  - Max Depth = 12
  - Call Chain = CMD_Init
  [Called By]
  - >> Task_Command

  CMD_ParseHost (Thumb, 108 bytes, Stack size 16 bytes, cmd.o(.text.CMD_ParseHost))
  [Stack]

  - Max Depth = 16
  - Call Chain = CMD_ParseHost
  [Called By]
  - >> Task_Command

  CMD_ParseRc (Thumb, 208 bytes, Stack size 24 bytes, cmd.o(.text.CMD_ParseRc))
  [Stack]

  - Max Depth = 96
  - Call Chain = CMD_ParseRc ⇒ CMD_PcLogic ⇒ CMD_BehaviorOccurredRc ⇒ CMD_BehaviorToKey
  [Calls]
  - >> CMD_RcLostLogic
  - >> CMD_RcLogic
  - >> CMD_PcLogic
  - >> CMD_KeyPressedRc
  [Called By]
  - >> Task_Command

  CMD_RefereeAdd (Thumb, 86 bytes, Stack size 12 bytes, cmd.o(.text.CMD_RefereeAdd))
  [Stack]

  - Max Depth = 12
  - Call Chain = CMD_RefereeAdd
  [Called By]
  - >> CMD_PcLogic

  CRC16_Calc (Thumb, 54 bytes, Stack size 24 bytes, crc16.o(.text.CRC16_Calc))
  [Stack]

  - Max Depth = 28
  - Call Chain = CRC16_Calc ⇒ CRC16_Byte
  [Calls]
  - >> CRC16_Byte
  [Called By]
  - >> AI_PackRef
  - >> AI_PackMCU
  - >> Referee_PackUI
  - >> CRC16_Verify

  CRC16_Verify (Thumb, 88 bytes, Stack size 24 bytes, crc16.o(.text.CRC16_Verify))
  [Stack]

  - Max Depth = 52
  - Call Chain = CRC16_Verify ⇒ CRC16_Calc ⇒ CRC16_Byte
  [Calls]
  - >> CRC16_Calc
  [Called By]
  - >> AI_ParseHost
  - >> Referee_Parse

  CRC8_Calc (Thumb, 60 bytes, Stack size 12 bytes, crc8.o(.text.CRC8_Calc))
  [Stack]

  - Max Depth = 12
  - Call Chain = CRC8_Calc
  [Called By]
  - >> Referee_PackUI
  - >> CRC8_Verify

  CRC8_Verify (Thumb, 76 bytes, Stack size 24 bytes, crc8.o(.text.CRC8_Verify))
  [Stack]

  - Max Depth = 36
  - Call Chain = CRC8_Verify ⇒ CRC8_Calc
  [Calls]
  - >> CRC8_Calc
  [Called By]
  - >> Referee_Parse

  CalculateRpm (Thumb, 284 bytes, Stack size 20 bytes, user_math.o(.text.CalculateRpm))
  [Stack]

  - Max Depth = 20
  - Call Chain = CalculateRpm
  [Called By]
  - >> Shoot_Control

  Cap_Control (Thumb, 90 bytes, Stack size 24 bytes, cap.o(.text.Cap_Control))
  [Stack]

  - Max Depth = 44
  - Call Chain = Cap_Control ⇒ PowerLimit_CapInput
  [Calls]
  - >> PowerLimit_CapInput
  - >> Capacity_GetCapacitorRemain
  [Called By]
  - >> Task_Cap

  Cap_DumpUI (Thumb, 26 bytes, Stack size 8 bytes, cap.o(.text.Cap_DumpUI))
  [Stack]

  - Max Depth = 8
  - Call Chain = Cap_DumpUI
  [Called By]
  - >> Task_Cap

  Capacity_GetBatteryRemain (Thumb, 332 bytes, Stack size 16 bytes, capacity.o(.text.Capacity_GetBatteryRemain))
  [Stack]

  - Max Depth = 16
  - Call Chain = Capacity_GetBatteryRemain
  [Called By]
  - >> Task_Monitor

  Capacity_GetCapacitorRemain (Thumb, 102 bytes, Stack size 16 bytes, capacity.o(.text.Capacity_GetCapacitorRemain))
  [Stack]

  - Max Depth = 16
  - Call Chain = Capacity_GetCapacitorRemain
  [Called By]
  - >> Cap_Control

  Chassis_Control (Thumb, 784 bytes, Stack size 64 bytes, chassis.o(.text.Chassis_Control))
  [Stack]

  - Max Depth = 192
  - Call Chain = Chassis_Control ⇒ Chassis_SetMode ⇒ PID_Reset ⇒ LowPassFilter2p_Reset ⇒ LowPassFilter2p_Apply ⇒ __ARM_isinf
  [Calls]
  - >> Chassis_SetMode
  - >> Chassis_CalcWz
  - >> PID_Calc
  - >> Mixer_Apply
  - >> LowPassFilter2p_Apply
  - >> __hardfp_sinf
  - >> __hardfp_cosf
  [Called By]
  - >> Task_CtrlChassis

  Chassis_DumpOutput (Thumb, 66 bytes, Stack size 12 bytes, chassis.o(.text.Chassis_DumpOutput))
  [Stack]

  - Max Depth = 12
  - Call Chain = Chassis_DumpOutput
  [Called By]
  - >> Task_CtrlChassis

  Chassis_DumpUI (Thumb, 40 bytes, Stack size 8 bytes, chassis.o(.text.Chassis_DumpUI))
  [Stack]

  - Max Depth = 8
  - Call Chain = Chassis_DumpUI
  [Called By]
  - >> Task_CtrlChassis

  Chassis_Init (Thumb, 614 bytes, Stack size 48 bytes, chassis.o(.text.Chassis_Init))
  [Stack]

  - Max Depth = 180
  - Call Chain = Chassis_Init ⇒ BSP_Malloc ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> CircleReverse
  - >> PID_Init
  - >> Mixer_Init
  - >> LowPassFilter2p_Init
  - >> BSP_Malloc
  - >> BSP_Free
  [Called By]
  - >> Task_CtrlChassis

  Chassis_PowerLimit (Thumb, 208 bytes, Stack size 24 bytes, chassis.o(.text.Chassis_PowerLimit))
  [Stack]

  - Max Depth = 56
  - Call Chain = Chassis_PowerLimit ⇒ PowerLimit_ChassicOutput
  [Calls]
  - >> PowerLimit_TargetPower
  - >> PowerLimit_ChassicOutput
  [Called By]
  - >> Task_CtrlChassis

  Chassis_UpdateFeedback (Thumb, 180 bytes, Stack size 16 bytes, chassis.o(.text.Chassis_UpdateFeedback))
  [Stack]

  - Max Depth = 16
  - Call Chain = Chassis_UpdateFeedback
  [Called By]
  - >> Task_CtrlChassis

  CircleAdd (Thumb, 132 bytes, Stack size 16 bytes, user_math.o(.text.CircleAdd))
  [Stack]

  - Max Depth = 16
  - Call Chain = CircleAdd
  [Called By]
  - >> Gimbal_Init
  - >> Gimbal_Control
  - >> Shoot_UpdateFeedback
  - >> Shoot_Control
  - >> Shoot_SetMode

  CircleError (Thumb, 154 bytes, Stack size 20 bytes, user_math.o(.text.CircleError))
  [Stack]

  - Max Depth = 20
  - Call Chain = CircleError
  [Called By]
  - >> Gimbal_Control
  - >> PID_Calc
  - >> Shoot_UpdateFeedback
  - >> Shoot_SetMode

  CircleReverse (Thumb, 32 bytes, Stack size 4 bytes, user_math.o(.text.CircleReverse))
  [Stack]

  - Max Depth = 4
  - Call Chain = CircleReverse
  [Called By]
  - >> Gimbal_Init
  - >> Chassis_Init
  - >> Gimbal_UpdateFeedback

  Clip (Thumb, 76 bytes, Stack size 12 bytes, user_math.o(.text.Clip))
  [Stack]

  - Max Depth = 12
  - Call Chain = Clip
  [Called By]
  - >> Gimbal_Control

  Config_Get (Thumb, 138 bytes, Stack size 16 bytes, config.o(.text.Config_Get))
  [Stack]

  - Max Depth = 48
  - Call Chain = Config_Get ⇒ Config_GetRobotParam ⇒ strcmp
  [Calls]
  - >> Config_GetRobotParam
  - >> Config_GetPilotCfg
  - >> BSP_Flash_ReadBytes
  [Called By]
  - >> Task_Init
  - >> Command_SetMechZero
  - >> Command_SetGimbalLim
  - >> Command_Config
  - >> Command_CaliGyro

  Config_GetPilotCfg (Thumb, 108 bytes, Stack size 24 bytes, config.o(.text.Config_GetPilotCfg))
  [Stack]

  - Max Depth = 32
  - Call Chain = Config_GetPilotCfg ⇒ strcmp
  [Calls]
  - >> strcmp
  [Called By]
  - >> Config_Get
  - >> Command_Config

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

  - >> Command_Config

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

  - >> Command_Config

  Config_GetRobotParam (Thumb, 108 bytes, Stack size 24 bytes, config.o(.text.Config_GetRobotParam))
  [Stack]

  - Max Depth = 32
  - Call Chain = Config_GetRobotParam ⇒ strcmp
  [Calls]
  - >> strcmp
  [Called By]
  - >> Config_Get
  - >> Command_Config

  Config_Set (Thumb, 38 bytes, Stack size 16 bytes, config.o(.text.Config_Set))
  [Stack]

  - Max Depth = 120
  - Call Chain = Config_Set ⇒ BSP_Flash_EraseSector ⇒ HAL_FLASHEx_Erase ⇒ FLASH_Erase_Sector ⇒ assert_failed
  [Calls]
  - >> osKernelUnlock
  - >> osKernelLock
  - >> BSP_Flash_WriteBytes
  - >> BSP_Flash_EraseSector
  [Called By]
  - >> Command_SetMechZero
  - >> Command_SetGimbalLim
  - >> Command_Config
  - >> Command_CaliGyro

  DMA1_Stream1_IRQHandler (Thumb, 16 bytes, Stack size 8 bytes, stm32f4xx_it.o(.text.DMA1_Stream1_IRQHandler))
  [Stack]

  - Max Depth = 40
  - Call Chain = DMA1_Stream1_IRQHandler ⇒ HAL_DMA_IRQHandler
  [Calls]
  - >> HAL_DMA_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  DMA1_Stream2_IRQHandler (Thumb, 16 bytes, Stack size 8 bytes, stm32f4xx_it.o(.text.DMA1_Stream2_IRQHandler))
  [Stack]

  - Max Depth = 40
  - Call Chain = DMA1_Stream2_IRQHandler ⇒ HAL_DMA_IRQHandler
  [Calls]
  - >> HAL_DMA_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  DMA1_Stream7_IRQHandler (Thumb, 16 bytes, Stack size 8 bytes, stm32f4xx_it.o(.text.DMA1_Stream7_IRQHandler))
  [Stack]

  - Max Depth = 40
  - Call Chain = DMA1_Stream7_IRQHandler ⇒ HAL_DMA_IRQHandler
  [Calls]
  - >> HAL_DMA_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  DMA2_Stream1_IRQHandler (Thumb, 16 bytes, Stack size 8 bytes, stm32f4xx_it.o(.text.DMA2_Stream1_IRQHandler))
  [Stack]

  - Max Depth = 40
  - Call Chain = DMA2_Stream1_IRQHandler ⇒ HAL_DMA_IRQHandler
  [Calls]
  - >> HAL_DMA_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  DMA2_Stream2_IRQHandler (Thumb, 16 bytes, Stack size 8 bytes, stm32f4xx_it.o(.text.DMA2_Stream2_IRQHandler))
  [Stack]

  - Max Depth = 40
  - Call Chain = DMA2_Stream2_IRQHandler ⇒ HAL_DMA_IRQHandler
  [Calls]
  - >> HAL_DMA_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  DMA2_Stream3_IRQHandler (Thumb, 16 bytes, Stack size 8 bytes, stm32f4xx_it.o(.text.DMA2_Stream3_IRQHandler))
  [Stack]

  - Max Depth = 40
  - Call Chain = DMA2_Stream3_IRQHandler ⇒ HAL_DMA_IRQHandler
  [Calls]
  - >> HAL_DMA_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  DMA2_Stream5_IRQHandler (Thumb, 16 bytes, Stack size 8 bytes, stm32f4xx_it.o(.text.DMA2_Stream5_IRQHandler))
  [Stack]

  - Max Depth = 40
  - Call Chain = DMA2_Stream5_IRQHandler ⇒ HAL_DMA_IRQHandler
  [Calls]
  - >> HAL_DMA_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  DMA2_Stream6_IRQHandler (Thumb, 16 bytes, Stack size 8 bytes, stm32f4xx_it.o(.text.DMA2_Stream6_IRQHandler))
  [Stack]

  - Max Depth = 40
  - Call Chain = DMA2_Stream6_IRQHandler ⇒ HAL_DMA_IRQHandler
  [Calls]
  - >> HAL_DMA_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  DMA2_Stream7_IRQHandler (Thumb, 16 bytes, Stack size 8 bytes, stm32f4xx_it.o(.text.DMA2_Stream7_IRQHandler))
  [Stack]

  - Max Depth = 40
  - Call Chain = DMA2_Stream7_IRQHandler ⇒ HAL_DMA_IRQHandler
  [Calls]
  - >> HAL_DMA_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  DR16_HandleOffline (Thumb, 60 bytes, Stack size 24 bytes, dr16.o(.text.DR16_HandleOffline))
  [Stack]

  - Max Depth = 24
  - Call Chain = DR16_HandleOffline
  [Calls]
  - >> __aeabi_memclr4
  [Called By]
  - >> Task_RC

  DR16_Init (Thumb, 116 bytes, Stack size 24 bytes, dr16.o(.text.DR16_Init))
  [Stack]

  - Max Depth = 44
  - Call Chain = DR16_Init ⇒ osThreadGetId ⇒ xTaskGetCurrentTaskHandle
  [Calls]
  - >> osThreadGetId
  - >> BSP_UART_RegisterCallback
  [Called By]
  - >> Task_RC

  DR16_ParseRC (Thumb, 356 bytes, Stack size 24 bytes, dr16.o(.text.DR16_ParseRC))
  [Stack]

  - Max Depth = 32
  - Call Chain = DR16_ParseRC ⇒ DR16_DataCorrupted
  [Calls]
  - >> DR16_DataCorrupted
  - >> __aeabi_memclr4
  [Called By]
  - >> Task_RC

  DR16_StartDmaRecv (Thumb, 48 bytes, Stack size 16 bytes, dr16.o(.text.DR16_StartDmaRecv))
  [Stack]

  - Max Depth = 128
  - Call Chain = DR16_StartDmaRecv ⇒ HAL_UART_Receive_DMA ⇒ UART_Start_Receive_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> HAL_UART_Receive_DMA
  - >> BSP_UART_GetHandle
  [Called By]
  - >> Task_RC

  DR16_WaitDmaCplt (Thumb, 28 bytes, Stack size 16 bytes, dr16.o(.text.DR16_WaitDmaCplt))
  [Stack]

  - Max Depth = 144
  - Call Chain = DR16_WaitDmaCplt ⇒ osThreadFlagsWait ⇒ xTaskNotifyWait ⇒ prvAddCurrentTaskToDelayedList ⇒ vListInsert
  [Calls]
  - >> osThreadFlagsWait
  [Called By]
  - >> Task_RC

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

  - startup_stm32f407xx.o(RESET)

  EXTI0_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, stm32f4xx_it.o(.text.EXTI0_IRQHandler))
  [Stack]

  - Max Depth = 40
  - Call Chain = EXTI0_IRQHandler ⇒ HAL_GPIO_EXTI_IRQHandler ⇒ HAL_GPIO_EXTI_Callback
  [Calls]
  - >> HAL_GPIO_EXTI_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  EXTI3_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, stm32f4xx_it.o(.text.EXTI3_IRQHandler))
  [Stack]

  - Max Depth = 40
  - Call Chain = EXTI3_IRQHandler ⇒ HAL_GPIO_EXTI_IRQHandler ⇒ HAL_GPIO_EXTI_Callback
  [Calls]
  - >> HAL_GPIO_EXTI_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  EXTI4_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, stm32f4xx_it.o(.text.EXTI4_IRQHandler))
  [Stack]

  - Max Depth = 40
  - Call Chain = EXTI4_IRQHandler ⇒ HAL_GPIO_EXTI_IRQHandler ⇒ HAL_GPIO_EXTI_Callback
  [Calls]
  - >> HAL_GPIO_EXTI_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  EXTI9_5_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, stm32f4xx_it.o(.text.EXTI9_5_IRQHandler))
  [Stack]

  - Max Depth = 40
  - Call Chain = EXTI9_5_IRQHandler ⇒ HAL_GPIO_EXTI_IRQHandler ⇒ HAL_GPIO_EXTI_Callback
  [Calls]
  - >> HAL_GPIO_EXTI_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  Error_Handler (Thumb, 6 bytes, Stack size 0 bytes, main.o(.text.Error_Handler))
  [Called By]

  - >> USBD_LL_Init
  - >> HAL_PCD_ResetCallback
  - >> HAL_UART_MspInit
  - >> HAL_SPI_MspInit
  - >> HAL_I2C_MspInit
  - >> MX_USB_DEVICE_Init
  - >> SystemClock_Config
  - >> MX_USART6_UART_Init
  - >> MX_USART3_UART_Init
  - >> MX_USART1_UART_Init
  - >> MX_TIM8_Init
  - >> MX_TIM7_Init
  - >> MX_TIM5_Init
  - >> MX_TIM4_Init
  - >> MX_TIM3_Init
  - >> MX_TIM1_Init
  - >> MX_TIM10_Init
  - >> MX_SPI2_Init
  - >> MX_SPI1_Init
  - >> MX_RNG_Init
  - >> MX_I2C3_Init
  - >> MX_I2C2_Init
  - >> MX_I2C1_Init
  - >> MX_CRC_Init
  - >> MX_CAN2_Init
  - >> MX_CAN1_Init
  - >> MX_ADC3_Init
  - >> MX_ADC1_Init
  - >> BSP_GetTemperature
  - >> BSP_GetBatteryVolt

  FLASH_Erase_Sector (Thumb, 306 bytes, Stack size 24 bytes, stm32f4xx_hal_flash_ex.o(.text.FLASH_Erase_Sector))
  [Stack]

  - Max Depth = 32
  - Call Chain = FLASH_Erase_Sector ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> HAL_FLASHEx_Erase

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

  - >> HAL_FLASHEx_Erase

  FLASH_WaitForLastOperation (Thumb, 164 bytes, Stack size 24 bytes, stm32f4xx_hal_flash.o(.text.FLASH_WaitForLastOperation))
  [Stack]

  - Max Depth = 24
  - Call Chain = FLASH_WaitForLastOperation
  [Calls]
  - >> FLASH_SetErrorCode
  - >> HAL_GetTick
  [Called By]
  - >> HAL_FLASHEx_Erase
  - >> HAL_FLASH_Program
  - >> BSP_Flash_WriteBytes
  - >> BSP_Flash_EraseSector

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

  - >> Task_CLI

  FreeRTOS_CLIGetParameter (Thumb, 228 bytes, Stack size 32 bytes, freertos_cli.o(.text.FreeRTOS_CLIGetParameter))
  [Stack]

  - Max Depth = 32
  - Call Chain = FreeRTOS_CLIGetParameter
  [Called By]
  - >> Command_Config

  FreeRTOS_CLIProcessCommand (Thumb, 348 bytes, Stack size 32 bytes, freertos_cli.o(.text.FreeRTOS_CLIProcessCommand))
  [Stack]

  - Max Depth = 44
  - Call Chain = FreeRTOS_CLIProcessCommand ⇒ prvGetNumberOfParameters
  [Calls]
  - >> prvGetNumberOfParameters
  - >> strncmp
  - >> strlen
  - >> strncpy
  [Called By]
  - >> Task_CLI

  FreeRTOS_CLIRegisterCommand (Thumb, 130 bytes, Stack size 32 bytes, freertos_cli.o(.text.FreeRTOS_CLIRegisterCommand))
  [Stack]

  - Max Depth = 148
  - Call Chain = FreeRTOS_CLIRegisterCommand ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> vPortExitCritical
  - >> vPortEnterCritical
  - >> pvPortMalloc
  [Called By]
  - >> Task_CLI

  Gimbal_Control (Thumb, 892 bytes, Stack size 64 bytes, gimbal.o(.text.Gimbal_Control))
  [Stack]

  - Max Depth = 184
  - Call Chain = Gimbal_Control ⇒ Gimbal_SetMode ⇒ PID_Reset ⇒ LowPassFilter2p_Reset ⇒ LowPassFilter2p_Apply ⇒ __ARM_isinf
  [Calls]
  - >> Gimbal_SetMode
  - >> Clip
  - >> CircleAdd
  - >> PID_Calc
  - >> CircleError
  - >> LowPassFilter2p_Apply
  - >> AHRS_ResetEulr
  [Called By]
  - >> Task_CtrlGimbal

  Gimbal_DumpOutput (Thumb, 30 bytes, Stack size 8 bytes, gimbal.o(.text.Gimbal_DumpOutput))
  [Stack]

  - Max Depth = 8
  - Call Chain = Gimbal_DumpOutput
  [Called By]
  - >> Task_CtrlGimbal

  Gimbal_DumpUI (Thumb, 18 bytes, Stack size 8 bytes, gimbal.o(.text.Gimbal_DumpUI))
  [Stack]

  - Max Depth = 8
  - Call Chain = Gimbal_DumpUI
  [Called By]
  - >> Task_CtrlGimbal

  Gimbal_Init (Thumb, 288 bytes, Stack size 48 bytes, gimbal.o(.text.Gimbal_Init))
  [Stack]

  - Max Depth = 176
  - Call Chain = Gimbal_Init ⇒ PID_Init ⇒ PID_Reset ⇒ LowPassFilter2p_Reset ⇒ LowPassFilter2p_Apply ⇒ __ARM_isinf
  [Calls]
  - >> CircleReverse
  - >> CircleAdd
  - >> PID_Init
  - >> LowPassFilter2p_Init
  [Called By]
  - >> Task_CtrlGimbal

  Gimbal_PackAI (Thumb, 34 bytes, Stack size 8 bytes, gimbal.o(.text.Gimbal_PackAI))
  [Stack]

  - Max Depth = 8
  - Call Chain = Gimbal_PackAI
  [Called By]
  - >> Task_CtrlGimbal

  Gimbal_UpdateFeedback (Thumb, 124 bytes, Stack size 24 bytes, gimbal.o(.text.Gimbal_UpdateFeedback))
  [Stack]

  - Max Depth = 28
  - Call Chain = Gimbal_UpdateFeedback ⇒ CircleReverse
  [Calls]
  - >> CircleReverse
  [Called By]
  - >> Task_CtrlGimbal

  HAL_ADC_ConfigChannel (Thumb, 704 bytes, Stack size 32 bytes, stm32f4xx_hal_adc.o(.text.HAL_ADC_ConfigChannel))
  [Stack]

  - Max Depth = 40
  - Call Chain = HAL_ADC_ConfigChannel ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> MX_ADC3_Init
  - >> MX_ADC1_Init
  - >> BSP_GetTemperature
  - >> BSP_GetBatteryVolt

  HAL_ADC_GetValue (Thumb, 14 bytes, Stack size 4 bytes, stm32f4xx_hal_adc.o(.text.HAL_ADC_GetValue))
  [Stack]

  - Max Depth = 4
  - Call Chain = HAL_ADC_GetValue
  [Called By]
  - >> BSP_GetTemperature
  - >> BSP_GetBatteryVolt

  HAL_ADC_Init (Thumb, 946 bytes, Stack size 24 bytes, stm32f4xx_hal_adc.o(.text.HAL_ADC_Init))
  [Stack]

  - Max Depth = 144
  - Call Chain = HAL_ADC_Init ⇒ HAL_ADC_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_ADC_MspInit
  - >> assert_failed
  - >> ADC_Init
  [Called By]
  - >> MX_ADC3_Init
  - >> MX_ADC1_Init

  HAL_ADC_MspInit (Thumb, 194 bytes, Stack size 48 bytes, adc.o(.text.HAL_ADC_MspInit))
  [Stack]

  - Max Depth = 120
  - Call Chain = HAL_ADC_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_GPIO_Init
  [Called By]
  - >> HAL_ADC_Init

  HAL_ADC_PollForConversion (Thumb, 298 bytes, Stack size 24 bytes, stm32f4xx_hal_adc.o(.text.HAL_ADC_PollForConversion))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_ADC_PollForConversion
  [Calls]
  - >> HAL_GetTick
  [Called By]
  - >> BSP_GetTemperature
  - >> BSP_GetBatteryVolt

  HAL_ADC_Start (Thumb, 568 bytes, Stack size 24 bytes, stm32f4xx_hal_adc.o(.text.HAL_ADC_Start))
  [Stack]

  - Max Depth = 32
  - Call Chain = HAL_ADC_Start ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> BSP_GetTemperature
  - >> BSP_GetBatteryVolt

  HAL_CAN_ActivateNotification (Thumb, 120 bytes, Stack size 24 bytes, stm32f4xx_hal_can.o(.text.HAL_CAN_ActivateNotification))
  [Stack]

  - Max Depth = 32
  - Call Chain = HAL_CAN_ActivateNotification ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> CAN_Init

  HAL_CAN_AddTxMessage (Thumb, 582 bytes, Stack size 40 bytes, stm32f4xx_hal_can.o(.text.HAL_CAN_AddTxMessage))
  [Stack]

  - Max Depth = 48
  - Call Chain = HAL_CAN_AddTxMessage ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> CAN_Motor_Control
  - >> CAN_Cap_Control

  HAL_CAN_ConfigFilter (Thumb, 746 bytes, Stack size 32 bytes, stm32f4xx_hal_can.o(.text.HAL_CAN_ConfigFilter))
  [Stack]

  - Max Depth = 40
  - Call Chain = HAL_CAN_ConfigFilter ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> CAN_Init

  HAL_CAN_ErrorCallback (Thumb, 80 bytes, Stack size 16 bytes, can_1.o(.text.HAL_CAN_ErrorCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_CAN_ErrorCallback ⇒ CAN_Get
  [Calls]
  - >> CAN_Get
  [Called By]
  - >> HAL_CAN_IRQHandler

  HAL_CAN_GetRxMessage (Thumb, 532 bytes, Stack size 32 bytes, stm32f4xx_hal_can.o(.text.HAL_CAN_GetRxMessage))
  [Stack]

  - Max Depth = 40
  - Call Chain = HAL_CAN_GetRxMessage ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> CAN_CAN2RxFifoMsgPendingCallback
  - >> CAN_CAN1RxFifoMsgPendingCallback

  HAL_CAN_IRQHandler (Thumb, 1010 bytes, Stack size 48 bytes, stm32f4xx_hal_can.o(.text.HAL_CAN_IRQHandler))
  [Stack]

  - Max Depth = 72
  - Call Chain = HAL_CAN_IRQHandler ⇒ HAL_CAN_WakeUpFromRxMsgCallback ⇒ CAN_Get
  [Calls]
  - >> HAL_CAN_WakeUpFromRxMsgCallback
  - >> HAL_CAN_TxMailbox2CompleteCallback
  - >> HAL_CAN_TxMailbox2AbortCallback
  - >> HAL_CAN_TxMailbox1CompleteCallback
  - >> HAL_CAN_TxMailbox1AbortCallback
  - >> HAL_CAN_TxMailbox0CompleteCallback
  - >> HAL_CAN_TxMailbox0AbortCallback
  - >> HAL_CAN_SleepCallback
  - >> HAL_CAN_RxFifo1MsgPendingCallback
  - >> HAL_CAN_RxFifo1FullCallback
  - >> HAL_CAN_RxFifo0MsgPendingCallback
  - >> HAL_CAN_RxFifo0FullCallback
  - >> HAL_CAN_ErrorCallback
  [Called By]
  - >> CAN2_RX1_IRQHandler
  - >> CAN2_RX0_IRQHandler
  - >> CAN1_RX1_IRQHandler
  - >> CAN1_RX0_IRQHandler

  HAL_CAN_Init (Thumb, 1252 bytes, Stack size 24 bytes, stm32f4xx_hal_can.o(.text.HAL_CAN_Init))
  [Stack]

  - Max Depth = 184
  - Call Chain = HAL_CAN_Init ⇒ HAL_CAN_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_GetTick
  - >> HAL_CAN_MspInit
  - >> assert_failed
  [Called By]
  - >> MX_CAN2_Init
  - >> MX_CAN1_Init

  HAL_CAN_MspInit (Thumb, 428 bytes, Stack size 88 bytes, can.o(.text.HAL_CAN_MspInit))
  [Stack]

  - Max Depth = 160
  - Call Chain = HAL_CAN_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_NVIC_SetPriority
  - >> HAL_NVIC_EnableIRQ
  - >> HAL_GPIO_Init
  [Called By]
  - >> HAL_CAN_Init

  HAL_CAN_RxFifo0FullCallback (Thumb, 80 bytes, Stack size 16 bytes, can_1.o(.text.HAL_CAN_RxFifo0FullCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_CAN_RxFifo0FullCallback ⇒ CAN_Get
  [Calls]
  - >> CAN_Get
  [Called By]
  - >> HAL_CAN_IRQHandler

  HAL_CAN_RxFifo0MsgPendingCallback (Thumb, 80 bytes, Stack size 16 bytes, can_1.o(.text.HAL_CAN_RxFifo0MsgPendingCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_CAN_RxFifo0MsgPendingCallback ⇒ CAN_Get
  [Calls]
  - >> CAN_Get
  [Called By]
  - >> HAL_CAN_IRQHandler

  HAL_CAN_RxFifo1FullCallback (Thumb, 80 bytes, Stack size 16 bytes, can_1.o(.text.HAL_CAN_RxFifo1FullCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_CAN_RxFifo1FullCallback ⇒ CAN_Get
  [Calls]
  - >> CAN_Get
  [Called By]
  - >> HAL_CAN_IRQHandler

  HAL_CAN_RxFifo1MsgPendingCallback (Thumb, 80 bytes, Stack size 16 bytes, can_1.o(.text.HAL_CAN_RxFifo1MsgPendingCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_CAN_RxFifo1MsgPendingCallback ⇒ CAN_Get
  [Calls]
  - >> CAN_Get
  [Called By]
  - >> HAL_CAN_IRQHandler

  HAL_CAN_SleepCallback (Thumb, 80 bytes, Stack size 16 bytes, can_1.o(.text.HAL_CAN_SleepCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_CAN_SleepCallback ⇒ CAN_Get
  [Calls]
  - >> CAN_Get
  [Called By]
  - >> HAL_CAN_IRQHandler

  HAL_CAN_Start (Thumb, 138 bytes, Stack size 24 bytes, stm32f4xx_hal_can.o(.text.HAL_CAN_Start))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_CAN_Start
  [Calls]
  - >> HAL_GetTick
  [Called By]
  - >> CAN_Init

  HAL_CAN_TxMailbox0AbortCallback (Thumb, 80 bytes, Stack size 16 bytes, can_1.o(.text.HAL_CAN_TxMailbox0AbortCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_CAN_TxMailbox0AbortCallback ⇒ CAN_Get
  [Calls]
  - >> CAN_Get
  [Called By]
  - >> HAL_CAN_IRQHandler

  HAL_CAN_TxMailbox0CompleteCallback (Thumb, 76 bytes, Stack size 16 bytes, can_1.o(.text.HAL_CAN_TxMailbox0CompleteCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_CAN_TxMailbox0CompleteCallback ⇒ CAN_Get
  [Calls]
  - >> CAN_Get
  [Called By]
  - >> HAL_CAN_IRQHandler

  HAL_CAN_TxMailbox1AbortCallback (Thumb, 80 bytes, Stack size 16 bytes, can_1.o(.text.HAL_CAN_TxMailbox1AbortCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_CAN_TxMailbox1AbortCallback ⇒ CAN_Get
  [Calls]
  - >> CAN_Get
  [Called By]
  - >> HAL_CAN_IRQHandler

  HAL_CAN_TxMailbox1CompleteCallback (Thumb, 80 bytes, Stack size 16 bytes, can_1.o(.text.HAL_CAN_TxMailbox1CompleteCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_CAN_TxMailbox1CompleteCallback ⇒ CAN_Get
  [Calls]
  - >> CAN_Get
  [Called By]
  - >> HAL_CAN_IRQHandler

  HAL_CAN_TxMailbox2AbortCallback (Thumb, 80 bytes, Stack size 16 bytes, can_1.o(.text.HAL_CAN_TxMailbox2AbortCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_CAN_TxMailbox2AbortCallback ⇒ CAN_Get
  [Calls]
  - >> CAN_Get
  [Called By]
  - >> HAL_CAN_IRQHandler

  HAL_CAN_TxMailbox2CompleteCallback (Thumb, 80 bytes, Stack size 16 bytes, can_1.o(.text.HAL_CAN_TxMailbox2CompleteCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_CAN_TxMailbox2CompleteCallback ⇒ CAN_Get
  [Calls]
  - >> CAN_Get
  [Called By]
  - >> HAL_CAN_IRQHandler

  HAL_CAN_WakeUpFromRxMsgCallback (Thumb, 80 bytes, Stack size 16 bytes, can_1.o(.text.HAL_CAN_WakeUpFromRxMsgCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_CAN_WakeUpFromRxMsgCallback ⇒ CAN_Get
  [Calls]
  - >> CAN_Get
  [Called By]
  - >> HAL_CAN_IRQHandler

  HAL_CRC_Init (Thumb, 100 bytes, Stack size 16 bytes, stm32f4xx_hal_crc.o(.text.HAL_CRC_Init))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_CRC_Init ⇒ HAL_CRC_MspInit
  [Calls]
  - >> HAL_CRC_MspInit
  - >> assert_failed
  [Called By]
  - >> MX_CRC_Init

  HAL_CRC_MspInit (Thumb, 62 bytes, Stack size 8 bytes, crc.o(.text.HAL_CRC_MspInit))
  [Stack]

  - Max Depth = 8
  - Call Chain = HAL_CRC_MspInit
  [Called By]
  - >> HAL_CRC_Init

  HAL_DMA_Abort (Thumb, 234 bytes, Stack size 24 bytes, stm32f4xx_hal_dma.o(.text.HAL_DMA_Abort))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_DMA_Abort
  [Calls]
  - >> HAL_GetTick
  [Called By]
  - >> HAL_UART_IRQHandler

  HAL_DMA_Abort_IT (Thumb, 68 bytes, Stack size 8 bytes, stm32f4xx_hal_dma.o(.text.HAL_DMA_Abort_IT))
  [Stack]

  - Max Depth = 8
  - Call Chain = HAL_DMA_Abort_IT
  [Called By]
  - >> HAL_UART_IRQHandler
  - >> HAL_UART_AbortReceive_IT

  HAL_DMA_IRQHandler (Thumb, 798 bytes, Stack size 32 bytes, stm32f4xx_hal_dma.o(.text.HAL_DMA_IRQHandler))
  [Stack]

  - Max Depth = 32
  - Call Chain = HAL_DMA_IRQHandler
  [Called By]
  - >> DMA2_Stream7_IRQHandler
  - >> DMA2_Stream6_IRQHandler
  - >> DMA2_Stream5_IRQHandler
  - >> DMA2_Stream3_IRQHandler
  - >> DMA2_Stream2_IRQHandler
  - >> DMA2_Stream1_IRQHandler
  - >> DMA1_Stream7_IRQHandler
  - >> DMA1_Stream2_IRQHandler
  - >> DMA1_Stream1_IRQHandler

  HAL_DMA_Init (Thumb, 1334 bytes, Stack size 32 bytes, stm32f4xx_hal_dma.o(.text.HAL_DMA_Init))
  [Stack]

  - Max Depth = 56
  - Call Chain = HAL_DMA_Init ⇒ DMA_CheckFifoParam
  [Calls]
  - >> DMA_CheckFifoParam
  - >> DMA_CalcBaseAndBitshift
  - >> HAL_GetTick
  - >> assert_failed
  [Called By]
  - >> HAL_UART_MspInit
  - >> HAL_SPI_MspInit
  - >> HAL_I2C_MspInit

  HAL_DMA_Start_IT (Thumb, 228 bytes, Stack size 40 bytes, stm32f4xx_hal_dma.o(.text.HAL_DMA_Start_IT))
  [Stack]

  - Max Depth = 56
  - Call Chain = HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> DMA_SetConfig
  - >> assert_failed
  [Called By]
  - >> HAL_SPI_TransmitReceive_DMA
  - >> HAL_SPI_Receive_DMA
  - >> UART_Start_Receive_DMA
  - >> HAL_UART_Transmit_DMA

  HAL_Delay (Thumb, 66 bytes, Stack size 24 bytes, stm32f4xx_hal.o(.text.HAL_Delay))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_Delay
  [Calls]
  - >> HAL_GetTick
  [Called By]
  - >> USB_SetCurrentMode
  - >> BSP_Delay

  HAL_FLASHEx_Erase (Thumb, 350 bytes, Stack size 32 bytes, stm32f4xx_hal_flash_ex.o(.text.HAL_FLASHEx_Erase))
  [Stack]

  - Max Depth = 64
  - Call Chain = HAL_FLASHEx_Erase ⇒ FLASH_Erase_Sector ⇒ assert_failed
  [Calls]
  - >> FLASH_MassErase
  - >> FLASH_WaitForLastOperation
  - >> FLASH_FlushCaches
  - >> FLASH_Erase_Sector
  - >> assert_failed
  [Called By]
  - >> BSP_Flash_EraseSector

  HAL_FLASH_Lock (Thumb, 20 bytes, Stack size 0 bytes, stm32f4xx_hal_flash.o(.text.HAL_FLASH_Lock))
  [Called By]

  - >> BSP_Flash_WriteBytes
  - >> BSP_Flash_EraseSector

  HAL_FLASH_Program (Thumb, 264 bytes, Stack size 40 bytes, stm32f4xx_hal_flash.o(.text.HAL_FLASH_Program))
  [Stack]

  - Max Depth = 72
  - Call Chain = HAL_FLASH_Program ⇒ FLASH_Program_DoubleWord ⇒ assert_failed
  [Calls]
  - >> FLASH_WaitForLastOperation
  - >> FLASH_Program_Word
  - >> FLASH_Program_HalfWord
  - >> FLASH_Program_DoubleWord
  - >> FLASH_Program_Byte
  - >> assert_failed
  [Called By]
  - >> BSP_Flash_WriteBytes

  HAL_FLASH_Unlock (Thumb, 86 bytes, Stack size 4 bytes, stm32f4xx_hal_flash.o(.text.HAL_FLASH_Unlock))
  [Stack]

  - Max Depth = 4
  - Call Chain = HAL_FLASH_Unlock
  [Called By]
  - >> BSP_Flash_WriteBytes
  - >> BSP_Flash_EraseSector

  HAL_GPIO_EXTI_Callback (Thumb, 102 bytes, Stack size 16 bytes, gpio_1.o(.text.HAL_GPIO_EXTI_Callback))
  [Stack]

  - Max Depth = 16
  - Call Chain = HAL_GPIO_EXTI_Callback
  [Called By]
  - >> HAL_GPIO_EXTI_IRQHandler

  HAL_GPIO_EXTI_IRQHandler (Thumb, 56 bytes, Stack size 16 bytes, stm32f4xx_hal_gpio.o(.text.HAL_GPIO_EXTI_IRQHandler))
  [Stack]

  - Max Depth = 32
  - Call Chain = HAL_GPIO_EXTI_IRQHandler ⇒ HAL_GPIO_EXTI_Callback
  [Calls]
  - >> HAL_GPIO_EXTI_Callback
  [Called By]
  - >> EXTI9_5_IRQHandler
  - >> EXTI4_IRQHandler
  - >> EXTI3_IRQHandler
  - >> EXTI0_IRQHandler

  HAL_GPIO_Init (Thumb, 1824 bytes, Stack size 64 bytes, stm32f4xx_hal_gpio.o(.text.HAL_GPIO_Init))
  [Stack]

  - Max Depth = 72
  - Call Chain = HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> HAL_PCD_MspInit
  - >> HAL_UART_MspInit
  - >> HAL_TIM_MspPostInit
  - >> HAL_SPI_MspInit
  - >> HAL_I2C_MspInit
  - >> HAL_CAN_MspInit
  - >> HAL_ADC_MspInit
  - >> MX_GPIO_Init

  HAL_GPIO_ReadPin (Thumb, 82 bytes, Stack size 16 bytes, stm32f4xx_hal_gpio.o(.text.HAL_GPIO_ReadPin))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_GPIO_ReadPin ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> BMI088_RxCpltCallback

  HAL_GPIO_WritePin (Thumb, 120 bytes, Stack size 16 bytes, stm32f4xx_hal_gpio.o(.text.HAL_GPIO_WritePin))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_GPIO_WritePin ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> MX_GPIO_Init
  - >> BMI_WriteSingle
  - >> BMI_ReadSingle
  - >> BMI_Read
  - >> BMI088_RxCpltCallback
  - >> BSP_PWM_Stop

  HAL_GetTick (Thumb, 12 bytes, Stack size 0 bytes, stm32f4xx_hal.o(.text.HAL_GetTick))
  [Called By]

  - >> HAL_DMA_Abort
  - >> FLASH_WaitForLastOperation
  - >> HAL_Delay
  - >> HAL_DMA_Init
  - >> HAL_CAN_Init
  - >> HAL_RCC_OscConfig
  - >> HAL_RCC_ClockConfig
  - >> HAL_SPI_TransmitReceive
  - >> HAL_SPI_Transmit
  - >> HAL_SPI_Receive
  - >> SPI_WaitFlagStateUntilTimeout
  - >> SPI_DMATransmitReceiveCplt
  - >> SPI_DMAReceiveCplt
  - >> HAL_CAN_Start
  - >> HAL_ADC_PollForConversion
  - >> Task_CtrlShoot

  HAL_I2C_Init (Thumb, 1058 bytes, Stack size 64 bytes, stm32f4xx_hal_i2c.o(.text.HAL_I2C_Init))
  [Stack]

  - Max Depth = 224
  - Call Chain = HAL_I2C_Init ⇒ HAL_I2C_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_RCC_GetPCLK1Freq
  - >> HAL_I2C_MspInit
  - >> assert_failed
  [Called By]
  - >> MX_I2C3_Init
  - >> MX_I2C2_Init
  - >> MX_I2C1_Init

  HAL_I2C_MspInit (Thumb, 650 bytes, Stack size 88 bytes, i2c.o(.text.HAL_I2C_MspInit))
  [Stack]

  - Max Depth = 160
  - Call Chain = HAL_I2C_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_DMA_Init
  - >> HAL_GPIO_Init
  - >> Error_Handler
  [Called By]
  - >> HAL_I2C_Init

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

  - >> SysTick_Handler

  HAL_Init (Thumb, 54 bytes, Stack size 8 bytes, stm32f4xx_hal.o(.text.HAL_Init))
  [Stack]

  - Max Depth = 88
  - Call Chain = HAL_Init ⇒ HAL_InitTick ⇒ HAL_NVIC_SetPriority ⇒ NVIC_EncodePriority
  [Calls]
  - >> HAL_InitTick
  - >> HAL_MspInit
  - >> HAL_NVIC_SetPriorityGrouping
  [Called By]
  - >> main

  HAL_InitTick (Thumb, 112 bytes, Stack size 16 bytes, stm32f4xx_hal.o(.text.HAL_InitTick))
  [Stack]

  - Max Depth = 80
  - Call Chain = HAL_InitTick ⇒ HAL_NVIC_SetPriority ⇒ NVIC_EncodePriority
  [Calls]
  - >> HAL_NVIC_SetPriority
  - >> HAL_SYSTICK_Config
  [Called By]
  - >> HAL_RCC_ClockConfig
  - >> HAL_Init

  HAL_MspInit (Thumb, 88 bytes, Stack size 16 bytes, stm32f4xx_hal_msp.o(.text.HAL_MspInit))
  [Stack]

  - Max Depth = 80
  - Call Chain = HAL_MspInit ⇒ HAL_NVIC_SetPriority ⇒ NVIC_EncodePriority
  [Calls]
  - >> HAL_NVIC_SetPriority
  [Called By]
  - >> HAL_Init

  HAL_NVIC_DisableIRQ (Thumb, 48 bytes, Stack size 16 bytes, stm32f4xx_hal_cortex.o(.text.HAL_NVIC_DisableIRQ))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_NVIC_DisableIRQ ⇒ assert_failed
  [Calls]
  - >> assert_failed
  - >> __NVIC_DisableIRQ
  [Called By]
  - >> BSP_GPIO_DisableIRQ

  HAL_NVIC_EnableIRQ (Thumb, 48 bytes, Stack size 16 bytes, stm32f4xx_hal_cortex.o(.text.HAL_NVIC_EnableIRQ))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_NVIC_EnableIRQ ⇒ assert_failed
  [Calls]
  - >> assert_failed
  - >> __NVIC_EnableIRQ
  [Called By]
  - >> HAL_PCD_MspInit
  - >> HAL_UART_MspInit
  - >> HAL_TIM_Base_MspInit
  - >> HAL_CAN_MspInit
  - >> MX_GPIO_Init
  - >> MX_DMA_Init
  - >> BSP_GPIO_EnableIRQ

  HAL_NVIC_SetPriority (Thumb, 102 bytes, Stack size 32 bytes, stm32f4xx_hal_cortex.o(.text.HAL_NVIC_SetPriority))
  [Stack]

  - Max Depth = 64
  - Call Chain = HAL_NVIC_SetPriority ⇒ NVIC_EncodePriority
  [Calls]
  - >> assert_failed
  - >> __NVIC_SetPriority
  - >> __NVIC_GetPriorityGrouping
  - >> NVIC_EncodePriority
  [Called By]
  - >> HAL_InitTick
  - >> HAL_PCD_MspInit
  - >> HAL_MspInit
  - >> HAL_UART_MspInit
  - >> HAL_TIM_Base_MspInit
  - >> HAL_CAN_MspInit
  - >> MX_GPIO_Init
  - >> MX_DMA_Init

  HAL_NVIC_SetPriorityGrouping (Thumb, 74 bytes, Stack size 16 bytes, stm32f4xx_hal_cortex.o(.text.HAL_NVIC_SetPriorityGrouping))
  [Stack]

  - Max Depth = 28
  - Call Chain = HAL_NVIC_SetPriorityGrouping ⇒ __NVIC_SetPriorityGrouping
  [Calls]
  - >> assert_failed
  - >> __NVIC_SetPriorityGrouping
  [Called By]
  - >> HAL_Init

  HAL_PCDEx_LPM_Callback (Thumb, 12 bytes, Stack size 8 bytes, stm32f4xx_hal_pcd_ex.o(.text.HAL_PCDEx_LPM_Callback))
  [Stack]

  - Max Depth = 8
  - Call Chain = HAL_PCDEx_LPM_Callback
  [Called By]
  - >> HAL_PCD_IRQHandler

  HAL_PCDEx_SetRxFiFo (Thumb, 24 bytes, Stack size 8 bytes, stm32f4xx_hal_pcd_ex.o(.text.HAL_PCDEx_SetRxFiFo))
  [Stack]

  - Max Depth = 8
  - Call Chain = HAL_PCDEx_SetRxFiFo
  [Called By]
  - >> USBD_LL_Init

  HAL_PCDEx_SetTxFiFo (Thumb, 156 bytes, Stack size 16 bytes, stm32f4xx_hal_pcd_ex.o(.text.HAL_PCDEx_SetTxFiFo))
  [Stack]

  - Max Depth = 16
  - Call Chain = HAL_PCDEx_SetTxFiFo
  [Called By]
  - >> USBD_LL_Init

  HAL_PCD_ConnectCallback (Thumb, 20 bytes, Stack size 16 bytes, usbd_conf.o(.text.HAL_PCD_ConnectCallback))
  [Stack]

  - Max Depth = 20
  - Call Chain = HAL_PCD_ConnectCallback ⇒ USBD_LL_DevConnected
  [Calls]
  - >> USBD_LL_DevConnected
  [Called By]
  - >> HAL_PCD_IRQHandler

  HAL_PCD_DataInStageCallback (Thumb, 38 bytes, Stack size 16 bytes, usbd_conf.o(.text.HAL_PCD_DataInStageCallback))
  [Stack]

  - Max Depth = 224
  - Call Chain = HAL_PCD_DataInStageCallback ⇒ USBD_LL_DataInStage ⇒ USBD_CtlContinueSendData ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_LL_DataInStage
  [Called By]
  - >> HAL_PCD_IRQHandler

  HAL_PCD_DataOutStageCallback (Thumb, 40 bytes, Stack size 16 bytes, usbd_conf.o(.text.HAL_PCD_DataOutStageCallback))
  [Stack]

  - Max Depth = 232
  - Call Chain = HAL_PCD_DataOutStageCallback ⇒ USBD_LL_DataOutStage ⇒ USBD_CtlContinueRx ⇒ USBD_LL_PrepareReceive ⇒ HAL_PCD_EP_Receive ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_LL_DataOutStage
  [Called By]
  - >> PCD_EP_OutXfrComplete_int

  HAL_PCD_DisconnectCallback (Thumb, 20 bytes, Stack size 16 bytes, usbd_conf.o(.text.HAL_PCD_DisconnectCallback))
  [Stack]

  - Max Depth = 32
  - Call Chain = HAL_PCD_DisconnectCallback ⇒ USBD_LL_DevDisconnected
  [Calls]
  - >> USBD_LL_DevDisconnected
  [Called By]
  - >> HAL_PCD_IRQHandler

  HAL_PCD_EP_Close (Thumb, 168 bytes, Stack size 24 bytes, stm32f4xx_hal_pcd.o(.text.HAL_PCD_EP_Close))
  [Stack]

  - Max Depth = 40
  - Call Chain = HAL_PCD_EP_Close ⇒ USB_DeactivateEndpoint
  [Calls]
  - >> USB_DeactivateEndpoint
  [Called By]
  - >> USBD_LL_CloseEP

  HAL_PCD_EP_ClrStall (Thumb, 200 bytes, Stack size 24 bytes, stm32f4xx_hal_pcd.o(.text.HAL_PCD_EP_ClrStall))
  [Stack]

  - Max Depth = 40
  - Call Chain = HAL_PCD_EP_ClrStall ⇒ USB_EPClearStall
  [Calls]
  - >> USB_EPClearStall
  [Called By]
  - >> USBD_LL_ClearStallEP

  HAL_PCD_EP_GetRxCount (Thumb, 34 bytes, Stack size 8 bytes, stm32f4xx_hal_pcd.o(.text.HAL_PCD_EP_GetRxCount))
  [Stack]

  - Max Depth = 8
  - Call Chain = HAL_PCD_EP_GetRxCount
  [Called By]
  - >> USBD_LL_GetRxDataSize

  HAL_PCD_EP_Open (Thumb, 234 bytes, Stack size 32 bytes, stm32f4xx_hal_pcd.o(.text.HAL_PCD_EP_Open))
  [Stack]

  - Max Depth = 48
  - Call Chain = HAL_PCD_EP_Open ⇒ USB_ActivateEndpoint
  [Calls]
  - >> USB_ActivateEndpoint
  [Called By]
  - >> USBD_LL_OpenEP

  HAL_PCD_EP_Receive (Thumb, 134 bytes, Stack size 32 bytes, stm32f4xx_hal_pcd.o(.text.HAL_PCD_EP_Receive))
  [Stack]

  - Max Depth = 112
  - Call Chain = HAL_PCD_EP_Receive ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USB_EPStartXfer
  - >> USB_EP0StartXfer
  [Called By]
  - >> USBD_LL_PrepareReceive

  HAL_PCD_EP_SetStall (Thumb, 222 bytes, Stack size 24 bytes, stm32f4xx_hal_pcd.o(.text.HAL_PCD_EP_SetStall))
  [Stack]

  - Max Depth = 48
  - Call Chain = HAL_PCD_EP_SetStall ⇒ USB_EP0_OutStart
  [Calls]
  - >> USB_EPSetStall
  - >> USB_EP0_OutStart
  [Called By]
  - >> USBD_LL_StallEP

  HAL_PCD_EP_Transmit (Thumb, 134 bytes, Stack size 32 bytes, stm32f4xx_hal_pcd.o(.text.HAL_PCD_EP_Transmit))
  [Stack]

  - Max Depth = 112
  - Call Chain = HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USB_EPStartXfer
  - >> USB_EP0StartXfer
  [Called By]
  - >> USBD_LL_Transmit

  HAL_PCD_IRQHandler (Thumb, 1622 bytes, Stack size 56 bytes, stm32f4xx_hal_pcd.o(.text.HAL_PCD_IRQHandler))
  [Stack]

  - Max Depth = 368
  - Call Chain = HAL_PCD_IRQHandler ⇒ PCD_EP_OutSetupPacket_int ⇒ HAL_PCD_SetupStageCallback ⇒ USBD_LL_SetupStage ⇒ USBD_StdDevReq ⇒ USBD_GetDescriptor ⇒ USBD_CtlSendData ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USB_SetTurnaroundTime
  - >> USB_ReadPacket
  - >> USB_ReadInterrupts
  - >> USB_ReadDevOutEPInterrupt
  - >> USB_ReadDevInEPInterrupt
  - >> USB_ReadDevAllOutEpInterrupt
  - >> USB_ReadDevAllInEpInterrupt
  - >> USB_GetMode
  - >> USB_GetDevSpeed
  - >> USB_FlushTxFifo
  - >> USB_EP0_OutStart
  - >> USB_ActivateSetup
  - >> HAL_RCC_GetHCLKFreq
  - >> HAL_PCDEx_LPM_Callback
  - >> PCD_WriteEmptyTxFifo
  - >> PCD_EP_OutXfrComplete_int
  - >> PCD_EP_OutSetupPacket_int
  - >> HAL_PCD_SuspendCallback
  - >> HAL_PCD_SOFCallback
  - >> HAL_PCD_ResumeCallback
  - >> HAL_PCD_ResetCallback
  - >> HAL_PCD_ISOOUTIncompleteCallback
  - >> HAL_PCD_ISOINIncompleteCallback
  - >> HAL_PCD_DisconnectCallback
  - >> HAL_PCD_DataInStageCallback
  - >> HAL_PCD_ConnectCallback
  [Called By]
  - >> OTG_FS_IRQHandler

  HAL_PCD_ISOINIncompleteCallback (Thumb, 28 bytes, Stack size 16 bytes, usbd_conf.o(.text.HAL_PCD_ISOINIncompleteCallback))
  [Stack]

  - Max Depth = 40
  - Call Chain = HAL_PCD_ISOINIncompleteCallback ⇒ USBD_LL_IsoINIncomplete
  [Calls]
  - >> USBD_LL_IsoINIncomplete
  [Called By]
  - >> HAL_PCD_IRQHandler

  HAL_PCD_ISOOUTIncompleteCallback (Thumb, 28 bytes, Stack size 16 bytes, usbd_conf.o(.text.HAL_PCD_ISOOUTIncompleteCallback))
  [Stack]

  - Max Depth = 40
  - Call Chain = HAL_PCD_ISOOUTIncompleteCallback ⇒ USBD_LL_IsoOUTIncomplete
  [Calls]
  - >> USBD_LL_IsoOUTIncomplete
  [Called By]
  - >> HAL_PCD_IRQHandler

  HAL_PCD_Init (Thumb, 738 bytes, Stack size 128 bytes, stm32f4xx_hal_pcd.o(.text.HAL_PCD_Init))
  [Stack]

  - Max Depth = 256
  - Call Chain = HAL_PCD_Init ⇒ USB_DevInit ⇒ USB_FlushTxFifo
  [Calls]
  - >> USB_SetCurrentMode
  - >> USB_DisableGlobalInt
  - >> USB_DevInit
  - >> USB_DevDisconnect
  - >> USB_CoreInit
  - >> HAL_PCD_MspInit
  - >> assert_failed
  [Called By]
  - >> USBD_LL_Init

  HAL_PCD_MspInit (Thumb, 176 bytes, Stack size 48 bytes, usbd_conf.o(.text.HAL_PCD_MspInit))
  [Stack]

  - Max Depth = 120
  - Call Chain = HAL_PCD_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_NVIC_SetPriority
  - >> HAL_NVIC_EnableIRQ
  - >> HAL_GPIO_Init
  [Called By]
  - >> HAL_PCD_Init

  HAL_PCD_ResetCallback (Thumb, 82 bytes, Stack size 16 bytes, usbd_conf.o(.text.HAL_PCD_ResetCallback))
  [Stack]

  - Max Depth = 120
  - Call Chain = HAL_PCD_ResetCallback ⇒ USBD_LL_Reset ⇒ USBD_LL_OpenEP ⇒ HAL_PCD_EP_Open ⇒ USB_ActivateEndpoint
  [Calls]
  - >> USBD_LL_SetSpeed
  - >> USBD_LL_Reset
  - >> Error_Handler
  [Called By]
  - >> HAL_PCD_IRQHandler

  HAL_PCD_ResumeCallback (Thumb, 20 bytes, Stack size 16 bytes, usbd_conf.o(.text.HAL_PCD_ResumeCallback))
  [Stack]

  - Max Depth = 20
  - Call Chain = HAL_PCD_ResumeCallback ⇒ USBD_LL_Resume
  [Calls]
  - >> USBD_LL_Resume
  [Called By]
  - >> HAL_PCD_IRQHandler

  HAL_PCD_SOFCallback (Thumb, 20 bytes, Stack size 16 bytes, usbd_conf.o(.text.HAL_PCD_SOFCallback))
  [Stack]

  - Max Depth = 32
  - Call Chain = HAL_PCD_SOFCallback ⇒ USBD_LL_SOF
  [Calls]
  - >> USBD_LL_SOF
  [Called By]
  - >> HAL_PCD_IRQHandler

  HAL_PCD_SetAddress (Thumb, 94 bytes, Stack size 24 bytes, stm32f4xx_hal_pcd.o(.text.HAL_PCD_SetAddress))
  [Stack]

  - Max Depth = 36
  - Call Chain = HAL_PCD_SetAddress ⇒ USB_SetDevAddress
  [Calls]
  - >> USB_SetDevAddress
  [Called By]
  - >> USBD_LL_SetUSBAddress

  HAL_PCD_SetupStageCallback (Thumb, 24 bytes, Stack size 16 bytes, usbd_conf.o(.text.HAL_PCD_SetupStageCallback))
  [Stack]

  - Max Depth = 280
  - Call Chain = HAL_PCD_SetupStageCallback ⇒ USBD_LL_SetupStage ⇒ USBD_StdDevReq ⇒ USBD_GetDescriptor ⇒ USBD_CtlSendData ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_LL_SetupStage
  [Called By]
  - >> PCD_EP_OutSetupPacket_int

  HAL_PCD_Start (Thumb, 122 bytes, Stack size 24 bytes, stm32f4xx_hal_pcd.o(.text.HAL_PCD_Start))
  [Stack]

  - Max Depth = 32
  - Call Chain = HAL_PCD_Start ⇒ USB_DevConnect
  [Calls]
  - >> USB_EnableGlobalInt
  - >> USB_DevConnect
  [Called By]
  - >> USBD_LL_Start

  HAL_PCD_SuspendCallback (Thumb, 62 bytes, Stack size 16 bytes, usbd_conf.o(.text.HAL_PCD_SuspendCallback))
  [Stack]

  - Max Depth = 20
  - Call Chain = HAL_PCD_SuspendCallback ⇒ USBD_LL_Suspend
  [Calls]
  - >> USBD_LL_Suspend
  [Called By]
  - >> HAL_PCD_IRQHandler

  HAL_RCC_ClockConfig (Thumb, 1050 bytes, Stack size 24 bytes, stm32f4xx_hal_rcc.o(.text.HAL_RCC_ClockConfig))
  [Stack]

  - Max Depth = 104
  - Call Chain = HAL_RCC_ClockConfig ⇒ HAL_InitTick ⇒ HAL_NVIC_SetPriority ⇒ NVIC_EncodePriority
  [Calls]
  - >> HAL_RCC_GetSysClockFreq
  - >> HAL_InitTick
  - >> HAL_GetTick
  - >> assert_failed
  [Called By]
  - >> SystemClock_Config

  HAL_RCC_GetHCLKFreq (Thumb, 12 bytes, Stack size 0 bytes, stm32f4xx_hal_rcc.o(.text.HAL_RCC_GetHCLKFreq))
  [Called By]

  - >> HAL_RCC_GetPCLK2Freq
  - >> HAL_RCC_GetPCLK1Freq
  - >> HAL_PCD_IRQHandler

  HAL_RCC_GetPCLK1Freq (Thumb, 34 bytes, Stack size 8 bytes, stm32f4xx_hal_rcc.o(.text.HAL_RCC_GetPCLK1Freq))
  [Stack]

  - Max Depth = 8
  - Call Chain = HAL_RCC_GetPCLK1Freq
  [Calls]
  - >> HAL_RCC_GetHCLKFreq
  [Called By]
  - >> HAL_I2C_Init
  - >> UART_SetConfig

  HAL_RCC_GetPCLK2Freq (Thumb, 34 bytes, Stack size 8 bytes, stm32f4xx_hal_rcc.o(.text.HAL_RCC_GetPCLK2Freq))
  [Stack]

  - Max Depth = 8
  - Call Chain = HAL_RCC_GetPCLK2Freq
  [Calls]
  - >> HAL_RCC_GetHCLKFreq
  [Called By]
  - >> UART_SetConfig

  HAL_RCC_GetSysClockFreq (Thumb, 230 bytes, Stack size 32 bytes, stm32f4xx_hal_rcc.o(.text.HAL_RCC_GetSysClockFreq))
  [Stack]

  - Max Depth = 72
  - Call Chain = HAL_RCC_GetSysClockFreq ⇒ __aeabi_uldivmod
  [Calls]
  - >> __aeabi_uldivmod
  [Called By]
  - >> HAL_RCC_ClockConfig

  HAL_RCC_OscConfig (Thumb, 2222 bytes, Stack size 32 bytes, stm32f4xx_hal_rcc.o(.text.HAL_RCC_OscConfig))
  [Stack]

  - Max Depth = 40
  - Call Chain = HAL_RCC_OscConfig ⇒ assert_failed
  [Calls]
  - >> HAL_GetTick
  - >> assert_failed
  [Called By]
  - >> SystemClock_Config

  HAL_RNG_Init (Thumb, 122 bytes, Stack size 16 bytes, stm32f4xx_hal_rng.o(.text.HAL_RNG_Init))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_RNG_Init ⇒ HAL_RNG_MspInit
  [Calls]
  - >> HAL_RNG_MspInit
  - >> assert_failed
  [Called By]
  - >> MX_RNG_Init

  HAL_RNG_MspInit (Thumb, 62 bytes, Stack size 8 bytes, rng.o(.text.HAL_RNG_MspInit))
  [Stack]

  - Max Depth = 8
  - Call Chain = HAL_RNG_MspInit
  [Called By]
  - >> HAL_RNG_Init

  HAL_SPI_ErrorCallback (Thumb, 84 bytes, Stack size 16 bytes, spi_1.o(.text.HAL_SPI_ErrorCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_SPI_ErrorCallback ⇒ SPI_Get
  [Calls]
  - >> SPI_Get
  [Called By]
  - >> SPI_DMATransmitReceiveCplt
  - >> SPI_DMAReceiveCplt
  - >> SPI_DMAError

  HAL_SPI_Init (Thumb, 962 bytes, Stack size 24 bytes, stm32f4xx_hal_spi.o(.text.HAL_SPI_Init))
  [Stack]

  - Max Depth = 176
  - Call Chain = HAL_SPI_Init ⇒ HAL_SPI_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_SPI_MspInit
  - >> assert_failed
  [Called By]
  - >> MX_SPI2_Init
  - >> MX_SPI1_Init

  HAL_SPI_MspInit (Thumb, 530 bytes, Stack size 80 bytes, spi.o(.text.HAL_SPI_MspInit))
  [Stack]

  - Max Depth = 152
  - Call Chain = HAL_SPI_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_DMA_Init
  - >> HAL_GPIO_Init
  - >> Error_Handler
  [Called By]
  - >> HAL_SPI_Init

  HAL_SPI_Receive (Thumb, 560 bytes, Stack size 40 bytes, stm32f4xx_hal_spi.o(.text.HAL_SPI_Receive))
  [Stack]

  - Max Depth = 184
  - Call Chain = HAL_SPI_Receive ⇒ HAL_SPI_TransmitReceive ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
  [Calls]
  - >> HAL_GetTick
  - >> HAL_SPI_TransmitReceive
  - >> SPI_EndRxTransaction
  [Called By]
  - >> BMI_ReadSingle

  HAL_SPI_Receive_DMA (Thumb, 468 bytes, Stack size 24 bytes, stm32f4xx_hal_spi.o(.text.HAL_SPI_Receive_DMA))
  [Stack]

  - Max Depth = 120
  - Call Chain = HAL_SPI_Receive_DMA ⇒ HAL_SPI_TransmitReceive_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> assert_failed
  - >> HAL_SPI_TransmitReceive_DMA
  - >> HAL_DMA_Start_IT
  [Called By]
  - >> BMI_Read

  HAL_SPI_RxCpltCallback (Thumb, 84 bytes, Stack size 16 bytes, spi_1.o(.text.HAL_SPI_RxCpltCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_SPI_RxCpltCallback ⇒ SPI_Get
  [Calls]
  - >> SPI_Get
  [Called By]
  - >> SPI_DMAReceiveCplt

  HAL_SPI_RxHalfCpltCallback (Thumb, 84 bytes, Stack size 16 bytes, spi_1.o(.text.HAL_SPI_RxHalfCpltCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_SPI_RxHalfCpltCallback ⇒ SPI_Get
  [Calls]
  - >> SPI_Get
  [Called By]
  - >> SPI_DMAHalfReceiveCplt

  HAL_SPI_Transmit (Thumb, 684 bytes, Stack size 40 bytes, stm32f4xx_hal_spi.o(.text.HAL_SPI_Transmit))
  [Stack]

  - Max Depth = 120
  - Call Chain = HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
  [Calls]
  - >> HAL_GetTick
  - >> assert_failed
  - >> SPI_EndRxTxTransaction
  [Called By]
  - >> BMI_WriteSingle
  - >> BMI_ReadSingle
  - >> BMI_Read

  HAL_SPI_TransmitReceive (Thumb, 898 bytes, Stack size 64 bytes, stm32f4xx_hal_spi.o(.text.HAL_SPI_TransmitReceive))
  [Stack]

  - Max Depth = 144
  - Call Chain = HAL_SPI_TransmitReceive ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
  [Calls]
  - >> HAL_GetTick
  - >> assert_failed
  - >> SPI_EndRxTxTransaction
  [Called By]
  - >> HAL_SPI_Receive

  HAL_SPI_TransmitReceive_DMA (Thumb, 614 bytes, Stack size 40 bytes, stm32f4xx_hal_spi.o(.text.HAL_SPI_TransmitReceive_DMA))
  [Stack]

  - Max Depth = 96
  - Call Chain = HAL_SPI_TransmitReceive_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> assert_failed
  - >> HAL_DMA_Start_IT
  [Called By]
  - >> HAL_SPI_Receive_DMA

  HAL_SPI_TxRxCpltCallback (Thumb, 84 bytes, Stack size 16 bytes, spi_1.o(.text.HAL_SPI_TxRxCpltCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_SPI_TxRxCpltCallback ⇒ SPI_Get
  [Calls]
  - >> SPI_Get
  [Called By]
  - >> SPI_DMATransmitReceiveCplt

  HAL_SPI_TxRxHalfCpltCallback (Thumb, 84 bytes, Stack size 16 bytes, spi_1.o(.text.HAL_SPI_TxRxHalfCpltCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_SPI_TxRxHalfCpltCallback ⇒ SPI_Get
  [Calls]
  - >> SPI_Get
  [Called By]
  - >> SPI_DMAHalfTransmitReceiveCplt

  HAL_SYSTICK_Config (Thumb, 16 bytes, Stack size 16 bytes, stm32f4xx_hal_cortex.o(.text.HAL_SYSTICK_Config))
  [Stack]

  - Max Depth = 40
  - Call Chain = HAL_SYSTICK_Config ⇒ SysTick_Config ⇒ __NVIC_SetPriority
  [Calls]
  - >> SysTick_Config
  [Called By]
  - >> HAL_InitTick

  HAL_TIMEx_BreakCallback (Thumb, 8 bytes, Stack size 4 bytes, stm32f4xx_hal_tim_ex.o(.text.HAL_TIMEx_BreakCallback))
  [Stack]

  - Max Depth = 4
  - Call Chain = HAL_TIMEx_BreakCallback
  [Called By]
  - >> HAL_TIM_IRQHandler

  HAL_TIMEx_CommutCallback (Thumb, 8 bytes, Stack size 4 bytes, stm32f4xx_hal_tim_ex.o(.text.HAL_TIMEx_CommutCallback))
  [Stack]

  - Max Depth = 4
  - Call Chain = HAL_TIMEx_CommutCallback
  [Called By]
  - >> HAL_TIM_IRQHandler

  HAL_TIMEx_ConfigBreakDeadTime (Thumb, 528 bytes, Stack size 24 bytes, stm32f4xx_hal_tim_ex.o(.text.HAL_TIMEx_ConfigBreakDeadTime))
  [Stack]

  - Max Depth = 32
  - Call Chain = HAL_TIMEx_ConfigBreakDeadTime ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> MX_TIM8_Init
  - >> MX_TIM1_Init

  HAL_TIMEx_MasterConfigSynchronization (Thumb, 584 bytes, Stack size 32 bytes, stm32f4xx_hal_tim_ex.o(.text.HAL_TIMEx_MasterConfigSynchronization))
  [Stack]

  - Max Depth = 40
  - Call Chain = HAL_TIMEx_MasterConfigSynchronization ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> MX_TIM8_Init
  - >> MX_TIM7_Init
  - >> MX_TIM5_Init
  - >> MX_TIM4_Init
  - >> MX_TIM3_Init
  - >> MX_TIM1_Init

  HAL_TIM_Base_Init (Thumb, 578 bytes, Stack size 16 bytes, stm32f4xx_hal_tim.o(.text.HAL_TIM_Base_Init))
  [Stack]

  - Max Depth = 128
  - Call Chain = HAL_TIM_Base_Init ⇒ HAL_TIM_Base_MspInit ⇒ HAL_NVIC_SetPriority ⇒ NVIC_EncodePriority
  [Calls]
  - >> HAL_TIM_Base_MspInit
  - >> assert_failed
  - >> TIM_Base_SetConfig
  [Called By]
  - >> MX_TIM8_Init
  - >> MX_TIM7_Init
  - >> MX_TIM5_Init
  - >> MX_TIM4_Init
  - >> MX_TIM3_Init
  - >> MX_TIM1_Init
  - >> MX_TIM10_Init

  HAL_TIM_Base_MspInit (Thumb, 434 bytes, Stack size 48 bytes, tim.o(.text.HAL_TIM_Base_MspInit))
  [Stack]

  - Max Depth = 112
  - Call Chain = HAL_TIM_Base_MspInit ⇒ HAL_NVIC_SetPriority ⇒ NVIC_EncodePriority
  [Calls]
  - >> HAL_NVIC_SetPriority
  - >> HAL_NVIC_EnableIRQ
  [Called By]
  - >> HAL_TIM_Base_Init

  HAL_TIM_Base_Start_IT (Thumb, 512 bytes, Stack size 24 bytes, stm32f4xx_hal_tim.o(.text.HAL_TIM_Base_Start_IT))
  [Stack]

  - Max Depth = 32
  - Call Chain = HAL_TIM_Base_Start_IT ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> configureTimerForRunTimeStats

  HAL_TIM_ConfigClockSource (Thumb, 2298 bytes, Stack size 32 bytes, stm32f4xx_hal_tim.o(.text.HAL_TIM_ConfigClockSource))
  [Stack]

  - Max Depth = 52
  - Call Chain = HAL_TIM_ConfigClockSource ⇒ TIM_ETR_SetConfig
  [Calls]
  - >> assert_failed
  - >> TIM_ETR_SetConfig
  - >> TIM_TI2_ConfigInputStage
  - >> TIM_TI1_ConfigInputStage
  - >> TIM_ITRx_SetConfig
  [Called By]
  - >> MX_TIM8_Init
  - >> MX_TIM5_Init
  - >> MX_TIM4_Init
  - >> MX_TIM3_Init
  - >> MX_TIM1_Init

  HAL_TIM_IC_CaptureCallback (Thumb, 8 bytes, Stack size 4 bytes, stm32f4xx_hal_tim.o(.text.HAL_TIM_IC_CaptureCallback))
  [Stack]

  - Max Depth = 4
  - Call Chain = HAL_TIM_IC_CaptureCallback
  [Called By]
  - >> HAL_TIM_IRQHandler

  HAL_TIM_IRQHandler (Thumb, 634 bytes, Stack size 16 bytes, stm32f4xx_hal_tim.o(.text.HAL_TIM_IRQHandler))
  [Stack]

  - Max Depth = 20
  - Call Chain = HAL_TIM_IRQHandler ⇒ HAL_TIM_PeriodElapsedCallback
  [Calls]
  - >> HAL_TIM_PeriodElapsedCallback
  - >> HAL_TIM_TriggerCallback
  - >> HAL_TIM_PWM_PulseFinishedCallback
  - >> HAL_TIM_OC_DelayElapsedCallback
  - >> HAL_TIM_IC_CaptureCallback
  - >> HAL_TIMEx_CommutCallback
  - >> HAL_TIMEx_BreakCallback
  [Called By]
  - >> TIM7_IRQHandler
  - >> TIM1_BRK_TIM9_IRQHandler

  HAL_TIM_MspPostInit (Thumb, 626 bytes, Stack size 80 bytes, tim.o(.text.HAL_TIM_MspPostInit))
  [Stack]

  - Max Depth = 152
  - Call Chain = HAL_TIM_MspPostInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_GPIO_Init
  [Called By]
  - >> MX_TIM8_Init
  - >> MX_TIM5_Init
  - >> MX_TIM4_Init
  - >> MX_TIM3_Init
  - >> MX_TIM1_Init
  - >> MX_TIM10_Init

  HAL_TIM_OC_DelayElapsedCallback (Thumb, 8 bytes, Stack size 4 bytes, stm32f4xx_hal_tim.o(.text.HAL_TIM_OC_DelayElapsedCallback))
  [Stack]

  - Max Depth = 4
  - Call Chain = HAL_TIM_OC_DelayElapsedCallback
  [Called By]
  - >> HAL_TIM_IRQHandler

  HAL_TIM_PWM_ConfigChannel (Thumb, 1118 bytes, Stack size 32 bytes, stm32f4xx_hal_tim.o(.text.HAL_TIM_PWM_ConfigChannel))
  [Stack]

  - Max Depth = 72
  - Call Chain = HAL_TIM_PWM_ConfigChannel ⇒ TIM_OC2_SetConfig ⇒ assert_failed
  [Calls]
  - >> assert_failed
  - >> TIM_OC2_SetConfig
  - >> TIM_OC4_SetConfig
  - >> TIM_OC3_SetConfig
  - >> TIM_OC1_SetConfig
  [Called By]
  - >> MX_TIM8_Init
  - >> MX_TIM5_Init
  - >> MX_TIM4_Init
  - >> MX_TIM3_Init
  - >> MX_TIM1_Init
  - >> MX_TIM10_Init

  HAL_TIM_PWM_Init (Thumb, 578 bytes, Stack size 16 bytes, stm32f4xx_hal_tim.o(.text.HAL_TIM_PWM_Init))
  [Stack]

  - Max Depth = 28
  - Call Chain = HAL_TIM_PWM_Init ⇒ TIM_Base_SetConfig
  [Calls]
  - >> assert_failed
  - >> TIM_Base_SetConfig
  - >> HAL_TIM_PWM_MspInit
  [Called By]
  - >> MX_TIM8_Init
  - >> MX_TIM5_Init
  - >> MX_TIM4_Init
  - >> MX_TIM3_Init
  - >> MX_TIM1_Init
  - >> MX_TIM10_Init

  HAL_TIM_PWM_MspInit (Thumb, 8 bytes, Stack size 4 bytes, stm32f4xx_hal_tim.o(.text.HAL_TIM_PWM_MspInit))
  [Stack]

  - Max Depth = 4
  - Call Chain = HAL_TIM_PWM_MspInit
  [Called By]
  - >> HAL_TIM_PWM_Init

  HAL_TIM_PWM_PulseFinishedCallback (Thumb, 8 bytes, Stack size 4 bytes, stm32f4xx_hal_tim.o(.text.HAL_TIM_PWM_PulseFinishedCallback))
  [Stack]

  - Max Depth = 4
  - Call Chain = HAL_TIM_PWM_PulseFinishedCallback
  [Called By]
  - >> HAL_TIM_IRQHandler

  HAL_TIM_PWM_Start (Thumb, 964 bytes, Stack size 56 bytes, stm32f4xx_hal_tim.o(.text.HAL_TIM_PWM_Start))
  [Stack]

  - Max Depth = 88
  - Call Chain = HAL_TIM_PWM_Start ⇒ TIM_CCxChannelCmd ⇒ assert_failed
  [Calls]
  - >> assert_failed
  - >> TIM_CCxChannelCmd
  [Called By]
  - >> BSP_PWM_Start
  - >> BSP_LED_Set

  HAL_TIM_PWM_Stop (Thumb, 768 bytes, Stack size 32 bytes, stm32f4xx_hal_tim.o(.text.HAL_TIM_PWM_Stop))
  [Stack]

  - Max Depth = 64
  - Call Chain = HAL_TIM_PWM_Stop ⇒ TIM_CCxChannelCmd ⇒ assert_failed
  [Calls]
  - >> assert_failed
  - >> TIM_CCxChannelCmd
  [Called By]
  - >> BSP_PWM_Stop
  - >> BSP_LED_Set

  HAL_TIM_PeriodElapsedCallback (Thumb, 42 bytes, Stack size 4 bytes, freertos.o(.text.HAL_TIM_PeriodElapsedCallback))
  [Stack]

  - Max Depth = 4
  - Call Chain = HAL_TIM_PeriodElapsedCallback
  [Called By]
  - >> HAL_TIM_IRQHandler

  HAL_TIM_TriggerCallback (Thumb, 8 bytes, Stack size 4 bytes, stm32f4xx_hal_tim.o(.text.HAL_TIM_TriggerCallback))
  [Stack]

  - Max Depth = 4
  - Call Chain = HAL_TIM_TriggerCallback
  [Called By]
  - >> HAL_TIM_IRQHandler

  HAL_UARTEx_RxEventCallback (Thumb, 12 bytes, Stack size 8 bytes, stm32f4xx_hal_uart.o(.text.HAL_UARTEx_RxEventCallback))
  [Stack]

  - Max Depth = 8
  - Call Chain = HAL_UARTEx_RxEventCallback
  [Called By]
  - >> HAL_UART_IRQHandler
  - >> UART_Receive_IT
  - >> UART_DMARxHalfCplt
  - >> UART_DMAReceiveCplt

  HAL_UART_AbortReceiveCpltCallback (Thumb, 84 bytes, Stack size 16 bytes, uart.o(.text.HAL_UART_AbortReceiveCpltCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_UART_AbortReceiveCpltCallback ⇒ UART_Get
  [Calls]
  - >> UART_Get
  [Called By]
  - >> HAL_UART_AbortReceive_IT
  - >> UART_DMARxOnlyAbortCallback

  HAL_UART_AbortReceive_IT (Thumb, 186 bytes, Stack size 16 bytes, stm32f4xx_hal_uart.o(.text.HAL_UART_AbortReceive_IT))
  [Stack]

  - Max Depth = 40
  - Call Chain = HAL_UART_AbortReceive_IT ⇒ HAL_UART_AbortReceiveCpltCallback ⇒ UART_Get
  [Calls]
  - >> HAL_DMA_Abort_IT
  - >> HAL_UART_AbortReceiveCpltCallback
  [Called By]
  - >> Referee_IdleLineCallback

  HAL_UART_ErrorCallback (Thumb, 84 bytes, Stack size 16 bytes, uart.o(.text.HAL_UART_ErrorCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_UART_ErrorCallback ⇒ UART_Get
  [Calls]
  - >> UART_Get
  [Called By]
  - >> HAL_UART_IRQHandler
  - >> UART_DMAError
  - >> UART_DMAAbortOnError

  HAL_UART_IRQHandler (Thumb, 840 bytes, Stack size 40 bytes, stm32f4xx_hal_uart.o(.text.HAL_UART_IRQHandler))
  [Stack]

  - Max Depth = 88
  - Call Chain = HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ UART_Get
  [Calls]
  - >> HAL_DMA_Abort_IT
  - >> HAL_DMA_Abort
  - >> HAL_UARTEx_RxEventCallback
  - >> UART_Transmit_IT
  - >> UART_Receive_IT
  - >> UART_EndTransmit_IT
  - >> UART_EndRxTransfer
  - >> HAL_UART_ErrorCallback
  [Called By]
  - >> USART6_IRQHandler
  - >> USART1_IRQHandler

  HAL_UART_Init (Thumb, 520 bytes, Stack size 16 bytes, stm32f4xx_hal_uart.o(.text.HAL_UART_Init))
  [Stack]

  - Max Depth = 208
  - Call Chain = HAL_UART_Init ⇒ HAL_UART_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_UART_MspInit
  - >> assert_failed
  - >> UART_SetConfig
  [Called By]
  - >> MX_USART6_UART_Init
  - >> MX_USART3_UART_Init
  - >> MX_USART1_UART_Init

  HAL_UART_MspInit (Thumb, 958 bytes, Stack size 120 bytes, usart.o(.text.HAL_UART_MspInit))
  [Stack]

  - Max Depth = 192
  - Call Chain = HAL_UART_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_DMA_Init
  - >> HAL_NVIC_SetPriority
  - >> HAL_NVIC_EnableIRQ
  - >> HAL_GPIO_Init
  - >> Error_Handler
  [Called By]
  - >> HAL_UART_Init

  HAL_UART_Receive_DMA (Thumb, 120 bytes, Stack size 24 bytes, stm32f4xx_hal_uart.o(.text.HAL_UART_Receive_DMA))
  [Stack]

  - Max Depth = 112
  - Call Chain = HAL_UART_Receive_DMA ⇒ UART_Start_Receive_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> UART_Start_Receive_DMA
  [Called By]
  - >> AI_StartReceiving
  - >> Referee_StartReceiving
  - >> DR16_StartDmaRecv

  HAL_UART_RxCpltCallback (Thumb, 84 bytes, Stack size 16 bytes, uart.o(.text.HAL_UART_RxCpltCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_UART_RxCpltCallback ⇒ UART_Get
  [Calls]
  - >> UART_Get
  [Called By]
  - >> UART_Receive_IT
  - >> UART_DMAReceiveCplt

  HAL_UART_RxHalfCpltCallback (Thumb, 84 bytes, Stack size 16 bytes, uart.o(.text.HAL_UART_RxHalfCpltCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_UART_RxHalfCpltCallback ⇒ UART_Get
  [Calls]
  - >> UART_Get
  [Called By]
  - >> UART_DMARxHalfCplt

  HAL_UART_Transmit_DMA (Thumb, 246 bytes, Stack size 32 bytes, stm32f4xx_hal_uart.o(.text.HAL_UART_Transmit_DMA))
  [Stack]

  - Max Depth = 88
  - Call Chain = HAL_UART_Transmit_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> HAL_DMA_Start_IT
  [Called By]
  - >> AI_StartSend
  - >> Referee_StartSend

  HAL_UART_TxCpltCallback (Thumb, 84 bytes, Stack size 16 bytes, uart.o(.text.HAL_UART_TxCpltCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_UART_TxCpltCallback ⇒ UART_Get
  [Calls]
  - >> UART_Get
  [Called By]
  - >> UART_EndTransmit_IT
  - >> UART_DMATransmitCplt

  HAL_UART_TxHalfCpltCallback (Thumb, 80 bytes, Stack size 16 bytes, uart.o(.text.HAL_UART_TxHalfCpltCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_UART_TxHalfCpltCallback ⇒ UART_Get
  [Calls]
  - >> UART_Get
  [Called By]
  - >> UART_DMATxHalfCplt

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

  - startup_stm32f407xx.o(RESET)

  HeatLimit_ShootFreq (Thumb, 140 bytes, Stack size 36 bytes, limiter.o(.text.HeatLimit_ShootFreq))
  [Stack]

  - Max Depth = 36
  - Call Chain = HeatLimit_ShootFreq
  [Called By]
  - >> Shoot_Control

  InvSqrt (Thumb, 118 bytes, Stack size 16 bytes, user_math.o(.text.InvSqrt))
  [Stack]

  - Max Depth = 16
  - Call Chain = InvSqrt
  [Called By]
  - >> AHRS_Update
  - >> AHRS_UpdateIMU

  LowPassFilter2p_Apply (Thumb, 184 bytes, Stack size 32 bytes, filter.o(.text.LowPassFilter2p_Apply))
  [Stack]

  - Max Depth = 48
  - Call Chain = LowPassFilter2p_Apply ⇒ __ARM_isinf
  [Calls]
  - >> __ARM_isinff
  - >> __ARM_isinf
  - >> __aeabi_f2d
  [Called By]
  - >> Gimbal_Control
  - >> Chassis_Control
  - >> PID_Calc
  - >> LowPassFilter2p_Reset
  - >> Shoot_Control

  LowPassFilter2p_Init (Thumb, 316 bytes, Stack size 40 bytes, filter.o(.text.LowPassFilter2p_Init))
  [Stack]

  - Max Depth = 76
  - Call Chain = LowPassFilter2p_Init ⇒ __hardfp_tanf ⇒ __mathlib_rredf2
  [Calls]
  - >> __hardfp_tanf
  - >> __hardfp_cosf
  [Called By]
  - >> Gimbal_Init
  - >> Chassis_Init
  - >> PID_Init
  - >> Shoot_Init

  LowPassFilter2p_Reset (Thumb, 146 bytes, Stack size 24 bytes, filter.o(.text.LowPassFilter2p_Reset))
  [Stack]

  - Max Depth = 72
  - Call Chain = LowPassFilter2p_Reset ⇒ LowPassFilter2p_Apply ⇒ __ARM_isinf
  [Calls]
  - >> LowPassFilter2p_Apply
  - >> __ARM_isfinitef
  - >> __ARM_isfinite
  - >> __aeabi_f2d
  [Called By]
  - >> Gimbal_SetMode
  - >> Chassis_SetMode
  - >> PID_Reset
  - >> Shoot_SetMode

  MX_ADC1_Init (Thumb, 128 bytes, Stack size 32 bytes, adc.o(.text.MX_ADC1_Init))
  [Stack]

  - Max Depth = 176
  - Call Chain = MX_ADC1_Init ⇒ HAL_ADC_Init ⇒ HAL_ADC_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_ADC_Init
  - >> HAL_ADC_ConfigChannel
  - >> Error_Handler
  [Called By]
  - >> main

  MX_ADC3_Init (Thumb, 128 bytes, Stack size 32 bytes, adc.o(.text.MX_ADC3_Init))
  [Stack]

  - Max Depth = 176
  - Call Chain = MX_ADC3_Init ⇒ HAL_ADC_Init ⇒ HAL_ADC_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_ADC_Init
  - >> HAL_ADC_ConfigChannel
  - >> Error_Handler
  [Called By]
  - >> main

  MX_CAN1_Init (Thumb, 78 bytes, Stack size 16 bytes, can.o(.text.MX_CAN1_Init))
  [Stack]

  - Max Depth = 200
  - Call Chain = MX_CAN1_Init ⇒ HAL_CAN_Init ⇒ HAL_CAN_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_CAN_Init
  - >> Error_Handler
  [Called By]
  - >> main

  MX_CAN2_Init (Thumb, 78 bytes, Stack size 16 bytes, can.o(.text.MX_CAN2_Init))
  [Stack]

  - Max Depth = 200
  - Call Chain = MX_CAN2_Init ⇒ HAL_CAN_Init ⇒ HAL_CAN_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_CAN_Init
  - >> Error_Handler
  [Called By]
  - >> main

  MX_CRC_Init (Thumb, 36 bytes, Stack size 8 bytes, crc.o(.text.MX_CRC_Init))
  [Stack]

  - Max Depth = 32
  - Call Chain = MX_CRC_Init ⇒ HAL_CRC_Init ⇒ HAL_CRC_MspInit
  [Calls]
  - >> HAL_CRC_Init
  - >> Error_Handler
  [Called By]
  - >> main

  MX_DMA_Init (Thumb, 242 bytes, Stack size 64 bytes, dma.o(.text.MX_DMA_Init))
  [Stack]

  - Max Depth = 128
  - Call Chain = MX_DMA_Init ⇒ HAL_NVIC_SetPriority ⇒ NVIC_EncodePriority
  [Calls]
  - >> HAL_NVIC_SetPriority
  - >> HAL_NVIC_EnableIRQ
  [Called By]
  - >> main

  MX_FREERTOS_Init (Thumb, 64 bytes, Stack size 16 bytes, freertos.o(.text.MX_FREERTOS_Init))
  [Stack]

  - Max Depth = 268
  - Call Chain = MX_FREERTOS_Init ⇒ osThreadNew ⇒ xTaskCreate ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> osThreadNew
  [Called By]
  - >> main

  MX_GPIO_Init (Thumb, 620 bytes, Stack size 128 bytes, gpio.o(.text.MX_GPIO_Init))
  [Stack]

  - Max Depth = 200
  - Call Chain = MX_GPIO_Init ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_NVIC_SetPriority
  - >> HAL_NVIC_EnableIRQ
  - >> HAL_GPIO_WritePin
  - >> HAL_GPIO_Init
  [Called By]
  - >> main

  MX_I2C1_Init (Thumb, 72 bytes, Stack size 16 bytes, i2c.o(.text.MX_I2C1_Init))
  [Stack]

  - Max Depth = 240
  - Call Chain = MX_I2C1_Init ⇒ HAL_I2C_Init ⇒ HAL_I2C_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_I2C_Init
  - >> Error_Handler
  [Called By]
  - >> main

  MX_I2C2_Init (Thumb, 72 bytes, Stack size 16 bytes, i2c.o(.text.MX_I2C2_Init))
  [Stack]

  - Max Depth = 240
  - Call Chain = MX_I2C2_Init ⇒ HAL_I2C_Init ⇒ HAL_I2C_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_I2C_Init
  - >> Error_Handler
  [Called By]
  - >> main

  MX_I2C3_Init (Thumb, 72 bytes, Stack size 16 bytes, i2c.o(.text.MX_I2C3_Init))
  [Stack]

  - Max Depth = 240
  - Call Chain = MX_I2C3_Init ⇒ HAL_I2C_Init ⇒ HAL_I2C_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_I2C_Init
  - >> Error_Handler
  [Called By]
  - >> main

  MX_RNG_Init (Thumb, 36 bytes, Stack size 8 bytes, rng.o(.text.MX_RNG_Init))
  [Stack]

  - Max Depth = 32
  - Call Chain = MX_RNG_Init ⇒ HAL_RNG_Init ⇒ HAL_RNG_MspInit
  [Calls]
  - >> HAL_RNG_Init
  - >> Error_Handler
  [Called By]
  - >> main

  MX_SPI1_Init (Thumb, 82 bytes, Stack size 16 bytes, spi.o(.text.MX_SPI1_Init))
  [Stack]

  - Max Depth = 192
  - Call Chain = MX_SPI1_Init ⇒ HAL_SPI_Init ⇒ HAL_SPI_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_SPI_Init
  - >> Error_Handler
  [Called By]
  - >> main

  MX_SPI2_Init (Thumb, 78 bytes, Stack size 16 bytes, spi.o(.text.MX_SPI2_Init))
  [Stack]

  - Max Depth = 192
  - Call Chain = MX_SPI2_Init ⇒ HAL_SPI_Init ⇒ HAL_SPI_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_SPI_Init
  - >> Error_Handler
  [Called By]
  - >> main

  MX_TIM10_Init (Thumb, 142 bytes, Stack size 40 bytes, tim.o(.text.MX_TIM10_Init))
  [Stack]

  - Max Depth = 192
  - Call Chain = MX_TIM10_Init ⇒ HAL_TIM_MspPostInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_TIM_PWM_Init
  - >> HAL_TIM_PWM_ConfigChannel
  - >> HAL_TIM_MspPostInit
  - >> HAL_TIM_Base_Init
  - >> Error_Handler
  [Called By]
  - >> main

  MX_TIM1_Init (Thumb, 368 bytes, Stack size 104 bytes, tim.o(.text.MX_TIM1_Init))
  [Stack]

  - Max Depth = 256
  - Call Chain = MX_TIM1_Init ⇒ HAL_TIM_MspPostInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_TIM_PWM_Init
  - >> HAL_TIM_PWM_ConfigChannel
  - >> HAL_TIM_MspPostInit
  - >> HAL_TIM_ConfigClockSource
  - >> HAL_TIM_Base_Init
  - >> HAL_TIMEx_MasterConfigSynchronization
  - >> HAL_TIMEx_ConfigBreakDeadTime
  - >> Error_Handler
  [Called By]
  - >> main

  MX_TIM3_Init (Thumb, 216 bytes, Stack size 64 bytes, tim.o(.text.MX_TIM3_Init))
  [Stack]

  - Max Depth = 216
  - Call Chain = MX_TIM3_Init ⇒ HAL_TIM_MspPostInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_TIM_PWM_Init
  - >> HAL_TIM_PWM_ConfigChannel
  - >> HAL_TIM_MspPostInit
  - >> HAL_TIM_ConfigClockSource
  - >> HAL_TIM_Base_Init
  - >> HAL_TIMEx_MasterConfigSynchronization
  - >> Error_Handler
  [Called By]
  - >> main

  MX_TIM4_Init (Thumb, 218 bytes, Stack size 64 bytes, tim.o(.text.MX_TIM4_Init))
  [Stack]

  - Max Depth = 216
  - Call Chain = MX_TIM4_Init ⇒ HAL_TIM_MspPostInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_TIM_PWM_Init
  - >> HAL_TIM_PWM_ConfigChannel
  - >> HAL_TIM_MspPostInit
  - >> HAL_TIM_ConfigClockSource
  - >> HAL_TIM_Base_Init
  - >> HAL_TIMEx_MasterConfigSynchronization
  - >> Error_Handler
  [Called By]
  - >> main

  MX_TIM5_Init (Thumb, 266 bytes, Stack size 64 bytes, tim.o(.text.MX_TIM5_Init))
  [Stack]

  - Max Depth = 216
  - Call Chain = MX_TIM5_Init ⇒ HAL_TIM_MspPostInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_TIM_PWM_Init
  - >> HAL_TIM_PWM_ConfigChannel
  - >> HAL_TIM_MspPostInit
  - >> HAL_TIM_ConfigClockSource
  - >> HAL_TIM_Base_Init
  - >> HAL_TIMEx_MasterConfigSynchronization
  - >> Error_Handler
  [Called By]
  - >> main

  MX_TIM7_Init (Thumb, 88 bytes, Stack size 16 bytes, tim.o(.text.MX_TIM7_Init))
  [Stack]

  - Max Depth = 144
  - Call Chain = MX_TIM7_Init ⇒ HAL_TIM_Base_Init ⇒ HAL_TIM_Base_MspInit ⇒ HAL_NVIC_SetPriority ⇒ NVIC_EncodePriority
  [Calls]
  - >> HAL_TIM_Base_Init
  - >> HAL_TIMEx_MasterConfigSynchronization
  - >> Error_Handler
  [Called By]
  - >> main

  MX_TIM8_Init (Thumb, 316 bytes, Stack size 104 bytes, tim.o(.text.MX_TIM8_Init))
  [Stack]

  - Max Depth = 256
  - Call Chain = MX_TIM8_Init ⇒ HAL_TIM_MspPostInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_TIM_PWM_Init
  - >> HAL_TIM_PWM_ConfigChannel
  - >> HAL_TIM_MspPostInit
  - >> HAL_TIM_ConfigClockSource
  - >> HAL_TIM_Base_Init
  - >> HAL_TIMEx_MasterConfigSynchronization
  - >> HAL_TIMEx_ConfigBreakDeadTime
  - >> Error_Handler
  [Called By]
  - >> main

  MX_USART1_UART_Init (Thumb, 64 bytes, Stack size 16 bytes, usart.o(.text.MX_USART1_UART_Init))
  [Stack]

  - Max Depth = 224
  - Call Chain = MX_USART1_UART_Init ⇒ HAL_UART_Init ⇒ HAL_UART_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_UART_Init
  - >> Error_Handler
  [Called By]
  - >> main

  MX_USART3_UART_Init (Thumb, 72 bytes, Stack size 16 bytes, usart.o(.text.MX_USART3_UART_Init))
  [Stack]

  - Max Depth = 224
  - Call Chain = MX_USART3_UART_Init ⇒ HAL_UART_Init ⇒ HAL_UART_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_UART_Init
  - >> Error_Handler
  [Called By]
  - >> main

  MX_USART6_UART_Init (Thumb, 64 bytes, Stack size 16 bytes, usart.o(.text.MX_USART6_UART_Init))
  [Stack]

  - Max Depth = 224
  - Call Chain = MX_USART6_UART_Init ⇒ HAL_UART_Init ⇒ HAL_UART_MspInit ⇒ HAL_GPIO_Init ⇒ assert_failed
  [Calls]
  - >> HAL_UART_Init
  - >> Error_Handler
  [Called By]
  - >> main

  MX_USB_DEVICE_Init (Thumb, 118 bytes, Stack size 8 bytes, usb_device.o(.text.MX_USB_DEVICE_Init))
  [Stack]

  - Max Depth = 312
  - Call Chain = MX_USB_DEVICE_Init ⇒ USBD_Init ⇒ USBD_LL_Init ⇒ HAL_PCD_Init ⇒ USB_DevInit ⇒ USB_FlushTxFifo
  [Calls]
  - >> USBD_Start
  - >> USBD_RegisterClass
  - >> USBD_Init
  - >> USBD_CDC_RegisterInterface
  - >> Error_Handler
  [Called By]
  - >> StartDefaultTask

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

  - startup_stm32f407xx.o(RESET)

  Mixer_Apply (Thumb, 674 bytes, Stack size 60 bytes, mixer.o(.text.Mixer_Apply))
  [Stack]

  - Max Depth = 60
  - Call Chain = Mixer_Apply
  [Called By]
  - >> Chassis_Control

  Mixer_Init (Thumb, 46 bytes, Stack size 12 bytes, mixer.o(.text.Mixer_Init))
  [Stack]

  - Max Depth = 12
  - Call Chain = Mixer_Init
  [Called By]
  - >> Chassis_Init

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

  - startup_stm32f407xx.o(RESET)

  OTG_FS_IRQHandler (Thumb, 16 bytes, Stack size 8 bytes, stm32f4xx_it.o(.text.OTG_FS_IRQHandler))
  [Stack]

  - Max Depth = 376
  - Call Chain = OTG_FS_IRQHandler ⇒ HAL_PCD_IRQHandler ⇒ PCD_EP_OutSetupPacket_int ⇒ HAL_PCD_SetupStageCallback ⇒ USBD_LL_SetupStage ⇒ USBD_StdDevReq ⇒ USBD_GetDescriptor ⇒ USBD_CtlSendData ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> HAL_PCD_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  PID_Calc (Thumb, 752 bytes, Stack size 72 bytes, pid.o(.text.PID_Calc))
  [Stack]

  - Max Depth = 120
  - Call Chain = PID_Calc ⇒ LowPassFilter2p_Apply ⇒ __ARM_isinf
  [Calls]
  - >> CircleError
  - >> AbsClip
  - >> __ARM_isfinitef
  - >> __ARM_isfinite
  - >> LowPassFilter2p_Apply
  - >> __aeabi_f2d
  [Called By]
  - >> Gimbal_Control
  - >> Chassis_Control
  - >> Task_AttiEsti
  - >> Shoot_Control

  PID_Init (Thumb, 406 bytes, Stack size 32 bytes, pid.o(.text.PID_Init))
  [Stack]

  - Max Depth = 128
  - Call Chain = PID_Init ⇒ PID_Reset ⇒ LowPassFilter2p_Reset ⇒ LowPassFilter2p_Apply ⇒ __ARM_isinf
  [Calls]
  - >> PID_Reset
  - >> __ARM_isfinitef
  - >> __ARM_isfinite
  - >> LowPassFilter2p_Init
  - >> __aeabi_f2d
  [Called By]
  - >> Gimbal_Init
  - >> Chassis_Init
  - >> Task_AttiEsti
  - >> Shoot_Init

  PID_Reset (Thumb, 72 bytes, Stack size 24 bytes, pid.o(.text.PID_Reset))
  [Stack]

  - Max Depth = 96
  - Call Chain = PID_Reset ⇒ LowPassFilter2p_Reset ⇒ LowPassFilter2p_Apply ⇒ __ARM_isinf
  [Calls]
  - >> LowPassFilter2p_Reset
  [Called By]
  - >> Gimbal_SetMode
  - >> Chassis_SetMode
  - >> PID_Init
  - >> Shoot_SetMode

  PendSV_Handler (Thumb, 100 bytes, Stack size 0 bytes, port.o(.text.PendSV_Handler))
  [Stack]

  - Max Depth = 40
  - Call Chain = PendSV_Handler ⇒ vTaskSwitchContext ⇒ vApplicationStackOverflowHook
  [Calls]
  - >> vTaskSwitchContext
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  PowerLimit_CapInput (Thumb, 120 bytes, Stack size 20 bytes, limiter.o(.text.PowerLimit_CapInput))
  [Stack]

  - Max Depth = 20
  - Call Chain = PowerLimit_CapInput
  [Called By]
  - >> Cap_Control

  PowerLimit_ChassicOutput (Thumb, 232 bytes, Stack size 32 bytes, limiter.o(.text.PowerLimit_ChassicOutput))
  [Stack]

  - Max Depth = 32
  - Call Chain = PowerLimit_ChassicOutput
  [Called By]
  - >> Chassis_PowerLimit

  PowerLimit_TargetPower (Thumb, 76 bytes, Stack size 12 bytes, limiter.o(.text.PowerLimit_TargetPower))
  [Stack]

  - Max Depth = 12
  - Call Chain = PowerLimit_TargetPower
  [Called By]
  - >> Chassis_PowerLimit

  Referee_CheckTXReady (Thumb, 22 bytes, Stack size 8 bytes, referee.o(.text.Referee_CheckTXReady))
  [Stack]

  - Max Depth = 20
  - Call Chain = Referee_CheckTXReady ⇒ BSP_UART_GetHandle
  [Calls]
  - >> BSP_UART_GetHandle
  [Called By]
  - >> Referee_PackUI

  Referee_GetCharacterAdd (Thumb, 66 bytes, Stack size 8 bytes, referee.o(.text.Referee_GetCharacterAdd))
  [Stack]

  - Max Depth = 8
  - Call Chain = Referee_GetCharacterAdd
  [Called By]
  - >> Referee_UIRefresh
  - >> Referee_PraseCmd

  Referee_GetDelAdd (Thumb, 66 bytes, Stack size 8 bytes, referee.o(.text.Referee_GetDelAdd))
  [Stack]

  - Max Depth = 8
  - Call Chain = Referee_GetDelAdd
  [Called By]
  - >> Referee_UIRefresh
  - >> Referee_PraseCmd

  Referee_GetGrapicAdd (Thumb, 64 bytes, Stack size 8 bytes, referee.o(.text.Referee_GetGrapicAdd))
  [Stack]

  - Max Depth = 8
  - Call Chain = Referee_GetGrapicAdd
  [Called By]
  - >> Referee_UIRefresh
  - >> Referee_PraseCmd

  Referee_HandleOffline (Thumb, 14 bytes, Stack size 4 bytes, referee.o(.text.Referee_HandleOffline))
  [Stack]

  - Max Depth = 4
  - Call Chain = Referee_HandleOffline
  [Called By]
  - >> Task_Referee

  Referee_Init (Thumb, 262 bytes, Stack size 40 bytes, referee.o(.text.Referee_Init))
  [Stack]

  - Max Depth = 356
  - Call Chain = Referee_Init ⇒ osTimerNew ⇒ xTimerCreateStatic ⇒ prvInitialiseNewTimer ⇒ prvCheckForValidListAndQueue ⇒ xQueueGenericCreateStatic ⇒ prvInitialiseNewQueue ⇒ xQueueGenericReset ⇒ xTaskRemoveFromEventList ⇒ vListInsertEnd
  [Calls]
  - >> osThreadGetId
  - >> osTimerStart
  - >> osTimerNew
  - >> BSP_UART_RegisterCallback
  - >> BSP_UART_GetHandle
  [Called By]
  - >> Task_Referee

  Referee_MoveData (Thumb, 70 bytes, Stack size 24 bytes, referee.o(.text.Referee_MoveData))
  [Stack]

  - Max Depth = 24
  - Call Chain = Referee_MoveData
  [Calls]
  - >> __aeabi_memclr
  - >> __aeabi_memcpy
  [Called By]
  - >> Referee_PackUI

  Referee_PackAI (Thumb, 20 bytes, Stack size 8 bytes, referee.o(.text.Referee_PackAI))
  [Stack]

  - Max Depth = 8
  - Call Chain = Referee_PackAI
  [Called By]
  - >> Task_Referee

  Referee_PackCap (Thumb, 68 bytes, Stack size 8 bytes, referee.o(.text.Referee_PackCap))
  [Stack]

  - Max Depth = 8
  - Call Chain = Referee_PackCap
  [Called By]
  - >> Task_Referee

  Referee_PackChassis (Thumb, 60 bytes, Stack size 8 bytes, referee.o(.text.Referee_PackChassis))
  [Stack]

  - Max Depth = 8
  - Call Chain = Referee_PackChassis
  [Called By]
  - >> Task_Referee

  Referee_PackShoot (Thumb, 112 bytes, Stack size 8 bytes, referee.o(.text.Referee_PackShoot))
  [Stack]

  - Max Depth = 8
  - Call Chain = Referee_PackShoot
  [Called By]
  - >> Task_Referee

  Referee_PackUI (Thumb, 958 bytes, Stack size 64 bytes, referee.o(.text.Referee_PackUI))
  [Stack]

  - Max Depth = 176
  - Call Chain = Referee_PackUI ⇒ Referee_StartSend ⇒ HAL_UART_Transmit_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> Referee_StartSend
  - >> Referee_SetHeader
  - >> Referee_MoveData
  - >> Referee_CheckTXReady
  - >> CRC16_Calc
  - >> CRC8_Calc
  [Called By]
  - >> Task_Referee

  Referee_Parse (Thumb, 966 bytes, Stack size 56 bytes, referee.o(.text.Referee_Parse))
  [Stack]

  - Max Depth = 108
  - Call Chain = Referee_Parse ⇒ CRC16_Verify ⇒ CRC16_Calc ⇒ CRC16_Byte
  [Calls]
  - >> CRC16_Verify
  - >> CRC8_Verify
  - >> BSP_UART_GetHandle
  - >> __aeabi_memcpy
  [Called By]
  - >> Task_Referee

  Referee_PraseCmd (Thumb, 448 bytes, Stack size 72 bytes, referee.o(.text.Referee_PraseCmd))
  [Stack]

  - Max Depth = 168
  - Call Chain = Referee_PraseCmd ⇒ UI_DrawLine ⇒ snprintf
  [Calls]
  - >> __aeabi_i2d
  - >> __aeabi_dmul
  - >> __aeabi_d2iz
  - >> Referee_GetGrapicAdd
  - >> Referee_GetDelAdd
  - >> Referee_GetCharacterAdd
  - >> UI_DrawLine
  - >> UI_DrawCycle
  - >> UI_DrawCharacter
  - >> UI_DelLayer
  [Called By]
  - >> Task_Referee

  Referee_SetHeader (Thumb, 350 bytes, Stack size 20 bytes, referee.o(.text.Referee_SetHeader))
  [Stack]

  - Max Depth = 20
  - Call Chain = Referee_SetHeader
  [Called By]
  - >> Referee_PackUI

  Referee_StartReceiving (Thumb, 54 bytes, Stack size 16 bytes, referee.o(.text.Referee_StartReceiving))
  [Stack]

  - Max Depth = 128
  - Call Chain = Referee_StartReceiving ⇒ HAL_UART_Receive_DMA ⇒ UART_Start_Receive_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> HAL_UART_Receive_DMA
  - >> BSP_UART_GetHandle
  [Called By]
  - >> Task_Referee

  Referee_StartSend (Thumb, 52 bytes, Stack size 24 bytes, referee.o(.text.Referee_StartSend))
  [Stack]

  - Max Depth = 112
  - Call Chain = Referee_StartSend ⇒ HAL_UART_Transmit_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> HAL_UART_Transmit_DMA
  - >> BSP_UART_GetHandle
  [Called By]
  - >> Referee_PackUI

  Referee_UIRefresh (Thumb, 3744 bytes, Stack size 352 bytes, referee.o(.text.Referee_UIRefresh))
  [Stack]

  - Max Depth = 592
  - Call Chain = Referee_UIRefresh ⇒ __hardfp_sin ⇒ __ieee754_rem_pio2 ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> osThreadFlagsGet
  - >> osThreadFlagsClear
  - >> __aeabi_i2d
  - >> __aeabi_dmul
  - >> __aeabi_dadd
  - >> __aeabi_d2iz
  - >> Referee_GetGrapicAdd
  - >> Referee_GetDelAdd
  - >> Referee_GetCharacterAdd
  - >> UI_DrawRectangle
  - >> UI_DrawLine
  - >> UI_DrawCharacter
  - >> UI_DrawArc
  - >> UI_DelLayer
  - >> __aeabi_f2d
  - >> BSP_UART_GetHandle
  - >> __hardfp_sin
  - >> __hardfp_cos
  [Called By]
  - >> Task_Referee

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

  - startup_stm32f407xx.o(RESET)

  Shoot_Control (Thumb, 1100 bytes, Stack size 96 bytes, shoot.o(.text.Shoot_Control))
  [Stack]

  - Max Depth = 224
  - Call Chain = Shoot_Control ⇒ Shoot_SetMode ⇒ PID_Reset ⇒ LowPassFilter2p_Reset ⇒ LowPassFilter2p_Apply ⇒ __ARM_isinf
  [Calls]
  - >> CircleAdd
  - >> CalculateRpm
  - >> PID_Calc
  - >> HeatLimit_ShootFreq
  - >> LowPassFilter2p_Apply
  - >> BSP_PWM_Stop
  - >> BSP_PWM_Start
  - >> BSP_PWM_Set
  - >> Shoot_SetMode
  - >> Shoot_HeatLimit
  [Called By]
  - >> Task_CtrlShoot

  Shoot_DumpOutput (Thumb, 62 bytes, Stack size 12 bytes, shoot.o(.text.Shoot_DumpOutput))
  [Stack]

  - Max Depth = 12
  - Call Chain = Shoot_DumpOutput
  [Called By]
  - >> Task_CtrlShoot

  Shoot_DumpUI (Thumb, 28 bytes, Stack size 8 bytes, shoot.o(.text.Shoot_DumpUI))
  [Stack]

  - Max Depth = 8
  - Call Chain = Shoot_DumpUI
  [Called By]
  - >> Task_CtrlShoot

  Shoot_Init (Thumb, 266 bytes, Stack size 40 bytes, shoot.o(.text.Shoot_Init))
  [Stack]

  - Max Depth = 168
  - Call Chain = Shoot_Init ⇒ PID_Init ⇒ PID_Reset ⇒ LowPassFilter2p_Reset ⇒ LowPassFilter2p_Apply ⇒ __ARM_isinf
  [Calls]
  - >> PID_Init
  - >> LowPassFilter2p_Init
  - >> BSP_PWM_Start
  - >> BSP_PWM_Set
  [Called By]
  - >> Task_CtrlShoot

  Shoot_ResetOutput (Thumb, 42 bytes, Stack size 8 bytes, shoot.o(.text.Shoot_ResetOutput))
  [Stack]

  - Max Depth = 8
  - Call Chain = Shoot_ResetOutput
  [Called By]
  - >> Task_CtrlShoot

  Shoot_UpdateFeedback (Thumb, 180 bytes, Stack size 40 bytes, shoot.o(.text.Shoot_UpdateFeedback))
  [Stack]

  - Max Depth = 60
  - Call Chain = Shoot_UpdateFeedback ⇒ CircleError
  [Calls]
  - >> CircleAdd
  - >> CircleError
  [Called By]
  - >> Task_CtrlShoot

  StartDefaultTask (Thumb, 22 bytes, Stack size 16 bytes, freertos.o(.text.StartDefaultTask))
  [Stack]

  - Max Depth = 328
  - Call Chain = StartDefaultTask ⇒ MX_USB_DEVICE_Init ⇒ USBD_Init ⇒ USBD_LL_Init ⇒ HAL_PCD_Init ⇒ USB_DevInit ⇒ USB_FlushTxFifo
  [Calls]
  - >> osThreadTerminate
  - >> osThreadGetId
  - >> MX_USB_DEVICE_Init
  [Address Reference Count : 1]
  - freertos.o(.text.MX_FREERTOS_Init)

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

  - Max Depth = 68
  - Call Chain = SysTick_Handler ⇒ xPortSysTickHandler ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> xTaskGetSchedulerState
  - >> xPortSysTickHandler
  - >> HAL_IncTick
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  SystemClock_Config (Thumb, 188 bytes, Stack size 88 bytes, main.o(.text.SystemClock_Config))
  [Stack]

  - Max Depth = 192
  - Call Chain = SystemClock_Config ⇒ HAL_RCC_ClockConfig ⇒ HAL_InitTick ⇒ HAL_NVIC_SetPriority ⇒ NVIC_EncodePriority
  [Calls]
  - >> HAL_RCC_OscConfig
  - >> HAL_RCC_ClockConfig
  - >> Error_Handler
  - >> __aeabi_memclr4
  [Called By]
  - >> main

  SystemInit (Thumb, 32 bytes, Stack size 0 bytes, system_stm32f4xx.o(.text.SystemInit))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(.text)

  TIM1_BRK_TIM9_IRQHandler (Thumb, 16 bytes, Stack size 8 bytes, stm32f4xx_it.o(.text.TIM1_BRK_TIM9_IRQHandler))
  [Stack]

  - Max Depth = 28
  - Call Chain = TIM1_BRK_TIM9_IRQHandler ⇒ HAL_TIM_IRQHandler ⇒ HAL_TIM_PeriodElapsedCallback
  [Calls]
  - >> HAL_TIM_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  TIM7_IRQHandler (Thumb, 16 bytes, Stack size 8 bytes, stm32f4xx_it.o(.text.TIM7_IRQHandler))
  [Stack]

  - Max Depth = 28
  - Call Chain = TIM7_IRQHandler ⇒ HAL_TIM_IRQHandler ⇒ HAL_TIM_PeriodElapsedCallback
  [Calls]
  - >> HAL_TIM_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  TIM_Base_SetConfig (Thumb, 410 bytes, Stack size 12 bytes, stm32f4xx_hal_tim.o(.text.TIM_Base_SetConfig))
  [Stack]

  - Max Depth = 12
  - Call Chain = TIM_Base_SetConfig
  [Called By]
  - >> HAL_TIM_PWM_Init
  - >> HAL_TIM_Base_Init

  TIM_CCxChannelCmd (Thumb, 318 bytes, Stack size 24 bytes, stm32f4xx_hal_tim.o(.text.TIM_CCxChannelCmd))
  [Stack]

  - Max Depth = 32
  - Call Chain = TIM_CCxChannelCmd ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> HAL_TIM_PWM_Stop
  - >> HAL_TIM_PWM_Start

  TIM_ETR_SetConfig (Thumb, 52 bytes, Stack size 20 bytes, stm32f4xx_hal_tim.o(.text.TIM_ETR_SetConfig))
  [Stack]

  - Max Depth = 20
  - Call Chain = TIM_ETR_SetConfig
  [Called By]
  - >> HAL_TIM_ConfigClockSource

  TIM_OC2_SetConfig (Thumb, 364 bytes, Stack size 32 bytes, stm32f4xx_hal_tim.o(.text.TIM_OC2_SetConfig))
  [Stack]

  - Max Depth = 40
  - Call Chain = TIM_OC2_SetConfig ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> HAL_TIM_PWM_ConfigChannel

  Task_Ai (Thumb, 426 bytes, Stack size 56 bytes, ai_1.o(.text.Task_Ai))
  [Stack]

  - Max Depth = 252
  - Call Chain = Task_Ai ⇒ osMessageQueuePut ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit ⇒ vListInsertEnd
  [Calls]
  - >> osThreadGetId
  - >> osThreadGetStackSpace
  - >> osMessageQueueReset
  - >> osMessageQueuePut
  - >> osMessageQueueGet
  - >> osKernelGetTickFreq
  - >> osKernelGetTickCount
  - >> osDelayUntil
  - >> AI_WaitDmaCplt
  - >> AI_StartSend
  - >> AI_StartReceiving
  - >> AI_ParseHost
  - >> AI_PackRef
  - >> AI_PackMCU
  - >> AI_PackCmd
  - >> AI_Init
  - >> AI_HandleOffline
  [Address Reference Count : 1]
  - init.o(.text.Task_Init)

  Task_AttiEsti (Thumb, 364 bytes, Stack size 48 bytes, atti_esti.o(.text.Task_AttiEsti))
  [Stack]

  - Max Depth = 424
  - Call Chain = Task_AttiEsti ⇒ AHRS_Update ⇒ AHRS_UpdateIMU ⇒ InvSqrt
  [Calls]
  - >> osThreadGetId
  - >> osThreadGetStackSpace
  - >> osMessageQueueReset
  - >> osMessageQueuePut
  - >> osKernelUnlock
  - >> osKernelLock
  - >> BMI088_WaitNew
  - >> BMI088_ParseGyro
  - >> BMI088_ParseAccl
  - >> BMI088_Init
  - >> BMI088_GyroWaitDmaCplt
  - >> BMI088_GyroStartDmaRecv
  - >> BMI088_GetUpdateFreq
  - >> BMI088_AcclWaitDmaCplt
  - >> BMI088_AcclStartDmaRecv
  - >> PID_Init
  - >> PID_Calc
  - >> AHRS_Update
  - >> AHRS_Init
  - >> AHRS_GetEulr
  - >> BSP_PWM_Start
  - >> BSP_PWM_Set
  [Address Reference Count : 1]
  - init.o(.text.Task_Init)

  Task_CLI (Thumb, 520 bytes, Stack size 40 bytes, cli.o(.text.Task_CLI))
  [Stack]

  - Max Depth = 296
  - Call Chain = Task_CLI ⇒ BSP_USB_Printf ⇒ BSP_USB_Transmit ⇒ CDC_Transmit_FS ⇒ USBD_CDC_TransmitPacket ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> osThreadGetId
  - >> osThreadGetStackSpace
  - >> osThreadFlagsWait
  - >> FreeRTOS_CLIRegisterCommand
  - >> FreeRTOS_CLIProcessCommand
  - >> FreeRTOS_CLIGetOutputBuffer
  - >> BSP_USB_ReadyReceive
  - >> BSP_USB_ReadChar
  - >> BSP_USB_Printf
  - >> strlen
  - >> __aeabi_memclr
  [Address Reference Count : 1]
  - init.o(.text.Task_Init)

  Task_Can (Thumb, 602 bytes, Stack size 48 bytes, can_3.o(.text.Task_Can))
  [Stack]

  - Max Depth = 324
  - Call Chain = Task_Can ⇒ CAN_Init ⇒ osMessageQueueNew ⇒ xQueueGenericCreateStatic ⇒ prvInitialiseNewQueue ⇒ xQueueGenericReset ⇒ xTaskRemoveFromEventList ⇒ vListInsertEnd
  [Calls]
  - >> osThreadGetId
  - >> osThreadGetStackSpace
  - >> osMessageQueueReset
  - >> osMessageQueuePut
  - >> osMessageQueueGet
  - >> osKernelGetTickFreq
  - >> osKernelGetTickCount
  - >> osDelayUntil
  - >> CAN_StoreMsg
  - >> CAN_Motor_Control
  - >> CAN_Init
  - >> CAN_ClearFlag
  - >> CAN_CheckFlag
  - >> CAN_Cap_Control
  [Address Reference Count : 1]
  - init.o(.text.Task_Init)

  Task_Cap (Thumb, 432 bytes, Stack size 72 bytes, cap_1.o(.text.Task_Cap))
  [Stack]

  - Max Depth = 268
  - Call Chain = Task_Cap ⇒ osMessageQueuePut ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit ⇒ vListInsertEnd
  [Calls]
  - >> osThreadGetId
  - >> osThreadGetStackSpace
  - >> osMessageQueueReset
  - >> osMessageQueuePut
  - >> osMessageQueueGet
  - >> osKernelUnlock
  - >> osKernelLock
  - >> osKernelGetTickFreq
  - >> osKernelGetTickCount
  - >> osDelayUntil
  - >> Cap_DumpUI
  - >> Cap_Control
  - >> CAN_CAP_HandleOffline
  [Address Reference Count : 1]
  - init.o(.text.Task_Init)

  Task_Command (Thumb, 456 bytes, Stack size 48 bytes, command.o(.text.Task_Command))
  [Stack]

  - Max Depth = 244
  - Call Chain = Task_Command ⇒ osMessageQueuePut ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit ⇒ vListInsertEnd
  [Calls]
  - >> osThreadGetId
  - >> osThreadGetStackSpace
  - >> osMessageQueueReset
  - >> osMessageQueuePut
  - >> osMessageQueueGet
  - >> osKernelUnlock
  - >> osKernelLock
  - >> osKernelGetTickFreq
  - >> osKernelGetTickCount
  - >> osDelayUntil
  - >> CMD_ParseRc
  - >> CMD_ParseHost
  - >> CMD_Init
  - >> CMD_CheckHostOverwrite
  [Address Reference Count : 1]
  - init.o(.text.Task_Init)

  Task_CtrlChassis (Thumb, 352 bytes, Stack size 64 bytes, ctrl_chassis.o(.text.Task_CtrlChassis))
  [Stack]

  - Max Depth = 260
  - Call Chain = Task_CtrlChassis ⇒ osMessageQueuePut ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit ⇒ vListInsertEnd
  [Calls]
  - >> osThreadGetId
  - >> osThreadGetStackSpace
  - >> osMessageQueueReset
  - >> osMessageQueuePut
  - >> osMessageQueueGet
  - >> osKernelUnlock
  - >> osKernelLock
  - >> osKernelGetTickFreq
  - >> osKernelGetTickCount
  - >> osDelayUntil
  - >> Chassis_UpdateFeedback
  - >> Chassis_PowerLimit
  - >> Chassis_Init
  - >> Chassis_DumpUI
  - >> Chassis_DumpOutput
  - >> Chassis_Control
  [Address Reference Count : 1]
  - init.o(.text.Task_Init)

  Task_CtrlGimbal (Thumb, 368 bytes, Stack size 56 bytes, ctrl_gimbal.o(.text.Task_CtrlGimbal))
  [Stack]

  - Max Depth = 252
  - Call Chain = Task_CtrlGimbal ⇒ osMessageQueuePut ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit ⇒ vListInsertEnd
  [Calls]
  - >> osThreadGetId
  - >> osThreadGetStackSpace
  - >> osMessageQueueReset
  - >> osMessageQueuePut
  - >> osMessageQueueGet
  - >> osKernelUnlock
  - >> osKernelLock
  - >> osKernelGetTickFreq
  - >> osKernelGetTickCount
  - >> osDelayUntil
  - >> Gimbal_PackAI
  - >> Gimbal_Init
  - >> Gimbal_DumpUI
  - >> Gimbal_DumpOutput
  - >> Gimbal_Control
  - >> Gimbal_UpdateFeedback
  [Address Reference Count : 1]
  - init.o(.text.Task_Init)

  Task_CtrlShoot (Thumb, 372 bytes, Stack size 56 bytes, ctrl_shoot.o(.text.Task_CtrlShoot))
  [Stack]

  - Max Depth = 280
  - Call Chain = Task_CtrlShoot ⇒ Shoot_Control ⇒ Shoot_SetMode ⇒ PID_Reset ⇒ LowPassFilter2p_Reset ⇒ LowPassFilter2p_Apply ⇒ __ARM_isinf
  [Calls]
  - >> HAL_GetTick
  - >> osThreadGetId
  - >> osThreadGetStackSpace
  - >> osMessageQueueReset
  - >> osMessageQueuePut
  - >> osMessageQueueGet
  - >> osKernelUnlock
  - >> osKernelLock
  - >> osKernelGetTickFreq
  - >> osKernelGetTickCount
  - >> osDelayUntil
  - >> Shoot_UpdateFeedback
  - >> Shoot_ResetOutput
  - >> Shoot_Init
  - >> Shoot_DumpUI
  - >> Shoot_DumpOutput
  - >> Shoot_Control
  [Address Reference Count : 1]
  - init.o(.text.Task_Init)

  Task_Info (Thumb, 78 bytes, Stack size 24 bytes, info.o(.text.Task_Info))
  [Stack]

  - Max Depth = 172
  - Call Chain = Task_Info ⇒ osDelayUntil ⇒ vTaskDelayUntil ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> osThreadGetId
  - >> osThreadGetStackSpace
  - >> osKernelGetTickFreq
  - >> osKernelGetTickCount
  - >> osDelayUntil
  - >> osDelay
  - >> BSP_LED_Set
  [Address Reference Count : 1]
  - init.o(.text.Task_Init)

  Task_Init (Thumb, 940 bytes, Stack size 48 bytes, init.o(.text.Task_Init))
  [Stack]

  - Max Depth = 300
  - Call Chain = Task_Init ⇒ osThreadNew ⇒ xTaskCreate ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> osThreadTerminate
  - >> osThreadNew
  - >> osThreadGetId
  - >> osMessageQueueNew
  - >> osKernelUnlock
  - >> osKernelLock
  - >> Config_Get
  [Address Reference Count : 1]
  - freertos.o(.text.MX_FREERTOS_Init)

  Task_Monitor (Thumb, 212 bytes, Stack size 32 bytes, monitor.o(.text.Task_Monitor))
  [Stack]

  - Max Depth = 180
  - Call Chain = Task_Monitor ⇒ osDelayUntil ⇒ vTaskDelayUntil ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> osThreadGetId
  - >> osThreadGetStackSpace
  - >> osKernelGetTickFreq
  - >> osKernelGetTickCount
  - >> osDelayUntil
  - >> osDelay
  - >> Capacity_GetBatteryRemain
  - >> BSP_LED_Set
  - >> BSP_GetTemperature
  - >> BSP_GetBatteryVolt
  [Address Reference Count : 1]
  - init.o(.text.Task_Init)

  Task_RC (Thumb, 144 bytes, Stack size 16 bytes, rc.o(.text.Task_RC))
  [Stack]

  - Max Depth = 212
  - Call Chain = Task_RC ⇒ osMessageQueuePut ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit ⇒ vListInsertEnd
  [Calls]
  - >> osThreadGetId
  - >> osThreadGetStackSpace
  - >> osMessageQueueReset
  - >> osMessageQueuePut
  - >> DR16_WaitDmaCplt
  - >> DR16_StartDmaRecv
  - >> DR16_ParseRC
  - >> DR16_Init
  - >> DR16_HandleOffline
  [Address Reference Count : 1]
  - init.o(.text.Task_Init)

  Task_Referee (Thumb, 604 bytes, Stack size 40 bytes, referee_1.o(.text.Task_Referee))
  [Stack]

  - Max Depth = 632
  - Call Chain = Task_Referee ⇒ Referee_UIRefresh ⇒ __hardfp_sin ⇒ __ieee754_rem_pio2 ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> osThreadGetId
  - >> osThreadGetStackSpace
  - >> osThreadFlagsWait
  - >> osMessageQueueReset
  - >> osMessageQueuePut
  - >> osMessageQueueGet
  - >> osKernelGetTickFreq
  - >> osKernelGetTickCount
  - >> osDelay
  - >> Referee_UIRefresh
  - >> Referee_StartReceiving
  - >> Referee_PraseCmd
  - >> Referee_Parse
  - >> Referee_PackUI
  - >> Referee_PackShoot
  - >> Referee_PackChassis
  - >> Referee_PackCap
  - >> Referee_PackAI
  - >> Referee_Init
  - >> Referee_HandleOffline
  [Address Reference Count : 1]
  - init.o(.text.Task_Init)

  UART_Start_Receive_DMA (Thumb, 192 bytes, Stack size 32 bytes, stm32f4xx_hal_uart.o(.text.UART_Start_Receive_DMA))
  [Stack]

  - Max Depth = 88
  - Call Chain = UART_Start_Receive_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> HAL_DMA_Start_IT
  [Called By]
  - >> HAL_UART_Receive_DMA

  UI_DelLayer (Thumb, 58 bytes, Stack size 12 bytes, ui.o(.text.UI_DelLayer))
  [Stack]

  - Max Depth = 12
  - Call Chain = UI_DelLayer
  [Called By]
  - >> Referee_UIRefresh
  - >> Referee_PraseCmd

  UI_DrawArc (Thumb, 558 bytes, Stack size 64 bytes, ui.o(.text.UI_DrawArc))
  [Stack]

  - Max Depth = 104
  - Call Chain = UI_DrawArc ⇒ snprintf
  [Calls]
  - >> snprintf
  [Called By]
  - >> Referee_UIRefresh

  UI_DrawCharacter (Thumb, 476 bytes, Stack size 56 bytes, ui.o(.text.UI_DrawCharacter))
  [Stack]

  - Max Depth = 96
  - Call Chain = UI_DrawCharacter ⇒ snprintf
  [Calls]
  - >> snprintf
  [Called By]
  - >> Referee_UIRefresh
  - >> Referee_PraseCmd

  UI_DrawCycle (Thumb, 406 bytes, Stack size 48 bytes, ui.o(.text.UI_DrawCycle))
  [Stack]

  - Max Depth = 88
  - Call Chain = UI_DrawCycle ⇒ snprintf
  [Calls]
  - >> snprintf
  [Called By]
  - >> Referee_PraseCmd

  UI_DrawLine (Thumb, 458 bytes, Stack size 56 bytes, ui.o(.text.UI_DrawLine))
  [Stack]

  - Max Depth = 96
  - Call Chain = UI_DrawLine ⇒ snprintf
  [Calls]
  - >> snprintf
  [Called By]
  - >> Referee_UIRefresh
  - >> Referee_PraseCmd

  UI_DrawRectangle (Thumb, 462 bytes, Stack size 56 bytes, ui.o(.text.UI_DrawRectangle))
  [Stack]

  - Max Depth = 96
  - Call Chain = UI_DrawRectangle ⇒ snprintf
  [Calls]
  - >> snprintf
  [Called By]
  - >> Referee_UIRefresh

  USART1_IRQHandler (Thumb, 28 bytes, Stack size 16 bytes, stm32f4xx_it.o(.text.USART1_IRQHandler))
  [Stack]

  - Max Depth = 104
  - Call Chain = USART1_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ UART_Get
  [Calls]
  - >> HAL_UART_IRQHandler
  - >> BSP_UART_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  USART6_IRQHandler (Thumb, 28 bytes, Stack size 16 bytes, stm32f4xx_it.o(.text.USART6_IRQHandler))
  [Stack]

  - Max Depth = 104
  - Call Chain = USART6_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ UART_Get
  [Calls]
  - >> HAL_UART_IRQHandler
  - >> BSP_UART_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  USBD_CDC_GetDeviceQualifierDescriptor (Thumb, 22 bytes, Stack size 4 bytes, usbd_cdc.o(.text.USBD_CDC_GetDeviceQualifierDescriptor))
  [Stack]

  - Max Depth = 4
  - Call Chain = USBD_CDC_GetDeviceQualifierDescriptor
  [Address Reference Count : 1]
  - usbd_cdc.o(.data.USBD_CDC)

  USBD_CDC_ReceivePacket (Thumb, 94 bytes, Stack size 24 bytes, usbd_cdc.o(.text.USBD_CDC_ReceivePacket))
  [Stack]

  - Max Depth = 168
  - Call Chain = USBD_CDC_ReceivePacket ⇒ USBD_LL_PrepareReceive ⇒ HAL_PCD_EP_Receive ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_LL_PrepareReceive
  [Called By]
  - >> CDC_ReadyReceive

  USBD_CDC_RegisterInterface (Thumb, 44 bytes, Stack size 12 bytes, usbd_cdc.o(.text.USBD_CDC_RegisterInterface))
  [Stack]

  - Max Depth = 12
  - Call Chain = USBD_CDC_RegisterInterface
  [Called By]
  - >> MX_USB_DEVICE_Init

  USBD_CDC_SetRxBuffer (Thumb, 52 bytes, Stack size 16 bytes, usbd_cdc.o(.text.USBD_CDC_SetRxBuffer))
  [Stack]

  - Max Depth = 16
  - Call Chain = USBD_CDC_SetRxBuffer
  [Called By]
  - >> CDC_Init_FS

  USBD_CDC_SetTxBuffer (Thumb, 62 bytes, Stack size 20 bytes, usbd_cdc.o(.text.USBD_CDC_SetTxBuffer))
  [Stack]

  - Max Depth = 20
  - Call Chain = USBD_CDC_SetTxBuffer
  [Called By]
  - >> CDC_Transmit_FS

  USBD_CDC_TransmitPacket (Thumb, 110 bytes, Stack size 24 bytes, usbd_cdc.o(.text.USBD_CDC_TransmitPacket))
  [Stack]

  - Max Depth = 168
  - Call Chain = USBD_CDC_TransmitPacket ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_LL_Transmit
  [Called By]
  - >> CDC_Transmit_FS

  USBD_ClrClassConfig (Thumb, 42 bytes, Stack size 16 bytes, usbd_core.o(.text.USBD_ClrClassConfig))
  [Stack]

  - Max Depth = 16
  - Call Chain = USBD_ClrClassConfig
  [Called By]
  - >> USBD_SetConfig

  USBD_CtlContinueRx (Thumb, 30 bytes, Stack size 24 bytes, usbd_ioreq.o(.text.USBD_CtlContinueRx))
  [Stack]

  - Max Depth = 168
  - Call Chain = USBD_CtlContinueRx ⇒ USBD_LL_PrepareReceive ⇒ HAL_PCD_EP_Receive ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_LL_PrepareReceive
  [Called By]
  - >> USBD_LL_DataOutStage

  USBD_CtlContinueSendData (Thumb, 30 bytes, Stack size 24 bytes, usbd_ioreq.o(.text.USBD_CtlContinueSendData))
  [Stack]

  - Max Depth = 168
  - Call Chain = USBD_CtlContinueSendData ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_LL_Transmit
  [Called By]
  - >> USBD_LL_DataInStage

  USBD_CtlError (Thumb, 28 bytes, Stack size 16 bytes, usbd_ctlreq.o(.text.USBD_CtlError))
  [Stack]

  - Max Depth = 80
  - Call Chain = USBD_CtlError ⇒ USBD_LL_StallEP ⇒ HAL_PCD_EP_SetStall ⇒ USB_EP0_OutStart
  [Calls]
  - >> USBD_LL_StallEP
  [Called By]
  - >> USBD_SetConfig
  - >> USBD_SetAddress
  - >> USBD_GetStatus
  - >> USBD_GetDescriptor
  - >> USBD_GetConfig
  - >> USBD_ClrFeature
  - >> USBD_StdItfReq
  - >> USBD_StdEPReq
  - >> USBD_StdDevReq
  - >> USBD_CDC_Setup

  USBD_CtlPrepareRx (Thumb, 54 bytes, Stack size 24 bytes, usbd_ioreq.o(.text.USBD_CtlPrepareRx))
  [Stack]

  - Max Depth = 168
  - Call Chain = USBD_CtlPrepareRx ⇒ USBD_LL_PrepareReceive ⇒ HAL_PCD_EP_Receive ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_LL_PrepareReceive
  [Called By]
  - >> USBD_CDC_Setup

  USBD_CtlReceiveStatus (Thumb, 34 bytes, Stack size 16 bytes, usbd_ioreq.o(.text.USBD_CtlReceiveStatus))
  [Stack]

  - Max Depth = 160
  - Call Chain = USBD_CtlReceiveStatus ⇒ USBD_LL_PrepareReceive ⇒ HAL_PCD_EP_Receive ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_LL_PrepareReceive
  [Called By]
  - >> USBD_LL_DataInStage

  USBD_CtlSendData (Thumb, 50 bytes, Stack size 24 bytes, usbd_ioreq.o(.text.USBD_CtlSendData))
  [Stack]

  - Max Depth = 168
  - Call Chain = USBD_CtlSendData ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_LL_Transmit
  [Called By]
  - >> USBD_GetStatus
  - >> USBD_GetDescriptor
  - >> USBD_GetConfig
  - >> USBD_StdEPReq
  - >> USBD_CDC_Setup

  USBD_CtlSendStatus (Thumb, 34 bytes, Stack size 16 bytes, usbd_ioreq.o(.text.USBD_CtlSendStatus))
  [Stack]

  - Max Depth = 160
  - Call Chain = USBD_CtlSendStatus ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_LL_Transmit
  [Called By]
  - >> USBD_LL_DataOutStage
  - >> USBD_SetFeature
  - >> USBD_SetConfig
  - >> USBD_SetAddress
  - >> USBD_GetDescriptor
  - >> USBD_ClrFeature
  - >> USBD_StdItfReq
  - >> USBD_StdEPReq

  USBD_FS_ConfigStrDescriptor (Thumb, 78 bytes, Stack size 16 bytes, usbd_desc.o(.text.USBD_FS_ConfigStrDescriptor))
  [Stack]

  - Max Depth = 60
  - Call Chain = USBD_FS_ConfigStrDescriptor ⇒ USBD_GetString ⇒ USBD_GetLen
  [Calls]
  - >> USBD_GetString
  [Address Reference Count : 1]
  - usbd_desc.o(.data.FS_Desc)

  USBD_FS_DeviceDescriptor (Thumb, 26 bytes, Stack size 8 bytes, usbd_desc.o(.text.USBD_FS_DeviceDescriptor))
  [Stack]

  - Max Depth = 8
  - Call Chain = USBD_FS_DeviceDescriptor
  [Address Reference Count : 1]
  - usbd_desc.o(.data.FS_Desc)

  USBD_FS_InterfaceStrDescriptor (Thumb, 78 bytes, Stack size 16 bytes, usbd_desc.o(.text.USBD_FS_InterfaceStrDescriptor))
  [Stack]

  - Max Depth = 60
  - Call Chain = USBD_FS_InterfaceStrDescriptor ⇒ USBD_GetString ⇒ USBD_GetLen
  [Calls]
  - >> USBD_GetString
  [Address Reference Count : 1]
  - usbd_desc.o(.data.FS_Desc)

  USBD_FS_LangIDStrDescriptor (Thumb, 26 bytes, Stack size 8 bytes, usbd_desc.o(.text.USBD_FS_LangIDStrDescriptor))
  [Stack]

  - Max Depth = 8
  - Call Chain = USBD_FS_LangIDStrDescriptor
  [Address Reference Count : 1]
  - usbd_desc.o(.data.FS_Desc)

  USBD_FS_ManufacturerStrDescriptor (Thumb, 40 bytes, Stack size 24 bytes, usbd_desc.o(.text.USBD_FS_ManufacturerStrDescriptor))
  [Stack]

  - Max Depth = 68
  - Call Chain = USBD_FS_ManufacturerStrDescriptor ⇒ USBD_GetString ⇒ USBD_GetLen
  [Calls]
  - >> USBD_GetString
  [Address Reference Count : 1]
  - usbd_desc.o(.data.FS_Desc)

  USBD_FS_ProductStrDescriptor (Thumb, 78 bytes, Stack size 16 bytes, usbd_desc.o(.text.USBD_FS_ProductStrDescriptor))
  [Stack]

  - Max Depth = 60
  - Call Chain = USBD_FS_ProductStrDescriptor ⇒ USBD_GetString ⇒ USBD_GetLen
  [Calls]
  - >> USBD_GetString
  [Address Reference Count : 1]
  - usbd_desc.o(.data.FS_Desc)

  USBD_FS_SerialStrDescriptor (Thumb, 32 bytes, Stack size 16 bytes, usbd_desc.o(.text.USBD_FS_SerialStrDescriptor))
  [Stack]

  - Max Depth = 52
  - Call Chain = USBD_FS_SerialStrDescriptor ⇒ Get_SerialNum ⇒ IntToUnicode
  [Calls]
  - >> Get_SerialNum
  [Address Reference Count : 1]
  - usbd_desc.o(.data.FS_Desc)

  USBD_GetString (Thumb, 152 bytes, Stack size 32 bytes, usbd_ctlreq.o(.text.USBD_GetString))
  [Stack]

  - Max Depth = 44
  - Call Chain = USBD_GetString ⇒ USBD_GetLen
  [Calls]
  - >> USBD_GetLen
  [Called By]
  - >> USBD_FS_ProductStrDescriptor
  - >> USBD_FS_ManufacturerStrDescriptor
  - >> USBD_FS_InterfaceStrDescriptor
  - >> USBD_FS_ConfigStrDescriptor

  USBD_Get_USB_Status (Thumb, 82 bytes, Stack size 8 bytes, usbd_conf.o(.text.USBD_Get_USB_Status))
  [Stack]

  - Max Depth = 8
  - Call Chain = USBD_Get_USB_Status
  [Called By]
  - >> USBD_LL_Transmit
  - >> USBD_LL_Start
  - >> USBD_LL_StallEP
  - >> USBD_LL_SetUSBAddress
  - >> USBD_LL_PrepareReceive
  - >> USBD_LL_OpenEP
  - >> USBD_LL_CloseEP
  - >> USBD_LL_ClearStallEP

  USBD_Init (Thumb, 106 bytes, Stack size 24 bytes, usbd_core.o(.text.USBD_Init))
  [Stack]

  - Max Depth = 304
  - Call Chain = USBD_Init ⇒ USBD_LL_Init ⇒ HAL_PCD_Init ⇒ USB_DevInit ⇒ USB_FlushTxFifo
  [Calls]
  - >> USBD_LL_Init
  [Called By]
  - >> MX_USB_DEVICE_Init

  USBD_LL_ClearStallEP (Thumb, 58 bytes, Stack size 16 bytes, usbd_conf.o(.text.USBD_LL_ClearStallEP))
  [Stack]

  - Max Depth = 56
  - Call Chain = USBD_LL_ClearStallEP ⇒ HAL_PCD_EP_ClrStall ⇒ USB_EPClearStall
  [Calls]
  - >> USBD_Get_USB_Status
  - >> HAL_PCD_EP_ClrStall
  [Called By]
  - >> USBD_StdEPReq

  USBD_LL_CloseEP (Thumb, 58 bytes, Stack size 16 bytes, usbd_conf.o(.text.USBD_LL_CloseEP))
  [Stack]

  - Max Depth = 56
  - Call Chain = USBD_LL_CloseEP ⇒ HAL_PCD_EP_Close ⇒ USB_DeactivateEndpoint
  [Calls]
  - >> USBD_Get_USB_Status
  - >> HAL_PCD_EP_Close
  [Called By]
  - >> USBD_CDC_DeInit

  USBD_LL_DataInStage (Thumb, 332 bytes, Stack size 40 bytes, usbd_core.o(.text.USBD_LL_DataInStage))
  [Stack]

  - Max Depth = 208
  - Call Chain = USBD_LL_DataInStage ⇒ USBD_CtlContinueSendData ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_LL_StallEP
  - >> USBD_LL_PrepareReceive
  - >> USBD_RunTestMode
  - >> USBD_CtlReceiveStatus
  - >> USBD_CtlContinueSendData
  [Called By]
  - >> HAL_PCD_DataInStageCallback

  USBD_LL_DataOutStage (Thumb, 246 bytes, Stack size 48 bytes, usbd_core.o(.text.USBD_LL_DataOutStage))
  [Stack]

  - Max Depth = 216
  - Call Chain = USBD_LL_DataOutStage ⇒ USBD_CtlContinueRx ⇒ USBD_LL_PrepareReceive ⇒ HAL_PCD_EP_Receive ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_CtlSendStatus
  - >> USBD_CtlContinueRx
  [Called By]
  - >> HAL_PCD_DataOutStageCallback

  USBD_LL_DevConnected (Thumb, 10 bytes, Stack size 4 bytes, usbd_core.o(.text.USBD_LL_DevConnected))
  [Stack]

  - Max Depth = 4
  - Call Chain = USBD_LL_DevConnected
  [Called By]
  - >> HAL_PCD_ConnectCallback

  USBD_LL_DevDisconnected (Thumb, 44 bytes, Stack size 16 bytes, usbd_core.o(.text.USBD_LL_DevDisconnected))
  [Stack]

  - Max Depth = 16
  - Call Chain = USBD_LL_DevDisconnected
  [Called By]
  - >> HAL_PCD_DisconnectCallback

  USBD_LL_GetRxDataSize (Thumb, 28 bytes, Stack size 16 bytes, usbd_conf.o(.text.USBD_LL_GetRxDataSize))
  [Stack]

  - Max Depth = 24
  - Call Chain = USBD_LL_GetRxDataSize ⇒ HAL_PCD_EP_GetRxCount
  [Calls]
  - >> HAL_PCD_EP_GetRxCount
  [Called By]
  - >> USBD_CDC_DataOut

  USBD_LL_Init (Thumb, 126 bytes, Stack size 24 bytes, usbd_conf.o(.text.USBD_LL_Init))
  [Stack]

  - Max Depth = 280
  - Call Chain = USBD_LL_Init ⇒ HAL_PCD_Init ⇒ USB_DevInit ⇒ USB_FlushTxFifo
  [Calls]
  - >> HAL_PCD_Init
  - >> HAL_PCDEx_SetTxFiFo
  - >> HAL_PCDEx_SetRxFiFo
  - >> Error_Handler
  [Called By]
  - >> USBD_Init

  USBD_LL_IsStallEP (Thumb, 92 bytes, Stack size 16 bytes, usbd_conf.o(.text.USBD_LL_IsStallEP))
  [Stack]

  - Max Depth = 16
  - Call Chain = USBD_LL_IsStallEP
  [Called By]
  - >> USBD_StdEPReq

  USBD_LL_IsoINIncomplete (Thumb, 86 bytes, Stack size 24 bytes, usbd_core.o(.text.USBD_LL_IsoINIncomplete))
  [Stack]

  - Max Depth = 24
  - Call Chain = USBD_LL_IsoINIncomplete
  [Called By]
  - >> HAL_PCD_ISOINIncompleteCallback

  USBD_LL_IsoOUTIncomplete (Thumb, 86 bytes, Stack size 24 bytes, usbd_core.o(.text.USBD_LL_IsoOUTIncomplete))
  [Stack]

  - Max Depth = 24
  - Call Chain = USBD_LL_IsoOUTIncomplete
  [Called By]
  - >> HAL_PCD_ISOOUTIncompleteCallback

  USBD_LL_OpenEP (Thumb, 74 bytes, Stack size 24 bytes, usbd_conf.o(.text.USBD_LL_OpenEP))
  [Stack]

  - Max Depth = 72
  - Call Chain = USBD_LL_OpenEP ⇒ HAL_PCD_EP_Open ⇒ USB_ActivateEndpoint
  [Calls]
  - >> USBD_Get_USB_Status
  - >> HAL_PCD_EP_Open
  [Called By]
  - >> USBD_LL_Reset
  - >> USBD_CDC_Init

  USBD_LL_PrepareReceive (Thumb, 66 bytes, Stack size 32 bytes, usbd_conf.o(.text.USBD_LL_PrepareReceive))
  [Stack]

  - Max Depth = 144
  - Call Chain = USBD_LL_PrepareReceive ⇒ HAL_PCD_EP_Receive ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_Get_USB_Status
  - >> HAL_PCD_EP_Receive
  [Called By]
  - >> USBD_LL_DataInStage
  - >> USBD_CDC_ReceivePacket
  - >> USBD_CtlReceiveStatus
  - >> USBD_CtlContinueRx
  - >> USBD_CDC_Init
  - >> USBD_CtlPrepareRx

  USBD_LL_Reset (Thumb, 160 bytes, Stack size 32 bytes, usbd_core.o(.text.USBD_LL_Reset))
  [Stack]

  - Max Depth = 104
  - Call Chain = USBD_LL_Reset ⇒ USBD_LL_OpenEP ⇒ HAL_PCD_EP_Open ⇒ USB_ActivateEndpoint
  [Calls]
  - >> USBD_LL_OpenEP
  [Called By]
  - >> HAL_PCD_ResetCallback

  USBD_LL_Resume (Thumb, 36 bytes, Stack size 4 bytes, usbd_core.o(.text.USBD_LL_Resume))
  [Stack]

  - Max Depth = 4
  - Call Chain = USBD_LL_Resume
  [Called By]
  - >> HAL_PCD_ResumeCallback

  USBD_LL_SOF (Thumb, 78 bytes, Stack size 16 bytes, usbd_core.o(.text.USBD_LL_SOF))
  [Stack]

  - Max Depth = 16
  - Call Chain = USBD_LL_SOF
  [Called By]
  - >> HAL_PCD_SOFCallback

  USBD_LL_SetSpeed (Thumb, 22 bytes, Stack size 8 bytes, usbd_core.o(.text.USBD_LL_SetSpeed))
  [Stack]

  - Max Depth = 8
  - Call Chain = USBD_LL_SetSpeed
  [Called By]
  - >> HAL_PCD_ResetCallback

  USBD_LL_SetUSBAddress (Thumb, 58 bytes, Stack size 16 bytes, usbd_conf.o(.text.USBD_LL_SetUSBAddress))
  [Stack]

  - Max Depth = 52
  - Call Chain = USBD_LL_SetUSBAddress ⇒ HAL_PCD_SetAddress ⇒ USB_SetDevAddress
  [Calls]
  - >> USBD_Get_USB_Status
  - >> HAL_PCD_SetAddress
  [Called By]
  - >> USBD_SetAddress

  USBD_LL_SetupStage (Thumb, 148 bytes, Stack size 24 bytes, usbd_core.o(.text.USBD_LL_SetupStage))
  [Stack]

  - Max Depth = 264
  - Call Chain = USBD_LL_SetupStage ⇒ USBD_StdDevReq ⇒ USBD_GetDescriptor ⇒ USBD_CtlSendData ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_LL_StallEP
  - >> USBD_StdItfReq
  - >> USBD_StdEPReq
  - >> USBD_StdDevReq
  - >> USBD_ParseSetupRequest
  [Called By]
  - >> HAL_PCD_SetupStageCallback

  USBD_LL_StallEP (Thumb, 58 bytes, Stack size 16 bytes, usbd_conf.o(.text.USBD_LL_StallEP))
  [Stack]

  - Max Depth = 64
  - Call Chain = USBD_LL_StallEP ⇒ HAL_PCD_EP_SetStall ⇒ USB_EP0_OutStart
  [Calls]
  - >> USBD_Get_USB_Status
  - >> HAL_PCD_EP_SetStall
  [Called By]
  - >> USBD_LL_SetupStage
  - >> USBD_LL_DataInStage
  - >> USBD_CtlError
  - >> USBD_StdEPReq

  USBD_LL_Start (Thumb, 50 bytes, Stack size 16 bytes, usbd_conf.o(.text.USBD_LL_Start))
  [Stack]

  - Max Depth = 48
  - Call Chain = USBD_LL_Start ⇒ HAL_PCD_Start ⇒ USB_DevConnect
  [Calls]
  - >> USBD_Get_USB_Status
  - >> HAL_PCD_Start
  [Called By]
  - >> USBD_Start

  USBD_LL_Suspend (Thumb, 30 bytes, Stack size 4 bytes, usbd_core.o(.text.USBD_LL_Suspend))
  [Stack]

  - Max Depth = 4
  - Call Chain = USBD_LL_Suspend
  [Called By]
  - >> HAL_PCD_SuspendCallback

  USBD_LL_Transmit (Thumb, 66 bytes, Stack size 32 bytes, usbd_conf.o(.text.USBD_LL_Transmit))
  [Stack]

  - Max Depth = 144
  - Call Chain = USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_Get_USB_Status
  - >> HAL_PCD_EP_Transmit
  [Called By]
  - >> USBD_CDC_TransmitPacket
  - >> USBD_CtlSendData
  - >> USBD_CtlSendStatus
  - >> USBD_CtlContinueSendData
  - >> USBD_CDC_DataIn

  USBD_ParseSetupRequest (Thumb, 98 bytes, Stack size 24 bytes, usbd_ctlreq.o(.text.USBD_ParseSetupRequest))
  [Stack]

  - Max Depth = 40
  - Call Chain = USBD_ParseSetupRequest ⇒ SWAPBYTE
  [Calls]
  - >> SWAPBYTE
  [Called By]
  - >> USBD_LL_SetupStage

  USBD_RegisterClass (Thumb, 86 bytes, Stack size 24 bytes, usbd_core.o(.text.USBD_RegisterClass))
  [Stack]

  - Max Depth = 24
  - Call Chain = USBD_RegisterClass
  [Called By]
  - >> MX_USB_DEVICE_Init

  USBD_RunTestMode (Thumb, 10 bytes, Stack size 4 bytes, usbd_core.o(.text.USBD_RunTestMode))
  [Stack]

  - Max Depth = 4
  - Call Chain = USBD_RunTestMode
  [Called By]
  - >> USBD_LL_DataInStage

  USBD_SetClassConfig (Thumb, 54 bytes, Stack size 16 bytes, usbd_core.o(.text.USBD_SetClassConfig))
  [Stack]

  - Max Depth = 16
  - Call Chain = USBD_SetClassConfig
  [Called By]
  - >> USBD_SetConfig

  USBD_Start (Thumb, 16 bytes, Stack size 16 bytes, usbd_core.o(.text.USBD_Start))
  [Stack]

  - Max Depth = 64
  - Call Chain = USBD_Start ⇒ USBD_LL_Start ⇒ HAL_PCD_Start ⇒ USB_DevConnect
  [Calls]
  - >> USBD_LL_Start
  [Called By]
  - >> MX_USB_DEVICE_Init

  USBD_StdDevReq (Thumb, 196 bytes, Stack size 32 bytes, usbd_ctlreq.o(.text.USBD_StdDevReq))
  [Stack]

  - Max Depth = 240
  - Call Chain = USBD_StdDevReq ⇒ USBD_GetDescriptor ⇒ USBD_CtlSendData ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_CtlError
  - >> USBD_SetFeature
  - >> USBD_SetConfig
  - >> USBD_SetAddress
  - >> USBD_GetStatus
  - >> USBD_GetDescriptor
  - >> USBD_GetConfig
  - >> USBD_ClrFeature
  [Called By]
  - >> USBD_LL_SetupStage

  USBD_StdEPReq (Thumb, 792 bytes, Stack size 56 bytes, usbd_ctlreq.o(.text.USBD_StdEPReq))
  [Stack]

  - Max Depth = 224
  - Call Chain = USBD_StdEPReq ⇒ USBD_CtlSendData ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_LL_StallEP
  - >> USBD_LL_IsStallEP
  - >> USBD_LL_ClearStallEP
  - >> USBD_CtlSendData
  - >> USBD_CtlError
  - >> USBD_CtlSendStatus
  [Called By]
  - >> USBD_LL_SetupStage

  USBD_StdItfReq (Thumb, 154 bytes, Stack size 24 bytes, usbd_ctlreq.o(.text.USBD_StdItfReq))
  [Stack]

  - Max Depth = 184
  - Call Chain = USBD_StdItfReq ⇒ USBD_CtlSendStatus ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_CtlError
  - >> USBD_CtlSendStatus
  [Called By]
  - >> USBD_LL_SetupStage

  USBD_static_free (Thumb, 8 bytes, Stack size 4 bytes, usbd_conf.o(.text.USBD_static_free))
  [Stack]

  - Max Depth = 4
  - Call Chain = USBD_static_free
  [Called By]
  - >> USBD_CDC_DeInit

  USBD_static_malloc (Thumb, 16 bytes, Stack size 4 bytes, usbd_conf.o(.text.USBD_static_malloc))
  [Stack]

  - Max Depth = 4
  - Call Chain = USBD_static_malloc
  [Called By]
  - >> USBD_CDC_Init

  USB_ActivateEndpoint (Thumb, 222 bytes, Stack size 16 bytes, stm32f4xx_ll_usb.o(.text.USB_ActivateEndpoint))
  [Stack]

  - Max Depth = 16
  - Call Chain = USB_ActivateEndpoint
  [Called By]
  - >> HAL_PCD_EP_Open

  USB_ActivateSetup (Thumb, 44 bytes, Stack size 8 bytes, stm32f4xx_ll_usb.o(.text.USB_ActivateSetup))
  [Stack]

  - Max Depth = 8
  - Call Chain = USB_ActivateSetup
  [Called By]
  - >> HAL_PCD_IRQHandler

  USB_CoreInit (Thumb, 252 bytes, Stack size 104 bytes, stm32f4xx_ll_usb.o(.text.USB_CoreInit))
  [Stack]

  - Max Depth = 116
  - Call Chain = USB_CoreInit ⇒ USB_CoreReset
  [Calls]
  - >> USB_CoreReset
  [Called By]
  - >> HAL_PCD_Init

  USB_DeactivateEndpoint (Thumb, 326 bytes, Stack size 16 bytes, stm32f4xx_ll_usb.o(.text.USB_DeactivateEndpoint))
  [Stack]

  - Max Depth = 16
  - Call Chain = USB_DeactivateEndpoint
  [Called By]
  - >> HAL_PCD_EP_Close

  USB_DevConnect (Thumb, 42 bytes, Stack size 8 bytes, stm32f4xx_ll_usb.o(.text.USB_DevConnect))
  [Stack]

  - Max Depth = 8
  - Call Chain = USB_DevConnect
  [Called By]
  - >> HAL_PCD_Start

  USB_DevDisconnect (Thumb, 42 bytes, Stack size 8 bytes, stm32f4xx_ll_usb.o(.text.USB_DevDisconnect))
  [Stack]

  - Max Depth = 8
  - Call Chain = USB_DevDisconnect
  [Called By]
  - >> HAL_PCD_Init

  USB_DevInit (Thumb, 706 bytes, Stack size 112 bytes, stm32f4xx_ll_usb.o(.text.USB_DevInit))
  [Stack]

  - Max Depth = 128
  - Call Chain = USB_DevInit ⇒ USB_FlushTxFifo
  [Calls]
  - >> USB_SetDevSpeed
  - >> USB_FlushTxFifo
  - >> USB_FlushRxFifo
  [Called By]
  - >> HAL_PCD_Init

  USB_DisableGlobalInt (Thumb, 20 bytes, Stack size 4 bytes, stm32f4xx_ll_usb.o(.text.USB_DisableGlobalInt))
  [Stack]

  - Max Depth = 4
  - Call Chain = USB_DisableGlobalInt
  [Called By]
  - >> HAL_PCD_Init

  USB_EP0StartXfer (Thumb, 496 bytes, Stack size 20 bytes, stm32f4xx_ll_usb.o(.text.USB_EP0StartXfer))
  [Stack]

  - Max Depth = 20
  - Call Chain = USB_EP0StartXfer
  [Called By]
  - >> HAL_PCD_EP_Transmit
  - >> HAL_PCD_EP_Receive

  USB_EP0_OutStart (Thumb, 158 bytes, Stack size 24 bytes, stm32f4xx_ll_usb.o(.text.USB_EP0_OutStart))
  [Stack]

  - Max Depth = 24
  - Call Chain = USB_EP0_OutStart
  [Called By]
  - >> PCD_EP_OutXfrComplete_int
  - >> PCD_EP_OutSetupPacket_int
  - >> HAL_PCD_EP_SetStall
  - >> HAL_PCD_IRQHandler

  USB_EPClearStall (Thumb, 160 bytes, Stack size 16 bytes, stm32f4xx_ll_usb.o(.text.USB_EPClearStall))
  [Stack]

  - Max Depth = 16
  - Call Chain = USB_EPClearStall
  [Called By]
  - >> HAL_PCD_EP_ClrStall

  USB_EPSetStall (Thumb, 168 bytes, Stack size 16 bytes, stm32f4xx_ll_usb.o(.text.USB_EPSetStall))
  [Stack]

  - Max Depth = 16
  - Call Chain = USB_EPSetStall
  [Called By]
  - >> HAL_PCD_EP_SetStall

  USB_EPStartXfer (Thumb, 868 bytes, Stack size 40 bytes, stm32f4xx_ll_usb.o(.text.USB_EPStartXfer))
  [Stack]

  - Max Depth = 80
  - Call Chain = USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USB_WritePacket
  [Called By]
  - >> HAL_PCD_EP_Transmit
  - >> HAL_PCD_EP_Receive

  USB_EnableGlobalInt (Thumb, 20 bytes, Stack size 4 bytes, stm32f4xx_ll_usb.o(.text.USB_EnableGlobalInt))
  [Stack]

  - Max Depth = 4
  - Call Chain = USB_EnableGlobalInt
  [Called By]
  - >> HAL_PCD_Start

  USB_FlushRxFifo (Thumb, 76 bytes, Stack size 12 bytes, stm32f4xx_ll_usb.o(.text.USB_FlushRxFifo))
  [Stack]

  - Max Depth = 12
  - Call Chain = USB_FlushRxFifo
  [Called By]
  - >> USB_DevInit

  USB_FlushTxFifo (Thumb, 82 bytes, Stack size 16 bytes, stm32f4xx_ll_usb.o(.text.USB_FlushTxFifo))
  [Stack]

  - Max Depth = 16
  - Call Chain = USB_FlushTxFifo
  [Called By]
  - >> USB_DevInit
  - >> HAL_PCD_IRQHandler

  USB_GetDevSpeed (Thumb, 76 bytes, Stack size 16 bytes, stm32f4xx_ll_usb.o(.text.USB_GetDevSpeed))
  [Stack]

  - Max Depth = 16
  - Call Chain = USB_GetDevSpeed
  [Called By]
  - >> HAL_PCD_IRQHandler

  USB_GetMode (Thumb, 16 bytes, Stack size 4 bytes, stm32f4xx_ll_usb.o(.text.USB_GetMode))
  [Stack]

  - Max Depth = 4
  - Call Chain = USB_GetMode
  [Called By]
  - >> HAL_PCD_IRQHandler

  USB_ReadDevAllInEpInterrupt (Thumb, 36 bytes, Stack size 12 bytes, stm32f4xx_ll_usb.o(.text.USB_ReadDevAllInEpInterrupt))
  [Stack]

  - Max Depth = 12
  - Call Chain = USB_ReadDevAllInEpInterrupt
  [Called By]
  - >> HAL_PCD_IRQHandler

  USB_ReadDevAllOutEpInterrupt (Thumb, 36 bytes, Stack size 12 bytes, stm32f4xx_ll_usb.o(.text.USB_ReadDevAllOutEpInterrupt))
  [Stack]

  - Max Depth = 12
  - Call Chain = USB_ReadDevAllOutEpInterrupt
  [Called By]
  - >> HAL_PCD_IRQHandler

  USB_ReadDevInEPInterrupt (Thumb, 78 bytes, Stack size 24 bytes, stm32f4xx_ll_usb.o(.text.USB_ReadDevInEPInterrupt))
  [Stack]

  - Max Depth = 24
  - Call Chain = USB_ReadDevInEPInterrupt
  [Called By]
  - >> HAL_PCD_IRQHandler

  USB_ReadDevOutEPInterrupt (Thumb, 46 bytes, Stack size 16 bytes, stm32f4xx_ll_usb.o(.text.USB_ReadDevOutEPInterrupt))
  [Stack]

  - Max Depth = 16
  - Call Chain = USB_ReadDevOutEPInterrupt
  [Called By]
  - >> HAL_PCD_IRQHandler

  USB_ReadInterrupts (Thumb, 26 bytes, Stack size 8 bytes, stm32f4xx_ll_usb.o(.text.USB_ReadInterrupts))
  [Stack]

  - Max Depth = 8
  - Call Chain = USB_ReadInterrupts
  [Called By]
  - >> HAL_PCD_IRQHandler

  USB_ReadPacket (Thumb, 78 bytes, Stack size 28 bytes, stm32f4xx_ll_usb.o(.text.USB_ReadPacket))
  [Stack]

  - Max Depth = 28
  - Call Chain = USB_ReadPacket
  [Called By]
  - >> HAL_PCD_IRQHandler

  USB_SetCurrentMode (Thumb, 94 bytes, Stack size 24 bytes, stm32f4xx_ll_usb.o(.text.USB_SetCurrentMode))
  [Stack]

  - Max Depth = 48
  - Call Chain = USB_SetCurrentMode ⇒ HAL_Delay
  [Calls]
  - >> HAL_Delay
  [Called By]
  - >> HAL_PCD_Init

  USB_SetDevAddress (Thumb, 54 bytes, Stack size 12 bytes, stm32f4xx_ll_usb.o(.text.USB_SetDevAddress))
  [Stack]

  - Max Depth = 12
  - Call Chain = USB_SetDevAddress
  [Called By]
  - >> HAL_PCD_SetAddress

  USB_SetDevSpeed (Thumb, 34 bytes, Stack size 12 bytes, stm32f4xx_ll_usb.o(.text.USB_SetDevSpeed))
  [Stack]

  - Max Depth = 12
  - Call Chain = USB_SetDevSpeed
  [Called By]
  - >> USB_DevInit

  USB_SetTurnaroundTime (Thumb, 442 bytes, Stack size 16 bytes, stm32f4xx_ll_usb.o(.text.USB_SetTurnaroundTime))
  [Stack]

  - Max Depth = 16
  - Call Chain = USB_SetTurnaroundTime
  [Called By]
  - >> HAL_PCD_IRQHandler

  USB_WritePacket (Thumb, 112 bytes, Stack size 40 bytes, stm32f4xx_ll_usb.o(.text.USB_WritePacket))
  [Stack]

  - Max Depth = 40
  - Call Chain = USB_WritePacket
  [Called By]
  - >> USB_EPStartXfer
  - >> PCD_WriteEmptyTxFifo

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

  - startup_stm32f407xx.o(RESET)

  VerifyFailed (Thumb, 12 bytes, Stack size 8 bytes, user_math.o(.text.VerifyFailed))
  [Stack]

  - Max Depth = 8
  - Call Chain = VerifyFailed
  [Called By]
  - >> AI_Init

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

  - Max Depth = 8
  - Call Chain = assert_failed
  [Called By]
  - >> HAL_GPIO_ReadPin
  - >> HAL_FLASHEx_Erase
  - >> FLASH_MassErase
  - >> HAL_FLASH_Program
  - >> FLASH_Erase_Sector
  - >> FLASH_Program_Word
  - >> FLASH_Program_HalfWord
  - >> FLASH_Program_DoubleWord
  - >> FLASH_Program_Byte
  - >> HAL_PCD_Init
  - >> HAL_UART_Init
  - >> HAL_TIM_PWM_Init
  - >> HAL_TIM_PWM_ConfigChannel
  - >> HAL_TIM_ConfigClockSource
  - >> HAL_TIM_Base_Init
  - >> HAL_TIMEx_MasterConfigSynchronization
  - >> HAL_TIMEx_ConfigBreakDeadTime
  - >> HAL_SPI_Init
  - >> HAL_RNG_Init
  - >> HAL_I2C_Init
  - >> HAL_DMA_Init
  - >> HAL_CRC_Init
  - >> HAL_NVIC_DisableIRQ
  - >> HAL_CAN_Init
  - >> HAL_ADC_Init
  - >> HAL_ADC_ConfigChannel
  - >> HAL_TIM_Base_Start_IT
  - >> HAL_NVIC_SetPriority
  - >> HAL_NVIC_EnableIRQ
  - >> HAL_GPIO_WritePin
  - >> HAL_GPIO_Init
  - >> HAL_RCC_OscConfig
  - >> HAL_RCC_ClockConfig
  - >> TIM_OC2_SetConfig
  - >> TIM_CCxChannelCmd
  - >> HAL_TIM_PWM_Stop
  - >> HAL_TIM_PWM_Start
  - >> TIM_OC4_SetConfig
  - >> TIM_OC3_SetConfig
  - >> TIM_OC1_SetConfig
  - >> HAL_SPI_TransmitReceive_DMA
  - >> HAL_SPI_TransmitReceive
  - >> HAL_SPI_Transmit
  - >> HAL_SPI_Receive_DMA
  - >> HAL_CAN_GetRxMessage
  - >> HAL_CAN_ConfigFilter
  - >> HAL_CAN_AddTxMessage
  - >> HAL_CAN_ActivateNotification
  - >> HAL_ADC_Start
  - >> ADC_Init
  - >> HAL_NVIC_SetPriorityGrouping
  - >> HAL_DMA_Start_IT
  - >> UART_SetConfig

  configureTimerForRunTimeStats (Thumb, 28 bytes, Stack size 8 bytes, freertos.o(.text.configureTimerForRunTimeStats))
  [Stack]

  - Max Depth = 40
  - Call Chain = configureTimerForRunTimeStats ⇒ HAL_TIM_Base_Start_IT ⇒ assert_failed
  [Calls]
  - >> HAL_TIM_Base_Start_IT
  [Called By]
  - >> vTaskStartScheduler

  eTaskGetState (Thumb, 246 bytes, Stack size 40 bytes, tasks.o(.text.eTaskGetState))
  [Stack]

  - Max Depth = 48
  - Call Chain = eTaskGetState ⇒ vPortExitCritical
  [Calls]
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> osThreadTerminate
  - >> vTaskGetInfo

  getRunTimeCounterValue (Thumb, 12 bytes, Stack size 0 bytes, freertos.o(.text.getRunTimeCounterValue))
  [Called By]

  - >> vTaskSwitchContext
  - >> uxTaskGetSystemState

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

  - Max Depth = 308
  - Call Chain = main ⇒ osKernelStart ⇒ vTaskStartScheduler ⇒ xTimerCreateTimerTask ⇒ prvCheckForValidListAndQueue ⇒ xQueueGenericCreateStatic ⇒ prvInitialiseNewQueue ⇒ xQueueGenericReset ⇒ xTaskRemoveFromEventList ⇒ vListInsertEnd
  [Calls]
  - >> osKernelStart
  - >> osKernelInitialize
  - >> SystemClock_Config
  - >> MX_USART6_UART_Init
  - >> MX_USART3_UART_Init
  - >> MX_USART1_UART_Init
  - >> MX_TIM8_Init
  - >> MX_TIM7_Init
  - >> MX_TIM5_Init
  - >> MX_TIM4_Init
  - >> MX_TIM3_Init
  - >> MX_TIM1_Init
  - >> MX_TIM10_Init
  - >> MX_SPI2_Init
  - >> MX_SPI1_Init
  - >> MX_RNG_Init
  - >> MX_I2C3_Init
  - >> MX_I2C2_Init
  - >> MX_I2C1_Init
  - >> MX_GPIO_Init
  - >> MX_FREERTOS_Init
  - >> MX_DMA_Init
  - >> MX_CRC_Init
  - >> MX_CAN2_Init
  - >> MX_CAN1_Init
  - >> MX_ADC3_Init
  - >> MX_ADC1_Init
  - >> HAL_Init
  [Address Reference Count : 1]
  - entry9a.o(.ARM.Collect$$$$0000000B)

  osDelay (Thumb, 52 bytes, Stack size 24 bytes, cmsis_os2.o(.text.osDelay))
  [Stack]

  - Max Depth = 116
  - Call Chain = osDelay ⇒ vTaskDelay ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> vTaskDelay
  [Called By]
  - >> BSP_Delay
  - >> Task_Referee
  - >> Task_Monitor
  - >> Task_Info

  osDelayUntil (Thumb, 88 bytes, Stack size 32 bytes, cmsis_os2.o(.text.osDelayUntil))
  [Stack]

  - Max Depth = 148
  - Call Chain = osDelayUntil ⇒ vTaskDelayUntil ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> xTaskGetTickCount
  - >> vTaskDelayUntil
  [Called By]
  - >> Task_Monitor
  - >> Task_Info
  - >> Task_CtrlShoot
  - >> Task_CtrlGimbal
  - >> Task_CtrlChassis
  - >> Task_Command
  - >> Task_Cap
  - >> Task_Can
  - >> Task_Ai

  osKernelGetState (Thumb, 82 bytes, Stack size 16 bytes, cmsis_os2.o(.text.osKernelGetState))
  [Stack]

  - Max Depth = 20
  - Call Chain = osKernelGetState ⇒ xTaskGetSchedulerState
  [Calls]
  - >> xTaskGetSchedulerState
  [Called By]
  - >> BSP_Delay

  osKernelGetTickCount (Thumb, 38 bytes, Stack size 16 bytes, cmsis_os2.o(.text.osKernelGetTickCount))
  [Stack]

  - Max Depth = 48
  - Call Chain = osKernelGetTickCount ⇒ xTaskGetTickCountFromISR ⇒ vPortValidateInterruptPriority
  [Calls]
  - >> xTaskGetTickCountFromISR
  - >> xTaskGetTickCount
  [Called By]
  - >> Task_Referee
  - >> Task_Monitor
  - >> Task_Info
  - >> Task_CtrlShoot
  - >> Task_CtrlGimbal
  - >> Task_CtrlChassis
  - >> Task_Command
  - >> Task_Cap
  - >> Task_Can
  - >> Task_Ai

  osKernelGetTickFreq (Thumb, 6 bytes, Stack size 0 bytes, cmsis_os2.o(.text.osKernelGetTickFreq))
  [Called By]

  - >> BSP_Delay
  - >> Task_Referee
  - >> Task_Monitor
  - >> Task_Info
  - >> Task_CtrlShoot
  - >> Task_CtrlGimbal
  - >> Task_CtrlChassis
  - >> Task_Command
  - >> Task_Cap
  - >> Task_Can
  - >> Task_Ai

  osKernelInitialize (Thumb, 70 bytes, Stack size 8 bytes, cmsis_os2.o(.text.osKernelInitialize))
  [Stack]

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

  osKernelLock (Thumb, 86 bytes, Stack size 24 bytes, cmsis_os2.o(.text.osKernelLock))
  [Stack]

  - Max Depth = 28
  - Call Chain = osKernelLock ⇒ xTaskGetSchedulerState
  [Calls]
  - >> xTaskGetSchedulerState
  - >> vTaskSuspendAll
  [Called By]
  - >> Task_Init
  - >> Config_Set
  - >> Task_CtrlShoot
  - >> Task_CtrlGimbal
  - >> Task_CtrlChassis
  - >> Task_Command
  - >> Task_Cap
  - >> Task_AttiEsti

  osKernelStart (Thumb, 82 bytes, Stack size 16 bytes, cmsis_os2.o(.text.osKernelStart))
  [Stack]

  - Max Depth = 292
  - Call Chain = osKernelStart ⇒ vTaskStartScheduler ⇒ xTimerCreateTimerTask ⇒ prvCheckForValidListAndQueue ⇒ xQueueGenericCreateStatic ⇒ prvInitialiseNewQueue ⇒ xQueueGenericReset ⇒ xTaskRemoveFromEventList ⇒ vListInsertEnd
  [Calls]
  - >> SVC_Setup
  - >> vTaskStartScheduler
  [Called By]
  - >> main

  osKernelUnlock (Thumb, 110 bytes, Stack size 24 bytes, cmsis_os2.o(.text.osKernelUnlock))
  [Stack]

  - Max Depth = 92
  - Call Chain = osKernelUnlock ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> xTaskGetSchedulerState
  - >> xTaskResumeAll
  [Called By]
  - >> Task_Init
  - >> Config_Set
  - >> Task_CtrlShoot
  - >> Task_CtrlGimbal
  - >> Task_CtrlChassis
  - >> Task_Command
  - >> Task_Cap
  - >> Task_AttiEsti

  osMessageQueueGet (Thumb, 192 bytes, Stack size 40 bytes, cmsis_os2.o(.text.osMessageQueueGet))
  [Stack]

  - Max Depth = 172
  - Call Chain = osMessageQueueGet ⇒ xQueueReceive ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> xQueueReceiveFromISR
  - >> xQueueReceive
  [Called By]
  - >> Task_Referee
  - >> Task_CtrlShoot
  - >> Task_CtrlGimbal
  - >> Task_CtrlChassis
  - >> Task_Command
  - >> Command_SetMechZero
  - >> Command_SetGimbalLim
  - >> Command_CaliGyro
  - >> Task_Cap
  - >> Task_Can
  - >> Task_Ai

  osMessageQueueNew (Thumb, 254 bytes, Stack size 40 bytes, cmsis_os2.o(.text.osMessageQueueNew))
  [Stack]

  - Max Depth = 196
  - Call Chain = osMessageQueueNew ⇒ xQueueGenericCreateStatic ⇒ prvInitialiseNewQueue ⇒ xQueueGenericReset ⇒ xTaskRemoveFromEventList ⇒ vListInsertEnd
  [Calls]
  - >> xQueueGenericCreateStatic
  - >> xQueueGenericCreate
  - >> vQueueAddToRegistry
  [Called By]
  - >> Task_Init
  - >> CAN_Init

  osMessageQueuePut (Thumb, 196 bytes, Stack size 40 bytes, cmsis_os2.o(.text.osMessageQueuePut))
  [Stack]

  - Max Depth = 196
  - Call Chain = osMessageQueuePut ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit ⇒ vListInsertEnd
  [Calls]
  - >> xQueueGenericSendFromISR
  - >> xQueueGenericSend
  [Called By]
  - >> CAN_CAN2RxFifoMsgPendingCallback
  - >> CAN_CAN1RxFifoMsgPendingCallback
  - >> Task_Referee
  - >> Task_RC
  - >> Task_CtrlShoot
  - >> Task_CtrlGimbal
  - >> Task_CtrlChassis
  - >> Task_Command
  - >> Task_Cap
  - >> Task_Can
  - >> Task_AttiEsti
  - >> Task_Ai

  osMessageQueueReset (Thumb, 64 bytes, Stack size 24 bytes, cmsis_os2.o(.text.osMessageQueueReset))
  [Stack]

  - Max Depth = 84
  - Call Chain = osMessageQueueReset ⇒ xQueueGenericReset ⇒ xTaskRemoveFromEventList ⇒ vListInsertEnd
  [Calls]
  - >> xQueueGenericReset
  [Called By]
  - >> Task_Referee
  - >> Task_RC
  - >> Task_CtrlShoot
  - >> Task_CtrlGimbal
  - >> Task_CtrlChassis
  - >> Task_Command
  - >> Task_Cap
  - >> Task_Can
  - >> Task_AttiEsti
  - >> Task_Ai

  osThreadFlagsClear (Thumb, 128 bytes, Stack size 32 bytes, cmsis_os2.o(.text.osThreadFlagsClear))
  [Stack]

  - Max Depth = 100
  - Call Chain = osThreadFlagsClear ⇒ xTaskGenericNotify ⇒ vListInsertEnd
  [Calls]
  - >> xTaskGenericNotify
  - >> xTaskGetCurrentTaskHandle
  [Called By]
  - >> Referee_UIRefresh

  osThreadFlagsGet (Thumb, 64 bytes, Stack size 24 bytes, cmsis_os2.o(.text.osThreadFlagsGet))
  [Stack]

  - Max Depth = 92
  - Call Chain = osThreadFlagsGet ⇒ xTaskGenericNotify ⇒ vListInsertEnd
  [Calls]
  - >> xTaskGenericNotify
  - >> xTaskGetCurrentTaskHandle
  [Called By]
  - >> Referee_UIRefresh

  osThreadFlagsSet (Thumb, 164 bytes, Stack size 48 bytes, cmsis_os2.o(.text.osThreadFlagsSet))
  [Stack]

  - Max Depth = 136
  - Call Chain = osThreadFlagsSet ⇒ xTaskGenericNotifyFromISR ⇒ vPortValidateInterruptPriority
  [Calls]
  - >> xTaskGenericNotifyFromISR
  - >> xTaskGenericNotify
  [Called By]
  - >> CDC_Receive_FS
  - >> Ai_RxCpltCallback
  - >> Ai_IdleLineCallback
  - >> Referee_RxCpltCallback
  - >> Referee_AbortRxCpltCallback
  - >> RefereeSlowRefreshTimerCallback
  - >> RefereeFastRefreshTimerCallback
  - >> DR16_RxCpltCallback
  - >> BMI088_RxCpltCallback
  - >> BMI088_GyroIntCallback
  - >> BMI088_AcclIntCallback

  osThreadFlagsWait (Thumb, 282 bytes, Stack size 56 bytes, cmsis_os2.o(.text.osThreadFlagsWait))
  [Stack]

  - Max Depth = 128
  - Call Chain = osThreadFlagsWait ⇒ xTaskNotifyWait ⇒ prvAddCurrentTaskToDelayedList ⇒ vListInsert
  [Calls]
  - >> xTaskGetTickCount
  - >> xTaskNotifyWait
  [Called By]
  - >> AI_WaitDmaCplt
  - >> DR16_WaitDmaCplt
  - >> BMI088_WaitNew
  - >> BMI088_GyroWaitDmaCplt
  - >> BMI088_AcclWaitDmaCplt
  - >> Task_Referee
  - >> Task_CLI

  osThreadGetId (Thumb, 16 bytes, Stack size 16 bytes, cmsis_os2.o(.text.osThreadGetId))
  [Stack]

  - Max Depth = 20
  - Call Chain = osThreadGetId ⇒ xTaskGetCurrentTaskHandle
  [Calls]
  - >> xTaskGetCurrentTaskHandle
  [Called By]
  - >> Task_Init
  - >> StartDefaultTask
  - >> AI_Init
  - >> Referee_Init
  - >> DR16_Init
  - >> CAN_Init
  - >> BMI088_Init
  - >> Task_Referee
  - >> Task_RC
  - >> Task_Monitor
  - >> Task_Info
  - >> Task_CtrlShoot
  - >> Task_CtrlGimbal
  - >> Task_CtrlChassis
  - >> Task_Command
  - >> Task_CLI
  - >> Task_Cap
  - >> Task_Can
  - >> Task_AttiEsti
  - >> Task_Ai

  osThreadGetStackSpace (Thumb, 52 bytes, Stack size 24 bytes, cmsis_os2.o(.text.osThreadGetStackSpace))
  [Stack]

  - Max Depth = 64
  - Call Chain = osThreadGetStackSpace ⇒ uxTaskGetStackHighWaterMark ⇒ prvTaskCheckFreeStackSpace
  [Calls]
  - >> uxTaskGetStackHighWaterMark
  [Called By]
  - >> Task_Referee
  - >> Task_RC
  - >> Task_Monitor
  - >> Task_Info
  - >> Task_CtrlShoot
  - >> Task_CtrlGimbal
  - >> Task_CtrlChassis
  - >> Task_Command
  - >> Task_CLI
  - >> Task_Cap
  - >> Task_Can
  - >> Task_AttiEsti
  - >> Task_Ai

  osThreadNew (Thumb, 346 bytes, Stack size 72 bytes, cmsis_os2.o(.text.osThreadNew))
  [Stack]

  - Max Depth = 252
  - Call Chain = osThreadNew ⇒ xTaskCreate ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> xTaskCreateStatic
  - >> xTaskCreate
  [Called By]
  - >> Task_Init
  - >> MX_FREERTOS_Init

  osThreadResume (Thumb, 64 bytes, Stack size 24 bytes, cmsis_os2.o(.text.osThreadResume))
  [Stack]

  - Max Depth = 64
  - Call Chain = osThreadResume ⇒ vTaskResume ⇒ prvTaskIsTaskSuspended
  [Calls]
  - >> vTaskResume
  [Called By]
  - >> Command_SetMechZero
  - >> Command_SetGimbalLim
  - >> Command_CaliGyro

  osThreadSuspend (Thumb, 64 bytes, Stack size 24 bytes, cmsis_os2.o(.text.osThreadSuspend))
  [Stack]

  - Max Depth = 88
  - Call Chain = osThreadSuspend ⇒ vTaskSuspend ⇒ vTaskSwitchContext ⇒ vApplicationStackOverflowHook
  [Calls]
  - >> vTaskSuspend
  [Called By]
  - >> Command_SetMechZero
  - >> Command_SetGimbalLim
  - >> Command_CaliGyro

  osThreadTerminate (Thumb, 94 bytes, Stack size 32 bytes, cmsis_os2.o(.text.osThreadTerminate))
  [Stack]

  - Max Depth = 172
  - Call Chain = osThreadTerminate ⇒ vTaskDelete ⇒ prvDeleteTCB ⇒ vPortFree ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> vTaskDelete
  - >> eTaskGetState
  [Called By]
  - >> Task_Init
  - >> StartDefaultTask

  osTimerNew (Thumb, 290 bytes, Stack size 56 bytes, cmsis_os2.o(.text.osTimerNew))
  [Stack]

  - Max Depth = 316
  - Call Chain = osTimerNew ⇒ xTimerCreateStatic ⇒ prvInitialiseNewTimer ⇒ prvCheckForValidListAndQueue ⇒ xQueueGenericCreateStatic ⇒ prvInitialiseNewQueue ⇒ xQueueGenericReset ⇒ xTaskRemoveFromEventList ⇒ vListInsertEnd
  [Calls]
  - >> xTimerCreateStatic
  - >> xTimerCreate
  - >> vPortFree
  - >> pvPortMalloc
  [Called By]
  - >> Referee_Init

  osTimerStart (Thumb, 92 bytes, Stack size 32 bytes, cmsis_os2.o(.text.osTimerStart))
  [Stack]

  - Max Depth = 236
  - Call Chain = osTimerStart ⇒ xTimerGenericCommand ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit ⇒ vListInsertEnd
  [Calls]
  - >> xTimerGenericCommand
  [Called By]
  - >> Referee_Init

  pvPortMalloc (Thumb, 530 bytes, Stack size 48 bytes, heap_4.o(.text.pvPortMalloc))
  [Stack]

  - Max Depth = 116
  - Call Chain = pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> prvInsertBlockIntoFreeList
  - >> prvHeapInit
  - >> xTaskResumeAll
  - >> vTaskSuspendAll
  [Called By]
  - >> osTimerNew
  - >> xTimerCreate
  - >> xTaskCreate
  - >> vTaskList
  - >> vTaskGetRunTimeStats
  - >> xQueueGenericCreate
  - >> FreeRTOS_CLIRegisterCommand
  - >> BSP_Malloc

  pvTimerGetTimerID (Thumb, 58 bytes, Stack size 24 bytes, timers.o(.text.pvTimerGetTimerID))
  [Stack]

  - Max Depth = 32
  - Call Chain = pvTimerGetTimerID ⇒ vPortExitCritical
  [Calls]
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> TimerCallback

  pxPortInitialiseStack (Thumb, 94 bytes, Stack size 12 bytes, port.o(.text.pxPortInitialiseStack))
  [Stack]

  - Max Depth = 12
  - Call Chain = pxPortInitialiseStack
  [Called By]
  - >> prvInitialiseNewTask

  uxListRemove (Thumb, 72 bytes, Stack size 8 bytes, list.o(.text.uxListRemove))
  [Stack]

  - Max Depth = 8
  - Call Chain = uxListRemove
  [Called By]
  - >> prvSwitchTimerLists
  - >> prvProcessReceivedCommands
  - >> prvProcessExpiredTimer
  - >> xTaskIncrementTick
  - >> vTaskSuspend
  - >> vTaskResume
  - >> vTaskDelete
  - >> prvCheckTasksWaitingTermination
  - >> prvAddCurrentTaskToDelayedList
  - >> xTaskGenericNotifyFromISR
  - >> xTaskGenericNotify
  - >> xTaskRemoveFromEventList
  - >> xTaskPriorityDisinherit
  - >> xTaskResumeAll

  uxTaskGetStackHighWaterMark (Thumb, 56 bytes, Stack size 32 bytes, tasks.o(.text.uxTaskGetStackHighWaterMark))
  [Stack]

  - Max Depth = 40
  - Call Chain = uxTaskGetStackHighWaterMark ⇒ prvTaskCheckFreeStackSpace
  [Calls]
  - >> prvTaskCheckFreeStackSpace
  [Called By]
  - >> osThreadGetStackSpace

  uxTaskGetSystemState (Thumb, 274 bytes, Stack size 32 bytes, tasks.o(.text.uxTaskGetSystemState))
  [Stack]

  - Max Depth = 172
  - Call Chain = uxTaskGetSystemState ⇒ prvListTasksWithinSingleList ⇒ vTaskGetInfo ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> getRunTimeCounterValue
  - >> prvListTasksWithinSingleList
  - >> xTaskResumeAll
  - >> vTaskSuspendAll
  [Called By]
  - >> vTaskList
  - >> vTaskGetRunTimeStats

  vApplicationGetIdleTaskMemory (Thumb, 42 bytes, Stack size 12 bytes, cmsis_os2.o(.text.vApplicationGetIdleTaskMemory))
  [Stack]

  - Max Depth = 12
  - Call Chain = vApplicationGetIdleTaskMemory
  [Called By]
  - >> vTaskStartScheduler

  vApplicationGetTimerTaskMemory (Thumb, 44 bytes, Stack size 12 bytes, cmsis_os2.o(.text.vApplicationGetTimerTaskMemory))
  [Stack]

  - Max Depth = 12
  - Call Chain = vApplicationGetTimerTaskMemory
  [Called By]
  - >> xTimerCreateTimerTask

  vApplicationStackOverflowHook (Thumb, 12 bytes, Stack size 8 bytes, freertos.o(.text.vApplicationStackOverflowHook))
  [Stack]

  - Max Depth = 8
  - Call Chain = vApplicationStackOverflowHook
  [Called By]
  - >> vTaskSwitchContext

  vListInitialise (Thumb, 46 bytes, Stack size 4 bytes, list.o(.text.vListInitialise))
  [Stack]

  - Max Depth = 4
  - Call Chain = vListInitialise
  [Called By]
  - >> prvCheckForValidListAndQueue
  - >> prvInitialiseTaskLists
  - >> xQueueGenericReset

  vListInitialiseItem (Thumb, 14 bytes, Stack size 4 bytes, list.o(.text.vListInitialiseItem))
  [Stack]

  - Max Depth = 4
  - Call Chain = vListInitialiseItem
  [Called By]
  - >> prvInitialiseNewTimer
  - >> prvInitialiseNewTask

  vListInsert (Thumb, 106 bytes, Stack size 16 bytes, list.o(.text.vListInsert))
  [Stack]

  - Max Depth = 16
  - Call Chain = vListInsert
  [Called By]
  - >> prvSwitchTimerLists
  - >> prvInsertTimerInActiveList
  - >> prvAddCurrentTaskToDelayedList
  - >> vTaskPlaceOnEventList

  vListInsertEnd (Thumb, 58 bytes, Stack size 12 bytes, list.o(.text.vListInsertEnd))
  [Stack]

  - Max Depth = 12
  - Call Chain = vListInsertEnd
  [Called By]
  - >> xTaskIncrementTick
  - >> vTaskSuspend
  - >> vTaskResume
  - >> vTaskDelete
  - >> prvAddNewTaskToReadyList
  - >> prvAddCurrentTaskToDelayedList
  - >> xTaskGenericNotifyFromISR
  - >> xTaskGenericNotify
  - >> xTaskRemoveFromEventList
  - >> xTaskPriorityDisinherit
  - >> vTaskPlaceOnEventListRestricted
  - >> xTaskResumeAll

  vPortEnterCritical (Thumb, 86 bytes, Stack size 8 bytes, port.o(.text.vPortEnterCritical))
  [Stack]

  - Max Depth = 8
  - Call Chain = vPortEnterCritical
  [Called By]
  - >> vPortGetHeapStats
  - >> pvTimerGetTimerID
  - >> prvCheckForValidListAndQueue
  - >> vTaskSuspend
  - >> vTaskResume
  - >> vTaskDelete
  - >> eTaskGetState
  - >> prvCheckTasksWaitingTermination
  - >> prvAddNewTaskToReadyList
  - >> xTaskNotifyWait
  - >> xTaskGenericNotify
  - >> xTaskCheckForTimeOut
  - >> xQueueReceive
  - >> xQueueGenericSend
  - >> xQueueGenericReset
  - >> vQueueWaitForMessageRestricted
  - >> prvUnlockQueue
  - >> prvIsQueueFull
  - >> prvIsQueueEmpty
  - >> xTaskResumeAll
  - >> FreeRTOS_CLIRegisterCommand

  vPortExitCritical (Thumb, 74 bytes, Stack size 8 bytes, port.o(.text.vPortExitCritical))
  [Stack]

  - Max Depth = 8
  - Call Chain = vPortExitCritical
  [Called By]
  - >> vPortGetHeapStats
  - >> pvTimerGetTimerID
  - >> prvCheckForValidListAndQueue
  - >> vTaskSuspend
  - >> vTaskResume
  - >> vTaskDelete
  - >> eTaskGetState
  - >> prvCheckTasksWaitingTermination
  - >> prvAddNewTaskToReadyList
  - >> xTaskNotifyWait
  - >> xTaskGenericNotify
  - >> xTaskCheckForTimeOut
  - >> xQueueReceive
  - >> xQueueGenericSend
  - >> xQueueGenericReset
  - >> vQueueWaitForMessageRestricted
  - >> prvUnlockQueue
  - >> prvIsQueueFull
  - >> prvIsQueueEmpty
  - >> xTaskResumeAll
  - >> FreeRTOS_CLIRegisterCommand

  vPortFree (Thumb, 206 bytes, Stack size 32 bytes, heap_4.o(.text.vPortFree))
  [Stack]

  - Max Depth = 100
  - Call Chain = vPortFree ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> prvInsertBlockIntoFreeList
  - >> xTaskResumeAll
  - >> vTaskSuspendAll
  [Called By]
  - >> osTimerNew
  - >> prvProcessReceivedCommands
  - >> xTaskCreate
  - >> vTaskList
  - >> vTaskGetRunTimeStats
  - >> prvDeleteTCB
  - >> BSP_Free

  vPortGetHeapStats (Thumb, 206 bytes, Stack size 32 bytes, heap_4.o(.text.vPortGetHeapStats))
  [Stack]

  - Max Depth = 100
  - Call Chain = vPortGetHeapStats ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> xTaskResumeAll
  - >> vTaskSuspendAll
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> Command_Stats

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

  - >> xPortStartScheduler

  vPortValidateInterruptPriority (Thumb, 132 bytes, Stack size 16 bytes, port.o(.text.vPortValidateInterruptPriority))
  [Stack]

  - Max Depth = 16
  - Call Chain = vPortValidateInterruptPriority
  [Called By]
  - >> xTaskGetTickCountFromISR
  - >> xTaskGenericNotifyFromISR
  - >> xQueueReceiveFromISR
  - >> xQueueGenericSendFromISR

  vQueueAddToRegistry (Thumb, 82 bytes, Stack size 12 bytes, queue.o(.text.vQueueAddToRegistry))
  [Stack]

  - Max Depth = 12
  - Call Chain = vQueueAddToRegistry
  [Called By]
  - >> osMessageQueueNew
  - >> prvCheckForValidListAndQueue

  vQueueWaitForMessageRestricted (Thumb, 100 bytes, Stack size 24 bytes, queue.o(.text.vQueueWaitForMessageRestricted))
  [Stack]

  - Max Depth = 88
  - Call Chain = vQueueWaitForMessageRestricted ⇒ vTaskPlaceOnEventListRestricted ⇒ prvAddCurrentTaskToDelayedList ⇒ vListInsert
  [Calls]
  - >> vTaskPlaceOnEventListRestricted
  - >> prvUnlockQueue
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> prvProcessTimerOrBlockTask

  vTaskDelay (Thumb, 110 bytes, Stack size 24 bytes, tasks.o(.text.vTaskDelay))
  [Stack]

  - Max Depth = 92
  - Call Chain = vTaskDelay ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> prvAddCurrentTaskToDelayedList
  - >> xTaskResumeAll
  - >> vTaskSuspendAll
  [Called By]
  - >> osDelay

  vTaskDelayUntil (Thumb, 276 bytes, Stack size 48 bytes, tasks.o(.text.vTaskDelayUntil))
  [Stack]

  - Max Depth = 116
  - Call Chain = vTaskDelayUntil ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> prvAddCurrentTaskToDelayedList
  - >> xTaskResumeAll
  - >> vTaskSuspendAll
  [Called By]
  - >> osDelayUntil

  vTaskDelete (Thumb, 270 bytes, Stack size 24 bytes, tasks.o(.text.vTaskDelete))
  [Stack]

  - Max Depth = 140
  - Call Chain = vTaskDelete ⇒ prvDeleteTCB ⇒ vPortFree ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> prvResetNextTaskUnblockTime
  - >> prvDeleteTCB
  - >> vListInsertEnd
  - >> uxListRemove
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> osThreadTerminate

  vTaskGetInfo (Thumb, 226 bytes, Stack size 32 bytes, tasks.o(.text.vTaskGetInfo))
  [Stack]

  - Max Depth = 100
  - Call Chain = vTaskGetInfo ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> eTaskGetState
  - >> prvTaskCheckFreeStackSpace
  - >> xTaskResumeAll
  - >> vTaskSuspendAll
  [Called By]
  - >> prvListTasksWithinSingleList

  vTaskGetRunTimeStats (Thumb, 254 bytes, Stack size 32 bytes, tasks.o(.text.vTaskGetRunTimeStats))
  [Stack]

  - Max Depth = 204
  - Call Chain = vTaskGetRunTimeStats ⇒ uxTaskGetSystemState ⇒ prvListTasksWithinSingleList ⇒ vTaskGetInfo ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> uxTaskGetSystemState
  - >> prvWriteNameToBuffer
  - >> vPortFree
  - >> pvPortMalloc
  - >> sprintf
  - >> strlen
  [Called By]
  - >> Command_Stats

  vTaskInternalSetTimeOutState (Thumb, 36 bytes, Stack size 4 bytes, tasks.o(.text.vTaskInternalSetTimeOutState))
  [Stack]

  - Max Depth = 4
  - Call Chain = vTaskInternalSetTimeOutState
  [Called By]
  - >> xTaskCheckForTimeOut
  - >> xQueueReceive
  - >> xQueueGenericSend

  vTaskList (Thumb, 270 bytes, Stack size 48 bytes, tasks.o(.text.vTaskList))
  [Stack]

  - Max Depth = 220
  - Call Chain = vTaskList ⇒ uxTaskGetSystemState ⇒ prvListTasksWithinSingleList ⇒ vTaskGetInfo ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> uxTaskGetSystemState
  - >> prvWriteNameToBuffer
  - >> vPortFree
  - >> pvPortMalloc
  - >> sprintf
  - >> strlen
  [Called By]
  - >> Command_Stats

  vTaskMissedYield (Thumb, 14 bytes, Stack size 0 bytes, tasks.o(.text.vTaskMissedYield))
  [Called By]

  - >> prvUnlockQueue

  vTaskPlaceOnEventList (Thumb, 66 bytes, Stack size 24 bytes, tasks.o(.text.vTaskPlaceOnEventList))
  [Stack]

  - Max Depth = 64
  - Call Chain = vTaskPlaceOnEventList ⇒ prvAddCurrentTaskToDelayedList ⇒ vListInsert
  [Calls]
  - >> prvAddCurrentTaskToDelayedList
  - >> vListInsert
  [Called By]
  - >> xQueueReceive
  - >> xQueueGenericSend

  vTaskPlaceOnEventListRestricted (Thumb, 82 bytes, Stack size 24 bytes, tasks.o(.text.vTaskPlaceOnEventListRestricted))
  [Stack]

  - Max Depth = 64
  - Call Chain = vTaskPlaceOnEventListRestricted ⇒ prvAddCurrentTaskToDelayedList ⇒ vListInsert
  [Calls]
  - >> prvAddCurrentTaskToDelayedList
  - >> vListInsertEnd
  [Called By]
  - >> vQueueWaitForMessageRestricted

  vTaskResume (Thumb, 214 bytes, Stack size 24 bytes, tasks.o(.text.vTaskResume))
  [Stack]

  - Max Depth = 40
  - Call Chain = vTaskResume ⇒ prvTaskIsTaskSuspended
  [Calls]
  - >> prvTaskIsTaskSuspended
  - >> vListInsertEnd
  - >> uxListRemove
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> osThreadResume

  vTaskStartScheduler (Thumb, 228 bytes, Stack size 48 bytes, tasks.o(.text.vTaskStartScheduler))
  [Stack]

  - Max Depth = 276
  - Call Chain = vTaskStartScheduler ⇒ xTimerCreateTimerTask ⇒ prvCheckForValidListAndQueue ⇒ xQueueGenericCreateStatic ⇒ prvInitialiseNewQueue ⇒ xQueueGenericReset ⇒ xTaskRemoveFromEventList ⇒ vListInsertEnd
  [Calls]
  - >> configureTimerForRunTimeStats
  - >> xTimerCreateTimerTask
  - >> xTaskCreateStatic
  - >> xPortStartScheduler
  - >> vApplicationGetIdleTaskMemory
  [Called By]
  - >> osKernelStart

  vTaskSuspend (Thumb, 296 bytes, Stack size 24 bytes, tasks.o(.text.vTaskSuspend))
  [Stack]

  - Max Depth = 64
  - Call Chain = vTaskSuspend ⇒ vTaskSwitchContext ⇒ vApplicationStackOverflowHook
  [Calls]
  - >> vTaskSwitchContext
  - >> prvResetNextTaskUnblockTime
  - >> vListInsertEnd
  - >> uxListRemove
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> osThreadSuspend

  vTaskSuspendAll (Thumb, 16 bytes, Stack size 0 bytes, tasks.o(.text.vTaskSuspendAll))
  [Called By]

  - >> vPortGetHeapStats
  - >> osKernelLock
  - >> prvProcessTimerOrBlockTask
  - >> vTaskGetInfo
  - >> vTaskDelayUntil
  - >> vTaskDelay
  - >> uxTaskGetSystemState
  - >> xQueueReceive
  - >> xQueueGenericSend
  - >> vPortFree
  - >> pvPortMalloc

  vTaskSwitchContext (Thumb, 384 bytes, Stack size 32 bytes, tasks.o(.text.vTaskSwitchContext))
  [Stack]

  - Max Depth = 40
  - Call Chain = vTaskSwitchContext ⇒ vApplicationStackOverflowHook
  [Calls]
  - >> vApplicationStackOverflowHook
  - >> getRunTimeCounterValue
  [Called By]
  - >> PendSV_Handler
  - >> xPortStartScheduler
  - >> vTaskSuspend

  xPortStartScheduler (Thumb, 342 bytes, Stack size 40 bytes, port.o(.text.xPortStartScheduler))
  [Stack]

  - Max Depth = 80
  - Call Chain = xPortStartScheduler ⇒ vTaskSwitchContext ⇒ vApplicationStackOverflowHook
  [Calls]
  - >> vPortSetupTimerInterrupt
  - >> vPortEnableVFP
  - >> prvTaskExitError
  - >> prvPortStartFirstTask
  - >> vTaskSwitchContext
  [Called By]
  - >> vTaskStartScheduler

  xPortSysTickHandler (Thumb, 60 bytes, Stack size 16 bytes, port.o(.text.xPortSysTickHandler))
  [Stack]

  - Max Depth = 60
  - Call Chain = xPortSysTickHandler ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> xTaskIncrementTick
  [Called By]
  - >> SysTick_Handler

  xQueueGenericCreate (Thumb, 116 bytes, Stack size 40 bytes, queue.o(.text.xQueueGenericCreate))
  [Stack]

  - Max Depth = 156
  - Call Chain = xQueueGenericCreate ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> prvInitialiseNewQueue
  - >> pvPortMalloc
  [Called By]
  - >> osMessageQueueNew

  xQueueGenericCreateStatic (Thumb, 270 bytes, Stack size 72 bytes, queue.o(.text.xQueueGenericCreateStatic))
  [Stack]

  - Max Depth = 156
  - Call Chain = xQueueGenericCreateStatic ⇒ prvInitialiseNewQueue ⇒ xQueueGenericReset ⇒ xTaskRemoveFromEventList ⇒ vListInsertEnd
  [Calls]
  - >> prvInitialiseNewQueue
  [Called By]
  - >> osMessageQueueNew
  - >> prvCheckForValidListAndQueue

  xQueueGenericReset (Thumb, 186 bytes, Stack size 24 bytes, queue.o(.text.xQueueGenericReset))
  [Stack]

  - Max Depth = 60
  - Call Chain = xQueueGenericReset ⇒ xTaskRemoveFromEventList ⇒ vListInsertEnd
  [Calls]
  - >> xTaskRemoveFromEventList
  - >> vPortExitCritical
  - >> vPortEnterCritical
  - >> vListInitialise
  [Called By]
  - >> osMessageQueueReset
  - >> prvInitialiseNewQueue

  xQueueGenericSend (Thumb, 556 bytes, Stack size 80 bytes, queue.o(.text.xQueueGenericSend))
  [Stack]

  - Max Depth = 156
  - Call Chain = xQueueGenericSend ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit ⇒ vListInsertEnd
  [Calls]
  - >> xTaskGetSchedulerState
  - >> xTaskRemoveFromEventList
  - >> xTaskCheckForTimeOut
  - >> vTaskPlaceOnEventList
  - >> vTaskInternalSetTimeOutState
  - >> prvUnlockQueue
  - >> prvIsQueueFull
  - >> prvCopyDataToQueue
  - >> xTaskResumeAll
  - >> vTaskSuspendAll
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> osMessageQueuePut
  - >> xTimerGenericCommand

  xQueueGenericSendFromISR (Thumb, 332 bytes, Stack size 80 bytes, queue.o(.text.xQueueGenericSendFromISR))
  [Stack]

  - Max Depth = 156
  - Call Chain = xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit ⇒ vListInsertEnd
  [Calls]
  - >> xTaskRemoveFromEventList
  - >> vPortValidateInterruptPriority
  - >> prvCopyDataToQueue
  [Called By]
  - >> osMessageQueuePut
  - >> xTimerGenericCommand

  xQueueReceive (Thumb, 476 bytes, Stack size 64 bytes, queue.o(.text.xQueueReceive))
  [Stack]

  - Max Depth = 132
  - Call Chain = xQueueReceive ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> xTaskGetSchedulerState
  - >> xTaskRemoveFromEventList
  - >> xTaskCheckForTimeOut
  - >> vTaskPlaceOnEventList
  - >> vTaskInternalSetTimeOutState
  - >> prvUnlockQueue
  - >> prvIsQueueEmpty
  - >> prvCopyDataFromQueue
  - >> xTaskResumeAll
  - >> vTaskSuspendAll
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> osMessageQueueGet
  - >> prvProcessReceivedCommands

  xQueueReceiveFromISR (Thumb, 264 bytes, Stack size 64 bytes, queue.o(.text.xQueueReceiveFromISR))
  [Stack]

  - Max Depth = 100
  - Call Chain = xQueueReceiveFromISR ⇒ xTaskRemoveFromEventList ⇒ vListInsertEnd
  [Calls]
  - >> xTaskRemoveFromEventList
  - >> vPortValidateInterruptPriority
  - >> prvCopyDataFromQueue
  [Called By]
  - >> osMessageQueueGet

  xTaskCheckForTimeOut (Thumb, 246 bytes, Stack size 40 bytes, tasks.o(.text.xTaskCheckForTimeOut))
  [Stack]

  - Max Depth = 48
  - Call Chain = xTaskCheckForTimeOut ⇒ vPortExitCritical
  [Calls]
  - >> vTaskInternalSetTimeOutState
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> xQueueReceive
  - >> xQueueGenericSend

  xTaskCreate (Thumb, 158 bytes, Stack size 64 bytes, tasks.o(.text.xTaskCreate))
  [Stack]

  - Max Depth = 180
  - Call Chain = xTaskCreate ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> prvInitialiseNewTask
  - >> prvAddNewTaskToReadyList
  - >> vPortFree
  - >> pvPortMalloc
  [Called By]
  - >> osThreadNew

  xTaskCreateStatic (Thumb, 206 bytes, Stack size 72 bytes, tasks.o(.text.xTaskCreateStatic))
  [Stack]

  - Max Depth = 124
  - Call Chain = xTaskCreateStatic ⇒ prvInitialiseNewTask ⇒ pxPortInitialiseStack
  [Calls]
  - >> prvInitialiseNewTask
  - >> prvAddNewTaskToReadyList
  [Called By]
  - >> osThreadNew
  - >> xTimerCreateTimerTask
  - >> vTaskStartScheduler

  xTaskGenericNotify (Thumb, 376 bytes, Stack size 56 bytes, tasks.o(.text.xTaskGenericNotify))
  [Stack]

  - Max Depth = 68
  - Call Chain = xTaskGenericNotify ⇒ vListInsertEnd
  [Calls]
  - >> vListInsertEnd
  - >> uxListRemove
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> osThreadFlagsSet
  - >> osThreadFlagsGet
  - >> osThreadFlagsClear

  xTaskGenericNotifyFromISR (Thumb, 452 bytes, Stack size 72 bytes, tasks.o(.text.xTaskGenericNotifyFromISR))
  [Stack]

  - Max Depth = 88
  - Call Chain = xTaskGenericNotifyFromISR ⇒ vPortValidateInterruptPriority
  [Calls]
  - >> vPortValidateInterruptPriority
  - >> vListInsertEnd
  - >> uxListRemove
  [Called By]
  - >> osThreadFlagsSet

  xTaskGetCurrentTaskHandle (Thumb, 20 bytes, Stack size 4 bytes, tasks.o(.text.xTaskGetCurrentTaskHandle))
  [Stack]

  - Max Depth = 4
  - Call Chain = xTaskGetCurrentTaskHandle
  [Called By]
  - >> osThreadGetId
  - >> osThreadFlagsGet
  - >> osThreadFlagsClear

  xTaskGetSchedulerState (Thumb, 56 bytes, Stack size 4 bytes, tasks.o(.text.xTaskGetSchedulerState))
  [Stack]

  - Max Depth = 4
  - Call Chain = xTaskGetSchedulerState
  [Called By]
  - >> SysTick_Handler
  - >> osKernelUnlock
  - >> osKernelLock
  - >> osKernelGetState
  - >> xTimerGenericCommand
  - >> xQueueReceive
  - >> xQueueGenericSend

  xTaskGetTickCount (Thumb, 20 bytes, Stack size 4 bytes, tasks.o(.text.xTaskGetTickCount))
  [Stack]

  - Max Depth = 4
  - Call Chain = xTaskGetTickCount
  [Called By]
  - >> osThreadFlagsWait
  - >> osKernelGetTickCount
  - >> osDelayUntil
  - >> prvSampleTimeNow

  xTaskGetTickCountFromISR (Thumb, 30 bytes, Stack size 16 bytes, tasks.o(.text.xTaskGetTickCountFromISR))
  [Stack]

  - Max Depth = 32
  - Call Chain = xTaskGetTickCountFromISR ⇒ vPortValidateInterruptPriority
  [Calls]
  - >> vPortValidateInterruptPriority
  [Called By]
  - >> osKernelGetTickCount

  xTaskIncrementTick (Thumb, 452 bytes, Stack size 32 bytes, tasks.o(.text.xTaskIncrementTick))
  [Stack]

  - Max Depth = 44
  - Call Chain = xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> prvResetNextTaskUnblockTime
  - >> vListInsertEnd
  - >> uxListRemove
  [Called By]
  - >> xPortSysTickHandler
  - >> xTaskResumeAll

  xTaskNotifyWait (Thumb, 214 bytes, Stack size 32 bytes, tasks.o(.text.xTaskNotifyWait))
  [Stack]

  - Max Depth = 72
  - Call Chain = xTaskNotifyWait ⇒ prvAddCurrentTaskToDelayedList ⇒ vListInsert
  [Calls]
  - >> prvAddCurrentTaskToDelayedList
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> osThreadFlagsWait

  xTaskPriorityDisinherit (Thumb, 236 bytes, Stack size 32 bytes, tasks.o(.text.xTaskPriorityDisinherit))
  [Stack]

  - Max Depth = 44
  - Call Chain = xTaskPriorityDisinherit ⇒ vListInsertEnd
  [Calls]
  - >> vListInsertEnd
  - >> uxListRemove
  [Called By]
  - >> prvCopyDataToQueue

  xTaskRemoveFromEventList (Thumb, 206 bytes, Stack size 24 bytes, tasks.o(.text.xTaskRemoveFromEventList))
  [Stack]

  - Max Depth = 36
  - Call Chain = xTaskRemoveFromEventList ⇒ vListInsertEnd
  [Calls]
  - >> vListInsertEnd
  - >> uxListRemove
  [Called By]
  - >> xQueueReceiveFromISR
  - >> xQueueReceive
  - >> xQueueGenericSendFromISR
  - >> xQueueGenericSend
  - >> xQueueGenericReset
  - >> prvUnlockQueue

  xTaskResumeAll (Thumb, 390 bytes, Stack size 24 bytes, tasks.o(.text.xTaskResumeAll))
  [Stack]

  - Max Depth = 68
  - Call Chain = xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> xTaskIncrementTick
  - >> prvResetNextTaskUnblockTime
  - >> vListInsertEnd
  - >> uxListRemove
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> vPortGetHeapStats
  - >> osKernelUnlock
  - >> prvProcessTimerOrBlockTask
  - >> vTaskGetInfo
  - >> vTaskDelayUntil
  - >> vTaskDelay
  - >> uxTaskGetSystemState
  - >> xQueueReceive
  - >> xQueueGenericSend
  - >> vPortFree
  - >> pvPortMalloc

  xTimerCreate (Thumb, 74 bytes, Stack size 40 bytes, timers.o(.text.xTimerCreate))
  [Stack]

  - Max Depth = 252
  - Call Chain = xTimerCreate ⇒ prvInitialiseNewTimer ⇒ prvCheckForValidListAndQueue ⇒ xQueueGenericCreateStatic ⇒ prvInitialiseNewQueue ⇒ xQueueGenericReset ⇒ xTaskRemoveFromEventList ⇒ vListInsertEnd
  [Calls]
  - >> prvInitialiseNewTimer
  - >> pvPortMalloc
  [Called By]
  - >> osTimerNew

  xTimerCreateStatic (Thumb, 138 bytes, Stack size 48 bytes, timers.o(.text.xTimerCreateStatic))
  [Stack]

  - Max Depth = 260
  - Call Chain = xTimerCreateStatic ⇒ prvInitialiseNewTimer ⇒ prvCheckForValidListAndQueue ⇒ xQueueGenericCreateStatic ⇒ prvInitialiseNewQueue ⇒ xQueueGenericReset ⇒ xTaskRemoveFromEventList ⇒ vListInsertEnd
  [Calls]
  - >> prvInitialiseNewTimer
  [Called By]
  - >> osTimerNew

  xTimerCreateTimerTask (Thumb, 148 bytes, Stack size 48 bytes, timers.o(.text.xTimerCreateTimerTask))
  [Stack]

  - Max Depth = 228
  - Call Chain = xTimerCreateTimerTask ⇒ prvCheckForValidListAndQueue ⇒ xQueueGenericCreateStatic ⇒ prvInitialiseNewQueue ⇒ xQueueGenericReset ⇒ xTaskRemoveFromEventList ⇒ vListInsertEnd
  [Calls]
  - >> vApplicationGetTimerTaskMemory
  - >> prvCheckForValidListAndQueue
  - >> xTaskCreateStatic
  [Called By]
  - >> vTaskStartScheduler

  xTimerGenericCommand (Thumb, 176 bytes, Stack size 48 bytes, timers.o(.text.xTimerGenericCommand))
  [Stack]

  - Max Depth = 204
  - Call Chain = xTimerGenericCommand ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit ⇒ vListInsertEnd
  [Calls]
  - >> xTaskGetSchedulerState
  - >> xQueueGenericSendFromISR
  - >> xQueueGenericSend
  [Called By]
  - >> osTimerStart
  - >> prvSwitchTimerLists
  - >> prvProcessReceivedCommands
  - >> prvProcessExpiredTimer

  __0snprintf (Thumb, 48 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED)
  [Calls]

  - >> _printf_core

  __1snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED)

  __2snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED)

  __c89snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED)

  snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf))
  [Stack]

  - Max Depth = 40
  - Call Chain = snprintf
  [Called By]
  - >> UI_DrawRectangle
  - >> UI_DrawLine
  - >> UI_DrawCycle
  - >> UI_DrawCharacter
  - >> UI_DrawArc
  - >> Command_Stats
  - >> Command_SetMechZero
  - >> Command_SetGimbalLim
  - >> Command_Endian
  - >> Command_Config
  - >> Command_CaliGyro

  __0sprintf (Thumb, 34 bytes, Stack size 24 bytes, printfa.o(i.__0sprintf), UNUSED)
  [Calls]

  - >> _sputc
  - >> _printf_core

  __1sprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0sprintf), UNUSED)

  __2sprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0sprintf), UNUSED)

  __c89sprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0sprintf), UNUSED)

  sprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0sprintf))
  [Stack]

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

  __0vsnprintf (Thumb, 46 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED)
  [Calls]

  - >> _printf_core

  __1vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED)

  __2vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED)

  __c89vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED)

  vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf))
  [Stack]

  - Max Depth = 24
  - Call Chain = vsnprintf
  [Called By]
  - >> BSP_USB_Printf

  __ARM_fpclassify (Thumb, 48 bytes, Stack size 8 bytes, fpclassify.o(i.__ARM_fpclassify))
  [Stack]

  - Max Depth = 8
  - Call Chain = __ARM_fpclassify
  [Called By]
  - >> __kernel_sin
  - >> __hardfp_atan

  __ARM_fpclassifyf (Thumb, 38 bytes, Stack size 0 bytes, fpclassifyf.o(i.__ARM_fpclassifyf))
  [Called By]

  - >> __hardfp_tanf
  - >> __hardfp_sinf
  - >> __hardfp_atan2f
  - >> __hardfp_asinf

  __hardfp_asinf (Thumb, 258 bytes, Stack size 16 bytes, asinf.o(i.__hardfp_asinf))
  [Stack]

  - Max Depth = 32
  - Call Chain = __hardfp_asinf ⇒ sqrtf
  [Calls]
  - >> __set_errno
  - >> sqrtf
  - >> __mathlib_flt_underflow
  - >> __mathlib_flt_invalid
  - >> __mathlib_flt_infnan
  - >> __ARM_fpclassifyf
  [Called By]
  - >> AHRS_GetEulr

  __hardfp_atan (Thumb, 622 bytes, Stack size 48 bytes, atan.o(i.__hardfp_atan))
  [Stack]

  - Max Depth = 160
  - Call Chain = __hardfp_atan ⇒ __kernel_poly ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_dmul
  - >> __aeabi_dadd
  - >> __kernel_poly
  - >> __ARM_fpclassify
  - >> fabs
  - >> __mathlib_dbl_underflow
  - >> __mathlib_dbl_infnan
  - >> __aeabi_dsub
  - >> __aeabi_drsub
  - >> __aeabi_ddiv
  [Called By]
  - >> atan

  __hardfp_atan2 (Thumb, 448 bytes, Stack size 56 bytes, atan2.o(i.__hardfp_atan2))
  [Stack]

  - Max Depth = 224
  - Call Chain = __hardfp_atan2 ⇒ atan ⇒ __hardfp_atan ⇒ __kernel_poly ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __set_errno
  - >> fabs
  - >> __mathlib_dbl_infnan2
  - >> atan
  - >> __aeabi_dsub
  - >> __aeabi_drsub
  - >> __aeabi_ddiv
  - >> __aeabi_cdcmpeq
  [Called By]
  - >> AHRS_Init

  __hardfp_atan2f (Thumb, 594 bytes, Stack size 32 bytes, atan2f.o(i.__hardfp_atan2f))
  [Stack]

  - Max Depth = 32
  - Call Chain = __hardfp_atan2f
  [Calls]
  - >> __set_errno
  - >> __mathlib_flt_underflow
  - >> __mathlib_flt_infnan2
  - >> __ARM_fpclassifyf
  [Called By]
  - >> AHRS_GetEulr

  __hardfp_cos (Thumb, 180 bytes, Stack size 32 bytes, cos.o(i.__hardfp_cos))
  [Stack]

  - Max Depth = 240
  - Call Chain = __hardfp_cos ⇒ __ieee754_rem_pio2 ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __set_errno
  - >> __kernel_sin
  - >> __ieee754_rem_pio2
  - >> __mathlib_dbl_invalid
  - >> __mathlib_dbl_infnan
  - >> __kernel_cos
  [Called By]
  - >> Referee_UIRefresh

  __hardfp_cosf (Thumb, 280 bytes, Stack size 8 bytes, cosf.o(i.__hardfp_cosf))
  [Stack]

  - Max Depth = 28
  - Call Chain = __hardfp_cosf ⇒ __mathlib_rredf2
  [Calls]
  - >> __set_errno
  - >> __mathlib_rredf2
  - >> __mathlib_flt_invalid
  - >> __mathlib_flt_infnan
  [Called By]
  - >> Chassis_Control
  - >> LowPassFilter2p_Init

  __hardfp_floorf (Thumb, 98 bytes, Stack size 0 bytes, floorf.o(i.__hardfp_floorf))
  [Called By]

  - >> Shoot_HeatLimit

  __hardfp_sin (Thumb, 180 bytes, Stack size 32 bytes, sin.o(i.__hardfp_sin))
  [Stack]

  - Max Depth = 240
  - Call Chain = __hardfp_sin ⇒ __ieee754_rem_pio2 ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __set_errno
  - >> __kernel_sin
  - >> __ieee754_rem_pio2
  - >> __mathlib_dbl_invalid
  - >> __mathlib_dbl_infnan
  - >> __kernel_cos
  [Called By]
  - >> Referee_UIRefresh

  __hardfp_sinf (Thumb, 344 bytes, Stack size 16 bytes, sinf.o(i.__hardfp_sinf))
  [Stack]

  - Max Depth = 36
  - Call Chain = __hardfp_sinf ⇒ __mathlib_rredf2
  [Calls]
  - >> __set_errno
  - >> __mathlib_rredf2
  - >> __mathlib_flt_underflow
  - >> __mathlib_flt_invalid
  - >> __mathlib_flt_infnan
  - >> __ARM_fpclassifyf
  [Called By]
  - >> Chassis_Control
  - >> Chassis_CalcWz

  __hardfp_tanf (Thumb, 322 bytes, Stack size 16 bytes, tanf.o(i.__hardfp_tanf))
  [Stack]

  - Max Depth = 36
  - Call Chain = __hardfp_tanf ⇒ __mathlib_rredf2
  [Calls]
  - >> __set_errno
  - >> __mathlib_rredf2
  - >> __mathlib_flt_underflow
  - >> __mathlib_flt_invalid
  - >> __mathlib_flt_infnan
  - >> __ARM_fpclassifyf
  [Called By]
  - >> LowPassFilter2p_Init

  __ieee754_rem_pio2 (Thumb, 938 bytes, Stack size 120 bytes, rred.o(i.__ieee754_rem_pio2))
  [Stack]

  - Max Depth = 208
  - Call Chain = __ieee754_rem_pio2 ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_i2d
  - >> __aeabi_dmul
  - >> __aeabi_dadd
  - >> __aeabi_d2iz
  - >> __aeabi_ui2d
  - >> fabs
  - >> __aeabi_dsub
  - >> __aeabi_drsub
  [Called By]
  - >> __hardfp_sin
  - >> __hardfp_cos

  __kernel_cos (Thumb, 322 bytes, Stack size 64 bytes, cos_i.o(i.__kernel_cos))
  [Stack]

  - Max Depth = 176
  - Call Chain = __kernel_cos ⇒ __kernel_poly ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_dmul
  - >> __aeabi_d2iz
  - >> __kernel_poly
  - >> __aeabi_dsub
  - >> __aeabi_drsub
  [Called By]
  - >> __hardfp_sin
  - >> __hardfp_cos

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

  - Max Depth = 112
  - Call Chain = __kernel_poly ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_dmul
  - >> __aeabi_dadd
  [Called By]
  - >> __kernel_sin
  - >> __kernel_cos
  - >> __hardfp_atan

  __kernel_sin (Thumb, 280 bytes, Stack size 72 bytes, sin_i.o(i.__kernel_sin))
  [Stack]

  - Max Depth = 184
  - Call Chain = __kernel_sin ⇒ __kernel_poly ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_dmul
  - >> __aeabi_dadd
  - >> __kernel_poly
  - >> __ARM_fpclassify
  - >> __mathlib_dbl_underflow
  - >> __aeabi_dsub
  - >> __aeabi_drsub
  [Called By]
  - >> __hardfp_sin
  - >> __hardfp_cos

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

  - Max Depth = 96
  - Call Chain = __mathlib_dbl_infnan ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_dadd
  [Called By]
  - >> __hardfp_atan
  - >> __hardfp_sin
  - >> __hardfp_cos

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

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

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

  - Max Depth = 48
  - Call Chain = __mathlib_dbl_invalid ⇒ __aeabi_ddiv ⇒ _double_round
  [Calls]
  - >> __aeabi_ddiv
  [Called By]
  - >> __hardfp_sin
  - >> __hardfp_cos

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

  - Max Depth = 96
  - Call Chain = __mathlib_dbl_underflow ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_dmul
  [Called By]
  - >> __kernel_sin
  - >> __hardfp_atan

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

  - >> __hardfp_tanf
  - >> __hardfp_sinf
  - >> __hardfp_cosf
  - >> __hardfp_asinf

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

  - >> __hardfp_atan2f

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

  - >> __hardfp_tanf
  - >> __hardfp_sinf
  - >> __hardfp_cosf
  - >> __hardfp_asinf

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

  - >> __hardfp_tanf
  - >> __hardfp_sinf
  - >> __hardfp_atan2f
  - >> __hardfp_asinf

  __mathlib_rredf2 (Thumb, 316 bytes, Stack size 20 bytes, rredf.o(i.__mathlib_rredf2))
  [Stack]

  - Max Depth = 20
  - Call Chain = __mathlib_rredf2
  [Called By]
  - >> __hardfp_tanf
  - >> __hardfp_sinf
  - >> __hardfp_cosf

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

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

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

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

  - >> sqrtf
  - >> __hardfp_tanf
  - >> __hardfp_sinf
  - >> __hardfp_sin
  - >> __hardfp_cosf
  - >> __hardfp_cos
  - >> __hardfp_atan2f
  - >> __hardfp_atan2
  - >> __hardfp_asinf

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

  - Max Depth = 168
  - Call Chain = atan ⇒ __hardfp_atan ⇒ __kernel_poly ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __hardfp_atan
  [Called By]
  - >> __hardfp_atan2

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

  - Max Depth = 8
  - Call Chain = fabs
  [Called By]
  - >> __ieee754_rem_pio2
  - >> __hardfp_atan
  - >> __hardfp_atan2

  sqrtf (Thumb, 62 bytes, Stack size 16 bytes, sqrtf.o(i.sqrtf))
  [Stack]

  - Max Depth = 16
  - Call Chain = sqrtf
  [Calls]
  - >> __set_errno
  [Called By]
  - >> __hardfp_asinf

  ### Local Symbols

  Get_SerialNum (Thumb, 92 bytes, Stack size 24 bytes, usbd_desc.o(.text.Get_SerialNum))
  [Stack]

  - Max Depth = 36
  - Call Chain = Get_SerialNum ⇒ IntToUnicode
  [Calls]
  - >> IntToUnicode
  [Called By]
  - >> USBD_FS_SerialStrDescriptor

  IntToUnicode (Thumb, 118 bytes, Stack size 12 bytes, usbd_desc.o(.text.IntToUnicode))
  [Stack]

  - Max Depth = 12
  - Call Chain = IntToUnicode
  [Called By]
  - >> Get_SerialNum

  CDC_Control_FS (Thumb, 92 bytes, Stack size 16 bytes, usbd_cdc_if.o(.text.CDC_Control_FS))
  [Stack]

  - Max Depth = 16
  - Call Chain = CDC_Control_FS
  [Address Reference Count : 1]
  - usbd_cdc_if.o(.data.USBD_Interface_fops_FS)

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

  - usbd_cdc_if.o(.data.USBD_Interface_fops_FS)

  CDC_Init_FS (Thumb, 26 bytes, Stack size 8 bytes, usbd_cdc_if.o(.text.CDC_Init_FS))
  [Stack]

  - Max Depth = 24
  - Call Chain = CDC_Init_FS ⇒ USBD_CDC_SetRxBuffer
  [Calls]
  - >> USBD_CDC_SetRxBuffer
  [Address Reference Count : 1]
  - usbd_cdc_if.o(.data.USBD_Interface_fops_FS)

  CDC_Receive_FS (Thumb, 30 bytes, Stack size 16 bytes, usbd_cdc_if.o(.text.CDC_Receive_FS))
  [Stack]

  - Max Depth = 152
  - Call Chain = CDC_Receive_FS ⇒ osThreadFlagsSet ⇒ xTaskGenericNotifyFromISR ⇒ vPortValidateInterruptPriority
  [Calls]
  - >> osThreadFlagsSet
  [Address Reference Count : 1]
  - usbd_cdc_if.o(.data.USBD_Interface_fops_FS)

  CDC_TransmitCplt_FS (Thumb, 24 bytes, Stack size 12 bytes, usbd_cdc_if.o(.text.CDC_TransmitCplt_FS))
  [Stack]

  - Max Depth = 12
  - Call Chain = CDC_TransmitCplt_FS
  [Address Reference Count : 1]
  - usbd_cdc_if.o(.data.USBD_Interface_fops_FS)

  PCD_EP_OutSetupPacket_int (Thumb, 138 bytes, Stack size 32 bytes, stm32f4xx_hal_pcd.o(.text.PCD_EP_OutSetupPacket_int))
  [Stack]

  - Max Depth = 312
  - Call Chain = PCD_EP_OutSetupPacket_int ⇒ HAL_PCD_SetupStageCallback ⇒ USBD_LL_SetupStage ⇒ USBD_StdDevReq ⇒ USBD_GetDescriptor ⇒ USBD_CtlSendData ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USB_EP0_OutStart
  - >> HAL_PCD_SetupStageCallback
  [Called By]
  - >> HAL_PCD_IRQHandler

  PCD_EP_OutXfrComplete_int (Thumb, 484 bytes, Stack size 32 bytes, stm32f4xx_hal_pcd.o(.text.PCD_EP_OutXfrComplete_int))
  [Stack]

  - Max Depth = 264
  - Call Chain = PCD_EP_OutXfrComplete_int ⇒ HAL_PCD_DataOutStageCallback ⇒ USBD_LL_DataOutStage ⇒ USBD_CtlContinueRx ⇒ USBD_LL_PrepareReceive ⇒ HAL_PCD_EP_Receive ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USB_EP0_OutStart
  - >> HAL_PCD_DataOutStageCallback
  [Called By]
  - >> HAL_PCD_IRQHandler

  PCD_WriteEmptyTxFifo (Thumb, 306 bytes, Stack size 56 bytes, stm32f4xx_hal_pcd.o(.text.PCD_WriteEmptyTxFifo))
  [Stack]

  - Max Depth = 96
  - Call Chain = PCD_WriteEmptyTxFifo ⇒ USB_WritePacket
  [Calls]
  - >> USB_WritePacket
  [Called By]
  - >> HAL_PCD_IRQHandler

  USB_CoreReset (Thumb, 126 bytes, Stack size 12 bytes, stm32f4xx_ll_usb.o(.text.USB_CoreReset))
  [Stack]

  - Max Depth = 12
  - Call Chain = USB_CoreReset
  [Called By]
  - >> USB_CoreInit

  FLASH_Program_Byte (Thumb, 122 bytes, Stack size 16 bytes, stm32f4xx_hal_flash.o(.text.FLASH_Program_Byte))
  [Stack]

  - Max Depth = 24
  - Call Chain = FLASH_Program_Byte ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> HAL_FLASH_Program

  FLASH_Program_DoubleWord (Thumb, 134 bytes, Stack size 24 bytes, stm32f4xx_hal_flash.o(.text.FLASH_Program_DoubleWord))
  [Stack]

  - Max Depth = 32
  - Call Chain = FLASH_Program_DoubleWord ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> HAL_FLASH_Program

  FLASH_Program_HalfWord (Thumb, 126 bytes, Stack size 16 bytes, stm32f4xx_hal_flash.o(.text.FLASH_Program_HalfWord))
  [Stack]

  - Max Depth = 24
  - Call Chain = FLASH_Program_HalfWord ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> HAL_FLASH_Program

  FLASH_Program_Word (Thumb, 122 bytes, Stack size 16 bytes, stm32f4xx_hal_flash.o(.text.FLASH_Program_Word))
  [Stack]

  - Max Depth = 24
  - Call Chain = FLASH_Program_Word ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> HAL_FLASH_Program

  FLASH_SetErrorCode (Thumb, 242 bytes, Stack size 0 bytes, stm32f4xx_hal_flash.o(.text.FLASH_SetErrorCode))
  [Called By]

  - >> FLASH_WaitForLastOperation

  FLASH_MassErase (Thumb, 140 bytes, Stack size 16 bytes, stm32f4xx_hal_flash_ex.o(.text.FLASH_MassErase))
  [Stack]

  - Max Depth = 24
  - Call Chain = FLASH_MassErase ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> HAL_FLASHEx_Erase

  DMA_CalcBaseAndBitshift (Thumb, 86 bytes, Stack size 8 bytes, stm32f4xx_hal_dma.o(.text.DMA_CalcBaseAndBitshift))
  [Stack]

  - Max Depth = 8
  - Call Chain = DMA_CalcBaseAndBitshift
  [Called By]
  - >> HAL_DMA_Init

  DMA_CheckFifoParam (Thumb, 240 bytes, Stack size 24 bytes, stm32f4xx_hal_dma.o(.text.DMA_CheckFifoParam))
  [Stack]

  - Max Depth = 24
  - Call Chain = DMA_CheckFifoParam
  [Called By]
  - >> HAL_DMA_Init

  DMA_SetConfig (Thumb, 80 bytes, Stack size 16 bytes, stm32f4xx_hal_dma.o(.text.DMA_SetConfig))
  [Stack]

  - Max Depth = 16
  - Call Chain = DMA_SetConfig
  [Called By]
  - >> HAL_DMA_Start_IT

  NVIC_EncodePriority (Thumb, 108 bytes, Stack size 32 bytes, stm32f4xx_hal_cortex.o(.text.NVIC_EncodePriority))
  [Stack]

  - Max Depth = 32
  - Call Chain = NVIC_EncodePriority
  [Called By]
  - >> HAL_NVIC_SetPriority

  SysTick_Config (Thumb, 82 bytes, Stack size 16 bytes, stm32f4xx_hal_cortex.o(.text.SysTick_Config))
  [Stack]

  - Max Depth = 24
  - Call Chain = SysTick_Config ⇒ __NVIC_SetPriority
  [Calls]
  - >> __NVIC_SetPriority
  [Called By]
  - >> HAL_SYSTICK_Config

  __NVIC_DisableIRQ (Thumb, 56 bytes, Stack size 4 bytes, stm32f4xx_hal_cortex.o(.text.__NVIC_DisableIRQ))
  [Stack]

  - Max Depth = 4
  - Call Chain = __NVIC_DisableIRQ
  [Called By]
  - >> HAL_NVIC_DisableIRQ

  __NVIC_EnableIRQ (Thumb, 48 bytes, Stack size 4 bytes, stm32f4xx_hal_cortex.o(.text.__NVIC_EnableIRQ))
  [Stack]

  - Max Depth = 4
  - Call Chain = __NVIC_EnableIRQ
  [Called By]
  - >> HAL_NVIC_EnableIRQ

  __NVIC_GetPriorityGrouping (Thumb, 16 bytes, Stack size 0 bytes, stm32f4xx_hal_cortex.o(.text.__NVIC_GetPriorityGrouping))
  [Called By]

  - >> HAL_NVIC_SetPriority

  __NVIC_SetPriority (Thumb, 66 bytes, Stack size 8 bytes, stm32f4xx_hal_cortex.o(.text.__NVIC_SetPriority))
  [Stack]

  - Max Depth = 8
  - Call Chain = __NVIC_SetPriority
  [Called By]
  - >> HAL_NVIC_SetPriority
  - >> SysTick_Config

  __NVIC_SetPriorityGrouping (Thumb, 60 bytes, Stack size 12 bytes, stm32f4xx_hal_cortex.o(.text.__NVIC_SetPriorityGrouping))
  [Stack]

  - Max Depth = 12
  - Call Chain = __NVIC_SetPriorityGrouping
  [Called By]
  - >> HAL_NVIC_SetPriorityGrouping

  ADC_Init (Thumb, 434 bytes, Stack size 16 bytes, stm32f4xx_hal_adc.o(.text.ADC_Init))
  [Stack]

  - Max Depth = 24
  - Call Chain = ADC_Init ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> HAL_ADC_Init

  SPI_DMAError (Thumb, 52 bytes, Stack size 16 bytes, stm32f4xx_hal_spi.o(.text.SPI_DMAError))
  [Stack]

  - Max Depth = 40
  - Call Chain = SPI_DMAError ⇒ HAL_SPI_ErrorCallback ⇒ SPI_Get
  [Calls]
  - >> HAL_SPI_ErrorCallback
  [Address Reference Count : 2]
  - stm32f4xx_hal_spi.o(.text.HAL_SPI_Receive_DMA)
  - stm32f4xx_hal_spi.o(.text.HAL_SPI_TransmitReceive_DMA)

  SPI_DMAHalfReceiveCplt (Thumb, 22 bytes, Stack size 16 bytes, stm32f4xx_hal_spi.o(.text.SPI_DMAHalfReceiveCplt))
  [Stack]

  - Max Depth = 40
  - Call Chain = SPI_DMAHalfReceiveCplt ⇒ HAL_SPI_RxHalfCpltCallback ⇒ SPI_Get
  [Calls]
  - >> HAL_SPI_RxHalfCpltCallback
  [Address Reference Count : 2]
  - stm32f4xx_hal_spi.o(.text.HAL_SPI_Receive_DMA)
  - stm32f4xx_hal_spi.o(.text.HAL_SPI_TransmitReceive_DMA)

  SPI_DMAHalfTransmitReceiveCplt (Thumb, 22 bytes, Stack size 16 bytes, stm32f4xx_hal_spi.o(.text.SPI_DMAHalfTransmitReceiveCplt))
  [Stack]

  - Max Depth = 40
  - Call Chain = SPI_DMAHalfTransmitReceiveCplt ⇒ HAL_SPI_TxRxHalfCpltCallback ⇒ SPI_Get
  [Calls]
  - >> HAL_SPI_TxRxHalfCpltCallback
  [Address Reference Count : 1]
  - stm32f4xx_hal_spi.o(.text.HAL_SPI_TransmitReceive_DMA)

  SPI_DMAReceiveCplt (Thumb, 162 bytes, Stack size 24 bytes, stm32f4xx_hal_spi.o(.text.SPI_DMAReceiveCplt))
  [Stack]

  - Max Depth = 104
  - Call Chain = SPI_DMAReceiveCplt ⇒ SPI_EndRxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
  [Calls]
  - >> HAL_GetTick
  - >> SPI_EndRxTransaction
  - >> HAL_SPI_RxCpltCallback
  - >> HAL_SPI_ErrorCallback
  [Address Reference Count : 2]
  - stm32f4xx_hal_spi.o(.text.HAL_SPI_Receive_DMA)
  - stm32f4xx_hal_spi.o(.text.HAL_SPI_TransmitReceive_DMA)

  SPI_DMATransmitReceiveCplt (Thumb, 134 bytes, Stack size 24 bytes, stm32f4xx_hal_spi.o(.text.SPI_DMATransmitReceiveCplt))
  [Stack]

  - Max Depth = 104
  - Call Chain = SPI_DMATransmitReceiveCplt ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
  [Calls]
  - >> HAL_GetTick
  - >> SPI_EndRxTxTransaction
  - >> HAL_SPI_TxRxCpltCallback
  - >> HAL_SPI_ErrorCallback
  [Address Reference Count : 1]
  - stm32f4xx_hal_spi.o(.text.HAL_SPI_TransmitReceive_DMA)

  SPI_EndRxTransaction (Thumb, 228 bytes, Stack size 32 bytes, stm32f4xx_hal_spi.o(.text.SPI_EndRxTransaction))
  [Stack]

  - Max Depth = 80
  - Call Chain = SPI_EndRxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
  [Calls]
  - >> SPI_WaitFlagStateUntilTimeout
  [Called By]
  - >> HAL_SPI_Receive
  - >> SPI_DMAReceiveCplt

  SPI_EndRxTxTransaction (Thumb, 164 bytes, Stack size 32 bytes, stm32f4xx_hal_spi.o(.text.SPI_EndRxTxTransaction))
  [Stack]

  - Max Depth = 80
  - Call Chain = SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
  [Calls]
  - >> SPI_WaitFlagStateUntilTimeout
  [Called By]
  - >> HAL_SPI_TransmitReceive
  - >> HAL_SPI_Transmit
  - >> SPI_DMATransmitReceiveCplt

  SPI_WaitFlagStateUntilTimeout (Thumb, 298 bytes, Stack size 48 bytes, stm32f4xx_hal_spi.o(.text.SPI_WaitFlagStateUntilTimeout))
  [Stack]

  - Max Depth = 48
  - Call Chain = SPI_WaitFlagStateUntilTimeout
  [Calls]
  - >> HAL_GetTick
  [Called By]
  - >> SPI_EndRxTxTransaction
  - >> SPI_EndRxTransaction

  TIM_ITRx_SetConfig (Thumb, 42 bytes, Stack size 12 bytes, stm32f4xx_hal_tim.o(.text.TIM_ITRx_SetConfig))
  [Stack]

  - Max Depth = 12
  - Call Chain = TIM_ITRx_SetConfig
  [Called By]
  - >> HAL_TIM_ConfigClockSource

  TIM_OC1_SetConfig (Thumb, 354 bytes, Stack size 32 bytes, stm32f4xx_hal_tim.o(.text.TIM_OC1_SetConfig))
  [Stack]

  - Max Depth = 40
  - Call Chain = TIM_OC1_SetConfig ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> HAL_TIM_PWM_ConfigChannel

  TIM_OC3_SetConfig (Thumb, 362 bytes, Stack size 32 bytes, stm32f4xx_hal_tim.o(.text.TIM_OC3_SetConfig))
  [Stack]

  - Max Depth = 40
  - Call Chain = TIM_OC3_SetConfig ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> HAL_TIM_PWM_ConfigChannel

  TIM_OC4_SetConfig (Thumb, 206 bytes, Stack size 32 bytes, stm32f4xx_hal_tim.o(.text.TIM_OC4_SetConfig))
  [Stack]

  - Max Depth = 40
  - Call Chain = TIM_OC4_SetConfig ⇒ assert_failed
  [Calls]
  - >> assert_failed
  [Called By]
  - >> HAL_TIM_PWM_ConfigChannel

  TIM_TI1_ConfigInputStage (Thumb, 80 bytes, Stack size 20 bytes, stm32f4xx_hal_tim.o(.text.TIM_TI1_ConfigInputStage))
  [Stack]

  - Max Depth = 20
  - Call Chain = TIM_TI1_ConfigInputStage
  [Called By]
  - >> HAL_TIM_ConfigClockSource

  TIM_TI2_ConfigInputStage (Thumb, 82 bytes, Stack size 20 bytes, stm32f4xx_hal_tim.o(.text.TIM_TI2_ConfigInputStage))
  [Stack]

  - Max Depth = 20
  - Call Chain = TIM_TI2_ConfigInputStage
  [Called By]
  - >> HAL_TIM_ConfigClockSource

  UART_DMAAbortOnError (Thumb, 32 bytes, Stack size 16 bytes, stm32f4xx_hal_uart.o(.text.UART_DMAAbortOnError))
  [Stack]

  - Max Depth = 40
  - Call Chain = UART_DMAAbortOnError ⇒ HAL_UART_ErrorCallback ⇒ UART_Get
  [Calls]
  - >> HAL_UART_ErrorCallback
  [Address Reference Count : 1]
  - stm32f4xx_hal_uart.o(.text.HAL_UART_IRQHandler)

  UART_DMAError (Thumb, 124 bytes, Stack size 24 bytes, stm32f4xx_hal_uart.o(.text.UART_DMAError))
  [Stack]

  - Max Depth = 48
  - Call Chain = UART_DMAError ⇒ HAL_UART_ErrorCallback ⇒ UART_Get
  [Calls]
  - >> UART_EndTxTransfer
  - >> UART_EndRxTransfer
  - >> HAL_UART_ErrorCallback
  [Address Reference Count : 2]
  - stm32f4xx_hal_uart.o(.text.HAL_UART_Transmit_DMA)
  - stm32f4xx_hal_uart.o(.text.UART_Start_Receive_DMA)

  UART_DMAReceiveCplt (Thumb, 134 bytes, Stack size 16 bytes, stm32f4xx_hal_uart.o(.text.UART_DMAReceiveCplt))
  [Stack]

  - Max Depth = 40
  - Call Chain = UART_DMAReceiveCplt ⇒ HAL_UART_RxCpltCallback ⇒ UART_Get
  [Calls]
  - >> HAL_UARTEx_RxEventCallback
  - >> HAL_UART_RxCpltCallback
  [Address Reference Count : 1]
  - stm32f4xx_hal_uart.o(.text.UART_Start_Receive_DMA)

  UART_DMARxHalfCplt (Thumb, 46 bytes, Stack size 16 bytes, stm32f4xx_hal_uart.o(.text.UART_DMARxHalfCplt))
  [Stack]

  - Max Depth = 40
  - Call Chain = UART_DMARxHalfCplt ⇒ HAL_UART_RxHalfCpltCallback ⇒ UART_Get
  [Calls]
  - >> HAL_UARTEx_RxEventCallback
  - >> HAL_UART_RxHalfCpltCallback
  [Address Reference Count : 1]
  - stm32f4xx_hal_uart.o(.text.UART_Start_Receive_DMA)

  UART_DMARxOnlyAbortCallback (Thumb, 40 bytes, Stack size 16 bytes, stm32f4xx_hal_uart.o(.text.UART_DMARxOnlyAbortCallback))
  [Stack]

  - Max Depth = 40
  - Call Chain = UART_DMARxOnlyAbortCallback ⇒ HAL_UART_AbortReceiveCpltCallback ⇒ UART_Get
  [Calls]
  - >> HAL_UART_AbortReceiveCpltCallback
  [Address Reference Count : 1]
  - stm32f4xx_hal_uart.o(.text.HAL_UART_AbortReceive_IT)

  UART_DMATransmitCplt (Thumb, 70 bytes, Stack size 16 bytes, stm32f4xx_hal_uart.o(.text.UART_DMATransmitCplt))
  [Stack]

  - Max Depth = 40
  - Call Chain = UART_DMATransmitCplt ⇒ HAL_UART_TxCpltCallback ⇒ UART_Get
  [Calls]
  - >> HAL_UART_TxCpltCallback
  [Address Reference Count : 1]
  - stm32f4xx_hal_uart.o(.text.HAL_UART_Transmit_DMA)

  UART_DMATxHalfCplt (Thumb, 22 bytes, Stack size 16 bytes, stm32f4xx_hal_uart.o(.text.UART_DMATxHalfCplt))
  [Stack]

  - Max Depth = 40
  - Call Chain = UART_DMATxHalfCplt ⇒ HAL_UART_TxHalfCpltCallback ⇒ UART_Get
  [Calls]
  - >> HAL_UART_TxHalfCpltCallback
  [Address Reference Count : 1]
  - stm32f4xx_hal_uart.o(.text.HAL_UART_Transmit_DMA)

  UART_EndRxTransfer (Thumb, 70 bytes, Stack size 4 bytes, stm32f4xx_hal_uart.o(.text.UART_EndRxTransfer))
  [Stack]

  - Max Depth = 4
  - Call Chain = UART_EndRxTransfer
  [Called By]
  - >> HAL_UART_IRQHandler
  - >> UART_DMAError

  UART_EndTransmit_IT (Thumb, 38 bytes, Stack size 16 bytes, stm32f4xx_hal_uart.o(.text.UART_EndTransmit_IT))
  [Stack]

  - Max Depth = 40
  - Call Chain = UART_EndTransmit_IT ⇒ HAL_UART_TxCpltCallback ⇒ UART_Get
  [Calls]
  - >> HAL_UART_TxCpltCallback
  [Called By]
  - >> HAL_UART_IRQHandler

  UART_EndTxTransfer (Thumb, 28 bytes, Stack size 4 bytes, stm32f4xx_hal_uart.o(.text.UART_EndTxTransfer))
  [Stack]

  - Max Depth = 4
  - Call Chain = UART_EndTxTransfer
  [Called By]
  - >> UART_DMAError

  UART_Receive_IT (Thumb, 282 bytes, Stack size 24 bytes, stm32f4xx_hal_uart.o(.text.UART_Receive_IT))
  [Stack]

  - Max Depth = 48
  - Call Chain = UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ UART_Get
  [Calls]
  - >> HAL_UARTEx_RxEventCallback
  - >> HAL_UART_RxCpltCallback
  [Called By]
  - >> HAL_UART_IRQHandler

  UART_SetConfig (Thumb, 486 bytes, Stack size 32 bytes, stm32f4xx_hal_uart.o(.text.UART_SetConfig))
  [Stack]

  - Max Depth = 72
  - Call Chain = UART_SetConfig ⇒ __aeabi_uldivmod
  [Calls]
  - >> HAL_RCC_GetPCLK2Freq
  - >> HAL_RCC_GetPCLK1Freq
  - >> assert_failed
  - >> __aeabi_uldivmod
  [Called By]
  - >> HAL_UART_Init

  UART_Transmit_IT (Thumb, 148 bytes, Stack size 12 bytes, stm32f4xx_hal_uart.o(.text.UART_Transmit_IT))
  [Stack]

  - Max Depth = 12
  - Call Chain = UART_Transmit_IT
  [Called By]
  - >> HAL_UART_IRQHandler

  prvCopyDataFromQueue (Thumb, 66 bytes, Stack size 16 bytes, queue.o(.text.prvCopyDataFromQueue))
  [Stack]

  - Max Depth = 16
  - Call Chain = prvCopyDataFromQueue
  [Calls]
  - >> __aeabi_memcpy
  [Called By]
  - >> xQueueReceiveFromISR
  - >> xQueueReceive

  prvCopyDataToQueue (Thumb, 204 bytes, Stack size 32 bytes, queue.o(.text.prvCopyDataToQueue))
  [Stack]

  - Max Depth = 76
  - Call Chain = prvCopyDataToQueue ⇒ xTaskPriorityDisinherit ⇒ vListInsertEnd
  [Calls]
  - >> xTaskPriorityDisinherit
  - >> __aeabi_memcpy
  [Called By]
  - >> xQueueGenericSendFromISR
  - >> xQueueGenericSend

  prvInitialiseNewQueue (Thumb, 72 bytes, Stack size 24 bytes, queue.o(.text.prvInitialiseNewQueue))
  [Stack]

  - Max Depth = 84
  - Call Chain = prvInitialiseNewQueue ⇒ xQueueGenericReset ⇒ xTaskRemoveFromEventList ⇒ vListInsertEnd
  [Calls]
  - >> xQueueGenericReset
  [Called By]
  - >> xQueueGenericCreateStatic
  - >> xQueueGenericCreate

  prvIsQueueEmpty (Thumb, 40 bytes, Stack size 16 bytes, queue.o(.text.prvIsQueueEmpty))
  [Stack]

  - Max Depth = 24
  - Call Chain = prvIsQueueEmpty ⇒ vPortExitCritical
  [Calls]
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> xQueueReceive

  prvIsQueueFull (Thumb, 46 bytes, Stack size 16 bytes, queue.o(.text.prvIsQueueFull))
  [Stack]

  - Max Depth = 24
  - Call Chain = prvIsQueueFull ⇒ vPortExitCritical
  [Calls]
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> xQueueGenericSend

  prvUnlockQueue (Thumb, 174 bytes, Stack size 16 bytes, queue.o(.text.prvUnlockQueue))
  [Stack]

  - Max Depth = 52
  - Call Chain = prvUnlockQueue ⇒ xTaskRemoveFromEventList ⇒ vListInsertEnd
  [Calls]
  - >> xTaskRemoveFromEventList
  - >> vTaskMissedYield
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> xQueueReceive
  - >> xQueueGenericSend
  - >> vQueueWaitForMessageRestricted

  prvAddCurrentTaskToDelayedList (Thumb, 220 bytes, Stack size 24 bytes, tasks.o(.text.prvAddCurrentTaskToDelayedList))
  [Stack]

  - Max Depth = 40
  - Call Chain = prvAddCurrentTaskToDelayedList ⇒ vListInsert
  [Calls]
  - >> vListInsertEnd
  - >> vListInsert
  - >> uxListRemove
  [Called By]
  - >> vTaskDelayUntil
  - >> vTaskDelay
  - >> xTaskNotifyWait
  - >> vTaskPlaceOnEventListRestricted
  - >> vTaskPlaceOnEventList

  prvAddNewTaskToReadyList (Thumb, 290 bytes, Stack size 16 bytes, tasks.o(.text.prvAddNewTaskToReadyList))
  [Stack]

  - Max Depth = 44
  - Call Chain = prvAddNewTaskToReadyList ⇒ prvInitialiseTaskLists ⇒ vListInitialise
  [Calls]
  - >> prvInitialiseTaskLists
  - >> vListInsertEnd
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> xTaskCreateStatic
  - >> xTaskCreate

  prvCheckTasksWaitingTermination (Thumb, 90 bytes, Stack size 16 bytes, tasks.o(.text.prvCheckTasksWaitingTermination))
  [Stack]

  - Max Depth = 132
  - Call Chain = prvCheckTasksWaitingTermination ⇒ prvDeleteTCB ⇒ vPortFree ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> prvDeleteTCB
  - >> uxListRemove
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> prvIdleTask

  prvDeleteTCB (Thumb, 94 bytes, Stack size 16 bytes, tasks.o(.text.prvDeleteTCB))
  [Stack]

  - Max Depth = 116
  - Call Chain = prvDeleteTCB ⇒ vPortFree ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> vPortFree
  [Called By]
  - >> vTaskDelete
  - >> prvCheckTasksWaitingTermination

  prvIdleTask (Thumb, 56 bytes, Stack size 16 bytes, tasks.o(.text.prvIdleTask))
  [Stack]

  - Max Depth = 148
  - Call Chain = prvIdleTask ⇒ prvCheckTasksWaitingTermination ⇒ prvDeleteTCB ⇒ vPortFree ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> prvCheckTasksWaitingTermination
  [Address Reference Count : 1]
  - tasks.o(.text.vTaskStartScheduler)

  prvInitialiseNewTask (Thumb, 306 bytes, Stack size 40 bytes, tasks.o(.text.prvInitialiseNewTask))
  [Stack]

  - Max Depth = 52
  - Call Chain = prvInitialiseNewTask ⇒ pxPortInitialiseStack
  [Calls]
  - >> pxPortInitialiseStack
  - >> vListInitialiseItem
  - >> __aeabi_memset4
  [Called By]
  - >> xTaskCreateStatic
  - >> xTaskCreate

  prvInitialiseTaskLists (Thumb, 142 bytes, Stack size 24 bytes, tasks.o(.text.prvInitialiseTaskLists))
  [Stack]

  - Max Depth = 28
  - Call Chain = prvInitialiseTaskLists ⇒ vListInitialise
  [Calls]
  - >> vListInitialise
  [Called By]
  - >> prvAddNewTaskToReadyList

  prvListTasksWithinSingleList (Thumb, 164 bytes, Stack size 40 bytes, tasks.o(.text.prvListTasksWithinSingleList))
  [Stack]

  - Max Depth = 140
  - Call Chain = prvListTasksWithinSingleList ⇒ vTaskGetInfo ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> vTaskGetInfo
  [Called By]
  - >> uxTaskGetSystemState

  prvResetNextTaskUnblockTime (Thumb, 70 bytes, Stack size 4 bytes, tasks.o(.text.prvResetNextTaskUnblockTime))
  [Stack]

  - Max Depth = 4
  - Call Chain = prvResetNextTaskUnblockTime
  [Called By]
  - >> xTaskIncrementTick
  - >> vTaskSuspend
  - >> vTaskDelete
  - >> xTaskResumeAll

  prvTaskCheckFreeStackSpace (Thumb, 48 bytes, Stack size 8 bytes, tasks.o(.text.prvTaskCheckFreeStackSpace))
  [Stack]

  - Max Depth = 8
  - Call Chain = prvTaskCheckFreeStackSpace
  [Called By]
  - >> vTaskGetInfo
  - >> uxTaskGetStackHighWaterMark

  prvTaskIsTaskSuspended (Thumb, 106 bytes, Stack size 16 bytes, tasks.o(.text.prvTaskIsTaskSuspended))
  [Stack]

  - Max Depth = 16
  - Call Chain = prvTaskIsTaskSuspended
  [Called By]
  - >> vTaskResume

  prvWriteNameToBuffer (Thumb, 70 bytes, Stack size 24 bytes, tasks.o(.text.prvWriteNameToBuffer))
  [Stack]

  - Max Depth = 24
  - Call Chain = prvWriteNameToBuffer
  [Calls]
  - >> strcpy
  - >> strlen
  [Called By]
  - >> vTaskList
  - >> vTaskGetRunTimeStats

  prvCheckForValidListAndQueue (Thumb, 162 bytes, Stack size 24 bytes, timers.o(.text.prvCheckForValidListAndQueue))
  [Stack]

  - Max Depth = 180
  - Call Chain = prvCheckForValidListAndQueue ⇒ xQueueGenericCreateStatic ⇒ prvInitialiseNewQueue ⇒ xQueueGenericReset ⇒ xTaskRemoveFromEventList ⇒ vListInsertEnd
  [Calls]
  - >> xQueueGenericCreateStatic
  - >> vQueueAddToRegistry
  - >> vPortExitCritical
  - >> vPortEnterCritical
  - >> vListInitialise
  [Called By]
  - >> prvInitialiseNewTimer
  - >> xTimerCreateTimerTask

  prvGetNextExpireTime (Thumb, 64 bytes, Stack size 8 bytes, timers.o(.text.prvGetNextExpireTime))
  [Stack]

  - Max Depth = 8
  - Call Chain = prvGetNextExpireTime
  [Called By]
  - >> prvTimerTask

  prvInitialiseNewTimer (Thumb, 118 bytes, Stack size 32 bytes, timers.o(.text.prvInitialiseNewTimer))
  [Stack]

  - Max Depth = 212
  - Call Chain = prvInitialiseNewTimer ⇒ prvCheckForValidListAndQueue ⇒ xQueueGenericCreateStatic ⇒ prvInitialiseNewQueue ⇒ xQueueGenericReset ⇒ xTaskRemoveFromEventList ⇒ vListInsertEnd
  [Calls]
  - >> prvCheckForValidListAndQueue
  - >> vListInitialiseItem
  [Called By]
  - >> xTimerCreateStatic
  - >> xTimerCreate

  prvInsertTimerInActiveList (Thumb, 134 bytes, Stack size 32 bytes, timers.o(.text.prvInsertTimerInActiveList))
  [Stack]

  - Max Depth = 48
  - Call Chain = prvInsertTimerInActiveList ⇒ vListInsert
  [Calls]
  - >> vListInsert
  [Called By]
  - >> prvProcessReceivedCommands
  - >> prvProcessExpiredTimer

  prvProcessExpiredTimer (Thumb, 142 bytes, Stack size 32 bytes, timers.o(.text.prvProcessExpiredTimer))
  [Stack]

  - Max Depth = 236
  - Call Chain = prvProcessExpiredTimer ⇒ xTimerGenericCommand ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit ⇒ vListInsertEnd
  [Calls]
  - >> xTimerGenericCommand
  - >> prvInsertTimerInActiveList
  - >> uxListRemove
  [Called By]
  - >> prvProcessTimerOrBlockTask

  prvProcessReceivedCommands (Thumb, 402 bytes, Stack size 64 bytes, timers.o(.text.prvProcessReceivedCommands))
  [Stack]

  - Max Depth = 324
  - Call Chain = prvProcessReceivedCommands ⇒ prvSampleTimeNow ⇒ prvSwitchTimerLists ⇒ xTimerGenericCommand ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit ⇒ vListInsertEnd
  [Calls]
  - >> xTimerGenericCommand
  - >> prvSampleTimeNow
  - >> prvInsertTimerInActiveList
  - >> xQueueReceive
  - >> uxListRemove
  - >> vPortFree
  [Called By]
  - >> prvTimerTask

  prvProcessTimerOrBlockTask (Thumb, 154 bytes, Stack size 24 bytes, timers.o(.text.prvProcessTimerOrBlockTask))
  [Stack]

  - Max Depth = 284
  - Call Chain = prvProcessTimerOrBlockTask ⇒ prvSampleTimeNow ⇒ prvSwitchTimerLists ⇒ xTimerGenericCommand ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit ⇒ vListInsertEnd
  [Calls]
  - >> prvSampleTimeNow
  - >> prvProcessExpiredTimer
  - >> vQueueWaitForMessageRestricted
  - >> xTaskResumeAll
  - >> vTaskSuspendAll
  [Called By]
  - >> prvTimerTask

  prvSampleTimeNow (Thumb, 68 bytes, Stack size 16 bytes, timers.o(.text.prvSampleTimeNow))
  [Stack]

  - Max Depth = 260
  - Call Chain = prvSampleTimeNow ⇒ prvSwitchTimerLists ⇒ xTimerGenericCommand ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit ⇒ vListInsertEnd
  [Calls]
  - >> prvSwitchTimerLists
  - >> xTaskGetTickCount
  [Called By]
  - >> prvProcessTimerOrBlockTask
  - >> prvProcessReceivedCommands

  prvSwitchTimerLists (Thumb, 212 bytes, Stack size 40 bytes, timers.o(.text.prvSwitchTimerLists))
  [Stack]

  - Max Depth = 244
  - Call Chain = prvSwitchTimerLists ⇒ xTimerGenericCommand ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit ⇒ vListInsertEnd
  [Calls]
  - >> xTimerGenericCommand
  - >> vListInsert
  - >> uxListRemove
  [Called By]
  - >> prvSampleTimeNow

  prvTimerTask (Thumb, 30 bytes, Stack size 24 bytes, timers.o(.text.prvTimerTask))
  [Stack]

  - Max Depth = 348
  - Call Chain = prvTimerTask ⇒ prvProcessReceivedCommands ⇒ prvSampleTimeNow ⇒ prvSwitchTimerLists ⇒ xTimerGenericCommand ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit ⇒ vListInsertEnd
  [Calls]
  - >> prvProcessTimerOrBlockTask
  - >> prvProcessReceivedCommands
  - >> prvGetNextExpireTime
  [Address Reference Count : 1]
  - timers.o(.text.xTimerCreateTimerTask)

  SVC_Setup (Thumb, 14 bytes, Stack size 8 bytes, cmsis_os2.o(.text.SVC_Setup))
  [Stack]

  - Max Depth = 16
  - Call Chain = SVC_Setup ⇒ __NVIC_SetPriority
  [Calls]
  - >> __NVIC_SetPriority
  [Called By]
  - >> osKernelStart

  TimerCallback (Thumb, 34 bytes, Stack size 16 bytes, cmsis_os2.o(.text.TimerCallback))
  [Stack]

  - Max Depth = 48
  - Call Chain = TimerCallback ⇒ pvTimerGetTimerID ⇒ vPortExitCritical
  [Calls]
  - >> pvTimerGetTimerID
  [Address Reference Count : 1]
  - cmsis_os2.o(.text.osTimerNew)

  __NVIC_SetPriority (Thumb, 66 bytes, Stack size 8 bytes, cmsis_os2.o(.text.__NVIC_SetPriority))
  [Stack]

  - Max Depth = 8
  - Call Chain = __NVIC_SetPriority
  [Called By]
  - >> SVC_Setup

  prvHeapInit (Thumb, 188 bytes, Stack size 16 bytes, heap_4.o(.text.prvHeapInit))
  [Stack]

  - Max Depth = 16
  - Call Chain = prvHeapInit
  [Called By]
  - >> pvPortMalloc

  prvInsertBlockIntoFreeList (Thumb, 198 bytes, Stack size 12 bytes, heap_4.o(.text.prvInsertBlockIntoFreeList))
  [Stack]

  - Max Depth = 12
  - Call Chain = prvInsertBlockIntoFreeList
  [Called By]
  - >> vPortFree
  - >> pvPortMalloc

  prvPortStartFirstTask (Thumb, 40 bytes, Stack size 0 bytes, port.o(.text.prvPortStartFirstTask))
  [Called By]

  - >> xPortStartScheduler

  prvTaskExitError (Thumb, 76 bytes, Stack size 12 bytes, port.o(.text.prvTaskExitError))
  [Stack]

  - Max Depth = 12
  - Call Chain = prvTaskExitError
  [Called By]
  - >> xPortStartScheduler
  [Address Reference Count : 1]
  - port.o(.text.pxPortInitialiseStack)

  vPortEnableVFP (Thumb, 20 bytes, Stack size 0 bytes, port.o(.text.vPortEnableVFP))
  [Called By]

  - >> xPortStartScheduler

  SWAPBYTE (Thumb, 54 bytes, Stack size 16 bytes, usbd_ctlreq.o(.text.SWAPBYTE))
  [Stack]

  - Max Depth = 16
  - Call Chain = SWAPBYTE
  [Called By]
  - >> USBD_ParseSetupRequest

  USBD_ClrFeature (Thumb, 64 bytes, Stack size 16 bytes, usbd_ctlreq.o(.text.USBD_ClrFeature))
  [Stack]

  - Max Depth = 176
  - Call Chain = USBD_ClrFeature ⇒ USBD_CtlSendStatus ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_CtlError
  - >> USBD_CtlSendStatus
  [Called By]
  - >> USBD_StdDevReq

  USBD_GetConfig (Thumb, 100 bytes, Stack size 24 bytes, usbd_ctlreq.o(.text.USBD_GetConfig))
  [Stack]

  - Max Depth = 192
  - Call Chain = USBD_GetConfig ⇒ USBD_CtlSendData ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_CtlSendData
  - >> USBD_CtlError
  [Called By]
  - >> USBD_StdDevReq

  USBD_GetDescriptor (Thumb, 728 bytes, Stack size 40 bytes, usbd_ctlreq.o(.text.USBD_GetDescriptor))
  [Stack]

  - Max Depth = 208
  - Call Chain = USBD_GetDescriptor ⇒ USBD_CtlSendData ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_CtlSendData
  - >> USBD_CtlError
  - >> USBD_CtlSendStatus
  [Called By]
  - >> USBD_StdDevReq

  USBD_GetLen (Thumb, 50 bytes, Stack size 12 bytes, usbd_ctlreq.o(.text.USBD_GetLen))
  [Stack]

  - Max Depth = 12
  - Call Chain = USBD_GetLen
  [Called By]
  - >> USBD_GetString

  USBD_GetStatus (Thumb, 98 bytes, Stack size 16 bytes, usbd_ctlreq.o(.text.USBD_GetStatus))
  [Stack]

  - Max Depth = 184
  - Call Chain = USBD_GetStatus ⇒ USBD_CtlSendData ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_CtlSendData
  - >> USBD_CtlError
  [Called By]
  - >> USBD_StdDevReq

  USBD_SetAddress (Thumb, 140 bytes, Stack size 24 bytes, usbd_ctlreq.o(.text.USBD_SetAddress))
  [Stack]

  - Max Depth = 184
  - Call Chain = USBD_SetAddress ⇒ USBD_CtlSendStatus ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_LL_SetUSBAddress
  - >> USBD_CtlError
  - >> USBD_CtlSendStatus
  [Called By]
  - >> USBD_StdDevReq

  USBD_SetConfig (Thumb, 374 bytes, Stack size 32 bytes, usbd_ctlreq.o(.text.USBD_SetConfig))
  [Stack]

  - Max Depth = 192
  - Call Chain = USBD_SetConfig ⇒ USBD_CtlSendStatus ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_CtlError
  - >> USBD_SetClassConfig
  - >> USBD_CtlSendStatus
  - >> USBD_ClrClassConfig
  [Called By]
  - >> USBD_StdDevReq

  USBD_SetFeature (Thumb, 38 bytes, Stack size 16 bytes, usbd_ctlreq.o(.text.USBD_SetFeature))
  [Stack]

  - Max Depth = 176
  - Call Chain = USBD_SetFeature ⇒ USBD_CtlSendStatus ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_CtlSendStatus
  [Called By]
  - >> USBD_StdDevReq

  USBD_CDC_DataIn (Thumb, 200 bytes, Stack size 32 bytes, usbd_cdc.o(.text.USBD_CDC_DataIn))
  [Stack]

  - Max Depth = 176
  - Call Chain = USBD_CDC_DataIn ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_LL_Transmit
  [Address Reference Count : 1]
  - usbd_cdc.o(.data.USBD_CDC)

  USBD_CDC_DataOut (Thumb, 88 bytes, Stack size 24 bytes, usbd_cdc.o(.text.USBD_CDC_DataOut))
  [Stack]

  - Max Depth = 48
  - Call Chain = USBD_CDC_DataOut ⇒ USBD_LL_GetRxDataSize ⇒ HAL_PCD_EP_GetRxCount
  [Calls]
  - >> USBD_LL_GetRxDataSize
  [Address Reference Count : 1]
  - usbd_cdc.o(.data.USBD_CDC)

  USBD_CDC_DeInit (Thumb, 110 bytes, Stack size 24 bytes, usbd_cdc.o(.text.USBD_CDC_DeInit))
  [Stack]

  - Max Depth = 80
  - Call Chain = USBD_CDC_DeInit ⇒ USBD_LL_CloseEP ⇒ HAL_PCD_EP_Close ⇒ USB_DeactivateEndpoint
  [Calls]
  - >> USBD_static_free
  - >> USBD_LL_CloseEP
  [Address Reference Count : 1]
  - usbd_cdc.o(.data.USBD_CDC)

  USBD_CDC_EP0_RxReady (Thumb, 96 bytes, Stack size 24 bytes, usbd_cdc.o(.text.USBD_CDC_EP0_RxReady))
  [Stack]

  - Max Depth = 24
  - Call Chain = USBD_CDC_EP0_RxReady
  [Address Reference Count : 1]
  - usbd_cdc.o(.data.USBD_CDC)

  USBD_CDC_GetFSCfgDesc (Thumb, 22 bytes, Stack size 4 bytes, usbd_cdc.o(.text.USBD_CDC_GetFSCfgDesc))
  [Stack]

  - Max Depth = 4
  - Call Chain = USBD_CDC_GetFSCfgDesc
  [Address Reference Count : 1]
  - usbd_cdc.o(.data.USBD_CDC)

  USBD_CDC_GetHSCfgDesc (Thumb, 22 bytes, Stack size 4 bytes, usbd_cdc.o(.text.USBD_CDC_GetHSCfgDesc))
  [Stack]

  - Max Depth = 4
  - Call Chain = USBD_CDC_GetHSCfgDesc
  [Address Reference Count : 1]
  - usbd_cdc.o(.data.USBD_CDC)

  USBD_CDC_GetOtherSpeedCfgDesc (Thumb, 22 bytes, Stack size 4 bytes, usbd_cdc.o(.text.USBD_CDC_GetOtherSpeedCfgDesc))
  [Stack]

  - Max Depth = 4
  - Call Chain = USBD_CDC_GetOtherSpeedCfgDesc
  [Address Reference Count : 1]
  - usbd_cdc.o(.data.USBD_CDC)

  USBD_CDC_Init (Thumb, 270 bytes, Stack size 48 bytes, usbd_cdc.o(.text.USBD_CDC_Init))
  [Stack]

  - Max Depth = 192
  - Call Chain = USBD_CDC_Init ⇒ USBD_LL_PrepareReceive ⇒ HAL_PCD_EP_Receive ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_static_malloc
  - >> USBD_LL_PrepareReceive
  - >> USBD_LL_OpenEP
  [Address Reference Count : 1]
  - usbd_cdc.o(.data.USBD_CDC)

  USBD_CDC_Setup (Thumb, 412 bytes, Stack size 48 bytes, usbd_cdc.o(.text.USBD_CDC_Setup))
  [Stack]

  - Max Depth = 216
  - Call Chain = USBD_CDC_Setup ⇒ USBD_CtlSendData ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> USBD_CtlSendData
  - >> USBD_CtlError
  - >> USBD_CtlPrepareRx
  [Address Reference Count : 1]
  - usbd_cdc.o(.data.USBD_CDC)

  CAN_Get (Thumb, 72 bytes, Stack size 8 bytes, can_1.o(.text.CAN_Get))
  [Stack]

  - Max Depth = 8
  - Call Chain = CAN_Get
  [Called By]
  - >> HAL_CAN_WakeUpFromRxMsgCallback
  - >> HAL_CAN_TxMailbox2CompleteCallback
  - >> HAL_CAN_TxMailbox2AbortCallback
  - >> HAL_CAN_TxMailbox1CompleteCallback
  - >> HAL_CAN_TxMailbox1AbortCallback
  - >> HAL_CAN_TxMailbox0CompleteCallback
  - >> HAL_CAN_TxMailbox0AbortCallback
  - >> HAL_CAN_SleepCallback
  - >> HAL_CAN_RxFifo1MsgPendingCallback
  - >> HAL_CAN_RxFifo1FullCallback
  - >> HAL_CAN_RxFifo0MsgPendingCallback
  - >> HAL_CAN_RxFifo0FullCallback
  - >> HAL_CAN_ErrorCallback

  SPI_Get (Thumb, 72 bytes, Stack size 8 bytes, spi_1.o(.text.SPI_Get))
  [Stack]

  - Max Depth = 8
  - Call Chain = SPI_Get
  [Called By]
  - >> HAL_SPI_TxRxHalfCpltCallback
  - >> HAL_SPI_TxRxCpltCallback
  - >> HAL_SPI_RxHalfCpltCallback
  - >> HAL_SPI_RxCpltCallback
  - >> HAL_SPI_ErrorCallback

  UART_Get (Thumb, 98 bytes, Stack size 8 bytes, uart.o(.text.UART_Get))
  [Stack]

  - Max Depth = 8
  - Call Chain = UART_Get
  [Called By]
  - >> BSP_UART_IRQHandler
  - >> HAL_UART_TxHalfCpltCallback
  - >> HAL_UART_TxCpltCallback
  - >> HAL_UART_RxHalfCpltCallback
  - >> HAL_UART_RxCpltCallback
  - >> HAL_UART_ErrorCallback
  - >> HAL_UART_AbortReceiveCpltCallback

  BSP_USB_Transmit (Thumb, 70 bytes, Stack size 16 bytes, usb.o(.text.BSP_USB_Transmit))
  [Stack]

  - Max Depth = 216
  - Call Chain = BSP_USB_Transmit ⇒ CDC_Transmit_FS ⇒ USBD_CDC_TransmitPacket ⇒ USBD_LL_Transmit ⇒ HAL_PCD_EP_Transmit ⇒ USB_EPStartXfer ⇒ USB_WritePacket
  [Calls]
  - >> CDC_Transmit_FS
  - >> BSP_Delay
  [Called By]
  - >> BSP_USB_Printf

  AHRS_UpdateIMU (Thumb, 1480 bytes, Stack size 136 bytes, ahrs.o(.text.AHRS_UpdateIMU))
  [Stack]

  - Max Depth = 152
  - Call Chain = AHRS_UpdateIMU ⇒ InvSqrt
  [Calls]
  - >> InvSqrt
  [Called By]
  - >> AHRS_Update

  copysignf (Thumb, 30 bytes, Stack size 8 bytes, ahrs.o(.text.copysignf))
  [Stack]

  - Max Depth = 8
  - Call Chain = copysignf
  [Called By]
  - >> AHRS_GetEulr

  CMD_BehaviorOccurredRc (Thumb, 274 bytes, Stack size 40 bytes, cmd.o(.text.CMD_BehaviorOccurredRc))
  [Stack]

  - Max Depth = 48
  - Call Chain = CMD_BehaviorOccurredRc ⇒ CMD_BehaviorToKey
  [Calls]
  - >> CMD_BehaviorToKey
  - >> CMD_BehaviorToActive
  [Called By]
  - >> CMD_PcLogic

  CMD_BehaviorToActive (Thumb, 26 bytes, Stack size 8 bytes, cmd.o(.text.CMD_BehaviorToActive))
  [Stack]

  - Max Depth = 8
  - Call Chain = CMD_BehaviorToActive
  [Called By]
  - >> CMD_BehaviorOccurredRc

  CMD_BehaviorToKey (Thumb, 26 bytes, Stack size 8 bytes, cmd.o(.text.CMD_BehaviorToKey))
  [Stack]

  - Max Depth = 8
  - Call Chain = CMD_BehaviorToKey
  [Called By]
  - >> CMD_BehaviorOccurredRc

  CMD_KeyPressedRc (Thumb, 84 bytes, Stack size 12 bytes, cmd.o(.text.CMD_KeyPressedRc))
  [Stack]

  - Max Depth = 12
  - Call Chain = CMD_KeyPressedRc
  [Called By]
  - >> CMD_ParseRc

  CMD_PcLogic (Thumb, 770 bytes, Stack size 24 bytes, cmd.o(.text.CMD_PcLogic))
  [Stack]

  - Max Depth = 72
  - Call Chain = CMD_PcLogic ⇒ CMD_BehaviorOccurredRc ⇒ CMD_BehaviorToKey
  [Calls]
  - >> CMD_RefereeAdd
  - >> CMD_BehaviorOccurredRc
  [Called By]
  - >> CMD_ParseRc

  CMD_RcLogic (Thumb, 320 bytes, Stack size 20 bytes, cmd.o(.text.CMD_RcLogic))
  [Stack]

  - Max Depth = 20
  - Call Chain = CMD_RcLogic
  [Called By]
  - >> CMD_ParseRc

  CMD_RcLostLogic (Thumb, 26 bytes, Stack size 4 bytes, cmd.o(.text.CMD_RcLostLogic))
  [Stack]

  - Max Depth = 4
  - Call Chain = CMD_RcLostLogic
  [Called By]
  - >> CMD_ParseRc

  CRC16_Byte (Thumb, 42 bytes, Stack size 4 bytes, crc16.o(.text.CRC16_Byte))
  [Stack]

  - Max Depth = 4
  - Call Chain = CRC16_Byte
  [Called By]
  - >> CRC16_Calc

  __ARM_isfinite (Thumb, 30 bytes, Stack size 8 bytes, filter.o(.text.__ARM_isfinite))
  [Stack]

  - Max Depth = 8
  - Call Chain = __ARM_isfinite
  [Called By]
  - >> LowPassFilter2p_Reset

  __ARM_isfinitef (Thumb, 24 bytes, Stack size 4 bytes, filter.o(.text.__ARM_isfinitef))
  [Stack]

  - Max Depth = 4
  - Call Chain = __ARM_isfinitef
  [Called By]
  - >> LowPassFilter2p_Reset

  __ARM_isinf (Thumb, 52 bytes, Stack size 16 bytes, filter.o(.text.__ARM_isinf))
  [Stack]

  - Max Depth = 16
  - Call Chain = __ARM_isinf
  [Called By]
  - >> LowPassFilter2p_Apply

  __ARM_isinff (Thumb, 28 bytes, Stack size 4 bytes, filter.o(.text.__ARM_isinff))
  [Stack]

  - Max Depth = 4
  - Call Chain = __ARM_isinff
  [Called By]
  - >> LowPassFilter2p_Apply

  __ARM_isfinite (Thumb, 30 bytes, Stack size 8 bytes, pid.o(.text.__ARM_isfinite))
  [Stack]

  - Max Depth = 8
  - Call Chain = __ARM_isfinite
  [Called By]
  - >> PID_Init
  - >> PID_Calc

  __ARM_isfinitef (Thumb, 24 bytes, Stack size 4 bytes, pid.o(.text.__ARM_isfinitef))
  [Stack]

  - Max Depth = 4
  - Call Chain = __ARM_isfinitef
  [Called By]
  - >> PID_Init
  - >> PID_Calc

  prvGetNumberOfParameters (Thumb, 100 bytes, Stack size 12 bytes, freertos_cli.o(.text.prvGetNumberOfParameters))
  [Stack]

  - Max Depth = 12
  - Call Chain = prvGetNumberOfParameters
  [Called By]
  - >> FreeRTOS_CLIProcessCommand

  prvHelpCommand (Thumb, 100 bytes, Stack size 32 bytes, freertos_cli.o(.text.prvHelpCommand))
  [Stack]

  - Max Depth = 40
  - Call Chain = prvHelpCommand ⇒ strncpy
  [Calls]
  - >> strncpy
  [Address Reference Count : 1]
  - freertos_cli.o(.rodata.xHelpCommand)

  BMI088_AcclIntCallback (Thumb, 20 bytes, Stack size 8 bytes, bmi088.o(.text.BMI088_AcclIntCallback))
  [Stack]

  - Max Depth = 144
  - Call Chain = BMI088_AcclIntCallback ⇒ osThreadFlagsSet ⇒ xTaskGenericNotifyFromISR ⇒ vPortValidateInterruptPriority
  [Calls]
  - >> osThreadFlagsSet
  [Address Reference Count : 1]
  - bmi088.o(.text.BMI088_Init)

  BMI088_GyroIntCallback (Thumb, 20 bytes, Stack size 8 bytes, bmi088.o(.text.BMI088_GyroIntCallback))
  [Stack]

  - Max Depth = 144
  - Call Chain = BMI088_GyroIntCallback ⇒ osThreadFlagsSet ⇒ xTaskGenericNotifyFromISR ⇒ vPortValidateInterruptPriority
  [Calls]
  - >> osThreadFlagsSet
  [Address Reference Count : 1]
  - bmi088.o(.text.BMI088_Init)

  BMI088_RxCpltCallback (Thumb, 104 bytes, Stack size 8 bytes, bmi088.o(.text.BMI088_RxCpltCallback))
  [Stack]

  - Max Depth = 144
  - Call Chain = BMI088_RxCpltCallback ⇒ osThreadFlagsSet ⇒ xTaskGenericNotifyFromISR ⇒ vPortValidateInterruptPriority
  [Calls]
  - >> HAL_GPIO_ReadPin
  - >> osThreadFlagsSet
  - >> HAL_GPIO_WritePin
  [Address Reference Count : 1]
  - bmi088.o(.text.BMI088_Init)

  BMI_Read (Thumb, 140 bytes, Stack size 32 bytes, bmi088.o(.text.BMI_Read))
  [Stack]

  - Max Depth = 152
  - Call Chain = BMI_Read ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
  [Calls]
  - >> HAL_GPIO_WritePin
  - >> HAL_SPI_Transmit
  - >> HAL_SPI_Receive_DMA
  - >> BSP_SPI_GetHandle
  [Called By]
  - >> BMI088_GyroStartDmaRecv
  - >> BMI088_AcclStartDmaRecv

  BMI_ReadSingle (Thumb, 218 bytes, Stack size 32 bytes, bmi088.o(.text.BMI_ReadSingle))
  [Stack]

  - Max Depth = 216
  - Call Chain = BMI_ReadSingle ⇒ HAL_SPI_Receive ⇒ HAL_SPI_TransmitReceive ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
  [Calls]
  - >> HAL_GPIO_WritePin
  - >> HAL_SPI_Transmit
  - >> HAL_SPI_Receive
  - >> BSP_SPI_GetHandle
  - >> BSP_Delay
  [Called By]
  - >> BMI088_Init

  BMI_WriteSingle (Thumb, 180 bytes, Stack size 24 bytes, bmi088.o(.text.BMI_WriteSingle))
  [Stack]

  - Max Depth = 172
  - Call Chain = BMI_WriteSingle ⇒ BSP_Delay ⇒ osDelay ⇒ vTaskDelay ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> HAL_GPIO_WritePin
  - >> HAL_SPI_Transmit
  - >> BSP_SPI_GetHandle
  - >> BSP_Delay
  [Called By]
  - >> BMI088_Init

  CAN_CAN1RxFifoMsgPendingCallback (Thumb, 60 bytes, Stack size 16 bytes, can_2.o(.text.CAN_CAN1RxFifoMsgPendingCallback))
  [Stack]

  - Max Depth = 212
  - Call Chain = CAN_CAN1RxFifoMsgPendingCallback ⇒ osMessageQueuePut ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit ⇒ vListInsertEnd
  [Calls]
  - >> HAL_CAN_GetRxMessage
  - >> osMessageQueuePut
  - >> BSP_CAN_GetHandle
  [Address Reference Count : 1]
  - can_2.o(.text.CAN_Init)

  CAN_CAN2RxFifoMsgPendingCallback (Thumb, 60 bytes, Stack size 16 bytes, can_2.o(.text.CAN_CAN2RxFifoMsgPendingCallback))
  [Stack]

  - Max Depth = 212
  - Call Chain = CAN_CAN2RxFifoMsgPendingCallback ⇒ osMessageQueuePut ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit ⇒ vListInsertEnd
  [Calls]
  - >> HAL_CAN_GetRxMessage
  - >> osMessageQueuePut
  - >> BSP_CAN_GetHandle
  [Address Reference Count : 1]
  - can_2.o(.text.CAN_Init)

  CAN_Motor_Decode (Thumb, 160 bytes, Stack size 12 bytes, can_2.o(.text.CAN_Motor_Decode))
  [Stack]

  - Max Depth = 12
  - Call Chain = CAN_Motor_Decode
  [Called By]
  - >> CAN_StoreMsg

  DR16_DataCorrupted (Thumb, 260 bytes, Stack size 8 bytes, dr16.o(.text.DR16_DataCorrupted))
  [Stack]

  - Max Depth = 8
  - Call Chain = DR16_DataCorrupted
  [Called By]
  - >> DR16_ParseRC

  DR16_RxCpltCallback (Thumb, 20 bytes, Stack size 8 bytes, dr16.o(.text.DR16_RxCpltCallback))
  [Stack]

  - Max Depth = 144
  - Call Chain = DR16_RxCpltCallback ⇒ osThreadFlagsSet ⇒ xTaskGenericNotifyFromISR ⇒ vPortValidateInterruptPriority
  [Calls]
  - >> osThreadFlagsSet
  [Address Reference Count : 1]
  - dr16.o(.text.DR16_Init)

  RefereeFastRefreshTimerCallback (Thumb, 28 bytes, Stack size 16 bytes, referee.o(.text.RefereeFastRefreshTimerCallback))
  [Stack]

  - Max Depth = 152
  - Call Chain = RefereeFastRefreshTimerCallback ⇒ osThreadFlagsSet ⇒ xTaskGenericNotifyFromISR ⇒ vPortValidateInterruptPriority
  [Calls]
  - >> osThreadFlagsSet
  [Address Reference Count : 1]
  - referee.o(.text.Referee_Init)

  RefereeSlowRefreshTimerCallback (Thumb, 28 bytes, Stack size 16 bytes, referee.o(.text.RefereeSlowRefreshTimerCallback))
  [Stack]

  - Max Depth = 152
  - Call Chain = RefereeSlowRefreshTimerCallback ⇒ osThreadFlagsSet ⇒ xTaskGenericNotifyFromISR ⇒ vPortValidateInterruptPriority
  [Calls]
  - >> osThreadFlagsSet
  [Address Reference Count : 1]
  - referee.o(.text.Referee_Init)

  Referee_AbortRxCpltCallback (Thumb, 22 bytes, Stack size 8 bytes, referee.o(.text.Referee_AbortRxCpltCallback))
  [Stack]

  - Max Depth = 144
  - Call Chain = Referee_AbortRxCpltCallback ⇒ osThreadFlagsSet ⇒ xTaskGenericNotifyFromISR ⇒ vPortValidateInterruptPriority
  [Calls]
  - >> osThreadFlagsSet
  [Address Reference Count : 1]
  - referee.o(.text.Referee_Init)

  Referee_IdleLineCallback (Thumb, 14 bytes, Stack size 8 bytes, referee.o(.text.Referee_IdleLineCallback))
  [Stack]

  - Max Depth = 48
  - Call Chain = Referee_IdleLineCallback ⇒ HAL_UART_AbortReceive_IT ⇒ HAL_UART_AbortReceiveCpltCallback ⇒ UART_Get
  [Calls]
  - >> HAL_UART_AbortReceive_IT
  - >> BSP_UART_GetHandle
  [Address Reference Count : 1]
  - referee.o(.text.Referee_Init)

  Referee_RxCpltCallback (Thumb, 22 bytes, Stack size 8 bytes, referee.o(.text.Referee_RxCpltCallback))
  [Stack]

  - Max Depth = 144
  - Call Chain = Referee_RxCpltCallback ⇒ osThreadFlagsSet ⇒ xTaskGenericNotifyFromISR ⇒ vPortValidateInterruptPriority
  [Calls]
  - >> osThreadFlagsSet
  [Address Reference Count : 1]
  - referee.o(.text.Referee_Init)

  Ai_IdleLineCallback (Thumb, 22 bytes, Stack size 8 bytes, ai.o(.text.Ai_IdleLineCallback))
  [Stack]

  - Max Depth = 144
  - Call Chain = Ai_IdleLineCallback ⇒ osThreadFlagsSet ⇒ xTaskGenericNotifyFromISR ⇒ vPortValidateInterruptPriority
  [Calls]
  - >> osThreadFlagsSet
  [Address Reference Count : 1]
  - ai.o(.text.AI_Init)

  Ai_RxCpltCallback (Thumb, 22 bytes, Stack size 8 bytes, ai.o(.text.Ai_RxCpltCallback))
  [Stack]

  - Max Depth = 144
  - Call Chain = Ai_RxCpltCallback ⇒ osThreadFlagsSet ⇒ xTaskGenericNotifyFromISR ⇒ vPortValidateInterruptPriority
  [Calls]
  - >> osThreadFlagsSet
  [Address Reference Count : 1]
  - ai.o(.text.AI_Init)

  Chassis_CalcWz (Thumb, 232 bytes, Stack size 40 bytes, chassis.o(.text.Chassis_CalcWz))
  [Stack]

  - Max Depth = 128
  - Call Chain = Chassis_CalcWz ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_dmul
  - >> __aeabi_dadd
  - >> __aeabi_f2d
  - >> __aeabi_d2f
  - >> __hardfp_sinf
  [Called By]
  - >> Chassis_Control

  Chassis_SetMode (Thumb, 244 bytes, Stack size 32 bytes, chassis.o(.text.Chassis_SetMode))
  [Stack]

  - Max Depth = 128
  - Call Chain = Chassis_SetMode ⇒ PID_Reset ⇒ LowPassFilter2p_Reset ⇒ LowPassFilter2p_Apply ⇒ __ARM_isinf
  [Calls]
  - >> PID_Reset
  - >> LowPassFilter2p_Reset
  - >> srand
  - >> rand
  [Called By]
  - >> Chassis_Control

  Gimbal_SetMode (Thumb, 256 bytes, Stack size 24 bytes, gimbal.o(.text.Gimbal_SetMode))
  [Stack]

  - Max Depth = 120
  - Call Chain = Gimbal_SetMode ⇒ PID_Reset ⇒ LowPassFilter2p_Reset ⇒ LowPassFilter2p_Apply ⇒ __ARM_isinf
  [Calls]
  - >> PID_Reset
  - >> LowPassFilter2p_Reset
  - >> AHRS_ResetEulr
  [Called By]
  - >> Gimbal_Control

  Shoot_HeatLimit (Thumb, 380 bytes, Stack size 24 bytes, shoot.o(.text.Shoot_HeatLimit))
  [Stack]

  - Max Depth = 24
  - Call Chain = Shoot_HeatLimit
  [Calls]
  - >> __hardfp_floorf
  [Called By]
  - >> Shoot_Control

  Shoot_SetMode (Thumb, 328 bytes, Stack size 32 bytes, shoot.o(.text.Shoot_SetMode))
  [Stack]

  - Max Depth = 128
  - Call Chain = Shoot_SetMode ⇒ PID_Reset ⇒ LowPassFilter2p_Reset ⇒ LowPassFilter2p_Apply ⇒ __ARM_isinf
  [Calls]
  - >> CircleAdd
  - >> PID_Reset
  - >> CircleError
  - >> LowPassFilter2p_Reset
  [Called By]
  - >> Shoot_Control

  Command_CaliGyro (Thumb, 1048 bytes, Stack size 216 bytes, cli.o(.text.Command_CaliGyro))
  [Stack]

  - Max Depth = 388
  - Call Chain = Command_CaliGyro ⇒ osMessageQueueGet ⇒ xQueueReceive ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> osThreadSuspend
  - >> osThreadResume
  - >> osMessageQueueGet
  - >> Config_Set
  - >> Config_Get
  - >> BMI088_GyroStable
  - >> __aeabi_f2d
  - >> snprintf
  [Address Reference Count : 1]
  - cli.o(.rodata.command_table)

  Command_Config (Thumb, 1246 bytes, Stack size 200 bytes, cli.o(.text.Command_Config))
  [Stack]

  - Max Depth = 320
  - Call Chain = Command_Config ⇒ Config_Set ⇒ BSP_Flash_EraseSector ⇒ HAL_FLASHEx_Erase ⇒ FLASH_Erase_Sector ⇒ assert_failed
  [Calls]
  - >> Config_Set
  - >> Config_GetRobotParam
  - >> Config_GetRobotNameMap
  - >> Config_GetPilotNameMap
  - >> Config_GetPilotCfg
  - >> Config_Get
  - >> FreeRTOS_CLIGetParameter
  - >> snprintf
  - >> strncmp
  - >> __aeabi_memclr4
  [Address Reference Count : 1]
  - cli.o(.rodata.command_table)

  Command_Endian (Thumb, 312 bytes, Stack size 40 bytes, cli.o(.text.Command_Endian))
  [Stack]

  - Max Depth = 80
  - Call Chain = Command_Endian ⇒ snprintf
  [Calls]
  - >> snprintf
  [Address Reference Count : 1]
  - cli.o(.rodata.command_table)

  Command_SetGimbalLim (Thumb, 432 bytes, Stack size 368 bytes, cli.o(.text.Command_SetGimbalLim))
  [Stack]

  - Max Depth = 540
  - Call Chain = Command_SetGimbalLim ⇒ osMessageQueueGet ⇒ xQueueReceive ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> osThreadSuspend
  - >> osThreadResume
  - >> osMessageQueueGet
  - >> Config_Set
  - >> Config_Get
  - >> __aeabi_f2d
  - >> snprintf
  [Address Reference Count : 1]
  - cli.o(.rodata.command_table)

  Command_SetMechZero (Thumb, 418 bytes, Stack size 400 bytes, cli.o(.text.Command_SetMechZero))
  [Stack]

  - Max Depth = 572
  - Call Chain = Command_SetMechZero ⇒ osMessageQueueGet ⇒ xQueueReceive ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> osThreadSuspend
  - >> osThreadResume
  - >> osMessageQueueGet
  - >> Config_Set
  - >> Config_Get
  - >> __aeabi_f2d
  - >> snprintf
  [Address Reference Count : 1]
  - cli.o(.rodata.command_table)

  Command_Stats (Thumb, 562 bytes, Stack size 96 bytes, cli.o(.text.Command_Stats))
  [Stack]

  - Max Depth = 316
  - Call Chain = Command_Stats ⇒ vTaskList ⇒ uxTaskGetSystemState ⇒ prvListTasksWithinSingleList ⇒ vTaskGetInfo ⇒ xTaskResumeAll ⇒ xTaskIncrementTick ⇒ vListInsertEnd
  [Calls]
  - >> vPortGetHeapStats
  - >> vTaskList
  - >> vTaskGetRunTimeStats
  - >> __aeabi_f2d
  - >> snprintf
  - >> strncpy
  [Address Reference Count : 1]
  - cli.o(.rodata.command_table)

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

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

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

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

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

  - >> _printf_core

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

  - >> _printf_core

  _snputc (Thumb, 22 bytes, Stack size 0 bytes, printfa.o(i._snputc))
  [Address Reference Count : 2]

  - printfa.o(i.__0vsnprintf)
  - printfa.o(i.__0snprintf)

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

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

  ### Undefined Global Symbols