亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? manual.txt

?? 51單片機的實時系統
?? TXT
?? 第 1 頁 / 共 3 頁
字號:
                Small RTOS(51) 1.10v 使用手冊 

概述:
    Small RTOS是一個源代碼公開的多任務實時操作系統,Small RTOS 51
是其在8051系列處理器上的移植(使用keil c51)。Small RTOS可以簡化那
些復雜而且時間要求嚴格的工程的軟件設計工作.本手冊主要講述Small RTOS
的使用,本說明了在8051系列處理器上使用應該注意的問題。同時講述了
Small RTOS的移植。
    本手冊僅針對Small RTOS(51) 1.10版本




Small RTOS的特點:
(1)公開源代碼
    只要遵循許可協議,任何人可以免費獲得源代碼。
(2)可移植
    作者盡量使用把與CPU相關部分壓縮到最小,與CPU無關部分用ansi c編
    寫。
(3)可固化
    Small RTOS為嵌入系統設計,如果您有固化手段,它可以嵌入到您的產
    品中成為產品的一部分。
(4)占先式
    Small RTOS可以管理16個任務,每個任務優先級不同。
(5)中斷管理
    中斷可以使正在執行的任務掛起。如果優先級更高的任務被中斷喚醒,則
    高優先級的任務在中斷嵌套全部退出后立即執行。中斷嵌套層數可達255
    層。如果需要,可以禁止中斷嵌套管理。
(6)RAM需求小
    Small RTOS為小RAM系統設計,應而RAM需求小,相應的,系統服務也少。




Small RTOS的使用:
(1)系統配置:
    os_cfg.h中定義了一些常量可以配置系統,具體定義如下:

    #define OS_MAX_TASKS            4           /* 最大任務數1~16                                           */
    #define OS_TICKS_PER_SEC        10          /* 設置1秒系統系統節拍數                                    */
    #define EN_USER_TICK_TIMER      0           /* 禁止(0)或允許(1)系統定時中斷調用用戶函數UserTickTimer()  */
    #define EN_OS_INT_ENTER         1           /* 禁止(0)或允許(1)中斷嵌套管理                             */
    #define EN_TIMER_SHARING        1           /* 禁止(0)或允許(1)定時器中斷調用OSTimeTick()               */
    #define TICK_TIMER_SHARING      1           /* 定義進入多少次硬件中斷為一次系統定時器軟中斷             */

    #define EN_OS_Q                 0           /* 禁止(0)或允許(1)消息隊列                                 */
    #define EN_OS_Q_CHK             0           /* 禁止(0)或允許(1)校驗消息隊列指針                         */
    #define OS_Q_MEM_SEL            xdata       /* 消息隊列存儲空間選擇,keil c51有用,必須為idata、xdata   */
                                                /* 不是keil c51時它必須為空格                               */
    #define EN_OS_Q_PENT            1           /* 禁止(0)或允許(1)等待隊列中的消息                         */
    #define EN_OS_Q_ACCEPT          0           /* 禁止(0)或允許(1)無等待的從隊列中取得消息                 */
    #define EN_OS_Q_POST            0           /* 禁止(0)或允許(1)FIFO方式相對列發送消息                   */
    #define EN_OS_Q_POST_FRONT      1           /* 禁止(0)或允許(1)LIFO方式相對列發送消息                   */
    #define EN_OS_Q_INT_POST        0           /* 禁止(0)或允許(1)中斷中FIFO方式相對列發送消息             */
    #define EN_OS_Q_INT_POST_FRONT  1           /* 禁止(0)或允許(1)中斷中LIFO方式相對列發送消息             */
    #define EN_OS_Q_NMsgs           1           /* 禁止(0)或允許(1)取得隊列中消息數                         */
    #define EN_OS_Q_SIZE            0           /* 禁止(0)或允許(1)取得隊列總容量                           */
    #define EN_OS_Q_FLUSH           0           /* 禁止(0)或允許(1)清空隊列                                 */

    #define EN_OS_SEM               0           /* 禁止(0)或允許(1)信號量                                   */
    #define EN_OS_SEM_CHK           0           /* 禁止(0)或允許(1)校驗信號量索引                           */
    #define OS_SEM_MEM_SEL          idata       /* 信號量儲空間選擇,keil c51有用,必須為idata、xdata       */
                                            /* 不是keil c51時它必須為空格                               */
    #define OS_MAX_SEMS             2           /* 最大信號量數目                                           */
    #define EN_OS_SEM_PENT          1           /* 禁止(0)或允許(1)等待信號量                               */
    #define EN_OS_SEM_ACCEPT        0           /* 禁止(0)或允許(1)無等待請求信號量                         */
    #define EN_OS_SEM_INT_POST      0           /* 禁止(0)或允許(1)中斷中發送信號量                         */
    #define EN_OS_SEM_POST          1           /* 禁止(0)或允許(1)中發送信號量                             */
    #define EN_OS_SEM_QUERY         0           /* 禁止(0)或允許(1)查詢信號量                               */

    //#define idata                               /* 非keil c51時必須加止這一句                               */


    #if EN_TIMER_SHARING == 0
    #define TIME_ISR_TASK_ID     SHOW_TASK_ID   /* 定義系統定時器軟中斷觸發的任務ID                         */
    #endif

    Os_cpu.h中定義了一些常量可以配置一些與cpu相關的部分。
    針對Small RTOS 51,具體定義如下:

    #define EN_SP2        0                     /* 禁止(0)或允許(1)非屏蔽中斷                               */
    #define  IDATA_RAM_SIZE  0x100              /* idata大小                                                */
    #define  Sp2Space       4                   /* 高級中斷(軟非屏蔽中斷)堆棧大小 EN_SP2為0時無效         */
    #define OS_TIME_ISR     1                   /* 系統定時器使用的中斷                                     */
    //
    SET_EA   MACRO                              ;打開所有允許中斷
             SETB     EA
         ENDM

(2)與編譯器無關的數據類型
    為了便于移植,Small RTOS定義了6種數據類型,它在Os_cpu.h定義。
    針對Small RTOS 51,具體定義如下:
    
    typedef unsigned char  uint8;                                   /* 定義可移植的無符號8位整數關鍵字            */
    typedef signed   char  int8;                                    /* 定義可移植的有符號8位整數關鍵字            */
    typedef unsigned int   uint16;                                  /* 定義可移植的無符號16位整數關鍵字           */
    typedef signed   int   int16;                                   /* 定義可移植的有符號16位整數關鍵字           */
    typedef unsigned long  uint32;                                  /* 定義可移植的無符號32位整數關鍵字           */
    typedef signed   long  int32;                                   /* 定義可移植的有符號32位整數關鍵字           */
    
(3)運行Small RTOS
    在main函數中調用OSStart()后系統開始運行,OSStart()結束后運行
    優先級為0的任務。
    注意:在調用OSStart()前不要使能總中斷標志,系統會自動使能這個
    標志,對于8051系列,這個標志為EA。
(4)建立任務:
    Small RTOS使用靜態方法建立任務,在config.h中有這樣一段代碼:

   #ifdef IN_OS_CPU_C 
   extern void TaskA(void);
   extern void TaskB(void);
   extern void TaskC(void);
   void  (* const TaskFuction[OS_MAX_TASKS])(void)={TaskA,TaskB,TaskC};
   //函數數組TaskFuction[]保存了各個任務初始PC指針,其按任務ID(既優先級次序)順序保存
   #endif
   
    用戶只要定義好OS_MAX_TASKS,TaskFuction[],任務將自動運行。其
    中TaskA等為任務對應函數。
    注意:ID為0的任務為最高優先級任務,系統運行后首先執行它。
(5)刪除任務
    Small RTOS 1.10版不允許刪除任務,因此,每個任務必須為無限循環
    結構。
(6)任務睡眠
    任務可以調用OSWait()使自己睡眠,其原型如下:
    
    unsigned char OSWait(uint8 typ, uint8 ticks);

    功能描述: 系統等待函數,任務調用此函數可以等待一定時間或信號
    輸入: typ: 等待事件類型,目前可以取以下值,或是其中任意個值的按位或
              K_SIG: 等待信號
              K_TMO: 等待超時    
         ticks : 等待超時時的系統節拍數
    輸出 : NOT_OK : 參數錯誤
          TMO_EVENT : 超時到
          SIG_EVENT : 有信號
    如果任務等待信號,另一個任務可以調用OSSendSignal()使其進入就
    緒狀態,其原型如下:
   
    void OSSendSignal(uint8 TaskId);
 
    功能描述: 中斷中給指定任務發送信號,既使指定任務就緒
    輸 入: TaskId : 任務ID
    輸 出: 無
    中斷調用OSIntSendSignal()也可以喚醒睡眠任務,其原型如下:
   
    void OSIntSendSignal(uint8 TaskId);

    功能描述: 任務中給指定任務發送信號,既使指定任務就緒
    輸 入: TaskId : 任務ID
    輸 出: 無
    
    用戶調用OSQPend和OSSemPend時也可能使任務睡眠,可參見相應章節。    
(7)優先級最低的任務
    優先級最低的任務必須一直處于就緒狀態,不允許調用OSWait等可能
    使自己進入休眠狀態的函數。
(8)消息隊列和信號量
    Small RTOS使用簡化的消息隊列,實質上出隊入隊的均為uint8類型
    變量,而不是指針。消息隊列和信號量的使用請參見示例及Small 
    RTOS的系統調用。
(9)Small RTOS 51 任務特殊處
    由于keil c51由于keil c51默認不支持重入函數,它的重入函數使用
    仿真的重入棧而不使用系統棧,而Small RTOS 51沒有進行重入棧管
    理,因此,用戶應該保證各個任務的局部變量不會互相覆蓋(方法后
    面有介紹),并且不定義重入函數。
(10)中斷程序編制
    keil c51 例子如下:
    
    #if EN_OS_INT_ENTER >0 
    #pragma disable                                        /* 除非最高優先級中斷或是不需要系統管理的中斷,否則,必須加上這一句  */
    #endif
        void OSTickISR(void) interrupt USER_ISR

    {
        #if EN_OS_INT_ENTER >0 
            OS_INT_ENTER();                                /* 中斷開始處理                                                      */
        #endif
        
        /*用戶代碼在這*/
        
        OSIntExit();                                       /* 中斷結束處理,                                                    */
    }

        
    在其它CPU中,#pragma disable不是必須的,但是可能需要自己在
    OS_INT_ENTER()之前保存任務環境。如果某個中斷不需要OS管理,
    則可以自由編寫。




Small RTOS的系統調用:
(1)OSVersion()
    宏,返回Small RTOS版本號*100
(2)OSRunningTaskID()
    宏,返回當前正在運行的任務ID
(3)OSWait()
    原型:uint8 OSWait(uint8 typ, uint8 ticks);
    功能描述: 系統等待函數,任務調用此函數可以等待一定時間或信號
    輸 入: typ: 等待事件類型,目前可以取以下值,或是其中任意個值的按位或
                K_SIG: 等待信號
                K_TMO: 等待超時    
           ticks : 等待超時時的系統嘀嗒數
    輸 出 : NOT_OK : 參數錯誤
            TMO_EVENT : 超時到
            SIG_EVENT : 有信號
    全局變量: OSWaitTick
    調用模塊: OSIntSendSignal    
(4)OSSendSignal()
    原型:void OSSendSignal(uint8 TaskId)    
    功能描述: 任務中給指定任務發送信號,既使指定任務就緒
    輸 入: TaskId : 任務ID
    輸 出: 無
    全局變量: OSTaskRuning
    調用模塊: OSSched    
(5)OSIntSendSignal()
    原型:void OSIntSendSignal (uint8 TaskId);
    功能描述: 中斷中給指定任務發送信號,既使指定任務就緒
    輸 入: TaskId : 任務ID
    輸 出: 無
    全局變量: OSTaskRuning
    調用模塊: 無
(6)OSQCreate()
    原型:uint8 OSQCreate(uint8 OS_Q_MEM_SEL *Buf, uint8 SizeOfBuf);
    功能描述: 初始化消息隊列
    輸 入: Buf:為隊列分配的存儲空間地址
            SizeOfBuf:為隊列分配的存儲空間大小
    輸 出: NOT_OK:參數錯誤
            OS_Q_OK:成功
    全局變量: 無
    調用模塊: 無
(7)OSQPend()
    原型:uint8 OSQPend(uint8 idata *Ret, uint8 OS_Q_MEM_SEL *Buf, uint8 Tick);
    功能描述: 等待消息隊列中的消息
    輸 入: Ret:返回的消息
            Buf:指向隊列的指針
            Tick:等待時間

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品一区二区在线观看| 日韩午夜在线观看| 3d成人动漫网站| 中文字幕欧美区| 视频一区欧美精品| 色综合天天综合色综合av | 欧美亚洲动漫精品| 国产亚洲一区二区三区| 日韩成人免费在线| 欧美视频精品在线观看| 亚洲国产一区视频| 在线观看视频一区二区| 中文字幕欧美国产| 日本亚洲一区二区| 欧美午夜精品免费| 国产精品美女久久久久高潮| 蜜臀久久久99精品久久久久久| 成人黄色一级视频| 久久久777精品电影网影网| 同产精品九九九| 色屁屁一区二区| 亚洲欧美偷拍三级| 不卡影院免费观看| 国产精品拍天天在线| 国产一区久久久| 日韩午夜av电影| 日韩影院精彩在线| 欧美精品丝袜中出| 亚洲国产日韩一区二区| 91久久精品一区二区二区| 中文字幕一区av| 99精品久久99久久久久| 亚洲欧美日本在线| 色婷婷av一区| 亚洲国产综合91精品麻豆| 欧美在线观看视频一区二区三区| 亚洲三级电影网站| 91国产精品成人| 亚洲成人动漫在线免费观看| 欧美日韩国产a| 免费日韩伦理电影| 欧美成人精精品一区二区频| 久久精品国产77777蜜臀| 日韩精品中文字幕在线不卡尤物| 日韩精品午夜视频| 2021国产精品久久精品| 国产一区二区免费看| 日本一区二区三区在线观看| 成人免费av在线| 亚洲激情男女视频| 日韩三级av在线播放| 国产综合久久久久影院| 国产女人水真多18毛片18精品视频 | 亚洲一区二区三区四区不卡 | 懂色av一区二区三区免费观看| 国产日韩在线不卡| 色综合中文综合网| 日韩美女视频在线| 国产成人精品免费一区二区| 亚洲视频图片小说| 91精品久久久久久久91蜜桃| 男人的天堂久久精品| 久久久久久久综合狠狠综合| 99精品视频在线播放观看| 婷婷一区二区三区| 日本一区二区三区视频视频| 在线视频你懂得一区二区三区| 日本色综合中文字幕| 久久综合久久鬼色| 日本久久一区二区三区| 久久超碰97人人做人人爱| 久久久99久久| 日本亚洲一区二区| 欧美日韩一区二区三区四区| 久久国产福利国产秒拍| 一区二区三区在线影院| 精品国产精品一区二区夜夜嗨| 91日韩在线专区| 国产在线精品一区二区三区不卡 | 欧美日韩久久久一区| 狠狠色丁香九九婷婷综合五月| 亚洲一区二区三区国产| 国产午夜亚洲精品不卡| 欧美日韩国产精选| 91免费在线看| 国产成人亚洲综合色影视| 日本不卡123| 亚洲精品国产视频| 国产女人18毛片水真多成人如厕 | 国产一区二区电影| 石原莉奈在线亚洲三区| 亚洲伦在线观看| 国产精品蜜臀在线观看| 欧美精品一区视频| 日韩一级视频免费观看在线| 色婷婷av一区二区三区软件| 不卡的av电影| 丁香天五香天堂综合| 国内精品国产成人国产三级粉色 | 精品少妇一区二区三区日产乱码 | 国产精品一区二区三区四区| 日韩电影免费在线观看网站| 亚洲国产综合人成综合网站| 亚洲精品久久7777| 日韩理论片一区二区| 国产女主播一区| 国产欧美日韩一区二区三区在线观看| 色综合网色综合| 国产精品乡下勾搭老头1| 欧美日韩免费视频| 久久青草国产手机看片福利盒子| 91视频免费观看| 国产91精品露脸国语对白| 高清不卡一区二区在线| 色婷婷综合五月| 欧美日韩精品一区二区三区蜜桃 | 欧美伦理视频网站| 国产精品99久久久久久久女警| 极品瑜伽女神91| 精品一区二区三区日韩| 国产一区不卡视频| 国产毛片一区二区| 福利电影一区二区三区| 成人黄色免费短视频| 99精品一区二区| 在线观看日产精品| 69堂精品视频| 欧美v日韩v国产v| 久久久99免费| 综合久久给合久久狠狠狠97色| |精品福利一区二区三区| 亚洲最色的网站| 免费观看久久久4p| 国产99精品国产| 色哦色哦哦色天天综合| 在线电影一区二区三区| 久久午夜色播影院免费高清| 国产喷白浆一区二区三区| 亚洲色图欧洲色图婷婷| 亚洲中国最大av网站| 欧美肥妇毛茸茸| 中文字幕第一区二区| 美女性感视频久久| 综合久久综合久久| 亚洲18女电影在线观看| 裸体歌舞表演一区二区| caoporn国产一区二区| 色婷婷综合在线| 2021国产精品久久精品| 一区二区视频在线看| 免费精品视频最新在线| av高清久久久| 日韩视频免费观看高清完整版 | 亚洲成av人在线观看| 看国产成人h片视频| 色妹子一区二区| 精品精品欲导航| 亚洲最大的成人av| 国产高清久久久久| 欧美日韩日日摸| 中文字幕一区在线观看视频| 奇米精品一区二区三区四区 | 欧美日韩精品一区二区| 欧美另类一区二区三区| 欧美国产激情二区三区 | 7777精品伊人久久久大香线蕉的| 国产午夜精品理论片a级大结局| 亚洲综合av网| 成人av在线电影| 日韩欧美一区二区久久婷婷| 亚洲欧美另类小说| 国产成人一区在线| 欧美成人官网二区| 亚洲午夜精品一区二区三区他趣| 国产不卡一区视频| 国产精品77777| 日本亚洲最大的色成网站www| 成人一级视频在线观看| 欧美哺乳videos| 日韩高清不卡一区二区三区| 91免费国产在线| 中文字幕av免费专区久久| 久久成人18免费观看| 日韩欧美中文字幕一区| 天天免费综合色| 欧美色国产精品| 亚洲一级电影视频| 在线亚洲高清视频| 亚洲日本青草视频在线怡红院| 成人一区二区三区中文字幕| 国产日韩综合av| 成人伦理片在线| 国产精品国产三级国产a | 日韩精品91亚洲二区在线观看| 色诱视频网站一区| 白白色亚洲国产精品| 亚洲成人自拍一区| 亚洲人成在线观看一区二区| 国产日韩精品一区二区三区| 国产精品久久毛片|