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

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

?? hardware.c

?? ZLG的EASYARM8962開發板中IAR實驗例程第六章
?? C
字號:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.embedtools.com
**
**--------------File Info-------------------------------------------------------------------------------
** File Name:          Hardware.c
** Last modified Date: 2007-09-22
** Last Version:       1.0
** Description:        以太網LM3S6965底層硬件驅動
** 
**------------------------------------------------------------------------------------------------------
** Created By:         Cai Chubin
** Created date:       2007-09-20
** Version:            1.0
** Descriptions:       The original version 初始版本
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
********************************************************************************************************/
#define HARDWARE_GLOBALS
#include "..\User\includes.h"
union  REC_BUFF_UNION	REC_BUFF[MAX_REC_BUFF];								 
uint8 send_buff[2046];               /*發送數據緩沖區*/
/**********************************************************************
**函數原型:    void 	SetMacID()
**入口參數:		*mac_ptr
**出口參數:		無
**返 回 值:	無            
**說    明:	設置芯片物理地址,物理地址已經存儲在程序空間內 
************************************************************************/
void SetMacID(uint8 * mac_ptr)   
{
   EthernetMACAddrSet(ETH_BASE, mac_ptr);	/*設置MAC地址,地址存儲在cfg_net.h的My_Mac_1ID中*/
}


/**********************************************************************
**函數原型:    EthernetIntHandler()
**入口參數:		無
**出口參數:		無
**返 回 值:	無            
**說    明:	以太網中斷,處理接收數據 
************************************************************************/
void EthernetIntHandler(void)
{
    unsigned long ulTemp;
    ulTemp = EthernetIntStatus(ETH_BASE, false);
    EthernetIntClear(ETH_BASE, ulTemp);	        		/*清除中斷標志*/

    if(ulTemp & ETH_INT_RX)								/*判斷是否為接收中斷*/
    {
		Rec_Packet();									/*在中斷里處理接收函數*/
	   
    }
}
 	
/**********************************************************************
**函數原型:Send_Packet(struct _pkst *TxdData)
**入口參數:	struct _pkst *TxdData	:指向要發送數據的結構指針           
**出口參數:	無
**返 回 值:無              
**說    明:發送數據包,以太網底層驅動程序,所有的數據發送都要通過該程序
************************************************************************/  
void Send_Packet(struct _pkst *TxdData)//  
{
   struct _pkst *ExPtr;
   uint16 ii,length=0;
   static uint16 lengthdata=0;
   uint16 jj;
   ExPtr=TxdData;
	while(ExPtr->STPTR!=NULL)						/*計算出要發送的數據的總長度*/
	{	
		length=length+ExPtr->length;
		ExPtr=ExPtr->STPTR;
	}
	length=length+ExPtr->length;					/*最后一幀數據的長度*/
	ii=length;										/*保存數據的總長度*/


	ExPtr=TxdData;
	while(ExPtr->STPTR!=NULL) 						/*把數據寫進緩沖區里面*/
	{
	    for(jj=0;jj<ExPtr->length;jj++)
		 {
		  send_buff[lengthdata] =*(((uint8 *)ExPtr->DAPTR)+jj);
		   lengthdata++;
		 }
		//TEPTR=ExPtr->DAPTR;
	  ExPtr=ExPtr->STPTR;

	}
	/////////////////////
	for(jj=0;jj<ExPtr->length;jj++)		  			/*寫最后一幀數據到緩沖區*/
		 {
		  send_buff[lengthdata] =*(((uint8 *)ExPtr->DAPTR)+jj);
		   lengthdata++;
		 }
	 //////////////////////////////////
//	ii=lengthdata;
	EthernetPacketPut(ETH_BASE,send_buff,ii);	 	/*發送數據*/
	lengthdata=0;
   //while( EthernetSpaceAvail(ETH_BASE) )
   
}
 
/**********************************************************************
**函數原型:unsigned char * Rec_Packet()
**入口參數: 無
**出口參數:	無
**說    明:處理接收到的數據,被接收中斷調用
************************************************************************/

void Rec_Packet(void) 
{
	static uint8 REC_BUFF_NUM=0;
	uint8 * REC_BUFF_PTR_BYTES;
	uint16 length;
	OSSchedLock();
	do{		
		length = EthernetPacketNonBlockingGet(ETH_BASE,REC_BUFF[REC_BUFF_NUM].bytes,1514);
        if( (length > 0) && (length < 0x600) )
        {
			//EthernetIntEnable(ETH_BASE, ETH_INT_RX);
			
			REC_BUFF_PTR_BYTES=REC_BUFF[REC_BUFF_NUM].bytes;
#ifdef Little_End
			if((((ipethernet*)REC_BUFF_PTR_BYTES)->NextProtocal==0x0008)//可以減少對數據緩沖取的利用
				||(((ipethernet*)REC_BUFF_PTR_BYTES)->NextProtocal==0x0608))//不過如果緩沖區足夠大就最好不要
#endif
#ifdef Big_End
			if((((ipethernet*)REC_BUFF_PTR_BYTES)->NextProtocal==0x0800)//可以減少對數據緩沖取的利用
				||(((ipethernet*)REC_BUFF_PTR_BYTES)->NextProtocal==0x0806))//不過如果緩沖區足夠大就最好不要
#endif
			{
				OSSchedUnlock();
//				REC_BUFF_TTL[REC_BUFF_NUM]=200;//ADD FOR BUF TTL
				Rec_Ethernet_Packed(REC_BUFF_PTR_BYTES,0);
				REC_BUFF_NUM++;
		    	if(REC_BUFF_NUM>=5) {REC_BUFF_NUM=0;}
				OSSchedLock();					
			}
		}	
		else
			break;	
	}while(1);
	OSSchedUnlock();
}
/**********************************************************************
**函數原型:	void InitNic()
**入口參數:	無
**出口參數:	無
**返 回 值:	無              
**說    明:	對芯片的工作寄存器進行設置,各個寄存器的用法可參考LM3S6965的數據手冊
************************************************************************/
void InitNic(uint8 num)  
{
	
	uint32  i;
	uint32 ulTemp;   
	SysCtlPeripheralReset(SYSCTL_PERIPH_ETH);		           /*復位以太網*/

   /*****以下就是對以太網的設置******************/

    SysCtlPeripheralEnable(SYSCTL_PERIPH_ETH);                 /*使能以太網外設*/
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);		       /*使能LED外設*/
	

    GPIODirModeSet(GPIO_PORTF_BASE, (GPIO_PIN_2 | GPIO_PIN_3),
            GPIO_DIR_MODE_HW);
    GPIOPadConfigSet(GPIO_PORTF_BASE, (GPIO_PIN_2 | GPIO_PIN_3),
            GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);		       /*配置LED由硬件控制,輸出電流為2ma*/


    EthernetIntDisable(ETH_BASE, (ETH_INT_PHY | ETH_INT_MDIO | ETH_INT_RXER |
                       ETH_INT_RXOF | ETH_INT_TX | ETH_INT_TXER | ETH_INT_RX));
    ulTemp = EthernetIntStatus(ETH_BASE, false);
    EthernetIntClear(ETH_BASE, ulTemp);

	EthernetInit(ETH_BASE);	  									/*對于第一次使用以太網的初始化*/
	for(i=0;i<255;i++) ;
    EthernetConfigSet(ETH_BASE, (ETH_CFG_TX_DPLXEN | ETH_CFG_TX_CRCEN |
                                 ETH_CFG_TX_PADEN));			/*使能全雙工模式,自動進行CRC校驗,自動填充發送數據達到最小值*/
	 
    EthernetEnable(ETH_BASE);  									/*使能以太網*/

	IntEnable(INT_ETH);											/*使能以太網外設中斷*/
	IntPrioritySet(INT_ETH, 0xFF); 								/*設置以太網中斷優先級*/
    EthernetIntEnable(ETH_BASE, ETH_INT_RX); 					/*使能以太網接收中斷*/
	for(i=0;i<255;i++) ;  										
	SetMacID(NetPort[num].My_Mac);						        /*寫MAC地址*/
	for(i=0;i<3000000;i++) ;									/*延時*/

    
}



uint16 swap_int16(uint16 temp)
{uint16 temp1;
temp1=(temp&0xff00)>>8;
temp=(temp&0x00ff)<<8;
return(temp+temp1);
}
uint32 swap_int32(uint32 temp)
{
	union   w  temp232,temp132;
	temp232.dwords=temp;
	temp132.bytes.byte0=temp232.bytes.byte3;
	temp132.bytes.byte1=temp232.bytes.byte2;
	temp132.bytes.byte2=temp232.bytes.byte1;
	temp132.bytes.byte3=temp232.bytes.byte0;
	return(temp132.dwords);
}

uint16 Char2ToInt16(uint8 * temp)
{
	uint16 temp16;
	temp16=((uint16)(*temp))<<8;
	temp++;
	temp16=temp16+(uint16)(*temp);
	return(temp16);
}

uint32 Char4ToInt32(uint8 * temp)
{
	uint32 temp32;
	temp32=((uint32)(*temp))<<24;
	temp++;
	temp32=temp32+(((uint32)(*temp))<<16);
	temp++;
	temp32=temp32+(((uint32)(*temp))<<8);
	temp++;
	temp32=temp32+(uint32)(*temp);
	return(temp32);
}  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区三区影院在线午夜| 国产成人综合网| 国产精品乡下勾搭老头1| av影院午夜一区| 精品少妇一区二区三区免费观看| 国产精品视频一区二区三区不卡| 日日欢夜夜爽一区| 色狠狠一区二区三区香蕉| 欧美mv和日韩mv的网站| 亚洲午夜精品久久久久久久久| 国产成人午夜高潮毛片| 91精品国产日韩91久久久久久| 亚洲人成在线观看一区二区| 乱中年女人伦av一区二区| 欧美日韩在线播| 亚洲伦在线观看| 国产 欧美在线| 久久久久久久网| 久久精品国内一区二区三区| 91在线播放网址| 国产精品大尺度| 国产毛片精品国产一区二区三区| 91精品国产一区二区人妖| 亚洲小说欧美激情另类| 色综合色综合色综合| 亚洲欧洲一区二区在线播放| 精品一区免费av| 欧美大片顶级少妇| 久久精品国产亚洲a| 日韩精品最新网址| 毛片不卡一区二区| 日韩欧美国产一区二区三区 | 成人av在线一区二区| 亚洲精品一区二区三区香蕉| 美女视频一区二区| 日韩欧美成人激情| 国产最新精品免费| 久久久久久久综合| 成人高清视频免费观看| 中文字幕一区二区三区四区| caoporn国产一区二区| 中文字幕一区二区三区不卡在线| 成人黄色免费短视频| **性色生活片久久毛片| 成人av在线资源网站| 亚洲欧美二区三区| 欧美狂野另类xxxxoooo| 另类专区欧美蜜桃臀第一页| 欧美r级电影在线观看| 国产福利一区在线| 亚洲欧美怡红院| 欧美这里有精品| 蜜桃av一区二区三区| 久久久三级国产网站| aaa欧美色吧激情视频| 亚洲国产综合人成综合网站| 欧美夫妻性生活| 国产精品一区二区免费不卡| 国产精品无圣光一区二区| 色婷婷国产精品综合在线观看| 一区二区三区在线看| 欧美一区二区三区小说| 国产传媒一区在线| 亚洲自拍与偷拍| 精品国产sm最大网站| 99久久婷婷国产| 日本最新不卡在线| 中文字幕av一区二区三区高| 欧美性淫爽ww久久久久无| 看片网站欧美日韩| 亚洲另类中文字| 欧美videos中文字幕| 91捆绑美女网站| 美女免费视频一区二区| 国产精品久久久久久久午夜片| 欧美喷潮久久久xxxxx| 国产激情视频一区二区在线观看| 亚洲制服丝袜在线| 久久久www成人免费毛片麻豆 | 亚洲欧洲美洲综合色网| 欧美日韩国产一二三| 成人黄色综合网站| 日韩av一二三| 亚洲精品美国一| 国产色综合久久| 欧美一区二区三区的| 91啪在线观看| 国产99一区视频免费| 蜜臀国产一区二区三区在线播放| 国产精品不卡视频| 久久久久久久久97黄色工厂| 欧美天天综合网| 在线中文字幕一区二区| 成人小视频免费在线观看| 日本成人在线视频网站| 一个色综合av| 亚洲婷婷综合色高清在线| 久久久午夜精品| 精品欧美一区二区三区精品久久| 欧美日韩mp4| 在线观看欧美精品| 色悠悠久久综合| 不卡av免费在线观看| 国产成人av在线影院| 久久99精品国产.久久久久久| 午夜欧美大尺度福利影院在线看| 亚洲美女视频一区| 亚洲视频一区在线观看| 国产精品每日更新在线播放网址| 久久美女高清视频| 久久婷婷国产综合精品青草| 日韩一区国产二区欧美三区| 欧美色爱综合网| 欧美日韩一区 二区 三区 久久精品| 99久久婷婷国产综合精品电影| 成人精品免费看| 99精品视频在线观看免费| aaa欧美色吧激情视频| av在线一区二区| 色哟哟国产精品| 色偷偷成人一区二区三区91 | 亚洲精品成人a在线观看| 国产精品久久福利| 樱桃国产成人精品视频| 亚洲裸体在线观看| 午夜精品久久久久久不卡8050| 婷婷夜色潮精品综合在线| 图片区小说区国产精品视频| 日日夜夜免费精品| 蜜臀久久99精品久久久久宅男 | 国产揄拍国内精品对白| 国产一区二区不卡老阿姨| 国产99久久久国产精品潘金| 波多野结衣欧美| 欧美亚日韩国产aⅴ精品中极品| 欧美四级电影网| 精品福利一区二区三区免费视频| 久久久久久久综合日本| 成人免费小视频| 午夜精品久久久久久不卡8050| 蜜臀精品久久久久久蜜臀| 国产精品乡下勾搭老头1| 91一区二区三区在线播放| 欧美日韩电影在线播放| 精品国产制服丝袜高跟| 国产精品网曝门| 午夜伊人狠狠久久| 国产一区二区三区在线看麻豆| av影院午夜一区| 日韩一区二区三区在线观看| 国产婷婷色一区二区三区四区| 亚洲激情网站免费观看| 精品一区二区三区视频| 91猫先生在线| 欧美va亚洲va国产综合| 亚洲视频中文字幕| 久久99日本精品| 91国产丝袜在线播放| 久久免费精品国产久精品久久久久| 日本一二三不卡| 日韩高清在线观看| av网站免费线看精品| 欧美大片在线观看一区| 亚洲精品欧美激情| 国产精一品亚洲二区在线视频| 在线视频欧美精品| 欧美国产成人在线| 久久精品99国产国产精| 在线免费不卡电影| 欧美激情一区二区三区在线| 水蜜桃久久夜色精品一区的特点| 国产宾馆实践打屁股91| 日韩视频123| 午夜精品福利一区二区三区蜜桃| 国产成人午夜精品5599| 欧美不卡一区二区三区| 亚洲成人免费影院| 色综合色狠狠天天综合色| 欧美激情在线免费观看| 国产在线不卡视频| 日韩欧美高清一区| 亚洲va韩国va欧美va精品| 99久久精品国产麻豆演员表| 久久久三级国产网站| 久久av中文字幕片| 欧美一区二区三区系列电影| 亚洲综合男人的天堂| 97se亚洲国产综合自在线观| 国产精品视频观看| 国产精品一区二区久久精品爱涩| 欧美一区二区播放| 五月综合激情网| 欧美日韩视频在线一区二区| 一区二区三区在线免费视频| 91在线观看美女| 亚洲欧美日韩中文播放| 不卡av在线网| 综合色天天鬼久久鬼色| www.欧美.com| 综合av第一页|