Pjotar 0 2 февраля Опубликовано 2 февраля · Жалоба Добрый день! Хотелось бы узнать, как поступаете с кодом, который генерирует CubeIDE. Работаете в рамках, заданных генератором, сохраняете возможность перегенерировать? Генератор очень удобный для старта проекта, но у меня возникает желание создать чистый проект без зависимости от код-генератора и туда уже ручками всё переносить и допиливать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 2 февраля Опубликовано 2 февраля · Жалоба 2 hours ago, Pjotar said: Добрый день! Хотелось бы узнать, как поступаете с кодом, который генерирует CubeIDE. Работаете в рамках, заданных генератором, сохраняете возможность перегенерировать? Генератор очень удобный для старта проекта, но у меня возникает желание создать чистый проект без зависимости от код-генератора и туда уже ручками всё переносить и допиливать. Код генерируется, добавляю что мне нужно. Потом поправляю в кубе и по циклу. /* USER CODE ...*/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 86 2 февраля Опубликовано 2 февраля · Жалоба 3 часа назад, Pjotar сказал: и туда уже ручками всё переносить и допиливать. Допиливать Куб - дело муторное. Его можно либо принять таким как есть, либо послать на и в и написать своё, благо оно легко пишется. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
firstvald 24 2 февраля Опубликовано 2 февраля · Жалоба генерируется проект с необходимой основой. ставим синхронизацию какая нужна. назначаем ножки по максимуму. говорим что нужно пара таймеров и пара уартов. заходим в их конфигурации. обязательно говорим что нужно swd. смотрим и разрешаем прерывания таймеров и уартов . и все. хорошая основа. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 86 2 февраля Опубликовано 2 февраля · Жалоба Возможно, топикстартера не устраивает стиль оформления текста, способ компоновки файлов. Например, меня тоже оное вообще не устраивает, поэтому я вообще не пользуюсь Кубом. Потому как начинал с STM еще задолго до того, как появился Куб вообще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 2 февраля Опубликовано 2 февраля · Жалоба 1 hour ago, EdgeAligned said: Возможно, топикстартера не устраивает стиль оформления текста, способ компоновки файлов. Например, меня тоже оное вообще не устраивает, поэтому я вообще не пользуюсь Кубом. Потому как начинал с STM еще задолго до того, как появился Куб вообще. Шашечки, или ехать. Каждый решает сам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjotar 0 2 февраля Опубликовано 2 февраля · Жалоба Ну со стилем и структурой проекта можно потерпеть, а вот функционально что меня выбило сегодня из колеи - это нагенированный код инициализации, который в случае ошибки вызывает функцию HandleErorr() без аргументов. Вызывает из двадцати мест, без указания там кода ошибки. И я такой секундочку, я хочу передать в эту функию код ошибки и как-то там ножкой просигналить. Ну вот необходимость нагенерированный код переписать. Ну я заподозрил, что генератор этот чисто как помошник, шпаргалка, генератор примеров, а потом из генератора ташится всё в проект. Интересно ещё, как собираются проекты в энетрпрайзе? Там же должны быть билдсервера, автотестирование... Проект куба без IDE я так понимаю не очень собирается... там же IDE генерирует makefile вроде? Just now, x893 said: Код генерируется, добавляю что мне нужно. Потом поправляю в кубе и по циклу. /* USER CODE ...*/ ну вот и мне снача хотелось оставить нагенерированный код как есть, вставить в него просто вызовы своих задач и не трогать больше. только засомневался, работает ли это так, или на практике всё ручками перелопачивать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 86 2 февраля Опубликовано 2 февраля · Жалоба У этого кодогенератора была хорошая и правильная задумка, да вот реализация подвела. Странно, что вас смущает только вызов ф-ции ошибки. А переписывать кубовский код - себе дороже. Он очень сильно интегрирован, сильно связан разнообразными зависимостями. Раньше, до 2019 года был отдельный кодогенератор CubeMX, который генерировал код для выбираемой в настройках IDE. Потом, когда ST купили Atollic, они его изгадили и впихнули в него свой кодогенератор, и впихнули так же криво и косо. И теперь сиё творение зовется CubeIDE. И поэтому начинка Куба очень сильно ввязана в проект. Автотестирование? Ха. К сожалению, в CubeIDE (если не ошибаюсь) так и не удосужились внедрить инструментарий юнит-тестов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 2 февраля Опубликовано 2 февраля · Жалоба 34 minutes ago, EdgeAligned said: до 2019 года был отдельный кодогенератор CubeMX Как был - так и остался. 34 minutes ago, EdgeAligned said: К сожалению, в CubeIDE (если не ошибаюсь) так и не удосужились внедрить инструментарий юнит-тестов. Это только продвинутым менеджерам нужно. Поэтому они и несчастливы. 41 minutes ago, Pjotar said: который в случае ошибки вызывает функцию HandleErorr() без аргументов. Вызывает из двадцати мест, без указания там кода ошибки. И я такой секундочку, я хочу передать в эту функию код ошибки и как-то там ножкой просигналить. Ну вот необходимость нагенерированный код переписать. Error_Handler. И можно сделать её как угодно. Всё в руках создателя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 86 2 февраля Опубликовано 2 февраля · Жалоба 8 минут назад, x893 сказал: только продвинутым менеджерам нужно. Поэтому они и несчастливы. Да. Счастливые тестов не наблюдают (не делают). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjotar 0 3 февраля Опубликовано 3 февраля · Жалоба 21 hours ago, x893 said: Error_Handler И как в ней получить название вызвавшей функции или как-то ещё понять что за ошибка? Типа стектрейса что-то... Если получится решить этот вопрос - останусь пока в рамках, установленных генератором Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 86 3 февраля Опубликовано 3 февраля · Жалоба Название (имя) функции - вообще никак. Имена функций, переменных и прочего не содержатся в прошивке. Хотя, чисто технически, при использовании механизмов assert, в код может внедряться информация об именах файлов и номерах строк, соотвествующих проверяемым условиям assert. Это доступно в режиме FULL_ASSERT. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 45 4 февраля Опубликовано 4 февраля · Жалоба On 2/2/2024 at 9:24 PM, Pjotar said: И я такой секундочку, я хочу передать в эту функию код ошибки и как-то там ножкой просигналить. Напишите индусам о своих желаниях. Возможно, они снизойдут до их воплощения. Они уже много лет не исправляют ошибки в ХАЛе. Есть целые сайты с этим, поищите на досуге. Всё, что можно сделать малой кровью, это извлечь из стэка адрес, с которого вызвали Error_Handler(), чтобы в дизассме посмотреть адрес. Ну и __LINE__, __FILE__ и __func__ в помощь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 4 февраля Опубликовано 4 февраля · Жалоба 3 часа назад, tonyk_av сказал: Всё, что можно сделать малой кровью, это извлечь из стэка адрес, с которого вызвали Error_Handler() ..."извлекать из стека" то, чего там может и не быть - так себе идея. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 29 5 февраля Опубликовано 5 февраля · Жалоба Написать свой кодогенератор, с блэкджеком и прочими аттрибутами. Куб использует фреймворк FreeMaker (об этом написано в документации), вся информация в xml-ках. Можно совместить "обманчивую красоту таких систем" и собственные представления о правильности вещей. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться