Board logo

标题: 求助版主 [打印本页]

作者: chenwenjun    时间: 2007-6-23 15:56     标题: 求助版主

我在快速中断程序中想将IO口的数据读到一个变量temp中,中断程序我不能用saveall说明,否则时间不够,中断程序我只能用called 说明 我用如下语句:
temp=PESL(GPIOB,GPIO_READ_DATA, NULL);
这条语句是否改变了别的程序使用的寄存器的数据,如果我想用这条语句,我该如何用汇编语句保存这些寄存器。
我这样做的目的是: 在PWM的 deadtime时,读IO口的状态。如果用
#pragma interrupt alignsp saveall 在进入我的程序前要运行30多条由PE产生汇编语句,时间不够,所以我要先运行我的程序,在运行我这条程序前要保存什么数据到堆栈中?谢谢!!!
作者: usliwu    时间: 2007-6-25 09:04

快速中断只有用汇编才能体现它的优越性. manual讲地很清楚.

中断程序不建议用saveall说明.saveall说明要保存60多个字到堆栈中, 建议用
#pragma interrupt alignsp
void Int_Func(void)
{
Int_Called_Func();

}

#pragma interrupt called
void Int_Called_Func(void)
{

}

作者: chenwenjun    时间: 2007-6-25 09:23

谢谢
作者: chenwenjun    时间: 2007-6-25 09:33

请问一下alignsp说明保存多少个字到堆栈,我现在汇编不熟悉,
语句temp=PESL(GPIOB,GPIO_READ_DATA, NULL);要保存什么到堆栈,如何保存,请用汇编帮我写出来好吗! 我的中断程序就一条语句,读IO口就可以了,谢谢!!!




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0