×

Внимание

Форум находится в режиме только для чтения.

[STM32F2xx] IWDG + Standby mode

12 года 6 мес. назад #2885 от ivan
ivan создал тему: [STM32F2xx] IWDG + Standby mode
Денис, в связи с реализацией часов в проекте, появилась необходимость работать в режиме Standby, также в проекте требуется использование IWDT. Но вот проблема: после входа в Standby вачдог становится некому сбрасывать...
Денис, можешь лабораторку на эту тему сделать?
12 года 5 мес. назад #3020 от ivan
ivan ответил в теме Re: [STM32F2xx] IWDG + Standby mode
Денис, нид хэлп!  :)
12 года 5 мес. назад #3043 от Денис Ягов
Денис Ягов ответил в теме Re: [STM32F2xx] IWDG + Standby mode
ок, делаю.  ::)
12 года 5 мес. назад - 9 года 9 мес. назад #3049 от
ответил в теме Re: [STM32F2xx] IWDG + Standby mode
В общем, сделал.
8)

Нашёл ещё ошибку в библиотеках версии 1.0.0. (для F4 семейства)

У них вход в режим STandBy осуществляется так:


00548 void PWR_EnterSTANDBYMode(void)
00549 {
00550  /* Clear Wakeup flag */
00551  PWR->CR |= PWR_CR_CWUF;
00552 
00553  /* Select STANDBY mode */
00554  PWR->CR |= PWR_CR_PDDS;
00555 
00556  /* Set SLEEPDEEP bit of Cortex System Control Register */
00557  SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
00558 
00559 /* This option is used to ensure that store operations are completed */
00560 #if defined ( __CC_ARM  )
00561  __force_stores();
00562 #endif
00563  /* Request Wait For Interrupt */
00564  __WFI();
00565 }


В то время как в мануале для входа записано:

WFI (Wait for Interrupt) or WFE (Wait for Event) while:
– Set SLEEPDEEP bit in Cortex™-M4F System Control register
Clear PDDS bit in Power Control register (PWR_CR)
– Select the voltage regulator mode by configuring LPDS bit in PWR_CR


По сей причине код долго не запускался.
после замены на это:
  SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
  PWR->CR &= ~PWR_CR_PDDS;
  PWR->CR |= PWR_CR_CWUF;
  __WFI();


Всё заработало.

проект во вложении.
В папку с проектом - вложить папку со стандартными библиотеками F4. Всё заработает.


Краткое описание проекта.
1. инициируем порты со светодиодами (на F4Discovery)
2. запускаем RTC
3. Ставим будильник по которому проснётся контроллер через 5 секунд.
4. входим в режим STandBy
5. спим 5 секунд
6. по просыпании возвращаем тактовую частоту на место
7. Продолжаем издеваться над светодиодами.

Примерно так.
12 года 5 мес. назад #3052 от Денис Ягов
Денис Ягов ответил в теме Re: [STM32F2xx] IWDG + Standby mode
Добавил к проекту Сторожевую собаку. Чтоб веселее было.  ;)
12 года 5 мес. назад #3060 от ivan
ivan ответил в теме Re: [STM32F2xx] IWDG + Standby mode
О! Бальзам на душу! Спасибо, Денис!  8)
Время создания страницы: 0.042 секунд
Работает на Kunena форум