你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

cubeMX配置lwip后为社么ETH的RX_MODE 不能选择中断?

[复制链接]
mtraveler 提问时间:2020-8-13 16:47 /
cubeMX配置lwip后为社么ETH的RX_MODE 不能选择中断?为什么只能轮询接收,不能中断接收呢,想用中断接收怎么改呢?
收藏 评论2 发布时间:2020-8-13 16:47

举报

2个回答
grunt 回答时间: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

查看全部评分

role_2099 回答时间: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

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版