что такое keil uvision

Переходим с STM32 на российский микроконтроллер К1986ВЕ92QI. Настройка проекта в keil и мигание светодиодом

Вступление

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

Создаем пустой проект в Keil 5 для К1986ВЕ92QI.

В открывшемся окне нужно выбрать тип файлов «All files (*.*)». После чего выбрать 1 или выделить несколько файлов.

Жмем «ОК» и переходим в файл main.c.

Компилируем простейшую программу.

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

Не забываем о том, что в конце каждого файла должна быть пустая строка. Keil считает это как предупреждение, которое частенько действует на нервы. Конечно компилироваться будет, но сам факт предупреждения – настораживает.
На этом настройка закончена. Мы можем перекомпилировать наш проект нажав F7. Если все прошло хорошо, ты мы увидим это.

Теперь осталось лишь в настройках настроить J-LINK и можно заливать. О том, как его настраивать – было подробно рассказано в предыдущей статье.

Кстати. J-LINK видит чип и без подключения дополнительного питания, а так же позволяет отлаживать чип. Так что внешнее питание не особо нужно. При переходах по строкам кода видно, как мелькает подцветка экрана.

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

Пробежавшись по оглавлению документации, я не увидел ничего про тактирование переферии, поэтому сразу же принялся настраивать ее. Вспоминая обо всех ужасах SPL в плане настройки портов ввода-вывода в STM32, мысль об использовании библиотек, шедших в комплекте, отпала сразу же. Да и не хорошо это, вот так сразу, не успев поиграться с регистрами, прятаться за библиотеками, в которых, кстати, не исключены ошибки.

Читайте также:  что делать когда ребенок ведет себя агрессивно

Для начала поймем, какой именно порт нам нужно настроить. В «Отладочная плата 1986ВЕ92У, К1986ВЕ92QI (MDR32F9Q2I)\Печатная плата 1986EvBrd_LQFP64» есть файл 1986EvBrd_64_Rev2.pdf, в котором приведена схема платы. На ней мы можем увидеть, что 2 светодиода подключены к пинам PC0 и PC1. Отлично. Не придется мучиться со смещением.

Очень понравилось, что у Миландра вся информация о линейке чипов в одном документе. В STM32 очень путался в документах… Взглянем на схему порта ввода-вывода. Чем-то отдаленно напоминает схему порта у STM32. Не увидев ничего, что бы бросилось в глаза, идем настраивать регистры.

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

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

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

Нам нужен светодиод на порту «0», так что можем записать: PORTC->RXTX |= 1;

Этим мы переводим 0-й бит порта в 1. Тем самым зажигая диод на порту 0. Но перед его включением стоит его настроить…
Так что данное действие выполняем в последнюю очередь, а перед.

У нас выход, так что: PORTC->OE |= 1;

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

А вот тут нам нужен цифровой: PORTC->ANALOG |= 1;

Подтяжка нам не нужна, так что, пропускаем.

Ну и это нам тоже не надо…

А вот тут нам нужно выбрать скорость. По умолчанию – все. Выбираем медленный фронт. Для светодиода его вполне хватит: PORTC->PWR |= 1;

Ну и последний регистр. Вообще неведомая для меня ранее вещь. С этим еще предстоит разобраться.

Читайте также:  что такое теудат зеут в израиле

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

Нам нужны порты. Это вполне подходит под описание «периферийные блоки». Ищем этот регистр и вот.

Оставалось только понять, как в keil называется этот регистр. Так как в библиотеках толком ничего не нашел, то пошел подбором. В итоге выяснилось, что он именуется RST_CLK. Ну а дальше нам нужно лишь записать «1» в нужный блок.

RST_CLK->PER_CLOCK |=(1 Configuration.

И там сменить кодировку, как показано на рисунке. После чего нажать «ОК».

Мигаем светодиодом

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

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

Все. Вроде бы ничего не упустил. Советую этот проект сразу же заархивировать. Чтобы потом использовать как заготовку.

Еще раз напоминаю. В настройках проекта есть одна ссылка к директории проекта относительно «C:\». Так что проект будет работать лишь по тому же пути, что и в статье. Вы легко можете сменить путь и свободно пользоваться.
Спасибо sguwenka за исправления.

Источник

Строительный портал