Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование встроенных приложений Keil uvision

.pdf
Скачиваний:
127
Добавлен:
06.01.2021
Размер:
4.29 Mб
Скачать

СПБГУАП группа 4736 / Индустрия 4.0

Рис. 20. Пример добавления текстового файла в новый проект

Рис. 21. Пример сохранения текстового файла

Завершающим этапом создания нового проекта будет добавление библиотеки МК (рис. 22). Для ее добавления необходимо нажать ПКМ на верхней строке текстового файла “main.c”, выбрать меню “insert #include file” и выбрать файл “MDR32Fx.h” (рис. 22).

49

СПБГУАП группа 4736 / Индустрия 4.0

Рис. 22. Пример сохранения текстового файла

На этом процесс создания нового проекта закончен и можно переходить к изучению принципов работы портов ввода/вывода подробно описанных в лабораторной работе № 2 (4.2.).

50

СПБГУАП группа 4736 / Индустрия 4.0

4.2. Работа с портами ввода/вывода

4.2.1. Введение

Цель работы – освоение принципов использования портов ввода/вывода МК на примере работы со светодиодами и кнопками.

Задачи:

1)Создать новый проект в среде KEIL MDK-ARM;

2)Написать рабочий программный код с комментариями;

3)Проверить работоспособность программного кода;

4)Выполнить индивидуальные задания;

5)Написать отчёт о проделанной работе.

Микроконтроллер (МК) K1986BE92QI, используемый на плате МилКиТЭС, имеет шесть портов ввода/вывода. Порты имеют разную разрядность: PORTA (далее PA и тд.) – 8 бит, PORTB – 10

бит, PORTC – 3 бита, PORTD – 8 бит, PORTD – 6 бит, PORTF – 7

бит (рис. 23) [5].

Каждый из шести портов МК имеет восемь регистров настройки режимов порта:

регистр RXTX (16 бит) – установка или считывание логического состояния вывода порта;

регистр OE (16 бит) – настройка направленности порта (ввод или вывод);

регистр FUNС (32 бита) – установка режима работы порта (переключение между функциональными модулями – цифровой порт или АЦП, ЦАП и тд.);

регистр ANALOG (16 бит) – управление аналоговым режимом работы порта;

регистр PULL (32 бита) – управление встроенными подтягивающими резисторами;

регистр PD (32 бита) – управление режимом работы выходного драйвера;

регистр PWR (32 бита) – управление режимом мощности передатчика (изменяет времена фронтов);

регистр GFEN (16 бит) – управление встроенным входным фильтром.

51

СПБГУАП группа 4736 / Индустрия 4.0

D A E B F

C

Рис. 23. Схема портов ввода/вывода МК К1986ВЕ92QI

4.2.2. Анализ принципиальной схемы

Для начала создадим программу для вывода статической информации на светодиодную линейку VD4 – VD11. Легендарный проект – Hello World!

Необходимо рассмотреть электрическую принципиальную схему включения этих светодиодов к МК К1986ВЕ92QI (рис. 24).

DIP-переключатель SA5 обеспечивает возможность переключения PORTA МК между светодиодами VD4 – VD11 и разъемом XS1. Это сделано для того, чтобы иметь возможность подключения внешних устройств к PORTA через разъем XS1. Для работы со светодиодами требуется перевести все переключатели XS1 в положение “ON”. В этом положении светодиоды VD4 – VD11 подключены к выводам PA0 – PA7

Из схемы видно, что светодиоды VD4 – VD11 подключены к PORTA МК анодами (положительными выводами) через резистор 1 кОм, а катодами (отрицательными выводами) подключены к общей точке (земле платы) (рис. 24).

52

СПБГУАП группа 4736 / Индустрия 4.0

Эта схема включения предполагает, что светодиоды будут гореть тогда, когда на выводах PORTA МК будет положительный логический уровень.

В случае МК К1986ВЕ92QI – это +3.3В. Анодные резисторы задают рабочий ток светодиодов, равный:

I = U/R = +3.3В/1000 Ом = 3.3 мА.

Рис. 24. Схема подключения светодиодов к МК К1986ВЕ92QI

53

СПБГУАП группа 4736 / Индустрия 4.0

4.2.3. Загрузка программы в микроконтроллер

Файл прошивки записывается в память с помощью встроенного в МК UART-загрузчика и программы UART-загрузчика для ПК “1986WSD.exe” (рис. 25) [7]. Для загрузки прошивки в МК его необходимо перевести в режим программирования по UARTинтерфейсу. Для этого следует выставить переключатели SA3 и SA5 в положение “1” (включенный светодиод), а переключатель SA4 в положение “0” (режим MODE “101”) и произвести сброс питания.

После включения питания с новой конфигурацией переключателей МК готов к прошивке через UART интерфейс. Для загрузки прошивки необходимо указать путь к hex файлу прошивки в программе 1986WSD, убедиться в том, что указанный COM-порт совпадает с тем, что был присвоен плате МилКиТЭС при подключении к ПК и нажать кнопку “Start+Run”. После успешной загрузки прошивки в МК сразу же начнется ее исполнение (рис. 25). Для повторной загрузки прошивки требуется выключить и снова включить питание платы путем выключения и включения кнопки SB1.

Рис. 25. Интерфейс программы UART-загрузчика для МК К1986ВЕ92QI

54

СПБГУАП группа 4736 / Индустрия 4.0

Для выхода из режима прошивки МК через UART необходимо выставить переключатели SA3, SA4 и SA5 в положение “000” (режим MODE “000”, светодиоды выключены) и перезапустить питание.

4.2.4. Создание программы для вывода статической информации

Создайте новый проект, добавьте все необходимые файлы и сконфигурируйте его согласно описанию в лабораторной работе № 1. На этом этапе требуется подключить библиотеку МК, создать тело функции main и убедиться, что нет ошибок при компиляции (рис. 26). Правильным способом создания ПО является поэтапное проектирование программы, внимательность и рассудительность. Частая компиляция кода покажет ошибки.

Рис. 26. Окно с шаблоном нового проекта в среде KEIL MDK-ARM

Для работы порта в режиме цифрового ввода/вывода требуется сконфигурировать определенным образом регистры OE, FUNС, ANALOG и PWR. В регистр RXTX будет происходить запись требуемых и считывание текущий логических состояний порта. Перед работой с любым портом МК требуется включить его тактирование в регистре MDR_RST_CLK->PER_CLOCK.

MDR_RST_CLK->PER_CLOCK – регистр управления тактовой частотой периферийных блоков. Биты разрешают тактирование периферийных блоков (0 – запрещено, 1 – разрешено). Порту PORTA соответствует бит 21.

55

СПБГУАП группа 4736 / Индустрия 4.0

MDR_PORTC->OE – направление потока данных порта (0 – ввод, 1 – вывод). MDR_PORTC->ANALOG – режим работы порта (0 – аналоговый, 1 – цифровой). Регистр MDR_PORTC->PWR осуществляет управление мощностью порта вывода: 00 – порт отключен; 01 – медленный фронт (100 нс); 10 – быстрый фронт (20 нс); 11

– короткий фронт (10 нс).

Основываясь на этом, напишем программный код, включающий светодиоды VD4 – VD11 подключенные к PORTA (листинг 1).

/*------------------------------------------------------------

*/

#include "MDR32Fx.h" // подключение библиотеки МК

/*------------------------------------------------------------

*/

int main()

 

{

 

MDR_RST_CLK->PER_CLOCK = 1 << 21; // вкл. тактирование PORTA

MDR_PORTA->OE

= 0xffff; // настройка PORTA на выход

MDR_PORTA->FUNC

= 0x0000; // функция - порт, основная функция

MDR_PORTA->PWR

= 0xffff; // максимально быстрый фронт

MDR_PORTA->ANALOG = 0xffff; // режим работы - цифровой ввод/вывод

MDR_PORTA->RXTX

= 0x00ff; // запись числа 255 для включения

 

// всех восьми светодиодов

}

 

/*------------------------------------------------------------

*/

Листинг 1. Программа для вывода статической информации на светодиодные индикаторы

Из рис. 27 видно, что вся линейка светодиодов включена.

56

СПБГУАП группа 4736 / Индустрия 4.0

Рис. 27. Результат исполнения программы из листинга 1 на плате МилКиТЭС

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

57

СПБГУАП группа 4736 / Индустрия 4.0

4.2.5. Создание программы для вывода динамической информации

Теперь рассмотрим вариант вывода динамической информации. Для этого необходимо подключить к проекту библиотеку задержек milkites_delay.h из дистрибутива к курсу. Для начала создадим в корне проекта новую папку с названием “inc” и поместим туда файл библиотеки задержек. Для добавления библиотеки необходимо щелкнуть правой кнопкой мыши на папке содержащей «main.c» файл проекта, выбрать пункт меню “Add Existing to Group” (рис. 28) и добавить файл библиотеки.

Рис. 28. Выбор меню для добавления файла новой библиотеки

После этого необходимо добавить в настройки проекта путь к папке с новой библиотекой. Для этого следует нажать правую кнопку мыши на папке “source” в поле дерева проекта и выбрать пункт меню “Options for Tagret …” (рис. 29).

58