加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

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

2023/09/09
4842
阅读需 3 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

微信公众号 | strongerHuang

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

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

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

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

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

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

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

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

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

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

如何解决这种问题?

1.使用相同开发环境

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

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

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

2.使用相同编译器

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

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

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

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

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

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

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
NC7SZ05P5X 1 onsemi TinyLogic UHS Inverter (Open Drain Output), 3000-REEL

ECAD模型

下载ECAD模型
$0.11 查看
ABS07-32.768KHZ-9-H-T 1 Abracon Corporation CRYSTAL 32.7680KHZ 9PF SMD

ECAD模型

下载ECAD模型
$3.85 查看
SN74LVC1G08DCKR 1 Texas Instruments Single 2-input, 1.65-V to 5.5-V AND gate 5-SC70 -40 to 125

ECAD模型

下载ECAD模型
$0.26 查看

相关推荐

电子产业图谱

作者黄工,从事嵌入式软件开发工作8年有余,高级嵌入式软件工程师,业余维护公众号『strongerHuang』,分享嵌入式软硬件、单片机、物联网等内容。