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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM