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

最新更新时间:2021-10-18来源: eefocus关键字: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,这时候按照正常步骤烧写,程序就能正常执行了。经测试发现通过仿真软件仿真后,程序会被直接下载到单片机中,不用烧写芯片,程序也能正常执行。

关键字:STM8  单片机  常见问题 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic548625.html

上一篇:单片机ADC采样算法----消抖滤波法
下一篇:STM系列单片机中文参考手册下载方法

推荐阅读

新唐N76E003+GPRS 单片机复位故障排除手记
应用场景GPRS模块采用AIR202/AIR208,电源方案是JW5033;单片机采用新唐N76E003,双串口,18K flash,电源与GPRS的DCDC 即JW5033共用一个5V输入电源。问题描述GPRS联网时或联网成功后收发数据的数据,新唐单片机复位重启。故障排除1、单片机电源前增加电容初步怀疑是供电不足,使用示波器观察后排除此原因,如果真的是供电不足,GPRS模块也应该会同时重启,实际上单片机模块重启时GPRS模块一直正常工作。2、设置单片机P2.0引脚为输入模式而非复位模式将P2.0引脚由复位引脚更改为输入引脚后,故障排除。我的理解是更改为输入引脚后,射频干扰不足以引起单片机复位了,深层次的原因不详。
发表于 2022-08-10
新唐N76E003+GPRS <font color='red'>单片机</font>复位故障排除手记
关于51单片机的地址空间溢出以及解决方法的个人看法(proteus无法仿真)
在51单片机程序编写中,当变量过多而且数据类型过大的话,容易在编译的时候出现以下的问题,具体表现为: *** ERROR L107: ADDRESS SPACE OVERFLOWSPACE: DATA SEGMENT: _DATA_GROUP_LENGTH: 0019HProgram Size: data=130.0 xdata=7 code=3267Target not created.这样子也就是所谓的编译失败,不能生成HEX文件,更加无法烧写到程序中去,那么如何解决这个问题呢,我在网上找到了解法,网上的具体步骤如下:1.先点击这个图标2.在其中的memory model 将small改成compact选项,那么即可编译通过。3
发表于 2022-08-10
关于51<font color='red'>单片机</font>的地址空间溢出以及解决方法的个人看法(proteus无法仿真)
51单片机脉冲信号的计数和LCD显示
设计目标和思路在个人剂量仪开发的过程中,从探头输出的核脉冲信号经过后期放大,成形,滤波以及甄别之后,成为一系列脉冲信号输出,这种脉冲信号由于衰变的随机性,并不是固定频率的脉冲信号。我们本次设计就是针对这种脉冲进形脉冲信号的计数以及在LCD1602显示屏上面的显示。这是C语言的代码部分#include"reg51.h" #include <stdio.h>#include <math.h>#include <string.h>#include <intrins.h>#define uint8_t unsigned char //0-255#define uint16
发表于 2022-08-10
51<font color='red'>单片机</font>脉冲信号的计数和LCD显示
51单片机之74HC138译码器控制数码管进行100s计数
/** I use a timer in my code to control the time I use 138decoder int the hardware**/#include<reg51.h>#define uint unsigned int#define uchar unsigned charsbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;uchar code tab_1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};uchar tab_2[2];uchar counter=0,time=0,counter_T
发表于 2022-08-10
51单片机制作脉冲发生器
要求1.在Keil IDE(u Vision2)中完成应用程序设计,并编译2.在ISIS 7 Professional 中完成电路设计、调试与仿真/** I use a timer in my code to control the time**/#include<reg51.h>#define uint unsigned int#define uchar unsigned charuchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uchar second=0,counter=0,second_1=0,second_0=0,time=
发表于 2022-08-10
51<font color='red'>单片机</font>制作脉冲发生器
51单片机定时器2捕获模式测脉冲频率
常规方法测量脉冲的频率,利用51单片机的两个定时器来测量,一个定时器来定时,一个定时器作为计数方式;能不能有一个更好的方法,不使用这么多硬件,只使用一个定时器就可以满足需求? 当然可以的,定时器2有输入捕获功能,P1.1接外部脉冲,当来一个脉冲,定时2就进入中断服务程序中断一次,同时也有定时功能。下面是主要的程序:#include<reg52.h>#define uint unsigned int#define uchar unsigned char#define ulong unsigned longuint timer2_count;uint cap_count;uchar code dispbit[]={0x01,
发表于 2022-08-10

推荐帖子

LM3S811学习笔记(1)-GPIO输入输出
LM3S811学习笔记(1)-GPIO输入输出 这是一个简单的输入输出函数 实现了GPIO简单的输入输出功能当按键按下时LED点亮松手后LED熄灭 功能很简单的,高手勿笑。 电路图 程序 #include\"LM3Sxxx.h\" #defineKEY1GPIO_PIN_4#defineLED1GPIO_PIN_5 intmain(void){SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); GPIOPinT
loycolor 微控制器 MCU
STM32 107 CAN过滤器和掩码 设置函数
芯片资料没看到如何设置过滤器ID和掩码,结果弄了好久才搞清楚,原来固件库的接口还需要自己加工一下才行。 CP_VOIDCanSetFilter(CAN_NUM_TypeDefbyDevNo,CP_BYTEbyFilterNumber,CP_DWORDdwId,CP_DWORDdwMask,CP_BYTEbIsStdId) { assert_param(byFilterNumber<14); assert_param(IS_CAN_IDTYPE(bIsStdId)
likeqi2599 stm32/stm8
用过VL53L0X的看看, 读取IC产品ID号不对,是不是买到假货了
用过VL53L0X的看看,读取IC产品ID号不对,是不是买到假货了,并且一直报错误号-6(测距中断状态错误) 工作正常ID号为“VL53L0CXV0DH/1$1”,不正常的是“A531536RL0488”。焊了几个都是这个错误,但焊从拆下的VL53L0X就工作正常,所以怀疑是假的,或型号不对。 驱动采用的是官方的库,STM32F042主控。 下面是我从拆下的VL53L0X,焊到自已PCB板上,读到的ID号,换上后工作正常。 用过VL53L0X的看看,读取IC产品ID
uzufk MEMS传感器
如何快读打包生成ramdisk-uboot.img
有些老的android版本不会发现更新的文件,只有发现文件不存在的时候才会开始重新编译,所以为了安全起见,我们要手动删除掉ramdisk-uboot.img和ramdisk.img才行。 root@android2012-desktop:~/S5PV210-ics/android-4.0.3_r1#./build_android.sh Buildandroidforsmdkv210 [[[[[[[Buildandroidplatform]]]]]]]
Wince.Android 嵌入式系统
寻大佬解答。。
有个问题,想请教一下论坛的大佬们:温度传感器是怎么实现对温度微小变量的放大显示的?就是假如文变量是0.01摄氏度,温度传感器通过什么结构实现?寻大佬解答。。
正点航班 传感器
单电源的应用
本帖最后由btty038于2021-12-2311:47编辑 在运放的实际使用,我们一般为了保持运放的频率特性,一般都采用双电源供电,但有的时候在实际使用,我们只有单电源的情况,也能实现运放的正常工作。首先我们运用运放跟随电路,实现一个VCC/2的分压: 分压电路 当然,如果在要求不是很高的场合,我们可以直接电阻分压,获得+VCC/2,但由于电阻分压的特性所在,其动态的响应速度会非常慢,请谨慎使用。获得+VCC/2后,我
btty038 RF/无线
小广播
实战 培训 开发板 精华推荐

何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved