"Hello World" для STM32 или с чего начать

Ср 12 Октябрь 2011 by admin

Введение

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

image0

Рис. 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 <http://www.levap.ru/300>`__

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

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

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

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

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

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

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

  • 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). Для удобства понимания, я собрал их все в одном месте в виде минимального стартового комплекта.

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

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

  1. Распакуйте архив с проектом в свое рабочее пространство (Workspace);
  2. В главном меню Eclipse выберите пункт File > Import;
  3. В появившемся окне выберите General > Existing Project ...;
  4. Нажмите кнопку Browse и выберите директорию с проектом. Если он находится вне рабочего пространства, установите галочку Copy projects into workspace.

image1

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

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

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

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

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

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

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

Linker: ARM Sourcery Linker > General.

image2

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

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

Flash Image: ARM Sourcery Create Flash Image.

image3

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

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

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

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

image4

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

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

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

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

[text]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[/text]

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

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

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

image5

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

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

image6

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

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