應用系統(tǒng)設(shè)計_第1頁
應用系統(tǒng)設(shè)計_第2頁
應用系統(tǒng)設(shè)計_第3頁
應用系統(tǒng)設(shè)計_第4頁
應用系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩72頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、ARM 應用系統(tǒng)設(shè)計應用實例佘黎煌東北大學信息科學與工程學院電子信息工程研究所應用實例nLCD顯示控制nUCOS簡介n應用案例LCD顯示控制nLCD上的點的如何表示及控制?nLCD的緩沖區(qū)(Framebuffer)是如何設(shè)置的?n如何在LCD上顯示一張圖片?實現(xiàn)顯示480 x480的圖像, 24BPPFIFO1SADDR = 0 x3000000FIFO1COLCNT = 0 x1E0FIFO1ROWCNT = 0 x1E0FIFO1REALCOLCNT = 0 x1E0在480 x480屏上顯示240 x240 的圖像, 24BPPFIFO1SADDR = 0 x3001C3E0(0 x30

2、000000+4*(480*60+120)FIFO1COLCNT = 0 xF0FIFO1ROWCNT = 0 xF0FIFOSRIDE = 0 x3C0 (240*4)FIFO1REALCOLCNT = 0 xF0配置幀緩沖區(qū)與FIFO的起始地址和步幅 480 pixels480 pixels120 pixels60 pixels240 pixels240 pixels緩沖區(qū)中的數(shù)據(jù)分布LCD顯示緩沖數(shù)據(jù)格式:3210000HP1P2004HP3P4008HP5P616BPP配置范例(RGB)9602238359LCDTCON1= 0 x0013AD66LCDTCON3= 0 x002050

3、013212402TFT LCD顯示控制nW90P710 實驗教學系統(tǒng)使用的是AUO 3.0 TFT A030DL01(960 240,8 位數(shù)據(jù)總線)數(shù)字式TFT 液晶屏,n它需要在內(nèi)存中開辟出一片緩沖區(qū),將要顯示的數(shù)據(jù)先存放到緩沖區(qū)中,即存在SDRAM 中,一般按照一維數(shù)組的形式進行存儲然后把存儲數(shù)據(jù)的SDRAM 的地址送給FIFO,再送給顏色生成器,進而實現(xiàn)在屏幕上的顯示TFT LCD顯示控制LCD 控制器原理LCD 控制器模塊圖控制器模塊圖 LCD預處理程序預處理程序 LCD顏色發(fā)生器顏色發(fā)生器LCD定時發(fā)生器定時發(fā)生器LCD 預處理程序預處理程序 : 管理兩個管理兩個16個字深度的個

4、字深度的FIFO。處理由處理由CPU控制的控制的LCD寄存器。寄存器。產(chǎn)生產(chǎn)生LCD屏的定時屏的定時( HSYNC, VSYNC, VDEN,VCLK )信號。)信號。生成生成TFT或或STN LCD屏上顯示的屏上顯示的RGB數(shù)據(jù)。數(shù)據(jù)。根據(jù)由根據(jù)由LCD寄存器定義好的幀率控制和高頻寄存器定義好的幀率控制和高頻振動模式進行高頻振動控制。振動模式進行高頻振動控制。決定輸出決定輸出TFT或是或是STN類型數(shù)據(jù)。類型數(shù)據(jù)。設(shè)置復用功能nREG_GPIO_CFG6 = 0 x555555;LCD的控制寄存器 LCD控制器控制器 LCD中斷控制器中斷控制器 LCD預處理預處理 LCD FIFO控制控制n

5、顏色生成器顏色生成器 nLCD后加工后加工 nLCD定時發(fā)生器定時發(fā)生器 nLCD SRAM裝入自檢裝入自檢 通過LCD控制器設(shè)置系統(tǒng)控制器設(shè)置系統(tǒng)LCD的信息的信息通過通過LCD FIFO控制設(shè)置系統(tǒng)緩沖區(qū)的信息控制設(shè)置系統(tǒng)緩沖區(qū)的信息通過通過LCD定時發(fā)生器設(shè)置系統(tǒng)的刷新時序定時發(fā)生器設(shè)置系統(tǒng)的刷新時序LCD的控制寄存器LCDLCD控制器控制器LCDCONLCDCONLCDLCD控制器的控制寄存器控制器的控制寄存器Read/WriteRead/Write讀讀/ /寫寫000h000hLCD FIFOLCD FIFO控制控制FIFOCON LCD先進先出控制寄存器讀/寫020hFIFOSTA

6、TUSLCD FIFOs狀態(tài)只讀024hFIFO1PRMFIFO1PRMLCD FIFO1LCD FIFO1參數(shù)參數(shù)讀讀/ /寫寫028h028hFIFO2PRMLCD FIFO2參數(shù)讀/寫02ChFIFO1SADDRFIFO1SADDRLCD FIFO1LCD FIFO1傳送起始地址寄存器傳送起始地址寄存器讀讀/ /寫寫030h030hFIFO2SADDRLCD FIFO2傳送起始地址寄存器讀/寫034hFIFO1DREQCNTFIFO1DREQCNTFIFO1FIFO1數(shù)據(jù)請求傳送計數(shù)寄存器數(shù)據(jù)請求傳送計數(shù)寄存器讀讀/ /寫寫038h038hFIFO2DREQCNTFIFO2數(shù)據(jù)請求傳送計

7、數(shù)寄存器讀/寫03ChFIFO1CURADRFIFO1當前訪問地址只讀040hFIFO2CURADRFIFO2當前訪問地址只讀044hFIFO1RELACOLCNTFIFO1RELACOLCNTFIFO1 FIFO1 真實列計數(shù)寄存器真實列計數(shù)寄存器讀讀/ /寫寫048h048hFIFO2RELACOLCNTFIFO2 真實列計數(shù)寄存器讀/寫04ChnREG_LCD_LCDCON = 0 x30c05;/tft 16bpp緩沖傳送的方式nREG_LCD_FIFO1PRM = 0 xa;設(shè)定緩沖區(qū)的地址,nREG_LCD_F1SADDR = (U32) Buffer;請求傳送計數(shù)寄存器(大?。┱?/p>

8、求傳送計數(shù)寄存器(大?。﹏REG_LCD_F1DREQCNT = (Size.width 16 ) + Size.height;實際傳送的行點數(shù)nREG_LCD_FIFO1RELACOLCNT = (Size.width);LCD的控制寄存器LCDLCD定時發(fā)生器定時發(fā)生器LCDTCON1LCD定時控制寄存器1讀/寫0B0hLCDTCON2LCD定時控制寄存器2讀/寫0B4hLCDTCON3LCD定時控制寄存器3讀/寫0B8hLCDTCON4LCD定時控制寄存器4讀/寫0BChLCDTCON5LCD定時控制寄存器5讀/寫0C0hLCDTCON6LCD定時控制寄存器6只讀0C4hn REG_LC

9、D_LCDTCON1 = 0 x3b166; nREG_LCD_LCDTCON2 = 0 x3bf00f1;nREG_LCD_LCDTCON3 = 0 x105401;nREG_LCD_LCDTCON4 = 0 x20101;nREG_LCD_LCDTCON5 = 0 xe;LCD功能的實現(xiàn)n1.設(shè)置LCD控制寄存器,配制為TFT LCD,16bppn2.設(shè)置LCD緩沖區(qū)寄存器,配制為480*240像素n3.設(shè)置顯示的緩沖區(qū),n4.自動刷新顯示LCD顯示主函數(shù)nint main(void)nnLCD_IMAGE_T LCD_Size;nLCD_LOCATION_T LCD_Location;n

10、LCD_Size.width = 480;nLCD_Size.height = 240;nLCD_Location.StartX = 0;nLCD_Location.StartY = 0;nLCD_Location.EndX = 960;nLCD_Location.EndY = 240;nLCDInit();nLCDShow(LCD_Size, LCD_Location);nLCDFIFOBufferSet(image_NEU);nLCDDisplayOn();nwhile(1)nnnreturn 0;nnvoid LCDInit(void)nnREG_GPIO_CFG6 = 0 x55555

11、5;nnREG_LCD_LCDCON = 0 x30c05;/設(shè)置為16bpp,TFT LCD控制nREG_LCD_FIFO1PRM = 0 xa;/設(shè)置FIFO長度為16字,每次傳輸1字nnREG_LCD_F1DREQCNT = 0 x1e000f0;/設(shè)置屏大小為480*240nREG_LCD_FIFO1RELACOLCNT = 0 x1e0;/設(shè)置實際顯示的寬度n/LCD CLKn/以下為刷新的時序設(shè)置nREG_LCD_LCDTCON1 = 0 x3b166; nREG_LCD_LCDTCON2 = 0 x3bf00f1;nREG_LCD_LCDTCON3 = 0 x105401;nRE

12、G_LCD_LCDTCON4 = 0 x20101;nREG_LCD_LCDTCON5 = 0 xe;n顯示設(shè)置,位置,大小nvoid LCDShow(LCD_IMAGE_T Size, LCD_LOCATION_T Location)nn/設(shè)置寬度和高度的像素n REG_LCD_F1DREQCNT = (Size.width 1);n/設(shè)置顯示起始的位置nREG_LCD_DISPWINS = (Location.StartY 16) + Location.StartX;n /設(shè)置顯示結(jié)束的位置nREG_LCD_DISPWINE = (Location.EndY 16) + Location.

13、EndX;n顯示數(shù)據(jù)的地址設(shè)置nvoid LCDFIFOBufferSet(PUINT8 Buffer)nn/設(shè)置顯示緩沖區(qū)的指針nREG_LCD_F1SADDR = (U32) Buffer;n將需要的顯示的數(shù)據(jù)定義為數(shù)組nunsigned char image_NEU230400 =n0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,n0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF

14、,0XFF,n0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,n0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,LCDFIFOBufferSet(image_NEU);顯示一張圖片n提取圖片的16bpp點陣數(shù)據(jù),形成數(shù)組n將該數(shù)組的首地址設(shè)置為緩沖的基地址將數(shù)組做為顯示緩沖區(qū)LCDInit();LCDShow(LCD_Size, LCD_Location);LCDFIFOB

15、ufferSet(gImage_1); C/OSC/OS簡介簡介n C/OSC/OS特點特點n C/OSC/OS提供的系統(tǒng)服務(wù)提供的系統(tǒng)服務(wù)n C/OSC/OS的文件組織的文件組織n C/OSC/OS的多任務(wù)編程的多任務(wù)編程前后臺系統(tǒng)1.3 嵌入式操作系統(tǒng)n基本概念中斷ISR任務(wù)ISR非占先操作系統(tǒng)任務(wù)A任務(wù)B任務(wù)CISR占先操作系統(tǒng)任務(wù)A任務(wù)B任務(wù)C C/OSC/OS簡介簡介1 1、 C/OSC/OSMicro Controller O SMicro Controller O S,微控制器操作系統(tǒng)微控制器操作系統(tǒng)2、 C/OS簡介簡介n美國人Jean Labrosse 1992年完成n應用面

16、覆蓋了諸多領(lǐng)域,如照相機、醫(yī)療器械、音響設(shè)備、發(fā)動機控制、高速公路電話系統(tǒng)、自動提款機等 n1998年C/OS-II,目前的版本C/OS -II V2.61,2.72n2000年,得到美國航空管理局(FAA)的認證,可以用于飛行器中n網(wǎng)站www.ucos-II.com()u公開源代碼u可移植性(Portable) 絕大部分 C/OS-II的源碼是用移植性很強的ANSI C寫的。和微處理器硬件相關(guān)的那部分是用匯編語言寫的。匯編語言寫的部分已經(jīng)壓到最低限度,使得 C/OS-II便于移植到其他微處理器上。 C/OS-II可以在絕大多數(shù)8位、16位、32位以至64位微處理器、微控制器 、數(shù)字信號處理器

17、(DSP)上運行。u可固化(ROMable) C/OS-II是為嵌入式應用而設(shè)計的,這就意味著,只要用戶有固化手段(C編譯、連接、下載和固化), C/OS-II可以嵌入到用戶的產(chǎn)品中成為產(chǎn)品的一部分。u可裁剪(Scalable) 可以只使用 C/OS-II中應用程序需要的那些系統(tǒng)服務(wù)。也就是說某產(chǎn)品可以只使用很少幾個 C/OS-II調(diào)用,而另一個產(chǎn)品則使用了幾乎所有 C/OS-II的功能,這樣可以減少產(chǎn)品中的 C/OS-II所需的存儲器空間(RAM和ROM)。這種可剪裁性是靠條件編譯實現(xiàn)的。 C/OSC/OS的性能特點(一)的性能特點(一)u占先式(Preemptive)u多任務(wù) C/OS-I

18、I可以管理64個任務(wù),然而,目前這一版本保留8個給系統(tǒng)。應用程序最多可以有56個任務(wù)u可確定性 全部 C/OS-II的函數(shù)調(diào)用與服務(wù)的執(zhí)行時間具有可確定性。u任務(wù)棧 每個任務(wù)有自己單獨的棧, C/OS-II允許每個任務(wù)有不同的??臻g,以便壓低應用程序?qū)AM的需求。u系統(tǒng)服務(wù) C/OS-II提供很多系統(tǒng)服務(wù),例如郵箱、消息隊列、信號量、塊大小固定的內(nèi)存的申請與釋放、時間相關(guān)函數(shù)等。u中斷管理 中斷可以使正在執(zhí)行的任務(wù)暫時掛起,如果優(yōu)先級更高的任務(wù)被該中斷喚醒,則高優(yōu)先級的任務(wù)在中斷嵌套全部退出后立即執(zhí)行,中斷嵌套層數(shù)可達255層。u穩(wěn)定性與可靠性 C/OSC/OS的性能特點(二)的性能特點(二

19、)C/OS-II圖籍n描述了C/OS-II內(nèi)部的工作原理n隨書的CD中包含了源代碼n工業(yè)界最清晰的源代碼n除英文版外,有中文和韓文版ChineseKoreanEnglishISBN 1-57820-103-9美國CMP BOOK ISBN 7-81077-290-2北京航空航天大學出版社ISBN 89-951540-5-5C/OS-IIC/OS-II的各種商業(yè)應用的各種商業(yè)應用n全世界有數(shù)百種產(chǎn)品在應用全世界有數(shù)百種產(chǎn)品在應用: :nAvionics(航空電子設(shè)備)(航空電子設(shè)備)nMedicalnCell phonesnRouters and switchesnHigh-end audio

20、equipmentnWashing machines and dryersnUPS (Uninterruptible Power Supplies)nIndustrial controllersnGPS Navigation SystemsnMicrowave RadiosnInstrumentationnPoint-of-sale terminalsn更多C/OS-IIC/OS-II提供的系統(tǒng)服務(wù)提供的系統(tǒng)服務(wù)n信號量n帶互斥機制的信號量n減少優(yōu)先級倒置的問題n事件標志n消息信箱n消息隊列n內(nèi)存管理n時鐘管理n任務(wù)管理C/GUI and C/FSnC/GUIC/GUIn嵌入式的用戶界面n用A

21、NSI C書寫n支持任何8, 16, 32-bits CPUn彩色,灰度等級或黑白顯示n代碼尺寸小nC/FSC/FSn嵌入式的文件系統(tǒng)n用ANSI C書寫n支持任何8, 16, 32-bits CPUn支持SMC, MMC, SD, CF, IDE, Flash, RAM其他介質(zhì) C/OSC/OS-II-II的文件結(jié)構(gòu)的文件結(jié)構(gòu) C/OSC/OS II II中的任務(wù)中的任務(wù)n C/OSC/OS II 2.5 II 2.5版本支持版本支持6464個任務(wù),每個任務(wù)一個特定的優(yōu)先級。個任務(wù),每個任務(wù)一個特定的優(yōu)先級。數(shù)字越小,優(yōu)先級越高數(shù)字越小,優(yōu)先級越高n系統(tǒng)總是運行進入就緒態(tài)優(yōu)先級最高的任務(wù)系統(tǒng)

22、總是運行進入就緒態(tài)優(yōu)先級最高的任務(wù)n任務(wù)優(yōu)先級號就是任務(wù)編號(任務(wù)優(yōu)先級號就是任務(wù)編號(IDID). .優(yōu)先級號也被一些內(nèi)核功能優(yōu)先級號也被一些內(nèi)核功能函數(shù)調(diào)用。如函數(shù)調(diào)用。如OsTaskChangePrio( )OsTaskChangePrio( )及及OsTaskDel( ).OsTaskDel( ).n系統(tǒng)占用了系統(tǒng)占用了8 8個任務(wù)個任務(wù),保留優(yōu)先級為,保留優(yōu)先級為0 0、1 1、2 2、3 3、OS_LOWEST_PRIO-3OS_LOWEST_PRIO-3、 OS_LOWEST_PRIO-2OS_LOWEST_PRIO-2、 OS_LOWEST_PRIO-1OS_LOWEST_PR

23、IO-1、 OS_LOWEST_PRIO-0OS_LOWEST_PRIO-0n即:建議不使用上述最高即:建議不使用上述最高4 4個和最低個和最低4 4個優(yōu)先級,用戶任務(wù)仍可達個優(yōu)先級,用戶任務(wù)仍可達5656個個任務(wù)狀態(tài)任務(wù)狀態(tài)n在任一給定的時刻,任務(wù)的狀態(tài)一定是在任一給定的時刻,任務(wù)的狀態(tài)一定是以下五種狀態(tài)之一:以下五種狀態(tài)之一:n睡眠態(tài)(睡眠態(tài)(task dormanttask dormant)n就緒態(tài)(就緒態(tài)(task readytask ready)n運行態(tài)(運行態(tài)(task runningtask running)n等待狀態(tài)(等待狀態(tài)(task waitingtask waiting)

24、n中斷服務(wù)態(tài)(中斷服務(wù)態(tài)(ISR running)ISR running)睡眠態(tài)(睡眠態(tài)(task dormanttask dormant)n指任務(wù)駐留在程序空間(指任務(wù)駐留在程序空間(ROMROM或或RAMRAM),還沒有),還沒有交給系統(tǒng)來管理的狀態(tài)交給系統(tǒng)來管理的狀態(tài)n任務(wù)交給系統(tǒng)通過調(diào)用以下函數(shù)之一來實現(xiàn):任務(wù)交給系統(tǒng)通過調(diào)用以下函數(shù)之一來實現(xiàn): nOSTaskCreateOSTaskCreate()()nOSTaskCreateExtOSTaskCreateExt()()n告知系統(tǒng):告知系統(tǒng):n任務(wù)的起始地址任務(wù)的起始地址n任務(wù)建立時,用戶給任務(wù)賦予的優(yōu)先級任務(wù)建立時,用戶給任務(wù)賦予

25、的優(yōu)先級n任務(wù)要使用的??臻g大小等任務(wù)要使用的棧空間大小等就緒態(tài)(就緒態(tài)(task readytask ready)n任務(wù)一旦創(chuàng)建就進入就緒態(tài),準備運行任務(wù)一旦創(chuàng)建就進入就緒態(tài),準備運行n任務(wù)的創(chuàng)建可以是在多任務(wù)開始之前,也可以任務(wù)的創(chuàng)建可以是在多任務(wù)開始之前,也可以動態(tài)地由一個運行著的任務(wù)創(chuàng)建動態(tài)地由一個運行著的任務(wù)創(chuàng)建n若剛創(chuàng)建任務(wù)的優(yōu)先級高于創(chuàng)建它的任務(wù)的優(yōu)若剛創(chuàng)建任務(wù)的優(yōu)先級高于創(chuàng)建它的任務(wù)的優(yōu)先級,它將立即獲得先級,它將立即獲得cpucpu的使用權(quán)的使用權(quán)n任務(wù)可通過任務(wù)可通過OSTaskDelOSTaskDel()返回睡眠態(tài);或調(diào)()返回睡眠態(tài);或調(diào)用該函數(shù)讓另一個任務(wù)進入睡眠態(tài)用

26、該函數(shù)讓另一個任務(wù)進入睡眠態(tài)運行態(tài)(運行態(tài)(task runningtask running)n就緒的任務(wù)只有當所有優(yōu)先級高于它的任務(wù)都轉(zhuǎn)為等就緒的任務(wù)只有當所有優(yōu)先級高于它的任務(wù)都轉(zhuǎn)為等待狀態(tài),或被刪除后,才能進入運行態(tài)待狀態(tài),或被刪除后,才能進入運行態(tài)n任何時刻只有一個任務(wù)處于運行態(tài)任何時刻只有一個任務(wù)處于運行態(tài)n調(diào)用調(diào)用OSStartOSStart()可以啟動多任務(wù)。該函數(shù)只能在啟動()可以啟動多任務(wù)。該函數(shù)只能在啟動時調(diào)用一次時調(diào)用一次nOSStartOSStart()運行用戶初始化代碼中已經(jīng)建立的、進入()運行用戶初始化代碼中已經(jīng)建立的、進入就緒態(tài)的優(yōu)先級最高的任務(wù)就緒態(tài)的優(yōu)先級最高

27、的任務(wù)等待狀態(tài)(等待狀態(tài)(task waitingtask waiting)n正在運行的任務(wù)可以通過下面的調(diào)用進入等待狀態(tài)。延遲時間到,正在運行的任務(wù)可以通過下面的調(diào)用進入等待狀態(tài)。延遲時間到,立即強制執(zhí)行任務(wù)切換,讓下一個優(yōu)先級最高、并進入就緒態(tài)的任立即強制執(zhí)行任務(wù)切換,讓下一個優(yōu)先級最高、并進入就緒態(tài)的任務(wù)執(zhí)行。務(wù)執(zhí)行。nOSTimeDlyOSTimeDly()()nOSTimeDlyHMSMOSTimeDlyHMSM()()n等待時間過去后,系統(tǒng)服務(wù)(內(nèi)部)函數(shù)等待時間過去后,系統(tǒng)服務(wù)(內(nèi)部)函數(shù)OSTimeTickOSTimeTick()使延遲了()使延遲了的任務(wù)進入就緒態(tài)的任務(wù)進入就

28、緒態(tài)n用戶無需在應用程序代碼中調(diào)用這個函數(shù)用戶無需在應用程序代碼中調(diào)用這個函數(shù)等待狀態(tài)(續(xù))等待狀態(tài)(續(xù))n正在運行的任務(wù)可能需要通過調(diào)用函數(shù)等待某正在運行的任務(wù)可能需要通過調(diào)用函數(shù)等待某一事件發(fā)生。如果該事件并未發(fā)生,任務(wù)就進一事件發(fā)生。如果該事件并未發(fā)生,任務(wù)就進入等待狀態(tài)入等待狀態(tài)nOSFlagPendOSFlagPend();();OSMutexPendOSMutexPend()()nOSSemPendOSSemPend();();OSMboxPendOSMboxPend()()n當事件發(fā)生或等待超時,被掛起的任務(wù)就進入當事件發(fā)生或等待超時,被掛起的任務(wù)就進入就緒態(tài)就緒態(tài)中斷服務(wù)態(tài)(中

29、斷服務(wù)態(tài)(ISR running)ISR running)n正在執(zhí)行的任務(wù)是可以被中斷的正在執(zhí)行的任務(wù)是可以被中斷的,除非該,除非該任務(wù)將中斷關(guān)閉,或系統(tǒng)將中斷關(guān)閉。被任務(wù)將中斷關(guān)閉,或系統(tǒng)將中斷關(guān)閉。被中斷的任務(wù)便進入了中斷服務(wù)態(tài)中斷的任務(wù)便進入了中斷服務(wù)態(tài)n響應中斷后,正在運行的任務(wù)被掛起,中響應中斷后,正在運行的任務(wù)被掛起,中斷服務(wù)子程序控制了斷服務(wù)子程序控制了CPUCPU的使用權(quán)的使用權(quán)中斷服務(wù)態(tài)(中斷服務(wù)態(tài)(ISR running)ISR running)n中斷服務(wù)子程序可能會報告一個或多個事件的發(fā)生,中斷服務(wù)子程序可能會報告一個或多個事件的發(fā)生,而使一個或多個任務(wù)進入就緒態(tài)而使一個

30、或多個任務(wù)進入就緒態(tài)n上述情況下,從中斷服務(wù)子程序返回之前,上述情況下,從中斷服務(wù)子程序返回之前, C/OSC/OS IIII 要判定:要判定:n被中斷的任務(wù)是否還是就緒態(tài)任務(wù)中優(yōu)先級最高的被中斷的任務(wù)是否還是就緒態(tài)任務(wù)中優(yōu)先級最高的n如果中斷服務(wù)子程序使另一個優(yōu)先級更高的任務(wù)進入了如果中斷服務(wù)子程序使另一個優(yōu)先級更高的任務(wù)進入了就緒態(tài),則新進入就緒態(tài)的這個優(yōu)先級更高的任務(wù)將得就緒態(tài),則新進入就緒態(tài)的這個優(yōu)先級更高的任務(wù)將得以運行;否則,原來被中斷了的任務(wù)將繼續(xù)運行。以運行;否則,原來被中斷了的任務(wù)將繼續(xù)運行。任務(wù)狀態(tài)任務(wù)狀態(tài)n當所有的任務(wù)都在等待時間發(fā)生或等待延遲時間結(jié)束時,C/OS II

31、執(zhí)行被稱為空閑任務(wù)(Idle Task)的內(nèi)部函數(shù),即:OSTaskIdle()任務(wù)狀態(tài)任務(wù)的任務(wù)的CPU使用權(quán)使用權(quán)被剝奪被剝奪中斷中斷恢復恢復任務(wù)任務(wù)編程示例n1.創(chuàng)建3個任務(wù),n2.主任務(wù)每隔1.5秒運行一次n3.子任務(wù)1每隔1秒運行一次n4.子任務(wù)2每隔2秒運行一次編程示例n#define STACKSIZE 4096nOS_STK SYS_Task_StackSTACKSIZE= 0, ; n#define SYS_Task_Prio11nvoid SYS_Task(void *Id);nOS_STK Task1_StackSTACKSIZE=0, ; nvoid Task1(voi

32、d *Id);n#define Task1_Prio 12nOS_STK Task2_StackSTACKSIZE= 0, ; nvoid Task2(void *Id); n#define Task2_Prio 13nOSTaskCreate(SYS_Task, (void *)0, (OS_STK *)&SYS_Task_StackSTACKSIZE-1, SYS_Task_Prio);主函數(shù),初始化,創(chuàng)建主任務(wù)nvoid APP_vMain(void)nn init_710evb();nCONSOL_Printf(start run app!n);nOSInit();nOSTaskCreate(SYS_Task, (void *)0, (OS_STK *)&SYS_Task_StackSTACKSIZE-1, SYS_Task_Prio);nOSStart(); n主任務(wù)創(chuàng)建兩個子任務(wù)nvoid SYS_Task(void *Id)n nOSTaskCreate(Task2, (void *)0, (OS_STK *)&Task2_StackSTACKSIZE-1, Task2_Prio);nOSTaskCr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論