<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

            (2) OS_CPU_C.C文件

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

          程序

            (3) OS_CPU_A.ASM文件

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

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

           ?、?OS_EXIT_CRITICAL( ): 重開中斷源。

           ?、?OSStartHighRdy( ): 運行當前優(yōu)先級最高的任務。

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

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

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

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

          程序

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

          3 實際應用

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

          程序

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

          程序

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

          程序

            SDExample為方便觀察SD卡操作任務編寫的GUI界面,選好與程序?qū)拇诓ㄌ芈剩B接好硬件。從圖2可以看到,對SD卡可以進行成功操作。

          SD卡操作任務編寫的GUI界面

          圖2 SD卡操作任務編寫的GUI界面

            結(jié)語

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


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();