STM32L486xx HAL User Manual
stm32l4xx_hal_irda_ex.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32l4xx_hal_irda_ex.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of IRDA HAL Extended module.
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
00010   *
00011   * Redistribution and use in source and binary forms, with or without modification,
00012   * are permitted provided that the following conditions are met:
00013   *   1. Redistributions of source code must retain the above copyright notice,
00014   *      this list of conditions and the following disclaimer.
00015   *   2. Redistributions in binary form must reproduce the above copyright notice,
00016   *      this list of conditions and the following disclaimer in the documentation
00017   *      and/or other materials provided with the distribution.
00018   *   3. Neither the name of STMicroelectronics nor the names of its contributors
00019   *      may be used to endorse or promote products derived from this software
00020   *      without specific prior written permission.
00021   *
00022   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00023   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00024   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00025   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
00026   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00027   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
00028   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00029   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00030   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00031   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00032   *
00033   ******************************************************************************
00034   */
00035 
00036 /* Define to prevent recursive inclusion -------------------------------------*/
00037 #ifndef __STM32L4xx_HAL_IRDA_EX_H
00038 #define __STM32L4xx_HAL_IRDA_EX_H
00039 
00040 #ifdef __cplusplus
00041 extern "C" {
00042 #endif
00043 
00044 /* Includes ------------------------------------------------------------------*/
00045 #include "stm32l4xx_hal_def.h"
00046 
00047 /** @addtogroup STM32L4xx_HAL_Driver
00048   * @{
00049   */
00050 
00051 /** @defgroup IRDAEx IRDAEx
00052   * @{
00053   */
00054 
00055 /* Exported types ------------------------------------------------------------*/
00056 /* Exported constants --------------------------------------------------------*/
00057 /* Exported macros -----------------------------------------------------------*/
00058 /* Exported functions --------------------------------------------------------*/
00059 
00060 /* Private macros ------------------------------------------------------------*/
00061 
00062 /** @defgroup IRDAEx_Private_Macros IRDAEx Private Macros
00063   * @{
00064   */
00065 
00066 /** @brief  Report the IRDA clock source.
00067   * @param  __HANDLE__ specifies the IRDA Handle.
00068   * @param  __CLOCKSOURCE__ output variable.
00069   * @retval IRDA clocking source, written in __CLOCKSOURCE__.
00070   */
00071 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) \
00072  || defined (STM32L496xx) || defined (STM32L4A6xx) \
00073  || defined (STM32L4R5xx) || defined (STM32L4R7xx) || defined (STM32L4R9xx) || defined (STM32L4S5xx) || defined (STM32L4S7xx) || defined (STM32L4S9xx)
00074 #define IRDA_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__)       \
00075   do {                                                        \
00076     if((__HANDLE__)->Instance == USART1)                      \
00077     {                                                         \
00078        switch(__HAL_RCC_GET_USART1_SOURCE())                  \
00079        {                                                      \
00080         case RCC_USART1CLKSOURCE_PCLK2:                       \
00081           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK2;         \
00082           break;                                              \
00083         case RCC_USART1CLKSOURCE_HSI:                         \
00084           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI;           \
00085           break;                                              \
00086         case RCC_USART1CLKSOURCE_SYSCLK:                      \
00087           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK;        \
00088           break;                                              \
00089         case RCC_USART1CLKSOURCE_LSE:                         \
00090           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE;           \
00091           break;                                              \
00092         default:                                              \
00093           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED;     \
00094           break;                                              \
00095        }                                                      \
00096     }                                                         \
00097     else if((__HANDLE__)->Instance == USART2)                 \
00098     {                                                         \
00099        switch(__HAL_RCC_GET_USART2_SOURCE())                  \
00100        {                                                      \
00101         case RCC_USART2CLKSOURCE_PCLK1:                       \
00102           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1;         \
00103           break;                                              \
00104         case RCC_USART2CLKSOURCE_HSI:                         \
00105           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI;           \
00106           break;                                              \
00107         case RCC_USART2CLKSOURCE_SYSCLK:                      \
00108           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK;        \
00109           break;                                              \
00110         case RCC_USART2CLKSOURCE_LSE:                         \
00111           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE;           \
00112           break;                                              \
00113         default:                                              \
00114           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED;     \
00115           break;                                              \
00116        }                                                      \
00117     }                                                         \
00118     else if((__HANDLE__)->Instance == USART3)                 \
00119     {                                                         \
00120        switch(__HAL_RCC_GET_USART3_SOURCE())                  \
00121        {                                                      \
00122         case RCC_USART3CLKSOURCE_PCLK1:                       \
00123           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1;         \
00124           break;                                              \
00125         case RCC_USART3CLKSOURCE_HSI:                         \
00126           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI;           \
00127           break;                                              \
00128         case RCC_USART3CLKSOURCE_SYSCLK:                      \
00129           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK;        \
00130           break;                                              \
00131         case RCC_USART3CLKSOURCE_LSE:                         \
00132           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE;           \
00133           break;                                              \
00134         default:                                              \
00135           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED;     \
00136           break;                                              \
00137        }                                                      \
00138     }                                                         \
00139     else if((__HANDLE__)->Instance == UART4)                  \
00140     {                                                         \
00141        switch(__HAL_RCC_GET_UART4_SOURCE())                   \
00142        {                                                      \
00143         case RCC_UART4CLKSOURCE_PCLK1:                        \
00144           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1;         \
00145           break;                                              \
00146         case RCC_UART4CLKSOURCE_HSI:                          \
00147           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI;           \
00148           break;                                              \
00149         case RCC_UART4CLKSOURCE_SYSCLK:                       \
00150           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK;        \
00151           break;                                              \
00152         case RCC_UART4CLKSOURCE_LSE:                          \
00153           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE;           \
00154           break;                                              \
00155         default:                                              \
00156           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED;     \
00157           break;                                              \
00158        }                                                      \
00159     }                                                         \
00160     else if ((__HANDLE__)->Instance == UART5)                 \
00161     {                                                         \
00162        switch(__HAL_RCC_GET_UART5_SOURCE())                   \
00163        {                                                      \
00164         case RCC_UART5CLKSOURCE_PCLK1:                        \
00165           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1;         \
00166           break;                                              \
00167         case RCC_UART5CLKSOURCE_HSI:                          \
00168           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI;           \
00169           break;                                              \
00170         case RCC_UART5CLKSOURCE_SYSCLK:                       \
00171           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK;        \
00172           break;                                              \
00173         case RCC_UART5CLKSOURCE_LSE:                          \
00174           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE;           \
00175           break;                                              \
00176         default:                                              \
00177           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED;     \
00178           break;                                              \
00179        }                                                      \
00180     }                                                         \
00181   } while(0)
00182 #elif defined (STM32L431xx) || defined (STM32L433xx) || defined (STM32L443xx)
00183 #define IRDA_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__)       \
00184   do {                                                        \
00185     if((__HANDLE__)->Instance == USART1)                      \
00186     {                                                         \
00187        switch(__HAL_RCC_GET_USART1_SOURCE())                  \
00188        {                                                      \
00189         case RCC_USART1CLKSOURCE_PCLK2:                       \
00190           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK2;         \
00191           break;                                              \
00192         case RCC_USART1CLKSOURCE_HSI:                         \
00193           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI;           \
00194           break;                                              \
00195         case RCC_USART1CLKSOURCE_SYSCLK:                      \
00196           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK;        \
00197           break;                                              \
00198         case RCC_USART1CLKSOURCE_LSE:                         \
00199           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE;           \
00200           break;                                              \
00201         default:                                              \
00202           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED;     \
00203           break;                                              \
00204        }                                                      \
00205     }                                                         \
00206     else if((__HANDLE__)->Instance == USART2)                 \
00207     {                                                         \
00208        switch(__HAL_RCC_GET_USART2_SOURCE())                  \
00209        {                                                      \
00210         case RCC_USART2CLKSOURCE_PCLK1:                       \
00211           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1;         \
00212           break;                                              \
00213         case RCC_USART2CLKSOURCE_HSI:                         \
00214           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI;           \
00215           break;                                              \
00216         case RCC_USART2CLKSOURCE_SYSCLK:                      \
00217           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK;        \
00218           break;                                              \
00219         case RCC_USART2CLKSOURCE_LSE:                         \
00220           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE;           \
00221           break;                                              \
00222         default:                                              \
00223           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED;     \
00224           break;                                              \
00225        }                                                      \
00226     }                                                         \
00227     else if((__HANDLE__)->Instance == USART3)                 \
00228     {                                                         \
00229        switch(__HAL_RCC_GET_USART3_SOURCE())                  \
00230        {                                                      \
00231         case RCC_USART3CLKSOURCE_PCLK1:                       \
00232           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1;         \
00233           break;                                              \
00234         case RCC_USART3CLKSOURCE_HSI:                         \
00235           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI;           \
00236           break;                                              \
00237         case RCC_USART3CLKSOURCE_SYSCLK:                      \
00238           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK;        \
00239           break;                                              \
00240         case RCC_USART3CLKSOURCE_LSE:                         \
00241           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE;           \
00242           break;                                              \
00243         default:                                              \
00244           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED;     \
00245           break;                                              \
00246        }                                                      \
00247     }                                                         \
00248   } while(0)
00249 #elif defined (STM32L432xx) || defined (STM32L442xx)
00250 #define IRDA_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__)       \
00251   do {                                                        \
00252     if((__HANDLE__)->Instance == USART1)                      \
00253     {                                                         \
00254        switch(__HAL_RCC_GET_USART1_SOURCE())                  \
00255        {                                                      \
00256         case RCC_USART1CLKSOURCE_PCLK2:                       \
00257           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK2;         \
00258           break;                                              \
00259         case RCC_USART1CLKSOURCE_HSI:                         \
00260           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI;           \
00261           break;                                              \
00262         case RCC_USART1CLKSOURCE_SYSCLK:                      \
00263           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK;        \
00264           break;                                              \
00265         case RCC_USART1CLKSOURCE_LSE:                         \
00266           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE;           \
00267           break;                                              \
00268         default:                                              \
00269           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED;     \
00270           break;                                              \
00271        }                                                      \
00272     }                                                         \
00273     else if((__HANDLE__)->Instance == USART2)                 \
00274     {                                                         \
00275        switch(__HAL_RCC_GET_USART2_SOURCE())                  \
00276        {                                                      \
00277         case RCC_USART2CLKSOURCE_PCLK1:                       \
00278           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1;         \
00279           break;                                              \
00280         case RCC_USART2CLKSOURCE_HSI:                         \
00281           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI;           \
00282           break;                                              \
00283         case RCC_USART2CLKSOURCE_SYSCLK:                      \
00284           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK;        \
00285           break;                                              \
00286         case RCC_USART2CLKSOURCE_LSE:                         \
00287           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE;           \
00288           break;                                              \
00289         default:                                              \
00290           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED;     \
00291           break;                                              \
00292        }                                                      \
00293     }                                                         \
00294   } while(0)
00295 #elif defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
00296 #define IRDA_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__)       \
00297   do {                                                        \
00298     if((__HANDLE__)->Instance == USART1)                      \
00299     {                                                         \
00300        switch(__HAL_RCC_GET_USART1_SOURCE())                  \
00301        {                                                      \
00302         case RCC_USART1CLKSOURCE_PCLK2:                       \
00303           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK2;         \
00304           break;                                              \
00305         case RCC_USART1CLKSOURCE_HSI:                         \
00306           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI;           \
00307           break;                                              \
00308         case RCC_USART1CLKSOURCE_SYSCLK:                      \
00309           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK;        \
00310           break;                                              \
00311         case RCC_USART1CLKSOURCE_LSE:                         \
00312           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE;           \
00313           break;                                              \
00314         default:                                              \
00315           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED;     \
00316           break;                                              \
00317        }                                                      \
00318     }                                                         \
00319     else if((__HANDLE__)->Instance == USART2)                 \
00320     {                                                         \
00321        switch(__HAL_RCC_GET_USART2_SOURCE())                  \
00322        {                                                      \
00323         case RCC_USART2CLKSOURCE_PCLK1:                       \
00324           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1;         \
00325           break;                                              \
00326         case RCC_USART2CLKSOURCE_HSI:                         \
00327           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI;           \
00328           break;                                              \
00329         case RCC_USART2CLKSOURCE_SYSCLK:                      \
00330           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK;        \
00331           break;                                              \
00332         case RCC_USART2CLKSOURCE_LSE:                         \
00333           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE;           \
00334           break;                                              \
00335         default:                                              \
00336           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED;     \
00337           break;                                              \
00338        }                                                      \
00339     }                                                         \
00340     else if((__HANDLE__)->Instance == USART3)                 \
00341     {                                                         \
00342        switch(__HAL_RCC_GET_USART3_SOURCE())                  \
00343        {                                                      \
00344         case RCC_USART3CLKSOURCE_PCLK1:                       \
00345           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1;         \
00346           break;                                              \
00347         case RCC_USART3CLKSOURCE_HSI:                         \
00348           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI;           \
00349           break;                                              \
00350         case RCC_USART3CLKSOURCE_SYSCLK:                      \
00351           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK;        \
00352           break;                                              \
00353         case RCC_USART3CLKSOURCE_LSE:                         \
00354           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE;           \
00355           break;                                              \
00356         default:                                              \
00357           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED;     \
00358           break;                                              \
00359        }                                                      \
00360     }                                                         \
00361     else if((__HANDLE__)->Instance == UART4)                  \
00362     {                                                         \
00363        switch(__HAL_RCC_GET_UART4_SOURCE())                   \
00364        {                                                      \
00365         case RCC_UART4CLKSOURCE_PCLK1:                        \
00366           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1;         \
00367           break;                                              \
00368         case RCC_UART4CLKSOURCE_HSI:                          \
00369           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI;           \
00370           break;                                              \
00371         case RCC_UART4CLKSOURCE_SYSCLK:                       \
00372           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK;        \
00373           break;                                              \
00374         case RCC_UART4CLKSOURCE_LSE:                          \
00375           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE;           \
00376           break;                                              \
00377         default:                                              \
00378           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED;     \
00379           break;                                              \
00380        }                                                      \
00381     }                                                         \
00382   } while(0)  
00383 #endif
00384 
00385 /**
00386   * @}
00387   */
00388 
00389 /* Exported functions --------------------------------------------------------*/
00390 
00391 /**
00392   * @}
00393   */
00394 
00395 /**
00396   * @}
00397   */
00398 
00399 #ifdef __cplusplus
00400 }
00401 #endif
00402 
00403 #endif /* __STM32L4xx_HAL_IRDA_EX_H */
00404 
00405 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/