小弟最近在用PIC33做一个项目,有模拟量采集,输入捕捉,还有串口通信,同时还用到多个定时器。为了减轻CPU负担,模拟量采集使用了DMA0通道,输入捕捉使用了DMA1通道,现在想两个串口也使用DMA通道,但发现PIC33里中断处理函数里没有DMA2,3,4,5,6的中断处理函数,比如如果有类似通道DMA0的中断函数声明如下:
void __attribute__((interrupt, no_auto_psv)) __DMA4Interrupt(void);
void __attribute__((interrupt, no_auto_psv)) __DMA5Interrupt(void);
void __attribute__((interrupt, no_auto_psv)) __DMA2Interrupt(void);
void __attribute__((interrupt, no_auto_psv)) __DMA3Interrupt(void);
然后在定义这几个函数的
编译器就报如下错误:
src\UART.C:716: warning: Invalid interrupt vector names for device '33FJ128MC706' are:
__DMA4Interrupt
__DMA5Interrupt
__DMA2Interrupt
__DMA3Interrupt
__DMA4Interrupt
__DMA2Interrupt
__DMA5Interrupt
__DMA3Interrupt
我看中断向量表里有这些中断源处理的地址,如
AVIT地址 中断源
0x00011c DMA0
0x000130 DMA1
0x000144 DMA2
0x00015c DMA3
.......
0x00019c DMA6
0x00018e DMA7
但我发现Program Memory里没有这些函数,只有DMA0,DMA1,DMA7,其他DMA的中断函数都用_DefaultInterrupt代替,请问要是我想用DAM2,3,4,5来处理,该怎么做呢?? |