Речь пойдет о маломощном микроконтроллере STM8L001J3. Постараюсь подробно рассказать о необходимых шагах для прошивки "hello world" и различных подводных камнях. Основные характеристики микроконтроллера:  Максимальная частота ядра 16 МГц Объем памяти программ 8 кБайт Объем EEPROM 256 Байт Объем оперативной памяти 1.5 кБайт Количество входов/выходов 6 Поддерживаемые интерфейсы SPI, I2C, UART Напряжение питания 1,8..3,6 V Корпус SO8 Из этих данных видно, что STM8L001J3 вполне может заменить так горячо любимый всеми ATTiny13. Более подробно можно посмотреть на официальном сайте STM. Для изучения нам понадобятся: Вот такой девайс — Модуль STM8L, он минималистичен, но все необходимое на борту имеется; IDE, приложение для написания и редактирования кода; после долгих проб остановился на IAR EW for STM8; Ну и, конечно, программатор ST-Link V2. Любой клон, главное чтобы был рабочий. Помимо этого варианта есть и другие возможные комбинации работы с микроконтроллером, например, Code::Blocks/SDCC/ST Visual Programmer или STVD/Cosmic/STVP. Кстати, "Cosmic" на мои письма не ответила по неизвестной причине. Мы же будем использовать  IAR EW for STM8. На сегодняшний день есть масса возможных ограничений, которые можно обойти, затратив некоторые усилия. Поэтому я буду освещать только общие моменты. Возможно, когда Вы будете читать эту статью что-то изменится. Скачиваем IAR EW for STM8 с официального сайта (не обязательно) последнюю версию и ставим на компьютер. Дальше настраиваем среду для работы. Маленькое отступление для тех, кто любит видеоуроки: есть очень хорошие обзоры у Бородатого Инженера. Там, правда, простая STM8, но первые уроки вполне подходят. А здесь расскажу в картинках, как это все настроить. Открываем приложение и заходим в File/New Workspace, тем самым создаем новое рабочее пространство. Сохраняем проект, называем, к примеру «HW-STM8L»; нажимаем "ОК". Получаем вот такой экран: Добавляем файлы библиотек в проект. Для этого создадим две новых группы, ПКМ (правая кнопка мышки) по корню, Add/Add Group, даем им имена «Inc» и «src». Далее внимательно: если Вы параллельно смотрите видео, то будут отличия. Файлы библиотек SPL для STM8 и STM8L различные. Поэтому идем на официальный сайт ST и скачиваем библиотеки для нашей 8L. Называется файл «en.stsw-stm8012». Сохраняем на диске и разархивируем. Теперь, чтобы добавить файлы библиотек в наши вновь созданные папки, кликаем ПКМ по этим папкам, Add/Add Files. Находим на диске разархивированный файл en.stsw-stm8012\STM8L10x_StdPeriph_Lib\Libraries\STM8L10x_StdPeriph_Driver выбираем всё и добавляем в папки соответственно их названиям.   Теперь добавляем основной файл и файлы конфигурации. Находим разархивированный файл библиотек. Выбираем из папки en.stsw-stm8012\STM8L10x_StdPeriph_Lib\Project\STM8L10x_StdPeriph_Templates четыре файла и переносим их в папку с проектом.   Соглашаемся с заменой, "ОК". Для удобства перенесем эти файлы в корень. Для этого опять ПКМ на корне и добавляем три файла (mane.c уже поменялся): Продолжаем настраивать конфигурацию: ПКМ по корневому файлу, далее Options. Появляется вот такое окно, выбираем в нём наш микроконтроллер: Следующая настройка С/С++ Comiler/Preprocessor, туда добавим наши папки «inc» и «src».  Также добавляем папку с четырьмя добавленными файлами. Прописываем наш микроконтроллер в это окно Defined: Далее в этом окне идем в Debugger меняем Simulator на ST-Link. Следом в Output Converter: ставим галку и выбираем Output format как "Intel Extended".   Нажимаем "ОК" и ждём, пока настройки применятся. Потом F7 или зеленый многогранник со стрелочкой, именуем Work Space, "ОК", даем какое-то время для сборки. После сборки ошибок быть не должно. Если они есть, то исключите файл, на который жалуется приложение из папки «src». Примерно так: ПКМ на файле, "Options" и ставите галку здесь: В моем случае жалоба была на файл "stm8l10x_itc.c", после его исключения ошибка пропала. Вот он, наш замечательный бесконечный цикл. Настройка завершена.  На борту этого модуля микроконтроллер, светодиод и кнопка. Питается от внешнего напряжения 5-15 Вольт. Есть отдельные пины для подключения программатора. При необходимости можно удалить перемычки J1 и J2, тем самым освободив пины микроконтроллера под свои нужды. В комплекте, кстати, идет дополнительно еще один микроконтроллер и макетка. По схеме у нас светодиод на выводе №6 — PB6, а кнопка на выводе №7 — PB7, это нам понадобится в третье главе, когда будем писать код для микроконтроллера.   Также обратите внимание: здесь всего три вывода для внутрисхемного программирования. Отсутствует привычный четвертый вывод «Reset». У этого микроконтроллера его нет. Эту особенность, нужно учитывать при программировании, и она накладывает некоторые ограничения при написании кода. Подробнее в следующей главе.   Прежде всего необходимо рассказать о главной особенности микроконтроллера STM8L001J3. Я уже писал, что разработчики отказались от «Reset» ножки. Поэтому в даташите рекомендуется при написании кода в первых же строках дать 5-секундную задержку перед началом выполнения основной программы. Таким образом, при подаче питания у нас есть 5 секунд для начала заливки кода. Если заливки нет, программа благополучно начнет работу после небольшой паузы. Когда же код будет полностью отлажен, можно убрать задержку и прошить, осознавая, что внести изменения кода в микроконтроллер больше нельзя.   Итак, полагаясь на даташит и знания Си, пишем наш Hello World:   Можно скопировать весь текст на странице "main.c". Главный цикл находится в самом конце, это несколько строчек. Все остальное — инициализация и подготовка. Переносим текст, нажимаем зеленый квадратик со стрелкой (ALT+F7) и компилятор должен выдать «Ошибок 0». Переходим к прошивке. Используем ST-LINK: скачиваем и устанавливаем под него свежие драйвера. Вставляем в USB. Подключаем три провода программатора ST-LINK: Gnd, Swim, +3.3 к соответствующим выводам Модуля STM8L. Здесь нужно заметить, что на Модуле STM8L уже загружена тестовая прошивка. Поэтому, на все про все есть ровно 5 секунд. За это время нужно соединить три контакта и нажать кнопку «Download and Debug» (Ctrl+D). После прошивки рестарт, ждем 5 секунд и видим наш мигающий светодиод. Можно поменять в программе паузу, правда, чтобы её увеличить, необходимо задать переменную «i» как uint32.   Это первые шаги. В даташите приводится код на Си. Можно самостоятельно дописать нашу программу, чтобы можно было использовать UART и таймеры.