打印
[STM32L4]

STM32L431获取复位源

[复制链接]
511|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

在进行软件调试时,可能会碰到莫名其妙复位,这个时候就有必要看一下是什么原因导致的复位

STM32L431的复位标志在RCC_CSR寄存器中,一共有8种。


使用特权

评论回复
沙发
大鹏2365|  楼主 | 2022-6-30 23:10 | 只看该作者
获取复位源时可以用__HAL_RCC_GET_FLAG()函数实现,代码如下。
#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();                        //清除复位标志
}

使用特权

评论回复
板凳
天灵灵地灵灵| | 2022-7-25 18:46 | 只看该作者
谢谢分享

使用特权

评论回复
地板
玛尼玛尼哄| | 2022-7-27 17:57 | 只看该作者
看看

使用特权

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

本版积分规则

50

主题

659

帖子

0

粉丝