Precise low power millisecond timer
There are many microcontrollers available that can support the wake up function you desire right within the part. Here is what you want to look for when searching for a suitable part:


Look for a part that supports a low power sleep mode.
Evaluate the data sheet to assure that the current draw of this microcontroller in the Sleep state is at or below your target max current requirement.
Make sure that the microcontroller has a programmable timer that can remain running in the sleep mode.
Check that the way of exiting the sleep mode back to active mode (i.e. the wake up) can be triggered from the programmable timer. This could be an interrupt mechanism or a soft reset of the microcontroller depending on various types.
Check that the microcontroller clocking source is running in the sleep mode.
Make sure it is possible to configure the programmable timer with an appropriate prescaler to permit the timer to operate with steps of 1msec using the microcontroller clock that stays running in the sleep mode.
Lastly verify the tolerance and stability of the frequency source that generates the timer operating clock to ensure it meets your accuracy requirements.


Once you have found your ideal microcontroller you just need to add the necessary software to program the timer to the desired sleep interval to trigger after the number of milliseconds and then program the microcontroller into the sleep mode. Once the interval has passed the microcontroller will wake back up and resume executing code. Details of how that wake up code works will be dependent on your selected microcontroller and what you need the software to do.