HAL GPIO Generic Driver. Функции управления портами ввода-вывода.
HAL TIM Generic Driver. Функции управления таймерами.
HAL UART Generic Driver. Функции управления UART.
HAL ADC Generic Driver. Функции управления АЦП.
Ссылки на справочник | Назначение | Ссылки на уроки |
HAL_ADC_Init | Устанавливает конфигурацию АЦП. | |
HAL_ADC_ConfigChannel | Устанавливает конфигурацию выбранного канала регулярной группы. | |
HAL_ADC_DeInit | Деинициализирует АЦП. | |
HAL_ADC_MspDeInit | MSP callback функция инициализации АЦП. | |
HAL_ADC_Start | Разрешает работу АЦП и запускает преобразование регулярной группы. | |
HAL_ADC_Stop | Останавливает преобразование регулярной группы, запрещает работу АЦП. | |
HAL_ADC_PollForConversion | Ожидает окончания преобразования регулярной группы. | |
HAL_ADC_PollForEvent | Ожидание события преобразования. | |
HAL_ADC_Start_IT | Разрешает работу АЦП, запускает преобразование регулярной группы с использованием прерывания. | |
HAL_ADC_Stop_IT | Останавливает преобразование регулярной группы, запрещает работу АЦП и прерывания. | |
HAL_ADC_Start_DMA | Разрешает работу АЦП, запускает преобразование регулярной группы и передает результат через DMA. | |
HAL_ADC_Stop_DMA | Останавливает преобразование регулярной группы, запрещает работу АЦП и DMA. | |
HAL_ADC_GetValue | Чтение результата преобразования регулярной группы. | |
HAL_ADC_IRQHandler | Обработчик прерывания АЦП. | |
HAL_ADC_ConvCpltCallback | Callback-функция завершения преобразования в неблокирующем режиме. | |
HAL_ADC_ConvHalfCpltCallback | Callback-функция завершения передачи половины данных DMA в неблокирующем режиме. | |
HAL_ADC_LevelOutOfWindowCallback | Callback-функция оконного компаратора в неблокирующем режиме. | |
HAL_ADC_ErrorCallback | Callback-функция ошибок АЦП. | |
HAL_ADC_AnalogWDGConfig | Устанавливает конфигурацию оконного компаратора. | |
HAL_ADC_GetState | Чтение состояния АЦП. | |
HAL_ADC_GetError | Чтение кода ошибок АЦП. | |
ADC_Enable | Разрешение работы АЦП. | |
ADC_ConversionStop_Disable | Останавливает преобразование, запрещает работу АЦП. | |
ADC_DMAConvCplt | Callback-функция завершения передачи DMA. | |
ADC_DMAHalfConvCplt | Callback-функция передачи половины данных DMA. | |
ADC_DMAError | Callback-функция ошибки DMA. | |
HAL_ADCEx_Calibration_Start | Выполняет автоматическую самокалибровку АЦП. | |
HAL_ADCEx_InjectedStart | Разрешает работу АЦП и запускает преобразование инжектированной группы. | |
HAL_ADCEx_InjectedStop | Останавливает преобразование инжектированной группы. | |
HAL_ADCEx_InjectedPollForConversion | Ожидает окончания преобразования инжектированной группы. | |
HAL_ADCEx_InjectedStart_IT | Разрешает работу АЦП, запускает преобразование инжектированной группы с использованием прерывания. | |
HAL_ADCEx_InjectedStop_IT | Останавливает преобразование инжектированной группы и запрещает прерывание окончания преобразования. | |
HAL_ADCEx_MultiModeStart_DMA | Разрешает работу АЦП, запускает преобразование регулярной группы и передает результат через DMA. | |
HAL_ADCEx_MultiModeStop_DMA | Останавливает преобразование регулярной группы, запрещает работу АЦП и DMA. | |
HAL_ADCEx_InjectedGetValue | Чтение результата преобразования инжектированной группы. | |
HAL_ADCEx_MultiModeGetValue | Возвращает последнее значение преобразования регулярных групп в сдвоенном режиме. | |
HAL_ADCEx_InjectedConvCpltCallback | Callback-функция завершения передачи в не блокирующем режиме. | |
HAL_ADCEx_InjectedConfigChannel | Устанавливает конфигурацию инжектированной группы и выбранного канала. | |
HAL_ADCEx_MultiModeConfigChannel | Разрешает работу АЦП в режиме сдвоенных преобразований и устанавливает его параметры. |
Я собираюсь начать новый проект на классическом продукте на базе STM32L4. Я хотел бы собрать опыт разработчиков и отзывы по этой теме. В принципе, я хотел бы знать, довольны ли вы этим кодом или наоборот, если вы столкнулись с некоторыми проблемами, если некоторые из вас разработали свои собственные драйверы по некоторым причинам и т. Но это связано с накладными расходами, как уже сказано, и довольно большим набором плохо документированных функций. Это может привести к некоторой путанице.
Поиск данных по Вашему запросу:
Схемы, справочники, даташиты:
Прайс-листы, цены:
Обсуждения, статьи, мануалы:
Содержание:
- Stm32. Протокол USART на HAL. Шаг №84
- Главное меню
- Описание драйверов HAL STM32F4xx, частичный перевод
- Документация к HAL и CUBE на русском
- Описание драйверов HAL STM32F4xx, частичный перевод
- Новая доступная среда разработки для микроконтроллеров STM32
- Низкоуровневые драйверы периферии (LL Drivers) для STM32
- STM Урок 4. Библиотека HAL. STM32 CUBE MX. Светодиоды и кнопка
ПОСМОТРИТЕ ВИДЕО ПО ТЕМЕ: Программирование МК STM32. УРОК 5. Библиотека HAL. STM32 CUBE MX. Таймеры
Совсем недавно компания STMicroelectronics приобрела компанию Atolic , которая занималась разработкой интегрированной среды TrueStudio. Через некоторое время было объявлено, что новые версии TrueStudio будут переориентированы исключительно на STM32 и станут бесплатными. В данной статье кратко описываются основные возможности новой среды, а также рассматривается экосистема микроконтроллеров STM32 в целом. Около десяти лет назад микроконтроллеры семейства STM32 произвели настоящую революцию в отрасли.
Эти быстрые, надежные и, главное, недорогие битные контроллеры стали чрезвычайно популярными среди разработчиков.
При этом компания STMicroelectronics не остановилась на достигнутом и продолжает расширять модельный ряд. Высокий интерес к STM32 также объяснялся наличием грамотно выстроенной экосистемы: каждая новая линейка микроконтроллеров сопровождалась выпуском различных отладочных плат, бесплатных библиотек и различных фирменных утилит от ST.Однако, если с аппаратной частью, библиотеками и утилитами у STM32 все было в полном порядке, то ситуация с интегрированными средами разработки IDE оставалась менее радужной. Впрочем, в STMicroelectronics старались всячески переломить ситуацию. В результате этого пользователи бюджетных микроконтроллеров серии STM32F0 получили бесплатный доступ к полноценной версии среды — правда, с ограничением по объему кода.
Впрочем, 32 кбайт хватает для подавляющего большинства приложений. По мнению экспертов, этот инструмент уступал своим более мощным коммерческим собратьям, однако он позволял создавать бюджетные устройства с минимальными затратами.
Совсем недавно STMicroelectronics объявила о покупке небольшой шведской компании Atolic, которая занималась разработкой достаточно популярной среды TrueStudio. Оглашение дальнейшей дорожной карты развития TrueStudio стало настоящим праздником для любителей STM новые релизы среды будут работать исключительно с STM32, при этом пользователи получат в свое распоряжение всю мощь TrueStudio, которая ранее предоставлялась только с лицензионной версией TrueStudio Pro.
В статье кратко рассматривается модельный ряд и экосистема микроконтроллеров STM32, описываются основные возможности и особенности Atolic TrueStudio, а в дополнительном видео приводится пример взаимодействия TrueStudio и STM32Cube. В настоящий момент компания STMicroelectronics выпускает более моделей микроконтроллеров STM32, объединённых в 11 семейств.
С учетом производительности, уровня потребления и наличия специализированной периферии все семейства можно разделить на четыре целевые ниши рисунок 1 :. Это позволило ускорить процесс продвижения новых микроконтроллеров на рынке. В настоящий момент для STM32 выпускается почти сто разновидностей фирменных отладочных плат, которые делятся на четыре функциональные группы: платы Discovery, платы Nucleo, платы расширения для Nucleo, отладочные платы Evaluation Boards.
Оценочные платы Discovery. Эти оценочные платы содержат целевой микроконтроллер, встроенный отладчик ST-LINK v2 и дополнительную внешнюю периферию: акселерометры, ЖК-дисплеи, кодеки и т. Состав периферии зависит от наименования платы. Сейчас к услугам разработчиков — 25 различных плат Discovery для микроконтроллеров практически всех семейств рисунок 2.
Примеры наборов Discovery. Платы Nucleo. Эти стековые палаты в первую очередь предназначены не для автономной работы, а для совместного использования с различными платами расширения в популярных стеках.
Наборы Nucleo. Платы расширения для Nucleo. Эти платы не относятся напрямую к микроконтроллерам STM32, однако именно они расширяют функционал плат Nucleo. Пример реализации стека на базе STM32 Nucleo Отладочные платы Evaluation Boards. Данный тип плат предназначен для максимально полного ознакомления с работой микроконтроллеров STM32 в конкретных приложениях управление двигателем, мультимедийные системы и т.
На Evaluation Boards всегда присутствует богатый набор специализированной периферии: дисплеи, приемопередатчики, МЭМС-датчики, кодеки, память, драйверы и т. Пример отладочных плат от STMicroelectronics.
Экосистема STM32 предоставляет широкий выбор программных библиотек и средств разработки как от STMicroelectronics, так и от сторонних компаний. При этом фирменное ПО от ST обладает огромным преимуществом — оно бесплатное. Библиотеки нижнего уровня.
При их использовании разработчику приходится общаться не с отдельными регистрами и полями регистров, а с законченными функциями. Таким образом, отпадает необходимость в доскональном изучении архитектуры контроллера. Это с одной стороны сокращает время написания кода, а с другой стороны делает его более понятным. Библиотеки среднего уровня. Кроме низкоуровневых драйверов STMicroelectronics предлагает использовать различные специализированные библиотеки, например, для создания файловой системы, для реализации операционных систем, для работы с USB и т.
Специализированные утилиты. Этот инструмент имеет широкий функционал. Структура программной платформы STM32Cube. Основными достоинствами данной среды являются:. Зачем нужна еще одна среда разработки, какие изменения ждут пользователей TrueStudio, и что может предложить новая IDE пользователям?
После этого ST продолжила двигаться в схожем направлении и приобрела компанию Atolic, которая занималась разработкой среды TrueStudio. С первого взгляда это кажется не вполне логичным, однако, понять этот шаг можно. Дело в том, что AC6 System Workbench изначально была некоммерческим проектом, и ее функционал, видимо, не до конца устраивал ST. Совсем недавно ST объявила о своих планах развития TrueStudio. Для пользователей наиболее значимыми будут следующие изменения:. Инструкция по скачиванию представлена в видеоролике, дополняющем данную статью.
Процесс установки TrueStudio максимально прост. Все необходимые блоки и модули входят в состав установщика. От пользователя потребуется минимум усилий при инсталляции.
Краткая инструкция по установке также представлена в видеоролике. Программная платформа. TrueStudio является полноценной интегрированной средой разработки встраиваемого ПО для микроконтроллеров STM32 рисунок 8.
Это не удивительно, так как обе среды используют платформу Eclipse. Сходство на этом не заканчивается. Поддерживаемые микроконтроллеры. TrueStudio работает только с STM32 и поддерживает все микроконтроллеры семейства.
Пользователь может открыть готовые демонстрационные проекты без скачивания каких-либо дополнительных файлов. Работа с проектами. Существует возможность создания дерева проектов, что весьма удобно при параллельной работе с несколькими приложениями. Работа с файлами. Компиляция и построение проекта. При этом возможна оптимизация кода в процессе компиляции. TrueStudio дает пользователям возможность ручного размещения кода и данных в памяти микроконтроллера.
Программа обеспечивает формирование исполнительного кода в различных форматах, а также позволяет создавать статические библиотеки, что значительно экономит время на перекомпиляцию. Среда имеет поддержку точек останова и пошагового выполнения.
В процессе отладки программист получает доступ ко всем регистрам и памяти. Кроме того к услугам пользователя также предлагаются различные анализаторы памяти, стека, ошибок. Стоит отметить, что процесс отладки в TrueStudio мало чем отличается от работы с другими аналогичными средами. Поддержка систем контроля версий. Взаимодействие с STM32Cube. Как было сказано выше, применение STM32Cube значительно упрощает работу программистов на этапе инициализации микроконтроллеров.
STM32Cube позволяет создавать готовый проект TrueStudio с генерацией структуры проекта, автоматическим формированием исходников, включением всех необходимых директив. Небольшой проект, демонстрирующий взаимодействие STM32Cube и TrueStudio, представлен в видеоролике, дополняющем данную статью. В конце года компания STMicroelectronics объявила о покупке фирмы Atolic, выполнявшей разработку интегрированной среды TrueStudio.
Теперь с помощью TrueStudio пользователи STM32 могут совершенно бесплатно создавать приложения любой сложности. Примеры наборов Discovery Платы Nucleo. Наборы Nucleo Платы расширения для Nucleo. Фильтрация производится по различным полям серия, корпус, объем памяти и т.
При этом для генерации С-кода могут использоваться различные библиотеки от ST HAL или LL ; Оценивать уровень потребления и срока службы аккумулятора при заданных настройках микроконтроллера с помощью утилиты Power consumption Wizard. Для пользователей наиболее значимыми будут следующие изменения: В новых версиях TrueStudio останется возможность работы только с STM32; Поддержка старых лицензионных версий TrueStudioPro продолжится в течение 1 года; Новые версии TrueStudio станут бесплатными и будут обладать неограниченным функционалом TrueStudioPro.
Основные возможности TrueStudio Программная платформа. Интерфейс TrueStudio Поддерживаемые микроконтроллеры. Заключение В конце года компания STMicroelectronics объявила о покупке фирмы Atolic, выполнявшей разработку интегрированной среды TrueStudio. Доступно: шт. Высокопроизводительный микроконтроллер с широким спектром периферийных устройств. Доступно: 71 шт. Доступно: 66 шт. Сравнение позиций. Выбор города доставки.
Продолжить покупки Перейти в корзину. Производитель: STMicroelectronics. Купить в корзине.
Нажимая на кнопку, вы даете согласие на обработку своих персональных данных. Нажимая на кнопку, вы даете согласие на обработку своих персональных данных и обратную связь со специалистами PT Electronics. Отныне разработчики получили большую гибкость в выборе способа управления периферией микроконтроллера благодаря комбинации низкоуровневых API и высокоуровневых HAL библиотек во всех пакетах STM32Cube. Разработчик может применить HAL для простоты разработки и переносимости кода или LL API для оптимизации производительности, размера кода и энергопотребления.
В основном для STM32 с использованием Standart Peripheral Library. Недавно попытался пересесть на их HAL под названием CUBE.
Логин или эл. Войти или Зарегистрироваться. Авторизация Логин или эл. Делюсь небольшой проделанной работой — это частичный перевод оригинального описания Введение STM32Cube является оригинальной разработкой STMicroelectronics, предназначенной для разработчиков программного обеспечения ПО , встроенного в микроконтроллеры STM Драйверы уровня HAL представляют собой комплект универсальных, многофункциональных, и одновременно простых интерфейсов API, предназначенных для взаимодействия МК с верхним слоем ПО основной программой, библиотеками и стеками. Драйверы могут иметь как общий generic , так и расширенный extension API. HAL разработан для применения такой архитектуры программирования, когда необходимые функции выполняются верхним слоем приложения, за счет применения промежуточного уровня HAL.
Меня частенько упрекают, что я даю материал в слишком трудной манере и не по порядку. Спешу вас расстроить, я и дальше буду следовать этой логике. Учат они чему-то? Не уверен.
Artwork by dangercook. User Manual UM
Всем привет. Используем библиотеки HAL. Рассмотрим архитектуру. Читаем мануал. Мы также в нашем проекте будем использовать прямой доступ к памяти, то есть использовать передачу данных в Uart ,без участия процессора. Каждый из которых предназначен для управления запросами доступа к памяти от одного или нескольких периферийных устройств.
Библиотека STM32Cube версии 1. Шина USB — самое полезное в истории персональных компьютеров средство для подключения различных устройств, таких как мышь, геймпады, джойстики, сканеры, принтеры, цифровые камеры и т. USB также встраивается в большинство потребительской и мобильной электроники. Чтобы получить дополнительную информацию по примерам реализации на Вашем STM32, обратитесь к файлу readme, предоставленному в соответствующем пакете STM32Cube. Используемые аббревиатуры и термины. CBW Command Block Wrapper, блок команды SCSI, который содержит информацию длины команды, направление, логический юнит LUT , куда отправляется команда, и уникальный идентификатор, который будет возвращен в ответ от устройства, который может использоваться для проверки соответствия ответа запросу хоста. Command Block Wrapper отправляется устройству с использованием первого направления Out конечной точки Block интерфейса перед тем, как любые данные будут отправлены устройству или приняты из него.
HAL (Hardware Abstraction Layer) — это библиотека для создания приложений на stm32, разработанная компанией ST в году.
В чем смысл, Бэрримор?! Одноразовый вызов функции или «две строчки», кроме повышенной когнитивной нагрузки как на писателя, так и на будущего читателя — разницы нет. Так ради чего?
В свое время, более 5 лет, при поиске информации о разрядных микроконтроллерах, обратил внимание, что практически все примеры для STM32 подразумевали использование SPL Standard Peripherals Library. Содержит функции, структуры и макросы для облегчения работы с периферией микроконтроллера. Бытует мнение, что использование регистров микроконтроллера — это более сложный путь, чем использовать обертки из внешних библиотек. Попробую показать, что это не всегда так. Примеры инициализации регистров с комментариями.
Вход Регистрация Восстановление пароля Вход Запомнить меня. Получить ссылку на изменение пароля.
Сегодня мы познакомимся с библиотекой HAL. Данная библиотека, в отличие от SPL, широко используется и поддерживается. Также для более комфортного использования данной библиотеки мы будем пользоваться программой для первоначальной настройки и генерации кода для среды программирования — STM32CubeMX. Устанавливаем его может потребоваться установка Java. А можно и так как на рисунке нажмите на картинку для увеличения размера.
В очередной раз хочется что-то улучшить, попробовал взять от жизни от Куба и STM программистов побольше. Попробовал автоматом сгенерированный проект- На нужном мне незнакомом до этого STM32F0 камне поставить FreeRTOS и в одной из задач помигать светодиодом- заняло примерно пару часов вместе с установкой новой версии кейла и Куба. Причем задача тоже была создана из конфигуратора Куба.
Изучение программирования ПЛК – бесплатно 6 – De…
Включите JavaScript
Изучение программирования ПЛК – бесплатно 6 – Десятичная/двоичная нумерация в ПЛК
STMCube ® — это оригинальная инициатива STMicroelectronics, направленная на упрощение и ускорение цикла разработки встраиваемых продуктов. STM32Cube охватывает портфолио микроконтроллеров STM32.
Он предоставляет разработчику все низкоуровневые драйверы, API-интерфейсы и позволяет ему/ей посвятить большую часть усилий разработке прикладного уровня и любого необходимого промежуточного программного обеспечения.
STM32CubeMX, графический инструмент настройки программного обеспечения, который позволяет генерировать код инициализации C с помощью графических мастеров.
Уровень аппаратной абстракции (HAL) STM32Cube, встроенное программное обеспечение уровня абстракции STM32, обеспечивающее максимальную переносимость между микроконтроллерами STM32. HAL доступен для всех аппаратных периферийных устройств.
Низкоуровневые API-интерфейсы (LL), предлагающие быстрый и легкий уровень, ориентированный на экспертов, который ближе к оборудованию, чем HAL. API-интерфейсы LL доступны только для набора периферийных устройств.
HAL и LL дополняют друг друга и охватывают широкий спектр требований приложений:
Исходный код драйверов HAL и LL разработан в строгом стандарте ANSI-C, что делает его независимым от средств разработки. Он полностью задокументирован и совместим с MISRA-C 2004.
HAL GPIO APIS
HAL Подробный Описание Функции
. Микроконтроллеры STM32. Включая таймеры, АЦП, USART, I2C, USB, ЦАП, компараторы и т. д.
Мы настроим эти периферийные устройства и сгенерируем C-код инициализации с помощью программного инструмента CubeMX. Вот скриншот того, как это выглядит внутри интерфейса, где мы, например, настраиваем модуль таймера.
Конфигурация модуля аппаратного таймера в Cubemx
Использование Device Device Device STM32 может быть преимущественным во многих ситуациях и в обеспечении развития. Особенно для проектов, попадающих в категорию «доказательство концепции». Я думаю, что никто не хочет тратить столько времени на создание полного стека программного обеспечения для конкретной цели, тогда это доказывает, что основная идея нуждается в дополнительной доработке или сама цель не работает достаточно хорошо.
Однако API-интерфейсы среднего уровня, предоставляемые HAL, могут иметь больше возможностей, чем вам может понадобиться в некоторых ситуациях. Таким образом, вы в конечном итоге используете больше памяти и выполняете некоторые задачи немного медленнее из-за накладных расходов на функции, встроенные в библиотеки.
Вы можете использовать драйверы LL и больше оптимизировать на уровне регистров, чтобы улучшить использование памяти или скорость выполнения. Тем не менее, приложение в конце не будет легко переносимо между несколькими целями.
В общем, мы будем использовать инструмент STM32 CubeMX для генерации C-кода драйверов HAL + LL для инициализации нашего оборудования. Затем мы будем разрабатывать прикладной уровень и кое-что промежуточного программного обеспечения.
В основном мы сосредоточимся на уровне ECUAL, создав некоторые драйверы прошивки и протестировав их в различных приложениях. Эти драйверы должны быть легко реконфигурируемыми и полностью переносимыми.
Чтобы добиться реконфигурируемости, мы будем использовать то, что называется «Конфигурация связывания», о котором вы узнаете из следующих руководств. И для достижения требования переносимости драйверы будут полностью основаны на драйверах STM HAL + LL, которые имеют унифицированные API для всех микроконтроллеров STM32. Таким образом, вы можете использовать код, предоставленный в практических лабораторных работах в этой серии руководств, и создать его для вашего конкретного целевого микроконтроллера, каким бы он ни был, он должен работать!
Драйверы ECUAL, которые мы будем создавать, включают: [Серводвигатели — Клавиатура — ЖК-дисплей — Ультразвуковой HC-SR04 — Джойстик — и многое другое..]. Вы можете ознакомиться с ними, если вам интересно, или просто продолжать следовать этим руководствам.
Это краткое введение в библиотеку STM32 HAL и инструмент CubeMX. В следующем уроке мы познакомимся с аппаратными портами и контактами GPIO. Как это работает, а также внутренние схемы и функции, которые вы можете настроить в различных приложениях. После этого мы сможем начать первую лабораторную работу в этой серии руководств и «Мигнуть светодиодом!».
Присоединяйтесь к нашим более чем 25 000 подписчиков на рассылку новостей!
Будьте в курсе всех новых выпусков контента. Вы также получаете случайные БЕСПЛАТНЫЕ коды купонов для курсов и других вещей!
Введите адрес электронной почты…
Автор
Я инженер встраиваемых систем с многолетним опытом разработки встроенного программного и аппаратного обеспечения. Я работаю инженером по встроенному ПО в автомобильной промышленности. Тем не менее, я по-прежнему занимаюсь проектированием оборудования и разработкой программного обеспечения для DSP, систем управления, робототехники, искусственного интеллекта/машинного обучения и других областей, которыми я увлечен. Я люблю читать, писать, создавать проекты и заниматься технической подготовкой. Читатель днем и писатель ночью, это мой образ жизни. Вы можете просмотреть мой профиль или подписаться на меня через контакты.
Отказ от ответственности: если существует такая вещь, как окончательный ответ, конечно, он не может быть единственным. Поэтому я призываю всех комментировать и читать комментарии для разных точек зрения. Возможно, это могло бы стать справочным постом для ссылок в будущем. Также обратите внимание, что мой пост может быть предвзятым, потому что я работаю в основном на STM32 (кора от M0 до M33) и являюсь пользователем HAL, но я постараюсь смягчить его.
Плюсы:
HAL ускорит разработку, потому что он прост в использовании. Это особенно актуально для первых прототипов или примеров, когда вам не нужны обширные тесты, но вам нужно что-то показать быстро.
HAL обычно делает код легко переносимым внутри той же марки/производителя.
HAL безопаснее, чем прямой доступ к регистрам. Действительно, существуют меры безопасности, такие как утверждения, и они обеспечивают уровень абстракции, который не позволит вам совершать слишком большие ошибки и предупредит вас о них (если вы потратите время на чтение кодов ошибок).
Минусы:
Непонимание основного аппаратного обеспечения делает вас плохим/средним программистом встраиваемых систем. Вы не можете писать чувствительный код, используя части прошивки, такие как HAL, которые вы не понимаете. Иногда применяются ограничения или возникают недокументированные побочные эффекты с другими периферийными устройствами. Вы должны прочитать код и понять, что происходит.
HAL замедлит ваш код. Хотя это правда, что HAL медленнее, чем просто ручная адресация необходимых периферийных регистров, это в значительной степени смягчается компилятором, который может оптимизировать многие вещи в зависимости от того, как вы кодируете. Реальный вопрос, который вы должны задать, заключается в том, повлияет ли замедление на ваше приложение. В более чем 90% случаев HAL не окажет достаточно значительного влияния, чтобы оправдать накладные расходы на разработку, если вы сделаете это самостоятельно. И когда это так, вам может просто понадобиться оптимизировать одну конкретную функцию вместо того, чтобы снова выбрасывать весь HAL.
HAL раздует ваш код. Хотя это в какой-то степени верно, объем памяти в современных чипах в большинстве случаев делает его незначительным. Если вам нужно больше памяти, проверьте свой код в глобальном масштабе, прежде чем обвинять HAL, и подумайте о стоимости разработки, удаляющей HAL, по сравнению с покупкой более крупного чипа в семействе. Действительно, когда можно оставаться в одном семействе MCU, стоимость разработки почти нулевая.
Миф (помните, что у каждого мифа есть реальная подоплека):
HAL «полны» неприятных ошибок. Вы действительно считаете, что ваш код не содержит ошибок? Если это так, то это может быть только так после обширных испытаний. Использование HAL не означает, что вам не нужно тестировать его в своем приложении. Я хотел бы добавить, что даже если в некоторых HAL будет больше ошибок, чем в других, вы можете подумать, что код, протестированный сотнями людей в сотнях приложений, будет лучше, чем все, что вы могли бы написать в одиночку.