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

 
 
 
Reply to this topicStart new topic
> FreeRTOS STM32 HAL stop mode
KARLSON
сообщение Aug 18 2017, 05:55
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 604
Регистрация: 5-05-06
Из: Нижегородская обл.
Пользователь №: 16 819



Здравствуйте.
Скажите, пожалуйста, надо ли что-то делать с операционкой перед или после функции HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_STOPENTRY_WFI);
Эта функция запускается в одной из задач. После пробуждения программа ведёт себя как -то не так.


--------------------
Кризис - это не отсутствие денег, а отсутствие идей! Учитесь и никаких кризисов не будет.
Go to the top of the page
 
+Quote Post
razrab83
сообщение Aug 18 2017, 06:21
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 5-05-17
Пользователь №: 96 902



Ни чего делать не нужно. Вернее я ни чего не делаю. ОС работает нормально после пробуждения.
Go to the top of the page
 
+Quote Post
KARLSON
сообщение Aug 18 2017, 09:31
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 604
Регистрация: 5-05-06
Из: Нижегородская обл.
Пользователь №: 16 819



У меня частота LPUART-а на много уменьшилась. Скорее всего дело не в операционке, а какую то переферию надо переинициализировать.


--------------------
Кризис - это не отсутствие денег, а отсутствие идей! Учитесь и никаких кризисов не будет.
Go to the top of the page
 
+Quote Post
razrab83
сообщение Aug 18 2017, 10:23
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 5-05-17
Пользователь №: 96 902



нужно запустить HSE. Возможно у вас проц начинает работать на другом генереаторе и другой частоте.

Код
PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);

    /* Disable Wakeup Counter */
    RTC_WakeUpCmd(DISABLE);
    /* After wake-up from STOP reconfigure the system clock */
    /* Enable HSE */
    RCC_HSEConfig(RCC_HSE_ON);

    /* Wait till HSE is ready */
    while(RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET)
    {
    }

    /* Enable PLL */
    RCC_PLLCmd(ENABLE);

    /* Wait till PLL is ready */
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
    ;

    /* Select PLL as system clock source */
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

    /* Wait till PLL is used as system clock source */
    while(RCC_GetSYSCLKSource() != 0x08)
    ;
Go to the top of the page
 
+Quote Post
KARLSON
сообщение Aug 18 2017, 11:26
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 604
Регистрация: 5-05-06
Из: Нижегородская обл.
Пользователь №: 16 819



Да, так и получилось. Частота тактирования уменьшилась. После выхода ещё раз вызвал SystemClock_Config();


--------------------
Кризис - это не отсутствие денег, а отсутствие идей! Учитесь и никаких кризисов не будет.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 16th April 2024 - 04:16
Рейтинг@Mail.ru


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