8-900-374-94-44
[email protected]
Slide Image
Меню

Stm32F4Discovery для начинающих: Начинаем изучать STM32 или Управляем светом по-умному / Хабр

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

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

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

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

Список статей:

  1. Начинаем изучать STM32 или Управляем светом по-умному
  2. Начинаем изучать STM32: битовые операции
  3. Начинаем изучать STM32: Что такое регистры? Как с ними работать?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. На любой плате Discovery имеется встроенный программатор/отладчик ST-LINK который подключается к компьютеру через USB и его можно использовать как для программирования микроконтроллера на плате, так и внешних устройств путем снятия/установки соответствующих перемычек.
    То есть плюсом ко всему — мы еще и экономим деньги, получая решение два в одном: микроконтроллер и программатор.
  2. Платы Discovery имеют полную разводку всех пинов прямо с микроконтроллера на пины платы. Я для удобства использования воткнул Discovery так же в две макетные платы.
  3. 3. На плате всегда имеется некоторое количество всяких периферийных устройств, например, таких как акселерометры, микрофоны, дисплеи, сенсоры и многих других. На разных платах Discovery имеются различные варианты обвеса. Если кому интересно, можете ознакомиться подробнее на сайте производителя.

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

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

  1. Схему платы чтобы видеть куда, где и что подключено. Взять схему можно на страничке производителя Вашей платы в разделе Schematic Pack. Скачать схемы можно пролистав страницу немного ниже в блоке, указанном на картинке:
  2. Datasheet на наш микроконтроллер, чтобы в любой удобный момент можно было посмотреть распиновку, характеристики, параметры и прочую необходимую информацию для работы. В моём случае это STM32F051R8T6. Ссылка на datasheet находится в заголовке страницы:
  3. Так же нам понадобится Reference manual на наш микроконтроллер. Это документ, в котором подробнейшим образом описаны методы и подходы к работе с ядром МК, c его тактовым блоком, с периферией и т.д. Так же в нем содержатся описание всех регистров МК, всех опций и настроек МК и периферии. Наверное, это самый важный файл без которого разобраться в том, как и что работает внутри МК было бы очень сложно. Скачать файл можно по ссылке на странице микроконтроллера:
  4. И наконец, нам нужно установить среду разработки, в которой бы мы могли создавать программы для нашего МК и спокойно осуществлять компиляцию и прошивку наших программ. В свое время я перепробовал почти все из самых популярных IDE и остановился на Keil uVision 5. На мой взгляд, данная среда разработки показалась мне самой удобной и простой в освоении. Встроенный отладчик, готовые и легко подключаемые низкоуровневые библиотеки, огромное количество примеров и удобно организованный рабочий интерфейс и пространство IDE стали решающими факторами, повлиявшими на мой выбор.
    Скачать данную IDE можно с официального сайта, но требуется простая регистрация:. Есть правда одно небольшое ограничение на размер загружаемой прошивки в 32кБ т.к. данная IDE платная. Но нам этого будет более чем достаточно. Нам понадобится MDK-Arm:

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

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

Pack Installer. В данном установщике содержатся низкоуровневые библиотеки, Middleware, примеры программ, которые регулярно пополняются и обновляются.

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

  1. Keil::STM32F0xx_DFP – полноценный пакет программного обеспечения для конкретного семейства микроконтроллеров, включающий в себя мануалы, даташиты, SVD-файлы, библиотеки от производителя.
  2. ARM::CMSIS – пакет Cortex Microcontroller Software Interface Standard, включающий в себя полный набор библиотек от ARM для поддержки ядра Cortex.
  3. Keil::ARM_Compiler – последняя версия компилятора для ARM.

После установки требуемых паков можно перейти к настройке IDE и нашего отладчика/программатора. Для этого нам необходимо открыть главное окно Keil и создать новый проект.

Для этого необходимо перейти в меню Project -> New uVision Project и выбрать папку, в которую сохраним наш проект.

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

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

  1. Ядро библиотеки CMSIS, в котором объявлены настройки, адреса регистров и многое другое из того что необходимо для работы нашего МК.
  2. Startup-файл, который отвечает за первоначальную инициализацию МК при старте, объявление векторов и обработчиков прерываний и многое другое.

Если все зависимости у подключаемых удовлетворены – менеджер будет нам сигнализировать об этом зеленым цветом:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/* Заголовочный файл для нашего семейства микроконтроллеров*/
#include "stm32f0xx.h"
/* Тело основной программы */
int main(void)
{
	/* Включаем тактирование на порту GPIO */
	RCC->AHBENR |= RCC_AHBENR_GPIOCEN;
	
	/* Настраиваем режим работы портов PC8 и PC9 в Output*/
	GPIOC ->MODER = 0x50000;
	
	/* Настраиваем Output type в режим Push-Pull */
	GPIOC->OTYPER = 0;
	
	/* Настраиваем скорость работы порта в Low */
	GPIOC->OSPEEDR = 0;
	
	while(1)
	{
		/* Зажигаем светодиод PC8, гасим PC9 */
		GPIOC->ODR = 0x100;
		for (int i=0; i<500000; i++){}	// Искусственная задержка
					
		/* Зажигаем светодиод PC9, гасим PC8 */
		GPIOC->ODR = 0x200;
		for (int i=0; i<500000; i++){}	// Искусственная задержка
	}		
}

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

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

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

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

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

Список статей:

  1. Начинаем изучать STM32 или Управляем светом по-умному
  2. Начинаем изучать STM32: битовые операции
  3. Начинаем изучать STM32: Что такое регистры? Как с ними работать?

Программное обеспечение для STM32F4DISCOVERY | FirstHand.

ru::Личный опыт

Для осваивания и изучения микроконтроллера на основе Cortex M4 мной используется отладочная плата STM32F4-Discovery с микроконтролллером STM32F407VGT6 от компании ST Microelectronics и поэтому выбор программного обеспечения будет рассматриваться в первую очередь для использования его с stm32f4discovery.

Для того чтобы это «железо» работало так как нам надо, необходимо сначала создать программу и затем поместить эту программу в микроконтроллер. Для этого используются различные программы или различное программное обеспечение (коротко — ПО).

По функциональному назначению эти программы можно разделить на редакторы, компиляторы, программы генерации кода, программаторы и отладчики.  Такой набор программ, очень часто называют toolchain и этот термин встречается очень и очень часто. Лично мне привычнее такой набор программ называть IDE (Integrated development environment — Интегрированная среда разработки).

Toolchain — это tool и chain вместе. Tool означает инструмент, chain означает «цепь, цепочка, последовательность» то есть Toolchain — это «интсрумент цепи». Почему цепи? Потому что процесс получения реально работающего микроконтроллера состоит из определенных последовательных этапов. Этапы идут друг за другом как звенья одной цепи и для каждого этапа необходим свой инструмент или, в данном случае, своя программа.

Поэтому Toolchain, насколько я понял, это набор из редактора, компилятора, программы генерации кода, программатора и отладчика.

Редакторы нужны для того чтобы люди могли писать программы на понятном им языке программирования. Причем это может быть простой текстовый редактор или редактор специально «заточенный» под определенный язык программирования.

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

Программаторы записывают машинный код в микропроцессор или в микроконтроллер.

Отладчики нужны для поиска ошибок человеческих в созданных ими же программах.

В документации на STM32F4DISCOVERY, в документе «UM1472: Discovery kit for STM32F407/417 lines» указано несколько toolchain, которые поддерживают STM32F4DISCOVERY. Хотя я раньше думал, что это полноценные IDE. Но раз в официальной документации написано что это toolchain, значит будем привыкать к новому термину и понятию.

Итак toolchain для STM32F4DISCOVERY:

  • Altium, TASKING™ VX-Toolset
  • Atollic, TrueSTUDIO
  • IAR, EWARM
  • Keil™, MDK-ARM

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

Но есть и нюансы. При просмотре примера для портов ввода/вывода (GPIO)микроконтроллера STM32F4хх в IAR EWARM (IAR Embedded Workbench for ARM) я заметил что там используется порт не такой как в STM32F4DISCOVERY. Оказалось что у компании IAR Systems есть свои отладочные платы с микроконтроллерами компании STMicroelectronics на основе Cortex-M4, но не на STM32F407VG, а на контроллере STM32F407ZG, а STM32F407ZG имеет 144 пина и примеры в IAR EWARM расчитаны именно для их отладочной платы IAR KickStart Kit for STM32F407ZG. Поэтому, если использовать примеры IAR Embedded Workbench for ARM для STM32F4-Discovery, то придется корректировать код, а для начинающего это пока сложно. Для начинающего нужны примеры которые работают сразу, а уже изменяя код программ рабочего примера, расширять свои знания. К счастью, для STM32F4-Discovery есть примеры у самой компании STMicroelectronics и их можно свободно использовать.

Помимо вышеперечисленного программного обеспечения есть и другие, в том числе и бесплатные. Из бесплатных наиболее упоминаемыми являются IDE или toolchan на базе Eclipse и CooCox CoIDE.

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

GCC (GNU Compiler Collection) — это набор компиляторов для различных языков программирования, разработанный в рамках проекта GNU. Они бесплатны. Мне попались упоминания о двух таких наборах. Кто-то устанавливает GCC ARM Embedded, а кто-то CodeSourcery GCC.

  • GCC ARM Embedded или ARM GCC(GNU Tools for ARM Embedded Processors — launchpad.net/gcc-arm-embedded/+download)
  • CodeSourcery GCC (Sourcery CodeBench Lite Edition including ARM GCC IDE — mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/)

Как видим, выбирать программное обеспечение для ARM Cortex-M4 есть из чего. Моим критерием выбора было минимальное количество телодвижений для получения машинного кода из готового примера, загрузка в микроконтроллер и проверка работы «железа». Чем легче это делается, тем лучше.

IAR Embedded Workbench for ARM у меня уже был установлен, но пример с GPIO не заработал на STM32F4-Discovery, потому что их примеры ориентированы на их же отладочные платы. Примеров для STM32F4Discovery от самой компании STMicroelectronics у меня пока не было.

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

CooCox CoIDE и GCC ARM Embedded установились легко. Настойка этой пары была простой. Пример с GPIO откомпилировался и загрузился практически сразу. STM32F4 DISCOVERY замигал светодиодиками как и положено. Всё заработало. Единственное условие для нормальной работы CooCox CoIDE — это наличие интернет. Все примеры и дополнения качаются из интернет. Но это сейчас не проблема.

Для того чтобы STM32F4 — DISCOVERY был «виден» компьютером нужно установить драйвера. Я устанавливал их вместе с установкой утилиты STM32 ST-LINK utility. На страницу утилиты «STM32 ST-LINK utility» на сайте компании лучше попадать через поиск. Наберите в поиске «STSW-LINK004» и первая же ссылка приведет вас на нужную страницу.

В итоге я остановился на установке ST-LINK utility, CooCox CoIDE и GCC ARM Embedded, то есть пока мой toolchain состоит из:

  • CooCox CoIDE — для написания программ на Си и С++
  • GNU Tools for ARM Embedded Processors — компилятор с языка Си или С++
  • ST-LINK utility —  программатор и отладчик в «одном флаконе».

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

P.S.
Документ «UM1472: Discovery kit for STM32F407/417 lines» можно скачать на сайте компании STMicroelectronics со страницы посвященной STM32F4DISCOVERY — Discovery kit for STM32F407/417 lines — with STM32F407VG MCU. Лучше искать через поиск. В строке поиска набрать «STM32F4DISCOVERY» и первая же ссылка скорее всего будет указывать куда надо.
 

Видео: Учебное пособие для начинающих по STM32F4 Discovery — Мигающие светодиоды

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

Во-первых, прежде чем мы что-нибудь начнем, нам нужно кое-что узнать о светодиодах на плате обнаружения и о том, как они подключены к микроконтроллеру. Четыре светодиода подключены к контактам на микроконтроллере, и для их включения микроконтроллер должен обеспечить выходное напряжение с каждого соответствующего контакта микроконтроллера. Если мы посмотрим на руководство пользователя STM32F4 Discovery на стр. 18, то увидим, что светодиоды подключены к следующим контактам порта GPIOD: зеленый подключен к контакту 12, оранжевый к контакту 13, красный к контакту 14 и синий к контакту 14. Контакт 15.

Давайте нанесем их на доску открытий для справки.

Хорошо, давайте приступим к программированию. Предполагая, что вы настроили свой проект, если вы этого не сделали, вы можете посмотреть это видео на карточке выше, мы создадим новый файл C и назовем его основным. Щелкните правой кнопкой мыши папку исходной группы 1 и выберите «Добавить новый элемент». Выберите файл C и назовите его main. Нажмите добавить.

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

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

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

Инициализация светодиодов

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

Для правильной работы выводов должны быть включены часы GPIOD. Это делается с помощью следующего кода. Оператор стрелки RCC AHB1ENR побитовая функция ИЛИ, затем RCC_AHB1ENR_GPIODEN.

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

Далее нам нужно сообщить микроконтроллеру, что контакты с 12 по 15 являются выходами. Это делается с помощью некоторых других полезных предопределенных функций, таких как: оператор стрелки GPIOD MODER побитовое ИЛИ, затем GPIO_MODER_MODER[PIN NUMBER] подчеркивание 0. Мы повторяем это для каждого контакта. Теперь светодиоды настроены для использования. Нам нужно создать бесконечный цикл, чтобы светодиоды мигали бесконечно. Если мы не создадим такой цикл, программа просто запустится один раз перед завершением. Мы будем использовать цикл while с 1 в условных скобках, чтобы он всегда зацикливался.

Включение светодиодов

Чтобы включить светодиод, соответствующий контакт в регистре сброса набора битов GPIOD должен быть установлен в единицу. Регистр сброса установки битов или BSRR представляет собой 32-битный выходной регистр, в котором запись единицы на контакт в нижних 16 битах устанавливает высокий уровень вывода, а запись единицы на тот же контакт в верхнем регистре сбрасывает выход на низкий уровень. Следовательно, установка бита и сброс регистра. Это более понятно, когда написано в коде.

Чтобы включить светодиод, скажем, зеленый светодиод на контакте 12, мы пишем: Оператор стрелки GPIOD BSRR равен 1, смещенному в бит 12.

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

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

Задержки

В начале нашего кода, за пределами нашего бесконечного цикла, нам нужно определить переменную, которую мы будем использовать в нашем цикле for. Мы сделаем это, определив 32-битное целое число без знака с именем переменной i. Вернемся к нашему бесконечному циклу и после того, как мы включим каждый светодиод, мы создадим наш цикл for, который будет повторяться много раз, в моем случае с тактовой частотой, которую я установил на своей плате обнаружения, я установим ее на 2 миллиона итераций. Вы можете настроить это, если требуется, позже у меня будет еще одно руководство по настройке тактовой частоты, обратите внимание на него, если вам интересно.

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

Соберите программу с помощью кнопки сборки или сочетания клавиш F7. Вы должны увидеть, как он строится без ошибок. Теперь давайте загрузим его на доску открытий. Нажмите кнопку загрузки или ярлык F8. Теперь код загружен на доску обнаружения, указанную выводом Programming Done в окне вывода сборки.

Теперь светодиоды на плате обнаружения STM32F4 должны мигать.

Спасибо за просмотр, если это видео помогло вам, пожалуйста, поставьте лайк и рассмотрите возможность подписки.

Заключение

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

Опубликовано Автор: MarkS

Категория Embedded Systems, Keil µVision, STM32F4 Discovery Tagged Blink, Discovery, LEDs, STM32F4, STM32F4-Discovery, Video

STM32F407 Discovery Kit

Обзор

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

Основанный на STM32F407VGT6, он включает в себя встроенный инструмент отладки ST-LINK/V2, два ST MEMS, цифровой акселерометр и цифровой микрофон, один звуковой ЦАП со встроенным драйвером динамика класса D, светодиодами и кнопками, а также USB OTG micro-AB. разъем.

STM32F4DISCOVERY разработан на базе микроконтроллера STM32F407VGT6 в 100-контактном корпусе LQFP. Этот 32-разрядный микроконтроллер RM Cortex-M4 с FPU имеет 210 DMIPS, до 1 МБ флэш-памяти/192 ОЗУ 4 КБ, USB OTG HS/FS, Ethernet, 17 модулей TIM, 3 АЦП, 15 портов связи. интерфейсы и камера.

Характеристики

  • Микроконтроллер STM32F407VGT6 с 32-разрядным ядром ARM Cortex-M4F, 1 МБ флэш-памяти, 192 КБ ОЗУ в корпусе LQFP100
  • Встроенный ST-LINK/V2 с переключателем режима выбора для использования набора в качестве автономного ST-LINK/V2 (с разъемом SWD для программирования и отладки)
  • Питание платы: по шине USB или от внешнего источника питания 5 В
  • Источник питания внешнего приложения: 3 В и 5 В
  • LIS302DL или LIS3DSH ST MEMS 3-осевой акселерометр
  • MP45DT02, аудиодатчик ST MEMS, всенаправленный цифровой микрофон
  • CS43L22, аудио ЦАП со встроенным драйвером динамика класса D
  • Восемь светодиодов:
    • LD1 (красный/зеленый) для связи USB
    • LD2 (красный) для питания 3,3 В на
    • Четыре пользовательских светодиода: LD3 (оранжевый), LD4 (зеленый), LD5 (красный) и LD6 (синий)
    • 2 светодиода USB OTG LD7 (зеленый) VBus и LD8 (красный) перегрузки по току
  • Две кнопки (пользовательская и сброс)
  • USB OTG FS с разъемом micro-AB
  • Удлинительный разъем для всех входов/выходов LQFP100 для быстрого подключения к макетной плате и удобного измерения
  • Цвет платы синий

Поставляется с

STM32F407G-DISC1 — это комплект Discovery Kit, позволяющий пользователям легко разрабатывать приложения с помощью высокопроизводительных микроконтроллеров STM32F407 с 32-разрядным ядром ARM cortex-M4.

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

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