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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? os.h

?? SmallRTOSAVR.rar
?? H
字號(hào):
/*********************************************************************************************************
**                                        Small RTOS
**                                   The Real-Time Kernel
**                           (c) Copyright 2002-2003, chenmingji
**                                     All Rights Reserved
**                                         V1.50.0
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: OS.h
**創(chuàng)   建   人: 陳明計(jì)
**最后修改日期: 2005年6月10日
**描      述: Small RTOS C語言頭文件,定義一些宏和聲明一些函數(shù)和變量
**
**--------------歷史版本信息----------------------------------------------------------------------------
** 創(chuàng)建人: 陳明計(jì)
** 版  本: V1.50.0 內(nèi)部測(cè)試版
** 日 期: 2005年6月10日
** 描 述: 基本完成全新的Small RTOS核
**
**------------------------------------------------------------------------------------------------------
** 修改人: 
** 版  本: 
** 日 期: 
** 描 述: 
**
**--------------當(dāng)前版本修訂------------------------------------------------------------------------------
** 修改人: 焦進(jìn)星
** 日 期: 2007年12月30日
** 描 述: 移植到AVR系列芯片,適用于atmega16/32等
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#ifndef __RT_OS_H
#define __RT_OS_H

    #ifdef __cplusplus
    extern "C" {
    #endif


#define  OS_VERSION    150                              /* 系統(tǒng)版本號(hào)   */

/*********************************************************************************************************
**                            定義函數(shù)返回值
********************************************************************************************************/
#define OS_NO_ERR                 0             /* 結(jié)果正確         */
#define OS_ERR_EVENT_TYPE         1             /* 錯(cuò)誤事件類型     */
#define OS_ERR_PEND_ISR           2             /* 在IRS中等待事件  */
#define OS_ERR_POST_NULL_PTR      3             /* 發(fā)送消息指針為空 */
#define OS_ERR_PEVENT_NULL        4             /* 事件指針為空     */


#define OS_TASK_DEL_ISR          10             /* 在ISR中刪除任務(wù)  */
#define OS_PRIO_INVALID          11             /* 錯(cuò)誤的任務(wù)優(yōu)先級(jí) */
#define OS_TASKID_INVALID        12             /* 錯(cuò)誤的任務(wù)ID     */

#define OS_TIMEOUT               20             /* 超時(shí)             */

#define OS_MSG_EMPTY             30             /* 消息空           */
#define OS_MSG_SEND_ERR          31             /* 消息發(fā)送錯(cuò)誤     */

#define OS_EVENT_DEL             40             /* 事件被刪除       */

#define OS_Q_FULL                50             /* 消息隊(duì)列滿       */

#define OS_SEM_OVF               60             /* 信號(hào)量滿         */

/*********************************************************************************************************
**                            定義其它
********************************************************************************************************/
#define BASE_FIFO               1           /* 等待事件模式為FIFO       */
#define BASE_PRIO               2           /* 等待事件模式為基于優(yōu)先級(jí) */

#if OS_MAX_TASKS < 255
typedef uint8  TASK_ID;
#define  OS_ID_SELF             0xff
#else
    #if OS_MAX_TASKS < 65535
typedef uint16  TASK_ID;
#define  OS_ID_SELF             0xffff
    #else
typedef uint32  TASK_ID;
#define  OS_ID_SELF             0xffffffff
    #endif
#endif


#define OS_STAT_SUSPEND     (1 << 0)    /* 任務(wù)掛起         */
#define OS_STAT_DLY         (1 << 1)    /* 等待超時(shí)         */
#define OS_STAT_EVENT       (1 << 2)    /* 等待事件         */
#define OS_STAT_MSG         (1 << 3)    /* 等待消息         */
#define OS_STAT_MSG_SENGED  (1 << 4)    /* 等待消息發(fā)送完畢 */
#define OS_STAT_MSG_BACK    (1 << 5)    /* 等待消息回應(yīng)     */
#define OS_STAT_DEBUG       (1 << 6)    /* 正在調(diào)試狀態(tài)     */
#define OS_STAT_DEATH       (1 << 7)    /* 任務(wù)死亡         */

#define OS_INFO_RESUME      (1 << 0)    /* 任務(wù)已恢復(fù)       */
#define OS_INFO_DLY         (1 << 1)    /* 任務(wù)延時(shí)完成     */
#define OS_INFO_EVENT       (1 << 2)    /* 任務(wù)得到事件     */
#define OS_INFO_MSG         (1 << 3)    /* 任務(wù)得到消息     */
#define OS_INFO_MSG_SENGED  (1 << 4)    /* 任務(wù)發(fā)送消息完畢 */
#define OS_INFO_MSG_BACK    (1 << 5)    /* 任務(wù)得到消息反饋 */


#define OS_EVENT_SEM        0x01
#define OS_EVENT_Q          0x02

/*********************************************************************************************************
**                            定義數(shù)據(jù)結(jié)構(gòu)
********************************************************************************************************/
typedef struct os_tcb
{
    OS_STK          *OSTCBStkPtr;                       /* 任務(wù)當(dāng)前堆棧 */

    uint8           OSTCBStat;                          /* 任務(wù)狀態(tài) */
    uint8           OSTCBPrio;                          /* 任務(wù)優(yōu)先級(jí) */
    uint16          OSTCBDly;                           /* 任務(wù)延時(shí)、超時(shí)時(shí)間 */
    TASK_ID         OSTCBId;                            /* 任務(wù)ID */
    uint8           OSTCBInfo;                          /* 任務(wù)優(yōu)先級(jí) */

    struct os_tcb   *TcbNext;                           /* 任務(wù)鏈表用 */
    struct os_tcb   *TcbPrev;                           /* 任務(wù)鏈表用 */
    
#if OS_MAX_EVENTS > 0
    struct os_tcb   *EventNext;                         /* 等待事件鏈表用 */
    struct os_tcb   *EventPrev;                         /* 等待事件鏈表用 */
#endif

#if EN_OS_MSG > 0
    void            *Msg;                               /* 給另一個(gè)任務(wù)發(fā)送的消息 */
    struct os_tcb   *MsgHard;                           /* 給自身消息的任務(wù)鏈表的表頭 */
    struct os_tcb   *MsgEnd;                            /* 給自身消息的任務(wù)鏈表的表尾 */
    struct os_tcb   *MsgNext;                           /* 給那個(gè)任務(wù)發(fā)送消息的所有任務(wù)組成的鏈表  */
    struct os_tcb   *MsgPrev;                           /* 給那個(gè)任務(wù)發(fā)送消息的所有任務(wù)組成的鏈表  */
#endif
} OS_TCB;


typedef struct os_tcb_prio                              /* 優(yōu)先級(jí)控制塊 */
 {
    uint16      OSTCBDly;                               /* 此優(yōu)先級(jí)延時(shí)節(jié)拍數(shù) */
    uint16      OSTCBDlyReload;                         /* 此優(yōu)先級(jí)延輪詢調(diào)度節(jié)拍數(shù) */
    OS_TCB      *TcbNext;                               /* 此優(yōu)先級(jí)就緒任務(wù)鏈表 */
} OS_TCB_PRIO;


#if OS_MAX_EVENTS > 0

struct _OS_EVENT;

typedef struct _OS_Q                                    /* 消息隊(duì)列 */
{
    void                **Out;                          /* 指向消息輸出位置         */
    void                **In;                           /* 指向消息輸入位置         */
    void                **End;                          /* 指向Buf的結(jié)束位置        */
    uint16              NData;                          /* 隊(duì)列中數(shù)據(jù)個(gè)數(shù)           */
    uint16              MaxData;                        /* 隊(duì)列中允許存儲(chǔ)的數(shù)據(jù)個(gè)數(shù) */
    
    void                *Buf[1];                        /* 存儲(chǔ)數(shù)據(jù)的空間           */
} OS_Q;


typedef union 
{
    uint16              Cnt;                            /* 信號(hào)量計(jì)數(shù)      */
    void                *OSQPtr;                        /* 消息指針        */
    struct _OS_EVENT    *EventNext;                     /* 空閑事件鏈表用  */
} EVENT_DATA;


typedef struct _OS_EVENT                                /* 事件控制塊 */
{
    uint8       OSEventType;                            /* 事件類型 */
    OS_TCB      *WaitingTcb;                            /* 等待此事件的任務(wù)鏈表 */
    /* 改為WaitingTcbHard */
    OS_TCB      *WaitingTcbEnd;                         /* 等待此事件的任務(wù)鏈表鏈尾 */
    EVENT_DATA  EventData;                              /* 事件指針 */
} OS_EVENT;
#endif

/*********************************************************************************************************
**                            OS_CORE.c
********************************************************************************************************/
#ifndef IN_OS_CORE

extern OS_TCB_PRIO  OSTCBPrioTbl[OS_LOWEST_PRIO];   /* 優(yōu)先級(jí)                   */
extern OS_TCB       OSTCBTbl[OS_MAX_TASKS + 1];     /* 任務(wù)控制塊               */
extern OS_TCB       *OSTCBCur;                      /* 當(dāng)前任務(wù)控制塊           */
extern OS_TCB       *OSTCBHighRdy;                  /* 新任務(wù)控制塊             */
extern uint8        const OSMapTbl[];
extern uint8        OsEnterSum;                     /* 管中斷嵌套層次           */
extern uint8        OSIntNesting;                   /* 中斷嵌套層次             */
extern uint8        OSHighPrio;                     /* 就緒的任務(wù)的最高優(yōu)先級(jí)   */

extern uint16 OSVersion(void);
extern uint8 OSInit(void);
extern uint8 OSFindNextRunningTask(void);
extern uint8 OSIntExit(void);
extern uint8 OSSched(void);
extern uint8 OSTimeTick(void);
extern uint8 OSSetRoundTick(uint8 Prio, uint16 Ticks);

#endif

/*********************************************************************************************************
**                            OS_TIME.c
********************************************************************************************************/
#ifndef IN_OS_TIME

extern OS_TCB       *OSTCBTimeDly;                  /* 超時(shí)延時(shí)任務(wù)鏈表     */
extern uint16       OSTickCnt;                      /* 當(dāng)前計(jì)數(shù)初值         */
extern uint16       OSTickThisCnt;                  /* 當(dāng)前計(jì)數(shù)剩余值       */

extern uint8 OSTimeTick(void);
extern uint8 OS_TimeDly(uint16 ticks);
extern uint8 OSTimeDly(uint8 ticks);
extern uint8 OSTimeDlyResume(TASK_ID TaskID);
extern uint8  OS_TimeTick(void);
extern uint8 OS_TimeTickDel(OS_TCB *Tcb);

#endif
/*********************************************************************************************************
**                            OS_TASK.c
********************************************************************************************************/
#ifndef IN_OS_TASK

extern uint8 _OS_TaskResume(OS_TCB *Tcb);
extern uint8 OS_TaskResume(TASK_ID TaskID);
extern uint8 _OS_TaskSuspend(OS_TCB *Tcb);
extern uint8 OSTaskCreate(void   (*Task)(void *Pd),
                          void    *Pdata,
                          OS_STK  *Ptos,
                          uint8    Prio,
                          TASK_ID  TaskId,
                          uint32   StkSize,
                          int      PSR,
                          uint8    TaskStat);
extern uint8 OSTaskDel(TASK_ID TaskID);
extern uint8 OSTaskResume(TASK_ID TaskID);
extern uint8 OSTaskSuspend(TASK_ID TaskID);
extern uint8 OSTaskChangePrio(TASK_ID TaskID, uint8 NewPrio);

#endif

/*********************************************************************************************************
**                            OS_TIME.c
********************************************************************************************************/
#ifndef IN_OS_TIME
extern void * OSMsgPend(uint8 Tick, TASK_ID *TaskId, uint8 *err);
extern void * OSMsgAccept(TASK_ID *TaskId, uint8 *err);
extern uint8 OSMsgPost(TASK_ID TaskId, void *Msg);
extern uint8  OSMsgPostFront(TASK_ID TaskId, void * Msg);
extern uint32 OSMsgNMsgs(TASK_ID TaskId);
extern void OSMsgFlush (TASK_ID TaskId);
extern uint8 OSMsgDel (TASK_ID TaskId);
extern uint8 OSMsgSended (uint16 Tick);
extern void * OSMsgBackPend (uint16 Tick, uint8 *err);
extern void * OSMsgBackAccept (uint8 *err);
extern uint8 OSMsgBackPost (TASK_ID TaskId, void *Msg);
#endif

/*********************************************************************************************************
**                            OS_EVENT.c
********************************************************************************************************/

#ifndef IN_OS_EVENT
extern uint8 OSEventinit(void);
extern OS_EVENT * OSEventNew (void);
extern uint8 OSEventResume(OS_EVENT *pEvent);
extern uint8 OSEventFree (OS_EVENT *pEvent);
extern uint8 OSEventWait (OS_EVENT *pEvent, uint8 Tick);
#endif

/*********************************************************************************************************
**                            OS_SEM.c
********************************************************************************************************/

#ifndef IN_OS_SEM
extern OS_EVENT * OSSemCreate(uint16 Data);
extern uint8 OSSemPend(OS_EVENT * pEvent, uint16 Tick);
extern uint16 OSSemAccept(OS_EVENT * pEvent);
extern uint8 OSSemPost(OS_EVENT * pEvent);
extern uint8 OSSemQuery(OS_EVENT * pEvent, uint16 *Cnt);
extern uint8 OSSemDel(OS_EVENT * pEvent);
#endif


/*********************************************************************************************************
**                            OS_SEM.c
********************************************************************************************************/

#ifndef IN_OS_Q
extern OS_EVENT * OSQCreate(void *Buf, uint8 SizeOfBuf);
extern void * OSQPend(OS_EVENT * pEvent, uint16 Tick, uint8 *err);
extern void * OSQAccept(OS_EVENT * pEvent);
extern uint8 OSQPost(OS_EVENT * pEvent, void *Msg);
extern uint8 OSQPostFront(OS_EVENT * pEvent, void *Msg);
extern uint16 OSQNMsgs(OS_EVENT * pEvent);
extern uint16 OSQSize(OS_EVENT * pEvent);
extern void OSQFlush (OS_EVENT * pEvent);

#endif

/*********************************************************************************************************
**                            OS_CPU_C.c
********************************************************************************************************/
#ifndef IN_OS_CPU_C
extern OS_STK *OSTaskStkInit (void (*task)(void *pd), void *pdata, OS_STK *ptos, int PSR);
#endif

    #ifdef __cplusplus
    }
    #endif

#endif
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区91| 在线播放91灌醉迷j高跟美女 | 欧美影视一区二区三区| 久久日一线二线三线suv| 亚洲最新在线观看| 成人午夜精品一区二区三区| av午夜精品一区二区三区| 五月婷婷久久综合| 91成人看片片| 日韩成人精品在线| 91精品国产全国免费观看| 国产乱理伦片在线观看夜一区| 国产午夜精品在线观看| 大美女一区二区三区| 亚洲午夜在线视频| 国产亚洲人成网站| 日本精品一区二区三区四区的功能| 韩国毛片一区二区三区| 激情成人综合网| 亚洲宅男天堂在线观看无病毒| 久久香蕉国产线看观看99| 欧美一级片在线观看| 欧美日韩国产乱码电影| 在线观看欧美黄色| 欧美日韩国产精品成人| 欧美日韩国产在线观看| 久久精品免费在线观看| 国产性做久久久久久| 国产精品美女视频| 一区二区欧美精品| 三级精品在线观看| 蜜桃久久久久久久| 久久se精品一区二区| 韩国在线一区二区| 91在线视频观看| 欧美日韩黄视频| 亚洲丝袜美腿综合| 国产精品18久久久久久久网站| 精品黑人一区二区三区久久| 国产日韩欧美a| 夜夜亚洲天天久久| 韩国av一区二区| 色综合天天综合给合国产| 色播五月激情综合网| 欧美mv日韩mv国产网站app| 综合亚洲深深色噜噜狠狠网站| 亚洲成人动漫在线免费观看| 成人午夜激情片| 日韩欧美一二三区| 亚洲va国产天堂va久久en| 国产91综合网| 精品人在线二区三区| 亚洲一级二级三级在线免费观看| 国产在线精品一区二区夜色| 在线观看日韩国产| 国产精品不卡视频| 黑人精品欧美一区二区蜜桃| 欧美日韩国产电影| 亚洲一区二区黄色| 99re这里都是精品| 国产精品人人做人人爽人人添| 久久99久久久欧美国产| 欧美日韩国产免费| 亚洲成人免费观看| 欧美三级乱人伦电影| 夜夜嗨av一区二区三区中文字幕| 风流少妇一区二区| 国产亚洲成av人在线观看导航 | 欧美精品丝袜中出| 亚洲一区影音先锋| 欧美日本一道本在线视频| 亚洲综合色噜噜狠狠| 日本韩国欧美在线| 国产精品久久久久影院亚瑟| 国产精品99精品久久免费| 精品不卡在线视频| 国产一区二区不卡老阿姨| 欧美大片拔萝卜| 精彩视频一区二区三区| 久久久精品免费免费| 国产毛片精品国产一区二区三区| 精品动漫一区二区三区在线观看| 奇米一区二区三区av| 久久综合色一综合色88| 国产精品亚洲专一区二区三区| 欧美本精品男人aⅴ天堂| 精品一区二区久久久| 欧美zozo另类异族| **性色生活片久久毛片| 色综合天天性综合| 亚洲黄一区二区三区| 91亚洲永久精品| 亚洲一区二区三区在线看| 成人精品国产一区二区4080| 亚洲国产精品久久人人爱蜜臀| 欧美特级限制片免费在线观看| 日韩精品免费专区| 精品国产乱码久久久久久闺蜜| 国产一区二区三区| 亚洲欧美日韩综合aⅴ视频| 欧美一区二区三区日韩| 国产91精品欧美| 亚洲成人免费在线| 国产女人水真多18毛片18精品视频| 成人晚上爱看视频| 麻豆免费精品视频| 天堂蜜桃91精品| 欧美一级二级三级乱码| 在线观看欧美精品| 国产麻豆91精品| 亚洲在线中文字幕| 欧美国产国产综合| 日韩欧美中文字幕制服| 国产大陆精品国产| 午夜视频一区二区三区| 国产精品女主播在线观看| 欧美精品久久久久久久久老牛影院 | 日本不卡一二三区黄网| 国产精品―色哟哟| 2022国产精品视频| 欧美高清视频不卡网| 99久久精品一区二区| 成人av网在线| 丰满亚洲少妇av| 国产一区二区三区av电影| 国产乱妇无码大片在线观看| 极品美女销魂一区二区三区| 免费高清不卡av| 亚洲成av人片www| 日本强好片久久久久久aaa| 亚洲成人动漫精品| 日韩不卡手机在线v区| 美女脱光内衣内裤视频久久网站 | 天天亚洲美女在线视频| 亚洲国产一区在线观看| 国产日韩高清在线| 亚洲人成在线播放网站岛国| 国产精品国产自产拍高清av| 中文字幕在线不卡一区二区三区| 国产精品欧美一区喷水| 国产精品久久精品日日| 国产精品久久久久久久久免费相片 | 欧美日韩精品一区二区| 欧美一卡二卡在线| 久久网站热最新地址| 国产精品人成在线观看免费 | 一区二区三区美女视频| 亚洲国产精品自拍| 国产一区二区免费视频| 暴力调教一区二区三区| 在线播放中文字幕一区| 欧美一级黄色录像| 国产精品国产自产拍高清av王其| 亚洲伦理在线免费看| 偷拍日韩校园综合在线| 亚洲一区二区三区美女| 丁香六月综合激情| 欧美日韩一区三区| 久久久av毛片精品| 亚洲成人精品影院| 国产电影精品久久禁18| 欧美精品粉嫩高潮一区二区| 国产片一区二区三区| 午夜精品免费在线| av在线一区二区| 国产午夜一区二区三区| 亚洲成人福利片| jlzzjlzz亚洲日本少妇| 91精品国产综合久久久久久久 | 欧美大尺度电影在线| 久久久久久免费| 国产成人免费在线视频| 777久久久精品| 五月天网站亚洲| 欧美性大战久久久久久久蜜臀| 最新日韩av在线| 成人精品在线视频观看| 26uuu亚洲| 国模套图日韩精品一区二区| 欧美综合亚洲图片综合区| 国产精品久久久久一区二区三区 | 日韩精品专区在线| 青青草国产精品97视觉盛宴| 欧美日韩中文精品| 亚洲午夜羞羞片| 7777女厕盗摄久久久| 国产在线视视频有精品| 国产免费成人在线视频| 成人app网站| 一区二区三区在线视频播放| 欧美中文字幕一区二区三区亚洲| 亚洲国产精品自拍| 日韩视频一区二区| 国产成人免费视频一区| 亚洲一区二区偷拍精品| 精品理论电影在线| 成人性生交大片| 日韩专区一卡二卡| 中文字幕精品综合| 欧美日韩精品高清|