我编一个通过函数指针调用子程序的实验程序运行没有问题,程序如下: 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 |