Здесь я расскажу, как создать минимальный проект на CMSIS, используя «родную» IDE для микроконтроллеров STM — STM32CubeIDE. STM32CubeIDE может иметь ряд недостатков, но, на мой взгляд, у него есть несколько преимуществ — например, проприетарность и бесплатность, из-за чего, как минимум, стоит обратить внимание на эту среду разработки, если вы не сделали этого раньше.
В качестве объекта прошивки был выбран не очень распространенный микроконтроллер STM32F072 с ядром ARM Cortex-M0; для более привычного STM32F103 на ARM Cortex-M3 с поправкой на ядро процесс идентичен.
Все необходимые ресурсы можно скачать с сайта.
st.com , и вот что вам нужно:
- Сама IDE , я использую версию для Windows, но также доступны версии для Mac и Linux.
- Библиотека CMSIS для ARM Cortex-M0 , он находится в архиве STM32CubeFx, разделенном по версиям ядра.
Сам архив, помимо CMSIS, содержит великое множество других ресурсов, начиная от примеров работы с периферией и заканчивая драйверами USB; собственно, именно этот архив используется, если вы создаете проект с помощью STM32Cube
- Не предотвратить Технический паспорт и справочное руководство
Текущая версия STM32CubeIDE 1.1.0, поэтому расположение различных настроек должно основываться на ней.
Создание нового проекта - Файл/Новый/STM32Project .
После недолгих раздумий появляется окно выбора микроконтроллера, в моем случае это STM32F072RB в корпусе LQFP64, выбираю нужную строку и нажимаю далее.
Далее вам будет предложено выбрать имя проекта, местоположение, язык программирования C/C++, исполняемый файл/статическую библиотеку и будет ли проект генерироваться с помощью CubeMX или с самим усиком.
Генерация по кубу в этом случае не нужна, поэтому тип проекта Пустой - заканчивать.
Слева, в окне Обозреватель проектов , появилось дерево проекта, хоть и не совсем Пустой как приказано.
В принципе, если вас устраивает сгенерированная структура папок, вы можете добавлять туда файлы из библиотеки CMSIS и работать дальше, но здесь я покажу, как можно привести структуру проекта в гармонию со своим чувством прекрасного, поэтому все, кроме скрипт компоновщика удаляем, т.е.
файл с расширением .
ld - он пригодится.
Все манипуляции с папками и файлами можно проводить как в Проводнике, так и внутри IDE, щелкнув правой кнопкой мыши по названию проекта, например: правая кнопка -> создать -> папка .
Если структура проекта была изменена вне IDE, то вам просто необходимо обновить проект: правая кнопка -> Обновить .
Моя версия структуры проекта выглядит так:
- Запускать — здесь будет храниться скрипт компоновщика, тот самый, который остался от сгенерированного проекта, а также файл запуска, взятый из CMSIS
- CMSIS\источник И CMSIS\inc — здесь будут исходники, файлы с расширением .
c в папке скр и заголовочные файлы с расширением .
h в папке Inc. соответственно, относящиеся к библиотеке CMSIS
- Ядро\источник И Ядро\вкл.
Теперь вам необходимо перенести в проект файлы библиотеки CMSIS. Библиотека состоит из основных файлов и периферийных файлов.
Файлы ядра начинаются с основной_ или cmsis_ они общие для всех микроконтроллеров, использующих это ядро.
Периферийные файлы содержат в названии имя микроконтроллера stm32 и специфичны для конкретного производителя, в данном случае STM. При распаковке архив содержит папку STM32Cube_FW_F0_V1.11.0 , все пути указаны относительно этой папки.
Всего вам нужно скопировать: В CMSIS\inc :
- Drivers\CMSIS\Include\cmsis_compiler.h
- Drivers\CMSIS\Include\cmsis_gcc.h
- Drivers\CMSIS\Include\cmsis_version.h
- Drivers\CMSIS\Include\core_cm0.h
- Драйверы\CMSIS\Device\ST\STM32F0xx\Include\stmf0xx.h
- Драйверы\CMSIS\Устройство\ST\STM32F0xx\Include\stm32f072xb.h
- Drivers\CMSIS\Device\ST\STM32F0xx\Include\system_stm32f0xx.h
- Drivers\CMSIS\Device\ST\STM32F0xx\Source\Templates\system_stm32f0xx.c
- Drivers\CMSIS\Device\ST\STM32F0xx\Source\Templates\gcc\startup_stm32f072xb.s
Так как с папками проекта были проведены некоторые манипуляции, то нужно это отобразить в настройках.
Правая кнопка на имени проекта -> Свойства -> Сборка C/C++ -> Настройки -> Настройки инструмента -> MCU GCC Linker -> Общие — здесь нужно указать новое расположение скрипта компоновщика с помощью кнопки Просматривать…
Также необходимо указать пути к файлам проекта Свойства -> Общие сведения о C/C++ -> Включает Свойства -> Общие сведения о C/C++ -> Расположение источника
В Включает пути к папкам Inc. , И в Исходное местоположение логично было бы зайти в папки источник , но если вы это сделаете, то эти папки будут добавлены отдельно в дерево проекта.
Чтобы визуально не загромождать дерево, в Исходное местоположение вы можете указать корневые папки Основной , КМСИС И Запускать .
Чтобы проект скомпилировался, нужно раскомментировать файл stm32f0xx.h строка с названием микроконтроллера и конечно же в main.c добавить функцию main.
Вот и все.
Безошибочная компиляция и сразу целых полтора килобайта оперативной памяти, она же RAM, куда-то пропали, и сразу вспоминается стек и куча, они нигде не упоминались при создании проекта.
Размер стека и кучи указывается в файле сценария компоновщика, том, который имеет расширение .
ld; их можно и нужно изменять в соответствии с требованиями проекта.
Эти значения расположены в начале файла в виде меток _Min_Heap_Size/_Min_Stack_Size с указанием размера в шестнадцатеричном формате.
В качестве примера я приведу небольшой проект традиционное светодиодное мигание.
На макетной плате STM32F072B-DISCO, тактируемой от внутреннего генератора HSI48 48 МГц, будет мигать светодиод, а в качестве источника задержки будет использоваться таймер SysTick, генерирующий прерывания с периодом 1 мс, с помощью которых устанавливается точная задержка.
время засчитывается.
Светодиод подключен к контакту 6 порта C, настроенному на двухтактный выход. Надеюсь, кому-то эта информация будет полезна, потому что.
в свое время, несмотря на обилие материалов по программированию STM32, мне пришлось перебрать довольно много руководств, чтобы осознать вещи, которые сейчас кажутся очевидными.
Теги: #Программирование микроконтроллеров #stm32 #C++ #stm32cubeide #cmsis
-
Знаете Ли Вы, Что Такое Файл Index.dat?
19 Oct, 24