版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
3.10節(jié)討論了時鐘的中斷服務(wù)子程序和節(jié)時鐘節(jié)函數(shù)OSTimeTick——μC/OS本章所提到的函數(shù)可以在OS_TIME.C的長短是用時鐘節(jié)拍的數(shù)目來確定的。實現(xiàn)這個系統(tǒng)服務(wù)的函數(shù)叫做OSTimeDly()。調(diào)用該函程序清單L5.1所示的是任務(wù)延時函數(shù)OSTimeDly()的代碼。用戶的應(yīng)用程序是通過提供延時的時鐘節(jié)拍數(shù)——1655350[L5.1(1)],則表明用戶不想延時任務(wù),函數(shù)會立即返回到調(diào)用者。非0函數(shù)OSTimeDly()將當(dāng)前任務(wù)從就緒表中移除[L5.1(2)]。接著,這個延時節(jié)拍數(shù)會被保存在當(dāng)前任務(wù)的OS_TCB中[L5.1(3OSTimeTick延時節(jié)拍數(shù)。最后,既然任務(wù)已經(jīng)不再處于就緒狀態(tài),任務(wù)調(diào)度程序會執(zhí)行下一個優(yōu)先級最L5.1voidvoidOSTimeDly(INT16U{if(ticks>0){if((OSRdyTbl[OSTCBCur->OSTCBY]&=~OSTCBCur->OSTCBBitX)==OSRdyGrp&=~OSTCBCur-}}OSTCBCur->OSTCBDly=}}OSTimeDly(1),在這種情況下,任務(wù)幾乎就沒有Figure DelayOSimlOIS_EREC(參看_G.H轉(zhuǎn)換成時鐘段,但這種方法有時顯得比較愚笨。筆者增加了STeDMS就可以按小時()、分()、秒(S)和毫秒()來定義時間了,這樣會顯得更自然些。與Dl()一樣,調(diào)用STmeyHM()函數(shù)也會使/SSTeDyHM者有其它的任務(wù)通過調(diào)用OTielRsm()取消了延時(參看5,恢復(fù)延時的任務(wù)OSTimDlsu程序清單L5.2OSTimeDlyHMSM()的代碼。從中可以看出,應(yīng)用程序是通過用小OSTimeDlyHMSM()一開始先要檢驗用戶是否為參數(shù)定義了有效的值[L5.2(1)應(yīng)的毫秒數(shù)相同。例如,若將時鐘頻率(OS_TICKS_PER_SEC100Hz(10ms4ms示,OSTimeDlyHMSM()確定了用戶想延時多少次超過65,535個節(jié)拍的數(shù)目[L5.2(4)]和剩下的節(jié)拍數(shù)[L5.2(5)]。例如,若OS_TICKS_PER_SEC的值為100,用戶想延時15分鐘,則OSTimeDlyHMSM15x60x100=90,00032,768拍的延時(因為用戶只能延時65,535個節(jié)拍而不是65536個節(jié)拍)和一次24,464個節(jié)拍的延時。在這種情況下,OSTimeDlyHMSM()首先考慮剩下的節(jié)拍,然后是超過65,535的節(jié)拍數(shù)[L5.2(7)和(8)](即兩個32,768L5.2{INT32Uticks;INT16Uif(hours>0||minutes>0||seconds>0||milli>0)if(minutes>59)return}if(seconds>59)return}If(milli>999)return}ticks= *3600L*+(INT32U)minutes 60L*+(INT32U)seconds+OS_TICKS_PER_SEC*+500L/OS_TICKS_PER_SEC)/loopsloops=ticks/ticks=ticks%while(loops>0)}return}elsereturn}}OSTimeDlyResumeL5.3任務(wù)存在,OSTimeDlyResume()會檢驗任務(wù)是否在等待延時期滿[L5.3(3)]。只要OS_TCB域中的OSTCBDly0OSTimeDly(),OSTimeDlyHMSM()或其它在第六章中所描述的PEND函數(shù)。然后延時就可以通過強制命令L5.3INT8UINT8UOSTimeDlyResume(INT8U{{OS_TCBif(prio>=OS_LOWEST_PRIO)returnptcb=(OS_TCBif(ptcb!=(OS_TCB*)0)if(ptcb->OSTCBDly!=0)ptcb->OSTCBDly=if(!(ptcb->OSTCBStat&OS_STAT_SUSPEND))|=ptcb-OSRdyTbl[ptcb->OSTCBY]|=ptcb->OSTCBBitX;}else}return}elsereturn}}elsereturn}}唯一問題是它要求用戶分配事件控制塊(參看6.00),因此用戶的應(yīng)用程序會多占用一些RAM。/S2調(diào)用SS49,75010z247通過調(diào)用OimetOTiSeOSme()和STeSL4OSme8L5.4INT32UINT32UOSTimeGet{INT32Uticks=OSTime;return}voidOSTimeSet(INT32U{OSTime=ticks;}開發(fā)板精品網(wǎng)5.3系統(tǒng)時間,OSTimeGet() C/OS32調(diào)用SSt(494,75010z2497可以通過調(diào)用OTimGetOTimSet(OSTmeG()和STieSeL54OSime832程序清單L5.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《GBT 14629.3-2008灘二毛皮、灘羔皮》專題研究報告
- 《GBT 15248-2008金屬材料軸向等幅低循環(huán)疲勞試驗方法》專題研究報告
- 道路安全業(yè)務(wù)培訓(xùn)課件
- 2025-2026年湘教版四年級語文上冊期末試題解析+答案
- 道路交通安全學(xué)課件
- 2025-2026年蘇教版初三化學(xué)上冊期末考試題目及答案
- 2026年廣東省肇慶市高職單招語文試題及答案
- 迪拜阿迪達斯介紹
- 新高一化學(xué)暑假銜接(人教版):第08講 氯氣的實驗室制法及氯離子的檢驗【學(xué)生版】
- 事業(yè)單位會計政府會計自制度筆試題
- 鋼結(jié)構(gòu)廠房水電安裝施工組織方案
- 2025云南昆明元朔建設(shè)發(fā)展有限公司第一批收費員招聘20人考試參考試題及答案解析
- 中考英語初一至初三全程知識點總結(jié)及練習(xí)
- 亞馬遜運營年度述職報告
- 教育教學(xué)創(chuàng)新大賽課件
- 儲能材料與器件課件
- 船廠裝配工基礎(chǔ)知識培訓(xùn)課件
- 2025年GMAT邏輯推理解析試題
- 2025-2030電子特氣行業(yè)純度標(biāo)準(zhǔn)升級對晶圓制造良率影響深度分析報告
- 除夕年夜飯作文600字9篇范文
- CJ/T 43-2005水處理用濾料
評論
0/150
提交評論