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

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

?? os_api.c

?? 基于sam7x256平臺做的CAN與網口互轉接口
?? C
字號:
//*------------------------------------------------------------------------------------------------
//* 文件名				: os_api.c
//* 功能描述			: 基于uC/OS基本函數庫開發的能夠最大限度滿足上層系統需求的API。
//*------------------------------------------------------------------------------------------------
//*------------------------------------------ 頭文件 -----------------------------------------------
#include	"/uCOS_II/includes.h"
//*================================================================================================
//*											函	數	區
//*================================================================================================
//*------------------------------------------------------------------------------------------------
//* 函數名稱 : __MSToOSTicks
//* 功能描述 : 將毫秒轉變成時鐘節拍
//* 入口參數 : <uwMS>[in] 節拍數
//* 出口參數 : 毫秒數
//*------------------------------------------------------------------------------------------------
static UWORD __MSToOSTicks(UWORD uwMS)
{
	UWORD	__uwDelayTicks;
	
	if(uwMS != 0)
	{
		__uwDelayTicks = (uwMS * OS_TICKS_PER_SEC)/1000;
		if(__uwDelayTicks < 1)
			__uwDelayTicks = 1;
		else if(__uwDelayTicks > 65535)
			__uwDelayTicks = 65535;
		else;
	}
	else
		__uwDelayTicks = 0;		
		
	return __uwDelayTicks;
}
//*------------------------------------------------------------------------------------------------
//* 函數名稱 : OSAPISemWait
//* 功能描述 : 在指定的時間內(單位為毫秒)等待指定的信號量可用
//* 入口參數 :     <hSem>[in] 等待的信號量句柄
//*			 : <uwWaitMS>[in] 指定最長等待時間單位為毫秒,實際等待時間為內核調度間隔時間的整數倍,0ms表示
//*			 :                該函數將無限期等待下去直至信號量可用
//* 出口參數 : - OS_NO_ERR         : 信號量可用
//*			 : - OS_TIMEOUT        : 時間溢出,信號量不可用
//*			 : - OS_ERR_EVENT_TYPE : hSem參數攜帶的事件類型并不是信號量而是其它類型
//*			 : - OS_ERR_PEND_ISR   : 不能在ISR中調用該函數
//*			 : - OS_ERR_PEVENT_NULL: hSem是一個空指針
//*------------------------------------------------------------------------------------------------
UBYTE OSAPISemWait(HANDLER hSem, UWORD uwWaitMS)
{
	UBYTE	__ubRtnVal;	
		
	OSSemPend(hSem, __MSToOSTicks(uwWaitMS), &__ubRtnVal);
	
	return __ubRtnVal;
}
//*------------------------------------------------------------------------------------------------
//* 函數名稱 : OSAPISemFree
//* 功能描述 : 刪除指定的信號量,如果仍然有任務在等待指定的信號量,該函數不會刪除這個信號量,不過它會不斷嘗
//*			 : 試刪除這個信號量直至沒有任何任務等待該信號量時將其刪除
//* 入口參數 : <hSem>[in] 指定刪除的信號量句柄
//* 出口參數 : 無
//*------------------------------------------------------------------------------------------------
void OSAPISemFree(HANDLER hSem)
{
	UBYTE	__ubErr;
	
	while(NULL != OSSemDel(hSem, OS_DEL_NO_PEND, &__ubErr))
		OSTimeDlyHMSM(0, 0, 0, 100);
}
//*------------------------------------------------------------------------------------------------
//* 函數名稱 : OSAPISemFreeExt
//* 功能描述 : 刪除指定的信號量,該函數相對于OSAPISemFree()函數,當出現仍然有任務在等待該信號量的情況時,所
//*			 : 有等待該信號量的任務都將進入就緒態,每個任務都得到了該信號量。
//* 入口參數 : <hSem>[in] 指定刪除的信號量句柄
//* 出口參數 : 無
//*------------------------------------------------------------------------------------------------
void OSAPISemFreeExt(HANDLER hSem)
{
	UBYTE	__ubErr;
	
	while(NULL != OSSemDel(hSem, OS_DEL_ALWAYS, &__ubErr))
		OSTimeDlyHMSM(0, 0, 0, 100);
}
//*------------------------------------------------------------------------------------------------
//* 函數名稱 : OSAPIBlockNew
//* 功能描述 : 建立一個新的阻塞信號
//* 入口參數 : <ubPIP>[in] 指定在出現優先級反轉時(高優先級的任務因為低優先級的任務占用同一個阻塞量而不得不
//*			 :             暫時中斷正常運行以等待該阻塞量被釋放從而造成事實上的優先級降低的問題),正在占用
//*			 :             該阻塞量的任務使用的較高優先級以便能夠快速完成訪問,釋放該阻塞量 
//* 出口參數 : 建立成功返回阻塞信號句柄,否則為NULL
//*------------------------------------------------------------------------------------------------
HANDLER OSAPIBlockNew(UBYTE ubPIP)
{
	UBYTE		__ubErr;
	
	return OSMutexCreate(ubPIP, &__ubErr);
}
//*------------------------------------------------------------------------------------------------
//* 函數名稱 : OSAPIBlockEnter
//* 功能描述 : 進入阻塞資源,如果該資源仍然被其它任務占用,則會阻塞當前任務進程,直至指定的時間溢出或者資源
//*          : 可用
//* 入口參數 :   <hBlock>[in] 指定要使用的阻塞信號量
//*			 : <uwWaitMS>[in] 指定被阻塞的最長時間,單位為毫秒 
//* 出口參數 : - OS_NO_ERR         : 信號量可用
//*			 : - OS_TIMEOUT        : 時間溢出,信號量不可用
//*			 : - OS_ERR_EVENT_TYPE : hSem參數攜帶的事件類型并不是信號量而是其它類型
//*			 : - OS_ERR_PEND_ISR   : 不能在ISR中調用該函數
//*			 : - OS_ERR_PEVENT_NULL: hSem是一個空指針
//*------------------------------------------------------------------------------------------------
UBYTE OSAPIBlockEnter(HANDLER hBlock, UWORD uwWaitMS)
{
	UWORD	__uwDelayTicks;
	UBYTE	__ubRtnVal;
	
	if(uwWaitMS != 0)
	{
		__uwDelayTicks = (uwWaitMS * OS_TICKS_PER_SEC)/1000;
		if(__uwDelayTicks < 1)
			__uwDelayTicks = 1;
		else if(__uwDelayTicks > 65535)
			__uwDelayTicks = 65535;
		else;
	}
	else
		__uwDelayTicks = 0;
		
	OSMutexPend(hBlock, __uwDelayTicks, &__ubRtnVal);
	
	return __ubRtnVal;
}
//*------------------------------------------------------------------------------------------------
//* 函數名稱 : OSAPIQPost
//* 功能描述 : 投遞一個消息到指定的消息隊列
//* 入口參數 : <hQueue>[in] 指定要投遞到的消息隊列
//*          :  <pvMsg>[in] 指定要投遞的消息
//* 出口參數 : 與OSQPost()函數返回值除了沒有OS_Q_FULL之外,其它相同
//*------------------------------------------------------------------------------------------------
UBYTE OSAPIQPost(HANDLER hQueue, void *pvMsg)
{
	UBYTE	__ubErr;

	while((__ubErr = OSQPost(hQueue, pvMsg)) == OS_Q_FULL)
		OSTimeDlyHMSM(0, 0, 0, 100);
		
	return __ubErr;
}
//*------------------------------------------------------------------------------------------------
//* 函數名稱 : OSAPIQReceive
//* 功能描述 : 從指定的消息隊列接收消息,該函數會阻塞當前的調用任務直至超時或者收到消息
//* 入口參數 :    <hQueue>[in]  指定接收消息的消息隊列
//*          :     <ppMsg>[out] 結果參數,保存接收到的消息指針
//*          : <uwTimeout>[in]  指定等待接收的最長時間,為0表明一直等待直至接收到消息,單位為毫秒
//* 出口參數 : 與OSQPend()函數的結果參數err值完全相同
//*------------------------------------------------------------------------------------------------
UBYTE OSAPIQReceive(HANDLER hQueue, PP ppMsg, UWORD uwTimeout)
{
	UBYTE	__ubRtnVal;
	
	if(ppMsg != NULL)
		*ppMsg = OSQPend(hQueue, __MSToOSTicks(uwTimeout), &__ubRtnVal);
	else 
		OSQPend(hQueue, __MSToOSTicks(uwTimeout), &__ubRtnVal);
	
	return __ubRtnVal;
}
//*------------------------------------------------------------------------------------------------
//*函數名稱:OSAPIMboxNew(void *msg)
//*功能描述:創建一個消息郵箱
//*入口參數:
//*出口參數:
//*------------------------------------------------------------------------------------------------
/*HANDLER OSAPIMboxNew(void *msg)
{
 return(OSMboxCreate (void *msg));
}*/
//*-------------------------------------------------------------------------------------------------
//*函數名稱:OSAPIMboxPend
//*功能描述:等待郵箱中的消息
//*入口參數:
//*出口參數:
//*-------------------------------------------------------------------------------------------------
UBYTE OSAPIMboxPend(HANDLER hMbox,UWORD uwWaitMS)
{
    UWORD	__uwDelayTicks;
	UBYTE	__ubRtnVal;
	
	if(uwWaitMS != 0)
	{
		__uwDelayTicks = (uwWaitMS * OS_TICKS_PER_SEC)/1000;
		if(__uwDelayTicks < 1)
			__uwDelayTicks = 1;
		else if(__uwDelayTicks > 65535)
			__uwDelayTicks = 65535;
		else;
	}
	else
		__uwDelayTicks = 0;
		
	OSMboxPend(hMbox, __uwDelayTicks, &__ubRtnVal);
	return __ubRtnVal;
	
}
//*-----------------------------------------------------------------------------------------------------
//*函數名稱:OSAPIMboxPost
//*功能描述:釋放一消息
//*入口參數:
//*出口參數:
//*-----------------------------------------------------------------------------------------------------
UBYTE OSAPIMboxPost(HANDLER hMbox,void *msg)
{
    UBYTE	__ubErr;

	while((__ubErr = OSMboxPost(hMbox, msg)) == OS_MBOX_FULL)
		OSTimeDlyHMSM(0, 0, 0, 100);
		
	return __ubErr;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
三级一区在线视频先锋| 911精品国产一区二区在线| 国产精品美女一区二区三区| 国产一区在线精品| 欧美精品一区二区三区一线天视频| 麻豆一区二区三区| 2020日本不卡一区二区视频| 国产精品夜夜爽| 国产精品视频观看| 欧美影视一区二区三区| 日韩av高清在线观看| 日韩欧美国产综合一区 | 极品少妇xxxx偷拍精品少妇| 精品国产网站在线观看| 成人在线综合网站| 亚洲一级不卡视频| 精品国产sm最大网站| 成人av影院在线| 午夜一区二区三区在线观看| 精品国产乱码91久久久久久网站| 国产精品一线二线三线精华| 日韩理论片在线| 日韩欧美123| av男人天堂一区| 日本不卡中文字幕| 国产女主播视频一区二区| 91久久精品国产91性色tv| 免费在线一区观看| 亚洲色图视频网| 日韩精品一区二区三区视频| 国产精品一区二区在线看| 亚洲精品精品亚洲| 精品国产制服丝袜高跟| 日本高清成人免费播放| 久久99精品久久久久久国产越南| 自拍偷拍亚洲综合| 精品欧美黑人一区二区三区| 色诱视频网站一区| 国产精品一区二区黑丝| 亚洲已满18点击进入久久| 国产亚洲欧美日韩俺去了| 欧美日韩国产精品自在自线| 成人精品视频一区| 美女一区二区久久| 亚洲国产婷婷综合在线精品| 亚洲国产成人午夜在线一区| 欧美一区二区大片| 色综合色综合色综合色综合色综合| 毛片av一区二区| 天天影视色香欲综合网老头| 国产精品免费视频观看| 日韩精品一区二区三区中文精品| 日本电影欧美片| 99久久精品一区二区| 国产在线精品国自产拍免费| 日韩国产在线观看| 亚洲影视资源网| 一区二区三区四区不卡视频| 欧美国产国产综合| 久久综合久久99| 精品剧情v国产在线观看在线| 欧美日韩一区二区欧美激情| 91啪亚洲精品| 91热门视频在线观看| 99久久免费国产| 成人免费毛片嘿嘿连载视频| 国产精品99久久久久久似苏梦涵| 日韩成人免费电影| 婷婷开心激情综合| 香蕉乱码成人久久天堂爱免费| 亚洲猫色日本管| 日韩一区中文字幕| 中文字幕一区二区三区色视频| 欧美国产日韩a欧美在线观看| 久久亚洲春色中文字幕久久久| 日韩欧美久久一区| 精品国产欧美一区二区| 精品国产露脸精彩对白| 久久一区二区三区四区| 久久久五月婷婷| 欧美激情一二三区| 国产精品久久久久桃色tv| 国产精品视频一二三| 国产精品福利av| 一区二区三区中文在线观看| 亚洲精品伦理在线| 亚洲国产欧美一区二区三区丁香婷| 一区二区三区产品免费精品久久75| 亚洲日本丝袜连裤袜办公室| 一区二区三区四区在线播放| 亚洲在线中文字幕| 人人狠狠综合久久亚洲| 狠狠色狠狠色综合系列| 国产成人精品免费在线| 99re这里只有精品视频首页| 在线免费观看日本一区| 欧美精品一二三区| 精品国产免费久久| 中文字幕在线不卡一区二区三区| 亚洲免费视频中文字幕| 亚洲国产精品精华液网站| 肉色丝袜一区二区| 国产在线精品免费| 91豆麻精品91久久久久久| 91精品国产综合久久久久久| 久久九九影视网| 一区二区免费在线播放| 蜜桃视频一区二区| 成人sese在线| 91 com成人网| 亚洲欧洲性图库| 日韩av不卡在线观看| 国产91精品精华液一区二区三区 | 国产资源在线一区| 91日韩在线专区| 亚洲精品一区二区三区香蕉| 国产精品三级久久久久三级| 亚洲成年人网站在线观看| 精品一区二区三区影院在线午夜 | 欧美伦理视频网站| 国产亚洲欧美在线| 亚洲综合久久久| 国产精品亚洲一区二区三区在线| 在线日韩国产精品| 国产亚洲欧美日韩日本| 亚洲超丰满肉感bbw| 国产91在线看| 日韩天堂在线观看| 亚洲色图欧美激情| 国产真实乱对白精彩久久| 色呦呦国产精品| 国产欧美一区二区精品婷婷 | 亚洲欧美日韩一区| 麻豆精品在线播放| 欧日韩精品视频| 中文字幕在线观看不卡| 韩国av一区二区三区四区| 在线中文字幕不卡| 国产精品毛片久久久久久| 狂野欧美性猛交blacked| 在线看日韩精品电影| 国产欧美va欧美不卡在线| 久久精品99国产精品日本| 欧美喷水一区二区| 伊人一区二区三区| av电影在线观看一区| 久久午夜老司机| 久久99九九99精品| 91精品国产色综合久久不卡蜜臀 | 一区二区免费在线| 99精品热视频| 国产精品狼人久久影院观看方式| 激情久久久久久久久久久久久久久久| 欧美日韩国产综合一区二区 | 色综合婷婷久久| 日本一区免费视频| 国产剧情av麻豆香蕉精品| 精品久久久久一区| 美国毛片一区二区| 精品欧美一区二区三区精品久久 | 波波电影院一区二区三区| 久久精品网站免费观看| 韩国三级在线一区| 精品欧美一区二区在线观看| 久久99最新地址| 精品国精品国产| 国产成人av一区二区| 精品国产91亚洲一区二区三区婷婷| 日本女人一区二区三区| 日韩欧美中文字幕公布| 欧美a一区二区| 精品国精品自拍自在线| 国产综合成人久久大片91| www日韩大片| 国产999精品久久| 亚洲日本电影在线| 91极品视觉盛宴| 婷婷丁香激情综合| 欧美一卡2卡3卡4卡| 理论电影国产精品| 久久九九国产精品| 成人av中文字幕| 一级女性全黄久久生活片免费| 欧美午夜理伦三级在线观看| 亚洲超碰精品一区二区| 日韩亚洲欧美高清| 国产成人一区二区精品非洲| 最近中文字幕一区二区三区| 91久久精品一区二区三区| 香蕉久久一区二区不卡无毒影院 | 欧美亚洲一区三区| 午夜视频一区在线观看| 精品免费一区二区三区| 成人一级黄色片| 一区二区三区美女视频| 91精品国产91热久久久做人人| 精品一区二区久久| 亚洲视频图片小说| 91精品蜜臀在线一区尤物| 韩国午夜理伦三级不卡影院|