On the STM32 platform, usually the pins are divided between 5V tolerant and non-5V tolerant. So you have to reference the documentation to confirm each pin that you want to connect that way. You can't just say, "the GPIO pins".
Also, tolerance is not sufficient to guarantee operation. You have to assure proper logic level thresholds as well.
3.3V could only go to pull up resistors. Pull down resistors must be connected to ground.
Also you would not normally see smoke from a cross-supply problem. You would see weird intermittent failures and/or passing tests until it gets into a field installation and fails.