Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Аппаратное обеспечение -> Мартин Т. -> "Микроконтроллеры ARM7. Cемейство LPC2000 компании Philips Вводный курс" -> 84

Микроконтроллеры ARM7. Cемейство LPC2000 компании Philips Вводный курс - Мартин Т.

Мартин Т. Микроконтроллеры ARM7. Cемейство LPC2000 компании Philips Вводный курс — М.: Додэка 21, 2006. — 240 c.
ISBN 5-94120-104-4
Скачать (прямая ссылка): nicrokontrolleriarm7semeystvo2006.djvu
Предыдущая << 1 .. 78 79 80 81 82 83 < 84 > 85 .. 86 >> Следующая

Paths
Misc J
Optimization: )<default> j[|
Warnings: | N o Warnings ЧІ
Г Strict ANSI С Г~ Compile Thumb Code
‘_J
Carols
Compiler 1-е -mcpu=arm7tdmi -gdwarf-2 -MD -w 0 -mapcs-frame -mthumb-interwork C:\KeilSARM\INC\Philips\ control 1.Q x.o suing I
OK
Отмена
Default
Справка
Рис. 6.18. Установка флажков на вкладке СС
Скомпилируйте программу и загрузите ее в отладчик.
Откройте окно дизассемблера и начните выполнять программу в пошаговом режиме, используя клавишу FI 1.
Проследите за переключением с 32-битного кода на 16-битный и обратите внимание на флаг THUMB регистра CPSR (Рис. 6.19).
0x40003fSc
1 О О 1 х - ихиигг ииии , ¦0x00000194 ЕБ84501С STR R5,[R4,#0x001C]
і 36 thumb function( )
¦0x00000198 ЕВ000000 BL OxOOOOOlAO
B0x0000019C EAFFFFFC в 0x00000194
¦OxOOOOOlAO E59FC000 LDR R12,[PC]
B0x000001A4 E12FFF1C BX R12
¦0x000001A8 00000139 ANDEQ R0,R0,R9,ISR R1
ІІОхОООООІАС 00000000 ANDEQ R0,R0,R0
gfOxOOOOOlBO 00000000 ANDEQ R0,R0,R0
§|0x000001B4 00000000 ANDEQ R0,R0,R0
g0x000001B8 00000000 ANDEQ R0,R0,R0
(jOxOOOOOlBC 00000000 ANDEQ R0,R0,R0
SOxOOOOOlCO 00000000 ANDEQ R0,R0,R0
І0Х000001С4 00000000 ANDEQ R0,R0,R0
І0Х000001С8 00000000 ANDEQ R0,R0,R0
lOxOOOOOlCC 00000000 ANDEQ R0,R0,R0
IpxOOOOOlDO 00000000 ANDEQ R0,R0,R0
50x000001D4 00000000 ANDEQ R0,R0,R0
Рис. 6.19
Сначала процессор работает в 32-битном режиме ARM, флаг Т сброшен, а размер слова команды равен 4 байтам. Затем вызывается THUMB-функция, в результате чего выполняется команда ВХ, переключающая процессор в 16-битный режим THUMB. При этом устанавливается флаг THUMB, а при входе в THUMB-232 функцию для сохранения регистров в стеке используется команда PUSH.
Встраиваемые функции
Упражнение 4. Использование библиотек GNU
В этом упражнении мы доработаем функцию printf(), чтобы она смогла работать с модулем UART микроконтроллеров LPC2100. В дальнейшем мы рассмотрим регистры модуля UART более подробно.
Откройте проект, расположенный в папке «EX4-Printf\Work».
В файл «шаіп.с» добавьте строки, выполняющие вывод сообщения с использованием функции printf():
while(1)
{
printf("Здесь Ваше сообшение \п"); // Вызываем функцию printf()
}
Добавьте файл «syscalls.c» в рабочую папку проекта (Рис. 6.20).
-і ЗЁЗ Flash
Я 03 Source Group 1 ¦'+) Щ main.с Г+і [2 serial.с I) Startup.s ¦+) [Ж| Syscalls.c
Рис. 6.20
В файле «syscalls.c» допишите функцию write() следующим образом. Допишите оператор for(), чтобы длина цикла была равна длине выводимой строки (1еп).
Внутри цикла добавьте вызов функции putchar() для записи одиночного символа в канал stdio (putchar(*ptr*)).
Инкрементируйте указатель на строку символов (ptr++):
int write (int file, char * ptr, int len)
{
int і;
for (і = 0; і < len; i++) putchar (*ptr++); return len;
9
}
Скомпилируйте программу и загрузите ее в отладочную плату.
Запустите программу и посмотрите на результат ее работы в окне терминальной программы.
Если вы используете симулятор, выберите в меню View пункт Serial Window #1. В результате в симуляторе откроется окно терминала, отображающее данные с выхода модуля UART0.
Упражнение 5. Простое прерывание
В этом упражнении мы сконфигурируем простейшее прерывание FIQ и посмотрим, как оно обрабатывается.
Откройте проект, расположенный в папке «EX5-Intermpt\Work».
233
Глава 6. Учебное пособие по средствам разработки GNU
234
В файле «таіп.с» допишите объявление прототипа функции EXTmtFIQO, чтобы она была объявлена как подпрограмма обработки прерывания FIQ:
void EXTintFIQ (void) _attribute__ ((interrupt("FIQ")));
В файле «startup.s» допишите таблицу констант векторов прерываний, чтобы функция EXTintFIQO вызывалась в качестве подпрограммы обработки прерывания FIQ:
.global EXTintFIQ // Имя Си-подпрограммы объявляется как
// глобальное
.global _startup
.func _startup
_startup:
Vectors:
LDR PC, Reset_Addr
LDR PC, Undef_Addr
LDR PC, SWI_Addr
LDR PC, PAbt_Addr //
LDR PC, DAbt_Addr
. long 0xB8A06F58
LDR PC, [PC, #-0xFF0]
LDR PC, FIQ_Addr
Таблица векторов
Reset_Addr: .word Reset_Handler
Undef_Addr: .word Undef_Handler
SWI_Addr: .word SWI_Handler
PAbt_Addr: .word PAbt_Handler
DAbt_Addr: .word DAbt_Handler
.word 0
IRQ_Addr: .word IRQ_Handler
FIQ_Addr: .word EXTintFIQ
// Таблица констант
Добавьте имя подпрограммы обработки прерывания в таблицу констант.
Скомпилируйте программу и загрузите ее в микроконтроллер на отладочной плате.
Выполняйте программу в пошаговом режиме до цикла while() и наблюдайте за ее выполнением с помощью окна дизассемблера и окна регистров.
Установите точку останова на функцию EXTintFIQO.
Нажмите F5 для запуска программы.
Нажмите кнопку INT1 на плате МСВ2100, чтобы генерировать прерывание.
Если вы хотите посмотреть механизмы входа в режим обработки исключительной ситуации и выхода из него, лучше всего использовать симулятор и выполнять программу по шагам в окне дизассемблера. В этом случае вы сможете понаблюдать за ходом выполнения программы и изменением регистров ЦПУ.
Чтобы управлять прерыванием в симуляторе, откройте окно управления нулевым портом ввода/вывода (меню Peripherals, пункт GPIO/Port 0). Вывод Р0.14 установлен стартовым сценарием в файле «map.ini». Если вы продолжите выполнение программы, сняв отметку с ячейки, соответствующей выводу Р0.14, то
Предыдущая << 1 .. 78 79 80 81 82 83 < 84 > 85 .. 86 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.