首页 > 其他分享 >CH573 CH582 CH592 CH579 看门狗WDOG例程

CH573 CH582 CH592 CH579 看门狗WDOG例程

时间:2023-11-24 14:59:16浏览次数:41  
标签:CH579 CH592 WDOG 例程 void 看门狗 sys 复位 WWDG

看门狗功能是基于一个8位的递增计数器,计数时钟周期为131072/Fsys。当开启了看门狗超时复位功能后,一旦此计数器溢出会复位整个系统。

CH579例程中主频都是32M,看门狗超时复位最长时间为 131072/32000000*255=1.04448s。

CH573 CH582 CH592例程中主频都是60M,看门狗超时复位最长时间为 131072/60000000*255=0.557056s。

看门狗有两种使用方法:

一、看门狗复位:

void main()
{
    WWDG_SetCounter(0);//喂狗
    WWDG_ClearFlag();
    WWDG_ResetCfg(ENABLE);//使能看门狗复位
   while(1)
   {
      WWDG_SetCounter(0);//喂狗
DelayMs(1000);//可修改延时测试看门狗复位
}
}

二、看门狗中断:

void main()
{
  WWDG_SetCounter(0);//喂狗 
  WWDG_ITCfg(ENABLE);//使用看门狗中断
  PFIC_EnableIRQ(WDOG_BAT_IRQn);//中断服务使能
   while(1)
   {
       WWDG_SetCounter(0);//喂狗
       DelayMs(1000);//可加大延时测试看门狗溢出
   }
}

CH573 CH582 CH592中断服务函数写法:
__INTERRUPT//中断函数
__HIGH_CODE
void WDOG_BAT_IRQHandler(void)
{
  WWDG_SetCounter(0);//喂狗 
  SYS_ResetExecute();//可在此处调用软件复位实现复位
}
CH579中断服务函数写法:
void WDT_IRQHandler(void)
{
  WWDG_SetCounter(0);//喂狗 
  SYS_ResetExecute();//可在此处调用软件复位实现复位
}

 

看门狗的库函数文件目录:StdPeriphDriver/CH57x_sys.c或StdPeriphDriver/CH58x_sys.c或StdPeriphDriver/CH59x_sys.c

下面是看门狗库函数介绍:

1.看门狗中断使能

/*********************************************************************
 * @fn      WWDG_ITCfg
 *
 * @brief   看门狗定时器溢出中断使能
 *
 * @param   s       - 溢出是否中断
 *
 * @return  none
 */
void WWDG_ITCfg(FunctionalState s)
{
    uint8_t ctrl = R8_RST_WDOG_CTRL;

    if(s == DISABLE)
    {
        ctrl &= ~RB_WDOG_INT_EN;
    }
    else
    {
        ctrl |= RB_WDOG_INT_EN;
    }

    sys_safe_access_enable();
    R8_RST_WDOG_CTRL = ctrl;
    sys_safe_access_disable();
}

2.开门狗复位使能

/*********************************************************************
 * @fn      WWDG_ResetCfg
 *
 * @brief   看门狗定时器复位功能
 *
 * @param   s       - 溢出是否复位
 *
 * @return  none
 */
void WWDG_ResetCfg(FunctionalState s)
{
    uint8_t ctrl = R8_RST_WDOG_CTRL;

    if(s == DISABLE)
    {
        ctrl &= ~RB_WDOG_RST_EN;
    }
    else
    {
        ctrl |= RB_WDOG_RST_EN;
    }

    sys_safe_access_enable();
    R8_RST_WDOG_CTRL = ctrl;
    sys_safe_access_disable();
}

3.看门狗清除中断

/*********************************************************************
 * @fn      WWDG_ClearFlag
 *
 * @brief   清除看门狗中断标志,重新加载计数值也可清除
 *
 * @param   none
 *
 * @return  none
 */
void WWDG_ClearFlag(void)
{
    sys_safe_access_enable();
    R8_RST_WDOG_CTRL |= RB_WDOG_INT_FLAG;
    sys_safe_access_disable();
}

4.看门狗喂狗

/**
 * @brief   加载看门狗计数初值,递增型
 *
 * @param   c       - 看门狗计数初值
 */
#define WWDG_SetCounter(c)    (R8_WDOG_COUNT = c)

5.看门狗中断服务函数

__INTERRUPT
__HIGH_CODE
void WDOG_BAT_IRQHandler(void)
{
  WWDG_SetCounter(0);
}

END...

标签:CH579,CH592,WDOG,例程,void,看门狗,sys,复位,WWDG
From: https://www.cnblogs.com/risc5-ble/p/17853714.html

相关文章

  • CH573 CH582 CH592 CH579常用库函数记录
    一:系统篇:软件复位SYS_ResetExecute();延时函数mDelaymS(1);//延时1msmDelayuS(1);//延时1us设置晶体匹配电容 voidHSECFG_Capacitance(HSECapTypeDefc);//外部高频32MHZvoidLSECFG_Capacitance(LSECapTypeDefc);//外部低频32.768KHZ 开启DCD......
  • Qt3D改变观察视角例程(二)
    本例依旧是改变3D视角。不同的是这个是视野位置不变而只改变观察方向。相当于一个人站在原地不动,旋转脑袋看周围的东西。测试的条件是VS2017和Qt5.9。主要的知识点就是欧拉角的计算。下面是效果图:头文件:classQOpenGLTexture;classQOpenGLBuffer;classMvOpenGLWidget:p......
  • 一种通用的arduino通信例程
    本教程将给出一种通用的,适用于arduino(uno和mega等)单片机的一个通信的教程,通过对例程的修改,可以做成任意的符合需求的代码,下面请看。//函数定义StringdetectString_openmv();intrecv_order();StringdetectString_openmv()//判断传入的字符串能否被接收{//我们传入......
  • 电机矢量控制算法和例程
    电机矢量控制算法是一种高级的电机控制方法,它通过将电机转子空间矢量转换到旋转坐标系中,并在该坐标系中进行控制来实现对电机的精确控制。下面是对电机矢量控制算法的详细解释:坐标系变换:电机矢量控制首先将电机转子空间矢量变换到一个旋转坐标系中,通常是dq坐标系。dq坐标系是以转子......
  • 基于ZCU104的PS和PL数据交互例程(三):vivado中创建IP
    基于ZCU104的PS和PL数据交互例程(三):vivado中创建IP以创建带有AXI-LITE接口的IP为例子按照下面步骤创建这里注意,这里选择的NumberofRegisters,会在后面的代码里面对应slv_reg0,slv_reg1,...,slv_reg3打开IP目录,右键刚才的IP,选择EidtinIPPackagercontroller_v1_0......
  • 基于ZCU104的PS和PL数据交互例程(二):vivado中封装现有工程成IP
    基于ZCU104的PS和PL数据交互例程(二):vivado中封装现有工程成IP设计DUT功能正常创建一个vivado工程,添加一个dut.v的文件功能:读入100个输入数据,每个数据依次加0,1,2,...,然后输出。比如输入是0到99,则输出是0,2,4,到198,如下图所示。状态机:时序图:端口情况:创建vivado工程正常创建新......
  • Sobel算子详解及例程
    Sobel算子是一种经典的边缘检测算子,被广泛应用于图像处理领域。它基于图像亮度的变化率来检测边缘的位置,主要通过计算图像中像素点的梯度来实现。Sobel算子分为水平和垂直两个方向的算子,记作Gx和Gy。它们分别对图像进行水平和垂直方向的卷积运算,得到对应方向上的梯度值。具体而言,So......
  • (CH592-CH305)2K鼠标上报率
    前言:使用CH592与CH305可实现2K鼠标上报率功能,具体功能和实现做以下讲解。描述:需要使用2块CH592的开发板和1块CH305开发板。2块CH592分别作为2.4GMouse(TX)和Dongle(RX)端的无线设备;CH305作为Dongle端连接上位机。连接示意图参考:代码烧录与接线:①烧录:由沁恒官方提供的3份......
  • 转载WIFI小车APP远程控制,无线智能小车之ESP8266例程
    WIFI小车APP远程控制,无线智能小车之ESP8266例程  第一、原理讲解原理简述:利用发布订阅模式,即:利用ESP8266订阅了一个主题,再利用appinventor编写的app往这个主题发布消息,由于ESP8266订阅了这个消息,所以就可以收到app发布得消息,从而执行相应得动作,比如前进\后退\左转\右......
  • 下载的PC游戏启动后报错:无法加载 DLL“steam_api64”: 动态链接库(DLL)初始化例程失败
    无法加载DLL“steam_api64”:动态链接库(DLL)初始化例程失败。(异常来自HRESU解决方式:将文件夹拷贝到Steam-->steamapps文件夹下面还好是忍者神龟抛了个异常,才找到了问题所在,论抛异常的重要性!!!忍者神龟如龙......