请问ch32v203 以太网接收中断只会触发3次是怎么回事

? ? eth_irq_flag = R8_ETH_EIR;

? ? if(eth_irq_flag&RB_ETH_EIR_RXIF)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //Receive complete

? ? {

? ? ? ? R8_ETH_EIR = RB_ETH_EIR_RXIF;

? ? ? ? /* Check if the descriptor is owned by the ETHERNET DMA */

? ? ? ? if( DMARxDescToGet->Status & ETH_DMARxDesc_OWN )

? ? ? ? {

? ? ? ? ? ? estat_regval = R8_ETH_ESTAT;

? ? ? ? ? ? if(estat_regval & \

? ? ? ? ? ? ? ? ? ? (RB_ETH_ESTAT_BUFER | RB_ETH_ESTAT_RXCRCER | RB_ETH_ESTAT_RXNIBBLE | RB_ETH_ESTAT_RXMORE))

? ? ? ? ? ? {

? ? ? ? ? ? ? ? return;

? ? ? ? ? ? }

? ? ? ? ? ? if( ((ETH_DMADESCTypeDef*)(DMARxDescToGet->Buffer2NextDescAddr))->Status& ETH_DMARxDesc_OWN )

? ? ? ? ? ? {

? ? ? ? ? ? ? ? DMARxDescToGet->Status &= ~ETH_DMARxDesc_OWN;

? ? ? ? ? ? ? ? DMARxDescToGet->Status &= ~ETH_DMARxDesc_ES;

? ? ? ? ? ? ? ? DMARxDescToGet->Status |= (ETH_DMARxDesc_FS|ETH_DMARxDesc_LS);

? ? ? ? ? ? ? ? DMARxDescToGet->Status &= ~ETH_DMARxDesc_FL;

? ? ? ? ? ? ? ? DMARxDescToGet->Status |= ((R16_ETH_ERXLN+4)<


? ? ? ? ? ? ? ? u8 data[100];

? ? ? ? ? ? ? ? u16 len = R16_ETH_ERXLN;

? ? ? ? ? ? ? ? memcpy(data, (u8*)DMARxDescToGet->Buffer1Addr, len);

? ? ? ? ? ? ? ? ETH_RX(data, len);


? ? ? ? ? ? ? ? /* Update the ETHERNET DMA global Rx descriptor with next Rx descriptor */

? ? ? ? ? ? ? ? /* Selects the next DMA Rx descriptor list for next buffer to read */

? ? ? ? ? ? ? ? DMARxDescToGet = (ETH_DMADESCTypeDef*) (DMARxDescToGet->Buffer2NextDescAddr);

? ? ? ? ? ? ? ? R16_ETH_ERXST = DMARxDescToGet->Buffer1Addr;

? ? ? ? ? ? }

? ? ? ? }

? ? }



如题

卡在


if( ((ETH_DMADESCTypeDef*)(DMARxDescToGet->Buffer2NextDescAddr))->Status& ETH_DMARxDesc_OWN )


您好,我使用例程测试是可以一直进中断的,您可以下载我们官网的例程试一下,后续有问题可以通过邮箱联系:kx@wch.cn


只有登录才能回复,可以选择微信账号登录