How to use CMSIS to set up bidirectional Port on STM32F4
As long as you specify different pins in the GPIO_Typedef structure, you can run GPIO_Init as many times as you like without un-doing the other inits. You can group all the inputs (or outputs) together and bitwise OR the pin designations (such as GPIO_Pin_0 | GPIO_Pin_1), or you can do them all separately, calling GPIO_Init for each one.

Don't forget to enable the GPIO AHB clock using: RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx, ENABLE);
before configuring the pins.