Главная » Микроконтроллеры
Призовой фонд
на август 2022 г.
1. 1000 руб
Сайт Паяльник
2. Мультиметр ANENG M118A
Сайт Паяльник
3. 100 руб.

STM8 просто на C

Введение

В 2016 году была написана серия статей "AVR на C - просто?" - Часть 1, Часть 2, Часть 3, Часть 4. Уже тогда были мнения что 8-битные микроконтроллеры ненужны. Но прошло 6 лет и 8-битные существуют наравне с 32-битными. Причем цена не играет существенной роли в выборе микроконтроллера. Целесообразно делать выбор в соответствии с поставленной задачей. Зачем использовать производительный и "нафаршированный" камень для простых задач, таких как поморгать светодиодом, сделать электронный градусник или простой вольтметр - показометр. Почему STM8? Почему не STM32? Почитав статью пришел к выводу что для начинающего любителя микроконтроллеров лезть в дебри 32-битной архитектуры на ядре ARM Cortex-M3 та еще задача. Пока разбирешся может пропасть интерес к микроконтроллерам. Да и для STM8 обучающие руководства далеки для понимания. Хочется чего то простого на подобии Ардуино, но написанного на напрямую, без "скетчей". И слово то какое придумали "скетч" созвучно со скотчем и на нем склеенное - это так отступление.

Для кого это все? Для начинающего программиста - любителя постараюсь изложить свой подход к изучению STM8. Профессионалам в области микроконтроллеров наверное будет не очень интересно, но конструктивная критика приветствуется, без навязывания своего видения процесса разработки простых устройств на микроконтроллере.

1. Подготовка

Нам понадобится:

  • Среда разработки (Code::Blocks);

  • Компилятор (SDCC - Small Device C Compiler);

  • Стандартная библиотека Standard Peripherals Library (SPL для STM8);

  • Программа для загрузки микропрограмм в микроконтроллер (ST Visual Programmer для STM8);

  • Программатор (обычный ST-Link подойдет);

  • Микроконтроллер (STM8S103F3P6 подойдет, лучше распаянный на макетной плате);

  • Прочее (провода, сопротивления, светодиоды, восьми сегментные индикаторы и др.).

1.1. Среда разработки

В качестве среды разработки остановимся на Code::Blocks. Скачать можно с сайта разработчика по ссылке. Скачивать можно последнюю версию, на сегодня это codeblocks-20.03. При этом предлагаю версию codeblocks-20.03mingw со встроенным компилятором GCC, вдруг вам захочется ознакомится c серией статей по AVR. Кстати описывать установку Code::Blocks в рамках данной статьи не вижу смысла, установка с подробностями и картинками описана в первой статье по AVR. Отмечу лишь что настройка для работы с STM8 будет подробно описана далее в этой статье.

1.2. Компилятор

Ну раз уж начали использовать свободно доступные программы, то и компилятор возьмем свободно распространяемый, а именно SDCC. К сожалению в GCC не поддерживается работа с STM8. Компилятор скачаем опять с сайта разработчиков по ссылке.

Рассмотрим установку под Win 7. Запускаем ранее скачанный файл sdcc-4.2.0-x64-setup.exe и по каритинкам:

  • Принимаем лицензионное соглашение.

  • Предлогает создать ссылку из меню «Пуск»

  • Список устанавливаемых компонентов

  • Путь установки

  • Установка

  • Добавление пути на файлы в PATH

  • И завершение установки

Весь процесс установки можно описать как запустить файл и Next – Iagree - Next - Next - Next - Next – Next – Finish.

1.3. Создание проекта

Для объединения SDCC и Code::Blocks добавим мастер создания проектов для STM8. Нам понадобится «мастер» создания проектов, скачаем скрипты по ссылке.

Из полученного архива codeblocks-wizard-stm8-master.zip извлекаем папку stm8. Ее нужно поместить по пути (в случае если у вас Win 64) для системы Win32 путь может отличатся.

C:\Program Files\CodeBlocks\share\CodeBlocks\templates\wizard

Теперь в этой же папке находим файл config.script и в функцию function RegisterWizards() добави строку

RegisterWizard(wizProject, _T("stm8"), _T("STM8 Project"), _T("Embedded Systems"));

Должно получится примерно так

Теперь проверим работоспособность среды разработки для проектов STM8

Запускаем CodeBlocks и жмем Create a new project

Выбираем категорию проекта STM8 Project и жмем Go

Жмем Next>

Задаем название проекта (Project title:), каталог размещения проекта (Folder to crete project in:) и жмем Next>

Проверяем чтоб Compiler был Small Device C Compiler снимаем галку Create “Debug” configuration (хотя можна и оставить) и жмем Next>

Тут просто Finish.


Видим пустой проект (открыть main.c). Нажимаем вверху

Внижней части окна видим результат компиляции нашего, пока еще пустого проекта. Если в синем тексте нули то среда разработки готова для проектов STM8, но без использования Standard Peripherals Library (SPL для STM8)

1.4. Стандартная библиотека STM8

Чтоб облегчить разработку добавим модернизированные для работы с CDCC библиотеки SPL для STM8. Скачиваем доработанные библиотеки по ссылке.

Распаковываем архив STM8-SPL-SDCC-master.zip например

C:\STM8-SPL-SDCC-master

Подключаем к Code::Blocks

Менню Settings > Compiler

Подключаем библиотеки:

  • Selected compiler выбрать Small Device C Compiler

  • Вкладка Search directories

  • К имеющейся строке SDCC (выделена) добавляем строки библиотек SPL

1.4. Программа для загрузки микропрограмм в микроконтроллер

Для загрузки программ в микроконтроллер используем ST Visual Programmer (stvp) загрузить можно по ссылке на сайте STMicroelectronics. При первом запуске STVP запросит выбрать микроконтроллера

После выбора откроется программа

На этом настройку программного обеспечения можно считать завершенной (условно, нет предела совершенству).

1.5. Программатор

В качестве программатора используем ST-Link v2 из известного магазина

1.6. Микроконтроллер

В качестве подопытного завалялась плата из поднебесной

Тут установлен микроконтроллер STM8S103F3P6, что подойдет для наших изысканий.

1.7. Прочее

Также понадобятся провода, возможно макетная плата, и многое другое.

Об этом в следующей части этой серии статей. Попробуем выяснить что программировать 8-битные микроконтроллеры от STM мало чем отличается от AVR.

Теги:

Опубликована: 0 3
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (9) | Я собрал (0) | Подписаться

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
0
u37 #
Аппаратура STM8 та-же, что и в STM32, с некоторыми упрощениями, поэтому особая "легкость вхождения" STM8 надуманная. Процессоры STM8 заведомо ущербны и их изучение есть зря потраченное время. Даже китайцы отказались от них, используя или STM32 (для устройств с обработкой) или дешевые контроллеры Nuvoton (сейчас их заменяют еще более китайские процессоры). Идет процесс вытеснения окончательно устаревших 8-битных процессоров и тут предлагается на них переходить. Категорически не согласен с этим подходом. Тот, кто пойдет этим путем, потом будет переучиваться.
Ответить
+1
Александр #
Мне кажется "переучиваться" сильно сказано. Всё равно по каждому новому камню нужно глядеть в мануал, изучать периферию. И насколько можно судить, посмотрев по диагонали референс мануал на STM8, разницы в программировании особо нет между 32 и 8. А насчёт устаревших - кто мог подумать, что древние видеокарты снова станут популярными (майнеры сломали рынок). Так и тут - если будет быстрыми темпами развиваться IoT, думаю "устаревшие" восьмибитные микроконтроллеры еще пригодятся.
Ответить
0

[Автор]
vavaav #
Пожалуй соглашусь с вами. При изучении STM8 возникали некоторые непонятки, А описание нашел только для STM32. Отличие только в дополнительных битах регистров в 32-битной архитектуре.
Ответить
0
Влад #
В IoT, если мы именно про интернет вещей, а не "умный дом" не подключенный к внешним сетям вообще, так вот в IoT 8-ми битные и даже некоторые 32-х битные неприменимы из-за требований к защите, т.е. реализации SSL шифрования.
Ответить
0

[Автор]
vavaav #
Ух как вы замахнулись :-). Рассматриваемый STM8 не претендует на самостоятельную работу в интернет, только через посредника. Время такое.
Ответить
0

[Автор]
vavaav #
Не очень понимаю с чего вы взяли что предлагается переходить на STM8? Каждому микроконтроллеру свое назначение. Я согласен что есть люди профессионально занимающимися разработкой приборов на микроконтроллерах. Так для них и не предназначен этот материал. А вот если сравнить ATmega328 и STM8 то у них, с моей точки зрения, есть незначительные отличия. Так у STM8 усложненная система тактирования, но у ATmega с документацией несколько получше, она попонятнее и с примерами на C. Ну а для 32-битных свои плюшки, но иногда их производительность превышает потребность.
Ответить
0
Aleksey1408 #
Большое спасибо за статью. STM8 очень хорош для обучения, его большой плюс в низком энергопотреблении, и это единственный современный МК который работает с +5В.
Я не очень понимаю как можно работать с МК без отладки. Тут концепция залил и смотри как работает. Это только очень простые проекты можно сделать. Было бы интересно посмотреть прикрутить к Eclipse c компилятором и отладчиком. Можно даже показать пример для работы с arm cortex М3 и китайскими клонами STM32
Ответить
0

[Автор]
vavaav #
Над отладкой пока работаю. Есть материалы по Eclipse и аналогично подключают к Codeblocks, но пока не получилось. Материал рассматриваю с точки зрения легкого восприятия как на ардуино, при этом использую Си. В следующей части данной статьи будет рассмотрен подход к программированию STM8 в удобной для понимания форме. Как мне кажется. Материал пока подготавливаю.
Отредактирован 24.07.2022 21:07
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

AVR-программатор USB ASP
AVR-программатор USB ASP
Конструктор - темброблок на LM1036 DC-DC регулируемый преобразователь 1.5-37В 2А с индикатором
вверх