Переходим С Stm32 На Российский Микроконтроллер K1986Be92Qi. Настройка Проекта В Кейле И Мигание Светодиодом



Введение В предыдущей статье Я поделился своими личными впечатлениями от полученного комплекта и запрограммировал контроллер с помощью демо-проекта с помощью MT-LINK (также прилагается).

Теперь, когда мы подробно рассмотрели весь комплект, пришло время приступить к его освоению.

Для нетерпеливых - результат.



Создаем пустой проект в Keil 5 для K1986BE92QI.

Сначала вам нужно создать чистый проект. Можно, конечно, взять за основу демо-проект, но проект номер «2» так и не запустился, а в проекте «3» почему-то в меню выбора контроллера пустой лист. Это почему-то меня насторожило.

Проекта под номером «1» нет в принципе.

  • 1. Перейдите в Проект -> Новый проект uVision…

    Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

  • 2. Создайте папку для проекта (в пути не должно быть русских букв), пропишите название (тоже на английском) и сохраните.



    Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

  • 3. Выбираем наш контроллер.



    Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

  • 4. В появившемся окне просто нажмите «Ок».

    Честно говоря, мне еще ни разу не удавалось настроить проект через этот редактор так, чтобы все компилировалось с первого раза.

    Всегда что-то приходилось менять.

    Чаще всего оказывалось, что проще сделать это самому.



    Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

  • 5. В левом верхнем углу появится дерево проекта.

    Теперь нам нужно создать необходимые подкатегории.

    Для этого щелкните правой кнопкой мыши верхнюю папку и выберите «Управление элементами проекта…».



    Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

  • 6. В этом меню кликаем два раза левой кнопкой мыши по папке, имя которой хотим изменить и пишем то, что хотим.

    Опять же, лучше на английском.

    Для добавления новых папок используйте значок слева от «красного креста».

    Нам понадобится как минимум 4 папки:

    • 1. Для пользовательских данных (наших файлов).

    • 2. Для драйверов ЖК-дисплея (входят в комплект).

    • 3. За кодом для работы с Flash.
    • 4. Под SMSIS и т.п.

      SPL.



    Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

  • 7. После того, как вы переименовали все папки, нажмите «ОК».

    Каталог должен иметь примерный вид.

    Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

  • 8. Далее нам нужно получить все эти файлы.

    Мы возьмем их из работающего демонстрационного проекта.

    Кстати.

    Только сейчас заметил, что проект написан под кейл 2. Это меня немного удивило.

    Еще одним интересным фактом было то, что между демонстрационным проектом «2» и «3», судя по информации последней смены, прошло 3 месяца.

    Тем более, что рабочий проект ближе к нашему времени.

    Файлы мы возьмем оттуда (где взять этот демо-проект, написано в предыдущей обзорной статье).

    Вам необходимо скопировать выбранные файлы.

    Более того, main.c (как и любой ваш файл) лучше положить в отдельную папку.

    Для этого я создал папку User и поместил туда main.c (будем его менять и основываться на нем).



    Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

  • 9. Далее нам нужно добавить в проект файлы библиотеки.

    Добавление происходит следующим образом.

    Щелкните правой кнопкой мыши нужную папку в дереве проекта и выберите «Добавить существующие файлы в группу «Имя группы»…».



    Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

    В открывшемся окне необходимо выбрать тип файла «Все файлы (*.

    *)».

    Затем выберите 1 или выберите несколько файлов.



    Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

    Вам нужно добавить:

    • 1. В папку Пользователь -> «Пользователь -> main.c».

      Это наш самый важный файл.

      Немного изменив его, мы начнем писать в нем наш код.

    • 2. В папку Flash -> «flash -> MilFlash.c».

      Здесь хранится библиотека для работы с Flash-контроллерами.

    • 3. В папку LCD -> «mlt -> mlt_lcd.c».

      Библиотека для работы с ЖК-дисплеем, которая установлена на плате.

    • 4. В папку SMSIS_and_Drivers -> «Libraries\1986BE9x_StdPeriph_Driver\src -> все файлы .

      c».

      Здесь хранится SPL-аналог STM32. Проще говоря, это «обертки», позволяющие управлять его периферией (пинами, uart и т. д.), не вдаваясь в структуру контроллера.

    • 5. В папку SMSIS_and_Drivers -> «Libraries\CMSIS\CM3\DeviceSupport\1986BE9x\startup\arm -> start_1986be9x.s».

      Это «загрузочный» файл.

      Здесь перечислены все «векторы перехода».

      Другими словами, при любом прерывании (например, нажатии кнопки) контроллер возвращается к этой таблице и смотрит, куда идти, чтобы выполнить код дальше.

    • 6. В папку SMSIS_and_Drivers -> «Libraries\CMSIS\CM3\DeviceSupport\1986BE9x\startup\arm -> system_1986BE9x.c».

    В результате должно получиться вот такое дерево.



    Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

  • 10. Далее нам нужно немного почистить файл main.c. Для этого щелкните по нему левой кнопкой мыши в дереве каталогов.

    Удаляем все, кроме оболочки основной функции и файлов #include. Так должно остаться.



    Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

  • 11. Как вы могли заметить, возле верхнего #include файла стоит крестик.

    Кейл просто не видит этот файл.

    Для того, чтобы это исправить, мы должны сказать ему, где взять этот файл.

    Для этого нажмите Alt+F7. В открывшемся окне перейдите на вкладку C/C++.

    Немного отвлечения.

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

    Это позволит писать на более продвинутом стандарте языка C, чем это можно было сделать изначально.

    Затем нажмите на прямоугольник с «…» внутри.

    Справа есть строка с надписью «Включить пути».



    Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

  • 12. В открывшемся окне нажмите на иконку с прямоугольником слева от крестика.

    Это создаст пустую строку.

    В правом углу созданной строки нажмите на «…».

    Затем указываем нужную папку, в которой находятся интересующие нас файлы.

    После этого нажмите «ОК».

    Папка будет добавлена.

    Все эти пути необходимо добавить.

    Если вы заметили, все ссылки, кроме одной, относительные.

    То есть они происходят из корневого каталога.

    Но 1 начинается с «C:\».

    Это ссылка на каталог с самим проектом.

    Это также следует указать.



    Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

    Нажмите «ОК» и перейдите к файлу main.c.



Давайте скомпилируем простую программу.

Давайте вставим бесконечный цикл в основную функцию и увеличим счетчик на 1. Теперь наш файл должен выглядеть так.



Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

Не забывайте, что в конце каждого файла должна быть пустая строка.

Кейл рассматривает это как предупреждение, которое часто действует ему на нервы.

Конечно скомпилируется, но настораживает сам факт предупреждения.

На этом настройка завершена.

Мы можем перекомпилировать наш проект, нажав F7. Если все прошло хорошо, мы это увидим.



Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

Теперь осталось только настроить J-LINK в настройках и можно загружать.

Как его настроить подробно описано в предыдущей статье.

Кстати.

J-LINK видит чип без подключения дополнительного питания, а также позволяет отладить чип.

Таким образом, внешнее питание действительно не требуется.

При перемещении по строкам кода можно увидеть, как мерцает цвет экрана.



Настройка ножки контроллера для работы со светодиодом

Просмотрев оглавление документации, я не увидел ничего о тактировании периферии, поэтому сразу приступил к его настройке.

Вспомнив все ужасы SPL в плане настройки портов ввода-вывода в STM32, мысль об использовании библиотек, идущих в комплекте, отпала сразу.

И нехорошо сразу, не успев поиграться с регистрами, прятаться за библиотеками, которые, кстати, могут содержать ошибки.

Для начала давайте разберемся, какой порт нам нужно настроить.

В «Оценочной плате 1986BE92U, K1986BE92QI (MDR32F9Q2I)\Печатная плата 1986EvBrd_LQFP64» есть файл 1986EvBrd_64_Rev2.pdf, в котором показана схема платы.

На нем мы видим, что 2 светодиода подключены к контактам PC0 и PC1. Большой.

Вам не нужно беспокоиться о смещении.



Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

Мне очень понравилось, что в Миландре вся информация о линейке чипов собрана в одном документе.

В STM32 я сильно запутался в документах.

Давайте взглянем на схему портов ввода/вывода.

Чем-то отдаленно напоминает схему порта STM32. Не видя ничего, что бросалось бы в глаза, отправляемся настраивать регистры.



Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

Поскольку я не знал точно, как Миландер назвал свои порты, я зашел в библиотеку конфигурации портов.

Там я увидел следующее.



Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

Ну, немного выше.



Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

Убедившись, что адрес порта C совпадает с адресом в даташите, я создал новую функцию в файле main.c (Обязательно над основной функцией! В противном случае вам придется описывать прототипы функций в файле main.c).

.

h файл, и это пока лишняя проблема.

).

Начинаю писать PORTC-> (по привычке), зажимаю ctrl+пробел и вижу следующее.



Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

Это уже знакомая картина.

Я был очень счастлив.

Потом я начал смотреть, какие регистры нужно изменить.



Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

Нам нужен светодиод на порту «0», поэтому можно написать: ПОРТК-> RXTX |= 1; Таким образом мы переводим 0-й бит порта в 1. Таким образом, зажигаем диод на порту 0. Но перед его включением стоит его настроить.

Поэтому мы выполняем это действие в последнюю очередь.



Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

У нас есть выход, поэтому: ПОРТК-> ОЕ |= 1;

Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

Оставляем без изменений, так как по умолчанию везде нули.



Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

Но здесь нам нужен цифровой: ПОРТК-> АНАЛОГОВЫЙ |= 1;

Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

Нам не нужен лифт, так что давайте пропустим его.



Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

Ну, нам это тоже не нужно.



Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

И здесь нам нужно выбрать скорость.

По умолчанию все.

Выбираем медленный фронт. Для светодиода вполне достаточно: ПОРТК-> ПИТАНИЕ |= 1;

Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

Ну и последний регистр.

В общем вещь ранее мне неизвестная.

С этим еще предстоит разобраться.

Ну вот мы и закончили с настройкой.

НО, если мы сейчас зашьем этот код, то у нас ничего работать не будет. Я долго пытался понять в чем проблема, пока еще раз внимательно не прочитал про систему тактирования.

В разделе о портах нет ни слова о тактировании.

Но есть отдельная глава, в которой написано, как и что нужно тактировать.

Я зашёл туда и увидел следующее.



Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

Нам нужны порты.

Это вполне соответствует описанию «периферийных устройств».

Ищем этот реестр и вот он.



Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

Оставалось только понять, как этот регистр называется в кейле.

Поскольку в библиотеках я ничего толком не нашел, я пошел искать.

В результате оказалось, что он называется RST_CLK. Что ж, тогда нам просто нужно написать «1» в нужном блоке.

RST_CLK-> PER_CLOCK |=(1<<23); Я случайно наткнулся на «PER_CLOCK».

Когда я написал «RST_CLK», я нажал ctrl+space и после появления списка «p».

Тогда я выбрал подходящий вариант. Результатом стал следующий код.

Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

Код компилируется и мы получаем.



Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом



Русские комментарии в кейле 5

Теперь стоит оформить комментарии в коде, но на русском это сделать невозможно.

Появляются непонятные персонажи; для того, чтобы иметь возможность писать русские комментарии, вам нужно зайти в Edit -> Configuration.

Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

И измените там кодировку, как показано на рисунке.

Затем нажмите «ОК».



Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом



Мигающий светодиод
Теперь напишем код, который будет мигать светодиодом с помощью цикла.



Переходим с STM32 на российский микроконтроллер K1986BE92QI. Настройка проекта в кейле и мигание светодиодом

Давайте шить и радоваться! Скорость взята из опыта моргания светодиодом на STM32. Светодиод мигает примерно раз в секунду.

Все.

Кажется, я ничего не пропустил.

Советую немедленно заархивировать этот проект. Для дальнейшего использования в качестве заготовки.

Проект на гитхабе .

Позвольте мне напомнить вам еще раз.

В настройках проекта есть одна ссылка на каталог проекта относительно «C:\».

Так что проект будет работать только по тому же пути, что и в статье.

Вы можете легко изменить путь и свободно использовать его.

Спасибо сгувенка для исправлений.

Теги: #микроконтроллеры #arm #cortex-m3 #K1986BE92QI #mylandr #отладка #C++

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.