如何判断STM32的复位类型_STM32软件复位bug有哪些

电子说

1.3w人已加入

描述

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);

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分