TI中文支持网
TI专业的中文技术问题搜集分享网站

为什么在使用28335的Flash_API编辑片内Flash后,会将看门狗软复位的标志位WDFLAG位清零

在调用API函数Flash_Program()编辑片内Flash时,通过单步调试,查看汇编语言其在关闭看门狗时将看门狗软复位的标志位WDFLAG位清零

 $Flash28_Utils.asm:26:40$, Fl28x_WatchDogDisable:
00a42f:   7622        EALLOW      00a430:   F5A97029    MOV          @AL, *(0:0x7029)
00a432:   5068        ORB          AL, #0x68                          (1)
00a433:   F4A97029    MOV          *(0:0x7029), @AL
00a435:   761A        EDIS        00a436:   0006        LRETR   

 然而,通过调用void DisableDog(void)函数关闭看门狗时,WDFLAG位并没有清零

130         EALLOW;
        DisableDog:
339fa1:   7622        EALLOW      131         SysCtrlRegs.WDCR= 0x0068;                                  (2)
339fa2:   761F01C0    MOVW         DP, #0x1c0
339fa4:   56BF6829    MOVB         @0x29, #0x68, UNC
132         EDIS;
339fa6:   761A        EDIS

原因为(1)中用了按位或,在软启动后给WDFLAG写1,使得该位清零,这个是必须这样做吗?

除了TheWDFLAGbitis onlysetif arising edgeonWDRSTsignalis detected(aftersynchandan8192SYSCLKOUTcycledelay)andthe XRSsignalishigh该方法,还有什么方法使得看门狗在不软复位的情况下能够使WDFLAG位置1?

希望大家能够帮忙,先谢谢了!

Young Hu:

The WDFLAG bit is only set if a rising edge on WDRST signal is detected (after synch and an 8192 SYSCLKOUT cycle delay) and the XRS signal is high.

就只有文档上说的这些了。

在调用API函数Flash_Program()编辑片内Flash时,通过单步调试,查看汇编语言其在关闭看门狗时将看门狗软复位的标志位WDFLAG位清零

 $Flash28_Utils.asm:26:40$, Fl28x_WatchDogDisable:
00a42f:   7622        EALLOW      00a430:   F5A97029    MOV          @AL, *(0:0x7029)
00a432:   5068        ORB          AL, #0x68                          (1)
00a433:   F4A97029    MOV          *(0:0x7029), @AL
00a435:   761A        EDIS        00a436:   0006        LRETR   

 然而,通过调用void DisableDog(void)函数关闭看门狗时,WDFLAG位并没有清零

130         EALLOW;
        DisableDog:
339fa1:   7622        EALLOW      131         SysCtrlRegs.WDCR= 0x0068;                                  (2)
339fa2:   761F01C0    MOVW         DP, #0x1c0
339fa4:   56BF6829    MOVB         @0x29, #0x68, UNC
132         EDIS;
339fa6:   761A        EDIS

原因为(1)中用了按位或,在软启动后给WDFLAG写1,使得该位清零,这个是必须这样做吗?

除了TheWDFLAGbitis onlysetif arising edgeonWDRSTsignalis detected(aftersynchandan8192SYSCLKOUTcycledelay)andthe XRSsignalishigh该方法,还有什么方法使得看门狗在不软复位的情况下能够使WDFLAG位置1?

希望大家能够帮忙,先谢谢了!

mangui zhang:

相关问题

http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/68055.aspx

在调用API函数Flash_Program()编辑片内Flash时,通过单步调试,查看汇编语言其在关闭看门狗时将看门狗软复位的标志位WDFLAG位清零

 $Flash28_Utils.asm:26:40$, Fl28x_WatchDogDisable:
00a42f:   7622        EALLOW      00a430:   F5A97029    MOV          @AL, *(0:0x7029)
00a432:   5068        ORB          AL, #0x68                          (1)
00a433:   F4A97029    MOV          *(0:0x7029), @AL
00a435:   761A        EDIS        00a436:   0006        LRETR   

 然而,通过调用void DisableDog(void)函数关闭看门狗时,WDFLAG位并没有清零

130         EALLOW;
        DisableDog:
339fa1:   7622        EALLOW      131         SysCtrlRegs.WDCR= 0x0068;                                  (2)
339fa2:   761F01C0    MOVW         DP, #0x1c0
339fa4:   56BF6829    MOVB         @0x29, #0x68, UNC
132         EDIS;
339fa6:   761A        EDIS

原因为(1)中用了按位或,在软启动后给WDFLAG写1,使得该位清零,这个是必须这样做吗?

除了TheWDFLAGbitis onlysetif arising edgeonWDRSTsignalis detected(aftersynchandan8192SYSCLKOUTcycledelay)andthe XRSsignalishigh该方法,还有什么方法使得看门狗在不软复位的情况下能够使WDFLAG位置1?

希望大家能够帮忙,先谢谢了!

chang qing:

回复 Young Hu:

这个我看到了,我想知道API函数中关看门狗为什么要用按位或?

在调用API函数Flash_Program()编辑片内Flash时,通过单步调试,查看汇编语言其在关闭看门狗时将看门狗软复位的标志位WDFLAG位清零

 $Flash28_Utils.asm:26:40$, Fl28x_WatchDogDisable:
00a42f:   7622        EALLOW      00a430:   F5A97029    MOV          @AL, *(0:0x7029)
00a432:   5068        ORB          AL, #0x68                          (1)
00a433:   F4A97029    MOV          *(0:0x7029), @AL
00a435:   761A        EDIS        00a436:   0006        LRETR   

 然而,通过调用void DisableDog(void)函数关闭看门狗时,WDFLAG位并没有清零

130         EALLOW;
        DisableDog:
339fa1:   7622        EALLOW      131         SysCtrlRegs.WDCR= 0x0068;                                  (2)
339fa2:   761F01C0    MOVW         DP, #0x1c0
339fa4:   56BF6829    MOVB         @0x29, #0x68, UNC
132         EDIS;
339fa6:   761A        EDIS

原因为(1)中用了按位或,在软启动后给WDFLAG写1,使得该位清零,这个是必须这样做吗?

除了TheWDFLAGbitis onlysetif arising edgeonWDRSTsignalis detected(aftersynchandan8192SYSCLKOUTcycledelay)andthe XRSsignalishigh该方法,还有什么方法使得看门狗在不软复位的情况下能够使WDFLAG位置1?

希望大家能够帮忙,先谢谢了!

chang qing:

回复 mangui zhang:

这个帖子我看过,但还是解决不了我的问题,会是我的程序一直在复位重启。。。

赞(0)
未经允许不得转载:TI中文支持网 » 为什么在使用28335的Flash_API编辑片内Flash后,会将看门狗软复位的标志位WDFLAG位清零
分享到: 更多 (0)