【简介】
在 S32K 中,看门狗通常具备这些特点:
1. 可配置超时时间,决定多久未喂狗就判定异常。
2.支持窗口模式,只允许在指定时间窗口内喂狗。
3.可选择先中断再复位,或直接复位系统。
芯片内的的SWT 数量是根据核心数来绑定的,芯片设计的时候为每个core 配置了独立的看看门狗。,从下属的描述也可以看出看出看门狗的时钟源为内部SIRC

在S32D 置界面添加Swt_Ip 就可以将SWT 的驱动文件加入工程之中。

对应的参数说明如下

生成代码后对应的驱动文件已经被添加到工程之中了。

添加如下代码初始化SW0,我们配置在中断中喂狗避免重启。
/*==================================================================================================
* LOCAL VARIABLES
*================================================================================================*/
static uint8_t swt_feed_flag = 1U;
/*==================================================================================================
* LOCAL TYPEDEFS (STRUCTURES, UNIONS, ENUMS)
*================================================================================================*/
/*==================================================================================================
* LOCAL FUNCTION PROTOTYPES
*================================================================================================*/
/*==================================================================================================
* GLOBAL VARIABLES
*================================================================================================*/
/*==================================================================================================
* GLOBAL CONSTANTS
*================================================================================================*/
/*==================================================================================================
* GLOBAL FUNCTIONS
*================================================================================================*/
void Swt_CallbackNotification0(void)
{
if(swt_feed_flag)
{
Swt_Ip_Service(CFG_SWT_ID);
}
}
/********************************************************************************************************
* Shell command define *
*******************************************************************************************************/
unsigned int swt(char argc, char **argv)
{
if(argc == 2 && strcmp(argv[1], "init") == 0)
{
Swt_Ip_Init(CFG_SWT_ID,&Swt_Ip_Cfg0);
}
else if(argc == 2 && strcmp(argv[1], "nofeed") == 0)
{
swt_feed_flag = 0U;
}
else
{
PRINTF("Invalid command. Usage: swt init|nofeed\n");
}
return 0;
}上述测试程序 触发停止喂狗后看门狗进行了复位

我要赚赏金
