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

 
 
> STM32L151 в режиме STANDBY с RTC, Вход/выход в STANDBY и отладка в IAR
Baser
сообщение Mar 26 2018, 10:44
Сообщение #1


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Кто работал с STM32L151 в режиме STANDBY с RTC ?
Никак не удается отладить вход/выход в/из STANDBY при помощи ИАРа и ST-Link/v2

Для отладки питаю МК от двух источников: 3В через диод на VDD и 3.3В через ключ на VDD.
Вход в STANDBY в прерывании PVD, который настроен на контроль VDD. Если VDD < 3.1В то прерывание.
Выход из STANDBY по ножке WakeUp2 (PC13), куда подается входное 3.3В.

Прерывание PVD нормально работает, но входить в STANDBY контроллер никак не хочет.
Под отладчиком в конце этого прерывания видны команды:
WFI - завалится в спячку
BX LR - return прерывания

Так вот отладчик спокойно шагает через WFI к BX LR и прыгает на задачу Idle FreeRTOS и там дальше крутится.

з.ы. Watchdog выключен, в RTC источники пробудки запрещены.

Что еще нужно сделать??? smile3046.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AlanDrakes
сообщение Mar 26 2018, 15:57
Сообщение #2


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

Группа: Участник
Сообщений: 101
Регистрация: 2-05-15
Из: Россия, Омск
Пользователь №: 86 474



1. Выход из режима StandBy подразумевает ПОЛНЫЙ сброс ядра. Автоматически у Вас должна сброситься отладка.
2. Инструкция WFI без дополнительной настройки отправит ядро в режим сна (Sleep). При этом ядро будет запитано, как и память и вся периферия, а так же источники тактирования.
3. Эпизодически подключеный отладчик может вызывать прерывания типа DebugMon_Handler и что-то похожее. Не углублялся, тут могу ошибиться.

Для перехода в режим именно StandBy необходимо:
PWR->CR |= PWR_CR_PDDS;
SCB->SCR |= SCB_SCR_SLEEPDEEP;
PWR->CSR &= ~PWR_CSR_WUF;
И сбросить соответствующие флаги RTC, чтобы контроллер не проснулся сразу же.

После выполнения инструкции WFI отладка отвалится!

Референс-мануал, глава 5.3.8 - StandBy Mode.
Go to the top of the page
 
+Quote Post
Baser
сообщение Mar 26 2018, 16:49
Сообщение #3


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(AlanDrakes @ Mar 26 2018, 18:57) *
Для перехода в режим именно StandBy необходимо: ...

Вроде проштудировал уже все примеры из Куба для отладочных плат. Да и функции применяю из HAL-а. laughing.gif

Цитата
После выполнения инструкции WFI отладка отвалится!

Судя по всему при пошаговой отладке в ИАРе команда WFI игнорируется.
Причем как при установленном бите (DBGMCU_CR->DBG_STANDBY) отладки Standby режима, так и при сброшенном.

А вот при работе без подключенного отладчика, контроллер по внешним признакам все-таки уходит в спячку, только через 4...10 мс снова просыпается, и так по кругу. Завтра буду дальше разбираться.

Дополнительно вопрос:
Кто нибудь пробовал отладку STM32L151 в режиме STANDBY с включенным битом DBGMCU_CR->DBG_STANDBY,
когда тактирование ядра не отключается после команды WFI. Как это должно выглядеть под отладчиком?
Потому что я никак не попадаю на вектор рестарта.
Go to the top of the page
 
+Quote Post



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

 


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


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