?? rd_usecooperatingminios.c
字號:
/***********************************************************
* 函數(shù)庫說明:合作調(diào)度器基本函數(shù)庫 *
* 版本: v1.00 *
* 作者: 王卓然 *
* 創(chuàng)建日期: 2006年8月28日 *
* -------------------------------------------------------- *
* [支 持 庫] *
* 支持庫名稱:RD_UseCooperatingMiniOs.h *
* 需要版本: ----- *
* 支持庫說明:合作調(diào)度器基本聲明庫 *
* *
* 支持庫名稱:RD_MacroAndConst.h *
* 需要版本: v0.04 &abv *
* 支持庫說明:系統(tǒng)常用宏定義庫 *
* -------------------------------------------------------- *
* [版本更新] *
* -------------------------------------------------------- *
* [版本歷史] *
* -------------------------------------------------------- *
* [使用說明] *
* 1、在系統(tǒng)初始化的時候調(diào)用函數(shù)CmOSInit()來初始 *
* 化消息對系統(tǒng);同時通過定義宏 *
* COS_REGISTER_PROC_FUNCTION來說明靜態(tài)進(jìn)程函 *
* 數(shù)的消息處理函數(shù)和動作函數(shù)(使用函數(shù)指針)。 *
* 每增加一個靜態(tài)進(jìn)程,要更新一次進(jìn)程計數(shù)器 *
* COS_Proc_Counter,保證每一個進(jìn)程都能被有效 *
* 的尋址。 *
* 7、用戶可以通過宏COS_PROCESS_COUNT來定義最大的 *
* 進(jìn)程PCB數(shù)量。這個數(shù)值直接影響系統(tǒng)允許的靜態(tài) *
* 進(jìn)程的數(shù)量,并要占用一定的空間。這個數(shù)目的 *
* 最小值是1,因為默認(rèn)有一個系統(tǒng)默認(rèn)消息處理 *
* 進(jìn)程。 *
* 8、用戶需要COS_REGISTER_MSG_FUNCTION宏來說明 *
* 系統(tǒng)進(jìn)程的初始化函數(shù),通過這個初始化函數(shù)告 *
* 訴消息系統(tǒng),一共有多少靜態(tài)進(jìn)程,并且說明這 *
* 些靜態(tài)進(jìn)程的相關(guān)函數(shù)指針是什么。 *
***********************************************************/
/********************
* 頭 文 件 配 置 區(qū) *
********************/
# include "RD_MacroAndConst.h"
# include "RD_UseCooperatingMiniOs.h"
/********************
* 系 統(tǒng) 宏 定 義 *
********************/
/*------------------*
* 常 數(shù) 宏 定 義 *
*------------------*/
#ifndef COS_PROCESS_COUNT
//# define COS_PROCESS_COUNT 8
#error Need for COS_PROCESS_COUNT!
#endif
/*------------------*
* 動 作 宏 定 義 *
*------------------*/
#ifndef COS_REGISTER_PROC_FUNCTION
# define COS_REGISTER_PROC_FUNCTION
#endif
/********************
* 結(jié)構(gòu)體宏定義 *
********************/
/********************
* 函 數(shù) 聲 明 區(qū) *
********************/
BOOL NULL_PROC(void);
void CMOS_INIT(void);
void Process_Task(void);
/********************
* 全局變量聲明區(qū) *
********************/
volatile PROCESS ProcPCB[COS_PROCESS_COUNT+1];
uint8 g_cCOSPROCCounter = 0;
/***********************************************************
* 函數(shù)說明:空函數(shù) *
* 輸入: 無 *
* 輸出: 無 *
* 調(diào)用函數(shù):無 *
***********************************************************/
BOOL NULL_PROC(void)
{
return FALSE;
}
/***********************************************************
* 函數(shù)說明:消息隊列系統(tǒng)初始化函數(shù) *
* 輸入: 無 *
* 輸出: 無 *
* 調(diào)用函數(shù):COS_REGISTER_PROC_FUNCTION *
* -------------------------------------------------------- *
* [注意事項] *
* 1、ProcPCB[]是一個函數(shù)指針數(shù)組,里面登記著 *
* 所有系統(tǒng)合法的消息處理函數(shù)的地址。 *
* 2、ProcPCB[]下標(biāo)中,0為系統(tǒng)保留,其余為用戶 *
* 自定義。 *
* 3、用戶需要自己通過編寫函數(shù)并通過連接宏 *
* MSG_REGISTER_PROC_FUNCTION來注冊合法消息處理 *
* 函數(shù)。 *
* 4、編程的時候,每增加一個靜態(tài)的進(jìn)程,就要增加一 *
* 次進(jìn)程計數(shù)器MSG_Proc_Counter。 *
***********************************************************/
void CMOS_INIT(void)
{
uint8 n = 0;
for (n = 0;n<COS_PROCESS_COUNT+1;n++)
{
#ifdef _USE_MESSAGE_PROC
ProcPCB[n].ProcIO = SYS_DEFAULT;
#endif
ProcPCB[n].Proc = NULL_PROC;
ProcPCB[n].IfProcAlive = FALSE;
}
COS_REGISTER_PROC_FUNCTION
}
/***********************************************************
* 函數(shù)說明:任務(wù)處理函數(shù) *
* 輸入: 無 *
* 輸出: 無 *
* 調(diào)用函數(shù):無 *
***********************************************************/
void Process_Task(void)
{
static uint8 n = 0;
if (ProcPCB[n].IfProcAlive) //處理進(jìn)程
{
ProcPCB[n].IfProcAlive = (*ProcPCB[n].Proc)();
}
n ++;
if (n >= g_cCOSPROCCounter)
{
n = 0;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -