user

Авторизация

Добро пожаловать!

Регистрация

Graf

stm32

Библиотека STM32 HAL

 STMCube ® — это оригинальная инициатива STMicroelectronics, направленная на упрощение и ускорение цикла разработки встроенных продуктов. STM32Cube охватывает линейку микроконтроллеров STM32.

 Он предоставляет разработчику все низкоуровневые драйверы, API-интерфейсы и позволяет ему/ей посвятить большую часть усилий разработке уровня приложения и любого необходимого промежуточного программного обеспечения.

Драйверы библиотеки STM32 HAL   

 STM32CubeMX, графический инструмент настройки программного обеспечения, который позволяет генерировать код инициализации C с помощью графических мастеров.

 Уровень аппаратной абстракции STM32Cube (HAL), встроенное программное обеспечение уровня абстракции STM32, обеспечивающее максимальную переносимость между микроконтроллером STM32. HAL доступен для всех периферийных устройств.

 Низкоуровневые API (LL) предлагают быстрый и легкий экспертно-ориентированный уровень, который ближе к аппаратному обеспечению, чем HAL. API-интерфейсы LL доступны только для набора периферийных устройств.

 HAL и LL дополняют друг друга и охватывают широкий спектр требований приложений:

  • HAL предлагает высокоуровневые и функционально-ориентированные API с высоким уровнем переносимости. Они скрывают от конечного пользователя сложность MCU и периферийных устройств.
  • LL предлагает низкоуровневые API на уровне регистров с лучшей оптимизацией, но меньшей переносимостью. Они требуют глубоких знаний спецификаций микроконтроллера и периферийных устройств.

 Исходный код драйверов HAL и LL разработан в строгом ANSI-C, что делает его независимым от инструментов разработки. Он полностью документирован и соответствует стандарту MISRA-C 2004.

 Примеры драйверов STM32 HAL

Подробное описание функций HAL 

Аналогичным образом, почти для всех периферийных устройств в микроконтроллерах STM32 имеются аппаратные драйверы низкого уровня. Включая таймеры, АЦП, USART, I2C, USB, ЦАП, компараторы и т. д.

 Мы настроим эти периферийные устройства и сгенерируем C-код инициализации с помощью программного инструмента CubeMX. Вот скриншот того, как это выглядит внутри интерфейса, где мы, например, настраиваем модуль таймера.

Конфигурация модуля аппаратного таймера в CubeMX

 STM32 HAL Заключительные замечания   

 Использование драйверов устройств STM32 HAL может оказаться полезным во многих ситуациях и помочь сократить время разработки. Особенно для проектов, попадающих в категорию «проверка концепции». Я думаю, никто не хочет тратить столько времени на создание полного стека программного обеспечения для конкретной цели, тогда это доказывает, что основная идея нуждается в доработке или сама цель работает недостаточно хорошо.

 Однако API-интерфейсы умеренно высокого уровня, предоставляемые HAL, могут иметь больше функций, чем то, что вам действительно может понадобиться в некоторых ситуациях. Таким образом, вы в конечном итоге используете больше места в памяти и выполняете некоторые задачи немного медленнее из-за накладных расходов на функции, встроенные в библиотеки.

 Вы можете использовать драйверы LL и дополнительно оптимизировать уровень регистров, чтобы улучшить использование памяти или скорость выполнения. Однако в конечном итоге приложение будет нелегко переносить на несколько целей.

 В общем, мы будем использовать инструмент STM32 CubeMX для генерации C-кода драйверов HAL + LL для инициализации нашего оборудования. Затем мы займемся разработкой прикладного уровня и некоторого промежуточного программного обеспечения.

Многоуровневая архитектура встроенного программного обеспечения STM32

 В основном мы сосредоточимся на уровне ECUAL, создавая некоторые драйверы прошивки и тестируя их в различных приложениях. Эти драйверы должны быть легко реконфигурируемыми и полностью переносимыми.

 Чтобы добиться возможности реконфигурации, мы будем использовать так называемую «Конфигурацию связи», о которой вы узнаете в следующих руководствах. А чтобы удовлетворить требования переносимости, драйверы будут полностью основаны на драйверах STM HAL + LL, которые имеют унифицированные API для всех микроконтроллеров STM32. Таким образом, вы можете использовать код, представленный в практических занятиях этой серии руководств, и собрать его для вашего конкретного целевого микроконтроллера, каким бы он ни был, он должен работать!

 Драйверы ECUAL, которые мы будем создавать, включают: [ Серводвигатели – Клавиатура – ​​ЖК-дисплей – Ультразвуковой преобразователь HC-SR04 – Джойстик – и многое другое..]. Вы можете ознакомиться с ними, если вам интересно, или просто продолжать следовать этим урокам.

 Вот и все, что касается краткого введения в библиотеку STM32 HAL и инструмент CubeMX. В следующем уроке мы познакомимся с аппаратными портами и контактами GPIO. Как это работает, а также внутреннюю схему и функции, которые вы можете настроить в различных приложениях. После этого мы сможем начать первое лабораторное занятие в этой серии уроков и «Мигнуть светодиодом!».