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

 
 
> STM32F4 и HAL, Осваиваю Cortex4 от ST
mag
сообщение Jan 7 2015, 09:47
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 28-01-05
Из: Таганрог
Пользователь №: 2 280



Добрый день!

Приступил к освоению Cortex. Имеется KIT STM32F4DISCOVERY.
Первично, до заказа KIT, информация от ST, о их детище под названием HAL (и возможностях появляющихся ввиду его применения) порадовала (после 8 битных MCU). Но при "лобовом" столкновении, радость моя притаилась sm.gif.
При попытке написания своего проекта возникли вопросы. Не до конца понятно как же работать с HALом? Где найти недостающую информацию?
Поясню на примере:

Есть желание использовать таймер в режиме "Output compare mode". HAL содержи функцию инициализации таймера HAL_TIM_OC_Init(). Ей нужно передать указатель на структуру:

TIM_HandleTypeDef
Data Fields
TIM_TypeDef * Instance
TIM_Base_InitTypeDef Init
HAL_TIM_ActiveChannel Channel
DMA_HandleTypeDef * hdma
HAL_LockTypeDef Lock
__IO HAL_TIM_StateTypeDef State

TIM_Base_InitTypeDef
Data Fields
uint32_t Prescaler
uint32_t CounterMode
uint32_t Period
uint32_t ClockDivision
uint32_t RepetitionCounter

Структура сделана универсальной на все случаи. Какие поля необходимы в требуемом мне режиме? В документации на HAL поля структуры описаны крайне лаконично. Проведения параллелей с Reference manual stm32f4хх не всегда возможно. Из примеров, поставляемых с KIT видно, что далеко не все поля структур заполняются при настройке таймера.

Вообщем пока я не нашел "ключа" к HALу. Заниматься исследованием HALа методом проб и ошибок глупо; смотреть потроха функций HALа - больно трудоемко и непрактично.
Подскажите, как Вы работаете с HALом? Может я не нашел нужной pdf?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
scifi
сообщение Jan 7 2015, 10:15
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Я никогда эти "блюмблюатеки" не пользовал, поэтому предвзят. Но всё равно добавлю свои 5 копеек.
Вижу пользу от этих библиотек только в стандартных ситуациях: настроить тактирование, сконфигурировать пин и т.д. Реально можно сэкономить время, ИМХО.
Но таймер - это совсем другой случай. Учитывая все его режимы и возможности взаимодействия с другими таймерами, там наберётся примерно 100500 различных сценариев использования. Чем там может помочь какой-то HAL - ума не приложу. Скорее, он там будет мешать. В описании таймера фигурируют регистры, их и надо настраивать напрямую. Какая-то мутная надстройка над регистрами со своими глюками и без описания - бред какой-то, честное слово.
Go to the top of the page
 
+Quote Post
Corvus
сообщение Jan 7 2015, 11:05
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 24-04-08
Из: Зеленоград
Пользователь №: 37 056



Если настрой такой, что
Цитата
Какая-то мутная надстройка над регистрами со своими глюками и без описания - бред какой-то, честное слово.
, тогда путного ничего не выйдет.

А так, имён переменных и комментариев вполне достаточно, чтоб провести параллель с референсным мануалом. rolleyes.gif Как ни крути, а тенденции таковы, что железячное программирование, вслед за PC-шным становится всё более высокоуровневым и отвязывается от конкретного "железа". Контроллеры становятся всё сложнее, взаимозависимости выставления битиков всё менее очевидны. Пока что HAL для того же STM - это банальная обёртка, а впереди уже набор готовых функций и совершенствование автогенерации кода. Новый виток борьбы парадигм, после ассемблер - C. biggrin.gif

А волшебной pdf никакой нет.
Цитата
Какие поля необходимы в требуемом мне режиме?

Тут, что с HAL, что без, какая разница? Смотрите аппноуты от ST на применение того же таймера в нужном режиме.
Go to the top of the page
 
+Quote Post
mag
сообщение Jan 7 2015, 11:59
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 28-01-05
Из: Таганрог
Пользователь №: 2 280



Цитата(Corvus @ Jan 7 2015, 14:05) *
А так, имён переменных и комментариев вполне достаточно, чтоб провести параллель с референсным мануалом. rolleyes.gif
Тут, что с HAL, что без, какая разница? Смотрите аппноуты от ST на применение того же таймера в нужном режиме.


Corvus, нет, настрой "нормальный", без "мутности". Отказаться от HAL можно для случая когда все сам и долго и нудно. Если же хочется пользоваться готовыми и отлаженными вещами, что в терминологии ST названо middleware, то без HALа не пойдет дело.

А по поводу параллелей, давайте на моем примере разберем:

TIM_HandleTypeDef
Data Fields
TIM_TypeDef * Instance
TIM_Base_InitTypeDef Init
HAL_TIM_ActiveChannel Channel
DMA_HandleTypeDef * hdma
HAL_LockTypeDef Lock
__IO HAL_TIM_StateTypeDef State

TIM_Base_InitTypeDef
Data Fields
uint32_t Prescaler
uint32_t CounterMode
uint32_t Period
uint32_t ClockDivision
uint32_t RepetitionCounter

Вот что нужно и нужно ли писать в выделенные поля и нужно ли и если да то зачем писать значение в uint32_t Period?
Чтобы ответить на этот вопрос - пока вижу один путь - лезть в потроха HALа. Но мне кажется это не правильным (где же тогда скорость и удобство разработки; абстракция от аппаратуры?).

Цитата
Смотрите аппноуты от ST на применение того же таймера в нужном режиме
если не сложно - ссылочку (похоже я не все нашел).
Go to the top of the page
 
+Quote Post
Corvus
сообщение Jan 7 2015, 12:17
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 24-04-08
Из: Зеленоград
Пользователь №: 37 056



uint32_t Period, как видно из названия - период работы таймера.
Настройка DMA для "Output compare mode" вам не нужны.

Документация по таймерам
http://www.st.com/web/en/resource/technica.../DM00042534.pdf
в частности, OCR-mode на стр. 13
Там же
Цитата
For more details on using the timer in this mode, refer to the examples provided in the
STM32xx standard peripheral libraries, in the /Project/STM32xx_StdPeriph_Examples/
TIM/OC_Toggle, /OCActive and /OCInactive folders.


И всё же, советую залезть в "потроха". В stm32f4xx_tim.h ничего страшного нет, зато вполне понятные комментарии к структурам, их полям и возможным значениям.
Go to the top of the page
 
+Quote Post



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

 


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


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