Я пошел путем дефайнов. Обозначаю каждому пину свое имя и состояние, а ему уже соотношу обращение к пинам порта. Однако, как было выложено здесь же, получается обработка такая выльется в хренову тучу ассемблерных конструкций, ибо все пины по отдельности ставятся и снимаются...
Типа такого:
Код: Выделить всё
# define _1_Stroka_ON GPIOA->BSRR |= (GPIO_BSRR_BS11);
# define _1_Stroka_OFF GPIOA->BSRR |= (GPIO_BSRR_BR11);
И все в таком же духе. Будет работать или нет, не знаю еще.
И не знаю как сам порт теперь обозвать, точнее, что ему присвоить.
Код: Выделить всё
# define _KeyPORT_Stroki ?????
# define _KeyPORT_Stolbi ?????
Добавлено after 6 minutes 24 seconds:
А вообще, зачем их называть, если я уже и так все сделал?! Чет не догоняю, чего сам напихал.
Добавлено after 2 minutes 10 seconds:
Все. Догнал. Надо не так, а вот так примерно:
Код: Выделить всё
# define _1_Stroka_ON GPIO_BSRR_BS11;
# define _1_Stroka_OFF GPIO_BSRR_BR11;
# define _2_Stroka_ON GPIO_BSRR_BS10;
# define _2_Stroka_OFF GPIO_BSRR_BR10;
# define _KeyPORT_Stroki GPIOA->BSRR;
# define _KeyPORT_Stolbi GPIOD->BSRR;
Добавлено after 8 minutes 39 seconds:
И, по моему, первый вариант лучше, т.к. он действительно позволяет назначать любые пины любых портов, а второй способ все же собирает в пару портов эти пины...
Добавлено after 37 minutes 7 seconds:
Почему я эту конструкцию не могу сразу затащить как условие в if?
Код: Выделить всё
# define _1_Stolb_Read (GPIOB->IDR & GPIO_IDR_IDR15);
Не работает. Но зато могу это присвоить переменной...