Firmware only runs when I press the reset button
As you have discovered, this is a power-up issue. The 3.3V rail is taking too long to come up to full voltage.

There are two main problems causing this delay:


Your power is being converted three times: Vin -> 7V -> 5V -> 3.3V. Each converter takes some time to initialize, and these times add up.
There is a lot of capacitance on your power rails: 200uF on Vin, over 400uF on the 7V rail, and more than 1100uF on 5V. These take a long time to charge.


Ideally, you would derive each voltage directly from Vin. Not only will it improve the power timing, it will also be much more efficient. If we assume that each conversion is 90% efficient, then your existing method gives (0.9 * 0.9 * 0.9) = 72.9% efficiency on the 3.3V rail.

Without changing your PCB, the only real solution is to minimize these capacitances. You'll probably have to change L2 at the same time. This may not work for your circuit; only you know your design constraints.

Good luck!