реклама на сайте
подробности

 
 
> Прерывания STR730FZ2T7
Mustik
сообщение Oct 25 2011, 09:23
Сообщение #1





Группа: Участник
Сообщений: 10
Регистрация: 1-12-10
Пользователь №: 61 322



Добрый день.
Купил кит STR730-STK.
Вроде все понятно, вот возник вопрос на счет прерываний.
Буду рассказывать на примере прерывания от CAN0.
Как я понимаю, в конфигурационном файле CAN0IRQHandler содержит адрес функции void CAN0_IRQHandler (void) и ниже приведенный код настраивает прерывания:
CODE
LDR R0, =EIC_BASE
LDR R1, =0xE59F0000 ; LDR PC,[PC,#ofs] (High 16-bits)
STR R1, [R0, #IVR_OFS] ; Store into IVR[31:16]
LDR R1, =PRCCUCMU_Addr ; IRQ Address Table
LDR R2, =0x0FFF ; Offset Mask
AND R1, R1, R2 ; Mask Offset
LDR R2, =0xF3E0 ; Jump Offset = 0x03E0
; 0xFXXX is used to complete the
; LDR PC,[PC,#ofs]
; 0x03E0 = 0x03E8 - 8 (Prefetch)
; 0 = IVR Address + 0x3E8
ADD R1, R1, R2 ; Add Jump Offset
MOV R2, #64 ; Number of Channels
MOV R3, #SIR0_OFS ; Offset to SIR0
EIC_Loop MOV R4, R1, LSL #16 ; Use High 16-bits
STR R4, [R0, R3] ; Store into SIRx
ADD R1, R1, #4 ; Next IRQ Address
ADD R3, R3, #4 ; Next SIRx
SUBS R2, R2, #1 ; Decrement Counter
BNE EIC_Loop

У меня есть моя функция, допустим, void CAN0_IRQ (void). Как мне настроить прерывание, чтобы оно заходило в мою функцию.

Сообщение отредактировал Mustik - Oct 25 2011, 09:26
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 13:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01353 секунд с 7
ELECTRONIX ©2004-2016