新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > μC/OS-II在Cortex-M3系列單片機(jī)上的移植

        μC/OS-II在Cortex-M3系列單片機(jī)上的移植

        作者: 時間:2009-02-04 來源:網(wǎng)絡(luò) 收藏

          (2) OS_CPU_C.C文件

          在OS_CPU_C.C定義的C函數(shù)中,OSTaskStkInit()函數(shù)與CPU相關(guān),所以代碼需要修改該函數(shù)。其程序如下(初始化任務(wù)時調(diào)用此函數(shù)初始化任務(wù)使用的堆棧):

        程序

          (3) OS_CPU_A.ASM文件

          μC/OSII的需要編寫5個簡單的匯編語言函數(shù)。

          ① OS_ENTER _CRITICAL( ): 關(guān)閉中斷源。

          ② OS_EXIT_CRITICAL( ): 重開中斷源。

          ③ OSStartHighRdy( ): 運(yùn)行當(dāng)前優(yōu)先級最高的任務(wù)。

          ④ OSCtxSw( ): 一個任務(wù)放棄CPU使用權(quán)時調(diào)用。

          ⑤ OSIntCtxSw(): 在退出中斷服務(wù)函數(shù)OSIntExit()中被調(diào)用,實(shí)現(xiàn)中斷級任務(wù)切換。

          因?yàn)長M3S單片機(jī)目前只支持8位中斷優(yōu)先級中的高3位,所以這里把1左移5位即是00100000B,其宏定義為OS_CRITICAL_INT_PRIOEQU(15)。

          ARM CortexM3使用OSPendSV( )函數(shù)快捷地進(jìn)行上下文切換。OSPendSV( )的C語言表述程序如下:

        程序

          完成上述工作后,只要再根據(jù)目標(biāo)板的實(shí)際情況編寫Target目錄中的3個文件,μC/OSII就可以運(yùn)行在LM3S8962單片機(jī)上了。

        3 實(shí)際應(yīng)用

          工作完成后,編寫了一段程序,可以進(jìn)行CAN通信,按鍵控制LED燈,通過RS232串口與主機(jī)相連實(shí)現(xiàn)對SD卡的讀寫等操作。下面是程序的部分代碼:

        程序

          在Main.H中定義任務(wù)優(yōu)先級為:

        程序

          其中創(chuàng)建任務(wù)的任務(wù)代碼為:

        程序

          SDExample為方便觀察SD卡操作任務(wù)編寫的GUI界面,選好與程序?qū)?yīng)的串口波特率,連接好硬件。從圖2可以看到,對SD卡可以進(jìn)行成功操作。

        SD卡操作任務(wù)編寫的GUI界面

        圖2 SD卡操作任務(wù)編寫的GUI界面

          結(jié)語

          μC/OSII作為一個優(yōu)秀的實(shí)時操作系統(tǒng),已經(jīng)被移植到各種體系結(jié)構(gòu)的微處理器上。本設(shè)計(jì)實(shí)現(xiàn)了其在LM3S8962上的成功移植,并通過一個實(shí)例驗(yàn)證了移植的正確性。本次移植只是做了一些基礎(chǔ)性工作,在此基礎(chǔ)上還可進(jìn)行進(jìn)一步的開發(fā),充分利用LM3S系列單片機(jī)的性能和μC/OSII的特點(diǎn),在檢測與維修領(lǐng)域發(fā)揮一定作用。


        上一頁 1 2 下一頁

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 巴林右旗| 渭南市| 长岛县| 于田县| 云梦县| 太湖县| 曲水县| 晋宁县| 遂溪县| 聂荣县| 神农架林区| 河曲县| 西乌| 遵义市| 临朐县| 务川| 武夷山市| 河曲县| 云霄县| 姚安县| 顺平县| 南城县| 巴南区| 柳林县| 嵊泗县| 盐边县| 海淀区| 务川| 滦平县| 教育| 津南区| 唐山市| 涿鹿县| 城步| 库伦旗| 托克逊县| 淳化县| 武穴市| 二连浩特市| 无为县| 石楼县|