新增引用关系图工具 tools/refgraph:解析 #include 生成文件级/模块级引用图,项目变化后重跑更新

This commit is contained in:
2026-09-16 01:45:44 +08:00
parent 1817fe792f
commit ad0ec41385
9 changed files with 46547 additions and 1 deletions
+539
View File
@@ -0,0 +1,539 @@
digraph refgraph_full {
graph [rankdir=LR, bgcolor="white", labelloc=t, label="STM32F4-Base 项目文件引用关系图(项目代码视图)", fontname="Microsoft YaHei", fontsize=18];
node [fontname="Microsoft YaHei", fontsize=10, shape=box, style="rounded,filled"];
edge [fontname="Microsoft YaHei", fontsize=8];
"App/app_cfg.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/app_main.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/app_main.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/cfg_file.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/cfg_file.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/cfg_file_store.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/cfg_file_store_mcu.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/log/sys_log.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/log/sys_log_mcu.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/sys_events.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/task/adc_task.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/task/adc_task.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/task/net_task.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/task/net_task.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/task/rs485_task.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/task/rs485_task.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/task/ui_task.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/task/ui_task.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/time_sync.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/time_sync.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/util/crc.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/util/crc.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/util/ringbuf.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/util/ringbuf.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/util/sys_clock.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/util/sys_clock.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/CH395F/ch395f.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/CH395F/ch395f.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/GD5F2GQ5UE/nand_ftl.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/GD5F2GQ5UE/nand_ftl.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/NET/lftpd/lftpd.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Drivers/BSP/NET/net_config.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/NET/net_select.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/NET/net_select.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/NET/net_socket.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/NET/net_socket.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/NET/net_types.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/NETCFG/net_cfg.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/NETCFG/net_cfg.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/NETCFG/net_cfg_legacy.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/NETCFG/net_cfg_legacy.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/RS485/rs485.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/RS485/rs485.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/SD2506/sd2506.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/SD2506/sd2506.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/TPAFE5160/tpafe5160.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/TPAFE5160/tpafe5160.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_content_page.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_content_page.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_deco.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_deco.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_font_cn_12.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_menu.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_menu.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_menu_tab.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_menu_tab.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_menu_view.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_menu_view.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_net_sink.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_net_sink.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_net_sink_backend.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_net_sink_backend_mcu.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_page_ac.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_page_ac.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_page_dc.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_page_dc.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_page_device_info.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_page_device_info.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_page_net_cfg.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_page_net_cfg.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_page_password.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_page_password.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_page_runlog.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_page_runlog.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_page_selftest.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_page_selftest.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_port.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_port.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_pwd_def.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_standby.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/UI/ui_standby.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/dbg_cfg.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/BSP/dbg_log.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Inc/FreeRTOSConfig.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Inc/dma.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Inc/gpio.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Inc/i2c.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Inc/main.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Inc/spi.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Inc/stm32f4xx_hal_conf.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Inc/stm32f4xx_it.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Inc/usart.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"Lib/FatFs/diskio.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Lib/FatFs/ff.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Lib/dhara/map.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Lib/dhara/nand.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Lib/lvgl/lvgl.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Middlewares/Third_Party/FreeRTOS/Source/include/task.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"Src/dma.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Src/freertos.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Src/gpio.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Src/i2c.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Src/main.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Src/spi.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Src/stm32f4xx_hal_msp.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Src/stm32f4xx_hal_timebase_tim.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Src/stm32f4xx_it.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Src/system_stm32f4xx.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"Src/usart.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"simulator/SDL2/SDL2-2.32.10/include/SDL.h" [fillcolor="#f3f4f6", color="#9ca3af"];
"simulator/dbg_log.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"simulator/lv_conf.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"simulator/main.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"simulator/sim/cfg_file_store_sim.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"simulator/sim/net_socket_sim.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"simulator/sim/sim_port.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"simulator/sim/sim_port.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"simulator/sim/sim_syslog.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"simulator/sim/ui_net_sink_backend_sim.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"test/ch395f_test.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"test/ch395f_test_task.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"test/ch395f_test_task.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"test/gd5f_test.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"test/gd5f_test_task.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"test/net_test_task.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"test/net_test_task.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"test/sd2506_test.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"test/sd2506_test_task.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"test/storage_test.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"test/storage_test_task.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"test/test_config.c" [fillcolor="#dbeafe", color="#1d4ed8"];
"test/test_config.h" [fillcolor="#dbeafe", color="#1d4ed8"];
"外部/系统头文件" [shape=ellipse, fillcolor="#fef3c7", color="#d97706", fontsize=12];
"App/app_main.c" -> "App/app_cfg.h" [color="#2563eb", penwidth=1.0];
"App/app_main.c" -> "App/app_main.h" [color="#2563eb", penwidth=1.0];
"App/app_main.c" -> "App/log/sys_log.h" [color="#2563eb", penwidth=1.0];
"App/app_main.c" -> "App/util/sys_clock.h" [color="#2563eb", penwidth=1.0];
"App/app_main.c" -> "Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h" [color="#2563eb", penwidth=1.0];
"App/app_main.c" -> "Drivers/BSP/RS485/rs485.h" [color="#2563eb", penwidth=1.0];
"App/app_main.c" -> "Drivers/BSP/SD2506/sd2506.h" [color="#2563eb", penwidth=1.0];
"App/app_main.c" -> "Drivers/BSP/TPAFE5160/tpafe5160.h" [color="#2563eb", penwidth=1.0];
"App/app_main.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"App/app_main.c" -> "Inc/main.h" [color="#2563eb", penwidth=1.0];
"App/app_main.c" -> "Inc/usart.h" [color="#2563eb", penwidth=1.0];
"App/app_main.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"App/cfg_file.c" -> "App/cfg_file.h" [color="#2563eb", penwidth=1.0];
"App/cfg_file.c" -> "App/cfg_file_store.h" [color="#2563eb", penwidth=1.0];
"App/cfg_file.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"App/cfg_file.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"App/cfg_file.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"App/cfg_file_store.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"App/cfg_file_store_mcu.c" -> "App/cfg_file_store.h" [color="#2563eb", penwidth=1.0];
"App/cfg_file_store_mcu.c" -> "Lib/FatFs/ff.h" [color="#94a3b8", penwidth=0.7];
"App/cfg_file_store_mcu.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"App/log/sys_log.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"App/log/sys_log_mcu.c" -> "App/log/sys_log.h" [color="#2563eb", penwidth=1.0];
"App/log/sys_log_mcu.c" -> "App/util/sys_clock.h" [color="#2563eb", penwidth=1.0];
"App/log/sys_log_mcu.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"App/log/sys_log_mcu.c" -> "Lib/FatFs/ff.h" [color="#94a3b8", penwidth=0.7];
"App/log/sys_log_mcu.c" -> "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h" [color="#94a3b8", penwidth=0.7];
"App/log/sys_log_mcu.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"App/sys_events.h" -> "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h" [color="#94a3b8", penwidth=0.7];
"App/task/adc_task.c" -> "App/task/adc_task.h" [color="#2563eb", penwidth=1.0];
"App/task/adc_task.c" -> "Drivers/BSP/TPAFE5160/tpafe5160.h" [color="#2563eb", penwidth=1.0];
"App/task/adc_task.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"App/task/adc_task.c" -> "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h" [color="#94a3b8", penwidth=0.7];
"App/task/net_task.c" -> "App/log/sys_log.h" [color="#2563eb", penwidth=1.0];
"App/task/net_task.c" -> "App/sys_events.h" [color="#2563eb", penwidth=1.0];
"App/task/net_task.c" -> "App/task/net_task.h" [color="#2563eb", penwidth=1.0];
"App/task/net_task.c" -> "Drivers/BSP/CH395F/ch395f.h" [color="#2563eb", penwidth=1.0];
"App/task/net_task.c" -> "Drivers/BSP/NET/net_select.h" [color="#2563eb", penwidth=1.0];
"App/task/net_task.c" -> "Drivers/BSP/NET/net_socket.h" [color="#2563eb", penwidth=1.0];
"App/task/net_task.c" -> "Drivers/BSP/NETCFG/net_cfg.h" [color="#2563eb", penwidth=1.0];
"App/task/net_task.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"App/task/net_task.c" -> "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h" [color="#94a3b8", penwidth=0.7];
"App/task/net_task.c" -> "test/test_config.h" [color="#2563eb", penwidth=1.0];
"App/task/net_task.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"App/task/rs485_task.c" -> "App/task/rs485_task.h" [color="#2563eb", penwidth=1.0];
"App/task/rs485_task.c" -> "Drivers/BSP/RS485/rs485.h" [color="#2563eb", penwidth=1.0];
"App/task/rs485_task.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"App/task/rs485_task.c" -> "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h" [color="#94a3b8", penwidth=0.7];
"App/task/ui_task.c" -> "App/sys_events.h" [color="#2563eb", penwidth=1.0];
"App/task/ui_task.c" -> "App/task/ui_task.h" [color="#2563eb", penwidth=1.0];
"App/task/ui_task.c" -> "App/util/sys_clock.h" [color="#2563eb", penwidth=1.0];
"App/task/ui_task.c" -> "Drivers/BSP/UI/ui_menu.h" [color="#2563eb", penwidth=1.0];
"App/task/ui_task.c" -> "Drivers/BSP/UI/ui_net_sink.h" [color="#2563eb", penwidth=1.0];
"App/task/ui_task.c" -> "Drivers/BSP/UI/ui_port.h" [color="#2563eb", penwidth=1.0];
"App/task/ui_task.c" -> "Drivers/BSP/UI/ui_standby.h" [color="#2563eb", penwidth=1.0];
"App/task/ui_task.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"App/task/ui_task.c" -> "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h" [color="#94a3b8", penwidth=0.7];
"App/task/ui_task.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"App/time_sync.c" -> "App/sys_events.h" [color="#2563eb", penwidth=1.0];
"App/time_sync.c" -> "App/time_sync.h" [color="#2563eb", penwidth=1.0];
"App/time_sync.c" -> "App/util/sys_clock.h" [color="#2563eb", penwidth=1.0];
"App/time_sync.c" -> "Drivers/BSP/NET/net_socket.h" [color="#2563eb", penwidth=1.0];
"App/time_sync.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"App/time_sync.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"App/time_sync.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"App/util/crc.c" -> "App/util/crc.h" [color="#2563eb", penwidth=1.0];
"App/util/crc.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"App/util/ringbuf.c" -> "App/util/ringbuf.h" [color="#2563eb", penwidth=1.0];
"App/util/ringbuf.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"App/util/sys_clock.c" -> "App/util/sys_clock.h" [color="#2563eb", penwidth=1.0];
"App/util/sys_clock.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"App/util/sys_clock.c" -> "Inc/main.h" [color="#2563eb", penwidth=1.0];
"App/util/sys_clock.c" -> "Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h" [color="#94a3b8", penwidth=0.7];
"App/util/sys_clock.c" -> "Middlewares/Third_Party/FreeRTOS/Source/include/task.h" [color="#94a3b8", penwidth=0.7];
"App/util/sys_clock.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"App/util/sys_clock.h" -> "Drivers/BSP/SD2506/sd2506.h" [color="#2563eb", penwidth=1.0];
"App/util/sys_clock.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/CH395F/ch395f.c" -> "Drivers/BSP/CH395F/ch395f.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/CH395F/ch395f.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/CH395F/ch395f.c" -> "Inc/spi.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/CH395F/ch395f.c" -> "Inc/usart.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/CH395F/ch395f.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/CH395F/ch395f.h" -> "Inc/main.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c" -> "Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h" -> "Inc/main.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/GD5F2GQ5UE/nand_ftl.c" -> "Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/GD5F2GQ5UE/nand_ftl.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/GD5F2GQ5UE/nand_ftl.c" -> "Lib/FatFs/diskio.h" [color="#94a3b8", penwidth=0.7];
"Drivers/BSP/GD5F2GQ5UE/nand_ftl.c" -> "Lib/FatFs/ff.h" [color="#94a3b8", penwidth=0.7];
"Drivers/BSP/GD5F2GQ5UE/nand_ftl.c" -> "Lib/dhara/map.h" [color="#94a3b8", penwidth=0.7];
"Drivers/BSP/GD5F2GQ5UE/nand_ftl.c" -> "Lib/dhara/nand.h" [color="#94a3b8", penwidth=0.7];
"Drivers/BSP/GD5F2GQ5UE/nand_ftl.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/GD5F2GQ5UE/nand_ftl.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/NET/net_select.c" -> "Drivers/BSP/CH395F/ch395f.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/NET/net_select.c" -> "Drivers/BSP/NET/net_select.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/NET/net_select.c" -> "Drivers/BSP/NET/net_socket.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/NET/net_select.c" -> "Inc/main.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/NET/net_select.c" -> "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h" [color="#94a3b8", penwidth=0.7];
"Drivers/BSP/NET/net_select.c" -> "Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h" [color="#94a3b8", penwidth=0.7];
"Drivers/BSP/NET/net_select.c" -> "Middlewares/Third_Party/FreeRTOS/Source/include/task.h" [color="#94a3b8", penwidth=0.7];
"Drivers/BSP/NET/net_select.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/NET/net_select.h" -> "Drivers/BSP/NET/net_config.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/NET/net_select.h" -> "Drivers/BSP/NET/net_types.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/NET/net_socket.c" -> "Drivers/BSP/CH395F/ch395f.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/NET/net_socket.c" -> "Drivers/BSP/NET/net_socket.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/NET/net_socket.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/NET/net_socket.c" -> "Inc/main.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/NET/net_socket.c" -> "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h" [color="#94a3b8", penwidth=0.7];
"Drivers/BSP/NET/net_socket.c" -> "Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h" [color="#94a3b8", penwidth=0.7];
"Drivers/BSP/NET/net_socket.c" -> "Middlewares/Third_Party/FreeRTOS/Source/include/task.h" [color="#94a3b8", penwidth=0.7];
"Drivers/BSP/NET/net_socket.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/NET/net_socket.h" -> "Drivers/BSP/NET/net_types.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/NET/net_socket.h" -> "Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h" [color="#94a3b8", penwidth=0.7];
"Drivers/BSP/NET/net_socket.h" -> "Middlewares/Third_Party/FreeRTOS/Source/include/task.h" [color="#94a3b8", penwidth=0.7];
"Drivers/BSP/NET/net_types.h" -> "Drivers/BSP/NET/net_config.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/NET/net_types.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/NETCFG/net_cfg.c" -> "App/cfg_file.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/NETCFG/net_cfg.c" -> "Drivers/BSP/NETCFG/net_cfg.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/NETCFG/net_cfg.c" -> "Drivers/BSP/NETCFG/net_cfg_legacy.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/NETCFG/net_cfg.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/NETCFG/net_cfg.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/NETCFG/net_cfg.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/NETCFG/net_cfg_legacy.c" -> "App/cfg_file.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/NETCFG/net_cfg_legacy.c" -> "App/cfg_file_store.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/NETCFG/net_cfg_legacy.c" -> "Drivers/BSP/NETCFG/net_cfg.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/NETCFG/net_cfg_legacy.c" -> "Drivers/BSP/NETCFG/net_cfg_legacy.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/NETCFG/net_cfg_legacy.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/NETCFG/net_cfg_legacy.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/RS485/rs485.c" -> "Drivers/BSP/RS485/rs485.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/RS485/rs485.h" -> "Inc/main.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/SD2506/sd2506.c" -> "Drivers/BSP/SD2506/sd2506.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/SD2506/sd2506.c" -> "Inc/i2c.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/SD2506/sd2506.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/SD2506/sd2506.h" -> "Inc/main.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/TPAFE5160/tpafe5160.c" -> "Drivers/BSP/TPAFE5160/tpafe5160.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/TPAFE5160/tpafe5160.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/TPAFE5160/tpafe5160.c" -> "Inc/main.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/TPAFE5160/tpafe5160.h" -> "Inc/main.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_content_page.c" -> "Drivers/BSP/UI/ui_content_page.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_content_page.c" -> "Drivers/BSP/UI/ui_deco.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_content_page.c" -> "Drivers/BSP/UI/ui_menu_view.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_content_page.c" -> "Drivers/BSP/UI/ui_page_ac.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_content_page.c" -> "Drivers/BSP/UI/ui_page_dc.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_content_page.c" -> "Drivers/BSP/UI/ui_page_device_info.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_content_page.c" -> "Drivers/BSP/UI/ui_page_net_cfg.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_content_page.c" -> "Drivers/BSP/UI/ui_page_password.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_content_page.c" -> "Drivers/BSP/UI/ui_page_runlog.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_content_page.c" -> "Drivers/BSP/UI/ui_page_selftest.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_content_page.c" -> "Drivers/BSP/UI/ui_pwd_def.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_content_page.c" -> "Drivers/BSP/UI/ui_standby.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_content_page.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_content_page.c" -> "Lib/lvgl/lvgl.h" [color="#94a3b8", penwidth=0.7];
"Drivers/BSP/UI/ui_content_page.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/UI/ui_content_page.h" -> "Lib/lvgl/lvgl.h" [color="#94a3b8", penwidth=0.7];
"Drivers/BSP/UI/ui_content_page.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/UI/ui_deco.c" -> "Drivers/BSP/UI/ui_deco.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_deco.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/UI/ui_deco.h" -> "Lib/lvgl/lvgl.h" [color="#94a3b8", penwidth=0.7];
"Drivers/BSP/UI/ui_font_cn_12.c" -> "Lib/lvgl/lvgl.h" [color="#94a3b8", penwidth=0.7];
"Drivers/BSP/UI/ui_menu.c" -> "Drivers/BSP/UI/ui_content_page.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_menu.c" -> "Drivers/BSP/UI/ui_menu.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_menu.c" -> "Drivers/BSP/UI/ui_menu_tab.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_menu.c" -> "Drivers/BSP/UI/ui_menu_view.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_menu.c" -> "Drivers/BSP/UI/ui_page_password.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_menu.c" -> "Drivers/BSP/UI/ui_pwd_def.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_menu.c" -> "Drivers/BSP/UI/ui_standby.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_menu.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_menu.c" -> "Lib/lvgl/lvgl.h" [color="#94a3b8", penwidth=0.7];
"Drivers/BSP/UI/ui_menu.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/UI/ui_menu_tab.c" -> "Drivers/BSP/UI/ui_menu_tab.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_menu_tab.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/UI/ui_menu_view.c" -> "Drivers/BSP/UI/ui_deco.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_menu_view.c" -> "Drivers/BSP/UI/ui_menu_tab.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_menu_view.c" -> "Drivers/BSP/UI/ui_menu_view.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_menu_view.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_menu_view.c" -> "Lib/lvgl/lvgl.h" [color="#94a3b8", penwidth=0.7];
"Drivers/BSP/UI/ui_menu_view.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/UI/ui_menu_view.h" -> "Lib/lvgl/lvgl.h" [color="#94a3b8", penwidth=0.7];
"Drivers/BSP/UI/ui_menu_view.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/UI/ui_net_sink.c" -> "Drivers/BSP/NET/net_socket.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_net_sink.c" -> "Drivers/BSP/NET/net_types.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_net_sink.c" -> "Drivers/BSP/UI/ui_net_sink.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_net_sink.c" -> "Drivers/BSP/UI/ui_net_sink_backend.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_net_sink.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/UI/ui_net_sink.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/UI/ui_net_sink_backend.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/UI/ui_net_sink_backend_mcu.c" -> "Drivers/BSP/UI/ui_net_sink_backend.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_net_sink_backend_mcu.c" -> "Drivers/BSP/UI/ui_port.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_net_sink_backend_mcu.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/UI/ui_page_ac.c" -> "Drivers/BSP/UI/ui_page_ac.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_page_ac.h" -> "Drivers/BSP/UI/ui_content_page.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_page_dc.c" -> "Drivers/BSP/UI/ui_page_dc.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_page_dc.h" -> "Drivers/BSP/UI/ui_content_page.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_page_device_info.c" -> "Drivers/BSP/UI/ui_page_device_info.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_page_device_info.h" -> "Drivers/BSP/UI/ui_content_page.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_page_net_cfg.c" -> "Drivers/BSP/NETCFG/net_cfg.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_page_net_cfg.c" -> "Drivers/BSP/UI/ui_page_net_cfg.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_page_net_cfg.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/UI/ui_page_net_cfg.h" -> "Drivers/BSP/UI/ui_content_page.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_page_password.c" -> "Drivers/BSP/UI/ui_page_password.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_page_password.c" -> "Drivers/BSP/UI/ui_pwd_def.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_page_password.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/UI/ui_page_password.h" -> "Drivers/BSP/UI/ui_content_page.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_page_runlog.c" -> "App/log/sys_log.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_page_runlog.c" -> "Drivers/BSP/UI/ui_page_runlog.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_page_runlog.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/UI/ui_page_runlog.h" -> "Drivers/BSP/UI/ui_content_page.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_page_selftest.c" -> "App/log/sys_log.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_page_selftest.c" -> "Drivers/BSP/UI/ui_page_selftest.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_page_selftest.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/UI/ui_page_selftest.h" -> "Drivers/BSP/UI/ui_content_page.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_port.c" -> "Drivers/BSP/UI/ui_port.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_port.c" -> "Lib/lvgl/lvgl.h" [color="#94a3b8", penwidth=0.7];
"Drivers/BSP/UI/ui_port.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/UI/ui_port.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/UI/ui_pwd_def.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/UI/ui_standby.c" -> "Drivers/BSP/UI/ui_menu_view.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_standby.c" -> "Drivers/BSP/UI/ui_standby.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_standby.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/UI/ui_standby.c" -> "Lib/lvgl/lvgl.h" [color="#94a3b8", penwidth=0.7];
"Drivers/BSP/UI/ui_standby.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/UI/ui_standby.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Drivers/BSP/dbg_log.h" -> "App/util/sys_clock.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/dbg_log.h" -> "Drivers/BSP/dbg_cfg.h" [color="#2563eb", penwidth=1.0];
"Drivers/BSP/dbg_log.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Inc/FreeRTOSConfig.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Inc/dma.h" -> "Inc/main.h" [color="#2563eb", penwidth=1.0];
"Inc/gpio.h" -> "Inc/main.h" [color="#2563eb", penwidth=1.0];
"Inc/i2c.h" -> "Inc/main.h" [color="#2563eb", penwidth=1.0];
"Inc/main.h" -> "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h" [color="#94a3b8", penwidth=0.7];
"Inc/spi.h" -> "Inc/main.h" [color="#2563eb", penwidth=1.0];
"Inc/stm32f4xx_hal_conf.h" -> "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h" [color="#94a3b8", penwidth=0.7];
"Inc/stm32f4xx_hal_conf.h" -> "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h" [color="#94a3b8", penwidth=0.7];
"Inc/stm32f4xx_hal_conf.h" -> "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h" [color="#94a3b8", penwidth=0.7];
"Inc/stm32f4xx_hal_conf.h" -> "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h" [color="#94a3b8", penwidth=0.7];
"Inc/stm32f4xx_hal_conf.h" -> "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h" [color="#94a3b8", penwidth=0.7];
"Inc/stm32f4xx_hal_conf.h" -> "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h" [color="#94a3b8", penwidth=0.7];
"Inc/stm32f4xx_hal_conf.h" -> "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h" [color="#94a3b8", penwidth=0.7];
"Inc/stm32f4xx_hal_conf.h" -> "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h" [color="#94a3b8", penwidth=0.7];
"Inc/stm32f4xx_hal_conf.h" -> "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h" [color="#94a3b8", penwidth=0.7];
"Inc/stm32f4xx_hal_conf.h" -> "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h" [color="#94a3b8", penwidth=0.7];
"Inc/stm32f4xx_hal_conf.h" -> "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h" [color="#94a3b8", penwidth=0.7];
"Inc/stm32f4xx_hal_conf.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Inc/usart.h" -> "Inc/main.h" [color="#2563eb", penwidth=1.0];
"Src/dma.c" -> "Inc/dma.h" [color="#2563eb", penwidth=1.0];
"Src/freertos.c" -> "App/cfg_file.h" [color="#2563eb", penwidth=1.0];
"Src/freertos.c" -> "App/log/sys_log.h" [color="#2563eb", penwidth=1.0];
"Src/freertos.c" -> "App/sys_events.h" [color="#2563eb", penwidth=1.0];
"Src/freertos.c" -> "App/task/net_task.h" [color="#2563eb", penwidth=1.0];
"Src/freertos.c" -> "App/time_sync.h" [color="#2563eb", penwidth=1.0];
"Src/freertos.c" -> "Drivers/BSP/CH395F/ch395f.h" [color="#2563eb", penwidth=1.0];
"Src/freertos.c" -> "Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h" [color="#2563eb", penwidth=1.0];
"Src/freertos.c" -> "Drivers/BSP/NET/lftpd/lftpd.h" [color="#94a3b8", penwidth=0.7];
"Src/freertos.c" -> "Drivers/BSP/NET/net_socket.h" [color="#2563eb", penwidth=1.0];
"Src/freertos.c" -> "Drivers/BSP/NETCFG/net_cfg.h" [color="#2563eb", penwidth=1.0];
"Src/freertos.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"Src/freertos.c" -> "Inc/main.h" [color="#2563eb", penwidth=1.0];
"Src/freertos.c" -> "Inc/usart.h" [color="#2563eb", penwidth=1.0];
"Src/freertos.c" -> "Lib/FatFs/ff.h" [color="#94a3b8", penwidth=0.7];
"Src/freertos.c" -> "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h" [color="#94a3b8", penwidth=0.7];
"Src/freertos.c" -> "Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h" [color="#94a3b8", penwidth=0.7];
"Src/freertos.c" -> "Middlewares/Third_Party/FreeRTOS/Source/include/task.h" [color="#94a3b8", penwidth=0.7];
"Src/freertos.c" -> "test/ch395f_test.h" [color="#2563eb", penwidth=1.0];
"Src/freertos.c" -> "test/ch395f_test_task.h" [color="#2563eb", penwidth=1.0];
"Src/freertos.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Src/gpio.c" -> "Inc/gpio.h" [color="#2563eb", penwidth=1.0];
"Src/i2c.c" -> "Inc/i2c.h" [color="#2563eb", penwidth=1.0];
"Src/main.c" -> "App/app_main.h" [color="#2563eb", penwidth=1.0];
"Src/main.c" -> "App/util/sys_clock.h" [color="#2563eb", penwidth=1.0];
"Src/main.c" -> "Drivers/BSP/CH395F/ch395f.h" [color="#2563eb", penwidth=1.0];
"Src/main.c" -> "Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h" [color="#2563eb", penwidth=1.0];
"Src/main.c" -> "Drivers/BSP/NET/net_select.h" [color="#2563eb", penwidth=1.0];
"Src/main.c" -> "Drivers/BSP/NET/net_socket.h" [color="#2563eb", penwidth=1.0];
"Src/main.c" -> "Drivers/BSP/RS485/rs485.h" [color="#2563eb", penwidth=1.0];
"Src/main.c" -> "Drivers/BSP/SD2506/sd2506.h" [color="#2563eb", penwidth=1.0];
"Src/main.c" -> "Drivers/BSP/TPAFE5160/tpafe5160.h" [color="#2563eb", penwidth=1.0];
"Src/main.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"Src/main.c" -> "Inc/dma.h" [color="#2563eb", penwidth=1.0];
"Src/main.c" -> "Inc/gpio.h" [color="#2563eb", penwidth=1.0];
"Src/main.c" -> "Inc/i2c.h" [color="#2563eb", penwidth=1.0];
"Src/main.c" -> "Inc/main.h" [color="#2563eb", penwidth=1.0];
"Src/main.c" -> "Inc/spi.h" [color="#2563eb", penwidth=1.0];
"Src/main.c" -> "Inc/usart.h" [color="#2563eb", penwidth=1.0];
"Src/main.c" -> "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h" [color="#94a3b8", penwidth=0.7];
"Src/main.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"Src/spi.c" -> "Inc/spi.h" [color="#2563eb", penwidth=1.0];
"Src/stm32f4xx_hal_msp.c" -> "Inc/main.h" [color="#2563eb", penwidth=1.0];
"Src/stm32f4xx_hal_timebase_tim.c" -> "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h" [color="#94a3b8", penwidth=0.7];
"Src/stm32f4xx_hal_timebase_tim.c" -> "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h" [color="#94a3b8", penwidth=0.7];
"Src/stm32f4xx_it.c" -> "Inc/main.h" [color="#2563eb", penwidth=1.0];
"Src/stm32f4xx_it.c" -> "Inc/stm32f4xx_it.h" [color="#2563eb", penwidth=1.0];
"Src/system_stm32f4xx.c" -> "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h" [color="#94a3b8", penwidth=0.7];
"Src/usart.c" -> "Inc/usart.h" [color="#2563eb", penwidth=1.0];
"Src/usart.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"simulator/dbg_log.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"simulator/main.c" -> "App/cfg_file.h" [color="#2563eb", penwidth=1.0];
"simulator/main.c" -> "App/cfg_file_store.h" [color="#2563eb", penwidth=1.0];
"simulator/main.c" -> "App/log/sys_log.h" [color="#2563eb", penwidth=1.0];
"simulator/main.c" -> "Drivers/BSP/NETCFG/net_cfg.h" [color="#2563eb", penwidth=1.0];
"simulator/main.c" -> "Drivers/BSP/UI/ui_menu.h" [color="#2563eb", penwidth=1.0];
"simulator/main.c" -> "Drivers/BSP/UI/ui_net_sink.h" [color="#2563eb", penwidth=1.0];
"simulator/main.c" -> "Drivers/BSP/UI/ui_standby.h" [color="#2563eb", penwidth=1.0];
"simulator/main.c" -> "Lib/lvgl/lvgl.h" [color="#94a3b8", penwidth=0.7];
"simulator/main.c" -> "simulator/SDL2/SDL2-2.32.10/include/SDL.h" [color="#94a3b8", penwidth=0.7];
"simulator/main.c" -> "simulator/sim/sim_port.h" [color="#2563eb", penwidth=1.0];
"simulator/main.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"simulator/sim/cfg_file_store_sim.c" -> "App/cfg_file_store.h" [color="#2563eb", penwidth=1.0];
"simulator/sim/cfg_file_store_sim.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"simulator/sim/net_socket_sim.c" -> "Drivers/BSP/NET/net_socket.h" [color="#2563eb", penwidth=1.0];
"simulator/sim/net_socket_sim.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"simulator/sim/sim_port.c" -> "Lib/lvgl/lvgl.h" [color="#94a3b8", penwidth=0.7];
"simulator/sim/sim_port.c" -> "simulator/SDL2/SDL2-2.32.10/include/SDL.h" [color="#94a3b8", penwidth=0.7];
"simulator/sim/sim_port.c" -> "simulator/sim/sim_port.h" [color="#2563eb", penwidth=1.0];
"simulator/sim/sim_port.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"simulator/sim/sim_syslog.c" -> "App/log/sys_log.h" [color="#2563eb", penwidth=1.0];
"simulator/sim/sim_syslog.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"simulator/sim/ui_net_sink_backend_sim.c" -> "Drivers/BSP/UI/ui_net_sink_backend.h" [color="#2563eb", penwidth=1.0];
"simulator/sim/ui_net_sink_backend_sim.c" -> "Drivers/BSP/UI/ui_port.h" [color="#2563eb", penwidth=1.0];
"simulator/sim/ui_net_sink_backend_sim.c" -> "Lib/lvgl/lvgl.h" [color="#94a3b8", penwidth=0.7];
"simulator/sim/ui_net_sink_backend_sim.c" -> "simulator/sim/sim_port.h" [color="#2563eb", penwidth=1.0];
"test/ch395f_test.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"test/ch395f_test_task.c" -> "App/sys_events.h" [color="#2563eb", penwidth=1.0];
"test/ch395f_test_task.c" -> "App/task/net_task.h" [color="#2563eb", penwidth=1.0];
"test/ch395f_test_task.c" -> "Drivers/BSP/CH395F/ch395f.h" [color="#2563eb", penwidth=1.0];
"test/ch395f_test_task.c" -> "Drivers/BSP/NET/net_socket.h" [color="#2563eb", penwidth=1.0];
"test/ch395f_test_task.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"test/ch395f_test_task.c" -> "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h" [color="#94a3b8", penwidth=0.7];
"test/ch395f_test_task.c" -> "test/ch395f_test.h" [color="#2563eb", penwidth=1.0];
"test/ch395f_test_task.c" -> "test/ch395f_test_task.h" [color="#2563eb", penwidth=1.0];
"test/ch395f_test_task.c" -> "test/gd5f_test.h" [color="#2563eb", penwidth=1.0];
"test/ch395f_test_task.c" -> "test/net_test_task.h" [color="#2563eb", penwidth=1.0];
"test/ch395f_test_task.c" -> "test/sd2506_test.h" [color="#2563eb", penwidth=1.0];
"test/ch395f_test_task.c" -> "test/storage_test.h" [color="#2563eb", penwidth=1.0];
"test/ch395f_test_task.c" -> "test/test_config.h" [color="#2563eb", penwidth=1.0];
"test/ch395f_test_task.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"test/gd5f_test.h" -> "Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h" [color="#2563eb", penwidth=1.0];
"test/gd5f_test.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"test/gd5f_test_task.c" -> "Drivers/BSP/GD5F2GQ5UE/nand_ftl.h" [color="#2563eb", penwidth=1.0];
"test/gd5f_test_task.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"test/gd5f_test_task.c" -> "Lib/FatFs/ff.h" [color="#94a3b8", penwidth=0.7];
"test/gd5f_test_task.c" -> "test/gd5f_test.h" [color="#2563eb", penwidth=1.0];
"test/gd5f_test_task.c" -> "test/test_config.h" [color="#2563eb", penwidth=1.0];
"test/gd5f_test_task.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"test/net_test_task.c" -> "Drivers/BSP/NET/net_select.h" [color="#2563eb", penwidth=1.0];
"test/net_test_task.c" -> "Drivers/BSP/NET/net_socket.h" [color="#2563eb", penwidth=1.0];
"test/net_test_task.c" -> "Drivers/BSP/NET/net_types.h" [color="#2563eb", penwidth=1.0];
"test/net_test_task.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"test/net_test_task.c" -> "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h" [color="#94a3b8", penwidth=0.7];
"test/net_test_task.c" -> "test/ch395f_test.h" [color="#2563eb", penwidth=1.0];
"test/net_test_task.c" -> "test/ch395f_test_task.h" [color="#2563eb", penwidth=1.0];
"test/net_test_task.c" -> "test/net_test_task.h" [color="#2563eb", penwidth=1.0];
"test/net_test_task.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"test/sd2506_test.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"test/sd2506_test_task.c" -> "Drivers/BSP/SD2506/sd2506.h" [color="#2563eb", penwidth=1.0];
"test/sd2506_test_task.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"test/sd2506_test_task.c" -> "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h" [color="#94a3b8", penwidth=0.7];
"test/sd2506_test_task.c" -> "test/sd2506_test.h" [color="#2563eb", penwidth=1.0];
"test/sd2506_test_task.c" -> "test/test_config.h" [color="#2563eb", penwidth=1.0];
"test/sd2506_test_task.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"test/storage_test.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"test/storage_test_task.c" -> "Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h" [color="#2563eb", penwidth=1.0];
"test/storage_test_task.c" -> "Drivers/BSP/GD5F2GQ5UE/nand_ftl.h" [color="#2563eb", penwidth=1.0];
"test/storage_test_task.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"test/storage_test_task.c" -> "Inc/main.h" [color="#2563eb", penwidth=1.0];
"test/storage_test_task.c" -> "Lib/FatFs/diskio.h" [color="#94a3b8", penwidth=0.7];
"test/storage_test_task.c" -> "Lib/FatFs/ff.h" [color="#94a3b8", penwidth=0.7];
"test/storage_test_task.c" -> "test/storage_test.h" [color="#2563eb", penwidth=1.0];
"test/storage_test_task.c" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
"test/test_config.c" -> "Drivers/BSP/dbg_log.h" [color="#2563eb", penwidth=1.0];
"test/test_config.c" -> "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h" [color="#94a3b8", penwidth=0.7];
"test/test_config.c" -> "test/ch395f_test_task.h" [color="#2563eb", penwidth=1.0];
"test/test_config.c" -> "test/gd5f_test.h" [color="#2563eb", penwidth=1.0];
"test/test_config.c" -> "test/sd2506_test.h" [color="#2563eb", penwidth=1.0];
"test/test_config.c" -> "test/storage_test.h" [color="#2563eb", penwidth=1.0];
"test/test_config.c" -> "test/test_config.h" [color="#2563eb", penwidth=1.0];
"test/test_config.h" -> "test/ch395f_test.h" [color="#2563eb", penwidth=1.0];
"test/test_config.h" -> "test/gd5f_test.h" [color="#2563eb", penwidth=1.0];
"test/test_config.h" -> "test/sd2506_test.h" [color="#2563eb", penwidth=1.0];
"test/test_config.h" -> "test/storage_test.h" [color="#2563eb", penwidth=1.0];
"test/test_config.h" -> "外部/系统头文件" [color="#f59e0b", penwidth=0.6, style=dashed];
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 287 KiB

+156
View File
@@ -0,0 +1,156 @@
digraph refgraph_module {
graph [rankdir=LR, bgcolor="white", labelloc=t, label="STM32F4-Base 模块引用概览", fontname="Microsoft YaHei", fontsize=18];
node [fontname="Microsoft YaHei", fontsize=12, shape=box, style="rounded,filled"];
edge [fontname="Microsoft YaHei", fontsize=10, fontcolor="#334155"];
"App" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/log" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/task" [fillcolor="#dbeafe", color="#1d4ed8"];
"App/util" [fillcolor="#dbeafe", color="#1d4ed8"];
"BSP(公共)" [fillcolor="#dbeafe", color="#1d4ed8"];
"BSP/CH395F" [fillcolor="#dbeafe", color="#1d4ed8"];
"BSP/GD5F2GQ5UE" [fillcolor="#dbeafe", color="#1d4ed8"];
"BSP/NET" [fillcolor="#dbeafe", color="#1d4ed8"];
"BSP/NETCFG" [fillcolor="#dbeafe", color="#1d4ed8"];
"BSP/RS485" [fillcolor="#dbeafe", color="#1d4ed8"];
"BSP/SD2506" [fillcolor="#dbeafe", color="#1d4ed8"];
"BSP/TPAFE5160" [fillcolor="#dbeafe", color="#1d4ed8"];
"BSP/UI" [fillcolor="#dbeafe", color="#1d4ed8"];
"CMSIS" [fillcolor="#f3f4f6", color="#9ca3af"];
"FatFs" [fillcolor="#f3f4f6", color="#9ca3af"];
"FreeRTOS" [fillcolor="#f3f4f6", color="#9ca3af"];
"HAL" [fillcolor="#f3f4f6", color="#9ca3af"];
"LVGL" [fillcolor="#f3f4f6", color="#9ca3af"];
"SDL2" [fillcolor="#f3f4f6", color="#9ca3af"];
"Src/Inc (CubeMX)" [fillcolor="#dbeafe", color="#1d4ed8"];
"dhara" [fillcolor="#f3f4f6", color="#9ca3af"];
"lftpd" [fillcolor="#f3f4f6", color="#9ca3af"];
"simulator" [fillcolor="#dbeafe", color="#1d4ed8"];
"test" [fillcolor="#dbeafe", color="#1d4ed8"];
"其他(第三方)" [fillcolor="#f3f4f6", color="#9ca3af"];
"外部/系统头文件" [shape=ellipse, fillcolor="#fef3c7", color="#d97706"];
"App" -> "App/log" [color="#2563eb", penwidth=1.2, label="×1"];
"App" -> "App/util" [color="#2563eb", penwidth=1.2, label="×2"];
"App" -> "BSP(公共)" [color="#2563eb", penwidth=1.2, label="×3"];
"App" -> "BSP/GD5F2GQ5UE" [color="#2563eb", penwidth=1.2, label="×1"];
"App" -> "BSP/NET" [color="#2563eb", penwidth=1.2, label="×1"];
"App" -> "BSP/RS485" [color="#2563eb", penwidth=1.2, label="×1"];
"App" -> "BSP/SD2506" [color="#2563eb", penwidth=1.2, label="×1"];
"App" -> "BSP/TPAFE5160" [color="#2563eb", penwidth=1.2, label="×1"];
"App" -> "FatFs" [color="#2563eb", penwidth=1.2, label="×1"];
"App" -> "FreeRTOS" [color="#2563eb", penwidth=1.2, label="×1"];
"App" -> "Src/Inc (CubeMX)" [color="#2563eb", penwidth=1.2, label="×2"];
"App" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×7"];
"App/log" -> "App/util" [color="#2563eb", penwidth=1.2, label="×1"];
"App/log" -> "BSP(公共)" [color="#2563eb", penwidth=1.2, label="×1"];
"App/log" -> "FatFs" [color="#2563eb", penwidth=1.2, label="×1"];
"App/log" -> "FreeRTOS" [color="#2563eb", penwidth=1.2, label="×1"];
"App/log" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×2"];
"App/task" -> "App" [color="#2563eb", penwidth=1.2, label="×2"];
"App/task" -> "App/log" [color="#2563eb", penwidth=1.2, label="×1"];
"App/task" -> "App/util" [color="#2563eb", penwidth=1.2, label="×1"];
"App/task" -> "BSP(公共)" [color="#2563eb", penwidth=1.2, label="×4"];
"App/task" -> "BSP/CH395F" [color="#2563eb", penwidth=1.2, label="×1"];
"App/task" -> "BSP/NET" [color="#2563eb", penwidth=1.2, label="×2"];
"App/task" -> "BSP/NETCFG" [color="#2563eb", penwidth=1.2, label="×1"];
"App/task" -> "BSP/RS485" [color="#2563eb", penwidth=1.2, label="×1"];
"App/task" -> "BSP/TPAFE5160" [color="#2563eb", penwidth=1.2, label="×1"];
"App/task" -> "BSP/UI" [color="#2563eb", penwidth=1.2, label="×4"];
"App/task" -> "FreeRTOS" [color="#2563eb", penwidth=1.2, label="×4"];
"App/task" -> "test" [color="#2563eb", penwidth=1.2, label="×1"];
"App/task" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×2"];
"App/util" -> "BSP(公共)" [color="#2563eb", penwidth=1.2, label="×1"];
"App/util" -> "BSP/SD2506" [color="#2563eb", penwidth=1.2, label="×1"];
"App/util" -> "FreeRTOS" [color="#2563eb", penwidth=1.2, label="×2"];
"App/util" -> "Src/Inc (CubeMX)" [color="#2563eb", penwidth=1.2, label="×1"];
"App/util" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×4"];
"BSP(公共)" -> "App/util" [color="#2563eb", penwidth=1.2, label="×1"];
"BSP(公共)" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×1"];
"BSP/CH395F" -> "BSP(公共)" [color="#2563eb", penwidth=1.2, label="×1"];
"BSP/CH395F" -> "Src/Inc (CubeMX)" [color="#2563eb", penwidth=1.2, label="×3"];
"BSP/CH395F" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×1"];
"BSP/GD5F2GQ5UE" -> "BSP(公共)" [color="#2563eb", penwidth=1.2, label="×2"];
"BSP/GD5F2GQ5UE" -> "FatFs" [color="#2563eb", penwidth=1.2, label="×2"];
"BSP/GD5F2GQ5UE" -> "Src/Inc (CubeMX)" [color="#2563eb", penwidth=1.2, label="×1"];
"BSP/GD5F2GQ5UE" -> "dhara" [color="#2563eb", penwidth=1.2, label="×2"];
"BSP/GD5F2GQ5UE" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×4"];
"BSP/NET" -> "BSP(公共)" [color="#2563eb", penwidth=1.2, label="×1"];
"BSP/NET" -> "BSP/CH395F" [color="#2563eb", penwidth=1.2, label="×2"];
"BSP/NET" -> "FreeRTOS" [color="#2563eb", penwidth=1.2, label="×8"];
"BSP/NET" -> "Src/Inc (CubeMX)" [color="#2563eb", penwidth=1.2, label="×2"];
"BSP/NET" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×3"];
"BSP/NETCFG" -> "App" [color="#2563eb", penwidth=1.2, label="×3"];
"BSP/NETCFG" -> "BSP(公共)" [color="#2563eb", penwidth=1.2, label="×2"];
"BSP/NETCFG" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×3"];
"BSP/RS485" -> "Src/Inc (CubeMX)" [color="#2563eb", penwidth=1.2, label="×1"];
"BSP/SD2506" -> "Src/Inc (CubeMX)" [color="#2563eb", penwidth=1.2, label="×2"];
"BSP/SD2506" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×1"];
"BSP/TPAFE5160" -> "BSP(公共)" [color="#2563eb", penwidth=1.2, label="×1"];
"BSP/TPAFE5160" -> "Src/Inc (CubeMX)" [color="#2563eb", penwidth=1.2, label="×2"];
"BSP/UI" -> "App/log" [color="#2563eb", penwidth=1.2, label="×2"];
"BSP/UI" -> "BSP(公共)" [color="#2563eb", penwidth=1.2, label="×4"];
"BSP/UI" -> "BSP/NET" [color="#2563eb", penwidth=1.2, label="×2"];
"BSP/UI" -> "BSP/NETCFG" [color="#2563eb", penwidth=1.2, label="×1"];
"BSP/UI" -> "LVGL" [color="#2563eb", penwidth=1.2, label="×9"];
"BSP/UI" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×20"];
"CMSIS" -> "HAL" [color="#94a3b8", penwidth=0.7, label="×1"];
"CMSIS" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×22"];
"FatFs" -> "App/util" [color="#94a3b8", penwidth=0.7, label="×1"];
"FatFs" -> "FreeRTOS" [color="#94a3b8", penwidth=0.7, label="×1"];
"FatFs" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×2"];
"FreeRTOS" -> "CMSIS" [color="#94a3b8", penwidth=0.7, label="×1"];
"FreeRTOS" -> "Src/Inc (CubeMX)" [color="#94a3b8", penwidth=0.7, label="×1"];
"FreeRTOS" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×14"];
"HAL" -> "CMSIS" [color="#94a3b8", penwidth=0.7, label="×13"];
"HAL" -> "Src/Inc (CubeMX)" [color="#94a3b8", penwidth=0.7, label="×1"];
"HAL" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×1"];
"LVGL" -> "FatFs" [color="#94a3b8", penwidth=0.7, label="×1"];
"LVGL" -> "FreeRTOS" [color="#94a3b8", penwidth=0.7, label="×6"];
"LVGL" -> "SDL2" [color="#94a3b8", penwidth=0.7, label="×1"];
"LVGL" -> "其他(第三方)" [color="#94a3b8", penwidth=0.7, label="×1"];
"LVGL" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×204"];
"SDL2" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×36"];
"Src/Inc (CubeMX)" -> "App" [color="#2563eb", penwidth=1.2, label="×4"];
"Src/Inc (CubeMX)" -> "App/log" [color="#2563eb", penwidth=1.2, label="×1"];
"Src/Inc (CubeMX)" -> "App/task" [color="#2563eb", penwidth=1.2, label="×1"];
"Src/Inc (CubeMX)" -> "App/util" [color="#2563eb", penwidth=1.2, label="×1"];
"Src/Inc (CubeMX)" -> "BSP(公共)" [color="#2563eb", penwidth=1.2, label="×2"];
"Src/Inc (CubeMX)" -> "BSP/CH395F" [color="#2563eb", penwidth=1.2, label="×2"];
"Src/Inc (CubeMX)" -> "BSP/GD5F2GQ5UE" [color="#2563eb", penwidth=1.2, label="×2"];
"Src/Inc (CubeMX)" -> "BSP/NET" [color="#2563eb", penwidth=1.2, label="×3"];
"Src/Inc (CubeMX)" -> "BSP/NETCFG" [color="#2563eb", penwidth=1.2, label="×1"];
"Src/Inc (CubeMX)" -> "BSP/RS485" [color="#2563eb", penwidth=1.2, label="×1"];
"Src/Inc (CubeMX)" -> "BSP/SD2506" [color="#2563eb", penwidth=1.2, label="×1"];
"Src/Inc (CubeMX)" -> "BSP/TPAFE5160" [color="#2563eb", penwidth=1.2, label="×1"];
"Src/Inc (CubeMX)" -> "CMSIS" [color="#2563eb", penwidth=1.2, label="×1"];
"Src/Inc (CubeMX)" -> "FatFs" [color="#2563eb", penwidth=1.2, label="×1"];
"Src/Inc (CubeMX)" -> "FreeRTOS" [color="#2563eb", penwidth=1.2, label="×4"];
"Src/Inc (CubeMX)" -> "HAL" [color="#2563eb", penwidth=1.2, label="×14"];
"Src/Inc (CubeMX)" -> "lftpd" [color="#2563eb", penwidth=1.2, label="×1"];
"Src/Inc (CubeMX)" -> "test" [color="#2563eb", penwidth=1.2, label="×2"];
"Src/Inc (CubeMX)" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×5"];
"dhara" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×5"];
"lftpd" -> "BSP(公共)" [color="#94a3b8", penwidth=0.7, label="×3"];
"lftpd" -> "BSP/NET" [color="#94a3b8", penwidth=0.7, label="×3"];
"lftpd" -> "FatFs" [color="#94a3b8", penwidth=0.7, label="×2"];
"lftpd" -> "FreeRTOS" [color="#94a3b8", penwidth=0.7, label="×2"];
"lftpd" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×8"];
"simulator" -> "App" [color="#2563eb", penwidth=1.2, label="×3"];
"simulator" -> "App/log" [color="#2563eb", penwidth=1.2, label="×2"];
"simulator" -> "BSP/NET" [color="#2563eb", penwidth=1.2, label="×1"];
"simulator" -> "BSP/NETCFG" [color="#2563eb", penwidth=1.2, label="×1"];
"simulator" -> "BSP/UI" [color="#2563eb", penwidth=1.2, label="×5"];
"simulator" -> "LVGL" [color="#2563eb", penwidth=1.2, label="×3"];
"simulator" -> "SDL2" [color="#2563eb", penwidth=1.2, label="×2"];
"simulator" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×6"];
"test" -> "App" [color="#2563eb", penwidth=1.2, label="×1"];
"test" -> "App/task" [color="#2563eb", penwidth=1.2, label="×1"];
"test" -> "BSP(公共)" [color="#2563eb", penwidth=1.2, label="×6"];
"test" -> "BSP/CH395F" [color="#2563eb", penwidth=1.2, label="×1"];
"test" -> "BSP/GD5F2GQ5UE" [color="#2563eb", penwidth=1.2, label="×4"];
"test" -> "BSP/NET" [color="#2563eb", penwidth=1.2, label="×4"];
"test" -> "BSP/SD2506" [color="#2563eb", penwidth=1.2, label="×1"];
"test" -> "FatFs" [color="#2563eb", penwidth=1.2, label="×3"];
"test" -> "FreeRTOS" [color="#2563eb", penwidth=1.2, label="×4"];
"test" -> "Src/Inc (CubeMX)" [color="#2563eb", penwidth=1.2, label="×1"];
"test" -> "外部/系统头文件" [color="#94a3b8", penwidth=0.7, label="×10"];
}
File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 94 KiB

+102
View File
@@ -0,0 +1,102 @@
# 项目文件引用关系图(tools/refgraph)
> 生成并维护 STM32F4-Base 的**文件级引用关系图**(`#include` 引用)。
> 工具:`tools/refgraph/gen_refgraph.py`(纯标准库)+ 成熟渲染引擎 Graphviz。
> 产物:`docs/images/引用关系图.*`(本目录图 + `.dot` + `.json`)。
## 1. 为什么自写工具(调研结论)
| 成熟工具 | 能力 | 对本需求的差距 |
|---|---|---|
| **Doxygen**(开源,C 文档标准工具) | 每文件的 include 依赖图、每函数的调用图、类协作图 | 输出按文件/函数**分散**,无单一整工程文件引用图;需配置解析全量源码 |
| **Graphviz**(开源,图布局渲染引擎 `dot`) | 渲染任意 DOT 图(分层布局) | 只做布局渲染、不解析源码 —— **本工具用它出图** |
| **cflow**(binutils) | 函数级调用图 | 粒度是函数不是文件;依赖汇编/编译产物 |
| **SciTools Understand**(商业) | 依赖图/调用树/引用映射 | 重量级付费 IDE,不可脚本化、不入构建流程 |
结论:**没有现成成熟工具能直接输出"单一、整工程、可重跑更新"的文件引用关系图**,
故按"没有则自写"原则自写解析/建模工具;布局渲染这一难点交给成熟引擎 Graphviz。
本机已通过 winget 安装 Graphviz 16.1.0(`C:\Program Files\Graphviz`)。
## 2. 生成 / 更新(一条命令)
```powershell
# 方式一:bat(任意位置可运行)
& 'tools\refgraph\gen_refgraph.bat'
# 方式二:python 直跑(等效)
& '.venv\Scripts\python.exe' tools/refgraph/gen_refgraph.py
```
**项目文件有增删改后,重跑上式即可**:产物全量重新生成并覆盖
`docs/images/引用关系图.*`,对照 `引用关系图.json` 的文本 diff 即可看出引用面变化,
然后按仓库惯例把(工具 + 产物)一并提交。
可选参数:
| 参数 | 默认 | 说明 |
|---|---|---|
| `--views full,module` | 两者 | 只出文件级 / 只出模块级 |
| `--edge-scope project\|all` | `project` | project=仅第一方代码发起的引用边(清晰);all=含第三方内部引用(完整但密集) |
| `--no-render` | 关 | 只出 `.dot`/`.json`,不调 Graphviz |
| `--quiet` | 关 | 精简控制台输出 |
## 3. 产物与图例
| 文件 | 说明 | 是否提交 |
|---|---|---|
| `引用关系图.svg` / `.dot` | **文件级引用图**(项目代码视图) | 是 |
| `引用关系图_模块.svg` / `.dot` | **模块级概览图**(目录/库聚合,边上 ×n=引用条数) | 是 |
| `引用关系图.json` | 结构化数据:全部节点/边/未解析 include 明细 | 是 |
| `引用关系图.png` | 文件级图位图预览(大,~5 MB) | 否(本地预览,可随时重出) |
图例(文件级):
- 节点:**蓝=第一方**(App/、Inc/、Src/、test/、simulator/〔除 SDL2、build〕、
Drivers/BSP/〔除 NET/lftpd〕);**灰=第三方**(Lib/、Middlewares/、
Drivers/CMSIS、HAL、lftpd、SDL2);**橙=外部/系统头文件**聚合节点。
- 边:`蓝实线` 第一方→第一方;`灰实线` 第一方→第三方;
`橙虚线` →外部/系统头文件(stdio.h 等编译器提供);
`all` 模式下另有淡点线=第三方内部引用。
模块级图把第一方按目录模块聚合(App、App/task、BSP/UI、Src/Inc (CubeMX)…)、
第三方按库聚合(LVGL、FreeRTOS、CMSIS、HAL、FatFs、dhara、lftpd、SDL2)。
## 4. 解析原理(与编译器行为对齐)
1. 扫描仓库全部 `.c/.h`(跳过 `.git`/`.venv`/`MDK-ARM`/`docs`/`simulator/build`);
2. 提取每条 `#include`(处理行尾反斜杠续行;编码按 UTF-8→GBK→Latin-1 兜底);
3. 解析顺序与编译器一致:**所在文件目录 → Keil 工程包含路径(解析自
`MDK-ARM/STM32F407-Demo.uvprojx`,自动跟随)→ 模拟器 CMake 包含路径
(`simulator/CMakeLists.txt`,脚本内 `SIM_INCLUDE_DIRS` 需手动同步)**;
4. 解析到仓库内文件 → 成边;解析不到 → 归"外部/系统头文件"(明细在 JSON
`unresolved`),与编译器查系统目录的行为一致。
5. **刻意不做"基名全库兜底"**:仓库内存在同名系统头(rapidjson 自带
`msinttypes/stdint.h`),兜底会把各处 `<stdint.h>` 误连到库内部文件产生假边
(曾产生 100+ 条假边,已验证并移除)。
## 5. 语义与已知限制
- **文本层引用**:`#if 0` 内、MCU/模拟器平台条件下的引用均计入(完整呈现项目引用面);
不评估 `#if` 条件 —— 未激活条件内的引用(如 `LV_USE_DRAW_VG_LITE=0` 时的
`vg_lite.h`)会显示为"未解析→外部",属预期。
- 仅**文件级 `#include` 引用**;不含函数级调用关系(如需,可另行用 Doxygen/cflow 补充)。
- 双端(Keil MCU / CMake 模拟器)包含路径合并解析,个别引用是"另一端视角"
(如 LVGL 的 SDL2 后端引用),属项目级引用面的如实呈现。
- 第一方/第三方划分规则见脚本头部 `classify()`;lftpd 为移植的第三方组件
(与 AGENTS.md pre-commit 排除名单一致)。
## 6. 维护
- 新增/移动第一方目录 → 改脚本 `classify()`、`FP_MODULES`;
新增第三方库 → 改 `TP_LIBS`(模块级聚合用)。
- Keil 工程包含路径变化:**自动跟随**(每次运行解析 uvprojx)。
- 模拟器包含路径变化:同步脚本 `SIM_INCLUDE_DIRS` 常量。
- 换机:`winget install Graphviz.Graphviz`(渲染依赖;缺失时工具自动跳过渲染,
仍产出 `.dot`)。
## 7. 当前数据(2026-09-16 首版)
索引 1396 个 `.c/.h`;解析 include 5588 条(解析成功 4539,外部/系统 1049,
353 种);第一方文件 126 个;去重边 4823 条。
被引用最多的第一方文件:`Drivers/BSP/dbg_log.h`(31)、`Inc/main.h`(20)、
`Drivers/BSP/NET/net_socket.h`(12)……(完整 Top10 见运行报告)。