请选择 进入手机版 | 继续访问电脑版

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

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

[复制链接]
三尘居士 提问时间: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

查看全部评分

米兰的无线电 回答时间: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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版