The "inner clock" is the on-board oscillator supplied with many MCU's, and its frequency may not be accurate or stable enough to produce a trusty pulse generator.
In order to do that, an external timing source (crystal, crystal oscillator, atomic frequency standard, etc.) with the required accuracy and stability can be used, and the desired pulse period and frequency/repetition rate obtained through the manipulation of the MCU via software.
For example, assume that you want to use an MCU which can support a 10MHz external clock, sports single-clock instruction execution cycles, that you're working in assembler, and that you want to generate a pulse 1 microsecond wide with a 100kHz rep rate.
In order to do that, you'd load one register with a numerical value corresponding to the output pulse width you wanted, another with the delay required between the falling edge of the pulse and the leading edge of the next pulse, and then you'd count them both down, sequentially, using the external clock source, until they were both empty.
That would give you one cycle of the desired output, and when both counters decremented to zero you'd load them both up again and start over.
A caveat here is that the load, decrement, compare, jump, and I/O instructions (in fact, all of the instructions) take time to execute, so these times must all be accounted for when loading the counters with the pulse width and rep-rate values in order to have the pulses come out right.
The possibility also exists that you may be able to use the MCU's internal hardware timers to do the job; YMMV.