|

楼主 |
发表于 2019-1-17 13:32:26
|
显示全部楼层
问题解决了
这个地方
void HAL_ETH_IRQHandler(ETH_HandleTypeDef *heth)
{
/* Packet received */
if (__HAL_ETH_DMA_GET_IT(heth, ETH_DMACSR_RI))
{
if(__HAL_ETH_DMA_GET_IT_SOURCE(heth, ETH_DMACIER_RIE))
{
/* Call this function to update handle fields */
//if(HAL_ETH_IsRxDataAvailable(heth) == 1)
//{
/* Receive complete callback */
HAL_ETH_RxCpltCallback(heth);
//}
/* Clear the Eth DMA Rx IT pending bits */
__HAL_ETH_DMA_CLEAR_IT(heth, ETH_DMACSR_RI | ETH_DMACSR_NIS);
}
}
屏蔽掉 //if(HAL_ETH_IsRxDataAvailable(heth) == 1)
在用的时候
if (HAL_ETH_IsRxDataAvailable(&EthHandle))
{
if (HAL_ETH_GetRxDataBuffer(&EthHandle, &RxBuff) == HAL_OK)
{
HAL_ETH_GetRxDataLength(&EthHandle, &framelength);
再更新 不明原因。。。。 仿真器也看了 没有什么区别。。。。但是就是好了。。。不知道为什么 好像在中断中更新 出来就没了。。。。不知道怎么表达了 |
|