色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

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

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

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

          本文引用地址:http://cafeforensic.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() //復(fù)位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)的任務(wù)

          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) //設(shè)置液晶屏顯示為圖形模式

          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)任務(wù),其中Main_Task 為系統(tǒng)的主任務(wù),用戶的應(yīng) *

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

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

          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)中的任務(wù)是一個無限循環(huán),同樣,Main_Task 也要陷入一個無限循環(huán)。

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

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

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

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

          就緒狀態(tài)。

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



          關(guān)鍵詞:

          評論


          相關(guān)推薦

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

          關(guān)閉