Сообщение Re[18]: Rust и экология от 25.02.2022 7:03
Изменено 25.02.2022 7:14 ArtDenis
Re[18]: Rust и экология
Здравствуйте, alex_public, Вы писали:
_>Ну это дело вкуса уже. В любом случае думаю ты не будешь спорить, что приведённый пример просто в разы компактнее и проще, чем портянка генерируемая Кубом.
Думаю, это дело привычки. Куба нету, чтобы проверить )
_>Я с этим и не спорил (более того, именно это я и заявлял изначально). Только вот можно увидеть готовые библиотеки (скажем для STM32) на C++, написанные в подобном же современном стиле?
С этим проблема. Общей удобной либы нету. Когда-то давно была одна огромная либа монструозная либа на шаблонах, но я её сейчас даже не смог найти. Конкретно сейчас на гитхабе полно таких либ, но я не степени знаю их охвата, удобства и безглючности.
Но на то они и С++-ники, чтобы городить свой велосипед. У меня своя либа практически на всю периферию STM32 + набор шаблонов для разных устройств (экраны, память, радио, точскрины и т.п.), которые параметризуются шаблонами периферии.
Та же инициализация порта GPIOB у меня выглядит как
В целом использование либы выглядит примерно так:
_>Ну это дело вкуса уже. В любом случае думаю ты не будешь спорить, что приведённый пример просто в разы компактнее и проще, чем портянка генерируемая Кубом.
Думаю, это дело привычки. Куба нету, чтобы проверить )
_>Я с этим и не спорил (более того, именно это я и заявлял изначально). Только вот можно увидеть готовые библиотеки (скажем для STM32) на C++, написанные в подобном же современном стиле?
С этим проблема. Общей удобной либы нету. Когда-то давно была одна огромная либа монструозная либа на шаблонах, но я её сейчас даже не смог найти. Конкретно сейчас на гитхабе полно таких либ, но я не степени знаю их охвата, удобства и безглючности.
Но на то они и С++-ники, чтобы городить свой велосипед. У меня своя либа практически на всю периферию STM32 + набор шаблонов для разных устройств (экраны, память, радио, точскрины и т.п.), которые параметризуются шаблонами периферии.
Та же инициализация порта GPIOB у меня выглядит как
PC::clock_on();
В целом использование либы выглядит примерно так:
// Объявляем перифирию для подключения к дисплею
using DisplayCSPin = PA1;
using DisplayResetPin = PA2;
using DisplayDCPin = PA3;
using DisplayMisoPin = PA6;
using DisplaySckPin = PA5;
using DisplayMosiPin = PA7;
using DispSpi = Spi1;
using DispDma = Dma2_Stream2;
...
// далее идут уже другие либы (тоже шаблонные)
// тип подключения к дисплею
using DispSpiConn = mgfxpp::HardSpiDma6WireConnection<
DisplayResetPin,
DisplayCSPin,
DisplayDCPin,
DispSpi,
DispDma
>;
...
// тип дисплея
using Display = mgfxpp::ili9341_display<DispSpiConn, DelayForDisplay>;
// реализация дисплея - 16 бит, частичная отрисовка в буфер по 64 строки
MGFXPP_DISPLAY_PART_BUF_565_IMPL(Display, 64)
...
// тут инициализируем почти всю периферию, которая участвует в подключении кроме SPI. Его отдельно
DispSpiConn::init();
Re[18]: Rust и экология
Здравствуйте, alex_public, Вы писали:
_>Ну это дело вкуса уже. В любом случае думаю ты не будешь спорить, что приведённый пример просто в разы компактнее и проще, чем портянка генерируемая Кубом.
Думаю, это дело привычки. Куба нету, чтобы проверить )
_>Я с этим и не спорил (более того, именно это я и заявлял изначально). Только вот можно увидеть готовые библиотеки (скажем для STM32) на C++, написанные в подобном же современном стиле?
С этим проблема. Общей удобной либы нету. Когда-то давно была одна огромная либа монструозная либа на шаблонах, но я её сейчас даже не смог найти. Конкретно сейчас на гитхабе полно таких либ, но я не степени знаю их охвата, удобства и безглючности.
Но на то они и С++-ники, чтобы городить свой велосипед. У меня своя либа практически на всю периферию STM32 + набор шаблонов для разных устройств (экраны, память, радио, точскрины и т.п.), которые параметризуются шаблонами периферии.
Та же инициализация порта GPIOB у меня выглядит как
В целом использование либы выглядит примерно так:
_>Ну это дело вкуса уже. В любом случае думаю ты не будешь спорить, что приведённый пример просто в разы компактнее и проще, чем портянка генерируемая Кубом.
Думаю, это дело привычки. Куба нету, чтобы проверить )
_>Я с этим и не спорил (более того, именно это я и заявлял изначально). Только вот можно увидеть готовые библиотеки (скажем для STM32) на C++, написанные в подобном же современном стиле?
С этим проблема. Общей удобной либы нету. Когда-то давно была одна огромная либа монструозная либа на шаблонах, но я её сейчас даже не смог найти. Конкретно сейчас на гитхабе полно таких либ, но я не степени знаю их охвата, удобства и безглючности.
Но на то они и С++-ники, чтобы городить свой велосипед. У меня своя либа практически на всю периферию STM32 + набор шаблонов для разных устройств (экраны, память, радио, точскрины и т.п.), которые параметризуются шаблонами периферии.
Та же инициализация порта GPIOB у меня выглядит как
PB::clock_on();
В целом использование либы выглядит примерно так:
// Объявляем перифирию для подключения к дисплею
using DisplayCSPin = PA1;
using DisplayResetPin = PA2;
using DisplayDCPin = PA3;
using DisplayMisoPin = PA6;
using DisplaySckPin = PA5;
using DisplayMosiPin = PA7;
using DispSpi = Spi1;
using DispDma = Dma2_Stream2;
...
// далее идут уже другие либы (тоже шаблонные)
// тип подключения к дисплею
using DispSpiConn = mgfxpp::HardSpiDma6WireConnection<
DisplayResetPin,
DisplayCSPin,
DisplayDCPin,
DispSpi,
DispDma
>;
...
// тип дисплея
using Display = mgfxpp::ili9341_display<DispSpiConn, DelayForDisplay>;
// реализация дисплея - 16 бит, частичная отрисовка в буфер по 64 строки
MGFXPP_DISPLAY_PART_BUF_565_IMPL(Display, 64)
...
// тут инициализируем почти всю периферию, которая участвует в подключении кроме SPI. Его отдельно
DispSpiConn::init();