Personally, I haven't. But I am interested in writing USB-programmes as well. A very good place to start is usb.org. It is the official website for the USB-interface and provides many useful information and documentation.
If you have you first successful code, please let me know.
I worked with Microchip USB controllers and from my own experience better to write your own code then use their libraries. More reliable, less memory consumption (at least concerning USB), because their libraries AS IS. But time consuming that’s right.