47
656
2077
初级工程师
在进行软件调试时,可能会碰到莫名其妙复位,这个时候就有必要看一下是什么原因导致的复位
STM32L431的复位标志在RCC_CSR寄存器中,一共有8种。
2050562bdbc1c168cc.png (73.08 KB ) 下载附件 2022-6-30 23:07 上传
2050562bdbc1c168cc.png (73.08 KB )
下载附件
2022-6-30 23:07 上传
使用特权
#define RCC_BORRST (1<<0) /* 欠压复位*/ #define RCC_OBLRST (1<<1) /* 选项字节加载器复位*/ #define RCC_PINRST (1<<2) /* NRST 引脚复位*/ #define RCC_FWRST (1<<3) /* 防火墙复位*/ #define RCC_SFTRST (1<<4) /* 软件复位*/ #define RCC_IWDGRST (1<<5) /* 独立看门狗复位*/ #define RCC_WWDGRST (1<<6) /* 窗口看门狗复位*/ #define RCC_LPWRRST (1<<7) /* 低功耗复位*/ void Sys_GetResetWay(void) { sysResetWay = 0x00; if(__HAL_RCC_GET_FLAG(RCC_FLAG_BORRST) != RESET ) // Brown-out reset 欠压复位(POR/PDR上电掉电复位) { sysResetWay |= RCC_BORRST; } if(__HAL_RCC_GET_FLAG(RCC_FLAG_OBLRST) != RESET ) // 选项字节加载器复位 { sysResetWay |= RCC_OBLRST; } if(__HAL_RCC_GET_FLAG(RCC_FLAG_PINRST) != RESET ) // NRST 引脚复位 { sysResetWay |= RCC_PINRST; } if(__HAL_RCC_GET_FLAG(RCC_FLAG_FWRST) != RESET ) // 防火墙复位 { sysResetWay |= RCC_FWRST; } if(__HAL_RCC_GET_FLAG(RCC_FLAG_SFTRST) != RESET ) // 软件复位 { sysResetWay |= RCC_SFTRST; } if(__HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST) != RESET ) // 独立看门狗复位 { sysResetWay |= RCC_IWDGRST; } if(__HAL_RCC_GET_FLAG(RCC_FLAG_WWDGRST) != RESET ) // 窗口看门狗复位 { sysResetWay |= RCC_WWDGRST; } if(__HAL_RCC_GET_FLAG(RCC_FLAG_LPWRRST) != RESET ) // 低功耗复位 { sysResetWay |= RCC_LPWRRST; } __HAL_RCC_CLEAR_RESET_FLAGS(); //清除复位标志 }
174
3361
1万
资深工程师
3058
9196
技术达人
发表回复 本版积分规则 回帖后跳转到最后一页
0
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注21ic项目外包
扫码关注21ic视频号
扫码关注21ic抖音号
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才 | 论坛帮助
京公网安备 11010802024343号