stm32cubeMX配置LWIP

MCU:stm32f769NIHx 

PHY:LAN8742A

LWIP_VERSION:2.0.3

 1.配置RCC,串口(printf debug log)

  (1)开启RCC,配置时钟系统

    图1.1

    (2)时钟树配置如下图所示

              图1.2

   (3)串口1配置基本参数

图1.3

/* 小技巧 */

在工程里我们平时会用到printf打印debug信息,如果产品发布的时候,这些打印信息就要注释掉,为了方便管理,我们会对prinf再次封装并用宏去控制开启和关闭debug_log



/* printf重定向 不用标准库 减少代码量 */
#if 1
#pragma import(__use_no_semihosting)

int _ttywrch(int ch) 
{
  ch=ch;
  return ch;
}

struct __FILE 
{ 
  int handle; 
};

FILE __stdout; 

void _sys_exit(int x) 
{ 
  x = x; 
} 
//重定义fputc函数 
int fputc(int ch, FILE *f)
{ 
  while((USART1->ISR&0X40)==0);//循环发送,直到发送完毕 
  USART1->TDR = (u8) ch; 
  return ch;
}
#endif

 /* 宏控制 debug log */

#ifdef MY_DEBUG 
#define debug(format, ...) printf(format, ##__VA_ARGS__)
#else
#define DEBUG(format,...) 
#endif

 2.ETH配置参数

·

图1.4

      (1)PHY前16个寄存器是通用的标准的,所以都一样。第31个寄存器是比较重要,可以读取这个寄存器获取通讯速度和是否处在自协商模式

图1.5

 通讯(2)模式为RMII:关于RMII和MII的区别,详情请看https://blog.csdn.net/fun_tion/article/details/70270632

图1.6

           (3)LWIP参数配置,应为没有路由器,直接用网线和电脑相连,所以只能使用敬爱IP不能使用DHCP ,ICMP功能需要打开,因为这个功能是用来ping消息的。UDP和TCP也关掉了,目前还没有用到,,其他参数默认,在主函数循环中循环调用MX_LWIP_Process();包括轮训接收信息和一些LWIP协议栈需要定时调用的函数

 图1.7

原文地址:https://www.cnblogs.com/st-home/p/10896298.html