Keil编程常见错误及解决方案(持续更新)

1、 ..\OBJ\MPU6050.axf: error: L6002U: Could not open file ..\obj\main.o: No such file or directory

出现这个问题的原因主要有MDK的安装路径为中文,或电脑的用户名为中文

通过【此电脑】-【属性】-【高级系统设置】-【环境变量】

发现用户变量中出现中文字体

解决方案:找到变量 TEMP 和 TMP,将变量值中的“%USERPROFILE%”使用“C:\user\default”代替,重启电脑,再次打开工程,就可编译成功了!!

原因分析:在安装软件时,这里出现了中文

2、STC USB-TTL连接电脑没有反应

已经下载好对应型号的CH340驱动,仍然没有显示出串口

解决方法:通过【管理员权限】安装驱动,即可解决!

3、串口配置波特率与实际波特率不一致

现象:,软件配置为115200,同时串口调试助手设置为115200,此时接收信息为乱码

通过不断改波特率,最终38400显示正常

原因:排除硬件的问题,一般是时钟配置问题。那么就从从串口的时钟源入手。

解决方法:定位到stm32f10x.h,其中HSE(外部高速晶振)的值需要根据外部实际晶振的值进行更改,将HSE_VALUE的值改为8000000,即可解决问题

 4、移植正点原子例程的FATFS文件操作系统时,遇到的芯片RAM或ROM的空间不足

 \Objects\newproject.axf: Error:L6406E:NO space in execution regions with .ANY selector matching hea

 首先第一种方法:点击魔术棒->点击target,适当增加方框中的RAM,ROM的大小

 第二种方法:配置优化等级:点击魔术棒->点击C++   (优化等级越高,程序优化的就越多)

 

 但是以上2种方法治标不治本,最根本的解决方法是找出哪个文件占用ROM/RAM的多少,进而根据有没有用进行删减优化代码

 程序编译后,打开.map文件查看

 此处参考:stm32 FATFS文件系统如何减少Flash和RAM占用,FATFS移除中文文件名,FATFS移除动态内存

什么是map文件?

简单的说:map文件是通过编译器编译之后,集程序、数据及IO空间的一种映射文件。

很多技术牛逼的工程师在遇到内存越界,或溢出的情况,首先想到的就是分析map文件。通过map文件可以知道函数大小,入口地址等一些重要信息。

我们在Keil中最常见的就是在编译之后,编译窗口会显示类似如下一段关于程序和数据大小的信息


5、..\..\HARDWARE\PTC08\ptc08.c(55): error: #268: declaration may not appear af

错误:#268:声明可能不会出现在可执行语句块后“ 即变量应在主函数开头声明,不能出现在可执行语句后面

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式小黑学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值