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

 
 
> 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
scifi
сообщение Jan 7 2015, 12:50
Сообщение #4


Гуру
******

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



Цитата(Corvus @ Jan 7 2015, 14:05) *
Как ни крути, а тенденции таковы, что железячное программирование, вслед за PC-шным становится всё более высокоуровневым и отвязывается от конкретного "железа". Контроллеры становятся всё сложнее, взаимозависимости выставления битиков всё менее очевидны.

Занятный опус.
Но если спуститься с небес на землю, то таймер в STM32 - непростой зверь (что неудивительно, учитывая широкую функциональность). Каким таким образом какой-то HAL может сделать проще? Правильно - никаким, потому что вместе с упрощением уйдёт и часть функциональности. Остаётся сомнительная помощь в установке битов регистров. Сомнительная, потому что для этого достаточно иметь в заголовках дефайны с именами битов. Да и без этого меня совсем не напрягает, заглянув в мануал, расставить битики по местам. Зато при отладке есть полное понимание того, как это работает. И если вдруг что-то не работает, достаточно внимательно посмотреть на содержимое регистров, чтобы понять, что не так.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th August 2025 - 22:36
Рейтинг@Mail.ru


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