Finding timestamps of CAN messages received by a microcontroller
I never worked with STM32F4 but like most of other controllers with CAN, it has timestamp register. I checked in this reference manual, this one has a register

Check out CAN_RDTxR. It has timestamp field. 
Description says, 


  This field contains the 16-bit timer value captured at the SOF
  detection.


You might want to use this in-built feature instead of using your own timers etc.

(P.S. I would strongly recomment you to use FIFO, if you are not using them!)