1 /** 2 ****************************************************************************** 3 * @file stm32n6xx_hal_pwr_ex.h 4 * @author MCD Application Team 5 * @brief Header file of PWR HAL Extended module. 6 ****************************************************************************** 7 * @attention 8 * 9 * Copyright (c) 2023 STMicroelectronics. 10 * All rights reserved. 11 * 12 * This software is licensed under terms that can be found in the LICENSE file 13 * in the root directory of this software component. 14 * If no LICENSE file comes with this software, it is provided AS-IS. 15 * 16 ****************************************************************************** 17 */ 18 19 /* Define to prevent recursive inclusion -------------------------------------*/ 20 #ifndef STM32N6xx_HAL_PWR_EX_H 21 #define STM32N6xx_HAL_PWR_EX_H 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif /* __cplusplus */ 26 27 /* Includes ------------------------------------------------------------------*/ 28 #include "stm32n6xx_hal_def.h" 29 30 31 /** @addtogroup STM32N6xx_HAL_Driver 32 * @{ 33 */ 34 35 /** @addtogroup PWREx 36 * @{ 37 */ 38 39 /* Exported types ------------------------------------------------------------*/ 40 41 /** @defgroup PWREx_Exported_Types PWR Extended Exported Types 42 * @{ 43 */ 44 /** 45 * @brief PWREx Wakeup pin configuration structure definition 46 */ 47 typedef struct 48 { 49 uint32_t WakeUpPin; /*!< Specifies the Wake-Up pin to be enabled. 50 This parameter can be a value of @ref PWR_WakeUp_Pins */ 51 52 uint32_t PinPolarity; /*!< Specifies the Wake-Up pin polarity. 53 This parameter can be a value of @ref PWR_PIN_Polarity */ 54 55 uint32_t PinPull; /*!< Specifies the Wake-Up pin pull. 56 This parameter can be a value of @ref PWR_PIN_Pull */ 57 } PWREx_WakeupPinTypeDef; 58 59 /** 60 * @brief PWR PVM configuration structure definition 61 */ 62 typedef struct 63 { 64 uint32_t PVMType; /*!< Specifies which voltage is monitored. 65 This parameter can be a value of 66 @ref PWREx_PVM_Type. */ 67 68 uint32_t Mode; /*!< Specifies the operating mode for the selected pins. 69 This parameter can be a value of 70 @ref PWREx_PVM_Mode. */ 71 } PWR_PVMTypeDef; 72 73 74 /** 75 * @brief PWR VddCORE monitoring configuration structure definition 76 */ 77 typedef struct 78 { 79 uint32_t LowVoltageThreshold; /*!< Specifies the VDDCORE voltage detector low-level. 80 This parameter can be a value of 81 @ref PWREx_VDDCORE_Levels. */ 82 83 uint32_t Mode; /*!< Specifies the operating mode for the selected pins. 84 This parameter can be a value of 85 @ref PWREx_VddCOREVM_Mode. */ 86 } PWR_VddCOREVMTypeDef; 87 /** 88 * @} 89 */ 90 91 /* Exported constants --------------------------------------------------------*/ 92 93 /** @defgroup PWREx_Exported_Constants PWR Extended Exported Constants 94 * @{ 95 */ 96 97 /** @defgroup PWREx_Supply_configuration PWREx Supply configuration 98 * @{ 99 */ 100 #define PWR_SMPS_SUPPLY PWR_CR1_SDEN /*!< VCORE power domains are supplied from SMPS step-down converter according to VOS */ 101 #define PWR_EXTERNAL_SOURCE_SUPPLY (0U) /*!< SMPS step-down converter disabled. VCORE supplied from external source */ 102 103 #define PWR_SUPPLY_CONFIG_MASK PWR_CR1_SDEN 104 /** 105 * @} 106 */ 107 108 /** @defgroup PWR_Regulator_Voltage_Scale PWR Regulator Voltage Scale 109 * @{ 110 */ 111 #define PWR_REGULATOR_VOLTAGE_SCALE0 PWR_VOSCR_VOS /*!< Voltage scaling range 0 (highest frequency) */ 112 #define PWR_REGULATOR_VOLTAGE_SCALE1 (0U) /*!< Voltage scaling range 1 (lowest power) */ 113 /** 114 * @} 115 */ 116 117 /** @defgroup PWREx_Regulator_Voltage_Scale PWREx Regulator Voltage Scale 118 * @{ 119 */ 120 #define PWR_REGULATOR_STOP_VOLTAGE_SCALE3 PWR_CPUCR_SVOS /*!< System Stop mode voltage scaling range 3 (highest frequency) */ 121 #define PWR_REGULATOR_STOP_VOLTAGE_SCALE5 (0U) /*!< System Stop mode voltage scaling range 5 (lowest power) */ 122 /** 123 * @} 124 */ 125 126 /** @defgroup PWREx_VBAT_Thresholds PWREx VBAT Thresholds 127 * @{ 128 */ 129 #define PWR_VBAT_BETWEEN_HIGH_LOW_THRESHOLD (0U) 130 #define PWR_VBAT_BELOW_LOW_THRESHOLD PWR_BDCR1_VBATL 131 #define PWR_VBAT_ABOVE_HIGH_THRESHOLD PWR_BDCR1_VBATH 132 /** 133 * @} 134 */ 135 136 /** @defgroup PWREx_TEMP_Thresholds PWREx Temperature Thresholds 137 * @{ 138 */ 139 #define PWR_TEMP_BETWEEN_HIGH_LOW_THRESHOLD (0U) 140 #define PWR_TEMP_BELOW_LOW_THRESHOLD PWR_BDCR1_TEMPL 141 #define PWR_TEMP_ABOVE_HIGH_THRESHOLD PWR_BDCR1_TEMPH 142 /** 143 * @} 144 */ 145 146 /** @defgroup PWREx_VDDCORE_Levels PWREx VDDCORE voltage detector low-level 147 * @{ 148 */ 149 #define PWR_VDDCORE_THRESHOLD_VOS0 PWR_CR3_VCORELLS 150 #define PWR_VDDCORE_THRESHOLD_VOS1 (0U) 151 /** 152 * @} 153 */ 154 155 /** @defgroup PWREx_VDDCORE_Thresholds PWREx VDDCORE voltage detector low-level Thresholds 156 * @{ 157 */ 158 #define PWR_VDDCORE_BETWEEN_HIGH_LOW_THRESHOLD (0U) 159 #define PWR_VDDCORE_BELOW_LOW_THRESHOLD PWR_CR3_VCOREL 160 #define PWR_VDDCORE_ABOVE_HIGH_THRESHOLD PWR_CR3_VCOREH 161 /** 162 * @} 163 */ 164 165 /** @defgroup PWREx_VddCOREVM_Mode PWR Extended VddCORE Monitoring Interrupt and Event Mode 166 * @{ 167 */ 168 #define PWR_VDDCOREVM_MODE_NORMAL (0x00U) /*!< Basic Mode is used */ 169 #define PWR_VDDCOREVM_MODE_IT_RISING (0x05U) /*!< External Interrupt Mode with Rising edge trigger detection */ 170 #define PWR_VDDCOREVM_MODE_IT_FALLING (0x06U) /*!< External Interrupt Mode with Falling edge trigger detection */ 171 #define PWR_VDDCOREVM_MODE_IT_RISING_FALLING (0x07U) /*!< External Interrupt Mode with Rising/Falling edge trigger detection */ 172 #define PWR_VDDCOREVM_MODE_EVENT_RISING (0x09U) /*!< Event Mode with Rising edge trigger detection */ 173 #define PWR_VDDCOREVM_MODE_EVENT_FALLING (0x0AU) /*!< Event Mode with Falling edge trigger detection */ 174 #define PWR_VDDCOREVM_MODE_EVENT_RISING_FALLING (0x0BU) /*!< Event Mode with Rising/Falling edge trigger detection */ 175 /** 176 * @} 177 */ 178 179 /** @defgroup PWREx_VDDIO PWREx Vdd IO selection 180 * @{ 181 */ 182 #define PWR_VDDIO (0U) 183 #define PWR_VDDIO2 (1U) 184 #define PWR_VDDIO3 (2U) 185 #define PWR_VDDIO4 (3U) 186 #define PWR_VDDIO5 (4U) 187 /** 188 * @} 189 */ 190 191 /** @defgroup PWREx_VDDIO_Range PWREx Vdd IO Range 192 * @{ 193 */ 194 #define PWR_VDDIO_RANGE_3V3 (0U) 195 #define PWR_VDDIO_RANGE_1V8 (1U) 196 /** 197 * @} 198 */ 199 200 /** @defgroup PWREx_PVM_Mode PWR Extended PVM Interrupt and Event Mode 201 * @{ 202 */ 203 #define PWR_PVM_MODE_NORMAL (0x00U) /*!< Basic Mode is used */ 204 #define PWR_PVM_MODE_IT_RISING (0x05U) /*!< External Interrupt Mode with Rising edge trigger detection */ 205 #define PWR_PVM_MODE_IT_FALLING (0x06U) /*!< External Interrupt Mode with Falling edge trigger detection */ 206 #define PWR_PVM_MODE_IT_RISING_FALLING (0x07U) /*!< External Interrupt Mode with Rising/Falling edge trigger detection */ 207 #define PWR_PVM_MODE_EVENT_RISING (0x09U) /*!< Event Mode with Rising edge trigger detection */ 208 #define PWR_PVM_MODE_EVENT_FALLING (0x0AU) /*!< Event Mode with Falling edge trigger detection */ 209 #define PWR_PVM_MODE_EVENT_RISING_FALLING (0x0BU) /*!< Event Mode with Rising/Falling edge trigger detection */ 210 /** 211 * @} 212 */ 213 214 /** 215 * @} 216 */ 217 218 /* Exported macros -----------------------------------------------------------*/ 219 /** @defgroup PWREx_Exported_Macros PWR Extended Exported Macros 220 * @{ 221 */ 222 223 /** 224 * @brief Enable the USBVM Extended Interrupt Line. 225 * @retval None. 226 */ 227 #define __HAL_PWR_USBVM_EXTI_ENABLE_IT() SET_BIT(EXTI->IMR3, PWR_EXTI_LINE_PVM_VDDUSB) 228 229 /** 230 * @brief Disable the USBVM Extended Interrupt Line. 231 * @retval None. 232 */ 233 #define __HAL_PWR_USBVM_EXTI_DISABLE_IT() CLEAR_BIT(EXTI->IMR3, PWR_EXTI_LINE_PVM_VDDUSB) 234 235 /** 236 * @brief Enable the USBVM Event Line. 237 * @retval None. 238 */ 239 #define __HAL_PWR_USBVM_EXTI_ENABLE_EVENT() SET_BIT(EXTI->EMR3, PWR_EXTI_LINE_PVM_VDDUSB) 240 241 /** 242 * @brief Disable the USBVM Event Line. 243 * @retval None. 244 */ 245 #define __HAL_PWR_USBVM_EXTI_DISABLE_EVENT() CLEAR_BIT(EXTI->EMR3, PWR_EXTI_LINE_PVM_VDDUSB) 246 247 /** 248 * @brief Enable the USBVM Extended Interrupt Rising Trigger. 249 * @retval None. 250 */ 251 #define __HAL_PWR_USBVM_EXTI_ENABLE_RISING_EDGE() SET_BIT(EXTI->RTSR3, PWR_EXTI_LINE_PVM_VDDUSB) 252 253 /** 254 * @brief Disable the USBVM Extended Interrupt Rising Trigger. 255 * @retval None. 256 */ 257 #define __HAL_PWR_USBVM_EXTI_DISABLE_RISING_EDGE() CLEAR_BIT(EXTI->RTSR3, PWR_EXTI_LINE_PVM_VDDUSB) 258 259 /** 260 * @brief Enable the USBVM Extended Interrupt Falling Trigger. 261 * @retval None. 262 */ 263 #define __HAL_PWR_USBVM_EXTI_ENABLE_FALLING_EDGE() SET_BIT(EXTI->FTSR3, PWR_EXTI_LINE_PVM_VDDUSB) 264 265 /** 266 * @brief Disable the USBVM Extended Interrupt Falling Trigger. 267 * @retval None. 268 */ 269 #define __HAL_PWR_USBVM_EXTI_DISABLE_FALLING_EDGE() CLEAR_BIT(EXTI->FTSR3, PWR_EXTI_LINE_PVM_VDDUSB) 270 271 /** 272 * @brief Enable the USBVM Extended Interrupt Rising & Falling Trigger. 273 * @retval None. 274 */ 275 #define __HAL_PWR_USBVM_EXTI_ENABLE_RISING_FALLING_EDGE() \ 276 do \ 277 { \ 278 __HAL_PWR_USBVM_EXTI_ENABLE_RISING_EDGE(); \ 279 __HAL_PWR_USBVM_EXTI_ENABLE_FALLING_EDGE(); \ 280 } while(0) 281 282 /** 283 * @brief Disable the USBVM Extended Interrupt Rising & Falling Trigger. 284 * @retval None. 285 */ 286 #define __HAL_PWR_USBVM_EXTI_DISABLE_RISING_FALLING_EDGE() \ 287 do \ 288 { \ 289 __HAL_PWR_USBVM_EXTI_DISABLE_RISING_EDGE(); \ 290 __HAL_PWR_USBVM_EXTI_DISABLE_FALLING_EDGE(); \ 291 } while(0) 292 293 /** 294 * @brief Generate a Software Interrupt on USBVM EXTI Line. 295 * @retval None 296 */ 297 #define __HAL_PWR_USBVM_EXTI_GENERATE_SWIT() SET_BIT(EXTI->SWIER3, PWR_EXTI_LINE_PVM_VDDUSB) 298 299 /** 300 * @brief Check whether the specified USBVM EXTI flag is set or not. 301 * @retval EXTI USBVM Line Status. 302 */ 303 #define __HAL_PWR_USBVM_EXTI_GET_FLAG() ((EXTI->RPR3 | EXTI->FPR3) & PWR_EXTI_LINE_PVM_VDDUSB) 304 305 /** 306 * @brief Clear the USBVM interrupt Rising flag. 307 * @retval None. 308 */ 309 #define __HAL_PWR_USBVM_EXTI_CLEAR_RISING_FLAG() WRITE_REG(EXTI->RPR3, PWR_EXTI_LINE_PVM_VDDUSB) 310 311 /** 312 * @brief Clear the USBVM interrupt Falling flag. 313 * @retval None 314 */ 315 #define __HAL_PWR_USBVM_EXTI_CLEAR_FALLING_FLAG() WRITE_REG(EXTI->FPR3, PWR_EXTI_LINE_PVM_VDDUSB) 316 317 /** 318 * @brief Enable the IO2VM Extended Interrupt Line. 319 * @retval None. 320 */ 321 #define __HAL_PWR_IO2VM_EXTI_ENABLE_IT() SET_BIT(EXTI->IMR3, PWR_EXTI_LINE_PVM_VDDIO2) 322 323 /** 324 * @brief Disable the IO2VM Extended Interrupt Line. 325 * @retval None. 326 */ 327 #define __HAL_PWR_IO2VM_EXTI_DISABLE_IT() CLEAR_BIT(EXTI->IMR3, PWR_EXTI_LINE_PVM_VDDIO2) 328 329 /** 330 * @brief Enable the IO2VM Event Line. 331 * @retval None. 332 */ 333 #define __HAL_PWR_IO2VM_EXTI_ENABLE_EVENT() SET_BIT(EXTI->EMR3, PWR_EXTI_LINE_PVM_VDDIO2) 334 335 /** 336 * @brief Disable the IO2VM Event Line. 337 * @retval None. 338 */ 339 #define __HAL_PWR_IO2VM_EXTI_DISABLE_EVENT() CLEAR_BIT(EXTI->EMR3, PWR_EXTI_LINE_PVM_VDDIO2) 340 341 /** 342 * @brief Enable the IO2VM Extended Interrupt Rising Trigger. 343 * @retval None. 344 */ 345 #define __HAL_PWR_IO2VM_EXTI_ENABLE_RISING_EDGE() SET_BIT(EXTI->RTSR3, PWR_EXTI_LINE_PVM_VDDIO2) 346 347 /** 348 * @brief Disable the IO2VM Extended Interrupt Rising Trigger. 349 * @retval None. 350 */ 351 #define __HAL_PWR_IO2VM_EXTI_DISABLE_RISING_EDGE() CLEAR_BIT(EXTI->RTSR3, PWR_EXTI_LINE_PVM_VDDIO2) 352 353 /** 354 * @brief Enable the IO2VM Extended Interrupt Falling Trigger. 355 * @retval None. 356 */ 357 #define __HAL_PWR_IO2VM_EXTI_ENABLE_FALLING_EDGE() SET_BIT(EXTI->FTSR3, PWR_EXTI_LINE_PVM_VDDIO2) 358 359 /** 360 * @brief Disable the IO2VM Extended Interrupt Falling Trigger. 361 * @retval None. 362 */ 363 #define __HAL_PWR_IO2VM_EXTI_DISABLE_FALLING_EDGE() CLEAR_BIT(EXTI->FTSR3, PWR_EXTI_LINE_PVM_VDDIO2) 364 365 /** 366 * @brief Enable the IO2VM Extended Interrupt Rising & Falling Trigger. 367 * @retval None. 368 */ 369 #define __HAL_PWR_IO2VM_EXTI_ENABLE_RISING_FALLING_EDGE() \ 370 do \ 371 { \ 372 __HAL_PWR_IO2VM_EXTI_ENABLE_RISING_EDGE(); \ 373 __HAL_PWR_IO2VM_EXTI_ENABLE_FALLING_EDGE(); \ 374 } while(0) 375 376 /** 377 * @brief Disable the IO2VM Extended Interrupt Rising & Falling Trigger. 378 * @retval None. 379 */ 380 #define __HAL_PWR_IO2VM_EXTI_DISABLE_RISING_FALLING_EDGE() \ 381 do \ 382 { \ 383 __HAL_PWR_IO2VM_EXTI_DISABLE_RISING_EDGE(); \ 384 __HAL_PWR_IO2VM_EXTI_DISABLE_FALLING_EDGE(); \ 385 } while(0) 386 387 /** 388 * @brief Generate a Software Interrupt on IO2VM EXTI Line. 389 * @retval None 390 */ 391 #define __HAL_PWR_IO2VM_EXTI_GENERATE_SWIT() SET_BIT(EXTI->SWIER3, PWR_EXTI_LINE_PVM_VDDIO2) 392 393 /** 394 * @brief Check whether the specified IO2VM EXTI flag is set or not. 395 * @retval EXTI IO2VM Line Status. 396 */ 397 #define __HAL_PWR_IO2VM_EXTI_GET_FLAG() ((EXTI->RPR3 | EXTI->FPR3) & PWR_EXTI_LINE_PVM_VDDIO2) 398 399 /** 400 * @brief Clear the IO2VM interrupt Rising flag. 401 * @retval None. 402 */ 403 #define __HAL_PWR_IO2VM_EXTI_CLEAR_RISING_FLAG() WRITE_REG(EXTI->RPR3, PWR_EXTI_LINE_PVM_VDDIO2) 404 405 /** 406 * @brief Clear the IO2VM interrupt Falling flag. 407 * @retval None 408 */ 409 #define __HAL_PWR_IO2VM_EXTI_CLEAR_FALLING_FLAG() WRITE_REG(EXTI->FPR3, PWR_EXTI_LINE_PVM_VDDIO2) 410 411 /** 412 * @brief Enable the IO3VM Extended Interrupt Line. 413 * @retval None. 414 */ 415 #define __HAL_PWR_IO3VM_EXTI_ENABLE_IT() SET_BIT(EXTI->IMR3, PWR_EXTI_LINE_PVM_VDDIO3) 416 417 /** 418 * @brief Disable the IO3VM Extended Interrupt Line. 419 * @retval None. 420 */ 421 #define __HAL_PWR_IO3VM_EXTI_DISABLE_IT() CLEAR_BIT(EXTI->IMR3, PWR_EXTI_LINE_PVM_VDDIO3) 422 423 /** 424 * @brief Enable the IO3VM Event Line. 425 * @retval None. 426 */ 427 #define __HAL_PWR_IO3VM_EXTI_ENABLE_EVENT() SET_BIT(EXTI->EMR3, PWR_EXTI_LINE_PVM_VDDIO3) 428 429 /** 430 * @brief Disable the IO3VM Event Line. 431 * @retval None. 432 */ 433 #define __HAL_PWR_IO3VM_EXTI_DISABLE_EVENT() CLEAR_BIT(EXTI->EMR3, PWR_EXTI_LINE_PVM_VDDIO3) 434 435 /** 436 * @brief Enable the IO3VM Extended Interrupt Rising Trigger. 437 * @retval None. 438 */ 439 #define __HAL_PWR_IO3VM_EXTI_ENABLE_RISING_EDGE() SET_BIT(EXTI->RTSR3, PWR_EXTI_LINE_PVM_VDDIO3) 440 441 /** 442 * @brief Disable the IO3VM Extended Interrupt Rising Trigger. 443 * @retval None. 444 */ 445 #define __HAL_PWR_IO3VM_EXTI_DISABLE_RISING_EDGE() CLEAR_BIT(EXTI->RTSR3, PWR_EXTI_LINE_PVM_VDDIO3) 446 447 /** 448 * @brief Enable the IO3VM Extended Interrupt Falling Trigger. 449 * @retval None. 450 */ 451 #define __HAL_PWR_IO3VM_EXTI_ENABLE_FALLING_EDGE() SET_BIT(EXTI->FTSR3, PWR_EXTI_LINE_PVM_VDDIO3) 452 453 /** 454 * @brief Disable the IO3VM Extended Interrupt Falling Trigger. 455 * @retval None. 456 */ 457 #define __HAL_PWR_IO3VM_EXTI_DISABLE_FALLING_EDGE() CLEAR_BIT(EXTI->FTSR3, PWR_EXTI_LINE_PVM_VDDIO3) 458 459 /** 460 * @brief Enable the IO3VM Extended Interrupt Rising & Falling Trigger. 461 * @retval None. 462 */ 463 #define __HAL_PWR_IO3VM_EXTI_ENABLE_RISING_FALLING_EDGE() \ 464 do \ 465 { \ 466 __HAL_PWR_IO3VM_EXTI_ENABLE_RISING_EDGE(); \ 467 __HAL_PWR_IO3VM_EXTI_ENABLE_FALLING_EDGE(); \ 468 } while(0) 469 470 /** 471 * @brief Disable the IO3VM Extended Interrupt Rising & Falling Trigger. 472 * @retval None. 473 */ 474 #define __HAL_PWR_IO3VM_EXTI_DISABLE_RISING_FALLING_EDGE() \ 475 do \ 476 { \ 477 __HAL_PWR_IO3VM_EXTI_DISABLE_RISING_EDGE(); \ 478 __HAL_PWR_IO3VM_EXTI_DISABLE_FALLING_EDGE(); \ 479 } while(0) 480 481 /** 482 * @brief Generate a Software Interrupt on IO3VM EXTI Line. 483 * @retval None 484 */ 485 #define __HAL_PWR_IO3VM_EXTI_GENERATE_SWIT() SET_BIT(EXTI->SWIER3, PWR_EXTI_LINE_PVM_VDDIO3) 486 487 /** 488 * @brief Check whether the specified IO3VM EXTI flag is set or not. 489 * @retval EXTI IO3VM Line Status. 490 */ 491 #define __HAL_PWR_IO3VM_EXTI_GET_FLAG() ((EXTI->RPR3 | EXTI->FPR3) & PWR_EXTI_LINE_PVM_VDDIO3) 492 493 /** 494 * @brief Clear the IO3VM interrupt Rising flag. 495 * @retval None. 496 */ 497 #define __HAL_PWR_IO3VM_EXTI_CLEAR_RISING_FLAG() WRITE_REG(EXTI->RPR3, PWR_EXTI_LINE_PVM_VDDIO3) 498 499 /** 500 * @brief Clear the IO3VM interrupt Falling flag. 501 * @retval None 502 */ 503 #define __HAL_PWR_IO3VM_EXTI_CLEAR_FALLING_FLAG() WRITE_REG(EXTI->FPR3, PWR_EXTI_LINE_PVM_VDDIO3) 504 505 /** 506 * @brief Enable the IO4VM Extended Interrupt Line. 507 * @retval None. 508 */ 509 #define __HAL_PWR_IO4VM_EXTI_ENABLE_IT() SET_BIT(EXTI->IMR3, PWR_EXTI_LINE_PVM_VDDIO4) 510 511 /** 512 * @brief Disable the IO4VM Extended Interrupt Line. 513 * @retval None. 514 */ 515 #define __HAL_PWR_IO4VM_EXTI_DISABLE_IT() CLEAR_BIT(EXTI->IMR3, PWR_EXTI_LINE_PVM_VDDIO4) 516 517 /** 518 * @brief Enable the IO4VM Event Line. 519 * @retval None. 520 */ 521 #define __HAL_PWR_IO4VM_EXTI_ENABLE_EVENT() SET_BIT(EXTI->EMR3, PWR_EXTI_LINE_PVM_VDDIO4) 522 523 /** 524 * @brief Disable the IO4VM Event Line. 525 * @retval None. 526 */ 527 #define __HAL_PWR_IO4VM_EXTI_DISABLE_EVENT() CLEAR_BIT(EXTI->EMR3, PWR_EXTI_LINE_PVM_VDDIO4) 528 529 /** 530 * @brief Enable the IO4VM Extended Interrupt Rising Trigger. 531 * @retval None. 532 */ 533 #define __HAL_PWR_IO4VM_EXTI_ENABLE_RISING_EDGE() SET_BIT(EXTI->RTSR3, PWR_EXTI_LINE_PVM_VDDIO4) 534 535 /** 536 * @brief Disable the IO4VM Extended Interrupt Rising Trigger. 537 * @retval None. 538 */ 539 #define __HAL_PWR_IO4VM_EXTI_DISABLE_RISING_EDGE() CLEAR_BIT(EXTI->RTSR3, PWR_EXTI_LINE_PVM_VDDIO4) 540 541 /** 542 * @brief Enable the IO4VM Extended Interrupt Falling Trigger. 543 * @retval None. 544 */ 545 #define __HAL_PWR_IO4VM_EXTI_ENABLE_FALLING_EDGE() SET_BIT(EXTI->FTSR3, PWR_EXTI_LINE_PVM_VDDIO4) 546 547 /** 548 * @brief Disable the IO4VM Extended Interrupt Falling Trigger. 549 * @retval None. 550 */ 551 #define __HAL_PWR_IO4VM_EXTI_DISABLE_FALLING_EDGE() CLEAR_BIT(EXTI->FTSR3, PWR_EXTI_LINE_PVM_VDDIO4) 552 553 /** 554 * @brief Enable the IO4VM Extended Interrupt Rising & Falling Trigger. 555 * @retval None. 556 */ 557 #define __HAL_PWR_IO4VM_EXTI_ENABLE_RISING_FALLING_EDGE() \ 558 do \ 559 { \ 560 __HAL_PWR_IO4VM_EXTI_ENABLE_RISING_EDGE(); \ 561 __HAL_PWR_IO4VM_EXTI_ENABLE_FALLING_EDGE(); \ 562 } while(0) 563 564 /** 565 * @brief Disable the IO4VM Extended Interrupt Rising & Falling Trigger. 566 * @retval None. 567 */ 568 #define __HAL_PWR_IO4VM_EXTI_DISABLE_RISING_FALLING_EDGE() \ 569 do \ 570 { \ 571 __HAL_PWR_IO4VM_EXTI_DISABLE_RISING_EDGE(); \ 572 __HAL_PWR_IO4VM_EXTI_DISABLE_FALLING_EDGE(); \ 573 } while(0) 574 575 /** 576 * @brief Generate a Software Interrupt on IO4VM EXTI Line. 577 * @retval None 578 */ 579 #define __HAL_PWR_IO4VM_EXTI_GENERATE_SWIT() SET_BIT(EXTI->SWIER3, PWR_EXTI_LINE_PVM_VDDIO4) 580 581 /** 582 * @brief Check whether the specified IO4VM EXTI flag is set or not. 583 * @retval EXTI IO4VM Line Status. 584 */ 585 #define __HAL_PWR_IO4VM_EXTI_GET_FLAG() ((EXTI->RPR3 | EXTI->FPR3) & PWR_EXTI_LINE_PVM_VDDIO4) 586 587 /** 588 * @brief Clear the IO4VM interrupt Rising flag. 589 * @retval None. 590 */ 591 #define __HAL_PWR_IO4VM_EXTI_CLEAR_RISING_FLAG() WRITE_REG(EXTI->RPR3, PWR_EXTI_LINE_PVM_VDDIO4) 592 593 /** 594 * @brief Clear the IO4VM interrupt Falling flag. 595 * @retval None 596 */ 597 #define __HAL_PWR_IO4VM_EXTI_CLEAR_FALLING_FLAG() WRITE_REG(EXTI->FPR3, PWR_EXTI_LINE_PVM_VDDIO4) 598 599 /** 600 * @brief Enable the IO5VM Extended Interrupt Line. 601 * @retval None. 602 */ 603 #define __HAL_PWR_IO5VM_EXTI_ENABLE_IT() SET_BIT(EXTI->IMR3, PWR_EXTI_LINE_PVM_VDDIO5) 604 605 /** 606 * @brief Disable the IO5VM Extended Interrupt Line. 607 * @retval None. 608 */ 609 #define __HAL_PWR_IO5VM_EXTI_DISABLE_IT() CLEAR_BIT(EXTI->IMR3, PWR_EXTI_LINE_PVM_VDDIO5) 610 611 /** 612 * @brief Enable the IO5VM Event Line. 613 * @retval None. 614 */ 615 #define __HAL_PWR_IO5VM_EXTI_ENABLE_EVENT() SET_BIT(EXTI->EMR3, PWR_EXTI_LINE_PVM_VDDIO5) 616 617 /** 618 * @brief Disable the IO5VM Event Line. 619 * @retval None. 620 */ 621 #define __HAL_PWR_IO5VM_EXTI_DISABLE_EVENT() CLEAR_BIT(EXTI->EMR3, PWR_EXTI_LINE_PVM_VDDIO5) 622 623 /** 624 * @brief Enable the IO5VM Extended Interrupt Rising Trigger. 625 * @retval None. 626 */ 627 #define __HAL_PWR_IO5VM_EXTI_ENABLE_RISING_EDGE() SET_BIT(EXTI->RTSR3, PWR_EXTI_LINE_PVM_VDDIO5) 628 629 /** 630 * @brief Disable the IO5VM Extended Interrupt Rising Trigger. 631 * @retval None. 632 */ 633 #define __HAL_PWR_IO5VM_EXTI_DISABLE_RISING_EDGE() CLEAR_BIT(EXTI->RTSR3, PWR_EXTI_LINE_PVM_VDDIO5) 634 635 /** 636 * @brief Enable the IO5VM Extended Interrupt Falling Trigger. 637 * @retval None. 638 */ 639 #define __HAL_PWR_IO5VM_EXTI_ENABLE_FALLING_EDGE() SET_BIT(EXTI->FTSR3, PWR_EXTI_LINE_PVM_VDDIO5) 640 641 /** 642 * @brief Disable the IO5VM Extended Interrupt Falling Trigger. 643 * @retval None. 644 */ 645 #define __HAL_PWR_IO5VM_EXTI_DISABLE_FALLING_EDGE() CLEAR_BIT(EXTI->FTSR3, PWR_EXTI_LINE_PVM_VDDIO5) 646 647 /** 648 * @brief Enable the IO5VM Extended Interrupt Rising & Falling Trigger. 649 * @retval None. 650 */ 651 #define __HAL_PWR_IO5VM_EXTI_ENABLE_RISING_FALLING_EDGE() \ 652 do \ 653 { \ 654 __HAL_PWR_IO5VM_EXTI_ENABLE_RISING_EDGE(); \ 655 __HAL_PWR_IO5VM_EXTI_ENABLE_FALLING_EDGE(); \ 656 } while(0) 657 658 /** 659 * @brief Disable the IO5VM Extended Interrupt Rising & Falling Trigger. 660 * @retval None. 661 */ 662 #define __HAL_PWR_IO5VM_EXTI_DISABLE_RISING_FALLING_EDGE() \ 663 do \ 664 { \ 665 __HAL_PWR_IO5VM_EXTI_DISABLE_RISING_EDGE(); \ 666 __HAL_PWR_IO5VM_EXTI_DISABLE_FALLING_EDGE(); \ 667 } while(0) 668 669 /** 670 * @brief Generate a Software Interrupt on IO5VM EXTI Line. 671 * @retval None 672 */ 673 #define __HAL_PWR_IO5VM_EXTI_GENERATE_SWIT() SET_BIT(EXTI->SWIER3, PWR_EXTI_LINE_PVM_VDDIO5) 674 675 /** 676 * @brief Check whether the specified IO5VM EXTI flag is set or not. 677 * @retval EXTI IO5VM Line Status. 678 */ 679 #define __HAL_PWR_IO5VM_EXTI_GET_FLAG() ((EXTI->RPR3 | EXTI->FPR3) & PWR_EXTI_LINE_PVM_VDDIO5) 680 681 /** 682 * @brief Clear the IO5VM interrupt Rising flag. 683 * @retval None. 684 */ 685 #define __HAL_PWR_IO5VM_EXTI_CLEAR_RISING_FLAG() WRITE_REG(EXTI->RPR3, PWR_EXTI_LINE_PVM_VDDIO5) 686 687 /** 688 * @brief Clear the IO5VM interrupt Falling flag. 689 * @retval None 690 */ 691 #define __HAL_PWR_IO5VM_EXTI_CLEAR_FALLING_FLAG() WRITE_REG(EXTI->FPR3, PWR_EXTI_LINE_PVM_VDDIO5) 692 693 /** 694 * @brief Enable the ADCVM Extended Interrupt Line. 695 * @retval None. 696 */ 697 #define __HAL_PWR_ADCVM_EXTI_ENABLE_IT() SET_BIT(EXTI->IMR3, PWR_EXTI_LINE_PVM_VDDA) 698 699 /** 700 * @brief Disable the ADCVM Extended Interrupt Line. 701 * @retval None. 702 */ 703 #define __HAL_PWR_ADCVM_EXTI_DISABLE_IT() CLEAR_BIT(EXTI->IMR3, PWR_EXTI_LINE_PVM_VDDA) 704 705 /** 706 * @brief Enable the ADCVM Event Line. 707 * @retval None. 708 */ 709 #define __HAL_PWR_ADCVM_EXTI_ENABLE_EVENT() SET_BIT(EXTI->EMR3, PWR_EXTI_LINE_PVM_VDDA) 710 711 /** 712 * @brief Disable the ADCVM Event Line. 713 * @retval None. 714 */ 715 #define __HAL_PWR_ADCVM_EXTI_DISABLE_EVENT() CLEAR_BIT(EXTI->EMR3, PWR_EXTI_LINE_PVM_VDDA) 716 717 /** 718 * @brief Enable the ADCVM Extended Interrupt Rising Trigger. 719 * @retval None. 720 */ 721 #define __HAL_PWR_ADCVM_EXTI_ENABLE_RISING_EDGE() SET_BIT(EXTI->RTSR3, PWR_EXTI_LINE_PVM_VDDA) 722 723 /** 724 * @brief Disable the ADCVM Extended Interrupt Rising Trigger. 725 * @retval None. 726 */ 727 #define __HAL_PWR_ADCVM_EXTI_DISABLE_RISING_EDGE() CLEAR_BIT(EXTI->RTSR3, PWR_EXTI_LINE_PVM_VDDA) 728 729 /** 730 * @brief Enable the ADCVM Extended Interrupt Falling Trigger. 731 * @retval None. 732 */ 733 #define __HAL_PWR_ADCVM_EXTI_ENABLE_FALLING_EDGE() SET_BIT(EXTI->FTSR3, PWR_EXTI_LINE_PVM_VDDA) 734 735 /** 736 * @brief Disable the ADCVM Extended Interrupt Falling Trigger. 737 * @retval None. 738 */ 739 #define __HAL_PWR_ADCVM_EXTI_DISABLE_FALLING_EDGE() CLEAR_BIT(EXTI->FTSR3, PWR_EXTI_LINE_PVM_VDDA) 740 741 /** 742 * @brief Enable the ADCVM Extended Interrupt Rising & Falling Trigger. 743 * @retval None. 744 */ 745 #define __HAL_PWR_ADCVM_EXTI_ENABLE_RISING_FALLING_EDGE() \ 746 do \ 747 { \ 748 __HAL_PWR_ADCVM_EXTI_ENABLE_RISING_EDGE(); \ 749 __HAL_PWR_ADCVM_EXTI_ENABLE_FALLING_EDGE(); \ 750 } while(0) 751 752 /** 753 * @brief Disable the ADCVM Extended Interrupt Rising & Falling Trigger. 754 * @retval None. 755 */ 756 #define __HAL_PWR_ADCVM_EXTI_DISABLE_RISING_FALLING_EDGE() \ 757 do \ 758 { \ 759 __HAL_PWR_ADCVM_EXTI_DISABLE_RISING_EDGE(); \ 760 __HAL_PWR_ADCVM_EXTI_DISABLE_FALLING_EDGE(); \ 761 } while(0) 762 763 /** 764 * @brief Generate a Software Interrupt on ADCVM EXTI Line. 765 * @retval None 766 */ 767 #define __HAL_PWR_ADCVM_EXTI_GENERATE_SWIT() SET_BIT(EXTI->SWIER3, PWR_EXTI_LINE_PVM_VDDA) 768 769 /** 770 * @brief Check whether the specified ADCVM EXTI flag is set or not. 771 * @retval EXTI ADCVM Line Status. 772 */ 773 #define __HAL_PWR_ADCVM_EXTI_GET_FLAG() ((EXTI->RPR3 | EXTI->FPR3) & PWR_EXTI_LINE_PVM_VDDA) 774 775 /** 776 * @brief Clear the ADCVM interrupt Rising flag. 777 * @retval None. 778 */ 779 #define __HAL_PWR_ADCVM_EXTI_CLEAR_RISING_FLAG() WRITE_REG(EXTI->RPR3, PWR_EXTI_LINE_PVM_VDDA) 780 781 /** 782 * @brief Clear the ADCVM interrupt Falling flag. 783 * @retval None 784 */ 785 #define __HAL_PWR_ADCVM_EXTI_CLEAR_FALLING_FLAG() WRITE_REG(EXTI->FPR3, PWR_EXTI_LINE_PVM_VDDA) 786 787 /** 788 * @brief Enable the VddCORE monitoring Extended Interrupt Line. 789 * @retval None. 790 */ 791 #define __HAL_PWR_VCOREVM_EXTI_ENABLE_IT() SET_BIT(EXTI->IMR3, PWR_EXTI_LINE_VCOREVM) 792 793 /** 794 * @brief Disable the VddCORE monitoring Extended Interrupt Line. 795 * @retval None. 796 */ 797 #define __HAL_PWR_VCOREVM_EXTI_DISABLE_IT() CLEAR_BIT(EXTI->IMR3, PWR_EXTI_LINE_VCOREVM) 798 799 /** 800 * @brief Enable the VddCORE monitoring Event Line. 801 * @retval None. 802 */ 803 #define __HAL_PWR_VCOREVM_EXTI_ENABLE_EVENT() SET_BIT(EXTI->EMR3, PWR_EXTI_LINE_VCOREVM) 804 805 /** 806 * @brief Disable the VddCORE monitoring Event Line. 807 * @retval None. 808 */ 809 #define __HAL_PWR_VCOREVM_EXTI_DISABLE_EVENT() CLEAR_BIT(EXTI->EMR3, PWR_EXTI_LINE_VCOREVM) 810 811 /** 812 * @brief Enable the VddCORE monitoring Extended Interrupt Rising Trigger. 813 * @retval None. 814 */ 815 #define __HAL_PWR_VCOREVM_EXTI_ENABLE_RISING_EDGE() SET_BIT(EXTI->RTSR3, PWR_EXTI_LINE_VCOREVM) 816 817 /** 818 * @brief Disable the VddCORE monitoring Extended Interrupt Rising Trigger. 819 * @retval None. 820 */ 821 #define __HAL_PWR_VCOREVM_EXTI_DISABLE_RISING_EDGE() CLEAR_BIT(EXTI->RTSR3, PWR_EXTI_LINE_VCOREVM) 822 823 /** 824 * @brief Enable the VddCORE monitoring Extended Interrupt Falling Trigger. 825 * @retval None. 826 */ 827 #define __HAL_PWR_VCOREVM_EXTI_ENABLE_FALLING_EDGE() SET_BIT(EXTI->FTSR3, PWR_EXTI_LINE_VCOREVM) 828 829 /** 830 * @brief Disable the VddCORE monitoring Extended Interrupt Falling Trigger. 831 * @retval None. 832 */ 833 #define __HAL_PWR_VCOREVM_EXTI_DISABLE_FALLING_EDGE() CLEAR_BIT(EXTI->FTSR3, PWR_EXTI_LINE_VCOREVM) 834 835 /** 836 * @brief Enable the VddCORE monitoring Extended Interrupt Rising & Falling Trigger. 837 * @retval None. 838 */ 839 #define __HAL_PWR_VCOREVM_EXTI_ENABLE_RISING_FALLING_EDGE() \ 840 do \ 841 { \ 842 __HAL_PWR_VCOREVM_EXTI_ENABLE_RISING_EDGE(); \ 843 __HAL_PWR_VCOREVM_EXTI_ENABLE_FALLING_EDGE(); \ 844 } while(0) 845 846 /** 847 * @brief Disable the VddCORE monitoring Extended Interrupt Rising & Falling Trigger. 848 * @retval None. 849 */ 850 #define __HAL_PWR_VCOREVM_EXTI_DISABLE_RISING_FALLING_EDGE() \ 851 do \ 852 { \ 853 __HAL_PWR_VCOREVM_EXTI_DISABLE_RISING_EDGE(); \ 854 __HAL_PWR_VCOREVM_EXTI_DISABLE_FALLING_EDGE(); \ 855 } while(0) 856 857 /** 858 * @brief Generate a Software Interrupt on VddCORE monitoring EXTI Line. 859 * @retval None 860 */ 861 #define __HAL_PWR_VCOREVM_EXTI_GENERATE_SWIT() SET_BIT(EXTI->SWIER3, PWR_EXTI_LINE_VCOREVM) 862 863 /** 864 * @brief Check whether the specified VddCORE monitoring EXTI flag is set or not. 865 * @retval EXTI VddCORE monitoring Line Status. 866 */ 867 #define __HAL_PWR_VCOREVM_EXTI_GET_FLAG() ((EXTI->RPR3 | EXTI->FPR3) & PWR_EXTI_LINE_VCOREVM) 868 869 /** 870 * @brief Clear the VddCORE monitoring interrupt Rising flag. 871 * @retval None. 872 */ 873 #define __HAL_PWR_VCOREVM_EXTI_CLEAR_RISING_FLAG() WRITE_REG(EXTI->RPR3, PWR_EXTI_LINE_VCOREVM) 874 875 /** 876 * @brief Clear the VddCORE monitoring interrupt Falling flag. 877 * @retval None 878 */ 879 #define __HAL_PWR_VCOREVM_EXTI_CLEAR_FALLING_FLAG() WRITE_REG(EXTI->FPR3, PWR_EXTI_LINE_VCOREVM) 880 /** 881 * @} 882 */ 883 884 /* Exported functions --------------------------------------------------------*/ 885 886 /** @addtogroup PWREx_Exported_Functions PWR Extended Exported Functions 887 * @{ 888 */ 889 890 /** @addtogroup PWREx_Exported_Functions_Group1 Power Supply Control Functions 891 * @{ 892 */ 893 /* Power supply control functions */ 894 HAL_StatusTypeDef HAL_PWREx_ConfigSupply(uint32_t SupplySource); 895 uint32_t HAL_PWREx_GetSupplyConfig(void); 896 897 /* Power voltage scaling functions */ 898 HAL_StatusTypeDef HAL_PWREx_ControlVoltageScaling(uint32_t VoltageScaling); 899 uint32_t HAL_PWREx_GetVoltageRange(void); 900 void HAL_PWREx_ControlStopModeVoltageScaling(uint32_t VoltageScaling); 901 uint32_t HAL_PWREx_GetStopModeVoltageRange(void); 902 903 904 /** @addtogroup PWREx_Exported_Functions_Group2 Wakeup Pins configuration functions 905 * @{ 906 */ 907 /* Wakeup Pins control functions */ 908 void HAL_PWREx_EnableWakeUpPin(const PWREx_WakeupPinTypeDef *sPinParams); 909 /** 910 * @} 911 */ 912 913 914 /** @addtogroup PWREx_Exported_Functions_Group3 Memories Retention Functions 915 * @{ 916 */ 917 void HAL_PWREx_EnableBkupRAMRetention(void); 918 void HAL_PWREx_DisableBkupRAMRetention(void); 919 void HAL_PWREx_EnableTCMRetention(void); 920 void HAL_PWREx_DisableTCMRetention(void); 921 void HAL_PWREx_EnableTCMFLXRetention(void); 922 void HAL_PWREx_DisableTCMFLXRetention(void); 923 /** 924 * @} 925 */ 926 927 /** @addtogroup PWREx_Exported_Functions_Group4 Low Power Control Functions 928 * @{ 929 */ 930 void HAL_PWREx_SetPulseLow(uint32_t Pulselowtime); 931 uint32_t HAL_PWREx_GetPulseLow(void); 932 void HAL_PWREx_EnableSMPSPWM(void); 933 void HAL_PWREx_DisableSMPSPWM(void); 934 void HAL_PWREx_EnablePullDownOutput(void); 935 void HAL_PWREx_DisablePullDownOutput(void); 936 /** 937 * @} 938 */ 939 940 /** @addtogroup PWREx_Exported_Functions_Group5 Power Monitoring functions 941 * @{ 942 */ 943 /* Power VBAT/Temperature monitoring functions */ 944 void HAL_PWREx_EnableMonitoring(void); 945 void HAL_PWREx_DisableMonitoring(void); 946 uint32_t HAL_PWREx_GetTemperatureLevel(void); 947 uint32_t HAL_PWREx_GetVBATLevel(void); 948 void HAL_PWREx_EnableVDDCOREMonitoring(void); 949 void HAL_PWREx_DisableVDDCOREMonitoring(void); 950 void HAL_PWREx_ConfigVDDCOREVM(const PWR_VddCOREVMTypeDef *pConfigVddCOREVM); 951 uint32_t HAL_PWREx_GetVDDCORELevel(void); 952 void HAL_PWREx_ConfigVddIORange(uint32_t VddIOPort, uint32_t VoltageRange); 953 uint32_t HAL_PWREx_GetVddIORange(uint32_t VddIOPort); 954 void HAL_PWREx_EnableVddIO4RangeSTBY(void); 955 void HAL_PWREx_DisableVddIO4RangeSTBY(void); 956 void HAL_PWREx_EnableVddIO5RangeSTBY(void); 957 void HAL_PWREx_DisableVddIO5RangeSTBY(void); 958 void HAL_PWREx_EnableVddUSB(void); 959 void HAL_PWREx_DisableVddUSB(void); 960 void HAL_PWREx_EnableVddIO2(void); 961 void HAL_PWREx_DisableVddIO2(void); 962 void HAL_PWREx_EnableVddIO3(void); 963 void HAL_PWREx_DisableVddIO3(void); 964 void HAL_PWREx_EnableVddIO4(void); 965 void HAL_PWREx_DisableVddIO4(void); 966 void HAL_PWREx_EnableVddIO5(void); 967 void HAL_PWREx_DisableVddIO5(void); 968 void HAL_PWREx_EnableVddA(void); 969 void HAL_PWREx_DisableVddA(void); 970 void HAL_PWREx_EnableVddUSBVMEN(void); 971 void HAL_PWREx_DisableVddUSBVMEN(void); 972 void HAL_PWREx_EnableVddIO2VMEN(void); 973 void HAL_PWREx_DisableVddIO2VMEN(void); 974 void HAL_PWREx_EnableVddIO3VMEN(void); 975 void HAL_PWREx_DisableVddIO3VMEN(void); 976 void HAL_PWREx_EnableVddIO4VMEN(void); 977 void HAL_PWREx_DisableVddIO4VMEN(void); 978 void HAL_PWREx_EnableVddIO5VMEN(void); 979 void HAL_PWREx_DisableVddIO5VMEN(void); 980 void HAL_PWREx_EnableVddAVMEN(void); 981 void HAL_PWREx_DisableVddAVMEN(void); 982 HAL_StatusTypeDef HAL_PWREx_ConfigPVM(const PWR_PVMTypeDef *pConfigPVM); 983 void HAL_PWREx_PVD_PVM_IRQHandler(void); 984 void HAL_PWREx_VDDCORE_Rising_Callback(void); 985 void HAL_PWREx_VDDCORE_Falling_Callback(void); 986 void HAL_PWREx_USBVM_Rising_Callback(void); 987 void HAL_PWREx_USBVM_Falling_Callback(void); 988 void HAL_PWREx_IO2VM_Rising_Callback(void); 989 void HAL_PWREx_IO2VM_Falling_Callback(void); 990 void HAL_PWREx_IO3VM_Rising_Callback(void); 991 void HAL_PWREx_IO3VM_Falling_Callback(void); 992 void HAL_PWREx_IO4VM_Rising_Callback(void); 993 void HAL_PWREx_IO4VM_Falling_Callback(void); 994 void HAL_PWREx_IO5VM_Rising_Callback(void); 995 void HAL_PWREx_IO5VM_Falling_Callback(void); 996 void HAL_PWREx_ADCVM_Rising_Callback(void); 997 void HAL_PWREx_ADCVM_Falling_Callback(void); 998 /** 999 * @} 1000 */ 1001 1002 /** 1003 * @} 1004 */ 1005 1006 /* Private types -------------------------------------------------------------*/ 1007 /* Private variables ---------------------------------------------------------*/ 1008 /* Private constants ---------------------------------------------------------*/ 1009 1010 1011 /** @defgroup PWREx_VDDCOREVM_EXTI PWR VddCORE monitoring extended interrupts and event lines defines 1012 * @{ 1013 */ 1014 #define PWR_EXTI_LINE_VCOREVM EXTI_IMR3_IM68 /*!< VddCORE monitoring EXTI Line */ 1015 /** 1016 * @} 1017 */ 1018 1019 /** @defgroup PWREx_PVM_EXTI PWR PVM extended interrupts and event lines defines 1020 * @{ 1021 */ 1022 #define PWR_EXTI_LINE_PVM_VDDIO2 EXTI_IMR3_IM69 /*!< PVM VDDIO2 EXTI Line */ 1023 #define PWR_EXTI_LINE_PVM_VDDIO3 EXTI_IMR3_IM70 /*!< PVM VDDIO3 EXTI Line */ 1024 #define PWR_EXTI_LINE_PVM_VDDIO4 EXTI_IMR3_IM71 /*!< PVM VDDIO4 EXTI Line */ 1025 #define PWR_EXTI_LINE_PVM_VDDIO5 EXTI_IMR3_IM72 /*!< PVM VDDIO5 EXTI Line */ 1026 #define PWR_EXTI_LINE_PVM_VDDUSB EXTI_IMR3_IM73 /*!< PVM VDD USB EXTI Line */ 1027 #define PWR_EXTI_LINE_PVM_VDDA EXTI_IMR3_IM74 /*!< PVM VDD ADC EXTI Line */ 1028 /** 1029 * @} 1030 */ 1031 1032 /** @defgroup PWREx_PVM_Type PWR Extended Voltage Monitoring Type 1033 * @{ 1034 */ 1035 #define PWR_VDDUSB_VM (0U) /*!< Independent USB voltage monitor */ 1036 #define PWR_VDDIO2_VM (1U) /*!< Independent VDDIO2 voltage monitor */ 1037 #define PWR_VDDIO3_VM (2U) /*!< Independent VDDIO3 voltage monitor */ 1038 #define PWR_VDDIO4_VM (3U) /*!< Independent VDDIO4 voltage monitor */ 1039 #define PWR_VDDIO5_VM (4U) /*!< Independent VDDIO5 voltage monitor */ 1040 #define PWR_VDDA_VM (5U) /*!< Independent VDDA voltage monitor */ 1041 /** 1042 * @} 1043 */ 1044 1045 /* Private macros ------------------------------------------------------------*/ 1046 /** @defgroup PWREx_Private_Macros PWREx Private Macros 1047 * @{ 1048 */ 1049 /** @defgroup PWREx_IS_PWR_Definitions PWREx Private macros to check input parameters 1050 * @{ 1051 */ 1052 /* Check PWR regulator configuration parameter */ 1053 #define IS_PWR_SUPPLY(__SOURCE__) (((__SOURCE__) == PWR_SMPS_SUPPLY) ||\ 1054 ((__SOURCE__) == PWR_EXTERNAL_SOURCE_SUPPLY)) 1055 1056 /* Check low power regulator parameter */ 1057 #define IS_PWR_REGULATOR(__REGULATOR__) ((__REGULATOR__) == PWR_MAINREGULATOR_ON) 1058 1059 /* Check voltage scale level parameter */ 1060 #define IS_PWR_REGULATOR_VOLTAGE(__VOLTAGE__) (((__VOLTAGE__) == PWR_REGULATOR_VOLTAGE_SCALE0) || \ 1061 ((__VOLTAGE__) == PWR_REGULATOR_VOLTAGE_SCALE1)) 1062 1063 /* Check PWR regulator configuration in STOP mode parameter */ 1064 #define IS_PWR_STOP_MODE_REGULATOR_VOLTAGE(__VOLTAGE__) (((__VOLTAGE__) == PWR_REGULATOR_STOP_VOLTAGE_SCALE3) ||\ 1065 ((__VOLTAGE__) == PWR_REGULATOR_STOP_VOLTAGE_SCALE5)) 1066 1067 /* Check PWR pulse low time configuration parameter */ 1068 #define IS_PWR_PULSE_LOW_TIME(__LOWTIME__) ((__LOWTIME__) <= 31U) 1069 1070 /* Check VDDCORE voltage detector low-level parameter */ 1071 #define IS_PWR_VDDCOREVM_LEVEL(__LEVEL__) (((__LEVEL__) == PWR_VDDCORE_THRESHOLD_VOS0) || \ 1072 ((__LEVEL__) == PWR_VDDCORE_THRESHOLD_VOS1)) 1073 1074 /* Check VddCORE VM mode check parameter */ 1075 #define IS_PWR_VDDCOREVM_MODE(__MODE__) \ 1076 (((__MODE__) == PWR_VDDCOREVM_MODE_NORMAL) ||\ 1077 ((__MODE__) == PWR_VDDCOREVM_MODE_IT_RISING) ||\ 1078 ((__MODE__) == PWR_VDDCOREVM_MODE_IT_FALLING) ||\ 1079 ((__MODE__) == PWR_VDDCOREVM_MODE_IT_RISING_FALLING) ||\ 1080 ((__MODE__) == PWR_VDDCOREVM_MODE_EVENT_RISING) ||\ 1081 ((__MODE__) == PWR_VDDCOREVM_MODE_EVENT_FALLING) ||\ 1082 ((__MODE__) == PWR_VDDCOREVM_MODE_EVENT_RISING_FALLING)) 1083 1084 /* Check PVM type parameter */ 1085 #define IS_PWR_PVM_TYPE(__TYPE__) \ 1086 (((__TYPE__) == PWR_VDDUSB_VM) ||\ 1087 ((__TYPE__) == PWR_VDDIO2_VM) ||\ 1088 ((__TYPE__) == PWR_VDDIO3_VM) ||\ 1089 ((__TYPE__) == PWR_VDDIO4_VM) ||\ 1090 ((__TYPE__) == PWR_VDDIO5_VM) ||\ 1091 ((__TYPE__) == PWR_VDDA_VM)) 1092 1093 /* Check PVM mode check parameter */ 1094 #define IS_PWR_PVM_MODE(__MODE__) \ 1095 (((__MODE__) == PWR_PVM_MODE_NORMAL) ||\ 1096 ((__MODE__) == PWR_PVM_MODE_IT_RISING) ||\ 1097 ((__MODE__) == PWR_PVM_MODE_IT_FALLING) ||\ 1098 ((__MODE__) == PWR_PVM_MODE_IT_RISING_FALLING) ||\ 1099 ((__MODE__) == PWR_PVM_MODE_EVENT_RISING) ||\ 1100 ((__MODE__) == PWR_PVM_MODE_EVENT_FALLING) ||\ 1101 ((__MODE__) == PWR_PVM_MODE_EVENT_RISING_FALLING)) 1102 1103 /* Check the VddIO parameter */ 1104 #define IS_PWR_VDDIO(__VDDIO__) (((__VDDIO__) == PWR_VDDIO) || \ 1105 ((__VDDIO__) == PWR_VDDIO2) || \ 1106 ((__VDDIO__) == PWR_VDDIO3) || \ 1107 ((__VDDIO__) == PWR_VDDIO4) || \ 1108 ((__VDDIO__) == PWR_VDDIO5)) 1109 1110 /* Check the VddIO Range parameter */ 1111 #define IS_PWR_VDDIO_RANGE(__RANGE__) (((__RANGE__) == PWR_VDDIO_RANGE_3V3) || \ 1112 ((__RANGE__) == PWR_VDDIO_RANGE_1V8)) 1113 1114 /** 1115 * @} 1116 */ 1117 1118 /** 1119 * @} 1120 */ 1121 1122 /** 1123 * @} 1124 */ 1125 1126 /** 1127 * @} 1128 */ 1129 1130 /** 1131 * @} 1132 */ 1133 1134 1135 #ifdef __cplusplus 1136 } 1137 #endif /* __cplusplus */ 1138 1139 1140 #endif /* STM32N6xx_HAL_PWR_EX_H */ 1141 1142