Работа с 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;