Первый запуск MIK32 в PlatformIO. Мигание светодиодом
Обновлено 12.04.2025Рассмотрим процесс программирования в среде Visual Studio Code (далее - VS Code) с расширением PlatformIO. Как и в предыдущей статье, рассмотрим работу с тремя программаторами:
2 Программатор OpenOCD на FT2232 c 20-контактным кабелем JTAG.
После установки VS Code нужно повторить шаги, описанные здесь в разделе "Установка распаковкой архива".
Затем скачаем пример проекта Blink отсюда, переименуем папку, например, в mik32_test, и добавим в VS Code, нажав File->Add Folder to Workspace...

Открытие проекта
Из панели Explorer откроем файл main.c:

Открытие файла main.c
Заменим код файла main.c кодом из предыдущей статьи:
#include <mik32_memory_map.h> #include <pad_config.h> #include <gpio.h> #include <power_manager.h> #include <wakeup.h> /* * Данный пример демонстрирует работу с GPIO и PAD_CONFIG. * В примере настраивается вывод, который подключенный к светодиоду, в режим GPIO. * Функция ledButton, которая считывает состояние кнопки и зажигает светодиод. * */ #define PIN_LED 9 // Светодиод управляется выводом PORT_0_9 #define PIN_BUTTON 10 // Кнопка управляет сигналом на выводе PORT_0_10 void InitClock() { PM->CLK_APB_P_SET |= PM_CLOCK_APB_P_GPIO_0_M; // Включение тактирования GPIO PM->CLK_APB_M_SET |= PM_CLOCK_APB_M_PAD_CONFIG_M | PM_CLOCK_APB_M_PM_M;// Включение тактирования блока для смены режима выводов } void ledBlink() { for (volatile int i = 0; i < 100000; i++); // Задержка GPIO_0->OUTPUT ^= 1 << PIN_LED; // Установка сигнала вывода 9 порта 0 в противоположный уровень } void ledButton() { if ((GPIO_0->STATE & (1 << PIN_BUTTON))==0) // Когда кнопка нажата, на выводе микроконтроллера PIN_BUTTON низкий уровень { GPIO_0->OUTPUT |= 1 << PIN_LED; // Установка сигнала вывода 9 порта 0 в высокий уровень } } int main() { InitClock(); // Включение тактирования GPIO PAD_CONFIG->PORT_0_CFG &= ~(0b11 << (2 * PIN_LED)); // Установка вывода 9 порта 0 в режим GPIO PAD_CONFIG->PORT_0_CFG &= ~(0b11 << (2 * PIN_BUTTON)); // Установка вывода 10 порта 0 в режим GPIO GPIO_0->DIRECTION_OUT = 1 << PIN_LED; // Установка направления вывода 9 порта 0 на выход GPIO_0->DIRECTION_IN = 1 << PIN_BUTTON; // Установка направления вывода 10 порта 0 на вход while (1) { ledBlink(); /* Светодиод мигает */ ledButton(); /* Светодиод зажигается при нажатой кнопке */ } }
Далее настраиваем среду PlatformIO для работы с нужным программатором:
Необходимо установить драйвер программатора с помощью программы Zadig. Для этого после запуска программы нужно нажать Options -> List All Devices, выбрать в выпадающем списке устройство с названием BlueProg-JTAG (Interface 0), и установить для него драйвер WinUSB:

Интерфейс приложения Zadig
Копируем файл {username}/.platformio/packages/tool-mik32-uploader/openocd-scripts/interface/start-link.cfg в эту же папку, и переименовываем его в BlueProg.cfg:

Копирование файла start-link.cfg
Теперь в блокноте заменяем текст в файле BlueProg.cfg на следующий:
# SPDX-License-Identifier: MIT adapter driver ftdi ftdi vid_pid 0x16c0 0x05dc ftdi channel 0 transport select jtag ftdi layout_signal nTRST -data 0x0010 ftdi layout_signal LED -data 0x0020 ftdi layout_signal nSRST -noe 0x0040
В файле platformio.ini впишем запуск программы из памяти RAM и программатор BlueProg:

Файл platformio.ini
Необходимо установить драйвер программатора с помощью программы Zadig. Для этого после запуска программы нужно нажать Options -> List All Devices, выбрать в выпадающем списке устройство с названием USB <-> Serial Converter (Interface 1), и установить для него драйвер WinUSB:

Интерфейс приложения Zadig
В файле platformio.ini впишем запуск программы из памяти RAM и программатор mikron-link, в котором также применяется FT2232:

Файл platformio.ini
На этом настройка программатора завершена!
Необходимо установить драйвер программатора с помощью программы Zadig. Для этого после запуска программы нужно нажать Options -> List All Devices, выбрать в выпадающем списке устройство с названием BULK interface (Interface 2), и установить для него драйвер WinUSB:

Интерфейс приложения Zadig
В файле platformio.ini впишем запуск программы из памяти RAM и программатор J-Link:

Файл platformio.ini
Собираем проект, нажав Build на вкладке PLATFORMIO:

Собираем проект
На отладочной плате для запуска из RAM перемычка на соединителе "BOOT MODE" должна быть установлена в соответствующее положение. После изменения положения перемычки подаём питание на плату, либо нажимаем кнопку Reset, если питание уже подано.
И наконец, прошиваем плату, нажав Upload на вкладке PLATFORMIO:

Загружаем прошивку в плату
После этого, как и в предыдущей статье, светодиод USER LED на плате начинает мигать, а при зажатой кнопке USER BTN светится постоянно.
Теперь для перехода в режим отладки можно нажать Run->Start Debugging или F5.
Как видим, код программы для MIK32 IDE и PlatformIO в VS Code полностью одинаков, поэтому выбор среды программирования сводится к личным предпочтениям к той или иной среде. В дальнейших статьях программирование будет вестись в MIK32 IDE, но код также будет работать и в PlatformIO.
Наверх Оглавление Следующая статья