Comments 97
Чем вам куб не угодил для конфигурирования ног, раз самому писать лень?
Спасибо за подробный туториал. Как раз завалялась в коробке с модулями такая плата, теперь есть еще один повод познакомиться с STM32.
развивающий память, навыки работы с клавиатурой, умение правильно располагать в рабочем пространстве исходное изображение и окошко редактора.
Такая подача материала, благодаря известной серии книг, вырастила многие миллионы чайников. :)
У BarsMonster была статья про разгон ардуино под жидким азотом. Я думаю, что с stm32 можно сделать то же самое.
Заливал на Maple mini, плата вроде Bluepill, но вдвое дороже, чип там CB вместо C8.
Для экономии сейчас можно смотреть на esp8266.
STM32F103C8T6 — 60,28 руб.
STM32F103CBT6 — 73,82 руб.
Оба чипа смотрел малазийские. Эти ребята пока ещё вроде не подделывают…
Только с большой вероятностью на C8T6 будет столько же флэша, сколько и на CBT6. Зачем платить больше?
Flash memory size
8 = 64 Kbytes of Flash memory
B = 128 Kbytes of Flash memory
Но не факт — проскакивала информация, что наши товарищи из Китая перепиливали камни. Я с такими не сталкивался. Только Attiny залоченные под паралельное программирование. Продавец заморозился — типа сам дурак.
Maple Mini имел, как мне кажется, более вменяемое качество текстолита. А вот чипы от ST знамениты тем, что у них куда меньше реальных исполнений, чем заявлено. Так, у китайцев в ST-Link стоит STM32F100, у которого по даташиту и USB-то нет, и ядро не может работать на скорости, на которой запустится USB FS-блок. Но работает же...
Простите, но javascript в эмбеде очень помогает, когда надо сделать, например веб интерфейс для эмбеда.
Мой проект ShIoTiny shiotiny.ru осуществлен только благодаря связке javascript и С++.
Или я вас както не так понял?
Не всем надо гнать десятки мегабайт данных в секунду. Если мне нужно раз в минуту взять число из датчика CO2, выложить его на OLED экран и отдать по вайфаю, скриптовый язык подойдет оптимально. С использованием готовых модулей такой проект редко превышает десяток строк кода. Правда, в 128 килобайт флэша это всё лезет с трудом, модули приходится минифицировать. Но и с плюсами порой удивляешься, как резко растёт бинарник после всего одного дополнительного библиотечного вызова.
Эмбед разный. Инструмент по задаче.
Абсолютно согласен.
Но и с плюсами порой удивляешься, как резко растёт бинарник после всего одного дополнительного библиотечного вызова.
Многие библиотеки, по моему опыту, пишутся очень неоптимально. Особенно на плюсах. Например, если не задумываясь использовать шаблоны — можно мгновенно наворотить столько кода, что обалдеешь.
Новые языки не так плохи, удобство разработки быстро перевешивает накладные расходы на рантайм, особенно в разовых проектах.
А STM32 можно и через регистры конфигурировать, и через API, и вообще.
И эти уроки обязательно
narodstream.ru/programmirovanie-mk-stm32
И проекты из куба в него таскать, там дел на 5 минут.
Куб, как уже многие отметели, не мёдом мазан. Например, SPI у нас 16 бит, а куб DMA на SPI не моргнув глазом подымет на 32 бит.
А i2c — вообще кошмар. Ставишь галку «у меня слэйв», а в библиотеках вместо define'ов под конкретную настройку — тащится общий вагон софта.
Прерывание неспешно определяет какой режим, что произошло и т.п. И пока дойдет до дела, что у нас все же слейв, прилетает ошибка, потому что мастер не ждет.
Это очевидные косяки куба, а чем дальше в лес, тем толще партизаны.
Прерывание неспешно определяет какой режим, что произошло и т.п. И пока дойдет до дела, что у нас все же слейв, прилетает ошибка, потому что мастер не ждет.Где-то в документации есть табличка, в которой указаны предельные скорости для всех режимов работы I2C через HAL.
Так-то конечно можно дернуть все нужное с SPL и получить желанные 400 кбит.
Если у меня слейв, то разумно все что связано с мастером отсечь директивами компилятора, а не тратиться на if().Нет, не разумно, так как режим шины может меняться в рантайме.
1) цена
2) доступность (на авито без проблем, если с али лень ждать)
3) возможность установки в breadboard
и если надо что-то быстро накидать, таблетка годна очень даже.
SPI на 18МГц у меня вполне работал на ржавых китайских проводах на не менее китайском breadboard.
А платы с 2 рядами пинов с каждой стороны — можно заблудиться, поэтому лень выходить за периметр платы. Поэтому, для cm4 у меня сделана своя таблетка. Опять-таки, в breadboard — без проблем.
Низкая цена и полная интеграция с Arduino, секрет успеха для них )
А пока она так и будет валятся на полке, проще взять Atmel который более или менее понятен, взять готовые библиотеки под него и лепить свои поделки. Чем входить в незнакомую среду. )
Я не говорю про профессиональный рынок, я говорю про рынок аля Arduino, то есть рынок не профессионалов, рынок поделок своими руками. Было бы конечно интересно на цифрах сравнить сколько Atmel продает микропроццов которые используются в Arduino на проф рынок и на рынок Arduino. Но чисто умозрительно не мало, Arduino создало огромный рынок, и при условиях указанных мной выше STM8 & STM32 вполне могли бы занять в нем хорошую нишу. Я об этом, а так да в проф. нише STM крут ).
Если смотреть просто по atmel то рост у них хороший, только не понятно что из этого atmega, нужно копаться в релизах, но лень )
Далее когда я увидел bluepill (купил в магазине ради интереса). Мой восторг от stm32 по сравнению arduino было не передать. HAL конечно имеет недостатки но всеже он задокументирован, cube позволяет настроить необходимое в большинстве случаев без проблем. Сейчас перешел в любимый vim и makefile'ы от CubeMX.
По поводу статьи — поддержу других комментаторов, набор софта для начала разработки немного странный. Начинающему лучше всеже HAL + eclipse от ST. Bluepill как и MappleMini — прекрасны и дешевы(что немаловажно в условиях когда новичек может что-нибудь подпалить).
Китайский STLink всеже советую иметь так как отладка становится в разы легче(это кстати было еще одной причиной восторга)
HAL — это худший способ обернуть в софт периферию, который я встречал. Это такой страшный overbloated индусский код, в котором без поллитра и разобраться-то тяжело. Из-за чего многие адепты AVR говорят, что MCU на ARM Cortex M* сложны для понимания. Но дело в том, что сама периферия зачастую проще того огорода, что нагородил вокруг ST.
Ну и в принципе, если добавить в bin папку компилятора make.exe, то можно собирать прошивку из командной строки win.
есть еще platformio, там можно выбрать плату и оно автомагически закачает подходящие инструменты
Для разгона есть Ардуино, потом можно уйти или на nrf52 и прочие кортексы, или на esp32, хоть это и китайчатинаю
Но stm… зачем???
Ну хотя бы потому, что в большом количестве голов почему-то ужилось, что ARM Cortex M* это и есть STM32. Вообще я мало имею что против самих микроконтроллеров от ST, вопрос, что у других производителей есть контроллеры поинтереснее.
А, ну и таймеры у ST — это страх и ужас, да.
- Они разные в рамках одного кристалла
- HAL не покрывает и трети сценариев их использования
Для сравнения рекомендую ознакомиться с таймерами серии eHRPWMePWM от Texas Instruments на микроконтроллерах C2000: все действия разложены по функциональным блокам, на каждый блок таймера отдельная исчерпывающая документация, и, о чудо, за исключением High Resolution, все таймеры полностью идентичны на кристалле.
Что касается HAL, то моё отношение к нему можете прочитать в моём комменте выше.
если в кристалле заявлено 10 таймеров, то они должны быть абсолютно идентичными
Но называются они все TIMx. Вообще это довольно напрягает ST-шная политика запоминания функционала периферии по ее номеру. У C2000 для захвата таймер называется eCAP, к примеру, а базовый таймер вообще часть CPU.
2. HAL покрывает все возможности таймера, и упрощает работу с ними.
Мне кажется «богатство периферии» (кстати, в чем оно заключается на stm?) нивелируется полным отсутствием библиотек
Конечно, майкрочип с его атмеловскими кортексами на пятки наступает, но стм все еще дешевле и доступней, и по кое-каким ТТХ все же впереди.
Благодаря статье понял, что мне нужно купить, чтоб не дорого, но и функциональное. Уже заказал на али микроконтроллер + программатор = 4$. Думаю, что бы ещё интересного прикупить к контроллеру.
Можете подсказать, как вы определяете к какому порту подключать датчик. По таблице выше не понятно, какие именно возможности есть в разных типов портов.
Я для эксперементов купил датчик движения (Hc-sr501). Но как-то страшновато его подключать к плате. Вдруг ошибусь с портом и что-то испорчу.
У вас ещё будет продолжение вашей статьи про «голубую таблетку»?
Простые эксперименты с микроконтроллером STM32F103 («Голубая таблетка»)