根据您提供的WWDG初始化代码,配置了窗口看门狗的预分频器为WWDG_PRESCALER_8,窗口值为117,计数器值为127,EWI模式为禁用。根据STM32F030参考手册的描述,窗口时间计算如下:
窗口时间 = (窗口寄存器值 + 1) / (时钟频率 / 预分频器)
根据您提供的信息,时钟频率为48M,预分频器为8,所以窗口时间约为6.8ms。您的理解是正确的,喂狗的间隔在6.8ms到43ms之间,所以每隔20ms喂狗是符合要求的。
如果程序一直复位,可能是以下几个方面的原因:
1. WWDG中断未使能:请确保已经使能了窗口看门狗的中断,在初始化代码后添加以下代码:
```c
HAL_WWDG_Start_IT(&hwwdg);
```
2. 独立看门狗中断优先级设置不正确:请检查独立看门狗中断的优先级设置。您可以使用以下代码来设置:
```c
HAL_NVIC_SetPriority(WWDG_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(WWDG_IRQn);
```
3. 喂狗函数未正确调用:请检查喂狗的函数是否正确调用了,可以在每次喂狗的位置添加打印信息来确认是否调用成功。
如果您检查以上问题后仍然无法解决,建议您检查硬件连接是否正确,确认窗口看门狗的IO口是否正常工作。此外,也可以查看芯片的硬件资料,查找更详细的配置和使用说明。
根据您提供的WWDG初始化代码,配置了窗口看门狗的预分频器为WWDG_PRESCALER_8,窗口值为117,计数器值为127,EWI模式为禁用。根据STM32F030参考手册的描述,窗口时间计算如下:
窗口时间 = (窗口寄存器值 + 1) / (时钟频率 / 预分频器)
根据您提供的信息,时钟频率为48M,预分频器为8,所以窗口时间约为6.8ms。您的理解是正确的,喂狗的间隔在6.8ms到43ms之间,所以每隔20ms喂狗是符合要求的。
如果程序一直复位,可能是以下几个方面的原因:
1. WWDG中断未使能:请确保已经使能了窗口看门狗的中断,在初始化代码后添加以下代码:
```c
HAL_WWDG_Start_IT(&hwwdg);
```
2. 独立看门狗中断优先级设置不正确:请检查独立看门狗中断的优先级设置。您可以使用以下代码来设置:
```c
HAL_NVIC_SetPriority(WWDG_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(WWDG_IRQn);
```
3. 喂狗函数未正确调用:请检查喂狗的函数是否正确调用了,可以在每次喂狗的位置添加打印信息来确认是否调用成功。
如果您检查以上问题后仍然无法解决,建议您检查硬件连接是否正确,确认窗口看门狗的IO口是否正常工作。此外,也可以查看芯片的硬件资料,查找更详细的配置和使用说明。
举报