Найти в Дзене
795 подписчиков

Всех приветствую. Компания STMicroelectronics около недели назад обновила среду разработки программ STM32CubeIDE для stm32 до версии 1.12. Я так думаю, это первоапрельский выпуск, который призван делать "кирпичи" из некоторых ранее работающих проектов, которые кто-то решит мигрировать в новую версию. Прямо сходу, после обновления, выловил "кирпичеобразующую основу" в инициализации для проектов на базе библиотеки LL. Ребята из ST в очередной раз попытались укротить бит VOSRDY регистра CSR контроллера PWR. Результатом стала "нежизнеспособная конструкция замкнутого цикла" в функции SystemClock_Config:

void SystemClock_Config(void)
{
LL_FLASH_SetLatency(LL_FLASH_LATENCY_2);
  while(LL_FLASH_GetLatency()!= LL_FLASH_LATENCY_2)
{
}
LL_PWR_SetRegulVoltageScaling(LL_PWR_REGU_VOLTAGE_SCALE2);
while (LL_PWR_IsActiveFlag_VOS() == 0 )
{
}
LL_RCC_HSE_Enable();
... и только где-то ниже... еще ниже... а вот...
LL_RCC_PLL_Enable();
while(LL_RCC_PLL_IsReady() != 1)
{
}
...
}
Так, при выключенном PLL происходит управление напряжением, что соответствует спецификации (RM). Однако потом происходит ожидание, когда применится новое значение напряжения, путем опроса в цикле ("не имеющем конца") бита VOSRDY. Но в спецификации на МК указано о том, что "записывай, что хочешь в VOS при выключенном PLL, но в итоге напряжение будет соответствовать SCALE3". А применится новое напряжение только после включения PLL. Понятно к чему приведет вышеуказанная конструкция? Правильно, как отметил выше, к полному "окирпичиванию" программы/устройства в самом начале, при инициализации в цикле:
while (LL_PWR_IsActiveFlag_VOS() == 0 )
{
}
если он будет до включения PLL:
LL_RCC_PLL_Enable();
Вот такие дела. А где-то плачет начинающий программист, у которого перестал моргать светодиод после обновления STM32CubeIDE... Да, проверил пока обновление для stm32401xx для остальных из f4 и f7 линейки МК не смотрел.
Всех приветствую. Компания STMicroelectronics около недели назад обновила среду разработки программ STM32CubeIDE для stm32 до версии 1.12.
1 минута
233 читали