EdgeAligned 86 24 декабря, 2023 Опубликовано 24 декабря, 2023 · Жалоба 5 часов назад, Юрий48 сказал: Что такое перемаркер? Имеется ввиду китайская подделка, перемаркировка какой-то китайской фигни. Это нынче случается, если покупали на Али самое дешевое. 6 часов назад, Юрий48 сказал: Надеюссь, что в этом случае Вы не отвернётесь от меня. -- Иван Васильевич, вы меня неправильно поняли. -- Да как же тебя понять, если ты ничего не говоришь? (С)"Иван Васильевич меняет профессию" В Кубе настройте тактирование от HSI без PLL, на частоте 8 МГц. Проверьте, что указали правильный микроконтроллер в настройках проекта. Сгенерируйте проект, в нем в функции HAL_Init() закомментируйте строчку с вызовом HAL_Mspinit(). Попробуйте запустить и пошагово потыкать отладку. Не точки останова, а именно пошагово (Step In). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 89 24 декабря, 2023 Опубликовано 24 декабря, 2023 · Жалоба 9 часов назад, Юрий48 сказал: Что такое перемаркер? Контроллер тот - STM32F103C8T6 Самый часто перемаркируемый контроллер. Это может быть например GD32F103C8 и еще тройка похожих производителей. Попробуйте посмотреть ID контроллера. Они вроде бы точно так же работают как STM32F103C8, и имеют некоторые некритические отличия, но могут быть некоторые странности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Юрий48 0 24 декабря, 2023 Опубликовано 24 декабря, 2023 · Жалоба В 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(). Вхожу в неё, а дальше попадаю в асемблер. Для меня это называется - Приплыли. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 86 24 декабря, 2023 Опубликовано 24 декабря, 2023 (изменено) · Жалоба Ассемблер - это вот это: 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. Описанные глюки как раз могут происходить при такой ошибке. Ну и мануалы придется-таки читать, полюбасу. Изменено 24 декабря, 2023 пользователем EdgeAligned Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Юрий48 0 24 декабря, 2023 Опубликовано 24 декабря, 2023 · Жалоба В 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 взять. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 89 24 декабря, 2023 Опубликовано 24 декабря, 2023 · Жалоба 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Edit2007 3 25 декабря, 2023 Опубликовано 25 декабря, 2023 · Жалоба У вас в KEIL для подключения какой интерфейс выбран SWD/JTAG?? ваша __HAL_AFIO_REMAP_SWJ_NOJTAG() на какой режим отладчик переключает?? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Юрий48 0 25 декабря, 2023 Опубликовано 25 декабря, 2023 (изменено) · Жалоба В 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 мне предлагает асемблерный код, где я ни бум-бум. Изменено 25 декабря, 2023 пользователем Юрий48 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 25 декабря, 2023 Опубликовано 25 декабря, 2023 · Жалоба 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) ног МК, используемых для подключения эмулятора. Можно догадаться из её названия. А вам, раз уж решили ваять на Кале, это априори просто должно быть известно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 86 25 декабря, 2023 Опубликовано 25 декабря, 2023 · Жалоба 1 час назад, Юрий48 сказал: __HAL_AFIO_REMAP_SWJ_NOJTAG() ничего в отладчике не переключает. Я не помню (не знаю), как оно там в Кубе сделано, но эта ф-ция (правильнее она называется макросом, в данном случае) должна переключить биты в регистре AFIO->MAPR. В принципе, в эррате написано, что ревизия Z имеет глюк "при реализации некоторых последовательностей", компилируемых более новой версией компилятора. Вохможно, это оно и есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться