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));