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

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

?? d12driver.c

?? USB驅(qū)動(dòng)程序軟件包 運(yùn)行于uC/OS-II的USB驅(qū)動(dòng)程序軟件包 ,lpc2201開發(fā)板源碼
?? C
字號(hào):
/****************************************Copyright (c)**************************************************
**                               廣州周立功單片機(jī)發(fā)展有限公司
**                                     研    究    所
**                                        產(chǎn)品一部 
**
**                                 http://www.zlgmcu.com
**
** 文   件   名: D12Driver.c
** 最后修改日期: 2004年7月2日
** 描        述: USB驅(qū)動(dòng)程序軟件包: PDIUSBD12 設(shè)備端驅(qū)動(dòng)程序 應(yīng)用層
** 版	     本: V1.0
**********************************************************************************************************/

#include "config.h"
#include "D12Config.h"
#include "D12CI.h"
#include "D12HAL.h"
#include "Chap_9.h"
#include "D12Driver.h"

extern EPPFLAGS bEPPflags;

/** Setup包處理任務(wù)堆棧 */
OS_STK  TaskSetupStk[128];

/** Setup包處理任務(wù)事件指針  ***/			
OS_EVENT *pSetup_Event;

/******* PDIUSBD12各端點(diǎn)對(duì)應(yīng)的 USB 接收或發(fā)送控制塊 *********/
CTRL_USB UsbRec_Ep2;				//端點(diǎn)2接收控制塊
CTRL_USB UsbRec_Ep1;				//端點(diǎn)1接收控制塊

CTRL_USB UsbSend_Ep2;				//端點(diǎn)2發(fā)送控制塊
CTRL_USB UsbSend_Ep1;				//端點(diǎn)1發(fā)送控制塊

/***********************************************************************
** 函數(shù)名稱: INT8U WritePort1(INT32U len,INT8U *sendbuff,INT16U timeout)
** 功能描述: 用端點(diǎn) 1 發(fā)送len個(gè)字節(jié)
** 輸 入:   INT32U  len:	  	 發(fā)送的字節(jié)數(shù)(取值范圍為0x00000001 ~ 0xFFFFFFFF)
			 INT8U   sendbuff:   發(fā)送緩沖區(qū)指針
			 INT16U  timeout:    超時(shí)等待時(shí)間, 必須大于等于0
** 輸 出:   0: 發(fā)送成功	 > 0: 發(fā)送失敗(錯(cuò)誤碼)
************************************************************************/
INT8U WritePort1(INT32U len,INT8U *sendbuff,INT16U timeout)
{
	return (USB_WritePort(3,16,1,&UsbSend_Ep1,sendbuff,len,timeout));
}	//往端點(diǎn)1(端點(diǎn)索引號(hào)3)發(fā)送數(shù)據(jù)

/***********************************************************************
** 函數(shù)名稱: INT8U WritePort2(INT32U len,INT8U *sendbuff,INT16U timeout)
** 功能描述: 用端點(diǎn) 2 發(fā)送len個(gè)字節(jié)
** 輸 入:   INT32U  len:	      發(fā)送的字節(jié)數(shù)(取值范圍為0x00000001 ~ 0xFFFFFFFF)
			 INT8U   *sendbuff:   發(fā)送指針
			 INT16U  timeout:     超時(shí)時(shí)間, 必須大于等于0
** 輸 出:   0: 發(fā)送成功	> 0: 發(fā)送失敗(錯(cuò)誤碼)
***********************************************************************/
INT8U WritePort2(INT32U len,INT8U *sendbuff,INT16U timeout)
{
	return (USB_WritePort(5,64,2,&UsbSend_Ep2,sendbuff,len,timeout));
}	//往端點(diǎn)2(端點(diǎn)索引號(hào)5)發(fā)送數(shù)據(jù)

/**********************************************************************
** 函數(shù)名稱: INT8U ReadPort1(INT32U len,INT8U *recbuff,INT16U timeout)
** 功能描述: 從端點(diǎn) 1 讀出 len個(gè)字節(jié)
** 輸 入:   INT32U  len:	     要讀出的字節(jié)數(shù)(取值范圍為0x00000001 ~ 0xFFFFFFFF)
			 INT8U   *recbuff:   接收數(shù)據(jù)指針
			 INT16U  timeout:    超時(shí)時(shí)間, 必須大于等于0
** 輸 出:   0: 讀出成功	 > 0: 讀出失敗(錯(cuò)誤碼)
***********************************************************************/
INT8U ReadPort1(INT32U len,INT8U *recbuff,INT16U timeout)
{
	return (USB_ReadPort(2,&UsbRec_Ep1,len,recbuff,timeout));
}

/**********************************************************************
** 函數(shù)名稱: INT8U ReadPort2(INT32U len,INT8U *recbuff,INT16U timeout)
** 功能描述: 從端點(diǎn) 2 讀出len個(gè)字節(jié)
** 輸 入:   INT32U  len:	     要讀出的字節(jié)數(shù)(取值范圍為0x00000001 ~ 0xFFFFFFFF)
			 INT8U   *recbuff:   接收數(shù)據(jù)指針
			 INT16U  timeout:    超時(shí)時(shí)間, 必須大于等于0
** 輸 出:   0: 讀出成功	> 0: 讀出失敗(錯(cuò)誤碼)
**********************************************************************/
INT8U ReadPort2(INT32U len,INT8U *recbuff,INT16U timeout)
{
	return (USB_ReadPort(4,&UsbRec_Ep2,len,recbuff,timeout));
}

/*********************************************************************
** 函數(shù)名稱: INT8U Init_D12(void)
** 功能描述: 設(shè)置D12與硬件的連接, 初始化D12,  復(fù)位D12
** 輸 入:   無(wú)
** 輸 出:   0: 初始化成功    1: 初始化失敗  
**********************************************************************/
INT8U Init_D12(void)
{
	INT32U i;
	
	OS_ENTER_CRITICAL();
	
	Init_D12Port();							//初始化PDIUSBD12與LPC2200的連接的硬件配置
	Rst_D12();								//復(fù)位PDIUSBD12
	reconnect_USB();        				//重新連接USB
	if (readchipid() != 0x1012){			//讀取芯片ID號(hào),如果不為 1012H
		OS_EXIT_CRITICAL(); 
		return 1;							//則復(fù)位失敗
	}
	
	bEPPflags.value = 0;					//初始化USB事件標(biāo)志變量
  	UsbRec_Ep1.Sem = 0;						//端點(diǎn)1接收資源允許使用
 	UsbRec_Ep2.Sem = 0;						//端點(diǎn)1接收資源允許使用
 	UsbSend_Ep1.Sem = 0;					//端點(diǎn)1發(fā)送資源允許使用
 	UsbSend_Ep2.Sem = 0;					//端點(diǎn)1發(fā)送資源允許使用
  	UsbRec_Ep1.Grp  = 0; 					//端點(diǎn)1無(wú)任務(wù)等待接收
	UsbRec_Ep2.Grp  = 0;					//端點(diǎn)2無(wú)任務(wù)等待接收
	UsbSend_Ep1.Grp = 0;					//端點(diǎn)1無(wú)任務(wù)等待發(fā)送
	UsbSend_Ep2.Grp = 0;					//端點(diǎn)2無(wú)任務(wù)等待發(fā)送
	
    for (i = 0; i < OS_RDY_TBL_SIZE; i++){
    	UsbRec_Ep1.Tbl[i]  = 0;				//清空端點(diǎn)1和2接收與發(fā)送等待任務(wù)列表
    	UsbRec_Ep2.Tbl[i]  = 0;
		UsbSend_Ep1.Tbl[i] = 0;
		UsbSend_Ep2.Tbl[i] = 0;
    }

 	pSetup_Event = OSSemCreate(0);			//創(chuàng)建Setup包處理任務(wù)信號(hào)量
 	if (pSetup_Event == NULL)				//如果返回的事件指針為空
 	{
	 	OS_EXIT_CRITICAL(); 
 	 	return 1;							//則初始化失敗
	}
	
	OS_EXIT_CRITICAL();
 	return 0;								//初始化成功
}


//總線復(fù)位處理子程序
void bus_reset(void)
{
}

//DMA結(jié)束處理
void dma_eot(void)
{
}

//總線掛起改變
void usb_suspend(void)
{
}

/******************************************
** 函數(shù)名稱: void Usb_Exception(void)
** 功能描述: D12中斷服務(wù)程序
*******************************************/
void Usb_Exception(void)
{
	INT16U i_st;

	OS_ENTER_CRITICAL();;							//進(jìn)入D12中斷服務(wù)程序時(shí)關(guān)中斷
	i_st = D12_ReadInterruptRegister();				//讀取PDIUSBD12中斷寄存器值
	
	if(i_st != 0) {
		if(i_st & D12_INT_BUSRESET)
			bus_reset();							//總線復(fù)位處理
		if(i_st & D12_INT_EOT)
			dma_eot();								//DMA傳輸技術(shù)處理
		if(i_st & D12_INT_SUSPENDCHANGE)
			usb_suspend();							//總線掛起改變
		if(i_st & D12_INT_ENDP0IN)
			ep0_txdone();							//控制端點(diǎn)發(fā)送數(shù)據(jù)處理
		if(i_st & D12_INT_ENDP0OUT)
			ep0_rxdone();							//控制端點(diǎn)接收數(shù)據(jù)處理
		if(i_st & D12_INT_ENDP1IN)
			USB_WriteISR(&UsbSend_Ep1,3,16,1);		//端點(diǎn) 1發(fā)送數(shù)據(jù)處理
		if(i_st & D12_INT_ENDP1OUT)
			USB_ReadISR(&UsbRec_Ep1,2,16,1);		//端點(diǎn) 1接收數(shù)據(jù)處理
		if(i_st & D12_INT_ENDP2IN)
			USB_WriteISR(&UsbSend_Ep2,5,64,2);		//端點(diǎn) 2發(fā)送數(shù)據(jù)處理
		if(i_st & D12_INT_ENDP2OUT)
			USB_ReadISR(&UsbRec_Ep2,4,64,2);		//端點(diǎn) 2接收數(shù)據(jù)處理
	}
	//add for uC/OS-II
	CLR_INTD12();									//清除PDIUSBD12的中斷標(biāo)志
	CLR_INT();										//通知中斷結(jié)束
   			
   	OS_EXIT_CRITICAL();							    //退出D12中斷服務(wù)程序時(shí)開中斷
}

/*******************************************************************
** 函數(shù)名稱: void  TaskSetup(void *pdata)
** 功能描述: 控制傳輸處理
** 輸	 入: void *pdata  任務(wù)參數(shù)
** 輸	 出: 無(wú)
** 注	 意: 該任務(wù)的優(yōu)先級(jí)應(yīng)高于其它任務(wù),才能在任何情況下傳輸Setup包
********************************************************************/
void  TaskSetup(void *pdata)
{
#if OS_CRITICAL_METHOD == 3       /* Allocate storage for CPU status register */
	OS_CPU_SR  cpu_sr;
#endif
	INT8U err;
	
	pdata = pdata;                /* Prevent compiler warning */
	for (;;)
	{
		OSSemPend(pSetup_Event,0,&err);		//等待Setup包
		if (err == OS_NO_ERR){				//接收到Setup包 
			OS_ENTER_CRITICAL();			//關(guān)中斷
			control_handler();				//進(jìn)行控制傳輸處理
			OS_EXIT_CRITICAL();			    //開中斷
		}
	}
}


/*******************************************************************************************
** 函數(shù)名稱:  void USB_ReadISR(CTRL_USB *pUsb,INT8U endp,INT32U eppsize,INT8U buffnums)
** 功能描述:  USB 端點(diǎn)接收中斷服務(wù)程序
** 輸   入:  CTRL_USB *pUsb:	USB 接收與發(fā)送控制結(jié)構(gòu)體指針
			  INT8U		endp:	端點(diǎn)索引號(hào)
			  INT32U eppsize:	端點(diǎn)最大信息包大小
			  INT8U buffnums:	該端點(diǎn)緩沖區(qū)個(gè)數(shù)(如D12的端點(diǎn)2有兩個(gè)接收緩沖區(qū))

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月激情六月综合| 久久精品无码一区二区三区| 中文字幕在线观看一区| 国产成人啪午夜精品网站男同| 欧美一二三区在线| 免费看日韩a级影片| 日韩情涩欧美日韩视频| 极品瑜伽女神91| 国产亚洲综合av| www.成人在线| 亚洲成人中文在线| 欧美tk—视频vk| 国产精品1区二区.| 亚洲蜜臀av乱码久久精品蜜桃| 97久久精品人人澡人人爽| 亚洲在线视频免费观看| 7777精品久久久大香线蕉| 国内精品伊人久久久久影院对白| 欧美激情在线看| 91亚洲永久精品| 亚洲国产欧美另类丝袜| 日韩精品影音先锋| www.亚洲精品| 日韩国产欧美在线视频| 国产午夜精品一区二区三区四区| 波多野结衣中文字幕一区二区三区| 亚洲精选视频免费看| 91精品蜜臀在线一区尤物| 懂色av一区二区三区免费看| 一区二区三区欧美在线观看| 欧美成人三级电影在线| 91香蕉视频在线| 日本 国产 欧美色综合| 国产精品毛片a∨一区二区三区| 91福利区一区二区三区| 韩国女主播成人在线| 一级特黄大欧美久久久| 精品国产乱码久久久久久免费 | 在线观看欧美黄色| 久热成人在线视频| 自拍视频在线观看一区二区| 日韩欧美久久久| 色婷婷综合久久久| 国产一区二区不卡在线| 亚洲国产视频网站| 欧美国产97人人爽人人喊| 欧美色男人天堂| 风间由美一区二区av101| 视频一区中文字幕国产| **性色生活片久久毛片| 欧美精品一区二区三区在线播放 | 中文字幕欧美日韩一区| 91精品国产一区二区人妖| 99久久精品国产观看| 激情五月婷婷综合网| 性做久久久久久| 亚洲色图欧美激情| 国产日韩精品一区二区三区在线| 欧美久久一二区| 一本色道久久综合精品竹菊| 国产成人在线视频网址| 久久精品免费看| 五月激情六月综合| 一区二区三区四区亚洲| 中文字幕欧美区| 久久久久久日产精品| 欧美一区二区精品在线| 欧美日韩小视频| 91国产丝袜在线播放| 99这里只有精品| 成人免费黄色在线| 国产a精品视频| 国产精品一区二区在线看| 日韩电影在线一区二区| 同产精品九九九| 午夜日韩在线观看| 偷拍亚洲欧洲综合| 香蕉成人伊视频在线观看| 亚洲国产视频一区| 亚洲综合在线电影| 亚洲精品国产精华液| 一区二区三区中文免费| 亚洲女与黑人做爰| 亚洲最新在线观看| 亚洲狠狠爱一区二区三区| 亚洲综合图片区| 亚洲成人免费视频| 污片在线观看一区二区| 亚欧色一区w666天堂| 亚洲成av人片在线观看无码| 亚洲国产日韩一级| 日韩福利视频导航| 久久国产精品第一页| 精品一区二区av| 国产在线精品一区二区不卡了| 国产九色sp调教91| 粉嫩高潮美女一区二区三区| thepron国产精品| 欧美亚州韩日在线看免费版国语版| 91久久人澡人人添人人爽欧美| 欧美在线一区二区三区| 欧美人牲a欧美精品| 日韩精品一区二区三区在线播放 | 97久久精品人人爽人人爽蜜臀| 99这里都是精品| 欧美三级中文字| 欧美精品久久99| 26uuu精品一区二区| 国产精品情趣视频| 午夜久久电影网| 极品少妇一区二区三区精品视频| 福利一区福利二区| 欧美在线播放高清精品| 欧美一级久久久| 国产精品国产三级国产aⅴ入口 | 一级特黄大欧美久久久| 日本aⅴ免费视频一区二区三区| 激情深爱一区二区| 色噜噜久久综合| 日韩精品一区二| 最新国产精品久久精品| 亚洲国产裸拍裸体视频在线观看乱了 | 麻豆视频观看网址久久| 成人免费看视频| 欧美精品粉嫩高潮一区二区| 久久亚洲综合色| 亚洲高清中文字幕| 国产成人日日夜夜| 91精品国产入口| 中文字幕亚洲欧美在线不卡| 日本不卡视频一二三区| www.av亚洲| 久久影院午夜论| 亚洲国产视频a| voyeur盗摄精品| 精品日韩av一区二区| 亚洲精品成人悠悠色影视| 国产在线播放一区三区四| 欧美日韩一区中文字幕| 中文字幕乱码久久午夜不卡| 偷拍日韩校园综合在线| 99re热这里只有精品免费视频| 欧美成人欧美edvon| 亚洲午夜激情网页| www.在线成人| 久久你懂得1024| 成人妖精视频yjsp地址| 精品少妇一区二区三区免费观看| 亚洲图片欧美视频| 91在线你懂得| 欧美极品aⅴ影院| 国产又黄又大久久| 欧美一区二区视频在线观看2022| 亚洲精品国产一区二区三区四区在线| 国产一区二区中文字幕| 日韩午夜电影在线观看| 天堂av在线一区| 欧美性做爰猛烈叫床潮| 亚洲猫色日本管| 成人h精品动漫一区二区三区| 久久麻豆一区二区| 久久av中文字幕片| 欧美电影免费观看高清完整版在线 | ww亚洲ww在线观看国产| 日韩avvvv在线播放| 欧美日韩精品综合在线| 一区二区三区四区不卡视频| 91在线视频免费观看| 亚洲人妖av一区二区| 丁香激情综合五月| 亚洲国产成人私人影院tom| 高潮精品一区videoshd| 国产精品麻豆久久久| 丰满少妇久久久久久久| 国产日产亚洲精品系列| 福利电影一区二区三区| 欧美高清一级片在线观看| 成人精品免费网站| 国产精品伦一区| 91丨九色丨国产丨porny| 成人免费视频在线观看| 99精品久久99久久久久| 亚洲精品成人悠悠色影视| 欧美三区免费完整视频在线观看| 亚洲国产一区二区三区青草影视| 欧美日韩三级视频| 男女男精品视频网| 久久久久久久国产精品影院| 国产成人av一区二区三区在线观看| 国产情人综合久久777777| 成人福利电影精品一区二区在线观看| 国产精品美女www爽爽爽| 色综合久久六月婷婷中文字幕| 樱花影视一区二区| 欧美一区二区三区性视频| 狠狠色伊人亚洲综合成人| 国产精品久久久久久久久免费桃花| 91在线视频在线| 日本特黄久久久高潮| 久久夜色精品国产噜噜av|