Arlleex 1 Posted June 10, 2021 · Report post 1 минуту назад, Xenia сказал: Потому, что сама структура GPIO_InitTypeDef ... определена в пакете CubeMX... GPIO_InitTypeDef - штука изначально пришедшая из SPL. Так что, возможно, ТС использует именно его. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
jcxz 5 Posted June 10, 2021 · Report post 5 часов назад, haker_fox сказал: Да вы что? А луна-то круглая) То, чем инициализируются переменные, описано в соответствующих книгах. Иначе бы программировать на этом языке было бы невозможно. В некоторых случаях: зависит именно от компилятора. Например VC может делать заполнение автоматических переменных некоторой константой (0xC0 вроде). Это делается пролог-кодом функции. А также для переменных, создаваемых динамически, на куче (кодом malloc()-а и new). Обычно эта опция включена при DEBUG-компиляции и выключена при RELEASE. (поэтому там у начинающих часто в DEBUG работает, а в RELEASE - глючит ) В embedded-компиляторах я такого не видел, но возможно - тоже где-то имеется. PS: А программировать надо так, чтобы работоспособность программы не зависела от включенности/выключенности такой опции (если она есть). Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
haker_fox 0 Posted June 10, 2021 · Report post 43 minutes ago, jcxz said: В некоторых случаях: зависит именно от компилятора. Я понимаю, что компиляторы могут предоставлять фишечки пользователю. Но в данном случае поведение определено стандартом. 44 minutes ago, jcxz said: PS: А программировать надо так, чтобы работоспособность программы не зависела от включенности/выключенности такой опции (если она есть). О, это 100%!!!! Иначе переносимость кода стремится к нолю. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
SSerge 0 Posted June 10, 2021 · Report post 1 час назад, haker_fox сказал: Но в данном случае поведение определено стандартом. стандартом определено что не определено. :) Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
haker_fox 0 Posted June 10, 2021 · Report post 7 minutes ago, SSerge said: стандартом определено что не определено. :) Ну да, не определено. Значит - мусор. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Digi 0 Posted June 11, 2021 · Report post On 6/9/2021 at 10:45 PM, Arlleex said: В PC попал каким-то чудом адрес модуля GPIO (0x40003800)... Я про таблицу векторов не просто так написал. Может у вас там активируется вектор, которого в новом контроллере нет, и попадает он на вектор обработчика WWDG. Но начать надо, все-таки, с чистки мест от кода, который полагается на какие-то значения, которые в локальных автоматических переменных априори могут получить любое содержимое. Либо проект целиком сюда выложить, авось там не так все страшно. Но если страшно, то нет, конечно, не выкладывайте. Чистку провёл, теперь все переменные, объявляемые при создании функции, теперь имеют начальные значения. Проект представляет из себя письмо Дяди Фёдора домой )))). Код просто ужасен.... Поэтому не этично будет выкладывать этот кошмар большого объёма ) Cube_MX не использую. Использую SPL. FreeRTOS пробовал изменять размер стека, поведение меняется. Но есть ещё отладочная информация, которая сообщает свободный размер, запас On 6/10/2021 at 8:33 AM, haker_fox said: #define configCHECK_FOR_STACK_OVERFLOW 2 Попробую включить. . Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Digi 0 Posted June 11, 2021 · Report post Буду очень надеяться, что косяк я всё-же нашел. И как обычно нашлась не проинициализированная переменная. Всем спасибо. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
haker_fox 0 Posted June 12, 2021 · Report post 13 hours ago, Digi said: Попробую включить. . Но имейте в виду, что механизм программный. А значит детектирует переполнение стэка в зависимости от настроения состояния своих же переменных. 9 hours ago, Digi said: И как обычно нашлась не проинициализированная переменная. Локальная? Ибо глобальные точно инициализированы за некоторым исключением. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ruslan1 0 Posted June 29, 2021 · Report post Я как-то тож перетаскивал с F0 на L4, вот тут немного про это: https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=155963 При этом использовал конвертер от STM, он сделал львиную долю работы, потом медленно и печально довел новый сгенерированный им код до ума. Общие правила просты: проверить все ли переменные используемой структуры установлены куда надо. Перед этим вызвать инициализацию структуры, в библиотеках и это есть- причем оно не в {0} ставит, а в валидные дефолтовые значения. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
std 0 Posted June 30, 2021 (edited) · Report post 09.06.2021 в 11:59, Digi сказал: Пытаюсь перетащить код с STM32F1 на F4 и тут у меня возникают проблемы с работоспособностью кода AN4904 Application note Migration of microcontroller applications from STM32F1 Series to STM32F4 Access lines https://www.st.com/resource/en/application_note/dm00325582-migration-of-microcontroller-applications-from-stm32f1-series-to-stm32f4-access-lines-stmicroelectronics.pdf Edited June 30, 2021 by std Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Digi 0 Posted June 30, 2021 · Report post Конечно же читал. Просто код очень кривой. Даже сейчас , удалось заставить его работать нормально. Но как только я его запускаю из bootloadera, так начинается веселье. Порога или нормально стартует и работает, или виснет где то. От чего зависит, не понятно.... Что ещё хуже Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
std 0 Posted July 2, 2021 · Report post 01.07.2021 в 00:55, Digi сказал: Конечно же читал. Просто код очень кривой. Даже сейчас , удалось заставить его работать нормально. Но как только я его запускаю из bootloadera, так начинается веселье. Порога или нормально стартует и работает, или виснет где то. От чего зависит, не понятно.... Что ещё хуже Возможно подключение JLink / STLink без сброса микроконтроллера. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...