|
这是我处理时发现的问题
Vectors.s 档不同之处
CODE32
AREA Startup,CODE,READONLY
;中断向量表
Vectors
LDR PC, ResetAddr
LDR PC, UndefinedAddr
LDR PC, SWI_Addr
LDR PC, PrefetchAddr
LDR PC, DataAbortAddr
DCD 0xb9205f80
; timer 可以中断
; 范例 程式 TIMEOUT
LDR PC, IRQ_Addr
LDR PC, FIQ_Addr
ResetAddr DCD Reset
UndefinedAddr DCD Undefined
SWI_Addr DCD SoftwareInterrupt
PrefetchAddr DCD PrefetchAbort
DataAbortAddr DCD DataAbort
Nouse DCD 0
;IRQ_Addr DCD 0
IRQ_Addr DCD IRQ_Exception
FIQ_Addr DCD FIQ_Handler
; rs232 可以中断
; 范例 程式 UART_TEST\DATARET
LDR PC, [PC, #-0xff0]
LDR PC, FIQ_Addr
ResetAddr DCD Reset
UndefinedAddr DCD Undefined
SWI_Addr DCD SoftwareInterrupt
PrefetchAddr DCD PrefetchAbort
DataAbortAddr DCD DataAbort
Nouse DCD 0
IRQ_Addr DCD 0
FIQ_Addr DCD FIQ_Handler
target.c 档不同之处
; 范例 程式 TIMEOUT
/* 设置定时器0中断IRQ */
VICIntSelect = 0x00;// 所有中断通道设置为IRQ中断
VICVectCntl0 = 0x24;// 定时器0中断通道分发最高优先级(向量控制单元0)
VICVectAddr0 = (uint32)IRQ_Exception; // 设置中断服务程式位址向量
VICIntEnable = 0x00000010;// 使能定时器0中断
需修改为
VICVectCntl1 = 0x24;// 定时器0中断通道分发最高优先级(向量控制单元0)
VICVectAddr1= (uint32)IRQ_Exception; // 设置中断服务程式位址向量
; 范例 程式 UART_TEST\DATARET
VICIntSelect = 0x00000000; // 设置所有通道为IRQ中断
VICVectCntl0 = 0x26; // UART0中断通道分配到IRQ slot 0,即优先级最高
VICVectAddr0 = (int)IRQ_UART0; // 设置UART0向量地址
VICIntEnable = 0x00000040; // 使能UART0中断
在最后时 修改为 (rs232也设定完成)
VICIntEnable = 0x00000010 | 0x00000040;// 使能定时器0中断
目前我只找到这些问题
但这两个要如何才能一起使用? |
|