HAL WWDG Overview

Introducing WWDG

group WWDG_Introduction

  • This introduction is under development.

Module and files

The following diagram illustrates the WWDG module and its associated files.

Module and files diagram

Component diagram

The following diagram illustrates the software components involved in the WWDG module. It shows the interactions between the user application, HAL drivers, low-level drivers, and the hardware components.



@startuml

!$use_ppp_core = 1

!$use_ppp_ll = 1

!$use_ppp_hal = 1

!$use_api_itf = 1

!$use_hal_itf = 1

!$use_ll_itf = 1

!$use_core_itf = 1

!$use_ppp_isr = 1

!$use_hal_service = 1

!$use_hal_rcc = 1

!$use_hal_dma = 0

!$use_ll_rcc = 0

!$ppp = "WWDG"

!$hal_api_itf = "HAL " + $ppp + " API"

!$appli_itf = "User Callback"

!$ppp_name = "HAL_"+$ppp

!$ppp_ISR = $ppp+" ISR"

!$ll_ppp = "LL_"+$ppp

!$hal_dma_itf = "HAL_DMA_StartDirectXfer()\nHAL_DMA_Abort_IT"

!$hal_rcc_itf = "\t\t\tHAL_RCC_GetPCLK1Freq()\n\t\t\tHAL_RCC_"+$ppp+"_EnableClock()"

!$hal_ppp_itf = "DMA CallBacks\nDMA Half transfer complete CallBack\nError CallBacks"

!$hal_generic_itf = "HAL_GetTick()"

!$ll_ppp_itf = "LL " + $ppp +" API"

!$ppp_xIRQ = $ppp+"x_IRQ"

<style>

componentDiagram {

arrow {

FontSize 8

}

interface {

FontSize 8

}

}

</style>

title $ppp Software Component Diagram

Package "Application Layer" #DarkMagenta {

component [Appli]

interface "$appli_itf" as APPLI_Interface

[Appli] -r- APPLI_Interface

}

package "HAL" #DarkOrange {

[$ppp_name]

!if ($use_hal_dma == 1)

interface "$hal_ppp_itf" as HAL_PPP_Interface

[$ppp_name] -d- HAL_PPP_Interface

!endif

interface "$hal_api_itf" as HAL_PPP_APPLI_Interface

[$ppp_name] -u- HAL_PPP_APPLI_Interface

!if ($use_hal_service == 1)

  [HAL_SERVICE]

  interface "$hal_generic_itf" as HAL_Service_Interface

  [HAL_SERVICE] -r- HAL_Service_Interface

  [$ppp_name] -l-( HAL_Service_Interface

!endif

!if ($use_hal_dma == 1)

  [HAL_DMA]

  interface "$hal_dma_itf" as HAL_DMA_Interface

  [HAL_DMA] -u- HAL_DMA_Interface

  [HAL_DMA] -u-( HAL_PPP_Interface

  [$ppp_name] --( HAL_DMA_Interface

!endif

!if ($use_hal_rcc == 1)

  [HAL_RCC]

  interface "$hal_rcc_itf" as HAL_RCC_Interface

  [HAL_RCC] -l- HAL_RCC_Interface

  [$ppp_name] -r-( HAL_RCC_Interface

!endif

}

[Appli] -d-( HAL_PPP_APPLI_Interface

[$ppp_name] -u-( APPLI_Interface

package "Low Layer" #Technology {

!if ($use_ppp_ll == 1)

  [$ll_ppp]

  interface "$ll_ppp_itf" as LL_PPP_Interface

  [$ll_ppp]  -u- LL_PPP_Interface

!endif

!if ($use_ppp_isr == 1)

interface "$ppp_ISR" as PPP_ISR

[$ppp_ISR] -U- PPP_ISR

[$ppp_ISR]

!endif

[CMSIS-Devices]

!if ($use_ll_rcc == 1)

  [LL_RCC]

  interface "LL RCC API" as LL_RCC_API

  [LL_RCC] -u- LL_RCC_API

  [HAL_RCC] -d-(LL_RCC_API

!endif

!if ($use_hal_dma == 1)

  [DMA ISR]

  interface "DMA ISR" as DMA_ISR

  [DMA ISR] -u- DMA_ISR

!endif

}

package "HW" #LightCyan {

[STM32_HW]

!if ($use_ppp_isr == 1)

interface "$ppp_xIRQ" as PPPx_IRQ

[STM32_HW] -u- PPPx_IRQ

!endif

!if ($use_hal_dma == 1)

interface "DMAx_IRQ_Ch" as DMA_IRQ_CH

[STM32_HW] -u- DMA_IRQ_CH

[DMA ISR] -d-( DMA_IRQ_CH

[HAL_DMA] --( DMA_ISR

!endif

}

!if ($use_ppp_ll == 1)

[$ppp_name] -d-( LL_PPP_Interface

[$ll_ppp] .r.> [CMSIS-Devices]: $ppp register def

[STM32_HW] <.u. [$ll_ppp] : $ppp registers R/W

!else

[$ppp_name] .d.> [CMSIS-Devices]: $ppp register def

[STM32_HW] <.l. [$ppp_name] : $ppp registers R/W

!endif

!if ($use_ppp_isr == 1)

[$ppp_ISR] -d-( PPPx_IRQ

[$ppp_name] -d-( PPP_ISR

!endif

!if ($use_ll_rcc == 1)

[STM32_HW] <.u. [LL_RCC] : RCC registers R/W

!endif

@enduml

Configuration table

The following table lists the configuration defines for the HAL WWDG module, specifying their locations, default values, and descriptions:

group WWDG_Configuration_Table

Configuration inside the WWDG driver:

Config defines

Where

Default value

Note

USE_HAL_WWDG_MODULE

hal_conf.h

1

Enable the HAL WWDG module.

USE_HAL_WWDG_REGISTER_CALLBACKS

hal_conf.h

0

Enable the register callbacks assert

USE_HAL_CHECK_PARAM

hal_conf.h

0

Enable checking of vital parameters at runtime

USE_HAL_WWDG_HARDWARE_START

hal_conf.h

0

WWDG driver starts in HW mode

USE_HAL_WWDG_CLK_ENABLE_MODEL

hal_conf.h

HAL_CLK_ENABLE_NO

Clock activation

USE_HAL_WWDG_TIME_UNIT (*)

hal_conf.h

HAL_WWDG_TIME_UNIT_MS

Time unit to be used for WWDG driver

USE_HAL_WWDG_USER_DATA

hal_conf.h

0

Enable the set/get user data

USE_ASSERT_DBG_PARAM

PreProcessor env

None

Enable the params assert

USE_ASSERT_DBG_STATE

PreProcessor env

None

Enable the state assert

(*) User can choose the value of the time Unit with the USE_HAL_WWDG_TIME_UNIT define:

  • HAL_WWDG_TIME_UNIT_US: WWDG driver time unit in microseconds.

  • HAL_WWDG_TIME_UNIT_MS: WWDG driver time unit in milliseconds.

  • HAL_WWDG_TIME_UNIT_S: WWDG driver time unit in seconds.

The default time unit is milliseconds if not set by the user.