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

 
 
> Неточности либо ошибки в STM32Cube_FW_F1_V1.0.0
SasaVitebsk
сообщение Jun 11 2015, 05:49
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Обращаю внимание начинающих программистов на определённые неточности в 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;
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
antis
сообщение Jun 11 2015, 06:14
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 11-01-09
Пользователь №: 43 172



Вызывайте 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

Сообщение отредактировал antis - Jun 11 2015, 06:18
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 11 2015, 07:17
Сообщение #3


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Атрибут __weak дает шанс каждому (...) написать свою функцию. Что они (...) и делают. Приходится искать по проекту все упоминания нужной функции.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jun 11 2015, 08:55
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
При попытке запуска контроллера на частотах требующих тактов ожидания, естественно ничего не работает.

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

Но этот HAL так запустить быстро поглядеть вообще работает или нет, я чет как не пробую воспользоваться, а все равно половину функций переписывать приходиться, то таймаут воткнут на десятки миллисекунд, то еще что подобное...
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jun 11 2015, 09:10
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(Golikov A. @ Jun 11 2015, 11:55) *
А это не ускоритель? То есть запуск проца с неправильными циклами просто вызывает тормоза работы, а не прекращение работы, разве нет?

Нет. Запуск проца с неправильными циклами вызывает неработоспособность.
Новость я написал для новичков и начинающих. Понятно что для бывалых это не проблема. )))
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 11 2015, 09:28
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(SasaVitebsk @ Jun 11 2015, 08:49) *
Обращаю внимание начинающих программистов на определённые неточности в STM32Cube_FW_F1_V1.0.0.

Таки не понял, почему у вас 1.0.0 когда уже как минимум 1.3.0?
А в 1.0.0-то да, навскидку помню как исправлял определение размера SD, было неправильно. Ещё что-то исправлял, щас не помню.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jun 11 2015, 09:48
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
Нет. Запуск проца с неправильными циклами вызывает неработоспособность.

Да поглядел в книжку, начальное состояние действительно под минимальный клок и просто крутанув частоту все упадет, забавненько....
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 04:09
Рейтинг@Mail.ru


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