*** WARNING L15: MULTIPLE CALL TO SEGMENT

说说几个小问题吧,一般我们在用KEIL的时候,只要编译器报

- 0 Error(s) 一般我们都不去管多少个 Warning(s).了,一般这样程序基本都能运行,但是其实仔细想想,这里还是有问题的,否则编译器没事吃饱了撑得,报什么警告啊~~~

今天来说说*** WARNING L15: MULTIPLE CALL TO SEGMENT这个问题!

其实这个问题应该是引起注意的,有可能引起程序冲突,但是一般时候程序运行不会有问题,但是如果出来问题,那将会是很讨厌的问题.

分析一下 产生这一警告的一个根源是:例如在主循环里调用了一个函数,而在中断服务中,你又一次调用了同样的函数。这样当主循环运行到该函数中时, 一旦产生中断,则在中断里又再次调用该函数!而使得该子函数发生了重入,这时,经管概率很低,但是很可能出错!这样,编译器就给出了警告!告诉你*** WARNING L15: MULTIPLE CALL TO SEGMENT ,表达的意思是发生了重入!字面意思自己理解去吧~~~

想要避免这种情况的方法

一.用reentrant使函数重入

关于reentrant的说明:

1,重入函数不能传递bit类型的参数和变量;

2,重入函数建立的是模拟堆栈区,所以不使用一般函数位于存储模式默认空间的可覆盖式堆栈,而是在同一空间从顶端另行分配一个非覆盖式的重入堆栈。

small 默认空间是 data;

compact 默认空间是 pdata;

largr 默认空间是 xdata;

3,由于要保存参数和局部变量,所以会消耗很大的栈空间;尽量少用这种模式;

4、    在同一程序中可以定义和使用不同存储器模式的重入函数,任意模式的重入函数不能调用不同存储器模式的重入函数,但可以调用普通函数。
5、    实际参数可以传递给间接调用的重入函数。无重入属性的间接调用函数不能包含调用参数。

二.如果空间多的话,可以定义两个同功能的函数,分别在中断和中断外调用

别的方法没研究出来,嘿嘿~~~对了 我建议用第二种方法好点,第一种有些限制,不爽~~

WARNING L15: MULTIPLE CALL TO SEGMENT

这个问题必须注意,可能引起程序冲突,假设你用于自动化领域,则可能导致信号产生尖峰。 产生这一警告的一个根源是:你在主循环里调用了一个函数(如aaa),而在中断服务函数里,你用调用了这个函数(如aaa)。这样当主循环运行到该函数中 是,一旦产生中断,则在中断里又再次调用该函数!这时,很可能出错! 避免这种情况的方法很多:如,在进中断的时候置需调用该函数的标志,而在主循环中调用该函数

KEILC51警告:WARNING L15: MULTIPLE CALL TO SEGMENT相关推荐

  1. MULTIPLE CALL TO SEGMENT

    WARNING L15: MULTIPLE CALL TO SEGMENT 1.什么是Function Multiple Call Warning 关于这个问题Keil C 给出的解释如下: 简单来说 ...

  2. Scapy脚本执行出现警告WARNING解决办法

    2019独角兽企业重金招聘Python工程师标准>>> (转自:Scapy脚本执行出现警告WARNING解决办法) 安装完scapy,简单写了个脚本执行总是会警告一下: WARNIN ...

  3. 【开发日常】【Makefile】编译时如何将警告(warning)视为错误(error)?

    我们有时会遇到内核编译时警告(warning)被视为错误(error)等问题 在内核源码中,移植外部驱动模块,出现报错: error: unused variable 'xxx' [-Werror=u ...

  4. oracle bround,【案例】Oracle警告 WARNING:inbound connection timed out (ORA-3136)解决办法

    天萃荷净 运维DBA反映,巡检alert日志文件中发现大量Oracle日志警告WARNING: inbound connection timed out (ORA-3136) 1.alert日志文件警 ...

  5. VCS编译仿真警告Warning

    VCS编译仿真警告Warning 问题描述 在较大的SOC集成中,通常使用Perl脚本例化子模块到Top层,然而,有时会出现例化出来的输入端口名没有在Top层定义,而且端口的位宽为1bit,那么,ve ...

  6. 警告Warning: Nashorn engine is planned to be removed from a future JDK release

    在java11中使用Nashorn engine,会有警告Warning: Nashorn engine is planned to be removed from a future JDK rele ...

  7. 【python解决SQLAlchemy+MySQL插入数据时报警告Warning: (1366, “Incorrect string value: ‘\\xD6\\xD0\\xB9\\xFA\\xB】

    python解决SQLAlchemy+MySQL插入数据时报警告Warning: (1366, "Incorrect string value: '\xD6\xD0\xB9\xFA\xB1\ ...

  8. 关闭Java11中即将移除Nashorn引擎的警告Warning: Nashorn engine is planned to be removed from a future JDK release

    在java11中使用Nashorn engine,会有警告Warning: Nashorn engine is planned to be removed from a future JDK rele ...

  9. keil5报警告warning:implicit declaration ‘xxxxxxxx’ is invalid in C99 大部分解决办法

    keil5报警告warning:implicit declaration 'xxxxxxxx' is invalid in C99 大部分解决办法 我遇到这个问题是在RM战队调裁判系统的时候遇到的. ...

最新文章

  1. 参加拥抱HTML5大会及TOPGEEK社区活动纪实
  2. vim 删除操作命令
  3. linux php源码包 安装openssl 和curl 扩展
  4. 网络模型和TCP协议族
  5. 字节跳动 java面经_字节跳动Java面经(已offer)
  6. 把 SAP UI5 应用部署到 SAP Kyma
  7. linux 日志切割 自带,[日志分割回滚] 使用linux自带的logrotate对nginx日志进行分割...
  8. mysql存储过程输入参数拆分_一文看懂mysql数据库存储过程、函数、视图、触发器、表...
  9. 电商领袖战:马云虚,东哥实
  10. 客户端(前端)Ajax中Get请求和Post请求的区别
  11. Sdut 2416 Fruit Ninja II(山东省第三届ACM省赛 J 题)(解析几何)
  12. 三菱mode bus tcp通讯_微服务中的异步消息通讯和事件驱动,你了解多少?
  13. web前端对http理解
  14. 很有用的SQLServer全局变量
  15. Atitit图像处理的用途
  16. Java编程思想阅读收获
  17. unity2021游戏引擎安装激活并汉化
  18. 广州的11个辖区_广东广州下辖的11个行政区域一览
  19. 扫一扫二维码,安全吗?
  20. 算法训练 调和数列问题

热门文章

  1. 力扣刷题流程-参考别人的经验觉得很有道理的
  2. mysql 衍生表必须有别名_MySQL“每个派生表必须有自己的别名”
  3. 机器人学习--粒子滤波及其在定位中的应用
  4. Quartus II13.1安装教程
  5. html阴影特效作品及代码,纯CSS做特效网页(阴影,透明,画圆圈等等)
  6. void与void*详解
  7. 电脑配置清单_2020电脑配置清单AMD指南
  8. java1002java,疯狂java学习笔记1002---抽象类及接口
  9. Scikit-Learn 机器学习笔记 -- SVM
  10. 机器学习实践:TensorFlow2 多GPU负载不均衡问题