在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->first
是 NULL
,但列表不为空,它有无限的元素(id
、lasttime
、freq
、...)和垃圾字符。
【问题讨论】:
需要发布代码来演示“列表不是空的,它有无限的元素”......以及您所指的“列表”。 【参考方案1】:您需要malloc(sizeof(*ResultVar))
或malloc(sizeof(Result))
而不是malloc(sizeof(ResultVar))
。
【讨论】:
列表不为空,总是有垃圾字符..以上是关于在keil中编译时出现以下问题,希望大虾给予解释。必有重谢的主要内容,如果未能解决你的问题,请参考以下文章
keil编译C程序时出现了这样的错误,不知道怎么解决?(高分悬赏)
keil编译时出现错误 undefined identifier