- Главная
- Форум
- Микроконтроллеры и Системы на Модуле (SOM)
- Микроконтроллеры
- [STM32F2xx] IWDG + Standby mode
[STM32F2xx] IWDG + Standby mode
- ivan
- Автор темы
- Посетитель
12 года 6 мес. назад #2885
от ivan
ivan создал тему: [STM32F2xx] IWDG + Standby mode
Денис, в связи с реализацией часов в проекте, появилась необходимость работать в режиме Standby, также в проекте требуется использование IWDT. Но вот проблема: после входа в Standby вачдог становится некому сбрасывать...
Денис, можешь лабораторку на эту тему сделать?
Денис, можешь лабораторку на эту тему сделать?
- ivan
- Автор темы
- Посетитель
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
В общем, сделал.
Нашёл ещё ошибку в библиотеках версии 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. Продолжаем издеваться над светодиодами.
Примерно так.
Нашёл ещё ошибку в библиотеках версии 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. Продолжаем издеваться над светодиодами.
Примерно так.
Последнее редактирование: 9 года 9 мес. назад пользователем Alena.
- Денис Ягов
- Посетитель
12 года 5 мес. назад #3052
от Денис Ягов
Денис Ягов ответил в теме Re: [STM32F2xx] IWDG + Standby mode
Добавил к проекту Сторожевую собаку. Чтоб веселее было.
- ivan
- Автор темы
- Посетитель
12 года 5 мес. назад #3060
от ivan
ivan ответил в теме Re: [STM32F2xx] IWDG + Standby mode
О! Бальзам на душу! Спасибо, Денис!
Время создания страницы: 0.042 секунд