You should not have a while(1) in your interrupt handler. That causes the code to stay in the interrupt handler forever, so no other interrupts are ever processed.
What you should do in your timer interrupt is check for inputs from your peripheral devices once, then return. The next time the timer fires, you will check again.