Как настроить проект в qt creator
Перейти к содержимому

Как настроить проект в qt creator

  • автор:

Как загрузить проект С++ в Qt Creator?

Нажать на меню «Файл» и последовательно выбирать из меню нужные пункты, однако. Там же все чёрным по белому написано, и вариантов куча. Хочешь — новый проект создавай и вручную файлы добавляй, хочешь — импортируешь прямо из гита, только мышкой тыкай. Секунд пять 🙂 ![alt text][1] [1]: i.imgur.com/Oku8LkH.png

20 дек 2013 в 23:06

Я все так и сделал: Файл — Новый файл или проект — Импортировать проект — Импорт существующего проекта. Но в этои режиме Qt Creator работает как редактор и при попытке компиляции говорит: No rule to make target `all’. Stop. Там как-то среду сборке нужно настроить и как я не знаю.

20 дек 2013 в 23:12

Ну вот что сразу-то проблему не описать нормально? Значит, что-то не так с qmake. Попробуйте создать через «Простой проект на C++ (сборка CMake)», там будет кнопочка «запустить cmake» для генерации makefile. (это я про линкус, конечно, как оно под windows — не знаю) Вот, создал через cmake, сразу всё собирается: ![alt text][1] [1]: i.imgur.com/asiVd91.png

20 дек 2013 в 23:23
Как ты это сделал? Покажи шаги. У меня Mac OS и Qt 5.2
20 дек 2013 в 23:48
Вынесу в ответ, тут места мало.
20 дек 2013 в 23:58

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Предполагаем, что каталог /home/klopp/dev/alarm-master есть, и в нём лежат исходники. Qt под Linux Mint.

alt text

Файл -> Новый файл или проект, там:

alt text

Дальше стандартные вопросы: пути, какие конфигурации собирать и т.д:

alt text

Идём до конца, последним будет вопрос «файл main.cpp уже существует, перезаписать?». Отвечаем «нет уж, свой есть!» 🙂 Сразу после этого появляется такое окно, жмём «запуск cmake»:

alt text

Оно пошуршит, сгенерит файлы для сборки. Всё, готово

Как настроить проект в qt creator

Одной из популярных сред разработки под С++ является среда Qt Creator. Qt Creator является кроссплатформенным, может работать на Windows, Linux и macOS и позволяет разрабатывать широкий диапазон приложений — десктопные и мобильные приложения, а также приложения для встроенных платформ. Рассмотрим, как создать простейшую программу на С++ в Qt Creator.

Загрузим программу установки. Для этого перейдем на страницу https://www.qt.io/download-qt-installer

Сайт автоматически определяет текущую операционную систему и предлагает для нее загрузить онлайн-установщик. Для загрузки нажмем на кнопку Download:

Загрузка программы установки Qt

Регистрация программы установки

После загрузки запустим программу установки:

Программа установки Qt

Вначале программа установки предложит осуществить вход с логином и паролем от учетной записи QT. Однако если у вас нет учетной записи QT, то необходимо зарегистрироваться. Для этого нажмем на ссылку «Зарегистрироваться». И в поля ввода введем логин-электронный адрес и пароль:

Создание учетной записи Qt

Нажмем на кнопку «Далее». После этого на указанный электронный адрес придет ссылка, по которой надо перейти для завершения регистрации.

Завершение регистрации учетной записи Qt

После этого в программе установки QT снова нажмем на кнопку «Далее»

Регистрация учетной записи Qt

Установка

Затем отметим пару флажков и нажмем на кнопку «Далее»:

Обязательства по использованию Qt в качестве открытого ПО

И после этого мы перейдем непосредственно к установке затем отметим пару флажков и нажмем на кнопку «Далее»:

установка Qt

Затем нам будет предложено выбрать, надо ли отправлять отчет :

send reports in Qt

Далее надо будет указать каталог для установки (можно оставить каталог по умолчанию), а также тип установки:

Installation in Qt

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

Выбор компонентов для установки Qt

В данном случае я выбрал для установки последнюю на данный момент версию Qt — Qt 6.2.3 за исключением двух пакетов (MSVC 2019). При установке для Windows прежде всего стоит отметить пункт компилятора MinGW — на данный момент это MinGW 11.2.0. 64-bit . Остальные компоненты можно устанавливать при необходимости. При установки следует учитывать свободное место на жестком диске, так как некоторые компоненты занимают довольно многом места.

В зависимости от текущей операционной системы набор компонентов может отличаться. Например, набор компонентов для Qt 6.2.3 для MacOS:

Выбор компонентов для установки Qt

Затем надо принять лицензионное соглашение и настроить ярлык для меню Пуск. И далее нажмем на кнопку «Установить»:

Начало установки Qt Creator

Создание проекта С++ в Qt Creator

После завершения установки запустим Qt Creator. На стартовом экране выберем вкладку Projects (Проекты), на которой нажмем на кнопку New (Создать):

Первый проект в Qt Creator

В окне создания нового проекта в качестве шаблона проекта выберем Plain C++ Application :

Первый проект на языке C++ в Qt Creator

Далее надо будет задать имя проекта и каталог, где он будет располагаться:

Первый проект C++ в Qt Creator

На следующих шагах оставим все значения по умолчанию. И на последнем шаге нажмем на кнопку Finish для создания проекта:

Создание проекта Plain C++ Application в Qt Creator

И нам откроется проект с некоторым содержимым по умолчанию:

Проект Plain C++ Application в Qt Creator

Проект будет иметь один файл — main.cpp , и в центральной части — текстовом редакторе будет открыт его код:

#include using namespace std; int main()

Запустим его, нажав на зеленую стрелку в нижнем левом углу Qt Creator. И в нижней части Qt Creator откроется окно Application Output с результатами работы скомпилированной программы

Установка и настройка Qt Creator

С каждым годом становится все больше операционных систем, и потому разработчикам все труднее удовлетворять потребности пользователей. Три самые популярные компьютерные платформы — Windows, Linux и Mac OS, а также три мобильные — Android, iOS и Windows Mobile — продолжают активно бороться между собой. А это значит, что качественное приложение должно работать на всех основных платформах.

Справиться с этой проблемой помогает кроссплатформенная разработка. Об одной из самых популярных кроссплатформенных сред разработки — Qt Creator — и пойдёт речь в этой статье. Мы рассмотрим как выполняется установка и настройка Qt Creator, а также как работать в Qt Creator.

Что такое Qt Creator

Qt Creator (не так давно имевший название Greenhouse) — это одна из самых распространенных кроссплатформенных IDE. Ее плюсы — удобство, быстрота работы, а также — свободность, так как это ПО с открытым исходным кодом. Поддерживаются такие языки, как C, С++, QML.

Программа была написана компанией под названием Trolltech, которая в полной мере выполнила цель создания среды — работу с графическим фреймворком Qt. Удобный графический интерфейс с поддержкой Qt Widgets и QML, а также большое число поддерживаемых компиляторов позволяют быстро и удобно создать свое кроссплатформенное приложение.

Главная задача этой IDE — обеспечить наиболее быструю кроссплатформенную разработку, используя собственный фреймворк. Благодаря этому разработчики получают прекрасную возможность не писать приложения нативно (т. е. отдельно под каждую платформу), а создать общий код, и, возможно, подогнать его под особенности используемых ОС.

Qt Creator также включает в себя утилиту Qt Designer, что позволяет обработать внешний вид окна приложения, добавляя и перетаскивая элементы (аналогично Windows Forms в Visual Studio). В качестве систем сборки используются qmake, cmake и autotools.

Установка Qt Creator

Итак, пора рассмотреть как установить Qt Creator. Если для Windows разработчики позаботились и сделали оффлайн-установщик, то в Linux 32-bit этой возможности не предусмотрено. Поэтому во время установки вам может потребоваться стабильное интернет-соединение (~20-30 минут). Для начала скачаем установщик:

  • Скачать Qt Creator дляLinux 32-bit (нажимаем » View other options»).
  • Скачать Qt Creator дляLinux 64-bit.

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

Меню

Теперь перейдем на вкладку «Права» и поставим галочку «Разрешить запуск этого файла в качестве программы».

Изменение прав запуска

Приветственное окно

Теперь нажимаем «Next».

Меню выбора аккаунта

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

Предварительное меню

Нажимаем «Next».

Выбор домашней папки

Выбираем директорию, в которой будет находиться Qt. Важно, чтобы в пути не было кириллицы и пробелов!

Выбор компонентов

В этом меню находится выбор компонентов. К примеру, можно выбрать установку инструментов для разработки на Android, или же исходных компонентов (это нужно для статической сборки, если кому-то это нужно — напишите в комментариях, и я напишу отдельную статью). Если Вы не уверены, нужны Вам эти компоненты или нет, оставьте их пока так — даже после установки Qt будет возможным удаление и добавление элементов.

Принятие лицензии

В этом окне принимаем лицензию. Жмем «Next».

Установка

Если Вы готовы, начинайте установку. У Вас запросят пароль суперпользователя (sudo), после чего начнется скачивание и извлечение файлов. Альтернативный способ — установка через терминал. Для начала необходимо обновить список пакетов.

sudo apt update

Скачиваем и устанавливаем Qt:

sudo apt install qt5-default

Теперь установка Qt Creator:

sudo apt install qtcreator

И, если нужно, исходники.

sudo apt install qtbase5-examples qtdeclarative5-examples

Настройка Qt Creator

После окончания установки перезагрузите компьютер и запустите Qt Creator. Перейдите в меню «Инструменты» -> «Параметры».

Главное окно

Здесь следует рассмотреть несколько вкладок.

1. Среда — это настройка внешнего вида самой IDE, а также изменение сочетаний клавиш и управление внешними утилитами.

Меню

2. Текстовый редактор — здесь идет настройка внешнего вида, шрифтов и расцветки редактора.

Меню

3. C++ — подсветка синтаксиса, работа с расширениями файлов и UI (т. е. формами).

Меню

4. Android — здесь собраны пути к необходимым инструментам, а также в этом меню настраиваются подключаемые или виртуальные устройства.

Меню

Установка компонентов Qt Creator

Если вдруг так случилось, что Вы забыли установить какой-то компонент, или, наоборот, хотите его удалить, то на помощь придет Qt Maintenance Tool. Это инструмент, позволяющий управлять всеми компонентами Qt Creator.

Чтобы запустить его, перейдите в меню приложений, выберите пункт «Разработка» -> «Qt Maintenance Tool».

Qt Maintenance Tool

Выберите необходимый пункт (Удалить/добавить компоненты, обновить компоненты или удалить Qt). После выполните необходимые операции и закройте окно.

Работа с Qt Creator — первый проект

Ну что же, час пробил! Установка Qt Creator завершена. Пора сделать свое первое кроссплатформенное приложение на Linux, а затем скомпилировать его на Windows. Пусть это будет. программа, выводящая иконку Qt, кнопку и надпись, на которую по нажатию кнопки будет выводиться случайная фраза. Проект несложный, и, конечно же, кроссплатформенный!

Для начала откроем среду разработки. Нажмем «Файл» -> «Создать файл или проект. «. Выберем приложение Qt Widgets — его быстро и удобно сделать. А название ему — «Cross-Platphorm». Вот как!

Комплект — по умолчанию. Главное окно тоже оставляем без изменений. Создаем проект.

Для начала необходимо настроить форму — главное окно приложения. По умолчанию оно пустое, но это не останется надолго.

Перейдем в папку «Формы» -> «mainwindow.ui». Откроется окно Qt Designer:

Qt Designer

Удаляем панель меню и панель инструментов на форму, нажав правой кнопкой мыши и выбрав соответствующий пункт. Теперь перетаскиваем элементы Graphics View, Push Button и Label таким образом:

Окно программы

Чтобы изменить текст, дважды кликните по элементу. В свойствах Label (справа) выбираем расположение текста по вертикали и по горизонтали — вертикальное.

Теперь пора разобраться с выводом иконки. Перейдем в редактор, слева кликнем по любой папке правой кнопкой мыши и выберем «Добавить новый. «. Теперь нажимаем «Qt» -> «Qt Resource File». Имя — res. В открывшемся окне нажимаем «Добавить» -> «Добавить префикс», а после добавления — «Добавить файлы». Выбираем файл, а в появившемся окне «Неверное размещение файла» кликаем «Копировать».

Выбор файла

Получилось! Сохраняем все. Снова открываем форму. Кликаем правой кнопкой мыши по Graphics View, выбираем «styleSheet. » -> «Добавить ресурс» -> «background-image». В левой части появившегося окна выбираем prefix1, а в правой — нашу картинку. Нажимаем «ОК». Настраиваем длину и ширину.

Все! Теперь можно приступать к коду. Клик правой кнопкой мыши по кнопке открывает контекстное меню, теперь надо нажать «Перейти к слоту. » -> «clicked()». В окне набираем следующий код:

Код

Или вы можете скачать полный проект на GitHub. Работа с Qt Creator завершена, нажимаем на значок зеленой стрелки слева, и ждем запуска программы (если стрелка серая, сначала нажмите на значок молотка). Запустилось! Ура!

Программа

Выводы

Установка и настройка Qt Creator завершена. Теперь вы сможете создавать свои программы под огромное число платформ, оставляя код нетронутым! Кстати, установив Qt на Windows, вы сможете скомпилировать этот проект и там. Удачи вам!

Настраиваем QtCreator для полноценного программирования и отладки микроконтроллеров STM32

На данный момент я активно осваиваю разработку ПО для STM32 и хотел бы поделиться моим опытом.

Как известно, для STM32 имеется много сред для разработки, однако часть из них, несмотря на удобность, имеют ограничения по использованию в случае пробной версии. Так, для IAR размер прошивки ограничивается 32 кБ, что весьма немного.

В данной публикации будет рассмотрен способ настройки окружения для полноценной разработки и отладки ПО для микроконтроллеров STM32 в среде QtCreator.

Прежде всего, определимся, что нам понадобится для проведения экспериментов.

Железо

В качестве примера я использую плату bluepill на базе STM32F103C8T6. В моем случае openocd жаловался на некорректный номер STM32. Решается 2 способами: или подменой номера в конфиге openocd или заменой МК на оригинальный. Я выбрал 2 вариант. Для загрузки и отладки программ в МК будем использовать интерфейс ST-Link.

Софт

Сами эксперименты проводились на виртуальной машине ОС Windows 10 в Virtual Box.

Для настройки окружения понадобится следующее ПО:

  1. QtCreator. Можно скачать онлайн-установщик с сайта Qt. Но в нем при установке требуется регистрация и, кроме того, нам нужен только сам QtCreator. Поэтому я обычно его скачиваю непосредственно с GitHub. https://github.com/qt-creator/qt-creator/tags.
  2. gcc-arm-none-eabi. https://developer.arm.com/downloads/-/gnu-rm.
  3. Git. https://git-scm.com/downloads.
  4. openocd. https://github.com/openocd-org/openocd/tags. Это программа для загрузки прошивки и отладки микроконтроллера STM.
  5. make. https://gnuwin32.sourceforge.net/packages/make.htm
  6. ST-LINK Utility. Программа для прошивки STM32 + драйвер для самого ST-Link. https://www.st.com/en/development-tools/stsw-link004.html
  7. Python2.7. https://www.python.org/downloads/release/python-2718/

Прежде всего, скачиваем и распаковываем QtCreator. Затем гит, компилятор, openocd, python, make и st-link.

QtCreator и openocd распаковал в C:\Tools. Все программы, кроме QtCreator, должны быть добавлены в Path.

Проверяем, что компилятор и openocd подтянулись в path вызовом из командной строки.

Далее перейдем к настройке QtCreator.

Настройка QtCreator

Запускаем QtCreator. Для работы нужно установить плагины BareMetal и GenericProjectManager. Для этого идем в Help->About Plugins. После настройки перезапускаем QtCreator.

Переходим в Edit->Preferences. Выбираем Kits слева. Тут видим наш комплект для сборки ARM, который подтянулся из Path. Идем в раздел Devices на вкладку Bare Metal и добавляем OpenOCD server. Выбираем название, в моем случае OpenOCD-STM32F103.

В поле Executable file пишем путь к нашему openocd (по-идее, можно взять из path).

В поле Root scripts directory указываем на директорию со скриптами в openocd.

В поле Additional arguments указываем аргументы для прошивки MK. В нашем случае конфиг для STLink и target. Применяем.

Переходим на вкладку Devices. Нажимаем Add->Bare Metal Device и Start Wizard. В появившемся окне выбираем Debug server provider ранее созданный OpenOCD-STM32F103. Далее Finish.

Возвращаемся в Kits и донастраиваем наш комплект. Выбираем Device type и Device – Bar Metal Device. Применяем.

На этом QtCreator пока откладываем и переходим к настройке самого проекта.

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

Теперь можно приступить непосредственно к созданию и настройке репозитория. Создадим простейший проект на CMSIS, который будет моргать светодиодами.

Прежде всего, нужно подтянуть необходимые библиотеки в виде submodules из официальных репозиториев ARM и ST. Открываем bash-терминал, который устанавливается с git. Создадим папку led_blink_cmsis и перейдем в нее.

mkdir led_blink_cmsis && cd led_blink_cmsis

Внутри создадим папки build, lib и src.

mkdir build && mkdir src && mkdir lib

В папке build будут артефакты сборки, в src – наши исходники, а в lib – сторонние библиотеки.

git init

Далее добавим сторонние библиотеки cmsis для билда с использованием git submodules. Первая библиотека – форк от ARM, вторая содержит настройки и определения для STM32 семейства F1.

git submodule add https://github.com/STMicroelectronics/cmsis_core lib/cmsis_core && cd lib/cmsis_core git checkout v5.6.0 && cd ../..

git submodule add https://github.com/STMicroelectronics/cmsis_device_f1 lib/cmsis_device_f1 && cd lib/cmsis_device_f1 git checkout v4.3.3 && cd ../..

Git checkout здесь необходим, чтобы использовать релизные версии библиотек, в данном случае 5.6.0 и 4.3.3 для cmsis_core и cmsis_device соответственно.

Далее создадим файлы main.c, init.h и init.c в папке src, в которых будем писать исходный код.

touch src/main.c src/init.h src/init.c

Наполним файлы кодом. В файле main.c находится код, которые включает и выключает светодиод, а также вызывает функции clock_init и port_init. Эти функции настраивает тактовую частоту МК и тактирование от кварца, а также работу порта C на выход в режиме пуш-пулл. Кроме того, init.c содержит реализацию функции delay_ms.

#include "init.h" int main(void) < clock_init(); //Clock initialization port_init(); //Port initialization while(1) < GPIOC->BSRR = GPIO_BSRR_BR13; //Pin 13 of PORT C on delay_ms(100); GPIOC->BSRR = GPIO_BSRR_BS13; //Pin 13 of PORT C off delay_ms(100); > return 0; > 
#ifndef STM32F103xB #define STM32F103xB #endif #include "stm32f1xx.h" int clock_init(); void port_init(); void delay_ms(uint16_t); 
#include "init.h" volatile uint32_t SysTickDelayMsec = 0; void SysTick_Handler(void) < --SysTickDelayMsec; >/* OSC - 8 MHz PLLSRC - 8 MHz SYSCLK - 16 MHz PLL - 2 AHB - 1/16 */ int clock_init() < RCC->CR |= RCC_CR_HSEON; //Start HSE generator for(volatile int StartUpCounter = 0; ; ++StartUpCounter) //Wait for successfull start or timeout < if(RCC->CR & RCC_CR_HSERDY) //If started successfully, break the cycle < break; >if(StartUpCounter > 4096) //If not started - turn off and return an error < RCC->CR &= ~RCC_CR_HSEON; //Stop HSE return 1; > > RCC->CFGR = 0; //PLL mult is equal 2 RCC->CFGR |= RCC_CFGR_PLLSRC; //Clock PLL from HSE RCC->CR |= RCC_CR_PLLON; //Start PLL for(volatile int StartUpCounter = 0; ; ++StartUpCounter) //Wait for successfull start or timeout < if(RCC->CR & RCC_CR_PLLRDY) //If started successfully, break the cycle < break; >if(StartUpCounter > 4096) //If PLL didn't start , turn off everything and return an error < RCC->CR &= ~RCC_CR_HSEON; //Stop HSE RCC->CR &= ~RCC_CR_PLLON; //Stop PLL return 2; > > FLASH->ACR |= FLASH_ACR_LATENCY; //0 cycles for flash, core clock 16 MHz RCC->CFGR |= RCC_CFGR_PPRE2; //APB2 turned off (0 by default) RCC->CFGR |= RCC_CFGR_HPRE_3 | RCC_CFGR_HPRE_1 | RCC_CFGR_HPRE_0; //AHB prescaler 16 RCC->CFGR |= RCC_CFGR_SW_1; //Switch to PLL while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL); //Wait for switch to PLL RCC->CR &= ~RCC_CR_HSION; //Turn off the internal clock for energy save SystemCoreClockUpdate(); //Apply alterations to generator SysTick_Config(SystemCoreClock/1000); //Initialisation of interrupt (1 ms) return 0; //Return 0 if success > void port_init() < RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; //Turn on clock for GPIOC GPIOC->CRH = 0; GPIOC->CRH |= GPIO_CRH_MODE13; //Pin 13 of PORT C in Push-Pull mode GPIOC->BSRR |= GPIO_BSRR_BR13; //Pin 13 of PORT C reset > void delay_ms(uint16_t msec) //Delay function

И, наконец, добавим в проект Makefile, в соответствии с которыми будут собираться наша прошивка. Шаблон этого файла взят из генератора кода mxcube и адаптирован под текущий проект. Файл имеет следующее содержание.

###################################### # target ###################################### TARGET = mppt_firmware ###################################### # building variables ###################################### DEBUG = 1 OPT = -O0 ####################################### # paths ####################################### BUILD_DIR = build ###################################### # source ###################################### C_SOURCES = \ src/main.c \ src/init.c \ lib/cmsis_device_f1/Source/Templates/system_stm32f1xx.c ASM_SOURCES = \ lib/cmsis_device_f1/Source/Templates/gcc/startup_stm32f103xb.s ####################################### # binaries ####################################### PREFIX = arm-none-eabi- ifdef GCC_PATH CC = $(GCC_PATH)/$(PREFIX)gcc AS = $(GCC_PATH)/$(PREFIX)gcc -x assembler-with-cpp CP = $(GCC_PATH)/$(PREFIX)objcopy SZ = $(GCC_PATH)/$(PREFIX)size else CC = $(PREFIX)gcc AS = $(PREFIX)gcc -x assembler-with-cpp CP = $(PREFIX)objcopy SZ = $(PREFIX)size endif HEX = $(CP) -O ihex BIN = $(CP) -O binary -S ####################################### # CFLAGS ####################################### CPU = -mcpu=cortex-m3 MCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI) AS_DEFS = C_DEFS = \ -DSTM32F103xB AS_INCLUDES = C_INCLUDES = \ -Isrc \ -Ilib/cmsis_core/Include \ -Ilib/cmsis_device_f1/Include ASFLAGS = $(MCU) $(AS_DEFS) $(AS_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections CFLAGS = $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections ifeq ($(DEBUG), 1) CFLAGS += -g -gdwarf-2 endif CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)" ####################################### # LDFLAGS ####################################### LDSCRIPT = lib/cmsis_device_f1/Source/Templates/gcc/linker/STM32F103XB_FLASH.ld LIBS = -lc -lm -lnosys LIBDIR = LDFLAGS = $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections ####################################### # build the application ####################################### all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o))) vpath %.c $(sort $(dir $(C_SOURCES))) OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o))) vpath %.s $(sort $(dir $(ASM_SOURCES))) $(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR) $(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $( <:.c=.lst)) $< -o $@ $(BUILD_DIR)/%.o: %.s Makefile | $(BUILD_DIR) $(AS) -c $(CFLAGS) $< -o $@ $(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile $(CC) $(OBJECTS) $(LDFLAGS) -o $@ $(SZ) $@ $(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR) $(BIN) $< $@ $(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR) $(BIN) $< $@ $(BUILD_DIR): mkdir $@ clean_build: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).bin find $(BUILD_DIR) ! -name '$(TARGET).bin' -type f -exec rm -f <>+ ####################################### # clean up ####################################### clean: rm -fR $(BUILD_DIR)/* 
  • В C_INCLUDES указываем пути к нашим .h файлам.
  • В C_SOURCES указываем пути к нашим .c/.cpp файлам.
  • DEBUG указывает на добавление дебаг-символов в прошивку. Для релиза выставляем в 0.
  • OPT указывает на оптимизацию. Для релиза включаем оптимизацию, например, Os.

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

Добавим папку build в .gitignore, чтобы гит ее не отслеживал.

echo build/* > .gitignore

На этом настройка проекта завершена и его можно импортировать в QtCreator.

Импорт и настройка проекта в QtCreator

QtCreator не очень дружит с Makefiles. Если попытаться использовать Autotools плагин, то у меня добавлялись только .c и .cpp файлы. Поэтому импортируем проект через специальный интерфейс QtCreator. Для этого понадобится плагин GenericProjectManager.

Переходим в File->New Project. Слева в Import Existing Project.

Далее указываем название проекта led_blink_cmsis и путь C:\led_blink_cmsis. Next.

Выбираем какие директории и файлы импортировать. Выбираем пока только нашу папку src. Next.

Затем add to version control – none и нажимаем Finish. Файлы теперь импортированы.

Далее очень важная деталь – надо добавить в led_blink_cmsis.config определение нашего контроллера, #define STM32F103xB. Без этого дефайна ничего не будет работать, т.к. в библиотеке cmsis требуется указать тип контроллера для включения кода для работы с ним.

На данном этапе ide не распознает зависимости. Настроим это.

Добавим наши .c файлы в led_blink_cmsis.files

src/init.c src/main.c

А в led_blink_cmsis.inludes пути к заголовочным файлам.

src/ lib/cmsis_core/Include lib/cmsis_device_f1/Include

Теперь все должно отображаться корректно.

Попробуем собрать проект, нажав кнопку build. Проект должен собраться, а в конце будет таблица с размером нашей прошивки.

Теперь добавим автозагрузку нашей прошивки на МК по нажатию на кнопку Run. Переходим в Projects слева, выбираем наш комплект arm-baremetal-generic-elf-32bit, затем снизу Run. Справа, где deployment, Add Deploy Step->Make. Затем повторяем, выбрав Custom Process Step и добавляем туда команду для прошивки через ST_link CLI.

C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\ST-LINK_CLI.exe -P ".\build\led_blink_cmsis.bin" 0x08000000 –Rst 

Перед прошивкой подключаем наш ST-Link c МК. Мы прошиваем МК, начиная с адреса 0x08000000, и перезагружаем МК после прошивки.

Таким образом, подключив МК через ST-Link и нажав кнопку Run, все должно скомпилироваться, загрузиться, а светодиод начать моргать. Это можно видеть по показаниям осциллографа, который подключен к PC13.

Таким образом, мы рассмотрели как настроить проект для STM32, его скомпилировать и загрузить в МК. Дальше настроим отладчик для комфортной отладки STM32.

Настройка отладки

Ранее мы уже настроили удаленный отладчик через openocd, и он должен работать

Однако было весьма здорово иметь возможность видеть состояние регистров МК. Добавим такую возможность. Для этого нам понадобится .svd файл для нашего МК, т.е. STM32F103. Скачать его можно, например, из этого репозитория:

Далее перейдем в QtCreator Edit->Preferences->Devices, на вкладку Bar Metal и выберем OpenOCD. Указываем в Peripheral description file наш путь .svd файлу.

Теперь в режиме отладки перейдем в View->Views->Peripheral
Registers
, чтобы отобразить состояние конфигурационных регистров. Запустив
окно отладки и, кликнув правой клавишей мыши на окне Peripheral registers,
можно выбрать группу регистров для отображения, в нашем примере View Groups->GPIOC.

В итоге мы имеем все удобства для отладки устройств на STM32 в IDE QtCreator.

Заключение

Таким образом, в рамках данной статьи рассмотрена настройка QtCreator в связке с GNU компиляторами для полноценной разработки ПО для МК STM32. Надеюсь, что статья была полезна.

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

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