ARM GAS /tmp/ccTjX6jT.s page 1 1 .cpu cortex-m4 2 .arch armv7e-m 3 .fpu fpv4-sp-d16 4 .eabi_attribute 27, 1 5 .eabi_attribute 28, 1 6 .eabi_attribute 20, 1 7 .eabi_attribute 21, 1 8 .eabi_attribute 23, 3 9 .eabi_attribute 24, 1 10 .eabi_attribute 25, 1 11 .eabi_attribute 26, 1 12 .eabi_attribute 30, 1 13 .eabi_attribute 34, 1 14 .eabi_attribute 18, 4 15 .file "stm32f4xx_hal_wwdg.c" 16 .text 17 .Ltext0: 18 .cfi_sections .debug_frame 19 .section .text.HAL_WWDG_MspInit,"ax",%progbits 20 .align 1 21 .weak HAL_WWDG_MspInit 22 .syntax unified 23 .thumb 24 .thumb_func 26 HAL_WWDG_MspInit: 27 .LVL0: 28 .LFB135: 29 .file 1 "Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c" 1:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /** 2:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** ****************************************************************************** 3:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @file stm32f4xx_hal_wwdg.c 4:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @author MCD Application Team 5:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @brief WWDG HAL module driver. 6:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * This file provides firmware functions to manage the following 7:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * functionalities of the Window Watchdog (WWDG) peripheral: 8:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * + Initialization and Configuration functions 9:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * + IO operation functions 10:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** ****************************************************************************** 11:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @attention 12:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * 13:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * Copyright (c) 2016 STMicroelectronics. 14:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * All rights reserved. 15:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * 16:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * This software is licensed under terms that can be found in the LICENSE file 17:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * in the root directory of this software component. 18:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * If no LICENSE file comes with this software, it is provided AS-IS. 19:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * 20:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** ****************************************************************************** 21:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** @verbatim 22:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** ============================================================================== 23:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** ##### WWDG Specific features ##### 24:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** ============================================================================== 25:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** [..] 26:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** Once enabled the WWDG generates a system reset on expiry of a programmed 27:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** time period, unless the program refreshes the counter (T[6;0] downcounter) 28:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** before reaching 0x3F value (i.e. a reset is generated when the counter 29:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** value rolls down from 0x40 to 0x3F). ARM GAS /tmp/ccTjX6jT.s page 2 30:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 31:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) An MCU reset is also generated if the counter value is refreshed 32:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** before the counter has reached the refresh window value. This 33:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** implies that the counter must be refreshed in a limited window. 34:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) Once enabled the WWDG cannot be disabled except by a system reset. 35:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) If required by application, an Early Wakeup Interrupt can be triggered 36:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** in order to be warned before WWDG expiration. The Early Wakeup Interrupt 37:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (EWI) can be used if specific safety operations or data logging must 38:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** be performed before the actual reset is generated. When the downcounter 39:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** reaches 0x40, interrupt occurs. This mechanism requires WWDG interrupt 40:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** line to be enabled in NVIC. Once enabled, EWI interrupt cannot be 41:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** disabled except by a system reset. 42:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) WWDGRST flag in RCC CSR register can be used to inform when a WWDG 43:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** reset occurs. 44:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) The WWDG counter input clock is derived from the APB clock divided 45:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** by a programmable prescaler. 46:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) WWDG clock (Hz) = PCLK1 / (4096 * Prescaler) 47:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) WWDG timeout (mS) = 1000 * (T[5;0] + 1) / WWDG clock (Hz) 48:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** where T[5;0] are the lowest 6 bits of Counter. 49:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) WWDG Counter refresh is allowed between the following limits : 50:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (++) min time (mS) = 1000 * (Counter - Window) / WWDG clock 51:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (++) max time (mS) = 1000 * (Counter - 0x40) / WWDG clock 52:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) Typical values: 53:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (++) Counter min (T[5;0] = 0x00) at 42MHz (PCLK1) with zero prescaler: 54:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** max timeout before reset: approximately 97.52us 55:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (++) Counter max (T[5;0] = 0x3F) at 42MHz (PCLK1) with prescaler 56:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** dividing by 8: 57:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** max timeout before reset: approximately 49.93ms 58:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 59:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** ##### How to use this driver ##### 60:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** ============================================================================== 61:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 62:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** *** Common driver usage *** 63:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** =========================== 64:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 65:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** [..] 66:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) Enable WWDG APB1 clock using __HAL_RCC_WWDG_CLK_ENABLE(). 67:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) Configure the WWDG prescaler, refresh window value, counter value and early 68:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** interrupt status using HAL_WWDG_Init() function. This will automatically 69:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** enable WWDG and start its downcounter. Time reference can be taken from 70:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** function exit. Care must be taken to provide a counter value 71:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** greater than 0x40 to prevent generation of immediate reset. 72:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) If the Early Wakeup Interrupt (EWI) feature is enabled, an interrupt is 73:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** generated when the counter reaches 0x40. When HAL_WWDG_IRQHandler is 74:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** triggered by the interrupt service routine, flag will be automatically 75:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** cleared and HAL_WWDG_WakeupCallback user callback will be executed. User 76:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** can add his own code by customization of callback HAL_WWDG_WakeupCallback. 77:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) Then the application program must refresh the WWDG counter at regular 78:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** intervals during normal operation to prevent an MCU reset, using 79:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** HAL_WWDG_Refresh() function. This operation must occur only when 80:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** the counter is lower than the refresh window value already programmed. 81:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 82:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** *** Callback registration *** 83:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** ============================= 84:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 85:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** [..] 86:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** The compilation define USE_HAL_WWDG_REGISTER_CALLBACKS when set to 1 allows ARM GAS /tmp/ccTjX6jT.s page 3 87:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** the user to configure dynamically the driver callbacks. Use Functions 88:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** HAL_WWDG_RegisterCallback() to register a user callback. 89:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 90:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) Function HAL_WWDG_RegisterCallback() allows to register following 91:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** callbacks: 92:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (++) EwiCallback : callback for Early WakeUp Interrupt. 93:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (++) MspInitCallback : WWDG MspInit. 94:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** This function takes as parameters the HAL peripheral handle, the Callback ID 95:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** and a pointer to the user callback function. 96:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 97:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) Use function HAL_WWDG_UnRegisterCallback() to reset a callback to 98:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** the default weak function. HAL_WWDG_UnRegisterCallback() 99:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** takes as parameters the HAL peripheral handle and the Callback ID. 100:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** This function allows to reset following callbacks: 101:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (++) EwiCallback : callback for Early WakeUp Interrupt. 102:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (++) MspInitCallback : WWDG MspInit. 103:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 104:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** [..] 105:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** When calling HAL_WWDG_Init function, callbacks are reset to the 106:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** corresponding legacy weak functions: 107:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** HAL_WWDG_EarlyWakeupCallback() and HAL_WWDG_MspInit() only if they have 108:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** not been registered before. 109:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 110:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** [..] 111:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** When compilation define USE_HAL_WWDG_REGISTER_CALLBACKS is set to 0 or 112:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** not defined, the callback registering feature is not available 113:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** and weak (overridden) callbacks are used. 114:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 115:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** *** WWDG HAL driver macros list *** 116:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** =================================== 117:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** [..] 118:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** Below the list of available macros in WWDG HAL driver. 119:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) __HAL_WWDG_ENABLE: Enable the WWDG peripheral 120:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) __HAL_WWDG_GET_FLAG: Get the selected WWDG's flag status 121:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) __HAL_WWDG_CLEAR_FLAG: Clear the WWDG's pending flags 122:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) __HAL_WWDG_ENABLE_IT: Enable the WWDG early wakeup interrupt 123:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 124:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** @endverbatim 125:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** */ 126:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 127:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Includes ------------------------------------------------------------------*/ 128:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** #include "stm32f4xx_hal.h" 129:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 130:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /** @addtogroup STM32F4xx_HAL_Driver 131:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @{ 132:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** */ 133:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 134:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** #ifdef HAL_WWDG_MODULE_ENABLED 135:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /** @defgroup WWDG WWDG 136:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @brief WWDG HAL module driver. 137:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @{ 138:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** */ 139:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 140:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Private typedef -----------------------------------------------------------*/ 141:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Private define ------------------------------------------------------------*/ 142:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Private macro -------------------------------------------------------------*/ 143:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Private variables ---------------------------------------------------------*/ ARM GAS /tmp/ccTjX6jT.s page 4 144:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Private function prototypes -----------------------------------------------*/ 145:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Exported functions --------------------------------------------------------*/ 146:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 147:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /** @defgroup WWDG_Exported_Functions WWDG Exported Functions 148:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @{ 149:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** */ 150:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 151:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /** @defgroup WWDG_Exported_Functions_Group1 Initialization and Configuration functions 152:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @brief Initialization and Configuration functions. 153:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * 154:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** @verbatim 155:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** ============================================================================== 156:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** ##### Initialization and Configuration functions ##### 157:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** ============================================================================== 158:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** [..] 159:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** This section provides functions allowing to: 160:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) Initialize and start the WWDG according to the specified parameters 161:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** in the WWDG_InitTypeDef of associated handle. 162:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) Initialize the WWDG MSP. 163:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 164:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** @endverbatim 165:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @{ 166:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** */ 167:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 168:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /** 169:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @brief Initialize the WWDG according to the specified. 170:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * parameters in the WWDG_InitTypeDef of associated handle. 171:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @param hwwdg pointer to a WWDG_HandleTypeDef structure that contains 172:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * the configuration information for the specified WWDG module. 173:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @retval HAL status 174:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** */ 175:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** HAL_StatusTypeDef HAL_WWDG_Init(WWDG_HandleTypeDef *hwwdg) 176:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 177:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Check the WWDG handle allocation */ 178:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** if (hwwdg == NULL) 179:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 180:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** return HAL_ERROR; 181:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** } 182:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 183:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Check the parameters */ 184:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** assert_param(IS_WWDG_ALL_INSTANCE(hwwdg->Instance)); 185:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** assert_param(IS_WWDG_PRESCALER(hwwdg->Init.Prescaler)); 186:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** assert_param(IS_WWDG_WINDOW(hwwdg->Init.Window)); 187:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** assert_param(IS_WWDG_COUNTER(hwwdg->Init.Counter)); 188:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** assert_param(IS_WWDG_EWI_MODE(hwwdg->Init.EWIMode)); 189:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 190:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** #if (USE_HAL_WWDG_REGISTER_CALLBACKS == 1) 191:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Reset Callback pointers */ 192:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** if (hwwdg->EwiCallback == NULL) 193:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 194:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** hwwdg->EwiCallback = HAL_WWDG_EarlyWakeupCallback; 195:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** } 196:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 197:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** if (hwwdg->MspInitCallback == NULL) 198:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 199:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** hwwdg->MspInitCallback = HAL_WWDG_MspInit; 200:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** } ARM GAS /tmp/ccTjX6jT.s page 5 201:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 202:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Init the low level hardware */ 203:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** hwwdg->MspInitCallback(hwwdg); 204:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** #else 205:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Init the low level hardware */ 206:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** HAL_WWDG_MspInit(hwwdg); 207:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** #endif /* USE_HAL_WWDG_REGISTER_CALLBACKS */ 208:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 209:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Set WWDG Counter */ 210:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** WRITE_REG(hwwdg->Instance->CR, (WWDG_CR_WDGA | hwwdg->Init.Counter)); 211:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 212:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Set WWDG Prescaler and Window */ 213:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** WRITE_REG(hwwdg->Instance->CFR, (hwwdg->Init.EWIMode | hwwdg->Init.Prescaler | hwwdg->Init.Window 214:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 215:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Return function status */ 216:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** return HAL_OK; 217:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** } 218:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 219:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 220:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /** 221:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @brief Initialize the WWDG MSP. 222:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @param hwwdg pointer to a WWDG_HandleTypeDef structure that contains 223:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * the configuration information for the specified WWDG module. 224:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @note When rewriting this function in user file, mechanism may be added 225:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * to avoid multiple initialize when HAL_WWDG_Init function is called 226:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * again to change parameters. 227:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @retval None 228:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** */ 229:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** __weak void HAL_WWDG_MspInit(WWDG_HandleTypeDef *hwwdg) 230:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 30 .loc 1 230 1 view -0 31 .cfi_startproc 32 @ args = 0, pretend = 0, frame = 0 33 @ frame_needed = 0, uses_anonymous_args = 0 34 @ link register save eliminated. 231:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Prevent unused argument(s) compilation warning */ 232:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** UNUSED(hwwdg); 35 .loc 1 232 3 view .LVU1 233:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 234:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* NOTE: This function should not be modified, when the callback is needed, 235:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** the HAL_WWDG_MspInit could be implemented in the user file 236:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** */ 237:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** } 36 .loc 1 237 1 is_stmt 0 view .LVU2 37 0000 7047 bx lr 38 .cfi_endproc 39 .LFE135: 41 .section .text.HAL_WWDG_Init,"ax",%progbits 42 .align 1 43 .global HAL_WWDG_Init 44 .syntax unified 45 .thumb 46 .thumb_func 48 HAL_WWDG_Init: 49 .LVL1: 50 .LFB134: 176:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Check the WWDG handle allocation */ ARM GAS /tmp/ccTjX6jT.s page 6 51 .loc 1 176 1 is_stmt 1 view -0 52 .cfi_startproc 53 @ args = 0, pretend = 0, frame = 0 54 @ frame_needed = 0, uses_anonymous_args = 0 178:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 55 .loc 1 178 3 view .LVU4 178:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 56 .loc 1 178 6 is_stmt 0 view .LVU5 57 0000 88B1 cbz r0, .L4 176:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Check the WWDG handle allocation */ 58 .loc 1 176 1 view .LVU6 59 0002 10B5 push {r4, lr} 60 .LCFI0: 61 .cfi_def_cfa_offset 8 62 .cfi_offset 4, -8 63 .cfi_offset 14, -4 64 0004 0446 mov r4, r0 184:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** assert_param(IS_WWDG_PRESCALER(hwwdg->Init.Prescaler)); 65 .loc 1 184 3 is_stmt 1 view .LVU7 185:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** assert_param(IS_WWDG_WINDOW(hwwdg->Init.Window)); 66 .loc 1 185 3 view .LVU8 186:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** assert_param(IS_WWDG_COUNTER(hwwdg->Init.Counter)); 67 .loc 1 186 3 view .LVU9 187:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** assert_param(IS_WWDG_EWI_MODE(hwwdg->Init.EWIMode)); 68 .loc 1 187 3 view .LVU10 188:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 69 .loc 1 188 3 view .LVU11 206:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** #endif /* USE_HAL_WWDG_REGISTER_CALLBACKS */ 70 .loc 1 206 3 view .LVU12 71 0006 FFF7FEFF bl HAL_WWDG_MspInit 72 .LVL2: 210:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 73 .loc 1 210 3 view .LVU13 74 000a E368 ldr r3, [r4, #12] 75 000c 2268 ldr r2, [r4] 76 000e 43F08003 orr r3, r3, #128 77 0012 1360 str r3, [r2] 213:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 78 .loc 1 213 3 view .LVU14 79 0014 2369 ldr r3, [r4, #16] 80 0016 6268 ldr r2, [r4, #4] 81 0018 1343 orrs r3, r3, r2 82 001a A168 ldr r1, [r4, #8] 83 001c 2268 ldr r2, [r4] 84 001e 0B43 orrs r3, r3, r1 85 0020 5360 str r3, [r2, #4] 216:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** } 86 .loc 1 216 3 view .LVU15 216:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** } 87 .loc 1 216 10 is_stmt 0 view .LVU16 88 0022 0020 movs r0, #0 217:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 89 .loc 1 217 1 view .LVU17 90 0024 10BD pop {r4, pc} 91 .LVL3: 92 .L4: 93 .LCFI1: ARM GAS /tmp/ccTjX6jT.s page 7 94 .cfi_def_cfa_offset 0 95 .cfi_restore 4 96 .cfi_restore 14 180:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** } 97 .loc 1 180 12 view .LVU18 98 0026 0120 movs r0, #1 99 .LVL4: 217:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 100 .loc 1 217 1 view .LVU19 101 0028 7047 bx lr 102 .cfi_endproc 103 .LFE134: 105 .section .text.HAL_WWDG_Refresh,"ax",%progbits 106 .align 1 107 .global HAL_WWDG_Refresh 108 .syntax unified 109 .thumb 110 .thumb_func 112 HAL_WWDG_Refresh: 113 .LVL5: 114 .LFB136: 238:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 239:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 240:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** #if (USE_HAL_WWDG_REGISTER_CALLBACKS == 1) 241:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /** 242:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @brief Register a User WWDG Callback 243:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * To be used instead of the weak (overridden) predefined callback 244:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @param hwwdg WWDG handle 245:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @param CallbackID ID of the callback to be registered 246:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * This parameter can be one of the following values: 247:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @arg @ref HAL_WWDG_EWI_CB_ID Early WakeUp Interrupt Callback ID 248:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @arg @ref HAL_WWDG_MSPINIT_CB_ID MspInit callback ID 249:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @param pCallback pointer to the Callback function 250:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @retval status 251:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** */ 252:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** HAL_StatusTypeDef HAL_WWDG_RegisterCallback(WWDG_HandleTypeDef *hwwdg, HAL_WWDG_CallbackIDTypeDef C 253:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** pWWDG_CallbackTypeDef pCallback) 254:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 255:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** HAL_StatusTypeDef status = HAL_OK; 256:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 257:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** if (pCallback == NULL) 258:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 259:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** status = HAL_ERROR; 260:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** } 261:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** else 262:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 263:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** switch (CallbackID) 264:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 265:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** case HAL_WWDG_EWI_CB_ID: 266:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** hwwdg->EwiCallback = pCallback; 267:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** break; 268:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 269:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** case HAL_WWDG_MSPINIT_CB_ID: 270:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** hwwdg->MspInitCallback = pCallback; 271:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** break; 272:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 273:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** default: ARM GAS /tmp/ccTjX6jT.s page 8 274:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** status = HAL_ERROR; 275:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** break; 276:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** } 277:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** } 278:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 279:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** return status; 280:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** } 281:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 282:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 283:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /** 284:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @brief Unregister a WWDG Callback 285:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * WWDG Callback is redirected to the weak (overridden) predefined callback 286:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @param hwwdg WWDG handle 287:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @param CallbackID ID of the callback to be registered 288:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * This parameter can be one of the following values: 289:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @arg @ref HAL_WWDG_EWI_CB_ID Early WakeUp Interrupt Callback ID 290:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @arg @ref HAL_WWDG_MSPINIT_CB_ID MspInit callback ID 291:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @retval status 292:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** */ 293:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** HAL_StatusTypeDef HAL_WWDG_UnRegisterCallback(WWDG_HandleTypeDef *hwwdg, HAL_WWDG_CallbackIDTypeDef 294:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 295:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** HAL_StatusTypeDef status = HAL_OK; 296:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 297:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** switch (CallbackID) 298:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 299:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** case HAL_WWDG_EWI_CB_ID: 300:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** hwwdg->EwiCallback = HAL_WWDG_EarlyWakeupCallback; 301:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** break; 302:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 303:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** case HAL_WWDG_MSPINIT_CB_ID: 304:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** hwwdg->MspInitCallback = HAL_WWDG_MspInit; 305:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** break; 306:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 307:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** default: 308:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** status = HAL_ERROR; 309:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** break; 310:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** } 311:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 312:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** return status; 313:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** } 314:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** #endif /* USE_HAL_WWDG_REGISTER_CALLBACKS */ 315:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 316:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /** 317:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @} 318:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** */ 319:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 320:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /** @defgroup WWDG_Exported_Functions_Group2 IO operation functions 321:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @brief IO operation functions 322:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * 323:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** @verbatim 324:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** ============================================================================== 325:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** ##### IO operation functions ##### 326:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** ============================================================================== 327:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** [..] 328:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** This section provides functions allowing to: 329:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) Refresh the WWDG. 330:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** (+) Handle WWDG interrupt request and associated function callback. ARM GAS /tmp/ccTjX6jT.s page 9 331:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 332:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** @endverbatim 333:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @{ 334:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** */ 335:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 336:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /** 337:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @brief Refresh the WWDG. 338:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @param hwwdg pointer to a WWDG_HandleTypeDef structure that contains 339:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * the configuration information for the specified WWDG module. 340:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @retval HAL status 341:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** */ 342:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** HAL_StatusTypeDef HAL_WWDG_Refresh(WWDG_HandleTypeDef *hwwdg) 343:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 115 .loc 1 343 1 is_stmt 1 view -0 116 .cfi_startproc 117 @ args = 0, pretend = 0, frame = 0 118 @ frame_needed = 0, uses_anonymous_args = 0 119 @ link register save eliminated. 344:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Write to WWDG CR the WWDG Counter value to refresh with */ 345:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** WRITE_REG(hwwdg->Instance->CR, (hwwdg->Init.Counter)); 120 .loc 1 345 3 view .LVU21 121 0000 0368 ldr r3, [r0] 122 0002 C268 ldr r2, [r0, #12] 123 0004 1A60 str r2, [r3] 346:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 347:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Return function status */ 348:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** return HAL_OK; 124 .loc 1 348 3 view .LVU22 349:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** } 125 .loc 1 349 1 is_stmt 0 view .LVU23 126 0006 0020 movs r0, #0 127 .LVL6: 128 .loc 1 349 1 view .LVU24 129 0008 7047 bx lr 130 .cfi_endproc 131 .LFE136: 133 .section .text.HAL_WWDG_EarlyWakeupCallback,"ax",%progbits 134 .align 1 135 .weak HAL_WWDG_EarlyWakeupCallback 136 .syntax unified 137 .thumb 138 .thumb_func 140 HAL_WWDG_EarlyWakeupCallback: 141 .LVL7: 142 .LFB138: 350:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 351:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /** 352:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @brief Handle WWDG interrupt request. 353:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @note The Early Wakeup Interrupt (EWI) can be used if specific safety operations 354:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * or data logging must be performed before the actual reset is generated. 355:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * The EWI interrupt is enabled by calling HAL_WWDG_Init function with 356:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * EWIMode set to WWDG_EWI_ENABLE. 357:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * When the downcounter reaches the value 0x40, and EWI interrupt is 358:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * generated and the corresponding Interrupt Service Routine (ISR) can 359:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * be used to trigger specific actions (such as communications or data 360:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * logging), before resetting the device. 361:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @param hwwdg pointer to a WWDG_HandleTypeDef structure that contains ARM GAS /tmp/ccTjX6jT.s page 10 362:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * the configuration information for the specified WWDG module. 363:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @retval None 364:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** */ 365:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** void HAL_WWDG_IRQHandler(WWDG_HandleTypeDef *hwwdg) 366:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 367:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Check if Early Wakeup Interrupt is enable */ 368:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** if (__HAL_WWDG_GET_IT_SOURCE(hwwdg, WWDG_IT_EWI) != RESET) 369:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 370:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Check if WWDG Early Wakeup Interrupt occurred */ 371:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** if (__HAL_WWDG_GET_FLAG(hwwdg, WWDG_FLAG_EWIF) != RESET) 372:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 373:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Clear the WWDG Early Wakeup flag */ 374:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** __HAL_WWDG_CLEAR_FLAG(hwwdg, WWDG_FLAG_EWIF); 375:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 376:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** #if (USE_HAL_WWDG_REGISTER_CALLBACKS == 1) 377:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Early Wakeup registered callback */ 378:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** hwwdg->EwiCallback(hwwdg); 379:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** #else 380:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Early Wakeup callback */ 381:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** HAL_WWDG_EarlyWakeupCallback(hwwdg); 382:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** #endif /* USE_HAL_WWDG_REGISTER_CALLBACKS */ 383:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** } 384:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** } 385:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** } 386:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 387:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 388:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /** 389:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @brief WWDG Early Wakeup callback. 390:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @param hwwdg pointer to a WWDG_HandleTypeDef structure that contains 391:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * the configuration information for the specified WWDG module. 392:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** * @retval None 393:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** */ 394:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** __weak void HAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef *hwwdg) 395:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 143 .loc 1 395 1 is_stmt 1 view -0 144 .cfi_startproc 145 @ args = 0, pretend = 0, frame = 0 146 @ frame_needed = 0, uses_anonymous_args = 0 147 @ link register save eliminated. 396:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Prevent unused argument(s) compilation warning */ 397:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** UNUSED(hwwdg); 148 .loc 1 397 3 view .LVU26 398:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 399:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* NOTE: This function should not be modified, when the callback is needed, 400:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** the HAL_WWDG_EarlyWakeupCallback could be implemented in the user file 401:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** */ 402:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** } 149 .loc 1 402 1 is_stmt 0 view .LVU27 150 0000 7047 bx lr 151 .cfi_endproc 152 .LFE138: 154 .section .text.HAL_WWDG_IRQHandler,"ax",%progbits 155 .align 1 156 .global HAL_WWDG_IRQHandler 157 .syntax unified 158 .thumb 159 .thumb_func ARM GAS /tmp/ccTjX6jT.s page 11 161 HAL_WWDG_IRQHandler: 162 .LVL8: 163 .LFB137: 366:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Check if Early Wakeup Interrupt is enable */ 164 .loc 1 366 1 is_stmt 1 view -0 165 .cfi_startproc 166 @ args = 0, pretend = 0, frame = 0 167 @ frame_needed = 0, uses_anonymous_args = 0 366:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** /* Check if Early Wakeup Interrupt is enable */ 168 .loc 1 366 1 is_stmt 0 view .LVU29 169 0000 08B5 push {r3, lr} 170 .LCFI2: 171 .cfi_def_cfa_offset 8 172 .cfi_offset 3, -8 173 .cfi_offset 14, -4 368:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 174 .loc 1 368 3 is_stmt 1 view .LVU30 368:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 175 .loc 1 368 7 is_stmt 0 view .LVU31 176 0002 0368 ldr r3, [r0] 177 0004 5A68 ldr r2, [r3, #4] 368:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 178 .loc 1 368 6 view .LVU32 179 0006 12F4007F tst r2, #512 180 000a 03D0 beq .L11 371:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 181 .loc 1 371 5 is_stmt 1 view .LVU33 371:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 182 .loc 1 371 9 is_stmt 0 view .LVU34 183 000c 9A68 ldr r2, [r3, #8] 371:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** { 184 .loc 1 371 8 view .LVU35 185 000e 12F0010F tst r2, #1 186 0012 00D1 bne .L14 187 .LVL9: 188 .L11: 385:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 189 .loc 1 385 1 view .LVU36 190 0014 08BD pop {r3, pc} 191 .LVL10: 192 .L14: 374:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 193 .loc 1 374 7 is_stmt 1 view .LVU37 194 0016 6FF00102 mvn r2, #1 195 001a 9A60 str r2, [r3, #8] 381:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** #endif /* USE_HAL_WWDG_REGISTER_CALLBACKS */ 196 .loc 1 381 7 view .LVU38 197 001c FFF7FEFF bl HAL_WWDG_EarlyWakeupCallback 198 .LVL11: 385:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c **** 199 .loc 1 385 1 is_stmt 0 view .LVU39 200 0020 F8E7 b .L11 201 .cfi_endproc 202 .LFE137: 204 .text 205 .Letext0: 206 .file 2 "/home/jfen/toolchain/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/machine/_defaul ARM GAS /tmp/ccTjX6jT.s page 12 207 .file 3 "/home/jfen/toolchain/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/sys/_stdint.h" 208 .file 4 "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f407xx.h" 209 .file 5 "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h" 210 .file 6 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h" 211 .file 7 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_wwdg.h" ARM GAS /tmp/ccTjX6jT.s page 13 DEFINED SYMBOLS *ABS*:0000000000000000 stm32f4xx_hal_wwdg.c /tmp/ccTjX6jT.s:20 .text.HAL_WWDG_MspInit:0000000000000000 $t /tmp/ccTjX6jT.s:26 .text.HAL_WWDG_MspInit:0000000000000000 HAL_WWDG_MspInit /tmp/ccTjX6jT.s:42 .text.HAL_WWDG_Init:0000000000000000 $t /tmp/ccTjX6jT.s:48 .text.HAL_WWDG_Init:0000000000000000 HAL_WWDG_Init /tmp/ccTjX6jT.s:106 .text.HAL_WWDG_Refresh:0000000000000000 $t /tmp/ccTjX6jT.s:112 .text.HAL_WWDG_Refresh:0000000000000000 HAL_WWDG_Refresh /tmp/ccTjX6jT.s:134 .text.HAL_WWDG_EarlyWakeupCallback:0000000000000000 $t /tmp/ccTjX6jT.s:140 .text.HAL_WWDG_EarlyWakeupCallback:0000000000000000 HAL_WWDG_EarlyWakeupCallback /tmp/ccTjX6jT.s:155 .text.HAL_WWDG_IRQHandler:0000000000000000 $t /tmp/ccTjX6jT.s:161 .text.HAL_WWDG_IRQHandler:0000000000000000 HAL_WWDG_IRQHandler NO UNDEFINED SYMBOLS