版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
3.10節(jié)討論了時(shí)鐘的中斷服務(wù)子程序和節(jié)時(shí)鐘節(jié)函數(shù)OSTimeTick——μC/OS本章所提到的函數(shù)可以在OS_TIME.C的長短是用時(shí)鐘節(jié)拍的數(shù)目來確定的。實(shí)現(xiàn)這個(gè)系統(tǒng)服務(wù)的函數(shù)叫做OSTimeDly()。調(diào)用該函程序清單L5.1所示的是任務(wù)延時(shí)函數(shù)OSTimeDly()的代碼。用戶的應(yīng)用程序是通過提供延時(shí)的時(shí)鐘節(jié)拍數(shù)——1655350[L5.1(1)],則表明用戶不想延時(shí)任務(wù),函數(shù)會(huì)立即返回到調(diào)用者。非0函數(shù)OSTimeDly()將當(dāng)前任務(wù)從就緒表中移除[L5.1(2)]。接著,這個(gè)延時(shí)節(jié)拍數(shù)會(huì)被保存在當(dāng)前任務(wù)的OS_TCB中[L5.1(3OSTimeTick延時(shí)節(jié)拍數(shù)。最后,既然任務(wù)已經(jīng)不再處于就緒狀態(tài),任務(wù)調(diào)度程序會(huì)執(zhí)行下一個(gè)優(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)換成時(shí)鐘段,但這種方法有時(shí)顯得比較愚笨。筆者增加了STeDMS就可以按小時(shí)()、分()、秒(S)和毫秒()來定義時(shí)間了,這樣會(huì)顯得更自然些。與Dl()一樣,調(diào)用STmeyHM()函數(shù)也會(huì)使/SSTeDyHM者有其它的任務(wù)通過調(diào)用OTielRsm()取消了延時(shí)(參看5,恢復(fù)延時(shí)的任務(wù)OSTimDlsu程序清單L5.2OSTimeDlyHMSM()的代碼。從中可以看出,應(yīng)用程序是通過用小OSTimeDlyHMSM()一開始先要檢驗(yàn)用戶是否為參數(shù)定義了有效的值[L5.2(1)應(yīng)的毫秒數(shù)相同。例如,若將時(shí)鐘頻率(OS_TICKS_PER_SEC100Hz(10ms4ms示,OSTimeDlyHMSM()確定了用戶想延時(shí)多少次超過65,535個(gè)節(jié)拍的數(shù)目[L5.2(4)]和剩下的節(jié)拍數(shù)[L5.2(5)]。例如,若OS_TICKS_PER_SEC的值為100,用戶想延時(shí)15分鐘,則OSTimeDlyHMSM15x60x100=90,00032,768拍的延時(shí)(因?yàn)橛脩糁荒苎訒r(shí)65,535個(gè)節(jié)拍而不是65536個(gè)節(jié)拍)和一次24,464個(gè)節(jié)拍的延時(shí)。在這種情況下,OSTimeDlyHMSM()首先考慮剩下的節(jié)拍,然后是超過65,535的節(jié)拍數(shù)[L5.2(7)和(8)](即兩個(gè)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()會(huì)檢驗(yàn)任務(wù)是否在等待延時(shí)期滿[L5.3(3)]。只要OS_TCB域中的OSTCBDly0OSTimeDly(),OSTimeDlyHMSM()或其它在第六章中所描述的PEND函數(shù)。然后延時(shí)就可以通過強(qiáng)制命令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)用程序會(huì)多占用一些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)時(shí)間,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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年深冷技術(shù)設(shè)備合作協(xié)議書
- 北師大版歷史八年級上冊第21課《民族工業(yè)的曲折發(fā)展》聽課評課記錄
- 首師大版道德與法治七年級上冊10.1《多樣的情緒》聽課評課記錄
- 人教版地理七年級下冊《8.3撒哈拉以南非洲》聽課評課記錄
- 湘教版地理八年級上冊2.2《中國的氣候》聽課評課記錄
- 湘教版地理八年級下冊《第三節(jié) 東北地區(qū)的產(chǎn)業(yè)分布》聽課評課記錄2
- 環(huán)境工程投資咨詢合同(2篇)
- 新版華東師大版八年級數(shù)學(xué)下冊《16.2.1分式的乘除》聽評課記錄5
- 浙教版數(shù)學(xué)七年級下冊《5.5 分式方程》聽評課記錄2
- 湘教版數(shù)學(xué)七年級下冊5.2《旋轉(zhuǎn)》聽評課記錄
- 保潔班長演講稿
- 課題研究實(shí)施方案 范例及課題研究方法及技術(shù)路線圖模板
- 牙髓炎中牙髓干細(xì)胞與神經(jīng)支配的相互作用
- 勞務(wù)雇傭協(xié)議書范本
- 【2022屆高考英語讀后續(xù)寫】主題升華積累講義及高級句型積累
- JGJ52-2006 普通混凝土用砂、石質(zhì)量及檢驗(yàn)方法標(biāo)準(zhǔn)
- 環(huán)境監(jiān)測的基本知識(shí)
- 電動(dòng)車棚施工方案
- 《中國十大書法家》課件
- 超實(shí)用可編輯版中國地圖全圖及分省地圖
- 西方法律思想史ppt
評論
0/150
提交評論