上期为大家讲解了GD32 MCU复位包括电源复位和系统复位,其中系统复位还包括独立看门狗复位、内核软复位、窗口看门狗复位等,在一个GD32系统中,如果莫名其妙产生了MCU复位,如何排查具体是由哪个复位源导致的呢?
GD32 MCU贴心的为大家提供了一个查看复位源的寄存器,如下图所示,该寄存器的bit26-bit31显示各种复位状态,其中LPRSTF表示发生过低功耗复位、WWDGTRSTF表示发上过窗口看门狗复位、FWDGTRSTF表示发生过独立看门狗复位、SWRSTF表示发生过系统软复位、PORRSTF表示发生过POR电源复位、EPRSTF表示发生过NRST引脚复位,这几个状态标志位为只读标志位,如果希望清除复位标志,可以通过置位bit24 RSTFC控制位实现。
那么该寄存器该如何使用进行查看异常复位源呢?
建议大家在主函数入口处先检查复位源寄存器,之后将产生的复位标志通过串口打印出来,然后再清除所有的复位源。第一次上电后会将所有的复位源全部清除,等下次产生异常复位后,将会通过串口打印产生复位的复位源,此复位源即为实际产生异常复位的源头。
以上即为本期讲解,如有问题或建议,欢迎评论区讨论。
更多GD32 MCU相关咨询:https://www.gd32bbs.com/