freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

非操作系統(tǒng)下的實驗嵌入式實驗報告(參考版)

2025-03-26 12:42本頁面
  

【正文】 。消息隊列:通過發(fā)送消息緩沖區(qū)指針數(shù)組的指針實現(xiàn)發(fā)送消息隊列。 } }任務(wù)2實現(xiàn)串口打印當(dāng)接受到一個信號量時串口打印計數(shù)加1序號程序現(xiàn)象1234圖32信號量實現(xiàn)任務(wù)間通信示意圖 實驗思考題列舉出μC/OS II 的任務(wù)間通信的方式,并比較它們的異同答:信號量:當(dāng)一個任務(wù)在訪問共享資源前,可以先對這個標(biāo)志進(jìn)行查詢,從而在了解資源被占用情況后在決定自己的行為。 //等待信號量 count++。 while(1) { OSSemPend(Semp,0,amp。 OSTimeDly(50)。 //發(fā)出信號量 OSTimeDly(50)。0x17)!=0x17)//檢測到有按鍵按下 { count1++。=~(0x3FF)。 count2=0。 }}任務(wù)0控制蜂鳴器唱歌3void Task1(void *pdata) //任務(wù)1,按鍵檢測{ unsigned char count1,count2。 { Addr=0。 OSTimeDly(120*Temp2)。break。 default: freq=39。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 Temp2=SONG[Addr++]。 while(1) { U16 freq。Task2Stk[Task2StkLeng1],7)。Task1Stk[Task1StkLeng1],7)。Task0Stk[Task0StkLeng1],7)。同任務(wù) 1 一樣, 任務(wù) 2 一旦獲得了共享資源的訪問權(quán), 那么在訪問共享資源之前一定要把信號量標(biāo)志的值由“1”變?yōu)椤?” 。顯然,這種做法可以有效地防止兩個任務(wù)同時訪問同一個共享資源所造成的沖突。 任務(wù) 1 在訪問共享資源之前先進(jìn)行請求信號量的操作, 當(dāng)任務(wù) 1 發(fā)現(xiàn)信號量的標(biāo)志為“1”時,它一方面把信號量的標(biāo)志由“1”改為“0” ,另一方面進(jìn)行共享資源的訪問。這種計數(shù)式的信號叫做信號量。 如果電話亭可以允許多人打電話, 那么電話亭門前就不應(yīng)該是只有紅色和綠色兩種狀態(tài)的牌子,而應(yīng)該是一個計數(shù)器,并且這個計數(shù)器在每進(jìn)去一個人時會自動減 1,而每出去一個人時會自動加 1。 顯然,電話亭門上的這個牌子就是一個表示電話亭是否已被占用的信號。 這樣來打電話的人就可根據(jù)牌子的顏色來了解電話亭的被占用情況。 觀察一下人們?nèi)粘I钪谐S玫囊环N共享資源——公用電話亭的使用規(guī)則, 就會發(fā)現(xiàn)它的規(guī)則很適合在協(xié)調(diào)關(guān)系時應(yīng)用。使用信號量的最初目的, 是為了共享資源設(shè)立一個表示該共享資源被占用情況的標(biāo)志。讀事件操作叫做請求事件。作為發(fā)信方, 任務(wù) 1 的責(zé)任是把信息發(fā)送到事件上, 這項操作叫做發(fā)送事件。 圖 33 是兩個任務(wù)通過事件進(jìn)行通信的示意圖。2) 事件 任務(wù)間的同步依賴于任務(wù)間的通信。 任務(wù)之問這種制約性的合作運行機(jī)制叫做任務(wù)間的同步。如果這兩個任務(wù)不這樣做,那么也會造成極大的混亂。 間接制約關(guān)系源于對資源的共享。相反,當(dāng)緩沖區(qū)的數(shù)據(jù)還未被任務(wù) B 讀取時(緩沖區(qū)為滿時),任務(wù) A 就不能向緩沖區(qū)寫入新的數(shù)據(jù)而應(yīng)該處于等待狀態(tài);只有等任務(wù) B 自緩沖區(qū)讀取數(shù)據(jù)后,才應(yīng)該通知任務(wù) A 去寫入數(shù)據(jù)。例如,有兩個任務(wù):任務(wù) A 和任務(wù) B,它們需要通過訪問同一個數(shù)據(jù)緩沖區(qū)合作完成一項工作,任務(wù) A 負(fù)責(zé)向緩沖區(qū)寫入數(shù)據(jù),任務(wù) B 負(fù)責(zé)從緩沖區(qū)讀取該數(shù)據(jù)。其中一種制約關(guān)系叫做直接制約關(guān)系,另一種制約關(guān)系則叫做間接制約關(guān)系。因此, 對于一個完善的多任務(wù)操作系統(tǒng)來說, 系統(tǒng)必須具有完各的同步和通信機(jī)制。 嵌入式系統(tǒng)中的各個任務(wù)都是以并發(fā)的方式來運行的, 并為同一個大的任務(wù)服務(wù)。因此, 操作系統(tǒng)必須具有對任務(wù)的運行進(jìn)行協(xié)調(diào)的能力, 從而使任務(wù)之間可以無沖突、流暢地同步運行, 而不致導(dǎo)致災(zāi)難性的后果。 μC/OS II 任務(wù)間通信實驗 實驗?zāi)康氖煜?μC/OS II 信號量實現(xiàn)任務(wù)間同步的方法 實驗內(nèi)容1. 運行 μC/OS II 例程,熟悉信號量實現(xiàn)任務(wù)間同步的方法2. 修改例程代碼,建立三個任務(wù),其中一個實現(xiàn)蜂鳴器唱歌,另外一個實現(xiàn)按鍵的檢測并且改變相應(yīng)的 LED 的狀態(tài),同時產(chǎn)生一個信號量給第三個任務(wù),控制超級終端顯示哪個按鍵被按下 實驗原理 應(yīng)用程序中的各個任務(wù),必須通過彼此之間的有效合作,才能完成一項大規(guī)模的工作。 } OSTimeDly(50)。=~0x1E0。 while(1) { if((rGPFDATamp。=~(0x3FF)。 U32 led。} if(Addr440) //440, } Buzzer_Freq_Set0( freq )。e39。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 Temp2=SONG[Addr++]。while(1){ U16 freq。Task1Stk[Task0StkLengh 1], 8)。Task0Stk[Task0StkLengh 1], 7)。 實驗儀器與設(shè)備1. TQ2440 實驗平臺2. JLINK 調(diào)試器3. 串口線 實驗步驟1. 2. 閱讀代碼,熟悉任務(wù)的建立方法3. 修改例程代碼,建立兩個任務(wù),程序結(jié)構(gòu)如圖31所示。固定地,系統(tǒng)總是把最低優(yōu)先級別OS_LOWEST_PRIO 自動賦給空閑任務(wù)。該常數(shù)一旦被定義,就意味著系統(tǒng)中可供使用的優(yōu)先級別為 0、… 、OSl_LOWEST_PRIO,共 OSl_LOWEST_PRIO+1 個。 通常,一個應(yīng)用程序的任務(wù)數(shù)小于 64。μC/OSII 把任務(wù)的優(yōu)先權(quán)分為 64 個優(yōu)先級別,每一個級別用一個都用的數(shù)字來表示。如果用戶應(yīng)用程序要使用這個統(tǒng)計任務(wù),則必須把定義的體貼頭文件 中的系統(tǒng)配置常數(shù) OS_TASK_STAT_EN 設(shè)置為 1,并且必須在創(chuàng)建統(tǒng)計任務(wù)之前調(diào)用函數(shù) OSStatInit()對統(tǒng)計任務(wù)進(jìn)行初始化。這個統(tǒng)計任務(wù)每秒計算一次CPU 在單位時間內(nèi)被使用的時間,并把計算結(jié)果以百分比的形式存放在變量 OSCPUUsage 中,以便應(yīng)用程序通過訪問它來了解 CPU 的利用率,所以該系統(tǒng)任務(wù) OSTaskStart()叫做統(tǒng)計任務(wù)。 //計數(shù)OS_EXIT_CRITICAL()。){OS_ENTER_CRITICAL()。 endifpdata=pdata。為了使 CPU 在沒有使用用戶任務(wù)可執(zhí)行時有事可做,μC/OSII 提高了一個叫做空閑任務(wù) OSTaskIdle()的系統(tǒng)任務(wù)。其中空閑任務(wù)是每個應(yīng)用程序必須使用的,而統(tǒng)計任務(wù)則是應(yīng)用程序可以根據(jù)實際需要來選擇使用的。 //創(chuàng)建用戶任務(wù) 3.......OSStart()。 //創(chuàng)建用戶任務(wù) 1OSTaskCreat(MyTask2,....)。){.......}}void main(){.......OSIniT()。){.......}}Void MyTask2(void* pdata) //定義用戶任務(wù) 2{for(。因此它不是被主函數(shù)或其他函數(shù)調(diào)用的,主函數(shù) main()只負(fù)責(zé)創(chuàng)建和啟動它們,而由操作系統(tǒng)負(fù)責(zé)來調(diào)度運行它們。因此可以說,μC/OSII 任務(wù)是代碼結(jié)構(gòu)的一個帶有臨界段的無限循環(huán)。在運行這兩個宏之間的代碼時是不會響應(yīng)中斷的,這種保護(hù)的代碼段叫做臨界段。為了可以傳遞各種類型的數(shù)據(jù)甚至是函數(shù),任務(wù)的參數(shù)是一個 void 類型的指針。//進(jìn)入臨界段(關(guān)中斷)不可以被中斷的用戶代碼;OS_EXIT_CRITICAL()。一個用 C 語言編寫的任務(wù)Void MyTask(void* pdata){for(。任務(wù)的狀態(tài) 說明睡眠狀態(tài) 任務(wù)只是以代碼的形式駐留在程序空間(ROM 和 RAM)中,還沒有交給操作 系統(tǒng)管理時的情況叫睡眠狀態(tài)。 根據(jù)任務(wù)是否占用 CPU,以及是否處于被中斷、等待等情況。 目前,μC/OSII 最多可以對 64 個任務(wù)(包括用戶任務(wù)和系統(tǒng)任務(wù))進(jìn)行管理。用戶任務(wù)是為解決應(yīng)用問題而編寫的;系統(tǒng)任務(wù)是為應(yīng)用程序來提供某種服務(wù)的。 μC/OSII 的任務(wù)有兩種:用戶任務(wù)和系統(tǒng)任務(wù)。μC/OSII 就是一個能對這些小任務(wù)進(jìn)行管理和調(diào)度的多任務(wù)操作系統(tǒng)。因此,現(xiàn)代操作系統(tǒng)幾乎都是對任務(wù)操作系統(tǒng)。}程序正常運行,4個LED循環(huán)依次亮滅 第三章 μC/OS II操作系統(tǒng)下的實驗 μC/OS II多任務(wù)建立實驗 實驗?zāi)康氖煜?μC/OS II 多任務(wù)建立方法 實驗內(nèi)容1. 運行 μC/OS II 例程,熟悉任務(wù)的建立方法2. 修改例程代碼,建立兩個任務(wù),其中一個實現(xiàn)蜂鳴器唱歌,另外一個實現(xiàn)按鍵的檢測并且改變相應(yīng)的 LED 的狀態(tài) 實驗原理人們在實際生活中處理一個大而復(fù)雜問題, 時慣用的方法就是 “分而治之” 即把一個大問題分解多個相對簡單、比較容易解決的小問題,小問題逐個被解決了,大問題也就隨之解決了。//rWTCNT=2000。 //喂狗delay(1)。i++){led_con(i,ON)。cause:The processor was reset”2for(i=5。delay(1)。delay(1)。i=8。u 看門狗計數(shù)器(WTCNT)程序中需要在器溢出之前把新的計數(shù)值賦給看門狗計數(shù)器 實驗儀器與設(shè)備1. TQ2440實驗平臺2. JLINK 調(diào)試器 實驗步驟1. 2. 閱讀代碼,了解看門狗的啟動方式和喂狗的方法3. 修改工程,比較有喂狗和沒有喂狗的實驗結(jié)果,把程序和相應(yīng)的現(xiàn)象列入下表中。S3C2440A的看門狗的結(jié)構(gòu)如圖219所示,看門狗實際是一個計數(shù)器,當(dāng)計數(shù)溢出的時候可以對系統(tǒng)進(jìn)行復(fù)位,因此程序在正常運行的時候應(yīng)該隔一段時間對看門狗復(fù)位,防止看門狗計數(shù)器溢出使得系統(tǒng)復(fù)位,這個過程叫做“喂狗”。 //設(shè)置時間為2013年2月28日星期一23:59:57while(1){RTC_Display()。 //設(shè)置時間為2014年2月28日星期一23:59:57while(1){RTC_Display()。Delay( 900 ) 。= ~1 。 //分second = rBCDSEC 。 //日 hour = rBCDHOUR 。 //年month = rBCDMON 。rRTCCON = 1 。U8 month, day 。= ~1 。 //分rBCD
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1