Enabling/disabling a PID loop via FSM in a microcontroller
As Chris says, there's not enough information to give a concise answer.
Your 'pid loop' - more correctly your 'pid controller' could be running 1 million times per second or only once per second. Then there's the timing criticality of it - does it need to run in the timer isr? If the processing varies +/- 100us is that an issue?
Then there's the FSM. FSM is just a concept - it depends on your actual implementation. It might take 1us to execute or 10seconds.
So what technique you use to solve you problem depends on your constraints - time, processing, code size etc. The more operations you pour into your timer isr, the more is stolen from the mainline code and other interrupt sources. As well, you can't have 1.5ms of operations in a 1ms timer tick - you can try, but the outcome won't be favourable.
Determine your constraints - be it requirements or measuring execution time etc and let the numbers guide you.
The outcome might dictate a certain strategy, or it might be that you can choose an number of different strategies each with much the same outcome. No problem is the same - if they were, then we wouldn't need engineers.