2.7 1828 1828 45 90 45 2 353 60287471352
Легко запомнить как 2.7 1828 1828 45 90 45 - громадная точность. Хотя и не особо нужная. Но легкозапоминаемая. Но ненужная. Наверное
Пришел поручик Ржевский и всё опошлилDemiurg писал(а): Ср июн 24, 2026 08:50:04 . Я хотел создать конструктивную тему. Ты пришел все обкакал?
А почему? Новизны - да, ноль, но актуальность... Кроме риска переопределения вроде беды иной не видно, да и можно предупреждения этому включить. В отличие от высокоуровневого HAL банальный "ногодрыг" на прямой работе с регистрами быстрее. Визуально выглядит проще инлайна.Rapra писал(а): Ср июн 24, 2026 19:17:37 Тема макросов в работе с пинами - это морально устаревшая тема, потерявшая свою актуальность
Тогда попробуйте С++Zapolyarny писал(а): Ср июн 24, 2026 19:40:05 В отличие от высокоуровневого HAL банальный "ногодрыг" на прямой работе с регистрами быстрее. Визуально выглядит проще инлайна.
Да, да, конечно. Начинающие не используют, а матёрые так вовсю. Плюсы же. Ничто не мешает использовать во весь рост! Иной раз так накрутят, что волосы дыбом.Rapra писал(а): Чт июн 25, 2026 06:07:11Просто в скетчах обычно никто не пользуется плюшками языка...
Если говорить про ядро и официальные либы, то там ограничение на минимум С++11, после которого уже 5 новых стандартов выходило. А если это что-то любительское, то откуда там матерые программисты возьмутся? Матерые ардуино обычно не используют.OKF писал(а): Чт июн 25, 2026 11:52:31Да, да, конечно. Начинающие не используют, а матёрые так вовсю. Плюсы же. Ничто не мешает использовать во весь рост!
Ну, с дуру то можно и член сломать. Любая крайность нежелательна.
Попробовал на днях. Мне не понравилось. Казалось бы, чем меньше у человека опыта - тем больше надо давать ему информации, чтобы видел, как, что, где, куда. А она как чёрный ящик. Потом полез в Adafruit-ную библиотеку работы с дисплеями. Все же хвалят, какая она классная. Хотел опыт перенять. Ну, после неё перестал себя считать худшим программистом в мире
Как сложно и заморочено в СИ. Для простого порта – макросы, шаблоны, маски, классы, методы.Rapra писал(а): Ср июн 24, 2026 23:48:52 Тогда попробуйте С++GpioA::Pin5::Set(); или pa5::Set(); или даже pa5 = 1; занимает столько же инструкций, сколько прямое GPIOA->BSRR = 1 << 5;
Секрет - в шаблонном классе Gpio, параметр шаблона которого указывает на букву имени порта и через нее на базовый адрес регистров порта. Вложенный в Gpio класс Pin тоже является шаблонным, параметр шаблона - номер пина...
AQ29 писал(а): Пт июл 31, 2026 22:06:30Скажем, ваш пример установки 5 бита порта А можно записать 3 способами: PORTA5 = 1; PORTA.5 = 1 или SBI PORTA, 5.
PORTA5 – встроенная битовая переменная, последняя запись – ассемблерная команда.
Эти записи, на мой взгляд, проще и нагляднее, чем на СИ.
Код: Выделить всё
PA0 led1;
PB2 led2;
PA5 led3;
led1 = 1;
// sbi VPORTA_OUT, 0
(led1 | led2 | led3).set();
// ldi r24, 0x21
// sts PORTA_OUTSET, r24
// sbi VPORTB_OUT, 2