一仿真就出现提示:swim error [30004]:comm timeout
STM8S903K3芯片,可以用STVP烧写程序,但一仿真就出现提示:swim error :comm timeout ,换个板子
换了个板子也是一样的问题,5V电源没有问题,使用的是16MHZ 外部晶振, 复位电路用的是 5V接4.7K电阻接104电容到地
连接不正常
程序在运行过程中,会出现始终在中断中运行,运行不到主程序,中断标志TIM5->SR1 &= 0xFE;进来就清零了,
一般硬件原因:比如板子不稳定(电源),线太长;
当然软件设置不正确也有可能;楼主好好查查; 我在补充一下,连接是正常的,就是仿真时,连续运行一会就会停下来,出现提示:swim error :comm timeout
我也碰过,后来不吹电风扇,就OK了-
关于STVP烧写程序问题,你是怎么能烧写的?我用STVD可以仿真,烧写程序,但在STVP则用ST-LINK烧写后,提示烧写成功,但实测效果不对或者没反应
应该中断里采用用TIM5_SR1=0X00;(清除更新标志UIF).我的初始化是
void TIM5_Init()
{
TIM5_IER = 0x00; //禁止中断
TIM5_EGR = 0x01; //允许产生更新事件
TIM5_PSCR=0X07; //分频系数是128
TIM5_ARRH =0x03; //定时时间数值
TIM5_ARRL =0xD0;
TIM5_CNTRH=0X01;
TIM5_CNTRL=0XE8;
TIM5_IER=0X01; //开定时器中断
}
另外,不知你的中断号搞对否. 我的第一个问题可能是供电电源问题,:具体情况如下:
我的系统电路时用AC220供电,整流后经BUCK电路后得到12V,再经7805给单片机供电,整个系统和交流电供地,仿真时,程序可以通过STVD运行,但是对系统的按键电路进行操作时,就会出现swim error :comm timeout ;
而后我将系统电路改成和交流电源隔离过的直流电源供电,仿真时,对系统的按键电路进行操作时一切正常;现在分析可能是系统和交流电源供地时是不是仿真电路有影响,不知道大家有没有用过和我一样的供电方式;
2:第二问题,我开始怀疑是不是晶振导致的,后将系统由外部晶振改为内部晶振,程序运行后,就没有出现过类似问题,但很奇怪,当我再改成外部晶振后,这个问题也不能复现,所以,现在也不能确定是外部晶振的问题;问题仍在找,希望大家给点提示。 可能我买的仿真器受环镜影响大吧,反正我开电风扇的话,就会出现wim error :comm timeout ;外部晶振我用过。没问题
我发我的初始化给你看一下:
GPIO_Init(); //GPIO断口初始?
//CLK_CKDIVR= 0X00; //内部16MHZ不分频
//判断当前时钟,如果不是外部晶振(HSE)的话,则切换为HSE
if(CLK_CMSR != 0XB4)
{
CLK_SWCR |= 0X02; //SWEN置1,使能切换
CLK_SWR=0XB4; //目标时钟源--0XB4指HSE
while((CLK_SWCR&0X08)==0); //等待,直到切换成功,SWIF被置1
CLK_SWCR = 0; //消除标志位
CLK_CSSR |= 0X01; //打开时钟安全系统CSS
}
TIM4_Init(); //TIM4定时器初始化
TIM2_Init(); //TIM2定时器初始化
ADC_Init(); //AD初始化
PWM_INIT(); //PWM初时化
CFG_GCR =0X01; //SWIM模式被禁用,SWIM引脚被用作普通I/O口。
TIM4_CR1|=0X01; //启动定时器4
TIM2_CR1|=0X01; //启动定时器2
ITC_SPR6|=0XC0; //定时器TIM4的优先级为3级
_asm("rim"); //允许MCU全局中断 这是我用STM8S003F3P6(SOP20)的调交流可控规。我现一般不用外部晶振的,因为有时摸一下电路板,死机了。内内晶振的话,则OK
你是不是打开看门狗?我也用到看门狗,正常啊.
IWDG_KR=0XCC; //启动硬件看门狗定时器(IDWG)
IWDG_KR=0X55; //解除IWDG_PR,IDWG_RLR寄存器写保护功能
IWDG_RLR=0XFF; //写入新的重装初值(看门狗时间=510ms)
IWDG_PR=0X5; //选择新的分频系数=5
IWDG_KR=0XAA; //恢复写保护功能
while (1)
{
if(t_us >= 40) //10ms
{
t_us = 0;
IWDG_KR=0XAA; //喂看门狗
key_scan(); //按键扫描
display_man(); //显示管理
display(); //显示驱动
key_deal(); //按键处理
time_man(); //时间管理
buz_man(); //蜂鸣器管理
PWM_OUTPUT(); //PWM输出控制
}
} 刚刚做了一些实验,系统改用直流电源供电,仿真和程序都一切正常
改成内部晶振和外部晶振都能正常工作?
嗯,但是系统一但改回交流AC220供电,CPU的5V电源一但和电网的零线供电就出现了以上2个问题, 不能仿真,程序工作也出错,
不知道,有没有人使用过交流降压不隔离的5V电源供电系统
页:
[1]
2