zoukankan      html  css  js  c++  java
  • keil5 仿真时发现函数不能进入到main函数

      在做开发的时候发现一个问题,使用keil5进行仿真的时候,不能进入到main函数,点击全速运行,马上就会停止,且出现如下提示:

     

    初步原因:程序中有涉及到 printf 这个使用方法,但是没有具体实现

    解决方法: 1:屏蔽掉代码中所有与 printf 使用相关的代码;

          2:在项目设置中 选择 target选项卡 然后选择 USE Mcrolib 这样就可以

    ”Use MicroLIB”是KEIL自带的一个简易的库。

    keil中的microlib 是缺省 C 库的备选库。 它用于必须在极少量内存环境下运行的深层嵌入式应用程序。 这些应用程序不在操作系统中运行。microlib 不会尝试成为符合标准的 ISO C 库。 

    microlib 进行了高度优化以使代码变得很小。 它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。某些库函数的运行速度也比较慢,例如,memcpy()。 

    microlib 与缺省 C 库之间的主要差异是: 

    microlib 不符合 ISO C 库标准。 不支持某些 ISO 特性,并且其他特性具有的功能也较少。 

    microlib 不符合 IEEE 754 二进制浮点算法标准。 

    microlib 进行了高度优化以使代码变得很小。 

    无法对区域设置进行配置。 缺省 C 区域设置是唯一可用的区域设置。 

    不能将 main() 声明为使用参数,并且不能返回内容。 

    不支持 stdio,但未缓冲的 stdin、stdout 和 stderr 除外。 

    microlib 对 C99 函数提供有限的支持。 

    microlib 不支持操作系统函数。 

    microlib 不支持与位置无关的代码。 

    microlib 不提供互斥锁来防止非线程安全的代码。 

    microlib 不支持宽字符或多字节字符串。 

    与 stdlib 不同,microlib 不支持可选择的单或双区内存模型。 microlib 只提供双区内存模型,即单独的堆栈和堆区。 

    可以合理地将 microlib 与 --fpmode=std 或 --fpmode=fast 配合使用。 
    microlib 中的函数负责: 

    创建一个可在其中执行 C 程序的环境。 这包括: 

    创建一个堆栈 

    创建一个堆(如果需要) 

    初始化程序所用的库的部分组成内容。 

    调用 main() 以开始执行程序。 

    要使用 microlib 构建程序,必须使用命令行选项 ??library_type=microlib。 根据需要,编译器、汇编程序或链接器可使用此选项处理不同的文件。 将此选项与链接器配合使用时,将覆盖所有其他选项。

    原文链接:https://blog.csdn.net/Kelsey11/article/details/51246636

  • 相关阅读:
    mingw-gcc-10.0.1-experimental-i686-posix-sjlj-20200202-0303907
    可以修改 QtScrcpy 窗口大小的小工具
    autosub 添加代理服务器参数 -P --proxy
    Python网络数据采集系列-------概述
    【刷题笔记】I'm stuck! (迷宫)-----java方案
    【刷题笔记】火车购票-----java方案
    mvc自定义全局异常处理
    使用html2canvas实现浏览器截图
    再谈Newtonsoft.Json高级用法
    Spire.Doc组件读取与写入Word
  • 原文地址:https://www.cnblogs.com/HumbleFish/p/14669603.html
Copyright © 2011-2022 走看看