stm32h7xx_hal.h 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573
  1. /**
  2. ******************************************************************************
  3. * @file stm32h7xx_hal.h
  4. * @author MCD Application Team
  5. * @version V1.0.0
  6. * @date 21-April-2017
  7. * @brief This file contains all the functions prototypes for the HAL
  8. * module driver.
  9. ******************************************************************************
  10. * @attention
  11. *
  12. * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
  13. *
  14. * Redistribution and use in source and binary forms, with or without modification,
  15. * are permitted provided that the following conditions are met:
  16. * 1. Redistributions of source code must retain the above copyright notice,
  17. * this list of conditions and the following disclaimer.
  18. * 2. Redistributions in binary form must reproduce the above copyright notice,
  19. * this list of conditions and the following disclaimer in the documentation
  20. * and/or other materials provided with the distribution.
  21. * 3. Neither the name of STMicroelectronics nor the names of its contributors
  22. * may be used to endorse or promote products derived from this software
  23. * without specific prior written permission.
  24. *
  25. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  26. * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  27. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  28. * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  29. * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  30. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  31. * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  32. * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  33. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  34. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  35. *
  36. ******************************************************************************
  37. */
  38. /* Define to prevent recursive inclusion -------------------------------------*/
  39. #ifndef __STM32H7xx_HAL_H
  40. #define __STM32H7xx_HAL_H
  41. #ifdef __cplusplus
  42. extern "C" {
  43. #endif
  44. /* Includes ------------------------------------------------------------------*/
  45. #include "stm32h7xx_hal_conf.h"
  46. /** @addtogroup STM32H7xx_HAL_Driver
  47. * @{
  48. */
  49. /** @addtogroup HAL
  50. * @{
  51. */
  52. /* Exported types ------------------------------------------------------------*/
  53. /* Exported constants --------------------------------------------------------*/
  54. /** @defgroup SYSCFG_VREFBUF_VoltageScale VREFBUF Voltage Scale
  55. * @{
  56. */
  57. #define SYSCFG_VREFBUF_VOLTAGE_SCALE0 VREFBUF_CSR_VRS_OUT2 /*!< Voltage reference scale 0 (VREF_OUT2) */
  58. #define SYSCFG_VREFBUF_VOLTAGE_SCALE1 VREFBUF_CSR_VRS_OUT1 /*!< Voltage reference scale 1 (VREF_OUT1) */
  59. #define SYSCFG_VREFBUF_VOLTAGE_SCALE2 VREFBUF_CSR_VRS_OUT4 /*!< Voltage reference scale 2 (VREF_OUT4) */
  60. #define SYSCFG_VREFBUF_VOLTAGE_SCALE3 VREFBUF_CSR_VRS_OUT3 /*!< Voltage reference scale 3 (VREF_OUT3) */
  61. #define IS_SYSCFG_VREFBUF_VOLTAGE_SCALE(__SCALE__) (((__SCALE__) == SYSCFG_VREFBUF_VOLTAGE_SCALE0) || \
  62. ((__SCALE__) == SYSCFG_VREFBUF_VOLTAGE_SCALE1) || \
  63. ((__SCALE__) == SYSCFG_VREFBUF_VOLTAGE_SCALE2) || \
  64. ((__SCALE__) == SYSCFG_VREFBUF_VOLTAGE_SCALE3))
  65. /**
  66. * @}
  67. */
  68. /** @defgroup SYSCFG_VREFBUF_HighImpedance VREFBUF High Impedance
  69. * @{
  70. */
  71. #define SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE ((uint32_t)0x00000000) /*!< VREF_plus pin is internally connected to Voltage reference buffer output */
  72. #define SYSCFG_VREFBUF_HIGH_IMPEDANCE_ENABLE VREFBUF_CSR_HIZ /*!< VREF_plus pin is high impedance */
  73. #define IS_SYSCFG_VREFBUF_HIGH_IMPEDANCE(__VALUE__) (((__VALUE__) == SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE) || \
  74. ((__VALUE__) == SYSCFG_VREFBUF_HIGH_IMPEDANCE_ENABLE))
  75. #define IS_SYSCFG_VREFBUF_TRIMMING(__VALUE__) (((__VALUE__) > 0) && ((__VALUE__) <= VREFBUF_CCR_TRIM))
  76. /**
  77. * @}
  78. */
  79. /** @defgroup SYSCFG_Ethernet_Config Ethernet Config
  80. * @{
  81. */
  82. #define SYSCFG_ETH_MII ((uint32_t)0x00000000) /*!< Select the Media Independent Interface */
  83. #define SYSCFG_ETH_RMII SYSCFG_PMCR_EPIS_SEL_2 /*!< Select the Reduced Media Independent Interface */
  84. #define IS_SYSCFG_ETHERNET_CONFIG(CONFIG) (((CONFIG) == SYSCFG_ETH_MII) || \
  85. ((CONFIG) == SYSCFG_ETH_RMII))
  86. /**
  87. * @}
  88. */
  89. /** @defgroup SYSCFG_Analog_Switch_Config Analog Switch Config
  90. * @{
  91. */
  92. #define SYSCFG_SWITCH_PA0 SYSCFG_PMCR_PA0SO /*!< Select PA0 analog switch */
  93. #define SYSCFG_SWITCH_PA1 SYSCFG_PMCR_PA1SO /*!< Select PA1 analog switch */
  94. #define SYSCFG_SWITCH_PC2 SYSCFG_PMCR_PC2SO /*!< Select PC2 analog switch */
  95. #define SYSCFG_SWITCH_PC3 SYSCFG_PMCR_PC3SO /*!< Select PC3 analog switch */
  96. #define IS_SYSCFG_ANALOG_SWITCH(SWITCH) ((((SWITCH) & SYSCFG_SWITCH_PA0) == SYSCFG_SWITCH_PA0)|| \
  97. (((SWITCH) & SYSCFG_SWITCH_PA1) == SYSCFG_SWITCH_PA1) || \
  98. (((SWITCH) & SYSCFG_SWITCH_PC2) == SYSCFG_SWITCH_PC2) || \
  99. (((SWITCH) & SYSCFG_SWITCH_PC3) == SYSCFG_SWITCH_PC3))
  100. #define SYSCFG_SWITCH_PA0_OPEN SYSCFG_PMCR_PA0SO /*!< PA0 analog switch opened */
  101. #define SYSCFG_SWITCH_PA0_CLOSE ((uint32_t)0x00000000) /*!< PA0 analog switch closed */
  102. #define SYSCFG_SWITCH_PA1_OPEN SYSCFG_PMCR_PA1SO /*!< PA1 analog switch opened */
  103. #define SYSCFG_SWITCH_PA1_CLOSE ((uint32_t)0x00000000) /*!< PA1 analog switch closed*/
  104. #define SYSCFG_SWITCH_PC2_OPEN SYSCFG_PMCR_PC2SO /*!< PC2 analog switch opened */
  105. #define SYSCFG_SWITCH_PC2_CLOSE ((uint32_t)0x00000000) /*!< PC2 analog switch closed */
  106. #define SYSCFG_SWITCH_PC3_OPEN SYSCFG_PMCR_PC3SO /*!< PC3 analog switch opened */
  107. #define SYSCFG_SWITCH_PC3_CLOSE ((uint32_t)0x00000000) /*!< PC3 analog switch closed */
  108. #define IS_SYSCFG_SWITCH_STATE(STATE) ((((STATE) & SYSCFG_SWITCH_PA0_OPEN) == SYSCFG_SWITCH_PA0_OPEN) || \
  109. (((STATE) & SYSCFG_SWITCH_PA0_CLOSE) == SYSCFG_SWITCH_PA0_CLOSE) || \
  110. (((STATE) & SYSCFG_SWITCH_PA1_OPEN) == SYSCFG_SWITCH_PA1_OPEN) || \
  111. (((STATE) & SYSCFG_SWITCH_PA1_CLOSE) == SYSCFG_SWITCH_PA1_CLOSE) || \
  112. (((STATE) & SYSCFG_SWITCH_PC2_OPEN) == SYSCFG_SWITCH_PC2_OPEN) || \
  113. (((STATE) & SYSCFG_SWITCH_PC2_CLOSE) == SYSCFG_SWITCH_PC2_CLOSE) || \
  114. (((STATE) & SYSCFG_SWITCH_PC3_OPEN) == SYSCFG_SWITCH_PC3_OPEN) || \
  115. (((STATE) & SYSCFG_SWITCH_PC3_CLOSE) == SYSCFG_SWITCH_PC3_CLOSE))
  116. /**
  117. * @}
  118. */
  119. /** @defgroup SYSCFG_Boot_Config Boot Config
  120. * @{
  121. */
  122. #define SYSCFG_BOOT_ADDR0 ((uint32_t)0x00000000) /*!< Select Boot address0 */
  123. #define SYSCFG_BOOT_ADDR1 ((uint32_t)0x00000001) /*!< Select Boot address1 */
  124. #define IS_SYSCFG_BOOT_REGISTER(REGISTER) (((REGISTER) == SYSCFG_BOOT_ADDR0)|| \
  125. ((REGISTER) == SYSCFG_BOOT_ADDR1))
  126. #define IS_SYSCFG_BOOT_ADDRESS(ADDRESS) ((ADDRESS) < PERIPH_BASE)
  127. /**
  128. * @}
  129. */
  130. /** @defgroup SYSCFG_IOCompenstionCell_Config IOCompenstionCell Config
  131. * @{
  132. */
  133. #define SYSCFG_CELL_CODE ((uint32_t)0x00000000) /*!< Select Code from the cell */
  134. #define SYSCFG_REGISTER_CODE SYSCFG_CCCSR_CS /*!< Code from the SYSCFG compensation cell code register */
  135. #define IS_SYSCFG_CODE_SELECT(SELECT) (((SELECT) == SYSCFG_CELL_CODE)|| \
  136. ((SELECT) == SYSCFG_REGISTER_CODE))
  137. #define IS_SYSCFG_CODE_CONFIG(CONFIG) ((CONFIG) < (0x10))
  138. /**
  139. * @}
  140. */
  141. /** @defgroup EXTI_Event_Input_Config Event Input Config
  142. * @{
  143. */
  144. #define EXTI_MODE_IT ((uint32_t)0x00010000)
  145. #define EXTI_MODE_EVT ((uint32_t)0x00020000)
  146. #define EXTI_RISING_EDGE ((uint32_t)0x00100000)
  147. #define EXTI_FALLING_EDGE ((uint32_t)0x00200000)
  148. #define IS_EXTI_EDGE_LINE(EDGE) (((EDGE) == EXTI_RISING_EDGE) || ((EDGE) == EXTI_FALLING_EDGE))
  149. #define IS_EXTI_MODE_LINE(MODE) (((MODE) == EXTI_MODE_IT) || ((MODE) == EXTI_MODE_EVT))
  150. #define EXTI_LINE0 ((uint32_t)0x00) /*!< External interrupt LINE 0 */
  151. #define EXTI_LINE1 ((uint32_t)0x01) /*!< External interrupt LINE 1 */
  152. #define EXTI_LINE2 ((uint32_t)0x02) /*!< External interrupt LINE 2 */
  153. #define EXTI_LINE3 ((uint32_t)0x03) /*!< External interrupt LINE 3 */
  154. #define EXTI_LINE4 ((uint32_t)0x04) /*!< External interrupt LINE 4 */
  155. #define EXTI_LINE5 ((uint32_t)0x05) /*!< External interrupt LINE 5 */
  156. #define EXTI_LINE6 ((uint32_t)0x06) /*!< External interrupt LINE 6 */
  157. #define EXTI_LINE7 ((uint32_t)0x07) /*!< External interrupt LINE 7 */
  158. #define EXTI_LINE8 ((uint32_t)0x08) /*!< External interrupt LINE 8 */
  159. #define EXTI_LINE9 ((uint32_t)0x09) /*!< External interrupt LINE 9 */
  160. #define EXTI_LINE10 ((uint32_t)0x0A) /*!< External interrupt LINE 10 */
  161. #define EXTI_LINE11 ((uint32_t)0x0B) /*!< External interrupt LINE 11 */
  162. #define EXTI_LINE12 ((uint32_t)0x0C) /*!< External interrupt LINE 12 */
  163. #define EXTI_LINE13 ((uint32_t)0x0D) /*!< External interrupt LINE 13 */
  164. #define EXTI_LINE14 ((uint32_t)0x0E) /*!< External interrupt LINE 14 */
  165. #define EXTI_LINE15 ((uint32_t)0x0F) /*!< External interrupt LINE 15 */
  166. #define EXTI_LINE16 ((uint32_t)0x10)
  167. #define EXTI_LINE17 ((uint32_t)0x11)
  168. #define EXTI_LINE18 ((uint32_t)0x12)
  169. #define EXTI_LINE19 ((uint32_t)0x13)
  170. #define EXTI_LINE20 ((uint32_t)0x14)
  171. #define EXTI_LINE21 ((uint32_t)0x15)
  172. #define EXTI_LINE22 ((uint32_t)0x16)
  173. #define EXTI_LINE23 ((uint32_t)0x17)
  174. #define EXTI_LINE24 ((uint32_t)0x18)
  175. #define EXTI_LINE25 ((uint32_t)0x19)
  176. #define EXTI_LINE26 ((uint32_t)0x1A)
  177. #define EXTI_LINE27 ((uint32_t)0x1B)
  178. #define EXTI_LINE28 ((uint32_t)0x1C)
  179. #define EXTI_LINE29 ((uint32_t)0x1D)
  180. #define EXTI_LINE30 ((uint32_t)0x1E)
  181. #define EXTI_LINE31 ((uint32_t)0x1F)
  182. #define EXTI_LINE32 ((uint32_t)0x20)
  183. #define EXTI_LINE33 ((uint32_t)0x21)
  184. #define EXTI_LINE34 ((uint32_t)0x22)
  185. #define EXTI_LINE35 ((uint32_t)0x23)
  186. #define EXTI_LINE36 ((uint32_t)0x24)
  187. #define EXTI_LINE37 ((uint32_t)0x25)
  188. #define EXTI_LINE38 ((uint32_t)0x26)
  189. #define EXTI_LINE39 ((uint32_t)0x27)
  190. #define EXTI_LINE40 ((uint32_t)0x28)
  191. #define EXTI_LINE41 ((uint32_t)0x29)
  192. #define EXTI_LINE42 ((uint32_t)0x2A)
  193. #define EXTI_LINE43 ((uint32_t)0x2B)
  194. #define EXTI_LINE44 ((uint32_t)0x2C)
  195. /* EXTI_LINE45 Reserved */
  196. /* EXTI_LINE46 Reserved */
  197. #define EXTI_LINE47 ((uint32_t)0x2F)
  198. #define EXTI_LINE48 ((uint32_t)0x30)
  199. #define EXTI_LINE49 ((uint32_t)0x31)
  200. #define EXTI_LINE50 ((uint32_t)0x32)
  201. #define EXTI_LINE51 ((uint32_t)0x33)
  202. #define EXTI_LINE52 ((uint32_t)0x34)
  203. #define EXTI_LINE53 ((uint32_t)0x35)
  204. #define EXTI_LINE54 ((uint32_t)0x36)
  205. #define EXTI_LINE55 ((uint32_t)0x37)
  206. #define EXTI_LINE56 ((uint32_t)0x38)
  207. #define EXTI_LINE57 ((uint32_t)0x39)
  208. #define EXTI_LINE58 ((uint32_t)0x3A)
  209. #define EXTI_LINE59 ((uint32_t)0x3B)
  210. #define EXTI_LINE60 ((uint32_t)0x3C)
  211. #define EXTI_LINE61 ((uint32_t)0x3D)
  212. #define EXTI_LINE62 ((uint32_t)0x3E)
  213. #define EXTI_LINE63 ((uint32_t)0x3F)
  214. #define EXTI_LINE64 ((uint32_t)0x40)
  215. #define EXTI_LINE65 ((uint32_t)0x41)
  216. #define EXTI_LINE66 ((uint32_t)0x42)
  217. #define EXTI_LINE67 ((uint32_t)0x43)
  218. #define EXTI_LINE68 ((uint32_t)0x44)
  219. #define EXTI_LINE69 ((uint32_t)0x45)
  220. #define EXTI_LINE70 ((uint32_t)0x46)
  221. #define EXTI_LINE71 ((uint32_t)0x47)
  222. #define EXTI_LINE72 ((uint32_t)0x48)
  223. #define EXTI_LINE73 ((uint32_t)0x49)
  224. #define EXTI_LINE74 ((uint32_t)0x4A)
  225. #define EXTI_LINE75 ((uint32_t)0x4B)
  226. #define EXTI_LINE76 ((uint32_t)0x4C)
  227. /* EXTI_LINE77 Reserved */
  228. /* EXTI_LINE78 Reserved */
  229. /* EXTI_LINE79 Reserved */
  230. /* EXTI_LINE80 Reserved */
  231. /* EXTI_LINE81 Reserved */
  232. /* EXTI_LINE82 Reserved */
  233. /* EXTI_LINE83 Reserved */
  234. /* EXTI_LINE84 Reserved */
  235. #define EXTI_LINE85 ((uint32_t)0x55)
  236. #define EXTI_LINE86 ((uint32_t)0x56)
  237. #define EXTI_LINE87 ((uint32_t)0x57)
  238. /* EXTI_LINE88 Reserved */
  239. #define IS_EXTI_CONFIG_LINE(LINE) (((LINE) == EXTI_LINE0) || ((LINE) == EXTI_LINE1)|| \
  240. ((LINE) == EXTI_LINE2) || ((LINE) == EXTI_LINE3) || \
  241. ((LINE) == EXTI_LINE4) || ((LINE) == EXTI_LINE5) || \
  242. ((LINE) == EXTI_LINE6) || ((LINE) == EXTI_LINE7) || \
  243. ((LINE) == EXTI_LINE8) || ((LINE) == EXTI_LINE9) || \
  244. ((LINE) == EXTI_LINE10) || ((LINE) == EXTI_LINE11) || \
  245. ((LINE) == EXTI_LINE12) || ((LINE) == EXTI_LINE13) || \
  246. ((LINE) == EXTI_LINE14) || ((LINE) == EXTI_LINE15) || \
  247. ((LINE) == EXTI_LINE16) || ((LINE) == EXTI_LINE17) || \
  248. ((LINE) == EXTI_LINE18) || ((LINE) == EXTI_LINE19) || \
  249. ((LINE) == EXTI_LINE20) || ((LINE) == EXTI_LINE21) || \
  250. ((LINE) == EXTI_LINE49) || ((LINE) == EXTI_LINE51) || \
  251. ((LINE) == EXTI_LINE85) || ((LINE) == EXTI_LINE86))
  252. #define IS_EXTI_ALL_LINE(LINE) (((LINE) == EXTI_LINE0) || ((LINE) == EXTI_LINE1) || \
  253. ((LINE) == EXTI_LINE2) || ((LINE) == EXTI_LINE3) || \
  254. ((LINE) == EXTI_LINE4) || ((LINE) == EXTI_LINE5) || \
  255. ((LINE) == EXTI_LINE6) || ((LINE) == EXTI_LINE7) || \
  256. ((LINE) == EXTI_LINE8) || ((LINE) == EXTI_LINE9) || \
  257. ((LINE) == EXTI_LINE10) || ((LINE) == EXTI_LINE11) || \
  258. ((LINE) == EXTI_LINE12) || ((LINE) == EXTI_LINE13) || \
  259. ((LINE) == EXTI_LINE14) || ((LINE) == EXTI_LINE15) || \
  260. ((LINE) == EXTI_LINE16) || ((LINE) == EXTI_LINE17) || \
  261. ((LINE) == EXTI_LINE18) || ((LINE) == EXTI_LINE19) || \
  262. ((LINE) == EXTI_LINE20) || ((LINE) == EXTI_LINE21) || \
  263. ((LINE) == EXTI_LINE22) || ((LINE) == EXTI_LINE23) || \
  264. ((LINE) == EXTI_LINE24) || ((LINE) == EXTI_LINE25) || \
  265. ((LINE) == EXTI_LINE26) || ((LINE) == EXTI_LINE27) || \
  266. ((LINE) == EXTI_LINE28) || ((LINE) == EXTI_LINE29) || \
  267. ((LINE) == EXTI_LINE30) || ((LINE) == EXTI_LINE31) || \
  268. ((LINE) == EXTI_LINE32) || ((LINE) == EXTI_LINE33) || \
  269. ((LINE) == EXTI_LINE34) || ((LINE) == EXTI_LINE35) || \
  270. ((LINE) == EXTI_LINE36) || ((LINE) == EXTI_LINE37) || \
  271. ((LINE) == EXTI_LINE38) || ((LINE) == EXTI_LINE39) || \
  272. ((LINE) == EXTI_LINE40) || ((LINE) == EXTI_LINE41) || \
  273. ((LINE) == EXTI_LINE42) || ((LINE) == EXTI_LINE43) || \
  274. ((LINE) == EXTI_LINE44) || \
  275. ((LINE) == EXTI_LINE47) || ((LINE) == EXTI_LINE48) || \
  276. ((LINE) == EXTI_LINE49) || ((LINE) == EXTI_LINE50) || \
  277. ((LINE) == EXTI_LINE51) || ((LINE) == EXTI_LINE52) || \
  278. ((LINE) == EXTI_LINE53) || ((LINE) == EXTI_LINE54) || \
  279. ((LINE) == EXTI_LINE55) || ((LINE) == EXTI_LINE56) || \
  280. ((LINE) == EXTI_LINE57) || ((LINE) == EXTI_LINE58) || \
  281. ((LINE) == EXTI_LINE59) || ((LINE) == EXTI_LINE60) || \
  282. ((LINE) == EXTI_LINE61) || ((LINE) == EXTI_LINE62) || \
  283. ((LINE) == EXTI_LINE63) || ((LINE) == EXTI_LINE64) || \
  284. ((LINE) == EXTI_LINE65) || ((LINE) == EXTI_LINE66) || \
  285. ((LINE) == EXTI_LINE67) || ((LINE) == EXTI_LINE68) || \
  286. ((LINE) == EXTI_LINE69) || ((LINE) == EXTI_LINE70) || \
  287. ((LINE) == EXTI_LINE71) || ((LINE) == EXTI_LINE72) || \
  288. ((LINE) == EXTI_LINE73) || ((LINE) == EXTI_LINE74) || \
  289. ((LINE) == EXTI_LINE75) || ((LINE) == EXTI_LINE76) || \
  290. ((LINE) == EXTI_LINE85) || \
  291. ((LINE) == EXTI_LINE86) || ((LINE) == EXTI_LINE87))
  292. #define IS_EXTI_D1_LINE(LINE) (((LINE) == EXTI_LINE0) || ((LINE) == EXTI_LINE1) || \
  293. ((LINE) == EXTI_LINE2) || ((LINE) == EXTI_LINE3) || \
  294. ((LINE) == EXTI_LINE4) || ((LINE) == EXTI_LINE5) || \
  295. ((LINE) == EXTI_LINE6) || ((LINE) == EXTI_LINE7) || \
  296. ((LINE) == EXTI_LINE8) || ((LINE) == EXTI_LINE9) || \
  297. ((LINE) == EXTI_LINE10) || ((LINE) == EXTI_LINE11) || \
  298. ((LINE) == EXTI_LINE12) || ((LINE) == EXTI_LINE13) || \
  299. ((LINE) == EXTI_LINE14) || ((LINE) == EXTI_LINE15) || \
  300. ((LINE) == EXTI_LINE16) || ((LINE) == EXTI_LINE17) || \
  301. ((LINE) == EXTI_LINE18) || ((LINE) == EXTI_LINE19) || \
  302. ((LINE) == EXTI_LINE20) || ((LINE) == EXTI_LINE21) || \
  303. ((LINE) == EXTI_LINE22) || ((LINE) == EXTI_LINE23) || \
  304. ((LINE) == EXTI_LINE24) || ((LINE) == EXTI_LINE25) || \
  305. ((LINE) == EXTI_LINE26) || ((LINE) == EXTI_LINE27) || \
  306. ((LINE) == EXTI_LINE28) || ((LINE) == EXTI_LINE29) || \
  307. ((LINE) == EXTI_LINE30) || ((LINE) == EXTI_LINE31) || \
  308. ((LINE) == EXTI_LINE32) || ((LINE) == EXTI_LINE33) || \
  309. ((LINE) == EXTI_LINE34) || ((LINE) == EXTI_LINE35) || \
  310. ((LINE) == EXTI_LINE36) || ((LINE) == EXTI_LINE37) || \
  311. ((LINE) == EXTI_LINE38) || ((LINE) == EXTI_LINE39) || \
  312. ((LINE) == EXTI_LINE40) || ((LINE) == EXTI_LINE41) || \
  313. ((LINE) == EXTI_LINE42) || ((LINE) == EXTI_LINE43) || \
  314. ((LINE) == EXTI_LINE44) || \
  315. ((LINE) == EXTI_LINE47) || ((LINE) == EXTI_LINE48) || \
  316. ((LINE) == EXTI_LINE49) || ((LINE) == EXTI_LINE50) || \
  317. ((LINE) == EXTI_LINE51) || ((LINE) == EXTI_LINE52) || \
  318. ((LINE) == EXTI_LINE53) || ((LINE) == EXTI_LINE54) || \
  319. ((LINE) == EXTI_LINE55) || ((LINE) == EXTI_LINE56) || \
  320. ((LINE) == EXTI_LINE57) || ((LINE) == EXTI_LINE58) || \
  321. ((LINE) == EXTI_LINE59) || ((LINE) == EXTI_LINE60) || \
  322. ((LINE) == EXTI_LINE61) || ((LINE) == EXTI_LINE62) || \
  323. ((LINE) == EXTI_LINE63) || ((LINE) == EXTI_LINE64) || \
  324. ((LINE) == EXTI_LINE65) || ((LINE) == EXTI_LINE66) || \
  325. ((LINE) == EXTI_LINE67) || ((LINE) == EXTI_LINE68) || \
  326. ((LINE) == EXTI_LINE69) || ((LINE) == EXTI_LINE70) || \
  327. ((LINE) == EXTI_LINE71) || ((LINE) == EXTI_LINE72) || \
  328. ((LINE) == EXTI_LINE73) || ((LINE) == EXTI_LINE74) || \
  329. ((LINE) == EXTI_LINE75) || ((LINE) == EXTI_LINE76) || \
  330. ((LINE) == EXTI_LINE85) || \
  331. ((LINE) == EXTI_LINE86) || ((LINE) == EXTI_LINE87))
  332. #define IS_EXTI_D3_LINE(LINE) (((LINE) == EXTI_LINE0) || ((LINE) == EXTI_LINE1) || \
  333. ((LINE) == EXTI_LINE2) || ((LINE) == EXTI_LINE3) || \
  334. ((LINE) == EXTI_LINE4) || ((LINE) == EXTI_LINE5) || \
  335. ((LINE) == EXTI_LINE6) || ((LINE) == EXTI_LINE7) || \
  336. ((LINE) == EXTI_LINE8) || ((LINE) == EXTI_LINE9) || \
  337. ((LINE) == EXTI_LINE10) || ((LINE) == EXTI_LINE11) || \
  338. ((LINE) == EXTI_LINE12) || ((LINE) == EXTI_LINE13) || \
  339. ((LINE) == EXTI_LINE14) || ((LINE) == EXTI_LINE15) || \
  340. ((LINE) == EXTI_LINE19) || ((LINE) == EXTI_LINE20) || \
  341. ((LINE) == EXTI_LINE21) || ((LINE) == EXTI_LINE25) || \
  342. ((LINE) == EXTI_LINE34) || ((LINE) == EXTI_LINE35) || \
  343. ((LINE) == EXTI_LINE41) || ((LINE) == EXTI_LINE48) || \
  344. ((LINE) == EXTI_LINE49) || ((LINE) == EXTI_LINE50) || \
  345. ((LINE) == EXTI_LINE51) || ((LINE) == EXTI_LINE52) || \
  346. ((LINE) == EXTI_LINE53))
  347. #define BDMA_CH6_CLEAR ((uint32_t)0x00000000) /*!< BDMA ch6 event selected as D3 domain pendclear source*/
  348. #define BDMA_CH7_CLEAR ((uint32_t)0x00000001) /*!< BDMA ch7 event selected as D3 domain pendclear source*/
  349. #define LPTIM4_OUT_CLEAR ((uint32_t)0x00000002) /*!< LPTIM4 out selected as D3 domain pendclear source*/
  350. #define LPTIM5_OUT_CLEAR ((uint32_t)0x00000003) /*!< LPTIM5 out selected as D3 domain pendclear source*/
  351. #define IS_EXTI_D3_CLEAR(SOURCE) (((SOURCE) == BDMA_CH6_CLEAR) || ((SOURCE) == BDMA_CH7_CLEAR) || \
  352. ((SOURCE) == LPTIM4_OUT_CLEAR) || ((SOURCE) == LPTIM5_OUT_CLEAR))
  353. /**
  354. * @}
  355. */
  356. /** @defgroup FMC_SwapBankMapping_Config SwapBankMapping Config
  357. * @{
  358. */
  359. #define FMC_SWAPBMAP_DISABLE (0x00000000U)
  360. #define FMC_SWAPBMAP_SDRAM_SRAM FMC_BCR1_BMAP_0
  361. #define FMC_SWAPBMAP_SDRAMB2 FMC_BCR1_BMAP_1
  362. #define IS_FMC_SWAPBMAP_MODE(__MODE__) (((__MODE__) == FMC_SWAPBMAP_DISABLE) || \
  363. ((__MODE__) == FMC_SWAPBMAP_SDRAM_SRAM) || \
  364. ((__MODE__) == FMC_SWAPBMAP_SDRAMB2))
  365. /**
  366. * @}
  367. */
  368. /* Exported macro ------------------------------------------------------------*/
  369. /** @brief Freeze/Unfreeze Peripherals in Debug mode
  370. */
  371. #define __HAL_DBGMCU_FREEZE_WWDG1() (DBGMCU->APB3FZ1 |= (DBGMCU_APB3FZ1_DBG_WWDG1))
  372. #define __HAL_DBGMCU_FREEZE_TIM2() (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_TIM2))
  373. #define __HAL_DBGMCU_FREEZE_TIM3() (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_TIM3))
  374. #define __HAL_DBGMCU_FREEZE_TIM4() (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_TIM4))
  375. #define __HAL_DBGMCU_FREEZE_TIM5() (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_TIM5))
  376. #define __HAL_DBGMCU_FREEZE_TIM6() (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_TIM6))
  377. #define __HAL_DBGMCU_FREEZE_TIM7() (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_TIM7))
  378. #define __HAL_DBGMCU_FREEZE_TIM12() (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_TIM12))
  379. #define __HAL_DBGMCU_FREEZE_TIM13() (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_TIM13))
  380. #define __HAL_DBGMCU_FREEZE_TIM14() (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_TIM14))
  381. #define __HAL_DBGMCU_FREEZE_LPTIM1() (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_LPTIM1))
  382. #define __HAL_DBGMCU_FREEZE_I2C1() (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_I2C1))
  383. #define __HAL_DBGMCU_FREEZE_I2C2() (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_I2C2))
  384. #define __HAL_DBGMCU_FREEZE_I2C3() (DBGMCU->APB1LFZ1 |= (DBGMCU_APB1LFZ1_DBG_I2C3))
  385. #define __HAL_DBGMCU_FREEZE_FDCAN() (DBGMCU->APB1HFZ1 |= (DBGMCU_APB1HFZ1_DBG_FDCAN))
  386. #define __HAL_DBGMCU_FREEZE_TIM1() (DBGMCU->APB2FZ1 |= (DBGMCU_APB2FZ1_DBG_TIM1))
  387. #define __HAL_DBGMCU_FREEZE_TIM8() (DBGMCU->APB2FZ1 |= (DBGMCU_APB2FZ1_DBG_TIM8))
  388. #define __HAL_DBGMCU_FREEZE_TIM15() (DBGMCU->APB2FZ1 |= (DBGMCU_APB2FZ1_DBG_TIM15))
  389. #define __HAL_DBGMCU_FREEZE_TIM16() (DBGMCU->APB2FZ1 |= (DBGMCU_APB2FZ1_DBG_TIM16))
  390. #define __HAL_DBGMCU_FREEZE_TIM17() (DBGMCU->APB2FZ1 |= (DBGMCU_APB2FZ1_DBG_TIM17))
  391. #define __HAL_DBGMCU_FREEZE_HRTIM() (DBGMCU->APB2FZ1 |= (DBGMCU_APB2FZ1_DBG_HRTIM))
  392. #define __HAL_DBGMCU_FREEZE_I2C4() (DBGMCU->APB4FZ1 |= (DBGMCU_APB4FZ1_DBG_I2C4))
  393. #define __HAL_DBGMCU_FREEZE_LPTIM2() (DBGMCU->APB4FZ1 |= (DBGMCU_APB4FZ1_DBG_LPTIM2))
  394. #define __HAL_DBGMCU_FREEZE_LPTIM3() (DBGMCU->APB4FZ1 |= (DBGMCU_APB4FZ1_DBG_LPTIM3))
  395. #define __HAL_DBGMCU_FREEZE_LPTIM4() (DBGMCU->APB4FZ1 |= (DBGMCU_APB4FZ1_DBG_LPTIM4))
  396. #define __HAL_DBGMCU_FREEZE_LPTIM5() (DBGMCU->APB4FZ1 |= (DBGMCU_APB4FZ1_DBG_LPTIM5))
  397. #define __HAL_DBGMCU_FREEZE_RTC() (DBGMCU->APB4FZ1 |= (DBGMCU_APB4FZ1_DBG_RTC))
  398. #define __HAL_DBGMCU_FREEZE_IWDG1() (DBGMCU->APB4FZ1 |= (DBGMCU_APB4FZ1_DBG_IWDG1))
  399. #define __HAL_DBGMCU_UnFreeze_WWDG1() (DBGMCU->APB3FZ1 &= ~ (DBGMCU_APB3FZ1_DBG_WWDG1))
  400. #define __HAL_DBGMCU_UnFreeze_TIM2() (DBGMCU->APB1LFZ1 &= ~ (DBGMCU_APB1LFZ1_DBG_TIM2))
  401. #define __HAL_DBGMCU_UnFreeze_TIM3() (DBGMCU->APB1LFZ1 &= ~ (DBGMCU_APB1LFZ1_DBG_TIM3))
  402. #define __HAL_DBGMCU_UnFreeze_TIM4() (DBGMCU->APB1LFZ1 &= ~ (DBGMCU_APB1LFZ1_DBG_TIM4))
  403. #define __HAL_DBGMCU_UnFreeze_TIM5() (DBGMCU->APB1LFZ1 &= ~ (DBGMCU_APB1LFZ1_DBG_TIM5))
  404. #define __HAL_DBGMCU_UnFreeze_TIM6() (DBGMCU->APB1LFZ1 &= ~ (DBGMCU_APB1LFZ1_DBG_TIM6))
  405. #define __HAL_DBGMCU_UnFreeze_TIM7() (DBGMCU->APB1LFZ1 &= ~ (DBGMCU_APB1LFZ1_DBG_TIM7))
  406. #define __HAL_DBGMCU_UnFreeze_TIM12() (DBGMCU->APB1LFZ1 &= ~ (DBGMCU_APB1LFZ1_DBG_TIM12))
  407. #define __HAL_DBGMCU_UnFreeze_TIM13() (DBGMCU->APB1LFZ1 &= ~ (DBGMCU_APB1LFZ1_DBG_TIM13))
  408. #define __HAL_DBGMCU_UnFreeze_TIM14() (DBGMCU->APB1LFZ1 &= ~ (DBGMCU_APB1LFZ1_DBG_TIM14))
  409. #define __HAL_DBGMCU_UnFreeze_LPTIM1() (DBGMCU->APB1LFZ1 &= ~ (DBGMCU_APB1LFZ1_DBG_LPTIM1))
  410. #define __HAL_DBGMCU_UnFreeze_I2C1() (DBGMCU->APB1LFZ1 &= ~ (DBGMCU_APB1LFZ1_DBG_I2C1))
  411. #define __HAL_DBGMCU_UnFreeze_I2C2() (DBGMCU->APB1LFZ1 &= ~ (DBGMCU_APB1LFZ1_DBG_I2C2))
  412. #define __HAL_DBGMCU_UnFreeze_I2C3() (DBGMCU->APB1LFZ1 &= ~ (DBGMCU_APB1LFZ1_DBG_I2C3))
  413. #define __HAL_DBGMCU_UnFreeze_FDCAN() (DBGMCU->APB1HFZ1 &= ~ (DBGMCU_APB1HFZ1_DBG_FDCAN))
  414. #define __HAL_DBGMCU_UnFreeze_TIM1() (DBGMCU->APB2FZ1 &= ~ (DBGMCU_APB2FZ1_DBG_TIM1))
  415. #define __HAL_DBGMCU_UnFreeze_TIM8() (DBGMCU->APB2FZ1 &= ~ (DBGMCU_APB2FZ1_DBG_TIM8))
  416. #define __HAL_DBGMCU_UnFreeze_TIM15() (DBGMCU->APB2FZ1 &= ~ (DBGMCU_APB2FZ1_DBG_TIM15))
  417. #define __HAL_DBGMCU_UnFreeze_TIM16() (DBGMCU->APB2FZ1 &= ~ (DBGMCU_APB2FZ1_DBG_TIM16))
  418. #define __HAL_DBGMCU_UnFreeze_TIM17() (DBGMCU->APB2FZ1 &= ~ (DBGMCU_APB2FZ1_DBG_TIM17))
  419. #define __HAL_DBGMCU_UnFreeze_HRTIM() (DBGMCU->APB2FZ1 &= ~ (DBGMCU_APB2FZ1_DBG_HRTIM))
  420. #define __HAL_DBGMCU_UnFreeze_I2C4() (DBGMCU->APB4FZ1 &= ~ (DBGMCU_APB4FZ1_DBG_I2C4))
  421. #define __HAL_DBGMCU_UnFreeze_LPTIM2() (DBGMCU->APB4FZ1 &= ~ (DBGMCU_APB4FZ1_DBG_LPTIM2))
  422. #define __HAL_DBGMCU_UnFreeze_LPTIM3() (DBGMCU->APB4FZ1 &= ~ (DBGMCU_APB4FZ1_DBG_LPTIM3))
  423. #define __HAL_DBGMCU_UnFreeze_LPTIM4() (DBGMCU->APB4FZ1 &= ~ (DBGMCU_APB4FZ1_DBG_LPTIM4))
  424. #define __HAL_DBGMCU_UnFreeze_LPTIM5() (DBGMCU->APB4FZ1 &= ~ (DBGMCU_APB4FZ1_DBG_LPTIM5))
  425. #define __HAL_DBGMCU_UnFreeze_RTC() (DBGMCU->APB4FZ1 &= ~ (DBGMCU_APB4FZ1_DBG_RTC))
  426. #define __HAL_DBGMCU_UnFreeze_IWDG1() (DBGMCU->APB4FZ1 &= ~ (DBGMCU_APB4FZ1_DBG_IWDG1))
  427. /* Exported functions --------------------------------------------------------*/
  428. /* Initialization and de-initialization functions ******************************/
  429. HAL_StatusTypeDef HAL_Init(void);
  430. HAL_StatusTypeDef HAL_DeInit(void);
  431. void HAL_MspInit(void);
  432. void HAL_MspDeInit(void);
  433. HAL_StatusTypeDef HAL_InitTick (uint32_t TickPriority);
  434. /* Peripheral Control functions ************************************************/
  435. void HAL_IncTick(void);
  436. void HAL_Delay(__IO uint32_t Delay);
  437. uint32_t HAL_GetTick(void);
  438. void HAL_SuspendTick(void);
  439. void HAL_ResumeTick(void);
  440. uint32_t HAL_GetHalVersion(void);
  441. uint32_t HAL_GetREVID(void);
  442. uint32_t HAL_GetDEVID(void);
  443. void HAL_SYSCFG_ETHInterfaceSelect(uint32_t SYSCFG_ETHInterface);
  444. void HAL_SYSCFG_AnalogSwitchConfig(uint32_t SYSCFG_AnalogSwitch , uint32_t SYSCFG_SwitchState );
  445. void HAL_SYSCFG_EnableBOOST(void);
  446. void HAL_SYSCFG_DisableBOOST(void);
  447. void HAL_SYSCFG_CM7BootAddConfig(uint32_t BootRegister, uint32_t BootAddress);
  448. void HAL_EnableCompensationCell(void);
  449. void HAL_DisableCompensationCell(void);
  450. void HAL_SYSCFG_EnableIOSpeedOptimize(void);
  451. void HAL_SYSCFG_DisableIOSpeedOptimize(void);
  452. void HAL_SYSCFG_CompensationCodeSelect(uint32_t SYSCFG_CompCode);
  453. void HAL_SYSCFG_CompensationCodeConfig(uint32_t SYSCFG_PMOSCode, uint32_t SYSCFG_NMOSCode);
  454. void HAL_EnableDBGSleepMode(void);
  455. void HAL_DisableDBGSleepMode(void);
  456. void HAL_EnableDBGStopMode(void);
  457. void HAL_DisableDBGStopMode(void);
  458. void HAL_EnableDBGStandbyMode(void);
  459. void HAL_DisableDBGStandbyMode(void);
  460. void HAL_EnableDomain3DBGStopMode(void);
  461. void HAL_DisableDomain3DBGStopMode(void);
  462. void HAL_EnableDomain3DBGStandbyMode(void);
  463. void HAL_DisableDomain3DBGStandbyMode(void);
  464. void HAL_EXTI_EdgeConfig(uint32_t EXTI_Line , uint32_t EXTI_Edge );
  465. void HAL_EXTI_GenerateSWInterrupt(uint32_t EXTI_Line);
  466. void HAL_EXTI_D1_ClearFlag(uint32_t EXTI_Line);
  467. void HAL_EXTI_D1_EventInputConfig(uint32_t EXTI_Line , uint32_t EXTI_Mode, uint32_t EXTI_LineCmd);
  468. void HAL_EXTI_D3_EventInputConfig(uint32_t EXTI_Line, uint32_t EXTI_LineCmd , uint32_t EXTI_ClearSrc);
  469. void HAL_SetFMCMemorySwappingConfig(uint32_t BankMapConfig);
  470. uint32_t HAL_GetFMCMemorySwappingConfig(void);
  471. void HAL_SYSCFG_VREFBUF_VoltageScalingConfig(uint32_t VoltageScaling);
  472. void HAL_SYSCFG_VREFBUF_HighImpedanceConfig(uint32_t Mode);
  473. void HAL_SYSCFG_VREFBUF_TrimmingConfig(uint32_t TrimmingValue);
  474. HAL_StatusTypeDef HAL_SYSCFG_EnableVREFBUF(void);
  475. void HAL_SYSCFG_DisableVREFBUF(void);
  476. /**
  477. * @}
  478. */
  479. /**
  480. * @}
  481. */
  482. #ifdef __cplusplus
  483. }
  484. #endif
  485. #endif /* __STM32H7xx_HAL_H */
  486. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/