产生这一警告的一个根源是:

例如在主循环里调用了一个函数,而在中断服务中,你又一次调用了同样的函数。

这样当主循环运行到该函数中时,一旦产生中断,则在中断里又再次调用该函数!

而使得该子函数发生了重入,这时,尽管概率很低,但是很可能出错!

这样,编译器就给出了警告!告诉你*** WARNING L15: MULTIPLE CALL TO SEGMENT ,表达的意思是发生了重入!

想要避免这种情况的方法

一.用reentrant使函数重入

关于reentrant的说明:

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

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

small  默认空间是 data;

compact  默认空间是 pdata;

largr  默认空间是 xdata;

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

4、    在同一程序中可以定义和使用不同存储器模式的重入函数,任意模式的重入函数不能调用不同存储器模式的重入函数,但可以调用普通函数。

5、    实际参数可以传递给间接调用的重入函数。无重入属性的间接调用函数不能包含调用参数。

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

转载于:https://www.cnblogs.com/whut-xxxy/archive/2011/07/07/2099976.html

KEIL中遇到WARNING: MULTIPLE CALL TO SEGMENT的解决方法相关推荐

  1. keil复制代码乱码_win7系统下Keil复制中文注释到记事本出现乱码的解决方法

    Keil是软件编程的时候经常会用到的软件,但是有不少win7系统用户在复制Keil源程序中文注释到记事本的时候,发现出现了乱码的情况,遇到这样的问题该如何处理呢,现在为大家带来win7系统下Keil复 ...

  2. ORA-27125: unable to create shared memory segment的解决方法(转)

    ORA-27125: unable to create shared memory segment的解决方法(转) 原文:http://www.eygle.com/rss/20111202.html  ...

  3. function()默认参数中ReferenceError Cannot access ‘a‘ before initialization的解决方法

    function()默认参数中ReferenceError: Cannot access 'a' before initialization的解决方法 代码 <!DOCTYPE html> ...

  4. 计算机c盘属性不显示安全选项,win7系统中文件夹属性安全选项卡空白的解决方法...

    在win7系统中,有小伙伴在使用文件夹属性的时候出现了问题,我们在win7系统中有小伙伴发现自己的文件夹属性中的"安全"选项卡不见了,安全选项卡是我们在win7系统中可以用来修改文 ...

  5. C# .net中cookie值为中文时的乱码解决方法

    C# .net中cookie值为中文时的乱码解决方法 一.cookie的名称或子cookie的名称不能为中文,否则无法获得cookie 这个好办,名称不用中文即可 二.cookie的值为中文时候,取c ...

  6. JS中常遇到的浏览器兼容问题和解决方法

    JS中常遇到的浏览器兼容问题和解决方法 参考文章: (1)JS中常遇到的浏览器兼容问题和解决方法 (2)https://www.cnblogs.com/wws-bk/p/9770834.html 备忘 ...

  7. WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED解决方法

    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED解决方法 参考文章: (1)WARNING: REMOTE HOST IDENTIFICATION HAS ...

  8. 在vuejs 中使用axios不能获取属性data的解决方法

    在vuejs 中使用axios不能获取属性data的解决方法 参考文章: (1)在vuejs 中使用axios不能获取属性data的解决方法 (2)https://www.cnblogs.com/lo ...

  9. 在Android Studio中打开Android Device Monitor时报错的解决方法

    在Android Studio中打开Android Device Monitor时报错的解决方法 参考文章: (1)在Android Studio中打开Android Device Monitor时报 ...

  10. Android 在Fragment中执行onActivityResult不被调用的简单解决方法

    Android 在Fragment中执行onActivityResult不被调用的简单解决方法 参考文章: (1)Android 在Fragment中执行onActivityResult不被调用的简单 ...

最新文章

  1. pycharm第一个Python程序
  2. 陪伴程序员的一条龙、一骑士 36 岁了!
  3. HDU 1712 裸分组dp
  4. nodejs+express +jade模板引擎 新建项目
  5. 用Nginx+Lua(OpenResty)开发高性能Web应用
  6. javascript中 this 指向问题
  7. gzip和gunzip 解压参数
  8. SpringSecurity实现记住我功能
  9. PS5运行Linux,索尼发布最新驱动!PS5手柄现在已支持Linux系统
  10. c++的准备知识18
  11. Android 取消壁纸,android – 壁纸设置强制关闭
  12. 各种工业以太网技术浅析
  13. 瑜伽形体棍出口欧盟CE认证,出口美国CPC认证标准介绍
  14. 高效程序员秘籍(6):使用CLCL加快写代码的速度
  15. 蓝桥杯基础之16进制、10进制、8进制、2进制换算总结
  16. stm32f103电子钟心得体会_STM32中的时钟
  17. k线形态python_如何用Python量化“相似K线”实现形态选股?
  18. verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第五章)
  19. (装双系统无法识别硬盘问题)Windows 10 SATA Controller Mode 改为AHCI
  20. 不好好做图的NSC系列(七):跟着cell学习用散点图展示韦恩图的效果

热门文章

  1. bzoj 1072: [SCOI2007]排列perm
  2. POJ2728 最小比率生成树/0-1分数规划/二分/迭代(迭代不会)
  3. 布局的几种方式(静态布局、自适应布局、流式布局、响应式布局、弹性布局)...
  4. tomcat多实例部署相关
  5. mongo .update
  6. JSTL Tutorial with Examples – JSTL Core Tags
  7. WCF开发入门的实例
  8. 从字符串数组中把数字的元素找出来
  9. win2008 401 - 未授权: 由于凭据无效,访问被拒绝。解决方法
  10. Messes in Reading Source Coding of SSD