void ETH_IRQHandler(void)
{
OS_ERR err;
OSSemPost(&NETRCV_Sem,OS_OPT_POST_1,&err);
__HAL_ETH_DMA_CLEAR_IT(&LAN8720_ETHHandle,ETH_DMA_NORMAL_IT); //清除DMA中斷標志位
__HAL_ETH_DMA_CLEAR_IT(&LAN8720_ETHHandle,ETH_DMA_RX_IT); //清除DMA接收中斷標志位
__HAL_ETH_DMA_CLEAR_IT(&LAN8720_ETHHandle,ETH_DMA_TX_IT); //清除DMA接收中斷標志位
}
沒有收到資料的時候也會進入中斷,呼叫那個函式可以判斷是收到資料啦?不然經常執行OSSemPost(&NETRCV_Sem,OS_OPT_POST_1,&err)這個。
uj5u.com熱心網友回復:
我試過if(__HAL_ETH_DMA_GET_IT(&LAN8720_ETHHandle,ETH_DMA_RX_IT))
OSSemPost(&NETRCV_Sem,OS_OPT_POST_1,&err);
這樣也不行
uj5u.com熱心網友回復:
為啥感覺我和你的不一樣呢??我一直的lwip沒有中斷部分啊,,
uj5u.com熱心網友回復:
要中斷呼叫ethernetif_input()這個函式呀
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/42456.html
標籤:單片機/工控
