OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4886|回复: 2

STM32f4 usb host U盘实验中移植无操作系统lwip后,编译后无法给出地址

[复制链接]

1

主题

4

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2021-7-28
在线时间
9 小时
发表于 2021-7-29 17:43:05 | 显示全部楼层 |阅读模式
2金钱
本人在正点原子官方例程usb host U盘实验中移植了lwip 无操作系统实验后,编译没有问题,但是lwip功能实现不了,在提示#include "lwip/netif.h"旁边有红×,提示:“error in include chain (IP_addr.h): unknown type name '__packed'”
程序编译没有error,之前改的时候






#include "sys.h"
#include "delay.h"  
#include "usart.h"   
#include "led.h"
#include "lcd.h"
#include "key.h"  
#include "usmart.h"  
#include "sram.h"   
#include "malloc.h"
#include "w25qxx.h"   
#include "sdio_sdcard.h"
#include "ff.h"  
#include "exfuns.h"   
#include "fontupd.h"
#include "text.h"       
#include "piclib.h"         
#include "usbh_usr.h"
#include "lwip/netif.h"
#include "lwip_comm.h"
#include "lwipopts.h"
#include "timer.h"
#include "lwip_comm.h"
#include "LAN8720.h"


//ALIENTEK 探索者STM32F407开发板 实验53
//USB U盘 实验-库函数版本
//技术支持:www.openedv.com
//淘宝店铺:http://eboard.taobao.com
//广州市星翼电子科技有限公司   
//作者:正点原子 @ALIENTEK


USBH_HOST  USB_Host;
USB_OTG_CORE_HANDLE  USB_OTG_Core;




//用户测试主程序
//返回值:0,正常
//       1,有问题
u8 USH_User_App(void)
{
        u32 total,free;
        u8 res=0;
        Show_Str(30,140,200,16,"设备连接成功!.",16,0);         
        res=exf_getfree("2:",&total,&free);
        if(res==0)
        {
                POINT_COLOR=BLUE;//设置字体为蓝色          
                LCD_ShowString(30,160,200,16,16,"FATFS OK!");       
                LCD_ShowString(30,180,200,16,16,"U Disk Total Size:     MB");         
                LCD_ShowString(30,200,200,16,16,"U Disk  Free Size:     MB");             
                LCD_ShowNum(174,180,total>>10,5,16); //显示U盘总容量 MB
                LCD_ShowNum(174,200,free>>10,5,16);       
        }

        while(HCD_IsDeviceConnected(&USB_OTG_Core))//设备连接成功
        {       
                LED1=!LED1;
                delay_ms(200);
        }
        POINT_COLOR=RED;//设置字体为红色          
        Show_Str(30,140,200,16,"设备连接中...",16,0);
        LCD_Fill(30,160,239,220,WHITE);
        return res;
}
void show_address(u8 mode)
{
        u8 buf[30];
        if(mode==1)
        {
                sprintf((char*)buf,"MAC    :%d.%d.%d.%d.%d.%d",lwipdev.mac[0],lwipdev.mac[1],lwipdev.mac[2],lwipdev.mac[3],lwipdev.mac[4],lwipdev.mac[5]);//打印MAC地址
                LCD_ShowString(30,130,210,16,16,buf);
                sprintf((char*)buf,"DHCP IP:%d.%d.%d.%d",lwipdev.ip[0],lwipdev.ip[1],lwipdev.ip[2],lwipdev.ip[3]);                                                //打印动态IP地址
                LCD_ShowString(30,150,210,16,16,buf);
                sprintf((char*)buf,"DHCP GW:%d.%d.%d.%d",lwipdev.gateway[0],lwipdev.gateway[1],lwipdev.gateway[2],lwipdev.gateway[3]);        //打印网关地址
                LCD_ShowString(30,170,210,16,16,buf);
                sprintf((char*)buf,"DHCP IP:%d.%d.%d.%d",lwipdev.netmask[0],lwipdev.netmask[1],lwipdev.netmask[2],lwipdev.netmask[3]);        //打印子网掩码地址
                LCD_ShowString(30,190,210,16,16,buf);
        }
        else
        {
                sprintf((char*)buf,"MAC      :%d.%d.%d.%d.%d.%d",lwipdev.mac[0],lwipdev.mac[1],lwipdev.mac[2],lwipdev.mac[3],lwipdev.mac[4],lwipdev.mac[5]);//打印MAC地址
                LCD_ShowString(30,130,210,16,16,buf);
                sprintf((char*)buf,"Static IP:%d.%d.%d.%d",lwipdev.ip[0],lwipdev.ip[1],lwipdev.ip[2],lwipdev.ip[3]);                                                //打印动态IP地址
                LCD_ShowString(30,150,210,16,16,buf);
                sprintf((char*)buf,"Static GW:%d.%d.%d.%d",lwipdev.gateway[0],lwipdev.gateway[1],lwipdev.gateway[2],lwipdev.gateway[3]);        //打印网关地址
                LCD_ShowString(30,170,210,16,16,buf);
                sprintf((char*)buf,"Static IP:%d.%d.%d.%d",lwipdev.netmask[0],lwipdev.netmask[1],lwipdev.netmask[2],lwipdev.netmask[3]);        //打印子网掩码地址
                LCD_ShowString(30,190,210,16,16,buf);
        }
}
int main(void)
{        
        u8 t;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
        delay_init(168);  //初始化延时函数
        uart_init(115200);                //初始化串口波特率为115200
        LED_Init();                                //初始化与LED连接的硬件接口
        KEY_Init();                                //按键
  LCD_Init();                                //初始化LCD
        W25QXX_Init();                        //SPI FLASH初始化
        usmart_dev.init(84);         //初始化USMART         
        my_mem_init(SRAMIN);                //初始化内部内存池
        //my_mem_init(SRAMEX);                //初始化外部内存池
        //my_mem_init(SRAMCCM);          //初始化CCM内存池
        exfuns_init();                        //为fatfs相关变量申请内存
        piclib_init();                        //初始化画图
          f_mount(fs[0],"0:",1);         //挂载SD卡  
          f_mount(fs[1],"1:",1);         //挂载SD卡  
          f_mount(fs[2],"2:",1);         //挂载U盘
        POINT_COLOR=RED;      
        while(font_init())                                 //检查字库
        {            
                LCD_ShowString(60,50,200,16,16,"Font Error!");
                delay_ms(200);                                  
                LCD_Fill(60,50,240,66,WHITE);//清除显示             
                delay_ms(200);                                  
        }
        Show_Str(30,50,200,16,"探索者STM32F407开发板",16,0);                                             
        Show_Str(30,70,200,16,"USB U盘实验",16,0);                                                     
        Show_Str(30,90,200,16,"2014年7月22日",16,0);                     
        Show_Str(30,110,200,16,"正点原子@ALIENTEK",16,0);
        Show_Str(30,140,200,16,"设备连接中...",16,0);
        delay_ms(2000);       
        LCD_Clear(WHITE);//清除显示                            
        LCD_ShowString(30,110,200,20,16,"LWIP Init Success!");
        LCD_ShowString(30,130,200,16,16,"DHCP IP configing...");  //等待DHCP获取
        delay_ms(2000);       
        LCD_Clear(WHITE);//清除显示                                    
#if LWIP_DHCP   //使用DHCP
        while((lwipdev.dhcpstatus!=2)&&(lwipdev.dhcpstatus!=0XFF))//等待DHCP获取成功/超时溢出
        {
                lwip_periodic_handle();        //LWIP内核需要定时处理的函数
        }
#endif
        show_address(lwipdev.dhcpstatus);        //显示地址信息
        //初始化USB主机
USBH_Init(&USB_OTG_Core,USB_OTG_FS_CORE_ID,&USB_Host,&USBH_MSC_cb,&USR_cb);  
        while(1)
        {
                lwip_periodic_handle();        //LWIP内核需要定时处理的函数
                USBH_Process(&USB_OTG_Core, &USB_Host);
                delay_ms(1);
                t++;
                if(t==200)
                {
                        LED0=!LED0;
                        t=0;
                }
        }       
}



















正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2021-7-28
在线时间
9 小时
 楼主| 发表于 2021-7-30 15:03:24 来自手机 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2021-7-31 02:26:22 | 显示全部楼层
帮顶
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 09:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表