№2 / 2015 / статья 3

Практическое применение TIVA. Учебный курс. Часть II

Вячеслав Прокопий (КОМПЭЛ)

Данная статья является продолжением обучающего курса по применению микроконтроллеров TIVA производства компании Texas Instruments. В ней мы рассмотрим базовые узлы микроконтроллера TM4C123GH6PMI, необходимые для реализации простого приложения, а также использование для этой цели полностью бесплатной программной библиотеки TivaWare и среды разработки Code Composer Studio. Выполнение работы будет проходить с использованием отладочной платы LaunchPad EK-TM4C123GXL.

Классической задачей для старта изучения новой архитектуры микроконтроллера (МК) является задача переключения состояния вывода GPIO. Данная задача широко известна как «мигание светодиодом». Несмотря на простоту задачи, для ее реализации необходимо понимать, как выполняются операции настройки базовых модулей, необходимых для работы приложений любого уровня сложности. К таким модулям относятся система тактирования и управление портом ввода-вывода общего назначения (GPIO). Для работы с любым микроконтроллером необходимо знать состав отладочной платформы или целевой платы устройства, схему инициализации ядра с тактирующим сигналом, правила настройки портов ввода-вывода. Также необходимо иметь представление о программном обеспечении, предназначенном для реализации проектов для целевого контроллера.

Code Composer

В этой статье мы рассмотрим вопросы установки и основные моменты работы в среде разработки Code Composer Studio. Данная интегрированная среда предназначена для написания программ под все семейства микроконтроллеров и процессоров компании Texas Instruments. Сначала мы создадим проект с использованием библиотеки TivaWare, а затем проверим его с эмуляцией и пошаговым выполнением на отладочной плате. В одной из следующих статей мы проделаем это же для среды разработки IAR Embedded Workbench.

Сам установщик Code Composer Studio можно скачать с оффициального сайта ti.com. Для этого необходимо зарегистрироваться на сайте и ответить на несколько вопросов касательно целей применения данного ПО.

Если вы по какой-то причине еще не зарегистрированы на этом сайте – то можете взять установщик здесь. По данной ссылке вы можете скачать версию для 32-разрядной платформы WIndows. Если Вам необходима версия для персонального компьютера (ПК) под управлением Linux, тогда ищите ее здесь.

Для начала установки необходимо запустить файл ccs_setup_6.0.1.00040.exe. Далее следуйте инструкциям установщика до полной установки пакета. Стоит отметить, что во избежание возможных проблем в дальнейшей работе необходимо выполнить следующее:

  • на время установки стоит отключить антивирусное ПО;
  • установку выполнить в каталог, в названии которого отсутствуют символы кириллицы и пробелы, желательно в корневой каталог, например, С:\TI;
  • в разделе установщика Processor Support отметить пункт 32-bit ARM MCUs или поставить галочку Select All (рисунок 1).
Рис. 1. Установка Code Composer Studio

Рис. 1. Установка Code Composer Studio

TivaWare

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

Важной особенностью TivaWare является то, что API-функции, которые предоставляются в виде программной библиотеки, в процессе производства дополнительно записываются в отдельное ПЗУ микроконтроллера. Данное обстоятельство позволяет разработчику сократить размер программы для собственного приложения, а соответственно – и требуемый размер встроенной Flash-памяти за счет вызова API-функций не из Flash, а из дополнительного ПЗУ.

Библиотека TivaWare доступна для скачивания на сайте ti.com и по ссылке. Рекомендации по установке TivaWare для корректной работы аналогичны рекомендациям по установке Code Composer Studio. В качестве каталога для установки желательно выбрать C:\TI\TivaWare_C_Series-2.1.0.12573.

Структура TivaWare

Рис. 2. Структура TivaWare

Рис. 2. Структура TivaWare

После установки в главном каталоге библиотеки доступно несколько разделов (рисунок 2)

На начальном этапе наиболее интересными для нас разделами являются docs, driverlib и examples.

Каталог docs содержит все документы, описывающие работу с каждым из модулей библиотеки: драйвера периферии, Wi-Fi-модуль СС3000, NFC-модуль TRF7970ATB, работа с графической библиотекой, описание стартовых проектов, математическая библиотека IQmath, USB-библиотека и многое другое. В первой работе нам понадобится документ SW-TM4C-DRL-UG.pdf, описывающий работу с драйверами периферийных устройств.

Каталог driverlib содержит исходные коды и header-файлы драйверов для каждого периферийного модуля контроллера, а также образ библиотеки для подключения в такие среды разработки как Code Composer Studio, IAR Embedded Workbench, KEIL и GCC.

Каталог examples содержит примеры использования библиотеки для всех возможных отладочных устройств на базе контроллеров TM4C129 и TM4C123. Все примеры разбиты на две категории:

  • примеры проектов для каждой из отладочных плат (содержатся в папке boards);
  • исходные коды для использования каждого из периферийных модулей независимо от отладочной платы.

В папке boards можно найти готовые проекты, адаптированные под каждую из поддерживаемых сред разработки.

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

Устройство TM4C123GH6PM

Рассмотрим подробнее внутреннюю структуру микроконтроллера.

Источники тактирования

Для тактирования CPU и периферийных модулей в микроконтроллерах серии TIVA предусмотрено четыре основных источника тактового сигнала.

  • Встроенный генератор 16 МГц с точностью ±3%, не требующий внешних элементов. Используется для реализации недорогих систем, требующих достаточно точного тактирующего сигнала.
  • Главный генератор. Для работы используются внешние элементы – резонатор или генератор с несимметричным выходом. Точность данного генератора полностью определяется внешними времязадающими цепями. Данный источник тактирования используется для реализации приложений с высокоточным тактированием, и в этом случае цена всего изделия зависит от точности внешних компонентов.
  • Встроенный генератор 30 кГц. Точность ±50%, используется для тактирования в режимах сна и энергосбережения.
  • Часовой генератор. Требует наличия внешнего резонатора на 32,768 Гц и формирует тактирующий сигнал для реализации часов реального времени.

Тактирующий сигнал для CPU может быть получен из любого из четырех основных источников, а также может тактироваться еще двумя дополнительными источниками:

  1. модулем ФАПЧ (PLL), работающим на частоте 400 МГц с делителями для получения необходимой частоты. Тактируется только главным генератором и встроенным генератором на 16 МГц;
  2. сигналом от встроенного генератора 16 МГц с делителем на 4, равным 4 МГц. Точность данного источника аналогична точности исходного генератора и составляет ±3%.

Благодаря гибкой подсистеме формирования и распределения тактового сигнала, целевая система может быть оптимизирована по потреблению, по точности или по стоимости решения. Схема системы тактирования контроллера TM4C123GH6PM приведена на рисунке 3.

Рис. 3. Дерево системы тактирования контроллера TM4C123GH6PM

Рис. 3. Дерево системы тактирования контроллера TM4C123GH6PM

GPIO

Всего в микроконтроллерах семейства TIVA может быть до 140 выводов GPIO в BGA-корпусе и до 105 выводов в корпусе LQFP. Все выводы GPIO объединены в группы по 8 или менее. Каждая из таких групп образует порт GPIO. Любой из выводов GPIO может:

  • инициировать прерывание по смене сигнала (фронт, спад или оба варианта) или по уровню;
  • инициировать преобразование АЦП или передачу DMA;
  • переключаться с частотой тактирования CPU (выводы на шине High-Performance Bus) и с вдвое меньшей частотой для стандартных выводов;
  • совместим с уровнем 5 В при работе на вход;
  • в режиме выхода настраивается на определенный выходной ток (2/4/8 мА) с возможностью управления скоростью нарастания напряжения;
  • может быть установлен в любое из трех состояний: pull-up, pull-down и open-drain;
  • сохраняет свое состояние в режимах сна.

Поскольку один вывод может быть подключен к нескольким внутренним узлам контроллера для выполнения альтернативных функций, настройка большого количества выводов может быть весьма долгим и трудоемким процессом. Утилита PinMux предоставляет разработчику графический интерфейс быстрой и удобной настройки выводов GPIO. На выходе данная утилита формирует header-файл и файл с исходным кодом на языке Си для подключения в проект под конкретную среду разработки приложений. Основное окно утилиты PinMux представлено на рисунке 4.

Рис. 4. Окно утилиты PinMux

Рис. 4. Окно утилиты PinMux

Скачать данное приложение можно либо с сайта Texas Instruments, либо из альтернативного источника.

Маскирование адресов GPIO

В контроллерах TIVA используется необычная техника программирования выводов GPIO, позволяющая сократить время выполнения команд. Каждый порт GPIO имеет базовый адрес. Например, у порта D – 0x4005.8000. Состояние выводов можно установить, записав определенное 8-битное значение непосредственно по этому адресу, как это было реализовано в большинстве предыдущих микроконтроллеров. Если необходимо изменить какой-то конкретный бит в этом порту, то операция обычно выполняется в несколько этапов: чтение содержимого порта, изменение конкретного бита, запись значения обратно в порт. Данная операция называется «чтение-изменение-запись» (Read-Modify-Write). Важно, что если в процессе выполнения процедуры «чтение-модификация-запись» возникло прерывание, которое изменяет состояние бита порта GPIO, то по выходу из прерывания код данной операции может записать ошибочное значение в этот бит.

В микроконтроллерах семейства TIVA у каждого порта GPIO есть 256 адресов. Данное адресное пространство содержит маски, которые используются для записи любой возможной комбинации из восьми бит в этот порт.

API-команда записи значения в порт GPIOPinWrite использует битовую маску вместе с базовым адресом порта GPIO для формирования адреса, который позволяет записать данные только в определенные биты порта GPIO. Данная операция не является приемом программного маскирования, а полностью выполняется аппаратной частью модуля GPIO.

Блокирование GPIO

Шесть выводов GPIO TM4C123GH6PM совмещены с выполнением критических функций и поэтому защищены от случайного программирования во избежание критических ошибок. Сюда входят:

  • четыре вывода эмуляции JTAG/SWD: PC3, PC2, PC1, PC0;
  • два вывода немаскируемых прерываний NMI: PD7, PF0.

Регистры управления портов, в которые входят данные выводы, по умолчанию заблокированы. Для изменения значений регистров управления, таких как разрешение GPIO, выбор альтернативного режима работы, включение встроенной подтяжки, сначала необходимо разблокировать управление через регистр GPIOLOCK. Снятие блокировки вывода PIN0 порта PORTF с прямой записью значений в регистры выглядит следующим образом:

HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;

HWREG(GPIO_PORTF_BASE + GPIO_O_CR) |= 0x01;

HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = 0;

Любое чтение регистра GPIOLOCK будет возвращать его в состояние блокировки.

Необходимо отметить, что использовать выводы, предназначенные для JTAG в качестве линий GPIO, необходимо с осторожностью. Если программное обеспечение, загруженное в контроллер, установит режим выводов в GPIO раньше, чем отладчик переведет ядро в состояние HALT, то доступ отладчика к контроллеру будет блокирован. Снять такую блокировку можно, предусмотрев в программе восстановление режима JTAG для выводов по дополнительному прерыванию или используя утилиту LMFLASHPROGRAMMER.

Создание проекта

При первом запуске Code Composer просит указать директорию, в которой будут храниться все созданные или добавленные проекты (рисунок 5). Обычно указывается папка C:\TI\workspace_v6_0. Чтобы при каждом запуске Code Composer не указывать эту директорию заново, целесообразно установить галочку “Use this as a default…”. В дальнейшем при необходимости данный путь можно изменить, вызвав в главном меню программы пункт “File – Switch Workspace – Other”.

Рис. 5. Первый запуск Code Compose Studio

Рис. 5. Первый запуск Code Compose Studio

Открытие проекта в CCS. Структура проекта.

Можно создать проект с нуля, но данный способ не так прост в силу некоторых начальных настроек проекта, и требует определенного опыта в среде Code Composer Studio. В этой работе мы используем проект-заготовку, который идет в комплекте с TivaWare.

Для этого в главном меню выбираем пункт “Project – Import CCS Projects…” (рисунок 6).

Рис. 6. Импорт проекта в Code Composer Studio

Рис. 6. Импорт проекта в Code Composer Studio

Нажав на клавишу Browse, необходимо указать расположение стартового проекта. В нашем случае, если рекомендации по установке ПО были выполнены, данный проект должен находиться в директории “C:\TI\TivaWare_C_Series-2.1.0.12573\examples\project\ccs”.

Нажимаем на кнопку «ОК».

Для добавления проекта жмем на клавишу “Fininsh”.

После открытия проекта в окне Project Explorer отображается его структура. В проект входят:

  • директория Includes подключаемые файлы и папки. Содержит в себе как стандартные описания и определения для работы с контроллером, так и уже подключенную библиотеку TivaWare;
  • директория Debug на данный момент пуста. В эту директорию складываются файлы, получаемые в результате компиляции проекта;
  • файл project_ccs.cmd – файл определений различных областей памяти контроллера и указаний их размеров;
  • project.c – файл с исходным кодом программы на языке С;
  • startup_css.c – файл, содержащий код начального запуска контроллера (вектор перехода после сброса) и таблицу векторов прерываний;
  • macros.ini_initial – файл с определениями переменных окружения (подключаемых папок), используется средой разработки;
  • target_config.ccxml – файл настройки подключаемого контроллера. В данном файле указывается модель контроллера, для которого разрабатывается приложение, и интерфейс подключения этого контроллера к ПК.

Описание задачи

Реализуем мигание светодиода с частотой 1 Гц. Для этого будем использовать вывод GPIO, управляющий зеленым светодиодом.

Из документации на Launchpad EK-TM4C123GXL определяем, что зеленый светодиод подключен анодом к питанию VBUS, а катодом – к коллектору транзистора Q3. Ключ на транзисторе Q3 управляется выводом GPIO PF3 (рисунок 7).

Рис. 7. Подключение вывода PF3 к светодиоду D1

Рис. 7. Подключение вывода PF3 к светодиоду D1

Следовательно, для включения светодиода на вывод PF3 необходимо подать логическую единицу, и логический ноль – для отключения светодиода. Изобразим алгоритм работы программы в виде блок-схемы (рисунок 8).

Использование паузы в 0,5 с – это не самый лучший вариант реализации мигания светодиода. Гораздо эффективнее использовать модуль таймера с формированием прерывания, чтобы освободить основное ядро для выполнения других, более приоритетных задач. Но, так как целью данной работы является изучение основ работы с микроконтроллерами семейства TIVA и не стоит задачи написания оптимального кода, то данный вариант нас вполне устроит.

Реализуем каждый из шагов алгоритма программы c использованием API-функций библиотеки TivaWare. Описание API-функций для работы с периферией содержится в файле SW-TM4C-DRL-UG-2.1.0.12573.pdf из каталога docs.

  • Установка тактирующего сигнала.

Зададимся частотой тактирующего сигнала, равной 80 МГц. Для формирования тактирующего сигнала без использования внешних компонентов выберем встроенный генератор на 16 МГц. Для получения 80 МГц из 16 используем петлю ФАПЧ (400 МГц) с коэффициентом деления 5. Для установки тактирующего сигнала в семействе TM4C123 используется API-команда SysCtlClockSet, описание которой можно найти в разделе System Control документа SW-TM4C-DRL-UG-2.1.0.12573.pdf. Кроме того, в документации на микроконтроллер TM4C123GH6PM указано, что для получения тактовой частоты 80 МГц аргумент функции SysCtlClockSet, устанавливающий делитель системной частоты, должен быть равен SYSCTL_SYSDIV_2_5 (таблица 1).

Таблица 1. Зависимость тактовой частоты от аргумента SYSCTL_SYSDIV

SYSDIV2 SYSDIV2LSB Делитель Частота (BYPASS2 = 0) ПараметрTivaWare
0x00 зарезервировано /2 зарезервировано
0x01 0 /3 зарезервировано
1 /4 зарезервировано
0x02 0 /5 80 МГц SYSCTL_SYSDIV_2_5
1 /6 66,6 МГц SYSCTL_SYSDIV_3
0x03 0 /7 зарезервировано
1 /8 50 МГц SYSCTL_SYSDIV_4
0x04 0 /9 44,44 МГц SYSCTL_SYSDIV_4_5
1 /10 40 МГц SYSCTL_SYSDIV_5
0x3F 0 /127 3,15 МГц SYSCTL_SYSDIV_63_5
1 /128 3,125 МГц SYSCTL_SYSDIV_64

С учетом требований результирующей тактовой частоты команда настройки будет иметь следующий вид:

SysCtlClockSet (SYSCTL_OSC_INT | SYSCTL_USE_PLL | SYSCTL_SYSDIV_2_5)

Здесь, в аргументе функции SysCtlClockSet через символ логического «ИЛИ» мы задали несколько параметров: использование внутреннего генератора на 16 МГц (SYSCTL_OSC_INT), использование петли ФАПЧ с выходной частотой 400 МГц (SYSCTL_USE_PLL) и использование делителя системного такта на 5 (SYSCTL_SYSDIV_2_5).

  • Настройка вывода GPIO PF3.

Для работы с портами GPIO в TivaWare предусмотрено 48 API-функций. Все команды разделены на три группы: настройка выводов, управление прерываниями от GPIO и работа со значениями выводов. Описание всех функций содержится в разделе GPIO документа SW-TM4C-DRL-UG-2.1.0.12573.pdf.

Перед началом работы с любым периферийным модулем его необходимо разрешить. Если начать настраивать модуль без предварительного разрешения, то возникнет прерывание типа Fault. Данным образом осуществляется защита от несанкционированного доступа. Если при выполнении программы возникла ошибка, то запись в регистры управления неразрешенных модулей выполняться не будет.

Рис. 8. Алгоритм управления светодиодом

Рис. 8. Алгоритм управления светодиодом

Данное правило справедливо и для модуля GPIO, поэтому перед его настройкой мы должны разрешить его использование. Для этого используется команда SysCtlPeripheralEnable, параметром которой задается необходимый периферийный модуль. В нашем случае это порт F: SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF)

Для управления светодиодом пин PF3 должен быть установлен в режим работы на выход командой GPIOPinTypeOutput(uint32_t ui32Port, uint8_t ui8Pins). Параметром uint32_t ui32Port является базовый адрес порта, а параметром uint8_t ui8Pins – необходимые выводы этого порта в битовом представлении. В нашем случае результат будет следующим: GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_3)

Реальные значения определений SYSCTL_PERIPH_GPIOF, GPIO_PORTF_BASE и GPIO_PIN_3 содержатся в файлах sysctl.h, hw_memmap.h и gpio.h соответственно. Данные файлы можно просмотреть в Code Composer Studio в окне Project Explorer. Находятся они в дереве проекта по пути: Includes\C:\TI\TivaWare_C_Series-2.1.0.12573\driverlib и Includes\C:\TI\TivaWare_C_Series-2.1.0.12573\inc.

  • Установка в «1» и сброс в «0» вывода PF3.

Для управления состоянием вывода GPIO предназначена команда GPIOPinWrite(uint32_t ui32Port, uint8_t ui8Pins, uint8_t ui8Val), где ui32Port – это базовый адрес порта, uint8_t ui8Pins – выводы порта, в которые мы хотим записать значение, uint8_t ui8Val – записываемое во весь порт значение. При этом значение ui8Val записывается в порт целиком, а изменяются значения только тех выводов, которые указаны в параметре ui8Pins.

Следовательно, для установки в единицу вывода PF3 используем команду GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_3, GPIO_PIN_3), а для сброса его в ноль – GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_3, 0).

  • Пауза 0,5 с.

Для реализации временной задержки воспользуемся функцией SysCtlDelay(uint32_t ui32Count). Данная команда реализует задержку в три системных такта. Параметр ui32Count определяет количество повторений данной задержки.

Так как частота тактирующего сигнала равна 80 МГц, то длительность одного такта составляет 12,5 нс. Для реализации задержки в 0,5 с необходимое значение равно: ui32Count = 0,5/(3*12,5*10-9) ≈ 13333333

Полная команда задержки в 0,5 с будет выглядеть так: SysCtlDelay(13333333)

Стоит отметить, что в документации на библиотеку уточняется: данная функция не рекомендуется для отсчета точных временных параметров, и для приложений, требующих точной временной выдержки, ее лучше не использовать. Однако для нашей задачи функция SysCtlDelay вполне подойдет.

Полученный текст программы необходимо вставить в файл project.c в рамки главной функции main (void) вместо присутствующего там текста программы. Оригинальный текст можно не удалять, а закомментировать его. Для этого используется пара символьных комбинаций: /* для начала комментирования и */ для закрытия комментирования. В итоге функция main примет следующий вид (рисунок 9):

Рис. 9. Описание функции main()

Рис. 9. Описание функции main()

Стоит отметить, что полученный нами код практически идентичен оригинальному, за исключением одного момента. Все команды в оригинальной программе начинаются с “ROM_”. Команды с таким началом выполняются из ПЗУ контроллера, что позволяет сократить размер самой программы, и, соответственно, необходимый размер Flash-памяти.

Программирование и отладка

При первом подключении отладочной платы LaunchPad EK-TM4C123GXL к компьютеру в системе появятся два новых устройства с одинаковым именем In-Circuit Debug Interface.

В случае проблем с автоматической установкой драйверов необходимо установить драйвера из папки библиотеки TivaWare “…\TivaWare_C_Series-2.1.0.12573\windows_drivers” вручную. После установки драйверов в системе должны появиться два устройства в разделе “Stellaris In-Circuit Debug Interface: Stellaris ICDI DFU Device” и “Stellaris ICDI JTAG/SWD Interface” (рисунок 10).

ris_11_opt ris_121_opt
Рис. 10. Установка драйверов LaunchPad

После того, как LaunchPad определился операционной системой, необходимо указать его в Code Composer Studio в качестве целевого устройства в настройках проекта. Для этого необходимо вызвать контекстное меню проекта, кликнув на его названии правой кнопкой мыши, и выбрать пункт Properties (Свойства) (рисунок 11).

Рис. 11. Вызов свойств проекта в Code Composer Studio

Рис. 11. Вызов свойств проекта в Code Composer Studio

Затем в настройках проекта во вкладке General установить тип контроллера как TM4C123GH6PM в строке “Variant” (рисунок 12). В графе “Connection” по умолчанию установлен тип соединения с контроллером через “Stellaris In-Circuit Debug Interface”. Это – именно тот отладочный интерфейс, драйвера для которого мы устанавливали на прошлом шаге.

Рис. 12. Установка целевого устройства в Code Composer Studio

Рис. 12. Установка целевого устройства в Code Composer Studio

В случае необходимости выбрать другой тип отладочного интерфейса для работы с контроллером на плате конечного устройства или использования другого отладчика, нужно установить галочку на пункте “Manage the project’s target-configuration automatically” и выбрать необходимый интерфейс в графе “Connection”. Для сохранения изменений нажать на кнопку “OK”.

После указания целевого контроллера в проекте появились файлы tm4c123gh6pm_startup_ccs.c и tm4c123gh6pm.cmd, которые по своей структуре аналогичны файлам startup_css.c и project_ccs.cmd соответственно. Так как в этих файлах совпадают названия определений, то при компиляции это вызовет ошибку. Необходимо файлы startup_css.c и project_ccs.cm либо удалить из проекта, либо исключить из компиляции. Исключение из компиляции можно выполнить через контекстное меню файла, выбрав пункт Exclude from build (рисунок 13).

Перед началом работы с EK-TM4C123GXL необходимо убедиться в правильном положении селектора питания. Он должен быть в положении DEBUG (рисунок 14).

Рис. 13. Исключение файла startup_css.c из компиляции

Рис. 13. Исключение файла startup_css.c
из компиляции

Рис. 14. Положение переключателя PWR SELECT для питания LaunchPad от ПК

Рис. 14. Положение переключателя PWR SELECT для питания LaunchPad от ПК

Для компиляции приложения и загрузки его в память контроллера используем клавишу “Debug” на главной панели Code Composer Studio (рисунок 15).

Рис. 15. Клавиша “Debug”

Рис. 15. Клавиша “Debug”

Рис. 16. Переключение режима работы Code Composer Studio

Рис. 16. Переключение режима работы Code Composer Studio

После компиляции и загрузки программы в контроллер Code Composer Studio переходит в режим отладки, о чем свидетельствует нажатая клавиша в правом верхнем углу программы (рисунок 16).

В режиме Debug пользователю представлены окна, которые наиболее применимы в режиме отладки. Переключение отображения CCS Edit и CCS Debug можно выполнять вручную в любой момент с помощью клавиш, приведенных на рисунке 16. Данные режимы являются ничем иным как двумя наборами окон инструментов, которые наиболее применимы в режимах написания кода (CCS Edit) или отладки (CCS Debug).

Сразу после загрузки программы в контроллер выполнение программы останавливается на первой команде функции main(), о чем свидетельствует стрелка синего цвета (рисунок 17).

Рис. 17. Указатель положения программного счетчика при отладке

Рис. 17. Указатель положения программного счетчика при отладке

Рис. 18. Клавиши управления процессом отладки

Рис. 18. Клавиши управления процессом отладки

Для запуска программы используется клавиша “Resume” на главной панели, справа от которой также находятся клавиши остановки отладки и пошагового выполнения кода, а слева – команды пошагового выполнения ассемблерных команд откомпилированного кода (рисунок 18).

Окно с представлением дизассемблированного кода можно открыть с главной панели программы через меню Window – Show View – Disassembly (рисунок 19).

Рис. 19. Окно дизассемблера

Рис. 19. Окно дизассемблера

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

После запуска программы на выполнение светодиод начинает мигать зеленым цветом с частотой ~1 Гц.

 

Заключение

В процессе выполнения работы мы познакомились с двумя базовыми модулями контроллера TM4C123GH6PM, а также с необходимым программным и аппаратным обеспечением для старта работы. Написанная программа использует далеко не все возможности системы тактирования и выводов GPIO. В качестве задания для более глубокого изучения возможностей данных периферийных модулей, читателю предлагается реализовать приложение с использованием клавиш SW1 и SW2 для управления дополнительными красным и синим светодиодами. Сделать это будет не так уж трудно, если использовать для этого LaunchPad EK-TM4C123GXL и библиотеку TivaWare.

Удачи в изучении!

Все вопросы и предложения касательно учебного курса принимаются на адрес ti@compel.ru.

TI_TIVA._NE_02_15_opt

Наши информационные каналы

Теги:
Рубрики:

О компании Texas Instruments

В середине 2001 г. компании Texas Instruments и КОМПЭЛ заключили официальное дистрибьюторское соглашение, которое явилось результатом длительной и успешной работы КОМПЭЛ в качестве официального дистрибьютора фирмы Burr-Brown. (Как известно, Burr-Brown вошла в состав TI так же, как и компании Unitrode, Power Trend и Klixon). С этого времени компания КОМПЭЛ получила доступ к поставке всей номенклатуры производимых компанией TI компонентов, технологий и отладочных средств, а также ...читать далее