正好这几天在学STM32的网口
首先没找到ETH的RX_MODE的中断配置,只有ETH全局中断的配置选项
在无系统情况下STM32CubeMX生成的函数
void MX_LWIP_Process(void)
的注释是
* Up to user to call this function in main.c in while (1) of main(void)
就是这个函数要被放到无限循环处理中
函数MX_LWIP_Process其中第一个子函数是
ethernetif_input(&gnetif);
它的注释是
This function should be called when a packet is ready to be read from the interface.
就是这个函数是ETH的接收函数
你说的中断接收是指把函数ethernetif_input放在中断处理中?
首先没找到ETH的RX_MODE的中断配置,只有ETH全局中断的配置选项
在无系统情况下STM32CubeMX生成的函数
void MX_LWIP_Process(void)
的注释是
* Up to user to call this function in main.c in while (1) of main(void)
就是这个函数要被放到无限循环处理中
函数MX_LWIP_Process其中第一个子函数是
ethernetif_input(&gnetif);
它的注释是
This function should be called when a packet is ready to be read from the interface.
就是这个函数是ETH的接收函数
你说的中断接收是指把函数ethernetif_input放在中断处理中?
如果是的话,STM32CubeMX配置时使能ETH全局中断
函数ethernet_link_check_state中
修改HAL_ETH_Stop(&heth);为
HAL_ETH_Stop_IT(&heth);
修改HAL_ETH_Start(&heth);为
HAL_ETH_Start_IT(&heth);
函数MX_LWIP_Process中
注释掉ethernetif_input(&gnetif);
编写ETH接收中断回调函数HAL_ETH_RxCpltCallback
void HAL_ETH_RxCpltCallback (ETH_HandleTypeDef * heth) {
ethernetif_input(&gnetif);
}
这样的话当触发ETH接收中断时才会调用ethernetif_input算不算中断接收呢
评分
查看全部评分
https://www.stmcu.org.cn/module/ ... =page%3D&page=1
评分
查看全部评分