STM32
直播中

英雄孤寂

11年用户 1163经验值
私信 关注
[问答]

独立看门狗(IWDG)的定义与实验详解

独立看门狗(IWDG)是什么?
如何对独立看门狗(IWDG)的功能进行配置?
如何对独立看门狗(IWDG)的时钟进行配置?

回帖(1)

施稚惇

2021-8-27 17:36:01
一、独立看门狗(IWDG)是什么?
STM32F4 的独立看门狗由内部专门的 32Khz 低速时钟(LSI)驱动,即使主时钟发生故障,它也仍然有效。这里需要注意独立看门狗的时钟是一个内部 RC时钟,所以并不是准确的 32Khz,而是在 15~47Khz 之间的一个可变化的时钟,只是我们在估算的时候,以 32Khz 的频率来计算,看门狗对时间的要求不是很精确,所以,时钟有些偏差,都是可以接受的。
二、独立看门狗(IWDG)实验
1.功能配置
1、由于CubeMX直接提供功能的配置,所以在使能某项功能后,IO口会自动选定,然后只需要去配置功能参数即可。
注:在图示区不能选择复用功能,在使能功能后,引脚自动复用。避免库函数的繁琐配置。
2、在功能区搜索IWDG
3、勾选Activated
4、查看原子代码,入口参数为4、500

5、IWDG已经配置完毕了,现在我们配置一个LED和一个按键检测实验。
时间计算:设置好看门狗的分频系数 prer 和重装载值就可以知道看门狗的喂狗时间(也就是看门狗溢出时间),该时间的计算方式为:
Tout=((4×2^prer) ×rlr) /40
其中 Tout 为看门狗溢出时间(单位为 ms);prer 为看门狗时钟预分频值(IWDG_PR 值),范围为 0~7;rlr 为看门狗的重装载值(IWDG_RLR 的值);
2.时钟配置
RCC时钟配置如前文一样(此处一般情况是不变的)。
3.生成代码
1、此处提醒一个避免重复写同一个代码的方法,例如可以将按键的操作和宏定义放入一个.c和.h 文件,后面需要就直接把文件放入新工程,在主函数加.h文件即可使用。在原子视频LED实验有提到。
2、在主函数添加如下代码即可实现本实验。(由于本次实验按键只有一个,就直接判断按键即可)
HAL_Delay(10); HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_RESET); if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4) == 0) { HAL_Delay(10);//消抖 if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4) == 0) { HAL_IWDG_Refresh(&hiwdg);//喂狗 HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_RESET);//翻转LED } } HAL_Delay(20);
举报

更多回帖

发帖
×
20
完善资料,
赚取积分