В целом вам нужно понять, сколько времени занимает каждая часть вашей программы.Это довольно легко измерить на практике в реальном времени с помощью осциллографа.Если вы активируете GPIO при входе и деактивируете его при выходе из прерывания, вы не только узнаете, сколько времени потребляет ISR, но и как часто он срабатывает. Если вы делаете это для каждого ISR, вы получаетехорошая идея, сколько времени им нужно.Затем вы можете сделать что-то похожее в main (), чтобы получить приблизительную оценку полного цикла выполнения программы, main + прерывания.
Что касается лучшего решения, очевидно, что нужно уменьшить количество прерываний.,Используйте опрос, если это возможно.Используйте DMA.Используйте последовательные периферийные устройства (UART, CAN и т. Д.) С аппаратной буферизацией, а не с интенсивными прерываниями.Используйте аппаратный ШИМ вместо выходных таймеров сравнения.И так далее.Эти вещи нужно учитывать на ранней стадии, когда вы выбираете подходящий MCU для вашего проекта.Если вы выбрали неправильный MCU, то вам, очевидно, придется измениться.Вращение с часами процессора звучит как быстрое и грязное исправление.Получите правильный дизайн вместо этого.