标题: keil4 *** WARNING L13: RECURSIVE CALL TO SEGMENT,怎么解决? [打印本页]

作者: cheney03    时间: 2021-1-6 11:51
标题: keil4 *** WARNING L13: RECURSIVE CALL TO SEGMENT,怎么解决?
这个问题困扰好久,百度了也没解决,哪位高手帮忙看下问题出现在哪里,怎么样才能解决这个问题!
例如下面子程序
void Distance_Debug_Phase_Datapros(Uint Data) //提离调试(相位)数据处理
{

        Phase[0]=Data/1000+'0';
        Phase[1]=Data%1000/100+'0';
        Phase[2]=Data%1000%100/10+'0';
        Phase[3]=Data%1000%100%10+'0';

//        Disp_str(50,110,"N2=",Red,White);
//        Disp_shuzi(94,110,Phase[0],Red,Black);
//        Disp_shuzi(108,110,Phase[1],Red,Black);
//        Disp_shuzi(122,110,Phase[2],Red,Black);
//        Disp_shuzi(136,110,Phase[3],Red,Black);
//        dprintf(154,110,"(U115:调相)   ",Red,White);
}

LCD显示数据,屏蔽掉就没有这个警告,编译能通过







4.png (7.98 KB, 下载次数: 142)

4.png

作者: csmyldl    时间: 2021-1-6 13:32
显示字符的递归调用,把显示要用到的字符数据单独放在另一个C文件中
作者: 梁廷明    时间: 2021-1-6 13:47
递归调用的层数过深,需要减少一下调用的层数
作者: cheney03    时间: 2021-1-6 13:53
梁廷明 发表于 2021-1-6 13:47
递归调用的层数过深,需要减少一下调用的层数

确实调用了好多层,但是减少层数那不是程序显得很复杂,可读性差
作者: cheney03    时间: 2021-1-6 13:55
csmyldl 发表于 2021-1-6 13:32
显示字符的递归调用,把显示要用到的字符数据单独放在另一个C文件中

具体如何操作呢,我新建了一个disp.c文件单独放显示部分的程序,貌似也没有作用,问题没解决
作者: cheney03    时间: 2021-2-24 16:06
解决方法:



作者: wpppmlah    时间: 2022-5-13 16:23
我在一个显示子函数中  定义了一人浮点数变量 ,即使这个变量 没有使用,也会出现同样的警告,这是为什么呢?
void          display_oled(void)
{
    float dfadfa;
      
    if(PAGE==0)//第一屏数据   共四行
    {
......

编译出现如下警告:*** WARNING L13: RECURSIVE CALL TO SEGMENT
把浮点变量定义成全局变量就没问题...这是为什么呢?
作者: Hephaestus    时间: 2022-5-13 18:41
主函数和中断函数调用了同一个函数。
作者: yaoyao2022    时间: 2022-5-14 17:29
https://www.keil.com/support/man/docs/bl51/bl51_l13.htm 有递归调用
作者: yaoyao2022    时间: 2022-5-14 17:31
具体的修改麻烦吧程序全部共享出来




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