Hi @tj_78,
I think your basic understanding for functional groups is correct. You can read the select pin and depending on that, initialize the others. For example, initialize your select pin (PTC16) and read it. If it is pressed, initialize the pins with your first functional group, otherwise, initialize it with your second functional group:
Siul2_Port_Ip_Init(NUM_OF_CONFIGURED_PINS_PortContainer_0_BOARD_InitPeripherals, g_pin_mux_InitConfigArr_PortContainer_0_BOARD_InitPeripherals);
/* Wait for the button SW0 to be pressed */
if(Siul2_Dio_Ip_ReadPin(PIN_SELECT_PORT, PIN_SELECT_PIN) == 1)
{
/* Wait the button SW0 to be released... */
while(Siul2_Dio_Ip_ReadPin(PIN_SELECT_PORT, PIN_SELECT_PIN) == 1){}
/* Initialize eIRQ & GPIO */
Siul2_Port_Ip_Init(NUM_OF_CONFIGURED_PINS_PortContainer_0_BOARD_InitPeripherals_1, g_pin_mux_InitConfigArr_PortContainer_0_BOARD_InitPeripherals_1);
}
else
{
/* Button not pressed; initialize UART */
Siul2_Port_Ip_Init(NUM_OF_CONFIGURED_PINS_PortContainer_0_BOARD_InitPeripherals_2, g_pin_mux_InitConfigArr_PortContainer_0_BOARD_InitPeripherals_2);
}
However, in the Siul2_Port container for drivers, you must also separate the functional groups for each group in the "Pins" view:

Please try to change this in your project, as I can see you have the three groups in one Port instance.
Best regards,
Julián