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

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

?? d13driver.c

?? zlg開發套件ucos系統下讀寫e2prom源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
	if (err != USB_NO_ERR)   return err;

	OS_ENTER_CRITICAL();
    if (pUsb->Sem == 0){			  					//該端點沒有被獨占		no task use the endpoint
		pUsb->Sem  = 1;				    				//獨占該端點			flag that task use the endpoint
		pUsb->Cnt  = 0;									//發送計數值清0			clear counter to zero
		pUsb->Prio = OSPrioCur; 						//保存該任務優先級		save the prior of the task

		for (i = 0; i < buffnums; i++){										
			length = pUsb->Max[pUsb->Prio] - pUsb->Cnt;	//計算未發送字節個數	calculate the numbers of bytes that will be transmitted	
			if (length > 0){							//未發送字節數大于0		the numbers is above zero
				if (length >= eppsize)					//寫滿緩沖區			write the entire buffer
					length = D13_WriteEndpoint(endp,(INT8U)eppsize,sendbuff + pUsb->Cnt);
				else									//寫length個字節		write length bytes into buffer
		   			length = D13_WriteEndpoint(endp,(INT8U)length,sendbuff + pUsb->Cnt);
		 		pUsb->Cnt = pUsb->Cnt + length;			//發送計數器加length	counter is counting
			}
		}
	}//end of if (pUsb->Sem == 0)
	OS_EXIT_CRITICAL();
	
	OS_ENTER_CRITICAL();
	if (pUsb->Max[OSPrioCur] != 0){						 //還未發送完成			if reception is not finished
		OS_EXIT_CRITICAL();							
		OSTimeDly(timeout);								 //定義超時等待時間		define timeout		
	}	
	OS_EXIT_CRITICAL();
	
	return (USB_RW_Result(endp,buffnums,pUsb,0,timeout)); //返回發送結果			return the result of transmittion		
}

/***********************************************************************************************************************
** 函數名稱: USB_RW_Param()									Name:		USB_RW_Param()	
** 功能描述: 填寫USB接收或發送控制塊有關參數				Function:	fill the CTRL_USB structure
** 輸	 入: CTRL_USB *pUsb   : USB接收或發送控制塊指針		Input:		CTRL_USB *pUsb: the CTRL_USB structure
			 INT32U len		  : 接收或發送字節數						INT32U     len: the numbers(Bytes) that will be received/transmitted
			 INT8U *buff	  : 接收或發送緩沖區指針					INT8U *recbuff: the reception/transmittion buffer
** 輸	 出: 0   調用成功    > 0 調用失敗(錯誤碼)			Output:	  0:  sucessfully	 >0: fail (it is error code)
***********************************************************************************************************************/
INT8U USB_RW_Param(CTRL_USB *pUsb,INT32U len,INT8U *pbuff)
{
	OS_ENTER_CRITICAL();
	if (bEPPflags.bits.configuration == 0){	//USB總線未配置完成			the bus is not confirgurated
		OS_EXIT_CRITICAL();
		return (USB_ERR_NO_CONFIG);			//USB總線未配置錯誤			the error that the bus is not configurated
	}
	if (pbuff == 0){     	
		OS_EXIT_CRITICAL();			    
		return (USB_ERR_BUFF_INVALID);		//緩沖區指針無效錯誤		the pointer of buff is invalid
	}
	
	pUsb->pBuff[OSPrioCur] = pbuff;			//保存該任務的緩沖區首址    save the first address of buff of the current task
	pUsb->Max[OSPrioCur]   = len;			//保存要收發的字節數		save the numbers(Byte) of reception/transmittion 
	USB_InsertPrio(pUsb,OSPrioCur);			//插入等待任務列表中		insert the waiting task table
	OS_EXIT_CRITICAL();
	
	return (USB_NO_ERR);
}

/**************************************************************************************************************************************
** 函數名稱: USB_RW_Result()								Name:		USB_RW_Result()
** 功能描述: 判斷當前任務的數據是否收發成功					Function:	judge whether reception/transmittion is sucessful
** 輸	 入: INT8U endp		  : 端點索引號					Input:		INT8U endp		 :  the index of endpoint
			 INT8U buffnums	  : 該端點緩沖區個數						INT8U buffnums	 :  numbers of endpoint buffer
			 CTRL_USB *pUsb   : USB接收或發送控制塊指針					CTRL_USB *pUsb   :	the pointer of CTRL_USB struct
			 INT8U bread	  : 當前任務狀態(1:接收 0:發送)				INT8U bread	     :  status of current task(1:receive 0:transmit)
			 INT16U timeout	  : 超過等待時間							INT16U timeout	 :  timeout of waiting
** 輸	 出: 0   收發成功    > 0 收發失敗(錯誤碼)			Output:		0:  sucessfully	 >0: fail (it is error code)
***************************************************************************************************************************************/
INT8U USB_RW_Result(INT8U endp,INT8U buffnums,CTRL_USB *pUsb,INT8U bread,INT16U timeout)
{	
	INT8U i,endpstatus;

	OS_ENTER_CRITICAL();	
	if (pUsb->Max[OSPrioCur] != 0){						//收/發錯誤					  transmit/receiving fail
		if (pUsb->Prio == OSPrioCur){
			for (i = 0; i < buffnums; i++)
			{
				if (bread == 1){						//當前為接收狀態			  receiving currently
					endpstatus = D13_GetEndpointStatusWOInteruptClear(endp);
					if ((endpstatus && 0x60) != 0)		//接收緩沖區不空
					D13_ClearBuffer(endp);				//清空收發緩沖區
				}else
					D13_SetEndpointStatus(endp, 0);		//解禁端點					  unstall IN endpoint
			}
			pUsb->Sem = 0;									//釋放該端點的發送資源		  release the transmittion resource of the endpoint
		}
		USB_DelPrio(pUsb,pUsb->Prio);					//將該任務從等待隊列中刪除	  delete the task from waiting table
		OS_EXIT_CRITICAL();
		return (USB_ERR_WR_TIMEOUT);					//返回收/發超時錯誤			  return  transmit/receiving fail
	}
	else
	{									
		OS_EXIT_CRITICAL();							
		return (USB_NO_ERR);						    //收/發成功					  sucessfully
	}
}

/**************************************************************************************************************
          下面的函數操作 USB接收或發送控制塊等待列表    the function below operate the CTRL_USB structure
***************************************************************************************************************/
/************************************************************************************************************************
** 函數名稱:  USB_DelPrio()									Name:	  USB_DelPrio()
** 功能描述:  將一任務從USB接收或發送控制塊等待列表中刪除	Function: delete a task from CTRL_USB struct waiting table 
** 輸   入:  CTRL_USB *pUsb:	USB接收或發送控制塊指針		Input:	  CTRL_USB *pUsb:  the pointer of the CTRL_USB struct
			  INT8U prio:		刪除的任務的優先級					  INT8U prio:	   the prior that will be deleted	
** 輸   出:  無											Output:   NULL
*************************************************************************************************************************/
void USB_DelPrio(CTRL_USB *pUsb,INT8U prio)
{
	if ((pUsb -> Tbl[prio >> 3] &= ~OSMapTbl[prio & 0x07]) == 0)
	     pUsb -> Grp &= ~OSMapTbl[prio >> 3];
}

/*************************************************************************************************************************
** 函數名稱:  USB_InsertPrio()								Name:     USB_InsertPrio()
** 功能描述:  將一任務插入到USB接收或發送控制塊等待列表中	Function: Insert a task to CTRL_USB struct waiting table
** 輸   入:  CTRL_USB *pUsb:	USB接收或發送控制塊指針		Input:    CTRL_USB *pUsb:  the pointer of the CTRL_USB struct
			  INT8U prio:		插入任務的優先級					  INT8U prio:	   the prior that will be deleted
** 輸   出:  無											Output:	  NULL
**************************************************************************************************************************/
void USB_InsertPrio(CTRL_USB *pUsb,INT8U prio)
{
	pUsb -> Grp		 	   |= OSMapTbl[prio >> 3];
	pUsb -> Tbl[prio >> 3] |= OSMapTbl[prio & 0x07];
}

/*************************************************************************************************************************
** 函數名稱:  USB_GetHighPrio()								Name:	   USB_GetHighPrio()
** 功能描述:  取得USB接收或發送控制塊等待列表 				Function:  Get the priorest task from CTRL_USB struct waiting table
			  中優先級最高的任務優先級	
** 輸   入:  CTRL_USB *pUsb:	USB 接收或發送控制塊指針	Input:	   CTRL_USB *pUsb:  the pointer of the CTRL_USB struct
** 輸   出:  等待列表中優先級最高的任務優先級				Output:	   NULL
**************************************************************************************************************************/
INT8U USB_GetHighPrio(CTRL_USB *pUsb)
{
	INT8U x,y;
	INT8U prio;

	y    = OSUnMapTbl[pUsb->Grp];
	x    = OSUnMapTbl[pUsb->Tbl[y]];
	prio = (INT8U)((y << 3) + x);
	return prio;
}	
	
		/*************************************************************************
		
			一些中斷處理程序		some program of interrupt
		
		**************************************************************************/
	
/****************************************************************************************************************
** 函數名稱: bus_reset()							Name:		bus_reset()
** 功能描述: USB總線復位處理子程序					Function:	the intterupt service routine of USB bus reset
** 輸   入: 無										Input:		NULL
** 輸   出: 無										Output:		NULL
*****************************************************************************************************************/
void bus_reset(void)
{
	config_endpoint();
	//這此添加總線復位處理的其它代碼
}





/*****************************************************************************************************************
** 函數名稱: usb_suspend()							Name:		usb_suspend()
** 功能描述: ISP1181B掛起中斷處理子程序				Function:	the interrupt service routine of ISP1181B suspend
** 輸   入: 無										Input:		NULL
** 輸   出: 無 									Output:		NULL
******************************************************************************************************************/
void usb_suspend(void)
{
	INT32U i_st;
	
	i_st = D13_ReadInterruptRegister();			 //讀取D13中斷寄存器值	   //read the D13 interrupt register

	if(i_st & D13REG_INTSRC_BUSTATUS)			 //如果當前總線狀態BUSTATUS標志為1,才能進入掛起
	{											 //if the bus status BUSTATUS flag is 1,ISP1181B enter suspend
		//在此添加:使系統所有元件做好準備,以進入掛起狀態
		//執行下面的語句后,ISP1181B就進入掛起狀態了
		D13_SetMode(D13REG_MODE_INT_EN|D13REG_MODE_SOFTCONNECT|D13REG_MODE_SUSPND);		
		D13_SetMode(D13REG_MODE_INT_EN|D13REG_MODE_SOFTCONNECT);		   //GOSUP bit 1-> 0, chip into suspend	
	}
}	

/*****************************************************************************************************************
** 函數名稱: get_firmware_version()					Name:		get_firmware_version()
** 功能描述: 得到本固件軟件包版本號					Function:	get software version of the firmware
** 輸   入: 無										Input:		NULL
** 輸   出: 本固件軟件包版本號						Output:		the software version of the firmware
******************************************************************************************************************/
INT16U get_ISP1181B_firmware_version(void)
{
	return 0x0100;								    //固件軟件版本號為1.00  the software version of the firmware is 1.00
}

	
	/***************************************************************************************
	
				下面的程序由用戶自己編寫			the program below is wirtten by user
			
	****************************************************************************************/

/*******************************************************************************************************************
** 函數名稱: dma_eot()								Name:		dma_eot()
** 功能描述: DMA結束處理							Function:	deal with the end of DMA
** 輸   入: 無										Input:		NULL
** 輸   出: 無 									Output:		NULL
*******************************************************************************************************************/
void dma_eot(void)
{

}








?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线一区二区三区| 欧美国产精品一区| 欧美久久一二三四区| 欧美体内she精高潮| 在线观看网站黄不卡| 欧洲精品在线观看| 欧美视频日韩视频| 欧美视频你懂的| 欧美日韩国产高清一区| 欧美精品日韩综合在线| 欧美一级久久久久久久大片| 日韩三级电影网址| 26uuu久久天堂性欧美| 国产香蕉久久精品综合网| 国产亚洲一区二区在线观看| 中文字幕精品综合| 亚洲欧洲日本在线| 亚洲一区二区三区爽爽爽爽爽| 一区二区三区在线免费| 三级精品在线观看| 国产一区二区三区黄视频 | 日韩视频免费直播| 日韩欧美第一区| 欧美激情一二三区| 一区二区三区四区在线免费观看| 亚洲图片欧美色图| 久久国产尿小便嘘嘘| 国产成人日日夜夜| 91久久精品国产91性色tv| 欧美无砖专区一中文字| 精品对白一区国产伦| 国产精品情趣视频| 视频一区二区三区入口| 国产一区不卡在线| 一本一本大道香蕉久在线精品 | 亚洲三级在线免费观看| 亚洲一区二区欧美激情| 久久超级碰视频| 97精品国产露脸对白| 欧美美女一区二区在线观看| 精品欧美一区二区久久| 日韩一区在线看| 日本免费新一区视频| 大胆欧美人体老妇| 在线综合+亚洲+欧美中文字幕| 久久久91精品国产一区二区三区| 最好看的中文字幕久久| 日韩av电影免费观看高清完整版在线观看| 国产精品一区二区久久精品爱涩| 在线一区二区三区四区五区 | 经典一区二区三区| 91视视频在线直接观看在线看网页在线看| 欧美日韩日本视频| 国产亚洲自拍一区| 日本最新不卡在线| 91无套直看片红桃| 欧美精品一区二区精品网| 亚洲精选在线视频| 国产不卡视频一区二区三区| 欧美日韩精品一区二区三区| 欧美激情一区在线观看| 美美哒免费高清在线观看视频一区二区 | 在线亚洲一区观看| 久久精子c满五个校花| 午夜久久福利影院| 91浏览器入口在线观看| 久久久久久久久免费| 五月天一区二区| 91女神在线视频| 国产三级精品视频| 丝袜诱惑制服诱惑色一区在线观看| 成人爽a毛片一区二区免费| 欧美videos大乳护士334| 亚洲国产精品久久人人爱蜜臀| 成人在线视频一区二区| 日韩视频123| 日韩高清在线观看| 欧美午夜片在线观看| 亚洲婷婷在线视频| 成人一区在线观看| 国产日韩视频一区二区三区| 久久国内精品自在自线400部| 欧美亚洲高清一区二区三区不卡| 国产精品三级久久久久三级| 久久91精品国产91久久小草| 欧美精品三级在线观看| 亚洲精品乱码久久久久久| 99re亚洲国产精品| 综合久久国产九一剧情麻豆| 成人小视频在线观看| 久久精品人人做人人综合| 国内精品国产成人国产三级粉色| 7777女厕盗摄久久久| 偷拍日韩校园综合在线| 欧美亚洲一区二区三区四区| 一二三区精品福利视频| 日本道色综合久久| 亚洲五码中文字幕| 欧美日韩免费观看一区二区三区| 亚洲一区二区三区在线看| 日本道免费精品一区二区三区| 亚洲精品乱码久久久久久| 色综合色综合色综合色综合色综合 | 精品少妇一区二区三区视频免付费 | 亚洲国产欧美在线人成| 欧美丝袜丝交足nylons| 亚洲激情网站免费观看| 在线视频亚洲一区| 亚洲一卡二卡三卡四卡五卡| 欧美色综合影院| 免费看欧美女人艹b| 精品理论电影在线观看| 国产在线播放一区三区四| 久久免费视频色| www.爱久久.com| 亚洲老司机在线| 欧美久久久久中文字幕| 美脚の诱脚舐め脚责91| 久久老女人爱爱| 99视频在线精品| 一个色在线综合| 日韩三级免费观看| 国产成人精品免费在线| 亚洲欧美日韩国产手机在线| 欧美日韩日日夜夜| 久久er精品视频| 国产精品网友自拍| 91日韩在线专区| 秋霞电影一区二区| 国产日产欧产精品推荐色| 色婷婷综合久久久| 免费人成精品欧美精品| 亚洲国产精品av| 日本乱人伦一区| 麻豆精品在线观看| 国产免费观看久久| 欧美专区亚洲专区| 极品少妇一区二区| 亚洲精品免费播放| 精品国产一区二区三区久久影院| 高清日韩电视剧大全免费| 一区二区三区在线影院| 欧美精品一区二区三区很污很色的| av中文字幕不卡| 热久久免费视频| 国产精品理伦片| 91精品国产综合久久婷婷香蕉 | 欧美日韩中文字幕一区| 激情欧美一区二区| 亚洲裸体xxx| 精品国产乱码久久久久久老虎 | 中文字幕一区二区不卡| 欧美精品丝袜久久久中文字幕| 国产白丝精品91爽爽久久| 亚洲午夜激情网站| 国产亚洲视频系列| 欧美久久久一区| 99久久99久久综合| 国内精品嫩模私拍在线| 亚洲福利国产精品| 国产欧美日韩在线看| 在线不卡的av| 色婷婷香蕉在线一区二区| 精品在线播放午夜| 午夜欧美一区二区三区在线播放| 欧美极品少妇xxxxⅹ高跟鞋| 欧美一区二区美女| 色天使久久综合网天天| 国产福利一区二区三区在线视频| 亚洲成在人线在线播放| 国产精品天天看| 亚洲精品在线免费观看视频| 欧美性极品少妇| 成人白浆超碰人人人人| 国产资源精品在线观看| 日韩国产欧美在线播放| 亚洲综合视频在线| 国产精品国产三级国产三级人妇 | 亚洲第一会所有码转帖| 国产精品区一区二区三区| 欧美精品一区二| 日韩午夜中文字幕| 欧美最猛黑人xxxxx猛交| 成人的网站免费观看| 国产成人av影院| 国产一区啦啦啦在线观看| 日韩av网站免费在线| 亚洲成人av中文| 亚洲一区二区三区自拍| 亚洲精品老司机| 亚洲精选视频在线| 日韩美女视频一区| 国产精品久久久久一区| 久久免费精品国产久精品久久久久| 欧美成人精精品一区二区频| 欧美高清精品3d| 欧美性受xxxx| 欧美日韩免费电影| 欧美老人xxxx18| 91精品国模一区二区三区|