STM32F767+LWIP+CubeMX配置中断模式
一、环境准备
电脑系统:Windows 10 专业版 20H2
IDE:Keil v5.35、STM32CubeMX v6.12.1
测试硬件:STM32F767
二、测试步骤
1、测试目的
最初使用轮循模式,但满足不了需求,重新配置为中断模式
注意Hal库V1.2.10版本,无法配置中断模式(具体哪些版本,自己遇到了再检查吧)
Hal库V1.3.1版本,可以配置中断模式,自己注意升级吧
2、配置基本参数
2.1配置SYS
2.2配置RCC
3、配置ETH
配置lwip,需要先Polling Mode,其他配置自己决定吧,此处默认
引脚大同小异,也需要检查自己的电路,注意复位引脚。
网口复位引脚需要注意,没有复位,PHY可能不工作,表现为网口指示灯不闪烁。
4、配置中间件lwip
开启使能后,使用静态IP
开启状态反馈
配置PHY
5、生成工程代码
编译正常,说明基本配置没啥问题。
没有配置printf,先屏蔽lwip中打印部分,不然运行异常。
在 HAL_ETH_MspInit 中添加复位
HAL_GPIO_WritePin(ETH_RESET_GPIO_Port, ETH_RESET_Pin, GPIO_PIN_RESET);
HAL_Delay(100);
HAL_GPIO_WritePin(ETH_RESET_GPIO_Port, ETH_RESET_Pin, GPIO_PIN_SET);
在main中添加 MX_LWIP_Process(); ,此处因为加指示灯,延时200ms
烧录工程后,可以观察网口闪烁,再ping
6、修改工程为中断模式
CubeMX中打开中断,其他不变(R下Mode 仍是 Polling Mode),优先级此处不调
重新生成工程后,
①检查 ethernet_link_check_state 中 使用 HAL_ETH_Start_IT(&heth);
②将 MX_LWIP_Process 中的 ethernetif_input(&gnetif); 移动到网口中断
三、运行效果
重新烧录后,ping时间就很短了,其他服务器、客户端模式,可以自己改吧
四、工程资料下载
F7LwipInterrupt.rar: (访问密码: 1666)https://url48.ctfile.com/f/33868548-1445643637-6877df?p=1666