Урок 56
Часть 1
System Workbench. Подключаем библиотеку BSP
Сегодня мы продолжим работу с бесплатной средой программирования System Workbench for STM32.
На прошлом занятии мы подключили и смогли успешно использовать операционную систему реального времени FreeRTOS.
Сегодня мы продолжим начатое дело и поработаем с другой платой.
Для примера возьмём плату STM32F746G-DISCO. С данной платой мы также знакомы из обзора.
Цель данного занятия – изучить возможность подключения определённых модулей библиотеки BSP, а также с помощью этой библиотеки поработать с дисплеем, установленным на плате, используя технологии FMC и DMA2D.
Ну что ж, начнём!
Запустим MS Cube, создадим проект, выбрав наш микроконтроллер (нажмите на картинку для увеличения размера)
В RCC выбираем вот такую опцию
А в SYS вот такие
TIM1 выбран ввиду того, что что на Systick будет ругаться генератор кода, если мы будем использовать FreeRTOS.
Включим также USART, так как библиотека BSP постоянно обращается к его функциям
Включим FreeRTOS
Зайдём в Configuration, зайдём в свойства FreeRTOS, добавим стек для основной задачи и включим там ещё 4 задачи кроме основной со стандартным стеком
Зайдём в Clock Configuration и настроим там все делители, включив максимальную частоту и добавив кварцевый резонатор (нажмите на картинку для увеличения размера)
Включим также LTDC, FMC и DMA2D. Так как мы будем использовать BSP, где инициализация происходит заново, то не сильно важна точность всех настроек, но всё же желательно сделать их так, как указано будет здесь
Переходим в Configuration.
Сначала настроим LTDC
Следующая закладка LTDC – Layer Settings
Применяем настройки, переходим в FMC и вносим следующие настройки
В других закладках ничего не трогаем и применяем настройки.
В DMA2D вообще ничего не трогаем.
Включим кэш, зайдя в CORTEX_M7 ARM
Зайдём в Project -> Settings и настроим наш будущий генерируемый проект, немного добавив значение стека и кучи
У вас будет, соответственно, другой путь. Нажмём «ОК».
Сгенерируем проект и закроем диалог.
Запустим System Workbench и добавим наш сгенерированный проект таким же образом, как и на прошлых занятиях, предварительно удалив из дерева проекта все проекты, чтобы не путались.
Откроем слева дерево проекта, найдём там файл main.c и поставим туда фокус ввода (кликнем мышкой, чтобы установился курсор). Это помогает компилятору в случае наличия в дереве проектов в дереве проектов простым способом понять, что данный проект для него является текущим и ему работать именно с ним.
Прежде чем скомпилировать проект и запустить отладку, уберём в свойствах проекта конфигурации всех отладчиков, чтобы избежать ненужных ошибок (нажмите на картинку для увеличения размера)
Попробуем скомпилировать проект. Для этого, как обычно, выберем в меню Project -> Build Project.
Если всё нормально без ошибок собралось, то теперь попробуем зайти в отладку. Если появится диалог с выбором программатора, то нужно будет его выбрать
Если нормально вошли в отладку, запустим её, затем остановим, попробуем запустить обычным Run. Если всё хорошо, то будем теперь заниматься непосредственно целью занятия – собственно подключением файлов библиотеки BSP.
Зайдём в папку «Drivers» в папке с проектом и создадим там папку «BSP», зайдём в эту папку и создадим там 2 папки – «STM32746G-Discovery» и «Components». Зайдём в папку «Components» и скопируем туда из папки «Диск:\Keil_v5\ARM\PACK\Keil\STM32F7xx_DFP\2.7.0\Drivers\BSP\Components» папки «rk043fn48h» и «ft5336».
Также в этой папке создадим папку «Common», зайдём в неё и из одноимённой папки вышеуказанного пути скопируем файл ts.h.
Вернемся на 2 уровня выше и зайдём в другую папку – «STM32746G-Discovery». Скопируем в неё из папки «Диск:\Keil_v5\ARM\PACK\Keil\STM32F7xx_DFP\2.7.0\Drivers\BSP\STM32746G-Discovery» следующие файлы:
stm32746g_discovery.c
stm32746g_discovery.h
stm32746g_discovery_lcd.c
stm32746g_discovery_lcd.h
stm32746g_discovery_sdram.c
stm32746g_discovery_sdram.h
stm32746g_discovery_ts.c
stm32746g_discovery_ts.h
Выходим из этой папки на самый верхний уровень папки с проектом и создадим там папку «Utilities». Зайдём в данную папку и скопируем туда из папки «Диск:\Keil_v5\ARM\PACK\Keil\STM32F7xx_DFP\2.7.0\Utilities» папки «CPU», «Fonts» и «Log».
Возможно, в момент прочтения статьи имя папки «2.7.0» будет уже другим, так как версии постоянно обновляются.
Ещё одно условие: файлы в добавленных к проекту папках не должны содержать атрибут «Только для чтения».
Вернёмся в WB, обновим там дерево с проектом (Refresh (F5)), и пересоберём наш проект.
Теперь нам необходимо подключить созданные папки к проекту. Для этого в свойствах проекта заходим в пункт C/C++ Build -> Settings -> Tool Settings, нажимаем там кнопку с плюсиком и добавляем нужную папку (нажмите на картинку для увеличения изображения)
Добавим туда папку «STM32746G-Discovery» следующим образом, в процессе желательно путь исправить на относительный, чтобы было по аналогии с другими файлами:
Путь желательно должен быть относительным, чтобы мы могли свой проект затем переписывать хоть куда.
Остальные папки, в принципе, добавлять не нужно, так как к ним в коде библиотек прописаны относительные пути. Попробуем собрать проект.
Если всё нормально собирается, то попробуем инициализировать дисплей и закрасить его в какой-нибудь цвет.
В следующей части занятия мы продолжим работу с нашим проектом и испытаем наш код на практике, увидев на дисплее какой-нибудь тест.
Предыдущий урок Программирование МК STM32 Следующая часть
Отладочную плату можно приобрести здесь STM32F746G-DISCOVERY
Смотреть ВИДЕОУРОК
нафига так сложно?
не нужно начинать с куба!!!!!
при создании проекта в єклипсе просто нужно указать плату, и поставить точку " напротив "HAL" и библиотека BSP будет по умолчанию доступна. , там же можно подключить остальные библиотеки!
инициолизировать LTDC не нужно! это сделает BSP само!
вы вообще содержимое библиотеки читали?
Всё я читал и не надо троллить ресурс. Делаем всё стандартно, потом постепенно уходим от BSP.
Необходимость копировать что-либо из Кейла удивила. В кубе есть репозиторий, все там лежит.
Права только для чтения. Много разговора о том, в чем не стали разбираться. Вся папка драйверов только для чтения, наследуется от неё ниже. Хотите снять атрибут — делайте для первой папки — BSP, потом не придется проверять все по отдельности. Только зачем править то, что специально закрыли.
Отличный ресурс, спасибо.
У меня такая плата есть, я поигрался со стандартным проектом, который шел с CubeMX. Дальше дело не пошло, потому что файлы типового проекта сильно перемешаны и не понятно было как сделать самому проект с нуля.
А на этих и последущих видео очень хорошо видно как это сделать 🙂
Поэтому мы и пошли потом по пути отказа от BSP и написания своих библиотек. Независимость превыше всего.