Комментарии 8
Такой подход удобен с точки зрения чистого программиста. Но с точки зрения программиста-схемотехника это не очень практично. Не во всех случаях это облегчит переназначение пинов или миграцию на другой микроконтроллер.
GPIO настолько тривиально, зачем это всё? :) Про обработку прерываний от GPIO кстати здесь вроде как вообще ничего.
Прерывания немного выходят за рамки "групповых операций с GPIO".
Тогда почему, применительно к ВГ015, не задействуется "механизм маскирования"?
Он менее удобен, чем CLEAR/SET регистры.
А Вы вообще в курсе, что механизм маскирования может одновременно и сбрасывать, и устанавливать биты? :) Всего одной операцией записи.
А Вы вообще в курсе, что механизм маскирования разделяет порт на две половины - младшие 8 пинов и старшие 8 пинов. И выбор в какой из из двух, или ода сразу, регистров маски писать, обходится от 3 до 6 тактов на каждый используемый порт дороже чем безусловная запись CLEAR/SET регистров:)
Но если использовать маскирование и constexpr группу, которая не пересекает половину порта, то да, можно сэкономить один такт :))

Динамические списки GPIO-линий: пакетные операции с группами выводов на современном C++