打印
[STM8]

系统仿真的问题

[复制链接]
2573|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wanghaibo1026|  楼主 | 2014-11-11 21:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人新做了个板子,用的是STM8S903K3芯片,可以用STVP烧写程序,但出现了以下两个问题:
1:一仿真就出现提示:swim error [30004]:comm timeout ,换了个板子也是一样的问题,5V电源没有问题,使用的是16MHZ 外部晶振, 复位电路用的是 5V接4.7K电阻接104电容到地;
2:程序在运行过程中,会出现始终在中断中运行,运行不到主程序,中断标志TIM5->SR1 &= 0xFE;进来就清零了,
以上2个问题请大家指点一下,谢谢!!!
沙发
mmuuss586| | 2014-11-11 22:06 | 只看该作者
第一个问题,连接不正常;
一般硬件原因:比如板子不稳定(电源),线太长;
当然软件设置不正确也有可能;
楼主好好查查;

使用特权

评论回复
板凳
wanghaibo1026|  楼主 | 2014-11-12 08:09 | 只看该作者
我在补充一下,连接是正常的,就是仿真时,连续运行一会就会停下来,出现提示:swim error [30004]:comm timeout

使用特权

评论回复
地板
wanghaibo1026|  楼主 | 2014-11-12 10:56 | 只看该作者
顶一下,请大家看看有没有碰到类似问题,谢谢

使用特权

评论回复
5
hopewise| | 2014-11-12 14:06 | 只看该作者
1.wanghaibo1026:我也碰过,后来不吹电风扇,就OK了---2.关于STVP烧写程序问题,wanghaibo1026,你是怎么能烧写的?我用STVD可以仿真,烧写程序,但在STVP则用ST-LINK烧写后,提示烧写成功,但实测效果不对或者没反应

使用特权

评论回复
6
hopewise| | 2014-11-12 14:15 | 只看该作者
wanghaibo1026 第2个问题:应该中断里采用用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;        //开定时器中断
}
另外,不知你的中断号搞对否.       

使用特权

评论回复
7
wanghaibo1026|  楼主 | 2014-11-12 15:23 | 只看该作者
楼上你好,感谢的你回答,
1:我的第一个问题可能是供电电源问题,:具体情况如下:
   我的系统电路时用AC220供电,整流后经BUCK电路后得到12V,再经7805给单片机供电,整个系统和交流电供地,仿真时,程序可以通过STVD运行,但是对系统的按键电路进行操作时,就会出现swim error [30004]:comm timeout ;
   而后我将系统电路改成和交流电源隔离过的直流电源供电,仿真时,对系统的按键电路进行操作时一切正常;现在分析可能是系统和交流电源供地时是不是仿真电路有影响,不知道大家有没有用过和我一样的供电方式;
2:第二问题,我开始怀疑是不是晶振导致的,后将系统由外部晶振改为内部晶振,程序运行后,就没有出现过类似问题,但很奇怪,当我再改成外部晶振后,这个问题也不能复现,所以,现在也不能确定是外部晶振的问题;问题仍在找,希望大家给点提示。

hopewise 说后来不吹电风扇,就OK了,能说具体点吗,谢谢!



使用特权

评论回复
8
hopewise| | 2014-11-12 16:47 | 只看该作者
可能我买的仿真器受环镜影响大吧,反正我开电风扇的话,就会出现wim error [30004]: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全局中断

使用特权

评论回复
9
hopewise| | 2014-11-12 16:50 | 只看该作者
这是我用STM8S003F3P6(SOP20)的调交流可控规。我现一般不用外部晶振的,因为有时摸一下电路板,死机了。内内晶振的话,则OK

使用特权

评论回复
10
hopewise| | 2014-11-12 16:56 | 只看该作者
你是不是打开看门狗?我也用到看门狗,正常啊.
                 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输出控制
                        }               
                 }       

使用特权

评论回复
11
wanghaibo1026|  楼主 | 2014-11-12 17:19 | 只看该作者
   谢谢回答,刚刚做了一些实验,系统改用直流电源供电,仿真和程序都一切正常(改成内部晶振和外部晶振都能正常工作),但是系统一但改回交流AC220供电,CPU的5V电源一但和电网的零线供电就出现了以上2个问题, 不能仿真,程序工作也出错,
  不知道,有没有人使用过交流降压不隔离的5V电源供电系统,是否有我遇到的问题,请大家看看!!!

使用特权

评论回复
12
周董| | 2014-11-13 14:57 | 只看该作者
支持一下··

使用特权

评论回复
13
1314一路向前| | 2015-11-17 21:58 | 只看该作者
我用电池供电,也会出现和你一样的问题一。这咋弄呢

使用特权

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

本版积分规则

18

主题

68

帖子

1

粉丝