St microelectronics что это за программа

Сегодня мы с вами попытаемся воспользоваться бесплатной средой программирования System Workbench for STM32 .

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

Вы конечно можете сказать на это: «Но у нас же есть Keil!»

Ан нет. Если версия ПО ARM Keil у нас бесплатная, то мы не сможем собрать проект, если на выходе размер прошивки у нас превысит размер 32 килобайта.

Некоторые, конечно, пойдут по пути обхода легальных путей приобретения данного ПО, но я не могу себе такое позволить, так как я даю уроки в YouTube. А мы все прекрасно знаем, как Google относится к нарушению авторских прав. Церемониться он не будет. В лучшем случае мне выпишет страйк, а в худшем прихлопнет канал. Это вовсе не в моих, а тем более и не в ваших интересах.

Поэтому у нас два пути. Выбирать полностью бесплатную среду программирования, либо приобретать Keil. Но 8000 евро есть не у каждого, у меня точно нет, поэтому остается путь единственный.

STMicroelectronics: talking about ST

Возможно, конечно, ещё поискать что-то. Но я уже поискал, и не нашел ничего кроме System Workbench for STM32, основанного на бесплатной среде программирования Eclipse. Также это позволит нам потренироваться вообще со средой Eclipse, к которой существует масса плагинов и пакетов, что также позволит нам поиграться с нашими контроллерами под операционной системой Linux. Это, конечно, очень далёкие планы, но в глубине моей душе они уже бродят.

Специалисты ST Microelectronics также пришли к выводу, я также к ним охотно присоединяюсь, что в таком случае целесообразно использовать System Workbench в связке с Eclipse, ибо они бесплатны. Ну и также существует масса примеров в репозитории, которые написаны и для этой среды разработки.

Поэтому начнем устанавливать эти компоненты.

Вводим, как всегда, в поисковой строке st.com вот это «SW4STM32» и скачиваем данное ПО. Для этого st.com переместит нас на http://www.openstm32.org/ к хозяину IDE. Скачиваем System Workbench for STM32 installer для своей операционной системы. Устанавливаем, запускаем, указываем рабочее пространство для проектов.

Давайте сначала попробуем собрать и прошить готовый проект. Для испытаний возьмём нашу любимую STM32F4-Discovery.

Зайдём в папку Диск:UsersПользовательSTM32CubeRepositorySTM32Cube_FW_F4_VX.XX.X (версия у каждого своя, диск и пользователь также у всех свой). С папки «Drivers» в данной папке снимем атрибут «только для чтения».

Если у Вас в пути к проекту будет присутствовать хотя бы одна нелатинская буква, то ничего не получится. Скопировать проект тоже не вариант, так как он ссылается на библиотеки, расположенные в других папках по относительным путям. Если Вы в Keil загружали примеры, то они у Вас находятся по пути «Диск: Keil_v5ARMPackKeilSTM32F4xx_DFP». Можете использовать оттуда.

Затем зайдем в папку «Projects». Уже в этой папке зайдём в папку «STM32F4-Discovery». Там зайдём ещё в одну папку, например в «GPIO», а уже в ней с папки «GPIO_EXTI» снимем аттрибут «только для чтения».

A la découverte de STMicroelectronics Tours

Вернёмся в запущенный System Workbench и нажмем слева правой кнопкой мыши и выбираем «Import».

image00

Выбираем Existing Projects Into Workbench. Далее в «Select root directory» указываем папку с проектом «Диск:UsersПользовательSTM32CubeRepositorySTM32Cube_FW_F4_VX.XX.XProjectsSTM32F4-DiscoveryExamplesBSPSW4STM32» и жмем Finish. Проект появился у нас в рабочем пространстве слева.

image02

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

Теперь попробуем скомпилировать проект. Нажимаем меню Build -> Build Project. (нажмите на картинку для увеличения)

image01

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

« arm-none-eabi-gcc: error: C:/Users/TырфхыхЎ/STM32Cube/Repository/STM32Cube_FW_F4_V1.13.0/Projects/STM32F4-Discovery/Examples/BSP/Src/main.c: No such file or directory

В таком случае удалим проект из дерева проектов и загрузим из папки «Keil_v5».

Таким же образом попытаемся его собрать. Проект теперь собрался

Читайте также:
Synology drive что это за программа

image04

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

В панели инструментов жмём треугольник справа от кнопки «Debug», там выбираем пункт меню «Debug As -> Ac6 STM32 C / C++ Application».

image03

Выбираем программатор и соглашаемся.

Если что-то будет не так и будут ошибки, то необходимо будет зайти в свойства проекта. Щелкаем правой кнопкой мыши по самому верхнему уровню дерева проекта и выбираем «Properties»

image06

Там заходим в «Run/Debug Settings» и удаляем оттуда конфигурацию.

image05

Пробуем опять через панель инструментов «Debug As -> Ac6 STM32 C / C++ Application» запустить отладку. Теперь должно всё пойти нормально.

image08

Соглашаемся с диалогом и попадаем в отладку. Жмем кнопку Resume (F8) в панели инструментов и проект должен будет прошиться

image07

Останавливаем отладку кнопкой Terminate

image11

Чтобы прошивка продолжала работать в контроллере, перезагружаем его кнопкой на отладочной плате.

Возвращаемся из отладки в основное окно (C / C++)

image09

Теперь можно спокойно работать с проектом и прошивать уже через обычный запуск проекта на выполнение

Источник: narodstream.ru

Начало работы с STM32 Nucleo64: руководство для начинающих

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

Внешний вид проекта по началу работы с платой STM32 Nucleo64

Более «продвинутой» по сравнению с платой Arduino в этом плане является плата STM32F103C8 (Blue Pill), достаточно много проектов с которой мы рассмотрели на нашем сайте. Но в этой статье мы рассмотрим начало работы со сравнительно новым продуктом в семействе плат STM32 – платой разработки STM32 Nucleo64. Для понимания основ работы с платой STM32 Nucleo64 вы можете посмотреть обучающее видео по ней от авторов данной статьи (ссылка на источник приведена в конце статьи). Оно на английском языке, но достаточно понятное. В данном видео показана возможность программирования платы STM32 Nucleo64 с помощью платформы ARM Mbed, но в данной статье мы будем использовать вместо нее платформу от компании ST Microelectronics под названием TrueSTUDIO.

Примечание : существует достаточно много разновидностей платы STM32 Nucleo64, в данной статье мы будем использовать плату с обозначением NUCLEO-F030R8, отличающейся невысокой ценой. Но если даже у вас другая разновидность платы STM32 Nucleo64, то большинство моментов, описанных в данной статье, будет подходить и для нее.

Выбор платформы разработки для платы STM32 Nucleo64

Для работы с любым микроконтроллером (платой) необходима специализированная интегрированная среда разработки (Integrated Development Environment, IDE): для плат Arduino это Arduino IDE, для микроконтроллеров AVR – Atmel Studio, для микроконтроллеров PIC – MP Lab и т.д. Для работы с платой STM32 Nucleo64 необходима подходящая для нее IDE. Семейство плат STM32 основано на 32-битных микроконтроллерах и поддерживает следующие IDE и инструментальные средства:

  • IAR Embedded Workbench® for ARM® (EWARM);
  • MDK-ARM Keil;
  • TrueSTUDIO;
  • System Workbench for STM32.

В нашем проекте мы будем использовать платформу TrueSTUDIO для написания программы, ее компиляции и отладки поскольку она бесплатна для скачивания и может даже использоваться для коммерческих проектов без нарушения лицензии. Также мы будем использовать программу STM32CubeMX для облегчения работы с периферийными устройствами (ранее мы использовали данную программу для облегчения работы с платой STM32F103C8). Для загрузки программы (hex файла) в плату STM32 Nucleo64 можно использовать инструмент под названием STM32 ST-LINK, но в нашем проекте вместо него мы будем использовать TrueSTUDIO, которая имеет режим отладки (debug mode) и позволяет загружать hex файл непосредственно в платы STM32. Скачать TrueSTUIO и STM32CubeMX можно по следующим ссылкам:

  • Download STM32Cube MX;
  • Download TrueSTUDIO.

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

  1. Отладочная плата STM32 Nucleo64 (купить на Aliexpress).
  2. Резистор 1 кОм (купить на Aliexpress).
  3. Светодиод (купить на Aliexpress).
  4. Кнопка.
  5. Макетная плата.
  6. Соединительные провода.

Схема проекта

Схема для управления светодиодом с помощью платы STM32 Nucleo64 представлена на следующем рисунке.

Схема для управления светодиодом с помощью платы STM32 Nucleo64

Как вы уже, наверное, знаете, плата STM32 Nucleo64 имеет два набора контактов – по одному на каждой стороне, которые называются контактами ST Morpho.

В нашем проекте нам необходимо подключить светодиод к контакту PA5 порта PORTA, а кнопку – к контакту PC13 порта PORTC. Внешний вид собранной конструкции проекта показан на следующем рисунке.

Внешний вид собранной конструкции проекта

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

Читайте также:
Batterymon что это за программа

Начало работы с платой STM32 Nucleo64 с помощью программы STM32CubeMX

Выполните следующую последовательность шагов.

Шаг 1. После установки запустите программу STM32CubeMX, в ней в селекторе плат выберите плату STM32.

Выбор в программе STM32CubeMX платы STM32

Шаг 2. После этого выполните поиск платы STM32 с названием NUCLEO-F030R8 и нажмите на появившуюся картинку платы. Если у вас другая разновидность платы STM32 Nucleo64, то выполните поиск по ее названию. Программа STM32CubeMX поддерживает все виды плат STM32 от компании ST Microelectronics.

Поиск в программе STM32CubeMX платы STM32 с названием NUCLEO-F030R8

Шаг 3. Затем нажмите на «yes» как показано на картинке ниже чтобы инициализировать все контакты платы в режим по умолчанию (default mode). В дальнейшем мы можем изменить их настройки по своему желанию.

Инициализация всех контактов платы STM32 в программе STM32CubeMX в режим по умолчанию

После нажатия на ‘Yes’ вы увидите экран как показано на рисунке ниже. Зеленый цвет контактов свидетельствует о том, что они установлены в режим по умолчанию.

Начало настройки контактов платы STM32 в программе STM32CubeMX

Шаг 4. Затем можно вручную сконфигурировать режим работы необходимых нам контактов. В нашем проекте мы будем включать светодиод с помощью кнопки, поэтому нам необходимо установить режим работы для контакта, к которому подключен светодиод, на вывод данных (output), а для контакта, к которому подключена кнопка – на ввод данных (input).

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

Установка режима GPIO_Output для контакта PA5 в программе STM32CubeMX

Аналогичным образом мы установили для контакта PC13 режим GPIO_Input чтобы на нем можно было считывать состояние кнопки.

Установка режима GPIO_Input для контакта PC13 в программе STM32CubeMX

Также режимы работы контактов можно настроить на вкладке конфигурации (configuration tab) как показано на рисунке ниже.

Настройка режима контактов в программе STM32CubeMX на вкладке конфигурации

Шаг 5. На следующем шаге можно вручную настроить желаемую частоту работы микроконтроллера и контактов платы в зависимости от частоты внешнего или внутреннего генератора. По умолчанию используется внутренний кварцевый генератор на 8 MHz и при режиме PLL эта частота преобразуется в 48MHz. То есть по умолчанию контакты платы STM32 и ее микропроцессор работают на частоте 48MHz.

Настройка частоты работы микроконтроллера платы STM32

Шаг 6. Теперь перейдите в менеджер проектов (project manager), в котором введите имя для своего проекта, укажите его местоположение и выберите необходимые инструментальные средства (toolchain) или IDE. Мы в качестве IDE будем использовать TrueSTUDIO, поэтому выберем ее как показано на рисунке ниже.

Ввод настроек проекта в программе STM32CubeMX

Шаг 7. После этого нажмите на ссылку «Generate Code» (обведена красной линией на следующем рисунке).

Кнопка для генерации кода в программе STM32CubeMX

Шаг 8. После этого вы на экране увидите всплывающее окно, в нем нажмите на кнопку открытия проекта (open project). Но прежде чем выполнять данный шаг убедитесь в том, что вы установили TrueSTUDIO.

Кнопка для открытия проекта в программе STM32CubeMX

Программирование платы STM32 Nucleo64 с помощью TrueSTUDIO

После нажатия на кнопку открытия проекта в предыдущем пункте программа TrueSTUDIO запустится у вас автоматически. Если она запросит у вас местоположение проекта (workspace location) – укажите его, или используйте местоположение по умолчанию.

Указание местоположения проекта в программе TrueSTUDIO

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

Открытие исходных файлов проекта в программе TrueSTUDIO

После этого вы увидите код программы в TrueSTUDIO IDE. На левой стороне в папке ‘src’ вы увидите все файлы программы (с расширением .c), которые были сгенерированы для нас программой STM32Cube. В нашем проекте нам необходимо будет внести изменения только в файл main.c. Полный код данного файла с необходимыми изменениями приведен в конце нашей статьи.

Код файла main.c нашего проекта в программе TrueSTUDIO

Программа управления светодиодом для платы STM32 Nucleo64

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

Нам нужно дописать код для включения/выключения светодиода с помощью кнопки. Для этого нам необходимо дать осмысленные имена (инициализировать) контактам, к которым подключены кнопка и светодиод. Сначала сконфигурируем контакт 5 порта PORTA, к которому подключен светодиод.

Источник: microkontroller.ru

STM32. Быстрый старт с STM32CubeMx.

Всем нам известная фирма ST Microelectronics активно развивает свой продукт под названием STM32CubeMx, и я не мог обойти это вниманием, поэтому и решил сделать новую одноименную рубрику. И для начала разберемся, что это вообще такое, и для чего нужно. Итак.

STM32CubeMx — программный продукт, позволяющий легко и непринужденно при помощи достаточно понятного графического интерфейса произвести настройку любой имеющейся на борту микроконтроллера периферии. Предыстория создания CubeMx такова — ST имеют очень разнообразную линейку микроконтроллеров, тут и Cortex-M0, и Cortex-M0+, и Cortex-M3, и Cortex-M4. Соответственно, встает вопрос о каком-то едином наборе библиотек и едином инструменте для инициализации и конфигурирования всего этого многообразия. Вот для решения этих целей и был выпущен STM32CubeMx.

Читайте также:
Что это за программа регенератор

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

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

Создание нового проекта в STM32CubeMx

Сразу же открывается окно с огромным количеством фильтров, в котором необходимо выбрать микроконтроллер, который мы собираемся использовать в проекте. Я выбрал STM32F407VG:

Выбор микроконтроллера

В результате будет открыто окно для работы с созданным проектом:

Основное окно STM32CubeMx

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

На вкладке Clock Configuration задаются все необходимые параметры тактирования, об этом пойдет речь в одной из следующих статей курса.

Если мы зайдем во вкладку Project Manager, то сможем последовательно настроить (перечисляю основное):

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

Настройки проекта

Давайте для примера выберем что-нибудь. Пусть будет задействован первый канал АЦП (PA0) и три вывода, работающих в режиме выхода (PE4, PD13, PC0):

Pinout в STM32CubeMx

  • кроме того, если планируется использовать отладчик, необходимо в пункте SYS выбрать отладочный интерфейс. Например, для отладчика ST-Link настройки будут выглядеть так:

Включение отладочного интерфейса

Готово, теперь нажимаем на кнопку «Generate Code» в правом верхнем углу, и CubeMx предложит нам скачать необходимые библиотеки (в случае их отсутствия). Не препятствуем данному процессу, ждем.

После окончания генерации открываем папку с нашим проектом и видим, что там появились новые файлы. В папке Drivers содержатся все необходимые библиотеки, а в папках src и inc, соответственно, сами файлы со сгенерированным кодом. Откроем, например, main.c:

/***************************************************************************************/ int main(void) < /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration———————————————————-*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* Configure the system clock */ SystemClock_Config(); /* System interrupt init*/ /* Sets the priority grouping field */ HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_0); HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_ADC1_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) < /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ >/* USER CODE END 3 */ > /***************************************************************************************/

В функции main() вызываются MX_GPIO_Init() и MX_ADC1_Init() , которые определены в этом же файле. Собственно, в этих функциях и содержится инициализация и настройка всей периферии, которую мы выбрали при создании проекта в STM32CubeMx. Таким образом, отпадает необходимость вручную производить конфигурацию использующихся модулей контроллера, все это уже содержится в сгенерированном коде.

Свой собственный код нужно добавлять внутри секций вида:

/* USER CODE BEGIN 2 */ // Здесь пользовательская программа /* USER CODE END 2 */

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

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

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

Источник: microtechnics.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru