首页 > 其他分享 >CH582,CH592,CH57x系列芯片看门狗中断使用示例

CH582,CH592,CH57x系列芯片看门狗中断使用示例

时间:2024-06-07 15:56:51浏览次数:21  
标签:__ CH57x CH592 示例 void 看门狗 WWDG GPIO uint32

#include "CH58x_common.h"

/*********************************************************************
 * @fn      DebugInit
 *
 * @brief   调试初始化
 *
 * @return  none
 */
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();
}

void WWDG_Config(void)
{
    WWDG_SetCounter(0);//喂狗处理
    WWDG_ITCfg(ENABLE);//配置看门狗中断
    WWDG_ResetCfg(DISABLE);//看门狗中断生效后不复位,如果需要产生看门狗中断后立即复位,则参数填写ENABLE
    PFIC_EnableIRQ(WDOG_BAT_IRQn);//使能看门狗中断生效
}

void TEST_Code(void)
{
    WWDG_SetCounter(0);//喂狗处理
    static uint32_t count=0;
    count++;
    while(count>32000);//写一个死循环,产生现象后读取PC指针,去.lst文件中查看跑死在哪个地方
}

/*********************************************************************
 * @fn      main
 *
 * @brief   主函数
 *
 * @return  none
 */
int main()
{
    SetSysClock(CLK_SOURCE_PLL_60MHz);
    /* 配置串口调试 */
    DebugInit();
    PRINT("Start @ChipID=%02X\n", R8_CHIP_ID);
    WWDG_Config();

    while(1)
    {
        TEST_Code();
    }
}

uint32_t __get_MEPC(void);
uint32_t __get_MTVAL(void);
uint32_t __get_MCAUSE(void);
__attribute__((interrupt("WCH-Interrupt-fast")))
__attribute__((section(".highcode")))
void WDOG_BAT_IRQHandler(void)
{
  GPIOA_ModeCfg(1<<9, GPIO_ModeOut_PP_5mA);//串口IO引脚配置
  UART1_DefInit();
  UART1_BaudRateCfg(115200); //串口初始化,波特率配置

  uint32_t mepc = __get_MEPC();
  uint32_t mtval = __get_MTVAL();
  uint32_t mcause = __get_MCAUSE();
  printf("mepc = %08x\nmtval = %08x\nmcause = %08x\n",mepc,mtval,mcause); //异常后,如果没有喂狗,看门狗中断后,打印pc指针
  while(1);
}

 跑死后查看PC指针停在了0x00000bbe,前去.lst文件中查找对应函数

 

标签:__,CH57x,CH592,示例,void,看门狗,WWDG,GPIO,uint32
From: https://www.cnblogs.com/azou/p/18237334

相关文章

  • PHP实名认证接口开发示例、银行卡实名认证API
    在互联网技术多元化、高速的发展下,催生出在挑战中不断奋勇前进的互联网企业。但不能忽视的是,互联网技术的快速迭代也会使部分企业在冲击中败下阵来,面临淘汰的危机。随着O2O、共享经济等新兴商业形式的兴起,企业对实名认证业务的数据形式和数据质量也有了更高的要求。这一现实警......
  • 【机器学习】K-means聚类的最优k值的选取(含代码示例)
    ......
  • aws-lambda使用gin框架示例
    假设现在有个需求,项目需要部署到aws无服务器,但是我们的项目以及是成熟项目了,总不能从头开始写吧?所以有了github.com/awslabs/aws-lambda-go-api-proxy这个项目只需要改造路由部分,其他框架官网有示例packagemainimport( "context" "fmt" "github.com/aws/aws-lambda-go/......
  • nginx mirror流量镜像详细介绍以及实战示例
    nginxmirror流量镜像详细介绍以及实战示例1.nginxmirror作用2.nginx安装3.修改配置3.1.nginx.conf3.2.conf.d目录下添加default.conf配置文件3.3.nginx配置注意事项3.3.nginx重启4.测试1.nginxmirror作用为了便于排查问题,可能希望线上的请求能够同步到测试环境,以......
  • >>>0是一个位操作符,具体解释一下,并给出几个使用示例和常见场景
    >>>是JavaScript中的无符号右移位运算符。它将操作数的所有位向右移动指定位数,丢弃被移出的位,并在左侧填充零。特别地,>>>0是一个常用的技巧,用于确保任何数字(包括负数)都被转换为无符号的32位整数。这意味着结果总是非负的,并且范围在0到2^32-1之间。具体解释符号位处理:在二进......
  • XML-RPC实现WebService简单PHP程序示例 及 Closure闭包中的bind与bindTo方法的区别
    一、XML-RPC实现WebService简单PHP程序示例    WebService就是为了异构系统的通信而产生的,它基本的思想就是使用基于XML的HTTP的远程调用提供一种标准的机制,而省去建立一种新协议的需求。目前进行WebService通信有两种协议标准,一种是XML-RPC,另外一种是SOAP。XML-RPC比较......
  • k8s配置节点亲和性yaml示例:根据节点名称来配置节点亲和性(node affinity)
    在Kubernetes中,根据节点名称来配置节点亲和性(nodeaffinity)通常不是直接通过节点名称实现的,而是通过为节点添加特定的标签,然后在Pod的亲和性规则中匹配这些标签。不过,有一种特殊情况是使用NodeAffinity的nodeSelectorTerms中的matchExpressions,通过设置operator为In并使用......
  • python 连接sqlite简单示例
    importsqlite3#连接到SQLite数据库#数据库文件是test.db,如果文件不存在,会自动在当前目录创建#如果文件已存在,则连接到该数据库conn=sqlite3.connect('test.db')#创建一个游标对象#通过游标对象来执行SQL语句cursor=conn.cursor()#创建一个表cursor.execut......
  • cron表达式语法规则及常见示例
    cron表达式语法规则及常见示例cron表达式产生的背景什么是cron表达式常见示例cron表达式产生的背景cron表达式最初是由Unix操作系统中的cron守护进程所使用的一种语法规则,用于设置定时任务。cron守护进程是Unix系统中的一个后台进程,用于周期性地执行指定的命令或脚本......
  • 一切模型皆可联邦化:高斯朴素贝叶斯代码示例
    联邦学习是一种分布式的机器学习方法,其中多个客户端在一个中央服务器的协调下合作训练模型,但不共享他们的本地数据。一般情况下我们对联邦学习的理解都是大模型和深度学习模型才可以进行联邦学习,其实基本上只要包含参数的机器学习方法都可以使用联邦学习的方法保证数据隐私。所以......