问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

KEIL编译器那些坑,你踩过几个?

创作时间:
2025-01-22 02:34:40
作者:
@小白创作中心

KEIL编译器那些坑,你踩过几个?

在嵌入式开发领域,KEIL编译器可谓是程序员们的必备神器。然而,再强大的工具也难免会有"掉链子"的时候。今天,我们就来聊聊KEIL编译器那些常见的"坑",看看你是否也曾被这些"坑"困扰过。

01

选择错误的编译器版本

在使用KEIL编码STM32时,如果选错了编译器版本,可能会导致编译报错。例如,你可能会看到类似以下的错误信息:

static __INLINE void __enable_irq()               { __ASM volatile ("cpsie i"); }
       ^
../System/core_cm3.h(751): note: expanded from macro '__INLINE'
  #define __INLINE         inline                                     /*!< inline keyword for GNU Compiler       */
                           ^
../System/core_cm3.h(1204): error: expected identifier or '('
static __INLINE void __enable_irq()               { __ASM volatile ("cpsie i"); }
                ^

解决方案:确保你选择了正确的编译器版本。在KEIL中,可以通过"Options for Target" -> "Target" -> "Device"来选择正确的设备和编译器版本。

02

优化设置相关的问题

代码可以通过编译器优化来提高运行速度或减少代码尺寸。但是,开启了优化,意味着调试不方便。因为实际汇编代码执行顺序和源代码不一定保持一致。此时掌握多种编译优化设置的方法,就显得尤为重要了,可以让你进行正宗源码级别的调试。

  • 全局优化:这是最常用的优化方式,可以选择不同的优化级别(0-3)。level 0(-O0)代表不进行优化,原汁原味,这种方式编译出来的可执行文件比较大,但是因为每一条代码都和汇编代码顺序一一对应,所以定位问题非常方便,非常建议代码调试阶段使用该等级。

  • 组优化:可以针对特定的源文件组进行优化设置。例如,如果工程代码只有在最高优化级别(level 3(-O3))才能放入FLASH中,可以使用该优化方式,将部分文件优化(需要定位问题的代码),而保持其它文件的优化级别不变。

  • 单个文件优化:如果空间已经到极限,可以对单个文件进行优化设置。在"Options for File"中选择相应的优化级别。

  • 单个函数优化:如果单个文件不能修改优化级别,可以尝试对单个函数进行优化。例如,在AC5编译器中,可以使用#pragma push#pragma pop来设置函数的优化级别。

03

新手安装和配置AC编译器时容易遇到的问题

  • 无法下载AC编译器:需要登录ARM网站账号才能下载。如果无法访问,可以尝试使用梯子注册账号并登录,或者在公众号【strongerHuang】下载区查找,或者后台回复【keil】获取网盘下载链接。

  • 安装路径不匹配:确保将AC编译器安装到Keil自带编译器目录下,通常是C:\Keil_v5\ARM

  • 社区免费版License限制:如果使用免费社区版,可能会遇到编译限制。可以考虑禁用免费社区版,使用"破解"版。

  • 兼容性问题:老版本KEIL与新版本AC编译器可能存在兼容性问题。建议使用兼容性较好的版本组合。

04

其他常见问题

  • 代码错误检查:确保代码没有语法错误或其他明显错误。仔细检查编译器报告的错误和警告信息。

  • 项目清理:有时候,项目中的临时文件可能会导致编译问题。可以尝试清理项目,删除所有生成的文件,然后重新编译。

  • Keil版本更新:使用较旧版本的KEIL可能会遇到一些已知的问题。考虑升级到最新版本的KEIL,以获得更好的兼容性和稳定性。

  • 配置选项检查:确保项目配置选项设置正确,特别是与编译器、链接器和调试器相关的选项。

  • 依赖库检查:确保所有依赖的库文件完整且没有损坏。检查库文件是否存在正确的路径下。

通过以上方法,你应该能够解决KEIL编译器使用过程中遇到的常见问题。如果还有其他问题,欢迎在评论区留言讨论,分享你的经验和解决方案。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号