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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 一個uCOS ARM系統(tǒng)的啟動過程分析及系統(tǒng)構(gòu)架

          一個uCOS ARM系統(tǒng)的啟動過程分析及系統(tǒng)構(gòu)架

          作者: 時間:2016-10-08 來源:網(wǎng)絡 收藏

          /****************************************************

          本文引用地址:http://www.ex-cimer.com/article/201610/305776.htm

          *一個uCOS ARM系統(tǒng)的啟動過程分析及系統(tǒng)構(gòu)架。 *

          *Main 函數(shù)的代碼如下: *

          *****************************************************/

          int Main(int argc, char **argv)

          {

          ARMTargetInit() // 系統(tǒng)硬件初始化

          OSInit() //初始化操作系統(tǒng)

          uHALr_ResetMMU() //復位MMU

          LCD_Init() //初始化LCD 模塊

          LCD_printf(LCD initialization is OKn) //顯示液晶屏信息

          LCD_printf(240 x 128 Text Moden)

          LoadFont() //裝載系統(tǒng)字體

          LCD_printf(Create task on uCOS-II...n) //顯示液晶屏信息

          //創(chuàng)建系統(tǒng)的任務

          OSTaskCreate(Main_Task, (void *)0,

          (OS_STK *) Main_Stack[STACKSIZE*8-1], Main_Task_Prio)

          OSTaskCreate(Led_Flash_Task, (void *)0,

          (OS_STK *) Led_Flash_Stack[STACKSIZE-1], Led_Flash_Prio )

          OSTaskCreate(Lcd_Fresh_Task, (void *)0,

          (OS_STK *) Lcd_Fresh_Stack[STACKSIZE-1], Lcd_Fresh_prio )

          OSTaskCreate(Key_Scan_Task, (void *)0,

          (OS_STK *) Key_Scan_Stack[STACKSIZE-1], Key_Scan_Task_Prio )

          LCD_printf(Starting uCOS-II...n)

          LCD_printf(Entering graph mode...n)

          LCD_ChangeMode(DspGraMode) //設置液晶屏顯示為圖形模式

          initOSGUI() //初始化圖形用戶界面

          InitRtc() //初始化系統(tǒng)時鐘

          LCDFresh_MBox=OSMboxCreate(NULL) //創(chuàng)建LCD 刷新郵箱

          Lcd_Disp_Sem=OSSemCreate(1) //創(chuàng)建LCD 緩沖區(qū)控制權(quán)旗語,初值為1 滿足互斥條件

          Nand_Rw_Sem=OSSemCreate(1) //創(chuàng)建Nand-Flash 讀寫控制權(quán)旗語,初值為1 滿足互斥條件

          ARMTargetStart() //啟動操作系統(tǒng)的硬件定時器等中斷

          OSStart() // 啟動操作系統(tǒng)

          //程序不會運行至此

          return 0

          }//main end

          /****************************************************

          *系統(tǒng)啟動的時候創(chuàng)建了4 個系統(tǒng)任務,其中Main_Task 為系統(tǒng)的主任務,用戶的應 *

          *用程序就是從Main_Task 任務開始的。其代碼如下: *

          *****************************************************/

          void Main_Task(void *Id) //Main_Test_Task

          {

          POSMSG pMsg=0

          ClearScreen() //清除屏幕

          for( )

          OSTimeDly(1000)

          //消息循環(huán)

          /* for( ){

          pMsg=WaitMessage(0)

          tch(pMsg-> Message){

          case OSM_KEY:

          onKey(pMsg-> WParam,pMsg-> LParam)

          break

          }

          DeleteMessage(pMsg)

          }*/

          }

          /**************************************************

          通常多操作系統(tǒng)中的任務是一個無限循環(huán),同樣,Main_Task 也要陷入一個無限循環(huán)。

          因為uCOS-II 是占先式多任務操作系統(tǒng),如果沒有比Main_Task 任務更高優(yōu)先級的任務

          進入就緒狀態(tài),Main_Task 任務是不會放棄CPU 的控制權(quán)的。通過調(diào)用OSTimeDly(INT16U

          ticks)函數(shù),可以使操作系統(tǒng)進行一次任務調(diào)度,并且執(zhí)行下一個優(yōu)先級最高的就緒狀態(tài)的

          任務。參數(shù)Ticks 表示任務延時的節(jié)拍數(shù),一旦規(guī)定的時間期滿,該任務馬上又會重新進入

          就緒狀態(tài)。

          ****************************************************/



          關鍵詞:

          評論


          相關推薦

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

          關閉
          看屁屁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); })();