STM32定時(shí)器高效時(shí)間片學(xué)習(xí)
常規(guī)單片機(jī)運(yùn)行程序如下:
while(1)
{
.....
}
類似于一種順序執(zhí)行的方法,執(zhí)行起來較為死板,一旦某一行發(fā)生錯(cuò)誤的時(shí)候就會(huì)造成整個(gè)程序的跑飛,基于以上傳統(tǒng)開發(fā)所有的缺點(diǎn)??梢栽O(shè)置相關(guān)的定時(shí)器,進(jìn)行某種時(shí)間片的控制。
首先設(shè)置定時(shí)器的中斷,按照正常的配置相關(guān)的時(shí)間基點(diǎn)。
例如:將預(yù)裝載寄存器存放20-1,將預(yù)分頻寄存器裝360-1,計(jì)數(shù)器沒溢出一次形成的是0.5ms的時(shí)間,以此為時(shí)間基準(zhǔn),使能溢出中斷。
之后可以在中斷服務(wù)函數(shù)內(nèi)設(shè)置相關(guān)的計(jì)數(shù)全局變量,每中斷一次,對(duì)相對(duì)應(yīng)的時(shí)間變量+1:
05ms++;
1ms++;
... ...
1000ms++;
在主函數(shù)之中根據(jù)相關(guān)的全局變量,可以每到達(dá)以此時(shí)間點(diǎn)變執(zhí)行相關(guān)的時(shí)間
類似如下:
if(05ms=ON)
{
05ms=OFF;
... ...
}
else if(1ms=ON)
{
1ms=OFF
... ...
}
。。。
else if(1000ms=ON)
{
1000ms=OFF
... ...
}
注:... ...為添加的函數(shù)
分析:當(dāng)設(shè)置0.5ms為時(shí)間基點(diǎn)的時(shí)候,第一次溢出的時(shí)候,執(zhí)行一次里面的函數(shù)此時(shí)計(jì)時(shí)0.5ms,第二次溢出的時(shí)候此時(shí)按照順序結(jié)構(gòu)執(zhí)行又一次執(zhí)行05ms內(nèi)的函數(shù)。此時(shí)1ms時(shí)間變量也被置為故此時(shí)也執(zhí)行一次。
總結(jié):可以設(shè)置合適的時(shí)間點(diǎn),沒過一個(gè)時(shí)間段,此函數(shù)執(zhí)行一次。