?? manual.txt
字號:
輸 出: NOT_OK:參數錯誤
OS_Q_OK:收到消息
OS_Q_TMO:超時到
OS_Q_NOT_OK:無消息
全局變量: 無
調用模塊: OSRunningTaskID,OSClearSignal,OSSched,OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
(8)OSQAccept()
原型:uint8 uint8 OSQAccept(uint8 idata *Ret, uint8 OS_Q_MEM_SEL *Buf);
功能描述: 無等待從消息隊列中取得消息
輸 入: Ret:返回的消息
Buf:指向隊列的指針
輸 出: NOT_OK:參數錯誤
OS_Q_OK:收到消息
OS_Q_TMO:超時到
OS_Q_NOT_OK:無消息
全局變量: 無
調用模塊: OSClearSignal,OSSched,OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
(8)OSQIntPost()
原型:uint8 OSQIntPost(uint8 OS_Q_MEM_SEL *Buf, uint8 Data);
功能描述: 中斷中FIFO方式發送消息
輸 入: Buf:指向隊列的指針
Data:消息數據
輸 出: OS_Q_FULL:隊列滿
OS_Q_OK:發送成功
全局變量: 無
調用模塊: OSIntSendSignal,OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
(9)OSQIntPostFront()
原型:uint8 OSQIntPostFront(uint8 OS_Q_MEM_SEL *Buf, uint8 Data);
功能描述: 中斷中LIFO方式發送消息
輸 入: Buf:指向隊列的指針
Data:消息數據
輸 出: OS_Q_FULL:隊列滿
OS_Q_OK:發送成功
全局變量: 無
調用模塊: OSIntSendSignal,OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
(10)OSQPost()
原型:uint8 OSQPost(uint8 OS_Q_MEM_SEL *Buf, uint8 Data);
功能描述: FIFO方式發送消息
輸 入: Buf:指向隊列的指針
Data:消息數據
輸 出: OS_Q_FULL:隊列滿
OS_Q_OK:發送成功
全局變量: 無
調用模塊: OSQIntPost,OSSched
(11)OSQPostFront()
原型:uint8 OSQPostFront(uint8 OS_Q_MEM_SEL *Buf, uint8 Data);
功能描述: LIFO方式發送消息
輸 入: Buf:指向隊列的指針
Data:消息數據
輸 出: OS_Q_FULL:隊列滿
OS_Q_OK:發送成功
全局變量: 無
調用模塊: OSQIntPostFront,OSSched
(12)OSQNMsgs()
原型:uint8 OSQNMsgs(uint8 OS_Q_MEM_SEL *Buf);
功能描述: 取得消息隊列中消息數
輸 入: Buf:指向隊列的指針
輸 出: 消息數
全局變量: 無
調用模塊: OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
(13)OSQSize()
原型:uint8 OSQSize(uint8 OS_Q_MEM_SEL *Buf);
功能描述: 取得消息隊列總容量
輸 入: Buf:指向隊列的指針
輸 出: 消息隊列總容量
全局變量: 無
調用模塊: OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
(14)OSQFlush()
原型:void OSQFlush (uint8 OS_Q_MEM_SEL *Buf);
功能描述: 清空隊列
輸 入: Buf:指向隊列的指針
輸 出: 無
全局變量: 無
調用模塊: OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
(15)OSSemCreate()
原型:uint8 OSSemCreate(uint8 index,uint8 Data);
功能描述: 初始化消息隊列
輸 入: index:信號量索引
data:信號量初始值
輸 出: NOT_OK:沒有這個信號量
OS_SEM_OK:成功
全局變量: 無
調用模塊: 無
(16)OSSemPend()
原型:uint8 OSSemPend(uint8 index, uint8 Tick);
功能描述: 等待一個信號量
輸 入: index:信號量索引
Tick:等待時間
輸 出: NOT_OK:參數錯誤
OS_SEM_OK:得到信號量
OS_SEM_TMO:超時到
OS_SEM_NOT_OK:沒有得到信號量
全局變量: 無
調用模塊: OSRunningTaskID,OSClearSignal,OSSched,OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
(17)OSSemAccept()
原型:uint8 OSSemAccept(uint8 index);
功能描述: 無等待請求信號量
輸 入: index:信號量索引
輸 出: NOT_OK:參數錯誤
OS_SEM_OK:得到信號量
OS_SEM_TMO:超時到
OS_SEM_NOT_OK:沒有得到信號量
全局變量: 無
調用模塊: OSClearSignal,OSSched,OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
(18)OSSemIntPost()
原型:uint8 OSSemIntPost(uint8 index);
功能描述: 中斷中發送一個信號量
輸 入: index:信號量索引
輸 出: NOT_OK:參數錯誤
OS_SEM_OK:發送成功
全局變量: 無
調用模塊: OSIntSendSignal,OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
(19)OSSemPost()
原型:uint8 OSSemPost(uint8 index);
功能描述: 發送一個信號量
輸 入: index:信號量索引
輸 出: NOT_OK:參數錯誤
OS_SEM_OK:發送成功
全局變量: 無
調用模塊: OSSemIntPost,OSSched
(20)OSSemQuery()
原型:uint8 OSSemQuery(uint8 index);
功能描述: 查詢信號量
輸 入: index:信號量索引
輸 出: 信號量的值
全局變量: 無
調用模塊: OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
Small RTOS的數據結構:
(1)OSTaskRuning
定義:
#if OS_MAX_TASKS < 9
uint8 OSTaskRuning = 0xff;
#else
uint16 OSTaskRuning = 0xffff;
#endif
OSTaskRuning存儲著每一個任務狀態(就緒/運行還是休眠),每一個
任務存儲一位,1代表就緒/運行,0代表休眠。OSTaskRuning的最低位
存儲ID為0的任務狀態,次低位存儲ID為0的任務狀態。以此類推。
(2)OSWaitTick
定義:
uint8 OSWaitTick[OS_MAX_TASKS-1];
OSWaitTick存儲各個任務剩余等待系統節拍數。
注意,最低級任務必須一直處于就緒狀態,因此OSWaitTick長度為
OS_MAX_TASKS-1
(3)OSIntNesting
定義:
#if EN_OS_INT_ENTER > 0
uint8 OSIntNesting;
#endif
OSIntNesting存儲中斷嵌套層數。
(4)OSTaskID
定義:
uint8 OSTaskID;
OSTaskID存儲當前運行任務的ID。
(5)OSNextTaskID
定義:
uint8 OSNextTaskID;
OSNextTaskID用于標明將要運行的任務的ID
(6)Os_Enter_Sum
定義:
uint8 Os_Enter_Sum=0;
Os_Enter_Sum是OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()使用的
信號量。
(7)消息隊列數據結構
定義(用戶程序中):
uint8 OS_Q_MEM_SEL SerialData[n];
任務數小于9個時:
Buf[0]:隊列中字節數,
Buf[1]:Buf總長度
Buf[2]:出對端,
Buf[3]:等待隊列任務列表
Buf[4]~Buf[n-1]:存儲消息
任務數大于8個時:
Buf[0]:隊列中字節數,
Buf[1]:Buf總長度
Buf[2]:出對端,
Buf[3]、Buf[4]:等待隊列任務列表
Buf[5]~Buf[n-1]:存儲消息
(8)信號量數據結構
定義:
#if OS_MAX_TASKS < 9
uint8 OS_SEM_MEM_SEL OsSemBuf[OS_MAX_SEMS*2];
#else
uint8 OS_SEM_MEM_SEL OsSemBuf[OS_MAX_SEMS*3];
#endif
任務數小于9個時(index為0~(OS_MAX_SEMS-1)):
OsSemBuf[index * 2]:信號量的值
OsSemBuf[index * 2 + 1]:等待信號量的任務列表
任務數小于9個時(index為0~(OS_MAX_SEMS-1)):
OsSemBuf[index * 3]:信號量的值
OsSemBuf[index * 3 + 1]、OsSemBuf[index * 3 + 2]:等待信號量
的任務列表
Small RTOS 51的特殊的數據結構:
(1)OSFastSwap
定義:
#if OS_MAX_TASKS < 9
unsigned char data OSFastSwap=0xff;
#else
unsigned int data OSFastSwap=0xffff;
#endif
OSFastSwap存儲著每一個任務如何被切換(自己調用OSWait還是中斷
程序激活更高級任務),每一個任務存儲一位,1代表因為自己調用
OSWait而被切換,0代表因為中斷程序激活更高級任務而被切換。最低
位存儲ID為0的任務狀態,次低位存儲ID為0的任務狀態。以此類推。
如果任務因為自己調用OSWait而被切換,則需要存儲的任務環境所需內
部RAM少的多。
(2)OSTsakStackBotton
定義:
unsigned char idata * OSTsakStackBotton[OS_MAX_TASKS+1];/* 任務堆棧底部位置 */
OSTsakStackBotton存儲各個任務的棧底和棧頂位置。因為后一個任務
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -