在C51中,中断和非中断函数调用同一个函数报警就是RECURSIVE CALL TO FUNCTION。
标准C语言是在堆栈中动态生成局部变量空间,所以可以递归的。
51单片机太弱了,为了提高运行效率,C51采用静态分配局部变量的方式,所以不可递归。
被中断和非中断函数调用的函数,如果在非中断状态运行,发生中断后,局部变量被破坏,中断结束后再执行就完全错误了,这个跟不能递归的原理是一样的,所以Keil也把他列为RECURSIVE CALL TO FUNCTION。
解决方式:在这个公用的函数加reentrant修饰为可重入的。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』