STM32G474xx HAL用户手册
stm32g4xx_ll_system.h
跳转到本文件的文档。
00001 /**
00002   ******************************************************************************
00003   * @file    stm32g4xx_ll_system.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of SYSTEM LL module.
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * Copyright (c) 2019 STMicroelectronics.
00010   * All rights reserved.
00011   *
00012   * This software is licensed under terms that can be found in the LICENSE file
00013   * in the root directory of this software component.
00014   * If no LICENSE file comes with this software, it is provided AS-IS.
00015   *
00016   ******************************************************************************
00017   @verbatim
00018   ==============================================================================
00019                      ##### 如何使用此驱动 #####
00020   ==============================================================================
00021     [..]
00022     LL SYSTEM驱动包含一组可供用户使用的通用API:
00023       (+) 部分FLASH功能需要在SYSTEM文件中处理。
00024       (+) 访问DBGCMU寄存器
00025       (+) 访问SYSCFG寄存器
00026       (+) 访问VREFBUF寄存器
00027 
00028   @endverbatim
00029   ******************************************************************************
00030   */
00031 
00032 /* Define to prevent recursive inclusion -------------------------------------*/
00033 #ifndef __STM32G4xx_LL_SYSTEM_H
00034 #define __STM32G4xx_LL_SYSTEM_H
00035 
00036 #ifdef __cplusplus
00037 extern "C" {
00038 #endif
00039 
00040 /* Includes ------------------------------------------------------------------*/
00041 #include "stm32g4xx.h"
00042 
00043 /** @addtogroup STM32G4xx_LL_Driver
00044   * @{
00045   */
00046 
00047 #if defined (FLASH) || defined (SYSCFG) || defined (DBGMCU) || defined (VREFBUF)
00048 
00049 /** @defgroup SYSTEM_LL SYSTEM
00050   * @{
00051   */
00052 
00053 /* Private types -------------------------------------------------------------*/
00054 /* Private variables ---------------------------------------------------------*/
00055 
00056 /* Private constants ---------------------------------------------------------*/
00057 /** @defgroup SYSTEM_LL_Private_Constants SYSTEM Private Constants
00058   * @{
00059   */
00060 
00061 /* Defines used for position in the register */
00063 #define DBGMCU_REVID_POSITION         (uint32_t)POSITION_VAL(DBGMCU_IDCODE_REV_ID)
00063 
00064 /**
00065   * @brief 运行模式下Flash掉电密钥
00066   */
00067 
00068 #define FLASH_PDKEY1                  0x04152637U /*!< Flash掉电密钥1 */
00069 #define FLASH_PDKEY2                  0xFAFBFCFDU /*!< Flash掉电密钥2:与FLASH_PDKEY1配合使用以解锁FLASH_ACR中的RUN_PD位
00070                                                        */
00071 
00072 /**
00073   * @}
00074   */
00075 
00076 /* Private macros ------------------------------------------------------------*/
00077 
00078 /* Exported types ------------------------------------------------------------*/
00079 /* Exported constants --------------------------------------------------------*/
00080 /** @defgroup SYSTEM_LL_Exported_Constants SYSTEM Exported Constants
00081   * @{
00082   */
00083 
00084 /** @defgroup SYSTEM_LL_EC_REMAP SYSCFG REMAP
00085   * @{
00086   */
00087 #define LL_SYSCFG_REMAP_FLASH              0x00000000U                                           /*!< 主Flash存储器映射到0x00000000              */
00088 #define LL_SYSCFG_REMAP_SYSTEMFLASH        SYSCFG_MEMRMP_MEM_MODE_0                              /*!< 系统Flash存储器映射到0x00000000            */
00089 #define LL_SYSCFG_REMAP_SRAM               (SYSCFG_MEMRMP_MEM_MODE_1 | SYSCFG_MEMRMP_MEM_MODE_0) /*!< SRAM1映射到0x00000000                          */
00090 #if defined(FMC_Bank1_R)
00091 #define LL_SYSCFG_REMAP_FMC                SYSCFG_MEMRMP_MEM_MODE_1                              /*!< FMC bank 1 (NOR/PSRAM 1 and 2) mapped at 0x00000000 */
00092 #endif /* FMC_Bank1_R */
00093 #define LL_SYSCFG_REMAP_QUADSPI            (SYSCFG_MEMRMP_MEM_MODE_2 | SYSCFG_MEMRMP_MEM_MODE_1) /*!< QUADSPI存储器映射到0x00000000                 */
00094 /**
00095   * @}
00096   */
00097 
00098 #if defined(SYSCFG_MEMRMP_FB_MODE)
00099 /** @defgroup SYSTEM_LL_EC_BANKMODE SYSCFG BANK MODE
00100   * @{
00101   */
00102 #define LL_SYSCFG_BANKMODE_BANK1           0x00000000U               /*!< Flash Bank1映射到0x08000000(并别名到@0x00000000)
00103                                                                       和Flash Bank2映射到0x08040000(并别名到0x00080000) */
00104 #define LL_SYSCFG_BANKMODE_BANK2           SYSCFG_MEMRMP_FB_MODE     /*!< Flash Bank2映射到0x08000000(并别名到@0x00000000)
00105                                                                       和Flash Bank1映射到0x08040000(并别名到0x00080000) */
00106 /**
00107   * @}
00108   */
00109 
00110 #endif /* SYSCFG_MEMRMP_FB_MODE */
00111 /** @defgroup SYSTEM_LL_EC_I2C_FASTMODEPLUS SYSCFG I2C FASTMODEPLUS
00112   * @{
00113   */
00114 #define LL_SYSCFG_I2C_FASTMODEPLUS_PB6     SYSCFG_CFGR1_I2C_PB6_FMP  /*!< Enable Fast Mode Plus on PB6       */
00115 #define LL_SYSCFG_I2C_FASTMODEPLUS_PB7     SYSCFG_CFGR1_I2C_PB7_FMP  /*!< Enable Fast Mode Plus on PB7       */
00116 #if defined(SYSCFG_CFGR1_I2C_PB8_FMP)
00117 #define LL_SYSCFG_I2C_FASTMODEPLUS_PB8     SYSCFG_CFGR1_I2C_PB8_FMP  /*!< Enable Fast Mode Plus on PB8       */
00118 #endif /* SYSCFG_CFGR1_I2C_PB8_FMP */
00119 #if defined(SYSCFG_CFGR1_I2C_PB9_FMP)
00120 #define LL_SYSCFG_I2C_FASTMODEPLUS_PB9     SYSCFG_CFGR1_I2C_PB9_FMP  /*!< Enable Fast Mode Plus on PB9       */
00121 #endif /* SYSCFG_CFGR1_I2C_PB9_FMP */
00122 #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C1    SYSCFG_CFGR1_I2C1_FMP     /*!< Enable Fast Mode Plus on I2C1 pins */
00123 #if defined(I2C2)
00124 #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C2    SYSCFG_CFGR1_I2C2_FMP     /*!< Enable Fast Mode Plus on I2C2 pins */
00125 #endif /* I2C2 */
00126 #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C3    SYSCFG_CFGR1_I2C3_FMP     /*!< Enable Fast Mode Plus on I2C3 pins */
00127 #if defined(I2C4)
00128 #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C4    SYSCFG_CFGR1_I2C4_FMP     /*!< Enable Fast Mode Plus on I2C4 pins */
00129 #endif /* I2C4 */
00130 /**
00131   * @}
00132   */
00133 
00134 /** @defgroup SYSTEM_LL_EC_EXTI_PORT SYSCFG EXTI PORT
00135   * @{
00136   */
00137 #define LL_SYSCFG_EXTI_PORTA               0U                        /*!< EXTI PORT A                        */
00138 #define LL_SYSCFG_EXTI_PORTB               1U                        /*!< EXTI PORT B                        */
00139 #define LL_SYSCFG_EXTI_PORTC               2U                        /*!< EXTI PORT C                        */
00140 #define LL_SYSCFG_EXTI_PORTD               3U                        /*!< EXTI PORT D                        */
00141 #define LL_SYSCFG_EXTI_PORTE               4U                        /*!< EXTI PORT E                        */
00142 #define LL_SYSCFG_EXTI_PORTF               5U                        /*!< EXTI PORT F                        */
00143 #define LL_SYSCFG_EXTI_PORTG               6U                        /*!< EXTI PORT G                        */
00144 /**
00145   * @}
00146   */
00147 
00148 /** @defgroup SYSTEM_LL_EC_EXTI_LINE SYSCFG EXTI LINE
00149   * @{
00150   */
00151 #define LL_SYSCFG_EXTI_LINE0               (uint32_t)((0x000FU << 16U) | 0U)  /* !< EXTI_POSITION_0  | EXTICR[0] */
00152 #define LL_SYSCFG_EXTI_LINE1               (uint32_t)((0x00F0U << 16U) | 0U)  /* !< EXTI_POSITION_4  | EXTICR[0] */
00153 #define LL_SYSCFG_EXTI_LINE2               (uint32_t)((0x0F00U << 16U) | 0U)  /* !< EXTI_POSITION_8  | EXTICR[0] */
00154 #define LL_SYSCFG_EXTI_LINE3               (uint32_t)((0xF000U << 16U) | 0U)  /* !< EXTI_POSITION_12 | EXTICR[0] */
00155 #define LL_SYSCFG_EXTI_LINE4               (uint32_t)((0x000FU << 16U) | 1U)  /* !< EXTI_POSITION_0  | EXTICR[1] */
00156 #define LL_SYSCFG_EXTI_LINE5               (uint32_t)((0x00F0U << 16U) | 1U)  /* !< EXTI_POSITION_4  | EXTICR[1] */
00157 #define LL_SYSCFG_EXTI_LINE6               (uint32_t)((0x0F00U << 16U) | 1U)  /* !< EXTI_POSITION_8  | EXTICR[1]