Первый запуск MIK32. Мигание светодиодом
Обновлено 12.04.2025Для запуска микроконтроллера нам потребуется компьютер с ОС Windows, отладочная плата, программатор и среда разработки.
Программатор
Для программирования микроконтроллера MIK32 можно использовать программаторы J-Link или совместимые с OpenOCD. Выбор программатора в среде MIK32 IDE осуществляется в файле .cfg, а в среде PlatformIO - в файле platformio.ini.
В этом примере рассмотрим работу с тремя программаторами:
2 Программатор OpenOCD на FT2232 c 20-контактным кабелем JTAG.
Среда разработки
В этой статье будем использовать среду разработки MIK32 IDE v1.2.2 c официального сайта производителя. В следующих статьях рассмотрим программирование в PlatformIO.
В соответствии с руководством пользователя, распаковываем архив с MIK32 IDE в любую папку.
Для корректной работы среды программирования в пути к папке с программой должны быть только латинские буквы!
Затем запускаем среду разработки файлом start-ide.cmd:

Запуск среды программирования
После первого запуска MIK32 IDE открываем проект-шаблон:

Открытие проекта-шаблона
Теперь скопируем проект template, и сохраним его под названием, например, blinky. Затем откроем файл main.c:

Копирование проекта и открытие файла main.c
Чтобы начать работу с примерами, следует скопировать файл исходного кода примера из папки src соответствующего примера в папку src созданного проекта.
Для нашего проекта blinky заменим текст файла main.c на текст файла main.c из папки Examples/Blink/src:

Копируем файл main.c из папки примеров в файл main.c нашего проекта blinky
Изменение кода программы
Изменим код программы в main.c под нашу отладочную плату, в которой светодиод подключён к Р0.9, а кнопка - к Р0.10:
#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(); /* Светодиод зажигается при нажатой кнопке */ } }
Теперь выберем вариант работы нашего приложения blinky из оперативной памяти RAM. Для этого щёлкнем правой кнопкой мыши на названии проекта, и выберем нужную конфигурацию сборки:

Выбор конфигурации сборки проекта blinky из оперативной памяти
Далее соберём проект:

Сборка проекта/p>
Настройка программатора
После первого запуска MIK32 IDE необходимо произвести настройку программатора.
Необходимо установить драйвер программатора с помощью программы Zadig. Для этого после запуска программы нужно нажать Options -> List All Devices, выбрать в выпадающем списке устройство с названием BlueProg-JTAG (Interface 0), и установить для него драйвер WinUSB:

Интерфейс приложения Zadig
Копируем файл mik32-ide-v1-2-2/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
В MIK32 IDE открываем External Tools Configurations:

Открытие External Tools Configurations
Нажимаем правой кнопкой мыши на START-MIK32-V1 Upload, и выбираем Duplicate:

Копирование START-MIK32-V1 Upload
Переименовываем скопированную конфигурацию в BlueProg Upload, заменяем файл start-link.cfg на BlueProg.cfg, нажимаем Apply и Close:

Редактирование скопированной конфигурации
Открываем Debug Configurations:

Открытие Debug Configurations
Нажимаем правой кнопкой мыши на START-MIK32-V1 Debug, и выбираем Duplicate:

Копирование START-MIK32-V1 Debug
Переименовываем скопированную конфигурацию в BlueProg Debug, на вкладке Debugger в Config options вводим BlueProg.cfg, нажимаем Apply:

Редактирование скопированной конфигурации
Нажимаем правой кнопкой мыши на START-MIK32-V1 Upload Debug, и выбираем Duplicate:

Копирование START-MIK32-V1 Upload Debug
Переименовываем скопированную конфигурацию в BlueProg Upload Debug, далее выбираем созданные на предыдущих шагах BlueProg Upload и BlueProg Debug, нажимаем Apply и Close:

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

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

Интерфейс приложения Zadig
Копируем файл mik32-ide-v1-2-2/uploader/openocd-scripts/interface/start-link.cfg в эту же папку, и переименовываем его в jlink.cfg:

Копирование файла start-link.cfg
Теперь в блокноте заменяем текст в файле jlink.cfg на следующий:
# SPDX-License-Identifier: MIT
adapter driver jlink
transport select jtag
В MIK32 IDE открываем External Tools Configurations:

Открытие External Tools Configurations
Нажимаем правой кнопкой мыши на START-MIK32-V1 Upload, и выбираем Duplicate:

Копирование START-MIK32-V1 Upload
Переименовываем скопированную конфигурацию в JLink Upload, заменяем файл start-link.cfg на jlink.cfg, нажимаем Apply и Close:

Редактирование скопированной конфигурации
Открываем Debug Configurations:

Открытие Debug Configurations
Нажимаем правой кнопкой мыши на START-MIK32-V1 Debug, и выбираем Duplicate:

Копирование START-MIK32-V1 Debug
Переименовываем скопированную конфигурацию в JLink Debug, на вкладке Debugger в Config options вводим jlink.cfg, нажимаем Apply:

Редактирование скопированной конфигурации
Нажимаем правой кнопкой мыши на START-MIK32-V1 Upload Debug, и выбираем Duplicate:

Копирование START-MIK32-V1 Upload Debug
Переименовываем скопированную конфигурацию в JLink Upload Debug, далее выбираем созданные на предыдущих шагах JLink Upload и JLink Debug, нажимаем Apply и Close:

Редактирование скопированной конфигурации
На этом настройка J-Link завершена!
Прошивка платы
На отладочной плате для запуска из RAM перемычка на соединителе "BOOT MODE" должна быть установлена в соответствующее положение. После изменения положения перемычки подаём питание на плату, либо нажимаем кнопку Reset, если питание уже подано.
Для прошивки платы нужно установить курсор в любой строке файла main.c (иначе отладка не запустится!), и нажать Upload Debug, соответствующий используемому программатору, затем Resume:


Прошивка микроконтроллера из среды Mik32 IDE
Теперь на отладочной плате будет мигать светодиод USER LED, а при зажатой кнопке USER BTN он будет светиться постоянно.
Таким образом, микроконтроллер MIK32 прошит нашей первой программой!
Наверх Оглавление Следующая статья