还需要知道函数的调用规则,比如:
int fun1(int a,int b) { return a+b; }
int fun2(int a,int b) { return a-b; }
typedef int (*pfun)(int,int);
#define MYFUNCTION1 0x80002000 //假设函数fun1的地址位于0x80002000
#define MYFUNCTION2 0x80003000 //假设函数fun2的地址位于0x80003000
void main()
{ int a=2,b=1,c;
fun=(pfun)MYFUNCTION1; c=(*fun)(a,b);
fun=(pfun)MYFUNCTION2; c=(*fun)(a,b);
}
定义一个函数指针
比如函数void UsartConfiguration(),调用时这样main() {UsartConfiguration();}就行了。
编译器把r7,r6,作为传递参数的专用寄存器,传入单字节char,就把参数放在7中,传入int就高放7低放6,如果函数最后返回值了就把返回值放在a中。这些知识一般在和汇编混合编程时候用到。纯c语言就不用考虑了。