Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как установить вектора прерываний в IAR EW?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
afad
Подкинте примерчик, как установить вектора прерываний в IAR EW 4.xx для случая, когда вектора находятся в ПЗУ и когда они в ОЗУ.
d__
__program_start
ldr pc,[pc,0x18]
org 0x04
ldr pc,[pc,0x18]
org 0x08
ldr pc,[pc,0x18]
org 0x0c
ldr pc,[pc,0x18]
org 0x10
ldr pc,[pc,0x18]
org 0x18
LDR pc,[pc,#-0xFF0];get irq adr fr VicVectAdr to PC
org 0x1c
LDR pc,[pc,#-0xFF0]
vectortab
dcd ?cstartup
dcd undefhndlr
dcd swihndlr
dcd prefetchaborthndlr
dcd dataaborthndlr
dcd notusedhndlr
undefhndlr
b undefhndlr
swihndlr
b swihndlr
prefetchaborthndlr
b prefetchaborthndlr
dataaborthndlr
b dataaborthndlr
notusedhndlr
b notusedhndlr
Сразу после метки ?cstartup добавляешь парочку команд:
?cstartup
ldr r11,=__program_start
ldr r12,=0x40000000
ldmia r11!,{r0-r10}
stmia r12!,{r0-r10]
ldmia r11!,{r0-r1}
stmia r12!,{r0-r1}
это достаточно универсальный способ годящийся для работы как из ОЗУ так и из ПЗУ. В таблице vectortab можно размещать динамически адреса обработчиков прерываний. Это не точный шаблон конкретной программы, только прорисоывна концепция решения проблемы...
Den
А есть ли возможность задать вектора через Сишный код?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.