Вводная статья курса уроков по программированию микроконтроллеров STM32.
Этой статьей начинаю цикл уроков, посвященных программированию микроконтроллеров STM32.
]
Тема очень интересная, по популярности может превзойти ”Уроки Ардуино”. В принципе, это в какой-то степени продолжение или расширение ”Уроков Ардуино”. По крайней мере, я собираюсь постоянно ссылаться на статьи из этой рубрики, проводить аналогию между ними и уроками STM32.
Я не призываю бросать программировать на Ардуино и переходить только на STM32. Но есть задачи, которые на Ардуино выполнить невозможно или намного сложнее. Да и разве плохо уметь создавать системы, устройства на обоих типах микроконтроллеров.
Язык программирования в принципе один и тот же. Тем более одинаковы аппаратные компоненты, подключаемые к контроллеру: кнопки, светодиоды, дисплеи, модули проводных и беспроводных технологий связи и т.п.
Много информации уже есть на сайте. Например, зачем мне заново рассказывать про технологию клиент-сервер, если в рубрике ”Уроки Ардуино” есть статья об этом.
Контроллеры STM32 значительно превосходят по техническим характеристикам платы Ардуино на 8 разрядных микроконтроллерах ATmega328, ATmega2560 и т.п. У них более высокая производительность, больше объем памяти, периферийные устройства разнообразнее по функциям, номенклатуре, количеству. STM32 позволяют реализовывать значительно более сложные задачи, чем платы Ардуино.
Несмотря на вышесказанное я считаю, что программировать STM32 не сложнее, чем Ардуино. По крайней мере, я собираюсь так преподнести материал. Хотя объем информации будет больше.
Уроки рассчитаны как на опытных программистов, изучающих STM32, так и на людей, делающих первые шаги в программировании. Т.е. я собираюсь приводить строгую информацию и сопровождать ее подробными пояснениями. Для второй категории читателей я буду давать ссылки на аналогичные темы в ”Уроках Ардуино”. Не хочется одно и то же ”разжевывать” несколько раз.
Буду преподносить оптимальный с моей точки зрения подход к программированию STM32. Кто-то может с ним не согласиться.
Итак. Я ставлю цель:
- научить вас практическому программированию микроконтроллеров STM32;
- расширить ваши знания в области программирования на языке C++, конечно у кого их не хватает;
- представить строгую техническую информацию о контроллерах STM32 на русском языке;
- какая-то часть уроков будет посвящена аппаратной части, подключаемой к микроконтроллеру.
Общие сведения о микроконтроллерах семейства STM32.
Возможности контроллеров STM32 потрясают! По крайней мере, меня.
Плата с микроконтроллером STM32F103C8T6 по стоимости сопоставима с ценой плат Ардуино на базе ATmega328 и значительно дешевле плат типа Arduino Mega2560.
Но по техническим характеристикам! Что стоит только сравнение разрядности обрабатываемых данных. 32 против 8!
У меня ощущение, что я сравниваю Ардуино не с маленькой дешевой платой, а с дорогим монстрообразным 32 разрядным контроллером. Судите сами.
Параметры | STM32F103C8T6 | Arduino Nano |
Разрядность | 32 бит | 8 бит |
Частота | 72 мГц | 16 мГц |
Объем FLASH | 64 кБайт | 32 кБайт |
Объем ОЗУ | 20 кБайт | 2 кБайт |
Число выводов | 37 | 22 |
Аппаратное умножение и деление | Есть, 32 разряда | Только умножение, 8 разрядов |
АЦП | 2 АЦП, 12 разрядов, 10 входов, 1 мкс время преобразования | 10 разрядов, 8 входов, 100 мкс время преобразования |
Контроллеры прямого доступа к памяти | 7 каналов | нет |
Таймеры | 7 | 3 |
UART | 3 (выше скорость, больше режимов) | 1 |
I2C | 2 | 1 |
SPI | 2 | 1 |
USB | 1 | нет |
CAN | 1 | нет |
Часы реального времени | есть | нет |
Модуль аппаратного расчета CRC кода | есть | нет |
К этому можно бесконечно добавлять с приставкой ”гораздо более мощные, совершенные, функциональные”: система прерываний, порты ввода-вывода, коммуникационные интерфейсы и т.п.
И это еще далеко не самый мощный вариант STM32. У меня есть плата STM32F407VET6 с частотой 210 мГц и АЦП со скоростью преобразования до 7,2 миллионов выборок в секунду. Собираюсь на ней сделать динамическую подсветку телевизора, т.е. обрабатывать видеосигнал.
Техническая документация.
Я не буду пересказывать общую информацию о микроконтроллерах STM32. Советую вам просмотреть книжку “Мартин М. Инсайдерское руководство по STM32”, чтобы иметь общее представление о STM32. Я не стал давать ссылку. Не знаю, как обстоят дела с авторским правом на этот документ. Но найдете без труда. Подробно компоненты и узлы STM32 будем изучать в уроках.
Из строгой официальной документации надо иметь:
- Общее описание микроконтроллера STM32F103C8. Периферия, электрические характеристики.
- Справочное руководство. Описание регистров, работы периферии.
- Описание ядра микроконтроллера, система команд.
- Описание библиотеки HAL для STM32F1.
Все документы на английском языке, с официального сайта STMicroelectronics, но все что будем использовать, я распишу на русском.
В следующем уроке рассмотрим нашу базовую плату STM32, добавим к ней узлы для загрузки программ из компьютера во FLASH-память микроконтроллера.
Здравствуйте Эдуард! Учился по вашим урокам Ардуино. За них большое спасибо. Давно уже хотел перейти на СТМ, но долго не мог сдвинутся с места. В нете столько разной информации. И вот у вас увидел уроки СТМ. Я в полном восторге. Наконец-то! Спасибо.
Здравствуйте!
Спасибо. Рад, если тема будет популярной.
Спасибо, Эдуард за отличные популярные статьи!
Добавьте пожалуйста в сравнение отсутствие EEPROM у STM, и проблемы, которые при этом надо учитывать при использовании обновляемых, при эксплуатации устройства констант(например коэффициенты ПИД, пресеты температуры, термостата и т.д.)
Отсутствие EEPROM у STM32 в том виде, как это есть у AVR, не вызовет проблем при эксплуатации, о которых Вы говорите. Для хранения периодически изменяемых при эксплуатации констант используется часть пзу, не занятая основной программой контроллера (прошивкой). В STM32 имеется механизм, позволяющий переписывать часть пзу прямо из программы пользователя. Правда есть неудобство, связанное со страничной организацией памяти — при перезаписи сначала стирается и затем заново записывается целая страница памяти.
У части STM32 есть EEPROM
Серия STM32L1
Вы просто отнимаете хлеб у высокооплачиваемых программистов, разрушаете их семьи, лишаете источников постоянного дохода.
Прям как яндекс-такси лишил золотой жилы блатных извозчиков.
так держать!
эволюция не должна останавливаться!
Здравствуйте!
С этой точки зрения я свой труд не рассматривал. Думаю вы неправы. Кто захочет научиться программировать, разобраться в тонкостях дела, тот сумеет это сделать самостоятельно, без моей помощи. Я только помогаю таким людям. Но спасибо за такой отзыв.
Друзья ! мне конечно с упорным трудом удалось освоить контроллеры STM . хотел бы высказать впечатления . среди всех сайтов считаю что самый наилучший это вот этот данный сайт Эдуарда . хорошие сайты также Alex Gyver и некоторые другие . абсолютно самый наихудший среди всех сайтов , можно сказать что абсолютный чемпион по отвратительному качеству подачи материала это сайт Хабр. полагаю что в интернете это самый наихудший по качеству сайт . пишут так что ничего не понятно и не ясно .
На хабре рассчитано больше на профессионалов, а не на начинающих
«плата STM32F407VET6 с частотой 210 мГц и АЦП со скоростью преобразования до 7,2 миллионов выборок в секунду. Собираюсь на ней сделать динамическую подсветку телевизора, т.е. обрабатывать видеосигнал.»
Это лучше делать на FPGA. Так, на будущее 🙂
Привет, Эдуард! Мне очень помогли в своё время твои уроки по Ардуино, за них ещё раз благодарю. Теперь заинтересовался STM32. Меня интересуют кнопки, подсчет импульсов на выводах, передача данных на LCD через I2C и управление шаговиками через Step-Dir драйвер. Будут ли у тебя соответствующие уроки? С ведением, Равиль.
Здравствуйте!
Да, конечно, все это будет. Сейчас соберусь с силами после лета, закончу уроки по базовым компонентам STM32 и буду писать уроки на тему прикладных задач.
Желаю легкости и радости в труде и прекрасных быстрых результатов!
С уважением, конечно. Т9 постарался.
Здравствуйте Эдуард.
У Вас на странице цена указана 175 руб, перешел по ссылке там цена указана 891 руб.
Цена изменилась или ссылка не на тот контролер?
Здравствуйте!
Ссылка правильная. Значит цена изменилась. Но она и на АлиЭкспресс значительно изменилась.