How to implement delay functions in Keil ARM MDK
The best approach IMHO is to have one hardware timer which is never written to but simply free-runs.  This will allow one to easily emulate an arbitrary of poll-able timers for durations up to half the length of the hardware timer.  To "start" a timer, simply compute the value of the hardware timer when it should expire.  To see if a timer has expired yet, subtract the expected expiration time from the current time (regarding both quantities as unsigned), and see if the (unsigned) result exceeds half the maximum timer value.  If so, the timer has not expired.

Alternatively, if one wants a timer for measuring time since a certain event occurred, one can simply latch the timer value when the event occurred, and later compute the difference between the latched value and the present time.