можно так: sheduler(); enable_systick_irq(); while(1) { ; } Вообще, по моим раздумьям, там всё сложнее: когда попадаем в прерывание, то первый раз мы попадаем из цикла main(); следующий вопрос - а состояние этой задачи нам вообще надо?
1) да - можно делать что-то полезное, но не нравится тем, что это особая, не внесённая в очередь задача.
2) нет - ну и зачем тогда её сохранять? Надо просто передать управление планировщику, а он уже поставить какую-то из задач на выполнение.