天天看點

STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結

1、開發環境

硬體:野火挑戰者開發闆STM32H743IIT6

軟體版本: CubeMX 6.7.0 STM32CubeH7 Firmware Package V1.11.0 / 04-Nov-2022

原理圖:

STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結
STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結
STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結

2、配置時鐘

STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結

時鐘樹參數僅供參考

STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結

3、配置MPU

MPU配置需要查相關資料,一知半解

STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結

4、配置調試序列槽

修改GPIO與硬體原理圖對應,序列槽參數預設

STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結

5、配置網口

參數配置與硬體對應

STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結

此處網絡收發位址非常重要!!!

STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結

使能中斷

STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結

6、配置Lwip

STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結
STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結

7、生成keil工程

STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結
STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結

序列槽printf函數相關配置

STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結
/void Usart_SendString(uint8_t *str)
{
	unsigned int k=0;
  do 
  {
      HAL_UART_Transmit( &huart1,(uint8_t *)(str + k) ,1,1000);
      k++;
  } while(*(str + k)!='\0');
  
}
///重定向c庫函數printf到序列槽DEBUG_USART,重定向後可使用printf函數
int fputc(int ch, FILE *f)
{
	/* 發送一個位元組資料到序列槽DEBUG_USART */
	HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 1000);	
	
	return (ch);
}

///重定向c庫函數scanf到序列槽DEBUG_USART,重寫向後可使用scanf、getchar等函數
int fgetc(FILE *f)
{
		
	int ch;
	HAL_UART_Receive(&huart1, (uint8_t *)&ch, 1, 1000);	
	return (ch);
}
           

添加列印、網絡處理函數

STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結

編譯程式,測試網絡、序列槽功能

STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結

8、添加Freertos

STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結

!!!!!下面這一步非常重要,卡了很長時間才找到原因!!!!!

STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結

生成keil工程,屏蔽之前的調試程式

STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結

添加如下代碼:

STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結

測試網絡:

STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結

9、測試網絡傳輸性能

單闆上使用的LAN8720,而CubeMX配置的是LAN8742,兩者稍有差異,按照下圖配置為100M速率,否則速率為10M

STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結

參考:https://www.freesion.com/article/29491218149/

[野火]《LwIP應用開發實戰指南—基于野火 STM32 全系列(M4-M7)開發闆》

STM32H743使用CubeMX配置Lwip、Freertos1、開發環境2、配置時鐘3、配置MPU4、配置調試序列槽5、配置網口6、配置Lwip7、生成keil工程8、添加Freertos9、測試網絡傳輸性能10、總結

10、總結

在開發過程中,由于很多細節不清楚,走了很多彎路,臨時查了很多資料,沒有完全吸收,有很多地方還不是很明白,需要繼續學習。最後,歡迎大家留言讨論以及提出指導意見。

繼續閱讀