接上一个f769裸机移植lwip
https://bbs.eeworld.com.cn/forum. ... 0&page=1#pid2106661
本次主要在freertos系统上移植lwip
移植完成freertos,在此基础上,
增加lwip
main函数更改为
/* Enable the CPU Cache */
CPU_CACHE_Enable();
HAL_Init();
SystemClock_Config();
/* Init task */
osThreadDef(Start, StartThread, osPriorityNormal, 0, configMINIMAL_STACK_SIZE * 2);
osThreadCreate (osThread(Start), NULL);
/* Start scheduler */
osKernelStart();
/* We should never get here as control is now taken by the scheduler */
for( ;; );
下面详细说明一下
CPU_CACHE_Enable();
HAL_Init();
SystemClock_Config();
这3个均为库函数,不多说。
主要说明任务的创建,使用osThreadDef宏新建一个线程,
osThreadDef(Start, StartThread, osPriorityNormal, 0, configMINIMAL_STACK_SIZE * 2);
线程建好后要使用osThreadCreate开始。
osThreadCreate (osThread(Start), NULL);
下面简要说明StartThread函数
void StartThread(void const * argument)
{ /*io init*/
lan8742_init();
/*set register*/
ETH_Init();
//lwipx:lwip控制结构体指针
lwip_comm_default_ip_set();
/* Create tcp_ip stack thread */
tcpip_init(NULL, NULL);
/* Initialize the LwIP stack */
Netif_Config();
/* Initialize webserver demo */
http_server_socket_init();
/* Notify user about the network interface config */
User_notification(&gnetif);
for( ;; )
{
/* Delete the Init Thread */
osThreadTerminate(NULL);
}
}
余下的就和裸机一样,准备好StartThread函数内的相关函数即可运行。
本次项目使用到的usart1和led的指示均和之前的相同,可以用之前帖子中寄存器直接配置。也可用库函数。
下次开始lcd显示研究,然后在显示基础上逐步增加stemwin
点击此处,查看STM32F769I开发板官方资源。 本帖最后由 star_66666 于 2016-12-22 00:16 编辑