打印

软件复位和上电复位有何区别

[复制链接]
2911|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
混子黄|  楼主 | 2018-3-2 17:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ayb_ice| | 2018-3-8 14:41 | 只看该作者
这要看手册,有些功能,寄存器不会被复位

使用特权

评论回复
板凳
混子黄|  楼主 | 2018-3-8 16:48 | 只看该作者
ayb_ice 发表于 2018-3-8 14:41
这要看手册,有些功能,寄存器不会被复位

谢谢回复,我的问题已经解决了,是我软件没写好。

使用特权

评论回复
地板
zhangmangui| | 2018-3-13 22:44 | 只看该作者
混子黄 发表于 2018-3-8 16:48
谢谢回复,我的问题已经解决了,是我软件没写好。

最好还是分享一下

使用特权

评论回复
5
混子黄|  楼主 | 2018-3-14 08:17 | 只看该作者
在用上位机烧写好以后,程序配置如下:

          EALLOW;
   SysCtrlRegs.SCSR = 0x04;//WDRST模式复位。   EDIS;
   EDIS;

   EALLOW;
   SysCtrlRegs.WDCR = 0x002f;  //设置预定标器,注意101位!!!
   EDIS;


开看门狗,不喂狗使之复位。

关键不是这里,是我网口芯片的配置没有写好。

现在说一下我用的是W5300,然后采用的是中断方式,在数据进行数据交换的时候的配置没有写好。

改好的配置如下。

  loopback_tcps(0,5000,data_buf,0);
这是调用自带的demo。
然后下面是我自己改的地方。

if((getSn_SSR(0) & 0x00ff) == 0x1c)  
          {

             disconnect(0);
          close(0);
         socket(0,Sn_MR_TCP,5000,0);
      listen(0);
          
          }                                  


    if(((getSn_SSR(0) & 0x00ff) == 0x00))
      {                                           
      close(0);                        // close the SOCKET
      socket(0,Sn_MR_TCP,5000,0);
      listen(0);
          }

     if(((getSn_SSR(0) & 0x00ff) == 0x1b)||((getSn_SSR(0) & 0x00ff) == 0x18)||((getSn_SSR(0) & 0x00ff) == 0x1d))
      {                             
      close(0);                        // close the SOCKET
      socket(0,Sn_MR_TCP,5000,0);
      listen(0);
          }

   

     if((getSn_SSR(0) & 0x00ff) == 0x13)
         {
              listen(0);

      }

这个是将通信后的寄存器状态改变,不然通信就断了,无法在进行下一次通信。

然后再将对应的寄存器清0,才能进行通信。

使用特权

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

本版积分规则

107

主题

936

帖子

6

粉丝