uCOS-II原理及應(yīng)用--3_第1頁(yè)
uCOS-II原理及應(yīng)用--3_第2頁(yè)
uCOS-II原理及應(yīng)用--3_第3頁(yè)
uCOS-II原理及應(yīng)用--3_第4頁(yè)
uCOS-II原理及應(yīng)用--3_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、page西安郵電學(xué)院 計(jì)算機(jī)系12022-4-14嵌入式實(shí)時(shí)操作系統(tǒng)嵌入式實(shí)時(shí)操作系統(tǒng) C/OS-II西安郵電學(xué)院-計(jì)算機(jī)系Tel: 85383409 (ZQL)Email: page2022-4-14西安郵電學(xué)院 計(jì)算機(jī)系2第3章 uC/OS-II的中斷和時(shí)鐘page西安郵電學(xué)院 計(jì)算機(jī)系32022-4-14第3章 目錄n1、 uC/OS-II的中斷n2、 uC/OS-II的時(shí)鐘n3、時(shí)間管理page西安郵電學(xué)院 計(jì)算機(jī)系42022-4-14第3章 目錄n1、 uC/OS-II的中斷n2、 uC/OS-II的時(shí)鐘n3、時(shí)間管理page西安郵電學(xué)院 計(jì)算機(jī)系52022-4-143.1 uC/O

2、S-II 的中斷n基本概念基本概念n中斷中斷 - 任務(wù)正在執(zhí)行過(guò)程中被某緊要事件打斷運(yùn)任務(wù)正在執(zhí)行過(guò)程中被某緊要事件打斷運(yùn)行,行,而去處理該緊迫事件的過(guò)程;而去處理該緊迫事件的過(guò)程;n中斷源中斷源 - 中斷信號(hào)的申請(qǐng)者;中斷信號(hào)的申請(qǐng)者;n中斷響應(yīng)中斷響應(yīng) - CPU對(duì)中斷信號(hào)相應(yīng)處理的機(jī)制;對(duì)中斷信號(hào)相應(yīng)處理的機(jī)制;n中斷嵌套中斷嵌套 - 優(yōu)先級(jí)高的中斷可以再中斷低級(jí)的優(yōu)先級(jí)高的中斷可以再中斷低級(jí)的ISR;nISR - (某緊要事件的)中斷服務(wù)處理程序;(某緊要事件的)中斷服務(wù)處理程序;n中斷向量中斷向量 - ISR 的入口地址。的入口地址。page西安郵電學(xué)院 計(jì)算機(jī)系62022-4-14

3、ARM 處理器中斷控制原理:VICIntSelect -中斷選擇寄存器,配置32個(gè)中斷源的F/I屬性。1-FIQ; VICIntEnable -中斷使能寄存器,控制相應(yīng)通道中斷申請(qǐng)屏蔽否。 1-使能;page西安郵電學(xué)院 計(jì)算機(jī)系72022-4-14;異常向量表Reset LDR PC, ResetAddr LDR PC, UndefinedAddr LDR PC, SWI_Addr LDR PC, PrefetchAddr LDR PC, DataAbortAddr DCD 0 xb9205f80 LDR PC, PC, #-0 xff0 LDR PC, FIQ_AddrResetAddrD

4、CD ResetInitUndefinedAddr DCD UndefinedSWI_AddrDCD SoftwareInterruptPrefetchAddrDCD PrefetchAbortDataAbortAddr DCD DataAbortNouseDCD 0IRQ_AddrDCD 0FIQ_AddrDCD FIQ_Handler8個(gè)字單元,每單元存放一條轉(zhuǎn)移指令;8個(gè)字單元,每單元存放一條目標(biāo)地址;0 x00 -0 x04 -0 x08 -0 x0c -0 x10 -0 x14 -0 x18 -0 x1c -page西安郵電學(xué)院 計(jì)算機(jī)系82022-4-14u FIQ 中斷的響應(yīng):u

5、 IRQ 中斷的響應(yīng):在存儲(chǔ)器 0 x1c 單元 安排有指令:LDR PC, FIQ_Addr在存儲(chǔ)器 0 x18 單元 安排有指令:LDR PC, PC, #-0 xff0備注:執(zhí)行本指令時(shí),PC = 0 x0000,0020;0 x0000,0020 0 x0000,0ff0 = 0 x0000,0020 + 0 xffff,f010 = 0 xffff,f030(即VICVectAddr寄存器) page西安郵電學(xué)院 計(jì)算機(jī)系92022-4-14IRQ_ISR地址映射關(guān)系圖 備注VIC涉及到43個(gè)相關(guān)寄存器 page西安郵電學(xué)院 計(jì)算機(jī)系102022-4-141、硬件自動(dòng)過(guò)程;2、ISR

6、過(guò)程;無(wú)高級(jí)任務(wù)激活返回有高級(jí)任務(wù)激活返回page西安郵電學(xué)院 計(jì)算機(jī)系112022-4-143.1 uC/OS-II 的中斷nuC/OS-II 的中斷過(guò)程的中斷過(guò)程n在應(yīng)用系統(tǒng)設(shè)計(jì)中編寫(xiě)在應(yīng)用系統(tǒng)設(shè)計(jì)中編寫(xiě)uC/OS-II的中斷服務(wù)程序的中斷服務(wù)程序(ISR)時(shí),要用到兩個(gè)重要的系統(tǒng)函數(shù)。)時(shí),要用到兩個(gè)重要的系統(tǒng)函數(shù)。nOSIntEnter()、OSIntExit()nuC/OS-II 允許中斷嵌套,最多可嵌套允許中斷嵌套,最多可嵌套 255 層;系統(tǒng)層;系統(tǒng)全局變量全局變量 OSIntNesting 記錄中斷嵌套層數(shù)。記錄中斷嵌套層數(shù)。page西安郵電學(xué)院 計(jì)算機(jī)系122022-4-14

7、3.1 uC/OS-II 的中斷n系統(tǒng)函數(shù)系統(tǒng)函數(shù) OSIntEnter( )、OSIntExit( )nOSIntEnter( ) nOSIntExit( )函數(shù)原型:函數(shù)原型:void OSIntEnter( void ) 主要功能:系統(tǒng)變量主要功能:系統(tǒng)變量 OSIntNesting 自加自加1,目的告訴,目的告訴uC/OS-II系統(tǒng)記錄中斷的嵌套層數(shù)。系統(tǒng)記錄中斷的嵌套層數(shù)。函數(shù)原型:函數(shù)原型:void OSIntExit( void ) 主要功能:系統(tǒng)變量主要功能:系統(tǒng)變量 OSIntNesting 自減自減1,目的告訴,目的告訴uC/OS-II系統(tǒng)中斷的嵌套層數(shù),系統(tǒng)中斷的嵌套層數(shù)

8、,OSIntNesting=0時(shí),則進(jìn)行一次中斷級(jí)的任務(wù)調(diào)度時(shí),則進(jìn)行一次中斷級(jí)的任務(wù)調(diào)度 OSIntCtxSw()。page西安郵電學(xué)院 計(jì)算機(jī)系132022-4-143.1 uC/OS-II 的中斷n應(yīng)用程序中的臨界段應(yīng)用程序中的臨界段n臨界段的基本概念及實(shí)現(xiàn)原理臨界段的基本概念及實(shí)現(xiàn)原理nuC/OS-II 提供了兩個(gè)宏操作用于臨界段提供了兩個(gè)宏操作用于臨界段工程應(yīng)用中有工程應(yīng)用中有 “代碼段必須被連續(xù)執(zhí)行代碼段必須被連續(xù)執(zhí)行” 的需求,的需求,這種不允許被打斷執(zhí)行的代碼段稱為這種不允許被打斷執(zhí)行的代碼段稱為 “臨界代碼段臨界代碼段” 或或 “原子操作原子操作” 。通過(guò)開(kāi)關(guān)。通過(guò)開(kāi)關(guān)CPU

9、中斷來(lái)實(shí)現(xiàn)。中斷來(lái)實(shí)現(xiàn)。OS_ENTER_CRITICAL( ) - 進(jìn)入臨界段進(jìn)入臨界段OS_EXIT_CRITICAL( ) - 退出臨界段退出臨界段注意事項(xiàng):用戶原子操作盡量的少且小,因?yàn)樗鼤?huì)影響系注意事項(xiàng):用戶原子操作盡量的少且小,因?yàn)樗鼤?huì)影響系統(tǒng)的實(shí)時(shí)性。統(tǒng)的實(shí)時(shí)性。page西安郵電學(xué)院 計(jì)算機(jī)系142022-4-143.1 uC/OS-II 的中斷n應(yīng)用程序中的臨界段舉例應(yīng)用程序中的臨界段舉例n在在uC/OS-II系統(tǒng)文件中很多地方都要用到。系統(tǒng)文件中很多地方都要用到。n在用戶程序中也可能用到,如進(jìn)行在用戶程序中也可能用到,如進(jìn)行PLL重置。重置。PLLCON = V_PLLCON

10、_DATA;PLLCFG = V_PLLCFG_DATA;OS_ENTER_CRITICAL( ) ;/ 進(jìn)入臨界段進(jìn)入臨界段PLLFEED = 0 xaa;PLLFEED = 0 x55;OS_EXIT_CRITICAL( );/ 退出臨界段退出臨界段page西安郵電學(xué)院 計(jì)算機(jī)系152022-4-143.1 uC/OS-II 的中斷n正常情況下,正常情況下,ISR 應(yīng)該受應(yīng)該受 RTOS 的管理。的管理。n實(shí)際工程中,確實(shí)存在兩種情況實(shí)際工程中,確實(shí)存在兩種情況ISR不受不受RTOS管理。管理。uC/OS-II 未對(duì)未對(duì)ARM 的的 FIQ 進(jìn)行管理進(jìn)行管理沒(méi)有管理必要的中斷。沒(méi)有管理必要

11、的中斷。使用使用 FIQ 時(shí)應(yīng)注意它時(shí)應(yīng)注意它與與uC/OS-II 的的無(wú)關(guān)無(wú)關(guān)性,性,它它的的ISR只能只能物理緩沖區(qū)方式與物理緩沖區(qū)方式與uC/OS-II 的其它任務(wù)數(shù)據(jù)通信。的其它任務(wù)數(shù)據(jù)通信。例如掉電處理例如掉電處理,它它的的ISR的主要工作就是保護(hù)的主要工作就是保護(hù)CPU現(xiàn)場(chǎng)到現(xiàn)場(chǎng)到Flash,然后即,然后即PowerDown,之后不再執(zhí)行任何的其他,之后不再執(zhí)行任何的其他 uC/OS-II 任務(wù)。任務(wù)。page西安郵電學(xué)院 計(jì)算機(jī)系162022-4-14補(bǔ)充:ARM中的中斷優(yōu)先級(jí)資源nARM 中的中斷優(yōu)先級(jí)資源就是中的中斷優(yōu)先級(jí)資源就是 ARM CPU 的中斷控制系統(tǒng)。的中斷控制系

12、統(tǒng)。ARM7 中最多可以擁有中最多可以擁有32個(gè)中斷源。個(gè)中斷源。n每個(gè)中斷源可配置為每個(gè)中斷源可配置為 FIQ 或或 IRQ 中斷。中斷。IRQ 中斷又可分為中斷又可分為向量向量 IRQ 和和非向量非向量 IRQ,向量,向量 IRQ 最多可安排最多可安排16個(gè)中斷源,個(gè)中斷源,按槽位號(hào)(按槽位號(hào)(#slot)確定其優(yōu)先級(jí),非向量)確定其優(yōu)先級(jí),非向量 IRQ中斷源則通中斷源則通過(guò)程序查詢方式確定具體的中斷源。過(guò)程序查詢方式確定具體的中斷源。page西安郵電學(xué)院 計(jì)算機(jī)系172022-4-14補(bǔ)充:ARM中的中斷優(yōu)先級(jí)資源n異常向量表(ARM的7種異常)地址地址異常異常進(jìn)入時(shí)的模式進(jìn)入時(shí)的模式

13、進(jìn)入時(shí)進(jìn)入時(shí)I的狀態(tài)的狀態(tài)進(jìn)入時(shí)進(jìn)入時(shí)F的狀態(tài)的狀態(tài)0 x00000000復(fù)位管理禁止禁止0 x00000004未定義指令未定義IF0 x00000008軟件中斷異常管理禁止F0 x0000000C中止(預(yù)?。┲兄笽F0 x00000010中止(數(shù)據(jù))中止IF0 x00000014保留保留0 x00000018IRQ中斷禁止F0 x0000001CFIQ快速中斷禁止禁止注:表中的I和F表示不對(duì)該位有影響,保留原來(lái)的值。 page西安郵電學(xué)院 計(jì)算機(jī)系182022-4-14ARM狀態(tài)各模式下可以訪問(wèn)的寄存器寄存器寄存器類(lèi)別類(lèi)別寄存器在匯寄存器在匯編中的名稱編中的名稱各模式下實(shí)際訪問(wèn)的寄存器各模式

14、下實(shí)際訪問(wèn)的寄存器用戶用戶系統(tǒng)系統(tǒng)管理管理中止中止未定義未定義中斷中斷快中斷快中斷通通用用寄寄存存器器和和程程序序計(jì)計(jì)數(shù)數(shù)器器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR1

15、4_fiqR15(PC)R15狀態(tài)狀態(tài)寄存器寄存器CPSRCPSRSPSRSPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqpage西安郵電學(xué)院 計(jì)算機(jī)系192022-4-143.1 uC/OS-II 的中斷n在 ARM 中不受 uC/OS-II 管理的 ISR 程序系統(tǒng)結(jié)構(gòu)Startup.s中關(guān)于中關(guān)于FIQ的處理:的處理:;中斷向量表中斷向量表Reset LDR PC, ResetAddr LDR PC, UndefinedAddr LDR PC, SWI_Addr LDR PC, PrefetchAddr LDR PC, DataAbortAddr DCD

16、0 xb9205f80 LDR PC, PC, #-0 xff0 LDR PC, FIQ_AddrResetAddr DCD ResetInitUndefinedAddr DCD UndefinedSWI_Addr DCD SoftwareInterruptPrefetchAddr DCD PrefetchAbortDataAbortAddr DCD DataAbortNouse DCD 0IRQ_Addr DCD 0FIQ_Addr DCD FIQ_Handlerpage西安郵電學(xué)院 計(jì)算機(jī)系202022-4-143.1 uC/OS-II 的中斷n在在 ARM 中不受中不受 uC/OS-II

17、 管理的管理的 ISR 程序系統(tǒng)結(jié)構(gòu)程序系統(tǒng)結(jié)構(gòu)Startup.s中關(guān)于中關(guān)于FIQ的處理:的處理:;快速中斷快速中斷FIQ_Handler STMFD SP!, R0-R3, LR BL FIQ_Exception LDMFD SP!, R0-R3, LR SUBS PC, LR, #4;用戶用戶FIQ_ISRvoid FIQ_Exception( void ) . . ; / C 語(yǔ)言編碼實(shí)例參考嵌入式實(shí)時(shí)操作系統(tǒng)的編程技術(shù)周航慈 Page 46page西安郵電學(xué)院 計(jì)算機(jī)系212022-4-143.1 uC/OS-II 的中斷nuC/OS-II 的中斷服務(wù)程序的中斷服務(wù)程序( ISR )

18、的編寫(xiě)的編寫(xiě)uC/OS-II 對(duì)對(duì) ARM7TDMI 的的 IRQ 進(jìn)行了管理,用戶的使用方進(jìn)行了管理,用戶的使用方式與不受管理的式與不受管理的 FIQ 有較大的區(qū)別。有較大的區(qū)別。uC/OS-II 在對(duì)在對(duì) ARM7TDMI 移植時(shí)已作了處理(移植時(shí)已作了處理(ARM IRQ.inc 文件),用戶可以直接使用文件),用戶可以直接使用C語(yǔ)言編程語(yǔ)言編程 ISR,此之前用戶要編,此之前用戶要編寫(xiě)寫(xiě)VIC配置及配置及ISR 句柄關(guān)聯(lián)代碼。句柄關(guān)聯(lián)代碼。void xxx_Eception( void ) OS_ENTER_CRITICAL( ); 清除中斷源標(biāo)志; VICVectAddr = 0;

19、/ 通知 VIC 中斷已響應(yīng) ISR 業(yè)務(wù)代碼; OS_EXIT_CRITICAL( );page西安郵電學(xué)院 計(jì)算機(jī)系222022-4-143.1 uC/OS-II 的中斷nuC/OS-II 的中斷服務(wù)程序的中斷服務(wù)程序( ISR )的編寫(xiě)的編寫(xiě)- 中斷句柄中斷句柄uC/OS-II 約定:每個(gè)受控的約定:每個(gè)受控的 ISR 都必須按照都必須按照ADS匯編宏匯編宏的格式要求,在的格式要求,在 IRQ.s 的尾部添加中斷句柄:的尾部添加中斷句柄:xxx_Handler HANDLER xxx_Exception備注:備注:nxxx_Handeler 句柄是在句柄是在 target.c 文件文件

20、void VICInit(void) 函數(shù)中約定的;函數(shù)中約定的;n中斷源用中斷源用 “中斷源通道號(hào)中斷源通道號(hào)” 對(duì)應(yīng)指派;對(duì)應(yīng)指派;nHANDLER 是語(yǔ)言關(guān)鍵詞(是語(yǔ)言關(guān)鍵詞(keyword););nxxx_Exception 是是 ISR 的函數(shù)名;的函數(shù)名;n在中斷源正式工作前,首先要進(jìn)行在中斷源正式工作前,首先要進(jìn)行 “中斷源初始中斷源初始化化” (VIC初始化初始化),這部分的代碼一般編放在一個(gè),這部分的代碼一般編放在一個(gè)硬件系統(tǒng)初始化函數(shù)中(該函數(shù)一般是編寫(xiě)在硬件系統(tǒng)初始化函數(shù)中(該函數(shù)一般是編寫(xiě)在 target.c 文件中),(代碼少的話)也可以放在文件中),(代碼少的話)也

21、可以放在main()函數(shù)中。函數(shù)中。page西安郵電學(xué)院 計(jì)算機(jī)系232022-4-143.1 uC/OS-II 的中斷nuC/OS-II 的中斷服務(wù)程序的中斷服務(wù)程序( ISR )的編寫(xiě)的編寫(xiě)- VIC 配置配置VIC初始化部分主要是:用初始化部分主要是:用 “中斷通道號(hào)中斷通道號(hào)” 指定中斷源和指定中斷源和對(duì)應(yīng)的中斷句柄。例如:指定對(duì)應(yīng)的中斷句柄。例如:指定Timer1 的的 ISR 句柄為:句柄為:Timer1_Handler,并將其配置到硬件優(yōu)先級(jí),并將其配置到硬件優(yōu)先級(jí) 10 代碼如下:代碼如下:void VICInit(void) extern void Timer1_Handle

22、r(void); VICVectAddr10 = (uint32)Timer1_Handler; VICVectCntl10 = (0 x20 | 0 x05); VICIntEnable = 1 5; / 允許 Timer1 中斷 在在 IRQ.s 文件的尾部添加中斷句柄指定:文件的尾部添加中斷句柄指定: Timer1_Handler HANDLER Timer1_Exception 編寫(xiě)編寫(xiě) Timer1_ISR (Timer1_Exception) void Timer1_Exception( void ) 關(guān)中斷;清中斷;通知關(guān)中斷;清中斷;通知VIC中斷已響應(yīng);開(kāi)中斷;中斷已響應(yīng);開(kāi)

23、中斷; C 代碼完成代碼完成Timer1 具體業(yè)務(wù)處理;具體業(yè)務(wù)處理; page西安郵電學(xué)院 計(jì)算機(jī)系242022-4-143.1 uC/OS-II 的中斷nuC/OS-II 的中斷服務(wù)程序的中斷服務(wù)程序( ISR )的編寫(xiě)的編寫(xiě)- 外設(shè)初始化外設(shè)初始化若想使指定的外設(shè)按照我們約定的方式工作,需對(duì)它進(jìn)行若想使指定的外設(shè)按照我們約定的方式工作,需對(duì)它進(jìn)行初始化,此部分代碼主要工作:設(shè)置外設(shè)的工作方式。例初始化,此部分代碼主要工作:設(shè)置外設(shè)的工作方式。例如:設(shè)置如:設(shè)置 Timer1 的定時(shí)常數(shù)、中斷允許否。代碼如下:的定時(shí)常數(shù)、中斷允許否。代碼如下: void Timer1Init(void)

24、T1IR = 0 xffffffff;/* 清除清除Timer1的中斷標(biāo)示的中斷標(biāo)示 */ T1TC = 0;/* Timer1的定時(shí)計(jì)數(shù)器的定時(shí)計(jì)數(shù)器TC賦初值賦初值 */ T1TCR = 0 x01;/* Timer1使能使能 & 解復(fù)位解復(fù)位 */ T1MCR = 0 x03;/* 設(shè)置設(shè)置Timer1 匹配控制寄存器:當(dāng)匹配控制寄存器:當(dāng) T1TC=T1MR0時(shí),時(shí),Timer1 復(fù)位并產(chǎn)生中斷復(fù)位并產(chǎn)生中斷 */ T1MR0 = (Fpclk / OS_TICKS_PER_SEC);/* 設(shè)置匹配常數(shù)設(shè)置匹配常數(shù) */ page西安郵電學(xué)院 計(jì)算機(jī)系252022-4-143.

25、1 uC/OS-II 的中斷nuC/OS-II 的中斷使用策略的中斷使用策略 (備注:具體情況具體分析)(備注:具體情況具體分析)n起因:起因:n故而:故而:uC/OS-II對(duì)任務(wù)有完備的管理能力,一系統(tǒng)函數(shù)的方對(duì)任務(wù)有完備的管理能力,一系統(tǒng)函數(shù)的方式為用戶提供了豐富的管理手段;式為用戶提供了豐富的管理手段;硬件層上希望硬件層上希望ISR盡量的短;盡量的短;通常并不將中斷事件對(duì)應(yīng)的業(yè)務(wù)處理代碼安排在通常并不將中斷事件對(duì)應(yīng)的業(yè)務(wù)處理代碼安排在ISR中,中,而是在而是在ISR中僅安排產(chǎn)生中僅安排產(chǎn)生 “信號(hào)信號(hào)” 或或 “消息消息” ,將物,將物理級(jí)的中斷事件轉(zhuǎn)換為邏輯級(jí)的事件,通過(guò)中斷級(jí)任理級(jí)的

26、中斷事件轉(zhuǎn)換為邏輯級(jí)的事件,通過(guò)中斷級(jí)任務(wù)器務(wù)器OSIntCtxSw( ) 調(diào)度,再完成具體功能。調(diào)度,再完成具體功能。備注:中斷方式數(shù)據(jù)采集實(shí)例參考嵌入式實(shí)時(shí)操作系統(tǒng)的編程技術(shù)周航慈 Page 55 - 62page西安郵電學(xué)院 計(jì)算機(jī)系262022-4-14第3章 目錄n1、 uC/OS-II的中斷n2、 uC/OS-II的時(shí)鐘n3、時(shí)間管理page西安郵電學(xué)院 計(jì)算機(jī)系272022-4-143.2 uC/OS-II 的時(shí)鐘任何任何OS都需要一個(gè)標(biāo)準(zhǔn)時(shí)鐘作為系統(tǒng)資源,驅(qū)動(dòng)都需要一個(gè)標(biāo)準(zhǔn)時(shí)鐘作為系統(tǒng)資源,驅(qū)動(dòng)OS前前行,如用于系統(tǒng)定時(shí)、延時(shí)、超時(shí)判斷等;定時(shí)通常由硬行,如用于系統(tǒng)定時(shí)、延時(shí)、

27、超時(shí)判斷等;定時(shí)通常由硬件定時(shí)器實(shí)現(xiàn)。件定時(shí)器實(shí)現(xiàn)。uC/OS-II移植到移植到ARM上時(shí),用上時(shí),用 Timer0 實(shí)現(xiàn)它的實(shí)現(xiàn)它的 “標(biāo)準(zhǔn)時(shí)標(biāo)準(zhǔn)時(shí)鐘鐘” 。其周期的設(shè)置方法:在。其周期的設(shè)置方法:在 uC/OS-II 配置文件配置文件OS_CFG.H 中用宏定義方式設(shè)置。中用宏定義方式設(shè)置。#define OS_TICKS_PER_SEC 200片內(nèi)外設(shè)片內(nèi)外設(shè) Timer0 的的 ISR (Tmier0_Exception( ),在有些,在有些書(shū)中稱為書(shū)中稱為 OSTickISR( ) )通過(guò)調(diào)用)通過(guò)調(diào)用 OSTimeTick( ) 函數(shù),完函數(shù),完成每個(gè)成每個(gè)OS節(jié)拍的系統(tǒng)工作。節(jié)拍

28、的系統(tǒng)工作。page西安郵電學(xué)院 計(jì)算機(jī)系282022-4-143.2 uC/OS-II 的時(shí)鐘nuC/OS-II 的的OSTimeTick( ) 函數(shù)的兩個(gè)基本功能函數(shù)的兩個(gè)基本功能OSTime +; / * 它位于OS_CORE.C文件,INT32U 類(lèi)型 */遍歷遍歷 TCB 鏈表,將任務(wù)延時(shí)變量鏈表,將任務(wù)延時(shí)變量 OSTCBDly - ,若該變,若該變量為量為 0 ,且該任務(wù)又不是,且該任務(wù)又不是Suspend,則將該任務(wù)轉(zhuǎn)入到,則將該任務(wù)轉(zhuǎn)入到“就緒狀態(tài)就緒狀態(tài)”;備注:備注:OSTimeTick( ) 函數(shù)是函數(shù)是 uC/OS-II 的基本組成部分,位于的基本組成部分,位于 OS

29、_CORE.C 文件中。文件中。該函數(shù)中內(nèi)嵌了該函數(shù)中內(nèi)嵌了 OSTimeTickHook( ) “時(shí)鐘鉤子函數(shù)時(shí)鐘鉤子函數(shù)” ,用戶可以將目標(biāo)系統(tǒng)中需要單節(jié)拍觸發(fā)的業(yè)務(wù)安排在此用戶可以將目標(biāo)系統(tǒng)中需要單節(jié)拍觸發(fā)的業(yè)務(wù)安排在此函數(shù)中。函數(shù)中。page西安郵電學(xué)院 計(jì)算機(jī)系292022-4-14第3章 目錄n1、 uC/OS-II的中斷n2、 uC/OS-II的時(shí)鐘n3、時(shí)間管理page西安郵電學(xué)院 計(jì)算機(jī)系302022-4-143.3 uC/OS-II 的的時(shí)間管理時(shí)間管理 -(任務(wù)延時(shí)、取消延時(shí)、獲?。ㄈ蝿?wù)延時(shí)、取消延時(shí)、獲取/設(shè)置系統(tǒng)時(shí)間等操作)設(shè)置系統(tǒng)時(shí)間等操作)n任務(wù)的延時(shí)任務(wù)的延時(shí)uC/OS-II 規(guī)定除了規(guī)定除了OSTaskIdel( ) 之外的所有任務(wù)必須在任務(wù)之外的所有任務(wù)必須在任務(wù)體中合適的位置安排體中合適的位置安排OSTimeDly( ) 函數(shù),使本任務(wù)的運(yùn)行能延函數(shù),使本任務(wù)的運(yùn)行能延時(shí)(暫停)一段時(shí)間或時(shí)(暫停)一段時(shí)間或xxxPend函數(shù),使其他任務(wù)有機(jī)會(huì)得到函數(shù),使其他任務(wù)有機(jī)會(huì)得到CPU運(yùn)行機(jī)會(huì)。運(yùn)行機(jī)會(huì)。備注:備注: OSTimeDly( ) 函數(shù)結(jié)束時(shí)會(huì)進(jìn)行一次任務(wù)調(diào)度。函數(shù)結(jié)束時(shí)會(huì)進(jìn)行一次任務(wù)調(diào)度。

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論