Microcontrollers can measure their own frequency stability, if provided with a stable external clock.
Divide the Rb 10 MHz standard down to a rate you're happy to get samples at. For your 1 ms - 10 s request, say 1 kHz, to create a slow, accurate clock.
(One solution: the PD4 from leapsecond.com. Code is on the website).
You may also be able to use an on-board externally clocked counter to achieve a 10 MHz / 256 interrupt rate.
Feed it to an interrupt pin of the uC under test.
Write a short program using a free running timer to print the elapsed time at each rising edge of the slow clock. Zero dead time. Occasional counter wraps but you can manage those in post-processing.
Record the serial output on a PC.
Clean up and plot phase, frequency error, and finally process for Adev, using stable32 (free), timelab (free) or one of the python libraries.
Watch out for garbage in garbage out - if your uC is detecting ghost pulses because it's on a breadboard, or your PC is dropping data, it won't be obviously visible on the Adev, it'll just be wrong. So you need to methodically clean up the data first, inspect for missing and spurious points, for phase jumps, for frequency sanity, and then process deeper.