Size: a a a

Maxwell's Demons

2021 March 30

RS

Roman Storozhenko in Maxwell's Demons
Роман Матвеев
Напомните, пожалуйста, как правильно использовать регистр BSRR в STM32 для управление GPIO. Так?
PinPort->BSRR = PinNumber // PinNumber - число вида 1<<n
в RM написано
источник

RS

Roman Storozhenko in Maxwell's Demons
Роман Матвеев
Напомните, пожалуйста, как правильно использовать регистр BSRR в STM32 для управление GPIO. Так?
PinPort->BSRR = PinNumber // PinNumber - число вида 1<<n
Еще неймингом проблемы, PinNumber это от 0 до 15, PinMask это от 1«0 до 1«15
источник

РМ

Роман Матвеев... in Maxwell's Demons
Roman Storozhenko
Еще неймингом проблемы, PinNumber это от 0 до 15, PinMask это от 1«0 до 1«15
Да, "маска", конечно, более уместное, чем "номер". Согласен
источник

TK

Timur Khasanshin in Maxwell's Demons
А чтоб стирать надо на +16 прибавить к сдвигу
источник

RS

Roman Storozhenko in Maxwell's Demons
Роман Матвеев
Напомните, пожалуйста, как правильно использовать регистр BSRR в STM32 для управление GPIO. Так?
PinPort->BSRR = PinNumber // PinNumber - число вида 1<<n
Еще, лучше не делать такого в user space а вынести куда-то, написать ф-ю, макрос или иначе спрятать
источник

РМ

Роман Матвеев... in Maxwell's Demons
Roman Storozhenko
Еще, лучше не делать такого в user space а вынести куда-то, написать ф-ю, макрос или иначе спрятать
Почему? Чем плох такой подход?
источник

VK

Valentin Kornienko in Maxwell's Demons
Роман Матвеев
Почему? Чем плох такой подход?
Размазыванием логики в приложении.
источник

VK

Valentin Kornienko in Maxwell's Demons
Если одна функция умеет и GPIO порты в регистры совать и одновременно с этим что-то еще- значит тут что-то не так
источник

RS

Roman Storozhenko in Maxwell's Demons
Роман Матвеев
Почему? Чем плох такой подход?
Должно соблюдаться четкое разделение уровней абстракций.
User space вообще ничего не должен подозревать о существовании регистров периферии а только лишь вызывать нужные API драйверов.
источник

RS

Roman Storozhenko in Maxwell's Demons
В противном случае ПО становится тяжелее отлажывать, тестировать, переносить на новую платформу, одним словом - некачественным
источник

X

Ximen in Maxwell's Demons
Roman Storozhenko
Должно соблюдаться четкое разделение уровней абстракций.
User space вообще ничего не должен подозревать о существовании регистров периферии а только лишь вызывать нужные API драйверов.
Так это сначала надо посмотреть, какие у него уровни абстракций. Может и нормально.
источник

РМ

Роман Матвеев... in Maxwell's Demons
Сейчас это просто ногодрыг. Проверяю скорость работы DAC-а. Всего 4 строчки.
А как называется этот подход с разделением логики на уровни абстракции? Почитаю что-нибудь на этот счет
источник

TK

Timur Khasanshin in Maxwell's Demons
Здравый
источник

VK

Valentin Kornienko in Maxwell's Demons
Роман Матвеев
Сейчас это просто ногодрыг. Проверяю скорость работы DAC-а. Всего 4 строчки.
А как называется этот подход с разделением логики на уровни абстракции? Почитаю что-нибудь на этот счет
Проектирование архитектуры.
читать:
https://refactoring.guru/ru
Банда четырех
Modern C++ Design Patterns
https://alex-robenko.gitbook.io/bare_metal_cpp/
источник

РМ

Роман Матвеев... in Maxwell's Demons
спасибо!
источник

VK

Valentin Kornienko in Maxwell's Demons
Еще советую погуглить на тему использования compile-time design patterns, когда вы во время компиляции можете все разрешить фактически.
источник

VK

Valentin Kornienko in Maxwell's Demons
источник

RS

Roman Storozhenko in Maxwell's Demons
Тема хорошая но нахер ненужная в мире Си

Для си лучше искать другое
источник

VK

Valentin Kornienko in Maxwell's Demons
Roman Storozhenko
Тема хорошая но нахер ненужная в мире Си

Для си лучше искать другое
Ну, в Сях так-то никто не запрещает их использовать нормально.
источник

TK

Timur Khasanshin in Maxwell's Demons
В си вместо объектов будут структуры или файлы
источник