SapegoAL 0 11 июня, 2015 Опубликовано 11 июня, 2015 · Жалоба Обращаю внимание начинающих программистов на определённые неточности в 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 1 11 июня, 2015 Опубликовано 11 июня, 2015 (изменено) · Жалоба Вызывайте 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 Изменено 11 июня, 2015 пользователем antis Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 11 июня, 2015 Опубликовано 11 июня, 2015 · Жалоба Атрибут __weak дает шанс каждому (...) написать свою функцию. Что они (...) и делают. Приходится искать по проекту все упоминания нужной функции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 11 июня, 2015 Опубликовано 11 июня, 2015 · Жалоба При попытке запуска контроллера на частотах требующих тактов ожидания, естественно ничего не работает. А это не ускоритель? То есть запуск проца с неправильными циклами просто вызывает тормоза работы, а не прекращение работы, разве нет? И по умолчанию там не стоит ли на самый медленный вариант? Конечно плохо что они пропустили атрибут, но думаю не смертельно.... Но этот HAL так запустить быстро поглядеть вообще работает или нет, я чет как не пробую воспользоваться, а все равно половину функций переписывать приходиться, то таймаут воткнут на десятки миллисекунд, то еще что подобное... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SapegoAL 0 11 июня, 2015 Опубликовано 11 июня, 2015 · Жалоба А это не ускоритель? То есть запуск проца с неправильными циклами просто вызывает тормоза работы, а не прекращение работы, разве нет? Нет. Запуск проца с неправильными циклами вызывает неработоспособность. Новость я написал для новичков и начинающих. Понятно что для бывалых это не проблема. ))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dr.Alex 0 11 июня, 2015 Опубликовано 11 июня, 2015 · Жалоба Обращаю внимание начинающих программистов на определённые неточности в STM32Cube_FW_F1_V1.0.0. Таки не понял, почему у вас 1.0.0 когда уже как минимум 1.3.0? А в 1.0.0-то да, навскидку помню как исправлял определение размера SD, было неправильно. Ещё что-то исправлял, щас не помню. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 11 июня, 2015 Опубликовано 11 июня, 2015 · Жалоба Нет. Запуск проца с неправильными циклами вызывает неработоспособность. Да поглядел в книжку, начальное состояние действительно под минимальный клок и просто крутанув частоту все упадет, забавненько.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться