关于MSP430中断向量表重映射的问题咨询????求指教
在做关于MSP430的程序无线更新的一个东西,在BL程序中写了如下的中断向量列表:
#pragma vector=0
__interrupt void intec_0(void)
{
asm("br &0xE9E0;");
}
#pragma vector=2
__interrupt void intec_1(void)
{
asm("br &0xE9E2;");
}
#pragma vector=4
__interrupt void intec_2(void)
{
asm("br &0xE9E4;");
}
#pragma vector=6
__interrupt void intec_3(void)
{
asm("br &0xE9E6;");
}
#pragma vector=8
__interrupt void intec_4(void)
{
asm("br &0xE9E8;");
}
#pragma vector=10
__interrupt void intec_5(void)
{
asm("br &0xE9EA;");
}
#pragma vector=12
__interrupt void intec_6(void)
{
asm("br &0xE9EC;");
}
#pragma vector=14
__interrupt void intec_7(void)
{
asm("br &0xE9EE;");
}
#pragma vector=16
__interrupt void intec_8(void)
{
asm("br &0xE9F0;");
}
#pragma vector=18
__interrupt void intec_9(void)
{
asm("br &0xE9F2;");
}
#pragma vector=20
__interrupt void intec_10(void)
{
asm("br &0xE9F4;");
}
#pragma vector=22
__interrupt void intec_11(void)
{
asm("br &0xE9F6;");
}
#pragma vector=24
__interrupt void intec_12(void)
{
asm("br &0xE9F8;");
}
#pragma vector=26
__interrupt void intec_13(void)
{
asm("br &0xE9FA;");
}
#pragma vector=28
__interrupt void intec_14(void)
{
asm("br &0xE9FC;");
},
请问在用户应用程序中的,中断程序应该怎么写啊,BL程序中已经指向了虚拟的中断向量地址,用户应用xcl文件中也已经更改了虚拟中断向量的地址,然后再用户应用程序中,我直接写以下的程序:
#pragma vector=UART1RX_VECTOR
__interrupt void UART1_RXISR(void)
{
uchar x;
x=RXBUF1;
if(x=='$')
{
send1char(0x00);
hand_n++;
if(hand_n>=10)
{
hand_n=0;
send1char(0x11);
Eraseflash(0xE900);//擦除虚拟中断向量表
asm("mov & 0xFFFE,PC;");
}
}
}
可是根本无法进入中断,求哪位大神指导下啊,急急急啊
此帖出自
小平头技术问答
一周热门 更多>