请问大神:如何区分stm32是断电后上电还是硬件复位

2019-07-20 20:00发布

如题:小弟最近在玩lwip,想配置网络ip,netmask,gateway等参数.
如果是断电后上电的话,那么需要加载存储在flash上的配置参数.
如果是硬件复位的话,那么需要加载系统默认的配置参数.
可是小弟现在不知道如何区分这2种情况,恳请大神指教~~~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
冰封嗜魔
1楼-- · 2019-07-20 22:59
要想查看复位情况可以使用:
//******************************************************************************
// 函数名称: RCC_GetFlagStatus
// 功能描述: 检查指定的RCC标志设置与否.
// 输入参数: RCC_FLAG:要检查的标志.
//                    这个参数可以是下面的值之一:
//                       - RCC_FLAG_HSIRDY: HIS振荡时钟就绪
//                       - RCC_FLAG_HSERDY: HSE振荡时钟就绪
//                       - RCC_FLAG_PLLRDY: PLL时钟就绪
//                       - RCC_FLAG_LSERDY: LSE振荡时钟就绪
//                       - RCC_FLAG_LSIRDY: LSI振荡时钟就绪
//                       - RCC_FLAG_PINRST: 引脚复位
//                       - RCC_FLAG_PORRST: POR/PDR复位
//                       - RCC_FLAG_SFTRST: 软件复位
//                       - RCC_FLAG_IWDGRST: 独立看门狗复位
//                       - RCC_FLAG_WWDGRST: 窗口看门狗复位
//                      - RCC_FLAG_LPWRRST: 低电量复位
// 输出参数: 无
// 返回参数: RCC_FLAG的新状态(SET或RESET).


FlagStatus RCC_GetFlagStatus(u8 RCC_FLAG)来查看!

断电是低电量复位,硬件复位是引脚复位。
liuchang
2楼-- · 2019-07-21 03:25
 精彩回答 2  元偷偷看……
冰封嗜魔
3楼-- · 2019-07-21 05:34
本帖最后由 冰封嗜魔 于 2016-9-20 17:22 编辑
liuchang 发表于 2016-9-20 17:03
大神,我测试了下,有点问题,恳请指教不管我使用断电后上电,还是使用硬件复位,结果都是一样的,如下

[mw_ ...

是不是需要清除上一次的复位原因,你试试。你是不是插着j-link,导致系统并没有正真掉电。
特朗姆斯
4楼-- · 2019-07-21 10:10
 精彩回答 2  元偷偷看……
aozima
5楼-- · 2019-07-21 11:00
本帖最后由 aozima 于 2016-9-20 17:55 编辑

[mw_shl_code=c,true]
{
    uint32_t CSR = RCC->CSR;
#define SFTRST_MASK     (1ul<<28)
#define IWDGRST_MASK    (1ul<<29)
#define WWDGRST_MASK     (1ul<<30)

    if(CSR & (SFTRST_MASK | IWDGRST_MASK | WWDGRST_MASK))
    {
        rt_kprintf("board reset by: %s %s %s ",
                   (CSR & SFTRST_MASK)?"SFTRST":"",
                   (CSR & IWDGRST_MASK)?"IWDGRST":"",
                   (CSR & WWDGRST_MASK)?"WWDGRST":"");
        RCC_ClearFlag();
    }
}[/mw_shl_code]
参考这个自己按需要改一下。


一周热门 更多>