реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> software reset STM32F205, как сделать?
NikP
сообщение Dec 25 2013, 18:48
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 168
Регистрация: 25-08-05
Пользователь №: 7 944



В устройстве хочу сделать так, чтобы происходил программный сброс по каманде из управляющего компьютера. В ref manual - RM0033 сказано:
"A system reset is generated when one of the following events occurs:....
4. A software reset (SW reset) (see Software reset)"
Под заголовком Software reset вижу "The SYSRESETREQ bit in Cortex™-M3 Application Interrupt and Reset Control Register
must be set to force a software reset on the device. Refer to the Cortex™-M3 technical reference manual for more details."

И что-то ни SYSRESETREQ , ни Reset Control Register далее в RM0033 не нашёл, technical reference - посмотрел, и тоже ничего не нашёл.
Подскажите, где всё-таки в документации описан программный сброс, и (предел мечтаний) по возможности пример реализации в программе на Си.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Dec 25 2013, 19:06
Сообщение #2


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(NikP @ Dec 25 2013, 20:48) *
В устройстве хочу сделать так, чтобы происходил программный сброс по каманде из управляющего компьютера. ...
... пример реализации в программе на Си.

Вот это работает в Keil:
Код
SCB->AIRCR = 0x05FA0004;
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 25 2013, 23:00
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(NikP @ Dec 25 2013, 20:48) *
Подскажите, где всё-таки в документации описан программный сброс, и (предел мечтаний) по возможности пример реализации в программе на Си.
PM0056, "STM32F10xxx/20xxx/21xxx/L1xxxx Cortex-M3 programming manual", раздл "4.4.5 Application interrupt and reset control register (SCB_AIRCR)".

Код
    SCB->AIRCR = 0
        | (0x5FA << 16)
        | 1 * SCB_AIRCR_SYSRESETREQ
       ;


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
VAI
сообщение Dec 26 2013, 04:25
Сообщение #4


Профессионал
*****

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



А если используете библиотеки, то можно так:
Код
NVIC_SystemReset();


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post
NikP
сообщение Dec 26 2013, 16:02
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 168
Регистрация: 25-08-05
Пользователь №: 7 944



Спасибо за советы. Попробовал код SCB->AIRCR = 0x05FA0004; - сработало. Но при этом выскочил побочный эффект : у меня этот ресет зациклился. Т.е. передал в МК команду на ресет - программа сбросилась, но при этом ресет пошёл циклически, программа стала неработоспособной. Походе, надо сбросить какой-то бит , а какой? В РМ0056 раздел 4.4.5 ничего нет по этому поводу.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 00:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.01381 секунд с 7
ELECTRONIX ©2004-2016