Кода будут пины из разных портов, (PORTA, PORTB) - у Вас с этими всеми массивами и дефайнами начнется платформозависимый мрак.
А я в то время просто напишу:
Код
#define LED1_pin GpioPin<'А',5> // этот пин GPIOA.5
#define LED2_pin GpioPin<'B',7> // а этот GPIOB.7
...
IGpioPin_T<LED1_pin> LED1_pin_rt;
IGpioPin_T<LED2_pin> LED2_pin_rt;
//...
IGpioPin* const array[xxx] = {&LED1_pin_rt, &LED2_pin_rt, &LED3_pin_rt,...};
void f(){
for(int i=0; i<sizeof(array)/sizeof(array[0]); i++)array[i]->set();
}
И то, это довольно длинный код, я обычно делаю гораздо короче. Просто привел, чтобы сама суть была понятна.