Найти тему
Паяльник

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"));

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

-2

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

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

-3

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

-4

Жмем Next>

-5

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

-6

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

-7

Тут просто Finish.

-8
-9

В нижней части окна видим результат компиляции нашего, пока еще пустого проекта. Если в синем тексте нули то среда разработки готова для проектов 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

-10

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

  • Selected compiler выбрать Small Device C Compiler
  • Вкладка Search directories
  • К имеющейся строке SDCC (выделена) добавляем строки библиотек SPL

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

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

-11

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

-12

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

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

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

-13

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

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

-14

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

1.7. Прочее

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

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

Автор: vavaav