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