Инициализация массива структур в C

Вы не поняли, ничего соединять не надо.
Речь о том, чтобы создать файл с инициализацией типа

не вручную, а каким-нибудь скриптом - питоном например, который вы знаете

отсортировать массив в 2000 элементов на СТМ32 с тактовой 72МГц - единицы миллисекунд. Ты придумываешь сложности там, где их нет.


100500 раз писали новичкам - ОПИСЫВАЙТЕ ВАШУ ЗАДАЧУ, матьиво!!!
Я уже вижу, что в массиве строки, значит обработка чего-то-там в прерывании, с вероятностью 99%, лажа. Просто потому, что любая экономия времени разобъется об обработку строк. Значит уже то, что ты пытаешься сэкономить ровно 1 миллисекунду на расположении элементов в массиве - бредятина.
Повторю - поиск в массиве на 2000 элементов целого числа на 72МГц камне это МАКСИМУМ 2000 операций сравнение+ переход. Сравнение 1 так переход два. Итого 6000 тактов. Меньше 100 микросекунд. 100, матьево, микросекунд, ради которых ты пишешь на форуме ерунду! 100, Карл!!! (с) :wink:

2 лайка

Влад, не кипятись.
На мой взгляд проект обработки массива указателей 2х тыс строк новичком - уже лажа по определению :slight_smile: У новичков вечно тяга к мегаломании :slight_smile:

Но от этого можно отвлечься и обсуждать как будто это все всерьез.

и точно!
В окно смотрю - белки по соснам прыгают. Уже в серое переоделись. … нужно видеть красоту мира! :wink: :wink:

1 лайк

не совсем. У наших хвосты пока рыжие, тело пепельное.

у нас на работе парк на территории… с белками…

тут так же. Сама серая, а хвост рыжий.

Я вроде сказал , что в прерывании идет обработка uint32_t. Если по вашему это подразумевает работу со строками то я х.з.

я действительно много не знаю, но меня напрягает что stm при запуске тратит более 0.5секунды до попадания в главный цикл. И я не знаю, от куда ноги растут.

загрузчик?
какая плата то, blue pill?

значит еще 100 мкс погоды не делают :slight_smile:

2 лайка

нет загрузчика. камень stm32f413 96MHz

да уже понятно, мне поздно метаться, тут уже можно себе в ногу стрелять , хуже не будет.

каким нибудь Cube MX инициализируете?

да, умею только обезьянничать. хотя гугл и проверка кода со сравнением показывает, что всё таки что mx что hal правится довольно быстро, и если у людей возникали куски кода с большой избыточностью год назад, то сейчас этот код выглядит более сносно. Хотя там ещё копать не перекопать.

дай угадаю, ты думаешь раз с момента окончания загрузки и до момента точки останова на main() прошло 0.5 секунды , то это время мк что то там обрабатывал ? ты ошибаешся,там уходит уйма времени на инициализацию дебагера , в реальности это время невилируеться.

это уже на релизной сборке. Или…?

можно перевести в любой момент на C++, нужно будет поправить Си-шные файлы директивой “extern C”
a нужный вам файл переписаь/написать
в .cpp

1 лайк

как было измеряно время ?

мы про Build Configuration говорим ? вообще пока не понимаю причем тут release и debug.

При правильной организации массива - 11 (одиннадцать) операций.

1 лайк

надо будет уделить время и изучить.

условно, чисто на глаз(измерял другое а не загрузку, поэтому тайминг правдив). разница загорания диодов питания и тот который от прерывания.

тогда вы про что? релизный билд отличается уровнем оптимизации и я думал выкидывает концы отладки. Время загрузки уменьшается примерно 0,3 секунды. Хотя сам код не сильно то и пожался.

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

1 лайк

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