Stm32 с чего начать

ОБОРУДОВАНИЕ
ТЕХНОЛОГИИ
РАЗРАБОТКИ

Блог технической поддержки моих разработок

Урок 1. Введение. Общие сведения, скорее впечатления, об STM32.

Stm32 с чего начать. LessonSTM. Stm32 с чего начать фото. Stm32 с чего начать-LessonSTM. картинка Stm32 с чего начать. картинка LessonSTM

Вводная статья курса уроков по программированию микроконтроллеров STM32.

Этой статьей начинаю цикл уроков, посвященных программированию микроконтроллеров STM32.

Тема очень интересная, по популярности может превзойти ”Уроки Ардуино”. В принципе, это в какой-то степени продолжение или расширение ”Уроков Ардуино”. По крайней мере, я собираюсь постоянно ссылаться на статьи из этой рубрики, проводить аналогию между ними и уроками STM32.

Я не призываю бросать программировать на Ардуино и переходить только на STM32. Но есть задачи, которые на Ардуино выполнить невозможно или намного сложнее. Да и разве плохо уметь создавать системы, устройства на обоих типах микроконтроллеров.

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

Много информации уже есть на сайте. Например, зачем мне заново рассказывать про технологию клиент-сервер, если в рубрике ”Уроки Ардуино” есть статья об этом.

Контроллеры STM32 значительно превосходят по техническим характеристикам платы Ардуино на 8 разрядных микроконтроллерах ATmega328, ATmega2560 и т.п. У них более высокая производительность, больше объем памяти, периферийные устройства разнообразнее по функциям, номенклатуре, количеству. STM32 позволяют реализовывать значительно более сложные задачи, чем платы Ардуино.

Несмотря на вышесказанное я считаю, что программировать STM32 не сложнее, чем Ардуино. По крайней мере, я собираюсь так преподнести материал. Хотя объем информации будет больше.

Уроки рассчитаны как на опытных программистов, изучающих STM32, так и на людей, делающих первые шаги в программировании. Т.е. я собираюсь приводить строгую информацию и сопровождать ее подробными пояснениями. Для второй категории читателей я буду давать ссылки на аналогичные темы в ”Уроках Ардуино”. Не хочется одно и то же ”разжевывать” несколько раз.

Буду преподносить оптимальный с моей точки зрения подход к программированию STM32. Кто-то может с ним не согласиться.

Итак. Я ставлю цель:

Общие сведения о микроконтроллерах семейства STM32.

Возможности контроллеров STM32 потрясают! По крайней мере, меня.

Плата с микроконтроллером STM32F103C8T6 по стоимости сопоставима с ценой плат Ардуино на базе ATmega328 и значительно дешевле плат типа Arduino Mega2560.

По моей партнерской ссылке она стоит всего 175 руб.

Stm32 с чего начать. Lesson2 2. Stm32 с чего начать фото. Stm32 с чего начать-Lesson2 2. картинка Stm32 с чего начать. картинка Lesson2 2

Но по техническим характеристикам! Что стоит только сравнение разрядности обрабатываемых данных. 32 против 8!

У меня ощущение, что я сравниваю Ардуино не с маленькой дешевой платой, а с дорогим монстрообразным 32 разрядным контроллером. Судите сами.

ПараметрыSTM32F103C8T6Arduino Nano
Разрядность32 бит8 бит
Частота72 мГц16 мГц
Объем FLASH64 кБайт32 кБайт
Объем ОЗУ20 кБайт2 кБайт
Число выводов3722
Аппаратное умножение и делениеЕсть, 32 разрядаТолько умножение, 8 разрядов
АЦП2 АЦП, 12 разрядов, 10 входов, 1 мкс время преобразования10 разрядов, 8 входов, 100 мкс время преобразования
Контроллеры прямого доступа к памяти7 каналовнет
Таймеры73
UART3 (выше скорость, больше режимов)1
I2C21
SPI21
USB1нет
CAN1нет
Часы реального времениестьнет
Модуль аппаратного расчета CRC кодаестьнет

К этому можно бесконечно добавлять с приставкой ”гораздо более мощные, совершенные, функциональные”: система прерываний, порты ввода-вывода, коммуникационные интерфейсы и т.п.

И это еще далеко не самый мощный вариант STM32. У меня есть плата STM32F407VET6 с частотой 210 мГц и АЦП со скоростью преобразования до 7,2 миллионов выборок в секунду. Собираюсь на ней сделать динамическую подсветку телевизора, т.е. обрабатывать видеосигнал.

Stm32 с чего начать. IMG 1441. Stm32 с чего начать фото. Stm32 с чего начать-IMG 1441. картинка Stm32 с чего начать. картинка IMG 1441

Техническая документация.

Я не буду пересказывать общую информацию о микроконтроллерах STM32. Советую вам просмотреть книжку “Мартин М. Инсайдерское руководство по STM32”, чтобы иметь общее представление о STM32. Я не стал давать ссылку. Не знаю, как обстоят дела с авторским правом на этот документ. Но найдете без труда. Подробно компоненты и узлы STM32 будем изучать в уроках.

Из строгой официальной документации надо иметь:

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

В следующем уроке рассмотрим нашу базовую плату STM32, добавим к ней узлы для загрузки программ из компьютера во FLASH-память микроконтроллера.

Источник

Начинаем изучать STM32 или Управляем светом по-умному

Небольшое вступление

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

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

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

В компании, в которой я работаю, имеется отдел разработки, и я решил обратиться к инженерам чтобы они направили меня на путь истинный и показали с чего можно было бы начать решение своей задачи. Меня решительно отговорили от изучения Arduino и у меня в руках оказалась неведомая и непонятная зеленая платка на которой виднелись надписи, буковки, разные электронные компоненты.

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

Всё это для меня на тот момент показалось непостижимо сложным, и я даже пришел в некоторое смятение, но от реализации поставленной задачи отказываться не собирался. Так я познакомился с семейством микроконтроллеров STM32 и платой STM32F0-Discovery, после изучения которых мне хотелось бы сваять свой девайс под нужные мне цели.

К моему большому удивлению, такого большого комьюнити, статей, примеров, различных материалов по STM не было в таком же изобилии как для Arduino. Конечно, если поискать найдется множество статей «для начинающих» где описано, как и с чего начать. Но на тот момент мне показалось, что все это очень сложно, не рассказывались многие детали, интересные для пытливого ума новичка, вещи. Многие статьи хоть и характеризовались как «обучение для самых маленьких», но не всегда с их помощью получалось достичь требуемого результата, даже с готовыми примерами кода. Именно поэтому я решил написать небольшой цикл статей по программированию на STM32 в свете реализации конкретной задумки: пульт управления освещением в комнате.

Почему не AVR/Arduino?

Предвосхищая высказывания о том, что неопытному новичку бросаться сразу же в изучение такого сложного МК как STM32 было бы рановато — я расскажу, почему я решил пойти именно этим путём, не вникая и не знакомясь с семейством процессоров от Atmel и даже не рассматривая Arduino как вариант.

Во-первых, решающую роль сыграло отношение цена-функционал, разницу видно даже между одним из самых дешевых и простых МК от ST и достаточно «жирной» ATMega:

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

После того, что я увидел значительные различия между ценой и возможностями AVR и STM32 – мною было принято решение, что AVR использовать в своей разработке я не буду =)

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

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

В-четвертых, люди, занимающиеся профессиональной разработкой больше склонны к использованию 32-разрядных МК, и чаще всего это модели от NXP, Texas Instruments и ST Microelectronics. Да и мне можно было в любой момент подойти к своим инженерам из отдела разработки и разузнать о том, как решить ту или иную задачу и получить консультацию по интересующим меня вопросам.

Почему стоит начинать изучение микроконтроллеров STM32 с использования платы Discovery?

Как вы уже поняли, знакомство и изучение микроконтроллера STM32 мы начнем с Вами, уважаемые читатели, с использования платы Discovery. Почему именно Discovery, а не своя плата?

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

Что нам понадобится для разработки помимо платы Discovery?

В своей работе с платой Discovery нам понадобится еще ряд незаменимых вещей, без которых мы не сможем обойтись:

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

Приступим к первоначальной настройке и подготовке IDE к работе!

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

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

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

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

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

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

И вновь появится, уже знакомое нам, окно в котором мы можем подключить интересующие нас модули к проекту. Для нашего проекта понадобится два модуля:

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

После того как мы нажмем клавишу ОК мы можем приступать к созданию нашего проекта.

Для того, чтобы сконфигурировать параметры проекта и настроить наш программатор нужно правым кликом по Target 1 открыть соответствующее меню.

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

В главном меню проекта настраиваем параметр Xtal в значение 8.0 MHz. Данный параметр отвечает за частоту работы кварцевого осциллятора нашего МК:

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

Далее переходим к настройке нашего программатора/дебагер. Кликаем в этом же окне на вкладку Debug и выбираем в поле Use параметр ST-Link Debugger и переходим в настройки:

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

В настройках мы должны увидеть модель нашего ST-Link установленного на плате, его серийный номер, версию HW и IDCODE МК который будем прошивать:

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

Для удобства можно настроить параметр, отвечающий за то, чтобы МК сбрасывался автоматически после перепрошивки. Для этого нужно поставить галочку в поле Reset and Run.

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

После этого нужно настроить еще одну опцию, которая позволит нам писать русскоязычные комментарии к коду наших проектов. Нажимаем кнопку Configuration и в открывшемся меню в поле Encoding выбираем Russian Windows-1251.

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

Всё. Наша IDE и программатор готовы к работе!

В Keil имеется удобный навигатор по проекту, в котором мы можем видеть структуру проекта, необходимые для работы справочные материалы, в т. ч. те, которые мы уже скачали к себе на компьютер до этого (схема Discovery, datasheet, reference manual), список функций, использованных в проекте и шаблоны для быстрой вставки разных языковых конструкций языка программирования.

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

Переименуем папку в структуре проекта с Source Group 1 на App/User, таким образом обозначив то, что в данной папке у нас будут располагаться файлы пользовательской программы:

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

Добавим основной файл программы через навигатор проекта, выполнив команду Add New Item To Group “App/User”.

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

Необходимо выбрать из предложенного списка C File (.c) и назначить ему имя main.c:

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

Созданный файл автоматически добавится в структуру проекта и откроется в главном окне программы.

Что ж, теперь мы можем приступить к созданию нашей программы.

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

После того, как мы написали нашу программу, настала пора скомпилировать код и загрузить прошивку в наш МК. Чтобы скомпилировать код и загрузить можно воспользоваться данным меню:

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

Команда Build (или горячая клавиша F7) скомпилирует код, и если не было никаких ошибок программе выведет в логе компиляции следующее сообщение о том, что ошибок и предупреждений нет:

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

Команда Load (или горячая клавиша F8) загрузит компилированный код в наш МК и автоматически отправит его на исполнение:

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

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

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

Ура! Первый шаг в освоении микроконтроллеров STM32 мы сделали! В следующем уроке мы разберем что такое битовые и логические операции, как ими пользоваться и узнаем об одной очень полезной утилитке для работы с МК, ну а пока можем наслаждаться тем, как весело перемигиваются светодиоды на нашей плате Discovery. )

Источник

Программирование stm32 с самых основ

В статье я хотел бы описать шаги на пути к написанию прошивки для микроконтроллеров stm32 без использования специальных сред разработки типа keil, eclipse и тому подобных. Я опишу подготовку прошивки с самых основ, начиная с написания загрузчика на ассемблере, скрипта для линкера и заканчивая основной программы на C. В коде на C буду использовать заголовочные файлы из CMSIS. Редактор кода может быть любым на ваш вкус, vim, emacs, блокнот, все что угодно. Для сборки проекта буду использовать утилиту make. Итак, начнем!

Почему так сурово, спросите вы. Во-первых, чтобы что-то хорошо освоить, необходимо начинать с основ. Я не хочу, чтобы мой читатель бездумно щелкал клавишами клавиатуры набирая текст очередной супер-программы для устройства, не понимая, как работает устройство. Stm32 гораздо более сложный микроконтроллер по сравнению, например с atmega8 — atmega328 (микроконтроллером, установленным на самой популярной плате серии arduino). Во-вторых, я люблю сам разбираться в любом деле с нуля, и можно сказать, данная статья — это заметки для меня в будущем, чтобы открыть и вспомнить некоторые нюансы.

Да, я забыл еще сказать, что разработку буду вести под Linux. Подойдет любой дистрибутив, например, у меня это Arch Linux. Для ubuntu процесс установки необходимых утилит я постараюсь описать в следующих частях. Можете попробовать Windows, MacOS, но для этого вам самим придется разобраться, как установить необходимые утилиты для компиляции и прошивки.

Первое, что вам нужно сделать, это приобрести плату для разработки на основе контроллера stm32f103. У меня это blue pill:

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

Еще одна вещь, необходимая для старта, это программатор st-link:

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

Плату blue pill и программатор я приобрел на aliexpress, заплатив 200 руб. за все вместе.
Второе, что необходимо сделать, это скачать набор для компиляции кода под arm GNU GCC.

Для arch linux необходимо поставить пакет gcc-arm-none-eabi:

Далее нам понадобится утилита st-link для работы с одноименным программатором st-link2:

Теперь давайте попробуем подключить нашу плату к компьютеру через программатор.

Соединяем программатор с платой blue pill в таком порядке:

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

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

Теперь давайте проверим характеристики нашей демо-платы. Для этого в терминале запускаем команду st-info из установленного до этого пакета stlink:

Stm32 с чего начать. image loader. Stm32 с чего начать фото. Stm32 с чего начать-image loader. картинка Stm32 с чего начать. картинка image loader

На выбор можем посмотреть:

—version — текущая версии утилиты st-info
—flash — выведет информацию о размере flash-памяти программ микроконтроллера, в моем случае это 0x10000 (65536 байт)
—sram — объем статической памяти — 0x5000 (20480 байт)
—descr — описание — F1 Medium-density device
—pagesize — размер страницы памяти — 0x400 (1024 байт)
—hla-serial — «\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x31»
—probe — Found 1 stlink programmers
serial: 303030303030303030303031
openocd: «\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x31»
flash: 65536 (pagesize: 1024)
sram: 20480
chipid: 0x0410
descr: F1 Medium-density device

Из важного для нас — размер flash-памяти и размер статической памяти, а также стоит запомнить что у нас устройство Medium-density.

Не следует начинать разработку без документации под рукой. Во-первых следует скачать с официального сайта Reference Manual. В нем полное описание всей периферии, регистров периферии микроконтроллера. Во-вторых, скачиваем Programmer Manual по той же ссылке. В нем узнаете о микропроцессоре семейства контроллеров STM32F10xxx/20xxx/21xxx/L1xxxx Cortex-M3, его архитектуре, наборе команд.

Далее разберем, с чего вообще начинается исполнение программы на микроконтроллере.

0x2000 0000 + 0x5000 = 0x2000 5000

То есть по адресу 0x0800 0000 мы должны поместить значение 0x2000 5000.
По адресу 0x0800 0004 мы должны положить указатель на начало нашей программы. Каждый указатель имеет размер 4 байта, значит следующий адрес за 0x0800 0004 во flash памяти будет 0x0800 0004 + 4 = 0x0800 0008. Это значение и необходимо поместить по адресу 0x0800 0004.

Так будет выглядеть начальный участок нашей прошивки:

Теперь об одной особенности микроконтроллеров stm32. Дело в том, что формат команд для stm32 должен быть в Thumb представлении вместо стандартного ARM. Это значит, что при указании указателей мы должны прибавлять 1. Запомните это правило.

Хватит теории, пора переходить к практике. Надеюсь, вы еще не спите. Открывайте ваш любимый редактор кода, будем писать начальный файл для запуска нашего контроллера. Мы начнем с startup файла и он будет написан на ассемблере. Это будет единственный раз, когда я заставляю вас писать на скучном ассемблере, зато вы начнете понимать и “чувствовать” устройство изнутри.

Пишем в самом начале:

Это комментарий на языке ассемблера, каждый комментарий начинается с символа @.
Далее указываем директивы ассемблеру

И далее коротенькая bootstrap-программа:

@указатель на вершину стека. Пишем без пробелов!
@.equ директива ассемблера это почти
@тоже что и define в C или на худой конец
@думайте, что это обычное присваивание переменной
.equ StackPointer 0x20005000

А теперь давайте скомпилируем и прошьем нашу плату.

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

Снова вставляем программатор с подключенной платой в usb и запускаем в терминале Linux команду:

Здесь мы указываем, что хотим прочитать в файл default.bin flash-память начиная с адреса 0x08000000 и размером 0x10000 (64K), то есть всю flash-память.

После этого проверим, что прошивка корректно считалась. Загрузим ее вновь, перезаписывая старую.

Что означает записать default.bin в flash память контроллера начиная с адреса 0x08000000.

Выньте и снова вставьте программатор, на плате зеленый диод должен как и раньше мигать.

Теперь давайте скомпилируем нашу самописную прошивку. В терминале в той же директории, что и сохранили запустите:

Здесь мы компилируем наш исходный файл в объектный код. Это еще не готовая прошивка, годная для заливки в микроконтроллер. Нам необходимо еще “указать” куда, по каким адресам размещать нашу программу. Этим занимается компоновщик. Мы воспользуемся самым популярным компоновщиком LD, который входит в поставку пакета arm-none-eabi-gcc. Подробнее о компоновщике и описание скрипта для компоновщика ld я расскажу в следующей части, когда мы перейдем к автоматической сборке нашей супер-простой прошивки. А пока просто скачайте этот маленький файл stm32f103.ld https://bit.ly/2HXIydu, и выполните команду:

Этой командой мы компонуем наш объектный файл с помощью скрипта stm32f103.ld, на выходе получаем elf файл.

Чтобы окончательно подготовить исполнимый elf файл к прошиванию, выполним последнюю команду:

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

Итак, наша первая программа для контроллера stm32 готова! Прошиваем!

Поздравляю! Теперь микроконтроллер обречен на вечное выполнение безусловного перехода. До следующей встречи!

Источник

Добавить комментарий

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