LPCWare 提供的LPC11U USB stack是用keil和IAR编译的,如今要使用gcc编译须要修改,目前已经在gcc下编译经过,HID设备能够枚举成功。性能
移植:ui
主要描述符结构体的单字节对齐,keil和GCC方式不同,所以须要修改:spa
GCC不支持左值强制类型运算(这点不敢确定)调试
GCC没法作对齐强制类型,如下为keil的方式,GCC下作相似动做是不生效的,问题描述里详细介绍it
调试过程遇到几个问题以下:io
usb cable链接后无反应,无中断产生编译
缘由:没有初始化USB PLL
解决:在SystemInit时初始化USB PLLgcc
usb cable链接后,当USB device设置地址后,就发生device resetgc
缘由: USB cable power不足,我是链接在usb hub上的
解决: 直接连电脑
USB setup过程时,发生HardFault:nio
缘由: GCC没法作对齐强制类型: *((__attribute__ ((packed)) uint32_t *)pData) = *((__attribute__ ((packed)) uint32_t *)dataptr); 当pData或者dataptr的地址不是4对齐(uint32_t对齐),就会发生HardFault,Keil经过属性能在编译过程当中处理该问题,GCC没找到相似的方法,那位知道请mail我一下 解决:修改成memcpy(pData, dataptr, sizeof(uint32_t));