Я собираюсь начать с разработки ARM (после 2 лет AVR) и подобрал плату STM DISCOVERY с микропроцессором stm32f4.
Я решил использовать eclipse + ARM gcc, поскольку мне не нравится ограничение кода на Keil, и у меня нет денег, чтобы получить платную версию.
Следуя инструкциям, я установил eclipse вместе с gcc ARM tools + openocd + make utils и т. Д.
Мой вопрос о плагине «пакетов». Как и у любого новичка, я не совсем понимаю, использовать ли новый STM HAL или старый SPL.
Насколько я понимаю, HAL реализовал абстракцию до уровня, где его можно назвать Arduino-эквивалентом для arm. SPL, с другой стороны, обеспечивает достаточно абстракции для ускорения кодирования, но вам все равно нужно работать на уровне чипа.
С этим пониманием я хотел бы придерживаться SPL, чтобы лучше понимать вещи, а не использовать HAL.
Что я хотел бы знать, так это то, что использование пакетов для STM неявно заставляет меня использовать HAL? Если так, может кто-нибудь указать мне, как использовать SPL с моей настройкой?
Ответы:
SPL, как я вижу, не имеет ничего общего с тем, какую IDE вы используете. Вы можете просто включить соответствующие модули (например, stmf4xx_dma.c и stmf4xx_dma.h) в свой проект и использовать функции, представленные (и очень хорошо описанные) в файлах .c и .h. На самом деле я изучал ядро stmf411 с gcc, openocd и SPL, используя только командную строку windows; нет IDE. Пакеты в eclipse, вероятно, заставили бы вас использовать HAL (поскольку в загруженной папке 'Packages' для eclipse я вижу только модули HAL).
Сам HAL IMO кажется гораздо более многослойным, чем необходимо. Принимая во внимание, что доступ к регистрам непосредственно становится утомительным и едва читаемым. SPL кажется правильным. clive1, гуру на форуме st.com, также предпочитает SPL над HAL. Вот мой вопрос на этом форуме ... может быть полезным.
Нужна помощь с USART на Nucleo STMF411
источник
У меня нет опыта работы с HAL, но я много раз использовал SPL для экономии времени. На мой взгляд, целевое сообщество этих встроенных процессоров состоит из 2 групп: первая группа, которая не заинтересована в работе с аппаратными уровнями. Программисты, обычные любители и Arduino, поклонники малины. Если вы находитесь в этой группе, HAL - хороший выбор для вас. Секунды от сообщества электроники и оборудования, которые предпочитают
в
для включения светодиода и хотите знать, что они делают в основном. тогда, если вы находитесь в этой группе и у вас есть достаточно времени для чтения справочного руководства и руководства по программированию вашего MCU, возможно, программирование на уровне регистра - другой выбор. но если вы хотите выбрать один из двух вариантов: у HAL лучшее будущее благодаря поддержке ST ', но SPL - более простой способ понимания для начинающего. Может быть, это может помочь http://www.eevblog.com/forum/microcontrollers/stm32-and-their-hal-library/
источник
Получите эту IDE: System Workbench для STM32 - это бесплатно, основано на Eclipse и содержит как arm-gcc, так и openocd в одном пакете.
А насчет библиотек: помимо SPL и HAL сейчас существуют LL. У каждого есть свои преимущества и недостатки, и вы должны выбрать то, что вам нужно. И, как я понимаю , все они имеют экспериментальный статус для ST. Ниже моих оценок каждому из них:
Краткое описание для моих оценок:
>_<
, все функции для TIM + DMA реализованы для перезаписи регистра TIM и никаких других ...)Для небольшого восстановления HAL: у него есть одно большое преимущество для новичка - его поддерживает STMCubeMX.
РЕДАКТИРОВАТЬ:
Я забыл про libopencm3 - это альтернативная библиотека. Я не использовал это.
источник