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

На HAL_Init(); программа зацикливается

5 часов назад, Юрий48 сказал:

Что такое перемаркер?

Имеется ввиду китайская подделка, перемаркировка какой-то китайской фигни. Это нынче случается, если покупали на Али самое дешевое.

6 часов назад, Юрий48 сказал:

Надеюссь, что в этом случае Вы не отвернётесь от меня.

-- Иван Васильевич, вы меня неправильно поняли.
-- Да как же тебя понять, если ты ничего не говоришь? (С)"Иван Васильевич меняет профессию"

В Кубе настройте тактирование от HSI без PLL, на частоте 8 МГц. Проверьте, что указали правильный микроконтроллер в настройках проекта. Сгенерируйте проект, в нем в функции HAL_Init() закомментируйте строчку с вызовом HAL_Mspinit(). Попробуйте запустить и пошагово потыкать отладку. Не точки останова, а именно пошагово (Step In).

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


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

9 часов назад, Юрий48 сказал:

Что такое перемаркер? Контроллер тот - STM32F103C8T6

Самый часто перемаркируемый контроллер. Это может быть например GD32F103C8 и еще тройка похожих производителей.

Попробуйте посмотреть ID контроллера.

Они вроде бы точно так же работают как STM32F103C8, и имеют некоторые некритические отличия, но могут быть некоторые странности.

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


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

В 24.12.2023 в 10:27, HardEgor сказал:

Попробуйте посмотреть ID контроллера.

STM32 ST-Link Utility показывает ID 0x414 Rev Z

В 24.12.2023 в 06:59, EdgeAligned сказал:

-- Да как же тебя понять, если ты ничего не говоришь? (С)"Иван Васильевич меняет профессию"

В Кубе настройте тактирование от HSI без PLL, на частоте 8 МГц. Проверьте, что указали правильный микроконтроллер в настройках проекта. Сгенерируйте проект, в нем в функции HAL_Init() закомментируйте строчку с вызовом HAL_Mspinit(). Попробуйте запустить и пошагово потыкать отладку. Не точки останова, а именно пошагово (Step In).

Огромное спасибо, что заговорили. Проделал, что предписали. Программа заработала адекватно и в отладчике тоже, т.е. в отладчике на HAL_Init() она не зацикливается, а проваливается дальше. Что тут смотреть не понимаю. Раскоментировал HAL_Mspinit() и попробовал пошагово пройтись по ней. Проходит все функции (их всего три) до последней __HAL_AFIO_REMAP_SWJ_NOJTAG(). Вхожу в неё, а дальше попадаю в асемблер. Для меня это называется - Приплыли.

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


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

Ассемблер - это вот это:

push	{r7}
sub	sp, #20
add	r7, sp, #0
mov	r3, r0
strb	r3, [r7, #7]
ldr	r3, [r7, #12]
adds	r3, #1
str	r3, [r7, #12]

А  то, что вы видите в  __HAL_AFIO_REMAP_SWJ_NOJTAG() -  это тот же самый язык Си, на нем записана работа в стандарте описания CMSIS. Если же в отладчике видите именно показанный выше тип текста именно на ассемблере, значит, у вас включено окошко ассемблерных инструкций и возможно включены шаги именно по ассемблерным инструкциям (Instruction stepping mode).

Если после настройки на HSI 8 МГц заработало как положено, значит, вероятно до этого была настройка на более высокую частоту от PLL и несогласованность с этой частотой параметра Flash Latency. Описанные глюки как раз могут происходить при такой ошибке.

Ну и мануалы придется-таки читать, полюбасу.

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

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


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

В 24.12.2023 в 19:53, EdgeAligned сказал:

Если после настройки на HSI 8 МГц заработало как положено, значит, вероятно до этого была настройка на более высокую частоту от PLL и несогласованность с этой частотой параметра Flash Latency. Описанные глюки как раз могут происходить при такой ошибке.

Всё было сделано по Вашим указаниям в том числе и закоментированный HAL_Mspinit(). Только в этом случае программа работала нормально и в отладчике.

Кажется нашёл "камень" преткновения, спасибо тем кто советовал обратить внимание на ID (левые "камни"). Из четырёх плат, что у меня было (две BluePill и две оригинальные платы) у трёх ID - 0x410 ver X, а у одной ID 0x414 ver Z. При чём на одной из плат BluePill. Вот она то и гадила. В связи с этим хотелось бы услышать совет по поводу того можно ли что то сделать с этой платой, Кейлом или программой, что бы можно было бы нормально с ней работать и в отладчике. Может, другую IDE взять.

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


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

1 час назад, Юрий48 сказал:

Из четырёх плат, что у меня было (две BluePill и две оригинальные платы) у трёх ID - 0x410 ver X, а у одной ID 0x414 ver Z. При чём на одной из плат BluePill.

Может быть и родные камни, читайте документ https://www.st.com/resource/en/errata_sheet/es096-stm32f101x8b-stm32f102x8b-and-stm32f103x8b-mediumdensity-device-limitations-stmicroelectronics.pdf

1 час назад, Юрий48 сказал:

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

Нет смысла, другая точно так же будет работать - это же особенности контроллера, а не IDE.

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


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

У вас в KEIL для подключения какой интерфейс выбран SWD/JTAG??

ваша __HAL_AFIO_REMAP_SWJ_NOJTAG() на какой режим отладчик переключает??

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


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

В 25.12.2023 в 11:25, Edit2007 сказал:

У вас в KEIL для подключения какой интерфейс выбран SWD/JTAG??

SWD (ST-Link)

В 25.12.2023 в 11:25, Edit2007 сказал:

ваша __HAL_AFIO_REMAP_SWJ_NOJTAG() на какой режим отладчик переключает??

Не понятен вопрос.  __HAL_AFIO_REMAP_SWJ_NOJTAG() ничего в отладчике не переключает. Я имею ввиду, что с самим отладчиком ничего не происходит. А говорил я о том, что при пошаговом прохождении ппрограммы из HAL_Init() она доходит то последнего оператора  __HAL_AFIO_REMAP_SWJ_NOJTAG() в этой цепочке, после которого происходит возвращение опять на функции HAL_Init() а не дальше по программе. Если же я вхожу в функцию __HAL_AFIO_REMAP_SWJ_NOJTAG(), то Keil мне предлагает асемблерный код, где я ни бум-бум.

Изменено пользователем Юрий48

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


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

17 минут назад, Юрий48 сказал:

она доходит то последнего оператора  __HAL_AFIO_REMAP_SWJ_NOJTAG() в этой цепочке,

Ещё бы понять - что такое "оператор" в вашей терминологии... Чтобы понять куда доходит.

17 минут назад, Юрий48 сказал:

возвращение опять на функции HAL_Init()

И что такое "возвращение на функции"? Возвращение куда?

Очень косноязычно пишете.

17 минут назад, Юрий48 сказал:

Если же я вхожу в функцию __HAL_AFIO_REMAP_SWJ_NOJTAG(), то Keil мне предлогает асемблерный код, где я ни бум-бум.

За время написания всей кучи ваших сообщений, могли бы уже давно открыть справочник команд ассемблера вашего CPU, почитать его и стать хоть немного "бум-бум".

17 минут назад, Юрий48 сказал:

Не понятен вопрос.  __HAL_AFIO_REMAP_SWJ_NOJTAG() ничего в отладчике не переключает

Даже мне (хотя никогда не пользовался никакими кубо-калами) интуитивно понятно, что скорее всего - эта функция делает переназначение (remap) ног МК, используемых для подключения эмулятора. Можно догадаться из её названия.

А вам, раз уж решили ваять на Кале, это априори просто должно быть известно.

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


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

1 час назад, Юрий48 сказал:

__HAL_AFIO_REMAP_SWJ_NOJTAG() ничего в отладчике не переключает.

Я не помню (не знаю), как оно там в Кубе сделано, но эта ф-ция (правильнее она называется макросом, в данном случае) должна переключить биты в регистре AFIO->MAPR.

В принципе, в эррате написано, что ревизия Z имеет глюк "при реализации некоторых последовательностей", компилируемых более новой версией компилятора. Вохможно, это оно и есть.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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