Программа для прошивки stm8

Обновлено: 07.07.2024



STM8S103F3P6 и ST-Link2

Если в прошлый раз я писал о работе с STM8 из под Linux, то сейчас мне бы хотелось раскрыть этот вопрос с позиций Windows.

В качестве ОС я выбрал "старушку" Windows XP SP3, а в качестве "подопытного" чипа, так же как и в прошлый раз, у меня STM8S103F3P6 распаяный на плате как на картинке слева. Используемый мною программатор, это китайский клон ST-Link2.

Этот пост можно назвать "быстрым стартом" STM8в Windows.

1. Драйвера

Первым делом нужно будет поставить драйвера для программатора ST-Link2. Для этого заходим на домашний адрес компании ST в раздел данного программатора:


Проматываем страницу книзу, в раздел ПО:


после чего следует щелкнуть по STSW-LINK009. В результате попадем на страницу драйвера:


Как видно, драйвер предлагается для OC: Windows XP, Windows7, Windows8. Десятка похоже, что в пролете ;)

Кликнув по кнопке Download, получаем zip архив. Но т.к. как я уже говорил, что фирма ST сурова, то и никаких инсталятов со слайд-щоу и словами благодарности "за то что выбрали наше предложение", в архиве вы не найдете. Поэтому ставятся они по-другому.

Нужно вставить ST-Link2 в USB порт и дождаться когда запуститься мастер установки драйверов. В появившемся диалоговом меню следует отказаться от соединения с Window Update и в качестве источника драйверов указать распакованную папку скачанного архива.




После чего система сама найдет подходящие для себя драйвера и установит их:


Т.о. программатор начнет отображаться в диспетчере устройств:


2. Флэшер

После того, как драйвер программатора установлен, можно попытаться что-то запрограммировать. Но с софтом ситуация в STM8 я бы сказал, что не простая. Позволю себе процитировать компанию "Компэл".
Пакет ST Toolset включает в себя среду разработки ST Visual Develop и отдельную программу для более функционального внутрисхемного программирования flash-памяти микроконтроллеров ST Visual Programmer. Среда разработки ST Visual Develop имеет встроенный инструментарий для разработки программного обеспечения на языке assembler, но у нее также имеется возможность подключения и использования Си-инструментария от Raisonance и Cosmic software. Стоит заметить, что все четыре среды с Си-инструментарием предоставляют возможность использования с некоторыми ограничениями, а именно– по загружаемому коду во flash-память. УRaisonance оно составляет 16Кбайт, у Cosmic software– 32Кбайт, а у IAR– 8Кбайт или полную версию с 30-дневным ограничением.


Промотав cтраницу книзу и кликнув на Download получите zip-архив ST Toolset. После распаковки и установки у вас появятся ST Visual Developer и ST Visual Programmer. Первый нас не интересует, а второй следует запустить, это флешер. При запуске появиться окно конфигурации:


Выбрав тип микроконтроллера и программатор, попадаете в главное окно программы.

Важный момент: микроконтроллеры STM8 имеют единую шину памяти(адресная шина). Т.е. нет разделения на flash память и оперативную. Т.е. разделение есть на внутреннем уровне т.к. архитектура микроконтроллера все-таки гарвардская, но внешне, архитектура выглядит как фон Неймовская. Чтобы вспомнить, чем отличается одно от другого, приведу цитату из википедии:

В чистой архитектуре фон Неймана процессор в каждый момент времени может либо читать инструкцию, либо читать/записывать единицу данных из/в памяти. Оба действия одновременно происходить не могут, поскольку инструкции и данные используют один и тот же поток (шину). В компьютере с использованием гарвардской архитектуры процессор может читать инструкции и выполнять доступ к памяти данных одновременно, без использования кэш-памяти. Таким образом, компьютер с гарвардской архитектурой при определенной сложности схемы быстрее, чем компьютер с архитектурой фон Неймана, поскольку шины инструкций и данных расположены на разных, не связанных между собой физически, каналах. Исходя из физического разделения шин команд и данных, разрядности этих шин (следовательно, и адресные пространства) могут иметь различные значения и физически не могут пересекаться друг с другом.

Т.е. благодаря гарвардской архитектуре в AVR одна команда выполнялась за один такт.

Скриншот ST Visual Programmer:


Оперативка нас пока не интересует, на скриншоте красными стрелками помечены кнопки чтения и заливки прошивки.

Попытка прочитать что-то без программатора приведет к ошибке:


С программатором, но без микроконтроллера, тоже приведет к ошибке:


Пример успешного чтения прошивки:


Полученную прошивку можно тут же обратно записать в микроконтроллер или сохранить в файл. Можно открыть любую другую прошивку в формате ihex и из программы прошить микроконтроллер.


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


После установки, вам предложат заполнить анкету и выбрать тип лицензии. После чего на email придет ссылка с лицензионным ключом. Введя этот ключ при первом запуске IAR вы попадаете в главное окно программы.


    Хорошие обзоры по интерфейсу IAR можно прочитать здесь:

По второй ссылке, хоть речь идет и о IAR для ARM, большая часть посвящена самой среде разработке IAR. Я не буду повторять описанного там материала, а буду на него опираться.

Сейчас наша задача составить простой Blink, скомпилировать его и загрузить в микроконтроллер. Для этого сначала нужно создать новый проект:


затем, задать параметры проекта:


после чего откроется рабочее окно, где слева будет браузер проекта, в центре текстовый редактор, в снизу окно для логов. На панели инструментов не трудно будет найти кнопки компиляции и загрузки проекта в микроконтроллер:


Но прежде, чем что-то компилировать, следует сначала настроить проект. Поэтому в браузере проекта следует щелкнуть правой кнопкой по названию проекта, и открыть Options


где первым делом, во вкладке target следует выбрать целевой микроконтроллер:


а в качестве отладчика ST-LINK


Так же полезно будет зайти в опции IAR в настроить окно вывода сообшений:


После чего можно уже будет нажать на кнопку компиляции:


В нижнем окне логов появится отладочная информация.

Плата STM8S103S103F3P имеет два светодиода Один выполняет роль индикатора питания, другой подтянут к пину PB5(да, как в Arduino pin13).

Попробуем написать программу для мигания этим светодиодом:


Закомментируем сначала функцию delay, скомпилируем проект, подключим ST-Link с микроконтроллером и нажмем зеленый треугольник "Debug and Download" .


и попадем в окно отладчика. Справа будет ассемблерный листинг программы загруженной в микроконтроллер, слева на панели инструментов появятся кнопки для управления пошаговой отладкой. Нажимая "Step over" раз за разом, светодиод будет на плате будет то загораться то, гаснуть.

Раскомментиров delay, скомпилировав и загрузив прошивку еще раз в микроконтроллер, на панели отладки можно будет нажать на красный крестик. Тогда программа запустится на выполнение и светодиод начнет периодически мигать с интервалом примерно 1/5 сек.

Резюмируя можно сказать, за небольшую сумму (170 руб за ST-Link2 + 68 руб за плату STM8S103F3P6) получили в свои руки достаточно профессиональную связку железа и софта, с которыми можно сделать многое.

image

На пути в программировании stm8 есть развилка, о ней сегодня и поговорим.

Определимся что речь будет идти о средах которые могут писать под си. Для начала поговорим о подходах, я выделю 2 основных.

Первый установка ST Visual Develop и выбор в качестве компилятора COSMIC Бывший платный, а ныне бесплатный, но со своими заморочками; регистрация, получение ключа, и прочие танцы с бубном.

Второй же вариант, более простой VS Code + PlatformIO и компилятор SDCC полностью свободный. И опять же не все так просто. Sdcc не умеет исключать не используемые функции. Я решил этот вопрос хоть и успешно, но не без дополнительных действий при написании кода.

Первая среда, для любителей всё делать правильно

Для начала нам нужен ST Visual Develop. Устанавливаем и ставим запуск ярлыка всегда от администратора. В придачу к нему нам дают ST Visual Programmer, полезный инструмент, особенно когда стоит защита от записи и надо разблокировать микроконтроллер, а ведь китайские blue pill всегда приходят заблокированными. Китайцы бояться что мы украдём их круто оптимизированный Blink.

image

Я так понял её создали, когда в моде были 16 битные цвета.

Дальше нужно будет получить компилятор COSMIC и его лицензионный ключ. Заполняем то что просят, получаем дистрибутив и делаем запрос ключа по электронной почте (тут рулетка кому то сразу придёт, кому то придётся подождать).

После пройденного лабиринта из форм и запросов, когда всё уже установлено, начнём

image

image

При первом запуске нужно указать расположение ключа, его лучше поместить в директорию компилятора. После создания нажимаем F7, ошибок быть не должно. Если писать на чистых регистрах, то всё готово, но я такой хардкор не люблю, поэтому продолжим и добавим SPL библиотеку.

Теперь когда мы прошлись по верхам давайте пробовать запускать библиотеку. Добавляем в проект из шаблона main и конфигурационный файл в. В include files добавляем всё из STM8S_StdPeriph_Lib\Libraries\STM8S_StdPeriph_Driver\inc.

image

Теперь всё должно собраться.

Добавим stm8s_gpio.c и соберём простецкую мигалку. У меня один из светодиодов висит на D3, конфигурация ноги на выход выглядит так:


Её вписываем в main до бесконечного цикла.

А вот функция смены состояния. GPIO_WriteReverse(GPIOD, GPIO_PIN_3); вписываем её в бесконечный цикл.

Но вот незадача, в SPL нету функций задержки, скопипастим из примера GPIO в библиотеке. Там она выглядит следующим образом.


Ну и наконец впишем функцию со значением в бесконечный цикл после функции смены состояния: Delay(0xFFFF);

Подключаем ST-Link и прошиваем, для этого нажимаем Start Debugging и Run. Светодиод моргает значит всё хорошо.

Теперь посмотрим со стороны на эту среду.

По плюсам; у неё есть полноценная отладка, поддержка SPL из коробки. По минусам; она старая из этого вытекает, не очень приятный интерфейс и старый диалект си, на который многие свежие библиотеки придётся переписывать, в частности ставить переменные только вначале функций. Вес кода оставляет желать лучшего. Ну последний камень, этот инструмент может просто взять и вылететь, такое бывает, нечасто, но всё же.

Вторая среда, для тех кто не любит заморачиваться.

Второй подход — это свободный и обновляемый компилятор SDCC, а так же среда PlatformIO.

Для начала установим VS Code и станем рабами Microsoft, далее найдём расширение PlatformIO.

image

Ждём пока миллион ползунков пройдёт до конца и перезапускаем программу. Открываем расширение (может быть и само откроется). Создаём новый проект и выбираем ближайшую плату с stm8s (микроконтроллер можно будет изменить в конфигурационном файле). В качестве фреймворка выбираем SPL мы же не ардуинщики, нас интересует хардкор.

Не удивляйтесь, проект будет создаваться прилично долго, потому как он на ходу будет подгружать компилятор, библиотеки и тд. И вот перед нами возник девственно голый проект, закрываем его он нам больше не нужен. В меню где мы создавали проект, открываем пример spl-blink, суть в том что blink генерирует неплохой шаблон в котором можно сразу писать. Правим пример под себя и прошиваем, всё моргает.

Разберем поподробнее среду разработки. Во первых весь проект должен лежать в src, иначе среда ведёт себя неадекватно. Во вторых открываем stm8s_conf.h и видим что все библиотеки кроме GPIO закомментированы, если этого не сделать то у мк не хватит памяти что бы поместить весь SPL в микроконтроллер (помните в начале я говорил что он загружает все функции что видит в код?).

Выходит что тут мы должны будем ручкам включать и отключать библиотеки, а если пойти дальше в оптимизацию как я и сделал, то нужно будет каждую функцию включать и отключать. Часть конфигурационного файла у меня выглядит следующим образом:

Каждую функцию я включаю через макрос, для этого у меня переписана большая часть SPL. Если вам оптимизация сильно не нужна, то такой упоротостью можете не заниматься.

Пройдёмся по преимуществам: работает почти из коробки, полностью бесплатно без попрошайничества, редакции языка обновляются и не придётся учить и переписывать код под си 80-90г. Сам интерфейс настраиваемый и намного приятнее. Для тех кто не любит win есть linux версия.

По минусам: нету полноценной отладки (над ней активно работают, но пока ничего приближённого к cosmic я не видел), в проекте небольшой хаос, раскидать по папкам пока нельзя.

Послевкусие.

Ну и на последок есть ещё среды, варианты и компиляторы, но либо это тот же SDCC вкрученный силой в Eclipse или ещё куда и работающий хуже чем в VS Code, либо это платные варианты IAR, Raisonance. Я лично пользуюсь и тем и тем, но чаще VS Code. Рекомендовать ничего не буду каждому своё, увидимся в комментариях)

Микроконтроллеры STM8 состоят из нескольких линееек:
STM8S - основная линейка,
STM8A - для автомобильной промышленности,
STM8L - со сверхнизким потреблением энергии,
STM8T - емкостный сенсор для детектирования прикосновения или приближения.

STM8S103F3P6

Отладочную плату с микроконтроллером STM8 на борту можно приобрести за 1 (!) доллар и даже дешевле. Я приобрел несколько таких плат на основе микроконтроллера STM8S103F3P6 на торговой площадке ebay:

контакт назначение
D4 PD4 / UART_CLK
D5 PD5 / TX
D6 PD6 / RX
RST сброс
A1 PA1 / Oscin
A2 PA2 / Oscin
GND земля
5V вход стабилизатора
3V3 выход стабилизатора
A3 PA3 / SS
D3 PD3 / Ain4
D2 PD2 / Ain3
D1 PD1 / SWIM
C7 PC7 / MISO
C6 PC6 / MOSI
C5 PC5 / SCK
C4 PC4 / Ain2
C3 PC3
B4 PB4 / SCL (шина I2C)
B5 PB5 / SDA (шина I2C)

Для питания платы можно использовать следующие варианты:

  • подключение источника напряжением 4,5 . 15 В к контактам + или 5V и - или GND;
  • подключение кабеля к microUSB-разъему (этот разъем используется только для питания!);
  • подключение источника питания напряжением 3,3 В к контактам 3V3 и - или GND.


Использование компилятора SDCC

Пишем код программы в файле TST.c:

Выполняем компиляцию программы командой

При компиляции создается hex-файл TST.ihx:

ST-LINK V2

Для прошивки платы я приобрел на торговой площадке ebay программатор ST-LINK V2:

STM8 программатор

При первоначальном подключении к USB-порту компьютера программатор определяется как "неизвестное устройство" с VID 0483 и PID 3748:

прошивка STM8

На сайте ST доступен драйвер для программатора - STSW-LINK009:

как прошить STM8

После его установки при повторном подключении программатор распознается как "устройство USB":

Разъем программатора имеет 10 контактов:

Номер Название Назначение
1 RST сброс
2 SWIM SWIM-интерфейс (для STM8)
3 GND земля
4 3.3V + 3,3 В
5 5.0V + 5 В
6 SWCLK синхронизация (SWD-интерфейс, для STM32)
7 SWDIO данные (SWD-интерфейс, для STM32)
8 GND земля
9 3.3V + 3,3 В
10 5.0V + 5 В

ST-LINK V2 контакты

Для подключения программатора к плате я использую 4 контакта на разъеме программатора и на плате - 3.3V(3V3), SWIM(SWM), GND, RST(NRST):

При общении программатора с платой используется коммуникационный протокол SWIM (через однопроводной интерфейс - контакт SWIM).

Для прошивки я использую утилиту stm8flash, для запуска которой следует выполнить команду:

Бинарная версия проекта для ОС Windows (можно взять здесь) содержит два необходимых файла:

stm8flash.exe - исполнимый файл
libusb-1.0.dll - библиотека для доступа к USB-устройствам

прошивка STM8

После запуска утилиты она выполняет прошивку программы в память и отчитывается о числе записанных байт:

После прошивки указанной выше программы мигания светодиодом он начинает мигать с периодом около шести секунд.

Visual Studio Code

обновление прошивки STLINK

Прошивка программатора может быть обновлена с помощью утилиты, доступной для скачивания на сайте ST - STSW-LINK007:

После запуска приложения (для Windows - ST-LinkUpgrade.exe) необходим присоединить программатор к USB-порту компьютера, нажать кнопку Device Connect - при этом отобразятся текущая версия прошивки программатора (Version) и его тип (Type), а также версия, до которой можно обновить прошивку (Upgrade to Firmware). Для запуска процесса обновления прошивки необходимо нажать кнопку Yes>>>>.

Работа в редакторе Visual Studio Code

Для написания исходного кода программы, а также для автоматизации процесса компиляции и прошивки удобно использовать бесплатный редактор Visual Studio Code от компании Microsoft (страница загрузки).

STM8 Visual Studio Code

Вот как выглядит исходный код программы в Visual Studio Code:

Для удобства работы следует создать папку (например, sdcc), в которой будут располагаться файлы проектов для STM8. Затем следует добавить эту папку в рабочую область. В эту же папку помещаем файлы:

    compile.cmd - с содержимым: c:/sdcc/bin/sdcc -mstm8 --std-c99 %

В этой папке следует создать папку .vscode, в которой разместить файл tasks.json с таким содержимым:

Этот файл описывает две задачи:

  • compile - компиляция текущего открытого файла с исходным кодом (с расширением .c)
  • flash - прошивка скомпилированного ранее hex-файла (c расширением .ihx)

Выбирая соответствующую задачу ("Задачи" > "Запустить задачу. ")

можно запустить:
компиляцию

прошивку

Полезные подсказки

задание базовых адресов портов:

установка режима порта (DDR - регистр направления порта):

настройка вывода N порта X (PXN) на выход

настройка вывода N порта X (PXN) на вход

вывод (ODR - регистр выходных данных):

установка вывода N порта X (PXN) в состояние "1" :

установка вывода N порта X (PXN) в состояние "0" :

подключение заголовочных файлов

STM8 UART

Вот как выглядит собранная схема из микроконтроллера, USB-UART преобразователя и программатора:

(1/16000000)*65536*предделитель = интервал в секундах
10 секунд = 2441 0x0989

Необходимо задать номер канала АЦП, соответствующего используемому входу (например, вывод D2 - канал 3).

Напряжение можно определить умножением считанного из АЦП значения на VCC/1023, где VCC - напряжение питания на шине 3.3V.
Например, при подключении к входу 3.3V STM выхода 3.3V преобразователя USB-UART напряжение на нем составило 3,24 В. При этом масштабный коэффициент равен 3,24/1023 = 0,00317 В.

Пример простейшего проекта, мигающего светодиодом

Разработка в среде IdeaSTM8

Установка среды разработки

IdeaSTM8

Для программирования под микроконтроллеры STM8 можно использовать среду разработки IdeaSTM8 от компании Cosmic Software (в версии CXSTM8 special edition package - доступна с марта 2016 года, не имеет ограничений):

В качестве примера создадим программу мигания светодиодом (Hello, world! в мире микроконтроллеров) TEST, размещенным на плате и подключенным к контакту PB.5.

IdeaSTM8 создание проекта

Создаем новый проект, выполняя команду New Application:

STM8 программирование

Выбираем в качестве целевой платформы микроконтроллер STM8S103F3:

Копируем в папку проекта заголовочный файл с определениями stm8s.h, предварительно раскомментировав в нем определение используемого микроконтроллера STM8S103:

Создаем новый файл (tst.c) с исходным кодом:

Cosmic Software

создаем файл:

программа для STM8

выбираем в качестве типа файла - файл с исходным кодом на C:

IdeaSTM8 программирование

Добавляем созданный файл в проект:

Пишем код программы в созданном файле:

сборка проекта для STM8

Для компиляции и сборки проекта следует нажать клавишу F7 или выполнить команду Build:

В результате сборки в папке проекта создается файл с именем проекта и расширением .sm8 (TST.sm8).

Для преобразования файла с расширением .sm8 в готовый для прошивки в микроконтроллер hex-файл я использую COSMIC Software Hexa Translator (chex.exe) с помощью команды:

где TST - имя проекта.

Полученный hex-файл (TST.hex) содержит информацию, необходимую для прошивки микроконтроллера:

Для прошивка этого файла в память микроконтроллера можно использовать описанный выше программатор ST-LINK V2.

Мои проекты на STM8

Преобразователь PS/2 - UART

Преобразователь для проекта cpm4nano позволяет подключать PS/2-клавиатуру через последовательный порт (UART).

Дистанционно управляемая аэролодка

Микроконтроллер STM8 принимает сигнал ИК-пульта и управляет движением модели аэролодки.

Для работы с этой средой дополнительно необходим компилятор. Можно использовать два компилятора COSMIC и REISONANCE. COSMIC ранее был платный, но сейчас его можно скачать здесь и установить абсолютно бесплатно, его и будем использовать. Единственная проблема — ожидание ключа активации — 1-2 рабочих дня. Также необходимо раз в год активировать компилятор заново (проще переустановить).

После установки можно сразу запустить среду, создать новый проект и начать программировать. Но тогда придётся прописать все пути руками. Гораздо проще использовать стандартную библиотеку от ST, вместе с ней поставляется шаблон проекта. Так мы и поступим.

Набор стандартных библиотек для STM8, новый проект

Стандартные библиотеки для STM8 можно скачать здесь. Библиотека поставляем в zip архиве с подробным описанием и широким набором примеров. Внутри она имеет следующий набор папок.



Для создания нового проекта, проще всего скопировать всю папку библиотеки STM8S_StdPeriph_Lib, назвать её по имени проекта, лучше по-английски. Далее из Visual develop IDE необходимо открыть файл проекта:



Лучше сразу связать это расширение с нашей IDE.

При старте нового проекта из шаблона, вы получаете сразу готовые настройки под все МК STM8.



Остаётся только выбрать нужный МК и начать разработку. Остальные можно удалить.

Первым делом необходимо сделать начальные настройки проекта. Нажимаем на нужной серии правой кнопкой мышки и выбираем Settings. В данном окне переходим на закладку MCU selections и выбираем нужный МК:



Далее нажимаем на плюс, открываем файлы проекта, видим файл main.c, нажимаем на нем два раза мышкой и начинаем программирование.


Все проекты для наших приборов будут созданы из шаблона проекта. Соответственно, чтобы с ними работать, вам необходимо скачать папку проекта и запустить ярлык из папки проекта, как написано выше.

Если вам не хватает памяти, то можно отключить обработку исключительных ситуаций. Это делается через файл stm8s_conf.h. Надо закомментировать строку:

В результате освободится довольно много памяти для программы. Также можно заменить простые процедуры библиотеки на прямую запись в регистры.

Настройка использования типовых библиотек СИ


Работа в среде

Среда очень похожа на Visual C, поэтому не должна вызывать у вас проблем. Для компиляции проекта необходимо нажать кнопку Compile:



Для запуска отладки и прошивки МК — кнопку Debug:



При написании кода по комбинации «CTRL пробел» вызывается подсказка по имени переменной или функции:


По имени функции, по правой кнопке мышки можно быстро перейти в самой функции — команда «Go to defenition».



Это очень удобно использовать для функций стандартных библиотек, чтобы познакомиться как они реализованы.

Если вы используете в проекте внешний кварц, то его частоту придётся задать руками в файле проекта «stm8s.h»:


Работа с прерываниями организована в виде предопределённых функций в файле «stm8s_it.c», остаётся только написать свой код в нужной функции.

В данной статье мы не будем подробно описывать, как писать программу для STM8 в этой среде, это будет сделано в статье по приборам на основе этого микроконтроллера.

Симулятор

Данная среда имеет очень неплохой симулятор и позволяет отлаживать код без наличия самого микроконтроллера. Для запуска симулятора необходимо указать в настройках отладки, что будет использоваться симулятор:



После этого можно запустить отладку по вышеописанной кнопке и начнётся работа в симуляторе. Симулятор не поддерживает работу с внешним кварцем, поэтому если у вас в коде инструкции по переходу на внешний кварц, их надо закомментировать. Сами настройки процессора можно задать при первом запуске:


В симуляторе доступны все регистры, работают прерывания по таймерам, можно проводить отладку сложных формул и функций. Также в нем можно оптимизировать программу. Виден полученный код на ассемблере. Можно измерять скорость вычислений в тиках процессорного времени и миллисекундах. Можно симулировать состояние выводов МК. В общем, вещь однозначно очень удобная.

Отладка, прошивка, оптимизация кода

Для работы с реальным устройством вам необходимо иметь программатор — ST-LINK. В настройке отладки выбираем его, остальные настройки оставляем по умолчанию.



Далее все просто, при начале отладки — программа компилируется, прошивается микроконтроллер и начинается отладка. Если вам необходимо просто прошить МК, то надо начать отладку и после ее начала — прервать ее, по соответствующей кнопке.



Например, окно «Watch» позволяет просмотреть любые переменные, провести вычисления:



Не забывайте про оптимизацию кода. Во первых, вы не сможете просмотреть содержимое локальных переменных, если это необходимо — то надо сделать их глобальными. Во вторых условные переходы могут быть расположены по другому, конструкции if else компилятор может перерасположить. Если вам необходимо, чтобы отладка шла в соответствие с написанным кодом, то в настройках проекта надо отключить оптимизацию:


Программирование option byte

Для программирования option byte необходимо через меню TOOLS запустить porgrammer. Это отдельное приложение для прошивки МК, через него можно прошить option byte.



Изменение значения осуществляется по правой кнопке мышки. Программирование — на закладке Program по кнопке START. Предварительно на закладке Settings надо задать типа программатора ST-LINK.

Контроль размера прошивки

После компиляции кода можно посмотреть размер прошивки, для того чтобы определить, что занимает больше всего места и т. д. Вся информация находится в текстовом файле по адресу:



смотреть нужно все позиции, кроме сегмента debug и info.

Там же рядом находится прошивка в формате s19, прошить её можно через UART или другими средствами.

Читайте также: