[应用相关] STM32判断软件、硬件启动(看门狗复位启动与上电启动)

[复制链接]
210|0
Zhiniaocun 发表于 2025-11-7 21:58 | 显示全部楼层 |阅读模式
1、STM32寄存器查询方式
    看手册:



10061690c490ccb513.png

63152690c4902aadf4.png

寄存器介绍如下:

RCC 时钟控制和状态寄存器 (RCC_CSR)

偏移地址:0x74

复位值:0x0E00 0000

找到RCC基地址:0x40023800   

40842690c48fdf355f.png

那么 RCC 时钟控制和状态寄存器(RCC_CSR)的地址就是0x40023800+0x74

59400690c48f4b6452.png

97248690c48ec13c24.png

看寄存器实际用到的就只有24bit到31bit这里声明变量直接指向这几个bit,用来使用。因为是0-31bit是小端存储就是地位在前,所以访问高位8bit地址要加3。

uint8_t* RCC_CSR=(uint8_t*)(0x40023800+0x74+3);   //RCC 时钟控制和状态寄存器 +3读取最后8bit


寄存器位功能:

//bit0:  RMVF:清除复位标志    1:清零复位标志

//bit1:  BOR 复位标志

//bit2:  来自 NRST 引脚的复位时,由硬件置 1

//bit3:  POR/PDR 复位时,由硬件置 1

//bit4:  软件复位时,由硬件置 1

//bit5:  发生来自 VDD 域的独立看门狗复位时,由硬件置 1

//bit6:  发生窗口看门狗复位时,由硬件置 1

//bit7:  发生低功耗管理复位时,由硬件置 1

判断代码:

if(*RCC_CSR&0X10){    //bit4

    //软件复位

}else if(*RCC_CSR&0X20){    //bit5

    //独立看门狗复位

}else{

    //上电启动

}

*RCC_CSR=0x01;    //写0bit清除复位标志



        以上代码即可判断,这里只用到了软件复位、独立看门狗复位要使用其他同理增加if。最后写入RMVF(bit0)用于清除复位标志,不然影响非上电启动的下一次判断。

2、STM32HAl库方式

__HAL_RCC_GET_FLAG(RCC_FLAG_SFTRST);     //软件启动标志
__HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST);    //软降复位标志


其他标志宏定义:

#define RCC_FLAG_LSIRDY
#define RCC_FLAG_BORRST
#define RCC_FLAG_PINRST
#define RCC_FLAG_PORRST
#define RCC_FLAG_SFTRST
#define RCC_FLAG_IWDGRST
#define RCC_FLAG_WWDGRST
#define RCC_FLAG_LPWRRST


修改为使用HAL库的方式:

if(__HAL_RCC_GET_FLAG(RCC_FLAG_SFTRST)){   
    //软件复位
  }else if(__HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST)){
    //独立看门狗复位
}else{
    //上电启动
}
__HAL_RCC_CLEAR_RESET_FLAGS();    //写0bit清除复位标志


带调试信息:

if(__HAL_RCC_GET_FLAG(RCC_FLAG_SFTRST)){
    //软件复位
    printf("software reset");
}else if(__HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST)){
    //独立看门狗复
    printf("independent watchdog reset");
}else{
    //上电启动
    printf("power on");
}
__HAL_RCC_CLEAR_RESET_FLAGS();    //0bit清除复位标志



————————————————
版权声明:本文为CSDN博主「几个叶子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44015616/article/details/154300018

您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

312

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部