|
|
  |
NVIC_SystemReset - куда? |
|
|
|
Oct 20 2016, 07:02
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(Сергей Борщ @ Oct 20 2016, 09:50)  Я не знаю, что делает NVIC_SystemReset, но установка бита SYSRESETREQ в регистре SCB_AIRCR сбрасывает все кроме RTC и содержимого регистра RCC_CSR. Не спешите с выводами. Как-то раз на STM32 по ошибке подтянул сигнал RST вверх (сильно подтянул). SYSRESETREQ дёргал его вниз, но не получалось. Соответственно, никакого сброса не было Опять же, теоретически речь может идти о процессоре, встроенном в самодельную систему на FPGA. Там сигнал программного сброса может делать всё, что угодно, например, моргать лампочкой
|
|
|
|
|
Oct 20 2016, 07:48
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Allregia @ Oct 20 2016, 09:22)  Не очень пойму из документации - NVIC_SystemReset полностью сбрасывает процессор (типа аппаратного ресета), или только перезапускает текущую программу по ее ресет-вектору? Иными словами - если в прошивке внизу висит бутлоадер а выше основная программа, то вызов NVIC_SystemReset в NVIC_SystemReset - это что? ISR? Или нет? Если ISR, то с какого бодуна он должен что-то сбрасывать или перезапускать? Если нужен сброс МК, то самый надёжный путь - через WDT. Цитата(Сергей Борщ @ Oct 20 2016, 09:50)  Я не знаю, что делает NVIC_SystemReset, но установка бита SYSRESETREQ в регистре SCB_AIRCR сбрасывает все кроме RTC и содержимого регистра RCC_CSR. Не сбрасывается только состояние "залочен" у STM32F03x, т.е. для окончания процедуцры снятия защиты от чтения у этих кристаллов необходимо передернуть питание. У всех остальных достаточно взвести этот бит системного сброса. Не спешите с выводами. Может конкретно у этого STM32 это и так, но сиё не верно для всех Cortex-M. Что за МК у автора как всегда остаётся только гадать (когда уже наконец-то чайники научатся указывать о каком МК, компиляторе и т.п. вопрос??? как будто форум здесь для телепатов...). SYSRESETREQ на Tiva работает вроде нормально. А вот на NXP разных серий (LPC17xx, LPC43xx) у меня были какие-то проблемы с ним. Точно не помню, но на LPC43xx вроде вообще не работает, а на LPC17xx там вроде не всё сбрасывается. Так что на LPC использую WDT.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|