Многие приобрели «голубую таблетку» на попробовать. Но из-за сложности программирования данная вещь оказалась где то на полке, до лучших времен.
Будем считать, что «лучшие времена» — наступили.
Что необходимо для экспериментов:
- Аппаратные средства
- Программное обеспечение
Аппаратные средства
Все используемые детали / компоненты можно приобрести на aliexpress.com
- Конечно, в первую очередь сам контроллер.«Голубая Таблетка»
- адаптер USB-UART
- Кабель Micro-USB
- набор проводов для соединения компонент между собой
Для более быстрой, по сравнению с UART загрузкой «прошивки» и отладки программ рекомендуется использовать программатор ST-Link V2
Программное обеспечение
- STM32 Flash loader demonstrator (UM0462)
- STM32 Virtual COM Port Driver (usb vcp)
- STM32 ST-LINK utility
- www.embitz.org Среда разработки
- MIOC — программа - конфигуратор, создание шаблона прошивки.
- эмулятор терминала terraterm
Что такое модуль
Модуль это совокупность аппаратной и программной частей. Аппаратная часть — «таблетка» STM32F103C8T6, программная часть — «шаблон прошивки», созданный при помощи программы MIOC Данная программа — OpenSource.
Порты микроконтроллера
У микроконтроллера есть выводы или ножки. Часть из них это питание микроконтроллера, часть имеют специальное назначение (например Reset ), часть — интерфейс ввода/вывода общего назначения (англ. general-purpose input/output, GPIO).
Порты объединены в группы ( A; B; C... ). Каждая группа содержит до 16 портов, пронумерованных от 0 до 15. В итоге нумерация портов выглядит как PA0, PA1,…
Порты служат для связи между компонентами модуля, к примеру микропроцессором и различными периферийными устройствами. Порты могут выступать как в роли входа, в роли выхода и как двунаправленные.
На плате «таблетки» нанесена маркировка портов.
GPIO — Интерфейс ввода/вывода общего назначения
В модуле IO основные типы портов представлены в таблице:
В качестве датчиков, исполнительных механизмов будем использовать различные устройства от Arduino.
Программа MIOC ( Module Input-Output Configurator )
С помощью данной программы создаем / конфигурируем шаблон прошивки (проект для Embitz; Keil) модуля IO. Программа установки не требует. Скачали, запустили. С помощью данной программы создаём глобальные переменные, которые будем использовать в своих прошивках. Переменные могут быть ассоциированы с портами.
Окно первого запуска:
Создадим проект:
Выбрать папку для проекта. Папка, для проекта должна быть пуста!
Первая программа — «hello word» для микроконтроллера
Поморгаем светодиодом, что имеется на «голубой таблетке». Данный светодиод подключен к порту PC13.
Добавить строку в таблицу переменных
Генерируем BSP код (кнопка F8)
Далее, каждый раз после изменения проекта, обязательна генерация BSP!
Открыть созданный проект в среде разработки EmBitz или Keil. EmBitz пока как временное решение. Похоже автор забросил данный проект. По всей видимости в дальнейшем в проекте будет использоваться Code::Blocks.
В файле main.c напишем следующее:
(Для увеличения размера картинки откройте её в новой вкладке)
В EmBitz нажать F2, после появления окна информации нажать F7. Должна выполниться компиляция.
Повторное нажатие F2 скроет информационные закладки.
Загружаем в микроконтроллер, смотрим, как работает.
Кнопка
Добавим кнопку, например такую:
Схема подключения:
Добавим переменную в таблицу:
Генерируем BSP.
Изменим программу на следующую:
Создаём новую BSP (F8), компилируем, загружаем в микроконтроллер.
Нажимаем на кнопку — светодиод зажигается, отпускаем — тухнет.
Вместо светодиода на другой порт можно подключить реле, например:
И управлять какой либо полезной нагрузкой.
Вывод сообщений на консоль
Нужно определить, что будет консолью.
Возможны варианты:
- адаптер USB-UART
- виртуальный COM-порт (кабель Micro-USB)
Если в конфигурации выбраны одновременно UART1 и USB as Console, при этом USB VCP не выбран, то консоль будет назначена «в никуда». Т.е. ругаться на функцию print_str ( или макрос print ) не будет, но и вывода не будет никакого. Такое же поведение будет если не выбрать ни один интерфейс, или выбрать USB VCP но не выбрать ни UART1 ни USB as Console.
Конфигурация консоли:
Подключим TettaTerm к COM-порту (консоли). Если загрузку прошивки производим через UART1, то не забываем отключать/подключать COM-порт. В TerraTerm «горячие кнопки» Alt+I; Alt+N Для варианта загрузки через ST-Link этого делать не требуется.
Отредактируем программу:
Теперь на консоли будет отображаться состояние кнопки:
DS18B20
Подключим к «таблетке» температурный датчик DS18B20.
Поместим в таблицу переменную:
Изменим программу на следующую:
Создаём новую конфигурацию, компилируем, загружаем в микроконтроллер.
На консоли будет отображаться температура, измеряемая датчиком.
АЦП
В качестве примера работы с АЦП можно использовать потенциометр:
Или датчик влажности почвы
Остановимся на последнем:
Конфигурируем порт:
Редактируем программу:
Компилируем, загружаем.
В консоли наблюдаем:
adc — текущее показание АЦП. max и min — зафиксированные минимальное и максимальное показания датчика, совсем сухой (0%) и совсем мокрый (100%).
Совсем мокрый (100%) — опустим датчик в стакан с водой. Совсем сухой (0%) — лежит на открытом воздухе.
По сути мы сделали калибровку датчика влажности почвы от 0 до 100%. Максимальное и минимальное значения поместим в текст программы.
Результат работы. Датчик помещен в землю цветочного горшка:
Данный проект — шаблон решения для полива растений.
На этом пока всё. Программа MIOC будет пополняться дополнительными возможностями.
Комментарии (78)
madcatdev
09.09.2019 00:16Спасибо за подробный туториал. Как раз завалялась в коробке с модулями такая плата, теперь есть еще один повод познакомиться с STM32.
atemik
09.09.2019 05:45Делать код программы скриншотами — очень, очень оригинальное решение.
barbos6
09.09.2019 09:37Это — продвинутый подход для эффективной
дрессурытренировки,
развивающий память, навыки работы с клавиатурой, умение правильно располагать в рабочем пространстве исходное изображение и окошко редактора.
Такая подача материала, благодаря известной серии книг, вырастила многие миллионы чайников. :)
REPISOT
09.09.2019 06:10-1А в чем именно «эксперименты»? Я ожидал разгон или заморозку до -60 или там, попытку сжечь статикой. А тут quick start.
gorbln
09.09.2019 11:41Если Вам интересна заморозка до -60, сообщаю: STM32 нормально работает при такой температуре. Проверял штук 70 — работают при -62. А вот при -75 уже начинают подглючивать — циклично перезагружаться (хотя, я подозреваю, что это не процессор, а конденсаторы в блоке питания). Встроенный датчик температуры прилично врёт, можно использовать только как показометр в общих чертах, разница температуры достигает 6 градусов у разных процессоров, и обычно выше, чем температура окружающей среды.
IRFC
09.09.2019 14:55У BarsMonster была статья про разгон ардуино под жидким азотом. Я думаю, что с stm32 можно сделать то же самое.
anton19286
09.09.2019 06:19Самое простое программирование микроконтроллеров, которое мне доводилось видеть — проект Espruino с почти полноценным Javascript на борту. Интерпретатор даёт непривычный опыт, особенно в отладке.
Заливал на Maple mini, плата вроде Bluepill, но вдвое дороже, чип там CB вместо C8.
Для экономии сейчас можно смотреть на esp8266.alex-open-plc Автор
09.09.2019 07:15Как бы не совсем дороже вдвое. На али поштучно:
STM32F103C8T6 — 60,28 руб.
STM32F103CBT6 — 73,82 руб.
Оба чипа смотрел малазийские. Эти ребята пока ещё вроде не подделывают…Disasm
09.09.2019 08:29Только с большой вероятностью на C8T6 будет столько же флэша, сколько и на CBT6. Зачем платить больше?
barbos98
09.09.2019 17:45Согласно даташиту
Flash memory size
8 = 64 Kbytes of Flash memory
B = 128 Kbytes of Flash memory
Но не факт — проскакивала информация, что наши товарищи из Китая перепиливали камни. Я с такими не сталкивался. Только Attiny залоченные под паралельное программирование. Продавец заморозился — типа сам дурак.
Dima_Sharihin
09.09.2019 11:26Maple Mini имел, как мне кажется, более вменяемое качество текстолита. А вот чипы от ST знамениты тем, что у них куда меньше реальных исполнений, чем заявлено. Так, у китайцев в ST-Link стоит STM32F100, у которого по даташиту и USB-то нет, и ядро не может работать на скорости, на которой запустится USB FS-блок. Но работает же...
alex-open-plc Автор
09.09.2019 11:34В китайском свистке стоит STM32F101
У STM32F100 USB нет в принципе… И частота 24 МГц. Но зато есть ЦАП и таймеров поболее.
quwy
09.09.2019 21:22Когда уже за джаваскрипт в эмбеде будут наказывать по закону?
shiotiny
10.09.2019 05:29Простите, но javascript в эмбеде очень помогает, когда надо сделать, например веб интерфейс для эмбеда.
Мой проект ShIoTiny shiotiny.ru осуществлен только благодаря связке javascript и С++.
Или я вас както не так понял?
quwy
10.09.2019 17:38Простите, но javascript в эмбеде очень помогает, когда надо сделать, например веб интерфейс для эмбеда.
Речь о такой заразе, как программирование кристалла непосредственно на js. Когда среднестатистический скрипткодер, не имеющий даже базового понятия о битовых операциях (а нафига ему в браузере такие низкие материи?), начинает тянуть свои браузерные привычки на систему, в которой считанные килобайты ROM и RAM, и где буквально все завязано на работу с четко определенными типами данных и детерменированное время выполнения.
anton19286
10.09.2019 08:22Эмбед разный. Инструмент по задаче.
Не всем надо гнать десятки мегабайт данных в секунду. Если мне нужно раз в минуту взять число из датчика CO2, выложить его на OLED экран и отдать по вайфаю, скриптовый язык подойдет оптимально. С использованием готовых модулей такой проект редко превышает десяток строк кода. Правда, в 128 килобайт флэша это всё лезет с трудом, модули приходится минифицировать. Но и с плюсами порой удивляешься, как резко растёт бинарник после всего одного дополнительного библиотечного вызова.shiotiny
10.09.2019 14:56Эмбед разный. Инструмент по задаче.
Абсолютно согласен.
Но и с плюсами порой удивляешься, как резко растёт бинарник после всего одного дополнительного библиотечного вызова.
Многие библиотеки, по моему опыту, пишутся очень неоптимально. Особенно на плюсах. Например, если не задумываясь использовать шаблоны — можно мгновенно наворотить столько кода, что обалдеешь.
quwy
10.09.2019 17:12+2раз в минуту взять число из датчика CO2, выложить его на OLED экран и отдать по вайфаю, скриптовый язык подойдет оптимально
Что именно тут «оптимально»? Эта задача делается на C ровно тем же количеством кода, но не тянет за собой тонну скриптовых помоев на кристалл.
Правда, в 128 килобайт флэша это всё лезет с трудом
Ага, 128 килобайт ради опроса одного датчика. Оптимально до одури.
Сейчас я вижу только одну «оптимальность» такого с позволения сказать «программирования». Это отсутствие необходимости изучать нормальный язык хипстерам-формошлепам, которые за пределы браузера носу ни разу не высовывали, и которым теперь приспичило мегадевайсину слепить (и непременно с OLED-экраном, иначе ж не тру).anton19286
11.09.2019 05:13Хипстеры используют E-ink. OLED для нищебродов, он сейчас дешевле экрана от Нокии. Какой смысл в экономии флэша, если чипы с 4к и 128к стоят ровно те же 100 рублей? Да, код будет близким, если библиотеки похожие. Только и размер примерно совпадёт. Добавить WiFi и сервер с TLS и привет, мегабайт.
Новые языки не так плохи, удобство разработки быстро перевешивает накладные расходы на рантайм, особенно в разовых проектах.YegorVin
11.09.2019 14:53+1Смысл экономить ресурсы планеты Земля есть всегда.
Тяжелый код как минимум будет потреблять больше энергии при выполнении.
quwy
11.09.2019 18:25Какой смысл в экономии флэша, если чипы с 4к и 128к стоят ровно те же 100 рублей?
Смысл в том, что если проект с трудом влез в 128k, то наращивать его по сути уже некуда. Чипы с 256k и стоят дороже, и отличаются сильнее. А 512+k — вообще совсем другая категория. А что такое пол мегабайта для обнаглевшего от халявных пользовательских гигабайтов скрипткодера? Плюнуть и растереть.
Добавить WiFi и сервер с TLS и привет, мегабайт
Давайте еще добавим машинное обучение и блокчейн. А то не тянут ваши требования под контроллер с парой-тройкой десятков ножек (см. сабж).
Для всяких WiFi, GSM и иже с ними, используются совсем иные SoC-и, в которых необходимый стек уже прошит в отдельное адресное пространство, а в «юзерспейс» торчит только API, который и будет дергать прошивка. И в этом API часто уже есть и TLS, и HTTP, и даже POP3/SMTP всякие.
Новые языки не так плохи, удобство разработки быстро перевешивает накладные расходы на рантайм
Я бы очень многое мог сказать про «удобство» джаваскрипта как языка. И про «стройность» дизайна. И про «логичность» работы. И про то, что в последнее время он в каждой дырке затычка. Но статья не об этом совсем. Тем более никто не предлагает писать на ассемблере. Но использовать насквозь динамический интерпертируемый язык на голом железе с килобайтами памяти — это клиника.
sfrolov
09.09.2019 08:25Непростой микроконтроллер, но если захотите начать его изучать, то эта плата — наверно лучшее для начала работы.
Arcuen
09.09.2019 08:38Всяко проще, чем какой-нибудь Renesas или пока что самое адское зло, которое встречал — BLE-чип от TexasInstruments CC2650 и софт для него.
А STM32 можно и через регистры конфигурировать, и через API, и вообще.sfrolov
09.09.2019 08:45Для начинающего проще будет сначала освоить STM32 CubeMX с HAL, а потом после продвижения уже переходить на API, регистры и т. д.
И эти уроки обязательно
narodstream.ru/programmirovanie-mk-stm328street
09.09.2019 09:48HAL требует продвинутого знания языка C. Плюсы HAL: с ним очень легко работать, многое в нём уже реализовано. Минусы: если не знать язык, то разобраться, что делает та или иная HAL функция очень сложно. Новичкам прыгать с ардуино на STM с HAL очень сложно. Могу посоветовать раскопать мануалы по старой STLIB (standard peripheral library), она полегче в освоении. Но следует помнить — это путь в никуда, она уже не обновляется.
IgorPie
09.09.2019 10:05Тут зависит от сорта начинающего. После AVR и dsPIC, вполне можно на кокосе все сделать (если лень эклипс настраивать с gcc), под SPL или CMSIS.
И проекты из куба в него таскать, там дел на 5 минут.
Куб, как уже многие отметели, не мёдом мазан. Например, SPI у нас 16 бит, а куб DMA на SPI не моргнув глазом подымет на 32 бит.
А i2c — вообще кошмар. Ставишь галку «у меня слэйв», а в библиотеках вместо define'ов под конкретную настройку — тащится общий вагон софта.
Прерывание неспешно определяет какой режим, что произошло и т.п. И пока дойдет до дела, что у нас все же слейв, прилетает ошибка, потому что мастер не ждет.
Это очевидные косяки куба, а чем дальше в лес, тем толще партизаны.SergeyMax
09.09.2019 15:10Прерывание неспешно определяет какой режим, что произошло и т.п. И пока дойдет до дела, что у нас все же слейв, прилетает ошибка, потому что мастер не ждет.
Где-то в документации есть табличка, в которой указаны предельные скорости для всех режимов работы I2C через HAL.IgorPie
09.09.2019 16:52Дело не в табличке. Если у меня слейв, то разумно все что связано с мастером отсечь директивами компилятора, а не тратиться на if().
Так-то конечно можно дернуть все нужное с SPL и получить желанные 400 кбит.SergeyMax
09.09.2019 17:43Если у меня слейв, то разумно все что связано с мастером отсечь директивами компилятора, а не тратиться на if().
Нет, не разумно, так как режим шины может меняться в рантайме.
Koyanisqatsi
09.09.2019 12:08Довольно странный выбор ПО и железки для старта. Есть огромная линейка отладочных плат Nucleo, к которым подходят платы расширения от ардуино. Есть TrueStudio — IDE на основе эклипса, поддерживаемое самим ST. HAL и STM32CubeMX делают старт просто элементарным (да и последующую работу тоже, но попробывать конфигурировать регистры тоже стоит хотя бы ради опыта).
IgorPie
09.09.2019 13:26у этих плат есть несколько весомых плюсов:
1) цена
2) доступность (на авито без проблем, если с али лень ждать)
3) возможность установки в breadboard
и если надо что-то быстро накидать, таблетка годна очень даже.
SPI на 18МГц у меня вполне работал на ржавых китайских проводах на не менее китайском breadboard.
А платы с 2 рядами пинов с каждой стороны — можно заблудиться, поэтому лень выходить за периметр платы. Поэтому, для cm4 у меня сделана своя таблетка. Опять-таки, в breadboard — без проблем.
Tiamon
09.09.2019 15:02Не взлетит STM32 пока не будет полноценная интеграция с Arduino и библиотеками под неё. Я бы на месте производителя серьезно так вложился в это дело, если это конечно технически осуществимо, тут я увы не знаю. Но получить такое же распространение как Atmel, без этого не сможет.
Низкая цена и полная интеграция с Arduino, секрет успеха для них )
А пока она так и будет валятся на полке, проще взять Atmel который более или менее понятен, взять готовые библиотеки под него и лепить свои поделки. Чем входить в незнакомую среду. )dm128
09.09.2019 17:47Увы, STM32 уже давно взлетел. Политика компании на весьма агрессивный выход на рынок одноядерных АРМ процов. А про полный спектр продукции СТМ можно вообще не говорить — у них есть все и идут в новые направления. BLE чипы, к примеру. А кроме MCU вышли более тяжелые MPU, и есть линейка продуктов под AI. Ардуино это детский образовательный проект, который проигрывает начиная со среды разработки. И в лучшем случае что от них можно позаимствовать — шилды. Которые автор и привязывает через свои библиотеки.
Tiamon
09.09.2019 17:55Вы немного не поняли о чем я )
Я не говорю про профессиональный рынок, я говорю про рынок аля Arduino, то есть рынок не профессионалов, рынок поделок своими руками. Было бы конечно интересно на цифрах сравнить сколько Atmel продает микропроццов которые используются в Arduino на проф рынок и на рынок Arduino. Но чисто умозрительно не мало, Arduino создало огромный рынок, и при условиях указанных мной выше STM8 & STM32 вполне могли бы занять в нем хорошую нишу. Я об этом, а так да в проф. нише STM крут ).Polukar
09.09.2019 18:43+2Копейки там, а не рынок. Для любого производителя несущественны хобийщики, делается что бы подсадить на свою продукцию это.
Tiamon
09.09.2019 19:13Сомневаюсь ) Но это разговор без фактов, нет цифр, может есть в открытой отчетности www.microchip.com/documentlisting/investors-home
Если смотреть просто по atmel то рост у них хороший, только не понятно что из этого atmega, нужно копаться в релизах, но лень )IgorPie
09.09.2019 19:28во всем серийном новье идут атмел кортексы с USB.
8битки для производителя — умерли, как и сам атмел, хвала сатане, что его выкупил некогда главный конкурент, которого тонко ненавидят в нашей стране
stavinsky
09.09.2019 15:17Мое знакомство с МК началось с avr и arduino. Но достаточно быстро я понял что это достаточно неудобно. Arduino как ide больше очень неудобно если цель больше чем мигать лампочками. Достаточно быстро я перешел на eclipse и компиляцию makeфайлами.
Далее когда я увидел bluepill (купил в магазине ради интереса). Мой восторг от stm32 по сравнению arduino было не передать. HAL конечно имеет недостатки но всеже он задокументирован, cube позволяет настроить необходимое в большинстве случаев без проблем. Сейчас перешел в любимый vim и makefile'ы от CubeMX.
По поводу статьи — поддержу других комментаторов, набор софта для начала разработки немного странный. Начинающему лучше всеже HAL + eclipse от ST. Bluepill как и MappleMini — прекрасны и дешевы(что немаловажно в условиях когда новичек может что-нибудь подпалить).
Китайский STLink всеже советую иметь так как отладка становится в разы легче(это кстати было еще одной причиной восторга)Dima_Sharihin
09.09.2019 15:50+1HAL — это худший способ обернуть в софт периферию, который я встречал. Это такой страшный overbloated индусский код, в котором без поллитра и разобраться-то тяжело. Из-за чего многие адепты AVR говорят, что MCU на ARM Cortex M* сложны для понимания. Но дело в том, что сама периферия зачастую проще того огорода, что нагородил вокруг ST.
stavinsky
09.09.2019 16:03Не буду спорить из вышеописанного я мало что видел. Написал лишь что оно работает и в целом мне было сложно разобраться. Сейчас вообще думаю на stm32-rs попробовать перейти хоть и сыро, но rust )
HardWrMan
09.09.2019 16:07Вот почему StdPeriph пользуется спросом в отличии от HAL от кубика. С другой стороны, лично я использую кубик при распределении ресурсов (назначение лапок, интерфейсов, растактовка). А потом генеришь проект и смотришь получившиеся цифры. И вставляешь их в свой код. Использовать темплейт кубика — это только на уровне начинающего, который копипасту привык использовать. Уж лучше тогда MikroBasic или MikroPascal от MikroE взять и забыть про периферию совсем.
IgorPie
09.09.2019 16:53Еще USB в нем реализован человекоподобно.
HardWrMan
09.09.2019 17:47USB там идет как миддлваря. Отдельно корка и отдельно хост/выбранный девайс. К HAL оно не имеет отношения.
IgorPie
09.09.2019 19:29все равно человекоподобно, а не как fatfs (тоже мидлваря), где плохо понятно чего замутили.
holomen
09.09.2019 20:14Вот только от хала это якобы мидлеваре не оторвать. Так что та реализация USB — она да, в HALе.
HardWrMan
10.09.2019 06:12Оно из HAL/StdPeriph использует только настройку оборудования, не связанного с USB: лапки и NVIC (иногда DMA). А с самим USB оно работает напрямую с регистрами. Я один раз переписывал USB HID в отдельный юнит и оно работает автономно без проблем. Так что оторвать можно (и даже иногда — нужно).
igrushkin
09.09.2019 15:43Не хочу разжигать холивары, но упорно не понимаю, зачем «жевать кактус» в виде stm32?
Для разгона есть Ардуино, потом можно уйти или на nrf52 и прочие кортексы, или на esp32, хоть это и китайчатинаю
Но stm… зачем???Dima_Sharihin
09.09.2019 15:52Ну хотя бы потому, что в большом количестве голов почему-то ужилось, что ARM Cortex M* это и есть STM32. Вообще я мало имею что против самих микроконтроллеров от ST, вопрос, что у других производителей есть контроллеры поинтереснее.
А, ну и таймеры у ST — это страх и ужас, да.
HardWrMan
11.09.2019 06:44+2А в чём заключается «страх и ужас»™ таймеров в STM?
Dima_Sharihin
11.09.2019 08:13+1- Они разные в рамках одного кристалла
- HAL не покрывает и трети сценариев их использования
Для сравнения рекомендую ознакомиться с таймерами серии
eHRPWMePWM от Texas Instruments на микроконтроллерах C2000: все действия разложены по функциональным блокам, на каждый блок таймера отдельная исчерпывающая документация, и, о чудо, за исключением High Resolution, все таймеры полностью идентичны на кристалле.HardWrMan
11.09.2019 08:33+1А кто сказал, что если в кристалле заявлено 10 таймеров, то они должны быть абсолютно идентичными? Ведь, например, логично, если есть 2 таймера с хорошим блоком захвата и генерации формы для использования в ШИМ (в том числе и с блокировкой конфигурации для предотвращения деструктивной конфигурации, которая может сжечь силовую схему) и 8 таймеров попроще для, собственно, измерения некоторых интервалов времени, для которых, внезапно, изначально таймеры и делались? Это же экономит кристалл для других функций и периферии.
Что касается HAL, то моё отношение к нему можете прочитать в моём комменте выше.Dima_Sharihin
11.09.2019 08:39если в кристалле заявлено 10 таймеров, то они должны быть абсолютно идентичными
Но называются они все TIMx. Вообще это довольно напрягает ST-шная политика запоминания функционала периферии по ее номеру. У C2000 для захвата таймер называется eCAP, к примеру, а базовый таймер вообще часть CPU.
alex-open-plc Автор
11.09.2019 09:11Так вот тут и помогает кубик, причём сильно помогает. Потом, для уточнения функционала читаем даташит.
HardWrMan
11.09.2019 09:21Ну, т.е., это уже из разряда привычек и холивора. Тем не менее, что касается TIMx, то где тут ошибка, если это действительно всё таймеры и позволяют измерять интервалы времени? Да, у некоторых есть блок расширения функций, а некоторые ещё более урезанные (последние обычно с двухзначным номером), но это всё таймеры. С другой стороны, системный таймер там как раз SysTick (и он тоже расположен в CPU), что аналогично приведённому примеру от TI.
alex-open-plc Автор
11.09.2019 09:14Отношение к HAL у меня схожее. Поначалу идея понравилась, но реализация… Пробовал LL. В большинстве случаев он тащит за собой библиотеки HAL. Да, из HAL можно «выпилить» необходимый функционал. Но лучше от этого не станет.
im_stD
11.09.2019 09:181. И что в этом плохого. Они же не принципиально разные, а разделены на три группы с уменьшающемся функционалом.
2. HAL покрывает все возможности таймера, и упрощает работу с ними.
IgorPie
09.09.2019 16:55цена, доступность, богатство периферии и накопленная библиотека граблей.
igrushkin
09.09.2019 16:58вы про ардуино. да?
Мне кажется «богатство периферии» (кстати, в чем оно заключается на stm?) нивелируется полным отсутствием библиотекIgorPie
09.09.2019 17:14Справедливости ради, куча интерфейсов и событий, триггеров и т.д. и библиотеки основные — есть. Где нет библиотек — есть примеры и сниппеты. Нет библиотек для свистков типа maple leaf maple mini.
Конечно, майкрочип с его атмеловскими кортексами на пятки наступает, но стм все еще дешевле и доступней, и по кое-каким ТТХ все же впереди.
arkamax
09.09.2019 18:26А ковырял ли кто-нибудь современные модели Cortex-M0+ от NXP (серия KL и иже с ними)? Лет несколько назад, когда их только запустили, они были весьма интересны в перспективе, IDE была тяжеловата (хоть и работоспособна), но платформа мне показалась интересной, равно как и спеки / цены на сами МК.
kylroma
10.09.2019 15:33Спасибо большое! Давно хотел попробовать что-то поделать с микроконтроллером. Но нет опыта и нет уверенности, что что-то смогу сделать полезное.
Благодаря статье понял, что мне нужно купить, чтоб не дорого, но и функциональное. Уже заказал на али микроконтроллер + программатор = 4$. Думаю, что бы ещё интересного прикупить к контроллеру.
alex-open-plc Автор
10.09.2019 15:42
devprodest
Чем вам куб не угодил для конфигурирования ног, раз самому писать лень?
HardWrMan
Кубик требует некоторой подготовленности. А тут почти как Arduino.
melodictsk
А чем stm32duino не угодил? Делал много проектов в том числе и с RTOS, работает великолепно. И самое главное ещё проще.
alex-open-plc Автор
Данный проект предпологается использовать не вместо куба, а вместе с кубом.