stm32——hal库学习笔记(WWDG)

一、WWDG简介(了解)

在这里插入图片描述
WWDG有什么作用?
在这里插入图片描述

二、WWDG工作原理(熟悉)

在这里插入图片描述

三、WWDG框图(熟悉)

在这里插入图片描述

四、WWDG寄存器(熟悉)

控制寄存器 (WWDG_CR)
在这里插入图片描述
配置寄存器 (WWDG_CFR)
在这里插入图片描述
状态寄存器 (WWDG_SR)
在这里插入图片描述

五、WWDG超时时间计算(掌握)

在这里插入图片描述
WWDG最短最长超时时间(F1为例)
在这里插入图片描述

六、WWDG配置步骤(掌握)

在这里插入图片描述

HAL_WWDG_Init()

在这里插入图片描述

HAL_WWDG_MspInit()    //配置NVIC、CLOCK等

在这里插入图片描述

HAL_NVIC_SetPriority()HAL_NVIC_EnableIRQ()

在这里插入图片描述

WWDG_IRQHandler() 、HAL_WWDG_IRQHandler

在这里插入图片描述

HAL_WWDG_EarlyWakeupCallback()

在这里插入图片描述

HAL_WWDG_Refresh()

相关HAL库函数介绍
在这里插入图片描述

七、编程实战:验证窗口看门狗功能(掌握)

在这里插入图片描述
wdg.c

#include "./BSP/WDG/wdg.h"
#include "./BSP/LED/led.h"
/************************以下是窗口看门狗代码********************************/
WWDG_HandleTypeDef g_wwdg_handle;  /* WWDG句柄 */

/**
 * @brief       初始化窗口看门狗
 * @param       tr: T[6:0],计数器值
 * @param       tw: W[6:0],窗口值
 * @param       fprer:分频系数(WDGTB),范围:WWDG_PRESCALER_1~WWDG_PRESCALER_8,表示2^WDGTB分频
 *              Fwwdg=PCLK1/(4096*2^fprer). 一般PCLK1=36Mhz
                最大-最小超时时间参考 RM0008或者《STM32F10xxx参考手册》P321
 * @retval      无
 */
void wwdg_init(uint8_t tr, uint8_t wr, uint32_t fprer)
{
   
    g_wwdg_handle.Instance = WWDG;
    g_wwdg_handle.Init.Prescaler = fprer;         /* 设置分频系数 */
    g_wwdg_handle.Init.Window = wr;               /* 设置窗口值 */
    g_wwdg_handle.Init.Counter = tr;              /* 设置计数器值 */
    g_wwdg_handle.Init.EWIMode = WWDG_EWI_ENABLE; /* 使能窗口看门狗提前唤醒中断 */
    HAL_WWDG_Init(&g_wwdg_handle);                /* 初始化WWDG */
}

/**
 * @brief       WWDG MSP回调
 * @param       WWDG句柄
 * @note        此函数会被HAL_WWDG_Init()调用
 * @retval      无
 */
void HAL_WWDG_MspInit(WWDG_HandleTypeDef *hwwdg)
{
   
    __HAL_RCC_WWDG_CLK_ENABLE();            /* 使能窗口看门狗时钟 */

    HAL_NVIC_SetPriority(WWDG_IRQn, 2, 3);  /* 抢占优先级2,子优先级为3 */
    HAL_NVIC_EnableIRQ(WWDG_IRQn);          /* 使能窗口看门狗中断 */
}

/**
 * @brief       窗口看门狗中断服务程序
 * @param       无
 * @retval      无
 */
void WWDG_IRQHandler(void)
{
   
    HAL_WWDG_IRQHandler(&g_wwdg_handle);  /* 调用WWDG共用中断处理函数 */
}

/**
 * @brief       窗口看门狗喂狗提醒中断服务回调函数
 * @param       wwdg句柄
 * @note        此函数会被HAL_WWDG_IRQHandler()调用
 * @retval      无
 */
void HAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef *hwwdg)
{
   
    HAL_WWDG_Refresh(&g_wwdg_handle); /* 更新窗口看门狗值 */
    LED1_TOGGLE();                    /* LED1闪烁 */
}

wdg.h

#ifndef __WDG_H
#define __WDG_H

#include "./SYSTEM/sys/sys.h"

void wwdg_init(uint8_t tr, uint8_t wr, uint32_t fprer);

#endif

main.c

#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 */
    led_init();                             /* 初始化LED */
    LED0(0);                                /* 点亮LED0 红灯 */
    delay_ms(300);                          /* 延时300ms再初始化看门狗,LED0的变化"可见" */
    wwdg_init(0X7F, 0X5F, WWDG_PRESCALER_8);/* 计数器值为7f,窗口寄存器为5f,分频数为8 */

    while (1)
    {
   
        LED0(1);                            /* 关闭红灯 */
    }
}















八、IWDG和WWDG的主要区别(熟悉)

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-21 10:28:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-21 10:28:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-21 10:28:01       82 阅读
  4. Python语言-面向对象

    2024-02-21 10:28:01       91 阅读

热门阅读

  1. aop实现统一处理日志

    2024-02-21 10:28:01       48 阅读
  2. OpenHarmony下gn相关使用

    2024-02-21 10:28:01       55 阅读
  3. SpringMVC

    SpringMVC

    2024-02-21 10:28:01      42 阅读
  4. 认识K8S

    认识K8S

    2024-02-21 10:28:01      41 阅读
  5. python创建word文档

    2024-02-21 10:28:01       45 阅读
  6. LeetCode23.合并K个升序链表

    2024-02-21 10:28:01       45 阅读
  7. Python在生物信息学中的应用:序列化Python对象

    2024-02-21 10:28:01       47 阅读
  8. 导出docker MySQL中的数据库写一个shell 脚本

    2024-02-21 10:28:01       45 阅读
  9. Python内置函数07——copy

    2024-02-21 10:28:01       48 阅读
  10. 企业内部数据如何进行数据分析

    2024-02-21 10:28:01       57 阅读