Hardware interrupts cause hardware action regardless of the state of the scheduler. So, the system will vector to the interrupt handler. What happens after that is a matter of code. It could be a device like a USART and the vector is for data received. The interrupt service routine will grab the character, probably put it in a circular buffer (queue) and set a semaphore. When the interrupt handler is done, it will notify the scheduler to potentially switch contexts depending, of course, on priority. It could be that some task is waiting on the semaphore for data available and, again, depending on priority, that task will get dispatched. At the least, it is on the pending list.
The scheduler tick is usually around 1 ms not 20.
FreeRTOS has a lot of documentation and is pretty much the standard in the industry at this point:
https://www.freertos.org/Documentation/RTOS_book.htmlMANY development boards/tools (STM, PSOC, etc) come with FreeRTOS examples.