|
|
不同的功能函數(shù)可以單獨定義一套自己的計時時基變量(通常是1ms)、調(diào)用標(biāo)志、內(nèi)部子步驟執(zhí)行號(step)等等。其中把時基變量放進定時器里面累加或遞減,一些你想要共享給外部調(diào)用數(shù)據(jù)可以定義成全局變量、方便獨立調(diào)試排除問題。 以下是我常用的程序框架 (這里隨便放了一段)
void Demon_B(void) {
if(lgRunTime_B <cTimes_B) return; //定時時間未到 return不往下執(zhí)行。
{
lgRunTime_B = 0; //定時時間清0
if(FLAG_B & SET_Flow1){ //需要演示的標(biāo)志立起?
if(cgStep_B==0){ //步驟0
//執(zhí)行代碼
cTimes_B = 10; //延時10ms
}else if(cgStep_B==1){ //步驟1
//執(zhí)行代碼
cTimes_B = 1000;//延時1000ms
} else{;}
if(++cgStep_B>5) cgStep_B = 0; //步驟號大于5
}}}
按照這樣思路創(chuàng)建不同功能的ABCD函數(shù)(名字懶得取-_-),每個函數(shù)有自己的獨立延時而不會引起干擾動作。執(zhí)行步驟號中也可以塞入一些帶返回值函數(shù)、其他功能的全局變量、標(biāo)志什么的 if 判斷一下,不符合就簡單粗暴的return掉,前提是你自己的邏輯思路要清晰,原則上應(yīng)盡量減少函數(shù)之間的耦合以提高效率。最后主調(diào)函中用 FLAG_B 標(biāo)志調(diào)用或關(guān)閉它們,很方便靈活。 |
|