调试模式下如何调试看门狗
大家在调试GD32 MCU系统的时候,若开了看门狗外设,是否会碰到进入调试模式看门狗就会咬狗造成无法调试的问题?
碰到这种情况,一般是将看门狗关闭,然后再进行调试,但这个时候看门狗外设就无法工作了,GD32 MCU的调试模块可支持调试模式下看门狗的工作,包括断点还有单步的时候暂停看门狗计数,进而不会造成调试模式下看门狗咬狗复位的现象。
寄存器上可以控制以下两个控制位,比如希望调试FWDGT独立看门狗,就可以将FWDGT_HOLD控制位置1,就可以在调试模式下,当内核停止时保持FWDGT计数器的时钟。
软件上相关配置可参考以下代码:
C
dbg_periph_enable(DBG_FWDGT_HOLD);//打开独立看门狗调试模式
dbg_periph_disable(DBG_FWDGT_HOLD);//关闭独立看门狗调试模式
源代码如下
#include "gd32f10x_fwdgt.h"
/*!
\brief enable write access to FWDGT_PSC and FWDGT_RLD
\param[in] none
\param[out] none
\retval none
*/
void fwdgt_write_enable(void)
{
FWDGT_CTL = FWDGT_WRITEACCESS_ENABLE;
}
/*!
\brief disable write access to FWDGT_PSC and FWDGT_RLD
\param[in] none
\param[out] none
\retval none
*/
void fwdgt_write_disable(void)
{
FWDGT_CTL = FWDGT_WRITEACCESS_DISABLE;
}
/* registers definitions */
#define FWDGT_CTL REG32((FWDGT) + 0x00U) /*!< FWDGT control register */
#define FWDGT_PSC REG32((FWDGT) + 0x04U) /*!< FWDGT prescaler register */
#define FWDGT_RLD REG32((FWDGT) + 0x08U) /*!< FWDGT reload register */
#define FWDGT_STAT REG32((FWDGT) + 0x0CU) /*!< FWDGT status register */
参考链接
调试模式下如何调试看门狗
调试模式下如何调试看门狗? - - 21ic电子技术开发论坛https://bbs.21ic.com/icview-3394082-1-1.html
特此记录
anlog
2024年8月3日