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

这篇具有很好参考价值的文章主要介绍了stm32——hal库学习笔记(WWDG)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、WWDG简介(了解)

stm32——hal库学习笔记(WWDG),stm32,学习,笔记
WWDG有什么作用?
stm32——hal库学习笔记(WWDG),stm32,学习,笔记

二、WWDG工作原理(熟悉)

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

三、WWDG框图(熟悉)

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

四、WWDG寄存器(熟悉)

控制寄存器 (WWDG_CR)
stm32——hal库学习笔记(WWDG),stm32,学习,笔记
配置寄存器 (WWDG_CFR)
stm32——hal库学习笔记(WWDG),stm32,学习,笔记
状态寄存器 (WWDG_SR)
stm32——hal库学习笔记(WWDG),stm32,学习,笔记

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

stm32——hal库学习笔记(WWDG),stm32,学习,笔记
WWDG最短最长超时时间(F1为例)
stm32——hal库学习笔记(WWDG),stm32,学习,笔记

六、WWDG配置步骤(掌握)

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

HAL_WWDG_Init()

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

HAL_WWDG_MspInit()    //配置NVIC、CLOCK等

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

HAL_NVIC_SetPriority()HAL_NVIC_EnableIRQ()

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

WWDG_IRQHandler() 、HAL_WWDG_IRQHandler

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

HAL_WWDG_EarlyWakeupCallback()

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

HAL_WWDG_Refresh()

相关HAL库函数介绍
stm32——hal库学习笔记(WWDG),stm32,学习,笔记

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

stm32——hal库学习笔记(WWDG),stm32,学习,笔记
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文章来源地址https://www.toymoban.com/news/detail-834853.html

#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的主要区别(熟悉)

到了这里,关于stm32——hal库学习笔记(WWDG)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • stm32——hal库学习笔记(DAC)

    相关HAL库函数介绍 关键结构体介绍(F1为例) adc3.c adc3.h dac.c dac.h main.c dac.c dac.h main.c dac3.c dac3.h dac.c dac.h main.c 6.2.1,什么是PWM DAC技术? 6.2.2,用分段函数表示PWM波 6.2.3,将PWM波分段函数进行傅里叶级数展开 6.2.4,PWM DAC的分辨率 6.2.5,8位分辨率下对RC滤波器的设计要求 6.2.6,

    2024年02月22日
    浏览(34)
  • stm32——hal库学习笔记(IWDG)

    IWDG有什么作用? 键寄存器(IWDG_KR) 预分频器寄存器 (IWDG_PR) 重装载寄存器(IWDG_RLR) 状态寄存器(IWDG_SR) 寄存器配置操作步骤(了解) IWDG最短最长超时时间(F1) HAL库相关函数介绍 wdg.c wdg.h main.c

    2024年02月21日
    浏览(31)
  • stm32——hal库学习笔记(定时器)

    使用纯软件(CPU死等)的方式实现定时(延时)功能 使用精准的时基,通过硬件的方式,实现定时功能 递增计数模式实例说明 中心对齐模式实例说明 TIM6 和TIM7 控制寄存器 1(TIMx_CR1) TIM6 和TIM7 DMA/中断使能寄存器(TIMx_DIER) TIM6 和TIM7 状态寄存器(TIMx_SR) TIM6 和TIM7 计数器(TIMx_CNT)

    2024年02月21日
    浏览(43)
  • STM32学习笔记(一):输出PWM——HAL库

    本篇文章为个人参考总结所用,如果错误还望指出。 涉及的知识: 1、STM32CubeMx的部分使用 2、PWM原理及常用概念 3、用单片机生成一定频率的PWM 用到的软件及单片机: 1、STM32CubeMx 2、IDE: MDK-Keil软件 3、芯片:STM32F407ZGT6 4、开发板:正点原子探索者 注:不同型号的单片机实现

    2024年02月12日
    浏览(35)
  • stm32HAL库学习笔记----pwm驱动舵机

    目录 一、目标 二、准备 三、原理 四、cubemx 五、程序 实现stm32驱动舵机旋转0°,45°,90°,135°,180°等角度。 stm32f103(c8t6),舵机(SG90 9g),杜邦线 接线:舵机红线-----------5V(mcu)            舵机棕线-----------GND(mcu)            舵机黄线-----------PA1(视情况而定

    2023年04月26日
    浏览(29)
  • STM32学习笔记-SMT32使用HAL库UART中断方式使用

    目录 1、引言 2、配置 3、流程 近来需要使用蓝牙模块,再了解到蓝牙模块等无线模块许多使用串口透传,便决定在研究一下串口UART 的使用方法。 由于用的板子种类每次都不一样,有F103 有G0 有G4 还有公司的8位自研芯片,所以每次用起来都需要重头开始复习 每次使用UART的目

    2023年04月12日
    浏览(37)
  • keysking 【stm32】hal库学习笔记--定时器(超详细!)

    任务一:串口发送计数器的值 1.打开串口2及其中断,用于发送数据 2.将高速外部时钟源设置为晶振,提高定时精度 3.将HCLK改为72MHz 4.开启定时器 TIM4–勾选 Internal Clock(内部时钟)/ TIM2–将Clock Source选择为Internal Clock 5.设置预分频器 Prescaler–n(想要实现的分频)-1 Counter Perio

    2024年02月02日
    浏览(26)
  • STM32CubeIDE学习笔记——使用HAL库PWM输出驱动舵机

    目录 PWM驱动简介 工程配置 代码编写 这里我采用的是STM32F103C8T6最小系统板,SG-90舵机实现功能。 舵机驱动角度和PWM占空比有关系,具体对应为50--0度  150--90度  250--180度,通过STM32的定时器功能输出PWM波来控制舵机进行转动。  时钟选择外部高速时钟 系统映射配置 时钟树设

    2024年02月13日
    浏览(30)
  • STM32基于CubeIDE和HAL库 基础入门学习笔记:功能驱动与应用

    文章目录: 一:LED与按键驱动程序 main.c 1.闪灯  led.h led.c  2.按键控制LED亮灭  key.h  key.c 二:蜂鸣器与继电器驱动程序 main.c 1.蜂鸣器 buzzer.h buzzer.c delay.h delay.c 2.继电器 relay.h relay.c 三:USART串口收发测试程序(超级终端) main.c retarget.h retarget.c usart.h usart.c 四:ADC与DMA驱动程序

    2024年02月13日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包