TA的每日心情 | 奋斗 2023-7-6 08:48 |
---|
签到天数: 169 天 连续签到: 1 天 [LV.7]常住居民III
|
网络芯片采用的是LAN8742A,网口采用的是HR961160C。
对应于STM32F上的引脚为:
通过函数MPU_Config();配置MPU;
static void MPU_Config(void){ MPU_Region_InitTypeDef MPU_InitStruct; /* Disable the MPU */ HAL_MPU_Disable(); /* Configure the MPU attributes as WT for SRAM */ MPU_InitStruct.Enable = MPU_REGION_ENABLE; MPU_InitStruct.BaseAddress = 0x20010000; MPU_InitStruct.Size = MPU_REGION_SIZE_256KB; MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS; MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE; MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE; MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE; MPU_InitStruct.Number = MPU_REGION_NUMBER0; MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0; MPU_InitStruct.SubRegionDisable = 0x00; MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE; HAL_MPU_ConfigRegion(&MPU_InitStruct); /* Enable the MPU */ HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT);}通过函数CPU_CACHE_Enable();使能CPU的缓存。
HAL初始化 与系统时钟配置。
HAL_Init();SystemClock_Config();这里使用了FreeRTOS,所以这里在main中只新建了一个任务为StartThread,然后就开始了任务调度。这样是没有初始化网络等外设的。那么就看一下StartThread任务。
可以看到LCD、LED等等外设的初始化都在BSP_Config函数中。
tcpip的配置使用到的函数有tcpip_init、Netif_Config()、http_server_netconn_init()。
static void StartThread(void const * argument){ /* Initialize LCD and LEDs */ BSP_Config(); /* Create tcp_ip stack thread */ tcpip_init(NULL, NULL); /* Initialize the LwIP stack */ Netif_Config(); /* Initialize webserver demo */ http_server_netconn_init(); /* Notify user about the network interface config */ User_notification(&gnetif); #ifdef USE_DHCP /* Start DHCPClient */#if defined(__GNUC__) osThreadDef(DHCP, DHCP_thread, osPriorityBelowNormal, 0, configMINIMAL_STACK_SIZE * 5);#else osThreadDef(DHCP, DHCP_thread, osPriorityBelowNormal, 0, configMINIMAL_STACK_SIZE * 2);#endif osThreadCreate (osThread(DHCP), &gnetif);#endif for( ;; ) { /* Delete the Init Thread */ osThreadTerminate(NULL); }}在这里又新建了一个任务为:DHCP_thread,通过DHCP服务,会给开发板分配一个IP地址。这时,LCD上会显示相应的信息。
同时删除了之前的初始化任务。也就是StartThread任务。
osThreadTerminate(NULL);网线连接。
显示器显示:
可以看到分配到的IP地址了。
ping一下。
|
|