![]() |
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; } } } |
剛去掉一個函數調用,編譯通過。那是我調用太多函數了,導致內存崩潰嗎?我程序沒寫多少啊,不過有很多按鍵的循環嵌套,要優化程序嗎,有沒其他辦法可以解決? |