Электроника и программирование

Первый запуск MIK32. Мигание светодиодом

Обновлено 12.04.2025

Для запуска микроконтроллера нам потребуется компьютер с ОС Windows, отладочная плата, программатор и среда разработки.

Программатор

Для программирования микроконтроллера MIK32 можно использовать программаторы J-Link или совместимые с OpenOCD. Выбор программатора в среде MIK32 IDE осуществляется в файле .cfg, а в среде PlatformIO - в файле platformio.ini.

В этом примере рассмотрим работу с тремя программаторами:

1 Программатор BlueProg.

2 Программатор OpenOCD на FT2232 c 20-контактным кабелем JTAG.

3 Программатор J-Link.

Среда разработки

В этой статье будем использовать среду разработки 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(); /* Светодиод зажигается при нажатой кнопке */
	}
}

⇓ main.c ⇓

Теперь выберем вариант работы нашего приложения 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 прошит нашей первой программой!

Наверх Оглавление Следующая статья