Ребят рассудите пожалуйста, Есть проект с несколькими камнями MSP430 и STM32F103 общающимися по uart. В STM работает ацп и uart а MSP430 принимает и выводит на дисплей и счелкает релюшками. Вишенкой на торте это то, что все это на плюсах и обильно так макросами полито. При этом всем мне доказывают что только так все делается ибо так правильно. Я человек не опытный но никак не пойму, ладно 32 битные микрухи дорогие но плюсы то зачем?

Комментарии: 28

  1. Anonim

    Шоб було

    • Andor

      "Потому что можем"?

      • Nikita

        Или я на С пишу и отсталый уже

        • Andor

          "Во-первых это красиво"

          • Nikita

            Где красиво?

            • Andor

              Вообще кресты в эмбедед не редкость

              • Artem

                переносимость на с++ лучше

                • Andor

                  Но за программирование еа шаблонах я бы убивал

                  • Artem

                    так за счет шаблонов и достигается переносимость. boost и stl на них стоят

                  • Shtolcman

                    Мне кажется, что шаблоны в МК - это уже перебор

                    • Anonim

                      neiver как то показывал ОЧЕНь годный код на шаблонах который в итоге компилируется в нечто ураганное. Я на ассемблере так не напишу.

                      • Shtolcman

                        А про что он был?

                        • Anonim

                          про порты

                    • Artem

                      А чем перебор то? Пишешь шаблонную функцию и без ппоблем скармливаешь ей данные любых типов. Хоть инты хоть флоаты, а оно разворачивается в нужный уод нв этапе компиляции. На камнях где памяти десятки и сотни килобайт паркуа бы и не па? Плюсы намного удобнее С в определенных случаях

                  • Nikita

                    мне сейчас достался проект где один только main 4561 строка, где используется только 200 включая объявления функций

                    • Artem

                      а какая разница? Это же все на этапе компиляции только имеет значение, дальше генериться объектный файлы, в которых никаким боком, никаких шаблонов нету.

                      • Nikita

                        а отлаживать код такой нужно отдельный софт писать?

                        • Artem

                          Ооо... чувствую там были всякие специализированные шаблоны и мета-программирования С отладочными сообщениями проблемы, согласен. Говорят комитет C++ уже думает ,как все это в более удобоворимый вид привести

                          • Nikita

                            ага scratch embded edition

  2. Anonim

    Классовое представление удобнее, легче дебажится, проще дорабатывается. Макросы не использую ибо хз зачем они нужны. Но это только в тгм случае, если требуется оперировать более чем одним объектом класса, в случае одиночного обрабоочика Си предостаточно.

    • Sergey

      только если делать не применяя моск, получится рантайм оверхед template class GPIOPin { inline static void Set() { GPIO()->BSRRL = 1 << P; } GPIOPin::Set() вот так например оверхеда 0 FUEL_SUPPLY1 GPIOPin FUEL_SUPPLY1::Set() class Timer { public: Timer() : is_set(false) { } inline bool IsExpired() { return (!is_set || (systick_t)(systick_counter - set_tick) >= interval); }; // Expired after construction inline void Set(systick_t t) { is_set = true; set_tick = systick_counter; interval = t; }; inline void Wait(systick_t t) { Set(t); while (!IsExpired()) asm volatile ("nop"); }; protected: bool is_set; systick_t set_tick; systick_t interval; }; template bool _try_until_timeout(T lambda, systick_t timeout) { Timer t; t.Set(timeout); while (!lambda()) { if (t.IsExpired()) { return false; } } return true; } #define try_until_timeout(X, timeout) _try_until_timeout([&]{ return X; }, timeout)

      • Anonim

        Хорошо, когда стм родил хал и пару макросов оперирования битами, которые можно скопипастить при необходимости А вот это бррр

      • Artem

        Классно, но ночью лучше не смотреть:D

      • Samuil

        Pastebin.com и кидай портянки кода туда а сюда ссылку

    • Artem

      Есть один момент. Классы и вся эта приплюснутая штука она больше месте занимает нежели сишная. И она тормазнутее.

      • Ilya

        Есть статья на Хабре, нет различий особых

        • Andrew

          можно не использовать виртуальные сущности в критических местах

      • Anonim

        По моему опыту при должном подходе все работает столь же быстро и занимает столько же места, что и сишное, но при этом не выглядит как чебурек

Не нашли ответ?

Вам также может быть интересно

особого желания сотрудничать нет с другими мастерами так как знаю что от них выгоды никакой поэтому всех послал накуй Если... Читать далее

Ребят подскажите, айфон 6 не сразабывает переключатель блокировки, естественно его менял, если включить асасив тач то вибро... Читать далее