Too many recursion 就是太多递归调用,函数中又套原函数,最可疑!另外,main的 while环中调KEY_scan, Menu_set() 的 while环中也调KEY_scan,让人感觉您的代码是乱的。 |
在其他的编译器中可能不需要这种方式,和编译器有关 |
还有就是被调用函数里面包含太多调用函数,你屏蔽下if()里面的几个函数试试, |
如果中断中和主程序循环中都调用一个函数,或者递归调用的函数。需要修饰这个函数为递归函数。 |
lovezjf234 发表于 2020-12-10 17:48 程序开头函数都有声明,问题不在这 |
npn 发表于 2020-12-10 17:20 我只是举个我调用函数的例子,程序开头函数我都有声明 |
cheney03 发表于 2020-12-10 16:01 在keil中药把函数放到前面,或者在上面定义行数名,比如加void Menu_set();就可以了。在其他的编译器中可能不需要这种方式,和编译器有关 |
其他函数要放到main函数上面,否则编译器就找不到函数。 |
其中的部分代码: 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; } } } |
刚去掉一个函数调用,编译通过。那是我调用太多函数了,导致内存崩溃吗?我程序没写多少啊,不过有很多按键的循环嵌套,要优化程序吗,有没其他办法可以解决? |