Getting Clock/Time information from PC to an STM32F4
I think microsecond, or even 10 microsecond accuracy between host PC and a microcontroller over USB will be very hard.

Even with a program running on the host PC with access to a 1µs accurate clock, there is no guarantee when your program will be able to write down the USB port to the STM32F4. It could easily be 250µs or more after the host program gets the time before the STM32F4 receives the time.

So you are going to have to implement an algorithm which works out the errors, and corrects them. 

There is an internet Network Time Protocol (NTP) which uses an algorithm to synchronise time, but is only accurate to milliseconds.

There is also the Precision Time Protocol (PTP) which aims for microsecond precision, so this is the one to understand.

As you want to do all of this in software, you'll need to find an implementation which is understandable enough that you can extract the portions you need.

I searched the web for "Precision Time Protocol over USB" and found a bunch of potentially useful articles and application notes. I suggest you look at them and come back with specific questions.

I would be surprised if you find any implementations of PTP for STM32.

An alternative approach might be to use GPS time signals. With a GPS attached to the PC, and another to the STM32F4, you may be able to measure how far from GPS the host PC, based on a shred time base.