Вместо того, чтобы парить в облаках и "делать шедевры" и раздавать советы новичка-новичкам на ютубе, нужно сидеть, писать код и разбираться во всех тонкостях и не мечтать сделать своего убийцу "название игры".
У этого парня плохая репутация на том же gamedev.ru не просто так.
UPD: в ARM есть регистры установки, сброса и записи значений GPIO, там операции |= и &= избыточны
BSRR и BRR. Причём через BSRR также можно сбрасывать состояние (через старшие разряды). И в мануале советуют работать через эти два регистра (производительнее, ибо ODR там как-то связан с прерыванием, в отличии от этих двух).
Arduino IDE хотя-бы бесплатная, хоть и похожа больше на примитивнейший текстовый редактор. А Keil uVision IDE продаётся за бешенные деньги (не считая Lite-версии), но при этом дико баганутая и не доработанная.
Мне и C++03 неудобный, ибо я начинал программировать сразу на С++11, с использованием большинства нововведений. И код на чистом С мне не приходилось писать вообще никогда.
А под МК я писал только по учебе в универе.
я кучу в своей обёртке использовал (не более 1,5 кб, при доступных 20кб). И std::array мне не был доступен, ибо с компилятором, с поддержкой С++14 я не стал разбираться дальше и продолжил писать на С++03.
Во второй половине 2017-ого года в ВУЗе был курс по микроконтроллерам. Преподаватель давал задачи решать на С, да и все одногруппники. Но я, человек, привыкший к С++ и ООП поколупавшись в Keil, взял и начал писать на С++. Набросал небольшую библиотеку на классах под CMSIS и понеслась))) Работали мы с STM32F103C8. Писали на Keil 4, где был стандарт С++03, что было для меня дико неудобным. В итоге притащил в универ Keil 5 (в последней версии добавили компилятор ARM Compiler с поддержкой С++14), помудрил с либой CMSIS под наш МК, в итоге скомпилировал проект со своей либой, но на МК не завелось нормально (и не было времени разбираться с этим).
Так вот, к чему я веду, С++ стараются внедрить в область разработки под МК, да и это безусловно удобнее, чем писать на чистом С.
Но вот заинклюдив тот же программа на МК уже не влезала… (На STM32F103C8 64Kb под программу).
Прежде чем хвататься за оптимизации, для начала посмотрите код теста на С++.
Да и сам автор писал, что замеры не достаточно объективны.
Плюс, насколько я понимаю, время считается и с учетом ввода/вывода данных.
P.s. я в Rust вообще не разбираюсь, но мне кажется, что тут что-то не чисто)
И первое, что я бы сделал, так это бы выбросил ввод/вывод.
Хотелось бы высказаться наконец о ваших статьях.
Я понимаю, что надо продвигать продукт в массы, получить выгоду от написания анализатора и т.д. и т.п.
Но у меня уже давным давно складывается впечатление, что PVS меня преследует. На хабре постоянно какие-то новые статьи про PVS, в новостях в вк то же самое. И статьи уж очень сильно пытаются навязать сей чудо-инструмент.
Я согласен, PVS — это великолепнейший анализатор, очень удобный, полезный и производительный. Сам я единожды его опробовал и был приятно удивлен его величием и удобством)
Но вот количество статей и манера подачи инструмента меня лично напрягает.
Еще раз повторюсь, я понимаю, что продукт надо продвигать, но мне кажется, что продвижение слишком навязчивое.
Я никого не хотел обидеть, обвинить в чем-то, PVS действительно могучее средство и отличный помощник для разработчиков)
Вместо того, чтобы парить в облаках и "делать шедевры" и раздавать советы новичка-новичкам на ютубе, нужно сидеть, писать код и разбираться во всех тонкостях и не мечтать сделать своего убийцу "название игры".
У этого парня плохая репутация на том же gamedev.ru не просто так.
Вот тоже дико удивило наличие слова "Dropbox", вместо "Git" :)
и это давало возможность писать алгоритмы, принимающие в качестве входных данных структуры, содержащие настройки пинов. Вообщем, удобно и гибко.
L — сброс пина
H — установить единицу на пине
BRR также 32 бита, но имеет вид 0b0000000000000000LLLLLLLLLLLLLLLL
0 — значит «не используется»
BSRR и BRR. Причём через BSRR также можно сбрасывать состояние (через старшие разряды). И в мануале советуют работать через эти два регистра (производительнее, ибо ODR там как-то связан с прерыванием, в отличии от этих двух).
Или вы не о том?)
Мне и C++03 неудобный, ибо я начинал программировать сразу на С++11, с использованием большинства нововведений. И код на чистом С мне не приходилось писать вообще никогда.
А под МК я писал только по учебе в универе.
Так вот, к чему я веду, С++ стараются внедрить в область разработки под МК, да и это безусловно удобнее, чем писать на чистом С.
Но вот заинклюдив тот же программа на МК уже не влезала… (На STM32F103C8 64Kb под программу).
Автор, спасибо за вторую порцию тестов!
Согласен. Когда-то экспериментировал с чтением файла 8мб размером:
Прежде чем хвататься за оптимизации, для начала посмотрите код теста на С++.
Да и сам автор писал, что замеры не достаточно объективны.
Плюс, насколько я понимаю, время считается и с учетом ввода/вывода данных.
P.s. я в Rust вообще не разбираюсь, но мне кажется, что тут что-то не чисто)
И первое, что я бы сделал, так это бы выбросил ввод/вывод.
Хотелось бы высказаться наконец о ваших статьях.
Я понимаю, что надо продвигать продукт в массы, получить выгоду от написания анализатора и т.д. и т.п.
Но у меня уже давным давно складывается впечатление, что PVS меня преследует. На хабре постоянно какие-то новые статьи про PVS, в новостях в вк то же самое. И статьи уж очень сильно пытаются навязать сей чудо-инструмент.
Я согласен, PVS — это великолепнейший анализатор, очень удобный, полезный и производительный. Сам я единожды его опробовал и был приятно удивлен его величием и удобством)
Но вот количество статей и манера подачи инструмента меня лично напрягает.
Еще раз повторюсь, я понимаю, что продукт надо продвигать, но мне кажется, что продвижение слишком навязчивое.
Я никого не хотел обидеть, обвинить в чем-то, PVS действительно могучее средство и отличный помощник для разработчиков)