亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
97久久超碰精品国产| 91亚洲永久精品| 又紧又大又爽精品一区二区| 日韩一级在线观看| 欧美性猛交xxxxxxxx| 国产精品99久久久久久久女警| 亚洲高清三级视频| 国产精品国产三级国产三级人妇| 精品成人在线观看| 在线电影院国产精品| 色哟哟在线观看一区二区三区| 精品亚洲aⅴ乱码一区二区三区| 亚洲成人av中文| 亚洲欧洲无码一区二区三区| 久久网站热最新地址| 欧美一区二区三区播放老司机| 色哟哟亚洲精品| 北条麻妃国产九九精品视频| 国产激情一区二区三区四区 | 国产成人在线免费| 久久精品国产一区二区三区免费看 | 一区二区三区日本| 国产精品女主播av| 国产女人18水真多18精品一级做| 精品国产伦理网| 欧美一区二区私人影院日本| 欧美三级在线看| 欧美日韩中文另类| 在线观看成人免费视频| 一本久久综合亚洲鲁鲁五月天 | 国产在线不卡一区| 九九九久久久精品| 国产寡妇亲子伦一区二区| 狠狠色丁香久久婷婷综合丁香| 奇米777欧美一区二区| 日韩精品高清不卡| 日本强好片久久久久久aaa| 日韩极品在线观看| 蜜臀va亚洲va欧美va天堂| 亚洲成人综合网站| 日韩国产欧美视频| 蜜桃久久久久久| 精品在线你懂的| 国产福利91精品一区| 国产成人av电影在线| 成人aa视频在线观看| 97久久精品人人做人人爽| 91国偷自产一区二区三区观看| 色呦呦网站一区| 欧美日韩中文字幕一区二区| 欧美人动与zoxxxx乱| 91精品国产色综合久久不卡蜜臀| 欧美一级理论片| 久久综合九色综合欧美98| 久久亚洲私人国产精品va媚药| 久久综合久久99| 中文在线资源观看网站视频免费不卡| 久久精品人人爽人人爽| 中文字幕日韩一区| 亚洲国产一区二区视频| 日韩国产欧美视频| 国产精品资源在线| 91久久精品一区二区三| 在线不卡中文字幕| 久久久久久久久蜜桃| 中文字幕一区二区三区不卡| 亚洲愉拍自拍另类高清精品| 免费人成在线不卡| 成人免费黄色在线| 欧美三级电影一区| 欧美r级在线观看| 中文字幕乱码久久午夜不卡| 一区二区免费在线| 精品在线免费视频| 一本大道久久a久久综合| 欧美二区三区的天堂| 国产亚洲欧美中文| 亚洲影院在线观看| 国产精品996| 欧美日韩国产乱码电影| 日本一区二区久久| 日本在线不卡视频| 99在线精品观看| 日韩一区二区中文字幕| 中文字幕一区二区三区在线播放| 日韩电影在线观看网站| av资源网一区| 亚洲欧洲日韩av| 美国一区二区三区在线播放| aaa亚洲精品一二三区| 91精品国产综合久久久久久漫画| 国产精品国产a| 蜜臀久久99精品久久久久宅男| 91色乱码一区二区三区| 精品美女被调教视频大全网站| 亚洲精品亚洲人成人网在线播放| 激情五月激情综合网| 欧美三级欧美一级| 亚洲欧洲精品一区二区三区 | 亚洲一区在线看| 国产在线精品一区二区三区不卡| 在线精品视频一区二区三四| 中文字幕av资源一区| 久久精品国产久精国产爱| 色一区在线观看| 中文字幕在线不卡一区二区三区| 久久99精品久久久| 欧美美女bb生活片| 亚洲一区二区三区视频在线播放| 成人午夜精品在线| 精品粉嫩aⅴ一区二区三区四区| 亚洲香蕉伊在人在线观| 91首页免费视频| 中文在线一区二区| 国产一区福利在线| 91精品综合久久久久久| 亚洲综合久久久| 一本大道久久a久久综合| 最新国产精品久久精品| 国产suv精品一区二区6| 久久人人超碰精品| 日韩1区2区日韩1区2区| 欧美日韩一区二区三区高清| 亚洲自拍偷拍麻豆| 91浏览器入口在线观看| 国产精品久久久久久福利一牛影视| 久久精品久久99精品久久| 日韩一区二区三区免费观看| 亚洲成人久久影院| 国产激情一区二区三区四区| 久久久久久99精品| 九九精品一区二区| xnxx国产精品| 国产精品一区二区你懂的| 久久色.com| 国产精品996| 国产精品久久久久久久久免费丝袜 | 久久久亚洲高清| 精品一区二区三区不卡 | 亚洲日本va午夜在线影院| 成人免费视频视频在线观看免费 | 99视频国产精品| 国产精品入口麻豆原神| eeuss鲁一区二区三区| 成人欧美一区二区三区1314| 色综合天天综合网天天狠天天| 亚洲日本一区二区三区| 色综合咪咪久久| 一区二区三区影院| 欧美精品久久一区| 久久国产夜色精品鲁鲁99| 欧美成人综合网站| 国产精品亚洲一区二区三区在线 | 午夜精品一区在线观看| 91精品国产综合久久精品图片| 日本不卡一二三| 精品日韩在线一区| 成人黄色电影在线| 亚洲线精品一区二区三区八戒| 欧美一区二区精品在线| 韩国欧美国产1区| 中文在线资源观看网站视频免费不卡| 91色porny蝌蚪| 欧美96一区二区免费视频| 国产亲近乱来精品视频 | 久久久99精品久久| caoporen国产精品视频| 亚洲一区二区综合| 日韩精品一区二区在线观看| 成人免费高清在线观看| 亚洲高清久久久| 久久综合99re88久久爱| 不卡在线观看av| 日韩综合在线视频| 国产精品区一区二区三| 欧美日韩在线播放三区四区| 国产揄拍国内精品对白| 亚洲激情图片一区| 欧美变态口味重另类| 91热门视频在线观看| 久久精品国产77777蜜臀| 亚洲欧洲成人精品av97| 69p69国产精品| caoporm超碰国产精品| 久久精品国产第一区二区三区| 亚洲欧洲av在线| 精品国产123| 欧美性xxxxxxxx| 成人app在线观看| 久久99热99| 亚洲成人资源网| 中文字幕一区二区三区四区不卡| 91精品国产免费久久综合| 91丨九色丨尤物| 国产酒店精品激情| 日本麻豆一区二区三区视频| 国产精品久久久久9999吃药| 欧美videofree性高清杂交| 精品视频色一区| 色综合中文字幕国产|