OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9617|回复: 7

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

[复制链接]

119

主题

439

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1185
金钱
1185
注册时间
2015-9-18
在线时间
422 小时
发表于 2016-9-20 16:33:39 | 显示全部楼层 |阅读模式
4金钱
如题:小弟最近在玩lwip,想配置网络ip,netmask,gateway等参数.
如果是断电后上电的话,那么需要加载存储在flash上的配置参数.
如果是硬件复位的话,那么需要加载系统默认的配置参数.
可是小弟现在不知道如何区分这2种情况,恳请大神指教~~~

电子爱好者
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

54

主题

1008

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2384
金钱
2384
注册时间
2012-11-22
在线时间
403 小时
发表于 2016-9-20 16:39:51 | 显示全部楼层
要想查看复位情况可以使用:
//******************************************************************************
// 函数名称: 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)来查看!

断电是低电量复位,硬件复位是引脚复位。
态度决定一切
回复

使用道具 举报

119

主题

439

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1185
金钱
1185
注册时间
2015-9-18
在线时间
422 小时
 楼主| 发表于 2016-9-20 17:03:41 | 显示全部楼层
冰封嗜魔 发表于 2016-9-20 16:39
要想查看复位情况可以使用:
//********************************************************************* ...

大神,我测试了下,有点问题,恳请指教不管我使用断电后上电,还是使用硬件复位,结果都是一样的,如下

[mw_shl_code=c,true]        uint8_t res1, res2;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);       
        delay_init(168);      
        uart_init(115200);   
        res1 = RCC_GetFlagStatus(RCC_FLAG_LPWRRST);
        res2 = RCC_GetFlagStatus(RCC_FLAG_PINRST);
        printf("res1 = %d, res2 = %d\r\n", res1, res2);
        while(1);[/mw_shl_code]
00.jpg
电子爱好者
回复

使用道具 举报

54

主题

1008

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2384
金钱
2384
注册时间
2012-11-22
在线时间
403 小时
发表于 2016-9-20 17:07:10 | 显示全部楼层
本帖最后由 冰封嗜魔 于 2016-9-20 17:22 编辑
liuchang 发表于 2016-9-20 17:03
大神,我测试了下,有点问题,恳请指教不管我使用断电后上电,还是使用硬件复位,结果都是一样的,如下

[mw_ ...

是不是需要清除上一次的复位原因,你试试。你是不是插着j-link,导致系统并没有正真掉电。
态度决定一切
回复

使用道具 举报

6

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1149
金钱
1149
注册时间
2015-11-13
在线时间
267 小时
发表于 2016-9-20 17:50:20 | 显示全部楼层
本帖最后由 特朗姆斯 于 2016-9-20 17:54 编辑

你代码里查看的是RCC_FLAG_LPWRRST,这个是低功耗复位,不是上电掉电复位

上电掉电复位应该查看的位是PORRSTF和BORRSTF。

ps: 另外,用户手册里面写电源复位会作用于NRST引脚,我推测这可能导致无论你是上电掉电复位还是硬件复位都会导致PINRSTF位被置一
回复

使用道具 举报

11

主题

1044

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3708
金钱
3708
注册时间
2011-5-23
在线时间
2010 小时
发表于 2016-9-20 17:52:59 | 显示全部楼层
本帖最后由 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\n",
                   (CSR & SFTRST_MASK)?"SFTRST":"",
                   (CSR & IWDGRST_MASK)?"IWDGRST":"",
                   (CSR & WWDGRST_MASK)?"WWDGRST":"");
        RCC_ClearFlag();
    }
}[/mw_shl_code]
参考这个自己按需要改一下。


RT-Thread RTOS 音频,WIFI,蓝牙
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2020-11-3
在线时间
5 小时
发表于 2021-1-5 15:07:13 | 显示全部楼层
1. 在其他复位情况发生时,复位引脚会有一个很短的负脉冲。说明其他复位源产生时,复位引脚电平也会变化。
2. 我最近也在弄uip,也涉及到了flash的问题,我觉得你可以把上电复位判断放在前面,因为上电复位会让复位引脚也产生flag = set,而硬件复位并不会让上电复位的flag置为set
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2020-11-3
在线时间
5 小时
发表于 2021-1-5 15:10:31 | 显示全部楼层
1. 在其他复位情况发生时,复位引脚会有一个很短的负脉冲。说明其他复位源产生时,复位引脚电平也会变化。
2. 我最近在弄uip,也涉及到了flash的问题,我觉得你可以把上电复位判断放在前面,因为上电复位会让复位引脚也产生flag = set,而硬件复位并不会让上电复位的flag置为set。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-3-1 05:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表