打印
[APM32E1]

APM32E103 复位源的判断

[复制链接]
796|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Peixu|  楼主 | 2023-8-31 18:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Peixu 于 2023-8-31 18:55 编辑

APM32E103 复位源判断
我们在开发项目的过程中MCU难免会遇到一些奇奇怪怪复位的情况,而这种方法可以方便我们观察判断是什么原因引起的复位。
在APM32用户手册我们可以看到控制/状态寄存器(RCM_CSTS)描述中了不同复位源。


下面这段代码已经完成了把读取不同复位状态寄存器的出来
void Check_Reset(void)
{
    printf(" CSR = %x\r\n", RCM->CSTS);
    if(RCM_ReadStatusFlag(RCM_FLAG_PINRST) != RESET ) // PINRST 引脚复位
    {
        printf("PIN reset \r\n");
    }
    if(RCM_ReadStatusFlag(RCM_FLAG_PWRRST) != RESET ) // 上电掉电复位
    {
        printf("POR/PDR reset \r\n");
    }
    if(RCM_ReadStatusFlag(RCM_FLAG_SWRST) != RESET ) //  软件复位
    {
        printf("Software reset  \r\n");
    }
    if(RCM_ReadStatusFlag(RCM_FLAG_IWDTRST) != RESET ) // 独立看门狗复位
    {
        printf("Independent watchdog reset \r\n");
    }
    if(RCM_ReadStatusFlag(RCM_FLAG_WWDTRST) != RESET ) // 窗口看门狗复位
    {
        printf("Window watchdog reset \r\n");
    }
    if(RCM_ReadStatusFlag(RCM_FLAG_LPRRST) != RESET ) // 低功耗复位
    {
        printf("(Low-power reset \r\n");
    }
    RCM_ClearStatusFlag();            //清除复位标志
    printf("\r\n");
}
最后在main函数中调用即可食用~

使用特权

评论回复
沙发
zhanglli| | 2023-8-31 21:23 | 只看该作者
是什么原因引起的复位

使用特权

评论回复
板凳
Peixu|  楼主 | 2023-9-4 11:06 | 只看该作者
zhanglli 发表于 2023-8-31 21:23
是什么原因引起的复位

可以使用这种方法来进行判断~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

53

帖子

0

粉丝