您的位置 首页 嵌入式

STM32 之 外部开门狗(iwdg)

独立看门狗(IWDG)由专用的40kHz的低速时钟驱动,即使主时钟发生故障它也仍然有效。窗口看门狗由从APB1时钟分频后得到的时钟驱动,通过可配…

独立看门狗(IWDG)由专用的40kHz的低速时钟驱动,

即便主时钟发生毛病它也依然有用。
窗口看门狗由从APB1时钟分频后得到的时钟驱动,
经过可装备的时刻窗口来检测应用程序非正常的过迟或过早的操作。

IWDG最适合应用于那些需求看门狗作为一个在主程序之外,
能够彻底独立作业,而且对时刻精度要求较低的场合。

WWDG最适合那些要求看门狗在准确计时窗口起作用的应用程序

IWDG主要性能
●自在运转的递减计数器
●时钟由独立的RC振荡器供给(可在中止和待机形式下作业)
●看门狗被激活后,则在计数器计数至0x000时发生复位


下面是运用代码:

C言语:Codee#18865
voidLSI_RCC_Configuration(void)
{
RCC_LSICmd(ENABLE);//翻开LSI
while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY)==RESET);//等候直到LSI安稳
}

=================================================================================

voidIWDG_Configuration(void)
{
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);// 翻开使能,由于iwdg的寄存器有写保护,必须先写入0x5555,才干操作寄存器
IWDG_SetPrescaler(IWDG_Prescaler_256);// 独立看门狗运用内部低速振荡器LSI,对LSI进行256分频
IWDG_SetReload(2500);// 设定独立看门狗计数器的计数值(0x000~0xFFF;0~4095),复位时刻为16s
IWDG_ReloadCounter();// 重载独立看门狗计数器,向寄存器写入0xAAAA,或许更新计数值
IWDG_Enable();// 敞开看门狗,向寄存器写入0xCCCC即可
}

喂狗程序直接运用IWDG_ReloadCounter();函数。

其间 LSI_RCC_Configuration(); // 内部低速时钟装备 该函数能够不必,可是等低速内部时钟安稳后再开外部看门狗比较好。


现在说说怎么核算外部看门狗计数器复位的时刻。

先给出datasheet上的预分频和对应的时刻规模:

咱们来举个比方:

比方上面的代码所示,预分频256,然后计数值是2500次,则外部看门狗计数器复位时刻为16秒。

首要LSI是40KHz,这儿不考虑其上下起浮的状况。

  • 40000Hz / 256 = 156.25Hz 这儿40KHz便是40000Hz进行256分频后,计数器的频率为156.25Hz;
  • 1 / 156.25Hz = 0.0064s156.25Hz换算成时刻便是0.0064秒,即为每次计数用时0.0064秒;
  • 0.0064s * 2500 = 16s 则2500次计数用时16秒,16秒后计数初值被减到零,触发复位,被狗咬到。

怎么测验:

stm32 的速率比较高,假如用LED作测验或许无法看到他的复位作用。

所以仍是用仿真器比较好用,下面是一个暗示:

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/252232.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部