Введение

Все описанные в статье пункты, за исключением раздела с прошивкой
процессора с помощью утилиты ST-Link Utility, могут быть выполнены
как на системе с ОС Linux, так и Windows.

В этой статье хочется рассказать о том, как сделать первые шаги в
освоении микроконтроллеров STM32 производства ST Microelectronics. Они
выполнены на базе ядра ARM Cortex-M3 и делятся на несколько групп:

  • Value line STM32F100xx - 24 МГц CPU;
  • Access line STM32F101xx - 36 МГц CPU, до 1 Мб Flash-памяти;
  • USB access line STM32F102xx - 48 МГц CPU, содержат USB FS;
  • Performance line STM32F103xx  - 72 МГц, до 1 Мб Flash-памяти, USB
    и CAN;
  • Connectivity line STM32F105/107xx - 72 МГц CPU, содержат Ethernet
    MAC, CAN и USB 2.0 OTG.

Рассказ будет основан на примере отладочной платы STM32VL-Discovery, на
борту которой находится процессор STM32F100RB и отладочный интерфейс
ST-Link.

alt

Рис. 1. Фотография отладочной платы STM32VL-Discovery.

Характеристики платы:

  • STM32F100RB микроконтроллер, 128 KB Flash, 8 KB RAM в корпусе 64-pin
    LQFP;
  • Отладчик ST-Link, который может работать и как отдельный отладчик (с
    SWD-разъемом);
  • Питание от USB или внешнего источника на 5 V или 3.3 V;
  • Может питать внешние цепи на 5 V и 3 V;
  • Два пользовательских светодиода (зеленый и голубой);
  • Одна пользовательская кнопка;
  • Разъем со всеми портами ввода-вывода для быстрого подключения и
    макетирования.

Перед тем как продолжить, необходимо выполнить действия, описанные в статье про настройку среды разработки: Настройка связки Eclipse и ARM GCC в Linux

Необходимые компоненты

Для начала работы с данной отладочной платой, необходимо скачать
следующие компоненты:

Обязательные:

Рекомендуемые:

Демонстрационный проект

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

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

  • stm32f100rb_flash.ld - скрипт для линкера, программа
    располагается во Flash;
  • startup_stm32f10x_ld_vl.S - так называемый "Startup"-файл,
    производящий инициализацию стека, векторов прерываний и
    низкоуровневую инициализацию процессора;
  • system_stm32f10x.c - содержит функцию SystemInit(), которая
    настраивает систему тактирования. Эта функция вызывается из
    Startup-файла и выполняется до входа в main();
  • stm32f10x_it.c - содержит заглушки обработчиков аппаратных
    исключений, которые помогают при отладке программы;
  • main.c - собственно, main().

Все эти файлы можно найти в составе библиотеки периферии (STM32F10xxx
standard peripheral library). Для удобства понимания, я собрал их все в
одном месте в виде минимального стартового комплекта.

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

Импорт демонстрационного проекта

Распакуйте архив с проектом в свое рабочее пространство (Workspace);

В главном меню Eclipse выберите пункт File > Import;

В появившемся окне выберите General > Existing Project ...;

Нажмите кнопку Browse и выберите директорию с проектом. Если он
находится вне рабочего пространства, установите галочку Copy
projects into workspace
.

alt

Рис. 2. Импорт проекта в рабочее пространство.

Настройка параметров проекта

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

Для отображения окна свойств проекта, нажмите правой кнопкой мыши на его
имени и выберите пункт Properties.

Нас будут интересовать:

1. Настройки Toolchain

Для отображения окна настроек, откройте подпункт C/C++ Build >
Settings
.

Linker: ARM Sourcery Linker > General.

alt

Рис. 3. Настройки линкера

Поскольку путь к скрипту сборщика указывается абсолютный, необходимо
исправить его в соответствии с расположением файла
stm32f100rb_flash.ld у Вас на диске.

Flash Image: ARM Sourcery Create Flash Image.

alt

Рис. 4. Настройка генератора бинарного файла прошивки.

С помощью данного пункта можно выбрать формат бинарного файла прошивки,
который будет сгенерирован в процессе сборки. Так как мы будем
использовать утилиту STM32 ST-Link Utility, необходим формат Binary.

2. Пути к заголовочным файлам

Для отображения настроек путей, откройте подпункт C/C++ General > Paths
and Symbols
.

alt

Рис. 5. Окно редактирования путей

Сборка проекта

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

Если сборка прошла успешно, в окошке терминала будет выведен текст с
результатом:

| Invoking: ARM Sourcery Windows GNU Print Size
|  arm-none-eabi-size --format=berkeley STM32Test.elf
|  text data bss dec hex filename
|  6428 56 132 6616 19d8 STM32Test.elf
|  Finished building: STM32Test.siz

Прошивка процессора

Для прошивки процессора выполните следующие действия:

  • Подключите отладочную плату к свободному разъему USB и дождитесь
    окончания установки драйвера (специального драйвера не требуется);
  • Запустите утилиту STM32 ST-Link Utility;
  • В меню программы выберите пункт Target > Connect;

alt

Рис. 6. Успешное соединение с целевым процессором.

  • В меню программы выберите пункт File > Open file;
  • В появившемся диалоговом окне перейдите в директорию Debug Вашего
    проекта и выберите файл STM32Test.hex. Если он не отображается,
    установите фильтр на отображение всех файлов (*.*);
  • На предложение программы выполнить загрузку прошивки, нажмите OK;
  • Далее кнопку Program;
  • После завершения загрузки прошивки, в меню программы выберите пункт
    Target > MCU Core, в появившемся окне нажмите кнопку Run. Или
    отключите питание отладочной платы, а затем включите. Светодиоды
    должны вспыхивать примерно раз в пол секунды.

alt

Рис. 7. Запуск микропрограммы на исполнение.

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