打印
[技术支持]

软件编译问题汇总

[复制链接]
2482|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dspmana|  楼主 | 2025-4-26 09:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、Keil MDK相关1.1 keil报错1.1.1 错误现象:Error[Pe140]: too many arguments in function call

解决方法:取消括号里的声明,因为与之前定义的函数不一样

1.1.2 错误现象:程序设置波特率和串口调试助手波特率设置不同才能通信

解决方法:把stm32f4xx.h中的HSE_VALUE 设根据外部实际晶振的标称值进行更改。如:

#if !defined  (HSE_VALUE)           #define HSE_VALUE    ((uint32_t)8400000)#endif1.1.3 错误现象:Error[Li005]: no definition for….

解决方法:缺少XXX定义的头文件,除了自己定义的头文件还有库文件

1.1.4 错误现象:Error[Li006]: duplicate definitions for ……(重复定义)

解决方法:去掉重复定义的部分,去掉之前删除的对应c和h文件

1.1.5 错误现象:Error[Pe065]: expected a “;”

解决方法:符号错误,比如中英文混写

1.1.6 错误现象:Error[Pe165]: too few arguments in function call

解决方法:该错误是由于调用的参数少了导致的,即使某些参数在代码中情况下无效,但也要加上去

1.1.7 错误现象:error: #165: too few arguments in function call

解决方法:原因是调用时缺少输入参数,检查原函数后添加

1.1.8 错误现象:Error: L6218E: Undefined symbol …

解决方法:提示无定义,实际上是.c源文件没有添加进项目列表

1.1.9 错误现象:error: #147-D: declaration is incompatible

解决方法:原因是同一个变量被定义成不同的数据格式,检查删除

1.1.10 错误现象:error: #268: declaration may not appear after executable statement in block

解决方法:原因是变量声明不允许出现在语句之后,将局部变量放在函数开头声明

1.2 keil报警1.2.1 错误现象:warning: #1-D: last line of file ends without a newline

解决方法:在最后加一行

1.2.2 错误现象:Warning[Pe161]: unrecognized #pragma

解决方法:注释掉

1.2.3 错误现象:Warning[Pe223]: function “XXX” declared implicitly

解决方法:添加头文件,原因缺少XXX定义的头文件

1.2.4 错误现象:warning #1295-D Deprecated declaration xxxxxxx - give arg types

解决方法:其实这个警告是因为函数没有参数的话,需要定义和声明的时候添加void

1.2.5 错误现象:*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS

解决方法:意思定义了一个函数,但是在main等函数中并没调用。不用管

1.2.6 错误现象:warning: #550-D: variable “temp” was set but never used

报错原因:变量’d’定义但从未使用
解决方法:删除或者加volatile关键字修饰变量

1.2.7 错误现象:warning: #177-D: variable “i” was declared but never referenced

原因:有个变量i声明了但没有使用
解决方法:删除或者加__attribute__((unused))来表示这个变量可能会没有使用到

1.2.8 错误现象:warning: #1295-D: Deprecated declaration SiicRbyte - give arg types

警告原因:函数声明没有参数
解决方法:需要定义和声明的时候添加void

1.2.9 错误现象:warning: #186-D: pointless comparison of unsigned integer with zero

原因:无符号整数与零的无意义比较
解决方法:去掉多余部分

1.2.10 错误现象:warning C329: single-line comment contains line-continuation

原因:注释里含有\符号
解决方法:去掉\符号

1.3 keil使用问题1.3.1 FCARM - Output Name not specified, please check 'Options for Target - Utilities

原因:添加文件时,C文件变成Image文件

解决方法:
方式一:在Options里改回去
方法二:在Manage里添加文件选择Add Files

1.3.2 keil中go to definition跳转browser窗口

原因:变量或函数被重复定义,导致隐式调用

解决方法:
方式一:将browser窗口上拉,一个个变量寻找
方式二:取消或者减少用volatile和typedef声明的变量,并将头文件直接添加进来

1.3.3 STLINK烧写提示:Not a genuine ST Device! Abort connection

解决办法:进入Target–Debug–Settings–Pack,取消Enable

二、IAR相关2.2 IAR报警2.2.1 错误现象:Warning[Pe550]: variable “mbox” was set but never used

解决方法:原因是定义了无效的变量,在变量前加上volatile或者__IO,或者右击Option——C/C++Compiler——Optimizations——Level选择Medium(中等优化)

2.3 IAR使用问题2.3.1 无法go to definition

解决方法:
①首先取消中文路径
②重新编译,下面会出现一个绿色或者红色的进度条,编译完成会消失,消失之前无法使用
③在代码界面右击->Options->Project,取消勾选Generate browse informations确定后编译,然后再进来勾选Generate browse informations确定在编译

三、STVD使用问题3.1 STVD无法go to

解决方法:去掉中文路径

3.2 编译时出现“Error creating process for executable cxstm8”

解决方法:
1)先安装软件: cxstm8_32k软件来安装。第一步:先点击截图里面的第一个文件cxstm8_32k.exe安装,安装过程中,会有很多的提示,直接NEXT。点击第二个文件CXSTM8_32k_patch.exe,找到刚才cxstm8_32k.exe的安装路径。点击启动应用按钮,即完成安装。
安装链接

2)再来启动STVD软件,点击project项目中的settings-General如下截图所示:

3.3 can’t openfile crtsi0.sm8

用STVD+COSMIC编译工程时出现以下错误(加载的别人的工程时):
#error clnk Debug\demo.lkf:60 can’t openfile libis0.sm8

解决方法:
打开STVD软件,选择Tools-> Options -> Directories -> Show Directories for选择:Libraryfiles 将D:\program files(x86)\COSMIC\CXSTM8_32K\Lib添加进去,如安装在其它目录,添加相应的目录即可。

3.4 STVD无法find in file

解决方法:
①在Option-Directories添加路径

②在Find in file里勾选Look inproject folders

3.5 STVD没有生成文件

解决方法:Settings–Post-Build里Commands里添加(上一行末尾回车可以进入下一行):
①生成.s19文件:

chex -o $(OutputPath)$(TargetSName).s19 $(OutputPath)$(TargetSName).sm8

②生成.hex文件:

chex -fi -o $(OutputPath)$(TargetSName).hex $(OutputPath)$(TargetSName).sm8

https://blog.csdn.net/weixin_44567668/article/details/129003692


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

2744

帖子

2

粉丝