ch58x/ch59x窗口/独立看门狗

一、窗口看门狗

CH58x/CH59x的看门狗计数器是8位的(计数最大255),计数周期131072/Fsys

以582/592为例,evt中主频都是60M,看门狗最大时间 (131072/60000000)*255=0.557056s

具体使用方式:

#include "CH58x_common.h"

#define IRQ  1
#define RST  !IRQ

static uint16_t i = 0;

void DebugInit(void){
    GPIOA_SetBits(GPIO_Pin_9);
    GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU);
    GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA);
    UART1_DefInit();
}

int main(){
    SetSysClock(CLK_SOURCE_PLL_60MHz);

    /* 配置串口调试 */
    DebugInit();
    PRINT("Start @ChipID=%02X\n", R8_CHIP_ID);

#if IRQ
    WWDG_SetCounter(0);//喂狗
    WWDG_ITCfg(ENABLE);
    PFIC_EnableIRQ(WDOG_BAT_IRQn);
#else
    WWDG_SetCounter(0);//喂狗
    WWDG_ClearFlag();
    WWDG_ResetCfg(ENABLE);
#endif

     while(1){
         i++;
         if(i == 0){
             PRINT("III...\n");
         }
        WWDG_SetCounter(0);//喂狗
     }
}

__INTERRUPT//中断函数
__HIGH_CODE
void WDOG_BAT_IRQHandler(void){
    PRINT("WWDG IRQ...\n");
    WWDG_SetCounter(0);
    //代码配置,自行选择是否复位
}

注意点:

  1. 看门狗结合睡眠使用,喂狗在while循环中喂狗。睡眠时主频停止,因此看门狗是不运行的。睡眠后看门狗的寄存器会清0,因此不会重新复位。
  2. 结合flash一起使用,看门狗在操作flash的时候寄存也是在计数的,但是由于flash操作速度比较快,所以不喂狗也可以。如果操作flash的时间比较长,则使用看门狗中断的方式,因为在flash操作时所有中断都是停止的,所以此时看门狗寄存器在计数但是计满了也不会进看门狗的中断,等到操作flash结束会立马进入中断执行中断中的对应函数,此时可以在中断中通过标志的方式进行检测。如是因为操作flash进入的中断则继续顺序执行代码;如非操作flash而进入中断,说明此时的程序运行不正常,则进行复位等处理(中断中处理)。

二、独立看门狗

 独立看门狗(IWDG)由专用的内部低速时钟(LSI)驱动(584/585)
image

根据寄存器描述,IWDG最大时间可以是(0xFFF/(32K/512))=65.52s

代码如下:

#define  FEED_IWDG()   {R32_IWDG_KR=0xAAAA;} //需要定时调用喂狗

初始化及喂狗配置:

void IWDG_Enable()
{
    R32_IWDG_KR=0x5555;//解除IWDG保护
    R32_IWDG_CFG |= (7<<12);//32K分频512,时钟62.5Hz
    R32_IWDG_CFG &=0xFFFFF000;
    R32_IWDG_CFG |=0xFFF;//看门狗时间约65s(0xFFF/(32K/512))
    R32_IWDG_KR=0xCCCC; //开启IWDG保护
}

void main()
{
    IWDG_Enable(); //使能IWDG
    PRINT("R32_IWDG_CFG = %x\r\n", R32_IWDG_CFG);
    while(1){
        FEED_IWDG(); //喂狗
    }
}
 喂狗时间具体由这个寄存器决定的R32_IWDG_CFG通过修改分频系数和重装载值。

注意点:

  1. 使用外部32K晶振,则需要手动将内部32K上电,因为独立看门狗是基于内部32K生效的;

 

posted @ 2026-05-06 09:09  SweetTea_lllpc  阅读(75)  评论(0)    收藏  举报