keil编译报错:No space in execution regions with .ANY selector matching

No space in execution regions with .ANY selector matching
出现该错误是因为内存溢出,没有更多的空间,可以从以下几点进行排查。

1、优化编译器的编译规则,配置成Level 3 最高级,但是会增加编译时间
在这里插入图片描述

Keil编译器提供了多种优化选项,以帮助程序员在编译代码时提高代码效率和性能。一些常见的优化选项包括:

优化级别: Keil编译器提供了不同的优化级别,通常分为无优化、低优化、中等优化和高优化等级。高优化级别可能会产生更高效的代码,但也可能增加编译时间。

内联函数: 内联函数可以减少函数调用的开销,将函数的内容直接嵌入到调用它的地方,提高程序执行速度。在Keil中,可以使用__inline关键字声明内联函数。

循环优化: Keil编译器能够优化循环,例如执行循环展开或者减少循环次数等,以提高代码效率。

变量寄存器分配: 通过适当的寄存器分配,可以减少内存访问次数,提高代码执行效率。Keil编译器可以通过优化变量的寄存器分配来实现这一点。

指令调度: 对于某些处理器架构,编译器可以对指令进行调度,以最大程度地利用处理器的流水线,减少空闲周期,提高执行效率。

优化控制流: Keil编译器可以通过优化控制流程(如条件语句和循环)来减少跳转指令的使用,提高代码执行速度。


2、把没有调用到的代码屏蔽掉;
比如以下都是要用到的库,没用到的我都去掉了;
在这里插入图片描述

3、把调试打印功能给屏蔽掉;

在这里插入图片描述

4、注意查看代码里面的大数组,减少大数组的定义。
5、增加堆栈的空间,修改汇编文件.s结尾,startup_ch32f20x_D8C.s
在单片机中,堆栈(Stack)是一种用于临时存储数据和管理程序执行的内存区域。堆栈的大小可以根据需求进行修改和设置,但通常在单片机中,堆栈的大小是有限制的,由硬件或软件定义。

堆栈的作用类似于一个临时存储区,用于存放函数调用时的局部变量、函数参数、返回地址等信息。当程序执行函数调用时,相关的信息会被推入堆栈,当函数执行完毕时,这些信息会被弹出堆栈,程序继续执行。

修改堆栈大小通常涉及到单片机的存储器配置或编译器的设置。具体步骤可能因不同的单片机型号或开发环境而异,但一般情况下:

通过编译器设置: 在一些开发环境中,可以通过编译器的选项或配置文件来修改堆栈大小。这可能涉及堆栈的起始地址和大小的设置,以及可能的内存保护机制。

在程序中设置堆栈大小: 有些单片机允许在程序中显式地设置堆栈大小,这可能需要特定的指令或者对相关寄存器的操作。

修改堆栈大小需要谨慎进行,因为堆栈过小可能导致堆栈溢出(Stack Overflow),这会影响程序的稳定性和正确性。如果堆栈不足以存放函数调用所需的信息,会导致程序异常终止或者不可预测的行为。

在设计程序时,应该根据程序的需求和单片机的规格来合理配置堆栈大小。通常,堆栈大小是在编译器或开发环境中设置的,建议参考相关的文档和开发工具的说明来进行设置。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/275410.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣热题100道-双指针篇

文章目录 双指针283.移动零11.盛最多水的容器15.三数之和42.接雨水 双指针 283.移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 …

WPF+Halcon 培训项目实战(6):目标匹配助手

前言 为了更好地去学习WPFHalcon,我决定去报个班学一下。原因无非是想换个工作。相关的教学视频来源于下方的Up主的提供的教程。这里只做笔记分享,想要源码或者教学视频可以和他联系一下。 相关链接 微软系列技术教程 WPF 年度公益课程 Halcon开发 CSD…

日本it培训班,日本IT大体分几类?

日本是一个老龄化极其严重的国家,拜泡沫经济破灭后的经济停滞所赐,民众取得了节育方面的丰硕成果,然而当经济终于走出阴霾,呈现复苏迹象时,短缺的劳动力又成了一大问题,拖累整个经济的步伐。为了应对劳工市…

Pycharm引用其他文件夹的py

Pycharm引用其他文件夹的py 方式1:包名设置为Sources ROOT 起包名的时候,需要在该文件夹上:右键 --> Mark Directory as --> Sources ROOT 标记目录为源码目录,就可以了。 再引用就可以了 import common from aoeweb impo…

轻松部署、经济实惠:解密亚马逊云科技轻量应用服务器的魅力

近年来,云计算技术的迅猛发展为创业者提供了更便捷、经济实惠的基础设施解决方案。在众多云服务提供商中,亚马逊云科技的轻量应用服务器,即Amazon Lightsail,凭借其出色的性能、简单易用的界面和无缝的生态整合,成为许…

Java开发框架和中间件面试题(8)

目录 82.Mybatis一级缓存,二级缓存? 83.Mybatis如何防止SQL注入? 84.mybatis中resultType和resultMap有什么区别? 85.如何在SpringBoot中禁用Actuator断点安全性? 86.什么是SpringBoot?SpringBoot有哪些…

【docker实战】02 用docker安装mysql

本示例采用bitnami的镜像进行安装MySQL 一、镜像搜索 先搜索一下mysql有哪些镜像 [rootlocalhost ~]# docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql …

边缘计算网关在温室大棚智能控制系统应用,开启农业新篇章

项目需求 ●目前大棚主要通过人为手动控温度、控水、控光照、控风,希望通过物联网技术在保障产量的前提下,提高作业效率,降低大棚总和管理成本。 ●释放部分劳动力,让农户有精力管理更多大棚,进而增加农户收入。 ●…

Azure 学习总结

文章目录 1. Azure Function1.1 Azure Function 概念1.2 Azure Function 实现原理1.3 Azure Function 本地调试1.4 Azure Function 云部署 2. Azure API Managment 概念 以及使用2.1 Azure API 概念2.2 Azure API 基本使用 3. Service Bus 应用场景及相关特性3.1 Service Bus 基…

golang并发安全-sync.map

sync.map解决的问题 golang 原生map是存在并发读写的问题,在并发读写时候会抛出异常 func main() {mT : make(map[int]int)g1 : []int{1, 2, 3, 4, 5, 6}g2 : []int{4, 5, 6, 7, 8, 9}go func() {for i : range g1 {mT[i] i}}()go func() {for i : range g2 {mT[…

Flink1.17实战教程(第七篇:Flink SQL)

系列文章目录 Flink1.17实战教程(第一篇:概念、部署、架构) Flink1.17实战教程(第二篇:DataStream API) Flink1.17实战教程(第三篇:时间和窗口) Flink1.17实战教程&…

2023年12月27日学习记录_加入噪声

目录 1、今日计划学习内容2、今日学习内容1、add noise to audio clipssignal to noise ratio(SNR)加入 additive white gaussian noise(AWGN)加入 real world noises 2、使用kaggel上的一个小demo:CNN模型运行时出现的问题调整采样率时出现bug 3、明确90dB下能否声…

[递归回溯枚举] 装载问题

装载问题 题目描述 有一批共 n 个集装箱要装上 2 艘载重量分别为 c1和 c2的轮船,其中集装箱 i 的重量为 wi,且 装载问题要求确定,是否有一个合理的装在方案可将这 n 个集装箱装上这 2 艘轮船。如果有,找出最优装载方案。 关于输…

14 Arbitration in sequencer(仲裁)

uvm_sequencer 有一个内置机制,可以在sequencer上同时运行的sequence中进行仲裁。基于仲裁算法,sequencer将得到仲裁权的sequence的sequence_item发送到driver。 每个sequence发送的sequence_items也有自己的id来区别于其他sequence。 要设置特定的仲裁…

Apipost-Helper使用流程

Apipost-Helper是由Apipost推出的IDEA插件,写完接口可以进行快速调试,且支持搜索接口、根据method跳转接口,还支持生成标准的API文档,注意:这些操作都可以在代码编辑器内独立完成,非常好用!这里…

JavaWeb——监听器Listener 过滤器Filter——韩顺平学习笔记

文章目录 JavaWeb 三大组件之监听器 ListenerListenerJavaWeb 的监听器ServletContextListener 监听器ServletContextAttributeListener 监听器其它监听器-使用较少HttpSessionListener 监听器HttpSessionAttributeListener 监听器ServletRequestListener 监听器ServletRequest…

泰迪智能科技分享:AI大模型发展趋势分析

大规模预训练语言模型,也被称为“大模型”或“基座模型”,其特点在于拥有巨大的参数量,构成了复杂的人工神经网络模型。大模型具有规模性(参数量大)、涌现性(产生预料之外的新能力)以及通用性&a…

uni-app condition启动模式配置

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…

Java EE 网络原理之HTTP 响应详解

文章目录 1. 认识"状态码"(status code)2. 通过 form 表单构造 HTTP 请求3. 通过 ajax 构造 HTTP 请求 1. 认识"状态码"(status code) 表示了这次请求对应的响应,是什么样的状态 (成功,失败,其他的情况&…

Graph Transformer2023最新研究成果汇总,附15篇必看论文

图Transformer是一种结合了Transformer模型和图神经网络(GNN)的框架,用于在图形结构数据上执行预测任务。在图Transformer中,Transformer的自注意力机制被用来学习节点之间的关系,而GNN则被用来生成节点的嵌入表示。通…