Keil "RECURSIVE CALL TO SEGMENT"彻底解决

发布者:中原读书客最新更新时间:2015-12-25 来源: eefocus关键字:Keil  CALL  SEGMENT 手机看文章 扫描二维码
随时随地手机看文章
我们在做菜单程序或通过函数指针调用函数时,如果被调用的函数中有包含了常量字符串,那么经常会出现这样的的错误提示:"RECURSIVE CALL TO SEGMENT"意思是"递归调用段",如何解决呢,之前我没有找到很好的方法,这段时间我回过头来看keil的datasheet,找到了解决方法,当然keil手册提供的解决方法是编写一个.lin文件,我觉得麻烦,现提供我的解决方法,实例还是用keil提供的那个实例: 
#pragma code symbols debug oe void func1(unsigned char *msg ) { ; } void func2( void ) { unsigned char uc; func1("xxxxxxxxxxxxxxx"); } code void (*func_array[])() = { func2 }; void main( void ) { (*func_array[0])(); } 这样会提示:
*** WARNING 13: RECURSIVE CALL TO SEGMENT SEGMENT: ?CO?EXAMPLE1 CALLER: ?PR?FUNC2?EXAMPLE1 我的解决方法是:
把code void (*func_array[])() = { func2 };放在另外一个段,
即另外一个.c文件中也就不存在同一个段递归调用情况,如下:
keilrecur.c文件
#i nclude 
void func2( void );
extern code void (*func_array[])();
 void func1(unsigned char *msg ) 
{ 
 msg=msg; 
}
void func2( void ) {
  unsigned char uc;
  uc=uc;
  func1("xxxxxxxxxxxxxxx");
}
  
void main( void ) {
  (*func_array[0])();
}
  
funcptr.c文件
#i nclude 
void func2( void );
code void (*func_array[])() = { func2 };
这样就可以解决段递归问题.
我们在做LCD菜单时,喜欢做一个KeyTab,这样也会出现"递归调用段"情况,
那么我们可以把KeyTab单独作为.c文件,方便管理又可以避免这种错误提示.
关键字:Keil  CALL  SEGMENT 引用地址:Keil "RECURSIVE CALL TO SEGMENT"彻底解决

上一篇:关于keil中data,idata,xdata,pdata,code的问题
下一篇:msp430F149单片机的flash读写程序

推荐阅读最新更新时间:2024-03-16 14:41

Vishay车规产品将在2018 Automotive World日本展上悉数亮相
2018 年 1 月15 日 — 日前,Vishay Intertechnology, Inc.(NYSE 股市代号:VSH)宣布,在1月17-19日日本东京有明国际展览中心举行的2018 Automotive World上,Vishay的车规产品将悉数亮相。Vishay的展位在东5号馆E47-40,以“Think Automotive,Think Vishay”为主题,展示各种车规产品,包括满足和超过AEC认证的电容器、电阻器、电感器、二极管、功率MOSFET和光电子产品。 在2018 Automotive World日本展上,Vishay将展示其汽车级和通过AEC认证的器件,这些器件可用于自动驾驶、信息娱乐系统、导航、音
[嵌入式]
Vishay车规产品将在2018 Au<font color='red'>to</font>motive World日本展上悉数亮相
联想发布Moto青柚1s手机 骁龙450处理器售价1499元
5月16日,摩托罗拉官方正式发布Moto青柚1s。   外观方面,Moto青柚1s采用了3D曲面玻璃工艺,配合NCVM镀膜工艺中框彰显陶瓷质感,绽放如中国丝绸般的S形炫彩光泽,提供为维多利亚蓝和夏洛特粉两种配色。   配置方面,Moto青柚1s采用了5.7英寸2160×1080显示屏,机身三围尺寸与传统5.2寸手机区别不大,单手操作无压力,搭载高通骁龙450处理器,配备4GB内存+64GB存储,电池容量为3000mAh,运行基于安卓8.0深度定制的ZUI 3.5系统。   拍照方面,Moto青柚1s后置1200万主摄+500万副摄,主摄像头单位像素面积为1.25μm,光圈为F/1.8,加入了景深效果,支持可调背景虚化、背景黑白,
[手机便携]
基于TOPSwitCh的电磁兼容性设计
O 引言 随着现代逆变技术的发展.开关电源正向着高频化、小型化的方向发展:在此基础上开发出的三端隔离、脉宽调制型反激式单片开关电源,集成了高压M0SFET、振荡器、脉宽调制器、闭环控制电路以及限流、过热保护功能的集成芯片。以其为核心构成的单片开关电源外围电路简单,输入电压范围宽,达到85"265V,电能转换效率达到90%,已被广泛应用于中小功率开关电源中。 TOPSwitch单片电源应用频率一般在20kHz以上,这样对前级电路(通常是电网)带来很大的电磁干扰问题,危及其他电气设备的正常运行;而且其本身产生的干扰直接危害到电子设备的正常工作。为此必须对电路进行电磁兼容(EMC)设计,使电磁干扰问题限制在允许的范围内。
[应用]
Linux 系统下ARM Linux交叉编译环境crosstool工具
Linux 系统下ARM Linux交叉编译环境的建立目前流行的有三种途径。 一、使用别人编译好的开发工具链 cross-2.95.3.tar.bz2 arm-linux-gcc-3.3.2.tar.bz2 arm-elf-tools-20030314.sh。 其中arm-elf-tools 是专门用来编译uclinux内核的。我们常用的cross-cross-2.95.3,下载cross-2.95.3.tar.bz2 解压后放到/usr/local/arm 目录下设置下PATH即可使用,这是最方便快捷的方式,缺点是cross-2.95.3 GCC版本是2.95.3,版本较低,不能编译2.6版本的Linux内核和版本较高的u
[单片机]
Keil STM32 C++混合编程要点
1. 文件名必须是.CPP和.h 2. .h文件中要增加如下代码: #ifndef __LEDTASK_H #define __LEDTASK_H #ifdef __cplusplus extern C { #endif #include stm32_led.h void led1_task (void *pdata); #ifdef __cplusplus } #endif #endif 3. 调用.cpp文件中资源时(如类,函数等),那个文件也必须是.cpp文件。即.cpp文件里才能调用C++语法的程序 4. –C99要去掉 其实到最后,我是放弃了这种C++混合编程的,一开始非常想这样
[单片机]
<font color='red'>Keil</font> STM32 C++混合编程要点
世界最小级别的 Bluetoot h® V4.1 SMART 模块
TDK 株式会社开发出了最适合于今后将飞速普及的可穿戴设备的超小型Bluetooth SMART (Low Energy)模块(产品名:S ESUB-PAN -D14580), 并已从2 015年7月起开始量产。 本产品利用敝社独有的 IC 内置基 板(SESUB),将支持 Bluetooth V4.1 SM ART 标准的 Dialog Semiconductor 公司制造的 DA14580 内置于树脂基板内 ,并将水晶振子、电容等周边线路元件配置到基板上,从而使得本产品实现了作为 Bluetooth V4.1 SMART 模块的世界最小※级别(3.5x3.5x1.0m m)。该大小与分立器件相比,可减少 60%以上
[物联网]
基于Small RTOS51的光电效应实验系统
引言 随着科学技术的发展,光电效应己广泛应用于工农业生产、国防和许多科技领域。普朗克常数是自然界中一个很重要的普适常数,它可以用光电效应法简单而又较准确地求出。所以,进行光电效应实验并通过实验求取普朗克常数有助于人们理解量子理论和更好地认识这个普适常数。然而传统手动测量和数据处理方法采集的数据量非常有限,不但引入很大人为误差,而且限制了各种数字信号处理方法的使用,从而引入系统误差。同时,如果将主要精力放在如何准确调整输出电压以及输出电流等重复性劳动上,则会忽视对实验本身的物理规律的研究。 用单片机控制系统自动采集和处理数据可以解决以上问题。但此时对于控制系统软件设计的可靠性、实时响应等各个方面的性能都要有严格的要求。使用嵌
[嵌入式]
瑞萨启动“Easy to Start”计划,加速汽车生态链设计
日前,瑞萨资深工程师Adam Korbel在瑞萨官网撰文,解读了RL78和RH850系列产品在汽车领域的成功之道。Adam Korbel表示,RL78和RH850的优势是通过专有的CPU内核以及针对汽车定制的功能集和性能来推动这一成功。但是,成功的另一个主要推动力是瑞萨为汽车客户提供的专门技术应用支持。多年来,瑞萨建立并培养了熟练的工程团队来支持全球开展业务的客户。可以使用电话和电子邮件,管理完善的后台保障系统可确保快速响应时间和高质量服务。迄今为止,这些支持资源主要集中在汽车Tier1客户上,这是一种纯B2B技术支持系统。 支持基础架构可以平滑并加快流程,但是技术支持的真正价值并不在于支持渠道,而在于工程师本身以及为每个请求
[汽车电子]
瑞萨启动“Easy <font color='red'>to</font> Start”计划,加速汽车生态链设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved