stm32g4xx_hal.h 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630
  1. /**
  2. ******************************************************************************
  3. * @file stm32g4xx_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) 2019 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. /* Define to prevent recursive inclusion -------------------------------------*/
  20. #ifndef STM32G4xx_HAL_H
  21. #define STM32G4xx_HAL_H
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. /* Includes ------------------------------------------------------------------*/
  26. #include "stm32g4xx_hal_conf.h"
  27. /** @addtogroup STM32G4xx_HAL_Driver
  28. * @{
  29. */
  30. /** @addtogroup HAL HAL
  31. * @{
  32. */
  33. /* Exported types ------------------------------------------------------------*/
  34. /* Exported constants --------------------------------------------------------*/
  35. /** @defgroup HAL_Exported_Constants HAL Exported Constants
  36. * @{
  37. */
  38. /** @defgroup HAL_TICK_FREQ Tick Frequency
  39. * @{
  40. */
  41. #define HAL_TICK_FREQ_10HZ 100U
  42. #define HAL_TICK_FREQ_100HZ 10U
  43. #define HAL_TICK_FREQ_1KHZ 1U
  44. #define HAL_TICK_FREQ_DEFAULT HAL_TICK_FREQ_1KHZ
  45. /**
  46. * @}
  47. */
  48. /** @defgroup SYSCFG_Exported_Constants SYSCFG Exported Constants
  49. * @{
  50. */
  51. /** @defgroup SYSCFG_BootMode Boot Mode
  52. * @{
  53. */
  54. #define SYSCFG_BOOT_MAINFLASH 0x00000000U
  55. #define SYSCFG_BOOT_SYSTEMFLASH SYSCFG_MEMMEMRMP_MODE_0
  56. #if defined (FMC_BANK1)
  57. #define SYSCFG_BOOT_FMC SYSCFG_MEMMEMRMP_MODE_1
  58. #endif /* FMC_BANK1 */
  59. #define SYSCFG_BOOT_SRAM (SYSCFG_MEMMEMRMP_MODE_1 | SYSCFG_MEMMEMRMP_MODE_0)
  60. #if defined (QUADSPI)
  61. #define SYSCFG_BOOT_QUADSPI (SYSCFG_MEMMEMRMP_MODE_2 | SYSCFG_MEMMEMRMP_MODE_1)
  62. #endif /* QUADSPI */
  63. /**
  64. * @}
  65. */
  66. /** @defgroup SYSCFG_FPU_Interrupts FPU Interrupts
  67. * @{
  68. */
  69. #define SYSCFG_IT_FPU_IOC SYSCFG_CFGR1_FPU_IE_0 /*!< Floating Point Unit Invalid operation Interrupt */
  70. #define SYSCFG_IT_FPU_DZC SYSCFG_CFGR1_FPU_IE_1 /*!< Floating Point Unit Divide-by-zero Interrupt */
  71. #define SYSCFG_IT_FPU_UFC SYSCFG_CFGR1_FPU_IE_2 /*!< Floating Point Unit Underflow Interrupt */
  72. #define SYSCFG_IT_FPU_OFC SYSCFG_CFGR1_FPU_IE_3 /*!< Floating Point Unit Overflow Interrupt */
  73. #define SYSCFG_IT_FPU_IDC SYSCFG_CFGR1_FPU_IE_4 /*!< Floating Point Unit Input denormal Interrupt */
  74. #define SYSCFG_IT_FPU_IXC SYSCFG_CFGR1_FPU_IE_5 /*!< Floating Point Unit Inexact Interrupt */
  75. /**
  76. * @}
  77. */
  78. /** @defgroup SYSCFG_CCMSRAMWRP CCM Write protection
  79. * @{
  80. */
  81. #define SYSCFG_CCMSRAMWRP_PAGE0 SYSCFG_SWPR_PAGE0 /*!< CCMSRAM Write protection page 0 */
  82. #define SYSCFG_CCMSRAMWRP_PAGE1 SYSCFG_SWPR_PAGE1 /*!< CCMSRAM Write protection page 1 */
  83. #define SYSCFG_CCMSRAMWRP_PAGE2 SYSCFG_SWPR_PAGE2 /*!< CCMSRAM Write protection page 2 */
  84. #define SYSCFG_CCMSRAMWRP_PAGE3 SYSCFG_SWPR_PAGE3 /*!< CCMSRAM Write protection page 3 */
  85. #define SYSCFG_CCMSRAMWRP_PAGE4 SYSCFG_SWPR_PAGE4 /*!< CCMSRAM Write protection page 4 */
  86. #define SYSCFG_CCMSRAMWRP_PAGE5 SYSCFG_SWPR_PAGE5 /*!< CCMSRAM Write protection page 5 */
  87. #define SYSCFG_CCMSRAMWRP_PAGE6 SYSCFG_SWPR_PAGE6 /*!< CCMSRAM Write protection page 6 */
  88. #define SYSCFG_CCMSRAMWRP_PAGE7 SYSCFG_SWPR_PAGE7 /*!< CCMSRAM Write protection page 7 */
  89. #define SYSCFG_CCMSRAMWRP_PAGE8 SYSCFG_SWPR_PAGE8 /*!< CCMSRAM Write protection page 8 */
  90. #define SYSCFG_CCMSRAMWRP_PAGE9 SYSCFG_SWPR_PAGE9 /*!< CCMSRAM Write protection page 9 */
  91. #define SYSCFG_CCMSRAMWRP_PAGE10 SYSCFG_SWPR_PAGE10 /*!< CCMSRAM Write protection page 10 */
  92. #define SYSCFG_CCMSRAMWRP_PAGE11 SYSCFG_SWPR_PAGE11 /*!< CCMSRAM Write protection page 11 */
  93. #define SYSCFG_CCMSRAMWRP_PAGE12 SYSCFG_SWPR_PAGE12 /*!< CCMSRAM Write protection page 12 */
  94. #define SYSCFG_CCMSRAMWRP_PAGE13 SYSCFG_SWPR_PAGE13 /*!< CCMSRAM Write protection page 13 */
  95. #define SYSCFG_CCMSRAMWRP_PAGE14 SYSCFG_SWPR_PAGE14 /*!< CCMSRAM Write protection page 14 */
  96. #define SYSCFG_CCMSRAMWRP_PAGE15 SYSCFG_SWPR_PAGE15 /*!< CCMSRAM Write protection page 15 */
  97. #define SYSCFG_CCMSRAMWRP_PAGE16 SYSCFG_SWPR_PAGE16 /*!< CCMSRAM Write protection page 16 */
  98. #define SYSCFG_CCMSRAMWRP_PAGE17 SYSCFG_SWPR_PAGE17 /*!< CCMSRAM Write protection page 17 */
  99. #define SYSCFG_CCMSRAMWRP_PAGE18 SYSCFG_SWPR_PAGE18 /*!< CCMSRAM Write protection page 18 */
  100. #define SYSCFG_CCMSRAMWRP_PAGE19 SYSCFG_SWPR_PAGE19 /*!< CCMSRAM Write protection page 19 */
  101. #define SYSCFG_CCMSRAMWRP_PAGE20 SYSCFG_SWPR_PAGE20 /*!< CCMSRAM Write protection page 20 */
  102. #define SYSCFG_CCMSRAMWRP_PAGE21 SYSCFG_SWPR_PAGE21 /*!< CCMSRAM Write protection page 21 */
  103. #define SYSCFG_CCMSRAMWRP_PAGE22 SYSCFG_SWPR_PAGE22 /*!< CCMSRAM Write protection page 22 */
  104. #define SYSCFG_CCMSRAMWRP_PAGE23 SYSCFG_SWPR_PAGE23 /*!< CCMSRAM Write protection page 23 */
  105. #define SYSCFG_CCMSRAMWRP_PAGE24 SYSCFG_SWPR_PAGE24 /*!< CCMSRAM Write protection page 24 */
  106. #define SYSCFG_CCMSRAMWRP_PAGE25 SYSCFG_SWPR_PAGE25 /*!< CCMSRAM Write protection page 25 */
  107. #define SYSCFG_CCMSRAMWRP_PAGE26 SYSCFG_SWPR_PAGE26 /*!< CCMSRAM Write protection page 26 */
  108. #define SYSCFG_CCMSRAMWRP_PAGE27 SYSCFG_SWPR_PAGE27 /*!< CCMSRAM Write protection page 27 */
  109. #define SYSCFG_CCMSRAMWRP_PAGE28 SYSCFG_SWPR_PAGE28 /*!< CCMSRAM Write protection page 28 */
  110. #define SYSCFG_CCMSRAMWRP_PAGE29 SYSCFG_SWPR_PAGE29 /*!< CCMSRAM Write protection page 29 */
  111. #define SYSCFG_CCMSRAMWRP_PAGE30 SYSCFG_SWPR_PAGE30 /*!< CCMSRAM Write protection page 30 */
  112. #define SYSCFG_CCMSRAMWRP_PAGE31 SYSCFG_SWPR_PAGE31 /*!< CCMSRAM Write protection page 31 */
  113. /**
  114. * @}
  115. */
  116. #if defined(VREFBUF)
  117. /** @defgroup SYSCFG_VREFBUF_VoltageScale VREFBUF Voltage Scale
  118. * @{
  119. */
  120. #define SYSCFG_VREFBUF_VOLTAGE_SCALE0 0x00000000U /*!< Voltage reference scale 0 (VREFBUF_OUT = 2.048V) */
  121. #define SYSCFG_VREFBUF_VOLTAGE_SCALE1 VREFBUF_CSR_VRS_0 /*!< Voltage reference scale 1 (VREFBUF_OUT = 2.5V) */
  122. #define SYSCFG_VREFBUF_VOLTAGE_SCALE2 VREFBUF_CSR_VRS_1 /*!< Voltage reference scale 2 (VREFBUF_OUT = 2.9V) */
  123. /**
  124. * @}
  125. */
  126. /** @defgroup SYSCFG_VREFBUF_HighImpedance VREFBUF High Impedance
  127. * @{
  128. */
  129. #define SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE 0x00000000U /*!< VREF_plus pin is internally connected to Voltage reference buffer output */
  130. #define SYSCFG_VREFBUF_HIGH_IMPEDANCE_ENABLE VREFBUF_CSR_HIZ /*!< VREF_plus pin is high impedance */
  131. /**
  132. * @}
  133. */
  134. #endif /* VREFBUF */
  135. /** @defgroup SYSCFG_flags_definition Flags
  136. * @{
  137. */
  138. #define SYSCFG_FLAG_SRAM_PE SYSCFG_CFGR2_SPF /*!< SRAM parity error (first 32kB of SRAM1 + CCM SRAM) */
  139. #define SYSCFG_FLAG_CCMSRAM_BUSY SYSCFG_SCSR_CCMBSY /*!< CCMSRAM busy by erase operation */
  140. /**
  141. * @}
  142. */
  143. /** @defgroup SYSCFG_FastModePlus_GPIO Fast-mode Plus on GPIO
  144. * @{
  145. */
  146. /** @brief Fast-mode Plus driving capability on a specific GPIO
  147. */
  148. #define SYSCFG_FASTMODEPLUS_PB6 SYSCFG_CFGR1_I2C_PB6_FMP /*!< Enable Fast-mode Plus on PB6 */
  149. #define SYSCFG_FASTMODEPLUS_PB7 SYSCFG_CFGR1_I2C_PB7_FMP /*!< Enable Fast-mode Plus on PB7 */
  150. #if defined(SYSCFG_CFGR1_I2C_PB8_FMP)
  151. #define SYSCFG_FASTMODEPLUS_PB8 SYSCFG_CFGR1_I2C_PB8_FMP /*!< Enable Fast-mode Plus on PB8 */
  152. #endif /* SYSCFG_CFGR1_I2C_PB8_FMP */
  153. #if defined(SYSCFG_CFGR1_I2C_PB9_FMP)
  154. #define SYSCFG_FASTMODEPLUS_PB9 SYSCFG_CFGR1_I2C_PB9_FMP /*!< Enable Fast-mode Plus on PB9 */
  155. #endif /* SYSCFG_CFGR1_I2C_PB9_FMP */
  156. /**
  157. * @}
  158. */
  159. /**
  160. * @}
  161. */
  162. /**
  163. * @}
  164. */
  165. /* Exported macros -----------------------------------------------------------*/
  166. /** @defgroup DBGMCU_Exported_Macros DBGMCU Exported Macros
  167. * @{
  168. */
  169. /** @brief Freeze/Unfreeze Peripherals in Debug mode
  170. */
  171. #if defined(DBGMCU_APB1FZR1_DBG_TIM2_STOP)
  172. #define __HAL_DBGMCU_FREEZE_TIM2() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM2_STOP)
  173. #define __HAL_DBGMCU_UNFREEZE_TIM2() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM2_STOP)
  174. #endif /* DBGMCU_APB1FZR1_DBG_TIM2_STOP */
  175. #if defined(DBGMCU_APB1FZR1_DBG_TIM3_STOP)
  176. #define __HAL_DBGMCU_FREEZE_TIM3() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM3_STOP)
  177. #define __HAL_DBGMCU_UNFREEZE_TIM3() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM3_STOP)
  178. #endif /* DBGMCU_APB1FZR1_DBG_TIM3_STOP */
  179. #if defined(DBGMCU_APB1FZR1_DBG_TIM4_STOP)
  180. #define __HAL_DBGMCU_FREEZE_TIM4() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM4_STOP)
  181. #define __HAL_DBGMCU_UNFREEZE_TIM4() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM4_STOP)
  182. #endif /* DBGMCU_APB1FZR1_DBG_TIM4_STOP */
  183. #if defined(DBGMCU_APB1FZR1_DBG_TIM5_STOP)
  184. #define __HAL_DBGMCU_FREEZE_TIM5() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM5_STOP)
  185. #define __HAL_DBGMCU_UNFREEZE_TIM5() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM5_STOP)
  186. #endif /* DBGMCU_APB1FZR1_DBG_TIM5_STOP */
  187. #if defined(DBGMCU_APB1FZR1_DBG_TIM6_STOP)
  188. #define __HAL_DBGMCU_FREEZE_TIM6() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM6_STOP)
  189. #define __HAL_DBGMCU_UNFREEZE_TIM6() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM6_STOP)
  190. #endif /* DBGMCU_APB1FZR1_DBG_TIM6_STOP */
  191. #if defined(DBGMCU_APB1FZR1_DBG_TIM7_STOP)
  192. #define __HAL_DBGMCU_FREEZE_TIM7() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM7_STOP)
  193. #define __HAL_DBGMCU_UNFREEZE_TIM7() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM7_STOP)
  194. #endif /* DBGMCU_APB1FZR1_DBG_TIM7_STOP */
  195. #if defined(DBGMCU_APB1FZR1_DBG_RTC_STOP)
  196. #define __HAL_DBGMCU_FREEZE_RTC() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_RTC_STOP)
  197. #define __HAL_DBGMCU_UNFREEZE_RTC() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_RTC_STOP)
  198. #endif /* DBGMCU_APB1FZR1_DBG_RTC_STOP */
  199. #if defined(DBGMCU_APB1FZR1_DBG_WWDG_STOP)
  200. #define __HAL_DBGMCU_FREEZE_WWDG() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_WWDG_STOP)
  201. #define __HAL_DBGMCU_UNFREEZE_WWDG() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_WWDG_STOP)
  202. #endif /* DBGMCU_APB1FZR1_DBG_WWDG_STOP */
  203. #if defined(DBGMCU_APB1FZR1_DBG_IWDG_STOP)
  204. #define __HAL_DBGMCU_FREEZE_IWDG() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_IWDG_STOP)
  205. #define __HAL_DBGMCU_UNFREEZE_IWDG() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_IWDG_STOP)
  206. #endif /* DBGMCU_APB1FZR1_DBG_IWDG_STOP */
  207. #if defined(DBGMCU_APB1FZR1_DBG_I2C1_STOP)
  208. #define __HAL_DBGMCU_FREEZE_I2C1_TIMEOUT() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_I2C1_STOP)
  209. #define __HAL_DBGMCU_UNFREEZE_I2C1_TIMEOUT() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_I2C1_STOP)
  210. #endif /* DBGMCU_APB1FZR1_DBG_I2C1_STOP */
  211. #if defined(DBGMCU_APB1FZR1_DBG_I2C2_STOP)
  212. #define __HAL_DBGMCU_FREEZE_I2C2_TIMEOUT() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_I2C2_STOP)
  213. #define __HAL_DBGMCU_UNFREEZE_I2C2_TIMEOUT() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_I2C2_STOP)
  214. #endif /* DBGMCU_APB1FZR1_DBG_I2C2_STOP */
  215. #if defined(DBGMCU_APB1FZR1_DBG_I2C3_STOP)
  216. #define __HAL_DBGMCU_FREEZE_I2C3_TIMEOUT() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_I2C3_STOP)
  217. #define __HAL_DBGMCU_UNFREEZE_I2C3_TIMEOUT() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_I2C3_STOP)
  218. #endif /* DBGMCU_APB1FZR1_DBG_I2C3_STOP */
  219. #if defined(DBGMCU_APB1FZR1_DBG_LPTIM1_STOP)
  220. #define __HAL_DBGMCU_FREEZE_LPTIM1() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_LPTIM1_STOP)
  221. #define __HAL_DBGMCU_UNFREEZE_LPTIM1() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_LPTIM1_STOP)
  222. #endif /* DBGMCU_APB1FZR1_DBG_LPTIM1_STOP */
  223. #if defined(DBGMCU_APB1FZR2_DBG_I2C4_STOP)
  224. #define __HAL_DBGMCU_FREEZE_I2C4_TIMEOUT() SET_BIT(DBGMCU->APB1FZR2, DBGMCU_APB1FZR2_DBG_I2C4_STOP)
  225. #define __HAL_DBGMCU_UNFREEZE_I2C4_TIMEOUT() CLEAR_BIT(DBGMCU->APB1FZR2, DBGMCU_APB1FZR2_DBG_I2C4_STOP)
  226. #endif /* DBGMCU_APB1FZR2_DBG_I2C4_STOP */
  227. #if defined(DBGMCU_APB2FZ_DBG_TIM1_STOP)
  228. #define __HAL_DBGMCU_FREEZE_TIM1() SET_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_TIM1_STOP)
  229. #define __HAL_DBGMCU_UNFREEZE_TIM1() CLEAR_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_TIM1_STOP)
  230. #endif /* DBGMCU_APB2FZ_DBG_TIM1_STOP */
  231. #if defined(DBGMCU_APB2FZ_DBG_TIM8_STOP)
  232. #define __HAL_DBGMCU_FREEZE_TIM8() SET_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_TIM8_STOP)
  233. #define __HAL_DBGMCU_UNFREEZE_TIM8() CLEAR_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_TIM8_STOP)
  234. #endif /* DBGMCU_APB2FZ_DBG_TIM8_STOP */
  235. #if defined(DBGMCU_APB2FZ_DBG_TIM15_STOP)
  236. #define __HAL_DBGMCU_FREEZE_TIM15() SET_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_TIM15_STOP)
  237. #define __HAL_DBGMCU_UNFREEZE_TIM15() CLEAR_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_TIM15_STOP)
  238. #endif /* DBGMCU_APB2FZ_DBG_TIM15_STOP */
  239. #if defined(DBGMCU_APB2FZ_DBG_TIM16_STOP)
  240. #define __HAL_DBGMCU_FREEZE_TIM16() SET_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_TIM16_STOP)
  241. #define __HAL_DBGMCU_UNFREEZE_TIM16() CLEAR_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_TIM16_STOP)
  242. #endif /* DBGMCU_APB2FZ_DBG_TIM16_STOP */
  243. #if defined(DBGMCU_APB2FZ_DBG_TIM17_STOP)
  244. #define __HAL_DBGMCU_FREEZE_TIM17() SET_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_TIM17_STOP)
  245. #define __HAL_DBGMCU_UNFREEZE_TIM17() CLEAR_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_TIM17_STOP)
  246. #endif /* DBGMCU_APB2FZ_DBG_TIM17_STOP */
  247. #if defined(DBGMCU_APB2FZ_DBG_TIM20_STOP)
  248. #define __HAL_DBGMCU_FREEZE_TIM20() SET_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_TIM20_STOP)
  249. #define __HAL_DBGMCU_UNFREEZE_TIM20() CLEAR_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_TIM20_STOP)
  250. #endif /* DBGMCU_APB2FZ_DBG_TIM20_STOP */
  251. #if defined(DBGMCU_APB2FZ_DBG_HRTIM1_STOP)
  252. #define __HAL_DBGMCU_FREEZE_HRTIM1() SET_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_HRTIM1_STOP)
  253. #define __HAL_DBGMCU_UNFREEZE_HRTIM1() CLEAR_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_HRTIM1_STOP)
  254. #endif /* DBGMCU_APB2FZ_DBG_HRTIM1_STOP */
  255. /**
  256. * @}
  257. */
  258. /** @defgroup SYSCFG_Exported_Macros SYSCFG Exported Macros
  259. * @{
  260. */
  261. /** @brief Main Flash memory mapped at 0x00000000.
  262. */
  263. #define __HAL_SYSCFG_REMAPMEMORY_FLASH() CLEAR_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_MODE)
  264. /** @brief System Flash memory mapped at 0x00000000.
  265. */
  266. #define __HAL_SYSCFG_REMAPMEMORY_SYSTEMFLASH() MODIFY_REG(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_MODE, SYSCFG_MEMRMP_MEM_MODE_0)
  267. /** @brief Embedded SRAM mapped at 0x00000000.
  268. */
  269. #define __HAL_SYSCFG_REMAPMEMORY_SRAM() MODIFY_REG(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_MODE, (SYSCFG_MEMRMP_MEM_MODE_1|SYSCFG_MEMRMP_MEM_MODE_0))
  270. #if defined (FMC_BANK1)
  271. /** @brief FMC Bank1 (NOR/PSRAM 1 and 2) mapped at 0x00000000.
  272. */
  273. #define __HAL_SYSCFG_REMAPMEMORY_FMC() MODIFY_REG(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_MODE, SYSCFG_MEMRMP_MEM_MODE_1)
  274. #endif /* FMC_BANK1 */
  275. #if defined (QUADSPI)
  276. /** @brief QUADSPI mapped at 0x00000000.
  277. */
  278. #define __HAL_SYSCFG_REMAPMEMORY_QUADSPI() MODIFY_REG(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_MODE, (SYSCFG_MEMRMP_MEM_MODE_2|SYSCFG_MEMRMP_MEM_MODE_1))
  279. #endif /* QUADSPI */
  280. /**
  281. * @brief Return the boot mode as configured by user.
  282. * @retval The boot mode as configured by user. The returned value can be one
  283. * of the following values:
  284. * @arg @ref SYSCFG_BOOT_MAINFLASH
  285. * @arg @ref SYSCFG_BOOT_SYSTEMFLASH
  286. * @arg @ref SYSCFG_BOOT_FMC (*)
  287. * @arg @ref SYSCFG_BOOT_QUADSPI (*)
  288. * @arg @ref SYSCFG_BOOT_SRAM
  289. * @note (*) availability depends on devices
  290. */
  291. #define __HAL_SYSCFG_GET_BOOT_MODE() READ_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_MODE)
  292. /** @brief CCMSRAM page write protection enable macro
  293. * @param __CCMSRAMWRP__: This parameter can be a value of @ref SYSCFG_CCMSRAMWRP
  294. * @note write protection can only be disabled by a system reset
  295. * @retval None
  296. */
  297. /* Legacy define */
  298. #define __HAL_SYSCFG_CCMSRAM_WRP_1_31_ENABLE __HAL_SYSCFG_CCMSRAM_WRP_0_31_ENABLE
  299. #define __HAL_SYSCFG_CCMSRAM_WRP_0_31_ENABLE(__CCMSRAMWRP__) do {assert_param(IS_SYSCFG_CCMSRAMWRP_PAGE((__CCMSRAMWRP__)));\
  300. SET_BIT(SYSCFG->SWPR,(__CCMSRAMWRP__));\
  301. }while(0)
  302. /** @brief CCMSRAM page write protection unlock prior to erase
  303. * @note Writing a wrong key reactivates the write protection
  304. */
  305. #define __HAL_SYSCFG_CCMSRAM_WRP_UNLOCK() do {SYSCFG->SKR = 0xCA;\
  306. SYSCFG->SKR = 0x53;\
  307. }while(0)
  308. /** @brief CCMSRAM erase
  309. * @note __SYSCFG_GET_FLAG(SYSCFG_FLAG_CCMSRAM_BUSY) may be used to check end of erase
  310. */
  311. #define __HAL_SYSCFG_CCMSRAM_ERASE() SET_BIT(SYSCFG->SCSR, SYSCFG_SCSR_CCMER)
  312. /** @brief Floating Point Unit interrupt enable/disable macros
  313. * @param __INTERRUPT__: This parameter can be a value of @ref SYSCFG_FPU_Interrupts
  314. */
  315. #define __HAL_SYSCFG_FPU_INTERRUPT_ENABLE(__INTERRUPT__) do {assert_param(IS_SYSCFG_FPU_INTERRUPT((__INTERRUPT__)));\
  316. SET_BIT(SYSCFG->CFGR1, (__INTERRUPT__));\
  317. }while(0)
  318. #define __HAL_SYSCFG_FPU_INTERRUPT_DISABLE(__INTERRUPT__) do {assert_param(IS_SYSCFG_FPU_INTERRUPT((__INTERRUPT__)));\
  319. CLEAR_BIT(SYSCFG->CFGR1, (__INTERRUPT__));\
  320. }while(0)
  321. /** @brief SYSCFG Break ECC lock.
  322. * Enable and lock the connection of Flash ECC error connection to TIM1/8/15/16/17 Break input.
  323. * @note The selected configuration is locked and can be unlocked only by system reset.
  324. */
  325. #define __HAL_SYSCFG_BREAK_ECC_LOCK() SET_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_ECCL)
  326. /** @brief SYSCFG Break Cortex-M4 Lockup lock.
  327. * Enable and lock the connection of Cortex-M4 LOCKUP (Hardfault) output to TIM1/8/15/16/17 Break input.
  328. * @note The selected configuration is locked and can be unlocked only by system reset.
  329. */
  330. #define __HAL_SYSCFG_BREAK_LOCKUP_LOCK() SET_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_CLL)
  331. /** @brief SYSCFG Break PVD lock.
  332. * Enable and lock the PVD connection to Timer1/8/15/16/17 Break input, as well as the PVDE and PLS[2:0] in the PWR_CR2 register.
  333. * @note The selected configuration is locked and can be unlocked only by system reset.
  334. */
  335. #define __HAL_SYSCFG_BREAK_PVD_LOCK() SET_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_PVDL)
  336. /** @brief SYSCFG Break SRAM parity lock.
  337. * Enable and lock the SRAM parity error (first 32kB of SRAM1 + CCM SRAM) signal connection to TIM1/8/15/16/17 Break input.
  338. * @note The selected configuration is locked and can be unlocked by system reset.
  339. */
  340. #define __HAL_SYSCFG_BREAK_SRAMPARITY_LOCK() SET_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_SPL)
  341. /** @brief Check SYSCFG flag is set or not.
  342. * @param __FLAG__: specifies the flag to check.
  343. * This parameter can be one of the following values:
  344. * @arg @ref SYSCFG_FLAG_SRAM_PE SRAM Parity Error Flag
  345. * @arg @ref SYSCFG_FLAG_CCMSRAM_BUSY CCMSRAM Erase Ongoing
  346. * @retval The new state of __FLAG__ (TRUE or FALSE).
  347. */
  348. #define __HAL_SYSCFG_GET_FLAG(__FLAG__) ((((((__FLAG__) == SYSCFG_SCSR_CCMBSY)? SYSCFG->SCSR : SYSCFG->CFGR2)\
  349. & (__FLAG__))!= 0U) ? 1U : 0U)
  350. /** @brief Set the SPF bit to clear the SRAM Parity Error Flag.
  351. */
  352. #define __HAL_SYSCFG_CLEAR_FLAG() SET_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_SPF)
  353. /** @brief Fast-mode Plus driving capability enable/disable macros
  354. * @param __FASTMODEPLUS__: This parameter can be a value of :
  355. * @arg @ref SYSCFG_FASTMODEPLUS_PB6 Fast-mode Plus driving capability activation on PB6
  356. * @arg @ref SYSCFG_FASTMODEPLUS_PB7 Fast-mode Plus driving capability activation on PB7
  357. * @arg @ref SYSCFG_FASTMODEPLUS_PB8 Fast-mode Plus driving capability activation on PB8
  358. * @arg @ref SYSCFG_FASTMODEPLUS_PB9 Fast-mode Plus driving capability activation on PB9
  359. */
  360. #define __HAL_SYSCFG_FASTMODEPLUS_ENABLE(__FASTMODEPLUS__) do {assert_param(IS_SYSCFG_FASTMODEPLUS((__FASTMODEPLUS__)));\
  361. SET_BIT(SYSCFG->CFGR1, (__FASTMODEPLUS__));\
  362. }while(0)
  363. #define __HAL_SYSCFG_FASTMODEPLUS_DISABLE(__FASTMODEPLUS__) do {assert_param(IS_SYSCFG_FASTMODEPLUS((__FASTMODEPLUS__)));\
  364. CLEAR_BIT(SYSCFG->CFGR1, (__FASTMODEPLUS__));\
  365. }while(0)
  366. /**
  367. * @}
  368. */
  369. /* Private macros ------------------------------------------------------------*/
  370. /** @defgroup SYSCFG_Private_Macros SYSCFG Private Macros
  371. * @{
  372. */
  373. #define IS_SYSCFG_FPU_INTERRUPT(__INTERRUPT__) ((((__INTERRUPT__) & SYSCFG_IT_FPU_IOC) == SYSCFG_IT_FPU_IOC) || \
  374. (((__INTERRUPT__) & SYSCFG_IT_FPU_DZC) == SYSCFG_IT_FPU_DZC) || \
  375. (((__INTERRUPT__) & SYSCFG_IT_FPU_UFC) == SYSCFG_IT_FPU_UFC) || \
  376. (((__INTERRUPT__) & SYSCFG_IT_FPU_OFC) == SYSCFG_IT_FPU_OFC) || \
  377. (((__INTERRUPT__) & SYSCFG_IT_FPU_IDC) == SYSCFG_IT_FPU_IDC) || \
  378. (((__INTERRUPT__) & SYSCFG_IT_FPU_IXC) == SYSCFG_IT_FPU_IXC))
  379. #define IS_SYSCFG_BREAK_CONFIG(__CONFIG__) (((__CONFIG__) == SYSCFG_BREAK_ECC) || \
  380. ((__CONFIG__) == SYSCFG_BREAK_PVD) || \
  381. ((__CONFIG__) == SYSCFG_BREAK_SRAMPARITY) || \
  382. ((__CONFIG__) == SYSCFG_BREAK_LOCKUP))
  383. #if (CCMSRAM_SIZE == 0x00008000UL) /* STM32G4 devices with CCMSRAM_SIZE = 32 Kbytes */
  384. #define IS_SYSCFG_CCMSRAMWRP_PAGE(__PAGE__) ((__PAGE__) > 0U)
  385. #elif (CCMSRAM_SIZE == 0x00005000UL) /* STM32G4 devices with CCMSRAM_SIZE = 20 Kbytes */
  386. #define IS_SYSCFG_CCMSRAMWRP_PAGE(__PAGE__) (((__PAGE__) > 0U) && ((__PAGE__) <= 0x000FFFFFU))
  387. #elif (CCMSRAM_SIZE == 0x00004000UL) /* STM32G4 devices with CCMSRAM_SIZE = 16 Kbytes */
  388. #define IS_SYSCFG_CCMSRAMWRP_PAGE(__PAGE__) (((__PAGE__) > 0U) && ((__PAGE__) <= 0x0000FFFFU))
  389. #elif (CCMSRAM_SIZE == 0x00002800UL) /* STM32G4 devices with CCMSRAM_SIZE = 10 Kbytes */
  390. #define IS_SYSCFG_CCMSRAMWRP_PAGE(__PAGE__) (((__PAGE__) > 0U) && ((__PAGE__) <= 0x000003FFU))
  391. #endif /* CCMSRAM_SIZE */
  392. #if defined(VREFBUF)
  393. #define IS_SYSCFG_VREFBUF_VOLTAGE_SCALE(__SCALE__) (((__SCALE__) == SYSCFG_VREFBUF_VOLTAGE_SCALE0) || \
  394. ((__SCALE__) == SYSCFG_VREFBUF_VOLTAGE_SCALE1) || \
  395. ((__SCALE__) == SYSCFG_VREFBUF_VOLTAGE_SCALE2))
  396. #define IS_SYSCFG_VREFBUF_HIGH_IMPEDANCE(__VALUE__) (((__VALUE__) == SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE) || \
  397. ((__VALUE__) == SYSCFG_VREFBUF_HIGH_IMPEDANCE_ENABLE))
  398. #define IS_SYSCFG_VREFBUF_TRIMMING(__VALUE__) (((__VALUE__) > 0U) && ((__VALUE__) <= VREFBUF_CCR_TRIM))
  399. #endif /* VREFBUF */
  400. #if defined(SYSCFG_FASTMODEPLUS_PB8) && defined(SYSCFG_FASTMODEPLUS_PB9)
  401. #define IS_SYSCFG_FASTMODEPLUS(__PIN__) ((((__PIN__) & SYSCFG_FASTMODEPLUS_PB6) == SYSCFG_FASTMODEPLUS_PB6) || \
  402. (((__PIN__) & SYSCFG_FASTMODEPLUS_PB7) == SYSCFG_FASTMODEPLUS_PB7) || \
  403. (((__PIN__) & SYSCFG_FASTMODEPLUS_PB8) == SYSCFG_FASTMODEPLUS_PB8) || \
  404. (((__PIN__) & SYSCFG_FASTMODEPLUS_PB9) == SYSCFG_FASTMODEPLUS_PB9))
  405. #elif defined(SYSCFG_FASTMODEPLUS_PB8)
  406. #define IS_SYSCFG_FASTMODEPLUS(__PIN__) ((((__PIN__) & SYSCFG_FASTMODEPLUS_PB6) == SYSCFG_FASTMODEPLUS_PB6) || \
  407. (((__PIN__) & SYSCFG_FASTMODEPLUS_PB7) == SYSCFG_FASTMODEPLUS_PB7) || \
  408. (((__PIN__) & SYSCFG_FASTMODEPLUS_PB8) == SYSCFG_FASTMODEPLUS_PB8))
  409. #elif defined(SYSCFG_FASTMODEPLUS_PB9)
  410. #define IS_SYSCFG_FASTMODEPLUS(__PIN__) ((((__PIN__) & SYSCFG_FASTMODEPLUS_PB6) == SYSCFG_FASTMODEPLUS_PB6) || \
  411. (((__PIN__) & SYSCFG_FASTMODEPLUS_PB7) == SYSCFG_FASTMODEPLUS_PB7) || \
  412. (((__PIN__) & SYSCFG_FASTMODEPLUS_PB9) == SYSCFG_FASTMODEPLUS_PB9))
  413. #else
  414. #define IS_SYSCFG_FASTMODEPLUS(__PIN__) ((((__PIN__) & SYSCFG_FASTMODEPLUS_PB6) == SYSCFG_FASTMODEPLUS_PB6) || \
  415. (((__PIN__) & SYSCFG_FASTMODEPLUS_PB7) == SYSCFG_FASTMODEPLUS_PB7))
  416. #endif /* SYSCFG_FASTMODEPLUS_PB */
  417. /**
  418. * @}
  419. */
  420. /** @defgroup HAL_Private_Macros HAL Private Macros
  421. * @{
  422. */
  423. #define IS_TICKFREQ(FREQ) (((FREQ) == HAL_TICK_FREQ_10HZ) || \
  424. ((FREQ) == HAL_TICK_FREQ_100HZ) || \
  425. ((FREQ) == HAL_TICK_FREQ_1KHZ))
  426. /**
  427. * @}
  428. */
  429. /* Exported functions --------------------------------------------------------*/
  430. /** @addtogroup HAL_Exported_Functions
  431. * @{
  432. */
  433. /** @addtogroup HAL_Exported_Functions_Group1
  434. * @{
  435. */
  436. /* Initialization and Configuration functions ******************************/
  437. HAL_StatusTypeDef HAL_Init(void);
  438. HAL_StatusTypeDef HAL_DeInit(void);
  439. void HAL_MspInit(void);
  440. void HAL_MspDeInit(void);
  441. HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority);
  442. /**
  443. * @}
  444. */
  445. /** @addtogroup HAL_Exported_Functions_Group2 HAL Control functions
  446. * @{
  447. */
  448. /* Peripheral Control functions ************************************************/
  449. void HAL_IncTick(void);
  450. void HAL_Delay(uint32_t Delay);
  451. uint32_t HAL_GetTick(void);
  452. uint32_t HAL_GetTickPrio(void);
  453. HAL_StatusTypeDef HAL_SetTickFreq(uint32_t Freq);
  454. uint32_t HAL_GetTickFreq(void);
  455. void HAL_SuspendTick(void);
  456. void HAL_ResumeTick(void);
  457. uint32_t HAL_GetHalVersion(void);
  458. uint32_t HAL_GetREVID(void);
  459. uint32_t HAL_GetDEVID(void);
  460. uint32_t HAL_GetUIDw0(void);
  461. uint32_t HAL_GetUIDw1(void);
  462. uint32_t HAL_GetUIDw2(void);
  463. /**
  464. * @}
  465. */
  466. /** @addtogroup HAL_Exported_Functions_Group3
  467. * @{
  468. */
  469. /* DBGMCU Peripheral Control functions *****************************************/
  470. void HAL_DBGMCU_EnableDBGSleepMode(void);
  471. void HAL_DBGMCU_DisableDBGSleepMode(void);
  472. void HAL_DBGMCU_EnableDBGStopMode(void);
  473. void HAL_DBGMCU_DisableDBGStopMode(void);
  474. void HAL_DBGMCU_EnableDBGStandbyMode(void);
  475. void HAL_DBGMCU_DisableDBGStandbyMode(void);
  476. /**
  477. * @}
  478. */
  479. /* Exported variables ---------------------------------------------------------*/
  480. /** @addtogroup HAL_Exported_Variables
  481. * @{
  482. */
  483. extern __IO uint32_t uwTick;
  484. extern uint32_t uwTickPrio;
  485. extern uint32_t uwTickFreq;
  486. /**
  487. * @}
  488. */
  489. /** @addtogroup HAL_Exported_Functions_Group4
  490. * @{
  491. */
  492. /* SYSCFG Control functions ****************************************************/
  493. void HAL_SYSCFG_CCMSRAMErase(void);
  494. void HAL_SYSCFG_EnableMemorySwappingBank(void);
  495. void HAL_SYSCFG_DisableMemorySwappingBank(void);
  496. #if defined(VREFBUF)
  497. void HAL_SYSCFG_VREFBUF_VoltageScalingConfig(uint32_t VoltageScaling);
  498. void HAL_SYSCFG_VREFBUF_HighImpedanceConfig(uint32_t Mode);
  499. void HAL_SYSCFG_VREFBUF_TrimmingConfig(uint32_t TrimmingValue);
  500. HAL_StatusTypeDef HAL_SYSCFG_EnableVREFBUF(void);
  501. void HAL_SYSCFG_DisableVREFBUF(void);
  502. #endif /* VREFBUF */
  503. void HAL_SYSCFG_EnableIOSwitchBooster(void);
  504. void HAL_SYSCFG_DisableIOSwitchBooster(void);
  505. void HAL_SYSCFG_EnableIOSwitchVDD(void);
  506. void HAL_SYSCFG_DisableIOSwitchVDD(void);
  507. void HAL_SYSCFG_CCMSRAM_WriteProtectionEnable(uint32_t Page);
  508. /**
  509. * @}
  510. */
  511. /**
  512. * @}
  513. */
  514. /**
  515. * @}
  516. */
  517. /**
  518. * @}
  519. */
  520. #ifdef __cplusplus
  521. }
  522. #endif
  523. #endif /* STM32G4xx_HAL_H */