Забыли пароль?

logo

В данной статье я расскажу, как создать первый проект в Keil 5, прошить микроконтроллер Milandr и запустить отладку программы на примере  работы  с отладочной платой LDM-K1986BE92QI-H.  Программатор я использую ST-LINK /V2, текст программы в проекте будет использован самый простой, из описания к отладочной плате. Будем читать состояние одной из управляющих кнопок, отладочной платы, и в случае нажатия будем засвечивать один из светодиодов.


Итак, начнем…
Запускаем Keil, идем в Project -> New µVision Project…, выбираем папку и имя проекта.

ke1

ke2

Выбираем контроллер с которым будем работать, Milandr -> MDR1986ВЕ92 (данный контроллер установлен на плате LDM-K1986BE92QI-H).

ke3

Выбираем необходимые нам библиотеки – Startup_MDR1986ВЕ9x, PORT и RST_CLK.

ke4

Выполнив шаги описанные выше получаем пустой проект. Теперь добавим к нему файл в котором будет находиться текст программы. Для этого правой кнопкой мыши жмем на папку в проекте Source Group 1 и в раскрывшемся меню выбираем Add New Item to Group ‘Source Group 1’…

ke5

Тип файла “.с”, имя “main”, жмем Add.

ke6

Добавим заголовок в созданный ранее файл. Для этого встаем мышкой на первую строку файла, жмем правую кнопку мыши и в раскрывшемся меню выбираем Insert ‘#include file’ -> MDR32Fx.h .

ke7

В первой строке нашего файла появится надпись как на картинке.

ke8

Далее наполняем файл main.c следующим кодом:

//===================================================================
// Данный код предоставлен пользователем «редактор» на forum.milandr.ru
// и переделан для
// платы LDM-1986BE92QI компании LDM-SYSTEMS
//===================================================================
#include «MDR32Fx.h»                    // Device header

#define BUTTON_SELECT (1<<2)                      // Кнопка Select заведена на порт PC2
#define LAMP_VD5 (1<<0)                                  // Светодиод VD5 заведен на порт PB0

int main (void)
{

// Разрешили работу всей периферии
// Если этого не сделать, порты не будут инициализированы
MDR_RST_CLK->PER_CLOCK = 0xFFFFFFFF;

// Настройка портов ввода-вывода
// Настраиваем порт PC
MDR_PORTC->OE = 0x00000000;                             // Все линии порта С настраиваем на ввод
MDR_PORTC->FUNC = 0x00000000;                       // Все линии порта используются как порт ввода-вывода
MDR_PORTC->ANALOG = 0x0000FFFF;                 // Все линии- цифровые
MDR_PORTC->PULL = BUTTON_SELECT << 16;  // Линию PC2 притянули к положительному уровню питания
MDR_PORTC->PD = BUTTON_SELECT << 16;      // Включили триггер Шмидта по входу линии PC2

MDR_PORTC->PWR = 0x55555555;                        // Медленный фронт по входу всем линиям
MDR_PORTC->GFEN = 0;                                          // Фильтр по входу выключен по всем линиям

// Настраиваем порт PB
MDR_PORTB->OE = LAMP_VD5;                               // Линию порта PB0 настраиваем на вывод
MDR_PORTB->FUNC = 0x00000000;                      // Все линии порта используются как порт ввода-вывода
MDR_PORTB->ANALOG = 0x0000FFFF;               // Все линии- цифровые
MDR_PORTB->PULL = LAMP_VD5 << 16;             // ЛиниюPB0 притянули к положительному уровню питания
MDR_PORTB->PD = ~LAMP_VD5;                          // ЛинияPB0 настраивается как управляемый драйвер
MDR_PORTB->PWR = 0x55555555;                       // Медленный фронт по выходу линии PB0
MDR_PORTB->GFEN = 0;                                        // Фильтр по выходу выключен по всем линиям
MDR_PORTB->RXTX = 0xFFFF;                              // Выставили все линии порта в высокое состояние

while(1)                                                              // Основной цикл работы программы
{
if(MDR_PORTC->RXTX & BUTTON_SELECT)      // Если бит установлен(кнопка отпущена)
{
MDR_PORTB->RXTX &= ~LAMP_VD5;              // Установили порт PB0 в 0 (низкий уровень выкл. светодиод)
}
else
{
MDR_PORTB->RXTX |= LAMP_VD5;              // Установили порт PB0 в 1 (высокий уровень вкл. светодиод)
}
}
}

Пробуем скомпилировать проект, для этого жмем кнопку “Rebuild”.

ke9

В случае удачной компиляции в окне “Build Output” появится сообщение с числом ошибок – 0.

ke10

Что бы загрузить скомпилированный код в контроллер отладочной платы необходимо подключить имеющийся у меня программатор ST-LINK к разъему JTAG B отладочной платы, подключить к плате питание и включить ее кнопкой SW11 (ON/OFF).

pr1

В зависимости от варианта питания платы, должны быть установлены джамперы JP1, JP8 и JP11. Так же обратите внимание, что переключатели M0, M1, M2 должны быть установлены в 0.

Далее необходимо в в кейл, в опциях проекта выбрать наш программатор. Жмем Project -> Options for Target ‘Target 1’…

ke11

Вкладка Target остается как есть.

ke12

Во вкладке Output ставим галку в строке Create Hex file.

ke13

Во вкладке Listing оставляем все без изменений.

ke14

Во вкладке User ставим галку  Start Debugging для того чтобы после компиляции автоматически запускалась отладка.

ke15

Вкладка C/C++ без изменений.

ke16

Вкладка Asm без изменений.

ke17

Вкладка Linker без изменений.

ke18

Во вкладке Debug выбираем наш программатор ST-Link Debugger и заходим в его настройки Settings.

ke19

Во вкладке Debug
Debug Adapter: ST-Link/V2.
Port: SW
В SW Device должен определиться микроконтроллер.

ke20

Во вкладке Flash Download
Выбрать Erase Full Chip и проконтролировать, чтобы остальные настройки соответствовали скриншоту.

ke21

Теперь у нас все готово к запуску программы на отладочной плате. Программатор подключен к плате,плата включена, светится светодиод VD8. В окне кейл снова жмем Rebuild, при этом вновь должна пройти компиляция. Если у вас нет лицензии вылетит окно с предупреждением как на картинке.

ke22

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

ke23

Программа заработает. Для того чтобы увидеть ее работу жмем на центральную кнопку управления SW1 отладочной платы. При этом должен загореться светодиод VD5.

pr2

Поздравляю, ваша первая программа под микроконтроллер Milandr на отладочной плате LDM-K1986BE92QI-H работает.

Выйти из режима отладки можно нажав по значку Start/Stop Debug Session.

ke24

Скачать готовый проект рассматриваемый в данной статье можно по ссылке — led1.

Оставить комментарий