Работа с STM32CubeMx

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

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

Итак, мы выбрали все нужные нам выводы, ввели все настройки периферии (например, частоты тактирования, режимы работы таймеров….), и STM32CubeMx дает нам возможность сгенерировать соответствующий код. То есть в итоге мы получаем готовый проект, с уже прописанными настройками, с подключенными библиотеками и с готовой инициализацией всей выбранной периферии. Базой для всего этого являются библиотеки CMSIS и HAL.

 


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

- По надписям на плате определить модель своего МК.

- Открыть документацию на соответствующую модель в папке.\MANUAL_STM.

Состав папки с документацией:

um*.pdf – User Manual на плату. Здесь можно найти схему платы, модель используемого процессора, информацию о доп. устройствах на плате (кнопки, диоды, программаторы, и т.д.)

rm*.pdf – Reference Manual на микроконтроллер. Здесь можно найти описание карты памяти процессора, информацию о регистрах настройки и периферии, описание периферии.

pm*.pdf – Programming Manual на микроконтроллер. Содержит информацию о системе команд, их описание и правила использования

ds*.pdf – Datasheet на микроконтроллер. Содержит информацию о доступных выводах и устройствах в составе микроконтроллера.

Модель процессора можно найти в user manual на плату (um*.pdf)

 

Запустить программу STM32CubeMx. Создать новый проект.

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

 

- После выбора МК нажмите «Start Project». Появится следующее окно:

 

2. Настройка тактирования.

Подать тактирование на порт, к которому подключены светодиоды.

За тактирование модулей микроконтроллера отвечает модуль RCC. Включение тактирования осуществляется следующим образом:

 

Во вкладке Clock Configuration происходит визуальная настройка тактовых частот для разной периферии. Оставим все по умолчанию.

 

3. Найдите в user manual на плату (um*.pdf) выводы микропроцессора, к которым подключены светодиоды (Leds).

Выводы обозначаются по следующей схеме: PD12, где PD означает Port D, 12 – номер вывода

Настройте выводы своего МП в соответствии с выбранными светодиодами в Cube. Для STM32F4 были выбраны выводы с 12 по 15, порт D. На рисунке ниже выводы настроены на выходной режим работы «Output».

 

4. Далее во вкладке «Project Manager» заполните выделенные поля:

 

В папке «Cube_soft» найдите папку с библиотеками для своего МП (папки с библиотеками находятся у преподавателя). В «Project Manager» проверьте версию МП и укажите путь к этим библиотекам, например:

С:\Cube_soft\STM32CubeF4\en.stm32cubef4\STM32Cube_FW_F4_V1.23.0

 

Нажмите кнопку «Generate Code»

 

5. После успешной генерации программного кода нажмите «Open Folder». Откроется папка с вашим проектом. В «MDK-ARM» найдите файл с расширением uvproj. Это и есть наш основной рабочий файл для Keil, с которым далее будем работать. Запустите Keil и откройте этот файл: Project –> Open project… (обратите внимание, что файл проекта был сгенерирован через Cube для 4-ой версии Keil).

Скомпилируйте проект (нажатием F7) и убедитесь в отсутствии ошибок.

 

6. Подключите плату с микроконтроллером к компьютеру. Если данная плата ранее не подключалась к выбранному USB-разъему выбранного компьютера, то начнется установка драйвера, требующая прав администратора. Обратитесь к лаборанту или выберите другой порт (компьютер).

Для того чтобы убедиться, что плата подключена к компьютеру и на нее установлены драйвера, выполните следующие действия:

6.1. Подключите плату с микроконтроллером к компьютеру. Далее во вкладке «Project» нажмите павой кнопкой мыши на название вашего проекта, в данном случае Lab1. Выберете выделенную строку.

 

6.2. В открывшемся окне выберете вкладку «Device» и проверьте название своего МП:

 

 

6.3. Отключите оптимизацию:


6.4. Далее выберете «Debug» и повторите все настройки, показанные на рисунке ниже:

 

6.5. Затем нажните кнопку «Settings». После установки типа порта должна появиться надпись как на рисунке ниже:

 

7. Настройте программатор:

Если список Programming Algorithm пуст, то нажмите кнопку Add и выберите подходящий.

8. Нажмите OK на всех открытых окнах, скомпилируйте и запустите режим отладки (F7, затем ). Если все выполнено правильно, программа загрузится в микроконтроллер и отладка будет идти на нем.

 

9. В файле main.с найдите следующие строки:

static void MX_GPIO_Init (void) - это функция настройки GPIO, порта ввода-вывода. Данная функция сгенерирована автоматически на основе библиотек HAL и CMSIS.

10. В файле stm32f4_hal.с найдите функцию

__weak void HAL_Delay (uint32_t Delay)

Это библиотечная функция, которая осуществляет задержку в миллисекундах.

 

11. В файле stm32f4xx_hal_gpio.h найдите функцию

void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

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

 

 


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

/* USER CODE BEGIN … */

…..

/* USER CODE END … */

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

Запустите программу и проверьте правильность ее работы.

 

13. По аналогичному принципу напишите программу, осуществляющую моргание четырьмя или более светодиодами.

 

14. Напишите программу, осуществляющую моргание светодиодов в противофазе друг другу.

Запустите программу и проверьте правильность ее работы.

 


15. В User manual на плату найти, к какому выводу подключена синяя пользовательская кнопка (в данном случае - порт А вывод 0).

16. Запустите программу Cube, далее «Load project» и откройте файл с расширением ioс из папки своего сохраненного проекта.

 

17. Настройте ранее выбранный вывод, подключенный к кнопке в режим «Input»:

 

Затем нажмите «Generate code», далее «Open project». В Keil откроется ваша модифицированная программа с настройками пользовательской кнопки.

Обратите внимание на функцию static void MX_GPIO_Init (void). Она дополнена включением тактирования пота А и настройками для нулевого вывода этого порта.

 

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

HAL_GPIO_ReadPin ();

HAL_GPIO_WritePin ();

Описание функций и их параметров смотрите в файлах stm32f4xx_hal_gpio.с и stm32f4xx_hal_gpio.h

 

19. Провести отладку, доказать, что все работает правильно, сохраните проект.

 

 

<== предыдущая лекция | следующая лекция ==>
Создание баз данных – таблиц и связей между ними | Центры древнерусского государства

Дата добавления: 2019-09-30; просмотров: 1037;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.016 сек.