硬件平台:STM32F407VE+DP83848开发板
STM32CubeMX配置:
在Peripherals中ETH的模式选择RMII,在Middlewares中勾选FREERTOS和LWIP,见下图:
依据硬件环境自行对时钟进行配置,此处略。在LWIP Configuration中对lwIP进行相应的配置,将LWIP_DHCP设为Disable,IP_ADDRESS设为192.168.1.7,NETMASK_ADDRESS设为255.255.255.0,GATEWAY_ADDRESS设为192.168.1.1,见下图:
在FREERTOS Configuration中新建两个任务,myTaskLED用作控制LED灯的闪烁指示系统运行,myTaskTcpEcho用作TCP服务器,当接收到客户端发来的数据后,把接收到的数据原样返回。注意,myTaskTcpEcho的优先级需较低,以免堵塞其他任务的正常执行,在此Priority设为osPriorityLow,还有就是分配足够的空间以满足任务的执行,在此Stack Size设为1024。见下图:
最后点击Generate Code生成工程,工程生成后需要将stm32f407xx.h中的宏定义__NVIC_PRIO_BITS由4U改为4,否则编译将会报错。
编译成功后将程序下载至开发板,开发板和电脑用网线直连,至此,在命令行中键入ping 192.168.1.7就可以测试开发板的以太网通讯连接是否正常。另外,参考LwIP TCP/IP stack demonstration for STM32F4x7 microcontrollers (AN3966)将开发板配置为TCP服务器,服务器IP为192.168.1.7,端口为7,当接收到客户端发来的数据后,把接收到的数据原样返回。测试效果,见下图:
通过将AN3966配套的例程代码添加至taskTcpEcho中即可实现上述功能,代码如下:
void taskTcpEcho(void const * argument)
{
/* USER CODE BEGIN taskTcpEcho */
struct netconn *conn, *newconn;
err_t err, accept_err;
struct netbuf *buf;
void *data;
u16_t len;
err_t recv_err;
LWIP_UNUSED_ARG(argument);
/* Create a new connection identifier. */
conn = netconn_new(NETCONN_TCP);
if (conn!=NULL)
{
/* Bind connection to well known port number 7. */
err = netconn_bind(conn, NULL, 7);
if (err == ERR_OK)
{
/* Tell connection to go into listening mode. */
netconn_listen(conn);
while (1)
{
/* Grab new connection. */
accept_err = netconn_accept(conn, &newconn);
/* Process the new connection. */
if (accept_err == ERR_OK)
{
recv_err = netconn_recv(newconn, &buf);
while ( recv_err == ERR_OK)
{
do
{
netbuf_data(buf, &data, &len);
netconn_write(newconn, data, len, NETCONN_COPY);
}
while (netbuf_next(buf) >= 0);
netbuf_delete(buf);
recv_err = netconn_recv(newconn, &buf);
}
/* Close connection and discard connection identifier. */
netconn_close(newconn);
netconn_delete(newconn);
}
}
}
else
{
netconn_delete(newconn);
printf(" can not bind TCP netconn");
}
}
else
{
printf("can not create TCP netconn");
}
/* USER CODE END taskTcpEcho */
}
上一篇:使用STM32CubeMX创建STM32F407工程
下一篇:STM32F407_FreeRTOS_LwIP调试详解一:Cube_MX生成工程
推荐阅读最新更新时间:2024-11-13 14:06
设计资源 培训 开发板 精华推荐
- PX4机器人无人机车辆/飞行管理单元(VMU/FMU) - RDDRONE-FMUK66
- 使用 ROHM Semiconductor 的 BD4828 的参考设计
- LTC6262HDC 桥接式差分输出运算放大器的典型应用
- 【单片机】ESP32最小系统板项目
- LTC1433 演示板,低噪声电流模式降压型 DC/DC 转换器
- RSO-0505S 5V、200mA输出DC/DC转换器典型应用电路
- DC2073B-C,基于 LTC6900 SOT23 硅振荡器的演示板
- 具有电流均衡功能的汽车日间行车灯双灯串 LED 驱动器参考设计
- DI-146 - 35 W 液晶显示器电源
- LTC7813MPUH 低 EMI、宽输入范围直通级联升压+降压稳压器的典型应用电路