You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

570 lines
26 KiB

  1. /**
  2. ******************************************************************************
  3. * @file stm32l4xx_hal.h
  4. * @author MCD Application Team
  5. * @version V1.3.0
  6. * @date 29-January-2016
  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) 2016 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 __STM32L4xx_HAL_H
  40. #define __STM32L4xx_HAL_H
  41. #ifdef __cplusplus
  42. extern "C" {
  43. #endif
  44. /* Includes ------------------------------------------------------------------*/
  45. #include "stm32l4xx_hal_conf.h"
  46. /** @addtogroup STM32L4xx_HAL_Driver
  47. * @{
  48. */
  49. /** @addtogroup HAL
  50. * @{
  51. */
  52. /* Exported types ------------------------------------------------------------*/
  53. /* Exported constants --------------------------------------------------------*/
  54. /** @defgroup SYSCFG_Exported_Constants SYSCFG Exported Constants
  55. * @{
  56. */
  57. /** @defgroup SYSCFG_BootMode Boot Mode
  58. * @{
  59. */
  60. #define SYSCFG_BOOT_MAINFLASH ((uint32_t)0x00000000)
  61. #define SYSCFG_BOOT_SYSTEMFLASH SYSCFG_MEMRMP_MEM_MODE_0
  62. #define SYSCFG_BOOT_FMC SYSCFG_MEMRMP_MEM_MODE_1
  63. #define SYSCFG_BOOT_SRAM (SYSCFG_MEMRMP_MEM_MODE_1 | SYSCFG_MEMRMP_MEM_MODE_0)
  64. #define SYSCFG_BOOT_QUADSPI (SYSCFG_MEMRMP_MEM_MODE_2 | SYSCFG_MEMRMP_MEM_MODE_1)
  65. /**
  66. * @}
  67. */
  68. /** @defgroup SYSCFG_FPU_Interrupts FPU Interrupts
  69. * @{
  70. */
  71. #define SYSCFG_IT_FPU_IOC SYSCFG_CFGR1_FPU_IE_0 /*!< Floating Point Unit Invalid operation Interrupt */
  72. #define SYSCFG_IT_FPU_DZC SYSCFG_CFGR1_FPU_IE_1 /*!< Floating Point Unit Divide-by-zero Interrupt */
  73. #define SYSCFG_IT_FPU_UFC SYSCFG_CFGR1_FPU_IE_2 /*!< Floating Point Unit Underflow Interrupt */
  74. #define SYSCFG_IT_FPU_OFC SYSCFG_CFGR1_FPU_IE_3 /*!< Floating Point Unit Overflow Interrupt */
  75. #define SYSCFG_IT_FPU_IDC SYSCFG_CFGR1_FPU_IE_4 /*!< Floating Point Unit Input denormal Interrupt */
  76. #define SYSCFG_IT_FPU_IXC SYSCFG_CFGR1_FPU_IE_5 /*!< Floating Point Unit Inexact Interrupt */
  77. /**
  78. * @}
  79. */
  80. /** @defgroup SYSCFG_SRAM2WRP SRAM2 Write protection
  81. * @{
  82. */
  83. #define SYSCFG_SRAM2WRP_PAGE0 SYSCFG_SWPR_PAGE0 /*!< SRAM2 Write protection page 0 */
  84. #define SYSCFG_SRAM2WRP_PAGE1 SYSCFG_SWPR_PAGE1 /*!< SRAM2 Write protection page 1 */
  85. #define SYSCFG_SRAM2WRP_PAGE2 SYSCFG_SWPR_PAGE2 /*!< SRAM2 Write protection page 2 */
  86. #define SYSCFG_SRAM2WRP_PAGE3 SYSCFG_SWPR_PAGE3 /*!< SRAM2 Write protection page 3 */
  87. #define SYSCFG_SRAM2WRP_PAGE4 SYSCFG_SWPR_PAGE4 /*!< SRAM2 Write protection page 4 */
  88. #define SYSCFG_SRAM2WRP_PAGE5 SYSCFG_SWPR_PAGE5 /*!< SRAM2 Write protection page 5 */
  89. #define SYSCFG_SRAM2WRP_PAGE6 SYSCFG_SWPR_PAGE6 /*!< SRAM2 Write protection page 6 */
  90. #define SYSCFG_SRAM2WRP_PAGE7 SYSCFG_SWPR_PAGE7 /*!< SRAM2 Write protection page 7 */
  91. #define SYSCFG_SRAM2WRP_PAGE8 SYSCFG_SWPR_PAGE8 /*!< SRAM2 Write protection page 8 */
  92. #define SYSCFG_SRAM2WRP_PAGE9 SYSCFG_SWPR_PAGE9 /*!< SRAM2 Write protection page 9 */
  93. #define SYSCFG_SRAM2WRP_PAGE10 SYSCFG_SWPR_PAGE10 /*!< SRAM2 Write protection page 10 */
  94. #define SYSCFG_SRAM2WRP_PAGE11 SYSCFG_SWPR_PAGE11 /*!< SRAM2 Write protection page 11 */
  95. #define SYSCFG_SRAM2WRP_PAGE12 SYSCFG_SWPR_PAGE12 /*!< SRAM2 Write protection page 12 */
  96. #define SYSCFG_SRAM2WRP_PAGE13 SYSCFG_SWPR_PAGE13 /*!< SRAM2 Write protection page 13 */
  97. #define SYSCFG_SRAM2WRP_PAGE14 SYSCFG_SWPR_PAGE14 /*!< SRAM2 Write protection page 14 */
  98. #define SYSCFG_SRAM2WRP_PAGE15 SYSCFG_SWPR_PAGE15 /*!< SRAM2 Write protection page 15 */
  99. #define SYSCFG_SRAM2WRP_PAGE16 SYSCFG_SWPR_PAGE16 /*!< SRAM2 Write protection page 16 */
  100. #define SYSCFG_SRAM2WRP_PAGE17 SYSCFG_SWPR_PAGE17 /*!< SRAM2 Write protection page 17 */
  101. #define SYSCFG_SRAM2WRP_PAGE18 SYSCFG_SWPR_PAGE18 /*!< SRAM2 Write protection page 18 */
  102. #define SYSCFG_SRAM2WRP_PAGE19 SYSCFG_SWPR_PAGE19 /*!< SRAM2 Write protection page 19 */
  103. #define SYSCFG_SRAM2WRP_PAGE20 SYSCFG_SWPR_PAGE20 /*!< SRAM2 Write protection page 20 */
  104. #define SYSCFG_SRAM2WRP_PAGE21 SYSCFG_SWPR_PAGE21 /*!< SRAM2 Write protection page 21 */
  105. #define SYSCFG_SRAM2WRP_PAGE22 SYSCFG_SWPR_PAGE22 /*!< SRAM2 Write protection page 22 */
  106. #define SYSCFG_SRAM2WRP_PAGE23 SYSCFG_SWPR_PAGE23 /*!< SRAM2 Write protection page 23 */
  107. #define SYSCFG_SRAM2WRP_PAGE24 SYSCFG_SWPR_PAGE24 /*!< SRAM2 Write protection page 24 */
  108. #define SYSCFG_SRAM2WRP_PAGE25 SYSCFG_SWPR_PAGE25 /*!< SRAM2 Write protection page 25 */
  109. #define SYSCFG_SRAM2WRP_PAGE26 SYSCFG_SWPR_PAGE26 /*!< SRAM2 Write protection page 26 */
  110. #define SYSCFG_SRAM2WRP_PAGE27 SYSCFG_SWPR_PAGE27 /*!< SRAM2 Write protection page 27 */
  111. #define SYSCFG_SRAM2WRP_PAGE28 SYSCFG_SWPR_PAGE28 /*!< SRAM2 Write protection page 28 */
  112. #define SYSCFG_SRAM2WRP_PAGE29 SYSCFG_SWPR_PAGE29 /*!< SRAM2 Write protection page 29 */
  113. #define SYSCFG_SRAM2WRP_PAGE30 SYSCFG_SWPR_PAGE30 /*!< SRAM2 Write protection page 30 */
  114. #define SYSCFG_SRAM2WRP_PAGE31 SYSCFG_SWPR_PAGE31 /*!< SRAM2 Write protection page 31 */
  115. /**
  116. * @}
  117. */
  118. #if defined(VREFBUF)
  119. /** @defgroup SYSCFG_VREFBUF_VoltageScale VREFBUF Voltage Scale
  120. * @{
  121. */
  122. #define SYSCFG_VREFBUF_VOLTAGE_SCALE0 ((uint32_t)0x00000000) /*!< Voltage reference scale 0 (VREF_OUT1) */
  123. #define SYSCFG_VREFBUF_VOLTAGE_SCALE1 VREFBUF_CSR_VRS /*!< Voltage reference scale 1 (VREF_OUT2) */
  124. /**
  125. * @}
  126. */
  127. /** @defgroup SYSCFG_VREFBUF_HighImpedance VREFBUF High Impedance
  128. * @{
  129. */
  130. #define SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE ((uint32_t)0x00000000) /*!< VREF_plus pin is internally connected to Voltage reference buffer output */
  131. #define SYSCFG_VREFBUF_HIGH_IMPEDANCE_ENABLE VREFBUF_CSR_HIZ /*!< VREF_plus pin is high impedance */
  132. /**
  133. * @}
  134. */
  135. #endif /* VREFBUF */
  136. /** @defgroup SYSCFG_flags_definition Flags
  137. * @{
  138. */
  139. #define SYSCFG_FLAG_SRAM2_PE SYSCFG_CFGR2_SPF /*!< SRAM2 parity error */
  140. #define SYSCFG_FLAG_SRAM2_BUSY SYSCFG_SCSR_SRAM2BSY /*!< SRAM2 busy by erase operation */
  141. /**
  142. * @}
  143. */
  144. /** @defgroup SYSCFG_FastModePlus_GPIO Fast-mode Plus on GPIO
  145. * @{
  146. */
  147. /** @brief Fast-mode Plus driving capability on a specific GPIO
  148. */
  149. #define SYSCFG_FASTMODEPLUS_PB6 SYSCFG_CFGR1_I2C_PB6_FMP /*!< Enable Fast-mode Plus on PB6 */
  150. #define SYSCFG_FASTMODEPLUS_PB7 SYSCFG_CFGR1_I2C_PB7_FMP /*!< Enable Fast-mode Plus on PB7 */
  151. #if defined(SYSCFG_CFGR1_I2C_PB8_FMP)
  152. #define SYSCFG_FASTMODEPLUS_PB8 SYSCFG_CFGR1_I2C_PB8_FMP /*!< Enable Fast-mode Plus on PB8 */
  153. #endif /* SYSCFG_CFGR1_I2C_PB8_FMP */
  154. #if defined(SYSCFG_CFGR1_I2C_PB9_FMP)
  155. #define SYSCFG_FASTMODEPLUS_PB9 SYSCFG_CFGR1_I2C_PB9_FMP /*!< Enable Fast-mode Plus on PB9 */
  156. #endif /* SYSCFG_CFGR1_I2C_PB9_FMP */
  157. /**
  158. * @}
  159. */
  160. /**
  161. * @}
  162. */
  163. /* Exported macros -----------------------------------------------------------*/
  164. /** @defgroup DBGMCU_Exported_Macros DBGMCU Exported Macros
  165. * @{
  166. */
  167. /** @brief Freeze/Unfreeze Peripherals in Debug mode
  168. */
  169. #if defined(DBGMCU_APB1FZR1_DBG_TIM2_STOP)
  170. #define __HAL_DBGMCU_FREEZE_TIM2() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM2_STOP)
  171. #define __HAL_DBGMCU_UNFREEZE_TIM2() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM2_STOP)
  172. #endif
  173. #if defined(DBGMCU_APB1FZR1_DBG_TIM3_STOP)
  174. #define __HAL_DBGMCU_FREEZE_TIM3() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM3_STOP)
  175. #define __HAL_DBGMCU_UNFREEZE_TIM3() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM3_STOP)
  176. #endif
  177. #if defined(DBGMCU_APB1FZR1_DBG_TIM4_STOP)
  178. #define __HAL_DBGMCU_FREEZE_TIM4() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM4_STOP)
  179. #define __HAL_DBGMCU_UNFREEZE_TIM4() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM4_STOP)
  180. #endif
  181. #if defined(DBGMCU_APB1FZR1_DBG_TIM5_STOP)
  182. #define __HAL_DBGMCU_FREEZE_TIM5() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM5_STOP)
  183. #define __HAL_DBGMCU_UNFREEZE_TIM5() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM5_STOP)
  184. #endif
  185. #if defined(DBGMCU_APB1FZR1_DBG_TIM6_STOP)
  186. #define __HAL_DBGMCU_FREEZE_TIM6() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM6_STOP)
  187. #define __HAL_DBGMCU_UNFREEZE_TIM6() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM6_STOP)
  188. #endif
  189. #if defined(DBGMCU_APB1FZR1_DBG_TIM7_STOP)
  190. #define __HAL_DBGMCU_FREEZE_TIM7() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM7_STOP)
  191. #define __HAL_DBGMCU_UNFREEZE_TIM7() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_TIM7_STOP)
  192. #endif
  193. #if defined(DBGMCU_APB1FZR1_DBG_RTC_STOP)
  194. #define __HAL_DBGMCU_FREEZE_RTC() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_RTC_STOP)
  195. #define __HAL_DBGMCU_UNFREEZE_RTC() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_RTC_STOP)
  196. #endif
  197. #if defined(DBGMCU_APB1FZR1_DBG_WWDG_STOP)
  198. #define __HAL_DBGMCU_FREEZE_WWDG() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_WWDG_STOP)
  199. #define __HAL_DBGMCU_UNFREEZE_WWDG() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_WWDG_STOP)
  200. #endif
  201. #if defined(DBGMCU_APB1FZR1_DBG_IWDG_STOP)
  202. #define __HAL_DBGMCU_FREEZE_IWDG() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_IWDG_STOP)
  203. #define __HAL_DBGMCU_UNFREEZE_IWDG() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_IWDG_STOP)
  204. #endif
  205. #if defined(DBGMCU_APB1FZR1_DBG_I2C1_STOP)
  206. #define __HAL_DBGMCU_FREEZE_I2C1_TIMEOUT() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_I2C1_STOP)
  207. #define __HAL_DBGMCU_UNFREEZE_I2C1_TIMEOUT() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_I2C1_STOP)
  208. #endif
  209. #if defined(DBGMCU_APB1FZR1_DBG_I2C2_STOP)
  210. #define __HAL_DBGMCU_FREEZE_I2C2_TIMEOUT() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_I2C2_STOP)
  211. #define __HAL_DBGMCU_UNFREEZE_I2C2_TIMEOUT() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_I2C2_STOP)
  212. #endif
  213. #if defined(DBGMCU_APB1FZR1_DBG_I2C3_STOP)
  214. #define __HAL_DBGMCU_FREEZE_I2C3_TIMEOUT() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_I2C3_STOP)
  215. #define __HAL_DBGMCU_UNFREEZE_I2C3_TIMEOUT() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_I2C3_STOP)
  216. #endif
  217. #if defined(DBGMCU_APB1FZR1_DBG_CAN_STOP)
  218. #define __HAL_DBGMCU_FREEZE_CAN1() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_CAN_STOP)
  219. #define __HAL_DBGMCU_UNFREEZE_CAN1() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_CAN_STOP)
  220. #endif
  221. #if defined(DBGMCU_APB1FZR1_DBG_LPTIM1_STOP)
  222. #define __HAL_DBGMCU_FREEZE_LPTIM1() SET_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_LPTIM1_STOP)
  223. #define __HAL_DBGMCU_UNFREEZE_LPTIM1() CLEAR_BIT(DBGMCU->APB1FZR1, DBGMCU_APB1FZR1_DBG_LPTIM1_STOP)
  224. #endif
  225. #if defined(DBGMCU_APB1FZR2_DBG_LPTIM2_STOP)
  226. #define __HAL_DBGMCU_FREEZE_LPTIM2() SET_BIT(DBGMCU->APB1FZR2, DBGMCU_APB1FZR2_DBG_LPTIM2_STOP)
  227. #define __HAL_DBGMCU_UNFREEZE_LPTIM2() CLEAR_BIT(DBGMCU->APB1FZR2, DBGMCU_APB1FZR2_DBG_LPTIM2_STOP)
  228. #endif
  229. #if defined(DBGMCU_APB2FZ_DBG_TIM1_STOP)
  230. #define __HAL_DBGMCU_FREEZE_TIM1() SET_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_TIM1_STOP)
  231. #define __HAL_DBGMCU_UNFREEZE_TIM1() CLEAR_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_TIM1_STOP)
  232. #endif
  233. #if defined(DBGMCU_APB2FZ_DBG_TIM8_STOP)
  234. #define __HAL_DBGMCU_FREEZE_TIM8() SET_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_TIM8_STOP)
  235. #define __HAL_DBGMCU_UNFREEZE_TIM8() CLEAR_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_TIM8_STOP)
  236. #endif
  237. #if defined(DBGMCU_APB2FZ_DBG_TIM15_STOP)
  238. #define __HAL_DBGMCU_FREEZE_TIM15() SET_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_TIM15_STOP)
  239. #define __HAL_DBGMCU_UNFREEZE_TIM15() CLEAR_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_TIM15_STOP)
  240. #endif
  241. #if defined(DBGMCU_APB2FZ_DBG_TIM16_STOP)
  242. #define __HAL_DBGMCU_FREEZE_TIM16() SET_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_TIM16_STOP)
  243. #define __HAL_DBGMCU_UNFREEZE_TIM16() CLEAR_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_TIM16_STOP)
  244. #endif
  245. #if defined(DBGMCU_APB2FZ_DBG_TIM17_STOP)
  246. #define __HAL_DBGMCU_FREEZE_TIM17() SET_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_TIM17_STOP)
  247. #define __HAL_DBGMCU_UNFREEZE_TIM17() CLEAR_BIT(DBGMCU->APB2FZ, DBGMCU_APB2FZ_DBG_TIM17_STOP)
  248. #endif
  249. /**
  250. * @}
  251. */
  252. /** @defgroup SYSCFG_Exported_Macros SYSCFG Exported Macros
  253. * @{
  254. */
  255. /** @brief Main Flash memory mapped at 0x00000000.
  256. */
  257. #define __HAL_SYSCFG_REMAPMEMORY_FLASH() CLEAR_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_MODE)
  258. /** @brief System Flash memory mapped at 0x00000000.
  259. */
  260. #define __HAL_SYSCFG_REMAPMEMORY_SYSTEMFLASH() MODIFY_REG(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_MODE, SYSCFG_MEMRMP_MEM_MODE_0)
  261. /** @brief Embedded SRAM mapped at 0x00000000.
  262. */
  263. #define __HAL_SYSCFG_REMAPMEMORY_SRAM() MODIFY_REG(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_MODE, (SYSCFG_MEMRMP_MEM_MODE_1|SYSCFG_MEMRMP_MEM_MODE_0))
  264. /** @brief FMC Bank1 (NOR/PSRAM 1 and 2) mapped at 0x00000000.
  265. */
  266. #define __HAL_SYSCFG_REMAPMEMORY_FMC() MODIFY_REG(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_MODE, SYSCFG_MEMRMP_MEM_MODE_1)
  267. /** @brief QUADSPI mapped at 0x00000000.
  268. */
  269. #define __HAL_SYSCFG_REMAPMEMORY_QUADSPI() MODIFY_REG(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_MODE, (SYSCFG_MEMRMP_MEM_MODE_2|SYSCFG_MEMRMP_MEM_MODE_1))
  270. /**
  271. * @brief Return the boot mode as configured by user.
  272. * @retval The boot mode as configured by user. The returned value can be one
  273. * of the following values:
  274. * @arg @ref SYSCFG_BOOT_MAINFLASH
  275. * @arg @ref SYSCFG_BOOT_SYSTEMFLASH
  276. * @arg @ref SYSCFG_BOOT_FMC
  277. * @arg @ref SYSCFG_BOOT_SRAM
  278. * @arg @ref SYSCFG_BOOT_QUADSPI
  279. */
  280. #define __HAL_SYSCFG_GET_BOOT_MODE() READ_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_MODE)
  281. /** @brief SRAM2 page write protection enable macro
  282. * @param __SRAM2WRP__: This parameter can be a value of @ref SYSCFG_SRAM2WRP
  283. * @note write protection can only be disabled by a system reset
  284. */
  285. #define __HAL_SYSCFG_SRAM2_WRP_ENABLE(__SRAM2WRP__) do {assert_param(IS_SYSCFG_SRAM2WRP_PAGE((__SRAM2WRP__)));\
  286. SET_BIT(SYSCFG->SWPR, (__SRAM2WRP__));\
  287. }while(0)
  288. /** @brief SRAM2 page write protection unlock prior to erase
  289. * @note Writing a wrong key reactivates the write protection
  290. */
  291. #define __HAL_SYSCFG_SRAM2_WRP_UNLOCK() do {SYSCFG->SKR = 0xCA;\
  292. SYSCFG->SKR = 0x53;\
  293. }while(0)
  294. /** @brief SRAM2 erase
  295. * @note __SYSCFG_GET_FLAG(SYSCFG_FLAG_SRAM2_BUSY) may be used to check end of erase
  296. */
  297. #define __HAL_SYSCFG_SRAM2_ERASE() SET_BIT(SYSCFG->SCSR, SYSCFG_SCSR_SRAM2ER)
  298. /** @brief Floating Point Unit interrupt enable/disable macros
  299. * @param __INTERRUPT__: This parameter can be a value of @ref SYSCFG_FPU_Interrupts
  300. */
  301. #define __HAL_SYSCFG_FPU_INTERRUPT_ENABLE(__INTERRUPT__) do {assert_param(IS_SYSCFG_FPU_INTERRUPT((__INTERRUPT__)));\
  302. SET_BIT(SYSCFG->CFGR1, (__INTERRUPT__));\
  303. }while(0)
  304. #define __HAL_SYSCFG_FPU_INTERRUPT_DISABLE(__INTERRUPT__) do {assert_param(IS_SYSCFG_FPU_INTERRUPT((__INTERRUPT__)));\
  305. CLEAR_BIT(SYSCFG->CFGR1, (__INTERRUPT__));\
  306. }while(0)
  307. /** @brief SYSCFG Break ECC lock.
  308. * Enable and lock the connection of Flash ECC error connection to TIM1/8/15/16/17 Break input.
  309. * @note The selected configuration is locked and can be unlocked only by system reset.
  310. */
  311. #define __HAL_SYSCFG_BREAK_ECC_LOCK() SET_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_ECCL)
  312. /** @brief SYSCFG Break Cortex-M4 Lockup lock.
  313. * Enable and lock the connection of Cortex-M4 LOCKUP (Hardfault) output to TIM1/8/15/16/17 Break input.
  314. * @note The selected configuration is locked and can be unlocked only by system reset.
  315. */
  316. #define __HAL_SYSCFG_BREAK_LOCKUP_LOCK() SET_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_CLL)
  317. /** @brief SYSCFG Break PVD lock.
  318. * 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.
  319. * @note The selected configuration is locked and can be unlocked only by system reset.
  320. */
  321. #define __HAL_SYSCFG_BREAK_PVD_LOCK() SET_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_PVDL)
  322. /** @brief SYSCFG Break SRAM2 parity lock.
  323. * Enable and lock the SRAM2 parity error signal connection to TIM1/8/15/16/17 Break input.
  324. * @note The selected configuration is locked and can be unlocked by system reset.
  325. */
  326. #define __HAL_SYSCFG_BREAK_SRAM2PARITY_LOCK() SET_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_SPL)
  327. /** @brief Check SYSCFG flag is set or not.
  328. * @param __FLAG__: specifies the flag to check.
  329. * This parameter can be one of the following values:
  330. * @arg @ref SYSCFG_FLAG_SRAM2_PE SRAM2 Parity Error Flag
  331. * @arg @ref SYSCFG_FLAG_SRAM2_BUSY SRAM2 Erase Ongoing
  332. * @retval The new state of __FLAG__ (TRUE or FALSE).
  333. */
  334. #define __HAL_SYSCFG_GET_FLAG(__FLAG__) ((((((__FLAG__) == SYSCFG_SCSR_SRAM2BSY)? SYSCFG->SCSR : SYSCFG->CFGR2) & (__FLAG__))!= 0) ? 1 : 0)
  335. /** @brief Set the SPF bit to clear the SRAM Parity Error Flag.
  336. */
  337. #define __HAL_SYSCFG_CLEAR_FLAG() SET_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_SPF)
  338. /** @brief Fast-mode Plus driving capability enable/disable macros
  339. * @param __FASTMODEPLUS__: This parameter can be a value of :
  340. * @arg @ref SYSCFG_FASTMODEPLUS_PB6 Fast-mode Plus driving capability activation on PB6
  341. * @arg @ref SYSCFG_FASTMODEPLUS_PB7 Fast-mode Plus driving capability activation on PB7
  342. * @arg @ref SYSCFG_FASTMODEPLUS_PB8 Fast-mode Plus driving capability activation on PB8
  343. * @arg @ref SYSCFG_FASTMODEPLUS_PB9 Fast-mode Plus driving capability activation on PB9
  344. */
  345. #define __HAL_SYSCFG_FASTMODEPLUS_ENABLE(__FASTMODEPLUS__) do {assert_param(IS_SYSCFG_FASTMODEPLUS((__FASTMODEPLUS__)));\
  346. SET_BIT(SYSCFG->CFGR1, (__FASTMODEPLUS__));\
  347. }while(0)
  348. #define __HAL_SYSCFG_FASTMODEPLUS_DISABLE(__FASTMODEPLUS__) do {assert_param(IS_SYSCFG_FASTMODEPLUS((__FASTMODEPLUS__)));\
  349. CLEAR_BIT(SYSCFG->CFGR1, (__FASTMODEPLUS__));\
  350. }while(0)
  351. /**
  352. * @}
  353. */
  354. /* Private macros ------------------------------------------------------------*/
  355. /** @defgroup SYSCFG_Private_Macros SYSCFG Private Macros
  356. * @{
  357. */
  358. #define IS_SYSCFG_FPU_INTERRUPT(__INTERRUPT__) ((((__INTERRUPT__) & SYSCFG_IT_FPU_IOC) == SYSCFG_IT_FPU_IOC) || \
  359. (((__INTERRUPT__) & SYSCFG_IT_FPU_DZC) == SYSCFG_IT_FPU_DZC) || \
  360. (((__INTERRUPT__) & SYSCFG_IT_FPU_UFC) == SYSCFG_IT_FPU_UFC) || \
  361. (((__INTERRUPT__) & SYSCFG_IT_FPU_OFC) == SYSCFG_IT_FPU_OFC) || \
  362. (((__INTERRUPT__) & SYSCFG_IT_FPU_IDC) == SYSCFG_IT_FPU_IDC) || \
  363. (((__INTERRUPT__) & SYSCFG_IT_FPU_IXC) == SYSCFG_IT_FPU_IXC))
  364. #define IS_SYSCFG_BREAK_CONFIG(__CONFIG__) (((__CONFIG__) == SYSCFG_BREAK_ECC) || \
  365. ((__CONFIG__) == SYSCFG_BREAK_PVD) || \
  366. ((__CONFIG__) == SYSCFG_BREAK_SRAM2_PARITY) || \
  367. ((__CONFIG__) == SYSCFG_BREAK_LOCKUP))
  368. #define IS_SYSCFG_SRAM2WRP_PAGE(__PAGE__) (((__PAGE__) > 0) && ((__PAGE__) <= 0xFFFFFFFF))
  369. #if defined(VREFBUF)
  370. #define IS_SYSCFG_VREFBUF_VOLTAGE_SCALE(__SCALE__) (((__SCALE__) == SYSCFG_VREFBUF_VOLTAGE_SCALE0) || \
  371. ((__SCALE__) == SYSCFG_VREFBUF_VOLTAGE_SCALE1))
  372. #define IS_SYSCFG_VREFBUF_HIGH_IMPEDANCE(__VALUE__) (((__VALUE__) == SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE) || \
  373. ((__VALUE__) == SYSCFG_VREFBUF_HIGH_IMPEDANCE_ENABLE))
  374. #define IS_SYSCFG_VREFBUF_TRIMMING(__VALUE__) (((__VALUE__) > 0) && ((__VALUE__) <= VREFBUF_CCR_TRIM))
  375. #endif /* VREFBUF */
  376. #if defined(SYSCFG_FASTMODEPLUS_PB8) && defined(SYSCFG_FASTMODEPLUS_PB9)
  377. #define IS_SYSCFG_FASTMODEPLUS(__PIN__) ((((__PIN__) & SYSCFG_FASTMODEPLUS_PB6) == SYSCFG_FASTMODEPLUS_PB6) || \
  378. (((__PIN__) & SYSCFG_FASTMODEPLUS_PB7) == SYSCFG_FASTMODEPLUS_PB7) || \
  379. (((__PIN__) & SYSCFG_FASTMODEPLUS_PB8) == SYSCFG_FASTMODEPLUS_PB8) || \
  380. (((__PIN__) & SYSCFG_FASTMODEPLUS_PB9) == SYSCFG_FASTMODEPLUS_PB9))
  381. #elif defined(SYSCFG_FASTMODEPLUS_PB8)
  382. #define IS_SYSCFG_FASTMODEPLUS(__PIN__) ((((__PIN__) & SYSCFG_FASTMODEPLUS_PB6) == SYSCFG_FASTMODEPLUS_PB6) || \
  383. (((__PIN__) & SYSCFG_FASTMODEPLUS_PB7) == SYSCFG_FASTMODEPLUS_PB7) || \
  384. (((__PIN__) & SYSCFG_FASTMODEPLUS_PB8) == SYSCFG_FASTMODEPLUS_PB8))
  385. #elif defined(SYSCFG_FASTMODEPLUS_PB9)
  386. #define IS_SYSCFG_FASTMODEPLUS(__PIN__) ((((__PIN__) & SYSCFG_FASTMODEPLUS_PB6) == SYSCFG_FASTMODEPLUS_PB6) || \
  387. (((__PIN__) & SYSCFG_FASTMODEPLUS_PB7) == SYSCFG_FASTMODEPLUS_PB7) || \
  388. (((__PIN__) & SYSCFG_FASTMODEPLUS_PB9) == SYSCFG_FASTMODEPLUS_PB9))
  389. #else
  390. #define IS_SYSCFG_FASTMODEPLUS(__PIN__) ((((__PIN__) & SYSCFG_FASTMODEPLUS_PB6) == SYSCFG_FASTMODEPLUS_PB6) || \
  391. (((__PIN__) & SYSCFG_FASTMODEPLUS_PB7) == SYSCFG_FASTMODEPLUS_PB7))
  392. #endif
  393. /**
  394. * @}
  395. */
  396. /* Exported functions --------------------------------------------------------*/
  397. /** @addtogroup HAL_Exported_Functions
  398. * @{
  399. */
  400. /** @addtogroup HAL_Exported_Functions_Group1
  401. * @{
  402. */
  403. /* Initialization and de-initialization functions ******************************/
  404. HAL_StatusTypeDef HAL_Init(void);
  405. HAL_StatusTypeDef HAL_DeInit(void);
  406. void HAL_MspInit(void);
  407. void HAL_MspDeInit(void);
  408. HAL_StatusTypeDef HAL_InitTick (uint32_t TickPriority);
  409. /**
  410. * @}
  411. */
  412. /** @addtogroup HAL_Exported_Functions_Group2
  413. * @{
  414. */
  415. /* Peripheral Control functions ************************************************/
  416. void HAL_IncTick(void);
  417. void HAL_Delay(uint32_t Delay);
  418. uint32_t HAL_GetTick(void);
  419. void HAL_SuspendTick(void);
  420. void HAL_ResumeTick(void);
  421. uint32_t HAL_GetHalVersion(void);
  422. uint32_t HAL_GetREVID(void);
  423. uint32_t HAL_GetDEVID(void);
  424. /**
  425. * @}
  426. */
  427. /** @addtogroup HAL_Exported_Functions_Group3
  428. * @{
  429. */
  430. /* DBGMCU Peripheral Control functions *****************************************/
  431. void HAL_DBGMCU_EnableDBGSleepMode(void);
  432. void HAL_DBGMCU_DisableDBGSleepMode(void);
  433. void HAL_DBGMCU_EnableDBGStopMode(void);
  434. void HAL_DBGMCU_DisableDBGStopMode(void);
  435. void HAL_DBGMCU_EnableDBGStandbyMode(void);
  436. void HAL_DBGMCU_DisableDBGStandbyMode(void);
  437. /**
  438. * @}
  439. */
  440. /** @addtogroup HAL_Exported_Functions_Group4
  441. * @{
  442. */
  443. /* SYSCFG Control functions ****************************************************/
  444. void HAL_SYSCFG_SRAM2Erase(void);
  445. void HAL_SYSCFG_EnableMemorySwappingBank(void);
  446. void HAL_SYSCFG_DisableMemorySwappingBank(void);
  447. #if defined(VREFBUF)
  448. void HAL_SYSCFG_VREFBUF_VoltageScalingConfig(uint32_t VoltageScaling);
  449. void HAL_SYSCFG_VREFBUF_HighImpedanceConfig(uint32_t Mode);
  450. void HAL_SYSCFG_VREFBUF_TrimmingConfig(uint32_t TrimmingValue);
  451. HAL_StatusTypeDef HAL_SYSCFG_EnableVREFBUF(void);
  452. void HAL_SYSCFG_DisableVREFBUF(void);
  453. #endif /* VREFBUF */
  454. void HAL_SYSCFG_EnableIOAnalogSwitchBooster(void);
  455. void HAL_SYSCFG_DisableIOAnalogSwitchBooster(void);
  456. /**
  457. * @}
  458. */
  459. /**
  460. * @}
  461. */
  462. /**
  463. * @}
  464. */
  465. /**
  466. * @}
  467. */
  468. #ifdef __cplusplus
  469. }
  470. #endif
  471. #endif /* __STM32L4xx_HAL_H */
  472. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/