С Новым годом! Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/225: Рейтинг темы: голосов - 225, средняя оценка - 4.78
tuxmsk

Программный сброс

05.03.2015, 21:25. Показов 44092. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Проблема такая - не могу сбросить контроллер программно. Пытаюсь это сделать с помощью NVIC_SystemRiset(). Вызываю его в main-е, при этом main прерывается (возможно улетает в обработчик прерывания, но какой, пока не могу глянуть, отладчика под рукой нет, шью через UART), при этом состояние ног контроллера не меняется (светодиоды на них остаются в тех же состояниях) и прерывания по UART-у продолжают нормально обрабатываться (по ним и моргаю дальше светодиодами). Но если дрыгаю ногу NRST, происходит нормальный сброс.
Камень - strm32f103.
В общем хочу сделать полностью перепрошивку программно, при этом ногу BOOT0 я могу выставить в процессе работы, а NRST нет, вот и хочется программно сбросить его, чтобы загрузиться в бутлоадер.
Пробовал еще с вачдога сбрасывать, тоже ничего не вышло. Программно делаются какие-то "другие" ресеты или я все же что-то не верно делаю?
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.03.2015, 21:25
Ответы с готовыми решениями:

Как реализовать программный сброс на STM32F4Discovery
Доброго времени суток. Решил я завести через USB в режиме CDC VCP, команду сброса контроллера. Пробовал через WWDG, так же могу через...

Сброс настроек тактирования
При отладке (SWD,ST-Link) кода (Keil 4.23) на плате дискавери (камень - stm32f100rb) выявил вот такю историю: До выполнения указанного...

сброс при совпадении ?
всем привет, немного разобравшись с обработчиками прерываний на stm32f103 (переполнение, совпадение таймера TIM2), возникла сложность как...

13
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 20
06.03.2015, 11:28
Предполагаю, что NVIC_SystemRiset сбрасывает ядро, а не периферию. Поэтому ноги контроллера остаются в прежнем состоянии, UART также обрабатывается. Сброс вы делаете правильно. Также может быть, что после сброса до того момента, когда вы отслеживаете состояние ног и пытаетесь общаться с контроллером по UART, они успевают инициализироваться заново.
0
tuxmsk
06.03.2015, 11:51
Ну заново он не инициалицируется точно, тк в этот момент нога BOOT0 точно подтянутся к питанию (внешней схемой), да и при инициализации другие светодиоды зажигаться должны, вот я и думал, что ресет должен был бы заново инициализацию камня запустить, и среагировать на ногу BOOT0 и стартануть со своего бутлоадера, а он не хотит. Видимо придется переделывать платку, чтобы с внешки еще и ногу ресет дергала.
А вообще странно, почему полноценный сброс программно не реализовали.
0 / 0 / 0
Регистрация: 05.10.2007
Сообщений: 498
06.03.2015, 14:15
Попробуйте покопать вочдог. В STM8 именно так и сделан программный сброс - устанавливаешь таймер вочдога в ноль, взводишь вочдог, и в бесконечный цикл. Возможно, в STM32 можно решить проблему аналогично.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 553
06.03.2015, 15:52
NVIC_SystemRiset отлично ресетит контроллер, пользовал на F103 и L151. Когда не знал про такую функцию в CMSIS, то использовал регистр SCB_OYRCR напрямую и тоже работало. Ресетит полностью все, периферию в том числе, как внешним ресетом, отличие только в установленном бите SFTRSTF в RCC_CSR регистре.
Как-то видел упоминание про нерабочий программный ресет, когда пин внешнего ресета был неверно разведен, может тут такая же ситуация?
0
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
06.03.2015, 16:06
Аналогично - отлично используем NVIC_SystemRiset(), никаких проблем. Ресетить полностью - ноги в hi-z, тактирование отключен, в общем как при нажатии на кнопку ресет.
0
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
06.03.2015, 16:06
У меня на 103 ресет отлично продит, переферия вся сбрасывается. Флаги я не проверяю, мне без разницы почему был сброс.
0
S.Mokir
07.03.2015, 01:30
Цитата Сообщение от TomityWotf
пин внешнего ресета был неверно разведен, может тут такая же ситуация?
Кстати да, проверьте может подтягивающий резистор низкоомный, или ресет пин закорочен на питание.
tuxmsk
07.03.2015, 08:03
Точно!
Почему-то сам не допер, что они могут быть взаимосвязаны, у меня нога NRST используется как нога включения контроллера, соответственно во время работы она транзистором подтягивалась к питанию. Скинул все с ноги, все отлично заработало, после ресета бутлоадер тоже загрузился как надо.
Всем спасибо, тема закрыта.
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 287
07.03.2015, 15:15
А зачем вообще вывод NRST для перепрошивки? Есть же программный сброс. Да и BOOT0 трогать не нужно, если у вас бутлоадер? Или вы используете вшитый в STM лоадер?
0
S.Mokir
07.03.2015, 16:20
Для прошивки подключение NRST не требуется, контроллер действительно сбрасывается программно.
С другой стороны, программный сброс видимо происходит через физическую подтяжку NRST к земле.
Т.е. если подтянуть его не выходит то и сброса не происходит.
1 / 1 / 0
Регистрация: 14.02.2013
Сообщений: 408
07.03.2015, 17:33
Видать документацию никто не читает.
0
tuxmsk
07.03.2015, 21:40
Я же написал, что NRST у меня используется для включения/отключения контроллера (тк его ноги висят на общих шинах с другими устройствами, и иногда нужно, чтобы они были в high-z), а прошивка нужна через UART, который у меня выведен на USB, соответственно для прошивки я запитываю ногу BOOT0 и после этого сбрасываю его, чтобы загрузиться в его собственный бутлоадер для дальнейшей прошивки.
В доках я нигде не нашел, что NRST и программный сброс могут быть взаимосвязаны.
1 / 1 / 0
Регистрация: 18.01.2012
Сообщений: 1,418
08.03.2015, 08:24
Цитата Сообщение от tuxmsk
В доках я нигде не нашел, что NRST и программный сброс могут быть взаимосвязаны.
В референс мануале есть.

https://www.cyberforum.ru/savedimages/2015/03/08/4nkeqgukrzgmspydrnm.jpg
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.03.2015, 08:24
Помогаю со студенческими работами здесь

Аппаратный сброс не работает правильно.
Скажу сразу - я новичок :) Микроконтроллер STM32F103RBT6 Тактирование от внутреннего генератора HSI (8 MHz) Прошиваю по UARTу ...

МК уходит в сброс
Почему? //подключаемые файлы #define F_CPU 3686400UL //Hz #include <util/delay.h> #include <avr/io.h> ...

Atmega16 и внешний сброс
добрый день, помогите разобраться. Есть отладочная плата для Atmega16A с разъемом SPI , светодиодами (+резисторы), кварц 16 МГц (с...

ATmega8. Постоянный сброс?!
Есть программа (код ниже) которая подает на порт сигналы и тем самым приводит в движение шаговый двигатель. В таком виде как есть сейчас —...

Сброс задержки по прерыванию
Приветствую всех! Существует ли способ по внешнему прерыванию проскочить задержку _delay_ms()? Например, поставил я задержку в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru