在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 消費電子 > 設計應用 > 基于AVR的鉛酸蓄電池管理系統(tǒng)設計

            基于AVR的鉛酸蓄電池管理系統(tǒng)設計

            作者: 時間:2010-03-18 來源:網絡 收藏
            4. 系統(tǒng)軟件
            軟件主要是 uC/OS-II移植和任務的編寫。uC/OS-II是一個免費的、可裁減、源碼開放、結構小巧、搶占式的實時多任務嵌入式內核,主要面向中小型嵌入式系統(tǒng),具有執(zhí)行效率高、占用空間小、可移植性強、實時性能優(yōu)良和可擴展性強等特點[2]。
            為了方便移植,絕大部分 uC/OS-II的代碼是用 ANSI C語言編寫的;但是仍需要用 C語言和匯編語言寫一些與處理器硬件相關的代碼,這是因為uC/OS-II在讀/寫處理器寄存器時,只能通過匯編語言來實現(xiàn)。與處理器相關的代碼包括 OS_CPU.H、OS_CPU_A.ASM和OS_CPU_C.C三個文件,所以移植的主要任務就是修改這三個文件。
            (1) 在修改 OS_CPU.H中與處理器和編譯器相關的代碼時要注意幾點 [3]:
            (a)不同的處理器有不同的字長,uC/OS-II為了確保其可移植性,不使用 C的int,short,long等數(shù)據(jù)類型,因為這些數(shù)據(jù)類型是與編譯器相關的,是不可移植的。
            (b)修改 OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()兩個宏。uC/OS-II需要先禁止中斷再訪問代碼的臨界區(qū),并且在訪問完畢后重新允許中斷。OS_ENTER_CRITICAL()的功能是關中斷,在 S3C2410上通過 OS_CPU_A.ASM中的 INTS_OFF()函數(shù)來實現(xiàn)。OS_EXIT_CRITICAL()用于開中斷,通過 OS_CPU_A.ASM中的INTS_ON()函數(shù)來實現(xiàn)。

            本文引用地址:http://www.biyoush.com/article/166757.htm

            (c)OS_STK_GROWTH用來定義堆棧生長方式, 置 0表示堆棧從下往上增長,置 1表示
            堆棧從上向下增長。而在本中使用的是堆棧從上向下增長 S3C2410處理器,所以置1。(d)OS_TASK_SW()是一個任務切換宏,用于從低優(yōu)先級任務切換到高優(yōu)先級任務。它將任務切換函數(shù)OSCtxSw()封裝起來。
            (2) 修改OS_CPU_C.C中與操作系統(tǒng)相關的OSTaskStkInit()函數(shù)
            OSTaskStkInit()用于任務堆棧初始化,OSTaskCreate()和 OSTaskcreateExt()通過調用OSTaskStkInit()來初始化任務的堆棧結構。圖 3顯示了OSTaskStkInit()在建立任務時,任務堆棧初始化的形式。



            (3) 編寫OS_CPU_A.ASM中4個與處理器相關的函數(shù)
            OSStartHighRdy( )在程序中被 OSStart( )函數(shù)調用,作用是使就緒任務中優(yōu)先級最高的任務開始運行。 OSCtxSw()是任務級的任務切換函數(shù),通過執(zhí)行軟中斷指令,或者依據(jù)處理器的不同,執(zhí)行TPAR(陷阱)指令來實現(xiàn)。OSIntCtxSw()是中斷級任務切換函數(shù),通過調用它,可以在 ISR中執(zhí)行任務切換功能。OSTickISR()為 uC/OS-II提供一個周期性的時鐘源,來實現(xiàn)時間的延遲和超時功能。



            評論


            相關推薦

            技術專區(qū)

            關閉