在keil中编译时出现以下问题,希望大虾给予解释。必有重谢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在keil中编译时出现以下问题,希望大虾给予解释。必有重谢相关的知识,希望对你有一定的参考价值。

.\Obj\STM3210C-EVAL.axf: Error: L6406E: No space in execution regions with .ANY selector matching st

内存空间不够,可能是你程序中定义了太多的变量占用了大量的空间。

拓展:

1、Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。

2、运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

参考技术A 1.编译优化级别调高或者2.使用微库或者3.分析下是ROM不够还是RAM不够,ROM表示程序太长了超出存储空间,那就换大容量单片机或者精简程序。RAM不够就针对你的变量进行优化,能省得省,能用字符型的就不用整型,有些全局变量改为局部变量也能省出空间 参考技术B 内存空间不够,可能是你程序中定义了太多的变量占用了大量的空间

在keil中调试时出现垃圾字符

【中文标题】在keil中调试时出现垃圾字符【英文标题】:Junk characters while debbuging in keil 【发布时间】:2020-10-15 09:04:30 【问题描述】:

我正在使用 keil 中的链表,我有 3 个结构:

typedef struct CanSnifferTrame Trame ;
struct CanSnifferTrame
  uint32_t id;
  uint32_t lastTime;
  uint8_t prevData[8];
  uint8_t lastData[8];
  uint32_t freq[8];
  uint32_t lastfreq[8];
  uint32_t intervalle[8];
  uint8_t changing;
  uint8_t count ;
  Trame *next ;

;
typedef struct Tete Sniffer ;
struct Tete 
    Trame *first;
;
typedef struct Result Result ;
struct Result
  uint8_t snifferC;
  Sniffer *tete;
;

我只是尝试初始化列表

Result *ResultVar = malloc(sizeof(ResultVar));
ResultVar->snifferC = 0 ;
ResultVar->tete = malloc(sizeof(Sniffer));
ResultVar->tete->first = NULL;

在调试时,ResultVar->tete->firstNULL,但列表不为空,它有无限的元素(idlasttimefreq、...)和垃圾字符。

【问题讨论】:

需要发布代码来演示“列表不是空的,它有无限的元素”......以及您所指的“列表”。 【参考方案1】:

您需要malloc(sizeof(*ResultVar))malloc(sizeof(Result)) 而不是malloc(sizeof(ResultVar))

【讨论】:

列表不为空,总是有垃圾字符..

以上是关于在keil中编译时出现以下问题,希望大虾给予解释。必有重谢的主要内容,如果未能解决你的问题,请参考以下文章

keil编译C程序时出现了这样的错误,不知道怎么解决?(高分悬赏)

keil5中编写代码时出现语法错误为什么无显示

keil编译时出现错误 undefined identifier

STM32初学Keil4编译时出现 Error:Failed to execute 'BIN40/Armcc'

在keil中调试时出现垃圾字符

keil4如何在编译时不编译未调用的函数?