|
Как отличить Сброс МК от включения?, Микроконтроллер STM32F100C |
|
|
|
 |
Ответов
(1 - 7)
|
May 1 2013, 06:08
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Цитата(iosifk @ Apr 30 2013, 22:45)  Самый тупой вариант: При вклдючении в памяти записаны либо нули, либо хаос. По включению пройдет "холодный сброс", эта память читается и если там хаос, то туда, в определенную область памяти пишется контрольная информация.. хмм... сомнение берет. После включения - да, согласен. Но, если это просто дернулм Reset, программно область не инициализируется, SRAM же останется в том же состоянии
|
|
|
|
|
May 1 2013, 12:08
|
Местный
  
Группа: Свой
Сообщений: 252
Регистрация: 14-09-06
Пользователь №: 20 377

|
Сделал так: CODE //******************Определяем причину сброса МК начало********************** /* RCC_FLAG_PINRST: Произошел внешний сброс. RCC_FLAG_PORRST: Произошёл сброс от POR/PDR. RCC_FLAG_SFTRST: Произошёл программный сброс. RCC_FLAG_IWDGRST: Сброс от независимого сторожевого таймера. RCC_FLAG_WWDGRST: Сброс от оконного сторожевого таймера. RCC_FLAG_LPWRRST: Сброс при пониженном питании. */
if (RCC_GetFlagStatus(RCC_FLAG_SFTRST)){ strncpy (buferRCCresetStatus, "Software reset", 18); } else if (RCC_GetFlagStatus(RCC_FLAG_PORRST)){ strncpy (buferRCCresetStatus, "Power ON/OFF reset", 18); } else if (RCC_GetFlagStatus(RCC_FLAG_PINRST)){ strncpy (buferRCCresetStatus, "Pin reset", 18); } else if (RCC_GetFlagStatus(RCC_FLAG_IWDGRST)){ strncpy (buferRCCresetStatus, "IndWatchdog reset", 18); } else if (RCC_GetFlagStatus(RCC_FLAG_WWDGRST)){ strncpy (buferRCCresetStatus, "WinWatchdog reset", 18); } else if (RCC_GetFlagStatus(RCC_FLAG_LPWRRST)){ strncpy (buferRCCresetStatus, "LowPower reset", 18); } else strncpy (buferRCCresetStatus, "?reset", 18); RCC_ClearFlag(); //******************Определяем причину сброса МК конец**********************
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|