Полная версия этой страницы:
FreeRTOS STM32 HAL stop mode
KARLSON
Aug 18 2017, 05:55
Здравствуйте.
Скажите, пожалуйста, надо ли что-то делать с операционкой перед или после функции HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_STOPENTRY_WFI);
Эта функция запускается в одной из задач. После пробуждения программа ведёт себя как -то не так.
razrab83
Aug 18 2017, 06:21
Ни чего делать не нужно. Вернее я ни чего не делаю. ОС работает нормально после пробуждения.
KARLSON
Aug 18 2017, 09:31
У меня частота LPUART-а на много уменьшилась. Скорее всего дело не в операционке, а какую то переферию надо переинициализировать.
razrab83
Aug 18 2017, 10:23
нужно запустить 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)
;
KARLSON
Aug 18 2017, 11:26
Да, так и получилось. Частота тактирования уменьшилась. После выхода ещё раз вызвал SystemClock_Config();
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.