STM32F479xx HAL User Manual
stm32f4xx_hal.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32f4xx_hal.h
00004   * @author  MCD Application Team
00005   * @brief   This file contains all the functions prototypes for the HAL 
00006   *          module driver.
00007   ******************************************************************************
00008   * @attention
00009   *
00010   * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
00011   * All rights reserved.</center></h2>
00012   *
00013   * This software component is licensed by ST under BSD 3-Clause license,
00014   * the "License"; You may not use this file except in compliance with the
00015   * License. You may obtain a copy of the License at:
00016   *                        opensource.org/licenses/BSD-3-Clause
00017   *
00018   ******************************************************************************
00019   */ 
00020 
00021 /* Define to prevent recursive inclusion -------------------------------------*/
00022 #ifndef __STM32F4xx_HAL_H
00023 #define __STM32F4xx_HAL_H
00024 
00025 #ifdef __cplusplus
00026  extern "C" {
00027 #endif
00028 
00029 /* Includes ------------------------------------------------------------------*/
00030 #include "stm32f4xx_hal_conf.h"
00031 
00032 /** @addtogroup STM32F4xx_HAL_Driver
00033   * @{
00034   */
00035 
00036 /** @addtogroup HAL
00037   * @{
00038   */ 
00039 
00040 /* Exported types ------------------------------------------------------------*/
00041 /* Exported constants --------------------------------------------------------*/
00042 
00043 /** @defgroup HAL_Exported_Constants HAL Exported Constants
00044   * @{
00045   */
00046 
00047 /** @defgroup HAL_TICK_FREQ Tick Frequency
00048   * @{
00049   */
00050 typedef enum
00051 {
00052   HAL_TICK_FREQ_10HZ         = 100U,
00053   HAL_TICK_FREQ_100HZ        = 10U,
00054   HAL_TICK_FREQ_1KHZ         = 1U,
00055   HAL_TICK_FREQ_DEFAULT      = HAL_TICK_FREQ_1KHZ
00056 } HAL_TickFreqTypeDef;
00057 /**
00058   * @}
00059   */
00060 
00061 /**
00062   * @}
00063   */
00064    
00065 /* Exported macro ------------------------------------------------------------*/
00066 /** @defgroup HAL_Exported_Macros HAL Exported Macros
00067   * @{
00068   */
00069 
00070 /** @brief  Freeze/Unfreeze Peripherals in Debug mode 
00071   */
00072 #define __HAL_DBGMCU_FREEZE_TIM2()           (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM2_STOP))
00073 #define __HAL_DBGMCU_FREEZE_TIM3()           (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM3_STOP))
00074 #define __HAL_DBGMCU_FREEZE_TIM4()           (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM4_STOP))
00075 #define __HAL_DBGMCU_FREEZE_TIM5()           (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM5_STOP))
00076 #define __HAL_DBGMCU_FREEZE_TIM6()           (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM6_STOP))
00077 #define __HAL_DBGMCU_FREEZE_TIM7()           (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM7_STOP))
00078 #define __HAL_DBGMCU_FREEZE_TIM12()          (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM12_STOP))
00079 #define __HAL_DBGMCU_FREEZE_TIM13()          (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM13_STOP))
00080 #define __HAL_DBGMCU_FREEZE_TIM14()          (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM14_STOP))
00081 #define __HAL_DBGMCU_FREEZE_RTC()            (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_RTC_STOP))
00082 #define __HAL_DBGMCU_FREEZE_WWDG()           (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_WWDG_STOP))
00083 #define __HAL_DBGMCU_FREEZE_IWDG()           (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_IWDG_STOP))
00084 #define __HAL_DBGMCU_FREEZE_I2C1_TIMEOUT()   (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUT))
00085 #define __HAL_DBGMCU_FREEZE_I2C2_TIMEOUT()   (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_I2C2_SMBUS_TIMEOUT))
00086 #define __HAL_DBGMCU_FREEZE_I2C3_TIMEOUT()   (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_I2C3_SMBUS_TIMEOUT))
00087 #define __HAL_DBGMCU_FREEZE_CAN1()           (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_CAN1_STOP))
00088 #define __HAL_DBGMCU_FREEZE_CAN2()           (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_CAN2_STOP))
00089 #define __HAL_DBGMCU_FREEZE_TIM1()           (DBGMCU->APB2FZ |= (DBGMCU_APB2_FZ_DBG_TIM1_STOP))
00090 #define __HAL_DBGMCU_FREEZE_TIM8()           (DBGMCU->APB2FZ |= (DBGMCU_APB2_FZ_DBG_TIM8_STOP))
00091 #define __HAL_DBGMCU_FREEZE_TIM9()           (DBGMCU->APB2FZ |= (DBGMCU_APB2_FZ_DBG_TIM9_STOP))
00092 #define __HAL_DBGMCU_FREEZE_TIM10()          (DBGMCU->APB2FZ |= (DBGMCU_APB2_FZ_DBG_TIM10_STOP))
00093 #define __HAL_DBGMCU_FREEZE_TIM11()          (DBGMCU->APB2FZ |= (DBGMCU_APB2_FZ_DBG_TIM11_STOP))
00094 
00095 #define __HAL_DBGMCU_UNFREEZE_TIM2()           (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM2_STOP))
00096 #define __HAL_DBGMCU_UNFREEZE_TIM3()           (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM3_STOP))
00097 #define __HAL_DBGMCU_UNFREEZE_TIM4()           (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM4_STOP))
00098 #define __HAL_DBGMCU_UNFREEZE_TIM5()           (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM5_STOP))
00099 #define __HAL_DBGMCU_UNFREEZE_TIM6()           (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM6_STOP))
00100 #define __HAL_DBGMCU_UNFREEZE_TIM7()           (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM7_STOP))
00101 #define __HAL_DBGMCU_UNFREEZE_TIM12()          (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM12_STOP))
00102 #define __HAL_DBGMCU_UNFREEZE_TIM13()          (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM13_STOP))
00103 #define __HAL_DBGMCU_UNFREEZE_TIM14()          (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM14_STOP))
00104 #define __HAL_DBGMCU_UNFREEZE_RTC()            (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_RTC_STOP))
00105 #define __HAL_DBGMCU_UNFREEZE_WWDG()           (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_WWDG_STOP))
00106 #define __HAL_DBGMCU_UNFREEZE_IWDG()           (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_IWDG_STOP))
00107 #define __HAL_DBGMCU_UNFREEZE_I2C1_TIMEOUT()   (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUT))
00108 #define __HAL_DBGMCU_UNFREEZE_I2C2_TIMEOUT()   (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_I2C2_SMBUS_TIMEOUT))
00109 #define __HAL_DBGMCU_UNFREEZE_I2C3_TIMEOUT()   (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_I2C3_SMBUS_TIMEOUT))
00110 #define __HAL_DBGMCU_UNFREEZE_CAN1()           (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_CAN1_STOP))
00111 #define __HAL_DBGMCU_UNFREEZE_CAN2()           (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_CAN2_STOP))
00112 #define __HAL_DBGMCU_UNFREEZE_TIM1()           (DBGMCU->APB2FZ &= ~(DBGMCU_APB2_FZ_DBG_TIM1_STOP))
00113 #define __HAL_DBGMCU_UNFREEZE_TIM8()           (DBGMCU->APB2FZ &= ~(DBGMCU_APB2_FZ_DBG_TIM8_STOP))
00114 #define __HAL_DBGMCU_UNFREEZE_TIM9()           (DBGMCU->APB2FZ &= ~(DBGMCU_APB2_FZ_DBG_TIM9_STOP))
00115 #define __HAL_DBGMCU_UNFREEZE_TIM10()          (DBGMCU->APB2FZ &= ~(DBGMCU_APB2_FZ_DBG_TIM10_STOP))
00116 #define __HAL_DBGMCU_UNFREEZE_TIM11()          (DBGMCU->APB2FZ &= ~(DBGMCU_APB2_FZ_DBG_TIM11_STOP))
00117 
00118 /** @brief  Main Flash memory mapped at 0x00000000
00119   */
00120 #define __HAL_SYSCFG_REMAPMEMORY_FLASH()             (SYSCFG->MEMRMP &= ~(SYSCFG_MEMRMP_MEM_MODE))
00121 
00122 /** @brief  System Flash memory mapped at 0x00000000
00123   */
00124 #define __HAL_SYSCFG_REMAPMEMORY_SYSTEMFLASH()       do {SYSCFG->MEMRMP &= ~(SYSCFG_MEMRMP_MEM_MODE);\
00125                                                          SYSCFG->MEMRMP |= SYSCFG_MEMRMP_MEM_MODE_0;\
00126                                                         }while(0);
00127 
00128 /** @brief  Embedded SRAM mapped at 0x00000000
00129   */
00130 #define __HAL_SYSCFG_REMAPMEMORY_SRAM()       do {SYSCFG->MEMRMP &= ~(SYSCFG_MEMRMP_MEM_MODE);\
00131                                                   SYSCFG->MEMRMP |= (SYSCFG_MEMRMP_MEM_MODE_0 | SYSCFG_MEMRMP_MEM_MODE_1);\
00132                                                  }while(0);
00133 
00134 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx)|| defined(STM32F417xx)
00135 /** @brief  FSMC Bank1 (NOR/PSRAM 1 and 2) mapped at 0x00000000
00136   */
00137 #define __HAL_SYSCFG_REMAPMEMORY_FSMC()       do {SYSCFG->MEMRMP &= ~(SYSCFG_MEMRMP_MEM_MODE);\
00138                                                   SYSCFG->MEMRMP |= (SYSCFG_MEMRMP_MEM_MODE_1);\
00139                                                  }while(0);
00140 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx */
00141 
00142 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx) ||\
00143     defined(STM32F469xx) || defined(STM32F479xx)
00144 /** @brief  FMC Bank1 (NOR/PSRAM 1 and 2) mapped at 0x00000000
00145   */
00146 #define __HAL_SYSCFG_REMAPMEMORY_FMC()       do {SYSCFG->MEMRMP &= ~(SYSCFG_MEMRMP_MEM_MODE);\
00147                                                  SYSCFG->MEMRMP |= (SYSCFG_MEMRMP_MEM_MODE_1);\
00148                                                 }while(0);
00149 
00150 /** @brief  FMC/SDRAM Bank 1 and 2 mapped at 0x00000000
00151   */
00152 #define __HAL_SYSCFG_REMAPMEMORY_FMC_SDRAM()       do {SYSCFG->MEMRMP &= ~(SYSCFG_MEMRMP_MEM_MODE);\
00153                                                        SYSCFG->MEMRMP |= (SYSCFG_MEMRMP_MEM_MODE_2);\
00154                                                       }while(0);
00155 #endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */ 
00156 
00157 #if defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx) || defined(STM32F413xx) || defined(STM32F423xx)
00158 /** @defgroup Cortex_Lockup_Enable Cortex Lockup Enable
00159   * @{
00160   */
00161 /** @brief  SYSCFG Break Lockup lock
00162   *         Enables and locks the connection of Cortex-M4 LOCKUP (Hardfault) output to TIM1/8 input
00163   * @note   The selected configuration is locked and can be unlocked by system reset
00164   */
00165 #define __HAL_SYSCFG_BREAK_PVD_LOCK()      do {SYSCFG->CFGR2 &= ~(SYSCFG_CFGR2_PVD_LOCK); \
00166                                                SYSCFG->CFGR2 |= SYSCFG_CFGR2_PVD_LOCK;    \
00167                                               }while(0)
00168 /**
00169  * @}
00170  */
00171 
00172 /** @defgroup PVD_Lock_Enable PVD Lock
00173   * @{
00174   */
00175 /** @brief  SYSCFG Break PVD lock
00176   *         Enables and locks the PVD connection with Timer1/8 Break Input, , as well as the PVDE and PLS[2:0] in the PWR_CR register
00177   * @note   The selected configuration is locked and can be unlocked by system reset
00178   */
00179 #define __HAL_SYSCFG_BREAK_LOCKUP_LOCK()     do {SYSCFG->CFGR2 &= ~(SYSCFG_CFGR2_LOCKUP_LOCK); \
00180                                                  SYSCFG->CFGR2 |= SYSCFG_CFGR2_LOCKUP_LOCK;    \
00181                                                 }while(0)
00182 /**
00183  * @}
00184  */
00185 #endif /* STM32F410Tx || STM32F410Cx || STM32F410Rx || STM32F413xx || STM32F423xx */
00186 /**
00187   * @}
00188   */
00189 
00190 /** @defgroup HAL_Private_Macros HAL Private Macros
00191   * @{
00192   */
00193 #define IS_TICKFREQ(FREQ) (((FREQ) == HAL_TICK_FREQ_10HZ)  || \
00194                            ((FREQ) == HAL_TICK_FREQ_100HZ) || \
00195                            ((FREQ) == HAL_TICK_FREQ_1KHZ))
00196 /**
00197   * @}
00198   */
00199 
00200 /* Exported variables --------------------------------------------------------*/
00201 
00202 /** @addtogroup HAL_Exported_Variables
00203   * @{
00204   */
00205 extern __IO uint32_t uwTick;
00206 extern uint32_t uwTickPrio;
00207 extern HAL_TickFreqTypeDef uwTickFreq;
00208 /**
00209   * @}
00210   */
00211 
00212 /* Exported functions --------------------------------------------------------*/
00213 /** @addtogroup HAL_Exported_Functions
00214   * @{
00215   */
00216 /** @addtogroup HAL_Exported_Functions_Group1
00217   * @{
00218   */
00219 /* Initialization and Configuration functions  ******************************/
00220 HAL_StatusTypeDef HAL_Init(void);
00221 HAL_StatusTypeDef HAL_DeInit(void);
00222 void HAL_MspInit(void);
00223 void HAL_MspDeInit(void);
00224 HAL_StatusTypeDef HAL_InitTick (uint32_t TickPriority);
00225 /**
00226   * @}
00227   */
00228 
00229 /** @addtogroup HAL_Exported_Functions_Group2
00230   * @{
00231   */
00232 /* Peripheral Control functions  ************************************************/
00233 void HAL_IncTick(void);
00234 void HAL_Delay(uint32_t Delay);
00235 uint32_t HAL_GetTick(void);
00236 uint32_t HAL_GetTickPrio(void);
00237 HAL_StatusTypeDef HAL_SetTickFreq(HAL_TickFreqTypeDef Freq);
00238 HAL_TickFreqTypeDef HAL_GetTickFreq(void);
00239 void HAL_SuspendTick(void);
00240 void HAL_ResumeTick(void);
00241 uint32_t HAL_GetHalVersion(void);
00242 uint32_t HAL_GetREVID(void);
00243 uint32_t HAL_GetDEVID(void);
00244 void HAL_DBGMCU_EnableDBGSleepMode(void);
00245 void HAL_DBGMCU_DisableDBGSleepMode(void);
00246 void HAL_DBGMCU_EnableDBGStopMode(void);
00247 void HAL_DBGMCU_DisableDBGStopMode(void);
00248 void HAL_DBGMCU_EnableDBGStandbyMode(void);
00249 void HAL_DBGMCU_DisableDBGStandbyMode(void);
00250 void HAL_EnableCompensationCell(void);
00251 void HAL_DisableCompensationCell(void);
00252 uint32_t HAL_GetUIDw0(void);
00253 uint32_t HAL_GetUIDw1(void);
00254 uint32_t HAL_GetUIDw2(void);
00255 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx) ||\
00256     defined(STM32F469xx) || defined(STM32F479xx)
00257 void HAL_EnableMemorySwappingBank(void);
00258 void HAL_DisableMemorySwappingBank(void);
00259 #endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */ 
00260 /**
00261   * @}
00262   */
00263 
00264 /**
00265   * @}
00266   */
00267 /* Private types -------------------------------------------------------------*/
00268 /* Private variables ---------------------------------------------------------*/
00269 /** @defgroup HAL_Private_Variables HAL Private Variables
00270   * @{
00271   */
00272 /**
00273   * @}
00274   */
00275 /* Private constants ---------------------------------------------------------*/
00276 /** @defgroup HAL_Private_Constants HAL Private Constants
00277   * @{
00278   */
00279 /**
00280   * @}
00281   */
00282 /* Private macros ------------------------------------------------------------*/
00283 /* Private functions ---------------------------------------------------------*/
00284 /**
00285   * @}
00286   */
00287 
00288 /**
00289   * @}
00290   */ 
00291   
00292 #ifdef __cplusplus
00293 }
00294 #endif
00295 
00296 #endif /* __STM32F4xx_HAL_H */
00297 
00298 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/