/* include peripheral declarations */
void main(void) {
unsigned long i;
i=0;
SOPT = 0x73;
IRQSC = 0x16; //外部中断 Pin Enable, IE, IRQ CLR, negative edge
ICGC1_RANGE = 1; /* Range High. */
ICGC1_OSCSTEN = 0; /* Osc enabled in off mode. */
ICGC1_CLKS = 0x00; /* Self clocked. */
SRTISC = 0x17;
SPMSC1 = 0;
SPMSC2=SPMSC2|0x03; //STOP2
PTDDD_PTDDD0=1;
PTDDD_PTDDD3=1;
EnableInterrupts;
asm stop
SOPT = 0x73;
IRQSC = 0x16; //外部中断 Pin Enable, IE, IRQ CLR, negative edge
ICGC1_RANGE = 1; /* Range High. */
ICGC1_OSCSTEN = 0; /* Osc enabled in off mode. */
ICGC1_CLKS = 0x00; /* Self clocked. */
PTDDD_PTDDD0=1;
PTDDD_PTDDD3=1;
EnableInterrupts;
while(1){
for(i=0;i<1000;i++);
PTDD_PTDD0=0;
PTDD_PTDD3=1;
for(i=0;i<1000;i++);
PTDD_PTDD0=1;
PTDD_PTDD3=0;
}
}
interrupt 25 void rtii(){
long int ii;
static int c;
SOPT = 0x73;
IRQSC = 0x16; //外部中断 Pin Enable, IE, IRQ CLR, negative edge
ICGC1_RANGE = 1; /* Range High. */
ICGC1_OSCSTEN = 0; /* Osc enabled in off mode. */
ICGC1_CLKS = 0x00; /* Self clocked. */
SRTISC_RTIACK=1;
while(!SPMSC2_PPDF);
SPMSC2_PPDACK=1;
c++;
EnableInterrupts;
SPMSC1 = 0;
SPMSC2=SPMSC2|0x03; //STOP2
PTDDD_PTDDD0=1;
PTDDD_PTDDD3=1;
for(ii=0;ii<1000;ii++);
PTDD_PTDD0=0;
PTDD_PTDD3=1;
for(ii=0;ii<1000;ii++);
PTDD_PTDD0=1;
PTDD_PTDD3=0;
if(c<3) {
SRTISC = SRTISC|0x17;
asm stop
} else{
SRTISC_RTIE=0;
SRTISC_RTIS=0;
}
EnableInterrupts;
}
作者: strongchen 时间: 2005-8-3 16:33
当然可以,如果寄存器的设置是固定的,与程序运行状态无关。
[此贴子已经被strongchen于2005-8-3 16:33:09编辑过]
作者: cloud1 时间: 2005-8-3 16:36
这个程序肯定可以进入stop2模式,然后也能到达RTI的中断,可以从电流的变化看出来,调试窗口则看不到进入中断中断,大概是因为已经进入了STOP模式的原因。可是就是无法从RTI中断程序里恢复到主程序,而且RTI中断里的程序一行好像都没有执行。
作者: cloud1 时间: 2005-8-3 16:37
我的STOP3程序就是可以的
作者: strongchen 时间: 2005-8-3 17:38
还是请先仔细看一看AN2493。其中也有一些参考源程序。
另外查一下编译后,RTI的矢量地址是否正确。
还要注意SPMSC1和SPMSC2寄存器的某些位是一次性写入的。这意味着在复位后第一次写入时这些位的数值必须同时写入。以后再写入这些位是无效的。
[此贴子已经被strongchen于2005-8-3 17:38:06编辑过]
作者: cloud1 时间: 2005-8-3 17:58
我看了AN2493可惜全是汇编,正在努力往C上移植。
请问怎样看编译后的RTI矢量地址
作者: strongchen 时间: 2005-8-4 10:29
可以看.MAP文件中的说明和.S19文件中的数据。看看地址$FFCC.$FFCD中的数据是否为RTI函数的入口地址。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) |
Powered by Discuz! 7.0.0 |