ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
1091723 Топик полностью
LightElf (08.04.2021 19:38, просмотров: 308) ответил Гyдвин на Сала в башке не хватает ;) Посему и взялся потестить с пристрастием еще разок их стек.
Вот смотри, есть пример https://github.com/SoCXin/CH579/blob/master/project/startcode/NET/IP_Raw/IP_Raw.c


В нем такое:

void ETH_IRQHandler( void ) /* 以太网中断 */ 
{
CH57xNET_ETHIsr(); /* 以太网中断中断服务函数 */
}

Если перед вызовом CH57XNET_ETHIsr() прочитать регистр R8_ETH_CON, то можно узнать причину прерывания. Если стоит флаг RB_ETH_EIR_RXIF, то пакет успешно принят. Тогда из регистра R32_ETH_RX узнаем длину пакета и где он в памяти лежит. Залезаем втуда и выдергиваем из пакета чего нужно и после этого вызываем CH57xNET_ETHIsr

Не надо делать мне как лучше, оставьте мне как хорошо