搜索
查看: 1722|回复: 2

[已解决] cubeMX配置lwip后为社么ETH的RX_MODE 不能选择中断?

[复制链接]

该用户从未签到

2

主题

21

帖子

0

蝴蝶豆

初级会员

最后登录
2020-9-18
发表于 2020-8-13 16:47:00 | 显示全部楼层 |阅读模式
cubeMX配置lwip后为社么ETH的RX_MODE 不能选择中断?为什么只能轮询接收,不能中断接收呢,想用中断接收怎么改呢?
回复

使用道具 举报

该用户从未签到

0

主题

1

帖子

5

蝴蝶豆

新手上路

最后登录
2020-8-15
发表于 2020-8-15 02:54:39 | 显示全部楼层
正好这几天在学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放在中断处理中?

如果是的话,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算不算中断接收呢

评分

参与人数 1蝴蝶豆 +5 收起 理由
STMCU + 5

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

9

主题

339

帖子

3

蝴蝶豆

金牌会员

最后登录
2021-4-7
发表于 2020-8-15 21:35:40 | 显示全部楼层
参考下下面这个帖子,我没有测试但是看到zero99分享的是使用lwip的,后面有网友交流提到RX_MODE中断模式,貌似是调好了,楼主可以试试啊

https://www.stmcu.org.cn/module/ ... =page%3D&page=1

Snipaste_2020-08-15_21-35-02.PNG

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-29 21:27 , Processed in 0.160761 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表