亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
av中文字幕在线不卡| 成人午夜免费视频| 亚洲亚洲精品在线观看| 国产精品国产馆在线真实露脸| 久久精品一区二区| 欧美国产一区二区在线观看| 国产网红主播福利一区二区| 久久精品在这里| ...xxx性欧美| 亚洲一区国产视频| 视频在线观看一区二区三区| 免费高清视频精品| 国产伦精品一区二区三区免费迷 | 国产欧美日韩另类视频免费观看| 日韩欧美综合一区| 久久影院电视剧免费观看| 精品国产麻豆免费人成网站| 精品国产乱码久久久久久1区2区| 国产日产欧美一区二区三区| 国产精品沙发午睡系列990531| 中文字幕视频一区| 亚洲成年人网站在线观看| 日韩黄色小视频| 国产精品一二三区在线| 日本韩国视频一区二区| 欧美放荡的少妇| 久久精品亚洲精品国产欧美kt∨| 亚洲国产精品99久久久久久久久| 亚洲免费观看高清在线观看| 日韩av不卡一区二区| 国产99久久久国产精品免费看 | 久久99久久久欧美国产| 成人一区二区三区| 欧美日韩亚洲另类| 久久久综合九色合综国产精品| 国产精品欧美一区二区三区| 首页亚洲欧美制服丝腿| 粉嫩av一区二区三区粉嫩| 欧美在线免费视屏| 国产色一区二区| 午夜精品久久久久久久久久| 国产一区二区在线观看免费 | 日韩avvvv在线播放| 成人美女视频在线看| 欧美日韩一区国产| 国产精品嫩草影院av蜜臀| 日韩和欧美的一区| 色av成人天堂桃色av| 国产色产综合色产在线视频| 视频在线在亚洲| 色综合久久久久综合体桃花网| 91精品国产综合久久久久久| 最新久久zyz资源站| 国产一区二区三区四| 欧美日本不卡视频| 亚洲男帅同性gay1069| 懂色av一区二区三区蜜臀| 日韩网站在线看片你懂的| 亚洲第一福利一区| 一本色道久久综合精品竹菊| 亚洲国产精品二十页| 国产精品1区2区3区在线观看| 欧美老人xxxx18| 亚洲第一激情av| 欧美性极品少妇| 亚洲综合av网| 在线观看欧美精品| 国产精品视频yy9299一区| 国产二区国产一区在线观看| 精品欧美黑人一区二区三区| 免费观看一级特黄欧美大片| 欧美日韩午夜在线视频| 亚洲成a人片综合在线| 欧美日韩一区二区三区高清| 一区二区三区资源| 欧洲激情一区二区| 午夜精品视频在线观看| 日韩一区二区在线看| 秋霞影院一区二区| 精品国产伦一区二区三区观看方式 | 欧美色老头old∨ideo| 亚洲一区二区三区三| 欧美写真视频网站| 午夜a成v人精品| 日韩视频在线一区二区| 国产做a爰片久久毛片| 久久精品一区四区| 91视频一区二区三区| 玉米视频成人免费看| 欧美色视频一区| 久久精品国产精品亚洲精品| 欧美精品一区二区三区视频| 国产一区二区三区香蕉| 国产精品久久久久久久裸模| 色噜噜久久综合| 美美哒免费高清在线观看视频一区二区| 日韩欧美在线影院| 丰满放荡岳乱妇91ww| 亚洲第一电影网| 国产色婷婷亚洲99精品小说| 色综合久久久久综合| 日韩中文字幕91| 日本一区二区三区久久久久久久久不| 91视频国产资源| 蜜桃传媒麻豆第一区在线观看| 国产午夜精品一区二区三区视频| 91精彩视频在线| 精品一区二区在线观看| 亚洲欧洲在线观看av| 欧美精品高清视频| 国产成人啪午夜精品网站男同| 亚洲蜜桃精久久久久久久| 欧美一区二区三区影视| 成人黄色a**站在线观看| 日韩在线a电影| 亚洲欧洲精品一区二区精品久久久| 欧美特级限制片免费在线观看| 美女性感视频久久| 亚洲免费色视频| 欧美国产日韩一二三区| 欧美一区永久视频免费观看| 成人av在线资源网| 久久激情五月激情| 亚洲国产精品影院| 中文字幕不卡在线观看| 欧美成人官网二区| 欧美视频第二页| 色婷婷综合激情| 不卡的电影网站| 国产一区三区三区| 天天影视色香欲综合网老头| 国产精品久久久久7777按摩| 日韩欧美三级在线| 欧美日韩一区高清| 欧美在线不卡一区| 99国产精品一区| 波多野结衣亚洲| 国产老肥熟一区二区三区| 日本在线播放一区二区三区| 一级女性全黄久久生活片免费| 国产精品久久久久久妇女6080| 精品国产91乱码一区二区三区| 91.com视频| 这里只有精品视频在线观看| 欧美日韩一区视频| 欧美网站一区二区| 欧美日韩一级片在线观看| 色综合天天综合在线视频| 风流少妇一区二区| 粉嫩欧美一区二区三区高清影视| 国产在线一区观看| 国产麻豆91精品| 国产成人日日夜夜| 成人综合激情网| 成人综合激情网| 91啪在线观看| 欧美在线视频全部完| 欧美女孩性生活视频| 91精品国产综合久久婷婷香蕉| 在线不卡a资源高清| 91精品国产综合久久久久| 日韩午夜在线播放| 精品处破学生在线二十三| 久久久www免费人成精品| 亚洲国产电影在线观看| 国产精品国产馆在线真实露脸| 亚洲欧美激情在线| 肉丝袜脚交视频一区二区| 久久激情五月婷婷| 福利视频网站一区二区三区| 色综合天天综合网天天狠天天| 欧美视频在线播放| 日韩免费高清视频| 欧美激情中文字幕| 依依成人综合视频| 轻轻草成人在线| 国产精品一区二区三区99| 色老综合老女人久久久| 91精品中文字幕一区二区三区 | 国产一区在线不卡| 97精品久久久久中文字幕| 欧美视频精品在线观看| 欧美成人a视频| 综合久久国产九一剧情麻豆| 亚洲v中文字幕| 国产精品1区2区| 欧美视频日韩视频| 国产视频一区在线播放| 亚洲午夜久久久久中文字幕久| 免费一级片91| 色呦呦日韩精品| 精品美女一区二区| 亚洲综合无码一区二区| 国产一区中文字幕| 欧美日韩中文另类| 国产精品天干天干在观线| 日本色综合中文字幕| 粉嫩高潮美女一区二区三区| 欧美高清视频www夜色资源网| 国产日韩欧美不卡在线|