标题: keil提示 ** FATAL ERROR L232: APPLICATION CONTAINS TOO MANY RECURSIONS [打印本页]

作者: cheney03    时间: 2020-12-10 15:44
标题: keil提示 ** FATAL ERROR L232: APPLICATION CONTAINS TOO MANY RECURSIONS

keil提示这个错误,是我函数递归调用太多了吗,还是警告过多,要怎么解决?

作者: cheney03    时间: 2020-12-10 15:58
刚去掉一个函数调用,编译通过。那是我调用太多函数了,导致内存崩溃吗?我程序没写多少啊,不过有很多按键的循环嵌套,要优化程序吗,有没其他办法可以解决?
作者: cheney03    时间: 2020-12-10 16:01
其中的部分代码:

while(1)
       
        {   
           Key_scan();
           if (KeyState)
                {
                 KeyState=0;
                 if(KEY==KEY_MEAS)
                   {Disp_meas();}
                 
                 if(KEY==KEY_CAL)
                   {Disp_cal();}
            
                 if(KEY==KEY_MENU)
             {
                 Disp_menu();                                     
                  Menu_set();
                 }       
             if(KEY==KEY_DEBUG)
                  {
                  Disp_Probe_Debug_01();
                  Probe_Debug_1();
                  }       
                }  
     }   
void Menu_set()
{

  Uint menu_flag;
  menu_flag=0;
  menu_flag++;
  while(menu_flag==1)
       
   {  
         Key_scan();
         if(KeyState)
          {
                 KeyState=0;
           if(KEY==KEY_OK){Disp_Menu_1();}
           if(KEY==KEY_DOWN){Disp_menu_02();Set_menu_02();}
           if(KEY==KEY_UP){Disp_menu_06();Set_menu_06();}  
           menu_flag=0;

      }
                
        }          

}          
作者: npn    时间: 2020-12-10 17:20
其他函数要放到main函数上面,否则编译器就找不到函数。
作者: lovezjf234    时间: 2020-12-10 17:48
cheney03 发表于 2020-12-10 16:01
其中的部分代码:

while(1)

在keil中药把函数放到前面,或者在上面定义行数名,比如加void Menu_set();就可以了。在其他的编译器中可能不需要这种方式,和编译器有关
作者: cheney03    时间: 2020-12-10 19:33
npn 发表于 2020-12-10 17:20
其他函数要放到main函数上面,否则编译器就找不到函数。

我只是举个我调用函数的例子,程序开头函数我都有声明
作者: cheney03    时间: 2020-12-10 19:34
lovezjf234 发表于 2020-12-10 17:48
在keil中药把函数放到前面,或者在上面定义行数名,比如加void Menu_set();就可以了。在其他的编译器中 ...

程序开头函数都有声明,问题不在这
作者: KongQuan    时间: 2020-12-10 21:05
如果中断中和主程序循环中都调用一个函数,或者递归调用的函数。需要修饰这个函数为递归函数。
作者: lovezjf234    时间: 2020-12-11 16:24
还有就是被调用函数里面包含太多调用函数,你屏蔽下if()里面的几个函数试试,
作者: 呦呵。    时间: 2020-12-11 19:59
在其他的编译器中可能不需要这种方式,和编译器有关
作者: MikeCai    时间: 2020-12-14 08:53
Too many recursion 就是太多递归调用,函数中又套原函数,最可疑!另外,main的 while环中调KEY_scan,
Menu_set() 的 while环中也调KEY_scan,让人感觉您的代码是乱的。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1