Nucleo-f411re usb-adc

NUCLEO-F411RE

Affordable and flexible platform to ease prototyping using a STM32F411RET6 microcontroller.

Table of Contents

Overview¶

The STM32 Nucleo board provides an affordable and flexible way for users to try out new ideas and build prototypes with any STM32 microcontroller line, choosing from the various combinations of performance, power consumption and features.

The Arduino™ connectivity support and ST Morpho headers make it easy to expand the functionality of the STM32 Nucleo open development platform with a wide choice of specialized shields.

The STM32 Nucleo board does not require any separate probe as it integrates the ST-LINK/V2-1 debugger/programmer.

Microcontroller features¶

  • STM32F411RET6 in LQFP64 package
  • ARM®32-bit Cortex®-M4 CPU with FPU
  • 100 MHz max CPU frequency
  • VDD from 1.7 V to 3.6 V
  • 512 KB Flash
  • 128 KB SRAM
  • GPIO (50) with external interrupt capability
  • 12-bit ADC with 16 channels
  • RTC
  • Timers (8)
  • I2C (3)
  • USART (3)
  • SPI (5)
  • USB OTG Full Speed
  • SDIO

Nucleo features¶

  • Two types of extension resources
    • Arduino Uno Revision 3 connectivity
    • STMicroelectronics Morpho extension pin headers for full access to all STM32 I/Os
  • On-board ST-LINK/V2-1 debugger/programmer with SWD connector
    • Selection-mode switch to use the kit as a standalone ST-LINK/V2-1
  • Flexible board power supply
    • USB VBUS or external source (3.3 V, 5 V, 7 – 12 V)
    • Power management access point
  • User LED (LD2)
  • Two push buttons: USER and RESET
  • USB re-enumeration capability: three different interfaces supported on USB
    • Virtual Com port
    • Mass storage (USB Disk drive) for drag'n'drop programming
    • Debug port

Board pinout¶

Pins Legend¶

You can find more details on the available pins and labels in the PeripheralPins.c and PinNames.h files.

These files can be found in:

  • ARMmbed/mbed-os repository on GitHub (up-to-date version, used with mbed CLI commands)

https://github.com/ARMmbed/mbed-os/blob/master/targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F411xE/TARGET_NUCLEO_F411RE/

  • mbed-dev library in developer.mbed.org (source files of the mbed library used on mbed compiler IDE)

https://developer.mbed.org/users/mbed_official/code/mbed-dev/file/default/targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F411xE/TARGET_NUCLEO_F411RE/

Supported shields¶

ST X-NUCLEO boards¶

See Matrix of tested boards.

Other Non-ST boards¶

See here.

Getting started¶

This video shows how to get started with ARM mbed Integrated Development Environment using STM32 Nucleo platform:

Nucleo ST-LINK/V2 driver installation and firmware upgrade

  • Install the ST-LINK/V2 driver before connecting the Nucleo board to your PC the first time. Follow this LINK for all details.
  • For optimum performances, ensure that the Nucleo ST-LINK/V2 firmware is upgraded to the latest version. Follow this LINK for all details.

Technical references¶

For more information, please refer to:

  • STM32F411RE microcontroller
  • Nucleo board
  • SDK changes log

Known limitations¶

The following section describes known limitations of the platform. Note that general issues are tracked into the mbed repository available on GitHub.

  • On Nucleo 64-pins boards, the D0 and D1 pins are not available per default as they are used by the STLink Virtual Comm Port. More information HERE

Tips and Tricks¶

Find more information in ST WIKI pages.

 Buy Now

Источник: https://os.mbed.com/platforms/ST-Nucleo-F411RE/

Отладочная плата STMicroelectronics NUCLEO-F411RE

» Приборы » Отладочные наборы и демонстрационные платы

Основные параметры набора или платы
Параметр Значение
Производитель базового компонента STMicroelectronics
Ядро Cortex-M4
Разрядность, бит 32
Поддерживаемые семейства Cortex-M4
Периферия платы
  • линии ввода/вывода
  • I2C
  • I2S
  • SPI
  • USB
  • USB-device
  • USB-Host
  • JTAG/BDM
  • SDIO/SD/MMC
  • пользовательские кнопки
  • пользовательские светодиоды
  • высокоскоростной АЦП
  • высокоскоростной ЦАП
  • часы реального времени
Производитель STMicroelectronics
Серия Nucleo-64
Модель NUCLEO-F411RE

NUCLEO-F411RE – полнофункциональная отладочная плата серии STM32 Nucleo на базе микроконтроллера STM32F411RET6, для разработки и отладки приложений на 32-разрядных микроконтроллерах семейства STM32. Плата представляет собой гибкую платформу, позволяющую разработчикам реализовать собственные идеи и в кратчайшие сроки сделать прототип будущего изделия.

Цены

На плате установлен микроконтроллер STM32F411RET6 с ядром ARM Cortex-M4, работающий на частоте до 100 МГц. Высокая производительность, низкое энергопотребление, богатая аналоговая и цифровая периферия, поддержка множества коммуникационных интерфейсов делают микроконтроллер идеальным для широкого спектра приложений.

Отладочная плата поддерживает подключение плат расширения модулей, совместимых с Arduino и ST Morpho. Обновленная версия интегрированного эмулятора ST-LINK/V2-1 избавляет от необходимости использовать внешний программатор-отладчик. Полная программная поддержка, доступность различных библиотек, примеров и демо-приложений позволяют упростить и ускорить разработку пользовательских приложений.

Отличительные особенности:

  • полнофункциональная отладочная плата;
  • микроконтроллер STM32F411RET6:
    • ядро ARM Cortex-M4, рабочая частота до 100 МГц;
    • 512 Кбайт Flash-память, 128 Кбайт ОЗУ;
    • 16 потоковый DMA контроллер;
    • подсистема тактирования, сброса и управления питанием;
    • несколько режимов пониженного энергопотребления;
    • 12-разрядный АЦП;
    • 11 таймеров/счетчиков: два сторожевых таймера, 6×16-разрядных таймеров, 2×32-разрядных таймера с входами захвата и выходами сравнения;
    • интерфейс отладки SWD и JTAG;
    • коммуникационные интерфейсы: 4×I2C, 4×USART, 5×SPI/I2S, USB 2.0 Host/Device/OTG;
    • интерфейс карт памяти SDIO;
    • часы реального времени с календарем;
  • возможность подключения плат расширения Arduino Uno Revision 3 и STMicroelectronics Morpho;
  • встроенный программатор-отладчик ST-LINK/V2;
  • контрольные точки для измерений;
  • возможность использования платы в качестве программатора ST-LINK/V2;
  • гибкая система подачи внешнего питания;
  • пользовательские светодиоды, кнопки, кнопка сброса;
  • поддержка через USB виртуального COM-порта, внешнего накопителя и отладочного порта;
  • полная программная поддержка:
    • бесплатная программная библиотека HAL, включающая примеры кодов;
    • поддержка сред разработки IAR, KEIL и IDE.

Основные параметры

Параметр Значение
Интерфейс подключения USB
Ядро базового элемента ARM Cortex-M4
Базовый компонент STM32F411RET6
Разрядность, бит 32
Вспомогательныйкомпонент STM32F103 LD3985 LD1117LD3905
Целевое напряжение, В 5.0 / 3.3
Напряжение питания, В 7.0 – 12.0 / 5.0 / 3.3
Источник питания внешний

Комплектация:

  1. Отладочная плата NUCLEO-F411RE.

Руководство пользователя и принципиальная схема

Варианты написания:

NUCLEOF411RE, NUCLEO F411RE

Производитель: STMicroelectronics

На английском языке: Development Board STMicroelectronics NUCLEO-F411RE

Источник: https://www.rlocman.ru/op/tovar.html?di=161775&/NUCLEO-F411RE

Обзор платформы для разработчиков ST Nucleo на примере Nucleo-F401RE

Оценочные платы ST Nucleo:

Это открытая, недорогая и легко расширяемая отладочная платформа для разработки с широким выбором специальных плат расширения, для всей линейки 32-х битных микроконтроллеров STM32 архитектуры ARM Cortex-M3 и Cortex-M4.

Платы «ST Nucleo» дают возможность выбирать из различных сочетаний производительность, энергопотребление, и архитектурные особенности микроконтроллера. Платформа позволяет быстро, удобно и легко изучить особенности архитектуры и программирования микроконтроллера, опробовать свои идеи, создать прототипы с любым микроконтроллером семейства STM32.

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

Программатор STlink-v2.1 имеет SWD разъём на пинах CN4 (см.

рисунок выше) что позволяет использовать программатор независимо от оценочной платы для всех МК STM32, для этого достаточно отключить плату микроконтроллером от программатора сняв джамперы с пина CN2 а для того чтобы их не потерять, их можно надеть на пины GND CN11 и GND CN12, пины заземления, на которые в свою очередь с обратной стороны платы уже надеты запасные джамперы. Стоить отметить что на платформе реализован STLink версии 2.1 который как и в версии 2.0 помимо порта программирования отладки SWD(CN4), виртуального COM -> Usart (CN3) имеет особенность работы определяться по умолчанию как сменный Flash носитель, что является весьма полезной опцией для новичков, которые могут программировать микроконтроллер, отправляя на этот носитель бинарный файл прошивки (в данной версии прошивки, не более 20Kb) сгенерированный, например в онлайн среде разработки такой как Mbed. Так же программатор имеет незаслуженно пропущенный из вида общественности отдельно выведенный разъем Usart (разъем CN3 пины RX и TX) реализующий обмен данными с ПК через виртуальный COM что позволяет сэкономить деньги на отдельном устройстве таком как CP2102 который отдельно стоит около 300руб, как раз эти деньги окупают стоимость доставки оценочной платформы Nucleo.

Линейка оценочных плат Nucleo поддерживает подключения к «Arduino» и «ST Morpho» разъемам, которые позволяют легко расширять функциональные возможности платформы.

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

Также Компания ST предлагает специализированные платы X-NUCLEO-IDB04A1, X-NUCLEO-IHM01A1, X-NUCLEO-IKP01A, X-NUCLEO-NFC01A1 и другие платы расширения — шилды собственной разработки, которые поддерживают функции, такие как Bluetooth® LE или Wi-Fi®, GPS, усиление записи звуковых сигналов, MEMS-микрофоны, датчики приближения и беспроводное управление.

На первых фотографиях, оценочные платы имели кварцы X2 и X3 нужные для переопределения частоты работы шины данных, микропроцессора и периферийных интерфейсов, при покупки плат Nuleo пользователи разочаровались в их отсутствии.
В официальном заявлении в ответ на недовольные отзывы пользователей по поводу отсутствия их на конечном продукте, представитель ST заявил:

(ага, например X2 — smd!!?).

На этой ноте хотелось бы обратить внимание что платы Nucleo хоть и представляют все семейство микроконтроллеров STM32, но только младшие модели, в корпусе с 64 ногами МК.

Данное решение немного противоречит желанию обывателя иметь больше и лучше, но с другой стороны, стоит понимать что продукт Nucleo ориентирован быть именно доступной и простой оценочной платформой разработчиков и разработан специально для поддержки mbed-enabled что дает достойный перевес отсутствию такой начинки как на платах Discovery, предполагается что целевой аудитории не нужно столько периферии и аппаратной начинки микроконтроллера как на платах Discovery. Где то в чем то они правы, а в чем то упускают Российский рынок, и не контролируют цены на свой продукт у официальных поставщиков, которые сильно завысили цену (предполагалось что платформа будет стоить 11$ но в России ее можно приобрести только от 750 рублей + стоимость доставки, что в два раза выше рекомендуемой цены).

Линейка Nucleo входит в состав популярного в Европе и динамично развивающегося проекта ARM mbed™ — онлайн инструментария для быстрого и легкого создания продукта на базе ARM.

Благодаря поддержке mbed-enabled, разработчики могут использовать платформу Mbed с открытым программным кодом, онлайн средства разработки и инфраструктуру с сайта mbed.org.

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

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

Онлайн компилятор https://mbed.org/compiler, неотъемлемая часть этого ресурса, который снимет головную боль многих начинающих разработчиков с настройкой среды разработки и компилятора, давая возможность не вникать во все подробности архитектуры STM32.

Директор подразделения IoT platforms компании ARM Саймон Форд (Simon Ford) заявил:

Какую плату выбрать себе, трудно ответить так как у каждого свои потребности, кто то планирует разработать определенное устройство или использовать определенное семейство микроконтроллеров (например дешевые или мало потребляющие), я же не имея опыта, для обучения взял самую производительную из доступных на момент приобретения плату Nucleo-F401RE на базе STM32F401RE, многие пользователи поступили так-же, кто брал сразу несколько версий с разными по назначению микроконтроллерами, кто то купил все доступные модели.

На сегодняшний день линейка представлена 9 моделями, старшая из которых STM32 Nucleo-F411RE отличается от широко распространенной в Европе и просто доступной у нас в России STM Nucleo-F401RE большим объемом ОЗУ памяти (128 Kb против 96Kb) большей частотой процессора (100MHz против 84MHz ), большим количеством аппаратно поддерживаемом интерфейсов.

МК CPU FPU Flash RAM 12bit ADC timers I2C USARTs SPIs SDIO I2S
F401 84MHz 512Kb 96Kb 10ch. 10 3 3 4 + N/A
F411 100MHz 512Kb 128Kb 16ch. 10 3 3 5 + 5

Платы STM32 Nucleo-F030R8, STM32 Nucleo-F103RB, STM32 Nucleo-F401RE и STM32 Nucleo-L152RE уже доступны для заказа в России, STM32 Nucleo-F072RB, STM32 Nucleo-F302R8, STM32 Nucleo-F334R8, STM32 Nucleo-F411RE и STM32 Nucleo-L053R8 доступны для заказа из за рубежа, по цене от 10.32 $ за единицу.

Источник: http://www.pvsm.ru/arduino/65616

NUCLEO-F411RE, STMicroelectronics Nucleo Board For STM32F4 Series | 822-4052

NUCLEO-F411RE Development Board for STM32 F4 series

STMicroelectronics NUCLEO-F411RE Development Board enables you to build and evaluate your own prototype with the STM32 F4 family of high performance microcontrollers in an embedded application. A simple to use development platform that can offer a quick solution in evaluating and developing with any Arm Cortex™ M4 processor STM32 F4 32-bit flash microcontrollers in the LQFP64 package.

The Nucleo development board connects with the Arduino and supports most shields. Also the ST Morpho headers help increase the functionality of the Nucleo open development platform (ODP). The ARM® mbed enabled board has an integrated ST-Link/V2 circuit debugger and programmer (SWIM/SWD) and interfaces with the on board STM32F411RET6 or with a suitable STM32 MCU in your application.

STM32 Nucleo development board with STM32F411RET6 MCU, 512 KB flash memoryExtra connectivity: Arduino Uno Revision 3 connectivity and STMicroelectronics Morpho connectionDebugger/programmer ST-LINK/V2-1 with SWD connectorSelection mode switch to use the kit as a standalone ST-LINK/V2-1Power supplies: USB VBUS or external source (3.3 V, 5 V, 7 V to 12 V)Three LEDs: USB communication; user; powerPush button: User and ResetInterfaces supported on USB: Virtual Com port; Mass storage; Debug portSTM32 online software HAL libraryIntegrated Development Environments (IDEs) support includes IAR, Keil, GCC-based IDEs

System requirements: Windows PC (XP, Vista, 7, 8), USB type A to Mini-B USB cable such as 656-3939.

STM32F4 Series 32-Bit ARM® Cortex®-M4 Microcontrollers, STMicroelectronics

The ARM® Cortex™-M4 based STM32 F4 series of high-performance MCUs with DSP and FPU instructions is an extension of the industry-leading STM32 portfolio towards even higher performance. Up to 180 MHz operating frequency.

Up to 2x USB 2.0 OTG FS/HSSDIO (Secure Digital Input Output)USART, SPI, I²CI²S (Inter-IC Sound) + Audio PLL16 and 32 Bit TimersUp to 3x 12-Bit ADC

Low Voltage 1.7 V to 3.6 V

Техническая спецификация
DatasheetИмя семейства процессоров:

STM32F4

Классификация:

Макетная плата

Номер части процессора:

STM32F411RET6

Ядро устройства:

ARM Cortex M4F

Самовывоз со склада г. Екатеринбурга Бесплатно
ТК Деловые Линии от 500 руб
Курьером EMS до адреса от 700 руб

Отправка Почтой России не производится.

Источник: http://rs-catalog.ru/8224052.html

Записки программиста

Ранее мы выяснили, как разрабатывать под микроконтроллеры STM32 с использованием знакомой и понятной многим Arduino IDE. Этот подход, впрочем, не лишен недостатков.

В частности, он (1) вводит лишние слои абстракции, что не позволяет писать максимально эффективный и компактный код, (2) работает с весьма ограниченным множеством микроконтроллеров и плат, а также (3) привязан к конкретной среде разработки, и не самой лучшей. Поэтому сегодня мы научимся разрабатывать под STM32 по-взрослому.

<\p>

Важно! Порог вхождения в мир STM32 довольно высокий. Если вы никогда раньше не работали с микроконтроллерами, я бы рекомендовал начинать с плат Arduino и микроконтроллеров AVR.

Необходимый софт

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

yaourt -S arm-none-eabi-gcc arm-none-eabi-gdb
  arm-none-eabi-newlib stlink stm32cubemx openocd

Здесь приведены названия пакетов для Arch Linux, но я довольно уверен, что в других дистрибутивах Linux они называются так же, или как-то похоже.

Если вам не удастся найти готовый пакет с STM32CubeMX, программу можно скачать отсюда (потребуется регистрация). Для работы приложению требуется виртуальная машина Java. Несмотря на то, что программа имеет расширение .

exe, она превосходно запускается в Linux через java -jar file.exe.

Опционально вы также можете загрузить программу STLinkUpgrade, доступную для скачивания здесь (также потребуется регистрация). Эта программа предназначена для обновления прошивки программаторов STLink, что нередко приводит к исправлению багов, ну или как минимум к лучшим сообщениям об ошибках. Как и STM32CubeMX, эта программа написана на Java.

Необходимое железо

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

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

Наконец, если у вас этой платы еще нет, вам придется ждать ее доставки с AliExpress.

Компания STMicroelectronics производит собственные отладочные платы серий Discovery и Nucleo. Последние являются более новыми, поэтому сосредоточим свое внимание на них. Платы STM32 Nucleo имеют встроенный отладчик STLink v2.

1, что избавляет нас от лишних проводов. Они до определенной степени совместимы с Arduino-шилдами, что может пригодиться.

Цены на платы Nucleo в России начинаются от 19$ за плату Nucleo-F030R8, притом купить ее можно в любом Чип-и-Дипе хоть сегодня.

Лично я взял плату помощнее — Nucleo-F411RE, на вырост, так сказать:

Принимая во внимание разнообразие плат Nucleo, выбор первой платы может быть непростым делом для начинающих.

Следует учитывать множество факторов, включая количество Flash-, SRAM- и EEPROM-памяти, максимальную рабочую частоту, используемое ядро Cortex-M, количество аппаратных реализаций SPI/I2C/I2S/UART/CAN-интерфейсов, наличие/отсутствие DAC, ADC и модуля FSMC, энергопотребление, стоимость отладочной платы и ее наличие в ближайших магазинах, и, конечно же, стоимость и доступность самого микроконтроллера. Так как сейчас я не работаю над каким-то конкретным проектом, а просто изучаю микроконтроллеры STM32, я выбрал плату Nucleo-F411RE просто из-за неплохого соотношения цены и качества. Также меня привлек тот факт, что в микроконтроллере STM32F411RET6, на котором основана эта плата, используется довольно мощное ядро Cortex-M4F со встроенным FPU.

Fun fact! Существуют платы Xnucleo от компании Waveshare, совместимые с платами Nucleo. Платы Xnucleo легко узнать по характерному сине-желтому дизайну.

На вид они более продуманы, чем Nucleo, так как используют более общепринятый в наше время разъем micro USB вместо mini USB, лишены дизайнерских «линий надреза» (см предыдущее фото), делающих плату более хрупкой, и имеют впаянный HSE кварцевый резонатор.

Также компания Waveshare является производителем множества шилдов для плат Nucleo и Xnucleo.

Создание каркаса проекта в STM32CubeMX

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

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

Для борьбы с этой сложностью создание каркаса пустого проекта (так называемый scaffolding) для заданной платы или микроконтроллера осуществляется при помощи специальной GUI-программы, STM32CubeMX.

Запускаем программу, жмем New Project. Во вкладке Board Selector находим вашу плату и делаем по ней двойной клик. Если у вас еще нет платы Nucleo, но есть плата Blue Pill и программатор STLink v2, на этом шаге вы можете выбрать микроконтроллер STM32F103C8Tx во вкладке MCU Selector.

Появится интерфейс с несколькими вкладками, из которых наиболее интересной для нас сейчас является вкладка Pinout:

Эта вкладка позволяет настроить, какой пин микроконтроллера для чего будет использован (ввод, вывод, аналоговое чтение, SPI/I2C/UART-шина, и так далее).

Так как STM32CubeMX знает про нашу плату, программа автоматически настроила пин PC13 на ввод (для чтения синей кнопки на плате), а пин PA5 — на вывод (для управления зеленым светодиодом на плате). В рамках этой заметки другие пины нам не потребуются, поэтому оставляем все, как есть.

Если же вы используете незнакомую STM32CubeMX плату, здесь вам потребуется настроить пины вручную. Например, в случае с Blue Pill вы наверняка захотите настроить пин PC13 как GPIO_Output, так как он подключен к светодиоду на плате.

Важно! Если вы используете Blue Pill, в STM32CubeMX обязательно требуется включить SWD. По умолчанию для микроконтроллера STM32F103C8T6 он выключен. В связи с этим, плату вы без труда прошьете в первый раз, но прошить ее во второй будет довольно непросто (хотя возможно). Более подробное описание этой тонкости ищите в заметке Используем STM32 безо всяких отладочных плат.

На двух других вкладках с названиями Clock Configuration и Configuration в этот раз нам ничего менять не придется. На вкладке Power Consumtion Calculator можно оценить энергопотребление микроконтроллера и время его работы в зависимости от выбранного аккумулятора и рабочего напряжения. Надо сказать, довольно любопытная и полезная возможность.

На этом с настройкой покончено. Говорим Project → Generate Code. Во вкладке Project вводим имя проекта (Project Name), выбираем родительский каталог для этого проекта (Prоject Location), в выпадающем списке Toolchain / IDE выбираем вариант «Makefile».

Во вкладке Code Generator стоит выбрать опцию «Add necessary library files as reference in the toolchain project configuration file». Иначе в ваш проект будут скопированы все библиотечные файлы, а это более 160 Мб. Затем жмем ОК.

Проект STM32CubeMX автоматически сохранится в каталоге с исходным кодом (файл с расширением .ioc), поэтому отдельно сохранять его не требуется.

Makefile в получившемся проекте нужно немного подправить. Во-первых, нужно исправить значение переменных BINPATH и PREFIX:

BINPATH=/usr/bin
PREFIX=arm-none-eabi-

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

Во-вторых, стоит найти переменную OPT и дописать в нее флаг -Wall:

Иначе компилятор не будет ругаться на код, который скорее всего содержит ошибки — например, выражение if(arr[i] = 1), на месте которого почти наверняка должно быть if(arr[i] == 1).

В-третьих, если после этого шага сказать make, вы можете получить ошибки вроде следующих:

main.c:507: multiple definition of `_Error_Handler'
main.c:507: first defined here

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

В-четвертых, Makefile умеет компилировать проект, но не содержит таргетов для прошивания платы, ее очистки, а также подключения по UART. Стоит дописать:

# проверьте, что для отступа используется табуляция, а не пробелы! flash: all

    st-flash –reset write build/$(TARGET).bin 0x8000000

erase:

    st-flash –reset erase

uart:

    screen /dev/ttyACM0

Наконец, из соображений скорее перфекционизма, чем острой надобности, я бы заменил все абсолютные пути на относительные, введя переменную вроде:

FIRMWARE = $(HOME)/STM32Cube/Repository/STM32Cube_FW_F4_V1.18.0

… а также прогнал бы Makefile через утилиту dos2unix.

На этом подготовку шаблона/каркаса можно считать завершенной! Чтобы не проделывать описанные выше шаги при создании каждого нового проекта, шаблон стоит сохранить где-нибудь в надежном месте. Дабы не приходилось при повторном использовании этого шаблона редактировать имя проекта, стоит также отредактировать значение переменной TARGET на какое-нибудь абстрактное main.

Пишем код!

Если вы откроете файл Src/main.c, то найдете в нем множество отметок вроде:

/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

По задумке, код нужно вписывать между этими комментариями, чтобы при обновлении проекта в STM32CubeMX пользовательский код не был затерт. Лично я добавил вызов процедур init() и loop() в окрестностях основного цикла программы:

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  init();
  while (1)
  {
  loop();
  /* USER CODE END WHILE */  

  /* USER CODE BEGIN 3 */

  }
  /* USER CODE END 3 */

… а сами процедуры объявил перед процедурой main():

/* USER CODE BEGIN 0 */

void init(void) {

    /* do nothing, yet */
}

void loop(void) {

/*     HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);     HAL_Delay(500);     HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);     HAL_Delay(500);

*/

    if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13) == GPIO_PIN_RESET) {
        HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
    }  

    HAL_Delay(100);

}

/* USER CODE END 0 */

Управление микроконтроллером осуществляется через библиотеку под названием HAL, Hardware Abstraction Layer. Как видите, что касается обычного чтения кнопок и мигания светодиодами, здесь все не намного сложнее, чем в случае с той же Arduino.

Подключаем плату и говорим make flash. Если все было сделано правильно, нажатие синей кнопки на плате будет приводить к переключению зеленого светодиода. Также можно оставить в процедуре loop() только код, который в приведенном выше отрывке я закомментировал, и тогда программа превратиться в обычный Blink.

Важно! Иногда микроконтроллер не запускается с новой прошивкой без нажатия черной кнопки Reset. По идее, обновление прошивки программатора с помощью утилиты STLinkUpgrade и использование утилиты st-flash с флагом –reset, как в нашем Makefile, исправляет эту проблему. Но так как она воспроизводится нерегулярно, полной уверенности нет.

Заключение

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

Можно даже пообщаться с какими-то сторонними модулями по SPI или I2C, хотя и не слишком эффективно, если вспомнить о наличии в микроконтроллере аппаратной поддержки этих протоколов.

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

Кстати, к вопросу о выходящем за рамки. Хотя приведенных выше сведений будет вполне достаточно тем, кто пишет в Vim, как в данное время суток это делаю я, или каком-нибудь Sublime Text, кто-то из читателей может предпочитать работать в IDE.

Настройка Eclipse для разработки под STM32 подробно расписана в книге Mastering STM32 за авторством Carmine Noviello. Если же вы предпочитаете CLion, его настройку подробно описал Илья Моторный в статье JetBrains CLion для микроконтроллеров.

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

А как вы разрабатываете под STM32?

Дополнение: Если вам понравилась эта заметка, вас могут заинтересовать статьи об обмене данными по UART, SPI, I2C и I2S в контексте микроконтроллеров STM32. Также обратите внимание на посты Микроконтроллеры STM32: основы использования таймеров, прерываний и ШИМ, Используем STM32 безо всяких отладочных плат и Паяем standalone-версию программатора ST-Link/v2-1.

Источник: https://eax.me/stm32-dev-environment/

ST Nucleo F411RE¶

The Nucleo F411RE board features an ARM Cortex-M4 based STM32F411RE MCU with a wide range of connectivity support and configurations. Here are some highlights of the Nucleo F411RE board:

  • STM32 microcontroller in QFP64 package
  • Two types of extension resources:
    • Arduino Uno V3 connectivity
    • ST morpho extension pin headers for full access to all STM32 I/Os
  • On-board ST-LINK/V2-1 debugger/programmer with SWD connector
  • Flexible board power supply:
    • USB VBUS or external source(3.3V, 5V, 7 – 12V)
    • Power management access point
  • Three LEDs: USB communication (LD1), user LED (LD2), power LED (LD3)
  • Two push-buttons: USER and RESET

More information about the board can be found at the Nucleo F411RE website.

Nucleo F411RE provides the following hardware components:

  • STM32F411RET6 in LQFP64 package
  • ARM®32-bit Cortex®-M4 CPU with FPU
  • 100 MHz max CPU frequency
  • VDD from 1.7 V to 3.6 V
  • 512 KB Flash
  • 128 KB SRAM
  • GPIO with external interrupt capability
  • 12-bit ADC with 16 channels, with FIFO and burst support
  • RTC
  • 8 General purpose timers
  • 2 watchdog timers (independent and window)
  • SysTick timer
  • USART/UART (3)
  • I2C (3)
  • SPI (5)
  • SDIO
  • USB 2.0 OTG FS
  • DMA Controller
  • CRC calculation unit

More information about STM32F411RE can be found here:

  • STM32F411RE on www.st.com
  • STM32F411 reference manual

The Zephyr nucleo_411re board configuration supports the following hardware features:

InterfaceControllerDriver/Component
NVIC on-chip nested vector interrupt controller
UART on-chip serial port-polling; serial port-interrupt
PINMUX on-chip pinmux
GPIO on-chip gpio
PWM on-chip pwm

Other hardware features are not yet supported on this Zephyr port.

The default configuration can be found in the defconfig file:

Nucleo F411RE Board has 8 GPIO controllers. These controllers are responsible for pin muxing, input/output, pull-up, etc.

For mode details please refer to STM32 Nucleo-64 board User Manual.

Default Zephyr Peripheral Mapping:¶

  • UART_1_TX : PB6
  • UART_1_RX : PB7
  • UART_2_TX : PA2
  • UART_2_RX : PA3
  • PWM_2_CH1 : PA0
  • USER_PB : PC13
  • LD2 : PA5

Nucleo F411RE System Clock could be driven by internal or external oscillator, as well as main PLL clock. By default System clock is driven by PLL clock at 84MHz, driven by 8MHz high speed external clock.

Nucleo F411RE board has 3 UARTs. The Zephyr console output is assigned to UART2. Default settings are 115200 8N1.

Nucleo F411RE board includes an ST-LINK/V2-1 embedded debug tool interface. This interface is supported by the openocd version included in Zephyr SDK.

The sample application Hello World is being used in this tutorial:

$/samples/hello_world

To build the Zephyr kernel and application, enter:

$ cd
$ source zephyr-env.sh
$ cd $ZEPHYR_BASE/samples/hello_world/
$ make BOARD=nucleo_f411re

Connect the Nucleo F411RE to your host computer using the USB port. Then, enter the following command:

$ make BOARD=nucleo_f411re flash

Run a serial host program to connect with your Nucleo board.

$ minicom -D /dev/ttyACM0

You should see the following message:

Access gdb with the following make command:

$ make BOARD=nucleo_f411re debug

Источник: http://docs.zephyrproject.org/1.7.0/boards/arm/nucleo_f411re/doc/nucleof411re.html

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}