Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Неточности либо ошибки в STM32Cube_FW_F1_V1.0.0
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
SasaVitebsk
Обращаю внимание начинающих программистов на определённые неточности в STM32Cube_FW_F1_V1.0.0.
Ранее был stdlib. Сейчас st меняет подход. И, похоже, не все вычистило при переходе.
Честно говоря я не ставил своей задачей выявить "как и почему". И использую лишь некоторые модули. В частности попробовал применить RCC и FLASH.
В обоих возникли хомуты.
С FLASH не стал разбираться, если честно - выкинул и обратился напрямую к регистрам.
С RCC наблюдаю следующее ...
В файле stm32f1xx_hal_rcc.c (версия V1.0.0 от 15-December-2014) есть процедура:
__weak HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency)
Как видим задаётся FLatency. Эта FLatency нигде не фигурирует далее по процедуре, кроме как в assert_param(IS_FLASH_LATENCY(FLatency));
В библиотеке stdlib она, естественно, использовалась для задания Latency cycle FLASH памяти.
Здесь это описывается в заголовке и по тексту, но не делается.
Если исходить из того, что я должен был сделать это заранее отдельной процедурой, то тогда зачем было вводить этот параметр в эту процедуру и проверять на правильность задания?
То есть с моей точки зрения это достоверный баг.
При попытке запуска контроллера на частотах требующих тактов ожидания, естественно ничего не работает.
Для начинающих: необходимо добавить в начале процедуры следующие строки:

Код
  // Flash FLatency wait state
  FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);
  FLASH->ACR |= (uint32_t)FLatency;
antis
Вызывайте HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency)
из файла stm32f1xx_hal_rcc_ex.c, там все нормально

Вернее, не вызывайте HAL_RCC_ClockConfig из stm32f1xx_hal_rcc_ex.c, а подключите к проекту файл
stm32f1xx_hal_rcc_ex.c и будет вызвана функция HAL_RCC_ClockConfig из stm32f1xx_hal_rcc_ex.c
ViKo
Атрибут __weak дает шанс каждому (...) написать свою функцию. Что они (...) и делают. Приходится искать по проекту все упоминания нужной функции.
Golikov A.
Цитата
При попытке запуска контроллера на частотах требующих тактов ожидания, естественно ничего не работает.

А это не ускоритель? То есть запуск проца с неправильными циклами просто вызывает тормоза работы, а не прекращение работы, разве нет?
И по умолчанию там не стоит ли на самый медленный вариант?
Конечно плохо что они пропустили атрибут, но думаю не смертельно....

Но этот HAL так запустить быстро поглядеть вообще работает или нет, я чет как не пробую воспользоваться, а все равно половину функций переписывать приходиться, то таймаут воткнут на десятки миллисекунд, то еще что подобное...
SasaVitebsk
Цитата(Golikov A. @ Jun 11 2015, 11:55) *
А это не ускоритель? То есть запуск проца с неправильными циклами просто вызывает тормоза работы, а не прекращение работы, разве нет?

Нет. Запуск проца с неправильными циклами вызывает неработоспособность.
Новость я написал для новичков и начинающих. Понятно что для бывалых это не проблема. )))
Dr.Alex
Цитата(SasaVitebsk @ Jun 11 2015, 08:49) *
Обращаю внимание начинающих программистов на определённые неточности в STM32Cube_FW_F1_V1.0.0.

Таки не понял, почему у вас 1.0.0 когда уже как минимум 1.3.0?
А в 1.0.0-то да, навскидку помню как исправлял определение размера SD, было неправильно. Ещё что-то исправлял, щас не помню.
Golikov A.
Цитата
Нет. Запуск проца с неправильными циклами вызывает неработоспособность.

Да поглядел в книжку, начальное состояние действительно под минимальный клок и просто крутанув частоту все упадет, забавненько....
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.