中级会员
 
- 积分
- 294
- 金钱
- 294
- 注册时间
- 2019-9-4
- 在线时间
- 105 小时
|

楼主 |
发表于 2021-1-14 15:30:43
|
显示全部楼层
void send_frame (U8 *frame, U16 length) {
ETH_DMADescTypeDef *tx_desc;
ETH_BufferTypeDef Txbuffer[ETH_TX_DESC_CNT];
HAL_StatusTypeDef ERR_Falg=0;
uint32_t tx_index;
U32 *sp,*dp;
U32 i,j;
/* Start of a new transmit frame */
tx_index = PHY_ETHHandle.TxDescList.CurTxDesc;
tx_desc = (ETH_DMADescTypeDef *)PHY_ETHHandle.TxDescList.TxDesc[tx_index];
// tx_desc->DESC3==ETH_DMATXNDESCWBF_OWN
sp = (U32 *)frame;
dp = (U32 *)( Txbuffer[tx_index].buffer);
for (i = length ; i>0; i--) {
*dp++ = *sp++;
}
// Txbuffer[tx_index].len += length;
// memcpy (Txbuffer[tx_index].buffer, frame, length);
Txbuffer[tx_index].buffer=frame;
Txbuffer[tx_index].len += length;
Txbuffer[tx_index].next = NULL;
/* Last fragment, send the packet now */
TxConfig.Length = length;
TxConfig.TxBuffer = Txbuffer;
/* Clean and invalidate data cache */
//SCB_CleanInvalidateDCache ();
HAL_ETH_Transmit_IT(&PHY_ETHHandle, &TxConfig);
// ERR_Falg=HAL_ETH_Transmit(&PHY_ETHHandle, &TxConfig,0);
// Txbuffer[tx_index].len=0;
Txbuffer[tx_index].len=0;
} 这是我的发送函数 请大佬看下有没有问题 |
|