Cube IDE для начинающих

Разбор функционала IDE с помощью простейшего проекта мигания светодиодами

Далее следует туториал по созданию проекта и базовым функциям IDE, а также основам программирования микроконтроллеров и, наконец, работе с простым мотором.

Предполагается, что вы уже установили CubeIDE по инструкции из предыдущей статьи.

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

В среде CubeIDE выбираем File -> New -> STM32Project, выбираем микроконтроллер STM32G474RET6, нажимаем Next. В открывшемся окне задаем имя проекта, остальное – по умолчанию. Далее Finish и CubeIDE создаст проект и откроет окно (файл *.ioc ) с изображением микросхемы контроллера.

Создание нового проекта из существующего

Тот же результат можно получить, если создавать новый проект, используя файл *.ioc существующего проекта. В среде CubeIDE выбираем File -> New -> STM32Project from an existing …

Мигание светодиодом

Настройка микроконтроллера

Количество выводов микросхемы существенно меньше количества входов-выходов всех его периферийных модулей. Поэтому большинство выводов многофункциональны. В каждом конкретном исполнении выводы приобретают конкретные функции и должны быть правильно сконфигурированы.

Ниже приведена конфигурация для нашего случая.

Мы будем использовать два диода, LED1 и LED2. Соответственно, ножки PD2 и PA5 выставляем в GPIO Output.

Кроме того, мы будем использовать внешнее тактирование во всех проектах, каждый раз этот этап повторять в инструкциях не будем, но надо помнить, что это обязательно настроить. System Core -> RCC -> High Speed Clock -> Crystal/Ceramic Resonator.

Компиляция и загрузка программы в микроконтроллер

Программирование

CubeIDE сгенерировал нам весь необходимый базовый код. Откроем Code -> Src -> main.c. Можно заметить, что по всему файлу разбросаны блоки USER CODE BEGIN / USER CODE END. Писать код можно только внутри них! Все остальное удалиться при повторной генерации кода для проекта, что происходит при любом изменении параметров в графическом редакторе. Найдем участок:

/* USER CODE BEGIN WHILE */
  while (1)
  {
/* USER CODE END WHILE */

И добавим туда следующее:

/* USER CODE BEGIN WHILE */
  while (1)
  {
    HAL_Delay(1000);
    HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);
/* USER CODE END WHILE */

Все! Если залить этот код, то диод будет мигать с периодом в секунду.

Last updated