hal?
SPL
Неподдерживаемые библиотеки HAl_LL же
Если стоит такой вопрос, то STM32 надо начинать с AVR. :) Это отличная модельная архитектура, на которой удобно понять, как контроллер вообще в принципе работает. А обучаться, конечно, надо на регистрах. Иначе не будет понимания внутренней структуры. А когда это понимание будет, то дальше можно использовать что лучше подходит в конкретном проекте.
Зависит от задач. Hal и cubeide - быстро и сердито Регистры. Долго, сложно, но позволят реализовывать более сложные программы, не выжирая все место халовскими библиотеками.
Не сказал бы что регистры - сложно. Долго, муторно - это да.
В stm32? В старых avr/pic еще туда сюда, в стмках рока вкуришь нормально, вся водка закончится. Но опять же, вопрос задач. У меня в свое время задачи стояли: срочно и вчера, поэтому до сих пор сижу на хале. Из минусов - раздутый код. Сейчас уже постоянная оптимизация в скорость стоит. В остальном даже говнокод стабильно крутится.
Все (многие) говорят про понимание, как работает микроконтроллер через понимание внутренней структуры. Одни пишут про работу с регистрами, другие пишут про работу с регистрами на ассемблере... Что вообще значит "понимание внутренней структуры"? Желательно на примерах, можно абстрактных.
Это значит что нужно как минимум раз даташит полностью прочитать
Понимание внутренней структуры предполагает понимание архитектуры вычислительных систем и принципов построения программируемых устройств на базе элементарной цифровой логики.
Читать его целиком смысла нет. Надо уметь понять любой произвольно взятый кусок даташита.
для STM придется перечитать целую пачку даташитов и мануалов, по которым разбросана инфа. Описание выводов в одном, регистров - в другом, тактирования - в третьем...
Именно по этой причине я рекомендую для начального ознакомления AVR - там все в одном документе. :) И читать его совместно с трудом H&H https://is.ifmo.ru/books/2016/digital-design-and-computer-architecture-russian-translation_July16_2016.pdf
И так вы поймёте структуру прочтенного куска
Если человек не знает, что такое регистр или SPI - он не поймет.
Или пики! Еще проще и ортогональнее
Или MSP430. Ну, короче, что-то простое, где полтора порта и один таймер.
Надеюсь он читать/писАть умеет?
Ну в чат же пишет. Так что с этим все в порядке.
А хрен знает. Сейчас время такое неоднозначное
У пичка инструкций меньше и все ровные
Ну не так уж и много
Да... особенно 16 серия прилизана очень хорошо
Для начинающего это будет ад. Я сам долго привыкал после AVR. :)
Согласен. Стм для первоходов может быть смертелен
Это надо сначала простую логику и основные логические элементы изучать, потом триггеры на них собирать и т.д. Так можно до МК не дойти никогда. Можно же чуть проще понять о наличии шин адреса и данных и АЛУ, ОЗУ и т.д. И все равно ничего не понимать.
Я там выше дал ссылку на нужную книжку.
Ну как сказать. Ассемблер для STM32 он практически идентичен Ассемблеру PDP-11
Дело не в ассемблере, дело в миллиарде регистров по миллиону битов каждый.
Тут нет Очень похоже
Все ассеблеры Адинаковы кроме ADSP
Хал
И чему человек научится в итоге? Использовать HAL? :)
буд то что то плохое
Да просто замечательное, ага. Стопроцентная привязка к одному вендору.
а какие еще вендоры есть у st?
Хал 0.5%в с составе работы с Мк)
Кроме ST есть много вендоров, и очень хорошо, если человек может писать код так, чтобы перенос кода между разными МК требовал как можно меньше усилий.
xtk ;t pf cn cghjcbk
так человек про ст спросил конкретно
Ну так это тогда придется писать HAL поверх HAL, чтобы безболезненно переносить код. Больше слоев абстракции богу абстракций!
Иногда полезно говорить человеку не то, о чем он спросил, а то, что он хотел узнать. :)
инфоциганство какое то)
Не понимаю что вы имеете ввиду, зачем писать и переносить, бизнес логика в принципе не связана с Мк)
Это как? Создавать заготовленные с описанием регистров, а при необходимости их править под другой МК?
Есть место, где бизнес-логика переходит в HAL, и если этот HAL завязан на конкретную реализацию - его придется болезненно выковыривать отовсюду.
Делать свой HAL на регистрах и при необходимости править только его, не трогая логику вообще. :)
Это называется soft skills. :)
Вариантов, думаю, много. Лично я пишу свои vendor-specific драйвера для разной периферии в виде классов, объекты которых затем подставляю в виде параметров конструктора каких-либо других периферийно-зависимых классов модулей. Таким образом при смене контроллера достаточно будет переписать свои vendor-specific драйвера. То же касается и работы с RTOS - также можно написать врапперы для основных функций, либо не париться и везде использовать FreeRTOS)
Понимание как оно внутри работает на уровне логических элементов
HAL это плохой пример С++, навязанная архитектура, которая в большинстсе случаев избыточна.
Не связана, но завязана на возможности МК
HAL - это аббревиатура для Hardware Abstraction Layer. Поделие от ST называется StdPeriphLib. :)
Начинающие этого не знают, для них HAL - это библиотека для STM32
Я понимаю. В частности, и для этого им надо читать Харриса и Харрис. :)
Ну для начала хотя бы Сквореня
Если человек читает Свореня, то за контроллеры ему браться рановато. Но да, тоже хорошая книжка.
Это если 32-й. А если стм8 - то в самый раз.
ну забыл уточнить, я тыкал авр с регистрами на уровне работы с i2c и всякими микросхемами потом посоветовали + самому стало интересно что там в stm говорят в нем посложнее
если авр с регистрами и и2с кушал он и стм32 переваришь на ура
А если ужаленный и не боишься док на мандарине то попробуй что нить на риске пятом. Ch32v какой нить
Обсуждают сегодня