VBCores Документация
СайтGitHub
  • VBCores
  • Hardware
    • VBCore VB32G4
    • VB STM32 программатор
    • BLDC драйвер 30A
    • DC драйвер 15A
    • Stepper драйвер 10A
    • CAN-FD - Raspberry PI
      • Настройка CAN на RPI
      • Часто возникаемые ошибки при работе с CAN/CAN FD
      • Работа с CAN FD через Python
    • Power board 30A
    • SBus-HID
    • DC-DC преобразователь
    • Ethernet - CAN-FD
    • USB-HUB
    • IMU BNO055
    • IMU BHI360
    • Т-Энкодер
  • Настройка ПО
    • Arduino IDE
      • Подготовка модуля VBCore
      • Установка среды программирования на Windows
      • Установка среды программирования на Ubuntu
        • Возможные ошибки в Ubuntu при работе с Arduino
      • Выбор платы в Arduino IDE
      • Установка базовой библиотеки
      • Структура ПО для Arduino
      • Примеры
        • Работа с CAN и CAN FD на Arduino
        • Работа с I2C
        • I2C detect
        • Датчик BNO055 / I2C
        • Датчик AS5047P / SPI
        • Датчик AS5600 / I2C
        • Работа с бесколлекторными двигателями
          • Simple FOC. Управление скоростью. Нахождение количества пар полюсов.
          • Simple FOC. Управление моментом
          • Чтение данных с датчика тока
        • Работа с коллекторным двигателем
          • Вращение DC мотором
          • Чтение угла по энкодеру. Управление DC мотором по углу
          • Чтение скорости вращения мотора по энкодеру
        • Работа с шаговым двигателем
          • Вращение шагового двигателя.
          • Контроль двигателя по интерфейсу SPI
    • STM32 CUBE IDE
      • Типовые настройки
      • Подсказки начинающим
        • Cube IDE для начинающих
        • Clock configuration
        • Таймеры - прерывания
        • Таймеры - ШИМ
        • Отладка программ
        • Коммуникации - FDCAN
        • Управление DC-мотором
        • Backup программы
  • Cyphal CAN
    • Cyphal CAN
    • PyCyphal
    • Yakut
    • Cyphal Arduino
      • Отправка и получение сообщений по cyphal
  • Работа с ROS
    • Установка Ubuntu, ROS и Arduino
    • ROS_LIB
    • Примеры
      • Publisher. Hello World!
      • Publisher with Subscriber
      • Rotation by DC motor
  • Работа с научным ПО
    • TCP Server
    • LabView
    • Matlab
  • Инструкции
    • Стенд управления двигателями
    • Переделка датчика мотор-колеса
    • Стенд мотор-колеса
    • iPower Motor
    • AS5047p OEM
  • Практические занятия
    • Коллекторный двигатель
      • Устройство коллекторного двигателя
  • RPI Display
Powered by GitBook
On this page
  • Создание нового проекта
  • Мигание светодиодом
  • Настройка микроконтроллера
  • Компиляция и загрузка программы в микроконтроллер
  • Программирование
  1. Настройка ПО
  2. STM32 CUBE IDE
  3. Подсказки начинающим

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

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

PreviousПодсказки начинающимNextClock configuration

Last updated 5 months ago

Далее следует туториал по созданию проекта и базовым функциям 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 */

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

После настройки выводов и параметров периферии нажимаем кнопку . Во вкладке Project Explorer будет создана файловая структура проекта, содержащая собственно программу в папке Src с набором файлов, из которых будем использовать только два: main.c и stm32g4xx_it.c. Последний содержит обработчики прерываний. В папке проекта Drivers содержатся библиотеки, нужные для работы с используемыми в проекте модулями. Подпапка CMSIS содержит описание структур данных, непосредственно связанное с аппаратной реализацией микроконтроллера, включая физические адреса регистров его периферийных модулей. В принципе, этого достаточно для написания собственной программы, однако требует значительного объема программирования. Проще использовать готовые библиотеки, содержащиеся в подпапке STM32G4xx_HAL_Driver.

Эти две операции осуществляются соответственно с помощью кнопок и . Уже сейчас программу можно загрузить, но пока чтто она ничего не будет делать.