【E972】emWIN+lwip+ucosIII移植

2021-09-09 22:25:10      索炜达电子      494     

项目编号:E972

文件大小:18M

源码说明:带中文注释

开发环境:C编译器

简要概述:

1.源程序是使用429例程当中的内存管理实验,首先移植了enwin裸机,按照pdf的方法移植下来,下载演示,出了问题,触摸屏抖动的情况,好在教程里提到了这个问题,降低rgb的像素时钟,但是没说具体位置 搜索下LTDC_Init函数,然后根据屏的id选择不同的配置,我的是lcdid==0X7016  LTDC_Clk_Set(300,2,RCC_PLLSAIDIVR_4);//设置像素时钟  45Mhz   
2.在此基础上移植lwip裸机,原来移植过一次,没有成功,原因在于对lwip管理机制的不熟悉,经过一段时间的学习,今天顺利移植。
  按照教程移植完lwip的裸机程序后,需要修改以下几个方面:
1)lan8720的复位引脚在iic的扩展io芯片上,要添加驱动程序,刚开始我没加,结果初始化完成,网口的led都不亮,是因为网卡没初始化。
2)lwip内核有很多周期性定时器,相应的很多定时器函数需要被调用,所以在无操作系统的情况下,需要使用定时器为lwip内核提供时钟。lwip裸机例程当中使用的定时器3,而在enwin的例程中,定时器3已经被用作emwin的事务处理           了,定时器4被用来刷屏了,所以我就使用定时器5来作为lwip的时钟。在中断函数当中只需要把 lwip_localtime +=10; //加10
3)然后就是在主函数中调用lwip_periodic_handle();        //LWIP内核需要定时处理的函数
     把它放到GUIDEMO_Main()函数下_Main函数下就ok了
4)这时下载程序,会看到lwip初始化不成功,最终原因是HAL_ETH_Init(D_Handler)失败 原因可能是超时  修改下stm32f4xx_hal_eth.c中的两个宏 LINKED_STATE_TIMEOUT_VALUE AUTONEGO_COMPLETED_TIMEOUT_VALUE改大一些,我是直接加了个0,下载进去,初始化成功,ping ok

带操作系统的移植,我是在无操作系统的基础上,一点一点按照教程来的,很麻烦,而且容易出错,以后再移植直接复制已经修改好的emwin、lwip文件夹,然后添加工程即可
移植完成下载进去会遇到lwip初始化失败的问题,原因是内存分配失败,把malloc所管理的内存改大一些就ok

目录│文件列表:

 │ emwin lwip ucosIII.zip

 │ emwin lwip无操作系统移植.zip

 └ 不绕弯路,获取海量资源.jpg

TAGemWIN
  • 6 次
  • 1 分