在线时间4 小时
UID213490
ST金币0
蝴蝶豆0
注册时间2008-5-25
初级会员
- 最后登录
- 1970-1-1
|
a0a.1 0b0c
我编一个通过函数指针调用子程序的实验程序运行没有问题,程序如下:
void scr_1(void);
void scr_2(void);
void scr_3(void);
void (*fp)();
void (*scr_list[])()={
scr_1,
scr_2,
scr_3,
};
void main(void)
{
fp=scr_list[0];
(*fp)();
fp=scr_list[1];
(*fp)();
fp=scr_list[2];
(*fp)();
while(1);
}
void scr_1(void)
{
unsigned char i,j;
i=0;
j=i;
i=10;
};
void scr_2(void)
{
};
void scr_3(void)
{
};
但是我运用到实际项目中,在子程序返回时就出错,总是跳到HardFault_Handler 里边,不知道什么回事情,我想唯一的区别就在于实验程序中我没有用ST的函数库,实际项目中我用了ST的函数库(但我用函数指针调用的不是st的函数,而是我自己编的函数),请大侠指点啊
我发现我的实验程序子程序返回是用 bx lr,而项目程序用的是pop {r0-r5;pc}, 是编译问题还是在哪里可以设置????
我用的是iar for arm 5.4
|
|