Загрузите свою первую программу, используя руку mbed и keil mdk v5

Загрузите свою первую программу, используя руку mbed и keil mdk v5
Загрузите свою первую программу, используя руку mbed и keil mdk v5
Anonim

Загрузите свою первую программу с помощью ARM mbed и KEIL MDK V5

Узнайте больше о платформе FRDM-K64F dev!

FRDM-K64F - это платформа разработки, в которой используется микроконтроллер MK64FN1M0VLL12. Этот микроконтроллер содержит ядро ARM Cortex-M4 с блоком с плавающей точкой. Он имеет максимальную рабочую частоту 120 МГц, 256 КБ ОЗУ, 1 Мб флеш-памяти и множество других периферийных устройств. Он идеально подходит для ряда приложений IoT, которые могут использовать Ethernet, хранение SD-карт и встроенные аналого-цифровые преобразователи. Однако, прежде чем мы опережаем себя, нам нужно довести доску с помощью инструментов разработки, которые мы используем. Самый простой способ сделать это - использовать модуль FRIO-K64F GPIO для мигания светодиодов. Сначала это будет простая демонстрация быстрого прототипирования с использованием платформы mbed, а затем более углубленный анализ на уровне регистра в KEIL, в котором мы будем настраивать модуль GPIO для обоих входов и выходов.

Загрузка примера Blinky в FRDM-K64F Использование mbed

Когда я упомянул о загрузке простого blinky-примера в FRDM-K6F с использованием платформы mbed, я имею в виду использование mbed online IDE для этого, а не для новой mbed-ОС. Интегрированная онлайн-среда является фантастической для быстрого прототипирования и будет использоваться здесь для проверки функциональности светодиодов на плате. Одним из наиболее привлекательных качеств является способность разрабатывать доказательство концепции необычно быстро, используя онлайн-среду IDE. Действительно, растет количество проектов, которые, по крайней мере, должны быть частью их разработки для быстрого прототипирования на платформе mbed.

Обновление прошивки на плате

Прежде чем что-либо сделать, важно обновить прошивку на плате FRDM для использования с mbed. Подробную инструкцию о том, как это сделать, а также последнее обновление прошивки можно найти на странице прошивки FRDM K64 сайта mbed.

Для Windows необходимо выполнить следующее:

  1. Отключите плату от источников питания и компьютера
  2. Удерживайте кнопку RESET, расположенную рядом с SDAUSB, и подключите плату через SDAUSB.
  3. Привод, называемый BOOTLOADER, должен монтироваться
  4. Отпустите кнопку RESET.
  5. Перетащите последнюю версию обновления прошивки на диск
  6. Как только загрузка завершится, зеленый светодиод состояния должен быстро мигать
  7. Отсоедините и снова подключите USB-кабель, плата должна теперь перечислить как MBED

Поиск и загрузка примера Hello World на Совет

На странице информации FRDM-K64F на сайте mbed представлен пример mbed_blinky, как показано ниже:

Image
Image

Просто нажмите программу импорта и выберите подходящее имя для импорта программы в онлайн-среду. Отметив флажок рядом с пунктом «Обновление», вы можете убедиться, что для этой программы используются последние библиотеки.

Image
Image

После импортирования программа должна открыться автоматически, и вам будет предложено просмотреть интерактивную среду IDE. В левом столбце вы должны увидеть Рабочее пространство проекта. Рядом с этим расположено главное окно редактора.

Image
Image

Редактору должен отображаться код, похожий на код, показанный ниже. Здесь библиотеки mbed абстрагировали большую часть кода уровня регистров, и мы можем просто настроить вывод в качестве вывода с помощью интерфейса DigitalOut или интерфейса DigitalIn, чтобы настроить его как вход.


#include "mbed.h" DigitalOut myled(LED1); int main() { while(1) { myled = 1; wait(0.2); myled = 0; wait(0.2); } }

Важно обеспечить правильную платформу. Выбранная платформа расположена в верхнем правом углу среды IDE. Чтобы изменить платформу, нажмите на текущую выбранную платформу и перейдите на требуемую платформу или добавьте новую платформу, перейдя на нужную платформу и нажав кнопку «Добавить в компилятор».

Image
Image

Просто загрузите программу с помощью кнопки компиляции. Найдите загрузку и перетащите этот двоичный файл на диск MBED. Нажмите кнопку сброса, и красный светодиод должен мигать каждые 0, 2 секунды. Вот и все, теперь плата настроена для работы с онлайн-средой IDE, и она была свернута первой программой!

Загрузка примера Blinky в FRDM-K64F с использованием KEIL MDK

Конечно, простой подход, обеспечиваемый при использовании онлайн-среды mbed, имеет свои недостатки. Как и следовало ожидать, возможности отладки IDE, работающие в браузере, не являются исчерпывающими. Если вы попытаетесь выполнить отладку с помощью mbed online IDE, вы можете только что-то напечатать на терминале. Иногда, однако, для более сложных приложений необходимо использовать инструмент с более полным набором ресурсов отладки. Выполнение кода, добавление точек останова и проверка регистров и переменной в памяти - отличный способ отладки вашего кода. ARM KEIL MDK обеспечивает эту функциональность.

Настройка FRDM-K64F для использования с KEIL MDK

Чтобы настроить плату для использования с KEIL MDK, мы должны сначала загрузить соответствующий драйвер для использования с KEIL. Драйвер OpenSDA V2 совместим с J-Link и будет использоваться здесь. Процесс установки драйвера точно такой же, как для установки драйвера mbed, как описано выше. Как только драйвер установлен правильно, плата должна перечислить как JLINK.

Пример кода для KEIL MDK

Чтобы создать мигающий пример с помощью KEIL MDK, мы должны взглянуть на регистры, связанные с модулем GPIO. Информацию об этом можно найти в Справочном руководстве по подгруппе K64, глава 55 на стр. 1757.

Регистры, к которым можно получить доступ в отношении модуля GPIO, показаны в таблице ниже:

Регистр вывода данных порта (GPIOx_PDOR) Логические уровни штыря могут быть назначены соответствующему биту.
Регистр вывода набора портов (GPIOx_PSOR) Логический уровень штыря может быть установлен равным 1, независимо от его текущего состояния, путем записи 1 в соответствующий бит.
Регистр выходных данных порта (GPIOx_PCOR) Логический уровень штыря может быть очищен до 0, независимо от его текущего состояния, путем записи 1 в соответствующий бит.
Регистр вывода портов (GPIOx_PTOR) Логический уровень штыря может быть переключен путем записи 1 в соответствующий бит.
Регистр ввода данных порта (GPIOx_PDIR) Регистр только для чтения, используемый для определения состояния булавки.
Регистр направления данных порта (GPIOx_PDDR) Используется для настройки выводов для ввода или вывода. Если нулевой или один присваивается соответствующему биту для вывода, это вход или выход соответственно.

Краткий обзор некоторых важных побитовых операций

Возможно, два из наиболее важных операторов, которые выполняются при конфигурировании регистров, являются побитовым оператором присваивания AND и оператором присваивания поразрядным ИЛИ. Они могут использоваться для установки или очистки определенного бита в регистре без изменения остальной части регистра.


uint8_t myVar =00101100; myVar |= 00000001; myVar &=~ 00000001;

В приведенном выше коде мы или исходное значение с другим значением и присваиваем результат исходному значению для достижения результата, показанного ниже:

00101100 | 00000001 = 00101101

Затем мы И исходное значение с другим, инвертированным, значением и присваиваем результат исходному значению для достижения результата, показанного ниже:

00101101 & 11111110 = 00101100

Инициализация модуля GPIO

Код инициализации модуля GPIO показан ниже. Включив файл заголовка для микроконтроллера, который включен в библиотеки KEIL, мы можем использовать определения в заголовке для обращения к соответствующим регистрам с соответствующими значениями. В этом коде включены часы, необходимые для используемых портов. Регистр управления портами используется для назначения булавки для каждого вывода на «Alt 1», т.е. GPIO. Наконец, биты устанавливаются как входы или выходы в зависимости от функции. В этом случае светодиод RGB сконфигурирован как выход, а переключатель 2 настроен как вход.


#include "MK64F12. H" void GPIO_init(void)= SIM_SCGC5_PORTC_MASK; //Enable Port C Clock Gate Control SIM_SCGC5

Основная функция

Код в основной функции показан ниже. Для проверки правильной конфигурации модуля GPIO используется рудиментарная задержка. Код оценивает, нажат ли переключатель 2, проверив соответствующий бит в GPIOx_PDIR. Если это так, светодиоды мигают в последовательности Красный, затем Зеленый, затем Синий. Если это не так, красные и синие светодиоды постоянно горит. В этом коде включены различные примеры включения и выключения выходов, которые используют регистры GPIOx_PDOR, GPIOx_PSOR, GPIOx_PCOR и GPIOx_PTOR.


int main(void){ uint32_t Delay = 0xFFFFF; //Delay for blink delay GPIO_init(); //Intialise the pins for GPIO GPIOB_PDOR |= (1UL << 22); //Turn Off Red LED GPIOB_PDOR |= (1UL << 21); //Turn Off Blue LED GPIOE_PDOR |= (1UL << 26); //Turn Off Green LED while(1) { if(!(GPIOC_PDIR &(1UL<< 6))) //Blink LEDs when switch is pressed { GPIOB_PDOR |= (1UL << 22); //Turn Off Red LED GPIOB_PDOR |= (1UL << 21); //Turn Off Blue LED GPIOE_PDOR |= (1UL << 26); //Turn Off Green LED Delay = 0xFFFFF; //Reset Delay GPIOB_PDOR &=~ (1UL << 22); //Turn On Red LED while(Delay != 0) //Wait Delay Value { Delay--; } Delay = 0xFFFFF; //Reset Delay GPIOB_PDOR |= (1UL << 22); //Turn Off Red LED while(Delay != 0) //Wait Delay Value { Delay--; } Delay = 0xFFFFF; //Reset Delay GPIOE_PCOR |= (1UL << 26); //Turn On Green LED while(Delay != 0) //Wait Delay Value { Delay--; } Delay = 0xFFFFF; //Reset Delay GPIOE_PSOR |= (1UL << 26); //Turn Off Green LED while(Delay != 0) //Wait Delay Value { Delay--; } Delay = 0xFFFFF; //Reset Delay GPIOB_PTOR |= (1UL << 21); //Turn On Blue LED while(Delay != 0) //Wait Delay Value { Delay--; } Delay = 0xFFFFF; //Reset Delay GPIOB_PTOR |= (1UL << 21); //Turn Off Blue LED while(Delay != 0) //Wait Delay Value { Delay--; } } else { GPIOB_PDOR &=~ (1UL << 22); //Turn On Red LED GPIOB_PDOR &=~ (1UL << 21); //Turn On Blue LED } } return 0; }

Скачать код

Создание проекта в KEIL MDK и мигание платы

Чтобы создать новый проект в KEIL MDK V5, перейдите в проект >> новый проект. При создании нового проекта необходимо выбрать целевое устройство. Перейдите к Freescale >> K60 series и выберите MK64FN1M0xxx12. Обратите внимание, что вам может потребоваться загрузить и установить соответствующий пакет со страницы программных пакетов MDK на веб-сайте KEIL.

Image
Image

Затем необходимо выбрать правильные драйверы для проекта. В разделе «CMSIS» выберите «CORE», а в разделе «Device» выберите «Startup».

Image
Image

По завершении этих шагов проект успешно открывается. Необходимо сохранить новый основной файл с кодом, описанным выше, и включить его в проект, дважды щелкнув в окне навигации по проекту внутри «Source Group 1.».

Как только это будет завершено, щелчок по значку «Скомпилировать все» на панели инструментов скомпилирует проект. Теперь пришло время загрузить программу на доску. Для этого откройте параметры целевого окна, щелкнув значок маленькой волшебной палочки на панели инструментов. Перейдите на вкладку «Отладка» и убедитесь, что в настройке использования выбран «J-LINK / J-Trace Cortex».

Image
Image

В дополнение к этому, нажмите кнопку «Настройка», чтобы увидеть больше параметров и выберите опцию «SW» для «Порт» на вкладке отладки.

Image
Image

Теперь программа, наконец, может быть загружена на плату разработки. Нажмите кнопку загрузки на панели инструментов сборки. Как только вы это сделаете, программа должна загрузиться на плату, а светодиоды и переключатели должны функционировать так, как ожидалось!