背景
在日常工作或者生活中,使用交互圖來描述想法,往往相對于文字來說,可讀性更高,同時一定程度上可以提高溝通效率,但是苦于,不想對一堆控件拖拖拉拉,本人就是一個很討厭畫圖,但是又不得不畫圖來節約溝通效率,降低溝通的人。
plantUML很好的滿足了這種日常需求,可以通過代碼的形式來畫圖
自主入門資料
一小時實踐入門 PlantUML
這里推薦一個在線編輯工具
planttext
方便操作,不需要額外再下載軟件
示例
@startuml
title 主任務執行流程圖
start
:main;
:main_systask(systask_Obj);
:sysytaskInit;
:打開總中斷Gsp_Hal_Rcc_Enable_irq();
:系統運行變量初始化;
:SP_T議棧初始化;
:SP_T對象回調函數初始化;
:向系統注冊10ms定時器用于main_task使用;
if (APP_BMS)
:注冊1ms定時器-用于bms中ccs和cst的快速發送;
else
endif
if (GSP_FMU_SUPPORT)
:falsh存儲初始化smu_Obj.init();
else
endif
:系統運行環境初始化①;
:關閉總中斷;
if(GSP_FMU_SUPPORT)
:SCU存儲運行環境初始化(主要讀取驅動板卡配置用于初始化外設);
endif
:硬件資源外設初始化;
if(GSP_FMU_SUPPORT)
:更新軟件版本信息內容;
else if(FOR_SGCC)
:針對國網更新部分信息;
else
:記錄程序啟動日志(日志中會先記錄啟動-后記錄配置異常信息);
:系統配置初始化;
endif
:喂狗Gsp_Hal_Sys_WatchDog();
if(GSP_FMU_SUPPORT)
:底層驅動管理單元DMU初始化(方式1);
else
:底層驅動管理單元DMU初始化(方式2);
endif
if(GSP_FMU_SUPPORT)
:設置波特率sysDevParaSetByCfg();
else
endif
:喂狗Gsp_Hal_Sys_WatchDog();
:imu層初始化imu_Obj.init();
:gsp自身任務初始化GspRun_Obj.init();
:APP數據初始化appFunc_Obj.init();
:打開總中斷Gsp_Hal_Rcc_Enable_irq();
if(UPDATE_BOOT_ENABLE)
:UpdateBootloader()(條件選配);
else
endif
while(systaskMain主任務)
:HAL_GetTick();
:driver固定任務Gsp_Hal_Sys_Main();
if(systimer_10ms>0)
:計數清零;
:喂狗;
else if(支持工裝模式并且置位)
:輪詢工裝任務;
else if(正常模式)
:dmu調度任務;
:imu數據映射;
:執行app主程序;
:母聯自動測試條件執行;
else
endif
:SMU存儲任務執行;
:gsp_run;
:時鐘處理;
endwhile-[hidden]->detach
@enduml
可以將上述代碼粘貼到推薦的在線planttext試試看效果。