|
STM32G474xx HAL用户手册
|
WWDG HAL模块驱动。这个文件提供固件功能来管理窗口看门狗(WWDG)外设的以下功能:+ 初始化和配置函数+ IO操作函数。更多...
#include "stm32g4xx_hal.h"函数 | |
| HAL_StatusTypeDef | HAL_WWDG_Init (WWDG_HandleTypeDef *hwwdg) |
| 根据指定参数初始化WWDG。 | |
| __weak void | HAL_WWDG_MspInit (WWDG_HandleTypeDef *hwwdg) |
| 初始化WWDG MSP。 | |
| HAL_StatusTypeDef | HAL_WWDG_RegisterCallback (WWDG_HandleTypeDef *hwwdg, HAL_WWDG_CallbackIDTypeDef CallbackID, pWWDG_CallbackTypeDef pCallback) |
| 注册用户WWDG回调函数,用于替代弱函数(可重定义的)预定义回调。 | |
| HAL_StatusTypeDef | HAL_WWDG_UnRegisterCallback (WWDG_HandleTypeDef *hwwdg, HAL_WWDG_CallbackIDTypeDef CallbackID) |
| 注销WWDG回调函数,回调函数将被重定向到弱函数(可重定义的)预定义回调。 | |
| HAL_StatusTypeDef | HAL_WWDG_Refresh (WWDG_HandleTypeDef *hwwdg) |
| 刷新WWDG。 | |
| void | HAL_WWDG_IRQHandler (WWDG_HandleTypeDef *hwwdg) |
| 处理WWDG中断请求。 | |
| __weak void | HAL_WWDG_EarlyWakeupCallback (WWDG_HandleTypeDef *hwwdg) |
| WWDG早期唤醒回调函数。 | |
WWDG HAL模块驱动。这个文件提供固件功能来管理窗口看门狗(WWDG)外设的以下功能:+ 初始化和配置函数+ IO操作函数。
版权所有 (c) 2019 STMicroelectronics。保留所有权利。
本软件根据LICENSE文件中规定的条款进行许可。如果本软件未附带LICENSE文件,则按原样提供。
==============================================================================
##### WWDG特定功能 #####
==============================================================================
[..]
一旦启用,WWDG会在所编程的时间周期到期时产生系统复位,除非程序在计数器(T[6;0]减法计数器)达到0x3F值之前刷新计数器(即当计数器值从0x40滚动到0x3F时产生复位)。
(+) 如果在计数器达到刷新窗口值之前刷新计数器,也会产生MCU复位。这意味着必须在有限的窗口内刷新计数器。
(+) 一旦启用,WWDG无法被禁用,只能通过系统复位。
(+) 如应用需要,可以在WWDG到期前触发早期唤醒中断以获得警告。早期唤醒中断(EWI)可用于在实际复位产生之前执行特定的安全操作或数据记录。当减法计数器达到0x40时发生中断。此机制需要在NVIC中启用WWDG中断线。一旦启用,EWI中断无法被禁用,只能通过系统复位。
(+) RCC CSR寄存器中的WWDGRST标志可用于通知WWDG复位发生。
(+) WWDG计数器输入时钟来自APB时钟除以可编程预分频器。
(+) WWDG时钟(Hz) = PCLK1 / (4096 * 预分频器)
(+) WWDG超时(mS) = 1000 * (T[5;0] + 1) / WWDG时钟(Hz)
其中T[5;0]是计数器的最低6位。
(+) WWDG计数器刷新允许在以下限制之间进行:
(++) 最小时间(mS) = 1000 * (计数器 - 窗口) / WWDG时钟
(++) 最大时间(mS) = 1000 * (计数器 - 0x40) / WWDG时钟
(+) 典型值:
(++) 计数器最小值(T[5;0] = 0x00) 在170MHz (PCLK1) 零预分频器:
复位前最大超时:约24.09us
(++) 计数器最大值(T[5;0] = 0x3F) 在170MHz (PCLK1) 预分频器128分频:
复位前最大超时:约197.38ms
##### 如何使用此驱动 #####
==============================================================================
*** 通用驱动使用 ***
===========================
[..]
(+) 使用__HAL_RCC_WWDG_CLK_ENABLE()启用WWDG APB1时钟。
(+) 使用HAL_WWDG_Init()函数配置WWDG预分频器、刷新窗口值、计数器值和早期中断状态。这将自动启用WWDG并启动其减法计数器。时间参考可从函数返回时获取。注意必须提供大于0x40的计数器值以防止产生即时复位。
(+) 如果启用了早期唤醒中断(EWI)功能,当计数器达到0x40时会生成中断。当中断服务程序触发HAL_WWDG_IRQHandler时,标志将自动清除,HAL_WWDG_WakeupCallback用户回调将被执行。用户可以通过自定义回调HAL_WWDG_WakeupCallback来添加自己的代码。
(+) 然后应用程序必须在正常操作期间定期刷新WWDG计数器以防止MCU复位,使用HAL_WWDG_Refresh()函数。此操作只能在下行计数器低于已编程的刷新窗口值时执行。
*** 回调注册 ***
=============================
[..]
编译定义USE_HAL_WWDG_REGISTER_CALLBACKS设置为1时,允许用户动态配置驱动回调。使用函数HAL_WWDG_RegisterCallback()注册用户回调。
(+) 函数HAL_WWDG_RegisterCallback()允许注册以下回调:
(++) EwiCallback:早期唤醒中断回调。
(++) MspInitCallback:WWDG MspInit。
此函数需要参数:HAL外设句柄、回调ID和用户回调函数指针。
(+) 使用函数HAL_WWDG_UnRegisterCallback()将回调重置为默认弱函数。HAL_WWDG_UnRegisterCallback()需要参数:HAL外设句柄和回调ID。
此函数允许重置以下回调:
(++) EwiCallback:早期唤醒中断回调。
(++) MspInitCallback:WWDG MspInit。
[..]
调用HAL_WWDG_Init函数时,回调将被重置为相应的弱函数:
HAL_WWDG_EarlyWakeupCallback()和HAL_WWDG_MspInit()仅在之前未注册时。
[..]
当编译定义USE_HAL_WWDG_REGISTER_CALLBACKS设置为0或未定义时,回调注册功能不可用,将使用弱函数(可重定义的)回调。
*** WWDG HAL驱动宏列表 ***
===================================
[..]
以下是WWDG HAL驱动中可用的宏列表。
(+) __HAL_WWDG_ENABLE:启用WWDG外设
(+) __HAL_WWDG_GET_FLAG:获取所选WWDG标志状态
(+) __HAL_WWDG_CLEAR_FLAG:清除WWDG待处理标志
(+) __HAL_WWDG_ENABLE_IT:启用WWDG早期唤醒中断
定义于文件stm32g4xx_hal_wwdg.c中。
1.7.6.1