四川城乡建设厅网站,wordpress插件 知乎,asp网站怎么改成中英双语,正国级领导有几位独立看门狗#xff08;Independent Watchdog#xff0c;IWDG#xff09;和窗口看门狗#xff08;Window Watchdog#xff0c;WWDG#xff09;是STM32微控制器中提供的两种看门狗定时器。看门狗定时器是一种硬件计时器#xff0c;用于监视系统的运行状态#xff0c;并在…独立看门狗Independent WatchdogIWDG和窗口看门狗Window WatchdogWWDG是STM32微控制器中提供的两种看门狗定时器。看门狗定时器是一种硬件计时器用于监视系统的运行状态并在系统出现故障或崩溃时执行相应的操作。下面我将分别介绍STM32中独立看门狗和窗口看门狗的使用方法。
1. 独立看门狗IWDG的使用方法 独立看门狗是一个简单的看门狗定时器它基于硬件提供的时钟独立于系统时钟。主要用于监视系统中断的处理时间确保系统在正常工作时定期喂狗从而避免系统崩溃或卡死。以下是使用IWDG的基本步骤
步骤1配置看门狗时钟 为了使用IWDG首先需要配置看门狗时钟。通过RCC寄存器设置可以选择不同的时钟源和分频系数。
步骤2初始化并启动IWDG 通过IWDG寄存器的设置可以配置独立看门狗的溢出时间和预分频器。首先需要将IWDG-KR寄存器设置为IWDG_KEY_ENABLE以使能对IWDG寄存器的写操作。然后配置IWDG-PR寄存器设置预分频器IWDG-RLR寄存器设置溢出时间。最后将IWDG-KR寄存器设置为IWDG_KEY_RELOAD以重新加载计数器并开始看门狗计时。
步骤3喂狗 在系统正常工作期间需要定期喂狗以防止独立看门狗溢出。通过执行IWDG-KR寄存器的写入操作将其设置为IWDG_KEY_RELOAD来重新加载计数器。
下面是一个简单的示例代码演示了如何使用独立看门狗
c
#include stm32f4xx.hvoid IWDG_Configuration(void)
{// 步骤1配置看门狗时钟RCC_APB1PeriphResetCmd(RCC_APB1Periph_IWDG, ENABLE);RCC_LSICmd(ENABLE);while (RCC_GetFlagStatus(RCC_FLAG_LSIRDY) RESET);// 设置IWDG预分频器和溢出时间IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);IWDG_SetPrescaler(IWDG_Prescaler_256); // 预分频系数为256IWDG_SetReload(0xFFF); // 溢出时间为0xfff * (4/LSI)秒// 启动独立看门狗IWDG_ReloadCounter();IWDG_Enable();
}int main(void)
{// 系统初始化和其他配置// IWDG配置IWDG_Configuration();while (1){// 系统正常工作// 定期喂狗IWDG_ReloadCounter();}
}2. 窗口看门狗WWDG的使用方法 窗口看门狗是一种更高级的看门狗定时器它可以根据设置的窗口值和计数器值来判断系统的工作状态。要确保系统正常工作计数器的值必须在窗口范围内。以下是使用WWDG的基本步骤
步骤1配置看门狗时钟 与独立看门狗类似需要配置看门狗时钟。通过RCC寄存器设置可以选择不同的时钟源和分频系数。
步骤2初始化并启动WWDG 通过WWDG寄存器的设置可以配置窗口看门狗的窗口值和计数器值。首先需要将WWDG-CFR寄存器设置为WWDG_CFR_WDGTB和WWDG_CFR_W窗口值和计数器正常工作时的设置。然后将WWDG-CR寄存器设置为WWDG_CR_T设置计数器值。最后通过执行WWDG-CR寄存器的写入操作将其设置为WWDG_CR_WDGA以启动窗口看门狗。
步骤3喂狗 在系统正常工作期间同样需要定期喂狗。通过执行WWDG-CR寄存器的写入操作将其设置为WWDG_CR_WDGA以确保计数器值在窗口范围内。
以下是一个简单的示例代码演示了如何使用窗口看门狗
c
#include stm32f4xx.hvoid WWDG_Configuration(void)
{// 步骤1配置看门狗时钟RCC_APB1PeriphResetCmd(RCC_APB1Periph_WWDG, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);// 设置窗口看门狗的窗口值和计数器值WWDG_SetPrescaler(WWDG_Prescaler_8); // 预分频系数为8WWDG_SetWindowValue(0x4F); // 窗口值为0x4F计数器范围为[0x40, 0x4F]WWDG_Enable(WWDG_Prescaler_8, 0x4F); // 计数器的值为0x4F// 启动窗口看门狗WWDG_EnableIT();WWDG_ClearFlag();WWDG_Enable(0x4F);
}int main(void)
{// 系统初始化和其他配置// WWDG配置WWDG_Configuration();while (1){// 系统正常工作// 定期喂狗WWDG_SetCounter(0x4F);}
}以上是独立看门狗IWDG和窗口看门狗WWDG的基本使用方法和示例代码。在实际应用中可以根据需要进行更多的配置和定制。请注意在使用看门狗时务必确保定期喂狗以免触发看门狗复位。同时看门狗定时器的设置应根据系统的实际情况进行调整以提供适当的容错能力。
嵌入式物联网的学习之路非常漫长不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心我为大家整理了一份150多G的学习资源基本上涵盖了嵌入式物联网学习的所有内容。点击这里0元领取学习资源让你的学习之路更加顺畅记得点赞、关注、收藏、转发哦。
点击链接扫码进入嵌入式交流群 https://fss.mpay8.cn/article/dmrjinh2C6fjejm