登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

KEIL ARM中看门狗喂狗一定要关中断吗?不关有多大影响?

作者:pubstar 栏目:ARM技术
KEIL ARM中看门狗喂狗一定要关中断吗?不关有多大影响?
一次喂不成功,还有下一次,在实际应用中,一个复位周期中,喂狗的次数应是足够多。

如果一个复位周期内喂狗次数足够多,全部喂不上的概率有多大?

    cpu_sr=DisableInterrupt();
    WDFEED=0xaa;                                  
    WDFEED=0x55;                                  
    EnableInterrupt(cpu_sr);

在上面的程序中,如果不进行开关中断,每次喂狗程序至少少执行上百条指令。

U32 DisableInterrupt(void) __swi(9) __arm
{   
    __asm
    {
      MRS     R1, SPSR
      ORR     R0, R1, #0xc0
      MSR     SPSR_c, R0
      LDR     R0,=Interrupt_cpu_sr
      STR     R1,[R0,#0x0]
   }
    return Interrupt_cpu_sr;
}

/* ----------------------------------------------------------------------------
   函数名: EnableInterrupt
   功能:  使能中断
   入口:  无
   出口:  无
*/

void EnableInterrupt(U32 cpu_sr) __swi(8) __arm
{
    cpu_sr=cpu_sr;         
    __asm
   {
      MSR     SPSR_c, R0
   }


/***********************************************************************/
/*  This file is PART of the CA ARM C Compiler PACKAGE                 */
/*  COPYRIGHT KEIL ELEKTRONIK GmbH 2002 - 2004                         */
/***********************************************************************/
/*                                                                     */
/*  SWI_VEC.S:  Pre-defined vectored interrupt handler SWI interrupt   */
/*                                                                     */
/***********************************************************************/

AREA ?C?SWI, CODE, READONLY, ALIGN=2

PUBLIC SWI_Handler?A, ?SWI?Table, ?SWI?Empty

SWI_Handler?A    PROC CODE32
        STMFD   SP!,{LR}           ; Store LR register
        MRS     R8,SPSR
        TST     R8,#0x20           ; SWI call from
        LDRNEH  R8,[LR,#-2]        ; Thumb: Load halfword instruction
        ANDNE   R8,R8,#0xFF        ;        extract SWI NUMBER
        LDREQ   R8,[LR,#-4]        ; ARM:   Load word     instruction
        BICEQ   R8,R8,#0xFF000000  ;        extract SWI NUMBER
                                   ; R4 now contains SWI NUMBER
; SWI Handler
;       LDR     R12,[PC,#(?SWI?Table-$-8)] ; Maximum NUMBER of interrupts
;       LDR     R12,[PC,#0x24]     ; Maximum NUMBER of interrupts
        ADR     R12,?SWI?Table
        LDR     R12,[R12]          ; load last SWI-Function-NUMBER

        CMP     R8,R12                                             
        BGT     ?SWI?Empty         ; overflow
        ADR     R12,?SWI?Table+4
        LDR     R12,[R12,R8,LSL #2]; SWI function address
        MOV     LR,PC              ; Return address
        BX      R12                ; Call SWI function

        LDMFD   SP!,{PC}^          ; Return

?SWI?Empty:
        B       $                  ; no existing SWI

; *** DO NOT MODIFY THIS PORTION OF THE FILE ***
?SWI?Table:                        ; Marker for LA Linker                       
;
; The LA Linker inserts at this label
;       DD      0                &
2楼: >>参与讨论
hyhmh
喂狗不正确(包括时序),狗也咬人
Once 0xAA is written to the WDFEED register the next operation in the Watchdog register space should be a WRITE (0x55) to the WDFFED egister otherwise the watchdog is triggered. The interrupt/reset will be generated during the second PCLK following an incorrect access to
a watchdog timer register during a feed sequence.

老周文档的对应翻译:
向WDFEED寄存器写入0xAA 的下一个操作应当是向WDFEED 寄存器写入0x55,除非看门狗被触发。在一个喂狗时序中,一次对看门狗定时器寄存器不正确的访问之后第二个pclk 周期将产生中断/复位。

3楼: >>参与讨论
SMARTCODE
纠正一下,应该把“除非”换成“否则”。不然有歧义。
 
4楼: >>参与讨论
liuhuai
一定得关
一定得关,不关中断,系统复位

5楼: >>参与讨论
hjf8031
一定得关!
用了就知道,LPC-ARM不少增强功能是要关中断的.

参与讨论
昵称:
讨论内容:
 
 
相关帖子
~!求助定时中断问题!!~~
有没有使用2220死机的兄弟们
求助周工和各位大侠,关于bootloader问题
LPC213X的IO口模拟总线与ISP冲突
在keil 2.50a中怎么用realview 编译器
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号