STM32——IWDG

总:STM32------学习总纲

参考资源:

【免费】STmcu选型手册资源资源-CSDN下载

【免费】芯片资料STM32F103ZET6(中文版)资源-CSDN下载

【免费】STM32F1系列参考手册-V10(中)

一、IWDG 简介

独立看门狗,Idependent

能产生系统复位信号的计数器

特性:

递减的计数器

时钟由独立的RC振荡器提供(可在待机和停止模式下运行)

看门狗被激活后,当递减计数器计数器计数到0x00时产生复位

喂狗:

在计数器计数到0之前,重装载计数器的值,防止复位。

F1系统复位共有五种:

IWDG的作用

RC振荡器的频率不太稳定,所以适用于对时间精度要求较低的场合。

二、IWDG 工作原理

本质是计数器,需要时钟源。

三、IWDG 框图

由F1芯片手册可知:

四、IWDG 寄存器

键寄存器(IWDG_KR)

0xCCCC 启动软件看门狗,具体参考SM32F1xxx闪存编程手册第20页。

预分频器寄存器(IWDG_PR)

例子:PR[2:0] = 001, 4*2 = 8

重装载寄存器(IWDG_RLR)

状态寄存器(IWDG_SR)

用于判断预分频值和重装载值是否已经被更新。

寄存器配置步骤

HAL 库使用一个函数就配置完成。

五、IWDG 溢出时间计算

IWDG 溢出时间计算公式(HAL库):

:看门狗溢出时间

:看门狗预分频系数

:看门狗重装载值

:看门狗时钟源频率,40KHz,LSI

预分频系数设置公式:

HAL 库中的预分频系数已经写好具体的宏。

IWDG溢出时间计算公式(寄存器):

IWDG最短最长超时时间(F1):

六、IWDG HAL 库配置步骤

1.取消 PR(预分频)和 RLR(重装载) 寄存器 写保护,设置IWDG预分频系数和重装载值,启动IWDG。-》HAL_IWDG_Init() -》对于寄存器配置步骤的前五步

2.及时喂狗。-》 HAL_IWDG_Refresh() -》对于寄存器操作:写入0xAAAA 到 IWDG_KR(键寄存器)

HAL库函数介绍

HAL库函数 主要对应寄存器 主要功能
HAL_IWDG_Init IWDG_PR/RL/KR 使能IWDG,设置预分频系数和重装载值等。
HAL_IWDG_Refresh IWDG_KR 把重装载寄存器的值重载到计数器 中,喂狗

对于句柄:

F1、F4

F7、H7

多了一个喂狗的窗口期。类似窗口看门狗。

七、编程实战:喂狗

cpp 复制代码
#include "./BSP/WDG/wdg.h"


IWDG_HandleTypeDef g_iwdg_handle;

/* IWDG初始化函数 */
void iwdg_init(uint8_t prer, uint16_t rlr)
{
    g_iwdg_handle.Instance = IWDG;
    g_iwdg_handle.Init.Prescaler = prer;
    g_iwdg_handle.Init.Reload = rlr;
    HAL_IWDG_Init(&g_iwdg_handle);
}

/* 喂狗函数 */
void iwdg_feed(void)
{
    HAL_IWDG_Refresh(&g_iwdg_handle);
}
cpp 复制代码
#include "./SYSTEM/sys/sys.h"
#include "./SYSTEM/usart/usart.h"
#include "./SYSTEM/delay/delay.h"
#include "./BSP/LED/led.h"
#include "./BSP/WDG/wdg.h"


int main(void)
{
    HAL_Init();                             /* 初始化HAL库 */
    sys_stm32_clock_init(RCC_PLL_MUL9);     /* 设置时钟为72Mhz */
    delay_init(72);                         /* 延时初始化 */
    usart_init(115200);                     /* 串口初始化为115200 */
    
    printf("您还没喂狗,请及时喂狗!!!\r\n");
    iwdg_init(IWDG_PRESCALER_32, 1250);     /* 预分频系数为32,重装载值为1250,溢出时间约为1s */
    while (1)
    {
        delay_ms(1050);
        iwdg_feed();
        printf("已经喂狗\r\n");
    }
}

八、课堂总结

【免费】iwdgstm32脑图资源-CSDN下载

相关推荐
悠哉悠哉愿意6 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
Lester_11016 天前
STM32霍尔传感器输入口设置为复用功能输入口时,还能用GPIO函数直接读取IO的状态吗
stm32·单片机·嵌入式硬件·电机控制
LCG元6 天前
低功耗显示方案:STM32L0驱动OLED,动态波形绘制与优化
stm32·嵌入式硬件·信息可视化
三佛科技-187366133976 天前
120W小体积碳化硅电源方案(LP8841SC极简方案12V10A/24V5A输出)
单片机·嵌入式硬件
z20348315206 天前
STM32F103系列单片机定时器介绍(二)
stm32·单片机·嵌入式硬件
古译汉书6 天前
【IoT死磕系列】Day 7:只传8字节怎么控机械臂?学习工业控制 CANopen 的“对象字典”(附企业级源码)
数据结构·stm32·物联网·http
Alaso_shuang6 天前
STM32 核心输入、输出模式
stm32·单片机·嵌入式硬件
脚后跟6 天前
AI助力嵌入式物联网项目全栈开发
嵌入式硬件·物联网·ai编程
2501_918126916 天前
stm32死锁是怎么实现的
stm32·单片机·嵌入式硬件·学习·个人开发
z20348315206 天前
STM32F103系列单片机定时器介绍(一)
stm32·单片机