Если вы готовы пойти на компромисс в отношении портативности и простоты использования, вы можете использовать драйверы низкого уровня (LL), предоставляемые ST.Как дополнительная выгода ваша производительность может также увеличиться.
Сообщение от форумов ST:
Драйверы низкого уровня (LL) предназначены для создания быстрого и легкого ориентированного на экспертов слоя, который ближе к аппаратному обеспечению, чем HAL.В отличие от HAL, API-интерфейсы LL не предоставляются для периферийных устройств, где оптимизированный доступ не является ключевой функцией, или для тех, которые требуют тяжелой конфигурации программного обеспечения и / или сложного стека верхнего уровня (такого как USB).
HAL и LLДрайверы дополняют друг друга и охватывают широкий спектр требований приложений:
- HAL предлагает высокоуровневые и функционально-ориентированные API-интерфейсы с высоким уровнем переносимости.Они скрывают MCU и сложность периферийных устройств для конечного пользователя.
- LL предлагает низкоуровневые API на уровне регистров с лучшей оптимизацией, но меньшей мобильностью.Они требуют глубокого знания спецификаций MCU и периферийных устройств
Функция драйверов LL:
Набор функций для инициализации основных функций периферийных устройств в соответствии с указанными параметрамив структурах данных
Набор функций, используемых для заполнения структур данных инициализации значениями сброса каждого поля
Функции для выполнения периферийных операцийинициализация (для периферийных регистров восстановлены их значения по умолчанию)
Набор встроенных функций для прямого и атомарного доступа к реестру
Полная независимость от HAL, посколькуДрайверы LL могут использоваться либо в автономном режиме (без драйверов HAL), либо в смешанном режиме (с драйверами HAL)
Драйверы нижнего уровня предоставляют аппаратные услуги на основе доступных функций STM32.периферийные устройства.Эти сервисы точно отражают аппаратные возможности и обеспечивают однократные операции, которые должны вызываться в соответствии с моделью программирования, описанной в справочном руководстве по линиям микроконтроллера.В результате службы LL не осуществляют никакой обработки и не требуют каких-либо дополнительных ресурсов памяти для сохранения своих состояний, счетчиков или указателей данных: все операции выполняются путем изменения содержимого соответствующих периферийных регистров.
Link