VladislavS писал(а):пример с std::size(pins) приводил.
size() - функция компилятора, после компиляции это будет какое-то число.
size(pins) != size(pin_ns)/size(port_pin)
size(pins) - выдаст количество байт в массиве.
size(pin_ns)/size(port_pin) - выдаст, скажем так, количество строк.
Reflector писал(а):По коду... Указатель - 4 байта, 8 пинов - 1 байт, итого 5
Структуру я поменял
Спойлер
Код: Выделить всё
typedef struct{
volatile uint32_t * port;
uint16_t or;
} port_pin;
uint16_t определяет количество пинов в порту, а их 16 всего, 0-15.
Итого, по карте памяти, указатель 4 байта, 2 байта на порт, + выравнивание 2 байта, и того 8 байт.
Да же не в этом суть, это частный случай,
максимум что я буду иметь - это 20 выводной корпус F030, ну может быть F042,
а там 3 пина питание 2 еще куда-то, 2 может на кварц, и того - ни чего не остается.
У вы, паяльником, чем тазы паяют, 60 выводной корпус, да еще в добавок с таким мелким шагом и не в маем возрасте - это не запаяешь. Да еще и плату надо изготовить.
Уже давно почти все цепляют то по spi то по i2c, а делать на этих чипах какой-то "видео-регистратор" с 60 фпс на параллельном интерфейсе - ну не знаю. Проще, по моему, купить готовый, дешевле выйдет во много раз.
Если вы хотите преподнести С++ преподносите в каком нибудь другом формате, а подергать одним выводом, поморгать светодиодом, и для этого что? городить целый класс?
Проще скачать с инета готовую библиотеку и там уже разбираться.