Практический курс STM32. Урок 0 - Вводный. Документация. Установка IDE

Предисловие
Примерно год назад, освоив MSP430 я решил подобраться к ARM. Купил себе F4-Discovery, но вот засада, если у Texas Instruments был отличнейший учебник, который позволял на практике освоить MSP в кратчайшие сроки, то с STM32 дела обстояли намного хуже: половина уроков была по серии F0(Cortex-M0 слегка далек от M4 знаете ли), остальные же уроки либо были предназначены для людей имевших ранее дело с ARM, либо основывалась на магии, то есть «вставляем вот этот кусок кода, нажимаем такую-то кнопку, смотрим на плату. Ура, светодиоды мигают, поздравляем» без объяснений что какой кусок кода делает.

Но недавно я решил все-таки достать пыльный Discovery и освоить STM32 от и до. Думаю лучший способ сделать это — написать цикл обучающих статей(если хотите, конспект).

О чем и для кого этот курс
Прежде всего хочу сразу оговорить, что в основном курс будет касаться серии STM32-F4. Это Cortex-M4, который является прямым наследником Cortex-M3(STM32- L1, F1, F2) и отличается от него главным образом ядром с наличием DSP (цифрового сигнального процессора) и FPU (модуля операций с плавающей запятой).

Второй момент. Курс предназначен для новичков и многие конечно сочтут приведенные в нем описания базовых вещей слишком элементарными и излишними, но я не считаю, что освоение STM32 нужно начинать с освоения 8051, PIC'ов и AVR'ок, зачем? Времена когда компании-производители ограничивались выпуском лишь даташитов в качестве документации давно прошли: сейчас каждый производитель старается максимально популяризировать свой продукт и сегодня микроконтроллеры стали доступны широкой аудитории.
Не буду начинать холивар STM vs. AVR, скажу лишь, что Cortex — новее, дешевле и перспективнее.
Но есть два существенных недостатка, мешающих новичкам начинать знакомство с микроконтроллерами сразу с Cortex'ов:
  1. Мелкие корпуса — рекомендую посмотреть видео/почитать статьи по пайке и обзавестись более-менее приличным инструментом.
  2. Отсутствие единого руководства. Надеюсь мой курс сильно сэкономит вам время в поиске документации или руководства как провернуть ту или иную операцию.
Все что хотел сказать в предисловии — сказал. Ну что? Поехали.

Документация
Обзор платы F4-Discovery можно посмотреть тут. На плате установлен камень STM32F407VG. Идем за документацией к нему сюда(ссылку стоит добавить в закладки), открываем вкладку Design Resources, скачиваем:

  1. Из Product SpecificationsDS8626: ARM Cortex-M4 32b MCU+FPU, 10DMIPS, up to 1MB Flash/192+4KB RAM, USB OTG HS/FS, Ethernet, 17 TIMs, 3 ADCs, 15 comm. interfaces & camera. Это Даташит, в нем описана конкретная специфика конкретного контроллера семейства. Даташит как бы уточняет и дополняет Справочное руководство(о нем чуть ниже).
  2. Из Reference ManualRM0090: STM32F405xx/07xx, STM32F415xx/17xx, STM32F42xxx and STM32F43xxx advanced ARM-based 32-bit MCUs. Это то самое Справочное руководство(далее — СР). Оно описывает серию из нескольких микроконтроллеров. Этот документ станет основным талмудом по части железа. В Даташит же будем лезть когда чего-то не найдем в СР или если нам потребуется что-либо уточнить. Обычно в таких случаях в СР дается прямая отсылка, мол «смотрите даташит на конкретный кристалл»
  3. Из Related Tools and SoftwareSTSW-STM32065: STM32F4 DSP and standard peripherals library. Это просто гениальная библиотека от ST, которая значительно упрощает жизнь при написании и переносе кода, она позволяет думать на уровне архитектуры в целом, а не на уровне скажем регистров. Даже не знаю, почему ST ее так запрятала, видимо скромничают =). Из скачанного архива нам потребуется файл "stm32f4xx_dsp_stdperiph_lib_um.chm". Он представляет собой автоматически собранную из сопровождения к коду библиотеки документацию, следовательно то же самое можно увидеть и в .h или .c файлах. Тут уже кому как удобнее. Остальные файлы из архива нам не понадобятся, так как библиотеку будем подключать непосредственно из «репозитория» IDE.

Ну и поскольку в качестве отладочной платы у нас фигурирует F4-Discovery, неплохо бы знать, куда что подключено. Не вопрос, идем сюда(рекомендую также добавить в закладки) и скачиваем:

  1. Из User ManualUM1472: Discovery kit for STM32F407/417 lines. Это руководство к плате. Рекомендуется заглядывать сюда перед тем, как что-то к ней подключить.
  2. Из Schematic PackSTM32F4DISCOVERY schematics(а больше и нечего). Достаем из архива pdf'ку со схемами, кладем к остальным документам.
Кстати тут же в Related Tools and Software есть набор с туевой хучей примеров на все случаи жизни, но он нам пока не понадобиться, ведь у нас курс «с нуля»

Установка IDE
Выбор IDE для Cortex'ов действительно велик. Сама ST рекомендует использовать следующие:
  • Keil MDK-ARM
  • IAR Embedded Workbench for ARM (EWARM)
  • Atollic TrueSTUDIO
  • Altium TASKING VX-Toolset

Но мы ST не послушаем. Все эти IDE коммерческие и стоят денег. Есть у них и бесплатные версии с ограничениями(и их вполне достаточно для начала), но ограничения — это не по-джедайски. В качестве альтернативы будем использовать бесплатную CooCox CoIDE(в простонародье — кокос), которая не уступает коммерческим. Она основана на Eclipse и самодостаточна. Версии для Linux у них правда нет(только обещают ее скоро сделать). Но думаю линуксоиды без проблем могут собрать что-то подобное из Eclipse+ARM Plugin+GCC ARM Toolchain. Нам же никаких плясок с бубном ни во время установки, ни во время использования не потребуется, все вкусности «из коробки». Приступим же к установке.

  1. Идем на ST и скачиваем ST-LINK utility. Устанавливаем. Эта штука является продвинутым программатором(только не подумайте что мы будем отладки ради зашивать через нее в камень скомпилированный код — нет, у нас ведь для таких целей есть кокос). Кстати в случае необходимости можно обновить ПО самого ST-Link(встроенный в Discovery программатор) через нее же. Отдельно драйвера ставить не нужно, они в этот установщик уже включены.
  2. Идем на оффсайт кокоса и скачиваем CoIDE. Устанавливаем. Крайне рекомендую скачивать и устанавливать через CoCenter, он значительно упрощает обновление в дальнейшем.
  3. Идем на ланчпад и скачиваем последнюю версию любезно собранного для нас тулчейна (gcc-arm-none-eabi-тратата-win32.exe). Устанавливаем, лучше директорию установки не менять.
  4. Открываем CoIDE. Сверху нажимаем Project -> Select Toolchain Path

    Ну и выбираем директорию установки тулчейна, а в ней bin.



P.S.
На сегодня все, спасибо за внимание. Завтра напишу урок 1, там познакомимся с GPIO.
  • +8
  • 12 января 2014, 02:05
  • thodnev

Комментарии (26)

RSS свернуть / развернуть
дай б-г сил дописать до конца
правда джедаи говорят, что какос не очень подходит в плане скорости и советуют emblocks
есть даже заточенный под стм32 103
0
Кокос конечно не чемпион по скорости, но имхо для новичков самое то.
0
Но одна фигня у них общая — ни тот ни другой не живут нигде кроме винды.
0
Я тут визарды из Em::Blocks медленно портирую. Очень не хочу ставить на комп JVM, да и в ванильном С:: В очень приятный фронтенд для GDB
0
… для любителей C::B (от Segger) www.emide.org/
0
По поводу последнего скриншота. Пробелы в пути к тулчейну не помешают? Просто везде вижу рекомендации не ставить в папки содержащие пробелы в названии.
0
Не знаю, может это было актуально для старых версий. У меня с пробелами работает без проблем.
0
Самое забавное, что тот гемор, который автор описал (идем туда, скачиваем то) автор назвал «Нам же никаких плясок с бубном ни во время установки, ни во время использования не потребуется». Видимо автор давно не видел живого линуха в глаза, там, обычно, процесс установки и настройки проще.
0
  • avatar
  • evsi
  • 12 января 2014, 13:45
Скачать инсталяшку с сайта — гемор? ))
0
по сравнению с чем-то вроде
apt-get install eclipse

да
0
Слабо утешение за весь остальной гемор ))
+1
Остальной это какой?
0
А остальной примерно одинаковый что в винде, что в линухе.
0
Этим вы только немного облегчаете установку эклипса, но никак не избавляетесь от действительного геморроя в виде настройки тулчейна и отладчика под эклипс.
0
Вот тут описан процесс установки на Linux и согласитесь, там не без шаманства. Будь у CooCox tux версия, не пришлось бы собирать самому. И действительно один какой-то sudo dpkg -i решил бы проблему.
0
В том описании собраны чуть ли не все возможные грабли — вместо ланчпадовского тулчейна (который самый свежий и который ставится из ппа) использован тот, который иначе как руками не ставится, вместо нативного texane stlink gdb зачем-то ставится виндовый. Да, так тоже можно, линух не мешает попыткам прострелить себе ногу. Только гемор тут не из-за линуха.
0
А вот сравните с, например, этим Ubuntu + Pinboard II STM32. Думаю, по времени (с учетом лазанья по сайтам по тутошнему описанию) — на пингвинятине ну уж точно не дольше получается.
А так, ваще, можно и под вынем пересобрать тулчейн — вот тогда мы поймем, ЧТО ТАКОЕ ЕСТЬ ГЕМОРРОЙ ;)
0
Видимо автор давно не видел живого линуха в глаза, там, обычно, процесс установки и настройки проще.
к 2014 он уже научился тянуть отдельные файлы зависимостей или все еще тянет целый пакет?
0
Во-первых: нафига? У отдельного файла окажутся еще зависимости.
Во-вторых: какое это имеет отношение к гемору?
0
Народ давайте не опускаться до очередного боя linux vs windows, этого добра в интернете хватает.
+1
Создание этого обучающего курса — очень дерзкая задумка, аналогов в рунете я пока не встречал!!!
Я уже озадачился покупкой платы STM32F4DISCOVERY с целью освоения курса!
И вопрос, а понадобится ли еще плата CoLinkEx?
0
  • avatar
  • Aneg
  • 13 января 2014, 00:17
Если будете пользовать STM32F4DISCOVERY, то CoLinkEx брать смысла нет, на борту дискавери уже отладчик st-link есть, а кукокс его из коробки поддерживает.
0
Неплохо было бы добавить в раздел Документация пункт эррата, чтобы сразу учить беречь нервы и время.
0
Пробовал SPL, сущий кошмар. Длиннющие строки фиг запомнишь, и писать их долго. Может они и читаются понятнее, но вот постоянно подглядывать как оно там пишется, изнурительно. Ну что с камня на камень перекинуть просто, это да, хотя и без SPL с 3-го кортекса на 4-й код переделывал, разницы большой не заметил.
0
Длиннющие строки фиг запомнишь, и писать их долго.
Используйте современные IDE.
Может они и читаются понятнее
Конечно понятнее.
но вот постоянно подглядывать как оно там пишется, изнурительно.
Пусть редактор подсказывает — это его работа.
+1
В новом CoIDE V2 как-то совсем все печально стало. Я даже не смог проект создать!
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.