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

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

?? 91x_enet.c

?? 最新版FreeRTOS, 包擴多種開發平臺的移植
?? C
?? 第 1 頁 / 共 2 頁
字號:
{
int i;

	for( i = 0; i < ENET_NUM_RX_BUFFERS; i++ )
	{
		/* Assign temp Rx array to the ENET buffer */
		dmaRxDscrBase[ i ].dmaAddr = (u32)&(RxBuff[ i ][ 0 ]);

		/* Initialize RX ENET Status and control */
		dmaRxDscrBase[ i ].dmaStatCntl = 0x4000;

		/* Initialize the next descriptor- In our case its single descriptor */
		dmaRxDscrBase[ i ].dmaNext = (u32)&(dmaRxDscrBase[i+1]) | 0x01;

		/* Set the max packet size  */
		dmaRxDscrBase[ i ].dmaStatCntl = ENET_MAX_PACKET_SIZE | ENET_NEXT_ENABLE;

		/* Setting the VALID bit */
		dmaRxDscrBase[ i ].dmaPackStatus = DMA_DSCR_RX_STATUS_VALID_MSK;
	}

	dmaRxDscrBase[ ENET_NUM_RX_BUFFERS - 1 ].dmaNext = (u32)&(dmaRxDscrBase[ 0 ]);

	/* Setting the RX NEXT Descriptor Register inside the ENET */
	ENET_DMA->RXNDAR = (u32)&(dmaRxDscrBase) | 0x01;
}

/*******************************************************************************
* Function Name  : ENET_TxDscrInit
* Description    : Initializes the Tx ENET descriptor chain with single descriptor
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/

void ENET_TxDscrInit(void)
{

  /* ENET Start Address */
  dmaTxDscrBase.dmaAddr = (u32)TxBuff;

  /* Next Descriptor Address */
  dmaTxDscrBase.dmaNext = (u32)&(dmaTxDscrBase);

  /* Initialize ENET status and control */
  dmaTxDscrBase.dmaStatCntl = 0;

  /* Tx next set to Tx decriptor base */
  ENET_DMA->TXNDAR = (u32)&(dmaTxDscrBase);

  /* Enable next enable */
  ENET_DMA->TXNDAR |= DMA_DSCR_NXT_NPOL_EN;

}

/*******************************************************************************
* Function Name  : ENET_Init
* Description    : ENET MAC, PHY and DMA initializations
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void ENET_Init ()
{

  vu32 regValue;
  ENET_MACConfig *MAC_Config;
  ENET_MACConfig config;
  u32 macAddrLow, macAddrHigh;

  /* De-assert the SRESET bit of ENET + MAC devices */
  ENET_DMA->SCR &=~DMA_SCR_SRESET;
  MAC_Config =&config;
  /* Initialize MAC control register with common values */
  MAC_Config->ReceiveALL = DISABLE;
  if (SCU_GetHCLKFreqValue() > 50000)
  MAC_Config->MIIPrescaler = MIIPrescaler_2;
  MAC_Config->LoopbackMode = DISABLE;
  MAC_Config->AddressFilteringMode = MAC_Perfect_Multicast_Perfect;
  MAC_Config->PassWrongFrame = DISABLE;
  MAC_Config->LateCollision = DISABLE;
  MAC_Config->BroadcastFrameReception = ENABLE;
  MAC_Config->PacketRetry = ENABLE;
  MAC_Config->RxFrameFiltering = ENABLE;
  MAC_Config->AutomaticPadRemoval = ENABLE;
  MAC_Config->DeferralCheck = ENABLE;

    /* Configure MAC control register */
  ENET_MACControlConfig(MAC_Config);

  /* DMA initialization */
  /* Read the ENET DMA Status and Control Register */
  regValue = ENET_DMA->SCR;

  /* Setup Tx Max burst size */
  regValue &= ~(u32)DMA_SCR_TX_MAX_BURST_SZ;
  regValue |= (u32)DMA_SCR_TX_MAX_BURST_SZ_VAL;

  /* Setup Rx Max Burst size */
  regValue &= ~(u32)DMA_SCR_RX_MAX_BURST_SZ;
  regValue |= (u32)DMA_SCR_RX_MAX_BURST_SZ_VAL;

  /* Write Tx & Rx burst size to the ENET status and control register */
  ENET_DMA->SCR = regValue;

  /* Put the PHY in reset mode */
  ENET_MIIWriteReg(0x0,MAC_MII_REG_XCR, 0x8000);

  /* Delay to assure PHY reset */
  vTaskDelay( 3000 );

  /* initialize the opearting mode */
  while( ENET_SetOperatingMode() == pdFAIL )
  {
  	vTaskDelay( 3000 );
  }

  /*set MAC physical*/
  macAddrLow  = (MAC_ADDR3<<24) + (MAC_ADDR2<<16) + \
                (MAC_ADDR1<<8) + MAC_ADDR0;

  // Higher MAC address
  macAddrHigh = (MAC_ADDR5<<8) + MAC_ADDR4;

  /* Initialize Rx and Tx descriptors in memory */
  ENET_TxDscrInit();
  ENET_RxDscrInit();
}

/********************************************************************************
* Function Name  : ENET_HandleRxPkt
* Description    : receive a packet and copy it to memory pointed by ppkt.
* Input          : ppkt: pointer on application receive buffer.
* Output         : None
* Return         : ENET_NOK - If there is no packet
*                : ENET_OK  - If there is a packet
*******************************************************************************/
u32 ENET_HandleRxPkt ( void *ppkt)
{
ENET_DMADSCRBase *pDescr;
u16 size;
static int iNextRx = 0;

	if( dmaRxDscrBase[ iNextRx ].dmaPackStatus & DMA_DSCR_RX_STATUS_VALID_MSK )
	{
		return 0;
	}

	pDescr = &dmaRxDscrBase[ iNextRx ];

	/*Get the size of the packet*/
	size = ((pDescr->dmaPackStatus & 0x7ff) - 4);

	//MEMCOPY_L2S_BY4((u8*)ppkt, RxBuff, size); /*optimized memcopy function*/
	memcpy(ppkt, RxBuff[iNextRx], size);   //string.h library*/

	/* Give the buffer back to ENET */
	pDescr->dmaPackStatus = DMA_DSCR_RX_STATUS_VALID_MSK;

	iNextRx++;

	if( iNextRx >= ENET_NUM_RX_BUFFERS )
	{
		iNextRx = 0;
	}

	/* Return no error */
	return size;
}

/*******************************************************************************
* Function Name  : ENET_TxPkt
* Description    : Transmit a packet
* Input          : ppkt: pointer to application packet Buffer
*                : size: Tx Packet size
* Output         : None
* Return         : None
*******************************************************************************/

u8 *pcGetNextBuffer( void )
{
	if( dmaTxDscrBase.dmaPackStatus & DMA_DSCR_TX_STATUS_VALID_MSK )
	{
		return NULL;
	}
	else
	{
		return ( unsigned char * ) TxBuff;
	}
}

void ENET_TxPkt(void *ppkt, u16 size)
{
	/* Setting the Frame Length*/
	dmaTxDscrBase.dmaStatCntl = (size&0xFFF);

	/* Start the ENET by setting the VALID bit in dmaPackStatus of current descr*/
	dmaTxDscrBase.dmaPackStatus = DMA_DSCR_TX_STATUS_VALID_MSK;

	/* Start the transmit operation */
	ENET_DMA->TXSTR|= DMA_TX_START_FETCH;
}

/*******************************************************************************
* Function Name  : ENET_Start
* Description    : Enables ENET MAC reception / transmission & starts DMA fetch
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/

void  ENET_Start ( void)
{
  u32 value;

  /* Force a ENET abort by software for the receive block */
   ENET_DMA->RXSTR &=~ DMA_RX_START_DMA_EN;

  /* Force a ENET abort by software for the transmit block */
   ENET_DMA->TXSTR &=~DMA_TX_START_DMA_EN;

  /* Reset all interrupts */
  ENET_DMA->ISR = 0xFFFFFFFF;

  /* Setup Descriptor Fetch ENET_PhyDelay for Receive Block */
  value = ENET_DMA->RXSTR;
  value &= ~( DMA_RX_START_DFETCH_DLY );
  value |= DMA_RX_START_DFETCH_DEFAULT;
  ENET_DMA->RXSTR=  value;

  /* Setup Descriptor Fetch ENET_PhyDelay for Transmit Block */
  value = ENET_DMA->TXSTR;
  value &= ~( DMA_TX_START_DFETCH_DLY );
  value |= DMA_TX_START_DFETCH_DEFAULT;
  ENET_DMA->TXSTR= value;

  /* Set Tx underrun bit */
  value &= ~( DMA_TX_START_URUN );
  value |= DMA_TX_START_URUN;
  ENET_DMA->TXSTR = value;

  /* Clear the interrupts */
  ENET_DMA->IER = 0x0;

  /* MAC TX enable */
  ENET_MAC->MCR|= MAC_MCR_TE;

  /* MAC RX enable */
  ENET_MAC->MCR|= MAC_MCR_RE;

  /* Start the DMA Fetch */
  ENET_DMA->RXSTR|= DMA_RX_START_FETCH;
}


/*******************************************************************************
* Function Name  : ENET_InitClocksGPIO
* Description    : Reset, clocks & GPIO Ethernet Pin initializations
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void ENET_InitClocksGPIO(void)
{

  GPIO_InitTypeDef GPIO_Struct;

  SCU_AHBPeriphClockConfig(__ENET, ENABLE);
  SCU_AHBPeriphReset(__ENET,DISABLE);
  SCU_PHYCLKConfig(ENABLE);

  GPIO_DeInit(GPIO1);
  GPIO_Struct.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 |GPIO_Pin_3 |GPIO_Pin_4 |GPIO_Pin_7 ;
  GPIO_Struct.GPIO_Type = GPIO_Type_PushPull;
  GPIO_Struct.GPIO_Direction = GPIO_PinOutput;
  GPIO_Struct.GPIO_IPConnected = GPIO_IPConnected_Disable;
  GPIO_Struct.GPIO_Alternate=GPIO_OutputAlt2;
  GPIO_Init(GPIO1, &GPIO_Struct);


  GPIO_DeInit(GPIO5);
  GPIO_Struct.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3;
  GPIO_Struct.GPIO_Type = GPIO_Type_PushPull;
  GPIO_Struct.GPIO_Direction = GPIO_PinOutput;
  GPIO_Struct.GPIO_IPConnected = GPIO_IPConnected_Disable;
  GPIO_Struct.GPIO_Alternate=GPIO_OutputAlt2;
  GPIO_Init(GPIO5, &GPIO_Struct);

}

/******************** (C) COPYRIGHT 2006 STMicroelectronics *******************/


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色偷偷大香| 欧美videos中文字幕| 久久国产精品区| 亚洲欧洲国产日韩| 精品免费视频.| 欧美日韩国产免费一区二区 | 亚洲欧洲日韩综合一区二区| 欧美三级日韩在线| 成av人片一区二区| 激情五月婷婷综合网| 亚洲国产中文字幕在线视频综合| 国产欧美日韩精品一区| 日韩美女主播在线视频一区二区三区 | zzijzzij亚洲日本少妇熟睡| 日本一不卡视频| 亚洲综合自拍偷拍| 中文字幕一区二区视频| 精品国产91亚洲一区二区三区婷婷 | 国产伦精品一区二区三区在线观看| 午夜视频在线观看一区二区| 亚洲欧美综合网| 亚洲国产精品成人综合色在线婷婷| 亚洲主播在线播放| 自拍偷拍亚洲综合| 国产精品久久久久久亚洲毛片| 精品99一区二区| 精品少妇一区二区三区日产乱码| 欧美一区二区三区在线看 | 久久只精品国产| 91麻豆精品国产91久久久| 欧美调教femdomvk| 欧美日韩国产综合一区二区三区| 91成人国产精品| 欧美日韩一级黄| 欧美综合久久久| 在线观看区一区二| 欧美亚洲尤物久久| 欧美日韩aaaaa| 欧美一区二区三区播放老司机| 欧美精品黑人性xxxx| 欧美日韩国产美女| 欧美精品少妇一区二区三区 | 欧美电视剧在线看免费| 欧美一区二区三区在线看| 91精品国产福利| 欧美mv日韩mv| 国产日韩精品一区二区三区| 国产精品热久久久久夜色精品三区 | 欧美在线一二三四区| 在线观看成人免费视频| 欧美日韩国产免费| 精品久久久久一区| 欧美激情一区二区三区全黄 | 日日骚欧美日韩| 久久爱www久久做| 国产成人在线观看| 99久久久免费精品国产一区二区| 色综合天天狠狠| 欧美一区二区三区四区视频| 欧美v国产在线一区二区三区| 亚洲国产电影在线观看| 亚洲美女少妇撒尿| 首页欧美精品中文字幕| 国产一区二区美女诱惑| 92精品国产成人观看免费| 欧美在线视频你懂得| 欧美一级黄色大片| 欧美国产日产图区| 亚洲成人免费在线| 国产精品一二二区| 欧美性一区二区| 欧美tk—视频vk| 亚洲精品国产高清久久伦理二区| 亚洲影视在线播放| 国产精品一区二区免费不卡| 色婷婷av一区| 精品国产1区二区| 一区二区三区日韩| 精品系列免费在线观看| 色妹子一区二区| 精品欧美一区二区在线观看| 国产一区二区精品在线观看| 91网站最新网址| 欧美一级欧美三级| 亚洲欧美激情插 | 欧美三级乱人伦电影| 久久久亚洲欧洲日产国码αv| 亚洲图片自拍偷拍| 成人性生交大片免费| 欧美精品aⅴ在线视频| 亚洲国产精品激情在线观看| 香蕉影视欧美成人| 97久久久精品综合88久久| 精品日产卡一卡二卡麻豆| 亚洲一二三级电影| 99久久久无码国产精品| 精品久久久久av影院| 婷婷夜色潮精品综合在线| eeuss国产一区二区三区| 欧美电影免费提供在线观看| 一区二区久久久久| www.日韩av| 欧美—级在线免费片| 男女激情视频一区| 欧美日韩国产成人在线免费| 中文字幕制服丝袜一区二区三区| 国产一区在线精品| 日韩免费高清av| 日本网站在线观看一区二区三区| 91小宝寻花一区二区三区| 亚洲国产高清aⅴ视频| 久久99精品国产.久久久久久| 欧美午夜电影网| 亚洲激情一二三区| 99v久久综合狠狠综合久久| 国产偷国产偷亚洲高清人白洁| 美国欧美日韩国产在线播放| 欧美理论电影在线| 午夜精品一区二区三区电影天堂| 色欧美日韩亚洲| 亚洲欧美日韩国产综合| 91影院在线观看| 日韩一区中文字幕| 99国产精品国产精品毛片| 国产精品久久777777| 成人在线视频一区| 国产日韩欧美a| 国产a区久久久| 中文字幕av一区二区三区免费看| 国产成人免费视频网站| 久久亚洲春色中文字幕久久久| 久久av中文字幕片| 欧美精品一区二区三区蜜桃视频| 奇米色一区二区| 日韩欧美一二三| 国产一区二区在线看| 久久色在线观看| 国产98色在线|日韩| 久久午夜国产精品| 国产福利一区二区三区视频| 久久精品一区二区三区不卡| 国产高清不卡一区二区| 国产精品三级在线观看| av亚洲精华国产精华| 一区二区三区久久| 制服视频三区第一页精品| 美女mm1313爽爽久久久蜜臀| 精品国产乱码久久久久久牛牛| 国产伦理精品不卡| 综合激情网...| 在线亚洲高清视频| 人人精品人人爱| 久久婷婷成人综合色| 欧美—级在线免费片| 波多野结衣在线一区| 亚洲欧美日韩中文字幕一区二区三区 | 一区二区三区四区不卡在线| 欧美日韩国产综合草草| 激情小说亚洲一区| 中文字幕一区二区日韩精品绯色| 色综合天天综合色综合av| 亚洲成人自拍网| 日韩欧美资源站| 粉嫩一区二区三区性色av| 亚洲欧美日本韩国| 制服丝袜一区二区三区| 国产精品夜夜嗨| 一区二区三区91| 精品久久国产字幕高潮| 91免费版在线看| 蜜桃视频在线一区| 国产精品第13页| 欧美一区二区在线不卡| 成人免费视频app| 五月天一区二区三区| 久久精品免费在线观看| 色噜噜狠狠成人中文综合 | 久久激情综合网| 国产精品第13页| 日韩欧美二区三区| 色婷婷亚洲一区二区三区| 久久国产麻豆精品| 亚洲黄色尤物视频| 久久综合久久综合久久| 日本福利一区二区| 国产很黄免费观看久久| 午夜欧美2019年伦理| 国产精品免费视频一区| 日韩三级视频在线观看| 91麻豆免费观看| 国产乱妇无码大片在线观看| 亚洲午夜精品网| 国产精品系列在线| 欧美一级生活片| 欧美午夜一区二区三区 | 日韩欧美国产综合| 91精品福利在线| 丁香激情综合国产| 久久精品国产99久久6| 亚洲成人免费视频|