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

[复制链接]
292|4
 楼主 | 2018-3-2 17:23 | 显示全部楼层 |阅读模式
本帖最后由 混子黄 于 2018-3-2 17:36 编辑

我用串口更新程序以后,软件复位。但是功能已经有所缺失了。
但是重新上电以后新的程序能正确运行。

请问大家这是什么原因?

软件复位用看门狗实现
| 2018-3-8 14:41 | 显示全部楼层
这要看手册,有些功能,寄存器不会被复位
 楼主 | 2018-3-8 16:48 | 显示全部楼层
ayb_ice 发表于 2018-3-8 14:41
这要看手册,有些功能,寄存器不会被复位

谢谢回复,我的问题已经解决了,是我软件没写好。
| 2018-3-13 22:44 | 显示全部楼层
混子黄 发表于 2018-3-8 16:48
谢谢回复,我的问题已经解决了,是我软件没写好。

最好还是分享一下
 楼主 | 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,才能进行通信。
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

关闭

热门推荐上一条 /6 下一条

分享 快速回复 返回顶部 返回列表