Перейти к содержанию
    

Переезд с STM32F1xx на STM32F4xx Проблемы...

1 минуту назад, Xenia сказал:

Потому, что сама структура GPIO_InitTypeDef ... определена в пакете CubeMX...

GPIO_InitTypeDef - штука изначально пришедшая из SPL. Так что, возможно, ТС использует именно его.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 часов назад, haker_fox сказал:

Да вы что? А луна-то круглая) То, чем инициализируются переменные, описано в соответствующих книгах. Иначе бы программировать на этом языке было бы невозможно.

В некоторых случаях: зависит именно от компилятора. Например VC может делать заполнение автоматических переменных некоторой константой (0xC0 вроде). Это делается пролог-кодом функции. А также для переменных, создаваемых динамически, на куче (кодом malloc()-а и new).

Обычно эта опция включена при DEBUG-компиляции и выключена при RELEASE. (поэтому там у начинающих часто в DEBUG работает, а в RELEASE - глючит :wink: )

В embedded-компиляторах я такого не видел, но возможно - тоже где-то имеется.

 

PS: А программировать надо так, чтобы работоспособность программы не зависела от включенности/выключенности такой опции (если она есть).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

43 minutes ago, jcxz said:

В некоторых случаях: зависит именно от компилятора.

Я понимаю, что компиляторы могут предоставлять фишечки пользователю. Но в данном случае поведение определено стандартом.

44 minutes ago, jcxz said:

PS: А программировать надо так, чтобы работоспособность программы не зависела от включенности/выключенности такой опции (если она есть).

О, это 100%!!!! Иначе переносимость кода стремится к нолю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, haker_fox сказал:

Но в данном случае поведение определено стандартом.

стандартом определено что не определено. :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 minutes ago, SSerge said:

стандартом определено что не определено. :)

Ну да, не определено. Значит - мусор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Попробую включить. . 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Буду очень надеяться, что косяк я всё-же нашел. И как обычно нашлась не проинициализированная переменная.  

Всем спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 hours ago, Digi said:

Попробую включить. . 

Но имейте в виду, что механизм программный. А значит детектирует переполнение стэка в зависимости от настроения состояния своих же переменных.

9 hours ago, Digi said:

И как обычно нашлась не проинициализированная переменная. 

Локальная? Ибо глобальные точно инициализированы за некоторым исключением.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я как-то тож перетаскивал с F0 на L4, вот тут немного про это:

https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=155963

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

Общие правила просты: проверить все ли переменные используемой структуры установлены куда надо. Перед этим вызвать инициализацию структуры, в библиотеках и это есть- причем оно не в {0} ставит, а в валидные дефолтовые значения.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Изменено пользователем std

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Конечно же читал. Просто код очень кривой.  Даже сейчас , удалось заставить его работать нормально. Но как только я его запускаю из bootloadera,  так начинается веселье.  Порога или нормально стартует и работает,  или виснет где то. От чего зависит,  не понятно.... Что ещё хуже

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

01.07.2021 в 00:55, Digi сказал:

Конечно же читал. Просто код очень кривой.  Даже сейчас , удалось заставить его работать нормально. Но как только я его запускаю из bootloadera,  так начинается веселье.  Порога или нормально стартует и работает,  или виснет где то. От чего зависит,  не понятно.... Что ещё хуже

 

Возможно подключение JLink / STLink без сброса микроконтроллера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...