1.采用内部时钟源64MHZ
简单说:看门狗的本质就是定时计数器,计数器使能以后一直在累加 而喂狗就是从新写入计数器的值,时计数器从新累加,若是在必定时间内没有接收到喂狗信号(表示MCU已经挂了),便实现处理器的自动复位重启(发送复位信号)。
系统时钟是位处理器真正运行速度快慢的核心因素,STM32F103VBT6芯片内部时钟最大支持64MHZ,
我们可以看到IWDG(独立看门狗)使用芯片内的是40KHZ的时钟源LSI RC。
2.独立看门狗IWDG配置
IWDG时钟预分频系数prv = 4分频 ,那么根据公式4*2^4=64就输入64。
hiwdg.Init.Prescaler = IWDG_PRESCALER_64;//代表4分频,也就是64=4*2^4。 hiwdg.Init.Reload = 4095; 计数器重装载值rlv = 4095 。相当于计时6.552秒。
超时时间:
HAL库独立看门狗函数库讲解:
看门狗初始化函数
HAL_IWDG_Init(IWDG_HandleTypeDef *hiwdg)
喂狗函数:
HAL_IWDG_Refresh(IWDG_HandleTypeDef *hiwdg)
举例: HAL_IWDG_Refresh(&hiwdg); //看门狗喂狗 使用该函数定时喂狗便可,注意不喂狗的话程序会反复重启。
1.采用内部时钟源64MHZ
简单说:看门狗的本质就是定时计数器,计数器使能以后一直在累加 而喂狗就是从新写入计数器的值,时计数器从新累加,若是在必定时间内没有接收到喂狗信号(表示MCU已经挂了),便实现处理器的自动复位重启(发送复位信号)。
系统时钟是位处理器真正运行速度快慢的核心因素,STM32F103VBT6芯片内部时钟最大支持64MHZ,
我们可以看到IWDG(独立看门狗)使用芯片内的是40KHZ的时钟源LSI RC。
2.独立看门狗IWDG配置
IWDG时钟预分频系数prv = 4分频 ,那么根据公式4*2^4=64就输入64。
hiwdg.Init.Prescaler = IWDG_PRESCALER_64;//代表4分频,也就是64=4*2^4。 hiwdg.Init.Reload = 4095; 计数器重装载值rlv = 4095 。相当于计时6.552秒。
超时时间:
HAL库独立看门狗函数库讲解:
看门狗初始化函数
HAL_IWDG_Init(IWDG_HandleTypeDef *hiwdg)
喂狗函数:
HAL_IWDG_Refresh(IWDG_HandleTypeDef *hiwdg)
举例: HAL_IWDG_Refresh(&hiwdg); //看门狗喂狗 使用该函数定时喂狗便可,注意不喂狗的话程序会反复重启。
举报