1 /** 2 ****************************************************************************** 3 * @file stm32wbaxx_hal.h 4 * @author MCD Application Team 5 * @brief This file contains all the functions prototypes for the HAL 6 * module driver. 7 ****************************************************************************** 8 * @attention 9 * 10 * Copyright (c) 2022 STMicroelectronics. 11 * All rights reserved. 12 * 13 * This software is licensed under terms that can be found in the LICENSE file 14 * in the root directory of this software component. 15 * If no LICENSE file comes with this software, it is provided AS-IS. 16 * 17 ****************************************************************************** 18 */ 19 20 /* Define to prevent recursive inclusion -------------------------------------*/ 21 #ifndef __STM32WBAxx_HAL_H 22 #define __STM32WBAxx_HAL_H 23 24 #ifdef __cplusplus 25 extern "C" { 26 #endif 27 28 /* Includes ------------------------------------------------------------------*/ 29 #include "stm32wbaxx_hal_conf.h" 30 31 /** @addtogroup STM32WBAxx_HAL_Driver 32 * @{ 33 */ 34 35 /** @addtogroup HAL 36 * @{ 37 */ 38 39 /* Exported types ------------------------------------------------------------*/ 40 /** @defgroup HAL_Exported_Types HAL Exported Types 41 * @{ 42 */ 43 44 /** @defgroup HAL_TICK_FREQ Tick Frequency 45 * @{ 46 */ 47 typedef enum 48 { 49 HAL_TICK_FREQ_10HZ = 100U, 50 HAL_TICK_FREQ_100HZ = 10U, 51 HAL_TICK_FREQ_1KHZ = 1U, 52 HAL_TICK_FREQ_DEFAULT = HAL_TICK_FREQ_1KHZ 53 } HAL_TickFreqTypeDef; 54 /** 55 * @} 56 */ 57 58 /** 59 * @} 60 */ 61 62 /* Exported variables --------------------------------------------------------*/ 63 /** @defgroup HAL_Exported_Variables HAL Exported Variables 64 * @{ 65 */ 66 extern __IO uint32_t uwTick; 67 extern uint32_t uwTickPrio; 68 extern HAL_TickFreqTypeDef uwTickFreq; 69 /** 70 * @} 71 */ 72 73 /* Exported constants --------------------------------------------------------*/ 74 /** @defgroup HAL_Exported_Constants HAL Exported Constants 75 * @{ 76 */ 77 78 /** 79 * @brief STM32WBAxx HAL Driver version number 80 */ 81 #define __STM32WBAxx_HAL_VERSION_MAIN (0x01U) /*!< [31:24] main version */ 82 #define __STM32WBAxx_HAL_VERSION_SUB1 (0x05U) /*!< [23:16] sub1 version */ 83 #define __STM32WBAxx_HAL_VERSION_SUB2 (0x00U) /*!< [15:8] sub2 version */ 84 #define __STM32WBAxx_HAL_VERSION_RC (0x00U) /*!< [7:0] release candidate */ 85 #define __STM32WBAxx_HAL_VERSION ((__STM32WBAxx_HAL_VERSION_MAIN << 24U)\ 86 |(__STM32WBAxx_HAL_VERSION_SUB1 << 16U)\ 87 |(__STM32WBAxx_HAL_VERSION_SUB2 << 8U )\ 88 |(__STM32WBAxx_HAL_VERSION_RC)) 89 90 /** 91 * @} 92 */ 93 94 /** @defgroup REV_ID device revision ID 95 * @{ 96 */ 97 #define REV_ID_A 0x1000U /*!< STM32WBA_2 rev.A */ 98 #define REV_ID_B 0x2000U /*!< STM32WBA_2 rev.B */ 99 /** 100 * @} 101 */ 102 103 /** @defgroup SYSCFG_Exported_Constants SYSCFG Exported Constants 104 * @{ 105 */ 106 107 /** @defgroup SYSCFG_FPU_Interrupts FPU Interrupts 108 * @{ 109 */ 110 #define SYSCFG_IT_FPU_IOC SYSCFG_FPUIMR_FPU_IE_0 /*!< Floating Point Unit Invalid operation Interrupt */ 111 #define SYSCFG_IT_FPU_DZC SYSCFG_FPUIMR_FPU_IE_1 /*!< Floating Point Unit Divide-by-zero Interrupt */ 112 #define SYSCFG_IT_FPU_UFC SYSCFG_FPUIMR_FPU_IE_2 /*!< Floating Point Unit Underflow Interrupt */ 113 #define SYSCFG_IT_FPU_OFC SYSCFG_FPUIMR_FPU_IE_3 /*!< Floating Point Unit Overflow Interrupt */ 114 #define SYSCFG_IT_FPU_IDC SYSCFG_FPUIMR_FPU_IE_4 /*!< Floating Point Unit Input denormal Interrupt */ 115 #define SYSCFG_IT_FPU_IXC SYSCFG_FPUIMR_FPU_IE_5 /*!< Floating Point Unit Inexact Interrupt */ 116 #define SYSCFG_IT_FPU_ALL (SYSCFG_IT_FPU_IOC|SYSCFG_IT_FPU_DZC|SYSCFG_IT_FPU_UFC|SYSCFG_IT_FPU_OFC|SYSCFG_IT_FPU_IDC|SYSCFG_IT_FPU_IXC) /*!< All */ 117 118 /** 119 * @} 120 */ 121 122 /** @defgroup SYSCFG_Compensation_Cell_Selection Compensation Cell Selection 123 * @{ 124 */ 125 #define SYSCFG_IO_CELL SYSCFG_CCCSR_EN1 /*!< Compensation cell for the VDD I/O power rail */ 126 #ifdef SYSCFG_CCCSR_EN2 127 #define SYSCFG_IO2_CELL SYSCFG_CCCSR_EN2 /*!< Compensation cell for the VDDIO2 I/O power rail */ 128 #endif /* SYSCFG_CCCSR_EN2 */ 129 /** 130 * @} 131 */ 132 133 /** @defgroup SYSCFG_Compensation_Cell_Ready_Selection Compensation Cell Ready Selection 134 * @{ 135 */ 136 #define SYSCFG_IO_CELL_READY SYSCFG_CCCSR_RDY1 /*!< Ready flag of compensation cell for the VDD I/O power rail */ 137 #ifdef SYSCFG_CCCSR_EN2 138 #define SYSCFG_IO2_CELL_READY SYSCFG_CCCSR_RDY2 /*!< Ready flag of compensation cell for the VDDIO2 I/O power rail */ 139 #endif /* SYSCFG_CCCSR_EN2 */ 140 /** 141 * @} 142 */ 143 144 /** @defgroup SYSCFG_IO_Compensation_Code_Config IO Compensation Code config 145 * @{ 146 */ 147 #define SYSCFG_IO_CELL_CODE 0UL /*!< Code from the cell */ 148 #define SYSCFG_IO_REGISTER_CODE 1UL /*!< Code from the values in the cell code register */ 149 /** 150 * @} 151 */ 152 153 154 /** @defgroup SYSCFG_Flags_Definition Flags 155 * @{ 156 */ 157 158 #define SYSCFG_FLAG_MCLR SYSCFG_MESR_MCLR /*!< Device memories erase status */ 159 #define SYSCFG_FLAG_IPMEE SYSCFG_MESR_IPMEE /*!< ICACHE and PKA SRAM erase status */ 160 161 /** 162 * @} 163 */ 164 165 /** @defgroup SYSCFG_FastModePlus_GPIO Fast-mode Plus on GPIO 166 * @{ 167 */ 168 169 /** @brief Fast-mode Plus driving capability on a specific GPIO 170 */ 171 #define SYSCFG_FASTMODEPLUS_PA6 SYSCFG_CFGR1_PA6_FMP /*!< Enable Fast-mode Plus on PA6 */ 172 #define SYSCFG_FASTMODEPLUS_PA7 SYSCFG_CFGR1_PA7_FMP /*!< Enable Fast-mode Plus on PA7 */ 173 #define SYSCFG_FASTMODEPLUS_PA15 SYSCFG_CFGR1_PA15_FMP /*!< Enable Fast-mode Plus on PA15 */ 174 #define SYSCFG_FASTMODEPLUS_PB3 SYSCFG_CFGR1_PB3_FMP /*!< Enable Fast-mode Plus on PB3 */ 175 #define SYSCFG_FASTMODEPLUS_ALL (SYSCFG_FASTMODEPLUS_PA6|SYSCFG_FASTMODEPLUS_PA7|SYSCFG_FASTMODEPLUS_PA15|SYSCFG_FASTMODEPLUS_PB3) /*!< All */ 176 177 /** 178 * @} 179 */ 180 181 /** @defgroup SYSCFG_Lock_items SYSCFG Lock items 182 * @brief SYSCFG items to set lock on 183 * @{ 184 */ 185 #define SYSCFG_MPU_NSEC SYSCFG_CNSLCKR_LOCKNSMPU /*!< Non-secure MPU lock (privileged secure or non-secure only) */ 186 #define SYSCFG_VTOR_NSEC SYSCFG_CNSLCKR_LOCKNSVTOR /*!< Non-secure VTOR lock (privileged secure or non-secure only) */ 187 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) 188 #define SYSCFG_SAU (SYSCFG_CSLCKR_LOCKSAU << 16U) /*!< SAU lock (privileged secure code only) */ 189 #define SYSCFG_MPU_SEC (SYSCFG_CSLCKR_LOCKSMPU << 16U) /*!< Secure MPU lock (privileged secure code only) */ 190 #define SYSCFG_VTOR_AIRCR_SEC (SYSCFG_CSLCKR_LOCKSVTAIRCR << 16U) /*!< VTOR_S and AIRCR lock (privileged secure code only) */ 191 #define SYSCFG_LOCK_ALL (SYSCFG_MPU_NSEC|SYSCFG_VTOR_NSEC|SYSCFG_SAU|SYSCFG_MPU_SEC|SYSCFG_VTOR_AIRCR_SEC) /*!< All */ 192 #else 193 #define SYSCFG_LOCK_ALL (SYSCFG_MPU_NSEC|SYSCFG_VTOR_NSEC) /*!< All (privileged secure or non-secure only) */ 194 #endif /* __ARM_FEATURE_CMSE */ 195 /** 196 * @} 197 */ 198 199 #if defined (SYSCFG_SECCFGR_SYSCFGSEC) 200 /** @defgroup SYSCFG_Attributes_items SYSCFG Attributes items 201 * @brief SYSCFG items to configure secure or non-secure attributes on 202 * @{ 203 */ 204 #define SYSCFG_CLK SYSCFG_SECCFGR_SYSCFGSEC /*!< SYSCFG clock control */ 205 #define SYSCFG_CLASSB SYSCFG_SECCFGR_CLASSBSEC /*!< Class B */ 206 #define SYSCFG_FPU SYSCFG_SECCFGR_FPUSEC /*!< FPU */ 207 #define SYSCFG_ALL (SYSCFG_CLK | SYSCFG_CLASSB | SYSCFG_FPU) /*!< All */ 208 /** 209 * @} 210 */ 211 #endif /* SYSCFG_SECCFGR_SYSCFGSEC */ 212 213 /** @defgroup SYSCFG_attributes SYSCFG attributes 214 * @brief SYSCFG secure or non-secure attributes 215 * @{ 216 */ 217 #define SYSCFG_SEC 0x00000001U /*!< Secure attribute */ 218 #define SYSCFG_NSEC 0x00000000U /*!< Non-secure attribute */ 219 /** 220 * @} 221 */ 222 223 #ifdef SYSCFG_OTGHSPHYCR_EN 224 /** @defgroup SYSCFG_OTG_PHY_RefenceClockSelection OTG PHY Reference Clock Selection 225 * @{ 226 */ 227 228 /** @brief OTG HS PHY reference clock frequency selection 229 */ 230 #define SYSCFG_OTG_HS_PHY_CLK_SELECT_1 (SYSCFG_OTGHSPHYCR_CLKSEL_0 | SYSCFG_OTGHSPHYCR_CLKSEL_1) /*!< 16Mhz */ 231 #define SYSCFG_OTG_HS_PHY_CLK_SELECT_2 SYSCFG_OTGHSPHYCR_CLKSEL_3 /*!< 19.2Mhz */ 232 #define SYSCFG_OTG_HS_PHY_CLK_SELECT_3 (SYSCFG_OTGHSPHYCR_CLKSEL_0 | SYSCFG_OTGHSPHYCR_CLKSEL_3) /*!< 20Mhz */ 233 #define SYSCFG_OTG_HS_PHY_CLK_SELECT_4 (SYSCFG_OTGHSPHYCR_CLKSEL_1 | SYSCFG_OTGHSPHYCR_CLKSEL_3) /*!< 24Mhz */ 234 #define SYSCFG_OTG_HS_PHY_CLK_SELECT_5 (SYSCFG_OTGHSPHYCR_CLKSEL_1 | SYSCFG_OTGHSPHYCR_CLKSEL_2 | SYSCFG_OTGHSPHYCR_CLKSEL_3) /*!< 26Mhz */ 235 #define SYSCFG_OTG_HS_PHY_CLK_SELECT_6 (SYSCFG_OTGHSPHYCR_CLKSEL_0 | SYSCFG_OTGHSPHYCR_CLKSEL_1 | SYSCFG_OTGHSPHYCR_CLKSEL_3) /*!< 32Mhz */ 236 /** 237 * @} 238 */ 239 240 /** @defgroup SYSCFG_OTG_PHY_PowerDown OTG PHY Power Down 241 * @{ 242 */ 243 244 /** @brief OTG HS PHY Power Down config 245 */ 246 #define SYSCFG_OTG_HS_PHY_POWER_ON 0x00000000U /*!< PHY state machine, bias and OTG PHY PLL are powered down */ 247 #define SYSCFG_OTG_HS_PHY_POWER_DOWN SYSCFG_OTGHSPHYCR_PDCTRL /*!< PHY state machine, bias and OTG PHY PLL remain powered */ 248 /** 249 * @} 250 */ 251 252 /** @defgroup SYSCFG_OTG_PHY_Enable OTG PHY Enable 253 * @{ 254 */ 255 #define SYSCFG_OTG_HS_PHY_UNDERRESET 0x00000000U /*!< PHY under reset */ 256 #define SYSCFG_OTG_HS_PHY_ENABLE SYSCFG_OTGHSPHYCR_EN /*!< PHY enabled */ 257 /** 258 * @} 259 */ 260 261 /** @defgroup SYSCFG_OTG_PHYTUNER_PreemphasisCurrent OTG PHYTUNER Preemphasis Current 262 * @{ 263 */ 264 265 /** @brief High-speed (HS) transmitter preemphasis current control 266 */ 267 #define SYSCFG_OTG_HS_PHY_PREEMP_DISABLED 0x00000000U /*!< HS transmitter preemphasis circuit disabled */ 268 #define SYSCFG_OTG_HS_PHY_PREEMP_1X SYSCFG_OTGHSPHYTUNER2_TXPREEMPAMPTUNE_0 /*!< HS transmitter preemphasis circuit sources 1x preemphasis current */ 269 #define SYSCFG_OTG_HS_PHY_PREEMP_2X SYSCFG_OTGHSPHYTUNER2_TXPREEMPAMPTUNE_1 /*!< HS transmitter preemphasis circuit sources 2x preemphasis current */ 270 #define SYSCFG_OTG_HS_PHY_PREEMP_3X (SYSCFG_OTGHSPHYTUNER2_TXPREEMPAMPTUNE_0 | SYSCFG_OTGHSPHYTUNER2_TXPREEMPAMPTUNE_1) /*!< HS transmitter preemphasis circuit sources 3x preemphasis current */ 271 /** 272 * @} 273 */ 274 275 /** @defgroup SYSCFG_OTG_PHYTUNER_SquelchThreshold OTG PHYTUNER Squelch Threshold 276 * @{ 277 */ 278 279 /** @brief Squelch threshold adjustment 280 */ 281 #define SYSCFG_OTG_HS_PHY_SQUELCH_15PERCENT 0x00000000U /*!< +15% (recommended value) */ 282 #define SYSCFG_OTG_HS_PHY_SQUELCH_0PERCENT (SYSCFG_OTGHSPHYTUNER2_SQRXTUNE_0 | SYSCFG_OTGHSPHYTUNER2_SQRXTUNE_1) /*!< 0% (default value) */ 283 /** 284 * @} 285 */ 286 287 /** @defgroup SYSCFG_OTG_PHYTUNER_DisconnectThreshold OTG PHYTUNER Disconnect Threshold 288 * @{ 289 */ 290 291 /** @brief Disconnect threshold adjustment 292 */ 293 #define SYSCFG_OTG_HS_PHY_DISCONNECT_5_9PERCENT SYSCFG_OTGHSPHYTUNER2_COMPDISTUNE_1 /*!< +5.9% (recommended value) */ 294 #define SYSCFG_OTG_HS_PHY_DISCONNECT_0PERCENT SYSCFG_OTGHSPHYTUNER2_COMPDISTUNE_0 /*!< 0% (default value) */ 295 /** 296 * @} 297 */ 298 #endif /* SYSCFG_OTGHSPHYCR_EN */ 299 300 /** 301 * @} 302 */ 303 304 /* Exported macros -----------------------------------------------------------*/ 305 306 /** @defgroup DBGMCU_Exported_Macros DBGMCU Exported Macros 307 * @{ 308 */ 309 310 /** @brief Freeze/Unfreeze Peripherals in Debug mode 311 */ 312 #if defined(DBGMCU_APB1LFZR_DBG_TIM2_STOP) 313 #define __HAL_DBGMCU_FREEZE_TIM2() SET_BIT(DBGMCU->APB1LFZR, DBGMCU_APB1LFZR_DBG_TIM2_STOP) 314 #define __HAL_DBGMCU_UNFREEZE_TIM2() CLEAR_BIT(DBGMCU->APB1LFZR, DBGMCU_APB1LFZR_DBG_TIM2_STOP) 315 #endif /* DBGMCU_APB1LFZR_DBG_TIM2_STOP */ 316 317 #if defined(DBGMCU_APB1LFZR_DBG_TIM3_STOP) 318 #define __HAL_DBGMCU_FREEZE_TIM3() SET_BIT(DBGMCU->APB1LFZR, DBGMCU_APB1LFZR_DBG_TIM3_STOP) 319 #define __HAL_DBGMCU_UNFREEZE_TIM3() CLEAR_BIT(DBGMCU->APB1LFZR, DBGMCU_APB1LFZR_DBG_TIM3_STOP) 320 #endif /* DBGMCU_APB1LFZR_DBG_TIM3_STOP */ 321 322 #if defined(DBGMCU_APB1LFZR_DBG_WWDG_STOP) 323 #define __HAL_DBGMCU_FREEZE_WWDG() SET_BIT(DBGMCU->APB1LFZR, DBGMCU_APB1LFZR_DBG_WWDG_STOP) 324 #define __HAL_DBGMCU_UNFREEZE_WWDG() CLEAR_BIT(DBGMCU->APB1LFZR, DBGMCU_APB1LFZR_DBG_WWDG_STOP) 325 #endif /* DBGMCU_APB1LFZR_DBG_WWDG_STOP */ 326 327 #if defined(DBGMCU_APB1LFZR_DBG_IWDG_STOP) 328 #define __HAL_DBGMCU_FREEZE_IWDG() SET_BIT(DBGMCU->APB1LFZR, DBGMCU_APB1LFZR_DBG_IWDG_STOP) 329 #define __HAL_DBGMCU_UNFREEZE_IWDG() CLEAR_BIT(DBGMCU->APB1LFZR, DBGMCU_APB1LFZR_DBG_IWDG_STOP) 330 #endif /* DBGMCU_APB1LFZR_DBG_IWDG_STOP */ 331 332 #if defined(DBGMCU_APB1LFZR_DBG_I2C1_STOP) 333 #define __HAL_DBGMCU_FREEZE_I2C1() SET_BIT(DBGMCU->APB1LFZR, DBGMCU_APB1LFZR_DBG_I2C1_STOP) 334 #define __HAL_DBGMCU_UNFREEZE_I2C1() CLEAR_BIT(DBGMCU->APB1LFZR, DBGMCU_APB1LFZR_DBG_I2C1_STOP) 335 #endif /* DBGMCU_APB1LFZR_DBG_I2C1_STOP */ 336 337 #if defined(DBGMCU_APB1HFZR_DBG_LPTIM2_STOP) 338 #define __HAL_DBGMCU_FREEZE_LPTIM2() SET_BIT(DBGMCU->APB1HFZR, DBGMCU_APB1HFZR_DBG_LPTIM2_STOP) 339 #define __HAL_DBGMCU_UNFREEZE_LPTIM2() CLEAR_BIT(DBGMCU->APB1HFZR, DBGMCU_APB1HFZR_DBG_LPTIM2_STOP) 340 #endif /* DBGMCU_APB1HFZR_DBG_LPTIM2_STOP */ 341 342 #if defined(DBGMCU_APB2FZR_DBG_TIM1_STOP) 343 #define __HAL_DBGMCU_FREEZE_TIM1() SET_BIT(DBGMCU->APB2FZR, DBGMCU_APB2FZR_DBG_TIM1_STOP) 344 #define __HAL_DBGMCU_UNFREEZE_TIM1() CLEAR_BIT(DBGMCU->APB2FZR, DBGMCU_APB2FZR_DBG_TIM1_STOP) 345 #endif /* DBGMCU_APB2FZR_DBG_TIM1_STOP */ 346 347 #if defined(DBGMCU_APB2FZR_DBG_TIM16_STOP) 348 #define __HAL_DBGMCU_FREEZE_TIM16() SET_BIT(DBGMCU->APB2FZR, DBGMCU_APB2FZR_DBG_TIM16_STOP) 349 #define __HAL_DBGMCU_UNFREEZE_TIM16() CLEAR_BIT(DBGMCU->APB2FZR, DBGMCU_APB2FZR_DBG_TIM16_STOP) 350 #endif /* DBGMCU_APB2FZR_DBG_TIM16_STOP */ 351 352 #if defined(DBGMCU_APB2FZR_DBG_TIM17_STOP) 353 #define __HAL_DBGMCU_FREEZE_TIM17() SET_BIT(DBGMCU->APB2FZR, DBGMCU_APB2FZR_DBG_TIM17_STOP) 354 #define __HAL_DBGMCU_UNFREEZE_TIM17() CLEAR_BIT(DBGMCU->APB2FZR, DBGMCU_APB2FZR_DBG_TIM17_STOP) 355 #endif /* DBGMCU_APB2FZR_DBG_TIM17_STOP */ 356 357 #if defined(DBGMCU_APB7FZR_DBG_I2C3_STOP) 358 #define __HAL_DBGMCU_FREEZE_I2C3() SET_BIT(DBGMCU->APB7FZR, DBGMCU_APB7FZR_DBG_I2C3_STOP) 359 #define __HAL_DBGMCU_UNFREEZE_I2C3() CLEAR_BIT(DBGMCU->APB7FZR, DBGMCU_APB7FZR_DBG_I2C3_STOP) 360 #endif /* DBGMCU_APB7FZR_DBG_I2C3_STOP */ 361 362 #if defined(DBGMCU_APB7FZR_DBG_LPTIM1_STOP) 363 #define __HAL_DBGMCU_FREEZE_LPTIM1() SET_BIT(DBGMCU->APB7FZR, DBGMCU_APB7FZR_DBG_LPTIM1_STOP) 364 #define __HAL_DBGMCU_UNFREEZE_LPTIM1() CLEAR_BIT(DBGMCU->APB7FZR, DBGMCU_APB7FZR_DBG_LPTIM1_STOP) 365 #endif /* DBGMCU_APB7FZR_DBG_LPTIM1_STOP */ 366 367 #if defined(DBGMCU_APB7FZR_DBG_RTC_STOP) 368 #define __HAL_DBGMCU_FREEZE_RTC() SET_BIT(DBGMCU->APB7FZR, DBGMCU_APB7FZR_DBG_RTC_STOP) 369 #define __HAL_DBGMCU_UNFREEZE_RTC() CLEAR_BIT(DBGMCU->APB7FZR, DBGMCU_APB7FZR_DBG_RTC_STOP) 370 #endif /* DBGMCU_APB7FZR_DBG_RTC_STOP */ 371 372 #if defined(DBGMCU_AHB1FZR_DBG_GPDMA1_CH0_STOP) 373 #define __HAL_DBGMCU_FREEZE_GPDMA0() SET_BIT(DBGMCU->AHB1FZR, DBGMCU_AHB1FZR_DBG_GPDMA1_CH0_STOP) 374 #define __HAL_DBGMCU_UNFREEZE_GPDMA0() CLEAR_BIT(DBGMCU->AHB1FZR, DBGMCU_AHB1FZR_DBG_GPDMA1_CH0_STOP) 375 #endif /* DBGMCU_AHB1FZR_DBG_GPDMA1_CH0_STOP */ 376 377 #if defined(DBGMCU_AHB1FZR_DBG_GPDMA1_CH1_STOP) 378 #define __HAL_DBGMCU_FREEZE_GPDMA1() SET_BIT(DBGMCU->AHB1FZR, DBGMCU_AHB1FZR_DBG_GPDMA1_CH1_STOP) 379 #define __HAL_DBGMCU_UNFREEZE_GPDMA1() CLEAR_BIT(DBGMCU->AHB1FZR, DBGMCU_AHB1FZR_DBG_GPDMA1_CH1_STOP) 380 #endif /* DBGMCU_AHB1FZR_DBG_GPDMA1_CH1_STOP */ 381 382 #if defined(DBGMCU_AHB1FZR_DBG_GPDMA1_CH2_STOP) 383 #define __HAL_DBGMCU_FREEZE_GPDMA2() SET_BIT(DBGMCU->AHB1FZR, DBGMCU_AHB1FZR_DBG_GPDMA1_CH2_STOP) 384 #define __HAL_DBGMCU_UNFREEZE_GPDMA2() CLEAR_BIT(DBGMCU->AHB1FZR, DBGMCU_AHB1FZR_DBG_GPDMA1_CH2_STOP) 385 #endif /* DBGMCU_AHB1FZR_DBG_GPDMA1_CH2_STOP */ 386 387 #if defined(DBGMCU_AHB1FZR_DBG_GPDMA1_CH3_STOP) 388 #define __HAL_DBGMCU_FREEZE_GPDMA3() SET_BIT(DBGMCU->AHB1FZR, DBGMCU_AHB1FZR_DBG_GPDMA1_CH3_STOP) 389 #define __HAL_DBGMCU_UNFREEZE_GPDMA3() CLEAR_BIT(DBGMCU->AHB1FZR, DBGMCU_AHB1FZR_DBG_GPDMA1_CH3_STOP) 390 #endif /* DBGMCU_AHB1FZR_DBG_GPDMA1_CH3_STOP */ 391 392 #if defined(DBGMCU_AHB1FZR_DBG_GPDMA1_CH4_STOP) 393 #define __HAL_DBGMCU_FREEZE_GPDMA4() SET_BIT(DBGMCU->AHB1FZR, DBGMCU_AHB1FZR_DBG_GPDMA1_CH4_STOP) 394 #define __HAL_DBGMCU_UNFREEZE_GPDMA4() CLEAR_BIT(DBGMCU->AHB1FZR, DBGMCU_AHB1FZR_DBG_GPDMA1_CH4_STOP) 395 #endif /* DBGMCU_AHB1FZR_DBG_GPDMA1_CH4_STOP */ 396 397 #if defined(DBGMCU_AHB1FZR_DBG_GPDMA1_CH5_STOP) 398 #define __HAL_DBGMCU_FREEZE_GPDMA5() SET_BIT(DBGMCU->AHB1FZR, DBGMCU_AHB1FZR_DBG_GPDMA1_CH5_STOP) 399 #define __HAL_DBGMCU_UNFREEZE_GPDMA5() CLEAR_BIT(DBGMCU->AHB1FZR, DBGMCU_AHB1FZR_DBG_GPDMA1_CH5_STOP) 400 #endif /* DBGMCU_AHB1FZR_DBG_GPDMA1_CH5_STOP */ 401 402 #if defined(DBGMCU_AHB1FZR_DBG_GPDMA1_CH6_STOP) 403 #define __HAL_DBGMCU_FREEZE_GPDMA6() SET_BIT(DBGMCU->AHB1FZR, DBGMCU_AHB1FZR_DBG_GPDMA1_CH6_STOP) 404 #define __HAL_DBGMCU_UNFREEZE_GPDMA6() CLEAR_BIT(DBGMCU->AHB1FZR, DBGMCU_AHB1FZR_DBG_GPDMA1_CH6_STOP) 405 #endif /* DBGMCU_AHB1FZR_DBG_GPDMA1_CH6_STOP */ 406 407 #if defined(DBGMCU_AHB1FZR_DBG_GPDMA1_CH7_STOP) 408 #define __HAL_DBGMCU_FREEZE_GPDMA7() SET_BIT(DBGMCU->AHB1FZR, DBGMCU_AHB1FZR_DBG_GPDMA1_CH7_STOP) 409 #define __HAL_DBGMCU_UNFREEZE_GPDMA7() CLEAR_BIT(DBGMCU->AHB1FZR, DBGMCU_AHB1FZR_DBG_GPDMA1_CH7_STOP) 410 #endif /* DBGMCU_AHB1FZR_DBG_GPDMA1_CH7_STOP */ 411 412 /** 413 * @} 414 */ 415 416 /** @defgroup SYSCFG_Exported_Macros SYSCFG Exported Macros 417 * @{ 418 */ 419 420 /** @brief Floating Point Unit interrupt enable/disable macros 421 * @param __INTERRUPT__: This parameter can be a value of @ref SYSCFG_FPU_Interrupts 422 */ 423 #define __HAL_SYSCFG_FPU_INTERRUPT_ENABLE(__INTERRUPT__) do {assert_param(IS_SYSCFG_FPU_INTERRUPT((__INTERRUPT__)));\ 424 SET_BIT(SYSCFG->FPUIMR, (__INTERRUPT__));\ 425 }while(0) 426 427 #define __HAL_SYSCFG_FPU_INTERRUPT_DISABLE(__INTERRUPT__) do {assert_param(IS_SYSCFG_FPU_INTERRUPT((__INTERRUPT__)));\ 428 CLEAR_BIT(SYSCFG->FPUIMR, (__INTERRUPT__));\ 429 }while(0) 430 431 /** @brief SYSCFG Break ECC lock. 432 * Enable and lock the connection of Flash ECC error connection to TIM1/8/15/16/17 Break input. 433 * @note The selected configuration is locked and can be unlocked only by system reset. 434 */ 435 #define __HAL_SYSCFG_BREAK_ECC_LOCK() SET_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_ECCL) 436 437 /** @brief SYSCFG Break Cortex-M33 Lockup lock. 438 * Enable and lock the connection of Cortex-M33 LOCKUP (Hardfault) output to TIM1/8/15/16/17 Break input. 439 * @note The selected configuration is locked and can be unlocked only by system reset. 440 */ 441 #define __HAL_SYSCFG_BREAK_LOCKUP_LOCK() SET_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_CLL) 442 443 /** @brief SYSCFG Break PVD lock. 444 * Enable and lock the PVD connection to Timer1/8/15/16/17 Break input, as well as the PVDE and PLS[2:0] in 445 * the PWR_CR2 register. 446 * @note The selected configuration is locked and can be unlocked only by system reset. 447 */ 448 #define __HAL_SYSCFG_BREAK_PVD_LOCK() SET_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_PVDL) 449 450 /** @brief SYSCFG Break SRAM2 parity lock. 451 * Enable and lock the SRAM2 parity error signal connection to TIM1/8/15/16/17 Break input. 452 * @note The selected configuration is locked and can be unlocked by system reset. 453 */ 454 #define __HAL_SYSCFG_BREAK_SRAM2PARITY_LOCK() SET_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_SPL) 455 456 /** @brief Check SYSCFG flag is set or not. 457 * @param __FLAG__ specifies the flag to check. 458 * This parameter can be one of the following values: 459 * @arg @ref SYSCFG_FLAG_MCLR Device memories erase status flag 460 * @arg @ref SYSCFG_FLAG_IPMEE ICACHE and PKA SRAM erase status flag 461 * @retval The new state of __FLAG__ (TRUE or FALSE). 462 */ 463 #define __HAL_SYSCFG_GET_FLAG(__FLAG__) (READ_BIT(SYSCFG->MESR, (__FLAG__)) == (__FLAG__)) 464 465 /** @brief Clear SYSCFG flag. 466 * @param __FLAG__ specifies the flag(s) to clear. 467 * This parameter can be any combination of the following values: 468 * @arg @ref SYSCFG_FLAG_MCLR Device memories erase status flag 469 * @arg @ref SYSCFG_FLAG_IPMEE ICACHE and PKA SRAM erase status flag 470 */ 471 #define __HAL_SYSCFG_CLEAR_FLAG(__FLAG__) SET_BIT(SYSCFG->MESR, (__FLAG__)) 472 473 /** @brief Fast-mode Plus driving capability enable/disable macros 474 * @param __FASTMODEPLUS__: This parameter can be a value of : 475 * @arg @ref SYSCFG_FASTMODEPLUS_PA6 Fast-mode Plus driving capability activation on PA6 476 * @arg @ref SYSCFG_FASTMODEPLUS_PA7 Fast-mode Plus driving capability activation on PA7 477 * @arg @ref SYSCFG_FASTMODEPLUS_PA15 Fast-mode Plus driving capability activation on PA15 478 * @arg @ref SYSCFG_FASTMODEPLUS_PB3 Fast-mode Plus driving capability activation on PB3 479 */ 480 #define __HAL_SYSCFG_FASTMODEPLUS_ENABLE(__FASTMODEPLUS__) \ 481 do {assert_param(IS_SYSCFG_FASTMODEPLUS((__FASTMODEPLUS__)));\ 482 SET_BIT(SYSCFG->CFGR1, (__FASTMODEPLUS__));\ 483 }while(0) 484 485 #define __HAL_SYSCFG_FASTMODEPLUS_DISABLE(__FASTMODEPLUS__) \ 486 do {assert_param(IS_SYSCFG_FASTMODEPLUS((__FASTMODEPLUS__)));\ 487 CLEAR_BIT(SYSCFG->CFGR1, (__FASTMODEPLUS__));\ 488 }while(0) 489 490 /** 491 * @} 492 */ 493 494 /* Private macros ------------------------------------------------------------*/ 495 496 /** @defgroup SYSCFG_Private_Macros SYSCFG Private Macros 497 * @{ 498 */ 499 500 #define IS_SYSCFG_FPU_INTERRUPT(__INTERRUPT__) ((((__INTERRUPT__) & SYSCFG_IT_FPU_ALL) != 0x00U) && \ 501 (((__INTERRUPT__) & ~SYSCFG_IT_FPU_ALL) == 0x00U)) 502 503 #ifdef SYSCFG_CCCSR_EN2 504 #define IS_SYSCFG_COMPENSATION_CELL(__CELL__) (((__CELL__) == SYSCFG_IO_CELL) || \ 505 ((__CELL__) == SYSCFG_IO2_CELL)) 506 507 #define IS_SYSCFG_COMPENSATION_CELL_READY(__CELL__) (((__CELL__) == SYSCFG_IO_CELL_READY) || \ 508 ((__CELL__) == SYSCFG_IO2_CELL_READY)) 509 #else 510 #define IS_SYSCFG_COMPENSATION_CELL(__CELL__) (((__CELL__) == SYSCFG_IO_CELL)) 511 512 #define IS_SYSCFG_COMPENSATION_CELL_READY(__CELL__) (((__CELL__) == SYSCFG_IO_CELL_READY)) 513 #endif /* SYSCFG_CCCSR_EN2 */ 514 515 #define IS_SYSCFG_COMPENSATION_CELL_CODE(__VALUE__) (((__VALUE__) == SYSCFG_IO_CELL_CODE) || \ 516 ((__VALUE__) == SYSCFG_IO_REGISTER_CODE)) 517 518 #define IS_SYSCFG_COMPENSATION_CELL_PMOS_VALUE(__VALUE__) (((__VALUE__) < 16U)) 519 520 #define IS_SYSCFG_COMPENSATION_CELL_NMOS_VALUE(__VALUE__) (((__VALUE__) < 16U)) 521 522 #define IS_SYSCFG_BREAK_CONFIG(__CONFIG__) (((__CONFIG__) == SYSCFG_BREAK_ECC) || \ 523 ((__CONFIG__) == SYSCFG_BREAK_PVD) || \ 524 ((__CONFIG__) == SYSCFG_BREAK_SRAM2_PARITY) || \ 525 ((__CONFIG__) == SYSCFG_BREAK_LOCKUP)) 526 527 528 #define IS_SYSCFG_FASTMODEPLUS(__PIN__) ((((__PIN__) & SYSCFG_FASTMODEPLUS_ALL) != 0x00U) && \ 529 (((__PIN__) & ~SYSCFG_FASTMODEPLUS_ALL) == 0x00U)) 530 531 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) 532 533 #define IS_SYSCFG_ATTRIBUTES(__ATTRIBUTES__) (((__ATTRIBUTES__) == SYSCFG_SEC) ||\ 534 ((__ATTRIBUTES__) == SYSCFG_NSEC)) 535 536 #define IS_SYSCFG_ITEMS_ATTRIBUTES(__ITEM__) ((((__ITEM__) & SYSCFG_ALL) != 0x00U) && \ 537 (((__ITEM__) & ~SYSCFG_ALL) == 0x00U)) 538 539 #endif /* __ARM_FEATURE_CMSE */ 540 541 #if defined (SYSCFG_SECCFGR_SYSCFGSEC) 542 #define IS_SYSCFG_SINGLE_ITEMS_ATTRIBUTES(__ITEM__) (((__ITEM__) == (SYSCFG_CLK)) || \ 543 ((__ITEM__) == (SYSCFG_CLASSB)) || \ 544 ((__ITEM__) == (SYSCFG_FPU))) 545 #endif /* SYSCFG_SECCFGR_SYSCFGSEC */ 546 547 #define IS_SYSCFG_LOCK_ITEMS(__ITEM__) ((((__ITEM__) & SYSCFG_LOCK_ALL) != 0x00U) && \ 548 (((__ITEM__) & ~SYSCFG_LOCK_ALL) == 0x00U)) 549 550 #ifdef SYSCFG_OTGHSPHYCR_EN 551 #define IS_SYSCFG_OTGPHY_REFERENCE_CLOCK(__VALUE__) (((__VALUE__) == SYSCFG_OTG_HS_PHY_CLK_SELECT_1) || \ 552 ((__VALUE__) == SYSCFG_OTG_HS_PHY_CLK_SELECT_2) || \ 553 ((__VALUE__) == SYSCFG_OTG_HS_PHY_CLK_SELECT_3) || \ 554 ((__VALUE__) == SYSCFG_OTG_HS_PHY_CLK_SELECT_4) || \ 555 ((__VALUE__) == SYSCFG_OTG_HS_PHY_CLK_SELECT_5) || \ 556 ((__VALUE__) == SYSCFG_OTG_HS_PHY_CLK_SELECT_6)) 557 558 #define IS_SYSCFG_OTGPHY_POWERDOWN_CONFIG(__VALUE__) (((__VALUE__) == SYSCFG_OTG_HS_PHY_POWER_DOWN) || \ 559 ((__VALUE__) == SYSCFG_OTG_HS_PHY_POWER_ON)) 560 561 #define IS_SYSCFG_OTGPHY_CONFIG(__VALUE__) (((__VALUE__) == SYSCFG_OTG_HS_PHY_UNDERRESET) || \ 562 ((__VALUE__) == SYSCFG_OTG_HS_PHY_ENABLE)) 563 564 #define IS_SYSCFG_OTGPHY_DISCONNECT(__VALUE__) (((__VALUE__) == SYSCFG_OTG_HS_PHY_DISCONNECT_5_9PERCENT) || \ 565 ((__VALUE__) == SYSCFG_OTG_HS_PHY_DISCONNECT_0PERCENT)) 566 567 #define IS_SYSCFG_OTGPHY_SQUELCH(__VALUE__) (((__VALUE__) == SYSCFG_OTG_HS_PHY_SQUELCH_0PERCENT) || \ 568 ((__VALUE__) == SYSCFG_OTG_HS_PHY_SQUELCH_15PERCENT)) 569 570 #define IS_SYSCFG_OTGPHY_PREEMPHASIS(__VALUE__) (((__VALUE__) == SYSCFG_OTG_HS_PHY_PREEMP_DISABLED) || \ 571 ((__VALUE__) == SYSCFG_OTG_HS_PHY_PREEMP_1X) || \ 572 ((__VALUE__) == SYSCFG_OTG_HS_PHY_PREEMP_2X) || \ 573 ((__VALUE__) == SYSCFG_OTG_HS_PHY_PREEMP_3X)) 574 #endif /* SYSCFG_OTGHSPHYCR_EN */ 575 576 /** 577 * @} 578 */ 579 580 /* Exported functions --------------------------------------------------------*/ 581 582 /** @addtogroup HAL_Exported_Functions 583 * @{ 584 */ 585 586 /** @addtogroup HAL_Exported_Functions_Group1 587 * @{ 588 */ 589 590 /* Initialization and de-initialization functions ******************************/ 591 HAL_StatusTypeDef HAL_Init(void); 592 HAL_StatusTypeDef HAL_DeInit(void); 593 void HAL_MspInit(void); 594 void HAL_MspDeInit(void); 595 HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority); 596 597 /** 598 * @} 599 */ 600 601 /** @addtogroup HAL_Exported_Functions_Group2 602 * @{ 603 */ 604 605 /* Peripheral Control functions ************************************************/ 606 void HAL_IncTick(void); 607 void HAL_Delay(uint32_t Delay); 608 uint32_t HAL_GetTick(void); 609 uint32_t HAL_GetTickPrio(void); 610 HAL_StatusTypeDef HAL_SetTickFreq(HAL_TickFreqTypeDef Freq); 611 HAL_TickFreqTypeDef HAL_GetTickFreq(void); 612 void HAL_SuspendTick(void); 613 void HAL_ResumeTick(void); 614 uint32_t HAL_GetHalVersion(void); 615 uint32_t HAL_GetREVID(void); 616 uint32_t HAL_GetDEVID(void); 617 uint32_t HAL_GetUIDw0(void); 618 uint32_t HAL_GetUIDw1(void); 619 uint32_t HAL_GetUIDw2(void); 620 621 /** 622 * @} 623 */ 624 625 /** @addtogroup HAL_Exported_Functions_Group3 626 * @{ 627 */ 628 629 /* DBGMCU Peripheral Control functions *****************************************/ 630 void HAL_DBGMCU_EnableDBGStopMode(void); 631 void HAL_DBGMCU_DisableDBGStopMode(void); 632 void HAL_DBGMCU_EnableDBGStandbyMode(void); 633 void HAL_DBGMCU_DisableDBGStandbyMode(void); 634 635 /** 636 * @} 637 */ 638 639 /** @addtogroup HAL_Exported_Functions_Group4 640 * @{ 641 */ 642 643 /* SYSCFG Control functions ****************************************************/ 644 void HAL_SYSCFG_EnableIOAnalogSwitchBooster(void); 645 void HAL_SYSCFG_DisableIOAnalogSwitchBooster(void); 646 void HAL_SYSCFG_EnableIOAnalogSwitchVdd(void); 647 void HAL_SYSCFG_DisableIOAnalogSwitchVdd(void); 648 649 650 #ifdef SYSCFG_OTGHSPHYCR_EN 651 void HAL_SYSCFG_SetOTGPHYReferenceClockSelection(uint32_t RefClockSelection); 652 void HAL_SYSCFG_SetOTGPHYPowerDownConfig(uint32_t PowerDownConfig); 653 void HAL_SYSCFG_EnableOTGPHY(uint32_t OTGPHYConfig); 654 void HAL_SYSCFG_SetOTGPHYDisconnectThreshold(uint32_t DisconnectThreshold); 655 void HAL_SYSCFG_SetOTGPHYSquelchThreshold(uint32_t SquelchThreshold); 656 void HAL_SYSCFG_SetOTGPHYPreemphasisCurrent(uint32_t PreemphasisCurrent); 657 #endif /* SYSCFG_OTGHSPHYCR_EN */ 658 659 void HAL_SYSCFG_EnableCompensationCell(uint32_t Selection); 660 void HAL_SYSCFG_DisableCompensationCell(uint32_t Selection); 661 uint32_t HAL_SYSCFG_GetCompensationCellReadyStatus(uint32_t Selection); 662 void HAL_SYSCFG_ConfigCompensationCell(uint32_t Selection, uint32_t Code, uint32_t NmosValue, 663 uint32_t PmosValue); 664 HAL_StatusTypeDef HAL_SYSCFG_GetCompensationCell(uint32_t Selection, uint32_t *pCode, uint32_t *pNmosValue, 665 uint32_t *pPmosValue); 666 /** 667 * @} 668 */ 669 670 /** @addtogroup HAL_Exported_Functions_Group5 671 * @{ 672 */ 673 674 /* SYSCFG Lock functions ********************************************/ 675 void HAL_SYSCFG_Lock(uint32_t Item); 676 HAL_StatusTypeDef HAL_SYSCFG_GetLock(uint32_t *pItem); 677 678 /** 679 * @} 680 */ 681 682 /** @addtogroup HAL_Exported_Functions_Group6 683 * @{ 684 */ 685 686 #if defined (SYSCFG_SECCFGR_SYSCFGSEC) 687 /* SYSCFG Attributes functions ********************************************/ 688 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) 689 void HAL_SYSCFG_ConfigAttributes(uint32_t Item, uint32_t Attributes); 690 #endif /* __ARM_FEATURE_CMSE */ 691 HAL_StatusTypeDef HAL_SYSCFG_GetConfigAttributes(uint32_t Item, uint32_t *pAttributes); 692 #endif /* SYSCFG_SECCFGR_SYSCFGSEC */ 693 694 /** 695 * @} 696 */ 697 698 /** 699 * @} 700 */ 701 702 /** 703 * @} 704 */ 705 706 /** 707 * @} 708 */ 709 710 #ifdef __cplusplus 711 } 712 #endif 713 714 #endif /* __STM32WBAxx_HAL_H */ 715