STM8单片机常见问题及解决方案

仿真报错  error30220

在用STVD软件仿真程序的时候,有时候报错。弹出一个error30220的警告窗口。

 

 

 

引起这个问题原因有可能是烧写软件STVP软件刚烧写过程序,STLINK 被烧写软件占用了,这时可以把烧写软件STVP关掉,然后重新仿真,就能正常使用了。如果还不行就拔掉STLINK烧写器,关掉软件。重新打开软件,连接烧写器。

烧写程序时报错

有时候在烧写程序的时候会提示RAM中已经存了一个文件

 

这是因为片子里面已经烧写过程序,而这次烧写程序的时候,有可能点到了第三个按钮上(方块圈起来的),烧写时用第二个文件夹图标的按钮。另外在烧写的时候要注意芯片型号是否选择正确。

 

烧不进去程序

有时在烧写程序的时候会提示程序烧写不进去。

首先看芯片型号和烧写器是否选择正确,在configure中选择 configure ST Visual Programmer.

 

然后在Hardware中选择ST-LINK,Port中选阵USB,Programming mode中选择SWIM,Device中选择单片机型号。

 

如果设置都正确,但是还不能成功烧写程序。

 

这时候可以在烧写软件中选择 OPTION BYTE选项,然后将ROP后面的选项设置为ON,然后点击烧写按钮烧一次程序,然后在将ROP的选项设置为OFF,在烧写一次程序。这时候就可以正常烧写程序了。

程序仿真时正常运行,但是烧写到单片机后不能正常运行。

首先检查程序烧写步骤是否正常,如果烧写程序步骤都正确,但是程序不能正常执行,这时候需要检查程序中是否用到了具有复用功能的引脚,如果程序中用到了复用功能的引脚,那么就要通过选项字节来设置复用功能。通过程序设置复用功能的方法为:

 

主要是给0x4803和0x4804这两个地址赋值。具体可以看数据手册

 

将要设置的值写入OPT选项字节中,并且将需要设置的值取反写入到互补选项字节中。

只有将当前值和它的反码同时写入到选项字节中后,复用功能才能正常开启。

 

 

通过设置OPT2中的AFR位,设置需要复用的引脚。

在实际调试的过程中发现,程序中设置的复用功能在仿真的时候可以正常执行,但是程序烧写到芯片内后,复用功能就不能正常执行。经过检查发现在烧写程序的时候,烧写软件在OPTION BYTE中对AFR的设置就会发生改变,所以在烧写程序的时候要对软件进行复用功能设置。

 

一般情况下,只要在烧写软件中将复用功能设置正确。程序就能正常执行。

如果经过上述方法后,烧写的程序还不能正常执行。这时候检查烧写软件STVP和仿真软件STVD是否同时打开。如果先用仿真软件仿真过后,然后直接用烧写软件烧程序的时候就会出现程序烧写进去之后,程序不能正常执行。要将仿真软件STVD关闭,只打开烧写软件STVP,这时候按照正常步骤烧写,程序就能正常执行了。经测试发现通过仿真软件仿真后,程序会被直接下载到单片机中,不用烧写芯片,程序也能正常执行。