- PVSM.RU - https://www.pvsm.ru -
МК семейства STM8S относительно STM8L/32 имеет меньший арсенал периферии, но позволяет без лишних усложнений разобраться с основами и получить необходимые навыки для работы с его старшими братьями.
При написании данной статьи, я предполагаю, что читающий умеет:
Целями статьи считаю:
Думаю имеет смысл сделать подробный курс программирования МК.
Мне послужит поводом изучить всю периферию более детально и попутно поможет другим.
Знаю, что уже существует огромное количество статей и даже обучающих курсов, но я имею слегка иной подход. (Возможно получу адекватную критику, изменю мнение и примкну к MX Cube ребятам).
Грустно видеть, как stm контроллеры превращают в arduino.
По поводу arduino:
Есть 3 (известных мне, мб я просто не дорос) подхода к разработке ПО на МК:
1) Я сторонник такого мнения, что если ты строишь дом, то не стоит обжигать каждый кирпич из глины своими руками, потому ассемблер отпадает (хоть и начинал с этого). Слишком низкая скорость разработки.
2) Библиотеки HAL и т.п. для начинающего непрозрачна и слишком много моментов «просто пиши вот так». Потому — тоже в помойку.
3) Наиболее здоровым вариантом для начинающего считаю процесс создания ПО под конкретный МК, полученные навыки позволят разобраться и с 8L и 32 сериями (хоть это и больно делать единолично по документации).
Вы наверно заметили, что arduino в этом списке не фигурирует, потому что это образовательная платформа и для разработки на её базе компактных устройств не предназначена. Но подход к её программированию по какой-то (мне не известной) причине переносится и расползается по интернету. И даже применяется в реальных коммерческих проектах. (представляет собой, «скачал на форуме библиотеку, подключил, заработало, как работает не знаю»).
Я же предлагаю, с моей точки зрения, академически и методически более осмысленный подход.
У меня в наличии имеется несколько STM8S105K6 в корпусе LQFP32, он из этого семейства, потому выбираю его.
Вы можете выбрать любой МК в пределах серии.
Есть готовые Discovery платы от ST, можно купить у китайцев или заказать с других ресурсов. Есть готовые платы на STM8S103F3P6 и ей подобные от китайцев.
Но, следует учесть, что готовые платы предназначены для обучения.
На сайте производителя st.com [1], находим свой МК и скачиваем к нему документы:
Reference manual: RM0016 — общий документ для всех МК семейств STM8S и STM8AF. Далее RM.
Datasheet: У меня DS5855 — документ к моделям STM8S105C4/6, STM8S105K4/6 и STM8S105S4/6. Далее DS.
Из вкусного у него (поверхностно):
Я вижу два варианта работы с МК:
В этом случае для МК нужна будет так называемая обвязка. План простой:
У меня получилось такое чудо:
Стоит ознакомиться с конфигурацией платы, если это плата от ST, то она сразу с программатором и подключается USB type B кабелем. На сайте ST будет схема на странице продукта. На плате будут кнопки, светодиоды, пищалки, ёмкостные кнопки и прочие прелести с которыми можно поиграться.
Если плата китайская, то часто платы без программатора, то нужен будет программатор.
Шелкографии названий выводов лучше не верить и перепроверить сравнив с DS.
Работу с контактными макетными платами (breadboard) я не рассматриваю потому, что не использую.
Плюс нужен программатор, у меня китайский ST-Link V2. Умеет программировать и STM8 и STM32.
Для меня вопрос выбора пока не актуален, работаю в IAR для STM8, ибо в ней делали проект над которым я сейчас работаю, по той же причине старая версия.
Идем на сайт iar.com [2], в поиске набираем модель своего МК.
Скачиваем IAR Embedded Workbench for STM8, выбираем при установке size-limited evaluation и миримся с ограничением в 8 Кб кода. Или покупаем. Есть на запрещенных на территории РФ ресурсах взломанные версии, но для коммерческих проектов не годится.
Инструкция по установке есть в самом установщике либо в гугле.
Я использую версию 6.5.3.2581.
Устанавливаем среду, вместе с ней драйвера на программатор.
Заходим в IDE, идем Project -> Create new project -> C++
Жмем OK, выбираем директорию (желательно не имеющую кириллицы и пробелов), выбираем имя (без пробелов и кириллицы).
Идем в корневую папку своей IDE и находим папку inc, для меня путь:
C:Program Files (x86)IAR SystemsEmbedded Workbench 6.5stm8inc
Находим среди заголовочных файлов iostm8 свою модель МК, для меня:
iostm8s105k6.h
Подключаем её в самом начале и добавляем бесконечный цикл.
#include<iostm8s105k6.h> //Заголовочный файл
int main()
{
while(1){ //Бесконечный цикл
}
return 0;
}
В меню Project -> Options -> General Options в графе Device выбираем свой МК.
В Project -> Options -> Debugger в графе Driver выбираем ST-LINK.
Находим на панели инструментов кнопку Download and Debug.
При первой компиляции среда попросит выбрать имя .eww файла. (Я называю так же как и проект.)
Внизу в окне Debug Log должны быть сообщения, что:
Мы попали в режим отладки, но выполнение программы приостановлено.
Там же на панели инструментов находим и нажимаем кнопку Go.
Мы запустили МК в режиме отладки.
Нажимаем Stop debugging, отладка прекращается, но МК питается от программатора и дальше выполняет программу, а именно крутит бесконечный цикл и делает ничего.
Получился краткий обзор и вводная в программирование МК серии STM8S без самого программирования. Получилась только база для работы, с этого обычно все и начинается — со сборки макета.
Раскрывать тему подробней смысла не вижу.
Во многих статьях уже после введения, буквально через пару строчек мигают светодиодами, что мне не понятно.
Насколько выполнены цели судить можно будет по тому, получилось ли у начинающего что-то сделать самостоятельно, используя предложенную мной информацию. (индикатор окно Debug log)
Спасибо за внимание.
Автор: fractured
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie-mikrokontrollerov/328634
Ссылки в тексте:
[1] st.com: https://www.st.com/content/st_com/en.html
[2] iar.com: https://www.iar.com/
[3] Источник: https://habr.com/ru/post/465597/?utm_source=habrahabr&utm_medium=rss&utm_campaign=465597
Нажмите здесь для печати.