目录
1)“Not a genuine ST Device! Abort connection”
2)“Loading PDSC Debug Description Failed”
3)“Debug仿真时System Viewer菜单显示空白”
3)“Error: Encountered an improper argument”
1)“keil5 MDK 中缺core_cm3.o 报错 ”
1、MDK
(1)ISP方式下载问题
1)“芯片超时无应答,无法连接”
原因:
串口通信问题。
解决方法:
1--如果采用的是“单片机+USB转TTL模块”的方式
A.检查串口uart连接否交叉相接(即单片机的tx接USB转TTL模块的rx,单片机的rx接USB转TTL模块的tx)
B.检查单片机上的BOOT0引脚是否已调到高电平位置
2--检查串口驱动安装是否正常,确保在设备管理器中能够看到所连接串口的COM口
3--检查ISP软件配置是否正确
包括串口号、波特率等,如果使用的是有“一键下载电路”,还需检查DTR与RST引脚的配置是否正确
2)“开始连接到...,接收到:FE FE FE”
原因:
串口已通,接收到错误数据。
解决方法:
1--如果采用的是“单片机+USB转TTL模块”的方式
A.按照上个问题的方法检查串口连接以及BOOT0引脚的问题
B.给单片机复位
每次通过ISP方式下载完程序后,需要对芯片进行复位,让芯片重新从ISP下载模式启动
(2)烧录器使用问题(SWD方式通信)
1)“在MDK中Debug配置中没有检测到烧录器的信息”
原因:
该问题主要是烧录器的驱动没有安装或者安装失败。
解决方法:
1--软件驱动
A.确定烧录器本身的软件驱动是否安装正确,检查的方式有两种
一是如果驱动没有安装成功,烧录器上的指示灯会闪烁或者显示红色的指示灯,如果成功,则指示灯一般会绿色常亮
二是在设备管理器中进行查看信息,一般在“通用串行总线控制器”中,如果没有出现黄色的感叹号,表示驱动已经安装成功
B.如果烧录器驱动安装失败,通常尝试如下三种方式进行安装
一是安装驱动精灵等第三方软件,当烧录器接在PC端时,第三方软件会自动进行检测驱动,并提示进行安装
二是下载设备采购商提供的驱动软件,直接进行安装
三是利用MDK自带的烧录器驱动进行安装,其路径为
2)“No target connected”
该问题主要是在MDK中配置烧录器出现的问题
原因:
SWD口通信问题,导致MDK无法正常与烧录器连接。
解决方法:
1--检查烧录器与单片机SWD口接线是否正确,尤其是swio口与swclk是否连接正确
2--检查是否因为之前使用的ISP下载,改变了BOOT0引脚的状态,烧录器下载与调试需要将BOOT0设为低电平
3--软件驱动
该部分方法同上
4--是否驱动版本问题
尝试利用所使用烧录器相应的软件,更新烧录器内部的驱动
5--供电问题
如果上述问题都确定无误,考虑是否因为烧录器本身的供电电压不足而导致,尝试换USB口或者是单独给烧录器供电
如果还不行,考虑重新换烧录器或开发板。
(3)MDK中pack包产生的相关问题
1)“Not a genuine ST Device! Abort connection”
该问题主要是在通过烧录器下载程序出现的问题,该问题并不影响程序的正常烧录,只是MDK进行错误提示
原因:
MDK检测到所使用的芯片可能不是正版的。
解决方法:
1--检查MDK中Debug配置中,烧录器的连接方式是否正确
2--如果上述没有问题,考虑相应的pack包中注释相应的提示
编辑Keil.STM32F1xx_DFP.pdsc,注释涉及not a genuine的语句
2)“Loading PDSC Debug Description Failed”
在MDK使用的过程中,MDK会提示如上相应的提示。
原因:
STM32L0XX_DFP文件中的Message函数不能正确识别,可能和pack包本身的版本有关系
解决方法:
编辑Keil.STM32F1xx_DFP.pdsc,注释涉及Message的语句
3)“Debug仿真时System Viewer菜单显示空白”
原因:
pack包配置问题
解决方法:
设置System Viewer File文件,如下
(4)debug单步调试
1)“单步调试无法进入main()”
原因:
STM32程序的启动位置错误。
解决方法:
1--检查BOOT0的引脚是否为低电平,确保STM32是从FLASH位置启动
2)“单步调试无法进入空的for循环”
某同学学习stm32,通过for循环的方式实现时间延时,但是在单步调试中发现,for循环部分无法正常打断点,单步执行的时候也是直接跳过。
代码如下:
KEIL编译器C语言编译选项优化等级说明
0
Minimum optimization. Turns off most optimizations.It gives the best possible debug view and the lowest level of optimization.
近乎不优化,用于调试代码。1
Restrictedoptimization. Removes unused inline functions and unused static functions.Turns off optimizations that seriously degrade the debug view. Ifused with --debug
, this option gives a satisfactorydebug view with good code density.
部分优化,移除未调用的内联函数和静态函数,关闭debug窗口优化,此状态也能用于调试2
Highoptimization. If used with--debug
, the debug viewmight be less satisfactory because the mapping of object code tosource code is not always clear.This is the default optimization level.
默认优化等级。3
Maximumoptimization.-O3
performs the same optimizationsas-O2
however the balance between space and timeoptimizations in the generated code is more heavily weighted towardsspace or time compared with-O2
. That is:
-
-O3 -Otime
aims to produce fastercode than-O2 -Otime
, at the risk of increasingyour image size -
-O3 -Ospace
aims to produce smallercode than-O2 -Ospace
, but performance might bedegraded.
In addition, -O3
performs extra optimizationsthat are more aggressive, such as:
-
High-levelscalar optimizations, including loop unrolling, for
-O3
-Otime
. Thiscan give significant performance benefits at a small code size cost,but at the risk of a longer build time. -
More aggressive inlining and automatic inliningfor
-O3 -Otime
.
KEIL编译器C语言编译选项优化等级设置不一样造成代码运行的效果完全不一样。
原因:
被编译器优化。
解决方法:
1--调整keil编译器优化等级为0等级
3)“Error: Encountered an improper argument”
在某些情况下,当您退出调试会话时,可能会显示一个错误对话框,提示“遇到不正确的参数”。 如果发生这种情况,μVision需要使用Windows任务管理器终止。
原因:
在STM32工程中路径、工程、文件夹、文件等名字中有keil无法兼容的字符。
解决方法:
1--找到有非法字符的位置,然后进行更新。
(5)编译、链接与烧录
1)“keil5 MDK 中缺core_cm3.o 报错 ”
mac中安装win10虚拟机,在MDK中移植ST公司标准库,会遇到此问题。
原因:
keil本身存在的bug问题,与自己使用的系统有问题。
解决方法:
1--安装最新版本
2、VSCode
(1)VSCode编译问题
1)“No such file or directory”
原因:
编辑器没有找到相应文件
解决方法:
1--检查路径、文件权限以及文件名中是否有空格