stm32f4xx 的IWDG使用的一般步骤

摘要:
需要注意的是,STM32系列MCU内部的RC频率从30kHz到60kHz不等。此外,即使RC振荡器的频率是准确的,准确的定时仍然取决于APB接口时钟和RC振荡器时钟之间的相位差,因此将始终存在不确定的完整RC周期。Stm32f10x,通过校准LSI可以获得相对准确的看门狗超时。然而,stm32f4中没有对其校准的描述。通常,在估计时,我们在40Khz的频率下计算1


需要注意的是:

  STM32系列的MCU内部的RC频率会在30kHz到60kHz之间变化。此外,即使RC振荡器的频率是精确的,确切的时序仍然依赖于APB接口时钟与RC振荡器时钟之间的相位差,因此总会有一个完整的RC周期是不确定的。stm32f10x,通过对LSI进行校准可获得相对精确的看门狗超时时间。但是在stm32f4 中并没有对它校准的说明。

通常我们在估算的时候,以 40Khz 的频率来计算      

1)取消寄存器写保护(向 IWDG_KR 写入 0X5555)
  通过这步,我们取消 IWDG_PR 和 IWDG_RLR 的写保护,使后面可以操作这两个寄存器,设置 IWDG_PR 和 IWDG_RLR 的值。这在库函数中的实现函数是:

IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);

这个函数非常简单,顾名思义就是开启/取消写保护,也就是使能/失能写权限。

2)设置独立看门狗的预分频系数和重装载值

设置看门狗的分频系数的函数是:

1 void IWDG_SetPrescaler(uint8_t IWDG_Prescaler); //设置 IWDG 预分频值

设置看门狗的重装载值的函数是:

1 void IWDG_SetReload(uint16_t Reload); //设置 IWDG 重装载值

设置好看门狗的分频系数 prer 和重装载值就可以知道看门狗的喂狗时间 (也就是看门狗溢出时间) ,该时间的计算方式为:

      Tout=((4×2^prer) ×rlr) /40
   

   其中 Tout 为看门狗溢出时间(单位为 ms) ;prer 为看门狗时钟预分频值(IWDG_PR 值),范围为 0~7;rlr 为看门狗的重装载值(IWDG_RLR 的值) ;比如我们设定 prer 值为 4, rlr 值为 625,那么就可以得到 Tout=64×625/40=1000ms,这样,看门狗的溢出时间就是 1s,只要你在一秒钟之内,有一次写入 0XAAAA 到 IWDG_KR,就不会导致看门狗复位(当然写入多次也是可以的)。这里需要提醒大家的是,看门狗的时钟不是准确的 40Khz,所以在喂狗的时候,最好不要太晚了,否则,有可能发生看门狗复位。     

3)重载计数值喂狗(向 IWDG_KR 写入 0XAAAA)
库函数里面重载计数值的函数是:

1 IWDG_ReloadCounter(); //按照 IWDG 重装载寄存器的值重装载 IWDG 计数器

通过这句,将使 STM32 重新加载 IWDG_RLR 的值到看门狗计数器里面。 即实现独立看门狗的喂狗操作。

4) 启动看门狗(向 IWDG_KR 写入 0XCCCC)
库函数里面启动独立看门狗的函数是:

1 IWDG_Enable(); //使能 IWDG

通过这句,来启动 STM32 的看门狗。注意 IWDG 在一旦启用,就不能再被关闭!想要关闭,只能重启,并且重启之后不能打开 IWDG,否则问题依旧,所以在这里提醒大家,如果不用 IWDG 的话,就不要去打开它,免得麻烦。

免责声明:文章转载自《stm32f4xx 的IWDG使用的一般步骤》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JavaScript基础前二章spring boot项目中Tomcat会对URL中的特殊字符进行拦截 报400(java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

STM32学习笔记(八) SPI总线(操作外部flash)

1. SPI总线简介 SPI全称串行外设接口,是一种高速,全双工,同步的外设总线;它工作在主从方式,常规需要至少4根线才能够正常工作。SPI作为基本的外设接口,在FLASH,EPPROM和一些数字通讯中,具有广泛的应用。SPI总线由四个接口构成: CS :片选端,由主设备控制 MISO:主设备输入,从设备输出 MOSI:主设备输出,从设备输入 SCK :时...

STM32中assert_param的使用

在STM32的固件库和提供的例程中,到处都可以见到assert_param()的使用。如果打开任何一个例程中的stm32f10x_conf.h文件,就可以看到实际上assert_param是一个宏定义;在固件库中,它的作用就是检测传递给函数的参数是否是有效的参数。所谓有效的参数是指满足规定范围的参数,比如某个参数的取值范围只能是小于3的正整数,如果给出的参...

STM32——timer

原文地址: http://blog.sina.com.cn/s/blog_49cb42490100s6ud.html   1.     STM32的Timer简介 STM32中一共有11个定时器,其中2个高级控制定时器,4个普通定时器和2个基本定时器,以及2个看门狗定时器和1个系统嘀嗒定时器。其中系统嘀嗒定时器是前文中所描述的SysTick,看门狗定时器以...

MM32初识(兼容STM32)

MM32初识(兼容STM32) 资源与开发环境 keil 5.0 MM32 miniboard 提要 stm32入门(MM32兼容) 点亮LED思路简介 GPIO配置 stm32寄存器理解与操作步骤 分层抽象思想 对于数字逻辑硬件,能识别的只有二进制(0/1),我们的操作最终都会变成0/1的操作,只是我们聪明的计算机工程师在中间加入许多抽象层...

[加密]非对称加密STM32实现

转自:https://blog.csdn.net/kangerdong/article/details/82432701 把所有的准备工作都做完了以后,可以将加密算法移植到我们具体的项目中去了,在STM32中在出厂前已经将RSA的公钥私钥,CA数字签名和CA公钥烧写在STM32的flash上了。 4.1 身份认证 在wifi连接上服务器上后,客户端首先发...

【物联网智能网关16】成功移植SQLite(STM32 .NET MF平台)

前言 .NET Micro Framework系统官方代码是不支持任何数据库的,这对一些具有用户管理的Web Server、RFID数据采集和复杂的手持机应用来说是非常不方便的。 很早就知道了SQLite,但是一直没有深入研究,随着目前移植的.NET Micro Framework系统越来越成熟,用户对数据库支持的呼声也越来越高,迫切需要一个数据库平台了。...