STM32
登录
直播中
英雄孤寂
11年用户
1163经验值
私信
关注
[问答]
独立看门狗(IWDG)的定义与实验详解
开启该帖子的消息推送
独立看门狗
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);
一、独立看门狗(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);
举报
更多回帖
rotate(-90deg);
回复
相关问答
独立看门狗
IWDG
时钟
IWDG
独立
看门狗
实验
步骤简析
2021-09-24
672
如何对
独立
看门狗
(
IWDG
)进行配置
2021-08-11
1208
怎么去使用
独立
看门狗
(
IWDG
)
2021-08-13
1109
怎么用
独立
看门狗
IWDG
2021-09-23
780
如何去使用
独立
看门狗
IWDG
2021-09-24
1177
浅析
IWDG
独立
看门狗
2021-09-23
699
独立
看门狗
(
IWDG
)的主要特性是什么?
2021-07-27
1079
有关
独立
看门狗
(
IWDG
)的基本知识汇总
2021-08-02
1185
怎样去编写
独立
看门狗
(
IWDG
)的代码
2021-08-11
1622
独立
看门狗
IWDG
的结构是如何构成的
2021-09-22
1046
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分