Arlleex 131 10 июня, 2021 Опубликовано 10 июня, 2021 · Жалоба 1 минуту назад, Xenia сказал: Потому, что сама структура GPIO_InitTypeDef ... определена в пакете CubeMX... GPIO_InitTypeDef - штука изначально пришедшая из SPL. Так что, возможно, ТС использует именно его. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 10 июня, 2021 Опубликовано 10 июня, 2021 · Жалоба 5 часов назад, haker_fox сказал: Да вы что? А луна-то круглая) То, чем инициализируются переменные, описано в соответствующих книгах. Иначе бы программировать на этом языке было бы невозможно. В некоторых случаях: зависит именно от компилятора. Например VC может делать заполнение автоматических переменных некоторой константой (0xC0 вроде). Это делается пролог-кодом функции. А также для переменных, создаваемых динамически, на куче (кодом malloc()-а и new). Обычно эта опция включена при DEBUG-компиляции и выключена при RELEASE. (поэтому там у начинающих часто в DEBUG работает, а в RELEASE - глючит ) В embedded-компиляторах я такого не видел, но возможно - тоже где-то имеется. PS: А программировать надо так, чтобы работоспособность программы не зависела от включенности/выключенности такой опции (если она есть). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 10 июня, 2021 Опубликовано 10 июня, 2021 · Жалоба 43 minutes ago, jcxz said: В некоторых случаях: зависит именно от компилятора. Я понимаю, что компиляторы могут предоставлять фишечки пользователю. Но в данном случае поведение определено стандартом. 44 minutes ago, jcxz said: PS: А программировать надо так, чтобы работоспособность программы не зависела от включенности/выключенности такой опции (если она есть). О, это 100%!!!! Иначе переносимость кода стремится к нолю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 4 10 июня, 2021 Опубликовано 10 июня, 2021 · Жалоба 1 час назад, haker_fox сказал: Но в данном случае поведение определено стандартом. стандартом определено что не определено. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 10 июня, 2021 Опубликовано 10 июня, 2021 · Жалоба 7 minutes ago, SSerge said: стандартом определено что не определено. :) Ну да, не определено. Значит - мусор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Digi 0 11 июня, 2021 Опубликовано 11 июня, 2021 · Жалоба 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 Попробую включить. . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Digi 0 11 июня, 2021 Опубликовано 11 июня, 2021 · Жалоба Буду очень надеяться, что косяк я всё-же нашел. И как обычно нашлась не проинициализированная переменная. Всем спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 12 июня, 2021 Опубликовано 12 июня, 2021 · Жалоба 13 hours ago, Digi said: Попробую включить. . Но имейте в виду, что механизм программный. А значит детектирует переполнение стэка в зависимости от настроения состояния своих же переменных. 9 hours ago, Digi said: И как обычно нашлась не проинициализированная переменная. Локальная? Ибо глобальные точно инициализированы за некоторым исключением. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 16 29 июня, 2021 Опубликовано 29 июня, 2021 · Жалоба Я как-то тож перетаскивал с F0 на L4, вот тут немного про это: https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=155963 При этом использовал конвертер от STM, он сделал львиную долю работы, потом медленно и печально довел новый сгенерированный им код до ума. Общие правила просты: проверить все ли переменные используемой структуры установлены куда надо. Перед этим вызвать инициализацию структуры, в библиотеках и это есть- причем оно не в {0} ставит, а в валидные дефолтовые значения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
std 6 30 июня, 2021 Опубликовано 30 июня, 2021 (изменено) · Жалоба 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 Изменено 30 июня, 2021 пользователем std Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Digi 0 30 июня, 2021 Опубликовано 30 июня, 2021 · Жалоба Конечно же читал. Просто код очень кривой. Даже сейчас , удалось заставить его работать нормально. Но как только я его запускаю из bootloadera, так начинается веселье. Порога или нормально стартует и работает, или виснет где то. От чего зависит, не понятно.... Что ещё хуже Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
std 6 2 июля, 2021 Опубликовано 2 июля, 2021 · Жалоба 01.07.2021 в 00:55, Digi сказал: Конечно же читал. Просто код очень кривой. Даже сейчас , удалось заставить его работать нормально. Но как только я его запускаю из bootloadera, так начинается веселье. Порога или нормально стартует и работает, или виснет где то. От чего зависит, не понятно.... Что ещё хуже Возможно подключение JLink / STLink без сброса микроконтроллера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться