单片机代码不变,hex却变了?

news2024/10/5 20:23:32

关注+星标公众,不错过精彩内容

a9d60561989b9aa391ea79d672ba9e20.gif

作者 | strongerHuang

微信公众号 | strongerHuang

今天在技术交流群看到这么一个问题,大概意思就是:同一个代码工程(源码不变),因Keil版本不同,程序(hex)却变了。

c6b7e4ace0a28adfed9ada88a5c6a71c.png

对于很多新手来说,肯定会纳闷,明明代码没变,为啥结果不一样了呢?

这其中的“变量”就Keil版本从V5.14变为了V5.28。


而优化选项又没变,那什么变了? 

是的,有经验的老司机肯定看出来了,就是编译器的版本变了。

不同版本Keil,编译器可能不同

为了验证这个问题,我安装了以前老版本的Keil V5.28和V5.36,默认自带的编译器AC(Arm Compiler),不管是AC5,还是AC6版本都不一样。

Keil V5.28默认自带编译器为AC5.06-6和AC6.12:

c02c7da865401e17a477e166845b2dc5.png

Keil V5.36默认自带编译器为AC5.06-7和AC6.16:

4ceaca2cff0358089a195ba14cab86d4.png

而这个工程源代码没变、优化选项(配置)没变,编译出来的Hex文件却不一样:

cc1e7e5500a1a588c80627f60a9bde5b.png

如何解决这种问题?

1.使用相同开发环境

这里的开发环境主要指Keil版本,比如:以前用Keil V5.14,现在也继续使用V5.14版本。

当然,如果条件允许,操作系统(Windows)也最好一样,有可能会因为操作系统导致编译结果一样。

上个月才给大家分享过一篇文章:软件工具没事别瞎升级

e9c50acf63d9e01f316b1333345b80e3.jpeg

2.使用相同编译器

当然,如果不能做到上面说的软件版本以及系统一样(有的人就喜欢新版本的软件),可以使用相同版本编译器来尽量保持一致。

不管是这里说的Keil Arm Compiler 编译器,还是GCC等工具,道理都是一样。

Keil的编译器可以修改,可能很多小伙伴还不知道,这里就给大家说一下。

更换Keil编译器的方法比较简单,到Keil(Arm)官方下载你需要版本的编译器,自己安装一下即可。

方法比较简单,这里就不讲述了,具体可以参看我之前分享的文章:手把手教你升级Keil MDK的ARM编译器

本文就分享到这里,大家如果还有遇到类似的奇奇怪怪的问题,欢迎留言讨论。

------------ END ------------

98cebe909a4ac7363238ced30cc0902f.gif

●专栏《嵌入式工具

●专栏《嵌入式开发》

●专栏《Keil教程》

●嵌入式专栏精选教程

关注公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。

26cfe3b074346350299af721f64eb9bd.jpeg

314b0c8b704d05fac6a44d67f01fbbd5.png

点击“阅读原文”查看更多分享。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

更快更强更稳定:腾讯向量数据库测评

向量数据库:AI时代的新基座 人工智能在无处不在影响着我们的生活,而人工智能飞速发展的背后是需要对越来越多的海量数据处理,传统数据库已经难以支撑大规模的复杂数据处理。特别是大模型的出现,向量数据库横空出世。NVIDIA CEO黄…

sqlserver2012 bat脚本实现最大使用内存设置

前言 安装完成sqlserver之后,在运行过程中会无限制的占用电脑的内存,会影响到其他软甲的使用。 bat脚本 准备好bat脚本和sql文件之后,配置好数据库信息 直接双击即可 ECHO OFF REM 自动判断权限问题,主动获取管理员权限>…

中国有多少个省?【最新】

2023.09.09 中华人民共和国省级行政区是指中国现行的34个一级行政区, 包括23个省(河北、山西、黑龙江、吉林、辽宁、江苏、浙江、安徽、福建、江西、山东、河南、湖北、湖南、广东、海南、四川、贵州、云南、陕西、甘肃、青海、台湾)、 5个…

国际版腾讯云阿里云免费开户:全站加快 DCDN 重磅发布!打造新一代加快引擎

腾讯云全站加快 DCDN 重磅发布!打造新一代加快引擎 在数字化转型革新逐渐深化的当下,安全高效成为企业上云、全球化布置的要害需求。 跟着运用场景复杂度不断提高、事务需求差异化开展,为了给企业供给更完善的安全加快服务,阿里云…

基于Java+SpringBoot+Vue前后端分离小型诊疗预约平台设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

黑马JVM总结(一)

(1)什么是JVM JVM是java的运行环境,我们写了一个HelloWorld.java源代码,经过javac编译成了class字节码,这个class字节码使用一个java程序加载到虚拟机里就可以运行了 Java语言是跨平台的,它是在那个层面上…

08_瑞萨GUI(LVGL)移植实战教程之LVGL对接串口打印

本系列教程配套出有视频教程,观看地址:https://www.bilibili.com/video/BV1gV4y1e7Sg 8. LVGL对接串口打印 本次实验我们为LVGL库对接串口的打印功能。 8.1 复制工程 上次实验得出的工程我们可以通过复制在原有的基础上得到一个新的工程。 如果你不清…

09_瑞萨GUI(LVGL)移植实战教程之拓展练习

本系列教程配套出有视频教程,观看地址:https://www.bilibili.com/video/BV1gV4y1e7Sg 9. 拓展练习 本节安排三个实验检验学习成果,实验示例源码在资料包的这个位置: DShanMCU-RA6M5配套学习资料\2_配套源码\02_瑞萨电子MCU GUI(…

分享一个基于Python和Django的产品销售收入数据分析系统源码

💕💕作者:计算机源码社 💕💕个人简介:本人七年开发经验,擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等,大家有这一块的问题可以一起交流! 💕&…

数据通信网络之IPv6静态路由

文章及资源归档至公众号【AIShareLab】,回复 通信系统与网络 可获取。 文章目录 一、目的二、拓扑三、需求四、步骤 一、目的 掌握路由器的 IPv6 基础配置。掌握静态 IPv6 路由的基础配置。理解 IPv6 数据报文的路由过程。 二、拓扑 如图 1 所示,三台…

XL-LightHouse 与 Flink 和 ClickHouse 流式大数据统计系统

一个Flink任务只能并行处理一个或少数几个数据流,而XL-LightHouse一个任务可以并行处理数万个、几十万个数据流; 一个Flink任务只能实现一个或少数几个数据指标,而XL-LightHouse单个任务就能支撑大批量、数以万计的数据指标。 1、XL-LightHo…

005微信小程序云开发API数据库-查询记录-聚合-统计记录数量

文章目录 1.微信小程序云开发API数据库-查询记录案例代码 2.微信小程序云开发API数据库-聚合案例代码 3.微信小程序云开发API数据库-统计记录数量案例代码 1.微信小程序云开发API数据库-查询记录 微信小程序云开发API数据库是一个方便快捷的数据库解决方案,可以让开…

国庆节你会去哪玩? 立即领取国庆专属头像

点击上方蓝字关注我们 立即领取国庆头像 国庆节 国庆节是一个重要的假期,许多人都会选择外出旅游,放松心情,享受美好的时光。以下是一些建议,供您在国庆节期间选择旅游目的地。 迎祖国华诞 愿祖国风调雨顺,国泰民安 国…

进阶C语言-指针的进阶(上)

指针的进阶 📖1.字符指针📖2.指针数组📖3.数组指针🎈3.1 数组指针的定义🎈3.2 &数组名VS数组名🎈3.3 数组指针的使用 📖4.数组参数、指针参数🎈4.1一维数组传参🎈4.2…

[H5动画制作系列] Rectangle Demo 的三种方法

整体要求: 舞台背景为蓝色,大小为:400*400;左上角有一个红色正方形,大小为:200*200,中心点坐标为(0,0) 方法一: 启动Aninmate,用界面绘图工具,做一个单帧静态画面,然后采用Html Canvas发布。 方法二: 启动Aninmate,先做一个单帧,空白帧。然后在空白帧上,填写帧代码。 然…

yolov7简化yaml配置文件

yolov7代码结构简单,效果还好,但是动辄超过70几个模块的配置文件对于想要对网络进行魔改的朋友还是不怎么友好的,使用最小的tiny也有77个模块 代码的整体结构简单,直接将ELAN结构化写成一个类就能像yolov5一样仅仅只有20几个模块&…

优思学院|怎样定义质量?质量的八个维度是什么?

质量是一个广泛而关键的概念,它可以通过多种方式来描述和评估。在商业和制造领域,了解如何区分和评估产品质量的不同维度至关重要。在本文中,我们将讨论产品质量的多维度,并根据哈佛商学院 David A. Garvin(1987&#…

PowerBI依据字段取一列从小到大的第三个值(没三个值取第二个,第二个没有取第一个)

大家在项目业务背景中总能遇到一些比较奇特的需求,我们尽力取解决,下面把这个过程提供出来,供大家参考。步步高升自己技术。PowerBI依据字段取一列从小到大的第三个值(没三个值取第二个,第二个没有取第一个&#xff09…

【数据结构--顺序表】移除元素

题目描述&#xff1a; 代码实现&#xff1a; 1、指针实现 int removeElement(int* nums, int numsSize, int val) {int* dst nums, * src nums;int n1 0,n20;while (n1n2 < numsSize){if (*src ! val){*dst *src;dst;src;n1;//表示src走的步数}else{src;n2;//表示src走…

无涯教程-JavaScript - IMSECH函数

描述 IMSECH函数以x yi或x yj文本格式返回复数的双曲正割。复数的双曲正割被定义为双曲余弦的倒数,即 六(z) 1/cosh(z) 语法 IMSECH (inumber)争论 Argument描述Required/OptionalInumberA complex number for which you want the hyperbolic secant.Required Notes Ex…