STM32 关于复位类型的判断及软件复位 bug

STM 32在复位时,有严重BUG:

1.   上电复位和外置的看门狗芯片重启复位是无法区分开来的!RCC_FLAG_BORRST,  RCC_FLAG_PINRST,   RCC_FLAG_LPWRRST三个都复位了!

2.   这样当要在上电复位初始化关键代码时,这些代码看门狗复位则不用重启,这个关键代码会导致应用业务的异常!若两个中断分不开,导致系统异常看门狗复位时影响业务!

 

/*
RCC_FLAG_BORRST:     POR/PDR or BOR reset  //Power-on/power-down reset (POR/PDR reset) or brownout (BOR) reset
RCC_FLAG_PINRST:       Pin reset                      //NRST pin可能为看门狗重启
RCC_FLAG_PORRST:      POR/PDR reset
RCC_FLAG_SFTRST:      Software reset
RCC_FLAG_IWDGRST:   Independent Watchdog reset
RCC_FLAG_WWDGRST: Window Watchdog reset
RCC_FLAG_LPWRRST:    Low Power reset
*/
/*****************************************************************************************
  函  数  名: SysRstSrcRecord
  参  数: 无
  返  回  值: 系统重启次数记录
  描  述: 记录系统重启的方式记录
  作  者: 熊大
  版  本: V1.0 2012年11月12日
******************************************************************************************/
u8 SysRstSrcRecord(u8 *pstRest)
{
    //u8 uchInfoChange=0;
    
    pstRest[0] = RCC_GetFlagStatus(RCC_FLAG_BORRST);
    pstRest[1] = RCC_GetFlagStatus(RCC_FLAG_PINRST);
    pstRest[2] = RCC_GetFlagStatus(RCC_FLAG_PORRST);
    pstRest[3] = RCC_GetFlagStatus(RCC_FLAG_SFTRST);   
    pstRest[4] = RCC_GetFlagStatus(RCC_FLAG_IWDGRST);
    pstRest[5] = RCC_GetFlagStatus(RCC_FLAG_WWDGRST);
    pstRest[6] = RCC_GetFlagStatus(RCC_FLAG_LPWRRST);

}

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值