日本强好片久久久久久AAA_色综合久久天天综合观看_久久精品国产亚洲av日韩_久久久久一级片

程控直流電源工程師講解:嵌入式單片機程序架構(gòu)之時間片輪詢法

時間片輪詢法,在很多書籍中有提到,而且有很多時候都是與操作系統(tǒng)一起出現(xiàn),也就是說很多時候是操作系統(tǒng)中使用了這一方法。不過程控直流電源工程師這里要說的這個時間片輪詢法并不是掛在操作系統(tǒng)下,而是在前后臺程序中使用此法。也是本貼要詳細(xì)說明和介紹的方法。


對于時間片輪詢法,雖然有不少書籍都有介紹,但大多說得并不系統(tǒng),只是提提概念而已。下面本人將詳細(xì)介紹本人模式,并參考別人的代碼建立的一個時間片輪詢架構(gòu)程序的方法,我想將給初學(xué)者有一定的借鑒性。

 

使用1個定時器,可以是任意的定時器,這里不做特殊說明,下面假設(shè)有3個任務(wù),那么程控直流電源工程師應(yīng)該做如下工作:


1. 初始化定時器,這里假設(shè)定時器的定時中斷為1ms(當(dāng)然你可以改成10ms,這個和操作系統(tǒng)一樣,中斷過于頻繁效率就低,中斷太長,實時性差)。

 

2. 定義一個數(shù)值:

程控直流電源工程師講解:嵌入式單片機程序架構(gòu)之時間片輪詢法

3. 在定時器中斷服務(wù)函數(shù)中添加: 

程控直流電源工程師講解:嵌入式單片機程序架構(gòu)之時間片輪詢法

代碼解釋:定時中斷服務(wù)函數(shù),在中斷中逐個判斷,如果定時值為0了,表示沒有使用此定時器或此定時器已經(jīng)完成定時,不著處理。否則定時器減一,知道為零時,相應(yīng)標(biāo)志位值1,表示此任務(wù)的定時值到了。

 

4. 在程控直流電源工程師的應(yīng)用程序中,在需要的應(yīng)用定時的地方添加如下代碼,下面就以任務(wù)1為例:

程控直流電源工程師講解:嵌入式單片機程序架構(gòu)之時間片輪詢法

到此程控直流電源工程師只需要在任務(wù)中判斷TaskMark[0] 是否為0x01即可。其他任務(wù)添加相同,至此一個定時器的復(fù)用問題就實現(xiàn)了。用需要的朋友可以試試,效果不錯哦。。。。。。。。。。。

 

通過上面對1個定時器的復(fù)用程控直流電源工程師可以看出,在等待一個定時的到來的同時程控直流電源工程師可以循環(huán)判斷標(biāo)志位,同時也可以去執(zhí)行其他函數(shù)。

循環(huán)判斷標(biāo)志位:

那么程控直流電源工程師可以想想,如果循環(huán)判斷標(biāo)志位,是不是就和上面介紹的順序執(zhí)行程序是一樣的呢?一個大循環(huán),只是這個延時比普通的for循環(huán)精確一些,可以實現(xiàn)精確延時。

執(zhí)行其他函數(shù):

那么如果程控直流電源工程師在一個函數(shù)延時的時候去執(zhí)行其他函數(shù),充分利用CPU時間,是不是和操作系統(tǒng)有些類似了呢?但是操作系統(tǒng)的任務(wù)管理和切換是非常復(fù)雜的。下面程控直流電源工程師就將利用此方法架構(gòu)一直新的應(yīng)用程序。

時間片輪詢法的架構(gòu):

1.設(shè)計一個結(jié)構(gòu)體:

程控直流電源工程師講解:嵌入式單片機程序架構(gòu)之時間片輪詢法

這個結(jié)構(gòu)體的設(shè)計非常重要,一個用4個參數(shù),注釋說的非常詳細(xì),這里不在描述。

 

2. 任務(wù)運行標(biāo)志出來,此函數(shù)就相當(dāng)于中斷服務(wù)函數(shù),需要在定時器的中斷服務(wù)函數(shù)中調(diào)用此函數(shù),這里獨立出來,并于移植和理解。

程控直流電源工程師講解:嵌入式單片機程序架構(gòu)之時間片輪詢法

大家認(rèn)真對比一下次函數(shù),和上面定時復(fù)用的函數(shù)是不是一樣的呢?

 程控直流電源工程師講解:嵌入式單片機程序架構(gòu)之時間片輪詢法

3. 任務(wù)處理 

此函數(shù)就是判斷什么時候該執(zhí)行那一個任務(wù)了,實現(xiàn)任務(wù)的管理操作,應(yīng)用者只需要在main()函數(shù)中調(diào)用此函數(shù)就可以了,并不需要去分別調(diào)用和處理任務(wù)函數(shù)。


到此,一個時間片輪詢應(yīng)用程序的架構(gòu)就建好了,大家看看是不是非常簡單呢?此架構(gòu)只需要兩個函數(shù),一個結(jié)構(gòu)體,為了應(yīng)用方面下面將再建立一個枚舉型變量。


下面我就就說說怎樣應(yīng)用吧,假設(shè)程控直流電源工程師有三個任務(wù):時鐘顯示,按鍵掃描,和工作狀態(tài)顯示。

 

1. 定義一個上面定義的那種結(jié)構(gòu)體變量 

在定義變量時,程控直流電源工程師已經(jīng)初始化了值,這些值的初始化,非常重要,跟具體的執(zhí)行時間優(yōu)先級等都有關(guān)系,這個需要自己掌握。

 微信圖片_20171115104316.png

①大概意思是,程控直流電源工程師有三個任務(wù),沒1s執(zhí)行以下時鐘顯示,因為程控直流電源工程師的時鐘最小單位是1s,所以在秒變化后才顯示一次就夠了。


②由于按鍵在按下時會參數(shù)抖動,而程控直流電源工程師知道一般按鍵的抖動大概是20ms,那么程控直流電源工程師在順序執(zhí)行的函數(shù)中一般是延伸20ms,而這里程控直流電源工程師每20ms掃描一次,是非常不錯的出來,即達到了消抖的目的,也不會漏掉按鍵輸入。


③為了能夠顯示按鍵后的其他提示和工作界面,程控直流電源工程師這里設(shè)計每30ms顯示一次,如果你覺得反應(yīng)慢了,你可以讓這些值小一點。后面的名稱是對應(yīng)的函數(shù)名,你必須在應(yīng)用程序中編寫這函數(shù)名稱和這三個一樣的任務(wù)。

 

2. 任務(wù)列表

程控直流電源工程師講解:嵌入式單片機程序架構(gòu)之時間片輪詢法

 好好看看,程控直流電源工程師這里定義這個任務(wù)清單的目的其實就是參數(shù)TASKS_MAX的值,其他值是沒有具體的意義的,只是為了清晰的表面任務(wù)的關(guān)系而已。

 

3. 編寫任務(wù)函數(shù)

程控直流電源工程師講解:嵌入式單片機程序架構(gòu)之時間片輪詢法

 現(xiàn)在你就可以根據(jù)自己的需要編寫任務(wù)了。

 

4. 主函數(shù)

 程控直流電源工程師講解:嵌入式單片機程序架構(gòu)之時間片輪詢法

到此程控直流電源工程師的時間片輪詢這個應(yīng)用程序的架構(gòu)就完成了,你只需要在程控直流電源工程師提示的地方添加你自己的任務(wù)函數(shù)就可以了。是不是很簡單啊,有沒有點操作系統(tǒng)的感覺在里面?

圖片加載中...

在線留言

◎歡迎您的留言,您也可以通過以下方式聯(lián)系我們:

◎客戶服務(wù)熱線:021-51095123

◎郵箱:xin021@126.com

展開